@finsemble/finsemble-ui 7.0.0 → 7.1.0-beta.2
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 +13 -11
- 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 +3 -10
- 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 -1
- package/react/assets/css/finsemble.css +3 -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 +2 -2
- package/react/assets/css/menus.css +10 -10
- package/react/assets/css/notificationsCenter.css +16 -31
- 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 +2 -2
- package/react/assets/css/tags.css +10 -10
- package/react/assets/css/toolbar.css +22 -19
- package/react/assets/css/userPreferences.css +12 -14
- package/react/assets/css/windowTitleBar.css +75 -36
- 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/Checkbox.d.ts +1 -0
- package/react/components/common/Checkbox.js +2 -2
- package/react/components/common/Checkbox.js.map +1 -1
- package/react/components/common/ColorPicker.d.ts +5 -0
- package/react/components/common/ColorPicker.js +40 -0
- 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 +18 -0
- package/react/components/common/ErrorBoundary.js +21 -0
- package/react/components/common/ErrorBoundary.js.map +1 -1
- 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 +10 -0
- package/react/components/common/FinsembleIcon.js +51 -2
- package/react/components/common/FinsembleIcon.js.map +1 -1
- package/react/components/common/FinsembleSelect.js +5 -1
- package/react/components/common/FinsembleSelect.js.map +1 -1
- package/react/components/common/FinsembleToggleButtonBar.js +1 -1
- package/react/components/common/FinsembleToggleButtonBar.js.map +1 -1
- package/react/components/common/InputTable.d.ts +7 -0
- package/react/components/common/InputTable.js +7 -0
- package/react/components/common/InputTable.js.map +1 -1
- package/react/components/common/Tab.js +3 -0
- package/react/components/common/Tab.js.map +1 -1
- package/react/components/common/TimeSelect.js +24 -0
- 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/accordion.css +9 -6
- package/react/components/common/css/application-edit-page.css +39 -44
- 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 +8 -8
- package/react/components/common/css/time-select.css +1 -0
- package/react/components/common/css/toggle.css +4 -4
- 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 +1 -0
- package/react/components/common/helpers.js.map +1 -1
- package/react/components/common/stories/ColorPicker.stories.js +3 -0
- 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/tests/Accordion.spec.js +6 -0
- package/react/components/common/tests/Accordion.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 +1 -0
- package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +1 -0
- package/react/components/common/tests/FinsembleToggleButtonBar.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 +9 -0
- 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 +8 -0
- 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 +13 -0
- package/react/components/icon/Icon.js +34 -0
- package/react/components/icon/Icon.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
- package/react/components/legacyControls/FinsembleDialog.js +15 -0
- 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 +126 -1
- 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/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 +112 -2
- 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 +3 -0
- package/react/components/menu/MenuToggle.js.map +1 -1
- package/react/components/menu/keyboardNavigation.d.ts +12 -0
- package/react/components/menu/keyboardNavigation.js +55 -0
- 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 +8 -0
- 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 +18 -0
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +3 -0
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
- package/react/components/notifications/components/shared/CheckButton.js +1 -1
- 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 +13 -6
- 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/views/CardView.js +3 -0
- package/react/components/notifications/components/views/CardView.js.map +1 -1
- package/react/components/notifications/components/views/ListView.js +8 -0
- 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 +3 -0
- 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 +17 -2
- 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 -1
- 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 +23 -3
- package/react/components/processMonitor/helpers.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 +4 -2
- package/react/components/sdd/AddApp.js +57 -49
- package/react/components/sdd/AddApp.js.map +1 -1
- package/react/components/sdd/AppEditAccess.js +8 -0
- package/react/components/sdd/AppEditAccess.js.map +1 -1
- package/react/components/sdd/AppEditPage.d.ts +2 -1
- package/react/components/sdd/AppEditPage.js +148 -361
- package/react/components/sdd/AppEditPage.js.map +1 -1
- package/react/components/sdd/Appearance.css +1 -1
- package/react/components/sdd/Appearance.js +3 -0
- package/react/components/sdd/Appearance.js.map +1 -1
- package/react/components/sdd/Application.js +39 -7
- package/react/components/sdd/Application.js.map +1 -1
- package/react/components/sdd/Applications.js +89 -13
- package/react/components/sdd/Applications.js.map +1 -1
- package/react/components/sdd/AssetsPage.css +3 -3
- package/react/components/sdd/EditPreload.js +10 -0
- package/react/components/sdd/EditPreload.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/Publish.js +2 -0
- 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.js +17 -0
- package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
- package/react/components/sdd/ThemePage.css +6 -23
- package/react/components/sdd/ThemePage.js +1 -1
- package/react/components/sdd/ThemePage.js.map +1 -1
- package/react/components/sdd/Themes.js +2 -0
- package/react/components/sdd/Themes.js.map +1 -1
- package/react/components/sdd/Toolbar.js +7 -0
- 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.js +4 -0
- package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
- package/react/components/sdd/css/addApp.css +18 -5
- package/react/components/sdd/css/appearance.css +6 -0
- package/react/components/sdd/css/applications.css +27 -14
- 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 +8 -11
- 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/configTemplate.js +1 -0
- package/react/components/sdd/fixtures/configTemplate.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 +303 -0
- package/react/components/sdd/smartDesktopClient.js +334 -1
- package/react/components/sdd/smartDesktopClient.js.map +1 -1
- package/react/components/sdd/smartDesktopClient.spec.js +5 -2
- package/react/components/sdd/smartDesktopClient.spec.js.map +1 -1
- package/react/components/sdd/stories/AddApp.stories.d.ts +2 -1
- package/react/components/sdd/stories/AddApp.stories.js +8 -0
- package/react/components/sdd/stories/AddApp.stories.js.map +1 -1
- package/react/components/sdd/stories/AppEditPage.stories.d.ts +3 -1
- package/react/components/sdd/stories/AppEditPage.stories.js +3 -0
- package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
- package/react/components/sdd/stories/Appearance.stories.js +1 -0
- package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
- package/react/components/sdd/tests/AddApp.spec.js +40 -3
- package/react/components/sdd/tests/AddApp.spec.js.map +1 -1
- package/react/components/sdd/tests/AppEditPage.spec.js +16 -0
- package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
- package/react/components/sdd/tests/Application.spec.js +33 -438
- 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 +29 -5
- package/react/components/sdd/tests/Applications.spec.js.map +1 -1
- package/react/components/sdd/tests/Authentication.spec.js +7 -0
- 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 +13 -0
- package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
- package/react/components/sdd/tests/Export.spec.js +2 -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/OptionalSettingsView.spec.js +29 -0
- package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
- package/react/components/sdd/tests/ProjectErrors.spec.js +2 -0
- package/react/components/sdd/tests/ProjectErrors.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/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.js +6 -0
- package/react/components/search/SearchResult.js.map +1 -1
- package/react/components/search/SearchResult.spec.js +7 -0
- package/react/components/search/SearchResult.spec.js.map +1 -1
- package/react/components/search/SearchResult.stories.js +4 -0
- package/react/components/search/SearchResult.stories.js.map +1 -1
- package/react/components/search/SearchResults.js +5 -1
- package/react/components/search/SearchResults.js.map +1 -1
- package/react/components/search/SearchResults.spec.js +7 -0
- package/react/components/search/SearchResults.spec.js.map +1 -1
- 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 +9 -0
- 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/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 +44 -0
- package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +6 -0
- 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 +1 -0
- 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 +4 -0
- package/react/components/toolbar/ToolbarIcon.js.map +1 -1
- package/react/components/toolbar/ToolbarSection.d.ts +7 -0
- package/react/components/toolbar/ToolbarSection.js +19 -1
- 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 +14 -0
- 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 +82 -0
- 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 +11 -0
- 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 +70 -3
- 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 +7 -0
- 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 +16 -0
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +20 -0
- 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 +5 -0
- 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 +76 -0
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +140 -1
- 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/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 +12 -0
- package/react/components/userPreferences/components/content/Workspaces.js +33 -1
- package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +3 -0
- 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 +11 -0
- package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +3 -0
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
- package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +17 -0
- package/react/components/userPreferences/stores/UserPreferencesStore.js +27 -0
- package/react/components/userPreferences/stores/UserPreferencesStore.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/Workspace.spec.js +20 -0
- package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -1
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +124 -0
- package/react/components/windowTitleBar/WindowTitleBarShell.js +284 -35
- 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 +25 -9
- 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 +172 -10
- 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 +72 -1
- 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 +63 -0
- 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/timer.js +2 -0
- package/react/components/yesNoDialog/timer.js.map +1 -1
- package/react/enzymeSetup.js +5 -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 +90 -0
- 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.js +52 -0
- 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.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 +4 -0
- package/react/store.js +11 -0
- package/react/store.js.map +1 -1
- package/react/tsconfig.tsbuildinfo +1 -1
- 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 +5 -0
- package/react/types/smartDesktopDesignerTypes.js.map +1 -1
- package/react/types/workspaceTypes.d.ts +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowTitleBarShell.js","sourceRoot":"","sources":["../../../src/components/windowTitleBar/WindowTitleBarShell.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,qCAAqC,CAAC;AAI7C,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAsClD,MAAM,OAAO,mBAAoB,SAAQ,KAAK,CAAC,SAA6D;IAG3G,YAAY,KAA+B;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QAEvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG;YACZ,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAmB;YAC3E,uBAAuB,EAAE,IAAI;YAC7B,WAAW,EAAE,KAAK;YAClB,iBAAiB,EAAE,KAAK;YACxB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,KAAK;YAChB,kBAAkB,EAAE,KAAK;YACzB,gBAAgB,EAAE,KAAK;YACvB,eAAe,EAAE,KAAK;YACtB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,EAAE;YACR,iBAAiB,EAAE,EAAE;YACrB,WAAW,EAAE,EAAE;YACf,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,EAAkB;YAChC,oBAAoB,EAAE,IAAI;SAC1B,CAAC;QAEF,eAAe,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,WAAoB,EAAE,EAAE;YAC/D,IAAI,CAAC,QAAQ,iCAAM,IAAI,CAAC,KAAK,KAAE,WAAW,IAAG,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3E,CAAC;IAED,mBAAmB,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAO;QACjD,IAAI,CAAC,QAAQ,iCAAM,IAAI,CAAC,KAAK,KAAE,WAAW,IAAG,CAAC;IAC/C,CAAC;IAOD,kBAAkB;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,YAAY,CACtB;YACC,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;YAC3D,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACzE,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACjE,EAAE,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE;YACxE,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE;YAClE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACrE,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE;YACxE,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;YAClD,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;YAC/C,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACvD,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAC5D,EAAE,KAAK,EAAE,0BAA0B,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE;SACzE,EACD,GAAG,EAAE,GAAE,CAAC,CACR,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,qCAAqC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC9G,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,oCAAoC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1G,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,sCAAsC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE5G,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC;YACb,WAAW,EAAE,IAAI;SACjB,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;;QACZ,IAAI,gBAAgB,GAAG,eAAe,CAAC,UAA2B,CAAC;QACnE,gBAAgB,CAAC,KAAK,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC;YAC7C,KAAK,EAAE,kBAAkB;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC;YACb,WAAW,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YAChE,SAAS,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;YAC5D,SAAS,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;YAC5D,WAAW,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;YAC3D,gBAAgB,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC;gBACtC,KAAK,EAAE,yBAAyB;aAChC,CAAC;YACF,eAAe,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC;gBACrC,KAAK,EAAE,uBAAuB;aAC9B,CAAC;YACF,UAAU,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;YACzD,iBAAiB,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC;gBACvC,KAAK,EAAE,kBAAkB;aACzB,CAAC;YACF,QAAQ,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;YACrD,aAAa,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YAC/D,YAAY,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YAC7D,oBAAoB,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;YAC7E,IAAI,EAAE,CAAC,gBAAgB,CAAC;SACxB,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB;QAKhB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;gBAEpB,eAAe,CAAC,KAAK,EAAE,CAAC;aACxB;QACF,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAG/D,IAAI,MAAM,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SACjG;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,YAAY,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,oBAAoB;;QACnB,YAAY,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAC3B,MAAA,IAAI,CAAC,KAAK,0CAAE,eAAe,CAC1B;gBACC,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC3D;oBACC,KAAK,EAAE,yBAAyB;oBAChC,QAAQ,EAAE,IAAI,CAAC,oBAAoB;iBACnC;gBACD,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBACjE;oBACC,KAAK,EAAE,qBAAqB;oBAC5B,QAAQ,EAAE,IAAI,CAAC,uBAAuB;iBACtC;gBACD,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE;gBAClE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;gBACrE;oBACC,KAAK,EAAE,uBAAuB;oBAC9B,QAAQ,EAAE,IAAI,CAAC,qBAAqB;iBACpC;gBACD,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;gBAClD,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC/C,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE;aACvD,EACD,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,CACR,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,qCAAqC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACjH,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,oCAAoC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;SAC7G;IACF,CAAC;IAED,mBAAmB,CAAC,GAAkB,EAAE,QAAa;QACpD,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,CAAC,QAAQ,CACZ;gBACC,mBAAmB,EAAE,QAAQ,CAAC,KAAK;gBACnC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC;aACxF,EACD,IAAI,CAAC,gBAAgB,CACrB,CAAC;SACF;IACF,CAAC;IAKD,uBAAuB;QACtB,IAAI,CAAC,QAAQ,CAAC;YACb,uBAAuB,EAAE,IAAI;SAC7B,CAAC,CAAC;IACJ,CAAC;IAKD,0BAA0B;QACzB,IAAI,CAAC,QAAQ,CAAC;YACb,uBAAuB,EAAE,KAAK;SAC9B,CAAC,CAAC;IACJ,CAAC;IAKD,aAAa;QACZ,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACzE,IAAI,UAAU,EAAE;YACf,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACnC;IACF,CAAC;IAKD,YAAY;QACX,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,SAAS,CAAC,CAAC;QAChF,IAAI,UAAU,EAAE;YACf,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACtC;IACF,CAAC;IAMD,aAAa;QACZ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IAKD,aAAa;QAGZ,OAAO,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,4BAA4B,CAAC,OAAuB;QAEnD,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,eAAe,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC7C,cAAc,GAAG,IAAI,CAAC;YACtB,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,cAAc,EAAE;oBACnB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;iBACnD;YACF,CAAC,EAAE,GAAG,CAAC,CAAC;QACT,CAAC,CAAC;QACF,MAAM,aAAa,GAAG,GAAG,EAAE;YAC1B,cAAc,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAC9C,CAAC,CAAC;QAEF,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC;QACtC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,UAAmB,EAAE,kBAA0B;QAC7D,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,UAAU,CAAC,SAAS,GAAG,kBAAkB,CAAC;QAC1C,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAE9C,UAAU,CAAC,UAAU,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC,CAAC;QACF,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,2BAA2B,CAAC,cAAuB;;QAGlD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;YACjE,IAAI,WAAW,EAAE;gBAChB,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAEpD,uCAKI,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,KAC7C,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,IAC7C;aACF;iBAAM;gBACN,OAAO,cAAc,CAAC;aACtB;SACD;aAAM;YAGN,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,qBAAqB,EAAE,mCAAI,cAAc,CAAC;YAC3E,MAAM,mBAAmB,GAAG,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,aAAa,CAAC,2CAA2C,CAAC,CAAC;YACzG,IAAI,mBAAmB,EAAE;gBACxB,MAAM,YAAY,GAAG,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;gBAEjE,uCACI,MAAM,KACT,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,EACtC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IACvC;aACF;iBAAM;gBACN,OAAO,MAAM,CAAC;aACd;SACD;IACF,CAAC;IAaD,gBAAgB;;QACf,IAAI;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YAE1D,IAAI,CAAC,UAAU;gBAAE,OAAO;YAExB,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBACxD,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,kCAAkC,CAAC;YAEtC,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAC7D,CAAC,CAAC,kCAAkC;gBACpC,CAAC,CAAC,kBAAkB,CAAC;YAGtB,IAAI,UAAU,GACb,MAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,kBAAkB,EAAE,CAAiB,mCACjE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAIrD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,uBAAuB,EAAE,CAAgB,CAAC;YAChG,IAAI,kBAAkB;gBAAE,MAAA,kBAAkB,CAAC,UAAU,0CAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAKvF,IAAI,MAAM,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;YAEhD,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;YACnD,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;YAGvD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACxB,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;aAClD;iBAAM;gBAEN,IAAI,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBACrE,IAAI,gBAAgB;oBAAE,MAAM,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;aACxE;YAED,IAAI,MAAM,EAAE;gBACX,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC;gBAC3C,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;aAC7C;YAGD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,qCAAqC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAGjG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,oCAAoC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/F,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,sCAAsC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SACjG;QAAC,OAAO,KAAK,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;IACF,CAAC;IAOD,gBAAgB,CAAC,GAAkB,EAAE,QAAa;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAOD,UAAU,CAAC,GAAkB,EAAE,QAAa;QAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAMD,aAAa,CAAC,GAAkB,EAAE,QAAa;QAC9C,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QAEnE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACtB,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI;gBAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC;YACvD,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU;gBAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC;YACvD,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3F,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO;QAE3B,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,QAAQ,CAAC;YACb,WAAW,EAAE,QAAQ,CAAC,KAAK;YAC3B,IAAI,EAAE,IAAI;SACV,CAAC,CAAC;IACJ,CAAC;IAKD,oBAAoB,CAAC,GAAkB,EAAE,QAAa;QACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,mBAAmB,CAAC,GAAkB,EAAE,QAAa;QACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,uBAAuB,CAAC,GAAkB,EAAE,QAAa;QACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,oBAAoB,CAAC,GAAkB,EAAE,QAAa;QACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,QAAkC;QAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,qBAAqB,CAAC,GAAkB,EAAE,QAAa;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,GAAkB,EAAE,QAAa;QAC9C,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,QAAQ,CAAC,KAAK;SACpB,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,GAAkB,EAAE,QAAa;QAIlD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACpB,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAmB,CAAC;YAChF,IAAI,SAAS,EAAE;gBAGd,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;gBAItC,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;aAC7C;SACD;QACD,IAAI,CAAC,QAAQ,CAAC;YACb,QAAQ,EAAE,QAAQ,CAAC,KAAK;SACxB,CAAC,CAAC;IACJ,CAAC;IAID,aAAa;QACZ,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;YACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;SACtD;IACF,CAAC;IAKD,KAAK,CAAC,iBAAiB;QACtB,MAAM,eAAe,GAAG,GAAG,EAAE;YAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,WAAW,EAAE;gBAChB,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBACpC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;gBACnC,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;aAClC;YAED,IAAI,WAAW,EAAE;gBAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACtF,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB,YAAY,GAAG,CAAC;gBAC3D,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;aACxC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACtF,IAAI,MAAM,EAAE;gBACX,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB;oBAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,qBAAqB;oBAAE,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;aACrG;iBAAM;gBACN,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;aACxF;QACF,CAAC,CAAC;QAGF,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU;YAAE,eAAe,EAAE,CAAC;aACrD;YACJ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAClD,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU;oBAAE,eAAe,EAAE,CAAC;YAC3D,CAAC,CAAC,CAAC;SACH;IACF,CAAC;IAMD,8BAA8B,CAAC,YAAoB;QAClD,MAAM,OAAO,GAAG;YACf,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;SACb,CAAC;QAMF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,EAAE,EAAE;YAC3D,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC9B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;;oBACzC,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA,EAAE;wBAChD,IAAI;4BACH,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;4BAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;4BAG/B,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gCACvE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;gCAChF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;6BACrC;yBACD;wBAAC,OAAO,GAAG,EAAE;yBAEb;qBACD;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAGH,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAMD,YAAY,CAAC,MAAoB;QAChC,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,KAAK,EAAE;YAC/C,IAAI,MAAM,CAAC,KAAK;gBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,QAAQ;gBAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SACvD;IACF,CAAC;IAUO,MAAM,CAAC,IAAiB,EAAE,IAAY,EAAE,YAAoB,OAAO;QAC1E,IACC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAE5C,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAC3C;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;YAEjC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,SAAS,MAAM,UAAU,KAAK,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;SACvC;IACF,CAAC;IAQO,oBAAoB,CAAC,YAAoB;QAChD,MAAM,KAAK,GAAQ,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,2CAA2C,CAAC,CAAC;QAC/F,IAAI,IAAI,GAAG,YAAY,CAAC;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAGxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAE3G,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IAOO,mBAAmB,CAAC,UAAe;QAC1C,MAAM,IAAI,GAAQ,UAAU,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC;QAEzB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAE7B,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;gBACxF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC1C,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;aACvC;SACD;IACF,CAAC;IASO,kBAAkB,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc;QACxE,IAAI,MAAM,GAAG,QAAQ,CAAC;QACtB,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,IAAI,IAAI,KAAK,EAAE;YAClB,MAAM,GAAG,QAAQ,QAAQ,MAAM,MAAM,GAAG,CAAC;SACzC;aAAM,IAAI,IAAI,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACrE,MAAM,GAAG,MAAM,CAAC;SAChB;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAUO,YAAY,CAAC,OAAY,EAAE,MAAa,EAAE;QACjD,MAAM,KAAK,GAAQ,OAAO,CAAC,QAAQ,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE;YACT,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClB;aAAM;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACtD,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,QAAQ,EAAE;oBACnD,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACvC;qBAAM;oBACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;iBACnB;aACD;SACD;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAMO,iBAAiB,CAAC,MAAW;QACpC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAE/B,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,EAAE;YACvC,MAAM,UAAU,GAAU,EAAE,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAClD,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,OAAO;oBAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzE,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACzC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACvD,IAAI,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,OAAO;wBAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/E,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,UAAU,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,kCAAkC,CAAC;QAEpD,MAAM,KAAK,GAAQ,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBACnD,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACtE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;aACzC;SACD;IACF,CAAC;IAMO,oBAAoB,CAAC,MAAW;QACvC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAElC,MAAM,QAAQ,GAAG,kCAAkC,CAAC;QAEpD,MAAM,KAAK,GAAQ,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3G,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAG/C,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBACvG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACzE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;aACzC;SACD;IACF,CAAC;IAED,MAAM;QACL,IAAI,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAClF,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;QACpD,IAAI,gBAAgB,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1E,IAAI,gBAAgB,GAAG,eAAe,CAAC;QACvC,IAAI,aAAa,GAAG,aAAa,CAAC;QAGlC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACxB,aAAa,GAAG,GAAG,aAAa,oBAAoB,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,aAAa,GAAG,GAAG,aAAa,qBAAqB,CAAC;SACtD;QACD,MAAM,OAAO,GAAG;YACf,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC7C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;YAC3C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAClC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,gBAAgB;YAC5D,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YACxC,YAAY,EAAE,IAAI,CAAC,uBAAuB;YAC1C,iBAAiB,EAAE,eAAe;YAClC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACvC,SAAS,EAAE,gBAAgB;YAC3B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACvC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;YACzC,iBAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB;YACtD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,cAAc,EAAE,IAAI,CAAC,gBAAgB;YACrC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,gBAAgB;YACvE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB;SACnD,CAAC;QAEF,OAAO,CACN,6BAAK,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAClE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAC1B,oBAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAkC,CACtG,CACI,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport * as React from \"react\";\nimport { WindowTitleBarContext } from \"./windowTitleBarContext\";\nimport { storeManager, Actions, getStore } from \"./stores/windowTitleBarStore\";\nimport \"../../assets/css/windowTitleBar.css\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\nimport { TabProperties } from \"../../types/windowTitleBar\";\nimport { clone } from \"./../sdd/Appearance.helpers\";\nimport { Logger } from \"@finsemble/finsemble-api\";\n\ntype BumpElements = {\n\tbumpBy: string;\n\tfixed: string;\n\tabsolute: string;\n\tmonitorFixedAdditions: boolean;\n};\n\ninterface WindowTitleBarShellProps {}\n\ninterface WindowTitleBarShellState {\n\ttabs: TabProperties[];\n\tactiveTab: TabProperties;\n\twindowTitle: string;\n\tinitialized: boolean;\n\talwaysOnTop: boolean;\n\tshowTabs: boolean;\n\tminButton: boolean;\n\tmaxButton: boolean;\n\tcloseButton: boolean;\n\tshowShareButton: boolean;\n\tshowLinkerButton: boolean;\n\tisTopRight: boolean;\n\tdockingEnabled: boolean;\n\talwaysOnTopButton: boolean;\n\tallowDragOnCenterRegion: boolean;\n\tdockingIcon: string;\n\thackScrollbar: boolean;\n\tshowDockingTooltip: boolean;\n\tshowTabRegion: boolean;\n\ttabBarBoundingBox: any;\n\tuseDOMBasedMovement: boolean;\n\tdragHandleName: string;\n\tbumpElements: BumpElements;\n\tadjustContentHeights: boolean;\n}\n\nexport class WindowTitleBarShell extends React.Component<WindowTitleBarShellProps, WindowTitleBarShellState> {\n\tstore?: StoreModel;\n\n\tconstructor(props: WindowTitleBarShellProps) {\n\t\tsuper(props);\n\t\tthis.store = undefined;\n\n\t\tthis.bindCorrectContext();\n\t\tthis.state = {\n\t\t\tactiveTab: FSBL.Clients.WindowClient.getWindowIdentifier() as TabProperties,\n\t\t\tallowDragOnCenterRegion: true,\n\t\t\talwaysOnTop: false,\n\t\t\talwaysOnTopButton: false,\n\t\t\tcloseButton: false,\n\t\t\tdockingEnabled: false,\n\t\t\tdockingIcon: \"\",\n\t\t\thackScrollbar: false,\n\t\t\tinitialized: false,\n\t\t\tisTopRight: false,\n\t\t\tmaxButton: false,\n\t\t\tminButton: false,\n\t\t\tshowDockingTooltip: false,\n\t\t\tshowLinkerButton: false,\n\t\t\tshowShareButton: false,\n\t\t\tshowTabs: false,\n\t\t\tshowTabRegion: false,\n\t\t\ttabs: [],\n\t\t\ttabBarBoundingBox: {},\n\t\t\twindowTitle: \"\",\n\t\t\tuseDOMBasedMovement: true,\n\t\t\tdragHandleName: \"fsbl-drag-handle\",\n\t\t\tbumpElements: {} as BumpElements,\n\t\t\tadjustContentHeights: true,\n\t\t};\n\n\t\tfinsembleWindow.isAlwaysOnTop({}, (err, alwaysOnTop: boolean) => {\n\t\t\tthis.setState({ ...this.state, alwaysOnTop });\n\t\t});\n\n\t\tfinsembleWindow.addEventListener(\"alwaysOnTop\", this.alwaysOnTopListener);\n\t}\n\n\talwaysOnTopListener({ data: { alwaysOnTop } }: any) {\n\t\tthis.setState({ ...this.state, alwaysOnTop });\n\t}\n\n\t/**\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\n\t *\n\t * @memberof WindowTitleBar\n\t */\n\tbindCorrectContext() {\n\t\tthis.onTitleChange = this.onTitleChange.bind(this);\n\t\tthis.onShowDockingToolTip = this.onShowDockingToolTip.bind(this);\n\t\tthis.onToggleDockingIcon = this.onToggleDockingIcon.bind(this);\n\t\tthis.onDockingEnabledChanged = this.onDockingEnabledChanged.bind(this);\n\t\tthis.onAlwaysOnTopChanged = this.onAlwaysOnTopChanged.bind(this);\n\t\tthis.showLinkerButton = this.showLinkerButton.bind(this);\n\t\tthis.isTopRight = this.isTopRight.bind(this);\n\t\tthis.allowDragOnCenterRegion = this.allowDragOnCenterRegion.bind(this);\n\t\tthis.disallowDragOnCenterRegion = this.disallowDragOnCenterRegion.bind(this);\n\t\tthis.setDOMBasedMovement = this.setDOMBasedMovement.bind(this);\n\t\tthis.onShareEmitterChanged = this.onShareEmitterChanged.bind(this);\n\t\tthis.onTabsChanged = this.onTabsChanged.bind(this);\n\t\tthis.onShowTabsChanged = this.onShowTabsChanged.bind(this);\n\t\tthis.onTilingStop = this.onTilingStop.bind(this);\n\t\tthis.onTilingStart = this.onTilingStart.bind(this);\n\t\tthis.resizeDragHandle = this.resizeDragHandle.bind(this);\n\t\tthis.onDoubleClick = this.onDoubleClick.bind(this);\n\t\tthis.alwaysOnTopListener = this.alwaysOnTopListener.bind(this);\n\t\tthis.onInitialized = this.onInitialized.bind(this);\n\t}\n\n\tonInitialized() {\n\t\tthis.store = getStore();\n\t\tthis.store.addListeners(\n\t\t\t[\n\t\t\t\t{ field: \"Main.windowTitle\", listener: this.onTitleChange },\n\t\t\t\t{ field: \"Main.showDockingTooltip\", listener: this.onShowDockingToolTip },\n\t\t\t\t{ field: \"Main.dockingIcon\", listener: this.onToggleDockingIcon },\n\t\t\t\t{ field: \"Main.dockingEnabled\", listener: this.onDockingEnabledChanged },\n\t\t\t\t{ field: \"AlwaysOnTop.show\", listener: this.onAlwaysOnTopChanged },\n\t\t\t\t{ field: \"Linker.showLinkerButton\", listener: this.showLinkerButton },\n\t\t\t\t{ field: \"Sharer.emitterEnabled\", listener: this.onShareEmitterChanged },\n\t\t\t\t{ field: \"isTopRight\", listener: this.isTopRight },\n\t\t\t\t{ field: \"tabs\", listener: this.onTabsChanged },\n\t\t\t\t{ field: \"showTabs\", listener: this.onShowTabsChanged },\n\t\t\t\t{ field: \"hackScrollbar\", listener: this.onShowTabsChanged },\n\t\t\t\t{ field: \"Main.useDOMBasedMovement\", listener: this.setDOMBasedMovement },\n\t\t\t],\n\t\t\t() => {}\n\t\t);\n\n\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.startTilingOrTabbing\", this.disallowDragOnCenterRegion);\n\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.stopTilingOrTabbing\", this.allowDragOnCenterRegion);\n\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.cancelTilingOrTabbing\", this.allowDragOnCenterRegion);\n\n\t\tthis.onStoreChange();\n\t\tthis.setState({\n\t\t\tinitialized: true,\n\t\t});\n\t}\n\n\tonStoreChange() {\n\t\tlet activeIdentifier = finsembleWindow.identifier as TabProperties;\n\t\tactiveIdentifier.title = this.store?.getValue({\n\t\t\tfield: \"Main.windowTitle\",\n\t\t});\n\n\t\tthis.setState({\n\t\t\twindowTitle: this.store?.getValue({ field: \"Main.windowTitle\" }),\n\t\t\tminButton: !this.store?.getValue({ field: \"Minimize.hide\" }),\n\t\t\tmaxButton: !this.store?.getValue({ field: \"Maximize.hide\" }),\n\t\t\tcloseButton: !this.store?.getValue({ field: \"Close.hide\" }),\n\t\t\tshowLinkerButton: this.store?.getValue({\n\t\t\t\tfield: \"Linker.showLinkerButton\",\n\t\t\t}),\n\t\t\tshowShareButton: this.store?.getValue({\n\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t}),\n\t\t\tisTopRight: this.store?.getValue({ field: \"isTopRight\" }),\n\t\t\talwaysOnTopButton: this.store?.getValue({\n\t\t\t\tfield: \"AlwaysOnTop.show\",\n\t\t\t}),\n\t\t\tshowTabs: this.store?.getValue({ field: \"showTabs\" }),\n\t\t\thackScrollbar: this.store?.getValue({ field: \"hackScrollbar\" }),\n\t\t\tbumpElements: this.store?.getValue({ field: \"bumpElements\" }),\n\t\t\tadjustContentHeights: this.store?.getValue({ field: \"adjustContentHeights\" }),\n\t\t\ttabs: [activeIdentifier], // array of tabs for this window\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\t// Goal: If a user gets focus into the title bar (if they Alt+Tab or Cmd+Tab into the window),\n\t\t// we want to let get into the rest of the component using the keyboard alone. The UX for\n\t\t// this task will be to seemingly TAB from the title bar into the window, if possible.\n\t\t// Code: If the user presses the \"Tab\" key, move their focus to the browser view\n\t\twindow.addEventListener(\"keydown\", (e) => {\n\t\t\tif (e.key === \"Tab\") {\n\t\t\t\t// This magic moves focus to a browserView, if one exists\n\t\t\t\tfinsembleWindow.focus();\n\t\t\t}\n\t\t});\n\t\tlet header = document.getElementsByClassName(\"fsbl-header\")[0];\n\n\t\t//Add a margin top to the body if there title bar is injected into the component.\n\t\tif (header) {\n\t\t\tdocument.body.style.margin = \"0px\";\n\t\t\tdocument.body.style.marginTop = window.getComputedStyle(header, null).getPropertyValue(\"height\");\n\t\t}\n\t\tthis.resizeDragHandle();\n\t\tthis.hackScrollbar();\n\t\tstoreManager.addInitializedListener(this.onInitialized);\n\t\tstoreManager.initialize();\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.resizeDragHandle();\n\t\tthis.hackScrollbar();\n\t\tthis.maybeAdjustWindow();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstoreManager.removeInitializedListener(this.onInitialized);\n\t\tif (this.state.initialized) {\n\t\t\tthis.store?.removeListeners(\n\t\t\t\t[\n\t\t\t\t\t{ field: \"Main.windowTitle\", listener: this.onTitleChange },\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Main.showDockingTooltip\",\n\t\t\t\t\t\tlistener: this.onShowDockingToolTip,\n\t\t\t\t\t},\n\t\t\t\t\t{ field: \"Main.dockingIcon\", listener: this.onToggleDockingIcon },\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Main.dockingEnabled\",\n\t\t\t\t\t\tlistener: this.onDockingEnabledChanged,\n\t\t\t\t\t},\n\t\t\t\t\t{ field: \"AlwaysOnTop.show\", listener: this.onAlwaysOnTopChanged },\n\t\t\t\t\t{ field: \"Linker.showLinkerButton\", listener: this.showLinkerButton },\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t\t\t\tlistener: this.onShareEmitterChanged,\n\t\t\t\t\t},\n\t\t\t\t\t{ field: \"isTopRight\", listener: this.isTopRight },\n\t\t\t\t\t{ field: \"tabs\", listener: this.onTabsChanged },\n\t\t\t\t\t{ field: \"showTabs\", listener: this.onShowTabsChanged },\n\t\t\t\t],\n\t\t\t\t() => {},\n\t\t\t\t() => {}\n\t\t\t);\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"DockingService.startTilingOrTabbing\", this.disallowDragOnCenterRegion);\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"DockingService.stopTilingOrTabbing\", this.allowDragOnCenterRegion);\n\t\t}\n\t}\n\n\tsetDOMBasedMovement(err: StandardError, response: any) {\n\t\tif (response && response.hasOwnProperty(\"value\")) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tuseDOMBasedMovement: response.value,\n\t\t\t\t\tdragHandleName: response.value ? \"fsbl-drag-handle\" : \"fsbl-drag-handle-native-movement\",\n\t\t\t\t},\n\t\t\t\tthis.resizeDragHandle\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * When we are not tiling/tabbing, we want to allow the user to drag the window around via any available space in the tab-region. This function allows that.\n\t */\n\tallowDragOnCenterRegion() {\n\t\tthis.setState({\n\t\t\tallowDragOnCenterRegion: true,\n\t\t});\n\t}\n\n\t/**\n\t * When we are tiling/tabbing, we do not want to allow any window to be dragged around and moved.\n\t */\n\tdisallowDragOnCenterRegion() {\n\t\tthis.setState({\n\t\t\tallowDragOnCenterRegion: false,\n\t\t});\n\t}\n\n\t/**\n\t * When tiling start, we want to find the dragHandler and hide it\n\t */\n\tonTilingStart() {\n\t\tlet dragHandle = document.querySelector(`.${this.state.dragHandleName}`);\n\t\tif (dragHandle) {\n\t\t\tdragHandle.classList.add(\"hidden\");\n\t\t}\n\t}\n\n\t/**\n\t * When tiling stops, we want to find the dragHandler and re-show it\n\t */\n\tonTilingStop() {\n\t\tlet dragHandle = document.querySelector(`.${this.state.dragHandleName}.hidden`);\n\t\tif (dragHandle) {\n\t\t\tdragHandle.classList.remove(\"hidden\");\n\t\t}\n\t}\n\n\t/**\n\t * Called whenever a tab is dropped on a non tab area.\n\t * It won't be called when dropped on a tab that handles handle the event.\n\t */\n\tonDropHandler() {\n\t\tFSBL.Clients.RouterClient.transmit(\"DockingService.cancelTilingOrTabbing\", {});\n\t}\n\n\t/**\n\t * Called when user double clicks on drag handle\n\t */\n\tonDoubleClick() {\n\t\t// Actions.clickMaximize checks the window state\n\t\t// and toggles between maximize and minimize.\n\t\tActions.clickMaximize();\n\t}\n\n\t_setOnMouseUpAndDownHandlers(element: HTMLDivElement) {\n\t\t// if do double click it will invoke MouseDown and MouseUp events which could break the window bounds. So wait a 100ms for moving or resizing the window.\n\t\tlet isMousePressed = false;\n\t\tconst handleMouseDown = (event: MouseEvent) => {\n\t\t\tisMousePressed = true;\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (isMousePressed) {\n\t\t\t\t\tFSBL.Clients.WindowClient.startMovingWindow(event);\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t};\n\t\tconst handleMouseUp = () => {\n\t\t\tisMousePressed = false;\n\t\t\tFSBL.Clients.WindowClient.stopMovingWindow();\n\t\t};\n\n\t\telement.onmousedown = handleMouseDown;\n\t\telement.onmouseup = handleMouseUp;\n\t}\n\n\tmakeDragHandle(fsblHeader: Element, dragHandleCssClass: string): HTMLElement {\n\t\tlet dragHandle = document.createElement(\"div\");\n\t\tdragHandle.className = dragHandleCssClass;\n\t\tthis._setOnMouseUpAndDownHandlers(dragHandle);\n\n\t\tdragHandle.ondblclick = () => {\n\t\t\tthis.onDoubleClick();\n\t\t};\n\t\tfsblHeader.insertBefore(dragHandle, fsblHeader.firstChild);\n\t\twindow.addEventListener(\"resize\", () => {\n\t\t\tthis.resizeDragHandle();\n\t\t});\n\n\t\treturn dragHandle;\n\t}\n\n\tdragHandleBoundsForShowTabs(startingBounds: DOMRect): DOMRect {\n\t\t// If there is more than one tab, then the drag area is the padding-left of fsbl-header-right\n\t\t// See .fsbl-tabs-multiple in the css\n\t\tif (this.state.tabs.length > 1) {\n\t\t\tconst headerRight = document.querySelector(\".fsbl-header-right\");\n\t\t\tif (headerRight) {\n\t\t\t\tconst computedStyle = getComputedStyle(headerRight);\n\t\t\t\t// override the bounds.width with the paddingLeft amount\n\t\t\t\treturn {\n\t\t\t\t\t// The spread operator only uses own properties; simply\n\t\t\t\t\t// spreading \"headerRight.getBoundingClientRect()\" will result in an\n\t\t\t\t\t// empty object being spread. Clone the object to be sure all\n\t\t\t\t\t// values are spread\n\t\t\t\t\t...clone(headerRight.getBoundingClientRect()),\n\t\t\t\t\twidth: parseInt(computedStyle.paddingLeft, 10),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn startingBounds;\n\t\t\t}\n\t\t} else {\n\t\t\t// If tabs are not enabled, then the remained of fsbl-header-center beyond the tabs\n\t\t\t// is the draggable area. This assumes left aligned tabs.\n\t\t\tconst fsblHeaderCenter = document.querySelector(\".fsbl-header-center\");\n\t\t\tconst bounds = fsblHeaderCenter?.getBoundingClientRect() ?? startingBounds;\n\t\t\tconst tabRegionWrapperDiv = fsblHeaderCenter?.querySelector(\".tab-region-wrapper div.fsbl-header-title\");\n\t\t\tif (tabRegionWrapperDiv) {\n\t\t\t\tconst theTabBounds = tabRegionWrapperDiv.getBoundingClientRect();\n\t\t\t\t// Calculate the right portion\n\t\t\t\treturn {\n\t\t\t\t\t...bounds,\n\t\t\t\t\tleft: bounds.left + theTabBounds.width,\n\t\t\t\t\twidth: bounds.width - theTabBounds.width,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn bounds;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * The dragger is an absolutely positioned element that is superimposed on the actual area that we'd like to drag.\n\t * This is necessary due to a bug in Chromium. Effectively, we need the dragger to change its left position and width\n\t * to match the intended drag area. These dimensions can change whenever the header is re-rendered (for instance when\n\t * changing mode from tabbing to non-tabbing). Dimensions can also change when the window itself is resized (due to natural\n\t * css).\n\t *\n\t * Can remove all of the cq-drag and cq-no-drag because Chromium bug is fixed\n\t * Remove fsbl-drag-region, it is no longer needed\n\t * Hide the dragHandle during drop operations, so that it doesn't interfere\n\t */\n\tresizeDragHandle() {\n\t\ttry {\n\t\t\tconst fsblHeader = document.querySelector(\".fsbl-header\");\n\t\t\t// If there isn't an FSBLHeader then there doesn't need to be a drag handle.\n\t\t\tif (!fsblHeader) return;\n\n\t\t\tconst dragHandleCssClass = this.state.useDOMBasedMovement\n\t\t\t\t? \"fsbl-drag-handle\"\n\t\t\t\t: \"fsbl-drag-handle-native-movement\";\n\n\t\t\tconst dragHandleToRemoveClass = this.state.useDOMBasedMovement\n\t\t\t\t? \"fsbl-drag-handle-native-movement\"\n\t\t\t\t: \"fsbl-drag-handle\";\n\n\t\t\t// Create the dragger if it doesn't already exist\n\t\t\tlet dragHandle =\n\t\t\t\t(document.querySelector(`.${dragHandleCssClass}`) as HTMLElement) ??\n\t\t\t\tthis.makeDragHandle(fsblHeader, dragHandleCssClass);\n\n\t\t\t// When the titlebar starts up, useDOMBasedMovement will have a default value that is not the same as the config value\n\t\t\t// When the value from the config propagates down to the UI, we need to make sure the old drag handle is removed in place of the new\n\t\t\tconst dragHandleToRemove = document.querySelector(`.${dragHandleToRemoveClass}`) as HTMLElement;\n\t\t\tif (dragHandleToRemove) dragHandleToRemove.parentNode?.removeChild(dragHandleToRemove);\n\n\t\t\t// Set the height of the dragHandle to match the height of the window title bar\n\t\t\t// Do this every time through the render loop just in case a customer builds a\n\t\t\t// header bar with dynamic height!\n\t\t\tlet bounds = fsblHeader.getBoundingClientRect();\n\n\t\t\tdragHandle.style.height = `${bounds.height - 5}px`; // Subtract 5 pixels from height in order to make room for resize window cursor at top edge of window\n\t\t\tdragHandle.style.marginTop = `${-bounds.height + 5}px`; // Negative margin pulls the drag handle up over the fixed header\n\n\t\t\t// Start logic for determining where to place our dragHandle\n\t\t\tif (this.state.showTabs) {\n\t\t\t\tbounds = this.dragHandleBoundsForShowTabs(bounds);\n\t\t\t} else {\n\t\t\t\t// If tabs are not enabled, then the entire center is the drag area\n\t\t\t\tlet fsblHeaderCenter = document.querySelector(\".fsbl-header-center\");\n\t\t\t\tif (fsblHeaderCenter) bounds = fsblHeaderCenter.getBoundingClientRect();\n\t\t\t}\n\n\t\t\tif (bounds) {\n\t\t\t\tdragHandle.style.left = `${bounds.left}px`;\n\t\t\t\tdragHandle.style.width = `${bounds.width}px`;\n\t\t\t}\n\n\t\t\t// Add an event listener to hide the drag-handler when tiling is started\n\t\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.startTilingOrTabbing\", this.onTilingStart);\n\n\t\t\t// Add an event listener to show the drag-handler when tiling is stopped or cancelled\n\t\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.stopTilingOrTabbing\", this.onTilingStop);\n\t\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.cancelTilingOrTabbing\", this.onTilingStop);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\n\t/**\n\t * Whether the component's config allows for the linker.\n\t * @param {} err\n\t * @param {*} response\n\t */\n\tshowLinkerButton(err: StandardError, response: any) {\n\t\tthis.setState({ showLinkerButton: response.value });\n\t}\n\n\t/**\n\t * Whether the window is the top-right-most window in a group of windows. If so, it renders a minimize icon for the whole group.\n\t * @param {} err\n\t * @param {*} response\n\t */\n\tisTopRight(err: StandardError, response: any) {\n\t\tthis.setState({ isTopRight: response.value });\n\t}\n\n\t/**\n\t * @param {*} err\n\t * @param {*} response\n\t */\n\tonTitleChange(err: StandardError, response: any) {\n\t\tlet { tabs } = this.state;\n\t\tlet myIdentifier = FSBL.Clients.WindowClient.getWindowIdentifier();\n\n\t\ttabs = tabs.map((el) => {\n\t\t\tif (!el.windowName && el.name) el.windowName = el.name;\n\t\t\tif (!el.name && el.windowName) el.name = el.windowName;\n\t\t\treturn el;\n\t\t});\n\n\t\tconst myIndex = tabs.findIndex((el: TabProperties) => el.name === myIdentifier.windowName);\n\t\tif (myIndex === -1) return;\n\n\t\tlet myTab = tabs[myIndex] || {};\n\t\tmyTab.title = response.value;\n\t\ttabs.splice(myIndex, 1, myTab);\n\n\t\tthis.setState({\n\t\t\twindowTitle: response.value,\n\t\t\ttabs: tabs,\n\t\t});\n\t}\n\n\t/**\n\t * The next few methods are store change handlers that sync local state with the store's state.\n\t */\n\tonShowDockingToolTip(err: StandardError, response: any) {\n\t\tthis.setState({ showDockingTooltip: response.value });\n\t}\n\n\tonToggleDockingIcon(err: StandardError, response: any) {\n\t\tthis.setState({ dockingIcon: response.value });\n\t}\n\n\tonDockingEnabledChanged(err: StandardError, response: any) {\n\t\tthis.setState({ dockingEnabled: response.value });\n\t}\n\n\tonAlwaysOnTopChanged(err: StandardError, response: any) {\n\t\tthis.setState({ alwaysOnTopButton: response.value });\n\t}\n\n\tonStoreChanged(newState: WindowTitleBarShellState) {\n\t\tthis.setState(newState);\n\t}\n\n\tonShareEmitterChanged(err: StandardError, response: any) {\n\t\tthis.setState({ showShareButton: response.value });\n\t}\n\n\tonTabsChanged(err: StandardError, response: any) {\n\t\tthis.setState({\n\t\t\ttabs: response.value,\n\t\t});\n\t}\n\n\tonShowTabsChanged(err: StandardError, response: any) {\n\t\t// If we are not showing tabs, then it means that it is a non tabbed window\n\t\t// therefore we need to check whether we have a window title contained in\n\t\t// .div.fsbl-tab-editor so that we can edit it.\n\t\tif (!response.value) {\n\t\t\tlet tabEditor = document.querySelector(\"div.fsbl-tab-editor\") as HTMLDivElement;\n\t\t\tif (tabEditor) {\n\t\t\t\t// we set this z-index value to be slightly higher than the drag handle\n\t\t\t\t// to make the editor dragable AND double-clickcable\n\t\t\t\ttabEditor.style.zIndex = \"2147483647\";\n\t\t\t\t// We add the mousedown and mouseup functions to the tab editor\n\t\t\t\t// so that on a single mouse down it allows the user to drag the\n\t\t\t\t// window on both the .fsbl-drag-handle and the .fsbl-tab-editor\n\t\t\t\tthis._setOnMouseUpAndDownHandlers(tabEditor);\n\t\t\t}\n\t\t}\n\t\tthis.setState({\n\t\t\tshowTabs: response.value,\n\t\t});\n\t}\n\n\t// Hack the window's scrollbar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\n\t// This is turned on by default. Set \"Window Manager.hackScrollbar: false\" to turn it off\n\thackScrollbar() {\n\t\tif (this.state.hackScrollbar) {\n\t\t\tconst htmlElement = document.querySelector(\"html\");\n\t\t\tif (htmlElement) htmlElement.style.overflowY = \"hidden\";\n\t\t\tconst bodyElement = document.querySelector(\"body\");\n\t\t\tif (bodyElement) bodyElement.style.overflowY = \"auto\";\n\t\t}\n\t}\n\n\t/**\n\t * Once document is ready and header is injected into DOM, begin adjusting the height of elements and bump fixed/absolute elements\n\t */\n\tasync maybeAdjustWindow() {\n\t\tconst beginAdjustment = () => {\n\t\t\tconst htmlElement = document.querySelector(\"html\");\n\t\t\tconst bodyElement = document.querySelector(\"body\");\n\n\t\t\tif (htmlElement) {\n\t\t\t\thtmlElement.style.display = \"table\";\n\t\t\t\thtmlElement.style.height = \"100vh\";\n\t\t\t\thtmlElement.style.width = \"100vw\";\n\t\t\t}\n\n\t\t\tif (bodyElement) {\n\t\t\t\tconst header = document.getElementsByClassName(\"fsbl-header\")[0];\n\t\t\t\tconst headerHeight = window.getComputedStyle(header, null).getPropertyValue(\"height\");\n\t\t\t\tbodyElement.style.height = `calc(100vh - ${headerHeight})`;\n\t\t\t\tbodyElement.style.position = \"relative\";\n\t\t\t}\n\n\t\t\tconst header = document.getElementsByClassName(\"fsbl-header\")[0];\n\t\t\tconst headerHeight = window.getComputedStyle(header, null).getPropertyValue(\"height\");\n\t\t\tif (header) {\n\t\t\t\tif (this.state.adjustContentHeights) this.adjustTopLevelHeight(Number(headerHeight.split(\"px\")[0]));\n\n\t\t\t\tthis.bumpElements(this.state.bumpElements);\n\t\t\t\tif (this.state.bumpElements.monitorFixedAdditions) this.monitorFixedPositionedElements(headerHeight);\n\t\t\t} else {\n\t\t\t\tLogger.system.error(\"WindowTitleBarShell.maybeAdjustWindow:could not find the header.\");\n\t\t\t}\n\t\t};\n\n\t\t// don't start pushing stuff down until page is ready. This is needed for preloaded titlebars because they can happen before the page is ready.\n\t\tif (document.readyState === \"complete\") beginAdjustment();\n\t\telse {\n\t\t\tdocument.addEventListener(\"readystatechange\", () => {\n\t\t\t\tif (document.readyState === \"complete\") beginAdjustment();\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Monitors the DOM for mutations, if the added node has a fixed position with a top style of 0px, it will be bumped by the title bar height.\n\t * @param headerHeight the height of the header\n\t */\n\tmonitorFixedPositionedElements(headerHeight: string) {\n\t\tconst options = {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t};\n\n\t\t/**\n\t\t * MutationObserver interface provides the ability to watch for\n\t\t * changes to the DOM tree using the observe method\n\t\t */\n\t\tconst mutationObserver = new MutationObserver((mutations) => {\n\t\t\tconst possibleZeros = [\"0\", \"0px\", 0];\n\t\t\tmutations.forEach((mutation) => {\n\t\t\t\tmutation.addedNodes.forEach((node: any) => {\n\t\t\t\t\tif (!node.className?.includes(\"bumped-element\")) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst nodeStyle = window.getComputedStyle(node);\n\t\t\t\t\t\t\tconst topStyle = nodeStyle.top;\n\n\t\t\t\t\t\t\t// make sure node is fixed, has top style set to 0, and has not been bumped\n\t\t\t\t\t\t\tif (nodeStyle.position === \"fixed\" && possibleZeros.includes(topStyle)) {\n\t\t\t\t\t\t\t\tnode.style.top = this.calculateBumpValue(\"0Positioned\", topStyle, headerHeight);\n\t\t\t\t\t\t\t\tnode.classList.add(\"bumped-element\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t// Expected to error if the node is not an Element e.g text is not of type Element\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t// We observe the body and do not disconnect because there may be other elements that are dynamically loaded, such as a dialogue menu.\n\t\tmutationObserver.observe(document.body, options);\n\t}\n\n\t/**\n\t * Calls functions to bump fixed and/or absolute elements if configured to do so.\n\t * @param {object} config bumpElements object\n\t */\n\tbumpElements(config: BumpElements) {\n\t\tif (config?.bumpBy && config?.bumpBy !== \"0px\") {\n\t\t\tif (config.fixed) this.bumpFixedElements(config);\n\t\t\tif (config.absolute) this.bumpAbsoluteElements(config);\n\t\t}\n\t}\n\n\t/**\n\t * Set the max height of each element to be the height of the parent container\n\t * subtracted by the height of the previous element. This forces the element to either obey its\n\t * predefined height or stay within the bounds of the max height.\n\t * @param {object} elem HTML element\n\t * @param {number} prev height of previous sibling\n\t * @param maxHeight\n\t */\n\tprivate adjust(elem: HTMLElement, prev: number, maxHeight: string = \"100vh\") {\n\t\tif (\n\t\t\t!elem.className.includes(\"adjusted-element\") &&\n\t\t\t// workaround to fix dnd scrim disappearing\n\t\t\t!elem.className.includes(\"fsbl-share-scrim\")\n\t\t) {\n\t\t\tconst clientHeight = elem.clientHeight ? elem.clientHeight : 0;\n\t\t\tconst offsetHeight = elem.offsetHeight ? elem.offsetHeight : 0;\n\t\t\tconst offset = offsetHeight - clientHeight;\n\t\t\tconst adjustPrev = prev + offset;\n\n\t\t\telem.style.maxHeight = `calc(${maxHeight} - ${adjustPrev}px)`;\n\t\t\telem.classList.add(\"adjusted-element\");\n\t\t}\n\t}\n\n\t/**\n\t * Adjusts the top level content view height to be its height subtracted by the headerHeight and its\n\t * maxHeight to be 100vh subtracted by the total height of the previous elements.\n\t * The height of the previous elements are added to this calculation if they are not fixed or absolute.\n\t * @param {number} headerHeight the height of the header\n\t */\n\tprivate adjustTopLevelHeight(headerHeight: number) {\n\t\tconst elems: any = document.body.querySelectorAll(\":scope > *:not(#FSBLHeader, .fsbl-header)\");\n\t\tlet prev = headerHeight;\n\n\t\telems.forEach((elem: any) => {\n\t\t\tthis.adjust(elem, prev);\n\t\t\t// Heights of fixed and absolute positioned elements are not added to the total heights of previous elements\n\t\t\t// since they are removed from the document flow and can be positioned anywhere in the page.\n\t\t\tif (elem.style.position !== \"fixed\" && elem.style.position !== \"absolute\") prev = prev + elem.offsetHeight;\n\n\t\t\tthis.adjustContentHeight(elem);\n\t\t});\n\t}\n\n\t/**\n\t * Adjusts the content view height to be maximum the parent container height subtracted by the total height elements above it.\n\t * The height of the previous elements are added to this calculation if they are not fixed or absolute.\n\t * @param {object} headerNode window titlebar\n\t */\n\tprivate adjustContentHeight(headerNode: any) {\n\t\tconst elem: any = headerNode;\n\t\tconst maxHeight = `100%`;\n\n\t\tconst { children } = elem;\n\t\tconst len = children.length;\n\t\tlet prev = 0;\n\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\t// Fixed and absolute positioned elements are ignored since they are removed from the document flow.\n\t\t\tif (children[i].style.position !== \"fixed\" && children[i].style.position !== \"absolute\") {\n\t\t\t\tthis.adjust(children[i], prev, maxHeight);\n\t\t\t\tprev = prev + children[i].offsetHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculates value to bump element by. If 'all' return top style and header height, if '0Positioned' return header height\n\t * @param type Whether all elements are being bumped by the header height and their top style or just header height\n\t * @param topStyle Element top value\n\t * @param bumpBy Value to bump element by\n\t * @returns Top style for element\n\t */\n\tprivate calculateBumpValue(type: string, topStyle: string, bumpBy: string) {\n\t\tlet topVal = topStyle;\n\t\tconst possibleZeros = [\"0\", \"0px\", 0];\n\t\tif (type == \"all\") {\n\t\t\ttopVal = `calc(${topStyle} + ${bumpBy})`;\n\t\t} else if (type == \"0Positioned\" && possibleZeros.includes(topStyle)) {\n\t\t\ttopVal = bumpBy;\n\t\t}\n\t\treturn topVal;\n\t}\n\n\t/**\n\t * Recursively traverse through the HTML document and return an array of the top level elements\n\t * and elements with static parents\n\t * @param {object} element The HTML element\n\t * @param {array} acc accumulator\n\t * @returns {array} array top level elements and elements with static parents\n\t *\n\t */\n\tprivate traverseHtml(element: any, acc: any[] = []) {\n\t\tconst elems: any = element.children;\n\t\tconst len = elems.length;\n\t\tif (!len) {\n\t\t\tacc.push(element);\n\t\t} else {\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\tconst style = window.getComputedStyle(elems[i], null);\n\t\t\t\tif (style.getPropertyValue(\"position\") == \"static\") {\n\t\t\t\t\tacc = this.traverseHtml(elems[i], acc);\n\t\t\t\t} else {\n\t\t\t\t\tacc.push(elems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn acc;\n\t}\n\n\t/**\n\t * Bumps elements with fixed positioning down by the configured amount.\n\t * @private\n\t */\n\tprivate bumpFixedElements(params: any) {\n\t\tlet { fixed, bumpBy } = params;\n\n\t\tconst getFixedElements = (nodes: any) => {\n\t\t\tconst fixedElems: any[] = [];\n\t\t\tnodes.forEach((node: any) => {\n\t\t\t\tconst style = window.getComputedStyle(node, null);\n\t\t\t\tif (style.getPropertyValue(\"position\") == \"fixed\") fixedElems.push(node);\n\t\t\t\tconst elems = node.querySelectorAll(\"*\");\n\t\t\t\telems.forEach((elem: any) => {\n\t\t\t\t\tconst childStyle = window.getComputedStyle(elem, null);\n\t\t\t\t\tif (childStyle.getPropertyValue(\"position\") == \"fixed\") fixedElems.push(elem);\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn fixedElems;\n\t\t};\n\n\t\tconst selector = \"*:not(#FSBLHeader, .fsbl-header)\";\n\t\t// Get all fixed positioned elements\n\t\tconst elems: any = getFixedElements(document.body.querySelectorAll(`${selector}`));\n\t\tconst len = elems.length;\n\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst style = window.getComputedStyle(elems[i], null);\n\n\t\t\tconst topStyle = style.getPropertyValue(\"top\");\n\t\t\tif (!elems[i].className.includes(\"bumped-element\")) {\n\t\t\t\telems[i].style.top = this.calculateBumpValue(fixed, topStyle, bumpBy);\n\t\t\t\telems[i].classList.add(\"bumped-element\");\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Bumps absolute positioned elements with static parents down by the configured amount.\n\t * @private\n\t */\n\tprivate bumpAbsoluteElements(params: any) {\n\t\tlet { absolute, bumpBy } = params;\n\n\t\tconst selector = \"*:not(#FSBLHeader, .fsbl-header)\";\n\t\t// Get top level absolute positioned elements and elements who have static parents\n\t\tconst elems: any = this.traverseHtml({ children: document.body.querySelectorAll(`:scope > ${selector}`) });\n\t\tconst len = elems.length;\n\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst style = window.getComputedStyle(elems[i], null);\n\n\t\t\tconst topStyle = style.getPropertyValue(\"top\");\n\n\t\t\t// Target absolute positioned elements\n\t\t\tif (style.getPropertyValue(\"position\") == \"absolute\" && !elems[i].className.includes(\"bumped-element\")) {\n\t\t\t\telems[i].style.top = this.calculateBumpValue(absolute, topStyle, bumpBy);\n\t\t\t\telems[i].classList.add(\"bumped-element\");\n\t\t\t}\n\t\t}\n\t}\n\n\trender() {\n\t\tlet showDockingIcon = !this.state.dockingEnabled ? false : this.state.dockingIcon;\n\t\tlet isGrouped = this.state.dockingIcon == \"ejector\";\n\t\tlet showMinimizeIcon = (isGrouped && this.state.isTopRight) || !isGrouped; // If not in a group or if topright in a group\n\t\tlet tabRegionClasses = \"fsbl-tab-area\";\n\t\tlet headerClasses = \"fsbl-header\";\n\n\t\t// If we're showing tabs, we throw these classes on to modify styles.\n\t\tif (this.state.showTabs) {\n\t\t\theaderClasses = `${headerClasses} fsbl-tabs-enabled`;\n\t\t}\n\t\tif (this.state.tabs.length > 1) {\n\t\t\theaderClasses = `${headerClasses} fsbl-tabs-multiple`;\n\t\t}\n\t\tconst context = {\n\t\t\tshowLinkerButton: this.state.showLinkerButton,\n\t\t\tshowShareButton: this.state.showShareButton,\n\t\t\tshowTabRegion: this.state.showTabs,\n\t\t\tshowMinimizeButton: this.state.minButton && showMinimizeIcon,\n\t\t\tshowMaximizeButton: this.state.maxButton,\n\t\t\tonTabDropped: this.allowDragOnCenterRegion,\n\t\t\tshowDockingButton: showDockingIcon,\n\t\t\tshowCloseButton: this.state.closeButton,\n\t\t\tclassName: tabRegionClasses,\n\t\t\tthisWindowTitle: this.state.windowTitle,\n\t\t\tboundingBox: this.state.tabBarBoundingBox,\n\t\t\tlistenForDragOver: !this.state.allowDragOnCenterRegion,\n\t\t\ttabs: this.state.tabs,\n\t\t\tonTitleUpdated: this.resizeDragHandle,\n\t\t\tshowAlwaysOnTopButton: this.state.alwaysOnTopButton && showMinimizeIcon,\n\t\t\tshowTabs: this.state.showTabs,\n\t\t\talwaysOnTop: this.state.alwaysOnTop,\n\t\t\tuseDOMBasedMovement: this.state.useDOMBasedMovement,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={headerClasses} onDrop={this.onDropHandler.bind(this)}>\n\t\t\t\t{this.state.initialized && (\n\t\t\t\t\t<WindowTitleBarContext.Provider value={context}>{this.props.children}</WindowTitleBarContext.Provider>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WindowTitleBarShell.js","sourceRoot":"","sources":["../../../src/components/windowTitleBar/WindowTitleBarShell.tsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport * as React from \"react\";\nimport { WindowTitleBarContext } from \"./windowTitleBarContext\";\nimport { storeManager, Actions, getStore } from \"./stores/windowTitleBarStore\";\nimport \"../../assets/css/windowTitleBar.css\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\nimport { TabProperties } from \"../../types/windowTitleBar\";\nimport { clone } from \"../sdd/Appearance.helpers\";\nimport { Logger } from \"@finsemble/finsemble-api\";\n\ntype BumpElements = {\n\tbumpBy: string;\n\tfixed: string;\n\tabsolute: string;\n\tmonitorFixedAdditions: boolean;\n};\n\ninterface WindowTitleBarShellProps {}\n\ninterface WindowTitleBarShellState {\n\ttabs: TabProperties[];\n\tactiveTab: TabProperties;\n\twindowTitle: string;\n\tinitialized: boolean;\n\talwaysOnTop: boolean;\n\tshowTabs: boolean;\n\tminButton: boolean;\n\tmaxButton: boolean;\n\tcloseButton: boolean;\n\tshowShareButton: boolean;\n\tshowLinkerButton: boolean;\n\tisTopRight: boolean;\n\tdockingEnabled: boolean;\n\talwaysOnTopButton: boolean;\n\tallowDragOnCenterRegion: boolean;\n\tdockingIcon: string;\n\thackScrollbar: boolean;\n\tshowDockingTooltip: boolean;\n\tshowTabRegion: boolean;\n\ttabBarBoundingBox: any;\n\tuseDOMBasedMovement: boolean;\n\tdragHandleName: string;\n\tbumpElements: BumpElements;\n\tadjustContentHeights: boolean;\n}\n\nexport class WindowTitleBarShell extends React.Component<WindowTitleBarShellProps, WindowTitleBarShellState> {\n\tstore?: StoreModel;\n\n\tconstructor(props: WindowTitleBarShellProps) {\n\t\tsuper(props);\n\t\tthis.store = undefined;\n\n\t\tthis.bindCorrectContext();\n\t\tthis.state = {\n\t\t\tactiveTab: FSBL.Clients.WindowClient.getWindowIdentifier() as TabProperties,\n\t\t\tallowDragOnCenterRegion: true,\n\t\t\talwaysOnTop: false,\n\t\t\talwaysOnTopButton: false,\n\t\t\tcloseButton: false,\n\t\t\tdockingEnabled: false,\n\t\t\tdockingIcon: \"\",\n\t\t\thackScrollbar: false,\n\t\t\tinitialized: false,\n\t\t\tisTopRight: false,\n\t\t\tmaxButton: false,\n\t\t\tminButton: false,\n\t\t\tshowDockingTooltip: false,\n\t\t\tshowLinkerButton: false,\n\t\t\tshowShareButton: false,\n\t\t\tshowTabs: false,\n\t\t\tshowTabRegion: false,\n\t\t\ttabs: [],\n\t\t\ttabBarBoundingBox: {},\n\t\t\twindowTitle: \"\",\n\t\t\tuseDOMBasedMovement: true,\n\t\t\tdragHandleName: \"fsbl-drag-handle\",\n\t\t\tbumpElements: {} as BumpElements,\n\t\t\tadjustContentHeights: true,\n\t\t};\n\n\t\tfinsembleWindow.isAlwaysOnTop({}, (err, alwaysOnTop: boolean) => {\n\t\t\tthis.setState({ ...this.state, alwaysOnTop });\n\t\t});\n\n\t\tfinsembleWindow.addEventListener(\"alwaysOnTop\", this.alwaysOnTopListener);\n\t}\n\n\talwaysOnTopListener({ data: { alwaysOnTop } }: any) {\n\t\tthis.setState({ ...this.state, alwaysOnTop });\n\t}\n\n\t/**\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\n\t *\n\t * @memberof WindowTitleBar\n\t */\n\tbindCorrectContext() {\n\t\tthis.onTitleChange = this.onTitleChange.bind(this);\n\t\tthis.onShowDockingToolTip = this.onShowDockingToolTip.bind(this);\n\t\tthis.onToggleDockingIcon = this.onToggleDockingIcon.bind(this);\n\t\tthis.onDockingEnabledChanged = this.onDockingEnabledChanged.bind(this);\n\t\tthis.onAlwaysOnTopChanged = this.onAlwaysOnTopChanged.bind(this);\n\t\tthis.showLinkerButton = this.showLinkerButton.bind(this);\n\t\tthis.isTopRight = this.isTopRight.bind(this);\n\t\tthis.allowDragOnCenterRegion = this.allowDragOnCenterRegion.bind(this);\n\t\tthis.disallowDragOnCenterRegion = this.disallowDragOnCenterRegion.bind(this);\n\t\tthis.setDOMBasedMovement = this.setDOMBasedMovement.bind(this);\n\t\tthis.onShareEmitterChanged = this.onShareEmitterChanged.bind(this);\n\t\tthis.onTabsChanged = this.onTabsChanged.bind(this);\n\t\tthis.onShowTabsChanged = this.onShowTabsChanged.bind(this);\n\t\tthis.onTilingStop = this.onTilingStop.bind(this);\n\t\tthis.onTilingStart = this.onTilingStart.bind(this);\n\t\tthis.resizeDragHandle = this.resizeDragHandle.bind(this);\n\t\tthis.onDoubleClick = this.onDoubleClick.bind(this);\n\t\tthis.alwaysOnTopListener = this.alwaysOnTopListener.bind(this);\n\t\tthis.onInitialized = this.onInitialized.bind(this);\n\t}\n\n\tonInitialized() {\n\t\tthis.store = getStore();\n\t\tthis.store.addListeners(\n\t\t\t[\n\t\t\t\t{ field: \"Main.windowTitle\", listener: this.onTitleChange },\n\t\t\t\t{ field: \"Main.showDockingTooltip\", listener: this.onShowDockingToolTip },\n\t\t\t\t{ field: \"Main.dockingIcon\", listener: this.onToggleDockingIcon },\n\t\t\t\t{ field: \"Main.dockingEnabled\", listener: this.onDockingEnabledChanged },\n\t\t\t\t{ field: \"AlwaysOnTop.show\", listener: this.onAlwaysOnTopChanged },\n\t\t\t\t{ field: \"Linker.showLinkerButton\", listener: this.showLinkerButton },\n\t\t\t\t{ field: \"Sharer.emitterEnabled\", listener: this.onShareEmitterChanged },\n\t\t\t\t{ field: \"isTopRight\", listener: this.isTopRight },\n\t\t\t\t{ field: \"tabs\", listener: this.onTabsChanged },\n\t\t\t\t{ field: \"showTabs\", listener: this.onShowTabsChanged },\n\t\t\t\t{ field: \"hackScrollbar\", listener: this.onShowTabsChanged },\n\t\t\t\t{ field: \"Main.useDOMBasedMovement\", listener: this.setDOMBasedMovement },\n\t\t\t],\n\t\t\t() => {}\n\t\t);\n\n\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.startTilingOrTabbing\", this.disallowDragOnCenterRegion);\n\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.stopTilingOrTabbing\", this.allowDragOnCenterRegion);\n\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.cancelTilingOrTabbing\", this.allowDragOnCenterRegion);\n\n\t\tthis.onStoreChange();\n\t\tthis.setState({\n\t\t\tinitialized: true,\n\t\t});\n\t}\n\n\tonStoreChange() {\n\t\tlet activeIdentifier = finsembleWindow.identifier as TabProperties;\n\t\tactiveIdentifier.title = this.store?.getValue({\n\t\t\tfield: \"Main.windowTitle\",\n\t\t});\n\n\t\tthis.setState({\n\t\t\twindowTitle: this.store?.getValue({ field: \"Main.windowTitle\" }),\n\t\t\tminButton: !this.store?.getValue({ field: \"Minimize.hide\" }),\n\t\t\tmaxButton: !this.store?.getValue({ field: \"Maximize.hide\" }),\n\t\t\tcloseButton: !this.store?.getValue({ field: \"Close.hide\" }),\n\t\t\tshowLinkerButton: this.store?.getValue({\n\t\t\t\tfield: \"Linker.showLinkerButton\",\n\t\t\t}),\n\t\t\tshowShareButton: this.store?.getValue({\n\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t}),\n\t\t\tisTopRight: this.store?.getValue({ field: \"isTopRight\" }),\n\t\t\talwaysOnTopButton: this.store?.getValue({\n\t\t\t\tfield: \"AlwaysOnTop.show\",\n\t\t\t}),\n\t\t\tshowTabs: this.store?.getValue({ field: \"showTabs\" }),\n\t\t\thackScrollbar: this.store?.getValue({ field: \"hackScrollbar\" }),\n\t\t\tbumpElements: this.store?.getValue({ field: \"bumpElements\" }),\n\t\t\tadjustContentHeights: this.store?.getValue({ field: \"adjustContentHeights\" }),\n\t\t\ttabs: [activeIdentifier], // array of tabs for this window\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\t// Goal: If a user gets focus into the title bar (if they Alt+Tab or Cmd+Tab into the window),\n\t\t// we want to let get into the rest of the component using the keyboard alone. The UX for\n\t\t// this task will be to seemingly TAB from the title bar into the window, if possible.\n\t\t// Code: If the user presses the \"Tab\" key, move their focus to the browser view\n\t\twindow.addEventListener(\"keydown\", (e) => {\n\t\t\tif (e.key === \"Tab\") {\n\t\t\t\t// This magic moves focus to a browserView, if one exists\n\t\t\t\tfinsembleWindow.focus();\n\t\t\t}\n\t\t});\n\t\tlet header = document.getElementsByClassName(\"fsbl-header\")[0];\n\n\t\t//Increase the marginTop of the body if the title bar is injected into the component.\n\t\tif (header) {\n\t\t\tconst body = document.getElementsByTagName(\"body\")[0];\n\t\t\tlet marginTop = this.getActualComputedStylesFromStylesheets(body, \"margin-top\");\n\t\t\tmarginTop = marginTop ? marginTop : \"0px\";\n\t\t\tconst height = window.getComputedStyle(header).getPropertyValue(\"height\");\n\t\t\tdocument.body.style.marginTop = `calc(${marginTop} + ${height})`;\n\t\t}\n\t\tthis.resizeDragHandle();\n\t\tthis.hackScrollbar();\n\t\tstoreManager.addInitializedListener(this.onInitialized);\n\t\tstoreManager.initialize();\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.resizeDragHandle();\n\t\tthis.hackScrollbar();\n\t\tthis.maybeAdjustWindow();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstoreManager.removeInitializedListener(this.onInitialized);\n\t\tif (this.state.initialized) {\n\t\t\tthis.store?.removeListeners(\n\t\t\t\t[\n\t\t\t\t\t{ field: \"Main.windowTitle\", listener: this.onTitleChange },\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Main.showDockingTooltip\",\n\t\t\t\t\t\tlistener: this.onShowDockingToolTip,\n\t\t\t\t\t},\n\t\t\t\t\t{ field: \"Main.dockingIcon\", listener: this.onToggleDockingIcon },\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Main.dockingEnabled\",\n\t\t\t\t\t\tlistener: this.onDockingEnabledChanged,\n\t\t\t\t\t},\n\t\t\t\t\t{ field: \"AlwaysOnTop.show\", listener: this.onAlwaysOnTopChanged },\n\t\t\t\t\t{ field: \"Linker.showLinkerButton\", listener: this.showLinkerButton },\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t\t\t\tlistener: this.onShareEmitterChanged,\n\t\t\t\t\t},\n\t\t\t\t\t{ field: \"isTopRight\", listener: this.isTopRight },\n\t\t\t\t\t{ field: \"tabs\", listener: this.onTabsChanged },\n\t\t\t\t\t{ field: \"showTabs\", listener: this.onShowTabsChanged },\n\t\t\t\t],\n\t\t\t\t() => {},\n\t\t\t\t() => {}\n\t\t\t);\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"DockingService.startTilingOrTabbing\", this.disallowDragOnCenterRegion);\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"DockingService.stopTilingOrTabbing\", this.allowDragOnCenterRegion);\n\t\t}\n\t}\n\n\tsetDOMBasedMovement(err: StandardError, response: any) {\n\t\tif (response && response.hasOwnProperty(\"value\")) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tuseDOMBasedMovement: response.value,\n\t\t\t\t\tdragHandleName: response.value ? \"fsbl-drag-handle\" : \"fsbl-drag-handle-native-movement\",\n\t\t\t\t},\n\t\t\t\tthis.resizeDragHandle\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * When we are not tiling/tabbing, we want to allow the user to drag the window around via any available space in the tab-region. This function allows that.\n\t */\n\tallowDragOnCenterRegion() {\n\t\tthis.setState({\n\t\t\tallowDragOnCenterRegion: true,\n\t\t});\n\t}\n\n\t/**\n\t * When we are tiling/tabbing, we do not want to allow any window to be dragged around and moved.\n\t */\n\tdisallowDragOnCenterRegion() {\n\t\tthis.setState({\n\t\t\tallowDragOnCenterRegion: false,\n\t\t});\n\t}\n\n\t/**\n\t * When tiling start, we want to find the dragHandler and hide it\n\t */\n\tonTilingStart() {\n\t\tlet dragHandle = document.querySelector(`.${this.state.dragHandleName}`);\n\t\tif (dragHandle) {\n\t\t\tdragHandle.classList.add(\"hidden\");\n\t\t}\n\t}\n\n\t/**\n\t * When tiling stops, we want to find the dragHandler and re-show it\n\t */\n\tonTilingStop() {\n\t\tlet dragHandle = document.querySelector(`.${this.state.dragHandleName}.hidden`);\n\t\tif (dragHandle) {\n\t\t\tdragHandle.classList.remove(\"hidden\");\n\t\t}\n\t}\n\n\t/**\n\t * Called whenever a tab is dropped on a non tab area.\n\t * It won't be called when dropped on a tab that handles handle the event.\n\t */\n\tonDropHandler() {\n\t\tFSBL.Clients.RouterClient.transmit(\"DockingService.cancelTilingOrTabbing\", {});\n\t}\n\n\t/**\n\t * Called when user double clicks on drag handle\n\t */\n\tonDoubleClick() {\n\t\t// Actions.clickMaximize checks the window state\n\t\t// and toggles between maximize and minimize.\n\t\tActions.clickMaximize();\n\t}\n\n\t_setOnMouseUpAndDownHandlers(element: HTMLDivElement) {\n\t\t// if do double click it will invoke MouseDown and MouseUp events which could break the window bounds. So wait a 100ms for moving or resizing the window.\n\t\tlet isMousePressed = false;\n\t\tconst handleMouseDown = (event: MouseEvent) => {\n\t\t\t// prevent a second call if the button hasn't been unpressed\n\t\t\tif (isMousePressed) return;\n\n\t\t\tisMousePressed = true;\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (isMousePressed) {\n\t\t\t\t\tFSBL.Clients.WindowClient.startMovingWindow(event);\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t};\n\t\tconst handleMouseUp = () => {\n\t\t\t// prevent a call if the button hasn't been pressed\n\t\t\tif (!isMousePressed) return;\n\n\t\t\tisMousePressed = false;\n\t\t\tFSBL.Clients.WindowClient.stopMovingWindow();\n\t\t};\n\n\t\telement.onmousedown = handleMouseDown;\n\t\telement.onmouseup = handleMouseUp;\n\t}\n\n\tmakeDragHandle(fsblHeader: Element, dragHandleCssClass: string): HTMLElement {\n\t\tlet dragHandle = document.createElement(\"div\");\n\t\tdragHandle.className = dragHandleCssClass;\n\t\tthis._setOnMouseUpAndDownHandlers(dragHandle);\n\n\t\tdragHandle.ondblclick = () => {\n\t\t\tthis.onDoubleClick();\n\t\t};\n\t\tfsblHeader.insertBefore(dragHandle, fsblHeader.firstChild);\n\t\twindow.addEventListener(\"resize\", () => {\n\t\t\tthis.resizeDragHandle();\n\t\t});\n\n\t\treturn dragHandle;\n\t}\n\n\tdragHandleBoundsForShowTabs(startingBounds: DOMRect): DOMRect {\n\t\t// If there is more than one tab, then the drag area is the padding-left of fsbl-header-right\n\t\t// See .fsbl-tabs-multiple in the css\n\t\tif (this.state.tabs.length > 1) {\n\t\t\tconst headerRight = document.querySelector(\".fsbl-header-right\");\n\t\t\tif (headerRight) {\n\t\t\t\tconst computedStyle = getComputedStyle(headerRight);\n\t\t\t\t// override the bounds.width with the paddingLeft amount\n\t\t\t\treturn {\n\t\t\t\t\t// The spread operator only uses own properties; simply\n\t\t\t\t\t// spreading \"headerRight.getBoundingClientRect()\" will result in an\n\t\t\t\t\t// empty object being spread. Clone the object to be sure all\n\t\t\t\t\t// values are spread\n\t\t\t\t\t...clone(headerRight.getBoundingClientRect()),\n\t\t\t\t\twidth: parseInt(computedStyle.paddingLeft, 10),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn startingBounds;\n\t\t\t}\n\t\t} else {\n\t\t\t// If tabs are not enabled, then the remained of fsbl-header-center beyond the tabs\n\t\t\t// is the draggable area. This assumes left aligned tabs.\n\t\t\tconst fsblHeaderCenter = document.querySelector(\".fsbl-header-center\");\n\t\t\tconst bounds = fsblHeaderCenter?.getBoundingClientRect() ?? startingBounds;\n\t\t\tconst tabRegionWrapperDiv = fsblHeaderCenter?.querySelector(\".tab-region-wrapper div.fsbl-header-title\");\n\t\t\tif (tabRegionWrapperDiv) {\n\t\t\t\tconst theTabBounds = tabRegionWrapperDiv.getBoundingClientRect();\n\t\t\t\t// Calculate the right portion\n\t\t\t\treturn {\n\t\t\t\t\t...bounds,\n\t\t\t\t\tleft: bounds.left + theTabBounds.width,\n\t\t\t\t\twidth: bounds.width - theTabBounds.width,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn bounds;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * The dragger is an absolutely positioned element that is superimposed on the actual area that we'd like to drag.\n\t * This is necessary due to a bug in Chromium. Effectively, we need the dragger to change its left position and width\n\t * to match the intended drag area. These dimensions can change whenever the header is re-rendered (for instance when\n\t * changing mode from tabbing to non-tabbing). Dimensions can also change when the window itself is resized (due to natural\n\t * css).\n\t *\n\t * Can remove all of the cq-drag and cq-no-drag because Chromium bug is fixed\n\t * Remove fsbl-drag-region, it is no longer needed\n\t * Hide the dragHandle during drop operations, so that it doesn't interfere\n\t */\n\tresizeDragHandle() {\n\t\ttry {\n\t\t\tconst fsblHeader = document.querySelector(\".fsbl-header\");\n\t\t\t// If there isn't an FSBLHeader then there doesn't need to be a drag handle.\n\t\t\tif (!fsblHeader) return;\n\n\t\t\tconst dragHandleCssClass = this.state.useDOMBasedMovement\n\t\t\t\t? \"fsbl-drag-handle\"\n\t\t\t\t: \"fsbl-drag-handle-native-movement\";\n\n\t\t\tconst dragHandleToRemoveClass = this.state.useDOMBasedMovement\n\t\t\t\t? \"fsbl-drag-handle-native-movement\"\n\t\t\t\t: \"fsbl-drag-handle\";\n\n\t\t\t// Create the dragger if it doesn't already exist\n\t\t\tlet dragHandle =\n\t\t\t\t(document.querySelector(`.${dragHandleCssClass}`) as HTMLElement) ??\n\t\t\t\tthis.makeDragHandle(fsblHeader, dragHandleCssClass);\n\n\t\t\t// When the titlebar starts up, useDOMBasedMovement will have a default value that is not the same as the config value\n\t\t\t// When the value from the config propagates down to the UI, we need to make sure the old drag handle is removed in place of the new\n\t\t\tconst dragHandleToRemove = document.querySelector(`.${dragHandleToRemoveClass}`) as HTMLElement;\n\t\t\tif (dragHandleToRemove) dragHandleToRemove.parentNode?.removeChild(dragHandleToRemove);\n\n\t\t\t// Set the height of the dragHandle to match the height of the window title bar\n\t\t\t// Do this every time through the render loop just in case a customer builds a\n\t\t\t// header bar with dynamic height!\n\t\t\tlet bounds = fsblHeader.getBoundingClientRect();\n\n\t\t\tdragHandle.style.height = `${bounds.height - 5}px`; // Subtract 5 pixels from height in order to make room for resize window cursor at top edge of window\n\t\t\tdragHandle.style.marginTop = `${-bounds.height + 5}px`; // Negative margin pulls the drag handle up over the fixed header\n\n\t\t\t// Start logic for determining where to place our dragHandle\n\t\t\tif (this.state.showTabs) {\n\t\t\t\tbounds = this.dragHandleBoundsForShowTabs(bounds);\n\t\t\t} else {\n\t\t\t\t// If tabs are not enabled, then the entire center is the drag area\n\t\t\t\tlet fsblHeaderCenter = document.querySelector(\".fsbl-header-center\");\n\t\t\t\tif (fsblHeaderCenter) bounds = fsblHeaderCenter.getBoundingClientRect();\n\t\t\t}\n\n\t\t\tif (bounds) {\n\t\t\t\tdragHandle.style.left = `${bounds.left}px`;\n\t\t\t\tdragHandle.style.width = `${bounds.width}px`;\n\t\t\t}\n\n\t\t\t// Add an event listener to hide the drag-handler when tiling is started\n\t\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.startTilingOrTabbing\", this.onTilingStart);\n\n\t\t\t// Add an event listener to show the drag-handler when tiling is stopped or cancelled\n\t\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.stopTilingOrTabbing\", this.onTilingStop);\n\t\t\tFSBL.Clients.RouterClient.addListener(\"DockingService.cancelTilingOrTabbing\", this.onTilingStop);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\n\t/**\n\t * Whether the component's config allows for the linker.\n\t * @param {} err\n\t * @param {*} response\n\t */\n\tshowLinkerButton(err: StandardError, response: any) {\n\t\tthis.setState({ showLinkerButton: response.value });\n\t}\n\n\t/**\n\t * Whether the window is the top-right-most window in a group of windows. If so, it renders a minimize icon for the whole group.\n\t * @param {} err\n\t * @param {*} response\n\t */\n\tisTopRight(err: StandardError, response: any) {\n\t\tthis.setState({ isTopRight: response.value });\n\t}\n\n\t/**\n\t * @param {*} err\n\t * @param {*} response\n\t */\n\tonTitleChange(err: StandardError, response: any) {\n\t\tlet { tabs } = this.state;\n\t\tlet myIdentifier = FSBL.Clients.WindowClient.getWindowIdentifier();\n\n\t\ttabs = tabs.map((el) => {\n\t\t\tif (!el.windowName && el.name) el.windowName = el.name;\n\t\t\tif (!el.name && el.windowName) el.name = el.windowName;\n\t\t\treturn el;\n\t\t});\n\n\t\tconst myIndex = tabs.findIndex((el: TabProperties) => el.name === myIdentifier.windowName);\n\t\tif (myIndex === -1) return;\n\n\t\tlet myTab = tabs[myIndex] || {};\n\t\tmyTab.title = response.value;\n\t\ttabs.splice(myIndex, 1, myTab);\n\n\t\tthis.setState({\n\t\t\twindowTitle: response.value,\n\t\t\ttabs: tabs,\n\t\t});\n\t}\n\n\t/**\n\t * The next few methods are store change handlers that sync local state with the store's state.\n\t */\n\tonShowDockingToolTip(err: StandardError, response: any) {\n\t\tthis.setState({ showDockingTooltip: response.value });\n\t}\n\n\tonToggleDockingIcon(err: StandardError, response: any) {\n\t\tthis.setState({ dockingIcon: response.value });\n\t}\n\n\tonDockingEnabledChanged(err: StandardError, response: any) {\n\t\tthis.setState({ dockingEnabled: response.value });\n\t}\n\n\tonAlwaysOnTopChanged(err: StandardError, response: any) {\n\t\tthis.setState({ alwaysOnTopButton: response.value });\n\t}\n\n\tonStoreChanged(newState: WindowTitleBarShellState) {\n\t\tthis.setState(newState);\n\t}\n\n\tonShareEmitterChanged(err: StandardError, response: any) {\n\t\tthis.setState({ showShareButton: response.value });\n\t}\n\n\tonTabsChanged(err: StandardError, response: any) {\n\t\tthis.setState({\n\t\t\ttabs: response.value,\n\t\t});\n\t}\n\n\tonShowTabsChanged(err: StandardError, response: any) {\n\t\t// If we are not showing tabs, then it means that it is a non tabbed window\n\t\t// therefore we need to check whether we have a window title contained in\n\t\t// .div.fsbl-tab-editor so that we can edit it.\n\t\tif (!response.value) {\n\t\t\tlet tabEditor = document.querySelector(\"div.fsbl-tab-editor\") as HTMLDivElement;\n\t\t\tif (tabEditor) {\n\t\t\t\t// we set this z-index value to be slightly higher than the drag handle\n\t\t\t\t// to make the editor dragable AND double-clickcable\n\t\t\t\ttabEditor.style.zIndex = \"2147483647\";\n\t\t\t\t// We add the mousedown and mouseup functions to the tab editor\n\t\t\t\t// so that on a single mouse down it allows the user to drag the\n\t\t\t\t// window on both the .fsbl-drag-handle and the .fsbl-tab-editor\n\t\t\t\tthis._setOnMouseUpAndDownHandlers(tabEditor);\n\t\t\t}\n\t\t}\n\t\tthis.setState({\n\t\t\tshowTabs: response.value,\n\t\t});\n\t}\n\n\t// Hack the window's scrollbar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\n\t// This is turned on by default. Set \"Window Manager.hackScrollbar: false\" to turn it off\n\thackScrollbar() {\n\t\tif (this.state.hackScrollbar) {\n\t\t\tconst htmlElement = document.querySelector(\"html\");\n\t\t\tif (htmlElement) htmlElement.style.overflowY = \"hidden\";\n\t\t\tconst bodyElement = document.querySelector(\"body\");\n\t\t\tif (bodyElement) bodyElement.style.overflowY = \"auto\";\n\t\t}\n\t}\n\n\t/**\n\t * Gets all the CSS styles in the document that match the element.\n\t *\n\t * @param element\n\t */\n\tgetStylesForElement(element: HTMLElement) {\n\t\tconst matchedStyles: any[] = [];\n\t\tconst styleSheetList = document.styleSheets;\n\t\tfor (let i = 0; i < styleSheetList.length; i++) {\n\t\t\tconst cssRuleList = styleSheetList.item(i)?.cssRules as CSSRuleList;\n\t\t\tfor (let j = 0; j < cssRuleList.length; j++) {\n\t\t\t\tconst rule = cssRuleList.item(j) as CSSStyleRule;\n\t\t\t\tif (element.matches(rule.selectorText)) {\n\t\t\t\t\t// No type available for StylePropertyMap\n\t\t\t\t\tmatchedStyles.push((rule as any).styleMap);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn matchedStyles;\n\t}\n\n\t/**\n\t * Get the Actual computed style values for an element native alternative is getComputedStyle() can return used\n\t * values for some specific values eg a height specified in a % value will return a px value. Setting style with\n\t * used values can lead to issues when resizing and potentially break application design.\n\t *\n\t * Note: this only takes into account the style from styles sheets and not inline styles on the element itself\n\t */\n\tgetActualComputedStylesFromStylesheets(element: HTMLElement, property: string): string {\n\t\t/**\n\t\t * List of used values taken from here:\n\t\t * https://developer.mozilla.org/en-US/docs/Web/CSS/used_value#difference_from_computed_value\n\t\t */\n\t\tconst listOfUsedValues = [\n\t\t\t\"background-position\",\n\t\t\t\"bottom\",\n\t\t\t\"left\",\n\t\t\t\"right\",\n\t\t\t\"top\",\n\t\t\t\"height\",\n\t\t\t\"width\",\n\t\t\t\"margin-bottom\",\n\t\t\t\"margin-left\",\n\t\t\t\"margin-right\",\n\t\t\t\"margin-top\",\n\t\t\t\"min-height\",\n\t\t\t\"min-width\",\n\t\t\t\"padding-bottom\",\n\t\t\t\"padding-left\",\n\t\t\t\"padding-right\",\n\t\t\t\"padding-top\",\n\t\t\t\"text-indent\",\n\t\t];\n\n\t\tif (!listOfUsedValues.includes(property)) {\n\t\t\treturn window.getComputedStyle(element, null).getPropertyValue(property);\n\t\t}\n\n\t\tconst matchedStyles = this.getStylesForElement(element);\n\t\tlet styleString = \"\";\n\t\tfor (const style of matchedStyles) {\n\t\t\tstyle.forEach((value: any, key: any) => {\n\t\t\t\t// Only works for\n\t\t\t\tif (value[0].value) {\n\t\t\t\t\tstyleString = `${styleString} ${key}: ${value[0].value}${value[0].unit ?? \"\"}; `;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst div = document.createElement(\"div\");\n\t\tdiv.setAttribute(\"style\", styleString);\n\t\treturn div.style.getPropertyValue(property);\n\t}\n\n\tbeginAdjustment() {\n\t\tconst bodyElement = document.querySelector(\"body\");\n\t\tconst header = document.getElementsByClassName(\"fsbl-header\")[0];\n\n\t\tif (bodyElement) {\n\t\t\tconst headerHeight = window.getComputedStyle(header, null).getPropertyValue(\"height\");\n\n\t\t\t/**\n\t\t\t * Get the application defined value height and modify it when available rather than change it completely\n\t\t\t * with what FSBL needs\n\t\t\t */\n\t\t\tlet bodyHeight = this.getActualComputedStylesFromStylesheets(bodyElement, \"height\");\n\t\t\tbodyHeight = bodyHeight ? bodyHeight : \"100vh\";\n\n\t\t\t// Make sure it's a unit value - global values and keyword value can (probably) take care of themselves\n\t\t\tif (bodyHeight.match(/^\\d./)) {\n\t\t\t\tconst inlineHeight = bodyElement.style.getPropertyValue(\"height\");\n\t\t\t\tlet calculatedHeight = `calc(${bodyHeight} - ${headerHeight})`;\n\t\t\t\t// Use inline specified height if it exists and do not recursively apply the same value\n\t\t\t\tif (inlineHeight && calculatedHeight != inlineHeight) {\n\t\t\t\t\tcalculatedHeight = `calc(${inlineHeight} - ${headerHeight})`;\n\t\t\t\t}\n\t\t\t\tbodyElement.style.height = calculatedHeight;\n\t\t\t}\n\t\t}\n\t\tconst headerHeight = window.getComputedStyle(header, null).getPropertyValue(\"height\");\n\t\tif (header) {\n\t\t\tif (this.state.adjustContentHeights) this.adjustTopLevelHeight(Number(headerHeight.split(\"px\")[0]));\n\n\t\t\tthis.bumpElements(this.state.bumpElements);\n\t\t\tif (this.state.bumpElements.monitorFixedAdditions) this.monitorFixedPositionedElements(headerHeight);\n\t\t} else {\n\t\t\tLogger.system.error(\"WindowTitleBarShell.maybeAdjustWindow:could not find the header.\");\n\t\t}\n\t}\n\n\t/**\n\t * Once document is ready and header is injected into DOM, begin adjusting the height of elements and bump fixed/absolute elements\n\t */\n\tasync maybeAdjustWindow() {\n\t\t// don't start pushing stuff down until page is ready. This is needed for preloaded titlebars because they can happen before the page is ready.\n\t\tif (document.readyState === \"complete\") {\n\t\t\tthis.beginAdjustment();\n\t\t} else {\n\t\t\tdocument.addEventListener(\"readystatechange\", () => {\n\t\t\t\tif (document.readyState === \"complete\") this.beginAdjustment();\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Monitors the DOM for mutations, if the added node has a fixed position with a top style of 0px, it will be bumped by the title bar height.\n\t * @param headerHeight the height of the header\n\t */\n\tmonitorFixedPositionedElements(headerHeight: string) {\n\t\tconst options = {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t};\n\n\t\t/**\n\t\t * MutationObserver interface provides the ability to watch for\n\t\t * changes to the DOM tree using the observe method\n\t\t */\n\t\tconst mutationObserver = new MutationObserver((mutations) => {\n\t\t\tconst possibleZeros = [\"0\", \"0px\", 0];\n\t\t\tmutations.forEach((mutation) => {\n\t\t\t\tmutation.addedNodes.forEach((node: any) => {\n\t\t\t\t\tif (!node.className?.includes(\"bumped-element\")) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst nodeStyle = window.getComputedStyle(node);\n\t\t\t\t\t\t\tconst topStyle = nodeStyle.top;\n\n\t\t\t\t\t\t\t// make sure node is fixed, has top style set to 0, and has not been bumped\n\t\t\t\t\t\t\tif (nodeStyle.position === \"fixed\" && possibleZeros.includes(topStyle)) {\n\t\t\t\t\t\t\t\tnode.style.top = this.calculateBumpValue(\"0Positioned\", topStyle, headerHeight);\n\t\t\t\t\t\t\t\tnode.classList.add(\"bumped-element\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t// Expected to error if the node is not an Element e.g text is not of type Element\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t// We observe the body and do not disconnect because there may be other elements that are dynamically loaded, such as a dialogue menu.\n\t\tmutationObserver.observe(document.body, options);\n\t}\n\n\t/**\n\t * Calls functions to bump fixed and/or absolute elements if configured to do so.\n\t * @param {object} config bumpElements object\n\t */\n\tbumpElements(config: BumpElements) {\n\t\tif (config?.bumpBy && config?.bumpBy !== \"0px\") {\n\t\t\tif (config.fixed) this.bumpFixedElements(config);\n\t\t\tif (config.absolute) this.bumpAbsoluteElements(config);\n\t\t}\n\t}\n\n\t/**\n\t * Set the max height of each element to be the height of the parent container\n\t * subtracted by the height of the previous element. This forces the element to either obey its\n\t * predefined height or stay within the bounds of the max height.\n\t * @param {object} elem HTML element\n\t * @param {number} prev height of previous sibling\n\t * @param maxHeight\n\t */\n\tprivate adjust(elem: HTMLElement, prev: number, maxHeight: string = \"100vh\") {\n\t\tif (\n\t\t\t!elem.className.includes(\"adjusted-element\") &&\n\t\t\t// workaround to fix dnd scrim disappearing\n\t\t\t!elem.className.includes(\"fsbl-share-scrim\")\n\t\t) {\n\t\t\tconst clientHeight = elem.clientHeight ? elem.clientHeight : 0;\n\t\t\tconst offsetHeight = elem.offsetHeight ? elem.offsetHeight : 0;\n\t\t\tconst offset = offsetHeight - clientHeight;\n\t\t\tconst adjustPrev = prev + offset;\n\n\t\t\telem.style.maxHeight = `calc(${maxHeight} - ${adjustPrev}px)`;\n\t\t\telem.classList.add(\"adjusted-element\");\n\t\t}\n\t}\n\n\t/**\n\t * Adjusts the top level content view height to be its height subtracted by the headerHeight and its\n\t * maxHeight to be 100vh subtracted by the total height of the previous elements.\n\t * The height of the previous elements are added to this calculation if they are not fixed or absolute.\n\t * @param {number} headerHeight the height of the header\n\t */\n\tprivate adjustTopLevelHeight(headerHeight: number) {\n\t\tconst elems: any = document.body.querySelectorAll(\":scope > *:not(#FSBLHeader, .fsbl-header)\");\n\t\tlet prev = headerHeight;\n\n\t\telems.forEach((elem: any) => {\n\t\t\tthis.adjust(elem, prev);\n\t\t\t// Heights of fixed and absolute positioned elements are not added to the total heights of previous elements\n\t\t\t// since they are removed from the document flow and can be positioned anywhere in the page.\n\t\t\tif (elem.style.position !== \"fixed\" && elem.style.position !== \"absolute\") prev = prev + elem.offsetHeight;\n\n\t\t\tthis.adjustContentHeight(elem);\n\t\t});\n\t}\n\n\t/**\n\t * Adjusts the content view height to be maximum the parent container height subtracted by the total height elements above it.\n\t * The height of the previous elements are added to this calculation if they are not fixed or absolute.\n\t * @param {object} headerNode window titlebar\n\t */\n\tprivate adjustContentHeight(headerNode: any) {\n\t\tconst elem: any = headerNode;\n\t\tconst maxHeight = `100%`;\n\n\t\tconst { children } = elem;\n\t\tconst len = children.length;\n\t\tlet prev = 0;\n\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\t// Fixed and absolute positioned elements are ignored since they are removed from the document flow.\n\t\t\tif (children[i].style.position !== \"fixed\" && children[i].style.position !== \"absolute\") {\n\t\t\t\tthis.adjust(children[i], prev, maxHeight);\n\t\t\t\tprev = prev + children[i].offsetHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calculates value to bump element by. If 'all' return top style and header height, if '0Positioned' return header height\n\t * @param type Whether all elements are being bumped by the header height and their top style or just header height\n\t * @param topStyle Element top value\n\t * @param bumpBy Value to bump element by\n\t * @returns Top style for element\n\t */\n\tprivate calculateBumpValue(type: string, topStyle: string, bumpBy: string) {\n\t\tlet topVal = topStyle;\n\t\tconst possibleZeros = [\"0\", \"0px\", 0];\n\t\tif (type == \"all\") {\n\t\t\ttopVal = `calc(${topStyle} + ${bumpBy})`;\n\t\t} else if (type == \"0Positioned\" && possibleZeros.includes(topStyle)) {\n\t\t\ttopVal = bumpBy;\n\t\t}\n\t\treturn topVal;\n\t}\n\n\t/**\n\t * Recursively traverse through the HTML document and return an array of the top level elements\n\t * and elements with static parents\n\t * @param {object} element The HTML element\n\t * @param {array} acc accumulator\n\t * @returns {array} array top level elements and elements with static parents\n\t *\n\t */\n\tprivate traverseHtml(element: any, acc: any[] = []) {\n\t\tconst elems: any = element.children;\n\t\tconst len = elems.length;\n\t\tif (!len) {\n\t\t\tacc.push(element);\n\t\t} else {\n\t\t\tfor (let i = 0; i < len; i++) {\n\t\t\t\tconst style = window.getComputedStyle(elems[i], null);\n\t\t\t\tif (style.getPropertyValue(\"position\") == \"static\") {\n\t\t\t\t\tacc = this.traverseHtml(elems[i], acc);\n\t\t\t\t} else {\n\t\t\t\t\tacc.push(elems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn acc;\n\t}\n\n\t/**\n\t * Bumps elements with fixed positioning down by the configured amount.\n\t * @private\n\t */\n\tprivate bumpFixedElements(params: any) {\n\t\tlet { fixed, bumpBy } = params;\n\n\t\tconst getFixedElements = (nodes: any) => {\n\t\t\tconst fixedElems: any[] = [];\n\t\t\tnodes.forEach((node: any) => {\n\t\t\t\tconst style = window.getComputedStyle(node, null);\n\t\t\t\tif (style.getPropertyValue(\"position\") == \"fixed\") fixedElems.push(node);\n\t\t\t\tconst elems = node.querySelectorAll(\"*\");\n\t\t\t\telems.forEach((elem: any) => {\n\t\t\t\t\tconst childStyle = window.getComputedStyle(elem, null);\n\t\t\t\t\tif (childStyle.getPropertyValue(\"position\") == \"fixed\") fixedElems.push(elem);\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn fixedElems;\n\t\t};\n\n\t\tconst selector = \"*:not(#FSBLHeader, .fsbl-header)\";\n\t\t// Get all fixed positioned elements\n\t\tconst elems: any = getFixedElements(document.body.querySelectorAll(`${selector}`));\n\t\tconst len = elems.length;\n\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst style = window.getComputedStyle(elems[i], null);\n\n\t\t\tconst topStyle = style.getPropertyValue(\"top\");\n\t\t\tif (!elems[i].className.includes(\"bumped-element\")) {\n\t\t\t\telems[i].style.top = this.calculateBumpValue(fixed, topStyle, bumpBy);\n\t\t\t\telems[i].classList.add(\"bumped-element\");\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Bumps absolute positioned elements with static parents down by the configured amount.\n\t * @private\n\t */\n\tprivate bumpAbsoluteElements(params: any) {\n\t\tlet { absolute, bumpBy } = params;\n\n\t\tconst selector = \"*:not(#FSBLHeader, .fsbl-header)\";\n\t\t// Get top level absolute positioned elements and elements who have static parents\n\t\tconst elems: any = this.traverseHtml({ children: document.body.querySelectorAll(`:scope > ${selector}`) });\n\t\tconst len = elems.length;\n\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst style = window.getComputedStyle(elems[i], null);\n\n\t\t\tconst topStyle = style.getPropertyValue(\"top\");\n\n\t\t\t// Target absolute positioned elements\n\t\t\tif (style.getPropertyValue(\"position\") == \"absolute\" && !elems[i].className.includes(\"bumped-element\")) {\n\t\t\t\telems[i].style.top = this.calculateBumpValue(absolute, topStyle, bumpBy);\n\t\t\t\telems[i].classList.add(\"bumped-element\");\n\t\t\t}\n\t\t}\n\t}\n\n\trender() {\n\t\tlet showDockingIcon = !this.state.dockingEnabled ? false : this.state.dockingIcon;\n\t\tlet isGrouped = this.state.dockingIcon == \"ejector\";\n\t\tlet showMinimizeIcon = (isGrouped && this.state.isTopRight) || !isGrouped; // If not in a group or if topright in a group\n\t\tlet tabRegionClasses = \"fsbl-tab-area\";\n\t\tlet headerClasses = \"fsbl-header\";\n\n\t\t// If we're showing tabs, we throw these classes on to modify styles.\n\t\tif (this.state.showTabs) {\n\t\t\theaderClasses = `${headerClasses} fsbl-tabs-enabled`;\n\t\t}\n\t\tif (this.state.tabs.length > 1) {\n\t\t\theaderClasses = `${headerClasses} fsbl-tabs-multiple`;\n\t\t}\n\t\tconst context = {\n\t\t\tshowLinkerButton: this.state.showLinkerButton,\n\t\t\tshowShareButton: this.state.showShareButton,\n\t\t\tshowTabRegion: this.state.showTabs,\n\t\t\tshowMinimizeButton: this.state.minButton && showMinimizeIcon,\n\t\t\tshowMaximizeButton: this.state.maxButton,\n\t\t\tonTabDropped: this.allowDragOnCenterRegion,\n\t\t\tshowDockingButton: showDockingIcon,\n\t\t\tshowCloseButton: this.state.closeButton,\n\t\t\tclassName: tabRegionClasses,\n\t\t\tthisWindowTitle: this.state.windowTitle,\n\t\t\tboundingBox: this.state.tabBarBoundingBox,\n\t\t\tlistenForDragOver: !this.state.allowDragOnCenterRegion,\n\t\t\ttabs: this.state.tabs,\n\t\t\tonTitleUpdated: this.resizeDragHandle,\n\t\t\tshowAlwaysOnTopButton: this.state.alwaysOnTopButton && showMinimizeIcon,\n\t\t\tshowTabs: this.state.showTabs,\n\t\t\talwaysOnTop: this.state.alwaysOnTop,\n\t\t\tuseDOMBasedMovement: this.state.useDOMBasedMovement,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className={headerClasses} onDrop={this.onDropHandler.bind(this)}>\n\t\t\t\t{this.state.initialized && (\n\t\t\t\t\t<WindowTitleBarContext.Provider value={context}>{this.props.children}</WindowTitleBarContext.Provider>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -17,6 +17,9 @@ interface IState {
|
|
|
17
17
|
hoverState: string;
|
|
18
18
|
title: string;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* This component is pretty basic. It just takes a bunch of props and renders them.
|
|
22
|
+
*/
|
|
20
23
|
export default class Tab extends React.Component<IProps, IState> {
|
|
21
24
|
tabbingState: boolean;
|
|
22
25
|
constructor(props: IProps);
|
|
@@ -8,6 +8,9 @@ const isPointInBox = (point, box) => {
|
|
|
8
8
|
box.right = box.left + box.width;
|
|
9
9
|
return point.x > box.left && point.x < box.right && point.y < box.bottom && point.y > box.top;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* This component is pretty basic. It just takes a bunch of props and renders them.
|
|
13
|
+
*/
|
|
11
14
|
export default class Tab extends React.Component {
|
|
12
15
|
constructor(props) {
|
|
13
16
|
super(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/components/windowTitleBar/components/center/Tab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,YAAY,GAAG,CACpB,KAGC,EACD,GAOC,EACS,EAAE;IACZ,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACnD,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IACjD,OAAO,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AAC/F,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/components/windowTitleBar/components/center/Tab.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { FinsembleHoverDetector } from \"../../../legacyControls/FinsembleHoverDetector\";\nimport { Title } from \"../windowTitle\";\n\nconst isPointInBox = (\n\tpoint: {\n\t\tx: number;\n\t\ty: number;\n\t},\n\tbox: {\n\t\ttop: number;\n\t\tleft: number;\n\t\tbottom?: number;\n\t\tright?: number;\n\t\twidth: number;\n\t\theight: number;\n\t}\n): boolean => {\n\tif (!box.bottom) box.bottom = box.top + box.height;\n\tif (!box.right) box.right = box.left + box.width;\n\treturn point.x > box.left && point.x < box.right && point.y < box.bottom && point.y > box.top;\n};\ninterface IProps {\n\tdraggable: string;\n\tclassName: string;\n\tonClick?: () => void;\n\tonDragStart: (e: any, identifier: any) => void;\n\tonDrop: (e?: React.DragEvent<HTMLDivElement>) => void;\n\tonDragEnd: (e?: any) => void;\n\tonTabClose: (e: React.MouseEvent<HTMLDivElement>) => void;\n\tonTabDraggedOver: (e: any, tabDraggedOver: any) => void;\n\tlistenForDragOver: boolean;\n\ttabWidth: number;\n\ttitleWidth: number;\n\twindowIdentifier: any;\n}\ninterface IState {\n\thoverState: string;\n\ttitle: string;\n}\n\n/**\n * This component is pretty basic. It just takes a bunch of props and renders them.\n */\nexport default class Tab extends React.Component<IProps, IState> {\n\ttabbingState: boolean;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.onDragOver = this.onDragOver.bind(this);\n\t\tthis.onDragLeave = this.onDragLeave.bind(this);\n\n\t\tthis.state = {\n\t\t\thoverState: \"false\",\n\t\t\ttitle: \"\",\n\t\t};\n\t\tthis.tabbingState = false;\n\t}\n\n\tonDragLeave() {\n\t\tthis.tabbingState = false;\n\t\tFSBL.Clients.RouterClient.publish(\"Finsemble.AmTabbing\", false);\n\t}\n\n\tonDragOver(e: React.DragEvent<HTMLDivElement>) {\n\t\tconst boundingBox = (this.refs.Me as HTMLElement).getBoundingClientRect();\n\t\tif (this.crossedMidline(e, boundingBox)) {\n\t\t\tthis.props.onTabDraggedOver(e, this.props.windowIdentifier);\n\t\t}\n\t\tif (!this.tabbingState) {\n\t\t\tFSBL.Clients.RouterClient.publish(\"Finsemble.AmTabbing\", true);\n\t\t\tthis.tabbingState = true;\n\t\t}\n\t}\n\n\tcrossedMidline(e: React.DragEvent<HTMLDivElement>, box: any) {\n\t\treturn isPointInBox({ x: e.nativeEvent.clientX, y: e.nativeEvent.clientY }, box);\n\t}\n\n\thoverAction(newHoverState: string) {\n\t\tthis.setState({ hoverState: newHoverState });\n\t}\n\n\trender() {\n\t\tconst style = {\n\t\t\twidth: this.props.tabWidth,\n\t\t};\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref=\"Me\"\n\t\t\t\tonDrop={this.props.onDrop}\n\t\t\t\tonDragStart={(e) => {\n\t\t\t\t\tthis.props.onDragStart(e, this.props.windowIdentifier);\n\t\t\t\t}}\n\t\t\t\tonDragEnd={this.props.onDragEnd}\n\t\t\t\tdraggable={true}\n\t\t\t\tclassName={this.props.className}\n\t\t\t\tdata-hover={this.state.hoverState}\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t{this.props.listenForDragOver && (\n\t\t\t\t\t<div className=\"tab-drop-region\" onDragOver={this.onDragOver} onDragLeave={this.onDragLeave}></div>\n\t\t\t\t)}\n\t\t\t\t<FinsembleHoverDetector edge=\"top\" hoverAction={this.hoverAction.bind(this)} />\n\t\t\t\t<Title\n\t\t\t\t\ttitleWidth={this.props.titleWidth}\n\t\t\t\t\twindowIdentifier={this.props.windowIdentifier}\n\t\t\t\t\tonClick={this.props.onClick}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"fsbl-tab-close\"\n\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tthis.props.onTabClose(e);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<i className=\"ff-close\"></i>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -9,28 +9,105 @@ export declare class TabList extends React.Component<TabListProps, TabListState>
|
|
|
9
9
|
};
|
|
10
10
|
onWindowResizeThrottled: (this: Window, ev: UIEvent) => any;
|
|
11
11
|
constructor(props: TabListProps);
|
|
12
|
+
/**
|
|
13
|
+
* Make sure that _this_ is correct inside of our event handlers.
|
|
14
|
+
*/
|
|
12
15
|
bindCorrectContext(): void;
|
|
13
16
|
getTabWidth(params?: GetTabWidthParams): number;
|
|
17
|
+
/**
|
|
18
|
+
* Resize handler. Calculates the space that the center-region is taking up. May be used to scale tabs proportionally.
|
|
19
|
+
*/
|
|
14
20
|
onWindowResize(): void;
|
|
15
21
|
findTabIndex(tab: TabProperties): number;
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* Function that's called when this component fires the onDragStart event, this will start the tiling or tabbing process
|
|
25
|
+
*
|
|
26
|
+
* @param e The SyntheticEvent created by React when the startdrag event is called
|
|
27
|
+
* @memberof windowTitleBar
|
|
28
|
+
*/
|
|
16
29
|
startDrag(e: React.DragEvent<HTMLDivElement>, windowIdentifier: WindowIdentifier): void;
|
|
30
|
+
/**
|
|
31
|
+
* Called when the react component detects a drop (or stop drag, which is equivalent)
|
|
32
|
+
*
|
|
33
|
+
* @param e The SyntheticEvent created by React when the stopdrag event is called
|
|
34
|
+
* @memberof windowTitleBar
|
|
35
|
+
*/
|
|
17
36
|
stopDrag(e: React.DragEvent<HTMLDivElement>): void;
|
|
37
|
+
/**
|
|
38
|
+
* Helper function that will pull data from a drop event, parse it, and return it.
|
|
39
|
+
* @param {event} e
|
|
40
|
+
*/
|
|
18
41
|
extractWindowIdentifier(e: React.DragEvent<HTMLElement>): any;
|
|
42
|
+
/**
|
|
43
|
+
* Called when a drop event occurs on the tab region. We (hope) that this came from a tab. Could be a share icon, an image, something else - that's why we check to see if the identifier exists before doing anything.
|
|
44
|
+
* @param {event} e
|
|
45
|
+
*/
|
|
19
46
|
drop(e?: React.DragEvent<HTMLElement>): void;
|
|
20
47
|
isTabRegionOverflowing(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Event handler for when a user wheels inside of the tab region. We translate the deltaY that the event provides into horizontal movement. The translateX value that we return will be used in the render method below.
|
|
50
|
+
* @param {event} e
|
|
51
|
+
* This should probably be refactored into separate handlers for scroll and mousewheel to account for the differences in event properties.
|
|
52
|
+
*/
|
|
21
53
|
onMouseWheel(e: React.WheelEvent): void;
|
|
54
|
+
/**
|
|
55
|
+
* Scrolls to our active tab.
|
|
56
|
+
*/
|
|
22
57
|
scrollToActiveTab(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Scrolls to the first tab in our list of tabs.
|
|
60
|
+
*/
|
|
23
61
|
scrollToFirstTab(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Scrolls to the last tab in our list of tabs
|
|
64
|
+
*/
|
|
24
65
|
scrollToLastTab(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Function that will horizontally scroll the tab region so that the right edge of the tab lines up with the right edge of the tab region.
|
|
68
|
+
* @param {} tab
|
|
69
|
+
*/
|
|
25
70
|
scrollToTab(tab: TabProperties): void;
|
|
26
71
|
setTabListTranslateX(translateX: number): void;
|
|
72
|
+
/**
|
|
73
|
+
* Someone is dragging _something_ over the tab region. We respond by rendering the ghost tab.
|
|
74
|
+
* @param {event} e
|
|
75
|
+
*/
|
|
27
76
|
dragOver(e: React.DragEvent): void;
|
|
77
|
+
/**
|
|
78
|
+
* Triggered when the user moves their mouse out of the tabRegion after a dragOver event happens. When they leave, we hide our placeholder tab.
|
|
79
|
+
* @param {event} e
|
|
80
|
+
*/
|
|
28
81
|
dragLeave(e: React.DragEvent<HTMLDivElement>): void;
|
|
82
|
+
/**
|
|
83
|
+
* Set to a timeout. An event is sent to the RouterClient which will be handled by the drop handler on the window.
|
|
84
|
+
* In the event that a drop handler never fires to stop tiling or tabbing, this will take care of it.
|
|
85
|
+
*
|
|
86
|
+
* @memberof windowTitleBar
|
|
87
|
+
*/
|
|
29
88
|
cancelTabbing(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Basically exists just to keep the render method clean. Gives conditional classes to the active tab.
|
|
91
|
+
* @param {tab} tab
|
|
92
|
+
*/
|
|
30
93
|
getTabClasses(tab: TabProperties): string;
|
|
31
94
|
onTabDraggedOver(e: React.DragEvent<HTMLElement>, tabDraggedOver: TabProperties): void;
|
|
95
|
+
/**
|
|
96
|
+
* OnClick handler for the close button on individual tabs.
|
|
97
|
+
* @PLACEHOLDER will interact with tabbing API
|
|
98
|
+
* @param {*} tab
|
|
99
|
+
*/
|
|
32
100
|
onTabClosed(identifier: TabProperties): void;
|
|
101
|
+
/**
|
|
102
|
+
* drop handler for the tab region.
|
|
103
|
+
* @param {*} tab
|
|
104
|
+
*/
|
|
33
105
|
onTabAdded(identifier: TabProperties, newIndex: number | undefined): void;
|
|
106
|
+
/**
|
|
107
|
+
* OnClick handler for individual tabs.
|
|
108
|
+
* @PLACEHOLDER will interact with tabbing API
|
|
109
|
+
* @param {*} tab
|
|
110
|
+
*/
|
|
34
111
|
setActiveTab(tab: TabProperties): void;
|
|
35
112
|
onTabsChanged(err: StandardError, response: {
|
|
36
113
|
value: TabProperties[];
|
|
@@ -38,11 +115,24 @@ export declare class TabList extends React.Component<TabListProps, TabListState>
|
|
|
38
115
|
onTabListTranslateChanged(err: StandardError, response: {
|
|
39
116
|
value: number;
|
|
40
117
|
}): void;
|
|
118
|
+
/**
|
|
119
|
+
* Change active tab to the next one on either its left or right
|
|
120
|
+
*
|
|
121
|
+
* @param direction the direction the tab should change to (1 = right, -1 = left)
|
|
122
|
+
*/
|
|
123
|
+
changeTab(direction: 1 | -1): void;
|
|
41
124
|
UNSAFE_componentWillMount(): void;
|
|
42
125
|
componentDidMount(): void;
|
|
43
126
|
componentWillUnmount(): void;
|
|
44
127
|
hoverAction(newHoverState: string): void;
|
|
45
128
|
render(): JSX.Element;
|
|
129
|
+
/**
|
|
130
|
+
* Function to render the title. Helps keep the render code clean.
|
|
131
|
+
*/
|
|
46
132
|
renderTitle(): JSX.Element;
|
|
133
|
+
/**
|
|
134
|
+
* Renders the array of tabs.
|
|
135
|
+
* @param {*} props
|
|
136
|
+
*/
|
|
47
137
|
renderTabs(): JSX.Element[];
|
|
48
138
|
}
|