@openfin/workspace 22.5.25 → 23.0.1-alpha.75ce533e

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.
Files changed (66) hide show
  1. package/client-api/src/integrations/microsoft.utils.d.ts +6 -6
  2. package/client-api/src/notifications.d.ts +2 -2
  3. package/client-api/src/shapes/index.d.ts +1 -1
  4. package/client-api/src/shapes/notifications.d.ts +1 -1
  5. package/client-api-platform/src/api/controllers/theme-storage-controller-store.d.ts +16 -1
  6. package/client-api-platform/src/api/controllers/theme-storage-controller.d.ts +42 -25
  7. package/client-api-platform/src/api/dock.d.ts +5 -3
  8. package/client-api-platform/src/api/language.d.ts +1 -1
  9. package/client-api-platform/src/api/pages/open-pages.d.ts +2 -2
  10. package/client-api-platform/src/api/theming.d.ts +12 -0
  11. package/client-api-platform/src/api/utils.d.ts +11 -0
  12. package/client-api-platform/src/init/override-callback/page-defaults.d.ts +1 -1
  13. package/client-api-platform/src/init/override-callback/view-components.d.ts +1 -1
  14. package/client-api-platform/src/init/override-callback/view-defaults.d.ts +2 -1
  15. package/client-api-platform/src/init/override-callback/view-options.d.ts +1 -1
  16. package/client-api-platform/src/init/theming.d.ts +5 -1
  17. package/client-api-platform/src/shapes.d.ts +159 -27
  18. package/common/src/api/pages/idb.d.ts +2 -4
  19. package/common/src/api/protocol/browser.d.ts +13 -11
  20. package/common/src/api/protocol/notifications.d.ts +8 -0
  21. package/common/src/api/protocol/shapes/workspace.d.ts +8 -0
  22. package/common/src/api/protocol/workspace-platform.d.ts +30 -25
  23. package/common/src/api/protocol/workspace.d.ts +2 -2
  24. package/common/src/api/provider.d.ts +1 -1
  25. package/common/src/api/shapes/notifications.d.ts +1 -0
  26. package/common/src/api/storefront.d.ts +5 -5
  27. package/common/src/api/theming.d.ts +39 -17
  28. package/common/src/utils/application.d.ts +7 -0
  29. package/common/src/utils/enterprise-menu.d.ts +1 -1
  30. package/common/src/utils/find-in-page/findInPageChannel.d.ts +37 -0
  31. package/common/src/utils/find-in-page/showFindInPageHandler.d.ts +2 -0
  32. package/common/src/utils/global-context-menu.d.ts +8 -1
  33. package/common/src/utils/landing-page.d.ts +1 -1
  34. package/common/src/utils/layout.d.ts +38 -10
  35. package/common/src/utils/logger.d.ts +131 -0
  36. package/common/src/utils/menu-window-provider.d.ts +13 -9
  37. package/common/src/utils/merge-deep.d.ts +1 -0
  38. package/common/src/utils/modal-bounds.d.ts +1 -1
  39. package/common/src/utils/namespaced-local-storage.d.ts +5 -4
  40. package/common/src/utils/popup-window.d.ts +16 -0
  41. package/common/src/utils/route.d.ts +5 -1
  42. package/common/src/utils/shared-emitter.d.ts +4 -4
  43. package/common/src/utils/theming.d.ts +6 -0
  44. package/common/src/utils/types.d.ts +1 -1
  45. package/common/src/utils/window.d.ts +20 -9
  46. package/common/src/utils/workspace-modals.d.ts +1 -1
  47. package/dock3/src/api/protocol.d.ts +6 -1
  48. package/dock3/src/api/utils.d.ts +11 -0
  49. package/dock3/src/shapes/enterprise.d.ts +25 -1
  50. package/dock3/src/shapes/shapes.d.ts +13 -1
  51. package/externals.report.json +18 -8
  52. package/home.js +2 -1
  53. package/home.js.LICENSE.txt +1 -0
  54. package/home.js.map +1 -1
  55. package/index.js +2 -1
  56. package/index.js.LICENSE.txt +1 -0
  57. package/index.js.map +1 -1
  58. package/notifications.js +2 -1
  59. package/notifications.js.LICENSE.txt +1 -0
  60. package/notifications.js.map +1 -1
  61. package/package.json +7 -5
  62. package/search-api/src/shapes.d.ts +22 -1
  63. package/store.js +2 -1
  64. package/store.js.LICENSE.txt +1 -0
  65. package/store.js.map +1 -1
  66. package/common/src/brand/default-brand.d.ts +0 -8
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Logger Utility for OpenFin Workspace Monorepo
3
+ *
4
+ * Provides structured, contextual logging with consistent formatting
5
+ * across all workspaces and modules.
6
+ */
7
+ export interface LogData {
8
+ [key: string]: any;
9
+ }
10
+ export interface Logger {
11
+ debug: (method: string, message: string, data?: LogData | (() => LogData)) => void;
12
+ info: (method: string, message: string, data?: LogData | (() => LogData)) => void;
13
+ warn: (method: string, message: string, data?: LogData | (() => LogData)) => void;
14
+ error: (method: string, message: string, data?: LogData | (() => LogData)) => void;
15
+ }
16
+ /**
17
+ * Configuration for the logger
18
+ */
19
+ export interface LoggerConfig {
20
+ /** Include timestamp in logs (default: true) */
21
+ includeTimestamp?: boolean;
22
+ /** Custom prefix for logs */
23
+ customPrefix?: string;
24
+ /**
25
+ * Stringify log data before passing to console (default: true).
26
+ * When true, objects are serialized as JSON strings for safer logging.
27
+ * When false, raw objects are passed to console, allowing expandable/inspectable
28
+ * objects in browser dev tools.
29
+ *
30
+ * @example
31
+ * To disable safe stringify for local development, you can:
32
+ * 1. Set this option per-logger: createLogger('MyContext', { stringifyData: false })
33
+ * 2. Or call setGlobalStringifyEnabled(false) once at app startup
34
+ */
35
+ stringifyData?: boolean;
36
+ }
37
+ /**
38
+ * Enable or disable safe stringify globally for all loggers.
39
+ * Useful for local development when you want expandable objects in browser dev tools.
40
+ *
41
+ * This overrides the build-time LOG_STRINGIFY setting at runtime.
42
+ * Individual logger config (stringifyData option) takes precedence over this setting.
43
+ *
44
+ * @param enabled - Whether to stringify log data
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // Override build-time setting at runtime:
49
+ * import { setGlobalStringifyEnabled } from 'common/src/utils/logger';
50
+ *
51
+ * // Disable stringify to get expandable objects in console
52
+ * setGlobalStringifyEnabled(false);
53
+ * ```
54
+ */
55
+ export declare const setGlobalStringifyEnabled: (enabled: boolean) => void;
56
+ /**
57
+ * Get the current global stringify setting.
58
+ */
59
+ export declare const getGlobalStringifyEnabled: () => boolean;
60
+ /**
61
+ * Create a structured logger for a specific context
62
+ *
63
+ * @param context - The context identifier (workspace, module, or component name)
64
+ * @param config - Optional configuration for the logger
65
+ * @returns Enhanced logger instance
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const logger = createLogger('browser.TabList');
70
+ *
71
+ * logger.info('addTab', 'Adding new tab', { pageId: '123' });
72
+ * logger.error('addTab', 'Failed to add tab', { error: err.message });
73
+ * ```
74
+ */
75
+ export declare const createLogger: (context: string, config?: LoggerConfig) => Logger;
76
+ /**
77
+ * Create a logger with performance monitoring capabilities
78
+ * Useful for tracking execution times and performance metrics
79
+ */
80
+ export declare const createPerformanceLogger: (context: string, config?: LoggerConfig) => {
81
+ /**
82
+ * Start a performance timer
83
+ */
84
+ startTimer: (timerId: string, method: string, message: string, data?: LogData) => void;
85
+ /**
86
+ * Clear a specific timer without logging
87
+ */
88
+ clearTimer: (timerId: string) => void;
89
+ /**
90
+ * End a performance timer and log the duration
91
+ */
92
+ endTimer: (timerId: string, method: string, message: string, data?: LogData) => void;
93
+ debug: (method: string, message: string, data?: LogData | (() => LogData)) => void;
94
+ info: (method: string, message: string, data?: LogData | (() => LogData)) => void;
95
+ warn: (method: string, message: string, data?: LogData | (() => LogData)) => void;
96
+ error: (method: string, message: string, data?: LogData | (() => LogData)) => void;
97
+ };
98
+ export type EnhancedLogger = ReturnType<typeof createPerformanceLogger>;
99
+ /**
100
+ * Middleware function for wrapping async operations with logging
101
+ */
102
+ export declare const withLogging: <T extends any[], R>(logger: Logger, method: string, operation: (...args: T) => Promise<R> | R) => (...args: T) => Promise<R>;
103
+ /**
104
+ * Legacy logger instance for backwards compatibility.
105
+ * Use `createLogger` for new code to get structured, contextual logging.
106
+ *
107
+ * @deprecated Use createLogger() instead for new code
108
+ */
109
+ export declare const log: {
110
+ /**
111
+ * Calls console.debug with provided parameters and stringifies JS objects prior to logging.
112
+ * Only logs when LOG_DEBUG is enabled.
113
+ */
114
+ debug: (...args: unknown[]) => void;
115
+ /**
116
+ * Calls console.info with provided parameters and stringifies JS objects prior to logging
117
+ */
118
+ info: (...args: unknown[]) => void;
119
+ /**
120
+ * Calls console.warn with provided parameters and stringifies JS objects prior to logging
121
+ */
122
+ warn: (...args: unknown[]) => void;
123
+ /**
124
+ * Calls console.error with provided parameters and stringifies JS objects prior to logging
125
+ */
126
+ error: (...args: unknown[]) => void;
127
+ /**
128
+ * Calls console.trace with provided parameters and stringifies JS objects prior to logging
129
+ */
130
+ trace: (...args: unknown[]) => void;
131
+ };
@@ -2,9 +2,13 @@ import type OpenFin from '@openfin/core';
2
2
  import { ResponseModalContent } from '../../../common/src/utils/menu-config';
