@openfin/workspace-platform 6.1.1 → 6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,4 +4,4 @@ import type { LaunchAppRequest } from '../shapes';
4
4
  * @param app the app directory entry.
5
5
  * @param opts launch options.
6
6
  */
7
- export declare function launchApp({ app, target }: LaunchAppRequest): Promise<void | import("openfin-adapter").View | import("openfin-adapter").Application | import("openfin-adapter/src/api/platform").Platform | import("openfin-adapter").Identity>;
7
+ export declare function launchApp({ app, target }: LaunchAppRequest): Promise<void | import("openfin-adapter/src/api/platform").Platform | import("openfin-adapter").View | import("openfin-adapter").Application | import("openfin-adapter").Identity>;
package/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{"use strict";var e,t,a,n,o,i,r,s,c,d,p,w,l,u,g={d:(e,t)=>{for(var a in t)g.o(t,a)&&!g.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},h={};g.r(h),g.d(h,{AppManifestType:()=>n,BrowserButtonType:()=>w,CustomActionCallerType:()=>l,GlobalContextMenuOptionType:()=>c,PageTabContextMenuOptionType:()=>d,ViewTabMenuOptionType:()=>p,getCurrentSync:()=>wt,init:()=>$t,wrapSync:()=>pt}),function(e){e.Primary="primary",e.Secondary="secondary",e.TextOnly="textOnly"}(e||(e={})),function(e){e.Fetching="fetching",e.Fetched="fetched",e.Complete="complete"}(t||(t={})),function(e){e.Active="active",e.Default="default"}(a||(a={})),function(e){e.Snapshot="snapshot",e.Manifest="manifest",e.View="view",e.External="external"}(n||(n={})),function(e){e.LandingPage="landingPage",e.AppGrid="appGrid"}(o||(o={})),function(e){e.Suggestion="suggestion"}(i||(i={})),function(e){e.Contact="Contact",e.Custom="Custom",e.List="List",e.Plain="Plain",e.SimpleText="SimpleText"}(r||(r={})),function(e){e.MultiSelect="MultiSelect"}(s||(s={})),function(e){e.NewWindow="NewWindow",e.NewPage="NewPage",e.CloseWindow="CloseWindow",e.OpenStorefront="OpenStorefront",e.Quit="Quit",e.Custom="Custom"}(c||(c={})),function(e){e.Close="Close",e.Duplicate="Duplicate",e.Rename="Rename",e.Save="Save",e.Custom="Custom"}(d||(d={})),function(e){e.NewView="NewView",e.DuplicateViews="DuplicateView",e.OpenWithDefaultBrowser="OpenWithDefaultBrowser",e.ReloadViews="ReloadTab",e.CloseViews="CloseTab",e.AddToChannel="AddToChannel",e.RemoveFromChannel="RemoveFromChannel",e.Custom="Custom"}(p||(p={})),function(e){e.ShowHideTabs="ShowHideTabs",e.ColorLinking="ColorLinking",e.PresetLayouts="PresetLayouts",e.SavePage="SavePage",e.Minimise="Minimise",e.Maximise="Maximise",e.Close="Close",e.Custom="Custom"}(w||(w={})),function(e){e.CustomButton="CustomButton",e.GlobalContextMenu="GlobalContextMenu",e.ViewTabContextMenu="ViewTabContextMenu",e.PageTabContextMenu="PageTabContextMenu",e.API="API"}(l||(l={})),function(e){e.Local="local",e.Dev="dev",e.Staging="staging",e.Prod="prod"}(u||(u={}));const f="undefined"!=typeof window&&"undefined"!=typeof fin,y=("undefined"==typeof process||process.env?.JEST_WORKER_ID,"undefined"!=typeof window),m=y&&"undefined"!=typeof indexedDB,P=y?window.origin:u.Local,v=f&&fin.me.uuid,b=f&&fin.me.name,S=f&&fin.me.entityType,C=(u.Local,u.Dev,u.Staging,u.Prod,e=>e.startsWith("http://")||e.startsWith("https://")?e:P+e),W=(C("https://cdn.openfin.co/workspace/6.1.1"),C("https://cdn.openfin.co/workspace/6.1.1")),I=("undefined"!=typeof WORKSPACE_DOCS_PLATFORM_URL&&C(WORKSPACE_DOCS_PLATFORM_URL),"undefined"!=typeof WORKSPACE_DOCS_CLIENT_URL&&C(WORKSPACE_DOCS_CLIENT_URL),"23.96.68.3");var T,k;(k=T||(T={})).LastLaunchedWorkspaceId="activeWorkspaceId",k.LastFocusedBrowserWindow="lastFocusedBrowserWindow",k.MachineName="machineName",k.NewTabPageLayout="NewTabPageLayout",k.NewTabPageSort="NewTabPageSort";const A=T,M={trace:!0,debug:"undefined"!=typeof LOG_DEBUG&&LOG_DEBUG,info:!1,warn:!0,error:!0,fatal:!0};function V(e,t){const a=void 0===t?M:{...M,...t},n=e?`${e} : `:"";return{trace:a.trace?(t,...a)=>{console.trace(`%c${n}${t}`,"color:#7795f7",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},debug:a.debug?(t,...a)=>{console.info(`%c${n}${t}`,"color:#86db94",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},info:a.info?(t,...a)=>{console.debug(`%c${n}${t}`,"color:#ffffff",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},warn:a.warn?(t,...a)=>{console.warn(`%c${n}${t}`,"color:#edad68",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},error:a.error?(t,a,...o)=>{console.error(`%c${n}${t}`,"color:#f55d67",...o,a),(void 0)(t,a,e,o)}:(t,a,...n)=>{(void 0)(t,a,e,n)},fatal:a.fatal?(t,a,...o)=>{console.error(`%c${n}${t}`,"color:#f70723",...o,a),(void 0)(t,a,e,o)}:(t,a,...n)=>{(void 0)(t,a,e,n)}}}var O,x,F;(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"}(x||(x={})),function(e){e.FinProtocol="fin-protocol"}(F||(F={}));const L={uuid:v,name:v},D=(O.Workspace,O.Workspace,e=>{if(!f)throw new Error("getApplication cannot be used in a non OpenFin env. Avoid using this during pre-rendering.");return fin.Application.wrapSync(e)});var G,U,E;function R(e){if(!f)throw new Error("getOFWindow can only be used in an OpenFin env. Avoid calling this method during pre-rendering.");return fin.Window.wrapSync(e)}!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"}(G||(G={})),(E=U||(U={})).Shown="shown",E.BoundsChanged="bounds-changed",E.LayoutReady="layout-ready",E.EndUserBoundsChanging="end-user-bounds-changing",E.Blurred="blurred",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";const B={name:b,uuid:v};G.Home,O.Workspace,G.Dock,O.Workspace;const $={name:G.Storefront,uuid:O.Workspace};O.Workspace,O.Workspace;const _=e=>e.startsWith(G.BrowserWindow);async function N(){return(await fin.Application.getCurrentSync().getChildWindows()).filter((e=>_(e.identity.name)))}const H=e=>R(e).getOptions().then((()=>!0)).catch((()=>!1)),q=()=>H($),j=V("api.platform-window-focus");async function Q(){if("undefined"!=typeof localStorage)try{const e=localStorage.getItem(A.LastFocusedBrowserWindow),t=JSON.parse(e);if(await H(t))return t}catch(e){j.error("failed to get last focused browser window: ",e)}}function K(e=fin.me.identity){_(e.name)&&function(e){if("undefined"!=typeof localStorage)try{const t=JSON.stringify(e);localStorage.setItem(A.LastFocusedBrowserWindow,t)}catch(e){j.error("failed to save last focused browser window: ",e)}}(e)}var z;V("utils.layout"),function(e){e.TabCreated="tab-created",e.ContainerCreated="container-created",e.ContainerResized="container-resized"}(z||(z={}));const J=e=>{const t=[];return(e&&Array.isArray(e)?e:[]).forEach((e=>{if("component"===e.type)return t.push(e.componentState);const a=J(e.content);t.push(...a)})),t},X=async(e,t,a=B)=>{let n;return _(a.name)&&(n=(await R(a).getOptions()).layout||{settings:{}}),{...n,content:[{type:"stack",content:[{type:"component",componentName:"view",componentState:{title:e,url:t}}]}]}};new Map;const Y=V("utils.channels"),Z=y&&"complete"!==document.readyState&&new Promise((e=>document.addEventListener("readystatechange",(()=>{"complete"===document.readyState&&e()}))));function ee(e){let t;return()=>{if(!f)throw new Error("getChannelClient cannot be used outside an OpenFin env. Avoid using this method during pre-rendering.");return t||(Y.debug(`connecting to channel provider ${e}`),t=(async()=>{await Z;const a=await fin.InterApplicationBus.Channel.connect(e);return a.onDisconnection((async()=>{Y.warn(`disconnected from channel provider ${e}`),t=void 0})),a})().then((t=>(Y.debug(`connected to channel provider ${e}`),t))).catch((t=>{Y.error(`failed to connect to channel provider ${e}`,t)}))),t}}V("api.browser.protocol");const te=new Map,ae=e=>{const t=(e=>`__browser_window__-${e.uuid}-${e.name}`)(e);return te.has(t)||te.set(t,ee(t)),te.get(t)()};var ne,oe,ie,re;(re=ne||(ne={})).CloseBrowserWindow="close-browser-window",re.QuitPlatform="quit-platform",re.ClosePage="close-page",re.AddToChannel="add-to-channel",re.RemoveFromChannel="remove-from-channel",re.SavePage="save-page",re.DuplicatePage="duplicate-page",function(e){e.GetPages="get-pages",e.GetActivePageForWindow="get-active-page-for-window",e.AttachPagesToWindow="attach-pages-to-window",e.DetachPagesFromWindow="detach-pages-from-window",e.SetActivePageForWindow="set-active-page-for-window",e.RenamePage="rename-page",e.ReorderPagesForWindow="reorder-pages-for-window",e.UpdatePageForWindow="update-page-for-window",e.UpdatePagesWindowOptions="update-pages-window-options",e.IsDetachingPages="is-detaching-pages",e.IsActivePageChanging="is-active-page-changing"}(oe||(oe={})),function(e){e.AttachedPagesToWindow="attached-pages-to-window",e.DetachedPagesFromWindow="detached-pages-from-window"}(ie||(ie={})),new Map;const se=async e=>{const t=await ae(e);return await t.dispatch(oe.GetPages)},ce=async e=>(await ae(e.identity)).dispatch(oe.UpdatePageForWindow,e);var de;!function(e){e.LaunchApp="launchApp",e.SavePage="savePage",e.GetSavedPage="getSavedPage",e.CreateSavedPage="createSavedPage",e.UpdateSavedPage="updateSavedPage",e.DeleteSavedPage="deleteSavedPage",e.GetSavedPages="getSavedPages",e.CreateSavedPageInternal="createSavedPageInternal",e.UpdateSavedPageInternal="updateSavedPageInternal",e.DeleteSavedPageInternal="deleteSavedPageInternal",e.SharePage="sharePage",e.UpdatePageForWindow="updatePageForWindow",e.AttachPagesToWindow="attachPagesToWindow",e.DetachPagesFromWindow="detachPagesFromWindow",e.ReorderPagesForWindow="reorderPagesForWindow",e.SetActivePage="setActivePage",e.GetAllAttachedPages="getAllAttachedPages",e.GetActivePageIdForWindow="getActivePageIdForWindow",e.GetPagesForWindow="getPagesForWindow",e.GetPageForWindow="getPageForWindow",e.GetSavedPageMetadata="getSavedPageMetadata",e.GetUniquePageTitle="getUniquePageTitle",e.GetLastFocusedBrowserWindow="getLastFocusedBrowserWindow",e.GetThemes="getThemes",e.OpenGlobalContextMenuInternal="openGlobalContextMenuInternal",e.OpenViewTabContextMenuInternal="openViewTabContextMenuInternal",e.OpenPageTabContextMenuInternal="openPageTabContextMenuInternal",e.InvokeCustomActionInternal="invokeCustomActionInternal"}(de||(de={}));const pe=async e=>{const t=fin.Platform.wrapSync(e),a=await t.getClient(),n="Target is not a Workspace Platform. Target must call WorkspacePlatform.init";try{if(!0===await a.dispatch("isWorkspacePlatform"))return a;throw new Error(n)}catch(e){throw new Error(n)}},we=async()=>{const e=await N();return(await Promise.all(e.map((async({identity:e})=>se(e))))).reduce(((e,t)=>e.concat(t)),[])},le=async()=>(await pe(B)).dispatch(de.GetSavedPages,void 0),ue=async e=>(await pe(B)).dispatch(de.GetSavedPage,e),ge=async(e,t)=>{const a=await(async e=>(await we()).find((t=>t.pageId===e)))(e);return!a||a.title===t.title&&e===t.pageId||await ce({identity:a.parentIdentity,pageId:e,page:{pageId:t.pageId,title:t.title}}),a},he=async({page:e})=>{await ge(e.pageId,e),await(async e=>(await pe(B)).dispatch(de.CreateSavedPage,e))({page:e})},fe=async e=>{await ue(e)&&await(async e=>(await pe(B)).dispatch(de.DeleteSavedPage,e))(e)},ye=async({pageId:e,page:t})=>(await ge(e,t),await(async e=>(await pe(B)).dispatch(de.UpdateSavedPage,e))({pageId:e,page:t})),me=async e=>await ue(e.pageId)?ye({pageId:e.pageId,page:e}):he({page:e}),Pe=async e=>{await ce(e)},ve=async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.DetachPagesFromWindow,e))(e)},be=async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.SetActivePageForWindow,e))(e)},Se=e=>se(e),Ce=async({identity:e,pageId:t})=>(await Se(e)).find((e=>e.pageId===t)),We=async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.ReorderPagesForWindow,e))(e)},Ie=(e,t)=>!t.find((t=>t===e)),Te=(e,t)=>`${e} (${t})`;async function ke(e="Untitled Page"){const[t,a]=await Promise.all([le(),we()]),n=[...t,...a].map((({title:e})=>e));if(!n.find((t=>t===e)))return e;let o=1;const i=e.replace(/ \(.+\)$/,"");for(;!Ie(Te(i,o),n);)o+=1;return Te(i,o)}const Ae=V("api.cleanup"),Me=new Map,Ve=e=>`${e.uuid}-${e.name}`,Oe=((e,t=0)=>{let a,n,o=!1;const i=async n=>{const r=await e(...n);if(o){await new Promise((e=>setTimeout(e,t)));const e=a;return a=void 0,o=!1,i(e)}return r};return(...e)=>(n?(o=!0,a=e):n=i(e).then((e=>(n=void 0,e))),n)})((async function(){Ae.debug("scheduling views to cleanup");const e=await we(),t=new Set;e.forEach((e=>{J(e.layout.content).forEach((e=>{if(e.name){const a=Ve(e);t.add(a),Ae.debug(`preserving view with id ${a}`)}}))}));const a=R(B);(await a.getCurrentViews()).forEach((({identity:e})=>{const a=Ve(e);if(t.has(a)||Me.has(a))return;const n=setTimeout((()=>{Ae.debug(`destroying view with id ${a}`),fin.View.wrapSync(e).destroy(),Me.delete(a)}),5e3);Ae.debug(`scheduled cleanup of view with id ${a}`),Me.set(a,n)})),Me.forEach(((e,a)=>{t.has(a)&&(clearTimeout(e),Me.delete(a),Ae.debug(`cancelled scheduled cleanup of view with id ${a}`))}))}),2500),xe=({name:e})=>{_(e)&&Oe().catch((e=>{}))};let Fe={};const Le=({actionId:e,payload:t})=>{if("function"!=typeof Fe[e])throw new Error(`Cannot find a configured function for the action '${e}'`);return Fe[e](t)};function De(){return localStorage.getItem(A.MachineName)}let Ge,Ue;async function Ee(){return Ge||(Ge=await fin.System.getMachineId()),Ge}async function Re(e){const t=e||await fin.Platform.getCurrentSync().getSnapshot();if(t.snapshotDetails?.machineId)return t;const a=De();return{...t,snapshotDetails:{...e.snapshotDetails,machineId:await Ee(),machineName:a}}}function Be(e){return new Promise(((t,a)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>a(e.error)}))}function $e(e,t){const a=indexedDB.open(e);a.onupgradeneeded=()=>a.result.createObjectStore(t);const n=Be(a);return(e,a)=>n.then((n=>a(n.transaction(t,e).objectStore(t))))}function _e(){return Ue||(Ue=$e("keyval-store","keyval")),Ue}const Ne=m&&$e("openfin-home-pages","pages");async function He(e){const t=await function(e,t=_e()){return t("readonly",(t=>Be(t.get(e))))}(e,Ne);return t?(t.pageId=e.toString(),t.title=t.title||t.pageId,t):null}async function qe(e){const t=await function(e=_e()){const t=[];return function(e,t){return e("readonly",(e=>(e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},Be(e.transaction))))}(e,(e=>t.push(e.key))).then((()=>t))}(Ne),a=await Promise.all(t.map((e=>He(e.toString()))));return e?a.filter((t=>((e,t="")=>e.toLowerCase().includes(t.toLowerCase()))(t.title,e))):a}async function je({page:e}){await function(e,t,a=_e()){return a("readwrite",(a=>(a.put(t,e),Be(a.transaction))))}(e.pageId,e,Ne)}async function Qe(e){await function(e,t=_e()){return t("readwrite",(t=>(t.delete(e),Be(t.transaction))))}(e,Ne)}async function Ke({pageId:e,page:t}){if(void 0===await He(e))throw new Error("page not found");await je({page:t}),e!==t.pageId&&await Qe(e)}var ze,Je;!function(e){e.Label="normal",e.Separator="separator",e.Submenu="submenu",e.Checkbox="checkbox"}(ze||(ze={}));var Xe=new Uint8Array(16);function Ye(){if(!Je&&!(Je="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Je(Xe)}const Ze=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,et=function(e){return"string"==typeof e&&Ze.test(e)};for(var tt=[],at=0;at<256;++at)tt.push((at+256).toString(16).substr(1));const nt=function(e,t,a){var n=(e=e||{}).random||(e.rng||Ye)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){a=a||0;for(var o=0;o<16;++o)t[a+o]=n[o];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=(tt[e[t+0]]+tt[e[t+1]]+tt[e[t+2]]+tt[e[t+3]]+"-"+tt[e[t+4]]+tt[e[t+5]]+"-"+tt[e[t+6]]+tt[e[t+7]]+"-"+tt[e[t+8]]+tt[e[t+9]]+"-"+tt[e[t+10]]+tt[e[t+11]]+tt[e[t+12]]+tt[e[t+13]]+tt[e[t+14]]+tt[e[t+15]]).toLowerCase();if(!et(a))throw TypeError("Stringified UUID is invalid");return a}(n)};var ot;!function(e){e.RegisterStorefrontProvider="register-storefront-provider",e.DeregisterStorefrontProvider="deregister-storefront-provider",e.GetStorefrontProviders="get-storefront-providers",e.HideStorefront="hide-storefront",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.ShowStorefront="show-storefront",e.CreateStorefrontWindow="create-storefront-window",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"}(ot||(ot={})),ee("__of_workspace_protocol__");const it=async(e,t)=>{const a=await(async e=>({...e,layoutDetails:{machineId:await Ee(),machineName:De()}}))(t);return{pageId:nt(),title:e,layout:a,isReadOnly:!1,hasUnsavedChanges:!0}},rt=e=>({identity:e,openfinWindow:fin.Window.wrapSync(e),getPages:async()=>(await pe(e)).dispatch(de.GetPagesForWindow,e),getPage:async t=>(await pe(e)).dispatch(de.GetPageForWindow,{identity:e,pageId:t}),addPage:async t=>{const a=await pe(e);t?.title||(t.title=await a.dispatch(de.GetUniquePageTitle,void 0));const n=(await a.dispatch(de.GetAllAttachedPages,void 0)).find((e=>e.pageId===t.pageId||e.title===t.title));if(n)throw n.pageId===t.pageId?new Error(`page with id ${t.pageId} is already attached to a browser window ${n.parentIdentity.name}`):new Error(`page with title ${t.title} is already attached to a browser window ${n.parentIdentity.name}`);const o={identity:e,pages:[t]};return a.dispatch(de.AttachPagesToWindow,o)},removePage:async t=>(await pe(e)).dispatch(de.DetachPagesFromWindow,{identity:e,pageIds:[t]}),setActivePage:async t=>(await pe(e)).dispatch(de.SetActivePage,{identity:e,pageId:t}),updatePage:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.UpdatePageForWindow,t)},reorderPages:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.ReorderPagesForWindow,t)},_openGlobalContextMenu:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.OpenGlobalContextMenuInternal,t)},replaceToolbarOptions:async t=>{const a=fin.Window.wrapSync(e);await a.updateOptions({workspacePlatform:{toolbarOptions:t}})},replaceWindowStateButtonOptions:async t=>{const a=fin.Window.wrapSync(e);await a.updateOptions({workspacePlatform:{windowStateButtonOptions:t}})},_openViewTabContextMenu:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.OpenViewTabContextMenuInternal,t)},_openPageTabContextMenu:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.OpenPageTabContextMenuInternal,t)}}),st=e=>{const t=fin.Platform.wrapSync(e);return{wrapSync:e=>rt(e),createWindow:async e=>{const a=await t.createWindow(e);return rt(a.identity)},getAllAttachedPages:async()=>(await t.getClient()).dispatch(de.GetAllAttachedPages,void 0),getAllWindows:async()=>(await fin.Application.wrapSync(e).getChildWindows()).filter((e=>e.identity.name.includes("internal-generated-window-"))).map((e=>rt(e.identity))),getUniquePageTitle:async t=>(await pe(e)).dispatch(de.GetUniquePageTitle,t),getLastFocusedWindow:async()=>(await pe(e)).dispatch(de.GetLastFocusedBrowserWindow,void 0)}},ct=e=>({createPage:async t=>(await pe(e)).dispatch(de.CreateSavedPageInternal,t),deletePage:async t=>(await pe(e)).dispatch(de.DeleteSavedPageInternal,t),updatePage:async t=>(await pe(e)).dispatch(de.UpdateSavedPageInternal,t),getPage:async t=>(await pe(e)).dispatch(de.GetSavedPage,t),getPages:async t=>(await pe(e)).dispatch(de.GetSavedPages,t),savePage:async t=>(await pe(e)).dispatch(de.SavePage,t)}),dt=e=>({getThemes:async()=>(await pe(e)).dispatch(de.GetThemes,void 0)}),pt=e=>{const t=fin.Platform.wrapSync(e);return Object.assign(t,{applySnapshot:async t=>{if("string"!=typeof t&&!t?.windows)throw new Error("Not a valid browser snapshot");return fin.Platform.wrapSync(e).applySnapshot(t)},getSnapshot:()=>fin.Platform.wrapSync(e).getSnapshot().then((e=>e)),launchApp:async t=>(t.target||(t.target={uuid:v,name:b,entityType:S||"unknown"}),(await pe(e)).dispatch(de.LaunchApp,t)),_invokeCustomAction:async(t,a)=>{const n=await pe(e),o={actionId:t,payload:{...a,callerType:a.callerType||l.API}};return n.dispatch(de.InvokeCustomActionInternal,o)},Theme:dt(e),Browser:st(e),Storage:ct(e)})},wt=()=>pt(fin.me.identity),lt=async(e=B)=>{const{workspacePlatform:t}=await R(e).getOptions();return{newPageUrl:t?.newPageUrl,newTabUrl:t?.newTabUrl}},ut=[{type:ze.Label,label:"Close Window",data:{type:c.CloseWindow}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Open Storefront",data:{type:c.OpenStorefront}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Quit Workspace",data:{type:c.Quit}}],gt=[{type:ze.Separator,data:void 0},{type:ze.Label,label:"Close Window",data:{type:c.CloseWindow}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Quit",data:{type:c.Quit}}],ht=async(e,t)=>{if(!e)return;const a=t.identity,n=await ae(a);switch(e.type){case c.NewWindow:const{newPageUrl:t}=await lt(a);if(!t)throw new Error("Trying to create a new empty window without a newPageUrl set");wt().createView({target:void 0,url:t});break;case c.NewPage:await(async e=>{const t=await(async(e=B)=>{const t=await wt().Browser.getUniquePageTitle("Untitled Page"),a=await(async(e=B)=>{const{newPageUrl:t}=await lt(e);if(!t)throw new Error("Trying to create a new page without a newPageUrl set");return X("New Tab",t,e)})(e);return it(t,a)})(e);await wt().Browser.wrapSync(e).addPage(t)})(a);break;case c.CloseWindow:n.dispatch(ne.CloseBrowserWindow);break;case c.Quit:n.dispatch(ne.QuitPlatform);break;case c.OpenStorefront:(async()=>{await q()&&async function(e){const t=R(e);"minimized"===await t.getState()&&await t.restore(),await t.show(),await t.bringToFront(),await t.focus()}($)})();break;case c.Custom:if(e.action){const t={callerType:l.GlobalContextMenu,windowIdentity:a,customData:e.action.customData};wt()._invokeCustomAction(e.action.id,t)}else console.warn(`Encountered a Custom context menu option with an "action" property with value "${e.action}"`)}},ft=async(e,t)=>{const a=await ae(t.identity);switch(e.type){case d.Save:case d.Rename:a.dispatch(ne.SavePage,t.pageId);break;case d.Duplicate:a.dispatch(ne.DuplicatePage,t.pageId);break;case d.Close:a.dispatch(ne.ClosePage,t.pageId);break;case d.Custom:if(e.action){const a={callerType:l.PageTabContextMenu,windowIdentity:t.identity,pageId:t.pageId,customData:e.action.customData};wt()._invokeCustomAction(e.action.id,a)}else console.warn(`Encountered a Custom context menu option with an "action" property with value "${e.action}"`)}},yt=async(e,t)=>{if(!e)return;const a=t.identity;switch(e.type){case p.CloseViews:await(async(e,t)=>{if((await fin.Window.wrapSync(e).getCurrentViews()).length!==t.length)t.forEach((async e=>{const t=fin.View.wrapSync(e);await t.destroy()}));else{const t=(await wt().Browser.wrapSync(e).getPages()).find((e=>e.isActive));(await ae(e)).dispatch(ne.ClosePage,t?.pageId)}})(a,t.selectedViews);break;case p.OpenWithDefaultBrowser:await(async(e,t)=>{const a=await(e=>Promise.all(e.map((async e=>fin.View.wrapSync(e).getInfo()))))(t),{newPageUrl:n,newTabUrl:o}=await lt(e);a.forEach((async e=>{e.url!==n&&e.url!==o&&await fin.System.openUrlWithBrowser(e.url)}))})(a,t.selectedViews);break;case p.ReloadViews:t.selectedViews.forEach((async e=>{const t=fin.View.wrapSync(e);await t.reload()}));break;case p.NewView:await(async(e,t)=>{const a=t.selectedViews[0],n=fin.View.wrapSync(a),o=await(async e=>{const{newTabUrl:t}=await lt(e);if(!t)throw new Error("Trying to create a new page without a newTabUrl set");return{...X("New View",t),url:t,target:e}})(e);await wt().createView(o,e,n.identity)})(a,t);break;case p.DuplicateViews:((e,t)=>{t.forEach((async t=>{const a=fin.View.wrapSync(t);await(async(e,t)=>{const{url:a}=await t.getInfo(),n={...await t.getOptions(),url:a,target:e,name:void 0};await wt().createView(n,e,t.identity)})(e,a)}))})(a,t.selectedViews);break;case p.AddToChannel:(async(e,t,a)=>{const n={newChannelId:t,selectedViews:a};(await ae(e)).dispatch(ne.AddToChannel,n)})(a,e.option,t.selectedViews);break;case p.RemoveFromChannel:(async(e,t)=>{(await ae(e)).dispatch(ne.RemoveFromChannel,t)})(a,t.selectedViews);break;case p.Custom:if(e.action){const n={callerType:l.ViewTabContextMenu,windowIdentity:a,selectedViews:t.selectedViews,customData:e.action.customData};wt()._invokeCustomAction(e.action.id,n)}}};async function mt(e,t){const a=await(async e=>{const t=await q(),{newPageUrl:a}=await lt(e),n=await(async e=>{const t=R(e),{workspacePlatform:a}=await t.getOptions();return a?.disableMultiplePages})(e),o=[];return a&&(o.push({type:ze.Label,label:"New Window",data:{type:c.NewWindow}}),n||o.push({type:ze.Label,label:"New Page",data:{type:c.NewPage}})),t?[...o,...ut]:[...o,...gt]})(e.identity),n={...e,template:a,callback:ht};await this.openGlobalContextMenu(n,t)}const Pt=async(e,t)=>{const{x:a,y:n,identity:o,template:i,callback:r}=e,{data:s}=await function(e,t){if(!f)throw new Error("showContextMenu can only be used in an OpenFin env. Avoid calling this method during pre-rendering.");if(!t&&!fin.me.isWindow)throw new Error("showContextMenu can only be used in an OpenFin window.");return(t||fin.Window.getCurrentSync()).showPopupMenu(e)}({x:a,y:n,template:i},fin.Window.wrapSync(o));r(s,e)};async function vt(e,t){const a={...e,callback:yt};await this.openViewTabContextMenu(a,t)}async function bt(e,t){const a=await wt().Storage.getPage(e.pageId),n=await(o=!!a,[{type:ze.Label,label:"Save Page",data:{type:d.Save}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Rename Page",data:{type:d.Rename},enabled:o},{type:ze.Label,label:"Duplicate Page",data:{type:d.Duplicate}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Close Page",data:{type:d.Close}}]);var o;const i={...e,template:n,callback:ft};await this.openPageTabContextMenu(i,t)}async function St({app:e,target:t}){const a=fin.Platform.getCurrentSync();switch(e.manifestType){case n.Snapshot:return a.applySnapshot(e.manifest);case n.View:return async function(e,t){const a=fin.Platform.getCurrentSync();if("view"===t.entityType){const a=fin.View.wrapSync(t),n=await a.getParentLayout();return await n.replaceView(t,{manifestUrl:e.manifest,url:void 0,target:void 0}),a.destroy()}return a.createView({name:void 0,url:void 0,manifestUrl:e.manifest,target:void 0})}(e,t);case n.External:return fin.System.launchExternalProcess({path:e.manifest,uuid:e.appId});default:return fin.Application.startFromManifest(e.manifest)}}const Ct=e=>e&&"object"==typeof e&&!Array.isArray(e);function Wt(e,...t){if(!t.length)return e;const a=t.shift();return Ct(e)&&Ct(a)&&Object.entries(a).forEach((([t,a])=>{if(Ct(a))return e[t]||(e[t]={}),Wt(e[t],a);e[t]=a})),Wt(e,...t)}var It,Tt;!function(e){e.HomeIndex="/home/",e.HomeSearch="/home/search/",e.HomePagesRename="/home/pages/rename/",e.Dock="/home/dock/",e.BrowserPagesLanding="/browser/pages/landing/",e.HomeIndicator="/home/indicator/",e.Browser="/browser/",e.BrowserPopupMenu="/browser/popup-menu/",e.Provider="/provider/",e.BrowserPopupMenuSharePage="/browser/popup-menu/share-page/",e.BrowserPopupMenuSavePage="/browser/popup-menu/save-page/",e.BrowserPopupMenuLayouts="/browser/popup-menu/layouts/layouts/",e.BrowserPopupMenuColorLinking="/browser/popup-menu/color-linking/color-linking/",e.BrowserIndicator="/browser/indicator/",e.ResponseModal="/browser/popup-menu/response-modal/",e.Docs="/provider/docs/",e.Storefront="/storefront/",e.DeprecatedAlert="/provider/deprecated-alert/"}(It||(It={})),function(e){e.IconOpenFinLogo="/icons/openfinlogo.svg",e.IconFilter="/icons/filter.svg"}(Tt||(Tt={}));const kt=W+{...Tt,...It}.Browser;function At(e,t){const a=Wt({},t,e);return a.detachOnClose=!0,a}async function Mt(e,t,a){const n=e.manifestUrl?await t({manifestUrl:e.manifestUrl},a):void 0;if(n?.interop&&e.interop){const t={...e,...n,interop:e.interop};return delete t.manifestUrl,t}return e}const Vt=e=>{const t=e.name===G.Home,a=e.name?.startsWith(G.HomeInternal),n=e.name?.startsWith(G.BrowserMenu);return!t&&!a&&!n},Ot=e=>"workspacePlatform"in e?e:(({workstacks:e,pages:t,...a})=>({...a,workspacePlatform:{pages:t||e||null}}))(e),xt={contextMenuSettings:{reload:!1},backgroundThrottling:!0,url:kt,contextMenu:!0,cornerRounding:{height:8,width:8},closeOnLastViewRemoved:!1,experimental:{showFavicons:!0,defaultFaviconUrl:`${W}/icons/defaultFavicon.svg`},permissions:{System:{openUrlWithBrowser:{enabled:!0,protocols:["mailto"]}}}},Ft={dimensions:{borderWidth:3,headerHeight:30}},Lt=(e,t)=>t?e.map((e=>({...t,...e}))):e,Dt=e=>{const t=fin.Window.wrapSync(e);return Promise.all([t.bringToFront(),t.restore(),t.focus()])};let Gt=[];const Ut=()=>Gt,Et=e=>async t=>{class a extends t{constructor(){super(),this.isWorkspacePlatform=()=>!0,this.addPage=this.attachPagesToWindow,this.detachPagesFromWindow=ve,this.getAllAttachedPages=we,this.getPagesForWindow=Se,this.getPageForWindow=Ce,this.setActivePage=be,this.launchApp=St,this.savePage=me,this.createSavedPageInternal=he,this.updateSavedPageInternal=ye,this.deleteSavedPageInternal=fe,this.reorderPagesForWindow=We,this.getUniquePageTitle=ke,this.updatePageForWindow=Pe,this.getLastFocusedBrowserWindow=Q,this.getThemes=Ut,this.invokeCustomActionInternal=Le,this.openGlobalContextMenuInternal=this.openGlobalContextMenuInternal.bind(this),this.openGlobalContextMenu=this.openGlobalContextMenu.bind(this),this.getSavedPages=this.getSavedPages.bind(this),this.getSavedPage=this.getSavedPage.bind(this),this.createSavedPage=this.createSavedPage.bind(this),this.updateSavedPage=this.updateSavedPage.bind(this),this.deleteSavedPage=this.deleteSavedPage.bind(this),this.attachPagesToWindow=this.attachPagesToWindow.bind(this),this.openViewTabContextMenuInternal=this.openViewTabContextMenuInternal.bind(this),this.openViewTabContextMenu=this.openViewTabContextMenu.bind(this),this.openPageTabContextMenuInternal=this.openPageTabContextMenuInternal.bind(this),this.openPageTabContextMenu=this.openPageTabContextMenu.bind(this)}async getSnapshot(){const e=await async function(e){const t=await N();return await Promise.all(t.map((({identity:e})=>(async e=>(await ae(e)).dispatch(oe.UpdatePagesWindowOptions))(e)))),e?e():Re()}((async()=>Re(await super.getSnapshot(void 0,fin.me.identity))));return{...e,windows:e.windows.filter(Vt)}}async applySnapshot({snapshot:e,options:t}){t?.closeExistingWindows&&await async function(){const e=await N();await Promise.all(e.map((e=>e.close(!0).catch((()=>{})))))}();let a=e;return"string"==typeof a&&(a=await super.fetchManifest({manifestUrl:a},fin.me.identity)),async function(e,t){const a=await we(),n=e.snapshotDetails?.monitorInfo||await fin.System.getMonitorInfo(),o=(e.windows||[]).filter((({layout:e})=>!!e)),i=new Map;a.forEach((e=>i.set(e.pageId,e)));const r=[],s=o.map((async e=>{const t=Ot(e),a=[],n=(e=>{let t=!1;const a=(e||[]).map((e=>{const a=function({id:e,name:t,...a}){return{pageId:e,title:t,...a}}(e);return t&&a.isActive&&(a.isActive=!1),a.isActive&&(t=!0),a}));return!t&&a.length&&(a[0].isActive=!0),a})(t?.workspacePlatform?.pages);if(!n?.length){const e=await ke();a.push(await it(e,t.layout))}let o;n.forEach((e=>{const t=i.get(e.pageId);t?o=t:a.push(e)})),o&&await Promise.all([be({identity:o.parentIdentity,pageId:o.pageId}),Dt(o.parentIdentity)]),a.length&&r.push({...t,workspacePlatform:{...t.workspacePlatform,pages:a}})}));if(await Promise.all(s),!r.length)return;const c=fin.Platform.getCurrentSync();return(t||c.applySnapshot.bind(c))({...e,snapshotDetails:{...e.snapshotDetails,monitorInfo:n},windows:r})}(a,(e=>super.applySnapshot({snapshot:e,options:{...t,closeExistingWindows:!1}})))}async createWindow(t,a){let n=Ot(t);const o=await this.getThemes();return n=((e,t,a)=>{let n=e;const o=n?.workspacePlatform?.pages;if(o){const e=o.find((e=>e.isActive));e?n.layout=e.layout:(o[0].isActive=!0,n.layout=o[0].layout)}if(n.layout){if(n=Wt({},t.defaultWindowOptions,n,xt),n.layout=Wt(n.layout,Ft),(n.icon||n.taskbarIcon)&&(n.taskbarIconGroup=n.taskbarIconGroup||fin.me.identity.uuid),!n.backgroundColor){const e=a?.palette;n.backgroundColor=e?.background2||e?.backgroundPrimary}const e=n.workspacePlatform.newTabUrl;e&&(n.layout.settings||(n.layout.settings={}),n.layout.settings.newTabButton={url:e}),n=(e=>{const t=e;return t.workspacePlatform||(t.workspacePlatform={}),t.workspacePlatform._internalDeferShowEnabled=!0,t.workspacePlatform._internalAutoShow=t.workspacePlatform?._internalAutoShow||void 0===t.autoShow||t.autoShow,t.autoShow=!1,t})(n)}return n.workspacePlatform?.pages&&(n.workspacePlatform.pages=Lt(n.workspacePlatform.pages,t?.defaultPageOptions)),n})(n,e,o[0]),n=await(async e=>{const t=await fin.System.getMonitorInfo(),a=t.primaryMonitor.availableRect.bottom-t.primaryMonitor.availableRect.top,n=t.primaryMonitor.availableRect.right-t.primaryMonitor.availableRect.left;return e.defaultHeight=e.defaultHeight||"800",e.defaultWidth=e.defaultWidth||"800",a<e.defaultHeight&&(e.defaultHeight=a),n<e.defaultWidth&&(e.defaultWidth=n),e})(n),(i=(e,t)=>super.createWindow(e,t),async(e,t)=>{const a=await i(e,t);return e?.workspacePlatform?._internalDeferShowEnabled?(await a.addListener(U.ShowRequested,(()=>{})),a):a})(n,a);var i}async createView(t,a){return t.opts=At(t.opts,e?.defaultViewOptions),t.opts=await Mt(t.opts,this.fetchManifest,a),super.createView(t,a)}async replaceView(t,a){return t.opts.newView=await At(t.opts.newView,e?.defaultViewOptions),t.opts.newView=await Mt(t.opts.newView,this.fetchManifest,a),super.replaceView(t,a)}async replaceLayout(e,t){return e.opts.layout?.dimensions,super.replaceLayout(e,t)}async closeView(e,t){const a=fin.View.wrapSync(e.view);await super.closeView(e,t),await a.destroy().catch((e=>e))}async getSavedPage(...e){return He.apply(this,e)}async getSavedPages(...e){return qe.apply(this,e)}async createSavedPage(...e){return je.apply(this,e)}async deleteSavedPage(...e){return Qe.apply(this,e)}async updateSavedPage(...e){return Ke.apply(this,e)}async attachPagesToWindow(t){t.pages=Lt(t.pages,e?.defaultPageOptions),await(async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.AttachPagesToWindow,e))(e)})(t)}async openGlobalContextMenuInternal(...e){return mt.apply(this,e)}async openGlobalContextMenu(...e){return Pt.apply(this,e)}async openViewTabContextMenuInternal(...e){return vt.apply(this,e)}async openViewTabContextMenu(...e){return Pt.apply(this,e)}async openPageTabContextMenuInternal(...e){return bt.apply(this,e)}async openPageTabContextMenu(...e){return Pt.apply(this,e)}}return"function"==typeof e?.overrideCallback?e.overrideCallback(a):new a};async function Rt(){(function(){const e=D(L);e.addListener(x.WindowOptionsChanged,Oe),e.addListener(x.WindowClosed,xe),e.addListener(x.WindowCreated,xe)})(),async function(){const e=fin.Application.getCurrentSync();await e.addListener("window-focused",K)}()}let Bt;const $t=async e=>{const t=I.split(".").map((e=>parseInt(e))),a=await(async e=>new Promise((async t=>{const a=(await fin.System.getVersion()).split(".").map((e=>parseInt(e)));t(e.every(((t,n)=>!(n<3)||a[n]===e[n])))})))(t),n=e?.theme;var o;if(n&&((o=n).forEach((e=>{const t=e.palette.backgroundPrimary;if(!t.includes("#")&&!t.includes("rgb")&&!t.includes("hsl"))throw new Error("Background primary color is not the right format.")})),Gt=o),e?.customActions&&(Fe=e?.customActions),a)return function(e){if(!f)throw new Error("Cannot be used outside an OpenFin env.");return Bt||(fin.Platform.getCurrentSync().once("platform-api-ready",(()=>Rt())),Bt=fin.Platform.init({overrideCallback:Et(e),interopOverride:e?.interopOverride})),Bt}(e?.browser);throw new Error(`Runtime version is not supported. ${t[0]}.${t[1]}.${t[2]}.* is required`)};module.exports=h})();
1
+ (()=>{"use strict";var e,t,a,n,o,i,r,s,c,d,p,w,l,u,g={d:(e,t)=>{for(var a in t)g.o(t,a)&&!g.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},h={};g.r(h),g.d(h,{AppManifestType:()=>n,BrowserButtonType:()=>w,CustomActionCallerType:()=>l,GlobalContextMenuOptionType:()=>c,PageTabContextMenuOptionType:()=>d,ViewTabMenuOptionType:()=>p,getCurrentSync:()=>wt,init:()=>$t,wrapSync:()=>pt}),function(e){e.Primary="primary",e.Secondary="secondary",e.TextOnly="textOnly"}(e||(e={})),function(e){e.Fetching="fetching",e.Fetched="fetched",e.Complete="complete"}(t||(t={})),function(e){e.Active="active",e.Default="default"}(a||(a={})),function(e){e.Snapshot="snapshot",e.Manifest="manifest",e.View="view",e.External="external"}(n||(n={})),function(e){e.LandingPage="landingPage",e.AppGrid="appGrid"}(o||(o={})),function(e){e.Suggestion="suggestion"}(i||(i={})),function(e){e.Contact="Contact",e.Custom="Custom",e.List="List",e.Plain="Plain",e.SimpleText="SimpleText"}(r||(r={})),function(e){e.MultiSelect="MultiSelect"}(s||(s={})),function(e){e.NewWindow="NewWindow",e.NewPage="NewPage",e.CloseWindow="CloseWindow",e.OpenStorefront="OpenStorefront",e.Quit="Quit",e.Custom="Custom"}(c||(c={})),function(e){e.Close="Close",e.Duplicate="Duplicate",e.Rename="Rename",e.Save="Save",e.Custom="Custom"}(d||(d={})),function(e){e.NewView="NewView",e.DuplicateViews="DuplicateView",e.OpenWithDefaultBrowser="OpenWithDefaultBrowser",e.ReloadViews="ReloadTab",e.CloseViews="CloseTab",e.AddToChannel="AddToChannel",e.RemoveFromChannel="RemoveFromChannel",e.Custom="Custom"}(p||(p={})),function(e){e.ShowHideTabs="ShowHideTabs",e.ColorLinking="ColorLinking",e.PresetLayouts="PresetLayouts",e.SavePage="SavePage",e.Minimise="Minimise",e.Maximise="Maximise",e.Close="Close",e.Custom="Custom"}(w||(w={})),function(e){e.CustomButton="CustomButton",e.GlobalContextMenu="GlobalContextMenu",e.ViewTabContextMenu="ViewTabContextMenu",e.PageTabContextMenu="PageTabContextMenu",e.API="API"}(l||(l={})),function(e){e.Local="local",e.Dev="dev",e.Staging="staging",e.Prod="prod"}(u||(u={}));const f="undefined"!=typeof window&&"undefined"!=typeof fin,y=("undefined"==typeof process||process.env?.JEST_WORKER_ID,"undefined"!=typeof window),m=y&&"undefined"!=typeof indexedDB,P=y?window.origin:u.Local,v=f&&fin.me.uuid,b=f&&fin.me.name,S=f&&fin.me.entityType,C=(u.Local,u.Dev,u.Staging,u.Prod,e=>e.startsWith("http://")||e.startsWith("https://")?e:P+e),W=(C("https://cdn.openfin.co/workspace/6.1.2"),C("https://cdn.openfin.co/workspace/6.1.2")),I=("undefined"!=typeof WORKSPACE_DOCS_PLATFORM_URL&&C(WORKSPACE_DOCS_PLATFORM_URL),"undefined"!=typeof WORKSPACE_DOCS_CLIENT_URL&&C(WORKSPACE_DOCS_CLIENT_URL),"23.96.68.3");var T,k;(k=T||(T={})).LastLaunchedWorkspaceId="activeWorkspaceId",k.LastFocusedBrowserWindow="lastFocusedBrowserWindow",k.MachineName="machineName",k.NewTabPageLayout="NewTabPageLayout",k.NewTabPageSort="NewTabPageSort";const A=T,M={trace:!0,debug:"undefined"!=typeof LOG_DEBUG&&LOG_DEBUG,info:!1,warn:!0,error:!0,fatal:!0};function V(e,t){const a=void 0===t?M:{...M,...t},n=e?`${e} : `:"";return{trace:a.trace?(t,...a)=>{console.trace(`%c${n}${t}`,"color:#7795f7",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},debug:a.debug?(t,...a)=>{console.info(`%c${n}${t}`,"color:#86db94",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},info:a.info?(t,...a)=>{console.debug(`%c${n}${t}`,"color:#ffffff",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},warn:a.warn?(t,...a)=>{console.warn(`%c${n}${t}`,"color:#edad68",...a),(void 0)(t,e,a)}:(t,...a)=>{(void 0)(t,e,a)},error:a.error?(t,a,...o)=>{console.error(`%c${n}${t}`,"color:#f55d67",...o,a),(void 0)(t,a,e,o)}:(t,a,...n)=>{(void 0)(t,a,e,n)},fatal:a.fatal?(t,a,...o)=>{console.error(`%c${n}${t}`,"color:#f70723",...o,a),(void 0)(t,a,e,o)}:(t,a,...n)=>{(void 0)(t,a,e,n)}}}var O,x,F;(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"}(x||(x={})),function(e){e.FinProtocol="fin-protocol"}(F||(F={}));const L={uuid:v,name:v},D=(O.Workspace,O.Workspace,e=>{if(!f)throw new Error("getApplication cannot be used in a non OpenFin env. Avoid using this during pre-rendering.");return fin.Application.wrapSync(e)});var G,U,E;function R(e){if(!f)throw new Error("getOFWindow can only be used in an OpenFin env. Avoid calling this method during pre-rendering.");return fin.Window.wrapSync(e)}!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"}(G||(G={})),(E=U||(U={})).Shown="shown",E.BoundsChanged="bounds-changed",E.LayoutReady="layout-ready",E.EndUserBoundsChanging="end-user-bounds-changing",E.Blurred="blurred",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";const B={name:b,uuid:v};G.Home,O.Workspace,G.Dock,O.Workspace;const $={name:G.Storefront,uuid:O.Workspace};O.Workspace,O.Workspace;const _=e=>e.startsWith(G.BrowserWindow);async function N(){return(await fin.Application.getCurrentSync().getChildWindows()).filter((e=>_(e.identity.name)))}const H=e=>R(e).getOptions().then((()=>!0)).catch((()=>!1)),q=()=>H($),j=V("api.platform-window-focus");async function Q(){if("undefined"!=typeof localStorage)try{const e=localStorage.getItem(A.LastFocusedBrowserWindow),t=JSON.parse(e);if(await H(t))return t}catch(e){j.error("failed to get last focused browser window: ",e)}}function K(e=fin.me.identity){_(e.name)&&function(e){if("undefined"!=typeof localStorage)try{const t=JSON.stringify(e);localStorage.setItem(A.LastFocusedBrowserWindow,t)}catch(e){j.error("failed to save last focused browser window: ",e)}}(e)}var z;V("utils.layout"),function(e){e.TabCreated="tab-created",e.ContainerCreated="container-created",e.ContainerResized="container-resized"}(z||(z={}));const J=e=>{const t=[];return(e&&Array.isArray(e)?e:[]).forEach((e=>{if("component"===e.type)return t.push(e.componentState);const a=J(e.content);t.push(...a)})),t},X=async(e,t,a=B)=>{let n;return _(a.name)&&(n=(await R(a).getOptions()).layout||{settings:{}}),{...n,content:[{type:"stack",content:[{type:"component",componentName:"view",componentState:{title:e,url:t}}]}]}};new Map;const Y=V("utils.channels"),Z=y&&"complete"!==document.readyState&&new Promise((e=>document.addEventListener("readystatechange",(()=>{"complete"===document.readyState&&e()}))));function ee(e){let t;return()=>{if(!f)throw new Error("getChannelClient cannot be used outside an OpenFin env. Avoid using this method during pre-rendering.");return t||(Y.debug(`connecting to channel provider ${e}`),t=(async()=>{await Z;const a=await fin.InterApplicationBus.Channel.connect(e);return a.onDisconnection((async()=>{Y.warn(`disconnected from channel provider ${e}`),t=void 0})),a})().then((t=>(Y.debug(`connected to channel provider ${e}`),t))).catch((t=>{Y.error(`failed to connect to channel provider ${e}`,t)}))),t}}V("api.browser.protocol");const te=new Map,ae=e=>{const t=(e=>`__browser_window__-${e.uuid}-${e.name}`)(e);return te.has(t)||te.set(t,ee(t)),te.get(t)()};var ne,oe,ie,re;(re=ne||(ne={})).CloseBrowserWindow="close-browser-window",re.QuitPlatform="quit-platform",re.ClosePage="close-page",re.AddToChannel="add-to-channel",re.RemoveFromChannel="remove-from-channel",re.SavePage="save-page",re.DuplicatePage="duplicate-page",function(e){e.GetPages="get-pages",e.GetActivePageForWindow="get-active-page-for-window",e.AttachPagesToWindow="attach-pages-to-window",e.DetachPagesFromWindow="detach-pages-from-window",e.SetActivePageForWindow="set-active-page-for-window",e.RenamePage="rename-page",e.ReorderPagesForWindow="reorder-pages-for-window",e.UpdatePageForWindow="update-page-for-window",e.UpdatePagesWindowOptions="update-pages-window-options",e.IsDetachingPages="is-detaching-pages",e.IsActivePageChanging="is-active-page-changing"}(oe||(oe={})),function(e){e.AttachedPagesToWindow="attached-pages-to-window",e.DetachedPagesFromWindow="detached-pages-from-window"}(ie||(ie={})),new Map;const se=async e=>{const t=await ae(e);return await t.dispatch(oe.GetPages)},ce=async e=>(await ae(e.identity)).dispatch(oe.UpdatePageForWindow,e);var de;!function(e){e.LaunchApp="launchApp",e.SavePage="savePage",e.GetSavedPage="getSavedPage",e.CreateSavedPage="createSavedPage",e.UpdateSavedPage="updateSavedPage",e.DeleteSavedPage="deleteSavedPage",e.GetSavedPages="getSavedPages",e.CreateSavedPageInternal="createSavedPageInternal",e.UpdateSavedPageInternal="updateSavedPageInternal",e.DeleteSavedPageInternal="deleteSavedPageInternal",e.SharePage="sharePage",e.UpdatePageForWindow="updatePageForWindow",e.AttachPagesToWindow="attachPagesToWindow",e.DetachPagesFromWindow="detachPagesFromWindow",e.ReorderPagesForWindow="reorderPagesForWindow",e.SetActivePage="setActivePage",e.GetAllAttachedPages="getAllAttachedPages",e.GetActivePageIdForWindow="getActivePageIdForWindow",e.GetPagesForWindow="getPagesForWindow",e.GetPageForWindow="getPageForWindow",e.GetSavedPageMetadata="getSavedPageMetadata",e.GetUniquePageTitle="getUniquePageTitle",e.GetLastFocusedBrowserWindow="getLastFocusedBrowserWindow",e.GetThemes="getThemes",e.OpenGlobalContextMenuInternal="openGlobalContextMenuInternal",e.OpenViewTabContextMenuInternal="openViewTabContextMenuInternal",e.OpenPageTabContextMenuInternal="openPageTabContextMenuInternal",e.InvokeCustomActionInternal="invokeCustomActionInternal"}(de||(de={}));const pe=async e=>{const t=fin.Platform.wrapSync(e),a=await t.getClient(),n="Target is not a Workspace Platform. Target must call WorkspacePlatform.init";try{if(!0===await a.dispatch("isWorkspacePlatform"))return a;throw new Error(n)}catch(e){throw new Error(n)}},we=async()=>{const e=await N();return(await Promise.all(e.map((async({identity:e})=>se(e))))).reduce(((e,t)=>e.concat(t)),[])},le=async()=>(await pe(B)).dispatch(de.GetSavedPages,void 0),ue=async e=>(await pe(B)).dispatch(de.GetSavedPage,e),ge=async(e,t)=>{const a=await(async e=>(await we()).find((t=>t.pageId===e)))(e);return!a||a.title===t.title&&e===t.pageId||await ce({identity:a.parentIdentity,pageId:e,page:{pageId:t.pageId,title:t.title}}),a},he=async({page:e})=>{await ge(e.pageId,e),await(async e=>(await pe(B)).dispatch(de.CreateSavedPage,e))({page:e})},fe=async e=>{await ue(e)&&await(async e=>(await pe(B)).dispatch(de.DeleteSavedPage,e))(e)},ye=async({pageId:e,page:t})=>(await ge(e,t),await(async e=>(await pe(B)).dispatch(de.UpdateSavedPage,e))({pageId:e,page:t})),me=async e=>await ue(e.pageId)?ye({pageId:e.pageId,page:e}):he({page:e}),Pe=async e=>{await ce(e)},ve=async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.DetachPagesFromWindow,e))(e)},be=async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.SetActivePageForWindow,e))(e)},Se=e=>se(e),Ce=async({identity:e,pageId:t})=>(await Se(e)).find((e=>e.pageId===t)),We=async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.ReorderPagesForWindow,e))(e)},Ie=(e,t)=>!t.find((t=>t===e)),Te=(e,t)=>`${e} (${t})`;async function ke(e="Untitled Page"){const[t,a]=await Promise.all([le(),we()]),n=[...t,...a].map((({title:e})=>e));if(!n.find((t=>t===e)))return e;let o=1;const i=e.replace(/ \(.+\)$/,"");for(;!Ie(Te(i,o),n);)o+=1;return Te(i,o)}const Ae=V("api.cleanup"),Me=new Map,Ve=e=>`${e.uuid}-${e.name}`,Oe=((e,t=0)=>{let a,n,o=!1;const i=async n=>{const r=await e(...n);if(o){await new Promise((e=>setTimeout(e,t)));const e=a;return a=void 0,o=!1,i(e)}return r};return(...e)=>(n?(o=!0,a=e):n=i(e).then((e=>(n=void 0,e))),n)})((async function(){Ae.debug("scheduling views to cleanup");const e=await we(),t=new Set;e.forEach((e=>{J(e.layout.content).forEach((e=>{if(e.name){const a=Ve(e);t.add(a),Ae.debug(`preserving view with id ${a}`)}}))}));const a=R(B);(await a.getCurrentViews()).forEach((({identity:e})=>{const a=Ve(e);if(t.has(a)||Me.has(a))return;const n=setTimeout((()=>{Ae.debug(`destroying view with id ${a}`),fin.View.wrapSync(e).destroy(),Me.delete(a)}),5e3);Ae.debug(`scheduled cleanup of view with id ${a}`),Me.set(a,n)})),Me.forEach(((e,a)=>{t.has(a)&&(clearTimeout(e),Me.delete(a),Ae.debug(`cancelled scheduled cleanup of view with id ${a}`))}))}),2500),xe=({name:e})=>{_(e)&&Oe().catch((e=>{}))};let Fe={};const Le=({actionId:e,payload:t})=>{if("function"!=typeof Fe[e])throw new Error(`Cannot find a configured function for the action '${e}'`);return Fe[e](t)};function De(){return localStorage.getItem(A.MachineName)}let Ge,Ue;async function Ee(){return Ge||(Ge=await fin.System.getMachineId()),Ge}async function Re(e){const t=e||await fin.Platform.getCurrentSync().getSnapshot();if(t.snapshotDetails?.machineId)return t;const a=De();return{...t,snapshotDetails:{...e.snapshotDetails,machineId:await Ee(),machineName:a}}}function Be(e){return new Promise(((t,a)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>a(e.error)}))}function $e(e,t){const a=indexedDB.open(e);a.onupgradeneeded=()=>a.result.createObjectStore(t);const n=Be(a);return(e,a)=>n.then((n=>a(n.transaction(t,e).objectStore(t))))}function _e(){return Ue||(Ue=$e("keyval-store","keyval")),Ue}const Ne=m&&$e("openfin-home-pages","pages");async function He(e){const t=await function(e,t=_e()){return t("readonly",(t=>Be(t.get(e))))}(e,Ne);return t?(t.pageId=e.toString(),t.title=t.title||t.pageId,t):null}async function qe(e){const t=await function(e=_e()){const t=[];return function(e,t){return e("readonly",(e=>(e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},Be(e.transaction))))}(e,(e=>t.push(e.key))).then((()=>t))}(Ne),a=await Promise.all(t.map((e=>He(e.toString()))));return e?a.filter((t=>((e,t="")=>e.toLowerCase().includes(t.toLowerCase()))(t.title,e))):a}async function je({page:e}){await function(e,t,a=_e()){return a("readwrite",(a=>(a.put(t,e),Be(a.transaction))))}(e.pageId,e,Ne)}async function Qe(e){await function(e,t=_e()){return t("readwrite",(t=>(t.delete(e),Be(t.transaction))))}(e,Ne)}async function Ke({pageId:e,page:t}){if(void 0===await He(e))throw new Error("page not found");await je({page:t}),e!==t.pageId&&await Qe(e)}var ze,Je;!function(e){e.Label="normal",e.Separator="separator",e.Submenu="submenu",e.Checkbox="checkbox"}(ze||(ze={}));var Xe=new Uint8Array(16);function Ye(){if(!Je&&!(Je="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Je(Xe)}const Ze=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,et=function(e){return"string"==typeof e&&Ze.test(e)};for(var tt=[],at=0;at<256;++at)tt.push((at+256).toString(16).substr(1));const nt=function(e,t,a){var n=(e=e||{}).random||(e.rng||Ye)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){a=a||0;for(var o=0;o<16;++o)t[a+o]=n[o];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=(tt[e[t+0]]+tt[e[t+1]]+tt[e[t+2]]+tt[e[t+3]]+"-"+tt[e[t+4]]+tt[e[t+5]]+"-"+tt[e[t+6]]+tt[e[t+7]]+"-"+tt[e[t+8]]+tt[e[t+9]]+"-"+tt[e[t+10]]+tt[e[t+11]]+tt[e[t+12]]+tt[e[t+13]]+tt[e[t+14]]+tt[e[t+15]]).toLowerCase();if(!et(a))throw TypeError("Stringified UUID is invalid");return a}(n)};var ot;!function(e){e.RegisterStorefrontProvider="register-storefront-provider",e.DeregisterStorefrontProvider="deregister-storefront-provider",e.GetStorefrontProviders="get-storefront-providers",e.HideStorefront="hide-storefront",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.ShowStorefront="show-storefront",e.CreateStorefrontWindow="create-storefront-window",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"}(ot||(ot={})),ee("__of_workspace_protocol__");const it=async(e,t)=>{const a=await(async e=>({...e,layoutDetails:{machineId:await Ee(),machineName:De()}}))(t);return{pageId:nt(),title:e,layout:a,isReadOnly:!1,hasUnsavedChanges:!0}},rt=e=>({identity:e,openfinWindow:fin.Window.wrapSync(e),getPages:async()=>(await pe(e)).dispatch(de.GetPagesForWindow,e),getPage:async t=>(await pe(e)).dispatch(de.GetPageForWindow,{identity:e,pageId:t}),addPage:async t=>{const a=await pe(e);t?.title||(t.title=await a.dispatch(de.GetUniquePageTitle,void 0));const n=(await a.dispatch(de.GetAllAttachedPages,void 0)).find((e=>e.pageId===t.pageId||e.title===t.title));if(n)throw n.pageId===t.pageId?new Error(`page with id ${t.pageId} is already attached to a browser window ${n.parentIdentity.name}`):new Error(`page with title ${t.title} is already attached to a browser window ${n.parentIdentity.name}`);const o={identity:e,pages:[t]};return a.dispatch(de.AttachPagesToWindow,o)},removePage:async t=>(await pe(e)).dispatch(de.DetachPagesFromWindow,{identity:e,pageIds:[t]}),setActivePage:async t=>(await pe(e)).dispatch(de.SetActivePage,{identity:e,pageId:t}),updatePage:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.UpdatePageForWindow,t)},reorderPages:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.ReorderPagesForWindow,t)},_openGlobalContextMenu:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.OpenGlobalContextMenuInternal,t)},replaceToolbarOptions:async t=>{const a=fin.Window.wrapSync(e);await a.updateOptions({workspacePlatform:{toolbarOptions:t}})},replaceWindowStateButtonOptions:async t=>{const a=fin.Window.wrapSync(e);await a.updateOptions({workspacePlatform:{windowStateButtonOptions:t}})},_openViewTabContextMenu:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.OpenViewTabContextMenuInternal,t)},_openPageTabContextMenu:async t=>{const a=await pe(e);return t.identity=e,a.dispatch(de.OpenPageTabContextMenuInternal,t)}}),st=e=>{const t=fin.Platform.wrapSync(e);return{wrapSync:e=>rt(e),createWindow:async e=>{const a=await t.createWindow(e);return rt(a.identity)},getAllAttachedPages:async()=>(await t.getClient()).dispatch(de.GetAllAttachedPages,void 0),getAllWindows:async()=>(await fin.Application.wrapSync(e).getChildWindows()).filter((e=>e.identity.name.includes("internal-generated-window-"))).map((e=>rt(e.identity))),getUniquePageTitle:async t=>(await pe(e)).dispatch(de.GetUniquePageTitle,t),getLastFocusedWindow:async()=>(await pe(e)).dispatch(de.GetLastFocusedBrowserWindow,void 0)}},ct=e=>({createPage:async t=>(await pe(e)).dispatch(de.CreateSavedPageInternal,t),deletePage:async t=>(await pe(e)).dispatch(de.DeleteSavedPageInternal,t),updatePage:async t=>(await pe(e)).dispatch(de.UpdateSavedPageInternal,t),getPage:async t=>(await pe(e)).dispatch(de.GetSavedPage,t),getPages:async t=>(await pe(e)).dispatch(de.GetSavedPages,t),savePage:async t=>(await pe(e)).dispatch(de.SavePage,t)}),dt=e=>({getThemes:async()=>(await pe(e)).dispatch(de.GetThemes,void 0)}),pt=e=>{const t=fin.Platform.wrapSync(e);return Object.assign(t,{applySnapshot:async t=>{if("string"!=typeof t&&!t?.windows)throw new Error("Not a valid browser snapshot");return fin.Platform.wrapSync(e).applySnapshot(t)},getSnapshot:()=>fin.Platform.wrapSync(e).getSnapshot().then((e=>e)),launchApp:async t=>(t.target||(t.target={uuid:v,name:b,entityType:S||"unknown"}),(await pe(e)).dispatch(de.LaunchApp,t)),_invokeCustomAction:async(t,a)=>{const n=await pe(e),o={actionId:t,payload:{...a,callerType:a.callerType||l.API}};return n.dispatch(de.InvokeCustomActionInternal,o)},Theme:dt(e),Browser:st(e),Storage:ct(e)})},wt=()=>pt(fin.me.identity),lt=async(e=B)=>{const{workspacePlatform:t}=await R(e).getOptions();return{newPageUrl:t?.newPageUrl,newTabUrl:t?.newTabUrl}},ut=[{type:ze.Label,label:"Close Window",data:{type:c.CloseWindow}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Open Storefront",data:{type:c.OpenStorefront}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Quit Workspace",data:{type:c.Quit}}],gt=[{type:ze.Separator,data:void 0},{type:ze.Label,label:"Close Window",data:{type:c.CloseWindow}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Quit",data:{type:c.Quit}}],ht=async(e,t)=>{if(!e)return;const a=t.identity,n=await ae(a);switch(e.type){case c.NewWindow:const{newPageUrl:t}=await lt(a);if(!t)throw new Error("Trying to create a new empty window without a newPageUrl set");wt().createView({target:void 0,url:t});break;case c.NewPage:await(async e=>{const t=await(async(e=B)=>{const t=await wt().Browser.getUniquePageTitle("Untitled Page"),a=await(async(e=B)=>{const{newPageUrl:t}=await lt(e);if(!t)throw new Error("Trying to create a new page without a newPageUrl set");return X("New Tab",t,e)})(e);return it(t,a)})(e);await wt().Browser.wrapSync(e).addPage(t)})(a);break;case c.CloseWindow:n.dispatch(ne.CloseBrowserWindow);break;case c.Quit:n.dispatch(ne.QuitPlatform);break;case c.OpenStorefront:(async()=>{await q()&&async function(e){const t=R(e);"minimized"===await t.getState()&&await t.restore(),await t.show(),await t.bringToFront(),await t.focus()}($)})();break;case c.Custom:if(e.action){const t={callerType:l.GlobalContextMenu,windowIdentity:a,customData:e.action.customData};wt()._invokeCustomAction(e.action.id,t)}else console.warn(`Encountered a Custom context menu option with an "action" property with value "${e.action}"`)}},ft=async(e,t)=>{const a=await ae(t.identity);switch(e.type){case d.Save:case d.Rename:a.dispatch(ne.SavePage,t.pageId);break;case d.Duplicate:a.dispatch(ne.DuplicatePage,t.pageId);break;case d.Close:a.dispatch(ne.ClosePage,t.pageId);break;case d.Custom:if(e.action){const a={callerType:l.PageTabContextMenu,windowIdentity:t.identity,pageId:t.pageId,customData:e.action.customData};wt()._invokeCustomAction(e.action.id,a)}else console.warn(`Encountered a Custom context menu option with an "action" property with value "${e.action}"`)}},yt=async(e,t)=>{if(!e)return;const a=t.identity;switch(e.type){case p.CloseViews:await(async(e,t)=>{if((await fin.Window.wrapSync(e).getCurrentViews()).length!==t.length)t.forEach((async e=>{const t=fin.View.wrapSync(e);await t.destroy()}));else{const t=(await wt().Browser.wrapSync(e).getPages()).find((e=>e.isActive));(await ae(e)).dispatch(ne.ClosePage,t?.pageId)}})(a,t.selectedViews);break;case p.OpenWithDefaultBrowser:await(async(e,t)=>{const a=await(e=>Promise.all(e.map((async e=>fin.View.wrapSync(e).getInfo()))))(t),{newPageUrl:n,newTabUrl:o}=await lt(e);a.forEach((async e=>{e.url!==n&&e.url!==o&&await fin.System.openUrlWithBrowser(e.url)}))})(a,t.selectedViews);break;case p.ReloadViews:t.selectedViews.forEach((async e=>{const t=fin.View.wrapSync(e);await t.reload()}));break;case p.NewView:await(async(e,t)=>{const a=t.selectedViews[0],n=fin.View.wrapSync(a),o=await(async e=>{const{newTabUrl:t}=await lt(e);if(!t)throw new Error("Trying to create a new page without a newTabUrl set");return{...X("New View",t),url:t,target:e}})(e);await wt().createView(o,e,n.identity)})(a,t);break;case p.DuplicateViews:((e,t)=>{t.forEach((async t=>{const a=fin.View.wrapSync(t);await(async(e,t)=>{const{url:a}=await t.getInfo(),n={...await t.getOptions(),url:a,target:e,name:void 0};await wt().createView(n,e,t.identity)})(e,a)}))})(a,t.selectedViews);break;case p.AddToChannel:(async(e,t,a)=>{const n={newChannelId:t,selectedViews:a};(await ae(e)).dispatch(ne.AddToChannel,n)})(a,e.option,t.selectedViews);break;case p.RemoveFromChannel:(async(e,t)=>{(await ae(e)).dispatch(ne.RemoveFromChannel,t)})(a,t.selectedViews);break;case p.Custom:if(e.action){const n={callerType:l.ViewTabContextMenu,windowIdentity:a,selectedViews:t.selectedViews,customData:e.action.customData};wt()._invokeCustomAction(e.action.id,n)}}};async function mt(e,t){const a=await(async e=>{const t=await q(),{newPageUrl:a}=await lt(e),n=await(async e=>{const t=R(e),{workspacePlatform:a}=await t.getOptions();return a?.disableMultiplePages})(e),o=[];return a&&(o.push({type:ze.Label,label:"New Window",data:{type:c.NewWindow}}),n||o.push({type:ze.Label,label:"New Page",data:{type:c.NewPage}})),t?[...o,...ut]:[...o,...gt]})(e.identity),n={...e,template:a,callback:ht};await this.openGlobalContextMenu(n,t)}const Pt=async(e,t)=>{const{x:a,y:n,identity:o,template:i,callback:r}=e,{data:s}=await function(e,t){if(!f)throw new Error("showContextMenu can only be used in an OpenFin env. Avoid calling this method during pre-rendering.");if(!t&&!fin.me.isWindow)throw new Error("showContextMenu can only be used in an OpenFin window.");return(t||fin.Window.getCurrentSync()).showPopupMenu(e)}({x:a,y:n,template:i},fin.Window.wrapSync(o));r(s,e)};async function vt(e,t){const a={...e,callback:yt};await this.openViewTabContextMenu(a,t)}async function bt(e,t){const a=await wt().Storage.getPage(e.pageId),n=await(o=!!a,[{type:ze.Label,label:"Save Page",data:{type:d.Save}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Rename Page",data:{type:d.Rename},enabled:o},{type:ze.Label,label:"Duplicate Page",data:{type:d.Duplicate}},{type:ze.Separator,data:void 0},{type:ze.Label,label:"Close Page",data:{type:d.Close}}]);var o;const i={...e,template:n,callback:ft};await this.openPageTabContextMenu(i,t)}async function St({app:e,target:t}){const a=fin.Platform.getCurrentSync();switch(e.manifestType){case n.Snapshot:return a.applySnapshot(e.manifest);case n.View:return async function(e,t){const a=fin.Platform.getCurrentSync();if("view"===t.entityType){const a=fin.View.wrapSync(t),n=await a.getParentLayout();return await n.replaceView(t,{manifestUrl:e.manifest,url:void 0,target:void 0}),a.destroy()}return a.createView({name:void 0,url:void 0,manifestUrl:e.manifest,target:void 0})}(e,t);case n.External:return fin.System.launchExternalProcess({path:e.manifest,uuid:e.appId});default:return fin.Application.startFromManifest(e.manifest)}}const Ct=e=>e&&"object"==typeof e&&!Array.isArray(e);function Wt(e,...t){if(!t.length)return e;const a=t.shift();return Ct(e)&&Ct(a)&&Object.entries(a).forEach((([t,a])=>{if(Ct(a))return e[t]||(e[t]={}),Wt(e[t],a);e[t]=a})),Wt(e,...t)}var It,Tt;!function(e){e.HomeIndex="/home/",e.HomeSearch="/home/search/",e.HomePagesRename="/home/pages/rename/",e.Dock="/home/dock/",e.BrowserPagesLanding="/browser/pages/landing/",e.HomeIndicator="/home/indicator/",e.Browser="/browser/",e.BrowserPopupMenu="/browser/popup-menu/",e.Provider="/provider/",e.BrowserPopupMenuSharePage="/browser/popup-menu/share-page/",e.BrowserPopupMenuSavePage="/browser/popup-menu/save-page/",e.BrowserPopupMenuLayouts="/browser/popup-menu/layouts/layouts/",e.BrowserPopupMenuColorLinking="/browser/popup-menu/color-linking/color-linking/",e.BrowserIndicator="/browser/indicator/",e.ResponseModal="/browser/popup-menu/response-modal/",e.Docs="/provider/docs/",e.Storefront="/storefront/",e.DeprecatedAlert="/provider/deprecated-alert/"}(It||(It={})),function(e){e.IconOpenFinLogo="/icons/openfinlogo.svg",e.IconFilter="/icons/filter.svg"}(Tt||(Tt={}));const kt=W+{...Tt,...It}.Browser;function At(e,t){const a=Wt({},t,e);return a.detachOnClose=!0,a}async function Mt(e,t,a){const n=e.manifestUrl?await t({manifestUrl:e.manifestUrl},a):void 0;if(n?.interop&&e.interop){const t={...e,...n,interop:e.interop};return delete t.manifestUrl,t}return e}const Vt=e=>{const t=e.name===G.Home,a=e.name?.startsWith(G.HomeInternal),n=e.name?.startsWith(G.BrowserMenu);return!t&&!a&&!n},Ot=e=>"workspacePlatform"in e?e:(({workstacks:e,pages:t,...a})=>({...a,workspacePlatform:{pages:t||e||null}}))(e),xt={contextMenuSettings:{reload:!1},backgroundThrottling:!0,url:kt,contextMenu:!0,cornerRounding:{height:8,width:8},closeOnLastViewRemoved:!1,experimental:{showFavicons:!0,defaultFaviconUrl:`${W}/icons/defaultFavicon.svg`},permissions:{System:{openUrlWithBrowser:{enabled:!0,protocols:["mailto"]}}}},Ft={dimensions:{borderWidth:3,headerHeight:30}},Lt=(e,t)=>t?e.map((e=>({...t,...e}))):e,Dt=e=>{const t=fin.Window.wrapSync(e);return Promise.all([t.bringToFront(),t.restore(),t.focus()])};let Gt=[];const Ut=()=>Gt,Et=e=>async t=>{class a extends t{constructor(){super(),this.isWorkspacePlatform=()=>!0,this.addPage=this.attachPagesToWindow,this.detachPagesFromWindow=ve,this.getAllAttachedPages=we,this.getPagesForWindow=Se,this.getPageForWindow=Ce,this.setActivePage=be,this.launchApp=St,this.savePage=me,this.createSavedPageInternal=he,this.updateSavedPageInternal=ye,this.deleteSavedPageInternal=fe,this.reorderPagesForWindow=We,this.getUniquePageTitle=ke,this.updatePageForWindow=Pe,this.getLastFocusedBrowserWindow=Q,this.getThemes=Ut,this.invokeCustomActionInternal=Le,this.openGlobalContextMenuInternal=this.openGlobalContextMenuInternal.bind(this),this.openGlobalContextMenu=this.openGlobalContextMenu.bind(this),this.getSavedPages=this.getSavedPages.bind(this),this.getSavedPage=this.getSavedPage.bind(this),this.createSavedPage=this.createSavedPage.bind(this),this.updateSavedPage=this.updateSavedPage.bind(this),this.deleteSavedPage=this.deleteSavedPage.bind(this),this.attachPagesToWindow=this.attachPagesToWindow.bind(this),this.openViewTabContextMenuInternal=this.openViewTabContextMenuInternal.bind(this),this.openViewTabContextMenu=this.openViewTabContextMenu.bind(this),this.openPageTabContextMenuInternal=this.openPageTabContextMenuInternal.bind(this),this.openPageTabContextMenu=this.openPageTabContextMenu.bind(this)}async getSnapshot(){const e=await async function(e){const t=await N();return await Promise.all(t.map((({identity:e})=>(async e=>(await ae(e)).dispatch(oe.UpdatePagesWindowOptions))(e)))),e?e():Re()}((async()=>Re(await super.getSnapshot(void 0,fin.me.identity))));return{...e,windows:e.windows.filter(Vt)}}async applySnapshot({snapshot:e,options:t}){t?.closeExistingWindows&&await async function(){const e=await N();await Promise.all(e.map((e=>e.close(!0).catch((()=>{})))))}();let a=e;return"string"==typeof a&&(a=await super.fetchManifest({manifestUrl:a},fin.me.identity)),async function(e,t){const a=await we(),n=e.snapshotDetails?.monitorInfo||await fin.System.getMonitorInfo(),o=(e.windows||[]).filter((({layout:e})=>!!e)),i=new Map;a.forEach((e=>i.set(e.pageId,e)));const r=[],s=o.map((async e=>{const t=Ot(e),a=[],n=(e=>{let t=!1;const a=(e||[]).map((e=>{const a=function({id:e,name:t,...a}){return{pageId:e,title:t,...a}}(e);return t&&a.isActive&&(a.isActive=!1),a.isActive&&(t=!0),a}));return!t&&a.length&&(a[0].isActive=!0),a})(t?.workspacePlatform?.pages);if(!n?.length){const e=await ke();a.push(await it(e,t.layout))}let o;n.forEach((e=>{const t=i.get(e.pageId);t?o=t:a.push(e)})),o&&await Promise.all([be({identity:o.parentIdentity,pageId:o.pageId}),Dt(o.parentIdentity)]),a.length&&r.push({...t,workspacePlatform:{...t.workspacePlatform,pages:a}})}));if(await Promise.all(s),!r.length)return;const c=fin.Platform.getCurrentSync();return(t||c.applySnapshot.bind(c))({...e,snapshotDetails:{...e.snapshotDetails,monitorInfo:n},windows:r})}(a,(e=>super.applySnapshot({snapshot:e,options:{...t,closeExistingWindows:!1}})))}async createWindow(t,a){let n=Ot(t);const o=await this.getThemes();return n=((e,t,a)=>{let n=e;const o=n?.workspacePlatform?.pages;if(o){const e=o.find((e=>e.isActive));e?n.layout=e.layout:(o[0].isActive=!0,n.layout=o[0].layout)}if(n.layout){if(n=Wt({},t.defaultWindowOptions,n,xt),n.layout=Wt(n.layout,Ft),(n.icon||n.taskbarIcon)&&(n.taskbarIconGroup=n.taskbarIconGroup||fin.me.identity.uuid),!n.backgroundColor){const e=a?.palette;n.backgroundColor=e?.background2||e?.backgroundPrimary}const e=n.workspacePlatform.newTabUrl;e&&(n.layout.settings||(n.layout.settings={}),n.layout.settings.newTabButton={url:e}),n=(e=>{const t=e;return t.workspacePlatform||(t.workspacePlatform={}),t.workspacePlatform._internalDeferShowEnabled=!0,t.workspacePlatform._internalAutoShow=t.workspacePlatform?._internalAutoShow||void 0===t.autoShow||t.autoShow,t.autoShow=!1,t})(n)}return n.workspacePlatform?.pages&&(n.workspacePlatform.pages=Lt(n.workspacePlatform.pages,t?.defaultPageOptions)),n})(n,e,o[0]),n=await(async e=>{const t=await fin.System.getMonitorInfo(),a=t.primaryMonitor.availableRect.bottom-t.primaryMonitor.availableRect.top,n=t.primaryMonitor.availableRect.right-t.primaryMonitor.availableRect.left;return e.defaultHeight=e.defaultHeight||"800",e.defaultWidth=e.defaultWidth||"800",a<e.defaultHeight&&(e.defaultHeight=a),n<e.defaultWidth&&(e.defaultWidth=n),e})(n),(i=(e,t)=>super.createWindow(e,t),async(e,t)=>{const a=await i(e,t);return e?.workspacePlatform?._internalDeferShowEnabled?(await a.addListener(U.ShowRequested,(()=>{})),a):a})(n,a);var i}async createView(t,a){return t.opts=At(t.opts,e?.defaultViewOptions),t.opts=await Mt(t.opts,this.fetchManifest,a),super.createView(t,a)}async replaceView(t,a){return t.opts.newView=await At(t.opts.newView,e?.defaultViewOptions),t.opts.newView=await Mt(t.opts.newView,this.fetchManifest,a),super.replaceView(t,a)}async replaceLayout(e,t){return e.opts.layout?.dimensions,super.replaceLayout(e,t)}async closeView(e,t){const a=fin.View.wrapSync(e.view);await super.closeView(e,t),await a.destroy().catch((e=>e))}async getSavedPage(...e){return He.apply(this,e)}async getSavedPages(...e){return qe.apply(this,e)}async createSavedPage(...e){return je.apply(this,e)}async deleteSavedPage(...e){return Qe.apply(this,e)}async updateSavedPage(...e){return Ke.apply(this,e)}async attachPagesToWindow(t){t.pages=Lt(t.pages,e?.defaultPageOptions),await(async e=>{await(async e=>(await ae(e.identity)).dispatch(oe.AttachPagesToWindow,e))(e)})(t)}async openGlobalContextMenuInternal(...e){return mt.apply(this,e)}async openGlobalContextMenu(...e){return Pt.apply(this,e)}async openViewTabContextMenuInternal(...e){return vt.apply(this,e)}async openViewTabContextMenu(...e){return Pt.apply(this,e)}async openPageTabContextMenuInternal(...e){return bt.apply(this,e)}async openPageTabContextMenu(...e){return Pt.apply(this,e)}}return"function"==typeof e?.overrideCallback?e.overrideCallback(a):new a};async function Rt(){(function(){const e=D(L);e.addListener(x.WindowOptionsChanged,Oe),e.addListener(x.WindowClosed,xe),e.addListener(x.WindowCreated,xe)})(),async function(){const e=fin.Application.getCurrentSync();await e.addListener("window-focused",K)}()}let Bt;const $t=async e=>{const t=I.split(".").map((e=>parseInt(e))),a=await(async e=>new Promise((async t=>{const a=(await fin.System.getVersion()).split(".").map((e=>parseInt(e)));t(e.every(((t,n)=>!(n<3)||a[n]===e[n])))})))(t),n=e?.theme;var o;if(n&&((o=n).forEach((e=>{const t=e.palette.backgroundPrimary;if(!t.includes("#")&&!t.includes("rgb")&&!t.includes("hsl"))throw new Error("Background primary color is not the right format.")})),Gt=o),e?.customActions&&(Fe=e?.customActions),a)return function(e){if(!f)throw new Error("Cannot be used outside an OpenFin env.");return Bt||(fin.Platform.getCurrentSync().once("platform-api-ready",(()=>Rt())),Bt=fin.Platform.init({overrideCallback:Et(e),interopOverride:e?.interopOverride})),Bt}(e?.browser);throw new Error(`Runtime version is not supported. ${t[0]}.${t[1]}.${t[2]}.* is required`)};module.exports=h})();
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@openfin/workspace-platform","description":"An API for creating your own Workspace platform.","contributors":[],"version":"6.1.1","main":"index.js","scripts":{"promote:docs":"chmod +x ../common/scripts/deploy-latest-docs.sh && ./scripts/deploy-latest-docs.sh $(node ../common/scripts/echo-version.js) /platform","promote":"node ../common/scripts/promote-npm.js && npm run promote:docs","deploy:next":"npm run deploy:next:npm && npm run deploy:next:docs","deploy:next:npm":"cd out && npm publish --tag next","deploy:next:docs":"DIR=/platform node ../common/scripts/archive-docs.js","cp:readme":"copyfiles README.md out","cp:package":"node ../common/scripts/cp-package.js","create:rootIndex":"node ../common/scripts/cp-root-index.js","package":"npm run cp:readme && npm run cp:package && npm run create:rootIndex","clean":"rimraf ./out && rimraf ./docs","build:common":"cross-env ENV=prod webpack --mode=production --config ./webpack.common.config.js","build":"npm run clean && npm run build:common && npm run build:docs","build:docs":"typedoc --tsconfig ./tsconfig.json --readme none --disableSources ./src/index.ts","test":"jest --watch --colors","test:ci":"jest"},"keywords":["client","api","workspace","platform"],"license":"MIT"}
1
+ {"name":"@openfin/workspace-platform","description":"An API for creating your own Workspace platform.","contributors":[],"version":"6.1.2","main":"index.js","scripts":{"promote:docs":"chmod +x ../common/scripts/deploy-latest-docs.sh && ./scripts/deploy-latest-docs.sh $(node ../common/scripts/echo-version.js) /platform","promote":"node ../common/scripts/promote-npm.js && npm run promote:docs","deploy:next":"npm run deploy:next:npm && npm run deploy:next:docs","deploy:next:npm":"cd out && npm publish --tag next","deploy:next:docs":"DIR=/platform node ../common/scripts/archive-docs.js","cp:readme":"copyfiles README.md out","cp:package":"node ../common/scripts/cp-package.js","create:rootIndex":"node ../common/scripts/cp-root-index.js","package":"npm run cp:readme && npm run cp:package && npm run create:rootIndex","clean":"rimraf ./out && rimraf ./docs","build:common":"cross-env ENV=prod webpack --mode=production --config ./webpack.common.config.js","build":"npm run clean && npm run build:common && npm run build:docs","build:docs":"typedoc --tsconfig ./tsconfig.json --readme none --disableSources ./src/index.ts","test":"jest --watch --colors","test:ci":"jest"},"keywords":["client","api","workspace","platform"],"license":"MIT"}