@openfin/workspace 9.2.6 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
@@ -0,0 +1,4 @@
1
+ Learn more about OpenFin licensing at the links listed below or email us at support@openfin.co with questions.
2
+
3
+ - [Licensing](https://www.openfin.co/licensing/)
4
+ - [Developer agreement](https://openfin.co/developer-agreement/)
@@ -1,11 +1,11 @@
1
1
  import type { CLIProvider, HomeProvider } from './shapes/home';
2
- import { RegistrationMetaInfo } from './shapes';
2
+ import { HomeRegistration } from './shapes/home';
3
3
  export * from './shapes/home';
4
4
  /**
5
5
  * Register a provider that can return search results to Home.
6
6
  * @param provider the Home provider implementation.
7
7
  */
8
- export declare const register: (provider: HomeProvider | CLIProvider) => Promise<RegistrationMetaInfo>;
8
+ export declare const register: (provider: HomeProvider | CLIProvider) => Promise<HomeRegistration>;
9
9
  /**
10
10
  * Deregister a provider.
11
11
  * @param provider the Home provider implementation.
@@ -1,3 +1,4 @@
1
+ import { ColorSchemeOptionType } from '../../client-api-platform/src/shapes';
1
2
  import { NotificationsPlatform } from './shapes/notifications';
2
3
  export * from 'openfin-notifications';
3
4
  export * from './shapes/notifications';
@@ -11,3 +12,8 @@ export declare const register: (platform: NotificationsPlatform) => Promise<void
11
12
  * @param platformId id of the platform to deregister
12
13
  */
13
14
  export declare const deregister: (platformId: string) => Promise<void>;
15
+ /**
16
+ * Updates a workspace platform's theme scheme.
17
+ * @param scheme scheme to apply
18
+ */
19
+ export declare const updateScheme: (scheme: ColorSchemeOptionType) => Promise<void>;
@@ -323,6 +323,53 @@ export interface HomeProvider extends CLIProvider {
323
323
  * A rendered Home search result that has been actioned by a user.
324
324
  */
325
325
  export declare type HomeDispatchedSearchResult = HomeSearchResult & DispatchedSearchResult;
326
+ export interface SearchQueryWithProviderID {
327
+ providerID: string;
328
+ query: string;
329
+ }
330
+ /**
331
+ * Reponse from home registration which includes metadata and a function to inject search string into home search
332
+ */
333
+ export interface HomeRegistration extends RegistrationMetaInfo {
334
+ /**
335
+ * Function to inject search string into home search
336
+ * @param query search string
337
+ * @returns Promise<void>
338
+ *
339
+ * ```ts
340
+ * import Home, CLIProvider from '@openfin/workspace';
341
+ *
342
+ * import { fetchMySearchResults } from "./my-fetch-implementation";
343
+ *
344
+ * const searchQueryMap: Map<string, (query: string) => void> = new Map();
345
+ *
346
+ * // CLIProvider or HomeProvider
347
+ * const myCLIProvider: CLIProvider = {
348
+ * id: "my-cli-provider",
349
+ * title: "My CLI Provider",
350
+ * icon: "https://google.com/favicon.ico",
351
+ * onUserInput: (req) => fetchMySearchResults(req.query)
352
+ * };
353
+ *
354
+ * // register home and get back a function to inject search string into home search
355
+ * const { setSearchQuery } = await Home.register(myCLIProvider);
356
+ *
357
+ * // Store set query function in a map if you're using multiple providers
358
+ * searchQueryMap.set(myCLIProvider.id, setSearchQuery);
359
+ *
360
+ * // Call the set query function for a specific provider the search should be injected into
361
+ * const searchButton = document.createElement('button');
362
+ * searchButton.innerHTML = 'Search';
363
+ * document.body.appendChild(searchButton);
364
+ *
365
+ * searchButton.addEventListener('click', () => {
366
+ * searchQueryMap.get('my-cli-provider')('my search string');
367
+ * });
368
+ *
369
+ * ```
370
+ */
371
+ setSearchQuery(query: string): Promise<void>;
372
+ }
326
373
  /**
327
374
  * Interface that contains functions for integrating with Home.
328
375
  */
@@ -336,7 +383,7 @@ export interface HomeAPI {
336
383
  * import { fetchMySearchResults } from "./my-fetch-implementation";
337
384
  *
338
385
  * const myCLIProvider: CLIProvider = {
339
- * name: "my-cli-provider",
386
+ * id: "my-cli-provider",
340
387
  * title: "My CLI Provider",
341
388
  * icon: "https://google.com/favicon.ico",
342
389
  * onUserInput: (req) => fetchMySearchResults(req.query)
@@ -349,7 +396,7 @@ export interface HomeAPI {
349
396
  *
350
397
  * @param provider the provider implementation.
351
398
  */
352
- register(provider: HomeProvider | CLIProvider): Promise<RegistrationMetaInfo>;
399
+ register(provider: HomeProvider | CLIProvider): Promise<HomeRegistration>;
353
400
  /**
354
401
  * Deregister a provider.
355
402
  *
@@ -359,7 +406,7 @@ export interface HomeAPI {
359
406
  * import { fetchMySearchResults } from "./my-fetch-implementation";
360
407
  *
361
408
  * const myCLIProvider: CLIProvider = {
362
- * name: "my-cli-provider",
409
+ * id: "my-cli-provider",
363
410
  * title: "My CLI Provider",
364
411
  * icon: "https://google.com/favicon.ico",
365
412
  * onUserInput: (req) => fetchMySearchResults(req.query)
@@ -1,4 +1,4 @@
1
- import type { CustomThemes } from '../../../common/src/api/theming';
2
- export declare const getThemingApi: (identity: OpenFin.ApplicationIdentity) => {
3
- getThemes: () => Promise<CustomThemes>;
4
- };
1
+ import { ColorSchemeOptionType, ThemeApi } from '../../../client-api-platform/src/shapes';
2
+ export declare const getThemingApi: (identity: OpenFin.ApplicationIdentity) => ThemeApi;
3
+ export declare const setSelectedScheme: (schemeType: ColorSchemeOptionType) => Promise<void>;
4
+ export declare const getSelectedScheme: () => ColorSchemeOptionType | null | undefined;
@@ -1,2 +1,3 @@
1
+ /// <reference types="@openfin/core" />
1
2
  import { ShowQuitPlatformDialogRequest } from '..';
2
- export declare const showQuitPlatformDialogInternal: (req: ShowQuitPlatformDialogRequest) => Promise<void>;
3
+ export declare const showQuitPlatformDialogInternal: (req: ShowQuitPlatformDialogRequest, identity: OpenFin.ProviderIdentity | OpenFin.ClientIdentity) => Promise<void>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="@openfin/core" />
2
2
  import type { Page } from '../../../common/src/api/pages/shapes';
3
- import type { CustomThemeOptions } from '../../../common/src/api/theming';
3
+ import type { CustomThemeOptions, CustomThemeOptionsWithScheme } from '../../../common/src/api/theming';
4
4
  import type { BrowserInitConfig, BrowserSnapshot } from '..';
5
5
  export declare function overrideViewOptions(options: Partial<OpenFin.ViewOptions>, initOptions: OpenFin.ViewOptions): any;
6
6
  export declare function preserveInteropIfManifestConflict(opts: Partial<OpenFin.ViewOptions>, fetchManifest: ({ manifestUrl }: {
@@ -43,7 +43,7 @@ export declare const applyPageDefaults: (pages: Page[], defaultPageOptions?: Bro
43
43
  disabled?: boolean;
44
44
  };
45
45
  }[]>;
46
- export declare const applyBrowserDefaults: (options: OpenFin.PlatformWindowCreationOptions, initOptions: Pick<BrowserInitConfig, 'title' | 'defaultWindowOptions' | 'defaultPageOptions'>, theme: CustomThemeOptions) => Promise<OpenFin.PlatformWindowCreationOptions>;
46
+ export declare const applyBrowserDefaults: (options: OpenFin.PlatformWindowCreationOptions, initOptions: Pick<BrowserInitConfig, 'title' | 'defaultWindowOptions' | 'defaultPageOptions'>, theme: CustomThemeOptions | CustomThemeOptionsWithScheme) => Promise<OpenFin.PlatformWindowCreationOptions>;
47
47
  export declare enum WindowType {
48
48
  Browser = "browser",
49
49
  Platform = "platform",
@@ -63,9 +63,18 @@ export declare enum GlobalContextMenuOptionType {
63
63
  SwitchWorkspace = "SwitchWorkspace",
64
64
  DeleteWorkspace = "DeleteWorkspace",
65
65
  OpenStorefront = "OpenStorefront",
66
+ Appearance = "Appearance",
66
67
  Quit = "Quit",
67
68
  Custom = "Custom"
68
69
  }
70
+ /**
71
+ * Types of color scheme.
72
+ */
73
+ export declare enum ColorSchemeOptionType {
74
+ Light = "light",
75
+ Dark = "dark",
76
+ System = "system"
77
+ }
69
78
  /**Types of page tab context menu options, including pre-defined ones.
70
79
  * User-defined context menu items should use the value `Custom` */
71
80
  export declare enum PageTabContextMenuOptionType {
@@ -83,6 +92,9 @@ export interface GlobalContextMenuItemData extends ContextMenuItemData {
83
92
  export interface WorkspaceContextMenuItemData extends GlobalContextMenuItemData {
84
93
  workspaceId: string;
85
94
  }
95
+ export interface AppearanceContextMenuItemData extends GlobalContextMenuItemData {
96
+ scheme: ColorSchemeOptionType;
97
+ }
86
98
  /**Configuration of an option in the global context menu */
87
99
  export interface GlobalContextMenuItemTemplate extends Exclude<OpenFin.MenuItemTemplate, 'data'> {
88
100
  data: GlobalContextMenuItemData;
@@ -1048,6 +1060,8 @@ export interface LaunchAppRequest {
1048
1060
  */
1049
1061
  export interface ThemeApi {
1050
1062
  getThemes(): Promise<CustomThemes>;
1063
+ setSelectedScheme(newScheme: ColorSchemeOptionType): Promise<void>;
1064
+ getSelectedScheme(): Promise<ColorSchemeOptionType>;
1051
1065
  }
1052
1066
  /**
1053
1067
  * Controller for a Workspace Platform.
@@ -1,6 +1,9 @@
1
1
  /// <reference types="@openfin/core" />
2
2
  export declare const getWindowChannelId: (identity: OpenFin.Identity) => string;
3
- export declare const getChannelClient: (identity: OpenFin.Identity) => Promise<import("@openfin/core/src/api/interappbus/channel/client").default>;
3
+ export interface ChannelClient extends OpenFin.ChannelClient {
4
+ dispatch: (action: typeof BrowserChannelAction[keyof BrowserChannelAction], payload?: any) => Promise<any>;
5
+ }
6
+ export declare const getChannelClient: (identity: OpenFin.Identity) => Promise<ChannelClient>;
4
7
  /**
5
8
  * If the browser window is reloaded too quickly, runtime will
6
9
  * respond that the channel provider has already been created.
@@ -24,7 +27,8 @@ declare enum GeneralBrowserChannelActions {
24
27
  AddToChannel = "add-to-channel",
25
28
  RemoveFromChannel = "remove-from-channel",
26
29
  OpenSaveModalInternal = "open-save-modal-internal",
27
- DuplicatePage = "duplicate-page"
30
+ DuplicatePage = "duplicate-page",
31
+ SetSelectedScheme = "set-selected-scheme"
28
32
  }
29
33
  /**
30
34
  * All of the remote procedures that can be called in the
@@ -62,6 +66,7 @@ export declare const BrowserChannelAction: {
62
66
  RemoveFromChannel: GeneralBrowserChannelActions.RemoveFromChannel;
63
67
  OpenSaveModalInternal: GeneralBrowserChannelActions.OpenSaveModalInternal;
64
68
  DuplicatePage: GeneralBrowserChannelActions.DuplicatePage;
69
+ SetSelectedScheme: GeneralBrowserChannelActions.SetSelectedScheme;
65
70
  };
66
71
  export declare type BrowserChannelAction = typeof BrowserChannelAction;
67
72
  export {};
@@ -32,6 +32,8 @@ export declare enum WorkspacePlatformChannelAction {
32
32
  GetUniquePageTitle = "getUniquePageTitle",
33
33
  GetLastFocusedBrowserWindow = "getLastFocusedBrowserWindow",
34
34
  GetThemes = "getThemes",
35
+ GetSelectedScheme = "getSelectedScheme",
36
+ SetSelectedScheme = "setSelectedScheme",
35
37
  OpenGlobalContextMenuInternal = "openGlobalContextMenuInternal",
36
38
  OpenViewTabContextMenuInternal = "openViewTabContextMenuInternal",
37
39
  OpenPageTabContextMenuInternal = "openPageTabContextMenuInternal",
@@ -49,6 +51,7 @@ export declare enum WorkspacePlatformChannelAction {
49
51
  SetActiveWorkspace = "setActiveWorkspace",
50
52
  IsBrowserInitialized = "isBrowserInitialized"
51
53
  }
54
+ export declare const getPlatformClient: (identity: OpenFin.ApplicationIdentity) => Promise<OpenFin.ChannelClient>;
52
55
  export declare const internalGetWorkspacePlatformChannelClient: (identity: OpenFin.ApplicationIdentity) => Promise<true | {
53
56
  isWorkspacePlatform: boolean;
54
57
  isBrowserInitialized: boolean;
@@ -25,9 +25,12 @@ export declare enum WorkspaceChannelAction {
25
25
  ShowHome = "show-home",
26
26
  HideHome = "hide-home",
27
27
  AssignHomeSearchContext = "assign-home-search-context",
28
+ SetSearchQuery = "set-search-query",
29
+ OpenHomeAndSetSearchQuery = "open-home-and-set-search-query",
28
30
  GetLegacyPages = "get-legacy-pages",
29
31
  GetLegacyWorkspaces = "get-legacy-workspaces",
30
32
  GetComputedPlatformTheme = "get-computed-platform-theme",
33
+ SetSelectedScheme = "set-selected-scheme",
31
34
  RegisterStorefrontProvider = "register-storefront-provider",
32
35
  DeregisterStorefrontProvider = "deregister-storefront-provider",
33
36
  HideStorefront = "hide-storefront",
@@ -1,23 +1,46 @@
1
1
  import type { ThemePaletteSet } from '@openfin/ui-library';
2
+ import { ColorSchemeOptionType } from '../../../client-api-platform/src/shapes';
2
3
  export interface ComputedThemes extends Array<ComputedTheme> {
3
4
  }
4
5
  export interface ComputedTheme {
5
6
  label: string;
6
7
  logoUrl?: string;
7
8
  theme: ThemePaletteSet;
9
+ defaultScheme?: ColorSchemeOptionType;
8
10
  }
9
- export interface CustomThemes extends Array<CustomThemeOptions> {
10
- }
11
- export interface CustomThemeOptions {
11
+ interface BaseThemeOptions {
12
12
  label: string;
13
13
  logoUrl?: string;
14
+ }
15
+ export interface CustomThemeOptions extends BaseThemeOptions {
14
16
  palette: CustomPaletteSet;
15
17
  }
18
+ export interface CustomThemeOptionsWithScheme extends BaseThemeOptions {
19
+ default?: 'light' | 'dark';
20
+ palettes: {
21
+ light: CustomPaletteSet;
22
+ dark: CustomPaletteSet;
23
+ };
24
+ }
25
+ export interface CustomThemes extends Array<CustomThemeOptions | CustomThemeOptionsWithScheme> {
26
+ }
16
27
  export interface DefaultPaletteSet {
17
28
  brandPrimary: string;
18
29
  brandSecondary: string;
19
30
  backgroundPrimary: string;
20
31
  }
32
+ export interface BackgroundLayers {
33
+ background1: string;
34
+ background2: string;
35
+ background3: string;
36
+ background4: string;
37
+ background5: string;
38
+ background6: string;
39
+ }
40
+ export interface PaletteLayersBackgrounds {
41
+ light: Partial<BackgroundLayers>;
42
+ dark: Partial<BackgroundLayers>;
43
+ }
21
44
  export interface CustomPaletteSet extends DefaultPaletteSet {
22
45
  functional1?: string;
23
46
  functional2?: string;
@@ -62,5 +85,7 @@ export interface CustomPaletteSet extends DefaultPaletteSet {
62
85
  * @param customPalettes
63
86
  * @returns theme object ready to be applied to the UI
64
87
  */
65
- export declare const computeThemes: (customPalettes: CustomThemes) => ComputedThemes;
88
+ export declare const computeThemes: (customPalettes: CustomThemes, storedScheme?: ColorSchemeOptionType) => ComputedThemes;
66
89
  export declare const getComputedPlatformTheme: (platformIdentity: OpenFin.Identity) => Promise<ComputedTheme>;
90
+ export declare const setSelectedScheme: (ctx: ColorSchemeOptionType) => Promise<void>;
91
+ export {};
@@ -0,0 +1,2 @@
1
+ import { UseStore } from 'idb-keyval';
2
+ export declare const getNewStoreAndMigrateLegacyStore: (storeName: string, tableName: string) => UseStore;
@@ -40,4 +40,13 @@ export declare const getSavedWorkspaceContextMenuOptions: (activeWorkspace: Work
40
40
  workspaceId: string;
41
41
  };
42
42
  }[];
43
+ export declare const getAppearanceContextMenuOptions: () => Promise<{
44
+ label: string;
45
+ type: MenuItemType;
46
+ checked: boolean;
47
+ data: {
48
+ type: WP.GlobalContextMenuOptionType;
49
+ scheme: WP.ColorSchemeOptionType;
50
+ };
51
+ }[]>;
43
52
  export declare const getGlobalContextMenuTemplate: (winIdentity: OpenFin.Identity) => Promise<GlobalContextMenuItemTemplate[]>;
@@ -4,6 +4,8 @@ declare enum LocalStorageKey {
4
4
  MachineName = "machineName",
5
5
  NewTabPageLayout = "NewTabPageLayout",
6
6
  NewTabPageSort = "NewTabPageSort",
7
- DockPosition = "DockPosition"
7
+ DockPosition = "DockPosition",
8
+ SelectedColorScheme = "SelectedColorScheme",
9
+ HasMovedStore = "HasMovedStore"
8
10
  }
9
11
  export default LocalStorageKey;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="@openfin/core" />
2
2
  import { ResponseModalConfig } from './menu-config';
3
- import { Point } from './window';
4
3
  /**
5
4
  * returns the correct bounds for the response modal to be displayed at
6
5
  * this will return the correct bounds regardless of whether the window is maximized
@@ -10,7 +9,7 @@ import { Point } from './window';
10
9
  * @param centerOnMonitor whether the modal should be centered on the monitor
11
10
  * @returns a point (top/left) as to where the window should be placed
12
11
  */
13
- export declare const getResponseModalBounds: (modalOptions: ResponseModalConfig['windowOptions'], parentWindowIdentity?: OpenFin.Identity, centerOnMonitor?: boolean) => Promise<Point>;
12
+ export declare const getResponseModalBounds: (modalOptions: ResponseModalConfig['windowOptions'], parentWindowIdentity?: OpenFin.Identity, centerOnMonitor?: boolean) => Promise<OpenFin.Bounds>;
14
13
  /**
15
14
  * calculates the percenage of the window that is present within the monitor (float in range 0-1)
16
15
  *
@@ -19,3 +18,4 @@ export declare const getResponseModalBounds: (modalOptions: ResponseModalConfig[
19
18
  */
20
19
  export declare function getPercentageOfBoundsInMonitor(bounds: OpenFin.Bounds, monitor: OpenFin.MonitorDetails): number;
21
20
  export declare function getMonitorWindowMaximizedOn(parentWindowBounds: OpenFin.WindowBounds): Promise<OpenFin.MonitorDetails>;
21
+ export declare function getResponseModalBoundsAndCenterParentIfModalOffScreen(modalOptions: ResponseModalConfig['windowOptions'], parentWindowIdentity?: OpenFin.Identity, centerOnMonitor?: boolean): Promise<OpenFin.Bounds>;
@@ -0,0 +1,14 @@
1
+ export declare function getNotifications(): Promise<typeof import("@client/notifications")>;
2
+ /**
3
+ * Shows the Notification Center and navigates to "All" section.
4
+ */
5
+ export declare function navigateToNotificationCenter(): Promise<void>;
6
+ /**
7
+ * Toggles the Notification Center to Show/Hide it.
8
+ */
9
+ export declare function toggleNotificationCenter(): Promise<void>;
10
+ /**
11
+ * Create a specific notification for the saving of Pages as they are being closed.
12
+ * TODO: Make a better abstraction for notifications and have this use that abstraction
13
+ */
14
+ export declare const sendPageSaveNotification: () => Promise<void>;
@@ -1,4 +1,4 @@
1
- import { CustomPaletteSet } from '../../../common/src/api/theming';
1
+ import { BackgroundLayers, CustomPaletteSet } from '../../../common/src/api/theming';
2
2
  /**
3
3
  * Get hue from a CSS color
4
4
  *
@@ -25,24 +25,7 @@ import { CustomPaletteSet } from '../../../common/src/api/theming';
25
25
  * @returns hue as string
26
26
  */
27
27
  export declare const getHue: (colorInput: string) => string;
28
- export declare const makeBackgroundLayers: (hue: string) => {
29
- light: {
30
- background1: string;
31
- background2: string;
32
- background3: string;
33
- background4: string;
34
- background5: string;
35
- background6: string;
36
- };
37
- dark: {
38
- background1: string;
39
- background2: string;
40
- background3: string;
41
- background4: string;
42
- background5: string;
43
- background6: string;
44
- };
45
- };
28
+ export declare const makeBackgroundLayers: (backgroundPrimary: string, isLightBackground?: boolean) => BackgroundLayers;
46
29
  /**
47
30
  * makePalette() - generic - doesn't care about scheme
48
31
  *
@@ -4,6 +4,15 @@ export interface RegisterUsageStatus {
4
4
  allowed: boolean;
5
5
  rejectionCode?: string;
6
6
  }
7
+ export declare enum ComponentName {
8
+ Browser = "Browser",
9
+ Dock = "Dock",
10
+ Home = "Home",
11
+ Notification = "Notification",
12
+ Storefront = "Storefront",
13
+ Platform = "Platform",
14
+ Theming = "Theming"
15
+ }
7
16
  export declare const registerBrowserUsage: (status: RegisterUsageStatus) => Promise<void>;
8
17
  export declare const registerHomeUsage: (status: RegisterUsageStatus) => Promise<void>;
9
18
  export declare const registerStorefrontUsage: (status: RegisterUsageStatus) => Promise<void>;
@@ -57,7 +57,7 @@ export declare const getCenterFromBounds: (bounds: OpenFin.WindowBounds) => Poin
57
57
  * @param size height and width of the window
58
58
  * @returns coords representing the left, top of window given the center point
59
59
  */
60
- export declare const getBoundsFromCenter: (center: Point, size: Size) => Point;
60
+ export declare const getBoundsFromCenter: (center: Point, size: Size) => OpenFin.Bounds;
61
61
  /**
62
62
  * Get a wrapped OpenFin window.
63
63
  *
@@ -82,7 +82,7 @@ export declare function getCurrentOFWindow(): import("@openfin/core/src/api/wind
82
82
  export declare const homeOFIdentity: WindowIdentity;
83
83
  export declare const dockOFIdentity: WindowIdentity;
84
84
  export declare const notificationCenterOFIdentity: WindowIdentity;
85
- export declare const StorefrontOFIdentity: WindowIdentity;
85
+ export declare const storefrontOFIdentity: WindowIdentity;
86
86
  export declare const providerOFIdentity: WindowIdentity;
87
87
  /**
88
88
  * Get the Home OpenFin window.
@@ -153,7 +153,6 @@ export declare const isNotificationCenterRunning: () => Promise<boolean>;
153
153
  export declare const isHomeWindowRunning: () => Promise<boolean>;
154
154
  export declare const showAndFocusStorefront: () => Promise<void>;
155
155
  export declare const showAndFocusDock: () => Promise<void>;
156
- export declare const centerWindowIfOffScreen: (windowIdentity?: WindowIdentity) => Promise<void>;
157
156
  export declare const getDisableMultiplePagesOption: (identity: WindowIdentity) => Promise<any>;
158
157
  export declare const getIsLockedOption: (identity: WindowIdentity) => Promise<any>;
159
158
  export declare const getPlatformWindowTitle: (identity: WindowIdentity) => Promise<any>;
package/home.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{"use strict";var e={298:(e,t,n)=>{n(316)},427:(e,t,n)=>{var o;!function(e){e.ActionButton="ActionButton",e.DropdownButton="DropdownButton"}(o||(o={}))},758:(e,t,n)=>{var o,r,i;n.d(t,{Pt:()=>o,el:()=>i,yW:()=>r}),function(e){e.Suggestion="suggestion"}(o||(o={})),function(e){e.Contact="Contact",e.Custom="Custom",e.List="List",e.Plain="Plain",e.SimpleText="SimpleText",e.Loading="Loading",e.Error="Error"}(r||(r={})),function(e){e.MultiSelect="MultiSelect"}(i||(i={}))},114:(e,t,n)=>{var o,r;!function(e){e.Snapshot="snapshot",e.Manifest="manifest",e.View="view",e.External="external"}(o||(o={})),function(e){e.LandingPage="landingPage",e.AppGrid="appGrid"}(r||(r={}))},109:(e,t,n)=>{var o;!function(e){e.Primary="primary",e.Secondary="secondary",e.TextOnly="textOnly"}(o||(o={}))},436:(e,t,n)=>{n.d(t,{WF:()=>s,Xl:()=>l,aB:()=>u});var o=n(678);const r=o.Ax&&"complete"!==document.readyState&&new Promise((e=>document.addEventListener("readystatechange",(()=>{"complete"===document.readyState&&e()}))));var i=n(121);var s;!function(e){e.RegisterProvider="register-provider",e.DeregisterProvider="deregister-provider",e.CreateProviderWindow="create-provider-window",e.GetProviders="get-providers",e.ShowProviderWindow="show-provider-window",e.HideProviderWindow="hide-provider-window",e.GetStorefrontProviderApps="get-storefront-provider-apps",e.GetStorefrontProviderLandingPage="get-storefront-provider-landing-page",e.GetStorefrontProviderFooter="get-storefront-provider-footer",e.GetStorefrontProviderNavigation="get-storefront-provider-navigation",e.LaunchStorefrontProviderApp="launch-storefront-provider-app",e.ShowHome="show-home",e.HideHome="hide-home",e.AssignHomeSearchContext="assign-home-search-context",e.GetLegacyPages="get-legacy-pages",e.GetLegacyWorkspaces="get-legacy-workspaces",e.GetComputedPlatformTheme="get-computed-platform-theme",e.RegisterStorefrontProvider="register-storefront-provider",e.DeregisterStorefrontProvider="deregister-storefront-provider",e.HideStorefront="hide-storefront",e.ShowStorefront="show-storefront"}(s||(s={}));const c=function(e){let t;return()=>{if(!o.sS)throw new Error("getChannelClient cannot be used outside an OpenFin env. Avoid using this method during pre-rendering.");return t||(t=(async()=>{await r;const n={clientAPIVersion:o.u0},i=await fin.InterApplicationBus.Channel.connect(e,{payload:n});return i.onDisconnection((async()=>{console.warn(`disconnected from channel provider ${e}`),t=void 0})),i})().then((e=>e)).catch((n=>{throw t=void 0,new Error(`failed to connect to channel provider ${e}: ${n}`)}))),t}}("__of_workspace_protocol__"),a="isLaunchedViaLib",d=e=>{const t=new URL(e);return t.searchParams.append(a,"true"),t.toString()},u=async()=>{await(0,i.JV)(i.iW)||((o.ZK||-1===navigator.userAgent.indexOf("Win"))&&await fin.Application.startFromManifest(d(o.aW)),await fin.System.openUrlWithBrowser(d(o.GX)))},l=async()=>(await u(),c())},806:(e,t,n)=>{n.d(t,{q9:()=>o});var o,r,i,s=n(678);!function(e){e.Workspace="openfin-browser"}(o||(o={})),function(e){e.RunRequested="run-requested",e.WindowOptionsChanged="window-options-changed",e.WindowClosed="window-closed",e.WindowCreated="window-created"}(r||(r={})),function(e){e.FinProtocol="fin-protocol"}(i||(i={}));s.AB,o.Workspace},678:(e,t,n)=>{var o;n.d(t,{AB:()=>c,Ax:()=>i,GX:()=>u,ZK:()=>d,aW:()=>l,oC:()=>a,sS:()=>r,u0:()=>p}),function(e){e.Local="local",e.Dev="dev",e.Staging="staging",e.Prod="prod"}(o||(o={}));const r="undefined"!=typeof window&&"undefined"!=typeof fin,i=("undefined"==typeof process||process.env?.JEST_WORKER_ID,"undefined"!=typeof window),s=i?window.origin:o.Local,c=r&&fin.me.uuid,a=r&&fin.me.name,d=(r&&fin.me.entityType,"prod"===o.Local),u=(o.Dev,o.Staging,o.Prod,"fins://system-apps/workspace"),l="https://cdn.openfin.co/workspace/9.2.6/app.json",f=e=>e.startsWith("http://")||e.startsWith("https://")?e:s+e,p=(f("https://cdn.openfin.co/workspace/9.2.6"),f("https://cdn.openfin.co/workspace/9.2.6"),"undefined"!=typeof WORKSPACE_DOCS_PLATFORM_URL&&f(WORKSPACE_DOCS_PLATFORM_URL),"undefined"!=typeof WORKSPACE_DOCS_CLIENT_URL&&f(WORKSPACE_DOCS_CLIENT_URL),"9.2.6")},532:(e,t,n)=>{n.d(t,{ck:()=>c});var o,r=n(678),i=n(121);!function(e){e.Browser="Browser",e.Dock="Dock",e.Home="Home",e.Notification="Notification",e.Storefront="Storefront",e.Platform="Platform",e.Theming="Theming"}(o||(o={}));const s=async(e,t)=>{const n={apiVersion:t.apiVersion||r.u0,componentName:e,componentVersion:t.componentVersion||r.u0,allowed:t.allowed,rejectionCode:t.rejectionCode};fin.System.registerUsage({type:"workspace-licensing",data:n})},c=async e=>{i.OI.uuid===i.Gi.uuid&&i.OI.name===i.Gi.name||s(o.Home,e)}},121:(e,t,n)=>{n.d(t,{Gi:()=>d,JV:()=>f,OI:()=>u,iW:()=>l});var o,r,i,s=n(806),c=n(678);!function(e){e.Home="openfin-home",e.Dock="openfin-dock",e.Storefront="openfin-storefront",e.HomeInternal="openfin-home-internal",e.BrowserMenu="openfin-browser-menu",e.BrowserIndicator="openfin-browser-indicator",e.BrowserWindow="internal-generated-window",e.ClassicWindow="internal-generated-classic-window"}(o||(o={})),function(e){e.Shown="shown",e.BoundsChanged="bounds-changed",e.LayoutReady="layout-ready",e.EndUserBoundsChanging="end-user-bounds-changing",e.Blurred="blurred",e.Closed="closed",e.CloseRequested="close-requested",e.Focused="focused",e.ShowRequested="show-requested",e.ViewCrashed="view-crashed",e.ViewAttached="view-attached",e.ViewDetached="view-detached",e.ViewPageTitleUpdated="view-page-title-updated",e.ViewDestroyed="view-destroyed",e.OptionsChanged="options-changed"}(r||(r={})),function(e){e.BeforeUnload="beforeunload"}(i||(i={}));function a(e){if(!c.sS)throw new Error("getOFWindow can only be used in an OpenFin env. Avoid calling this method during pre-rendering.");return fin.Window.wrapSync(e)}const d={name:c.oC,uuid:c.AB};const u={name:o.Home,uuid:s.q9.Workspace},l=(o.Dock,s.q9.Workspace,o.Storefront,s.q9.Workspace,{name:s.q9.Workspace,uuid:s.q9.Workspace});const f=e=>a(e).getOptions().then((()=>!0)).catch((()=>!1))},316:(e,t,n)=>{var o,r,i;n.d(t,{De:()=>o,px:()=>r}),function(e){e.Fetching="fetching",e.Fetched="fetched",e.Complete="complete"}(o||(o={})),function(e){e.UserAction="user-action",e.FocusChange="focus-change",e.Reload="reload"}(r||(r={})),function(e){e.Active="active",e.Default="default"}(i||(i={}))}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};(()=>{n.r(o),n.d(o,{CLIAction:()=>l.Pt,CLIFilterOptionType:()=>l.el,CLITemplate:()=>l.yW,deregister:()=>et,hide:()=>nt,register:()=>Ye,show:()=>tt});var e={};n.r(e),n.d(e,{subscribe:()=>ce});var t={};n.r(t),n.d(t,{create:()=>Ge});var r=n(678),i=n(532),s=n(436);const c="home";var a;!function(e){e.Commands="home-commands"}(a||(a={}));var d,u=n(806),l=(n(298),n(758));n(114),n(109),n(427);!function(e){e[e.Initial=0]="Initial",e[e.Open=1]="Open",e[e.Close=2]="Close"}(d||(d={}));var f=n(316);const p="all",w="0",g="5",h="6",y=()=>{};function v(e,t){return e?`${e}-${t}`:t}function m(e){return`__search-${e}-topic__`}const S=new Map;function C(e,t){S.has(e)||S.set(e,new Set),S.get(e).add(t)}function P(e,t){const n=S.get(e);n&&n.delete(t)}const R=new Map;function b(e,t){R.has(e)||R.set(e,new Set),R.get(e).add(t)}function I(e,t){const n=R.get(e);n&&n.delete(t)}const k=new Map;async function O(e,t){k.has(e)||k.set(e,new Map),k.get(e).set(t.id,t);const n=S.get(e);if(!n)return;const o=[...n].map((e=>e()));await Promise.all(o)}async function B(e,t){const n=k.get(e);if(!n)return;n.delete(t);const o=R.get(e);if(!o)return;const r=[...o].map((e=>e()));await Promise.all(r)}function A(e){const t=k.get(e);return t?[...t.values()]:[]}function x(e){const t=k.get(e);t&&t.clear()}function D(e,t){const n=k.get(e);return n?n.get(t):null}function W(e,t,n){return{...e,action:n||{...e.actions[0],trigger:f.px.UserAction},dispatcherIdentity:t}}function L(e,t,n="ascending"){const o=e||[];if(!t?.length)return o;const r=[],i=new Map;t.forEach((e=>{if(e.key)return i.set(e.key,e);r.push(e)}));let s=o.map((e=>{const{key:t}=e;if(t&&i.has(t)){const e=i.get(t);return i.delete(t),e}return e}));return s.push(...i.values(),...r),s="ascending"===n?s.sort(((e,t)=>(e?.score??1/0)-(t?.score??1/0))):s.sort(((e,t)=>(t?.score??1/0)-(e?.score??1/0))),s}function E(e){const t={};let n=[];let o=[];let r=d.Initial;t.getStatus=()=>r,t.getResultBuffer=()=>n,t.setResultBuffer=e=>{n=e,n?.length&&t.onChange()},t.getRevokedBuffer=()=>o,t.setRevokedBuffer=e=>{o=e,o?.length&&t.onChange()},t.onChange=y;const i={};return t.res=i,i.close=()=>{r!==d.Close&&(r=d.Close,t.onChange())},i.open=()=>{r!==d.Open&&(r=d.Open,t.onChange())},i.respond=n=>{const o=L(t.getResultBuffer(),n,e);t.setResultBuffer(o)},i.revoke=(...e)=>{const n=new Set(e),o=t.getResultBuffer().filter((({key:e})=>{const t=n.has(e);return t&&n.delete(e),!t}));t.setResultBuffer(o),n.size&&(t.getRevokedBuffer().forEach((e=>n.add(e))),t.setRevokedBuffer([...n]))},t}function T(e,t,n){const o=new Set;let r=!1;return{close:()=>{r=!0;for(const e of o)e()},req:{id:t,topic:e,...n,context:n?.context||{},onClose:e=>{o.add(e),r&&e()},removeListener:e=>{o.delete(e)}}}}function F(){return{name:fin.me.name,uuid:fin.me.uuid}}function M(){let e;try{e=fin.Platform.getCurrentSync().identity.uuid}catch(e){}return e}const _="deregistered or does not exist",V=new Error(`provider ${_}`),q=new Error("provider with name already exists"),$=new Error("bad payload"),U=new Error("subscription rejected"),G=new Error(`channel ${_}`),H=new Map;function j(e){const t=K(e);if(t)return t;throw G}function K(e){const t=H.get(e);if(t)return t}function N(e,t){H.set(e,t)}function X(e){console.error("OpenFin Search API: ",e)}const J=new Map;function Z(e){J.has(e)||J.set(e,new Map);const t=J.get(e);return{getRequestsForIdentity:e=>{const n=function(e){return`${e.uuid}:${e.name}`}(e);return t.has(n)||t.set(n,new Map),t.get(n)}}}async function z(e,t){return(await j(e)).dispatch(w,t)}function Q({namespacedTopic:e,topic:t}){const n=D.bind(null,e),o=Z(e),r=z.bind(null,e);return async(e,i)=>{if(!e||!e.id||!e.providerId){const e=$;return X(e),{error:e.message}}const{id:s,providerId:c}=e,a=n(c);if(!a){const e=V;return X(e),{error:e.message}}const d=o.getRequestsForIdentity(i);let u=d.get(e.id);u||(u=T(t,s,e),d.set(e.id,u));const l=E(),f=()=>{const e=l.getResultBuffer();l.setResultBuffer([]);const t=l.getRevokedBuffer();l.setRevokedBuffer([]);const n=l.getStatus();r({id:s,providerId:c,results:e,revoked:t,status:n})};let p=!0,w=!1;l.onChange=()=>{if(p)return p=!1,void f();w||(w=!0,setTimeout((()=>{w=!1,f()}),100))};try{const{results:e,context:t}=await a.onUserInput(u.req,l.res),n=l.getStatus();return{id:s,providerId:c,status:n,results:e,context:t}}catch(e){return X(e),{id:s,providerId:c,error:e?.message}}}}async function Y(e,t,n){const o=n||await j(e),r=F(),i={...t,identity:r,onResultDispatch:void 0},s=await o.dispatch("2",i);return await O(e,{identity:r,...t}),s}async function ee(e,t){const n=await j(e);return await n.dispatch("3",t),B(e,t)}async function te(e,t,n,o){const r=W(n,F(),o),i=D(e,t);if(i){const{onResultDispatch:e}=i;if(!e)return;return e(r)}const s={providerId:t,result:r};return(await j(e)).dispatch(g,s)}async function ne(e,t){const n={...t,context:t?.context||{}},o={},r=async function*(e,t,{setState:n}){const o=await j(e);for(;;){const e=await o.dispatch("1",t),r=e.error;if(r)throw new Error(r);const i=e;if(t.id=i.id,n(i.state),i.done)return i.value;yield i.value}}(e,n,{setState:e=>{o.state=e}});let i=await r.next();return o.id=n.id||"",o.close=()=>{!async function(e,t){(await j(e)).dispatch(h,{id:t})}(e,o.id)},o.next=()=>{if(i){const e=i;return i=void 0,e}return r.next()},o}async function oe(e){return(await j(e)).dispatch("4",null)}async function re(e){const t=await j(e);var n;n=e,H.delete(n),x(e),await t.disconnect()}function ie(e){const{namespacedTopic:t}=e,n=Z(t);return async o=>{if(!K(t))return;const r=n.getRequestsForIdentity(o);for(const{req:e,close:t}of r.values())t(),r.delete(e.id);N(t,(async e=>{const{namespacedTopic:t}=e,n=await se(e);for(const e of A(t))await Y(t,e,n);return n})(e))}}async function se(e){const{namespacedTopic:t}=e,n=m(t),o=await async function(e){for(let t=0;t<50;t++)try{return await fin.InterApplicationBus.Channel.connect(e,{wait:!1})}catch(e){if(49===t)throw e;await new Promise((e=>setTimeout(e,1e3)))}}(n);return o.register(w,Q(e)),o.register(h,function(e){const t=Z(e);return(e,n)=>{const o=t.getRequestsForIdentity(n),r=o.get(e.id);r&&(r.close(),o.delete(e.id))}}(t)),o.register(g,function(e){return async(t,n)=>{if(!t||!t.providerId||!t.result)return void X($);const o=D(e,t.providerId);if(!o)return void X(V);const{onResultDispatch:r}=o;return r?(t.result.dispatcherIdentity=n,r(t.result)):void 0}}(t)),o.onDisconnection(ie(e)),o}async function ce(e){const t="string"==typeof e?e:e.topic,n="string"==typeof e?void 0:e.uuid,o=t||p,r=n||M()||"",i=v(r,o),s={topic:o,namespace:r,namespacedTopic:i};let c=K(i);return c||(c=se(s),N(i,c),await c),{getAllProviders:oe.bind(null,i),register:Y.bind(null,i),search:ne.bind(null,i),deregister:ee.bind(null,i),dispatch:te.bind(null,i),disconnect:re.bind(null,i)}}const ae=new Map;function de(e){const t=ue(e);if(t)return t;throw G}function ue(e){const t=ae.get(e);if(t)return t}const le=new Map;function fe(e,t){le.has(e)||le.set(e,new Set),le.get(e).add(t)}function pe(e,t){const n=le.get(e);n&&n.delete(t)}async function we(e){return[...A(e)].map((e=>({...e,onUserInput:void 0,onResultDispatch:void 0})))}async function ge(e,t){if(D(e,t.id))throw new Error("provider with name already exists");const n=F();return await O(e,{identity:n,...t}),{workspaceVersion:r.u0||"",clientAPIVersion:t.clientAPIVersion||""}}async function he(e,t){await B(e,t)}async function ye(e,t,n,o){const r=D(e,t);if(!r)throw V;const{onResultDispatch:i}=r;if(!i)return;return i(W(n,F(),o))}async function*ve(e,t,n){const o=function(e,t){const n=[],o=[],r=[],i=[];for(const s of e){const e=E(s.scoreOrder),c={results:[],provider:{id:s.id,identity:s.identity,title:s.title,scoreOrder:s.scoreOrder,icon:s.icon,dispatchFocusEvents:s.dispatchFocusEvents}};n.push(c),o.push(e);const a=(async()=>{try{const{results:n,context:o}=await s.onUserInput(t,e.res);c.results=L(c.results||[],n),c.context={...c.context,...o}}catch(e){c.error=e}})();a.finally((()=>{a.done=!0})),i.push(a),r.push(r.length)}return{providerResponses:n,listenerResponses:o,openListenerResponses:r,initialResponsePromises:i}}(t.targets?t.targets.map((t=>D(e,t))).filter((e=>!!e)):[...A(e).filter((e=>!e.hidden))],t),{providerResponses:r,listenerResponses:i}=o;let{openListenerResponses:s,initialResponsePromises:c}=o,a=f.De.Fetching;const u=e=>{a=e,n.setState(a)};let l,p=!1;t.onClose((()=>{p=!0,l&&l()}));do{let e=!1;if(c.length){const t=[];for(const n of c)n.done?e=!0:t.push(n);c=t,c.length||(u(f.De.Fetched),e=!0)}let t,n=!1;const o=()=>{n=!0,t&&t()},w=[];for(const t of s){const n=i[t],s=r[t],c=n.getStatus();(c===d.Open||a===f.De.Fetching&&c===d.Initial)&&(w.push(t),n.onChange=o);const u=n.getResultBuffer();u.length&&(n.setResultBuffer([]),s.results=L(s.results||[],u),e=!0);const l=n.getRevokedBuffer();if(l.length){n.setRevokedBuffer([]);const t=new Set(l);s.results=(s.results||[]).filter((({key:e})=>!t.has(e))),e=!0}}if(s=w,e&&(yield r),p)break;n||(s.length||c.length)&&await Promise.race([...c,new Promise((e=>{t=e})),new Promise((e=>{l=e}))])}while(s.length||c.length);return u(f.De.Complete),r}let me=0;async function Se({namespacedTopic:e,topic:t},n){me+=1;const o=T(t,me.toString(),n),r=ve(e,o.req,{setState:e=>{r.state=e}});return r.id=me.toString(),r.close=o.close,r.state=f.De.Fetching,r}const Ce=new Map;function Pe(e,t){return`${e}:${t}`}function Re(e){return async t=>{if(!t)return X($),{error:$.message};let n;if(t.id)n=Pe(e.namespacedTopic,t.id);else{const o=await Se(e,t);n=Pe(e.namespacedTopic,o.id),t.id=o.id,Ce.set(n,{generator:o})}const o=Ce.get(n);clearTimeout(o.timeout);const r=await o.generator.next();return o.timeout=function(e){return window.setTimeout((()=>{Ce.delete(e)}),1e4)}(n),{...r,id:t.id,state:o.generator.state}}}function be(e,t,n){return de(e).dispatch(t,h,{id:n})}function Ie(e){return t=>function(e,t){const n=Pe(e,t),o=Ce.get(n);o&&o.generator.close()}(e,t.id)}async function ke(e,t,{id:n,query:o,context:r,targets:i=[]}){const s=de(e),c={id:n,query:o,context:r,targets:i,providerId:t.id},a=await s.dispatch(t.identity,w,c),d=a.error;if(d)throw new Error(d);return a}const Oe=new Map;function Be(e,t,n){return`${e}:${t.name}:${t.uuid}:${n}`}const Ae=new Map;function xe(e,t,n){return`${e}:${t}:${n}`}function De(e,t){const n=Be.bind(null,e,t.identity),o=be.bind(null,e,t.identity),r=ke.bind(null,e,t);return async(i,s)=>{const c=n(i.id);if(!Oe.has(c)){const e=()=>{o(i.id),Oe.delete(c)};Oe.set(c,e),i.onClose(e)}const a=xe(e,t.id,i.id),u=()=>{Ae.delete(a),s.close()};i.onClose(u),Ae.set(a,(e=>{e.results?.length&&s.respond(e.results),e.revoked?.length&&s.revoke(...e.revoked),e.status===d.Open&&s.open(),e.status===d.Close&&u()}));const l=await r(i);return l.status===d.Open&&s.open(),l.status!==d.Close&&l.status!==d.Initial||u(),l}}function We(e,t){return async n=>{const o=de(e),r={providerId:t.id,result:n};return o.dispatch(t.identity,g,r)}}const Le=new Map;function Ee(e,t){return`${e}-${t.name}-${t.uuid}`}function Te(e){return async(t,n)=>{if(!t||!t.id)return X(new Error(JSON.stringify(t))),void X($);if(D(e,t.id))throw q;return t.identity=n,await async function(e,t){const n=Ee(e,t.identity);Le.has(n)||Le.set(n,[]),Le.get(n).push(t.id),await O(e,{...t,onUserInput:De(e,t),onResultDispatch:We(e,t)})}(e,t),{workspaceVersion:r.u0||"",clientAPIVersion:t.clientAPIVersion||""}}}function Fe(e){return t=>{t?function(e,t){const n=D(e,t);if(!n)return;const o=Ee(e,n.identity),r=Le.get(o);if(r){const n=r.findIndex((e=>e===t));-1!==n&&(r.splice(n,1),B(e,t))}}(e,t):X($)}}const Me=new Map;function _e(e,t){Me.has(e)||Me.set(e,new Set),Me.get(e).add(t)}function Ve(e,t){const n=Me.get(e);n&&n.delete(t)}function qe(e){return async t=>{!function(e,t){const n=Ee(e,t),o=Le.get(n);if(o){for(const t of o)B(e,t);Le.delete(n)}}(e,t);const n=Me.get(e);n&&n.forEach((e=>e(t)))}}async function $e(e){const{namespacedTopic:t}=e,n=m(e.namespacedTopic),o=await(r=n,fin.InterApplicationBus.Channel.create(r));var r;return o.onConnection(function({namespacedTopic:e}){return async t=>{const n=le.get(e);if(n)for(const e of n)if(!await e(t))throw U}}(e)),o.onDisconnection(qe(t)),o.register(h,Ie(t)),o.register(w,function(e){return t=>{const n=xe(e,t.providerId,t.id),o=Ae.get(n);o&&o(t)}}(t)),o.register("2",Te(t)),o.register("3",Fe(t)),o.register("4",function(e){return async()=>we(e)}(t)),o.register("1",Re(e)),o.register(g,function(e){return async(t,n)=>{if(!t||!t.providerId||!t.result)return void X($);const o=D(e,t.providerId);if(!o)throw V;const{onResultDispatch:r}=o;return r?(t.result.dispatcherIdentity=n,r(t.result)):void 0}}(t)),o}async function Ue(e){const t=de(e);var n;n=e,ae.delete(n),await t.destroy(),x(e)}async function Ge(e){const t=("string"==typeof e?e:e?.topic||"")||p,n=M()||"",o=v(n,t),r={topic:t,namespace:n,namespacedTopic:o};let i=ue(o);i||(i=await $e(r),function(e,t){ae.set(e,t)}(o,i));const s=pe.bind(null,o),c=Ve.bind(null,o),a=P.bind(null,o),d=I.bind(null,o);return{getAllProviders:we.bind(null,o),search:Se.bind(null,r),register:ge.bind(null,o),deregister:he.bind(null,o),onSubscription:fe.bind(null,o),onDisconnect:_e.bind(null,o),onRegister:C.bind(null,o),onDeregister:b.bind(null,o),dispatch:ye.bind(null,o),disconnect:Ue.bind(null,o),removeListener:e=>{s(e),c(e),a(e),d(e)}}}const{create:He}=t,{subscribe:je}=e,Ke={create:He,subscribe:je,defaultTopic:"all"},Ne=()=>{window.search=Ke},Xe=e=>{const t=()=>{Ne(),window.removeEventListener(e,t)};return t};if("undefined"!=typeof window){Ne();const e="load",t=Xe(e);window.addEventListener(e,t);const n="DOMContentLoaded",o=Xe(n);window.addEventListener(n,o)}const Je=new Map;async function Ze(){await async function(e){Je.set(e,await je({topic:e,uuid:u.q9.Workspace}))}(c)}let ze;async function Qe(e){return await async function(){return ze||(ze=Ze()),ze}(),Je.get(e)}const Ye=async e=>{if(!e.icon)throw new Error(`${e.id} provider needs to have icon property defined.`);await(0,s.aB)();const t=await Qe(c);try{e.clientAPIVersion=r.u0;const n=await t.register(e);return(0,i.ck)({allowed:!0,componentVersion:n?.workspaceVersion}),n?.workspaceVersion,r.u0,n}catch(e){throw(0,i.ck)({allowed:!1,rejectionCode:e instanceof Error?e.message:"unknown"}),e}},et=async e=>{await(0,s.aB)();return(await Qe(c)).deregister(e)};async function tt(){return(await(0,s.Xl)()).dispatch(s.WF.ShowHome,void 0)}async function nt(){return(await(0,s.Xl)()).dispatch(s.WF.HideHome,void 0)}})(),module.exports=o})();
1
+ (()=>{"use strict";var e={298:(e,t,n)=>{n(316)},427:(e,t,n)=>{var o;!function(e){e.ActionButton="ActionButton",e.DropdownButton="DropdownButton"}(o||(o={}))},758:(e,t,n)=>{var o,r,i;n.d(t,{Pt:()=>o,el:()=>i,yW:()=>r}),function(e){e.Suggestion="suggestion"}(o||(o={})),function(e){e.Contact="Contact",e.Custom="Custom",e.List="List",e.Plain="Plain",e.SimpleText="SimpleText",e.Loading="Loading",e.Error="Error"}(r||(r={})),function(e){e.MultiSelect="MultiSelect"}(i||(i={}))},114:(e,t,n)=>{var o,r;!function(e){e.Snapshot="snapshot",e.Manifest="manifest",e.View="view",e.External="external"}(o||(o={})),function(e){e.LandingPage="landingPage",e.AppGrid="appGrid"}(r||(r={}))},109:(e,t,n)=>{var o;!function(e){e.Primary="primary",e.Secondary="secondary",e.TextOnly="textOnly"}(o||(o={}))},150:(e,t,n)=>{n.d(t,{WF:()=>s,Xl:()=>l,aB:()=>u});var o=n(117),r=n(678),i=n(121);var s;!function(e){e.RegisterProvider="register-provider",e.DeregisterProvider="deregister-provider",e.CreateProviderWindow="create-provider-window",e.GetProviders="get-providers",e.ShowProviderWindow="show-provider-window",e.HideProviderWindow="hide-provider-window",e.GetStorefrontProviderApps="get-storefront-provider-apps",e.GetStorefrontProviderLandingPage="get-storefront-provider-landing-page",e.GetStorefrontProviderFooter="get-storefront-provider-footer",e.GetStorefrontProviderNavigation="get-storefront-provider-navigation",e.LaunchStorefrontProviderApp="launch-storefront-provider-app",e.ShowHome="show-home",e.HideHome="hide-home",e.AssignHomeSearchContext="assign-home-search-context",e.SetSearchQuery="set-search-query",e.OpenHomeAndSetSearchQuery="open-home-and-set-search-query",e.GetLegacyPages="get-legacy-pages",e.GetLegacyWorkspaces="get-legacy-workspaces",e.GetComputedPlatformTheme="get-computed-platform-theme",e.SetSelectedScheme="set-selected-scheme",e.RegisterStorefrontProvider="register-storefront-provider",e.DeregisterStorefrontProvider="deregister-storefront-provider",e.HideStorefront="hide-storefront",e.ShowStorefront="show-storefront"}(s||(s={}));const c=(0,o.Z)("__of_workspace_protocol__"),a="isLaunchedViaLib",d=e=>{const t=new URL(e);return t.searchParams.append(a,"true"),t.toString()},u=async()=>{await(0,i.JV)(i.iW)||((r.ZK||-1===navigator.userAgent.indexOf("Win"))&&await fin.Application.startFromManifest(d(r.aW)),await fin.System.openUrlWithBrowser(d(r.GX)))},l=async()=>(await u(),c())},806:(e,t,n)=>{n.d(t,{q9:()=>o});var o,r,i,s=n(678);!function(e){e.Workspace="openfin-browser"}(o||(o={})),function(e){e.RunRequested="run-requested",e.WindowOptionsChanged="window-options-changed",e.WindowClosed="window-closed",e.WindowCreated="window-created"}(r||(r={})),function(e){e.FinProtocol="fin-protocol"}(i||(i={}));s.AB,o.Workspace},117:(e,t,n)=>{n.d(t,{Z:()=>i});var o=n(678);const r=o.Ax&&"complete"!==document.readyState&&new Promise((e=>document.addEventListener("readystatechange",(()=>{"complete"===document.readyState&&e()}))));function i(e){let t;return()=>{if(!o.sS)throw new Error("getChannelClient cannot be used outside an OpenFin env. Avoid using this method during pre-rendering.");return t||(t=(async()=>{await r;const n={clientAPIVersion:o.u0},i=await fin.InterApplicationBus.Channel.connect(e,{payload:n});return i.onDisconnection((async()=>{console.warn(`disconnected from channel provider ${e}`),t=void 0})),i})().then((e=>e)).catch((n=>{throw t=void 0,new Error(`failed to connect to channel provider ${e}: ${n}`)}))),t}}},678:(e,t,n)=>{var o;n.d(t,{AB:()=>c,Ax:()=>i,GX:()=>u,ZK:()=>d,aW:()=>l,oC:()=>a,sS:()=>r,u0:()=>p}),function(e){e.Local="local",e.Dev="dev",e.Staging="staging",e.Prod="prod"}(o||(o={}));const r="undefined"!=typeof window&&"undefined"!=typeof fin,i=("undefined"==typeof process||process.env?.JEST_WORKER_ID,"undefined"!=typeof window),s=i?window.origin:o.Local,c=r&&fin.me.uuid,a=r&&fin.me.name,d=(r&&fin.me.entityType,"prod"===o.Local),u=(o.Dev,o.Staging,o.Prod,"fins://system-apps/workspace"),l="https://cdn.openfin.co/workspace/9.6.0/app.json",f=e=>e.startsWith("http://")||e.startsWith("https://")?e:s+e,p=(f("https://cdn.openfin.co/workspace/9.6.0"),f("https://cdn.openfin.co/workspace/9.6.0"),"undefined"!=typeof WORKSPACE_DOCS_PLATFORM_URL&&f(WORKSPACE_DOCS_PLATFORM_URL),"undefined"!=typeof WORKSPACE_DOCS_CLIENT_URL&&f(WORKSPACE_DOCS_CLIENT_URL),"9.6.0")},532:(e,t,n)=>{n.d(t,{ck:()=>c});var o,r=n(678),i=n(121);!function(e){e.Browser="Browser",e.Dock="Dock",e.Home="Home",e.Notification="Notification",e.Storefront="Storefront",e.Platform="Platform",e.Theming="Theming"}(o||(o={}));const s=async(e,t)=>{const n={apiVersion:t.apiVersion||r.u0,componentName:e,componentVersion:t.componentVersion||r.u0,allowed:t.allowed,rejectionCode:t.rejectionCode};fin.System.registerUsage({type:"workspace-licensing",data:n})},c=async e=>{i.OI.uuid===i.Gi.uuid&&i.OI.name===i.Gi.name||s(o.Home,e)}},121:(e,t,n)=>{n.d(t,{Gi:()=>d,JV:()=>f,OI:()=>u,iW:()=>l});var o,r,i,s=n(806),c=n(678);!function(e){e.Home="openfin-home",e.Dock="openfin-dock",e.Storefront="openfin-storefront",e.HomeInternal="openfin-home-internal",e.BrowserMenu="openfin-browser-menu",e.BrowserIndicator="openfin-browser-indicator",e.BrowserWindow="internal-generated-window",e.ClassicWindow="internal-generated-classic-window"}(o||(o={})),function(e){e.Shown="shown",e.BoundsChanged="bounds-changed",e.LayoutReady="layout-ready",e.EndUserBoundsChanging="end-user-bounds-changing",e.Blurred="blurred",e.Closed="closed",e.CloseRequested="close-requested",e.Focused="focused",e.ShowRequested="show-requested",e.ViewCrashed="view-crashed",e.ViewAttached="view-attached",e.ViewDetached="view-detached",e.ViewPageTitleUpdated="view-page-title-updated",e.ViewDestroyed="view-destroyed",e.OptionsChanged="options-changed"}(r||(r={})),function(e){e.BeforeUnload="beforeunload"}(i||(i={}));function a(e){if(!c.sS)throw new Error("getOFWindow can only be used in an OpenFin env. Avoid calling this method during pre-rendering.");return fin.Window.wrapSync(e)}const d={name:c.oC,uuid:c.AB};const u={name:o.Home,uuid:s.q9.Workspace},l=(o.Dock,s.q9.Workspace,o.Storefront,s.q9.Workspace,{name:s.q9.Workspace,uuid:s.q9.Workspace});const f=e=>a(e).getOptions().then((()=>!0)).catch((()=>!1))},316:(e,t,n)=>{var o,r,i;n.d(t,{De:()=>o,px:()=>r}),function(e){e.Fetching="fetching",e.Fetched="fetched",e.Complete="complete"}(o||(o={})),function(e){e.UserAction="user-action",e.FocusChange="focus-change",e.Reload="reload"}(r||(r={})),function(e){e.Active="active",e.Default="default"}(i||(i={}))}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};(()=>{n.r(o),n.d(o,{CLIAction:()=>l.Pt,CLIFilterOptionType:()=>l.el,CLITemplate:()=>l.yW,deregister:()=>et,hide:()=>nt,register:()=>Ye,show:()=>tt});var e={};n.r(e),n.d(e,{subscribe:()=>ce});var t={};n.r(t),n.d(t,{create:()=>Ue});var r=n(678),i=n(532),s=n(150);const c="home";var a;!function(e){e.Commands="home-commands"}(a||(a={}));var d,u=n(806),l=(n(298),n(758));n(114),n(109),n(427);!function(e){e[e.Initial=0]="Initial",e[e.Open=1]="Open",e[e.Close=2]="Close"}(d||(d={}));var f=n(316);const p="all",w="0",g="5",h="6",y=()=>{};function v(e,t){return e?`${e}-${t}`:t}function m(e){return`__search-${e}-topic__`}const S=new Map;function C(e,t){S.has(e)||S.set(e,new Set),S.get(e).add(t)}function P(e,t){const n=S.get(e);n&&n.delete(t)}const R=new Map;function b(e,t){R.has(e)||R.set(e,new Set),R.get(e).add(t)}function I(e,t){const n=R.get(e);n&&n.delete(t)}const k=new Map;async function O(e,t){k.has(e)||k.set(e,new Map),k.get(e).set(t.id,t);const n=S.get(e);if(!n)return;const o=[...n].map((e=>e()));await Promise.all(o)}async function B(e,t){const n=k.get(e);if(!n)return;n.delete(t);const o=R.get(e);if(!o)return;const r=[...o].map((e=>e()));await Promise.all(r)}function A(e){const t=k.get(e);return t?[...t.values()]:[]}function D(e){const t=k.get(e);t&&t.clear()}function W(e,t){const n=k.get(e);return n?n.get(t):null}function x(e,t,n){return{...e,action:n||{...e.actions[0],trigger:f.px.UserAction},dispatcherIdentity:t}}function L(e,t,n="ascending"){const o=e||[];if(!t?.length)return o;const r=[],i=new Map;t.forEach((e=>{if(e.key)return i.set(e.key,e);r.push(e)}));let s=o.map((e=>{const{key:t}=e;if(t&&i.has(t)){const e=i.get(t);return i.delete(t),e}return e}));return s.push(...i.values(),...r),s="ascending"===n?s.sort(((e,t)=>(e?.score??1/0)-(t?.score??1/0))):s.sort(((e,t)=>(t?.score??1/0)-(e?.score??1/0))),s}function E(e){const t={};let n=[];let o=[];let r=d.Initial;t.getStatus=()=>r,t.getResultBuffer=()=>n,t.setResultBuffer=e=>{n=e,n?.length&&t.onChange()},t.getRevokedBuffer=()=>o,t.setRevokedBuffer=e=>{o=e,o?.length&&t.onChange()},t.onChange=y;const i={};return t.res=i,i.close=()=>{r!==d.Close&&(r=d.Close,t.onChange())},i.open=()=>{r!==d.Open&&(r=d.Open,t.onChange())},i.respond=n=>{const o=L(t.getResultBuffer(),n,e);t.setResultBuffer(o)},i.revoke=(...e)=>{const n=new Set(e),o=t.getResultBuffer().filter((({key:e})=>{const t=n.has(e);return t&&n.delete(e),!t}));t.setResultBuffer(o),n.size&&(t.getRevokedBuffer().forEach((e=>n.add(e))),t.setRevokedBuffer([...n]))},t}function T(e,t,n){const o=new Set;let r=!1;return{close:()=>{r=!0;for(const e of o)e()},req:{id:t,topic:e,...n,context:n?.context||{},onClose:e=>{o.add(e),r&&e()},removeListener:e=>{o.delete(e)}}}}function F(){return{name:fin.me.name,uuid:fin.me.uuid}}function M(){let e;try{e=fin.Platform.getCurrentSync().identity.uuid}catch(e){}return e}const q="deregistered or does not exist",_=new Error(`provider ${q}`),V=new Error("provider with name already exists"),$=new Error("bad payload"),H=new Error("subscription rejected"),U=new Error(`channel ${q}`),G=new Map;function j(e){const t=K(e);if(t)return t;throw U}function K(e){const t=G.get(e);if(t)return t}function N(e,t){G.set(e,t)}function X(e){console.error("OpenFin Search API: ",e)}const J=new Map;function Q(e){J.has(e)||J.set(e,new Map);const t=J.get(e);return{getRequestsForIdentity:e=>{const n=function(e){return`${e.uuid}:${e.name}`}(e);return t.has(n)||t.set(n,new Map),t.get(n)}}}async function Z(e,t){return(await j(e)).dispatch(w,t)}function z({namespacedTopic:e,topic:t}){const n=W.bind(null,e),o=Q(e),r=Z.bind(null,e);return async(e,i)=>{if(!e||!e.id||!e.providerId){const e=$;return X(e),{error:e.message}}const{id:s,providerId:c}=e,a=n(c);if(!a){const e=_;return X(e),{error:e.message}}const d=o.getRequestsForIdentity(i);let u=d.get(e.id);u||(u=T(t,s,e),d.set(e.id,u));const l=E(),f=()=>{const e=l.getResultBuffer();l.setResultBuffer([]);const t=l.getRevokedBuffer();l.setRevokedBuffer([]);const n=l.getStatus();r({id:s,providerId:c,results:e,revoked:t,status:n})};let p=!0,w=!1;l.onChange=()=>{if(p)return p=!1,void f();w||(w=!0,setTimeout((()=>{w=!1,f()}),100))};try{const{results:e,context:t}=await a.onUserInput(u.req,l.res),n=l.getStatus();return{id:s,providerId:c,status:n,results:e,context:t}}catch(e){return X(e),{id:s,providerId:c,error:e?.message}}}}async function Y(e,t,n){const o=n||await j(e),r=F(),i={...t,identity:r,onResultDispatch:void 0},s=await o.dispatch("2",i);return await O(e,{identity:r,...t}),s}async function ee(e,t){const n=await j(e);return await n.dispatch("3",t),B(e,t)}async function te(e,t,n,o){const r=x(n,F(),o),i=W(e,t);if(i){const{onResultDispatch:e}=i;if(!e)return;return e(r)}const s={providerId:t,result:r};return(await j(e)).dispatch(g,s)}async function ne(e,t){const n={...t,context:t?.context||{}},o={},r=async function*(e,t,{setState:n}){const o=await j(e);for(;;){const e=await o.dispatch("1",t),r=e.error;if(r)throw new Error(r);const i=e;if(t.id=i.id,n(i.state),i.done)return i.value;yield i.value}}(e,n,{setState:e=>{o.state=e}});let i=await r.next();return o.id=n.id||"",o.close=()=>{!async function(e,t){(await j(e)).dispatch(h,{id:t})}(e,o.id)},o.next=()=>{if(i){const e=i;return i=void 0,e}return r.next()},o}async function oe(e){return(await j(e)).dispatch("4",null)}async function re(e){const t=await j(e);var n;n=e,G.delete(n),D(e),await t.disconnect()}function ie(e){const{namespacedTopic:t}=e,n=Q(t);return async o=>{if(!K(t))return;const r=n.getRequestsForIdentity(o);for(const{req:e,close:t}of r.values())t(),r.delete(e.id);N(t,(async e=>{const{namespacedTopic:t}=e,n=await se(e);for(const e of A(t))await Y(t,e,n);return n})(e))}}async function se(e){const{namespacedTopic:t}=e,n=m(t),o=await async function(e){for(let t=0;t<50;t++)try{return await fin.InterApplicationBus.Channel.connect(e,{wait:!1})}catch(e){if(49===t)throw e;await new Promise((e=>setTimeout(e,1e3)))}}(n);return o.register(w,z(e)),o.register(h,function(e){const t=Q(e);return(e,n)=>{const o=t.getRequestsForIdentity(n),r=o.get(e.id);r&&(r.close(),o.delete(e.id))}}(t)),o.register(g,function(e){return async(t,n)=>{if(!t||!t.providerId||!t.result)return void X($);const o=W(e,t.providerId);if(!o)return void X(_);const{onResultDispatch:r}=o;return r?(t.result.dispatcherIdentity=n,r(t.result)):void 0}}(t)),o.onDisconnection(ie(e)),o}async function ce(e){const t="string"==typeof e?e:e.topic,n="string"==typeof e?void 0:e.uuid,o=t||p,r=n||M()||"",i=v(r,o),s={topic:o,namespace:r,namespacedTopic:i};let c=K(i);return c||(c=se(s),N(i,c),await c),{getAllProviders:oe.bind(null,i),register:Y.bind(null,i),search:ne.bind(null,i),deregister:ee.bind(null,i),dispatch:te.bind(null,i),disconnect:re.bind(null,i)}}const ae=new Map;function de(e){const t=ue(e);if(t)return t;throw U}function ue(e){const t=ae.get(e);if(t)return t}const le=new Map;function fe(e,t){le.has(e)||le.set(e,new Set),le.get(e).add(t)}function pe(e,t){const n=le.get(e);n&&n.delete(t)}async function we(e){return[...A(e)].map((e=>({...e,onUserInput:void 0,onResultDispatch:void 0})))}async function ge(e,t){if(W(e,t.id))throw new Error("provider with name already exists");const n=F();return await O(e,{identity:n,...t}),{workspaceVersion:r.u0||"",clientAPIVersion:t.clientAPIVersion||""}}async function he(e,t){await B(e,t)}async function ye(e,t,n,o){const r=W(e,t);if(!r)throw _;const{onResultDispatch:i}=r;if(!i)return;return i(x(n,F(),o))}async function*ve(e,t,n){const o=function(e,t){const n=[],o=[],r=[],i=[];for(const s of e){const e=E(s.scoreOrder),c={results:[],provider:{id:s.id,identity:s.identity,title:s.title,scoreOrder:s.scoreOrder,icon:s.icon,dispatchFocusEvents:s.dispatchFocusEvents}};n.push(c),o.push(e);const a=(async()=>{try{const{results:n,context:o}=await s.onUserInput(t,e.res);c.results=L(c.results||[],n),c.context={...c.context,...o}}catch(e){c.error=e}})();a.finally((()=>{a.done=!0})),i.push(a),r.push(r.length)}return{providerResponses:n,listenerResponses:o,openListenerResponses:r,initialResponsePromises:i}}(t.targets?t.targets.map((t=>W(e,t))).filter((e=>!!e)):[...A(e).filter((e=>!e.hidden))],t),{providerResponses:r,listenerResponses:i}=o;let{openListenerResponses:s,initialResponsePromises:c}=o,a=f.De.Fetching;const u=e=>{a=e,n.setState(a)};let l,p=!1;t.onClose((()=>{p=!0,l&&l()}));do{let e=!1;if(c.length){const t=[];for(const n of c)n.done?e=!0:t.push(n);c=t,c.length||(u(f.De.Fetched),e=!0)}let t,n=!1;const o=()=>{n=!0,t&&t()},w=[];for(const t of s){const n=i[t],s=r[t],c=n.getStatus();(c===d.Open||a===f.De.Fetching&&c===d.Initial)&&(w.push(t),n.onChange=o);const u=n.getResultBuffer();u.length&&(n.setResultBuffer([]),s.results=L(s.results||[],u),e=!0);const l=n.getRevokedBuffer();if(l.length){n.setRevokedBuffer([]);const t=new Set(l);s.results=(s.results||[]).filter((({key:e})=>!t.has(e))),e=!0}}if(s=w,e&&(yield r),p)break;n||(s.length||c.length)&&await Promise.race([...c,new Promise((e=>{t=e})),new Promise((e=>{l=e}))])}while(s.length||c.length);return u(f.De.Complete),r}let me=0;async function Se({namespacedTopic:e,topic:t},n){me+=1;const o=T(t,me.toString(),n),r=ve(e,o.req,{setState:e=>{r.state=e}});return r.id=me.toString(),r.close=o.close,r.state=f.De.Fetching,r}const Ce=new Map;function Pe(e,t){return`${e}:${t}`}function Re(e){return async t=>{if(!t)return X($),{error:$.message};let n;if(t.id)n=Pe(e.namespacedTopic,t.id);else{const o=await Se(e,t);n=Pe(e.namespacedTopic,o.id),t.id=o.id,Ce.set(n,{generator:o})}const o=Ce.get(n);clearTimeout(o.timeout);const r=await o.generator.next();return o.timeout=function(e){return window.setTimeout((()=>{Ce.delete(e)}),1e4)}(n),{...r,id:t.id,state:o.generator.state}}}function be(e,t,n){return de(e).dispatch(t,h,{id:n})}function Ie(e){return t=>function(e,t){const n=Pe(e,t),o=Ce.get(n);o&&o.generator.close()}(e,t.id)}async function ke(e,t,{id:n,query:o,context:r,targets:i=[]}){const s=de(e),c={id:n,query:o,context:r,targets:i,providerId:t.id},a=await s.dispatch(t.identity,w,c),d=a.error;if(d)throw new Error(d);return a}const Oe=new Map;function Be(e,t,n){return`${e}:${t.name}:${t.uuid}:${n}`}const Ae=new Map;function De(e,t,n){return`${e}:${t}:${n}`}function We(e,t){const n=Be.bind(null,e,t.identity),o=be.bind(null,e,t.identity),r=ke.bind(null,e,t);return async(i,s)=>{const c=n(i.id);if(!Oe.has(c)){const e=()=>{o(i.id),Oe.delete(c)};Oe.set(c,e),i.onClose(e)}const a=De(e,t.id,i.id),u=()=>{Ae.delete(a),s.close()};i.onClose(u),Ae.set(a,(e=>{e.results?.length&&s.respond(e.results),e.revoked?.length&&s.revoke(...e.revoked),e.status===d.Open&&s.open(),e.status===d.Close&&u()}));const l=await r(i);return l.status===d.Open&&s.open(),l.status!==d.Close&&l.status!==d.Initial||u(),l}}function xe(e,t){return async n=>{const o=de(e),r={providerId:t.id,result:n};return o.dispatch(t.identity,g,r)}}const Le=new Map;function Ee(e,t){return`${e}-${t.name}-${t.uuid}`}function Te(e){return async(t,n)=>{if(!t||!t.id)return X(new Error(JSON.stringify(t))),void X($);if(W(e,t.id))throw V;return t.identity=n,await async function(e,t){const n=Ee(e,t.identity);Le.has(n)||Le.set(n,[]),Le.get(n).push(t.id),await O(e,{...t,onUserInput:We(e,t),onResultDispatch:xe(e,t)})}(e,t),{workspaceVersion:r.u0||"",clientAPIVersion:t.clientAPIVersion||""}}}function Fe(e){return t=>{t?function(e,t){const n=W(e,t);if(!n)return;const o=Ee(e,n.identity),r=Le.get(o);if(r){const n=r.findIndex((e=>e===t));-1!==n&&(r.splice(n,1),B(e,t))}}(e,t):X($)}}const Me=new Map;function qe(e,t){Me.has(e)||Me.set(e,new Set),Me.get(e).add(t)}function _e(e,t){const n=Me.get(e);n&&n.delete(t)}function Ve(e){return async t=>{!function(e,t){const n=Ee(e,t),o=Le.get(n);if(o){for(const t of o)B(e,t);Le.delete(n)}}(e,t);const n=Me.get(e);n&&n.forEach((e=>e(t)))}}async function $e(e){const{namespacedTopic:t}=e,n=m(e.namespacedTopic),o=await(r=n,fin.InterApplicationBus.Channel.create(r));var r;return o.onConnection(function({namespacedTopic:e}){return async t=>{const n=le.get(e);if(n)for(const e of n)if(!await e(t))throw H}}(e)),o.onDisconnection(Ve(t)),o.register(h,Ie(t)),o.register(w,function(e){return t=>{const n=De(e,t.providerId,t.id),o=Ae.get(n);o&&o(t)}}(t)),o.register("2",Te(t)),o.register("3",Fe(t)),o.register("4",function(e){return async()=>we(e)}(t)),o.register("1",Re(e)),o.register(g,function(e){return async(t,n)=>{if(!t||!t.providerId||!t.result)return void X($);const o=W(e,t.providerId);if(!o)throw _;const{onResultDispatch:r}=o;return r?(t.result.dispatcherIdentity=n,r(t.result)):void 0}}(t)),o}async function He(e){const t=de(e);var n;n=e,ae.delete(n),await t.destroy(),D(e)}async function Ue(e){const t=("string"==typeof e?e:e?.topic||"")||p,n=M()||"",o=v(n,t),r={topic:t,namespace:n,namespacedTopic:o};let i=ue(o);i||(i=await $e(r),function(e,t){ae.set(e,t)}(o,i));const s=pe.bind(null,o),c=_e.bind(null,o),a=P.bind(null,o),d=I.bind(null,o);return{getAllProviders:we.bind(null,o),search:Se.bind(null,r),register:ge.bind(null,o),deregister:he.bind(null,o),onSubscription:fe.bind(null,o),onDisconnect:qe.bind(null,o),onRegister:C.bind(null,o),onDeregister:b.bind(null,o),dispatch:ye.bind(null,o),disconnect:He.bind(null,o),removeListener:e=>{s(e),c(e),a(e),d(e)}}}const{create:Ge}=t,{subscribe:je}=e,Ke={create:Ge,subscribe:je,defaultTopic:"all"},Ne=()=>{window.search=Ke},Xe=e=>{const t=()=>{Ne(),window.removeEventListener(e,t)};return t};if("undefined"!=typeof window){Ne();const e="load",t=Xe(e);window.addEventListener(e,t);const n="DOMContentLoaded",o=Xe(n);window.addEventListener(n,o)}const Je=new Map;async function Qe(){await async function(e){Je.set(e,await je({topic:e,uuid:u.q9.Workspace}))}(c)}let Ze;async function ze(e){return await async function(){return Ze||(Ze=Qe()),Ze}(),Je.get(e)}const Ye=async e=>{if(!e.icon)throw new Error(`${e.id} provider needs to have icon property defined.`);await(0,s.aB)();const t=await ze(c);try{e.clientAPIVersion=r.u0;const n=await t.register(e);return(0,i.ck)({allowed:!0,componentVersion:n?.workspaceVersion}),n?.workspaceVersion,r.u0,{...n,setSearchQuery:async t=>(await(0,s.Xl)()).dispatch(s.WF.SetSearchQuery,{query:t,providerID:e.id})}}catch(e){throw(0,i.ck)({allowed:!1,rejectionCode:e instanceof Error?e.message:"unknown"}),e}},et=async e=>{await(0,s.aB)();return(await ze(c)).deregister(e)};async function tt(){return(await(0,s.Xl)()).dispatch(s.WF.ShowHome,void 0)}async function nt(){return(await(0,s.Xl)()).dispatch(s.WF.HideHome,void 0)}})(),module.exports=o})();
2
2
  //# sourceMappingURL=home.js.map