3
3
  import type { OptionalExceptFor } from '../../../common/src/utils/types';
4
4
  type MenuEventTypes = {
5
- response: [ModalResponseEvent];
6
- ready: [OpenFin.Identity];
7
- update: [string, Partial<OpenFin.Bounds>, string];
5
+ 'response': [ModalResponseEvent];
6
+ 'ready': [OpenFin.Identity];
7
+ 'update': [string, Partial<OpenFin.Bounds>, string];
8
+ 'modal-opened': [string];
9
+ 'modal-closed': [string];
10
+ 'search-menu-opening': [string];
11
+ 'search-menu-closed': [string];
8
12
  };
9
13
  export interface ModalResponseEvent {
10
14
  data: {
@@ -17,12 +21,12 @@ export interface ModalResponseEvent {
17
21
  }
18
22
  export declare const menuEvents: {
19
23
  emit: <EventKey extends keyof MenuEventTypes>(event: EventKey, ...payload: MenuEventTypes[EventKey]) => Promise<void>;
20
- addListener: <EventKey_1 extends keyof MenuEventTypes>(event: EventKey_1, listener: (...payload: MenuEventTypes[EventKey_1]) => void) => void;
21
- addListenerWithUUID: (uuid: string) => <EventKey_1 extends keyof MenuEventTypes>(event: EventKey_1, listener: (...payload: MenuEventTypes[EventKey_1]) => void) => void;
22
- removeListener: <EventKey_2 extends keyof MenuEventTypes>(event: EventKey_2, listener: (...payload: MenuEventTypes[EventKey_2]) => void) => void;
23
- once: <EventKey_3 extends keyof MenuEventTypes>(event: EventKey_3, listener: (...payload: MenuEventTypes[EventKey_3]) => void) => void;
24
+ addListener: <EventKey extends keyof MenuEventTypes>(event: EventKey, listener: (...payload: MenuEventTypes[EventKey]) => void) => void;
25
+ addListenerWithUUID: (uuid: string) => <EventKey extends keyof MenuEventTypes>(event: EventKey, listener: (...payload: MenuEventTypes[EventKey]) => void) => void;
26
+ removeListener: <EventKey extends keyof MenuEventTypes>(event: EventKey, listener: (...payload: MenuEventTypes[EventKey]) => void) => void;
27
+ once: <EventKey extends keyof MenuEventTypes>(event: EventKey, listener: (...payload: MenuEventTypes[EventKey]) => void) => void;
24
28
  };
25
- export declare const emitMenuResponse: (data: ModalResponseEvent['data']) => Promise<void>;
29
+ export declare const emitMenuResponse: (data: ModalResponseEvent["data"]) => Promise<void>;
26
30
  type WindowOptionsWithBounds = OptionalExceptFor<OpenFin.WindowOptions, 'name' | 'url'> & {
27
31
  top: number;
28
32
  left: number;
@@ -49,6 +53,6 @@ export declare function createMenuPosition(windowOptions: OptionalExceptFor<Open
49
53
  }>;
50
54
  export declare function showChildWindow({ options, parameters }: ShowChildOptions): Promise<OpenFin.Window>;
51
55
  export declare const waitForModalResponse: ({ options, content, parameters }: ResponseModalOptions) => Promise<{
52
- data: ModalResponseEvent['data'];
56
+ data: ModalResponseEvent["data"];
53
57
  }>;
54
58
  export {};
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Deep merge a set of source objects into a single target object.
3
+ * Arrays are concatenated rather than overwritten.
3
4
  * @param target the target object to merge sources into.
4
5
  * @param sources the source objects to merge into the target. (FIFO)
5
6
  */
@@ -16,7 +16,7 @@ export declare const getCenterOfParentWindowMonitor: (parentWindowIdentity?: Ope
16
16
  * @param centerOnMonitor whether the modal should be centered on the monitor
17
17
  * @returns the bounds for where the modal is to be displayed
18
18
  */
19
- export declare const getResponseModalBounds: (modalOptions: Pick<ResponseModalConfig['windowOptions'], 'defaultWidth' | 'defaultHeight'>, parentWindowIdentity?: OpenFin.Identity, centerOnMonitor?: boolean) => Promise<OpenFin.Bounds>;
19
+ export declare const getResponseModalBounds: (modalOptions: Pick<ResponseModalConfig["windowOptions"], "defaultWidth" | "defaultHeight">, parentWindowIdentity?: OpenFin.Identity, centerOnMonitor?: boolean) => Promise<OpenFin.Bounds>;
20
20
  export declare function getResponseModalBoundsAndCenterParentIfModalOffScreen(modalOptions: Parameters<typeof getResponseModalBounds>[0], parentWindowIdentity?: OpenFin.Identity, centerOnMonitor?: boolean, relativeBounds?: boolean): Promise<OpenFin.Bounds>;
21
21
  /**
22
22
  * Adjusts the given bounds to be within the closest monitor's available bounds if they are offscreen.
@@ -1,4 +1,5 @@
1
- export declare const createNamespacedLocalStorage: <TKey extends string>(namespace: string) => Pick<Storage, 'setItem' | 'getItem' | 'removeItem'>;
2
- export declare const setItem: (key: string, value: string) => void;
3
- export declare const getItem: (key: string) => string;
4
- export declare const removeItem: (key: string) => void;
1
+ import LocalStorageKey from './local-storage-key';
2
+ export declare const setItem: (key: LocalStorageKey, value: string) => void;
3
+ export declare const getItem: (key: LocalStorageKey) => string;
4
+ export declare const removeItem: (key: LocalStorageKey) => void;
5
+ export declare const createNamespacedLocalStorage: <TKey extends string>(namespace: string) => Pick<Storage, "setItem" | "getItem" | "removeItem">;
@@ -3,6 +3,12 @@ import { UserMenuParams } from '../../../common/src/utils/menu';
3
3
  import { OptionalExceptFor } from '../../../common/src/utils/types';
4
4
  import { AnchorBehavior } from '../../../client-api-platform/src/api/context-menu';
5
5
  import { Site, SiteAction } from '../../../client-api-platform/src/shapes';
6
+ export type ViewMoreButton = {
7
+ type: 'view-more-result';
8
+ id: string;
9
+ providerId: string;
10
+ };
11
+ export type SelectableResult = Site | ViewMoreButton;
6
12
  export declare enum SaveMenuType {
7
13
  Save = "Save",
8
14
  SaveAs = "SaveAs"
@@ -76,6 +82,7 @@ export type BookmarkDialogChannelMessage = BaseEnterpriseMenuChannelMessage & {
76
82
  export type ZoomControlsDialogPayload = {
77
83
  selectedViewIdentity?: OpenFin.Identity;
78
84
  zoomPercent?: number;
85
+ openedViaMouseClick?: boolean;
79
86
  };
80
87
  export type ZoomControlsDialogChannelMessage = BaseEnterpriseMenuChannelMessage & {
81
88
  type: EnterpriseMenuType.ZoomControls;
@@ -116,8 +123,17 @@ export type SearchMenuChannelResponse = {
116
123
  } | {
117
124
  type: 'keyboard-event';
118
125
  keyboardEvent: BrowserSearchMenuKeyboardEvent;
126
+ } | {
127
+ type: 'focused-changed';
128
+ payload: SelectableResult;
119
129
  } | {
120
130
  type: 'search-provider-changed';
131
+ } | {
132
+ type: 'all-providers-results-announcement';
133
+ message: string;
134
+ } | {
135
+ type: 'single-provider-results-announcement';
136
+ message: string;
121
137
  };
122
138
  export declare function showPopupWin<T extends keyof UserMenuParams>(parentWindow: OpenFin.Window, params: UserMenuParams[T], windowOpts: OpenFin.PopupOptions): Promise<OpenFin.PopupResult>;
123
139
  export {};
@@ -29,11 +29,13 @@ declare enum BrowserRoute {
29
29
  EnterpriseContextMenu = "/context-menu/",
30
30
  EnterpriseBookmarkDialog = "/bookmark-dialog/",
31
31
  EnterpriseAboutPage = "/popup-menu/about/",
32
+ StorageProxy = "/storage-proxy",
32
33
  DropdownMenu = "/dropdown-menu/",
33
34
  EnterpriseDock = "/dock/",
34
35
  ZoomControlsDialog = "/zoom-controls-dialog/",
35
36
  DesktopSignalsModal = "/popup-menu/desktop-signals-modal/",
36
- IntentsResolverModal = "/popup-menu/intents-resolver-modal/"
37
+ IntentsResolverModal = "/popup-menu/intents-resolver-modal/",
38
+ FindInPageModal = "/popup-menu/find-in-page-modal/"
37
39
  }
38
40
  declare const PageRoute: {
39
41
  Browser: BrowserRoute.Browser;
@@ -50,11 +52,13 @@ declare const PageRoute: {
50
52
  EnterpriseContextMenu: BrowserRoute.EnterpriseContextMenu;
51
53
  EnterpriseBookmarkDialog: BrowserRoute.EnterpriseBookmarkDialog;
52
54
  EnterpriseAboutPage: BrowserRoute.EnterpriseAboutPage;
55
+ StorageProxy: BrowserRoute.StorageProxy;
53
56
  DropdownMenu: BrowserRoute.DropdownMenu;
54
57
  EnterpriseDock: BrowserRoute.EnterpriseDock;
55
58
  ZoomControlsDialog: BrowserRoute.ZoomControlsDialog;
56
59
  DesktopSignalsModal: BrowserRoute.DesktopSignalsModal;
57
60
  IntentsResolverModal: BrowserRoute.IntentsResolverModal;
61
+ FindInPageModal: BrowserRoute.FindInPageModal;
58
62
  Home: WorkspaceRoute.Home;
59
63
  HomeSearch: WorkspaceRoute.HomeSearch;
60
64
  HomePagesRename: WorkspaceRoute.HomePagesRename;
@@ -5,12 +5,12 @@ export default function makeSharedEmitter<EventMap extends {
5
5
  [key: string | number]: any[];
6
6
  }>(id: string): {
7
7
  emit: <EventKey extends keyof EventMap>(event: EventKey, ...payload: EventMap[EventKey]) => Promise<void>;
8
- addListener: <EventKey_1 extends keyof EventMap>(event: EventKey_1, listener: (...payload: EventMap[EventKey_1]) => void) => void;
8
+ addListener: <EventKey extends keyof EventMap>(event: EventKey, listener: (...payload: EventMap[EventKey]) => void) => void;
9
9
  /**
10
10
  * Creates a listener for a particular UUID instead of ApplicationUUID.Workspace.
11
11
  * @param uuid The UUID of the application to subscribe to.
12
12
  */
13
- addListenerWithUUID: (uuid: string) => <EventKey_1 extends keyof EventMap>(event: EventKey_1, listener: (...payload: EventMap[EventKey_1]) => void) => void;
14
- removeListener: <EventKey_2 extends keyof EventMap>(event: EventKey_2, listener: (...payload: EventMap[EventKey_2]) => void) => void;
15
- once: <EventKey_3 extends keyof EventMap>(event: EventKey_3, listener: (...payload: EventMap[EventKey_3]) => void) => void;
13
+ addListenerWithUUID: (uuid: string) => <EventKey extends keyof EventMap>(event: EventKey, listener: (...payload: EventMap[EventKey]) => void) => void;
14
+ removeListener: <EventKey extends keyof EventMap>(event: EventKey, listener: (...payload: EventMap[EventKey]) => void) => void;
15
+ once: <EventKey extends keyof EventMap>(event: EventKey, listener: (...payload: EventMap[EventKey]) => void) => void;
16
16
  };
@@ -1,4 +1,10 @@
1
+ import type OpenFin from '@openfin/core';
1
2
  import { BackgroundLayers, CustomPaletteSet } from '../../../common/src/api/theming';
3
+ export type ColorSchemeValue = 'light' | 'dark' | 'system';
4
+ export type WorkspaceSchemeSetting = 'light' | 'dark' | 'system';
5
+ export type MediaSchemeValue = 'light' | 'dark';
6
+ /** Maps a color scheme to OpenFin native theme preferences. */
7
+ export declare const mapColorSchemeToNativeTheme: (scheme: ColorSchemeValue) => OpenFin.NativeTheme;
2
8
  /**
3
9
  * Parses a CSS color string (hex, rgb(a), or hsl(a)) into a structured RGB string and alpha value.
4
10
  *
@@ -54,5 +54,5 @@ type MissingKeys<T, U> = Exclude<keyof T, U>;
54
54
  * fooChecker(['bar', 'qux', 'baz']); // 'baz' is not assignable to type keyof Foo;
55
55
  * ```
56
56
  */
57
- export declare const makeKeyChecker: <T extends object>() => <K extends (keyof T)[]>(arr: K & (Exclude<keyof T, K[number]> extends never ? unknown : `Error: Missing keys: ${string & Exclude<keyof T, K[number]>}`)) => K;
57
+ export declare const makeKeyChecker: <T extends object>() => <K extends (keyof T)[]>(arr: K & (MissingKeys<T, K[number]> extends never ? unknown : `Error: Missing keys: ${string & MissingKeys<T, K[number]>}`)) => K;
58
58
  export {};
@@ -1,25 +1,27 @@
1
1
  import type OpenFin from '@openfin/core';
2
+ import type { SearchProviderInfo } from '../../../search-api/src/shapes';
2
3
  import { ApplicationUUID } from './application';
3
4
  export declare enum WindowName {
4
5
  Home = "openfin-home",
5
6
  Dock = "openfin-dock",
6
7
  Storefront = "openfin-storefront",
7
8
  HomeInternal = "openfin-home-internal",
8
- BrowserMenu = "openfin-browser-menu",
9
- BrowserSaveMenu = "openfin-browser-save-menu",
10
- DockSaveWorkspaceMenu = "openfin-dock3-save-workspace-menu",
11
9
  BrowserIndicator = "openfin-browser-indicator",
12
10
  BrowserWindow = "internal-generated-window",
13
11
  ClassicWindow = "internal-generated-classic-window",
14
- EnterpriseContextMenu = "openfin-enterprise-context-menu",
15
12
  BrowserAddressSearchPrefix = "openfin-browser-menu-address-search-",
16
- EnterpriseBookmarkDialogWindow = "openfin-enterprise-bookmark-dialog",
17
- DropdownMenu = "openfin-enterprise-dropdown-menu",
18
13
  DockCompanion = "openfin-dock-companion",
19
14
  AICompanionPrefix = "openfin-ai-companion-",
20
- UpdateVersionModal = "here-update-version-modal",
21
- ZoomControlsDialog = "here-zoom-controls-dialog",
22
15
  AboutPageWindow = "here-about-page",
16
+ FindInPageViewPrefix = "here-find-in-page-view-",
17
+ BrowserMenu = "openfin-browser-menu",
18
+ BrowserSaveMenu = "openfin-browser-save-menu",
19
+ DockSaveWorkspaceMenu = "openfin-dock3-save-workspace-menu",
20
+ DropdownMenu = "openfin-enterprise-dropdown-menu",
21
+ EnterpriseContextMenu = "openfin-enterprise-context-menu",
22
+ EnterpriseBookmarkDialogWindow = "openfin-enterprise-bookmark-dialog",
23
+ ZoomControlsDialog = "here-zoom-controls-dialog",
24
+ UpdateVersionModal = "here-update-version-modal",
23
25
  DesktopSignalsModal = "here-desktop-signals-modal",
24
26
  IntentsResolverModal = "here-intents-resolver-modal"
25
27
  }
@@ -141,6 +143,7 @@ export declare function animateSize(width: number, height: number): Promise<void
141
143
  * @returns boolean
142
144
  */
143
145
  export declare const isBrowserWindow: (identity: OpenFin.Identity) => Promise<any>;
146
+ export declare const isModalWindowExceptZoomDialog: (identity: OpenFin.Identity) => boolean;
144
147
  /**
145
148
  * Force document body size. Called when resizing or on scaling changes.
146
149
  */
@@ -154,6 +157,7 @@ export declare function getModalWindows(): Promise<OpenFin.Window[]>;
154
157
  * Returns true if the OpenFin window for the provided identity is running.
155
158
  * */
156
159
  export declare const isWindowRunning: (identity: WindowIdentity) => Promise<boolean>;
160
+ export declare const isApplicationRunning: (uuid: string) => Promise<boolean>;
157
161
  /**
158
162
  * Check if Storefront window is running.
159
163
  * @returns true if the Storefront window is running.
@@ -161,7 +165,7 @@ export declare const isWindowRunning: (identity: WindowIdentity) => Promise<bool
161
165
  export declare const isStorefrontWindowRunning: () => Promise<boolean>;
162
166
  export declare const isDockWindowRunning: () => Promise<boolean>;
163
167
  export declare const isHomeWindowRunning: () => Promise<boolean>;
164
- export declare const isNotificationCenterWindowRunning: () => Promise<boolean>;
168
+ export declare const isNotificationCenterRunning: () => Promise<boolean>;
165
169
  export declare const showAndFocusStorefront: () => Promise<void>;
166
170
  export declare const showAndFocusDock: () => Promise<void>;
167
171
  export declare const getDisableMultiplePagesOption: (identity: WindowIdentity) => Promise<any>;
@@ -173,6 +177,13 @@ export declare const getComponentWindowStatus: () => Promise<{
173
177
  }>;
174
178
  export declare const deserializeWindowBounds: (serialized: string) => OpenFin.WindowBounds | null;
175
179
  export declare const serializeWindowBounds: (bounds: OpenFin.WindowBounds) => string;
180
+ /**
181
+ * Calculates the dynamic height for the home window based on subheader configuration
182
+ * @param baseHeight - The base height for the home window
183
+ * @param subHeaderConfig - The subheader configuration from search provider
184
+ * @returns The calculated height based on missing subheader elements
185
+ */
186
+ export declare const calculateHomeWindowHeight: (baseHeight: number, subHeaderConfig?: SearchProviderInfo["subHeader"]) => number;
176
187
  export declare const getWindowBounds: (window: OpenFin.Window) => Promise<OpenFin.RectangleByEdgePositions>;
177
188
  /**
178
189
  * calculates the percenage of the window that is present within the monitor (float in range 0-1)
@@ -33,7 +33,7 @@ export declare const showUpdateVersionModal: ({ identity, title, description }:
33
33
  identity: OpenFin.Identity;
34
34
  title: string;
35
35
  description: string;
36
- }) => Promise<ModalResponseEvent['data']>;
36
+ }) => Promise<ModalResponseEvent["data"]>;
37
37
  /**
38
38
  * Shows the intents resolver modal and returns the user's selection
39
39
  * @param request - The request containing modal configuration
@@ -1,6 +1,6 @@
1
1
  import type { OpenFin } from '@openfin/core';
2
2
  import { BaseCustomDropdownItem } from '../../../client-api/src/shapes';
3
- import { BookmarkDockEntryPayload, DockEntry, LaunchDockEntryPayload } from '../../../client-api-platform/src/shapes';
3
+ import { BookmarkDockEntryPayload, DockEntry, LaunchDockEntryPayload, Collection } from '../../../client-api-platform/src/shapes';
4
4
  import { Dock3Config, DockCompanionButton } from '../../../dock3/src/shapes';
5
5
  /**
6
6
  * Payload for more menu custom option actions
@@ -37,6 +37,9 @@ export type Dock3ChannelProviderChannelActions = {
37
37
  */
38
38
  export type Dock3ChannelClientChannelActions = {
39
39
  'handle-dock-config-updated': (payload: Dock3Config) => void;
40
+ 'navigate-content-menu': (payload: {
41
+ targetId: string;
42
+ }) => void;
40
43
  };
41
44
  /**
42
45
  * @internal
@@ -59,6 +62,8 @@ export type EnterpriseDockChannelProviderChannelActions = Dock3ChannelProviderCh
59
62
  'remove-favorite-entry': (entry: DockEntry) => void;
60
63
  'add-favorite-entry': (entry: DockEntry) => void;
61
64
  'more-menu-custom-option-clicked': (payload: MoreMenuCustomOptionPayload) => Promise<void>;
65
+ 'refresh-dock-collection-menu': (collections: Collection[]) => Promise<void>;
66
+ 'launch-collection': (collection: Collection) => void;
62
67
  };
63
68
  /**
64
69
  * These are channel actions registered by the client (enterprise dock)
@@ -0,0 +1,11 @@
1
+ import type { CompanionDockConfig } from '../shapes/enterprise';
2
+ import type { DockAllowedWindowOptions } from '../shapes/shapes';
3
+ export declare const getSnapZone: (config: CompanionDockConfig | unknown, options?: DockAllowedWindowOptions) => {
4
+ enabled: boolean;
5
+ threshold?: number;
6
+ locationPreference?: Array<"top" | "bottom">;
7
+ } | {
8
+ enabled: boolean;
9
+ threshold: number;
10
+ locationPreference: readonly ["top", "bottom"];
11
+ };
@@ -1,10 +1,16 @@
1
1
  import { Point } from '../../../common/src/utils/window';
2
2
  import { Dock3Button, Dock3Config } from './shapes';
3
+ import { Collection } from '../../../client-api-platform/src/shapes';
3
4
  export type { EnterpriseDockChannelClient, EnterpriseDockChannelProvider } from '../api/protocol';
4
5
  /**
5
6
  * @internal
6
7
  */
7
- export type DockCompanionButton = Exclude<Dock3Button, 'store'> | 'bookmarks' | 'searchShortcut';
8
+ export type DockCompanionButton = Exclude<Dock3Button, 'store'> | 'bookmarks' | 'searchShortcut' | 'collectionMenu';
9
+ /**
10
+ * @internal
11
+ * Supported context menu template items for the dock companion window
12
+ */
13
+ export type DockContextMenuItem = 'snapToTop' | 'snapToBottom' | 'inspect';
8
14
  /**
9
15
  * @internal
10
16
  */
@@ -19,4 +25,22 @@ export type CompanionDockConfig = Omit<Dock3Config, 'defaultDockButtons'> & {
19
25
  baseUrl?: string;
20
26
  defaultDockButtons?: DockCompanionButton[];
21
27
  windowType?: 'enterprise';
28
+ collectionMenu?: Collection[];
29
+ /**
30
+ * Experimental snapzone configuration for the dock companion
31
+ */
32
+ experimental?: {
33
+ snapZone?: {
34
+ enabled: boolean;
35
+ threshold?: number;
36
+ locationPreference?: Array<'top' | 'bottom'>;
37
+ };
38
+ };
39
+ /**
40
+ * Context menu options for the dock companion window
41
+ */
42
+ contextMenuOptions?: {
43
+ enabled: boolean;
44
+ template?: DockContextMenuItem[];
45
+ };
22
46
  };
@@ -75,4 +75,16 @@ export interface Dock3Config {
75
75
  };
76
76
  };
77
77
  }
78
- export type DockAllowedWindowOptions = Partial<Pick<OpenFin.PlatformWindowOptions, 'defaultCentered' | 'saveWindowState' | 'taskbarIconGroup' | 'defaultTop' | 'defaultLeft'>>;
78
+ export type DockAllowedWindowOptions = Partial<Pick<OpenFin.PlatformWindowOptions, 'defaultCentered' | 'saveWindowState' | 'taskbarIconGroup' | 'defaultTop' | 'defaultLeft'>> & {
79
+ experimental?: {
80
+ snapZone?: {
81
+ enabled: boolean;
82
+ threshold?: number;
83
+ locationPreference?: Array<'top' | 'bottom'>;
84
+ };
85
+ };
86
+ contextMenuOptions?: {
87
+ enabled?: boolean;
88
+ template?: Array<'snapToTop' | 'snapToBottom' | 'inspect'>;
89
+ };
90
+ };
@@ -1,6 +1,8 @@
1
1
  {
2
- "openfin-notifications/dist/client/without-auto-launch": [
2
+ "@openfin/notifications": [
3
3
  {
4
+ "type": "explicit",
5
+ "version": "2.14.0",
4
6
  "packageName": "client-api/package.json",
5
7
  "issuer": "client-api/src/notifications.ts"
6
8
  }
@@ -8,7 +10,7 @@
8
10
  "@openfin/microsoft365": [
9
11
  {
10
12
  "type": "explicit",
11
- "version": "^1.0.1",
13
+ "version": "^1.1.0",
12
14
  "packageName": "client-api/package.json",
13
15
  "issuer": "client-api/src/integrations/microsoft.ts"
14
16
  }
@@ -21,7 +23,7 @@
21
23
  "issuer": "client-api/src/internal/providers.ts"
22
24
  },
23
25
  {
24
- "type": "root-implicit",
26
+ "type": "explicit",
25
27
  "version": "3.0.3",
26
28
  "packageName": "common/package.json",
27
29
  "issuer": "common/src/utils/color-linking.ts"
@@ -35,7 +37,7 @@
35
37
  "issuer": "client-api-platform/src/init/cleanup.ts"
36
38
  },
37
39
  {
38
- "type": "root-implicit",
40
+ "type": "explicit",
39
41
  "version": "^4.0.8",
40
42
  "packageName": "common/package.json",
41
43
  "issuer": "common/src/utils/layout.ts"
@@ -43,7 +45,7 @@
43
45
  ],
44
46
  "react-i18next": [
45
47
  {
46
- "type": "root-implicit",
48
+ "type": "explicit",
47
49
  "version": "15.4.0",
48
50
  "packageName": "common/package.json",
49
51
  "issuer": "common/src/api/i18next.ts"
@@ -51,12 +53,20 @@
51
53
  ],
52
54
  "i18next": [
53
55
  {
54
- "type": "root-implicit",
56
+ "type": "explicit",
55
57
  "version": "^23.7.16",
56
58
  "packageName": "common/package.json",
57
59
  "issuer": "common/src/api/i18next.ts"
58
60
  }
59
61
  ],
62
+ "lodash.clonedeep": [
63
+ {
64
+ "type": "explicit",
65
+ "version": "4.5.0",
66
+ "packageName": "common/package.json",
67
+ "issuer": "common/src/utils/layout.ts"
68
+ }
69
+ ],
60
70
  "dexie": [
61
71
  {
62
72
  "type": "root-implicit",
@@ -71,13 +81,13 @@
71
81
  "issuer": "client-api-platform/src/api/dock/idb.ts"
72
82
  },
73
83
  {
74
- "type": "root-implicit",
84
+ "type": "explicit",
75
85
  "version": "^4.0.11",
76
86
  "packageName": "common/package.json",
77
87
  "issuer": "common/src/api/pages/idb.ts"
78
88
  },
79
89
  {
80
- "type": "root-implicit",
90
+ "type": "explicit",
81
91
  "version": "^4.0.11",
82
92
  "packageName": "common/package.json",
83
93
  "issuer": "common/src/utils/create-and-migrate-ibd-store.ts"