@finsemble/finsemble-ui 6.6.1 → 7.0.0-beta-X
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/package.json +31 -43
- package/react/actions/favoriteActions.d.ts +1 -0
- package/react/actions/favoriteActions.js +1 -0
- package/react/actions/favoriteActions.js.map +1 -1
- package/react/actions/menuActions.d.ts +1 -0
- package/react/actions/menuActions.js +1 -0
- package/react/actions/menuActions.js.map +1 -1
- package/react/actions/rootActions.d.ts +1 -0
- package/react/actions/rootActions.js +1 -0
- package/react/actions/rootActions.js.map +1 -1
- package/react/actions/searchActions.d.ts +1 -0
- package/react/actions/searchActions.js +1 -0
- package/react/actions/searchActions.js.map +1 -1
- package/react/actions/toolbarActions.d.ts +34 -0
- package/react/actions/toolbarActions.js +17 -0
- package/react/actions/toolbarActions.js.map +1 -1
- package/react/actions/workspaceActions.d.ts +1 -0
- package/react/actions/workspaceActions.js +1 -0
- package/react/actions/workspaceActions.js.map +1 -1
- package/react/assets/css/advancedAppLauncher.css +22 -19
- package/react/assets/css/appCatalog.css +67 -72
- package/react/assets/css/authentication.css +4 -3
- package/react/assets/css/button.css +4 -11
- package/react/assets/css/core/formElements.css +1 -1
- package/react/assets/css/core/icons.css +3 -2
- package/react/assets/css/core/notifications.css +2 -2
- package/react/assets/css/core/windowFrame.css +9 -9
- package/react/assets/css/dashbar.css +1 -1
- package/react/assets/css/defaultTheme.css +9 -53
- package/react/assets/css/dialogs.css +13 -11
- package/react/assets/css/favorites.css +3 -48
- package/react/assets/css/finsemble.css +6 -2
- package/react/assets/css/font-finance.css +233 -120
- package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +10 -10
- package/react/assets/css/linkerWindow.css +15 -3
- package/react/assets/css/menus.css +12 -12
- package/react/assets/css/notificationsCenter.css +49 -33
- package/react/assets/css/processMonitor.css +7 -4
- package/react/assets/css/search.css +1 -1
- package/react/assets/css/shared/animations.css +10 -4
- package/react/assets/css/shared/common.css +40 -0
- package/react/assets/css/tags.css +10 -10
- package/react/assets/css/toolbar.css +22 -19
- package/react/assets/css/userPreferences.css +29 -26
- package/react/assets/css/windowTitleBar.css +86 -40
- package/react/assets/icons/server.svg +26 -0
- package/react/componentTemplateGenerator.js +3 -2
- package/react/componentTemplateGenerator.js.map +1 -1
- package/react/components/FinsembleProvider.d.ts +7 -0
- package/react/components/FinsembleProvider.js +2 -0
- package/react/components/FinsembleProvider.js.map +1 -1
- package/react/components/appCatalog/AppCatalog.d.ts +4 -0
- package/react/components/appCatalog/AppCatalog.js +4 -0
- package/react/components/appCatalog/AppCatalog.js.map +1 -1
- package/react/components/appCatalog/AppCatalogComponent.d.ts +58 -0
- package/react/components/appCatalog/AppCatalogComponent.js +70 -1
- package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
- package/react/components/appCatalog/components/AppCard.d.ts +35 -0
- package/react/components/appCatalog/components/AppCard.js +42 -0
- package/react/components/appCatalog/components/AppCard.js.map +1 -1
- package/react/components/appCatalog/components/AppResults.d.ts +10 -0
- package/react/components/appCatalog/components/AppResults.js +24 -0
- package/react/components/appCatalog/components/AppResults.js.map +1 -1
- package/react/components/appCatalog/components/Carousel.d.ts +26 -0
- package/react/components/appCatalog/components/Carousel.js +34 -0
- package/react/components/appCatalog/components/Carousel.js.map +1 -1
- package/react/components/appCatalog/components/EmptyResults.d.ts +4 -0
- package/react/components/appCatalog/components/EmptyResults.js +8 -0
- package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
- package/react/components/appCatalog/components/Hero.d.ts +15 -0
- package/react/components/appCatalog/components/Hero.js +15 -0
- package/react/components/appCatalog/components/Hero.js.map +1 -1
- package/react/components/appCatalog/components/Home.d.ts +6 -4
- package/react/components/appCatalog/components/Home.js +10 -0
- package/react/components/appCatalog/components/Home.js.map +1 -1
- package/react/components/appCatalog/components/SearchBar.d.ts +31 -0
- package/react/components/appCatalog/components/SearchBar.js +33 -0
- package/react/components/appCatalog/components/SearchBar.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/AppDescription.js +9 -0
- package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/AppDevNotes.js +15 -0
- package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +17 -0
- package/react/components/appCatalog/components/Showcase/AppShowcase.js +25 -0
- package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/Header.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/Header.js +12 -0
- package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/ImageCarousel.js +11 -0
- package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/Modal.d.ts +10 -0
- package/react/components/appCatalog/components/Showcase/Modal.js +10 -0
- package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +9 -0
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +6 -0
- package/react/components/appCatalog/components/Showcase/SupportNotes.js +11 -0
- package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/VersionNotes.js +9 -0
- package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
- package/react/components/appCatalog/components/Tag.d.ts +6 -0
- package/react/components/appCatalog/components/Tag.js +10 -0
- package/react/components/appCatalog/components/Tag.js.map +1 -1
- package/react/components/appCatalog/components/Toast.d.ts +5 -0
- package/react/components/appCatalog/components/Toast.js +9 -0
- package/react/components/appCatalog/components/Toast.js.map +1 -1
- package/react/components/appCatalog/components/helpers.js +1 -0
- package/react/components/appCatalog/components/helpers.js.map +1 -1
- package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -0
- package/react/components/appCatalog/modules/AppDirectory.js +5 -0
- package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
- package/react/components/appCatalog/modules/FDC3.d.ts +37 -0
- package/react/components/appCatalog/modules/FDC3.js +40 -0
- package/react/components/appCatalog/modules/FDC3.js.map +1 -1
- package/react/components/appCatalog/stores/appStore.js +1 -0
- package/react/components/appCatalog/stores/appStore.js.map +1 -1
- package/react/components/appCatalog/stores/storeActions.d.ts +91 -0
- package/react/components/appCatalog/stores/storeActions.js +116 -1
- package/react/components/appCatalog/stores/storeActions.js.map +1 -1
- package/react/components/common/ButtonIcon.js +1 -1
- package/react/components/common/ButtonIcon.js.map +1 -1
- package/react/components/common/ButtonRow.js +2 -2
- package/react/components/common/ButtonRow.js.map +1 -1
- package/react/components/common/Checkbox.d.ts +1 -0
- package/react/components/common/Checkbox.js +3 -3
- package/react/components/common/Checkbox.js.map +1 -1
- package/react/components/common/ColorPicker.d.ts +5 -0
- package/react/components/common/ColorPicker.js +56 -15
- package/react/components/common/ColorPicker.js.map +1 -1
- package/react/components/common/DropZone.d.ts +11 -0
- package/react/components/common/DropZone.js +21 -1
- package/react/components/common/DropZone.js.map +1 -1
- package/react/components/common/DropdownButton.d.ts +4 -0
- package/react/components/common/DropdownButton.js +4 -0
- package/react/components/common/DropdownButton.js.map +1 -1
- package/react/components/common/ErrorBoundary.d.ts +34 -0
- package/react/components/common/ErrorBoundary.js +43 -0
- package/react/components/common/ErrorBoundary.js.map +1 -0
- package/react/components/common/FileInput.d.ts +8 -1
- package/react/components/common/FileInput.js +19 -4
- package/react/components/common/FileInput.js.map +1 -1
- package/react/components/common/FinsembleIcon.d.ts +13 -2
- package/react/components/common/FinsembleIcon.js +61 -5
- package/react/components/common/FinsembleIcon.js.map +1 -1
- package/react/components/common/FinsembleLink.d.ts +6 -0
- package/react/components/common/FinsembleLink.js +12 -0
- package/react/components/common/FinsembleLink.js.map +1 -0
- package/react/components/common/FinsembleSelect.js +5 -1
- package/react/components/common/FinsembleSelect.js.map +1 -1
- package/react/components/common/FinsembleToggle.d.ts +1 -2
- package/react/components/common/FinsembleToggle.js +2 -6
- package/react/components/common/FinsembleToggle.js.map +1 -1
- package/react/components/common/FinsembleToggleButtonBar.d.ts +13 -0
- package/react/components/common/FinsembleToggleButtonBar.js +44 -0
- package/react/components/common/FinsembleToggleButtonBar.js.map +1 -0
- package/react/components/common/InputTable.d.ts +10 -3
- package/react/components/common/InputTable.js +20 -13
- package/react/components/common/InputTable.js.map +1 -1
- package/react/components/common/Tab.js +36 -5
- package/react/components/common/Tab.js.map +1 -1
- package/react/components/common/TimeSelect.js +34 -3
- package/react/components/common/TimeSelect.js.map +1 -1
- package/react/components/common/Tooltip.js +2 -0
- package/react/components/common/Tooltip.js.map +1 -1
- package/react/components/common/css/FinsembleToggle.css +22 -0
- package/react/components/common/css/accordion.css +9 -6
- package/react/components/common/css/application-edit-page.css +48 -45
- package/react/components/common/css/button.css +10 -5
- package/react/components/common/css/color-picker.css +3 -3
- package/react/components/common/css/drop-zone.css +2 -6
- package/react/components/common/css/file-input.css +5 -5
- package/react/components/common/css/header.css +3 -2
- package/react/components/common/css/icon.css +1 -1
- package/react/components/common/css/loading-spinner.css +7 -12
- package/react/components/common/css/selector.css +4 -4
- package/react/components/common/css/styles.css +22 -16
- package/react/components/common/css/tab.css +14 -14
- package/react/components/common/css/time-select.css +2 -1
- package/react/components/common/css/toggle.css +4 -12
- package/react/components/common/css/tooltip.css +2 -3
- package/react/components/common/file_helpers.js +2 -0
- package/react/components/common/file_helpers.js.map +1 -1
- package/react/components/common/helpers.js +12 -1
- package/react/components/common/helpers.js.map +1 -1
- package/react/components/common/stories/ColorPicker.stories.js +9 -11
- package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
- package/react/components/common/stories/FileInput.stories.d.ts +3 -1
- package/react/components/common/stories/FileInput.stories.js +12 -0
- package/react/components/common/stories/FileInput.stories.js.map +1 -1
- package/react/components/common/stories/FinsembleToggle.stories.d.ts +1 -2
- package/react/components/common/stories/FinsembleToggle.stories.js +0 -7
- package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
- package/react/components/common/stories/FinsembleToggleButtonBar.stories.d.ts +14 -0
- package/react/components/common/stories/FinsembleToggleButtonBar.stories.js +97 -0
- package/react/components/common/stories/FinsembleToggleButtonBar.stories.js.map +1 -0
- package/react/components/common/stories/InputTable.stories.d.ts +4 -3
- package/react/components/common/stories/InputTable.stories.js +18 -8
- package/react/components/common/stories/InputTable.stories.js.map +1 -1
- package/react/components/common/tests/Accordion.spec.js +6 -0
- package/react/components/common/tests/Accordion.spec.js.map +1 -1
- package/react/components/common/tests/ButtonRow.spec.js +5 -0
- package/react/components/common/tests/ButtonRow.spec.js.map +1 -1
- package/react/components/common/tests/Checkbox.spec.js +1 -0
- package/react/components/common/tests/Checkbox.spec.js.map +1 -1
- package/react/components/common/tests/ColorPicker.spec.js +6 -0
- package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
- package/react/components/common/tests/DropZone.spec.js +1 -0
- package/react/components/common/tests/DropZone.spec.js.map +1 -1
- package/react/components/common/tests/FileInput.spec.js +22 -0
- package/react/components/common/tests/FileInput.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleSelect.spec.js +1 -0
- package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggle.spec.js +2 -6
- package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.d.ts +1 -0
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +41 -0
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -0
- package/react/components/common/tests/InputTable.spec.js +3 -3
- package/react/components/common/tests/InputTable.spec.js.map +1 -1
- package/react/components/common/tests/TimeSelect.spec.js +4 -0
- package/react/components/common/tests/TimeSelect.spec.js.map +1 -1
- package/react/components/common/tests/Tooltip.spec.js +16 -0
- package/react/components/common/tests/Tooltip.spec.js.map +1 -1
- package/react/components/favorites/FavoriteMaker.d.ts +8 -0
- package/react/components/favorites/FavoriteMaker.js +10 -1
- package/react/components/favorites/FavoriteMaker.js.map +1 -1
- package/react/components/favorites/FavoritesShell.d.ts +4 -0
- package/react/components/favorites/FavoritesShell.js +13 -1
- package/react/components/favorites/FavoritesShell.js.map +1 -1
- package/react/components/favorites/FavoritesShell.spec.js +3 -0
- package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverContainer.js +12 -7
- package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.css +16 -3
- package/react/components/fdc3Resolver/ResolverDialog.js +7 -2
- package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.spec.js +3 -2
- package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.stories.js +2 -0
- package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
- package/react/components/icon/Icon.d.ts +14 -1
- package/react/components/icon/Icon.js +42 -1
- package/react/components/icon/Icon.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
- package/react/components/legacyControls/FinsembleDialog.js +16 -1
- package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogButton.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDialogButton.js +6 -1
- package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +7 -0
- package/react/components/legacyControls/FinsembleDialogQuestion.js +7 -0
- package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDialogTextInput.js +14 -0
- package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
- package/react/components/legacyControls/FinsembleDnDContext.d.ts +19 -0
- package/react/components/legacyControls/FinsembleDnDContext.js +133 -8
- package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
- package/react/components/legacyControls/FinsembleDraggable.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDraggable.js +3 -0
- package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
- package/react/components/legacyControls/FinsembleHoverDetector.d.ts +15 -0
- package/react/components/legacyControls/FinsembleHoverDetector.js +26 -1
- package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
- package/react/components/legacyControls/FinsembleMenuSection.d.ts +4 -0
- package/react/components/legacyControls/FinsembleMenuSection.js +38 -0
- package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
- package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +1 -0
- package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
- package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +1 -0
- package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
- package/react/components/linker/LinkerMenu.d.ts +3 -0
- package/react/components/linker/LinkerMenu.js +21 -0
- package/react/components/linker/LinkerMenu.js.map +1 -1
- package/react/components/linker/LinkerMenuDeprecated.d.ts +3 -0
- package/react/components/linker/LinkerMenuDeprecated.js +9 -0
- package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
- package/react/components/linker/remoteRedux.js +1 -0
- package/react/components/linker/remoteRedux.js.map +1 -1
- package/react/components/menu/Menu.d.ts +15 -0
- package/react/components/menu/Menu.js +15 -0
- package/react/components/menu/Menu.js.map +1 -1
- package/react/components/menu/MenuAutoResizer.d.ts +7 -0
- package/react/components/menu/MenuAutoResizer.js +27 -0
- package/react/components/menu/MenuAutoResizer.js.map +1 -1
- package/react/components/menu/MenuContent.d.ts +4 -0
- package/react/components/menu/MenuContent.js +4 -0
- package/react/components/menu/MenuContent.js.map +1 -1
- package/react/components/menu/MenuHotKey.d.ts +14 -0
- package/react/components/menu/MenuHotKey.js +15 -0
- package/react/components/menu/MenuHotKey.js.map +1 -1
- package/react/components/menu/MenuItem.d.ts +8 -0
- package/react/components/menu/MenuItem.js +13 -2
- package/react/components/menu/MenuItem.js.map +1 -1
- package/react/components/menu/MenuPortal.js +125 -24
- package/react/components/menu/MenuPortal.js.map +1 -1
- package/react/components/menu/MenuShell.d.ts +16 -0
- package/react/components/menu/MenuShell.js +26 -0
- package/react/components/menu/MenuShell.js.map +1 -1
- package/react/components/menu/MenuToggle.d.ts +3 -0
- package/react/components/menu/MenuToggle.js +5 -2
- package/react/components/menu/MenuToggle.js.map +1 -1
- package/react/components/menu/keyboardNavigation.d.ts +13 -22
- package/react/components/menu/keyboardNavigation.js +165 -160
- package/react/components/menu/keyboardNavigation.js.map +1 -1
- package/react/components/menu/menuContext.d.ts +6 -0
- package/react/components/menu/menuContext.js +6 -0
- package/react/components/menu/menuContext.js.map +1 -1
- package/react/components/menu/menuHelpers.d.ts +22 -0
- package/react/components/menu/menuHelpers.js +58 -1
- package/react/components/menu/menuHelpers.js.map +1 -1
- package/react/components/notifications/components/drawer/DrawerControls.js +47 -25
- package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
- package/react/components/notifications/components/drawer/DrawerHeader.js +5 -0
- package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +37 -6
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +17 -10
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
- package/react/components/notifications/components/shared/CheckButton.js +19 -8
- package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
- package/react/components/notifications/components/shared/NotificationCardShell.d.ts +9 -0
- package/react/components/notifications/components/shared/NotificationCardShell.js +15 -7
- package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
- package/react/components/notifications/components/shared/OverflowMenu.d.ts +4 -0
- package/react/components/notifications/components/shared/OverflowMenu.js +16 -2
- package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js +2 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js +2 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
- package/react/components/notifications/components/views/CardView.js +8 -3
- package/react/components/notifications/components/views/CardView.js.map +1 -1
- package/react/components/notifications/components/views/ListView.js +11 -1
- package/react/components/notifications/components/views/ListView.js.map +1 -1
- package/react/components/notifications/notificationsContext.d.ts +4 -0
- package/react/components/notifications/notificationsContext.js +4 -0
- package/react/components/notifications/notificationsContext.js.map +1 -1
- package/react/components/notifications/types.d.ts +6 -0
- package/react/components/notifications/types.js.map +1 -1
- package/react/components/notifications/utils.d.ts +4 -0
- package/react/components/notifications/utils.js +4 -0
- package/react/components/notifications/utils.js.map +1 -1
- package/react/components/processMonitor/ProcessMonitor.d.ts +3 -0
- package/react/components/processMonitor/ProcessMonitor.js +21 -3
- package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
- package/react/components/processMonitor/components/ChildWindow.d.ts +3 -0
- package/react/components/processMonitor/components/ChildWindow.js +5 -0
- package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
- package/react/components/processMonitor/components/ListHeader.d.ts +5 -0
- package/react/components/processMonitor/components/ListHeader.js +7 -0
- package/react/components/processMonitor/components/ListHeader.js.map +1 -1
- package/react/components/processMonitor/components/ProcessStatistics.js +12 -3
- package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
- package/react/components/processMonitor/constants.js +6 -0
- package/react/components/processMonitor/constants.js.map +1 -1
- package/react/components/processMonitor/helpers.d.ts +13 -0
- package/react/components/processMonitor/helpers.js +27 -6
- package/react/components/processMonitor/helpers.js.map +1 -1
- package/react/components/processMonitor/helpers.spec.js +7 -3
- package/react/components/processMonitor/helpers.spec.js.map +1 -1
- package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +39 -0
- package/react/components/processMonitor/stores/ProcessMonitorStore.js +50 -0
- package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
- package/react/components/quickComponentForm/QuickComponentForm.d.ts +3 -0
- package/react/components/quickComponentForm/QuickComponentForm.js +20 -0
- package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
- package/react/components/quickComponentForm/quickComponent.css +1 -1
- package/react/components/sdd/AddApp.d.ts +7 -4
- package/react/components/sdd/AddApp.js +144 -34
- package/react/components/sdd/AddApp.js.map +1 -1
- package/react/components/sdd/AppEditAccess.d.ts +4 -3
- package/react/components/sdd/AppEditAccess.js +8 -0
- package/react/components/sdd/AppEditAccess.js.map +1 -1
- package/react/components/sdd/AppEditPage.d.ts +6 -4
- package/react/components/sdd/AppEditPage.js +205 -393
- package/react/components/sdd/AppEditPage.js.map +1 -1
- package/react/components/sdd/Appearance.css +1 -1
- package/react/components/sdd/Appearance.d.ts +2 -1
- package/react/components/sdd/Appearance.js +18 -7
- package/react/components/sdd/Appearance.js.map +1 -1
- package/react/components/sdd/Application.d.ts +5 -4
- package/react/components/sdd/Application.js +94 -44
- package/react/components/sdd/Application.js.map +1 -1
- package/react/components/sdd/Applications.d.ts +12 -11
- package/react/components/sdd/Applications.js +110 -15
- package/react/components/sdd/Applications.js.map +1 -1
- package/react/components/sdd/AssetsPage.css +3 -3
- package/react/components/sdd/Authentication.js +1 -6
- package/react/components/sdd/Authentication.js.map +1 -1
- package/react/components/sdd/AuthenticationProviderConfig.js +5 -3
- package/react/components/sdd/AuthenticationProviderConfig.js.map +1 -1
- package/react/components/sdd/EditPreload.d.ts +4 -3
- package/react/components/sdd/EditPreload.js +49 -22
- package/react/components/sdd/EditPreload.js.map +1 -1
- package/react/components/sdd/Export.d.ts +7 -6
- package/react/components/sdd/Export.js +4 -3
- package/react/components/sdd/Export.js.map +1 -1
- package/react/components/sdd/ExportCloud.js +4 -0
- package/react/components/sdd/ExportCloud.js.map +1 -1
- package/react/components/sdd/GettingStarted.js +3 -3
- package/react/components/sdd/GettingStarted.js.map +1 -1
- package/react/components/sdd/Navigation.js +28 -4
- package/react/components/sdd/Navigation.js.map +1 -1
- package/react/components/sdd/OptionalSettingsView.d.ts +6 -5
- package/react/components/sdd/OptionalSettingsView.js +2 -10
- package/react/components/sdd/OptionalSettingsView.js.map +1 -1
- package/react/components/sdd/ProjectErrors.js +1 -1
- package/react/components/sdd/ProjectErrors.js.map +1 -1
- package/react/components/sdd/Publish.js +4 -2
- package/react/components/sdd/Publish.js.map +1 -1
- package/react/components/sdd/PublishProgress.js +11 -1
- package/react/components/sdd/PublishProgress.js.map +1 -1
- package/react/components/sdd/SmartDesktopDesigner.d.ts +17 -16
- package/react/components/sdd/SmartDesktopDesigner.js +54 -34
- package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
- package/react/components/sdd/ThemePage.css +6 -23
- package/react/components/sdd/ThemePage.js +8 -5
- package/react/components/sdd/ThemePage.js.map +1 -1
- package/react/components/sdd/Themes.d.ts +2 -1
- package/react/components/sdd/Themes.js +4 -2
- package/react/components/sdd/Themes.js.map +1 -1
- package/react/components/sdd/Toolbar.d.ts +5 -4
- package/react/components/sdd/Toolbar.js +18 -9
- package/react/components/sdd/Toolbar.js.map +1 -1
- package/react/components/sdd/appEditPage/Behavior.d.ts +34 -0
- package/react/components/sdd/appEditPage/Behavior.js +134 -0
- package/react/components/sdd/appEditPage/Behavior.js.map +1 -0
- package/react/components/sdd/appEditPage/Component.d.ts +22 -0
- package/react/components/sdd/appEditPage/Component.js +76 -0
- package/react/components/sdd/appEditPage/Component.js.map +1 -0
- package/react/components/sdd/appEditPage/DebugToolkit.d.ts +9 -0
- package/react/components/sdd/appEditPage/DebugToolkit.js +20 -0
- package/react/components/sdd/appEditPage/DebugToolkit.js.map +1 -0
- package/react/components/sdd/appEditPage/Interop.d.ts +10 -0
- package/react/components/sdd/appEditPage/Interop.js +40 -0
- package/react/components/sdd/appEditPage/Interop.js.map +1 -0
- package/react/components/sdd/appEditPage/Position.d.ts +18 -0
- package/react/components/sdd/appEditPage/Position.js +72 -0
- package/react/components/sdd/appEditPage/Position.js.map +1 -0
- package/react/components/sdd/appEditPage/Preloads.d.ts +9 -0
- package/react/components/sdd/appEditPage/Preloads.js +16 -0
- package/react/components/sdd/appEditPage/Preloads.js.map +1 -0
- package/react/components/sdd/appEditPage/SelectConnect.d.ts +15 -0
- package/react/components/sdd/appEditPage/SelectConnect.js +28 -0
- package/react/components/sdd/appEditPage/SelectConnect.js.map +1 -0
- package/react/components/sdd/appEditPage/Workspace.d.ts +12 -0
- package/react/components/sdd/appEditPage/Workspace.js +30 -0
- package/react/components/sdd/appEditPage/Workspace.js.map +1 -0
- package/react/components/sdd/common/getCSSVars.js +7 -2
- package/react/components/sdd/common/getCSSVars.js.map +1 -1
- package/react/components/sdd/common/setPreloadDefaults.d.ts +1 -1
- package/react/components/sdd/common/setPreloadDefaults.js +9 -4
- package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
- package/react/components/sdd/common/views.js +7 -4
- package/react/components/sdd/common/views.js.map +1 -1
- package/react/components/sdd/css/addApp.css +65 -0
- package/react/components/sdd/css/appearance.css +6 -0
- package/react/components/sdd/css/applications.css +27 -34
- package/react/components/sdd/css/authentication.css +7 -6
- package/react/components/sdd/css/buttons.css +1 -1
- package/react/components/sdd/css/export.css +5 -3
- package/react/components/sdd/css/getting-started.css +2 -2
- package/react/components/sdd/css/nav.css +11 -14
- package/react/components/sdd/css/project-header.css +5 -7
- package/react/components/sdd/css/styles.css +29 -23
- package/react/components/sdd/css/views.css +4 -3
- package/react/components/sdd/fixtures/apps.js +12 -0
- package/react/components/sdd/fixtures/apps.js.map +1 -1
- package/react/components/sdd/fixtures/authenticationProps.js +15 -1
- package/react/components/sdd/fixtures/authenticationProps.js.map +1 -1
- package/react/components/sdd/fixtures/configTemplate.js +1 -0
- package/react/components/sdd/fixtures/configTemplate.js.map +1 -1
- package/react/components/sdd/fixtures/preloads.js +14 -12
- package/react/components/sdd/fixtures/preloads.js.map +1 -1
- package/react/components/sdd/fixtures/publishProgress.js +40 -0
- package/react/components/sdd/fixtures/publishProgress.js.map +1 -1
- package/react/components/sdd/sdd_helpers.d.ts +6 -0
- package/react/components/sdd/sdd_helpers.js +6 -0
- package/react/components/sdd/sdd_helpers.js.map +1 -1
- package/react/components/sdd/smartDesktopClient.d.ts +466 -0
- package/react/components/sdd/smartDesktopClient.js +906 -0
- package/react/components/sdd/smartDesktopClient.js.map +1 -0
- package/react/components/sdd/smartDesktopClient.spec.d.ts +1 -0
- package/react/components/sdd/smartDesktopClient.spec.js +64 -0
- package/react/components/sdd/smartDesktopClient.spec.js.map +1 -0
- package/react/components/sdd/stories/AddApp.stories.d.ts +11 -0
- package/react/components/sdd/stories/AddApp.stories.js +26 -0
- package/react/components/sdd/stories/AddApp.stories.js.map +1 -0
- package/react/components/sdd/stories/AppEditPage.stories.d.ts +5 -1
- package/react/components/sdd/stories/AppEditPage.stories.js +5 -0
- package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
- package/react/components/sdd/stories/Appearance.stories.d.ts +1 -1
- package/react/components/sdd/stories/Appearance.stories.js +2 -0
- package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
- package/react/components/sdd/stories/Authentication.stories.js +2 -16
- package/react/components/sdd/stories/Authentication.stories.js.map +1 -1
- package/react/components/sdd/stories/OptionalSettingsView.stories.js +1 -1
- package/react/components/sdd/stories/OptionalSettingsView.stories.js.map +1 -1
- package/react/components/sdd/stories/SmartDesktopDesigner.stories.d.ts +1 -1
- package/react/components/sdd/stories/SmartDesktopDesigner.stories.js +3 -0
- package/react/components/sdd/stories/SmartDesktopDesigner.stories.js.map +1 -1
- package/react/components/sdd/stories/Themes.stories.d.ts +1 -1
- package/react/components/sdd/stories/Themes.stories.js +1 -0
- package/react/components/sdd/stories/Themes.stories.js.map +1 -1
- package/react/components/sdd/tests/AddApp.spec.d.ts +1 -0
- package/react/components/sdd/tests/AddApp.spec.js +133 -0
- package/react/components/sdd/tests/AddApp.spec.js.map +1 -0
- package/react/components/sdd/tests/AppEditPage.spec.js +108 -23
- package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
- package/react/components/sdd/tests/Application.spec.js +351 -369
- package/react/components/sdd/tests/Application.spec.js.map +1 -1
- package/react/components/sdd/tests/Applications.spec.d.ts +1 -1
- package/react/components/sdd/tests/Applications.spec.js +30 -50
- package/react/components/sdd/tests/Applications.spec.js.map +1 -1
- package/react/components/sdd/tests/Authentication.spec.js +8 -1
- package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
- package/react/components/sdd/tests/ContentHeader.spec.js +2 -0
- package/react/components/sdd/tests/ContentHeader.spec.js.map +1 -1
- package/react/components/sdd/tests/EditPreload.spec.js +63 -7
- package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
- package/react/components/sdd/tests/Export.spec.js +8 -1
- package/react/components/sdd/tests/Export.spec.js.map +1 -1
- package/react/components/sdd/tests/ItemList.spec.js +4 -0
- package/react/components/sdd/tests/ItemList.spec.js.map +1 -1
- package/react/components/sdd/tests/Navigation.spec.js +2 -2
- package/react/components/sdd/tests/Navigation.spec.js.map +1 -1
- package/react/components/sdd/tests/OptionalSettingsView.spec.js +264 -0
- package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
- package/react/components/sdd/tests/ProjectErrors.spec.js +3 -1
- package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
- package/react/components/sdd/tests/SmartDesktopDesigner.spec.js +2 -2
- package/react/components/sdd/tests/SmartDesktopDesigner.spec.js.map +1 -1
- package/react/components/sdd/tests/Themes.spec.js +1 -1
- package/react/components/sdd/tests/Themes.spec.js.map +1 -1
- package/react/components/sdd/tests/Toolbar.spec.js +53 -0
- package/react/components/sdd/tests/Toolbar.spec.js.map +1 -1
- package/react/components/sdd/tests/a11y_helper.js +8 -0
- package/react/components/sdd/tests/a11y_helper.js.map +1 -1
- package/react/components/search/Highlight.d.ts +6 -0
- package/react/components/search/Highlight.js +19 -0
- package/react/components/search/Highlight.js.map +1 -1
- package/react/components/search/Highlight.stories.js +1 -1
- package/react/components/search/Highlight.stories.js.map +1 -1
- package/react/components/search/Search.js +1 -1
- package/react/components/search/Search.js.map +1 -1
- package/react/components/search/SearchBestMatch.d.ts +4 -0
- package/react/components/search/SearchBestMatch.js +11 -0
- package/react/components/search/SearchBestMatch.js.map +1 -1
- package/react/components/search/SearchInput.d.ts +5 -0
- package/react/components/search/SearchInput.js +6 -0
- package/react/components/search/SearchInput.js.map +1 -1
- package/react/components/search/SearchProviderResults.js +2 -0
- package/react/components/search/SearchProviderResults.js.map +1 -1
- package/react/components/search/SearchResult.d.ts +5 -0
- package/react/components/search/SearchResult.js +6 -0
- package/react/components/search/SearchResult.js.map +1 -1
- package/react/components/search/SearchResult.spec.d.ts +1 -0
- package/react/components/search/SearchResult.spec.js +46 -0
- package/react/components/search/SearchResult.spec.js.map +1 -0
- package/react/components/search/SearchResult.stories.d.ts +16 -0
- package/react/components/search/SearchResult.stories.js +113 -0
- package/react/components/search/SearchResult.stories.js.map +1 -0
- package/react/components/search/SearchResults.js +5 -1
- package/react/components/search/SearchResults.js.map +1 -1
- package/react/components/search/SearchResults.spec.d.ts +1 -0
- package/react/components/search/SearchResults.spec.js +35 -0
- package/react/components/search/SearchResults.spec.js.map +1 -0
- package/react/components/search/SearchResults.stories.d.ts +11 -0
- package/react/components/search/SearchResults.stories.js +458 -0
- package/react/components/search/SearchResults.stories.js.map +1 -0
- package/react/components/shared/Animate.d.ts +5 -0
- package/react/components/shared/Animate.js +12 -1
- package/react/components/shared/Animate.js.map +1 -1
- package/react/components/shared/DefaultDropdownButton.js +26 -6
- package/react/components/shared/DefaultDropdownButton.js.map +1 -1
- package/react/components/shared/Tag.d.ts +0 -4
- package/react/components/shared/Tag.js +4 -0
- package/react/components/shared/Tag.js.map +1 -1
- package/react/components/shared/TagsMenu.d.ts +6 -0
- package/react/components/shared/TagsMenu.js +7 -0
- package/react/components/shared/TagsMenu.js.map +1 -1
- package/react/components/shared/addProtocolToValidURL.d.ts +6 -0
- package/react/components/shared/addProtocolToValidURL.js +6 -0
- package/react/components/shared/addProtocolToValidURL.js.map +1 -1
- package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
- package/react/components/shared/openQuitConfirmationDialog.js +4 -4
- package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
- package/react/components/shared/tests/DefaultDropdownButton.spec.js +12 -0
- package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -1
- package/react/components/shared/tests/addProtocolToValidURL.spec.js +1 -0
- package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
- package/react/components/shared/validateURL.d.ts +18 -0
- package/react/components/shared/validateURL.js +24 -5
- package/react/components/shared/validateURL.js.map +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.css +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.d.ts +3 -0
- package/react/components/singleInputDialog/SingleInputDialog.js +46 -0
- package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.stories.js +2 -2
- package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +1 -16
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +5 -3
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
- package/react/components/system/System.d.ts +22 -0
- package/react/components/system/System.js +23 -1
- package/react/components/system/System.js.map +1 -1
- package/react/components/system/System.stories.js +1 -0
- package/react/components/system/System.stories.js.map +1 -1
- package/react/components/system/SystemTrayComponentShell.d.ts +6 -0
- package/react/components/system/SystemTrayComponentShell.js +9 -0
- package/react/components/system/SystemTrayComponentShell.js.map +1 -1
- package/react/components/toolbar/AutoArrange.d.ts +5 -0
- package/react/components/toolbar/AutoArrange.js +8 -1
- package/react/components/toolbar/AutoArrange.js.map +1 -1
- package/react/components/toolbar/AutoArrange.spec.js +10 -4
- package/react/components/toolbar/AutoArrange.spec.js.map +1 -1
- package/react/components/toolbar/AutoArrange.stories.js +1 -0
- package/react/components/toolbar/AutoArrange.stories.js.map +1 -1
- package/react/components/toolbar/DragHandle.d.ts +4 -0
- package/react/components/toolbar/DragHandle.js +11 -0
- package/react/components/toolbar/DragHandle.js.map +1 -1
- package/react/components/toolbar/DragHandle.spec.js +1 -0
- package/react/components/toolbar/DragHandle.spec.js.map +1 -1
- package/react/components/toolbar/DragHandle.stories.js +1 -0
- package/react/components/toolbar/DragHandle.stories.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.d.ts +4 -0
- package/react/components/toolbar/MinimizeAll.js +7 -1
- package/react/components/toolbar/MinimizeAll.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.spec.js +1 -0
- package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.stories.js +1 -0
- package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
- package/react/components/toolbar/NotificationControl.d.ts +5 -0
- package/react/components/toolbar/NotificationControl.js +8 -1
- package/react/components/toolbar/NotificationControl.js.map +1 -1
- package/react/components/toolbar/RevealAll.d.ts +4 -0
- package/react/components/toolbar/RevealAll.js +7 -1
- package/react/components/toolbar/RevealAll.js.map +1 -1
- package/react/components/toolbar/RevealAll.spec.js +1 -0
- package/react/components/toolbar/RevealAll.spec.js.map +1 -1
- package/react/components/toolbar/RevealAll.stories.js +1 -0
- package/react/components/toolbar/RevealAll.stories.js.map +1 -1
- package/react/components/toolbar/SddButton.d.ts +4 -0
- package/react/components/toolbar/SddButton.js +4 -0
- package/react/components/toolbar/SddButton.js.map +1 -1
- package/react/components/toolbar/ToolbarIcon.d.ts +4 -0
- package/react/components/toolbar/ToolbarIcon.js +6 -2
- package/react/components/toolbar/ToolbarIcon.js.map +1 -1
- package/react/components/toolbar/ToolbarSection.d.ts +8 -9
- package/react/components/toolbar/ToolbarSection.js +21 -7
- package/react/components/toolbar/ToolbarSection.js.map +1 -1
- package/react/components/toolbar/ToolbarShell.d.ts +5 -0
- package/react/components/toolbar/ToolbarShell.js +7 -0
- package/react/components/toolbar/ToolbarShell.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +16 -0
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +20 -0
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +52 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +58 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +27 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +49 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +13 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +21 -10
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/Content.js +19 -0
- package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +16 -0
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +39 -0
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +9 -0
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +3 -0
- package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +6 -0
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +7 -0
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +37 -0
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js +40 -0
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts +3 -0
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +83 -1
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +10 -0
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +12 -3
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
- package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +18 -0
- package/react/components/toolbar/appLauncher/AppLauncherMenu.js +20 -0
- package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +9 -0
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +12 -0
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
- package/react/components/toolbar/appLauncher/appLauncher.css +1 -1
- package/react/components/toolbar/appLauncher/components/componentList.d.ts +3 -0
- package/react/components/toolbar/appLauncher/components/componentList.js +17 -3
- package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +6 -0
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +26 -0
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
- package/react/components/toolbar/dashbar/Dashbar.js +91 -15
- package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
- package/react/components/toolbar/dashbar/DashbarItem.js +5 -0
- package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +8 -1
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +7 -0
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +17 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +21 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +26 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +29 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +6 -1
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +6 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +78 -2
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +191 -40
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +8 -18
- package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +4 -0
- package/react/components/userPreferences/NotificationsPreferencesContext.js +4 -0
- package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
- package/react/components/userPreferences/UserPreferenceTypes.d.ts +3 -0
- package/react/components/userPreferences/UserPreferences.d.ts +8 -0
- package/react/components/userPreferences/UserPreferences.js +8 -0
- package/react/components/userPreferences/UserPreferences.js.map +1 -1
- package/react/components/userPreferences/UserPreferencesBase.js +4 -0
- package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
- package/react/components/userPreferences/components/ContentSection.d.ts +5 -0
- package/react/components/userPreferences/components/ContentSection.js +1 -1
- package/react/components/userPreferences/components/ContentSection.js.map +1 -1
- package/react/components/userPreferences/components/LeftNav.d.ts +4 -0
- package/react/components/userPreferences/components/content/DashbarEditor.js +3 -0
- package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
- package/react/components/userPreferences/components/content/Notifications.js +3 -0
- package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
- package/react/components/userPreferences/components/content/Workspaces.d.ts +14 -2
- package/react/components/userPreferences/components/content/Workspaces.js +78 -38
- package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +7 -3
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
- package/react/components/userPreferences/components/general/ScheduledClose.js +26 -5
- package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +20 -10
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
- package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +18 -1
- package/react/components/userPreferences/stores/UserPreferencesStore.js +35 -6
- package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
- package/react/components/userPreferences/tests/LeftNav.spec.js +15 -1
- package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -1
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +1 -0
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
- package/react/components/userPreferences/tests/UserPreferencesBase.spec.d.ts +1 -0
- package/react/components/userPreferences/tests/UserPreferencesBase.spec.js +42 -0
- package/react/components/userPreferences/tests/UserPreferencesBase.spec.js.map +1 -0
- package/react/components/userPreferences/tests/Workspace.spec.d.ts +1 -0
- package/react/components/userPreferences/tests/Workspace.spec.js +139 -0
- package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -0
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +130 -2
- package/react/components/windowTitleBar/WindowTitleBarShell.js +386 -27
- package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
- package/react/components/windowTitleBar/components/center/Tab.d.ts +3 -0
- package/react/components/windowTitleBar/components/center/Tab.js +3 -0
- package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
- package/react/components/windowTitleBar/components/center/TabList.d.ts +90 -0
- package/react/components/windowTitleBar/components/center/TabList.js +170 -4
- package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.d.ts +9 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.js +27 -5
- package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +47 -0
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +76 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts +4 -0
- package/react/components/windowTitleBar/components/left/LinkerGroups.js +5 -0
- package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +18 -0
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +49 -0
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
- package/react/components/windowTitleBar/components/left/ShareButton.d.ts +17 -0
- package/react/components/windowTitleBar/components/left/ShareButton.js +39 -0
- package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +4 -0
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/CloseButton.d.ts +27 -0
- package/react/components/windowTitleBar/components/right/CloseButton.js +27 -0
- package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +37 -0
- package/react/components/windowTitleBar/components/right/GroupingButton.js +40 -0
- package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +46 -0
- package/react/components/windowTitleBar/components/right/MaximizeButton.js +54 -0
- package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +26 -0
- package/react/components/windowTitleBar/components/right/MinimizeButton.js +26 -0
- package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
- package/react/components/windowTitleBar/components/windowTitle.d.ts +40 -0
- package/react/components/windowTitleBar/components/windowTitle.js +245 -48
- package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +5 -0
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js +81 -6
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
- package/react/components/yesNoDialog/YesNoDialog.css +1 -1
- package/react/components/yesNoDialog/YesNoDialog.d.ts +3 -0
- package/react/components/yesNoDialog/YesNoDialog.js +64 -1
- package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
- package/react/components/yesNoDialog/YesNoDialog.spec.js +4 -0
- package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
- package/react/components/yesNoDialog/YesNoDialog.stories.js +2 -2
- package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
- package/react/components/yesNoDialog/timer.js +2 -0
- package/react/components/yesNoDialog/timer.js.map +1 -1
- package/react/enzymeSetup.js +10 -0
- package/react/enzymeSetup.js.map +1 -1
- package/react/hooks/useDashbar.js +10 -0
- package/react/hooks/useDashbar.js.map +1 -1
- package/react/hooks/useDeepEffect.d.ts +4 -0
- package/react/hooks/useDeepEffect.js +21 -0
- package/react/hooks/useDeepEffect.js.map +1 -1
- package/react/hooks/useFavorites.d.ts +15 -0
- package/react/hooks/useFavorites.js +3 -0
- package/react/hooks/useFavorites.js.map +1 -1
- package/react/hooks/useFavoritesShell.d.ts +4 -0
- package/react/hooks/useFavoritesShell.js +23 -0
- package/react/hooks/useFavoritesShell.js.map +1 -1
- package/react/hooks/useHotkey.d.ts +6 -0
- package/react/hooks/useHotkey.js +9 -0
- package/react/hooks/useHotkey.js.map +1 -1
- package/react/hooks/useLinker.js +14 -0
- package/react/hooks/useLinker.js.map +1 -1
- package/react/hooks/useMenu.d.ts +29 -0
- package/react/hooks/useMenu.js +12 -1
- package/react/hooks/useMenu.js.map +1 -1
- package/react/hooks/useNotifications.d.ts +44 -0
- package/react/hooks/useNotifications.js +104 -12
- package/react/hooks/useNotifications.js.map +1 -1
- package/react/hooks/useOutsideClickDetector.d.ts +3 -0
- package/react/hooks/useOutsideClickDetector.js +3 -0
- package/react/hooks/useOutsideClickDetector.js.map +1 -1
- package/react/hooks/usePubSub.d.ts +17 -0
- package/react/hooks/usePubSub.js +18 -0
- package/react/hooks/usePubSub.js.map +1 -1
- package/react/hooks/useSearch.d.ts +5 -0
- package/react/hooks/useSearch.js +30 -0
- package/react/hooks/useSearch.js.map +1 -1
- package/react/hooks/useToolbar.d.ts +1 -1
- package/react/hooks/useToolbar.js +54 -2
- package/react/hooks/useToolbar.js.map +1 -1
- package/react/reducers/favoriteReducer.d.ts +3 -0
- package/react/reducers/linkerReducer.d.ts +3 -0
- package/react/reducers/linkerReducer.js +4 -0
- package/react/reducers/linkerReducer.js.map +1 -1
- package/react/reducers/menuReducer.d.ts +28 -0
- package/react/reducers/menuReducer.js +34 -0
- package/react/reducers/menuReducer.js.map +1 -1
- package/react/reducers/rootReducer.d.ts +2 -2
- package/react/reducers/rootReducer.js +3 -0
- package/react/reducers/rootReducer.js.map +1 -1
- package/react/reducers/searchReducer.d.ts +7 -0
- package/react/reducers/searchReducer.js +6 -0
- package/react/reducers/searchReducer.js.map +1 -1
- package/react/reducers/workspaceReducer.js +1 -0
- package/react/reducers/workspaceReducer.js.map +1 -1
- package/react/store.d.ts +8 -4
- package/react/store.js +11 -0
- package/react/store.js.map +1 -1
- package/react/tsconfig.tsbuildinfo +1 -0
- package/react/types/fdc3.d.ts +2 -0
- package/react/types/linkerTypes.d.ts +13 -0
- package/react/types/linkerTypes.js +1 -0
- package/react/types/linkerTypes.js.map +1 -1
- package/react/types/smartDesktopDesignerTypes.d.ts +8 -0
- package/react/types/smartDesktopDesignerTypes.js.map +1 -1
- package/react/types/workspaceTypes.d.ts +8 -0
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2017 by ChartIQ, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
1
5
|
import windowTitleBarStoreDefaults from "./windowTitleBarStoreDefaults";
|
|
2
6
|
const getWindowNameForDocking = (finsembleWindow) => {
|
|
3
7
|
const parent = finsembleWindow.parentWindow;
|
|
@@ -29,6 +33,11 @@ const getStackedWindow = (params, cb) => {
|
|
|
29
33
|
}
|
|
30
34
|
};
|
|
31
35
|
let windowTitleBarStore;
|
|
36
|
+
/**
|
|
37
|
+
* When a group update is publish, we sift through the data to see if this window is snapped or grouped with other windows. Then we publish that info, and the GroupingButton renders the correct icon.
|
|
38
|
+
* @param {*} err
|
|
39
|
+
* @param {*} response
|
|
40
|
+
*/
|
|
32
41
|
const onDockingGroupUpdate = (err, response) => {
|
|
33
42
|
if (err || !response.data || !response.data.groupData) {
|
|
34
43
|
return;
|
|
@@ -38,6 +47,7 @@ const onDockingGroupUpdate = (err, response) => {
|
|
|
38
47
|
let movableGroups = groupNames
|
|
39
48
|
.filter((groupName) => response.data.groupData[groupName].isMovable)
|
|
40
49
|
.map((groupName) => response.data.groupData[groupName]);
|
|
50
|
+
// This is all movable and snapped groups. It's used later to figure out the icon to display.
|
|
41
51
|
windowTitleBarStore.setValue({
|
|
42
52
|
field: "Main.allDockingGroups",
|
|
43
53
|
value: response.data.groupData,
|
|
@@ -51,6 +61,9 @@ const onDockingGroupUpdate = (err, response) => {
|
|
|
51
61
|
field: "Main.dockingGroups",
|
|
52
62
|
value: myGroups,
|
|
53
63
|
});
|
|
64
|
+
/**
|
|
65
|
+
* Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.
|
|
66
|
+
*/
|
|
54
67
|
let isSnapped = false;
|
|
55
68
|
let isInMovableGroup = false;
|
|
56
69
|
let isTopRight = false;
|
|
@@ -81,6 +94,9 @@ const onDockingGroupUpdate = (err, response) => {
|
|
|
81
94
|
{ field: "Main.dockingIcon", value: icon },
|
|
82
95
|
]);
|
|
83
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* Listen for updates from the dragAndDropClient.
|
|
99
|
+
*/
|
|
84
100
|
const listenForDNDUpdates = () => {
|
|
85
101
|
FSBL.Clients.RouterClient.subscribe(`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`, (err, response) => {
|
|
86
102
|
if (err) {
|
|
@@ -98,7 +114,11 @@ const listenForDNDUpdates = () => {
|
|
|
98
114
|
]);
|
|
99
115
|
});
|
|
100
116
|
};
|
|
117
|
+
/**
|
|
118
|
+
* Handles whether to show the linker button.
|
|
119
|
+
*/
|
|
101
120
|
const showLinkerButton = () => {
|
|
121
|
+
// Get state (channel membership) from the linkerClient. Then set the value in the header so that the title bar accurately reflects the state.
|
|
102
122
|
const cb = (err, response) => {
|
|
103
123
|
if (response.channels) {
|
|
104
124
|
windowTitleBarStore.setValue({
|
|
@@ -151,8 +171,12 @@ const processInitialTabList = (err, values) => {
|
|
|
151
171
|
if (values)
|
|
152
172
|
Actions._setTabs(values);
|
|
153
173
|
};
|
|
174
|
+
/**
|
|
175
|
+
* "FSBLHeader" can be true, false or an object. If false then we'll never even be here. If true, then maximize, minimize and close buttons will display. If an object, then the developer can override whether buttons are shown with "hideMaximize", "hideMinimize" and "hideClose"
|
|
176
|
+
*/
|
|
154
177
|
const processFSBLHeader = (FSBLHeader, windowTitleBarConfig, options) => {
|
|
155
178
|
var _a, _b;
|
|
179
|
+
// Display name is first up for display. If it doesn't exist, we look for a default title (or one that's already set on init). If no title, we display the window's name (e.g., '5434-Welcome Component-2321').
|
|
156
180
|
const displayName = (_b = (_a = options.customData) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.displayName;
|
|
157
181
|
const max = !!FSBLHeader.hideMaximize;
|
|
158
182
|
windowTitleBarStore.setValues([
|
|
@@ -161,15 +185,23 @@ const processFSBLHeader = (FSBLHeader, windowTitleBarConfig, options) => {
|
|
|
161
185
|
{ field: "Close.hide", value: !!FSBLHeader.hideClose },
|
|
162
186
|
{ field: "AlwaysOnTop.show", value: !!FSBLHeader.alwaysOnTop },
|
|
163
187
|
]);
|
|
188
|
+
// By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto
|
|
164
189
|
windowTitleBarStore.setValue({
|
|
165
190
|
field: "hackScrollbar",
|
|
166
|
-
value: windowTitleBarConfig.hackScrollbar !== false,
|
|
191
|
+
value: windowTitleBarConfig.FSBLHeader.hackScrollbar !== false,
|
|
192
|
+
});
|
|
193
|
+
windowTitleBarStore.setValue({
|
|
194
|
+
field: "adjustContentHeights",
|
|
195
|
+
value: windowTitleBarConfig.FSBLHeader.adjustContentHeights !== false,
|
|
196
|
+
});
|
|
197
|
+
// By default, fixed positioned elements with a top style set to '0px' will be bumped by the header height and the
|
|
198
|
+
// DOM will be monitored for nodes that are added dynamically and bump them if they are fixed with a top style of 0px.
|
|
199
|
+
windowTitleBarStore.setValue({
|
|
200
|
+
field: "bumpElements",
|
|
201
|
+
value: Object.assign({ fixed: "0Positioned", bumpBy: "25px", monitorFixedAdditions: true }, windowTitleBarConfig.FSBLHeader.bumpElements),
|
|
167
202
|
});
|
|
168
|
-
const title = FSBL.Clients.WindowClient.title || windowTitleBarConfig.title || displayName;
|
|
169
|
-
if (title) {
|
|
170
|
-
document.title = title;
|
|
171
|
-
}
|
|
172
203
|
};
|
|
204
|
+
// Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]
|
|
173
205
|
const getOptionsCallback = (err, opts) => {
|
|
174
206
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
175
207
|
const windowAllowTabbing = (_d = (_c = (_b = (_a = opts.customData) === null || _a === void 0 ? void 0 : _a.foreign) === null || _b === void 0 ? void 0 : _b.services) === null || _c === void 0 ? void 0 : _c.windowService) === null || _d === void 0 ? void 0 : _d.allowTabbing;
|
|
@@ -188,21 +220,26 @@ const getOptionsCallback = (err, opts) => {
|
|
|
188
220
|
const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
|
|
189
221
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
190
222
|
const finsembleConfig = values.finsemble;
|
|
223
|
+
// Check FEA config for DOM based movement configuration
|
|
191
224
|
const { useDOMBasedMovement } = values["finsemble-electron-adapter"];
|
|
192
225
|
windowTitleBarStore.setValue({
|
|
193
226
|
field: "Main.useDOMBasedMovement",
|
|
194
227
|
value: typeof useDOMBasedMovement === "undefined" ? true : useDOMBasedMovement,
|
|
195
228
|
});
|
|
229
|
+
// Override defaults if finsemble.Window Manager exists.
|
|
196
230
|
const globalWindowManagerConfig = finsembleConfig["Window Manager"] || {
|
|
197
231
|
alwaysOnTopIcon: false,
|
|
198
232
|
showTabs: false,
|
|
199
233
|
};
|
|
234
|
+
// Look to see if docking is enabled. Cascade through backward compatibility with old "betaFeatures" and then a default if no config is found at all.
|
|
200
235
|
finsembleConfig.servicesConfig = (_a = finsembleConfig.servicesConfig) !== null && _a !== void 0 ? _a : {};
|
|
201
236
|
const defaultDockingConfig = {
|
|
202
237
|
enabled: true,
|
|
203
238
|
};
|
|
204
239
|
let dockingConfig = (_e = (_c = (_b = finsembleConfig.servicesConfig.docking) !== null && _b !== void 0 ? _b : finsembleConfig.docking) !== null && _c !== void 0 ? _c : (_d = finsembleConfig.betaFeatures) === null || _d === void 0 ? void 0 : _d.docking) !== null && _e !== void 0 ? _e : defaultDockingConfig;
|
|
205
240
|
dockingConfig.tabbing = (_f = dockingConfig.tabbing) !== null && _f !== void 0 ? _f : {};
|
|
241
|
+
// Whether the alwaysOnTop pin is displayed depends this component's config (foreign.components["Widow Manager"].alwaysOnTop)
|
|
242
|
+
// and then on the global setting (finsemble["Window Manager"].alwaysOnTop)
|
|
206
243
|
const alwaysOnTopIcon = (_h = (_g = windowTitleBarConfig.alwaysOnTopIcon) !== null && _g !== void 0 ? _g : globalWindowManagerConfig.alwaysOnTopIcon) !== null && _h !== void 0 ? _h : false;
|
|
207
244
|
const servicesConfigWindow = finsembleConfig.servicesConfig.window;
|
|
208
245
|
windowTitleBarStore.setValues([
|
|
@@ -213,6 +250,7 @@ const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
|
|
|
213
250
|
},
|
|
214
251
|
{ field: "AlwaysOnTop.show", value: alwaysOnTopIcon },
|
|
215
252
|
]);
|
|
253
|
+
// If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.
|
|
216
254
|
if (dockingConfig.tabbing.enabled === false) {
|
|
217
255
|
windowTitleBarStore.setValue({
|
|
218
256
|
field: "showTabs",
|
|
@@ -220,12 +258,15 @@ const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
|
|
|
220
258
|
});
|
|
221
259
|
}
|
|
222
260
|
else {
|
|
261
|
+
// If tabbing is enabled system-wide, look to the global config for its value. Then look to the local component's config.
|
|
262
|
+
// This is the global window manager config.
|
|
223
263
|
if (typeof windowTitleBarConfig.showTabs !== "boolean") {
|
|
224
264
|
windowTitleBarStore.setValue({
|
|
225
265
|
field: "showTabs",
|
|
226
266
|
value: globalWindowManagerConfig.showTabs,
|
|
227
267
|
});
|
|
228
268
|
}
|
|
269
|
+
// This is the component's config.
|
|
229
270
|
if (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {
|
|
230
271
|
windowTitleBarStore.setValue({
|
|
231
272
|
field: "showTabs",
|
|
@@ -235,10 +276,12 @@ const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
|
|
|
235
276
|
finsembleWindow.getOptions(getOptionsCallback);
|
|
236
277
|
}
|
|
237
278
|
};
|
|
279
|
+
// these are constants that are set inside of setupStore. so they're declared as vars and not constants.
|
|
238
280
|
let constants;
|
|
239
281
|
const Actions = {
|
|
240
282
|
parentWrapperStore: null,
|
|
241
283
|
initialize: () => {
|
|
284
|
+
// This ensures that our config is correct, even if the developer missed some entries
|
|
242
285
|
const { options } = FSBL.Clients.WindowClient;
|
|
243
286
|
const windowTitleBarConfig = options.customData.foreign.components["Window Manager"];
|
|
244
287
|
const { FSBLHeader } = windowTitleBarConfig;
|
|
@@ -248,6 +291,7 @@ const Actions = {
|
|
|
248
291
|
showLinkerButton();
|
|
249
292
|
listenForDNDUpdates();
|
|
250
293
|
FSBL.Clients.RouterClient.subscribe("Finsemble.WorkspaceService.groupUpdate", onDockingGroupUpdate);
|
|
294
|
+
// default title.
|
|
251
295
|
windowTitleBarStore.setValue({
|
|
252
296
|
field: "Main.windowTitle",
|
|
253
297
|
value: FSBL.Clients.WindowClient.getWindowTitle(),
|
|
@@ -257,10 +301,18 @@ const Actions = {
|
|
|
257
301
|
processFEAAndFinsembleConfig(config, windowTitleBarConfig);
|
|
258
302
|
});
|
|
259
303
|
Actions.getInitialTabList(processInitialTabList);
|
|
304
|
+
/**
|
|
305
|
+
* This store does not listen on window events (such as "maximized" or "minimized") - that is the
|
|
306
|
+
* WindowClient's job. The headerCommandChannel allows the WindowClient to affect the display state
|
|
307
|
+
* of the windowTitleBar - such as changing the maximize icon when a "maximized" event is received.
|
|
308
|
+
*/
|
|
260
309
|
FSBL.Clients.WindowClient.headerCommandChannel((command, state) => {
|
|
261
310
|
Actions.remoteStateUpdate(command, state);
|
|
262
311
|
});
|
|
263
312
|
},
|
|
313
|
+
/**
|
|
314
|
+
* Helper function to sift through all of the data coming from the windowService. Outputs an array of groups that the window belongs to.
|
|
315
|
+
*/
|
|
264
316
|
getMyDockingGroups: function (groupData) {
|
|
265
317
|
let myGroups = [];
|
|
266
318
|
let windowName = getWindowNameForDocking(finsembleWindow);
|
|
@@ -289,14 +341,23 @@ const Actions = {
|
|
|
289
341
|
translateX,
|
|
290
342
|
});
|
|
291
343
|
},
|
|
344
|
+
/**
|
|
345
|
+
* Handles messages coming from the windowClient.
|
|
346
|
+
*/
|
|
292
347
|
remoteStateUpdate: function (command, state) {
|
|
293
348
|
const key = Object.keys(state)[0];
|
|
294
349
|
const field = `${command}.${key}`;
|
|
295
350
|
windowTitleBarStore.setValue({ field: field, value: state[key] });
|
|
296
351
|
},
|
|
352
|
+
/**
|
|
353
|
+
* Minimizes the window.
|
|
354
|
+
*/
|
|
297
355
|
clickMinimize: function () {
|
|
298
356
|
finsembleWindow.minimize(() => { });
|
|
299
357
|
},
|
|
358
|
+
/**
|
|
359
|
+
* Closes the window, allows for cleanup. Removes the window from workspace; this function is only invoked when the user clicks the close button.
|
|
360
|
+
*/
|
|
300
361
|
clickClose: function () {
|
|
301
362
|
FSBL.Clients.WindowClient.close({
|
|
302
363
|
closeWindow: true,
|
|
@@ -304,6 +365,9 @@ const Actions = {
|
|
|
304
365
|
userInitiated: true,
|
|
305
366
|
});
|
|
306
367
|
},
|
|
368
|
+
/**
|
|
369
|
+
* Toggles group membership. If two windows are snapped, and this button is clicked, they become part of the same group that can be moved around together.
|
|
370
|
+
*/
|
|
307
371
|
toggleGroup: function () {
|
|
308
372
|
const groups = windowTitleBarStore.getValue({ field: "Main.dockingGroups" });
|
|
309
373
|
const isInMovableGroup = groups.some((group) => group.isMovable);
|
|
@@ -314,6 +378,9 @@ const Actions = {
|
|
|
314
378
|
finsembleWindow.formGroup();
|
|
315
379
|
}
|
|
316
380
|
},
|
|
381
|
+
/**
|
|
382
|
+
* Maximizes the window.
|
|
383
|
+
*/
|
|
317
384
|
clickMaximize: function () {
|
|
318
385
|
if (finsembleWindow.windowOptions.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)
|
|
319
386
|
return finsembleWindow.maximize(() => {
|
|
@@ -373,6 +440,7 @@ const Actions = {
|
|
|
373
440
|
addTab: function (windowIdentifier, i) {
|
|
374
441
|
let tabs = Actions.getTabs();
|
|
375
442
|
tabs.push(windowIdentifier);
|
|
443
|
+
// quick UI update
|
|
376
444
|
Actions._setTabs(tabs);
|
|
377
445
|
let callback = () => {
|
|
378
446
|
var _a;
|
|
@@ -410,6 +478,7 @@ const Actions = {
|
|
|
410
478
|
}
|
|
411
479
|
tabs.splice(currentIndex, 1);
|
|
412
480
|
tabs.splice(newIndex, 0, tab);
|
|
481
|
+
// Local change, quickly updates the dom.
|
|
413
482
|
Actions._setTabs(tabs);
|
|
414
483
|
Actions.parentWrapper.reorder({ windowIdentifiers: tabs });
|
|
415
484
|
},
|
|
@@ -434,7 +503,8 @@ const Actions = {
|
|
|
434
503
|
Actions.parentSubscriptions.forEach((sub) => {
|
|
435
504
|
FSBL.Clients.RouterClient.unsubscribe(sub);
|
|
436
505
|
});
|
|
437
|
-
Actions.parentSubscriptions = [];
|
|
506
|
+
Actions.parentSubscriptions = []; // remove the subscribeId
|
|
507
|
+
// Syncs scroll state across all tabs in a stack.
|
|
438
508
|
FSBL.Clients.RouterClient.removeListener(constants.TAB_SCROLL_POSITION_CHANGED, Actions.onTabListScrollPositionChanged);
|
|
439
509
|
cb();
|
|
440
510
|
},
|
|
@@ -489,6 +559,11 @@ const Actions = {
|
|
|
489
559
|
}
|
|
490
560
|
},
|
|
491
561
|
};
|
|
562
|
+
/**
|
|
563
|
+
* Initializes the store for the windowTitleBar.
|
|
564
|
+
*
|
|
565
|
+
* @param {any} cb
|
|
566
|
+
*/
|
|
492
567
|
function initialize(cb) {
|
|
493
568
|
FSBL.Clients.DistributedStoreClient.createStore({ store: "windowTitleBarStore", values: windowTitleBarStoreDefaults }, (err, store) => {
|
|
494
569
|
if (!err && store) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windowTitleBarStore.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/stores/windowTitleBarStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport windowTitleBarStoreDefaults from \"./windowTitleBarStoreDefaults\";\nimport { StandardCallback } from \"@finsemble/finsemble-api/types/types\";\nimport { FinsembleWindow, WindowIdentifier } from \"@finsemble/finsemble-api\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\n\nconst getWindowNameForDocking = (finsembleWindow: FinsembleWindow) => {\n\tconst parent = finsembleWindow.parentWindow;\n\treturn parent ? parent.name : finsembleWindow.name;\n};\n\ntype ParentParams = {\n\twindowIdentifiers: WindowIdentifier[];\n\tvisibleWindowIdentifier: WindowIdentifier;\n\tcreate: boolean;\n};\n\nconst getStackedWindow = (params: ParentParams, cb: StandardCallback) => {\n\tif (!finsembleWindow.parentWindow && params.create) {\n\t\tconst onParentSet = (evt: any) => {\n\t\t\tconst { parentName } = evt.data;\n\t\t\tfinsembleWindow.setParent({ windowName: parentName }, (err2, windowWrapper) => {\n\t\t\t\tcb?.(err2, windowWrapper);\n\t\t\t});\n\t\t\tfinsembleWindow.removeListener(\"parent-set\", onParentSet);\n\t\t};\n\t\tfinsembleWindow.addListener(\"parent-set\", onParentSet);\n\t\tFSBL.Clients.LauncherClient.spawn(\n\t\t\t\"StackedWindow\",\n\t\t\t{\n\t\t\t\twindowType: \"StackedWindow\",\n\t\t\t\tdata: { windowIdentifiers: params.windowIdentifiers },\n\t\t\t\toptions: { newStack: true },\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (!err) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcb?.(err, null);\n\t\t\t}\n\t\t);\n\t} else {\n\t\tfinsembleWindow.getParent(cb);\n\t}\n};\n\nlet windowTitleBarStore: StoreModel;\n\ntype ConstantsType = {\n\tPARENT_WRAPPER_UPDATES: string;\n\tCHILD_WINDOW_FIELD: string;\n\tVISIBLE_WINDOW_FIELD: string;\n\tTAB_SCROLL_POSITION_CHANGED: string;\n};\n\ntype ActionsType = {\n\tparentWrapperStore: any;\n\tparentSubscriptions: any[];\n\tparentWrapper: FinsembleWindow | null;\n\n\tinitialize: () => void;\n\tgetMyDockingGroups: (groupData: any) => any[];\n\tonTabListScrollPositionChanged: StandardCallback;\n\tsetTabListScrollPosition: (translateX: number) => void;\n\tremoteStateUpdate: (command: string, state: any) => void;\n\tclickMinimize: () => void;\n\tclickClose: () => void;\n\ttoggleGroup: () => void;\n\tclickMaximize: () => void;\n\tgetTabs: () => WindowIdentifier[];\n\t_setTabs: (tabs: WindowIdentifier[] | null) => any;\n\taddTabLocally: (windowIdentifier: WindowIdentifier, i: number) => void;\n\tremoveTabsLocally: () => void;\n\tremoveTabLocally: (windowIdentifier: WindowIdentifier) => void;\n\treorderTabLocally: (tab: WindowIdentifier, newIndex: number) => undefined | any;\n\taddTab: (windowIdentifier: WindowIdentifier, i: number) => any;\n\tremoveTab: (windowIdentifier: WindowIdentifier, i: number) => any;\n\tcloseTab: (windowIdentifier: WindowIdentifier) => void;\n\treorderTab: (tab: WindowIdentifier, newIndex: number) => any;\n\tfindTab: (tab: WindowIdentifier) => { tab: WindowIdentifier; currentIndex: number };\n\tsetActiveTab: (windowIdentifier: WindowIdentifier) => Promise<any>;\n\tonTabListChanged: StandardCallback;\n\tstopListeningOnParentWrapper: (cb: Function) => void;\n\tlistenOnParentWrapper: () => void;\n\tsetupStore: (cb?: Function) => void;\n\tgetInitialTabList: (cb: StandardCallback) => void;\n\tcreateParentWrapper: (params: ParentParams, cb?: Function) => void;\n};\n\n/**\n * When a group update is publish, we sift through the data to see if this window is snapped or grouped with other windows. Then we publish that info, and the GroupingButton renders the correct icon.\n * @param {*} err\n * @param {*} response\n */\nconst onDockingGroupUpdate: StandardCallback = (err, response) => {\n\tif (err || !response.data || !response.data.groupData) {\n\t\treturn;\n\t}\n\tFSBL.Clients.Logger.system.debug(\"On docking group update\", response.data.groupData);\n\tlet groupNames = Object.keys(response.data.groupData);\n\tlet movableGroups = groupNames\n\t\t.filter((groupName) => response.data.groupData[groupName].isMovable)\n\t\t.map((groupName) => response.data.groupData[groupName]);\n\t// This is all movable and snapped groups. It's used later to figure out the icon to display.\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allDockingGroups\",\n\t\tvalue: response.data.groupData,\n\t});\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allMovableDockingGroups\",\n\t\tvalue: movableGroups,\n\t});\n\tlet myGroups = Actions.getMyDockingGroups(response.data.groupData);\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.dockingGroups\",\n\t\tvalue: myGroups,\n\t});\n\t/**\n\t * Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.\n\t */\n\tlet isSnapped = false;\n\tlet isInMovableGroup = false;\n\tlet isTopRight = false;\n\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\tfor (let i = 0; i < myGroups.length; i++) {\n\t\tlet myGroup = myGroups[i];\n\t\tif (myGroup.isMovable) {\n\t\t\tisInMovableGroup = true;\n\t\t\tif (windowName == myGroup.topRightWindow) {\n\t\t\t\tisTopRight = true;\n\t\t\t}\n\t\t} else {\n\t\t\tisSnapped = true;\n\t\t}\n\t}\n\tlet icon: string | false = false;\n\n\tif (isSnapped) {\n\t\ticon = \"joiner\";\n\t}\n\tif (isInMovableGroup) {\n\t\ticon = \"ejector\";\n\t}\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"isSnapped\", value: isSnapped },\n\t\t{ field: \"isGrouped\", value: isInMovableGroup },\n\t\t{ field: \"isTopRight\", value: isTopRight },\n\t\t{ field: \"Main.dockingIcon\", value: icon },\n\t]);\n};\n\n/**\n * Listen for updates from the dragAndDropClient.\n */\nconst listenForDNDUpdates = () => {\n\tFSBL.Clients.RouterClient.subscribe(`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`, (err, response) => {\n\t\tif (err) {\n\t\t\treturn console.error(err);\n\t\t}\n\t\twindowTitleBarStore.setValues([\n\t\t\t{\n\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t\tvalue: response.data.emitterEnabled,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfield: \"Sharer.receiverEnabled\",\n\t\t\t\tvalue: response.data.receiverEnabled,\n\t\t\t},\n\t\t]);\n\t});\n};\n\n/**\n * Handles whether to show the linker button.\n */\nconst showLinkerButton = () => {\n\t// Get state (channel membership) from the linkerClient. Then set the value in the header so that the title bar accurately reflects the state.\n\tconst cb: StandardCallback = (err, response) => {\n\t\tif (response.channels) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Linker.channels\",\n\t\t\t\tvalue: response.channels,\n\t\t\t});\n\t\t}\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"Linker.showLinkerButton\",\n\t\t\tvalue: true,\n\t\t});\n\t};\n\tcb(null, FSBL.Clients.LinkerClient.getState());\n\tFSBL.Clients.LinkerClient.onStateChange(cb);\n};\n\nconst processInitialTabList = (err: any, values: any) => {\n\tconst onParentSet = () => {\n\t\tActions.parentWrapper = null;\n\t\tActions.getInitialTabList(() => {\n\t\t\tFSBL.Clients.Logger.system.debug(\"docking group update after initial tab list\");\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\tconst onParentCleared = () => {\n\t\tActions.parentWrapper = null;\n\t\tFSBL.Clients.Logger.system.debug(\"ClearParent, setting tabs to null\");\n\t\tActions.stopListeningOnParentWrapper(() => {\n\t\t\tActions.parentWrapperStore = null;\n\t\t\tActions._setTabs(null);\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\n\tfinsembleWindow?.addListener(\"setParent\", onParentSet);\n\tfinsembleWindow?.addListener(\"clearParent\", onParentCleared);\n\tif (err) {\n\t\treturn FSBL.Clients.Logger.system.error(\"Error in getInitialTabList.\", err);\n\t}\n\n\tif (values) Actions._setTabs(values);\n};\n\n/**\n * \"FSBLHeader\" can be true, false or an object. If false then we'll never even be here. If true, then maximize, minimize and close buttons will display. If an object, then the developer can override whether buttons are shown with \"hideMaximize\", \"hideMinimize\" and \"hideClose\"\n */\nconst processFSBLHeader = (FSBLHeader: any, windowTitleBarConfig: any, options: any) => {\n\t// Display name is first up for display. If it doesn't exist, we look for a default title (or one that's already set on init). If no title, we display the window's name (e.g., '5434-Welcome Component-2321').\n\tconst displayName = options.customData?.component?.displayName;\n\n\tconst max = !!FSBLHeader.hideMaximize;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Maximize.hide\", value: max },\n\t\t{ field: \"Minimize.hide\", value: !!FSBLHeader.hideMinimize },\n\t\t{ field: \"Close.hide\", value: !!FSBLHeader.hideClose },\n\t\t{ field: \"AlwaysOnTop.show\", value: !!FSBLHeader.alwaysOnTop },\n\t]);\n\n\t// By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\n\twindowTitleBarStore.setValue({\n\t\tfield: \"hackScrollbar\",\n\t\tvalue: windowTitleBarConfig.hackScrollbar !== false,\n\t});\n\n\tconst title = FSBL.Clients.WindowClient.title || windowTitleBarConfig.title || displayName;\n\n\tif (title) {\n\t\tdocument.title = title;\n\t}\n};\n\n// Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]\nconst getOptionsCallback: StandardCallback = (err, opts: Record<string, any>) => {\n\tconst windowAllowTabbing = opts.customData?.foreign?.services?.windowService?.allowTabbing;\n\tconst windowIgnoreTabbing = opts.customData?.foreign?.services?.windowService?.ignoreTilingAndTabbingRequests;\n\tconst dockingAllowTabbing = opts.customData?.foreign?.services?.dockingService?.allowTabbing;\n\tconst dockingIgnoreTabbing = opts.customData?.foreign.services?.dockingService?.ignoreTilingAndTabbingRequests;\n\tconst dontShowTabs =\n\t\twindowAllowTabbing === false ||\n\t\twindowIgnoreTabbing === true ||\n\t\tdockingAllowTabbing === false ||\n\t\tdockingIgnoreTabbing === true;\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"showTabs\",\n\t\tvalue: !dontShowTabs,\n\t});\n};\n\nconst processFEAAndFinsembleConfig = (values: Record<string, any>, windowTitleBarConfig: Record<string, any>) => {\n\tconst finsembleConfig = values.finsemble;\n\n\t// Check FEA config for DOM based movement configuration\n\tconst { useDOMBasedMovement } = values[\"finsemble-electron-adapter\"];\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.useDOMBasedMovement\",\n\t\tvalue: typeof useDOMBasedMovement === \"undefined\" ? true : useDOMBasedMovement,\n\t});\n\n\t// Override defaults if finsemble.Window Manager exists.\n\tconst globalWindowManagerConfig = finsembleConfig[\"Window Manager\"] || {\n\t\talwaysOnTopIcon: false,\n\t\tshowTabs: false,\n\t};\n\n\t// Look to see if docking is enabled. Cascade through backward compatibility with old \"betaFeatures\" and then a default if no config is found at all.\n\n\tfinsembleConfig.servicesConfig = finsembleConfig.servicesConfig ?? {};\n\n\tconst defaultDockingConfig = {\n\t\tenabled: true,\n\t};\n\tlet dockingConfig =\n\t\tfinsembleConfig.servicesConfig.docking ??\n\t\tfinsembleConfig.docking ??\n\t\tfinsembleConfig.betaFeatures?.docking ??\n\t\tdefaultDockingConfig;\n\tdockingConfig.tabbing = dockingConfig.tabbing ?? {};\n\n\t// Whether the alwaysOnTop pin is displayed depends this component's config (foreign.components[\"Widow Manager\"].alwaysOnTop)\n\t// and then on the global setting (finsemble[\"Window Manager\"].alwaysOnTop)\n\tconst alwaysOnTopIcon = windowTitleBarConfig.alwaysOnTopIcon ?? globalWindowManagerConfig.alwaysOnTopIcon ?? false;\n\n\tconst servicesConfigWindow = finsembleConfig.servicesConfig.window;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Main.dockingEnabled\", value: dockingConfig.enabled },\n\t\t{\n\t\t\tfield: \"allowWindowTitleRenaming\",\n\t\t\tvalue: servicesConfigWindow.allowWindowTitleRenaming ?? dockingConfig.tabbing.allowEditing ?? false,\n\t\t},\n\t\t{ field: \"AlwaysOnTop.show\", value: alwaysOnTopIcon },\n\t]);\n\n\t// If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.\n\tif (dockingConfig.tabbing.enabled === false) {\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"showTabs\",\n\t\t\tvalue: dockingConfig.tabbing.enabled,\n\t\t});\n\t} else {\n\t\t// If tabbing is enabled system-wide, look to the global config for its value. Then look to the local component's config.\n\n\t\t// This is the global window manager config.\n\t\tif (typeof windowTitleBarConfig.showTabs !== \"boolean\") {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: globalWindowManagerConfig.showTabs,\n\t\t\t});\n\t\t}\n\t\t// This is the component's config.\n\t\tif (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: windowTitleBarConfig.showTabs,\n\t\t\t});\n\t\t}\n\n\t\tfinsembleWindow.getOptions(getOptionsCallback);\n\t}\n};\n\n// these are constants that are set inside of setupStore. so they're declared as vars and not constants.\nlet constants: ConstantsType;\nconst Actions: ActionsType = {\n\tparentWrapperStore: null,\n\tinitialize: () => {\n\t\t// This ensures that our config is correct, even if the developer missed some entries\n\t\tconst { options } = FSBL.Clients.WindowClient;\n\t\tconst windowTitleBarConfig = options.customData.foreign.components[\"Window Manager\"];\n\t\tconst { FSBLHeader } = windowTitleBarConfig;\n\n\t\tif (FSBLHeader) processFSBLHeader(FSBLHeader, windowTitleBarConfig, options);\n\n\t\tif (windowTitleBarConfig.showLinker) showLinkerButton();\n\n\t\tlistenForDNDUpdates();\n\n\t\tFSBL.Clients.RouterClient.subscribe(\"Finsemble.WorkspaceService.groupUpdate\", onDockingGroupUpdate);\n\n\t\t// default title.\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"Main.windowTitle\",\n\t\t\tvalue: FSBL.Clients.WindowClient.getWindowTitle(),\n\t\t});\n\n\t\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[{ field: \"finsemble\" }, { field: \"finsemble-electron-adapter\" }],\n\t\t\t(err, config) => {\n\t\t\t\tif (config) processFEAAndFinsembleConfig(config, windowTitleBarConfig);\n\t\t\t}\n\t\t);\n\n\t\tActions.getInitialTabList(processInitialTabList);\n\n\t\t/**\n\t\t * This store does not listen on window events (such as \"maximized\" or \"minimized\") - that is the\n\t\t * WindowClient's job. The headerCommandChannel allows the WindowClient to affect the display state\n\t\t * of the windowTitleBar - such as changing the maximize icon when a \"maximized\" event is received.\n\t\t */\n\t\tFSBL.Clients.WindowClient.headerCommandChannel((command, state) => {\n\t\t\tActions.remoteStateUpdate(command, state);\n\t\t});\n\t},\n\t/**\n\t * Helper function to sift through all of the data coming from the windowService. Outputs an array of groups that the window belongs to.\n\t */\n\tgetMyDockingGroups: function (groupData) {\n\t\tlet myGroups = [];\n\t\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\t\tif (finsembleWindow?.parentWindow) {\n\t\t\twindowName = finsembleWindow?.parentWindow.name;\n\t\t}\n\t\tFSBL.Clients.Logger.system.debug(\"Getting docking groups for \", windowName, groupData);\n\t\tif (groupData) {\n\t\t\tfor (let groupName in groupData) {\n\t\t\t\tgroupData[groupName].groupName = groupName;\n\t\t\t\tif (groupData[groupName].windowNames.includes(windowName)) {\n\t\t\t\t\tmyGroups.push(groupData[groupName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn myGroups;\n\t},\n\tonTabListScrollPositionChanged: function (err, response) {\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"tabListTranslateX\",\n\t\t\tvalue: response.data.translateX,\n\t\t});\n\t},\n\tsetTabListScrollPosition: function (translateX) {\n\t\tFSBL.Clients.RouterClient.transmit(constants.TAB_SCROLL_POSITION_CHANGED, {\n\t\t\ttranslateX,\n\t\t});\n\t},\n\t/**\n\t * Handles messages coming from the windowClient.\n\t */\n\tremoteStateUpdate: function (command, state) {\n\t\tconst key = Object.keys(state)[0];\n\t\tconst field = `${command}.${key}`;\n\t\twindowTitleBarStore.setValue({ field: field, value: state[key] });\n\t},\n\t/**\n\t * Minimizes the window.\n\t */\n\tclickMinimize: function () {\n\t\tfinsembleWindow.minimize(() => {});\n\t},\n\t/**\n\t * Closes the window, allows for cleanup. Removes the window from workspace; this function is only invoked when the user clicks the close button.\n\t */\n\tclickClose: function () {\n\t\tFSBL.Clients.WindowClient.close({\n\t\t\tcloseWindow: true,\n\t\t\tremoveFromWorkspace: true, // this will cause the entire stack to close. Using this instead of a new parameter to ensure backwards compatibility\n\t\t\tuserInitiated: true,\n\t\t});\n\t},\n\t/**\n\t * Toggles group membership. If two windows are snapped, and this button is clicked, they become part of the same group that can be moved around together.\n\t */\n\ttoggleGroup: function () {\n\t\tconst groups = windowTitleBarStore.getValue({ field: \"Main.dockingGroups\" });\n\t\tconst isInMovableGroup = groups.some((group: any) => group.isMovable);\n\t\tif (isInMovableGroup) {\n\t\t\tfinsembleWindow.ejectFromGroup();\n\t\t} else {\n\t\t\tfinsembleWindow.formGroup();\n\t\t}\n\t},\n\t/**\n\t * Maximizes the window.\n\t */\n\tclickMaximize: function () {\n\t\tif (finsembleWindow.windowOptions.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)\n\t\t\treturn finsembleWindow.maximize(() => {\n\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\tfield: \"Maximize.maximized\",\n\t\t\t\t\tvalue: true,\n\t\t\t\t});\n\t\t\t});\n\n\t\treturn finsembleWindow.restore(() => {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Maximize.maximized\",\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t});\n\t},\n\n\tgetTabs() {\n\t\treturn windowTitleBarStore.getValue({ field: \"tabs\" }) as WindowIdentifier[];\n\t},\n\t_setTabs(tabs) {\n\t\tFSBL.Clients.Logger.system.debug(\"Set tabs\", tabs);\n\t\tlet activeIdentifier: any = finsembleWindow.identifier;\n\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\n\t\treturn windowTitleBarStore.setValue({\n\t\t\tfield: \"tabs\",\n\t\t\tvalue: tabs || [activeIdentifier],\n\t\t});\n\t},\n\taddTabLocally: function (windowIdentifier, i) {\n\t\tlet tabs = Actions.getTabs();\n\t\tif (typeof i === \"undefined\") {\n\t\t\ti = tabs.length + 1;\n\t\t}\n\t\ttabs.splice(i, 0, windowIdentifier);\n\t\tActions._setTabs(tabs);\n\t},\n\tremoveTabsLocally: function () {\n\t\tActions._setTabs(null);\n\t},\n\tremoveTabLocally: function (windowIdentifier) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet i = tabs.findIndex((el) => el.windowName === windowIdentifier.windowName);\n\t\ttabs.splice(i, 1);\n\t\tActions._setTabs(tabs);\n\t},\n\treorderTabLocally: function (tab, newIndex) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet { currentIndex } = Actions.findTab(tab);\n\t\tif (currentIndex === newIndex) return;\n\t\tif (currentIndex === -1) {\n\t\t\treturn Actions.addTabLocally(tab, newIndex);\n\t\t}\n\t\ttabs.splice(currentIndex, 1);\n\t\ttabs.splice(newIndex, 0, tab);\n\n\t\tActions._setTabs(tabs);\n\t},\n\taddTab: function (windowIdentifier, i) {\n\t\tlet tabs = Actions.getTabs();\n\t\ttabs.push(windowIdentifier);\n\t\t// quick UI update\n\t\tActions._setTabs(tabs);\n\t\tlet callback = () => {\n\t\t\tActions.parentWrapper?.setVisibleWindow({ windowIdentifier });\n\t\t};\n\n\t\tif (!Actions.parentWrapper) {\n\t\t\treturn Actions.createParentWrapper({\n\t\t\t\twindowIdentifiers: finsembleWindow.identifier\n\t\t\t\t\t? [finsembleWindow.identifier, windowIdentifier]\n\t\t\t\t\t: [windowIdentifier],\n\t\t\t\tvisibleWindowIdentifier: windowIdentifier,\n\t\t\t\tcreate: true,\n\t\t\t});\n\t\t}\n\t\treturn Actions.parentWrapper.addWindow({ windowIdentifier, position: i }, callback);\n\t},\n\tremoveTab: function (windowIdentifier, i) {\n\t\treturn Actions.parentWrapper?.removeWindow({\n\t\t\twindowIdentifier,\n\t\t\tposition: i,\n\t\t});\n\t},\n\tcloseTab: function (windowIdentifier) {\n\t\tconst close: StandardCallback = (err, wrap) => {\n\t\t\twrap.close({ removeFromWorkspace: true });\n\t\t};\n\t\tFSBL.FinsembleWindow.getInstance(windowIdentifier, close);\n\t},\n\treorderTab: function (tab, newIndex) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet { currentIndex } = Actions.findTab(tab);\n\t\tif (currentIndex === -1 || !Actions.parentWrapper) {\n\t\t\treturn Actions.addTab(tab, newIndex);\n\t\t}\n\t\ttabs.splice(currentIndex, 1);\n\t\ttabs.splice(newIndex, 0, tab);\n\t\t// Local change, quickly updates the dom.\n\t\tActions._setTabs(tabs);\n\t\tActions.parentWrapper.reorder({ windowIdentifiers: tabs });\n\t},\n\tfindTab: function (tab) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet currentIndex = tabs.findIndex((el) => tab.windowName === el.windowName);\n\t\treturn { tab, currentIndex };\n\t},\n\tsetActiveTab: function (windowIdentifier) {\n\t\tFSBL.Clients.Logger.system.debug(\"setActiveTab.visibleWindow\");\n\t\treturn finsembleWindow.parentWindow.setVisibleWindow({ windowIdentifier });\n\t},\n\tparentWrapper: null,\n\tonTabListChanged: function (err, response) {\n\t\tFSBL.Clients.Logger.system.debug(\"OnTabListChanged\", response.data);\n\t\tif (response.data && response.data.hasOwnProperty(constants.CHILD_WINDOW_FIELD)) {\n\t\t\tActions._setTabs(response.data[constants.CHILD_WINDOW_FIELD]);\n\t\t}\n\t},\n\tparentSubscriptions: [],\n\tstopListeningOnParentWrapper: function (cb) {\n\t\tActions.parentSubscriptions.forEach((sub) => {\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(sub);\n\t\t});\n\t\tActions.parentSubscriptions = []; // remove the subscribeId\n\t\t// Syncs scroll state across all tabs in a stack.\n\t\tFSBL.Clients.RouterClient.removeListener(\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\n\t\t\tActions.onTabListScrollPositionChanged\n\t\t);\n\t\tcb();\n\t},\n\tlistenOnParentWrapper: function () {\n\t\tlet TABLIST_SUBSCRIPTION = FSBL.Clients.RouterClient.subscribe(\n\t\t\tconstants.PARENT_WRAPPER_UPDATES,\n\t\t\tActions.onTabListChanged\n\t\t);\n\t\tFSBL.Clients.RouterClient.addListener(\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\n\t\t\tActions.onTabListScrollPositionChanged\n\t\t);\n\t\tActions.parentSubscriptions.push(TABLIST_SUBSCRIPTION);\n\t},\n\tsetupStore: function (cb = Function.prototype) {\n\t\tconstants = {\n\t\t\tPARENT_WRAPPER_UPDATES: `Finsemble.StackedWindow.${Actions.parentWrapper?.identifier?.windowName}`,\n\t\t\tCHILD_WINDOW_FIELD: \"childWindowIdentifiers\",\n\t\t\tVISIBLE_WINDOW_FIELD: \"visibleWindowIdentifier\",\n\t\t\tTAB_SCROLL_POSITION_CHANGED: `${Actions.parentWrapper?.name}.tabListTabListScrollPositionChanged`,\n\t\t};\n\t\tActions.listenOnParentWrapper();\n\t\tcb();\n\t},\n\tgetInitialTabList: function (cb) {\n\t\tfinsembleWindow.getParent((err, parentWrapper) => {\n\t\t\tActions.parentWrapper = parentWrapper;\n\t\t\tif (Actions.parentWrapper) {\n\t\t\t\tFSBL.Clients.Logger.system.debug(\"GetInitialTabList, parent exists\");\n\t\t\t\tActions.setupStore(cb);\n\t\t\t} else {\n\t\t\t\tlet activeIdentifier: any = finsembleWindow.identifier;\n\t\t\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\n\t\t\t\tlet tabs = [activeIdentifier];\n\t\t\t\tcb(null, tabs);\n\t\t\t}\n\t\t});\n\t},\n\tcreateParentWrapper(params: ParentParams, cb = Function.prototype) {\n\t\t(window as any).Actions = Actions;\n\t\tif (Actions.parentWrapper) {\n\t\t\tcb();\n\t\t} else {\n\t\t\tconst getStackedWindowCallback: StandardCallback = (err, wrap) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tActions.parentWrapper = null;\n\t\t\t\t\tActions._setTabs(null);\n\t\t\t\t} else {\n\t\t\t\t\tActions.parentWrapper = wrap;\n\t\t\t\t\tActions.setupStore(cb);\n\t\t\t\t}\n\t\t\t};\n\t\t\tgetStackedWindow(params, getStackedWindowCallback);\n\t\t}\n\t},\n};\n\n/**\n * Initializes the store for the windowTitleBar.\n *\n * @param {any} cb\n */\nfunction initialize(cb: Function) {\n\tFSBL.Clients.DistributedStoreClient.createStore(\n\t\t{ store: \"windowTitleBarStore\", values: windowTitleBarStoreDefaults },\n\t\t(err, store) => {\n\t\t\tif (!err && store) {\n\t\t\t\twindowTitleBarStore = store;\n\t\t\t}\n\t\t\tActions.initialize();\n\t\t\treturn cb(store, Actions);\n\t\t}\n\t);\n}\n\nlet getStore = () => windowTitleBarStore;\n\nclass StoreManager {\n\tinitialized = false;\n\n\tinitializing = false;\n\n\tstore: StoreModel | null = null;\n\n\tcallbacks: Function[] = [];\n\n\tconstructor() {}\n\n\tinitialize() {\n\t\tif (this.initializing) return;\n\t\tthis.initializing = true;\n\t\tinitialize((store: StoreModel) => {\n\t\t\tthis.initialized = true;\n\t\t\tthis.store = store;\n\t\t\tthis.callbacks.forEach((cb) => cb(store));\n\t\t});\n\t}\n\n\taddInitializedListener(cb: Function) {\n\t\tif (this.initialized) return cb(this.store);\n\t\tthis.callbacks.push(cb);\n\t}\n\n\tremoveInitializedListener(cb: Function) {\n\t\tthis.callbacks = this.callbacks.filter((entry) => entry !== cb);\n\t}\n}\nconst storeManager = new StoreManager();\n\nexport { storeManager };\nexport { initialize };\nexport { windowTitleBarStore as Store };\nexport { Actions };\nexport { getStore };\n"]}
|
|
1
|
+
{"version":3,"file":"windowTitleBarStore.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/stores/windowTitleBarStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport windowTitleBarStoreDefaults from \"./windowTitleBarStoreDefaults\";\nimport { StandardCallback } from \"@finsemble/finsemble-api/types/types\";\nimport { FinsembleWindow, WindowIdentifier } from \"@finsemble/finsemble-api\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\n\nconst getWindowNameForDocking = (finsembleWindow: FinsembleWindow) => {\n\tconst parent = finsembleWindow.parentWindow;\n\treturn parent ? parent.name : finsembleWindow.name;\n};\n\ntype ParentParams = {\n\twindowIdentifiers: WindowIdentifier[];\n\tvisibleWindowIdentifier: WindowIdentifier;\n\tcreate: boolean;\n};\n\nconst getStackedWindow = (params: ParentParams, cb: StandardCallback) => {\n\tif (!finsembleWindow.parentWindow && params.create) {\n\t\tconst onParentSet = (evt: any) => {\n\t\t\tconst { parentName } = evt.data;\n\t\t\tfinsembleWindow.setParent({ windowName: parentName }, (err2, windowWrapper) => {\n\t\t\t\tcb?.(err2, windowWrapper);\n\t\t\t});\n\t\t\tfinsembleWindow.removeListener(\"parent-set\", onParentSet);\n\t\t};\n\t\tfinsembleWindow.addListener(\"parent-set\", onParentSet);\n\t\tFSBL.Clients.LauncherClient.spawn(\n\t\t\t\"StackedWindow\",\n\t\t\t{\n\t\t\t\twindowType: \"StackedWindow\",\n\t\t\t\tdata: { windowIdentifiers: params.windowIdentifiers },\n\t\t\t\toptions: { newStack: true },\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (!err) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcb?.(err, null);\n\t\t\t}\n\t\t);\n\t} else {\n\t\tfinsembleWindow.getParent(cb);\n\t}\n};\n\nlet windowTitleBarStore: StoreModel;\n\ntype ConstantsType = {\n\tPARENT_WRAPPER_UPDATES: string;\n\tCHILD_WINDOW_FIELD: string;\n\tVISIBLE_WINDOW_FIELD: string;\n\tTAB_SCROLL_POSITION_CHANGED: string;\n};\n\ntype ActionsType = {\n\tparentWrapperStore: any;\n\tparentSubscriptions: any[];\n\tparentWrapper: FinsembleWindow | null;\n\n\tinitialize: () => void;\n\tgetMyDockingGroups: (groupData: any) => any[];\n\tonTabListScrollPositionChanged: StandardCallback;\n\tsetTabListScrollPosition: (translateX: number) => void;\n\tremoteStateUpdate: (command: string, state: any) => void;\n\tclickMinimize: () => void;\n\tclickClose: () => void;\n\ttoggleGroup: () => void;\n\tclickMaximize: () => void;\n\tgetTabs: () => WindowIdentifier[];\n\t_setTabs: (tabs: WindowIdentifier[] | null) => any;\n\taddTabLocally: (windowIdentifier: WindowIdentifier, i: number) => void;\n\tremoveTabsLocally: () => void;\n\tremoveTabLocally: (windowIdentifier: WindowIdentifier) => void;\n\treorderTabLocally: (tab: WindowIdentifier, newIndex: number) => undefined | any;\n\taddTab: (windowIdentifier: WindowIdentifier, i: number) => any;\n\tremoveTab: (windowIdentifier: WindowIdentifier, i: number) => any;\n\tcloseTab: (windowIdentifier: WindowIdentifier) => void;\n\treorderTab: (tab: WindowIdentifier, newIndex: number) => any;\n\tfindTab: (tab: WindowIdentifier) => { tab: WindowIdentifier; currentIndex: number };\n\tsetActiveTab: (windowIdentifier: WindowIdentifier) => Promise<any>;\n\tonTabListChanged: StandardCallback;\n\tstopListeningOnParentWrapper: (cb: Function) => void;\n\tlistenOnParentWrapper: () => void;\n\tsetupStore: (cb?: Function) => void;\n\tgetInitialTabList: (cb: StandardCallback) => void;\n\tcreateParentWrapper: (params: ParentParams, cb?: Function) => void;\n};\n\n/**\n * When a group update is publish, we sift through the data to see if this window is snapped or grouped with other windows. Then we publish that info, and the GroupingButton renders the correct icon.\n * @param {*} err\n * @param {*} response\n */\nconst onDockingGroupUpdate: StandardCallback = (err, response) => {\n\tif (err || !response.data || !response.data.groupData) {\n\t\treturn;\n\t}\n\tFSBL.Clients.Logger.system.debug(\"On docking group update\", response.data.groupData);\n\tlet groupNames = Object.keys(response.data.groupData);\n\tlet movableGroups = groupNames\n\t\t.filter((groupName) => response.data.groupData[groupName].isMovable)\n\t\t.map((groupName) => response.data.groupData[groupName]);\n\t// This is all movable and snapped groups. It's used later to figure out the icon to display.\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allDockingGroups\",\n\t\tvalue: response.data.groupData,\n\t});\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allMovableDockingGroups\",\n\t\tvalue: movableGroups,\n\t});\n\tlet myGroups = Actions.getMyDockingGroups(response.data.groupData);\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.dockingGroups\",\n\t\tvalue: myGroups,\n\t});\n\t/**\n\t * Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.\n\t */\n\tlet isSnapped = false;\n\tlet isInMovableGroup = false;\n\tlet isTopRight = false;\n\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\tfor (let i = 0; i < myGroups.length; i++) {\n\t\tlet myGroup = myGroups[i];\n\t\tif (myGroup.isMovable) {\n\t\t\tisInMovableGroup = true;\n\t\t\tif (windowName == myGroup.topRightWindow) {\n\t\t\t\tisTopRight = true;\n\t\t\t}\n\t\t} else {\n\t\t\tisSnapped = true;\n\t\t}\n\t}\n\tlet icon: string | false = false;\n\n\tif (isSnapped) {\n\t\ticon = \"joiner\";\n\t}\n\tif (isInMovableGroup) {\n\t\ticon = \"ejector\";\n\t}\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"isSnapped\", value: isSnapped },\n\t\t{ field: \"isGrouped\", value: isInMovableGroup },\n\t\t{ field: \"isTopRight\", value: isTopRight },\n\t\t{ field: \"Main.dockingIcon\", value: icon },\n\t]);\n};\n\n/**\n * Listen for updates from the dragAndDropClient.\n */\nconst listenForDNDUpdates = () => {\n\tFSBL.Clients.RouterClient.subscribe(`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`, (err, response) => {\n\t\tif (err) {\n\t\t\treturn console.error(err);\n\t\t}\n\t\twindowTitleBarStore.setValues([\n\t\t\t{\n\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t\tvalue: response.data.emitterEnabled,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfield: \"Sharer.receiverEnabled\",\n\t\t\t\tvalue: response.data.receiverEnabled,\n\t\t\t},\n\t\t]);\n\t});\n};\n\n/**\n * Handles whether to show the linker button.\n */\nconst showLinkerButton = () => {\n\t// Get state (channel membership) from the linkerClient. Then set the value in the header so that the title bar accurately reflects the state.\n\tconst cb: StandardCallback = (err, response) => {\n\t\tif (response.channels) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Linker.channels\",\n\t\t\t\tvalue: response.channels,\n\t\t\t});\n\t\t}\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"Linker.showLinkerButton\",\n\t\t\tvalue: true,\n\t\t});\n\t};\n\tcb(null, FSBL.Clients.LinkerClient.getState());\n\tFSBL.Clients.LinkerClient.onStateChange(cb);\n};\n\nconst processInitialTabList = (err: any, values: any) => {\n\tconst onParentSet = () => {\n\t\tActions.parentWrapper = null;\n\t\tActions.getInitialTabList(() => {\n\t\t\tFSBL.Clients.Logger.system.debug(\"docking group update after initial tab list\");\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\tconst onParentCleared = () => {\n\t\tActions.parentWrapper = null;\n\t\tFSBL.Clients.Logger.system.debug(\"ClearParent, setting tabs to null\");\n\t\tActions.stopListeningOnParentWrapper(() => {\n\t\t\tActions.parentWrapperStore = null;\n\t\t\tActions._setTabs(null);\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\n\tfinsembleWindow?.addListener(\"setParent\", onParentSet);\n\tfinsembleWindow?.addListener(\"clearParent\", onParentCleared);\n\tif (err) {\n\t\treturn FSBL.Clients.Logger.system.error(\"Error in getInitialTabList.\", err);\n\t}\n\n\tif (values) Actions._setTabs(values);\n};\n\n/**\n * \"FSBLHeader\" can be true, false or an object. If false then we'll never even be here. If true, then maximize, minimize and close buttons will display. If an object, then the developer can override whether buttons are shown with \"hideMaximize\", \"hideMinimize\" and \"hideClose\"\n */\nconst processFSBLHeader = (FSBLHeader: any, windowTitleBarConfig: any, options: any) => {\n\t// Display name is first up for display. If it doesn't exist, we look for a default title (or one that's already set on init). If no title, we display the window's name (e.g., '5434-Welcome Component-2321').\n\tconst displayName = options.customData?.component?.displayName;\n\n\tconst max = !!FSBLHeader.hideMaximize;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Maximize.hide\", value: max },\n\t\t{ field: \"Minimize.hide\", value: !!FSBLHeader.hideMinimize },\n\t\t{ field: \"Close.hide\", value: !!FSBLHeader.hideClose },\n\t\t{ field: \"AlwaysOnTop.show\", value: !!FSBLHeader.alwaysOnTop },\n\t]);\n\n\t// By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\n\twindowTitleBarStore.setValue({\n\t\tfield: \"hackScrollbar\",\n\t\tvalue: windowTitleBarConfig.FSBLHeader.hackScrollbar !== false,\n\t});\n\twindowTitleBarStore.setValue({\n\t\tfield: \"adjustContentHeights\",\n\t\tvalue: windowTitleBarConfig.FSBLHeader.adjustContentHeights !== false,\n\t});\n\t// By default, fixed positioned elements with a top style set to '0px' will be bumped by the header height and the\n\t// DOM will be monitored for nodes that are added dynamically and bump them if they are fixed with a top style of 0px.\n\twindowTitleBarStore.setValue({\n\t\tfield: \"bumpElements\",\n\t\tvalue: {\n\t\t\tfixed: \"0Positioned\",\n\t\t\tbumpBy: \"25px\",\n\t\t\tmonitorFixedAdditions: true,\n\t\t\t...windowTitleBarConfig.FSBLHeader.bumpElements,\n\t\t},\n\t});\n};\n\n// Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]\nconst getOptionsCallback: StandardCallback = (err, opts: Record<string, any>) => {\n\tconst windowAllowTabbing = opts.customData?.foreign?.services?.windowService?.allowTabbing;\n\tconst windowIgnoreTabbing = opts.customData?.foreign?.services?.windowService?.ignoreTilingAndTabbingRequests;\n\tconst dockingAllowTabbing = opts.customData?.foreign?.services?.dockingService?.allowTabbing;\n\tconst dockingIgnoreTabbing = opts.customData?.foreign.services?.dockingService?.ignoreTilingAndTabbingRequests;\n\tconst dontShowTabs =\n\t\twindowAllowTabbing === false ||\n\t\twindowIgnoreTabbing === true ||\n\t\tdockingAllowTabbing === false ||\n\t\tdockingIgnoreTabbing === true;\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"showTabs\",\n\t\tvalue: !dontShowTabs,\n\t});\n};\n\nconst processFEAAndFinsembleConfig = (values: Record<string, any>, windowTitleBarConfig: Record<string, any>) => {\n\tconst finsembleConfig = values.finsemble;\n\n\t// Check FEA config for DOM based movement configuration\n\tconst { useDOMBasedMovement } = values[\"finsemble-electron-adapter\"];\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.useDOMBasedMovement\",\n\t\tvalue: typeof useDOMBasedMovement === \"undefined\" ? true : useDOMBasedMovement,\n\t});\n\n\t// Override defaults if finsemble.Window Manager exists.\n\tconst globalWindowManagerConfig = finsembleConfig[\"Window Manager\"] || {\n\t\talwaysOnTopIcon: false,\n\t\tshowTabs: false,\n\t};\n\n\t// Look to see if docking is enabled. Cascade through backward compatibility with old \"betaFeatures\" and then a default if no config is found at all.\n\n\tfinsembleConfig.servicesConfig = finsembleConfig.servicesConfig ?? {};\n\n\tconst defaultDockingConfig = {\n\t\tenabled: true,\n\t};\n\tlet dockingConfig =\n\t\tfinsembleConfig.servicesConfig.docking ??\n\t\tfinsembleConfig.docking ??\n\t\tfinsembleConfig.betaFeatures?.docking ??\n\t\tdefaultDockingConfig;\n\tdockingConfig.tabbing = dockingConfig.tabbing ?? {};\n\n\t// Whether the alwaysOnTop pin is displayed depends this component's config (foreign.components[\"Widow Manager\"].alwaysOnTop)\n\t// and then on the global setting (finsemble[\"Window Manager\"].alwaysOnTop)\n\tconst alwaysOnTopIcon = windowTitleBarConfig.alwaysOnTopIcon ?? globalWindowManagerConfig.alwaysOnTopIcon ?? false;\n\n\tconst servicesConfigWindow = finsembleConfig.servicesConfig.window;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Main.dockingEnabled\", value: dockingConfig.enabled },\n\t\t{\n\t\t\tfield: \"allowWindowTitleRenaming\",\n\t\t\tvalue: servicesConfigWindow.allowWindowTitleRenaming ?? dockingConfig.tabbing.allowEditing ?? false,\n\t\t},\n\t\t{ field: \"AlwaysOnTop.show\", value: alwaysOnTopIcon },\n\t]);\n\n\t// If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.\n\tif (dockingConfig.tabbing.enabled === false) {\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"showTabs\",\n\t\t\tvalue: dockingConfig.tabbing.enabled,\n\t\t});\n\t} else {\n\t\t// If tabbing is enabled system-wide, look to the global config for its value. Then look to the local component's config.\n\n\t\t// This is the global window manager config.\n\t\tif (typeof windowTitleBarConfig.showTabs !== \"boolean\") {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: globalWindowManagerConfig.showTabs,\n\t\t\t});\n\t\t}\n\t\t// This is the component's config.\n\t\tif (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: windowTitleBarConfig.showTabs,\n\t\t\t});\n\t\t}\n\n\t\tfinsembleWindow.getOptions(getOptionsCallback);\n\t}\n};\n\n// these are constants that are set inside of setupStore. so they're declared as vars and not constants.\nlet constants: ConstantsType;\nconst Actions: ActionsType = {\n\tparentWrapperStore: null,\n\tinitialize: () => {\n\t\t// This ensures that our config is correct, even if the developer missed some entries\n\t\tconst { options } = FSBL.Clients.WindowClient;\n\t\tconst windowTitleBarConfig = options.customData.foreign.components[\"Window Manager\"];\n\t\tconst { FSBLHeader } = windowTitleBarConfig;\n\n\t\tif (FSBLHeader) processFSBLHeader(FSBLHeader, windowTitleBarConfig, options);\n\n\t\tif (windowTitleBarConfig.showLinker) showLinkerButton();\n\n\t\tlistenForDNDUpdates();\n\n\t\tFSBL.Clients.RouterClient.subscribe(\"Finsemble.WorkspaceService.groupUpdate\", onDockingGroupUpdate);\n\n\t\t// default title.\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"Main.windowTitle\",\n\t\t\tvalue: FSBL.Clients.WindowClient.getWindowTitle(),\n\t\t});\n\n\t\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[{ field: \"finsemble\" }, { field: \"finsemble-electron-adapter\" }],\n\t\t\t(err, config) => {\n\t\t\t\tif (config) processFEAAndFinsembleConfig(config, windowTitleBarConfig);\n\t\t\t}\n\t\t);\n\n\t\tActions.getInitialTabList(processInitialTabList);\n\n\t\t/**\n\t\t * This store does not listen on window events (such as \"maximized\" or \"minimized\") - that is the\n\t\t * WindowClient's job. The headerCommandChannel allows the WindowClient to affect the display state\n\t\t * of the windowTitleBar - such as changing the maximize icon when a \"maximized\" event is received.\n\t\t */\n\t\tFSBL.Clients.WindowClient.headerCommandChannel((command, state) => {\n\t\t\tActions.remoteStateUpdate(command, state);\n\t\t});\n\t},\n\t/**\n\t * Helper function to sift through all of the data coming from the windowService. Outputs an array of groups that the window belongs to.\n\t */\n\tgetMyDockingGroups: function (groupData) {\n\t\tlet myGroups = [];\n\t\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\t\tif (finsembleWindow?.parentWindow) {\n\t\t\twindowName = finsembleWindow?.parentWindow.name;\n\t\t}\n\t\tFSBL.Clients.Logger.system.debug(\"Getting docking groups for \", windowName, groupData);\n\t\tif (groupData) {\n\t\t\tfor (let groupName in groupData) {\n\t\t\t\tgroupData[groupName].groupName = groupName;\n\t\t\t\tif (groupData[groupName].windowNames.includes(windowName)) {\n\t\t\t\t\tmyGroups.push(groupData[groupName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn myGroups;\n\t},\n\tonTabListScrollPositionChanged: function (err, response) {\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"tabListTranslateX\",\n\t\t\tvalue: response.data.translateX,\n\t\t});\n\t},\n\tsetTabListScrollPosition: function (translateX) {\n\t\tFSBL.Clients.RouterClient.transmit(constants.TAB_SCROLL_POSITION_CHANGED, {\n\t\t\ttranslateX,\n\t\t});\n\t},\n\t/**\n\t * Handles messages coming from the windowClient.\n\t */\n\tremoteStateUpdate: function (command, state) {\n\t\tconst key = Object.keys(state)[0];\n\t\tconst field = `${command}.${key}`;\n\t\twindowTitleBarStore.setValue({ field: field, value: state[key] });\n\t},\n\t/**\n\t * Minimizes the window.\n\t */\n\tclickMinimize: function () {\n\t\tfinsembleWindow.minimize(() => {});\n\t},\n\t/**\n\t * Closes the window, allows for cleanup. Removes the window from workspace; this function is only invoked when the user clicks the close button.\n\t */\n\tclickClose: function () {\n\t\tFSBL.Clients.WindowClient.close({\n\t\t\tcloseWindow: true,\n\t\t\tremoveFromWorkspace: true, // this will cause the entire stack to close. Using this instead of a new parameter to ensure backwards compatibility\n\t\t\tuserInitiated: true,\n\t\t});\n\t},\n\t/**\n\t * Toggles group membership. If two windows are snapped, and this button is clicked, they become part of the same group that can be moved around together.\n\t */\n\ttoggleGroup: function () {\n\t\tconst groups = windowTitleBarStore.getValue({ field: \"Main.dockingGroups\" });\n\t\tconst isInMovableGroup = groups.some((group: any) => group.isMovable);\n\t\tif (isInMovableGroup) {\n\t\t\tfinsembleWindow.ejectFromGroup();\n\t\t} else {\n\t\t\tfinsembleWindow.formGroup();\n\t\t}\n\t},\n\t/**\n\t * Maximizes the window.\n\t */\n\tclickMaximize: function () {\n\t\tif (finsembleWindow.windowOptions.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)\n\t\t\treturn finsembleWindow.maximize(() => {\n\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\tfield: \"Maximize.maximized\",\n\t\t\t\t\tvalue: true,\n\t\t\t\t});\n\t\t\t});\n\n\t\treturn finsembleWindow.restore(() => {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Maximize.maximized\",\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t});\n\t},\n\n\tgetTabs() {\n\t\treturn windowTitleBarStore.getValue({ field: \"tabs\" }) as WindowIdentifier[];\n\t},\n\t_setTabs(tabs) {\n\t\tFSBL.Clients.Logger.system.debug(\"Set tabs\", tabs);\n\t\tlet activeIdentifier: any = finsembleWindow.identifier;\n\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\n\t\treturn windowTitleBarStore.setValue({\n\t\t\tfield: \"tabs\",\n\t\t\tvalue: tabs || [activeIdentifier],\n\t\t});\n\t},\n\taddTabLocally: function (windowIdentifier, i) {\n\t\tlet tabs = Actions.getTabs();\n\t\tif (typeof i === \"undefined\") {\n\t\t\ti = tabs.length + 1;\n\t\t}\n\t\ttabs.splice(i, 0, windowIdentifier);\n\t\tActions._setTabs(tabs);\n\t},\n\tremoveTabsLocally: function () {\n\t\tActions._setTabs(null);\n\t},\n\tremoveTabLocally: function (windowIdentifier) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet i = tabs.findIndex((el) => el.windowName === windowIdentifier.windowName);\n\t\ttabs.splice(i, 1);\n\t\tActions._setTabs(tabs);\n\t},\n\treorderTabLocally: function (tab, newIndex) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet { currentIndex } = Actions.findTab(tab);\n\t\tif (currentIndex === newIndex) return;\n\t\tif (currentIndex === -1) {\n\t\t\treturn Actions.addTabLocally(tab, newIndex);\n\t\t}\n\t\ttabs.splice(currentIndex, 1);\n\t\ttabs.splice(newIndex, 0, tab);\n\n\t\tActions._setTabs(tabs);\n\t},\n\taddTab: function (windowIdentifier, i) {\n\t\tlet tabs = Actions.getTabs();\n\t\ttabs.push(windowIdentifier);\n\t\t// quick UI update\n\t\tActions._setTabs(tabs);\n\t\tlet callback = () => {\n\t\t\tActions.parentWrapper?.setVisibleWindow({ windowIdentifier });\n\t\t};\n\n\t\tif (!Actions.parentWrapper) {\n\t\t\treturn Actions.createParentWrapper({\n\t\t\t\twindowIdentifiers: finsembleWindow.identifier\n\t\t\t\t\t? [finsembleWindow.identifier, windowIdentifier]\n\t\t\t\t\t: [windowIdentifier],\n\t\t\t\tvisibleWindowIdentifier: windowIdentifier,\n\t\t\t\tcreate: true,\n\t\t\t});\n\t\t}\n\t\treturn Actions.parentWrapper.addWindow({ windowIdentifier, position: i }, callback);\n\t},\n\tremoveTab: function (windowIdentifier, i) {\n\t\treturn Actions.parentWrapper?.removeWindow({\n\t\t\twindowIdentifier,\n\t\t\tposition: i,\n\t\t});\n\t},\n\tcloseTab: function (windowIdentifier) {\n\t\tconst close: StandardCallback = (err, wrap) => {\n\t\t\twrap.close({ removeFromWorkspace: true });\n\t\t};\n\t\tFSBL.FinsembleWindow.getInstance(windowIdentifier, close);\n\t},\n\treorderTab: function (tab, newIndex) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet { currentIndex } = Actions.findTab(tab);\n\t\tif (currentIndex === -1 || !Actions.parentWrapper) {\n\t\t\treturn Actions.addTab(tab, newIndex);\n\t\t}\n\t\ttabs.splice(currentIndex, 1);\n\t\ttabs.splice(newIndex, 0, tab);\n\t\t// Local change, quickly updates the dom.\n\t\tActions._setTabs(tabs);\n\t\tActions.parentWrapper.reorder({ windowIdentifiers: tabs });\n\t},\n\tfindTab: function (tab) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet currentIndex = tabs.findIndex((el) => tab.windowName === el.windowName);\n\t\treturn { tab, currentIndex };\n\t},\n\tsetActiveTab: function (windowIdentifier) {\n\t\tFSBL.Clients.Logger.system.debug(\"setActiveTab.visibleWindow\");\n\t\treturn finsembleWindow.parentWindow.setVisibleWindow({ windowIdentifier });\n\t},\n\tparentWrapper: null,\n\tonTabListChanged: function (err, response) {\n\t\tFSBL.Clients.Logger.system.debug(\"OnTabListChanged\", response.data);\n\t\tif (response.data && response.data.hasOwnProperty(constants.CHILD_WINDOW_FIELD)) {\n\t\t\tActions._setTabs(response.data[constants.CHILD_WINDOW_FIELD]);\n\t\t}\n\t},\n\tparentSubscriptions: [],\n\tstopListeningOnParentWrapper: function (cb) {\n\t\tActions.parentSubscriptions.forEach((sub) => {\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(sub);\n\t\t});\n\t\tActions.parentSubscriptions = []; // remove the subscribeId\n\t\t// Syncs scroll state across all tabs in a stack.\n\t\tFSBL.Clients.RouterClient.removeListener(\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\n\t\t\tActions.onTabListScrollPositionChanged\n\t\t);\n\t\tcb();\n\t},\n\tlistenOnParentWrapper: function () {\n\t\tlet TABLIST_SUBSCRIPTION = FSBL.Clients.RouterClient.subscribe(\n\t\t\tconstants.PARENT_WRAPPER_UPDATES,\n\t\t\tActions.onTabListChanged\n\t\t);\n\t\tFSBL.Clients.RouterClient.addListener(\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\n\t\t\tActions.onTabListScrollPositionChanged\n\t\t);\n\t\tActions.parentSubscriptions.push(TABLIST_SUBSCRIPTION);\n\t},\n\tsetupStore: function (cb = Function.prototype) {\n\t\tconstants = {\n\t\t\tPARENT_WRAPPER_UPDATES: `Finsemble.StackedWindow.${Actions.parentWrapper?.identifier?.windowName}`,\n\t\t\tCHILD_WINDOW_FIELD: \"childWindowIdentifiers\",\n\t\t\tVISIBLE_WINDOW_FIELD: \"visibleWindowIdentifier\",\n\t\t\tTAB_SCROLL_POSITION_CHANGED: `${Actions.parentWrapper?.name}.tabListTabListScrollPositionChanged`,\n\t\t};\n\t\tActions.listenOnParentWrapper();\n\t\tcb();\n\t},\n\tgetInitialTabList: function (cb) {\n\t\tfinsembleWindow.getParent((err, parentWrapper) => {\n\t\t\tActions.parentWrapper = parentWrapper;\n\t\t\tif (Actions.parentWrapper) {\n\t\t\t\tFSBL.Clients.Logger.system.debug(\"GetInitialTabList, parent exists\");\n\t\t\t\tActions.setupStore(cb);\n\t\t\t} else {\n\t\t\t\tlet activeIdentifier: any = finsembleWindow.identifier;\n\t\t\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\n\t\t\t\tlet tabs = [activeIdentifier];\n\t\t\t\tcb(null, tabs);\n\t\t\t}\n\t\t});\n\t},\n\tcreateParentWrapper(params: ParentParams, cb = Function.prototype) {\n\t\t(window as any).Actions = Actions;\n\t\tif (Actions.parentWrapper) {\n\t\t\tcb();\n\t\t} else {\n\t\t\tconst getStackedWindowCallback: StandardCallback = (err, wrap) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tActions.parentWrapper = null;\n\t\t\t\t\tActions._setTabs(null);\n\t\t\t\t} else {\n\t\t\t\t\tActions.parentWrapper = wrap;\n\t\t\t\t\tActions.setupStore(cb);\n\t\t\t\t}\n\t\t\t};\n\t\t\tgetStackedWindow(params, getStackedWindowCallback);\n\t\t}\n\t},\n};\n\n/**\n * Initializes the store for the windowTitleBar.\n *\n * @param {any} cb\n */\nfunction initialize(cb: Function) {\n\tFSBL.Clients.DistributedStoreClient.createStore(\n\t\t{ store: \"windowTitleBarStore\", values: windowTitleBarStoreDefaults },\n\t\t(err, store) => {\n\t\t\tif (!err && store) {\n\t\t\t\twindowTitleBarStore = store;\n\t\t\t}\n\t\t\tActions.initialize();\n\t\t\treturn cb(store, Actions);\n\t\t}\n\t);\n}\n\nlet getStore = () => windowTitleBarStore;\n\nclass StoreManager {\n\tinitialized = false;\n\n\tinitializing = false;\n\n\tstore: StoreModel | null = null;\n\n\tcallbacks: Function[] = [];\n\n\tconstructor() {}\n\n\tinitialize() {\n\t\tif (this.initializing) return;\n\t\tthis.initializing = true;\n\t\tinitialize((store: StoreModel) => {\n\t\t\tthis.initialized = true;\n\t\t\tthis.store = store;\n\t\t\tthis.callbacks.forEach((cb) => cb(store));\n\t\t});\n\t}\n\n\taddInitializedListener(cb: Function) {\n\t\tif (this.initialized) return cb(this.store);\n\t\tthis.callbacks.push(cb);\n\t}\n\n\tremoveInitializedListener(cb: Function) {\n\t\tthis.callbacks = this.callbacks.filter((entry) => entry !== cb);\n\t}\n}\nconst storeManager = new StoreManager();\n\nexport { storeManager };\nexport { initialize };\nexport { windowTitleBarStore as Store };\nexport { Actions };\nexport { getStore };\n"]}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import "./YesNoDialog.css";
|
|
3
3
|
import "../../assets/css/dialogs.css";
|
|
4
|
+
/**
|
|
5
|
+
* This dialog window provides a binary choice to the user, and reports back the response to the opener.
|
|
6
|
+
*/
|
|
4
7
|
export declare const YesNoDialog: () => JSX.Element;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2017 by ChartIQ, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
1
5
|
import React from "react";
|
|
2
6
|
import "./YesNoDialog.css";
|
|
3
7
|
import "../../assets/css/dialogs.css";
|
|
@@ -16,6 +20,12 @@ const DEFAULT_COMPONENT_STATE = {
|
|
|
16
20
|
showAffirmativeButton: true,
|
|
17
21
|
showCancelButton: true,
|
|
18
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* This is our standard dialog that presents the user with 1 - 3 choices. It can be used to allow the user to confirm, reject, or cancel an action. All of these options can be included, and all can be excluded.
|
|
25
|
+
*
|
|
26
|
+
* @class YesNoDialog
|
|
27
|
+
* @extends {React.Component}
|
|
28
|
+
*/
|
|
19
29
|
class YesNoDialogBase extends React.Component {
|
|
20
30
|
constructor(props = {}) {
|
|
21
31
|
super(props);
|
|
@@ -23,6 +33,12 @@ class YesNoDialogBase extends React.Component {
|
|
|
23
33
|
this.state = DEFAULT_COMPONENT_STATE;
|
|
24
34
|
document.body.addEventListener("keydown", this.handleKeydownOnBody);
|
|
25
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Handles escape and enter.
|
|
38
|
+
*
|
|
39
|
+
* @param {any} e
|
|
40
|
+
* @memberof YesNoDialog
|
|
41
|
+
*/
|
|
26
42
|
handleKeydownOnBody(e) {
|
|
27
43
|
if (e.code === "Enter" && e.shiftKey === false) {
|
|
28
44
|
this.sendResponse("affirmative");
|
|
@@ -31,6 +47,11 @@ class YesNoDialogBase extends React.Component {
|
|
|
31
47
|
this.sendResponse("cancel");
|
|
32
48
|
}
|
|
33
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Necessary to ensure that `this` is correct when our methods are invoked.
|
|
52
|
+
*
|
|
53
|
+
* @memberof YesNoDialog
|
|
54
|
+
*/
|
|
34
55
|
bindCorrectContext() {
|
|
35
56
|
this.handleKeydownOnBody = this.handleKeydownOnBody.bind(this);
|
|
36
57
|
this.onShowRequested = this.onShowRequested.bind(this);
|
|
@@ -40,6 +61,13 @@ class YesNoDialogBase extends React.Component {
|
|
|
40
61
|
this.sendExpiredResponse = this.sendExpiredResponse.bind(this);
|
|
41
62
|
this.sendResponse = this.sendResponse.bind(this);
|
|
42
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* When the opener requests that the dialog show itself, it also passes in initialization data. This function grabs that data, calls setState, and then fits the window to the contents of the DOM. Then we call `showDialog`, which will display the dialog on the proper monitor.
|
|
66
|
+
*
|
|
67
|
+
* @param {any} err
|
|
68
|
+
* @param {any} response
|
|
69
|
+
* @memberof YesNoDialog
|
|
70
|
+
*/
|
|
43
71
|
onShowRequested(err, response) {
|
|
44
72
|
let { data } = response;
|
|
45
73
|
this.setState({
|
|
@@ -56,34 +84,66 @@ class YesNoDialogBase extends React.Component {
|
|
|
56
84
|
timerDuration: typeof data.timerDuration === "undefined" ? null : data.timerDuration,
|
|
57
85
|
}, this.fitAndShow);
|
|
58
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Fits the contents of the DOM to the window, then calls `showDialog`, which positions the dialog on the proper monitor and toggles the visibility of the window.
|
|
89
|
+
*
|
|
90
|
+
* @memberof YesNoDialog
|
|
91
|
+
*/
|
|
59
92
|
fitAndShow() {
|
|
60
93
|
FSBL.Clients.WindowClient.fitToDOM(null, () => {
|
|
61
94
|
FSBL.Clients.DialogManager.showDialog();
|
|
62
95
|
});
|
|
63
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Sends user input to the opener.
|
|
99
|
+
*
|
|
100
|
+
* @param {any} response
|
|
101
|
+
* @memberof YesNoDialog
|
|
102
|
+
*/
|
|
64
103
|
sendResponse(response) {
|
|
65
|
-
console.log("Response: ", response);
|
|
66
104
|
FSBL.Clients.DialogManager.respondToOpener({
|
|
67
105
|
choice: response,
|
|
68
106
|
hideModalOnClose: this.state.hideModalOnClose,
|
|
69
107
|
});
|
|
108
|
+
// This will detach the timer component from the dom. Next time the component comes up, it'll have a fresh timer.
|
|
70
109
|
this.setState({
|
|
71
110
|
showTimer: false,
|
|
72
111
|
});
|
|
73
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Sends an affirmative response to the opener.
|
|
115
|
+
*
|
|
116
|
+
* @memberof YesNoDialog
|
|
117
|
+
*/
|
|
74
118
|
sendAffirmativeResponse() {
|
|
75
119
|
this.sendResponse("affirmative");
|
|
76
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Sends a negative response to the opener.
|
|
123
|
+
*
|
|
124
|
+
* @memberof YesNoDialog
|
|
125
|
+
*/
|
|
77
126
|
sendNegativeResponse() {
|
|
78
127
|
this.sendResponse("negative");
|
|
79
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Sends a cancel response to the opener.
|
|
131
|
+
*
|
|
132
|
+
* @memberof YesNoDialog
|
|
133
|
+
*/
|
|
80
134
|
sendCancelResponse() {
|
|
81
135
|
this.sendResponse("cancel");
|
|
82
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Sends an expired response to the opener.
|
|
139
|
+
*
|
|
140
|
+
* @memberof YesNoDialog
|
|
141
|
+
*/
|
|
83
142
|
sendExpiredResponse() {
|
|
84
143
|
this.sendResponse("expired");
|
|
85
144
|
}
|
|
86
145
|
render() {
|
|
146
|
+
document.title = this.state.title;
|
|
87
147
|
return (React.createElement(FinsembleDialog, { userInputTimeout: 10000, behaviorOnResponse: "hide", onShowRequested: this.onShowRequested, isModal: true },
|
|
88
148
|
React.createElement("div", { className: "dialog-title" }, this.state.title),
|
|
89
149
|
React.createElement(FinsembleDialogQuestion, null,
|
|
@@ -95,5 +155,8 @@ class YesNoDialogBase extends React.Component {
|
|
|
95
155
|
React.createElement(FinsembleDialogButton, { show: this.state.showAffirmativeButton, className: "fsbl-button-affirmative", onClick: this.sendAffirmativeResponse }, this.state.affirmativeResponseLabel))));
|
|
96
156
|
}
|
|
97
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* This dialog window provides a binary choice to the user, and reports back the response to the opener.
|
|
160
|
+
*/
|
|
98
161
|
export const YesNoDialog = () => React.createElement(YesNoDialogBase, null);
|
|
99
162
|
//# sourceMappingURL=YesNoDialog.js.map
|