diff --git a/README.md b/README.md index 44d9ca5..11dff53 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,9 @@ Want to learn how to use our Channel API, Interop API or FDC3 API inside of a de | Web Interop | Description | Live Launch | | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [Web Interop Basic](./how-to/web-interop-basic) | This basic how-to provides a way of configuring a a webpage with a number of framed applications that share contextual information. | [Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-interop-basic/platform/provider.html) | -| [Web Interop](./how-to/web-interop) | This example how-to provides a way of configuring a a webpage with a number of framed applications using our layout system as well as a left hand panel so show that you can combine layout and iframe based content. | [Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-interop/platform/provider.html) | -| [Web Interop - Support Context and Intents](./how-to/web-interop-support-context-and-intents) | This is an example of a platform that has utilized the options of having a custom interop broker and a custom layout override to implement a platform that supports FDC3 as well as enhanced layout capabilities.. | [Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-interop-support-context-and-intents/platform/provider.html) | +| [Web Interop Basic](./how-to/web-interop-basic) | This basic how-to provides a way of configuring a a webpage with a number of framed applications that share contextual information. | [Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-interop-basic/platform/provider.html) | +| [Web Interop](./how-to/web-interop) | This example how-to provides a way of configuring a a webpage with a number of framed applications using our layout system as well as a left hand panel so show that you can combine layout and iframe based content. | [Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-interop/platform/provider.html) | +| [Web Interop - Support Context and Intents](./how-to/web-interop-support-context-and-intents) | This is an example of a platform that has utilized the options of having a custom interop broker and a custom layout override to implement a platform that supports FDC3 as well as enhanced layout capabilities.. | [Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-interop-support-context-and-intents/platform/provider.html) | ### Cloud Interop @@ -49,7 +49,7 @@ Want to learn how to use our Cloud Interop to connect your Web Browser based app | Cloud Interop | Description | Live Launch | | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | [Cloud Interop Basic](./how-to/cloud-interop-basic) | This basic how-to is based on the [Web Interop Basic](./how-to/web-interop-basic) and extends it by using our @openfin/cloud-interop packages to share context through the cloud. | | -| [Cloud Interop](./how-to/cloud-interop) | This how-to is based on the [Web Interop](./how-to/web-interop) and extends it by using our @openfin/cloud-interop packages to share context through the cloud. | [Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/cloud-interop/platform/provider.html) | +| [Cloud Interop](./how-to/cloud-interop) | This how-to is based on the [Web Interop](./how-to/web-interop) and extends it by using our @openfin/cloud-interop packages to share context through the cloud. | [Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/cloud-interop/platform/provider.html) | ### Web Layout @@ -57,8 +57,16 @@ A number of our examples will use the OpenFin Layout System but the examples bel | Web Layout | Description | Live Launch | | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [Web Layout Basic](./how-to/web-layout-basic) | This basic how-to focuses on the bare minimum to set up an OpenFin Layout. It doesn't provide content examples and simply loads third party content and it gives an example of how you can provide the window.name for your content through your snapshot/layout. | [Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-layout-basic/platform/provider.html) | -| [Web Layout](./how-to/web-layout) | This how-to focuses on the setting up a multi layout web page. It introduces a Layout Manager Override to support multiple layouts and shows a basic button to switch between them. The layouts are available in the public/layouts folder and can be modified. | [Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-layout/platform/provider.html) | +| [Web Layout Basic](./how-to/web-layout-basic) | This basic how-to focuses on the bare minimum to set up an OpenFin Layout. It doesn't provide content examples and simply loads third party content and it gives an example of how you can provide the window.name for your content through your snapshot/layout. | [Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-layout-basic/platform/provider.html) | +| [Web Layout](./how-to/web-layout) | This how-to focuses on the setting up a multi layout web page. It introduces a Layout Manager Override to support multiple layouts and shows a basic button to switch between them. The layouts are available in the public/layouts folder and can be modified. | [Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-layout/platform/provider.html) | + +### Web Notifications + +An area for examples focusing on web notifications. + +| Web Notifications | Description | Live Launch | +| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Web Notifications](./how-to/web-notifications) | This how-to focuses on the setting up a notifications center and a view that raises notifications. | [Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-notifications/platform/provider.html) | ## General diff --git a/how-to/cloud-interop-basic/package.json b/how-to/cloud-interop-basic/package.json index 888e7e0..828ee4f 100644 --- a/how-to/cloud-interop-basic/package.json +++ b/how-to/cloud-interop-basic/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--cloud-interop-basic", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Cloud Interop - Basic", "main": "public/platform/provider.bundle.js", "scripts": { @@ -20,11 +20,11 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/cloud-interop": "0.40.51", - "@openfin/core-web": "0.40.51" + "@openfin/cloud-interop": "0.41.131", + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "copy-webpack-plugin": "^12.0.2", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", diff --git a/how-to/cloud-interop/README.md b/how-to/cloud-interop/README.md index 15bf3fe..e5b791c 100644 --- a/how-to/cloud-interop/README.md +++ b/how-to/cloud-interop/README.md @@ -17,7 +17,7 @@ This page has a very simple layout which is made up of four iframes that inherit It also has a left panel which is outside of the OpenFin Layout and represents a platform specific panel which simply uses fdc3 and logs what it receives. This iframe does not inherit interop settings (as it is not part of the OpenFin layout) and uses platform specific settings to connect. -[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/cloud-interop/platform/provider.html) +[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/cloud-interop/platform/provider.html) ![OpenFin Web Interop Example](./docs/web-interop.png) diff --git a/how-to/cloud-interop/package.json b/how-to/cloud-interop/package.json index 99ceafd..d175b3d 100644 --- a/how-to/cloud-interop/package.json +++ b/how-to/cloud-interop/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--cloud-interop", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Cloud Interop", "main": "public/platform/provider.bundle.js", "scripts": { @@ -20,11 +20,11 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51", - "@openfin/cloud-interop": "0.40.51" + "@openfin/core-web": "0.41.131", + "@openfin/cloud-interop": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/cloud-interop/public/layouts/default.layout.fin.json b/how-to/cloud-interop/public/layouts/default.layout.fin.json index ad89759..f664129 100644 --- a/how-to/cloud-interop/public/layouts/default.layout.fin.json +++ b/how-to/cloud-interop/public/layouts/default.layout.fin.json @@ -33,7 +33,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", "name": "internal-generated-view-54a8ef85-a885-4234-be46-9d52e88fcb74" }, "title": "FDC3 Different Domain" @@ -70,7 +70,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/context/interop-broadcast-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/context/interop-broadcast-view.html", "name": "internal-generated-view-2d9a3624-fd0e-4e0a-b681-a79a9616b871" }, "title": "Interop External Domain" diff --git a/how-to/cloud-interop/public/style/core-web-styles.css b/how-to/cloud-interop/public/style/core-web-styles.css index cbabc33..f8153ac 100644 --- a/how-to/cloud-interop/public/style/core-web-styles.css +++ b/how-to/cloud-interop/public/style/core-web-styles.css @@ -59,16 +59,27 @@ .lm_header [class^=lm_] { box-sizing: content-box !important; } +.lm_header .addTabButton { + -webkit-user-select: none; + user-select: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + padding: 0 6px; +} .lm_header .lm_controls { position: absolute; right: 3px; display: flex; + height: 100%; } .lm_header .lm_controls > * { cursor: pointer; float: left; width: 18px; - height: 18px; + height: 100%; text-align: center; } .lm_header .lm_tabs { @@ -672,12 +683,17 @@ div.placeholder_image img { color: var(--tab-font-color) } +.lm_controls { + height: 100%; +} + .lm_controls li { position: relative; background-position: center center; background-repeat: no-repeat; opacity: .4; - transition: opacity 300ms ease + transition: opacity 300ms ease; + height: 100% !important; } .lm_controls li:hover { diff --git a/how-to/web-client-api/README.md b/how-to/web-client-api/README.md index 72e5c37..7918255 100644 --- a/how-to/web-client-api/README.md +++ b/how-to/web-client-api/README.md @@ -94,7 +94,7 @@ The module supports the following options: This is an FDC3 view similar to the one shown in web-interop and web-interop-basic examples. The only difference is that this one does not import the @openfin/core-web module. The [shim](./client/src/shim.ts) script is referenced in the [fdc3-view.html](./public/views/fdc3-view.html) page which is responsible for bringing in the fin and fdc3 api if the content is running outside of the container. -The content will not run directly as it is not running inside of a layout and the code required to setup a platform and initialize a layout has not been added in order to reduce the amount of code in this example. You can reference the hosted fdc3 example or start the web server and reference the localhost version . +The content will not run directly as it is not running inside of a layout and the code required to setup a platform and initialize a layout has not been added in order to reduce the amount of code in this example. You can reference the hosted fdc3 example or start the web server and reference the localhost version . # Alternatives diff --git a/how-to/web-client-api/client/src/shim-client.ts b/how-to/web-client-api/client/src/shim-client.ts index 58bd96d..904160a 100644 --- a/how-to/web-client-api/client/src/shim-client.ts +++ b/how-to/web-client-api/client/src/shim-client.ts @@ -9,7 +9,7 @@ export async function init(options: ClientOptions): Promise { if (window.fin === undefined) { console.log("Fin is not available. Importing the OpenFin API shim."); const url = - "https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-client-api/js/web.client.api.bundle.js"; + "https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-client-api/js/web.client.api.bundle.js"; const webClient = await import(/* webpackIgnore: true */ url); console.log("OpenFin API shim script imported."); console.log("Checking to see if the document is ready before requesting the API."); diff --git a/how-to/web-client-api/package.json b/how-to/web-client-api/package.json index 41ad62b..4bd01e3 100644 --- a/how-to/web-client-api/package.json +++ b/how-to/web-client-api/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--web-client-api", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Web Client API", "main": "public/js/web.client.api.bundle.js", "scripts": { @@ -19,10 +19,10 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/web-interop-basic/README.md b/how-to/web-interop-basic/README.md index c039754..4225b01 100644 --- a/how-to/web-interop-basic/README.md +++ b/how-to/web-interop-basic/README.md @@ -11,7 +11,7 @@ This page has a very simple layout which is made up of two iframes: - An FDC3 View - This uses the FDC3 API to add a context listener and to broadcast a hardcoded context object. - An Interop View - This uses the OpenFin Interop API to add a context listener and to set context using a hardcoded context object. -[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-interop-basic/platform/provider.html) +[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-interop-basic/platform/provider.html) ![OpenFin Web Interop Basic Example](./docs/web-interop-basic.png) diff --git a/how-to/web-interop-basic/package.json b/how-to/web-interop-basic/package.json index fc70b7d..6c1f543 100644 --- a/how-to/web-interop-basic/package.json +++ b/how-to/web-interop-basic/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--web-interop-basic", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Web Interop - Basic", "main": "public/platform/provider.bundle.js", "scripts": { @@ -20,10 +20,10 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/web-interop-support-context-and-intents/README.md b/how-to/web-interop-support-context-and-intents/README.md index a98f1b0..8a3139a 100644 --- a/how-to/web-interop-support-context-and-intents/README.md +++ b/how-to/web-interop-support-context-and-intents/README.md @@ -35,7 +35,7 @@ To show content in a multi-layout UI we implemented a layoutManagerOverride so t We bring in a number of apps from our workspace platform starter and dev tools. We also include 4 basic apps that support context and intents (using the fdc3 and Interop API). -[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-interop-support-context-and-intents/platform/provider.html) +[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-interop-support-context-and-intents/platform/provider.html) ## Getting Started diff --git a/how-to/web-interop-support-context-and-intents/client/src/content/settings-dialog.ts b/how-to/web-interop-support-context-and-intents/client/src/content/settings-dialog.ts index b75eb05..b54210e 100644 --- a/how-to/web-interop-support-context-and-intents/client/src/content/settings-dialog.ts +++ b/how-to/web-interop-support-context-and-intents/client/src/content/settings-dialog.ts @@ -63,8 +63,10 @@ async function init(): Promise { title.value = settings?.platform?.ui?.title; subTitle.value = settings?.platform?.ui?.subTitle; logo.value = settings?.platform?.ui?.logo; - username.value = settings?.platform.cloudInterop?.connectParams?.basicAuthenticationParameters?.username ?? ""; - password.value = settings?.platform.cloudInterop?.connectParams?.basicAuthenticationParameters?.password ?? ""; + username.value = + settings?.platform.cloudInterop?.connectParams?.basicAuthenticationParameters?.username ?? ""; + password.value = + settings?.platform.cloudInterop?.connectParams?.basicAuthenticationParameters?.password ?? ""; platformId.value = settings?.platform.cloudInterop?.connectParams?.platformId; cloudUrl.value = settings?.platform.cloudInterop?.connectParams?.url; sourceId.value = settings?.platform.cloudInterop?.connectParams.sourceId ?? ""; @@ -81,8 +83,10 @@ async function init(): Promise { appliedSettings.platform.ui.subTitle = subTitle.value; appliedSettings.platform.ui.logo = logo.value; if (appliedSettings.platform?.cloudInterop?.connectParams?.basicAuthenticationParameters) { - appliedSettings.platform.cloudInterop.connectParams.basicAuthenticationParameters.username = username.value; - appliedSettings.platform.cloudInterop.connectParams.basicAuthenticationParameters.password = password.value; + appliedSettings.platform.cloudInterop.connectParams.basicAuthenticationParameters.username = + username.value; + appliedSettings.platform.cloudInterop.connectParams.basicAuthenticationParameters.password = + password.value; } appliedSettings.platform.cloudInterop.connectParams.platformId = platformId.value; appliedSettings.platform.cloudInterop.connectParams.url = cloudUrl.value; diff --git a/how-to/web-interop-support-context-and-intents/client/src/platform/apps/apps.ts b/how-to/web-interop-support-context-and-intents/client/src/platform/apps/apps.ts index 4f95207..5886ec0 100644 --- a/how-to/web-interop-support-context-and-intents/client/src/platform/apps/apps.ts +++ b/how-to/web-interop-support-context-and-intents/client/src/platform/apps/apps.ts @@ -40,6 +40,20 @@ export async function getApps(): Promise { return cachedApps; } +/** + * Formats the app title and adds a count suffix to disambiguate the tabs. + * @param app The app for which to format the title + * @returns The formatted title, with a count suffix if multiple instances exist + */ +async function formatAppTitleWithSuffix(app: PlatformApp): Promise { + const layout = fin.Platform.Layout.getCurrentSync(); + const views = await layout.getCurrentViews(); + const existingInstances = views.filter((view) => view.identity.name.split("/")[0] === app.appId); + return existingInstances && existingInstances.length > 0 + ? `${app.title} (${existingInstances.length})` + : app.title; +} + /** * Launch an application in the way specified by its manifest type. * @param platformApp The application to launch or it's id. @@ -65,17 +79,19 @@ export async function launch( const name = `${appToLaunch.appId}/${randomUUID()}`; const uuid = fin.me.identity.uuid; const appId = appToLaunch.appId; + const title = await formatAppTitleWithSuffix(appToLaunch); if (target?.layout) { await window?.fin?.Platform.Layout.getCurrentSync().addView({ name, url: appToLaunch.details.url, - title: appToLaunch.title + titlePriority: "options", + title }); } else { const currentLayout = window.fin?.Platform.Layout.getCurrentLayoutManagerSync(); const layoutId = `tab-${randomUUID()}`; - const appSnapshot = getAppLayout(appToLaunch, layoutId, name); + const appSnapshot = getAppLayout(appToLaunch, layoutId, name, title); await currentLayout?.applyLayoutSnapshot(appSnapshot); } return [{ name, uuid, appId }]; @@ -112,9 +128,15 @@ export async function bringAppToFront( * @param platformApp The application to get the layout for. * @param layoutId The id of the layout to create for the app. * @param viewName The name of the view to create. + * @param title Preferred title for the new tab, or otherwise will use document.title * @returns The layout options. */ -function getAppLayout(platformApp: PlatformApp, layoutId: string, viewName: string): PlatformLayoutSnapshot { +function getAppLayout( + platformApp: PlatformApp, + layoutId: string, + viewName: string, + title: string | undefined +): PlatformLayoutSnapshot { const appSnapshot: PlatformLayoutSnapshot = { layouts: {}, layoutTitles: {} @@ -138,9 +160,10 @@ function getAppLayout(platformApp: PlatformApp, layoutId: string, viewName: stri componentName: "view", componentState: { url: platformApp.details.url, - name: viewName + name: viewName, + titlePriority: "options" }, - title: platformApp.title + title } ] } diff --git a/how-to/web-interop-support-context-and-intents/client/src/utils.ts b/how-to/web-interop-support-context-and-intents/client/src/utils.ts index 3dfa861..ab1c160 100644 --- a/how-to/web-interop-support-context-and-intents/client/src/utils.ts +++ b/how-to/web-interop-support-context-and-intents/client/src/utils.ts @@ -82,7 +82,7 @@ export function isInteger(value: unknown): value is number { */ export function objectClone(obj: T): T { // eslint-disable-next-line no-restricted-syntax - return obj === undefined ? undefined : JSON.parse(JSON.stringify(obj)); + return obj === undefined ? (undefined as T) : JSON.parse(JSON.stringify(obj)); } /** diff --git a/how-to/web-interop-support-context-and-intents/package.json b/how-to/web-interop-support-context-and-intents/package.json index ff900b9..a199232 100644 --- a/how-to/web-interop-support-context-and-intents/package.json +++ b/how-to/web-interop-support-context-and-intents/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--web-interop-support-context-and-intents", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Web Interop - Support Context and Intents", "main": "public/platform/provider.bundle.js", "scripts": { @@ -20,11 +20,11 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51", - "@openfin/cloud-interop": "0.40.51" + "@openfin/core-web": "0.41.131", + "@openfin/cloud-interop": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/web-interop-support-context-and-intents/public/common/apps-contact.json b/how-to/web-interop-support-context-and-intents/public/common/apps-contact.json index fad66b1..61ebc79 100644 --- a/how-to/web-interop-support-context-and-intents/public/common/apps-contact.json +++ b/how-to/web-interop-support-context-and-intents/public/common/apps-contact.json @@ -11,12 +11,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/contact/call-app.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/contact/call-app.png" } ], "contactEmail": "sales@openfin.co", @@ -24,7 +24,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/call-app/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/call-app/index.html" }, "interop": { "intents": { @@ -52,12 +52,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/contact/participant-selection.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/contact/participant-selection.png" } ], "contactEmail": "sales@openfin.co", @@ -65,7 +65,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/participant-selection/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/participant-selection/index.html" }, "interop": {} }, @@ -80,12 +80,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/contact/participant-history.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/contact/participant-history.png" } ], "contactEmail": "sales@openfin.co", @@ -93,7 +93,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/participant-history/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/participant-history/index.html" }, "interop": {} }, @@ -108,12 +108,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/contact/investments-and-models.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/contact/investments-and-models.png" } ], "contactEmail": "sales@openfin.co", @@ -121,7 +121,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/investments-and-models/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/investments-and-models/index.html" }, "interop": { "intents": { @@ -145,12 +145,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/contact/participant-summary-view.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/contact/participant-summary-view.png" } ], "contactEmail": "sales@openfin.co", @@ -158,7 +158,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/participant-summary/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/participant-summary/index.html" }, "interop": { "intents": { diff --git a/how-to/web-interop-support-context-and-intents/public/common/apps-fdc3-2-0.json b/how-to/web-interop-support-context-and-intents/public/common/apps-fdc3-2-0.json index f5f96fd..3b1f856 100644 --- a/how-to/web-interop-support-context-and-intents/public/common/apps-fdc3-2-0.json +++ b/how-to/web-interop-support-context-and-intents/public/common/apps-fdc3-2-0.json @@ -11,12 +11,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/images/previews/view-intents-fdc3.png", + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/images/previews/view-intents-fdc3.png", "label": "Intents using FDC3" } ], @@ -25,7 +25,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/intent/2-0/fdc3-intent-view.html" + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/intent/2-0/fdc3-intent-view.html" }, "interop": { "intents": { @@ -89,12 +89,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/images/previews/view-context-fdc3.png", + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/images/previews/view-context-fdc3.png", "label": "Contexts using FDC3" } ], @@ -103,7 +103,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html" + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html" }, "interop": {} } diff --git a/how-to/web-interop-support-context-and-intents/public/common/apps-finance.json b/how-to/web-interop-support-context-and-intents/public/common/apps-finance.json index 5a28078..3a58418 100644 --- a/how-to/web-interop-support-context-and-intents/public/common/apps-finance.json +++ b/how-to/web-interop-support-context-and-intents/public/common/apps-finance.json @@ -11,12 +11,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/demos/images/preview/preview-finance-chart.jpeg" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/demos/images/preview/preview-finance-chart.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -39,12 +39,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/demos/images/preview/preview-finance-summary.jpeg" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/demos/images/preview/preview-finance-summary.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -67,12 +67,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/demos/images/preview/preview-finance-portfolio.jpeg" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/demos/images/preview/preview-finance-portfolio.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -95,12 +95,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/demos/images/preview/preview-finance-instrument-details.jpeg" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/demos/images/preview/preview-finance-instrument-details.jpeg" } ], "contactEmail": "sales@openfin.co", diff --git a/how-to/web-interop-support-context-and-intents/public/common/apps-interop.json b/how-to/web-interop-support-context-and-intents/public/common/apps-interop.json index 7904023..541b0da 100644 --- a/how-to/web-interop-support-context-and-intents/public/common/apps-interop.json +++ b/how-to/web-interop-support-context-and-intents/public/common/apps-interop.json @@ -11,12 +11,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/images/previews/view-context-interop-api.png", + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/images/previews/view-context-interop-api.png", "label": "Intents using FDC3" } ], @@ -25,7 +25,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/intent/interop-intent-view.html" + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/intent/interop-intent-view.html" }, "interop": { "intents": { @@ -89,12 +89,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/common/favicon-32x32.png" + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/common/favicon-32x32.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/images/previews/view-context-interop-api.png", + "src": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/images/previews/view-context-interop-api.png", "label": "Contexts using Interop API" } ], @@ -103,7 +103,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/context/interop-broadcast-view.html" + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/context/interop-broadcast-view.html" }, "interop": {} } diff --git a/how-to/web-interop-support-context-and-intents/public/common/apps-manager.json b/how-to/web-interop-support-context-and-intents/public/common/apps-manager.json index 0afdc7c..fa24229 100644 --- a/how-to/web-interop-support-context-and-intents/public/common/apps-manager.json +++ b/how-to/web-interop-support-context-and-intents/public/common/apps-manager.json @@ -11,12 +11,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-my-team.jpeg" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-my-team.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -24,7 +24,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/my-team/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/my-team/index.html" }, "interop": {} }, @@ -39,12 +39,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-annual-leave.jpeg" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-annual-leave.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -52,7 +52,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/annual-leave/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/annual-leave/index.html" }, "interop": {} }, @@ -67,12 +67,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-manager-paths.jpeg" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-manager-paths.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -80,7 +80,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/manager-paths/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/manager-paths/index.html" }, "interop": {} }, @@ -95,12 +95,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-company-comms.jpeg" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-company-comms.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -108,7 +108,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/company-comms/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/company-comms/index.html" }, "interop": {} }, @@ -123,12 +123,12 @@ "lang": "en-US", "icons": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/icon-blue.png" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/icon-blue.png" } ], "screenshots": [ { - "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-company-calendar.jpeg" + "src": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/images/previews/manager/preview-manager-portal-company-calendar.jpeg" } ], "contactEmail": "sales@openfin.co", @@ -136,7 +136,7 @@ "publisher": "OpenFin", "type": "web", "details": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/company-cal/index.html" + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/company-cal/index.html" }, "interop": {} } diff --git a/how-to/web-interop-support-context-and-intents/public/layouts/default.layout.fin.json b/how-to/web-interop-support-context-and-intents/public/layouts/default.layout.fin.json index 2c41b0e..8af7a6a 100644 --- a/how-to/web-interop-support-context-and-intents/public/layouts/default.layout.fin.json +++ b/how-to/web-interop-support-context-and-intents/public/layouts/default.layout.fin.json @@ -21,7 +21,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", "name": "fdc3-context-view-2-0/e7fe7df3-6f64-4235-899f-4e91af2cb32d" }, @@ -41,7 +41,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/intent/2-0/fdc3-intent-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/intent/2-0/fdc3-intent-view.html", "name": "fdc3-intent-view-2-0/54a8ef85-a885-4234-be46-9d52e88fcb74" }, @@ -74,7 +74,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/context/interop-broadcast-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/context/interop-broadcast-view.html", "name": "interop-broadcast-view/64a8efd7-3d92-42ae-8fae-dffcc0fdac97" }, @@ -94,7 +94,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/intent/interop-intent-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/intent/interop-intent-view.html", "name": "interop-intent-view-2-0/2d9a3624-fd0e-4e0a-b681-a79a9616b871" }, @@ -135,7 +135,7 @@ "componentName": "view", "componentState": { "name": "my-team/b9880bc2-2983-4b3c-a496-77d94783cb7e", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/my-team/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/my-team/index.html", "componentName": "view" }, "title": "My Team" @@ -157,7 +157,7 @@ "componentName": "view", "componentState": { "name": "internal-generated-view-0dd98149-16fb-4cf0-9b2a-d5bff2519d9b", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/keeping-track/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/keeping-track/index.html", "componentName": "view" }, "title": "Keeping Track" @@ -167,7 +167,7 @@ "componentName": "view", "componentState": { "name": "annual-leave/ef70ccee-2613-4f99-8a01-8cfba31064ba", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/annual-leave/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/annual-leave/index.html", "componentName": "view" }, "title": "Annual Leave" @@ -177,7 +177,7 @@ "componentName": "view", "componentState": { "name": "internal-generated-view-f898522a-5d85-4e9e-93eb-378179f0f909", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/360-feedback/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/360-feedback/index.html", "componentName": "view" }, "title": "360 Feedback" @@ -201,7 +201,7 @@ "componentName": "view", "componentState": { "name": "manager-paths/b38f525a-77a9-48d9-bd02-b895cfbbf074", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/manager-paths/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/manager-paths/index.html", "componentName": "view" }, "title": "Manager Paths" @@ -217,7 +217,7 @@ "componentName": "view", "componentState": { "name": "company-comms/5292442d-4d19-4d71-bcf1-ca9081ec50b0", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/company-comms/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/company-comms/index.html", "componentName": "view" }, "title": "Company News" @@ -227,7 +227,7 @@ "componentName": "view", "componentState": { "name": "company-cal/5292442d-4d19-4d71-bcf1-ca9081ec50b1", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/company-cal/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/company-cal/index.html", "componentName": "view" }, "title": "Company Calendar" @@ -237,7 +237,7 @@ "componentName": "view", "componentState": { "name": "internal-generated-view-935bb258-ded4-4a85-ad92-0f2a742d4d42", - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/manager-portal/franchise-comms/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/manager-portal/franchise-comms/index.html", "componentName": "view" }, "title": "Franchise Comms" @@ -290,7 +290,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/participant-summary/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/participant-summary/index.html", "componentName": "view", "name": "participant-summary-view/f65f3aa0-7499-4d8a-b477-8e04ab7db493" }, @@ -313,7 +313,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/investments-and-models/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/investments-and-models/index.html", "componentName": "view", "name": "investments-and-models/5ad7e692-dd6a-48b8-bbc6-4f284f1bcc3d" }, @@ -336,7 +336,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/call-app/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/call-app/index.html", "name": "call-app/1f458d7d-22a1-40fa-b793-c7eb2d4d84a6" }, "isClosable": true, @@ -374,7 +374,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/participant-history/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/participant-history/index.html", "name": "participant-history/9b0bdbff-3de4-4b86-8abb-be1df6876a66" }, "isClosable": true, @@ -384,7 +384,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v20.1.0/workspace-platform-starter/common/views/contact/participant-selection/index.html", + "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/workspace-platform-starter/common/views/contact/participant-selection/index.html", "name": "participant-selection/9b0bdbff-3de4-4b86-8abb-be1df6876a36" }, "isClosable": true, diff --git a/how-to/web-interop-support-context-and-intents/public/platform/apps/app-picker.html b/how-to/web-interop-support-context-and-intents/public/platform/apps/app-picker.html index 18f0a3d..dd77d1d 100644 --- a/how-to/web-interop-support-context-and-intents/public/platform/apps/app-picker.html +++ b/how-to/web-interop-support-context-and-intents/public/platform/apps/app-picker.html @@ -7,7 +7,7 @@ - + diff --git a/how-to/web-interop-support-context-and-intents/public/platform/intents/instance-picker.html b/how-to/web-interop-support-context-and-intents/public/platform/intents/instance-picker.html index 5465840..1b30cda 100644 --- a/how-to/web-interop-support-context-and-intents/public/platform/intents/instance-picker.html +++ b/how-to/web-interop-support-context-and-intents/public/platform/intents/instance-picker.html @@ -7,7 +7,7 @@ - + diff --git a/how-to/web-interop-support-context-and-intents/public/platform/settings/settings-dialog.html b/how-to/web-interop-support-context-and-intents/public/platform/settings/settings-dialog.html index bc861b4..c592702 100644 --- a/how-to/web-interop-support-context-and-intents/public/platform/settings/settings-dialog.html +++ b/how-to/web-interop-support-context-and-intents/public/platform/settings/settings-dialog.html @@ -7,7 +7,7 @@ - + diff --git a/how-to/web-interop-support-context-and-intents/public/style/core-web-styles.css b/how-to/web-interop-support-context-and-intents/public/style/core-web-styles.css index cbabc33..f8153ac 100644 --- a/how-to/web-interop-support-context-and-intents/public/style/core-web-styles.css +++ b/how-to/web-interop-support-context-and-intents/public/style/core-web-styles.css @@ -59,16 +59,27 @@ .lm_header [class^=lm_] { box-sizing: content-box !important; } +.lm_header .addTabButton { + -webkit-user-select: none; + user-select: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + padding: 0 6px; +} .lm_header .lm_controls { position: absolute; right: 3px; display: flex; + height: 100%; } .lm_header .lm_controls > * { cursor: pointer; float: left; width: 18px; - height: 18px; + height: 100%; text-align: center; } .lm_header .lm_tabs { @@ -672,12 +683,17 @@ div.placeholder_image img { color: var(--tab-font-color) } +.lm_controls { + height: 100%; +} + .lm_controls li { position: relative; background-position: center center; background-repeat: no-repeat; opacity: .4; - transition: opacity 300ms ease + transition: opacity 300ms ease; + height: 100% !important; } .lm_controls li:hover { diff --git a/how-to/web-interop/README.md b/how-to/web-interop/README.md index 5d1960d..2daa392 100644 --- a/how-to/web-interop/README.md +++ b/how-to/web-interop/README.md @@ -15,7 +15,7 @@ This page has a very simple layout which is made up of four iframes that inherit It also has a left panel which is outside of the OpenFin Layout and represents a platform specific panel which simply uses fdc3 and logs what it receives. This iframe does not inherit interop settings (as it is not part of the OpenFin layout) and uses platform specific settings to connect. -[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-interop/platform/provider.html) +[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-interop/platform/provider.html) ![OpenFin Web Interop Example](./docs/web-interop.png) diff --git a/how-to/web-interop/package.json b/how-to/web-interop/package.json index ec78ddd..2b1a59d 100644 --- a/how-to/web-interop/package.json +++ b/how-to/web-interop/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--web-interop", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Web Interop", "main": "public/platform/provider.bundle.js", "scripts": { @@ -20,10 +20,10 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/web-interop/public/layouts/default.layout.fin.json b/how-to/web-interop/public/layouts/default.layout.fin.json index ad89759..edf0d26 100644 --- a/how-to/web-interop/public/layouts/default.layout.fin.json +++ b/how-to/web-interop/public/layouts/default.layout.fin.json @@ -33,10 +33,10 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", + "titlePriority": "document", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", "name": "internal-generated-view-54a8ef85-a885-4234-be46-9d52e88fcb74" - }, - "title": "FDC3 Different Domain" + } } ] } @@ -55,10 +55,20 @@ "type": "component", "componentName": "view", "componentState": { + "titlePriority": "options", + "title": "Interop Same Domain", "url": "http://localhost:6060/views/interop-view.html", "name": "internal-generated-view-64a8efd7-3d92-42ae-8fae-dffcc0fdac96" - }, - "title": "Interop Same Domain" + } + }, + { + "type": "component", + "componentName": "view", + "componentState": { + "titlePriority": "document", + "url": "http://localhost:6060/views/interop-view.html", + "name": "internal-generated-view-64a8efd7-3d92-42ae-8fae-dffcc0fdac96" + } } ] }, @@ -70,10 +80,11 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/context/interop-broadcast-view.html", + "titlePriority": "options", + "title": "Interop External Domain", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/context/interop-broadcast-view.html", "name": "internal-generated-view-2d9a3624-fd0e-4e0a-b681-a79a9616b871" - }, - "title": "Interop External Domain" + } } ] } diff --git a/how-to/web-interop/public/style/core-web-styles.css b/how-to/web-interop/public/style/core-web-styles.css index cbabc33..f8153ac 100644 --- a/how-to/web-interop/public/style/core-web-styles.css +++ b/how-to/web-interop/public/style/core-web-styles.css @@ -59,16 +59,27 @@ .lm_header [class^=lm_] { box-sizing: content-box !important; } +.lm_header .addTabButton { + -webkit-user-select: none; + user-select: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + padding: 0 6px; +} .lm_header .lm_controls { position: absolute; right: 3px; display: flex; + height: 100%; } .lm_header .lm_controls > * { cursor: pointer; float: left; width: 18px; - height: 18px; + height: 100%; text-align: center; } .lm_header .lm_tabs { @@ -672,12 +683,17 @@ div.placeholder_image img { color: var(--tab-font-color) } +.lm_controls { + height: 100%; +} + .lm_controls li { position: relative; background-position: center center; background-repeat: no-repeat; opacity: .4; - transition: opacity 300ms ease + transition: opacity 300ms ease; + height: 100% !important; } .lm_controls li:hover { diff --git a/how-to/web-layout-basic/README.md b/how-to/web-layout-basic/README.md index b9c8a16..22414a4 100644 --- a/how-to/web-layout-basic/README.md +++ b/how-to/web-layout-basic/README.md @@ -8,7 +8,7 @@ This is a simple example that has a simple provider web page that acts as the ma This page has a very simple layout which is made up of four iframes loading an external website (example.com). -[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-layout-basic/platform/provider.html) +[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-layout-basic/platform/provider.html) ![OpenFin Web Layout Basic Example](./docs/web-layout-basic.png) diff --git a/how-to/web-layout-basic/package.json b/how-to/web-layout-basic/package.json index 9012854..e548311 100644 --- a/how-to/web-layout-basic/package.json +++ b/how-to/web-layout-basic/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--web-layout-basic", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Web Layout Basic", "main": "public/platform/provider.bundle.js", "scripts": { @@ -20,10 +20,10 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/web-layout-basic/public/style/core-web-styles.css b/how-to/web-layout-basic/public/style/core-web-styles.css index cbabc33..f8153ac 100644 --- a/how-to/web-layout-basic/public/style/core-web-styles.css +++ b/how-to/web-layout-basic/public/style/core-web-styles.css @@ -59,16 +59,27 @@ .lm_header [class^=lm_] { box-sizing: content-box !important; } +.lm_header .addTabButton { + -webkit-user-select: none; + user-select: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + padding: 0 6px; +} .lm_header .lm_controls { position: absolute; right: 3px; display: flex; + height: 100%; } .lm_header .lm_controls > * { cursor: pointer; float: left; width: 18px; - height: 18px; + height: 100%; text-align: center; } .lm_header .lm_tabs { @@ -672,12 +683,17 @@ div.placeholder_image img { color: var(--tab-font-color) } +.lm_controls { + height: 100%; +} + .lm_controls li { position: relative; background-position: center center; background-repeat: no-repeat; opacity: .4; - transition: opacity 300ms ease + transition: opacity 300ms ease; + height: 100% !important; } .lm_controls li:hover { diff --git a/how-to/web-layout/README.md b/how-to/web-layout/README.md index 927efd5..7bed00a 100644 --- a/how-to/web-layout/README.md +++ b/how-to/web-layout/README.md @@ -17,7 +17,7 @@ It also has a left panel which is outside of the OpenFin Layout and represents a Using Layouts, this demo also shows off a "Swap Layouts" function, which allows someone to quickly jump from one created layout (via a snapshot JSON definition) to another. -[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v20.1.0/web-layout/platform/provider.html) +[Live Launch Example](https://built-on-openfin.github.io/web-starter/web/v21.0.0/web-layout/platform/provider.html) ![OpenFin Web Multi Layout Example](./docs/web-layout.png) diff --git a/how-to/web-layout/package.json b/how-to/web-layout/package.json index c3853d1..2c3c219 100644 --- a/how-to/web-layout/package.json +++ b/how-to/web-layout/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web--web-layout", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter -- Web Layout", "main": "public/platform/provider.bundle.js", "scripts": { @@ -20,10 +20,10 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/web-layout/public/layouts/default.layout.fin.json b/how-to/web-layout/public/layouts/default.layout.fin.json index 724e9e5..71f9679 100644 --- a/how-to/web-layout/public/layouts/default.layout.fin.json +++ b/how-to/web-layout/public/layouts/default.layout.fin.json @@ -36,7 +36,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", "name": "internal-generated-view-primary-2" }, "title": "FDC3 Different Domain" @@ -73,7 +73,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/context/interop-broadcast-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/context/interop-broadcast-view.html", "name": "internal-generated-view-primary-4" }, "title": "Interop External Domain" @@ -122,7 +122,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/interop-api/context/interop-broadcast-view.html", + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/interop-api/context/interop-broadcast-view.html", "name": "internal-generated-view-primary-7" }, "title": "Interop External Domain" diff --git a/how-to/web-layout/public/layouts/secondary.layout.fin.json b/how-to/web-layout/public/layouts/secondary.layout.fin.json index e137891..d715ae9 100644 --- a/how-to/web-layout/public/layouts/secondary.layout.fin.json +++ b/how-to/web-layout/public/layouts/secondary.layout.fin.json @@ -36,7 +36,7 @@ "type": "component", "componentName": "view", "componentState": { - "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v20.1.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html" + "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html" }, "title": "FDC3 Different Domain", "isClosable": true diff --git a/how-to/web-layout/public/style/core-web-styles.css b/how-to/web-layout/public/style/core-web-styles.css index cbabc33..f8153ac 100644 --- a/how-to/web-layout/public/style/core-web-styles.css +++ b/how-to/web-layout/public/style/core-web-styles.css @@ -59,16 +59,27 @@ .lm_header [class^=lm_] { box-sizing: content-box !important; } +.lm_header .addTabButton { + -webkit-user-select: none; + user-select: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + padding: 0 6px; +} .lm_header .lm_controls { position: absolute; right: 3px; display: flex; + height: 100%; } .lm_header .lm_controls > * { cursor: pointer; float: left; width: 18px; - height: 18px; + height: 100%; text-align: center; } .lm_header .lm_tabs { @@ -672,12 +683,17 @@ div.placeholder_image img { color: var(--tab-font-color) } +.lm_controls { + height: 100%; +} + .lm_controls li { position: relative; background-position: center center; background-repeat: no-repeat; opacity: .4; - transition: opacity 300ms ease + transition: opacity 300ms ease; + height: 100% !important; } .lm_controls li:hover { diff --git a/how-to/web-notifications/.markdownlint.json b/how-to/web-notifications/.markdownlint.json new file mode 100644 index 0000000..2cf77b9 --- /dev/null +++ b/how-to/web-notifications/.markdownlint.json @@ -0,0 +1,5 @@ +{ + "line-length": false, + "MD029": false, + "MD041": false +} diff --git a/how-to/web-notifications/.prettierignore b/how-to/web-notifications/.prettierignore new file mode 100644 index 0000000..543296e --- /dev/null +++ b/how-to/web-notifications/.prettierignore @@ -0,0 +1,7 @@ +package-lock.json +*.bundle.js +settings.schema.json +reports +*.exe +*.zip +**/wc-fin/*.js \ No newline at end of file diff --git a/how-to/web-notifications/.prettierrc b/how-to/web-notifications/.prettierrc new file mode 100644 index 0000000..7fd91bb --- /dev/null +++ b/how-to/web-notifications/.prettierrc @@ -0,0 +1,31 @@ +{ + "arrowParens": "always", + "bracketSpacing": true, + "endOfLine": "lf", + "overrides": [ + { + "files": ["*.html"], + "options": { + "htmlWhitespaceSensitivity": "ignore" + } + }, + { + "files": ["*.ts"], + "options": { + "singleQuote": false + } + }, + { + "files": ["*.md"], + "options": { + "tabWidth": 2, + "useTabs": false + } + } + ], + "printWidth": 110, + "semi": true, + "singleQuote": true, + "trailingComma": "none", + "useTabs": true +} diff --git a/how-to/web-notifications/LICENSE.MD b/how-to/web-notifications/LICENSE.MD new file mode 100644 index 0000000..fc40c59 --- /dev/null +++ b/how-to/web-notifications/LICENSE.MD @@ -0,0 +1,5 @@ +> **_:information_source: OpenFin Workspace:_** [OpenFin Workspace](https://www.openfin.co/workspace/) is a commercial product and this repo is for evaluation purposes. Use of the OpenFin Container and OpenFin Workspace components is only granted pursuant to a license from OpenFin. Please [**contact us**](https://www.openfin.co/workspace/poc/) if you would like to request a developer evaluation key or to discuss a production license. + +The developer license can be found here: + +- [https://www.openfin.co/developer-agreement/](https://www.openfin.co/developer-agreement/) diff --git a/how-to/web-notifications/README.md b/how-to/web-notifications/README.md new file mode 100644 index 0000000..8a597a8 --- /dev/null +++ b/how-to/web-notifications/README.md @@ -0,0 +1,52 @@ +![OpenFin Web Interop Basic Example](../../assets/openfin-web-starter.png) + +> **_:information_source: OpenFin:_** [OpenFin](https://www.openfin.co/) libraries are a commercial product and this repo is for evaluation purposes. Use of the OpenFin npm packages is only granted pursuant to a license from OpenFin. Please [**contact us**](https://www.openfin.co/contact/) if you would like to request a developer evaluation key or to discuss a production license. + +# OpenFin Web Notifications + +Demonstrates [Notification Center in a web browser](https://resources.here.io/docs/core/hc-ui/notifications/web-nfn-center) + +## Getting Started + +1. Install dependencies and do the initial build. Note that these examples assume you are in the sub-directory for the example. + +```shell +npm install +``` + +2. Build the example. + +```shell +npm run build +``` + +3. Start the test server in a new window. + +```shell +npm run start +``` + +4. Launch the sample in your default desktop browser (or copy into your Desktop Browser). + +```shell +npm run client +``` + +## Setup Notes + +There are a few things to note before using `@openfin/core-web` and the web notification center. + +Firstly, please read the docs: [Notification Center in a web browser](https://resources.here.io/docs/core/hc-ui/notifications/web-nfn-center) + +Then follow the setup notes in [web-layout-basic](../web-layout-basic/README.md) to understand how a core-web project is structured. + +#### Peer dependencies + +`@openfin/web-notifications` and `@openfin/web-notifications-client` have peer dependencies. The npm install process should indicate which ones +need to be added to your project. + +#### Required CSS + +See [public/common/style/app.css]() for css that the notification center needs to function correctly. + +Note the `#notification_center_container` class which positions the component on your page. You can alter these styles to change its position or size. \ No newline at end of file diff --git a/how-to/web-notifications/client/src/content/notifications.ts b/how-to/web-notifications/client/src/content/notifications.ts new file mode 100644 index 0000000..41a9815 --- /dev/null +++ b/how-to/web-notifications/client/src/content/notifications.ts @@ -0,0 +1,92 @@ +import { + create, + hide, + IndicatorColor, + type NotificationOptions, + show +} from "@openfin/web-notifications-client"; +import { init } from "../platform/api"; + +window.addEventListener("DOMContentLoaded", async () => { + await init(); + await initializeDom(); +}); + +/** + * Initialize the DOM elements. + */ +async function initializeDom(): Promise { + const btnShowCenter = document.querySelector("#btnShowCenter"); + if (btnShowCenter) { + btnShowCenter.addEventListener("click", showCenter); + } + + const btnHideCenter = document.querySelector("#btnHideCenter"); + if (btnHideCenter) { + btnHideCenter.addEventListener("click", hideCenter); + } + + const btnNotificationSimple = document.querySelector("#btnNotificationSimple"); + if (btnNotificationSimple) { + btnNotificationSimple.addEventListener("click", async () => showSimpleNotification()); + } + + const btnNotificationInteractive = document.querySelector("#btnNotificationInteractive"); + if (btnNotificationInteractive) { + btnNotificationInteractive.addEventListener("click", async () => showInteractiveNotification()); + } +} + +/** + * Show the notification center + */ +function showCenter(): void { + show(); +} + +/** + * Hide the notification center + */ +function hideCenter(): void { + hide(); +} + +/** + * Display a very basic simple notification. + */ +async function showSimpleNotification(): Promise { + const notification: NotificationOptions = { + title: "Simple Notification", + body: "This is a simple notification", + platform: "web-notifications-platform" + }; + await create(notification); +} + +/** + * Display a + */ +async function showInteractiveNotification(): Promise { + const notification: NotificationOptions = { + indicator: { + color: IndicatorColor.ORANGE, + fallback: IndicatorColor.ORANGE, + text: "News Alert" + }, + icon: "https://cdn.openfin.co/examples/notifications/company-B.png", + title: "US added 138K jobs; Lower than target 185K", + body: "After more than a decade of growth, U.S. nonfarm payrolls shrunk by 701,000, and the unemployment rate rose to 4.4%...", + buttons: [ + { + title: "Read More", + type: "button", + cta: true, + onClick: () => window.open("https://myexample.com/news/employment", "_blank") + } + ], + soundOptions: { + mode: "silent" + } + }; + await create(notification); +} diff --git a/how-to/web-notifications/client/src/platform/api.ts b/how-to/web-notifications/client/src/platform/api.ts new file mode 100644 index 0000000..bb50b43 --- /dev/null +++ b/how-to/web-notifications/client/src/platform/api.ts @@ -0,0 +1,63 @@ +import { connect, type BaseConnectionOptions } from "@openfin/core-web"; +import { connectToNotifications } from "@openfin/web-notifications-client"; +import { getSettings } from "./settings"; + +/** + * Initializes the OpenFin Web Broker connection. + * @param inherit Should we inherit settings from the host (available in the OpenFin layout system) or use settings? Default is true. + */ +export async function init(inherit: boolean = false): Promise { + // Set window.fin to the `fin` object. + let options: BaseConnectionOptions | undefined; + if (window.fin === undefined) { + const settings = await getSettings(); + if (settings === undefined) { + console.error( + "Unable to run the sample as we have been unable to load the web manifest and it's settings from the currently running html page. Please ensure that the web manifest is being served and that it contains the custom_settings section." + ); + return; + } + + if (!inherit) { + options = { + brokerUrl: settings.platform.interop.brokerUrl, + interopConfig: { + providerId: settings.platform.interop.providerId, + currentContextGroup: settings.platform.interop.defaultContextGroup + } + }; + } + // Specify an interopConfig with a specific provider ID and a context group to initialize the `fin.me.interop` client on connection. + if (options) { + window.fin = await connect({ + options + }); + } else { + window.fin = await connect({ + connectionInheritance: "enabled" + }); + } + + // Connect to the notification center + await connectToNotifications({ + id: settings.platform.platformIdentifier, + title: "Web notifications starter", + icon: "here.png", + serviceId: settings.platform.notificationServiceId, // Must match the serviceId used during initialization + finContext: window.fin + }); + + console.log("Finished initializing the fin API."); + // Create and dispatch the finReady event + const event = new CustomEvent("finReady"); + window.dispatchEvent(event); + } + + if (window.fdc3 === undefined && window?.fin?.me.interop?.getFDC3Sync !== undefined) { + window.fdc3 = fin.me.interop.getFDC3Sync("2.0"); + console.log("Finished initializing the fdc3 API."); + // Create and dispatch the FDC3Ready event + const event = new CustomEvent("fdc3Ready"); + window.dispatchEvent(event); + } +} diff --git a/how-to/web-notifications/client/src/platform/iframe-broker.ts b/how-to/web-notifications/client/src/platform/iframe-broker.ts new file mode 100644 index 0000000..b45a1c3 --- /dev/null +++ b/how-to/web-notifications/client/src/platform/iframe-broker.ts @@ -0,0 +1,27 @@ +import { init as initBrokerConnection } from "@openfin/core-web/iframe-broker"; +import { getSettings } from "./settings"; + +/** + * Initializes the OpenFin Web Broker connection. + * @returns A promise that resolves when the connection is established. + */ +async function init(): Promise { + const settings = await getSettings(); + if (settings === undefined) { + console.error( + "Unable to run the sample as we have been unable to load the web manifest and it's settings from the currently running html page. Please ensure that the web manifest is being served and that it contains the custom_settings section." + ); + return; + } + return initBrokerConnection({ + sharedWorkerUrl: settings.platform.interop.sharedWorkerUrl, + logLevel: "info" + }); +} + +init() + .then(() => { + console.log("Connected to the OpenFin IFrame Web Broker."); + return true; + }) + .catch((err) => console.error(err)); diff --git a/how-to/web-notifications/client/src/platform/settings.ts b/how-to/web-notifications/client/src/platform/settings.ts new file mode 100644 index 0000000..a76f31e --- /dev/null +++ b/how-to/web-notifications/client/src/platform/settings.ts @@ -0,0 +1,69 @@ +import type { WebLayoutSnapshot } from "@openfin/core-web"; +import type { Settings } from "../shapes/setting-shapes"; + +/** + * Fetches the settings for the application. + * @returns The settings for the application. + */ +export async function getSettings(): Promise { + const settings = await getManifestSettings(); + if (settings === undefined) { + console.error( + "Unable to run the example as settings are required and we fetch them from the link web manifest from the html page that is being served. It should exist in the customSettings section of the web manifest." + ); + } + return settings; +} + +/** + * Returns a default layout from the settings if provided. + * @returns The default layout from the settings. + */ +export async function getDefaultLayout(): Promise { + const settings = await getSettings(); + if (settings?.platform?.layout?.defaultLayout === undefined) { + console.error( + "Unable to run the example as without a layout being defined. Please ensure that settings have been provided in the web manifest." + ); + return; + } + if (typeof settings.platform.layout.defaultLayout === "string") { + const layoutResponse = await fetch(settings.platform.layout.defaultLayout); + const layoutJson = (await layoutResponse.json()) as WebLayoutSnapshot; + return layoutJson; + } + return settings.platform.layout.defaultLayout; +} + +/** + * Returns a default layout from the settings if provided. + * @returns The default layout from the settings. + */ +export async function getSecondLayout(): Promise { + const settings = await getSettings(); + if (settings?.platform?.layout?.secondLayout === undefined) { + console.error( + "Unable to run the example as without a layout being defined. Please ensure that settings have been provided in the web manifest." + ); + return; + } + if (typeof settings.platform.layout.secondLayout === "string") { + const layoutResponse = await fetch(settings.platform.layout.secondLayout); + const layoutJson = (await layoutResponse.json()) as WebLayoutSnapshot; + return layoutJson; + } + return settings.platform.layout.secondLayout; +} +/** + * Returns the settings from the manifest file. + * @returns customSettings for this example + */ +async function getManifestSettings(): Promise { + // Get the manifest link + const link = document.querySelector('link[rel="manifest"]'); + if (link !== null) { + const manifestResponse = await fetch(link.href); + const manifestJson = (await manifestResponse.json()) as { custom_settings: Settings }; + return manifestJson.custom_settings; + } +} diff --git a/how-to/web-notifications/client/src/provider.ts b/how-to/web-notifications/client/src/provider.ts new file mode 100644 index 0000000..3402d74 --- /dev/null +++ b/how-to/web-notifications/client/src/provider.ts @@ -0,0 +1,89 @@ +import { type WebLayoutSnapshot, connect } from "@openfin/core-web"; +import { initNotificationCenter } from "@openfin/web-notifications"; +import { getSettings } from "./platform/settings"; + +/** + * Gets the default layout for this app. + * @returns The default layout for this app. + */ +async function getDefaultLayout(): Promise { + const layoutResponse = await fetch("http://localhost:6060/layouts/default.layout.fin.json"); + const layoutJson = (await layoutResponse.json()) as WebLayoutSnapshot; + return layoutJson; +} +/** + * Initializes the OpenFin Web Broker connection. + */ +async function init(): Promise { + // Get the required settings + const settings = await getSettings(); + // Get the default layout + const layoutSnapshot = await getDefaultLayout(); + + if (settings === undefined || layoutSnapshot === undefined) { + console.error( + "Unable to run the sample as we have been unable to load the web manifest and it's settings from the currently running html page. Please ensure that the web manifest is being served and that it contains the custom_settings section." + ); + return; + } + + if (layoutSnapshot === undefined) { + console.error("Unable to run the sample as we have been unable to load the default snapshot."); + return; + } + + // Get the dom element to host the layout + const layoutContainer = document.querySelector("#layout_container"); + if (layoutContainer === null) { + console.error( + "Please ensure the document has an element with the following id #layout_container so that the web-layout can be applied." + ); + return; + } + + // Get the dom element to host the notification center + const notificationCenterContainer = document.querySelector("#notification_center_container"); + if (notificationCenterContainer === null) { + console.error( + "Please ensure the document has an element with the following id #notification_center_container for the notification center" + ); + return; + } + + // Connect to the OpenFin Web Broker and pass the default layout. + // It is good practice to specify providerId even if content is explicitly specifying it for cases where + // this provider uses our layout system and content uses inheritance. currentContextGroup + // is useful for defaulting any client that uses inheritance through our layout system. + const fin = await connect({ + options: { + brokerUrl: settings.platform.interop.brokerUrl, + interopConfig: { + providerId: settings.platform.interop.providerId, + currentContextGroup: settings.platform.interop.defaultContextGroup + } + }, + connectionInheritance: "enabled", + platform: { layoutSnapshot }, + logLevel: "info" + }); + + // You may now use the `fin` object to initialize the broker and the layout. + await fin.Interop.init(settings.platform.interop.providerId); + // initialize the layout and pass it the dom element to bind to + await fin.Platform.Layout.init({ + container: layoutContainer + }); + + await initNotificationCenter({ + finContext: fin, + serviceId: settings.platform.notificationServiceId, + container: notificationCenterContainer + }); +} + +init() + .then(() => { + console.log("Connected to the OpenFin Web Broker and layout has been applied."); + return true; + }) + .catch((err) => console.error(err)); diff --git a/how-to/web-notifications/client/src/shapes/layout-shapes.ts b/how-to/web-notifications/client/src/shapes/layout-shapes.ts new file mode 100644 index 0000000..c377fec --- /dev/null +++ b/how-to/web-notifications/client/src/shapes/layout-shapes.ts @@ -0,0 +1,29 @@ +import type OpenFin from "@openfin/core"; + +/** + * Type of the parameter passed into the layoutManagerOverride function. + * Extended by implementor's class. + */ +export type LayoutManagerConstructor = OpenFin.LayoutManagerConstructor; +/** + * Type of the LayoutManager instance created by the override. + */ +export type LayoutManager = OpenFin.LayoutManager; + +/** + * Layout Shape that is used to index one or more layouts used in a platform window. + */ +export interface LayoutManagerItem { + /** + * Name of layout item. + */ + layoutName: string; + /** + * Layout settings, and content options. + */ + layout: OpenFin.LayoutOptions; + /** + * Layout element to bind the layout creation to. + */ + container?: HTMLElement; +} diff --git a/how-to/web-notifications/client/src/shapes/setting-shapes.ts b/how-to/web-notifications/client/src/shapes/setting-shapes.ts new file mode 100644 index 0000000..5b2e473 --- /dev/null +++ b/how-to/web-notifications/client/src/shapes/setting-shapes.ts @@ -0,0 +1,33 @@ +import type { WebLayoutSnapshot } from "@openfin/core-web"; + +/** + * Settings for the client + */ +export interface Settings { + /** + * Platform settings + */ + platform: { + platformIdentifier: string; + notificationServiceId: string; + interop: { + sharedWorkerUrl: string; + brokerUrl: string; + providerId: string; + defaultContextGroup?: string; + }; + layout: { + panels?: { + left?: { + frameId: string; + frameContainerId: string; + url: string; + }; + }; + layoutContainerId: string; + defaultLayout: WebLayoutSnapshot | string; + secondaryContainerId: string; + secondLayout: WebLayoutSnapshot | string; + }; + }; +} diff --git a/how-to/web-notifications/client/tsconfig.json b/how-to/web-notifications/client/tsconfig.json new file mode 100644 index 0000000..6276803 --- /dev/null +++ b/how-to/web-notifications/client/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "es2021", + "module": "Node16", + "sourceMap": true, + "rootDir": "./src", + "outDir": "build", + "skipLibCheck": true, + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "Node16", + "types": ["./types/fin"] + }, + "include": ["./src/**/*.ts"] +} diff --git a/how-to/web-notifications/client/types/fin.d.ts b/how-to/web-notifications/client/types/fin.d.ts new file mode 100644 index 0000000..574fe4f --- /dev/null +++ b/how-to/web-notifications/client/types/fin.d.ts @@ -0,0 +1,10 @@ +import type { OpenFin } from "@openfin/core"; +import type { DesktopAgent } from "@finos/fdc3"; + +declare global { + const fin: OpenFin.Fin<"external connection">; + interface Window { + fin?: OpenFin.Fin<"external connection">; + fdc3?: DesktopAgent; + } +} diff --git a/how-to/web-notifications/client/webpack.config.js b/how-to/web-notifications/client/webpack.config.js new file mode 100644 index 0000000..cdbadfe --- /dev/null +++ b/how-to/web-notifications/client/webpack.config.js @@ -0,0 +1,54 @@ +const path = require('path'); + +const rules = [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/ + } +]; + +module.exports = [ + { + entry: './client/src/provider.ts', + devtool: 'source-map', + module: { + rules + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'] + }, + output: { + filename: 'provider.bundle.js', + path: path.resolve(__dirname, '..', 'public', 'js') + } + }, + { + entry: './client/src/platform/iframe-broker.ts', + devtool: 'source-map', + module: { + rules + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'] + }, + output: { + filename: 'iframe-broker.bundle.js', + path: path.resolve(__dirname, '..', 'public', 'js') + } + }, + { + entry: './client/src/content/notifications.ts', + devtool: 'source-map', + module: { + rules + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'] + }, + output: { + filename: 'notifications.bundle.js', + path: path.resolve(__dirname, '..', 'public', 'js') + } + } +]; diff --git a/how-to/web-notifications/eslint.config.js b/how-to/web-notifications/eslint.config.js new file mode 100644 index 0000000..d2c3213 --- /dev/null +++ b/how-to/web-notifications/eslint.config.js @@ -0,0 +1,21 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser + }, + rules: { + "@typescript-eslint/consistent-type-imports": [ + "warn", + { prefer: "type-imports", fixStyle: "inline-type-imports" }, + ], + }, + } +); diff --git a/how-to/web-notifications/package.json b/how-to/web-notifications/package.json new file mode 100644 index 0000000..31e7fc2 --- /dev/null +++ b/how-to/web-notifications/package.json @@ -0,0 +1,37 @@ +{ + "name": "openfin-web--web-notifications", + "version": "21.0.0", + "description": "OpenFin Web Starter -- Web Notifications", + "main": "public/platform/provider.bundle.js", + "scripts": { + "client": "node ./scripts/launch.mjs", + "copy-core-web": "node ./scripts/copy-core-web.js", + "build-client": "npm run copy-core-web && webpack build --config ./client/webpack.config.js --mode=development", + "build": "npm run build-client", + "start": "npx --yes http-server ./public -p 6060 -c-1", + "setup": "npm install && npm run build", + "prettier": "prettier --config .prettierrc --write .", + "prettier-check": "prettier --config .prettierrc --check .", + "eslint": "eslint . --ext .js,.mjs,.ts", + "markdownlint": "markdownlint **/*.md --ignore **/node_modules/**", + "validate": "npm run prettier && npm run eslint && npm run markdownlint" + }, + "license": "SEE LICENSE IN LICENSE.MD", + "dependencies": { + "@finos/fdc3": "2.0.3", + "@openfin/core-web": "0.41.131", + "@openfin/web-notifications": "^2.11.0", + "@openfin/web-notifications-client": "^2.11.0" + }, + "devDependencies": { + "@openfin/core": "41.102.1", + "eslint": "^9.25.0", + "markdownlint-cli": "0.39.0", + "prettier": "3.2.5", + "ts-loader": "^9.5.1", + "typescript": "^5.4.2", + "typescript-eslint": "^8.33.0", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4" + } +} diff --git a/how-to/web-notifications/public/common/images/here.png b/how-to/web-notifications/public/common/images/here.png new file mode 100644 index 0000000..3918168 Binary files /dev/null and b/how-to/web-notifications/public/common/images/here.png differ diff --git a/how-to/web-notifications/public/common/style/app.css b/how-to/web-notifications/public/common/style/app.css new file mode 100644 index 0000000..e374b18 --- /dev/null +++ b/how-to/web-notifications/public/common/style/app.css @@ -0,0 +1,967 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap'); + +:root { + --brand-background: var(--theme-background-primary, #1e1f23); + --brand-border: var(--theme-background4, #2f3136); + --brand-primary: var(--theme-brand-primary, #0a76d3); + --brand-text: var(--theme-text-default, #ffffff); + --brand-text-secondary: var(--theme-text-help, #c9cbd2); + --brand-input-background: var(--theme-background5, #383a40); + --brand-input-border: var(--theme-background6, #53565f); + --brand-input-border-highlight: var(--theme-input-focused, #c9cbd2); + --brand-table-header: var(--theme-background1, #111214); + --brand-table-header-text: var(--theme-text-default, #ffffff); + --brand-table-row-even: var(--theme-background3, #24262b); + --brand-table-row-odd: var(--theme-background4, #2f3136); + --brand-error: var(--theme-status-critical, #be1d1f); + --brand-success: var(--theme-status-success, #35c759); + + accent-color: var(--brand-primary); + + --header-height: 60px; + --body-padding: 20px; +} + +.theme-light { + --brand-background: var(--theme-background-primary, #fafbfe); + --brand-border: var(--theme-background4, #eceef1); + --brand-primary: var(--theme-brand-primary, #0a76d3); + --brand-text: var(--theme-text-default, #111214); + --brand-text-secondary: var(--theme-text-help, #2f3136); + --brand-input-background: var(--theme-background5, #dddfe4); + --brand-input-border: var(--theme-background6, #c9cbd2); + --brand-input-border-highlight: var(--theme-input-focused, #c9cbd2); + --brand-table-header: var(--theme-background1, #ffffff); + --brand-table-header-text: var(--theme-text-default, #111214); + --brand-table-row-even: var(--theme-background3, #eceef1); + --brand-table-row-odd: var(--theme-background4, #c9cbd2); + --brand-error: var(--theme-status-critical, #be1d1f); + --brand-success: var(--theme-status-success, #35c759); +} + +#layout_container { + height: calc(100dvh - var(--header-height) - (var(--body-padding) * 2)); +} + +/* Define the position and size of the web notification center */ +#notification_center_container { + position: fixed; + width: 345px; + height: 100dvh; + right: 0; + top: 0; + align-self: center; + z-index: 100; +} + +.header { + height: var(--header-height); +} + +.primary { + color: var(--brand-primary); +} + +.error { + color: var(--brand-error); +} + +.success { + color: var(--brand-success); +} + +::selection { + background-color: var(--brand-primary); +} + +* { + font-family: Inter, 'Sans Serif', sans-serif; + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + +body { + display: flex; + justify-content: stretch; + align-items: stretch; + overflow: hidden; + padding: var(--body-padding); + margin: 0; + background-color: var(--brand-background); + color: var(--brand-text); +} + +body.border { + padding: var(--body-padding); + margin: 0; + background-color: var(--brand-background); + color: var(--brand-text); + border: 1px solid #000000; + border-radius: 5px; + width: 100%; + height: 100%; +} + +body.border-light { + border-color: var(--brand-input-border-highlight); +} + +body.small { + padding: 15px; +} + +h1 { + font-size: 24px; + font-weight: 700; + line-height: 1; + margin-block-start: 0; + margin-block-end: 0; +} +h1.tag { + font-size: 12px; + font-weight: normal; + margin-top: 5px; + color: var(--brand-text-secondary); +} + +h2 { + font-size: 20px; + font-weight: 700; + line-height: 1; + margin-block-start: 0; + margin-block-end: 0; +} + +h3 { + font-size: 16px; + font-weight: 700; + line-height: 1; + margin-block-start: 0; + margin-block-end: 0; +} + +h4 { + font-size: 14px; + font-weight: 700; + line-height: 1; + margin-block-start: 0; + margin-block-end: 0; +} + +h5 { + font-size: 12px; + font-weight: 700; + line-height: 1; + margin-block-start: 0; + margin-block-end: 0; +} + +p { + color: var(--brand-text-secondary); + font-size: 12px; + margin-block-start: 0; + margin-block-end: 0; +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} +::-webkit-scrollbar-track { + background: var(--brand-input-background); + border-radius: 5px; +} +::-webkit-scrollbar-thumb { + background: var(--brand-border); + border-radius: 5px; + border: 1px solid var(--brand-input-border); +} +::-webkit-scrollbar-thumb:hover { + border: 1px solid var(--brand-input-border-highlight); +} + +main { + min-height: 100px; +} + +a { + color: var(--brand-primary); + font-size: 12px; + font-weight: bold; + outline: none; + text-decoration: none; +} + +a:hover, +a:focus { + text-decoration: underline; +} + +button, +input[type='button'], +::-webkit-file-upload-button, +a.button, +footer a { + background-color: var(--brand-primary); + border: 2px solid var(--brand-primary); + color: #ffffff; + border-radius: 5px; + padding: 8px 20px; + text-align: left; + cursor: pointer; + font-size: 12px; + font-weight: bold; + text-decoration: none; + outline: 0; + white-space: nowrap; + transition-property: background-color, color, opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); +} + +a.button:hover, +footer a:hover { + text-decoration: none; +} + +a.button:focus, +a.button:hover, +input[type='button']:focus, +input[type='button']:hover, +input[type='file']:focus::-webkit-file-upload-button, +input[type='file']:hover::-webkit-file-upload-button, +::-webkit-file-upload-button:hover, +footer a:focus, +footer a:not(:disabled):hover, +button:not(:disabled):focus, +button:not(:disabled):hover { + background-image: linear-gradient(rgba(255, 255, 255, 0.1) 0 0); +} + +button.image { + width: 40px; + height: 40px; + padding: 0px; + display: flex; + align-items: center; + justify-content: center; +} +button.image > img { + width: 32px; + height: 32px; +} +button.secondary { + background-color: var(--brand-input-background); + color: var(--brand-text); + border-color: var(--brand-input-border); +} +button.secondary:not(:disabled):hover { + background-color: var(--brand-input-background); +} +button.plain { + border-color: transparent; + background-color: transparent; + color: var(--brand-primary); +} +button.plain:not(:disabled):not(:read-only):hover { + border-color: transparent; + background-color: transparent; +} + +button.small, +a.button.small, +::-webkit-file-upload-button, +td button { + padding: 5px 10px; + font-size: 10px; +} +td button.plain { + width: auto; + height: auto; +} + +button.center { + text-align: center; +} + +::-webkit-file-upload-button { + margin-right: 10px; +} + +pre { + margin: 0; + padding: 5px; + border-radius: 5px; + font-size: 12px; + font-family: 'Courier New', Courier, monospace; + white-space: pre-wrap; + border: 1px solid var(--brand-input-border); + background-color: var(--brand-input-background); + width: 100%; + min-height: 20px; +} + +header { + padding-bottom: 10px; + border-bottom: 2px solid var(--brand-border); +} + +footer { + padding-top: 10px; + border-top: 1px solid var(--brand-border); +} + +fieldset { + display: flex; + flex-direction: column; + align-items: flex-start; + border: 0; + padding: 0; + font-size: 12px; + gap: 5px; +} + +fieldset.row { + flex-direction: row; + align-items: center; + gap: 10px; +} + +label { + font-size: 12px; + font-weight: 600; +} + +select, +input[type='text'], +input[type='url'], +input[type='email'], +input[type='password'], +input[type='file'], +input[type='number'], +input[type='date'], +input[type='time'], +input[type='datetime-local'], +input[type='month'], +input[type='week'], +input[type='color'], +textarea { + border-radius: 5px; + border: 1px solid var(--brand-input-border); + background-color: var(--brand-input-background); + font-size: 12px; + outline: 0; + color: var(--brand-text); + width: 50%; + min-width: 200px; + padding: 8px 12px; + box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px; + transition-property: background-color, color, opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); +} + +textarea { + min-height: 64px; + resize: none; +} + +textarea.resizable { + resize: both; +} + +select.full, +input[type='text'].full, +input[type='email'].full, +input[type='url'].full, +input[type='password'].full, +input[type='file'].full, +input[type='number'].full, +input[type='date'].full, +input[type='time'].full, +input[type='datetime-local'].full, +input[type='month'].full, +input[type='week'].full, +input[type='range'].full, +textarea.full { + width: 95%; +} + +select:focus, +select:not(:disabled):hover, +input[type='text']:not(:read-only):focus, +input[type='text']:not(:disabled):not(:read-only):hover, +input[type='email']:not(:read-only):focus, +input[type='email']:not(:disabled):not(:read-only):hover, +input[type='url']:not(:read-only):focus, +input[type='url']:not(:disabled):not(:read-only):hover, +input[type='password']:not(:read-only):focus, +input[type='password']:not(:disabled):not(:read-only):hover, +input[type='file']:not(:read-only):focus, +input[type='file']:not(:disabled):not(:read-only):hover, +input[type='number']:not(:read-only):focus, +input[type='number']:not(:disabled):not(:read-only):hover, +input[type='date']:not(:read-only):focus, +input[type='date']:not(:disabled):not(:read-only):hover, +input[type='time']:not(:read-only):focus, +input[type='time']:not(:disabled):not(:read-only):hover, +input[type='datetime-local']:not(:read-only):focus, +input[type='datetime-local']:not(:disabled):not(:read-only):hover, +input[type='month']:not(:read-only):focus, +input[type='month']:not(:disabled):not(:read-only):hover, +input[type='week']:not(:read-only):focus, +input[type='week']:not(:disabled):not(:read-only):hover, +textarea:not(:read-only):focus, +textarea:not(:disabled):not(:read-only):hover, +input[type='checkbox']:focus, +input[type='checkbox']:not(:disabled):hover, +input[type='radio']:focus, +input[type='radio']:not(:disabled):hover, +input[type='color']:focus, +input[type='color']:not(:disabled):hover { + border-color: var(--brand-input-border-highlight); +} + +input[type='date'], +input[type='time'], +input[type='datetime-local'], +input[type='month'], +input[type='week'] { + width: 200px; + min-width: auto; +} + +::-webkit-calendar-picker-indicator, +.theme-dark ::-webkit-calendar-picker-indicator { + filter: invert(1); +} + +.theme-light ::-webkit-calendar-picker-indicator { + filter: invert(0); +} + +::-webkit-datetime-edit-day-field:focus, +::-webkit-datetime-edit-month-field:focus, +::-webkit-datetime-edit-year-field:focus, +::-webkit-datetime-edit-hour-field:focus, +::-webkit-datetime-edit-minute-field:focus, +::-webkit-datetime-edit-week-field:focus { + background-color: var(--brand-primary); + color: #ffffff; +} + +::-webkit-outer-spin-button, +::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +input[type='file'] { + padding: 4px 12px; +} + +select { + appearance: none; +} + +select:not([multiple]):not(:disabled) { + appearance: none; + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-size: 12px; + background-position: calc(100% - 12px) 12px; + background-color: var(--brand-input-background); +} + +.theme-light select:not([multiple]):not(:disabled) { + background-image: url("data:image/svg+xml;utf8,"); +} + +select.small { + padding: 4px 8px; + font-size: 10px; +} + +select.small:not([multiple]):not(:disabled) { + background-size: 8px; + background-position: calc(100% - 8px) 8px; +} + +option { + color: var(--brand-text); + padding: 6px; + margin-bottom: 1px; +} + +option:hover { + background: var(--brand-input-border) + linear-gradient(0deg, var(--brand-input-border) 0%, var(--brand-input-border) 100%); + border-radius: 5px; +} + +option:checked { + background: var(--brand-primary) linear-gradient(0deg, var(--brand-primary) 0%, var(--brand-primary) 100%); + color: #ffffff; + border-radius: 5px; +} + +input[type='range'] { + -webkit-appearance: none; + height: 20px; + width: 200px; + background: transparent; + outline: none; +} + +input[type='range']::-webkit-slider-runnable-track { + -webkit-appearance: none; + height: 10px; + border: 1px solid var(--brand-input-border); + background-color: var(--brand-input-background); + border-radius: 5px; + box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px; + transition-property: background-color, color, opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); +} + +input[type='range']::-webkit-slider-thumb { + -webkit-appearance: none; + height: 20px; + width: 20px; + border-radius: 5px; + margin-top: -6px; + border: 1px solid var(--brand-input-border); + background: var(--brand-input-background); + cursor: pointer; + box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px; + transition-property: background-color, color, opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); +} + +input[type='range']:hover::-webkit-slider-runnable-track, +input[type='range']:focus::-webkit-slider-runnable-track, +input[type='range']:hover::-webkit-slider-thumb, +input[type='range']:focus::-webkit-slider-thumb { + border-color: var(--brand-input-border-highlight); +} + +button:disabled, +select:disabled, +input:disabled, +textarea:disabled, +footer a:disabled, +a[disabled] { + opacity: 0.3; + cursor: default; + pointer-events: none; + resize: none; +} + +select:invalid, +input:invalid, +textarea:invalid { + border-color: var(--brand-error); +} + +fieldset > span { + margin-left: 10px; + width: 50px; +} + +input[type='text'].large, +input[type='password'].large, +input[type='file'].large, +input[type='email'].large, +input[type='url'].large, +input[type='date'].large, +input[type='time'].large { + font-size: 20px; + padding: 20px 10px; +} + +input[type='text'].center, +input[type='password'].center, +input[type='email'].center, +input[type='url'].center { + text-align: center; +} + +input[type='checkbox'], +input[type='radio'] { + appearance: none; + border: 1px solid var(--brand-input-border); + background-color: var(--brand-input-background); + color: var(--brand-input-text); + outline: 0; + width: 20px; + height: 20px; + margin: 2px; + box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px; + transition-property: background-color, color, opacity; + transition-duration: 200ms; + transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); +} + +input[type='radio'] { + border-radius: 50%; +} + +input[type='checkbox']::before, +input[type='radio']::before { + content: ''; + display: none; + width: 16px; + height: 16px; + margin: 1px; + background-color: var(--brand-text); + opacity: 0.8; +} + +input[type='checkbox']:checked::before { + display: inline-block; + clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); +} +input[type='radio']:checked::before { + display: inline-block; + clip-path: circle(35% at 52% 50%); +} + +input[type='checkbox'] + label, +input[type='radio'] + label { + white-space: nowrap; +} + +input[type='color'] { + width: 100px; + min-width: auto; + padding: 5px; +} + +input[type='color']::-webkit-color-swatch-wrapper { + padding: 0; + background: transparent; +} + +input[type='color']::-webkit-color-swatch { + border-radius: 5px; + border: none; +} + +/* This disables the auto zoom on iDevices */ +@supports (-webkit-touch-callout: none) { + select, + input[type='text'], + input[type='url'], + input[type='email'], + input[type='password'], + input[type='file'], + input[type='number'], + input[type='date'], + input[type='time'], + input[type='datetime-local'], + input[type='month'], + input[type='week'], + input[type='color'], + textarea { + font-size: 16px; + } +} + +hr { + width: 100%; + border: 0; + border-bottom: 1px solid var(--brand-input-border); +} + +ul { + font-size: 12px; + display: flex; + flex-direction: column; + gap: 10px; + list-style-type: none; +} + +li { + font-size: 12px; + position: relative; + padding: 0 0 10px; +} + +li::before { + content: ' '; + display: inline-block; + background-color: var(--brand-primary); + width: 8px; + height: 8px; + border-radius: 2px; + position: absolute; + left: -13px; + top: 3px; +} + +em { + font-size: 12px; +} + +.row { + display: flex; + flex-direction: row; +} + +.col { + display: flex; + flex-direction: column; +} + +.fill { + flex: 1; +} + +.fill_2 { + flex: 2; +} + +.scroll { + overflow: auto; +} + +.scroll-vertical { + overflow-y: auto; +} + +.scroll-horizontal { + overflow-x: auto; +} + +.overflow-hidden { + overflow: hidden; +} + +.middle { + align-items: center; +} + +.bottom { + align-items: flex-end; +} + +.spread { + justify-content: space-between; +} + +.around { + justify-content: space-around; +} + +.left { + display: flex; + align-items: flex-start; +} + +.center { + display: flex; + justify-content: center; +} + +.right { + display: flex; + justify-content: flex-end; +} + +.wrap { + flex-wrap: wrap; +} + +.gap5 { + gap: 5px; +} + +.gap10 { + gap: 10px; +} + +.gap20 { + gap: 20px; +} + +.gap40 { + gap: 40px; +} + +.pad10 { + padding: 10px; +} + +.pad20 { + padding: 20px; +} + +.pad0 { + padding: 0px; +} + +.table { + display: flex; + flex: 1; + flex-direction: column; + font-size: 10px; +} + +table { + width: 100%; + font-size: 10px; + border: 0; + border-collapse: collapse; +} + +table, +.table { + border: var(--brand-input-border) 1px solid; +} + +.table-row { + display: flex; + flex: 1; + flex-direction: row; +} + +table > tr:first-child, +thead > tr, +.table-row.header { + background-color: var(--brand-table-header); +} + +table > tr:nth-child(even), +.table > div:nth-child(even), +tbody > tr:nth-child(odd) { + background-color: var(--brand-table-row-even); +} + +table > tr:nth-child(odd), +.table > div:not(:first-child):nth-child(odd), +tbody > tr:nth-child(even) { + background-color: var(--brand-table-row-odd); +} + +th, +.table-row.header > div { + color: var(--brand-table-header-text); + font-weight: bold; + padding: 10px 5px; + text-align: left; + word-break: break-word; +} + +.table-row > div { + flex: 1; +} + +td, +.table-row:not(.header) > div { + padding: 5px; + word-break: break-word; + color: var(--brand-text); +} + +.table-row:not(.header) > div { + display: flex; + align-items: center; +} + +@media screen and (max-width: 736px) { + .table-row { + flex-direction: column; + } + + .table-row.header { + display: none; + } + + .table-row:not(.header) > div { + display: flex; + align-items: center; + flex: 1; + gap: 10px; + } + + .table-row:not(.header) > div:before { + content: attr(data-name); + font-weight: bold; + white-space: nowrap; + width: 20%; + } + + .table-row > div.right { + justify-content: flex-start; + } + + .table-row > div.center { + justify-content: flex-start; + } +} + +.border { + border: 1px solid var(--brand-input-border); + border-radius: 5px; +} + +.drag { + user-select: none; + -webkit-app-region: drag; +} + +.no-drag { + -webkit-app-region: none; +} + +.form { + background-color: var(--brand-table-header); + border: var(--brand-input-border) 1px solid; + border-radius: 5px; + padding: 10px; + font-size: 12px; +} + +.form-group { + display: flex; + flex-direction: column; + gap: 10px; + background-color: var(--brand-table-header); + border: var(--brand-input-border) 1px solid; + border-radius: 5px; + padding: 10px; +} + +.form-group.large { + gap: 20px; +} + +.width-full { + width: 100%; +} + +.max-width-full { + max-width: 100%; +} + +.width-responsive { + max-width: fit-content; +} + +.hidden { + display: none; +} + +.pointer { + cursor: pointer; +} + +.nowrap { + white-space: nowrap; +} diff --git a/how-to/web-notifications/public/favicon.ico b/how-to/web-notifications/public/favicon.ico new file mode 100644 index 0000000..694af5a Binary files /dev/null and b/how-to/web-notifications/public/favicon.ico differ diff --git a/how-to/web-notifications/public/layouts/default.layout.fin.json b/how-to/web-notifications/public/layouts/default.layout.fin.json new file mode 100644 index 0000000..11d09c2 --- /dev/null +++ b/how-to/web-notifications/public/layouts/default.layout.fin.json @@ -0,0 +1,22 @@ +{ + "layouts": { + "default": { + "content": [ + { + "type": "row", + "content": [ + { + "type": "component", + "componentName": "view", + "componentState": { + "url": "http://localhost:6060/views/notifications.html", + "name": "internal-generated-view-e7fe7df3-6f64-4235-899f-4e91af2cb32d" + }, + "title": "Notifications" + } + ] + } + ] + } + } +} diff --git a/how-to/web-notifications/public/manifest.json b/how-to/web-notifications/public/manifest.json new file mode 100644 index 0000000..f17636d --- /dev/null +++ b/how-to/web-notifications/public/manifest.json @@ -0,0 +1,32 @@ +{ + "name": "OpenFin Web Notifications", + "short_name": "OpenFinWebNotifications", + "start_url": "./platform/provider.html", + "display": "standalone", + "background_color": "#fff", + "description": "An example showing the minimum setup for using the OpenFin Web Notifications.", + "icons": [ + { + "src": "common/images/here.png", + "sizes": "72x72", + "type": "image/png" + } + ], + "related_applications": [], + "custom_settings": { + "platform": { + "platformIdentifier": "web-notifications-platform", + "notificationServiceId": "web-notification-service-channel", + "interop": { + "sharedWorkerUrl": "http://localhost:6060/js/shared-worker.bundle.js", + "brokerUrl": "http://localhost:6060/platform/iframe-broker.html", + "providerId": "web-interop", + "defaultContextGroup": "green" + }, + "layout": { + "layoutContainerId": "layout_container", + "defaultLayout": "http://localhost:6060/layouts/default.layout.fin.json" + } + } + } +} diff --git a/how-to/web-notifications/public/platform/iframe-broker.html b/how-to/web-notifications/public/platform/iframe-broker.html new file mode 100644 index 0000000..0062c7d --- /dev/null +++ b/how-to/web-notifications/public/platform/iframe-broker.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/how-to/web-notifications/public/platform/provider.html b/how-to/web-notifications/public/platform/provider.html new file mode 100644 index 0000000..e6bbda8 --- /dev/null +++ b/how-to/web-notifications/public/platform/provider.html @@ -0,0 +1,30 @@ + + + + + + Web Notifications Example + + + + + + + + + +
+
+

Web Notifications Example

+

Demonstrates web notification center

+
+
+ OpenFin +
+
+
+
+
+
+ + diff --git a/how-to/web-notifications/public/style/core-web-styles.css b/how-to/web-notifications/public/style/core-web-styles.css new file mode 100644 index 0000000..f8153ac --- /dev/null +++ b/how-to/web-notifications/public/style/core-web-styles.css @@ -0,0 +1,787 @@ +.lm_root { + position: relative; + overflow: hidden; +} +.lm_row > .lm_item { + float: left; +} +.lm_content { + overflow: hidden; + position: relative; +} +.lm_dragging, +.lm_dragging * { + cursor: move !important; + -webkit-user-select: none; + user-select: none; +} +.lm_maximised { + position: absolute; + top: 0; + left: 0; + z-index: 40; +} +.lm_maximise_placeholder { + display: none; +} +.lm_splitter { + position: relative; + z-index: 2; + touch-action: none; +} +.lm_splitter.lm_vertical .lm_drag_handle { + width: 100%; + position: absolute; + cursor: ns-resize; + touch-action: none; + -webkit-user-select: none; + user-select: none; +} +.lm_splitter.lm_horizontal { + float: left; + height: 100%; +} +.lm_splitter.lm_horizontal .lm_drag_handle { + height: 100%; + position: absolute; + cursor: ew-resize; + touch-action: none; + -webkit-user-select: none; + user-select: none; +} +.lm_header { + overflow: visible; + position: relative; + z-index: 1; + -webkit-user-select: none; + user-select: none; +} +.lm_header [class^=lm_] { + box-sizing: content-box !important; +} +.lm_header .addTabButton { + -webkit-user-select: none; + user-select: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + padding: 0 6px; +} +.lm_header .lm_controls { + position: absolute; + right: 3px; + display: flex; + height: 100%; +} +.lm_header .lm_controls > * { + cursor: pointer; + float: left; + width: 18px; + height: 100%; + text-align: center; +} +.lm_header .lm_tabs { + position: absolute; + display: flex; +} +.lm_header .lm_tab { + cursor: pointer; + float: left; + height: 14px; + margin-top: 1px; + padding: 0px 10px 5px; + padding-right: 25px; + position: relative; + touch-action: none; +} +.lm_header .lm_tab i { + width: 2px; + height: 19px; + position: absolute; +} +.lm_header .lm_tab i.lm_left { + top: 0; + left: -2px; +} +.lm_header .lm_tab i.lm_right { + top: 0; + right: -2px; +} +.lm_header .lm_tab .lm_title { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; +} +.lm_header .lm_tab .lm_close_tab { + width: 14px; + height: 14px; + position: absolute; + top: 0; + right: 0; + text-align: center; +} +.lm_stack { + position: relative; +} +.lm_stack > .lm_items { + overflow: hidden; +} +.lm_stack.lm_left > .lm_items { + position: absolute; + left: 20px; + top: 0; +} +.lm_stack.lm_right > .lm_items { + position: absolute; + right: 20px; + top: 0; +} +.lm_stack.lm_right > .lm_header { + position: absolute; + right: 0; + top: 0; +} +.lm_stack.lm_bottom > .lm_items { + position: absolute; + bottom: 20px; +} +.lm_stack.lm_bottom > .lm_header { + position: absolute; + bottom: 0; +} +.lm_left.lm_stack .lm_header, +.lm_right.lm_stack .lm_header { + height: 100%; +} +.lm_left.lm_dragProxy .lm_header, +.lm_right.lm_dragProxy .lm_header, +.lm_left.lm_dragProxy .lm_items, +.lm_right.lm_dragProxy .lm_items { + float: left; +} +.lm_left.lm_dragProxy .lm_header, +.lm_right.lm_dragProxy .lm_header, +.lm_left.lm_stack .lm_header, +.lm_right.lm_stack .lm_header { + width: 20px; + vertical-align: top; +} +.lm_left.lm_dragProxy .lm_header .lm_tabs, +.lm_right.lm_dragProxy .lm_header .lm_tabs, +.lm_left.lm_stack .lm_header .lm_tabs, +.lm_right.lm_stack .lm_header .lm_tabs { + transform-origin: left top; + top: 0; + width: 1000px; + /*hack*/ +} +.lm_left.lm_dragProxy .lm_header .lm_controls, +.lm_right.lm_dragProxy .lm_header .lm_controls, +.lm_left.lm_stack .lm_header .lm_controls, +.lm_right.lm_stack .lm_header .lm_controls { + bottom: 0; + flex-flow: column; +} +.lm_dragProxy.lm_left .lm_header .lm_tabs, +.lm_stack.lm_left .lm_header .lm_tabs { + transform: rotate(-90deg) scaleX(-1); + left: 0; +} +.lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab, +.lm_stack.lm_left .lm_header .lm_tabs .lm_tab { + transform: scaleX(-1); + margin-top: 1px; +} +.lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list, +.lm_stack.lm_left .lm_header .lm_tabdropdown_list { + top: initial; + right: initial; + left: 20px; +} +.lm_dragProxy.lm_right .lm_content { + float: left; +} +.lm_dragProxy.lm_right .lm_header .lm_tabs, +.lm_stack.lm_right .lm_header .lm_tabs { + transform: rotate(90deg) scaleX(1); + left: 100%; + margin-left: 0; +} +.lm_dragProxy.lm_right .lm_header .lm_controls, +.lm_stack.lm_right .lm_header .lm_controls { + left: 3px; +} +.lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list, +.lm_stack.lm_right .lm_header .lm_tabdropdown_list { + top: initial; + right: 20px; +} +.lm_dragProxy.lm_bottom .lm_header, +.lm_stack.lm_bottom .lm_header { + width: 100%; +} +.lm_dragProxy.lm_bottom .lm_header .lm_tab, +.lm_stack.lm_bottom .lm_header .lm_tab { + margin-top: 0; + border-top: none; +} +.lm_dragProxy.lm_bottom .lm_header .lm_controls, +.lm_stack.lm_bottom .lm_header .lm_controls { + top: 3px; +} +.lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list, +.lm_stack.lm_bottom .lm_header .lm_tabdropdown_list { + top: initial; + bottom: 20px; +} +.lm_drop_tab_placeholder { + float: left; + width: 100px; + visibility: hidden; +} +.lm_header .lm_controls .lm_tabdropdown:before { + content: ''; + width: 0; + height: 0; + vertical-align: middle; + display: inline-block; + border-top: 5px dashed; + border-right: 5px solid transparent; + border-left: 5px solid transparent; + color: white; +} +.lm_header .lm_tabdropdown_list { + position: absolute; + top: 20px; + right: 0; + z-index: 5; + overflow: hidden; +} +.lm_header .lm_tabdropdown_list .lm_tab { + clear: both; + padding-right: 10px; + margin: 0; +} +.lm_header .lm_tabdropdown_list .lm_tab .lm_title { + width: 100px; +} +.lm_header .lm_tabdropdown_list .lm_close_tab { + display: none !important; +} +/*********************************** +* Drag Proxy +***********************************/ +.lm_dragProxy { + position: absolute; + top: 0; + left: 0; + z-index: 30; +} +.lm_dragProxy .lm_header { + background: transparent; +} +.lm_dragProxy .lm_content { + border-top: none; + overflow: hidden; +} +.lm_dropTargetIndicator { + display: none; + position: absolute; + z-index: 35; + transition: all 200ms ease; +} +.lm_dropTargetIndicator .lm_inner { + width: 100%; + height: 100%; + position: relative; + top: 0; + left: 0; +} +.lm_transition_indicator { + display: none; + width: 20px; + height: 20px; + position: absolute; + top: 0; + left: 0; + z-index: 20; +} +.lm_popin { + width: 20px; + height: 20px; + position: absolute; + bottom: 0; + right: 0; + z-index: 9999; +} +.lm_popin > * { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} +.lm_popin > .lm_bg { + z-index: 10; +} +.lm_popin > .lm_icon { + z-index: 20; +} + +:root { + /* Colors used for dark theme */ + --of-default-black: black; + --of-default-charcoal-dark: #111118; + --of-default-charcoal-light: #2A292F; + --of-default-grey-dark: #A5AEBD; + --of-default-grey-dark-opacity: #A5AEBD2E; + --of-default-grey-light: #F4F5F8; + --of-default-grey-light-opacity: #F4F5F82E; + --of-default-white: white; + --of-dark-theme: #7B7BFF; + --of-light-theme: #504CFF; + --of-highlight: #958EFF; + --of-highlight-opacity: #958EFF26; + --of-default-red: red; + --of-default-red-negative: #F55D5F; + --of-positive-green: #29AF6F; + + /* Main colors to set from the above list */ + --main-background-color: var(--of-default-charcoal-dark); + --secondary-background-color: var(--of-default-black); + --tab-background-color: var(--of-default-charcoal-light); + --tab-button-hover-color: var(--of-default-grey-dark-opacity); + --tab-button-active-color: var(--of-default-grey-light-opacity); + --tab-border-top-color: var(--of-dark-theme); + --tab-border-top-highlight-color: var(--of-light-theme); + --focused-tab-border-top-color: var(--of-positive-green); + --focused-tab-border-top-highlight-color: #3cf89d; + --tab-font-color: var(--of-default-white); + --top-bar-close-button-color: var(--of-default-red); + --top-bar-close-button-active-color: var(--of-default-red-negative); + --drop-target-border-color: var(--of-highlight); + --drop-target-background-color: var(--of-highlight-opacity); + + /* Colors that default to dependent on Main Colors, but should be uniquely editable */ + --frame-background-color: var(--secondary-background-color); + --body-font-color: var(--tab-font-color); + --splitter-color: var(--secondary-background-color); + --splitter-hover-color: var(--tab-background-color); + --tabs-bar-background-color: var(--secondary-background-color); + --title-bar-background-color: var(--main-background-color); + --color-behind-views: var(--main-background-color); /* only seen if there's a problem with the view */ + --tab-background-active-color: var(--tab-background-color); + --top-bar-button-hover-color: var(--tab-background-color); + --top-bar-button-active-color: var(--tab-button-active-color); + + /* Measurements for various components */ + --title-bar-height: 30px; + --title-bar-border-bottom-height: 1px; + --header-border-bottom-height: 2px; + --corner-radius: 0px; + --splitter-width: 4px; + + --body-container-padding-top: 0px; + --body-container-padding-right: 0px; + --body-container-padding-bottom: 0px; + --body-container-padding-left: 0px; + + --body-container-width: calc(100% - var(--body-container-padding-left) - var(--body-container-padding-right)); + --body-container-height: calc(100% - var(--title-bar-height) - var(--title-bar-border-bottom-height) - var(--body-container-padding-top) - var(--body-container-padding-bottom)); + --body-container-padding: var(--body-container-padding-top) var(--body-container-padding-right) var(--body-container-padding-bottom) var(--body-container-padding-left); + + --layout-container-padding-top: 4px; + --layout-container-padding-right: 4px; + --layout-container-padding-bottom: 4px; + --layout-container-padding-left: 4px; + --layout-container-from-top: calc(var(--title-bar-height) + var(--title-bar-border-bottom-height) + var(--layout-container-padding-top)); + + --layout-container-width: calc(100% - var(--layout-container-padding-left) - var(--layout-container-padding-right)); + --layout-container-height: calc(100% - var(--header-border-bottom-height) - var(--layout-container-padding-top) - var(--layout-container-padding-bottom)); + --layout-container-padding: var(--layout-container-padding-top) var(--layout-container-padding-right) var(--layout-container-padding-bottom) var(--layout-container-padding-left); + + /* Top Bar and Tab Icons */ + --close-button-url: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IjAyIC0gSUNPTlMvWC9EYXJrIFQuIj4KPHBhdGggaWQ9IkNvbWJpbmVkIFNoYXBlIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDI2MDEgNi4xNjEwN0M3LjA3MTcgNS45MTU2MyA2LjU4MTg0IDUuOTUwNjkgNi4yNjYyNyA2LjI2NjI3QzUuOTExMjQgNi42MjEyOSA1LjkxMTI0IDcuMTk2ODkgNi4yNjYyNyA3LjU1MTkyTDE0LjcxNDQgMTZMNi4yNjYyNyAyNC40NDgxTDYuMTYxMDcgMjQuNTc0QzUuOTE1NjMgMjQuOTI4MyA1Ljk1MDY5IDI1LjQxODIgNi4yNjYyNyAyNS43MzM3QzYuNjIxMjkgMjYuMDg4OCA3LjE5Njg5IDI2LjA4ODggNy41NTE5MiAyNS43MzM3TDE2IDE3LjI4NTZMMjQuNDQ4MSAyNS43MzM3TDI0LjU3NCAyNS44Mzg5QzI0LjkyODMgMjYuMDg0NCAyNS40MTgyIDI2LjA0OTMgMjUuNzMzNyAyNS43MzM3QzI2LjA4ODggMjUuMzc4NyAyNi4wODg4IDI0LjgwMzEgMjUuNzMzNyAyNC40NDgxTDE3LjI4NTYgMTZMMjUuNzMzNyA3LjU1MTkyTDI1LjgzODkgNy40MjYwMUMyNi4wODQ0IDcuMDcxNyAyNi4wNDkzIDYuNTgxODQgMjUuNzMzNyA2LjI2NjI3QzI1LjM3ODcgNS45MTEyNCAyNC44MDMxIDUuOTExMjQgMjQuNDQ4MSA2LjI2NjI3TDE2IDE0LjcxNDRMNy41NTE5MiA2LjI2NjI3TDcuNDI2MDEgNi4xNjEwN1oiIGZpbGw9IiNGMkY0RjkiLz4KPC9nPgo8L3N2Zz4K"); + --minimize-button-url: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IjAyIC0gSUNPTlMvTWluaW1pemUvV2luZG93L0RhcmsgVC4iPgo8cmVjdCBpZD0iUmVjdGFuZ2xlIiB4PSIzIiB5PSIyNCIgd2lkdGg9IjI2IiBoZWlnaHQ9IjMiIHJ4PSIxLjUiIGZpbGw9IiNGMkY0RjkiLz4KPC9nPgo8L3N2Zz4K"); + --expand-button-url: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IjAyIC0gSUNPTlMvRXhwYW5kL0RhcmsgVC4iPgo8cGF0aCBpZD0iQ29tYmluZWQgU2hhcGUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYuOTU2NSA1TDI2LjAzNDggNS4wMDAwNEwyNi4wOTE1IDUuMDAxMThMMjYuMTQxMyA1LjAwNDk4TDI2LjIwNDMgNS4wMTM1NEwyNi4yNDE0IDUuMDIwNTFMMjYuMjc1NiA1LjAyODM1TDI2LjMwMzUgNS4wMzU3NkwyNi4zNTc3IDUuMDUyODJMMjYuNDAyOCA1LjA2OTc3TDI2LjQ1NzkgNS4wOTQxOEwyNi41MDkyIDUuMTIwNzNMMjYuNTY0MyA1LjE1NDFMMjYuNjAxMyA1LjE3OTNMMjYuNjMyNiA1LjIwMjhMMjYuNjc0IDUuMjM3MThMMjYuNzEwNSA1LjI3MDkyTDI2Ljc0MTggNS4zMDI4MkwyNi43ODEgNS4zNDczM0wyNi43OTM4IDUuMzYzMjRDMjYuODEzMyA1LjM4Nzg1IDI2LjgzMTYgNS40MTM0MyAyNi44NDg2IDUuNDM5OTFDMjYuODcgNS40NzMwNCAyNi44ODkxIDUuNTA3MjIgMjYuOTA1OSA1LjU0MjIxTDI2LjkyNDMgNS41ODI4OUwyNi45NDA2IDUuNjIzOTdMMjYuOTU2MyA1LjY3MDA1QzI2Ljk2NDkgNS42OTcyNyAyNi45NzIyIDUuNzI0OTcgMjYuOTc4MyA1Ljc1MzEyTDI2Ljk4OTYgNS44MTUxN0MyNi45OTQyIDUuODQ1OTIgMjYuOTk3MyA1Ljg3NzE1IDI2Ljk5ODggNS45MDg3OEwyNyA1Ljk1NjUyVjE1LjA0MzVDMjcgMTUuNTcxOCAyNi41NzE4IDE2IDI2LjA0MzUgMTZDMjUuNTMxMiAxNiAyNS4xMTMgMTUuNTk3MyAyNS4wODgxIDE1LjA5MTJMMjUuMDg3IDE1LjA0MzVWOC4yNjU1N0wxOC40Njk4IDE0Ljg4MjlDMTguMDk2MyAxNS4yNTY0IDE3LjQ5MDcgMTUuMjU2NCAxNy4xMTcxIDE0Ljg4MjlDMTYuNzU2IDE0LjUyMTggMTYuNzQ0IDEzLjk0MzggMTcuMDgxIDEzLjU2ODNMMTcuMTE3MSAxMy41MzAyTDIzLjczNCA2LjkxMzA0SDE2Ljk1NjVDMTYuNDI4MiA2LjkxMzA0IDE2IDYuNDg0NzkgMTYgNS45NTY1MkMxNiA1LjQ0NDI2IDE2LjQwMjcgNS4wMjYwNSAxNi45MDg4IDUuMDAxMTdMMTYuOTU2NSA1WiIgZmlsbD0iI0YyRjRGOSIvPgo8cGF0aCBpZD0iQ29tYmluZWQgU2hhcGUgQ29weSIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01Ljk1NjUyIDI3TDUuOTA4NTQgMjYuOTk4OEw1Ljg1ODc0IDI2Ljk5NUw1Ljc5NTcyIDI2Ljk4NjVMNS43NTg1OCAyNi45Nzk1TDUuNzI0NDMgMjYuOTcxNkw1LjY5NjUxIDI2Ljk2NDJMNS42NDIyNyAyNi45NDcyTDUuNTk3MjMgMjYuOTMwMkw1LjU0MjEzIDI2LjkwNThMNS40OTA4NSAyNi44NzkzTDUuNDM1NjkgMjYuODQ1OUw1LjM5ODcyIDI2LjgyMDdMNS4zNjc0NCAyNi43OTcyTDUuMzI2MDQgMjYuNzYyOEw1LjI4OTUyIDI2LjcyOTFMNS4yNTgyMiAyNi42OTcyTDUuMjE5IDI2LjY1MjdMNS4yMDYxNyAyNi42MzY4QzUuMTg2NjkgMjYuNjEyMiA1LjE2ODQgMjYuNTg2NiA1LjE1MTM3IDI2LjU2MDFDNS4xMjk5NyAyNi41MjcgNS4xMTA5MSAyNi40OTI4IDUuMDk0MSAyNi40NTc4TDUuMDc1NzIgMjYuNDE3MUw1LjA1OTQyIDI2LjM3Nkw1LjA0MzcgMjYuMzI5OUM1LjAzNTEzIDI2LjMwMjcgNS4wMjc3NyAyNi4yNzUgNS4wMjE2NyAyNi4yNDY5TDUuMDEwMzcgMjYuMTg0OEM1LjAwNTgyIDI2LjE1NDEgNS4wMDI3MiAyNi4xMjI4IDUuMDAxMTcgMjYuMDkxMkw1IDI2LjA0MzVWMTYuOTU2NUM1IDE2LjQyODIgNS40MjgyNSAxNiA1Ljk1NjUyIDE2QzYuNDY4NzkgMTYgNi44ODcgMTYuNDAyNyA2LjkxMTg3IDE2LjkwODhMNi45MTMwNCAxNi45NTY1VjIzLjczNDRMMTMuNTMwMiAxNy4xMTcxQzEzLjkwMzcgMTYuNzQzNiAxNC41MDkzIDE2Ljc0MzYgMTQuODgyOSAxNy4xMTcxQzE1LjI0NCAxNy40NzgyIDE1LjI1NiAxOC4wNTYyIDE0LjkxOSAxOC40MzE3TDE0Ljg4MjkgMTguNDY5OEw4LjI2NjA0IDI1LjA4N0gxNS4wNDM1QzE1LjU3MTggMjUuMDg3IDE2IDI1LjUxNTIgMTYgMjYuMDQzNUMxNiAyNi41NTU3IDE1LjU5NzMgMjYuOTc0IDE1LjA5MTIgMjYuOTk4OEwxNS4wNDM1IDI3SDUuOTU2NTJaIiBmaWxsPSIjRjJGNEY5Ii8+CjwvZz4KPC9zdmc+Cg=="); + --tab-close-button-url: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9IjAyIC0gSUNPTlMvWC9EYXJrIFQuIj4KPHBhdGggaWQ9IkNvbWJpbmVkIFNoYXBlIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDI2MDEgNi4xNjEwN0M3LjA3MTcgNS45MTU2MyA2LjU4MTg0IDUuOTUwNjkgNi4yNjYyNyA2LjI2NjI3QzUuOTExMjQgNi42MjEyOSA1LjkxMTI0IDcuMTk2ODkgNi4yNjYyNyA3LjU1MTkyTDE0LjcxNDQgMTZMNi4yNjYyNyAyNC40NDgxTDYuMTYxMDcgMjQuNTc0QzUuOTE1NjMgMjQuOTI4MyA1Ljk1MDY5IDI1LjQxODIgNi4yNjYyNyAyNS43MzM3QzYuNjIxMjkgMjYuMDg4OCA3LjE5Njg5IDI2LjA4ODggNy41NTE5MiAyNS43MzM3TDE2IDE3LjI4NTZMMjQuNDQ4MSAyNS43MzM3TDI0LjU3NCAyNS44Mzg5QzI0LjkyODMgMjYuMDg0NCAyNS40MTgyIDI2LjA0OTMgMjUuNzMzNyAyNS43MzM3QzI2LjA4ODggMjUuMzc4NyAyNi4wODg4IDI0LjgwMzEgMjUuNzMzNyAyNC40NDgxTDE3LjI4NTYgMTZMMjUuNzMzNyA3LjU1MTkyTDI1LjgzODkgNy40MjYwMUMyNi4wODQ0IDcuMDcxNyAyNi4wNDkzIDYuNTgxODQgMjUuNzMzNyA2LjI2NjI3QzI1LjM3ODcgNS45MTEyNCAyNC44MDMxIDUuOTExMjQgMjQuNDQ4MSA2LjI2NjI3TDE2IDE0LjcxNDRMNy41NTE5MiA2LjI2NjI3TDcuNDI2MDEgNi4xNjEwN1oiIGZpbGw9IiNGMkY0RjkiLz4KPC9nPgo8L3N2Zz4K"); + --new-tab-button-url: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAJNQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0TslXgAAADF0Uk5TAA1Zm8rs+utYJp72//WcJAmM+4oIJdTRIzHq6S8KiQ70DFaYx/lVC5kihtLPB+chLkL8Um8AAAM+SURBVHic7d3rVtNQEEDhlJZwO9xB0CAW2iAiou//dOLCpas2OTNBJtNp9n6COZ+t1T8zRUFERERERERE1FujjfFksyy3JuPtkfcsDu3s7qU/7R8ces/Tc0fHJ2mh8vTMe6Y+O3+Xlrq49J6qv95/WH5/StWV91x9dd74/meBgXwGPjZ8/n9/C4bx98Bx2/tTuvaerY92TtoByiF8CXbb35/S2Hs6+z7t5QCmN97zmbeRe39Kt97zmTfOA8y85zNvkgeYe89n3mYeoPKez7wyD1B7z2de/v0pec9nHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAID3fOYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeM9nHgAAAAAAAAAAAAAAAAAAwIoDvOz/lwZe9V59v2Bh/3/0ut8vWNr/H72O9wua9v9Hr8v9gub9/9HT3y9o2/8fPe39gvb9/9FT3i/I7P+Pnup+QW7/f/RU9wuy+/+jp7hfkN//Hz3F/QJh/3/05PsFwv7/6Mn3C4T9/9GT7xcI+/+jJ98vCP//33zy/YLBA2x5j2ib/BUY/F+Cg/8Z3PYe0bY7EWC07z2jZdPPIkBx4D2kZffy+4vDNf4hrL8oAIpT7zHtetC8vzj66j2nVY/fVADFZeU9qU1P33XvL4qrtRR4+qF9//Nn4MJ72rfvUf3n/6uz6zX7LagflN//vx+C8dR76Ldreq/6/funm9vZvKq9Z//f6mo+u1P8+6+3pIG95zMPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwHs+8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC85zMPAAAAAAAAAAAAAAAAAABgkADCqk55/3/0hPsF8v7/6An3C+T9/9ET7hfI+/+jJ9wvkPf/Ry9/v0Cz/z962fsFmv3/0cvdL9Dt/49e5n6Bbv9/9NrvF2j3/0ev7X6Bfv9/9JrvF3TZ/x+9pvsF3fb/R2/pfkH3/f/RW7hf8Lr9/9F7uV+wcvv/iYiIiIiIiGjt+wlaXmsfieItGAAAAABJRU5ErkJggg=="); +} + +body { + min-height: 100%; + width: 100%; + margin: 0; + padding: 0px; + overflow: hidden; + color: var(--body-font-color); + background-color: var(--main-background-color); +} + +html { + height: 100%; + width: 100%; + padding: 0px; + margin: 0; + overflow: hidden; +} + +body, select, button, li, span, div { + font-family: 'Akkurat Pro', Arial, Helvetica, sans-serif; + color: var(--body-font-color); +} + +#of-frame-main { + height: 100%; + width: 100%; + padding: 0px; + margin: 0; + position: absolute; + overflow: hidden; + background-color: var(--frame-background-color); +} + +#title-bar { + background: var(--title-bar-background-color); + width: 100%; + height: var(--title-bar-height); + display: flex; + border-bottom: var(--title-bar-border-bottom-height) solid rgba(255, 255, 255, 0.1); +} + +.title-bar-draggable { + position: relative; + flex-grow: 1; + margin: 7px 0 0 7px; /* leave grabbable margin for resize */ + -webkit-app-region: drag; + -webkit-user-select: none; +} + +div.wrapper_title { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 3vw; + opacity: 0.5; + color: var(--tab-font-color); /* this is the text you see when a view isn't showing */ +} + +div.placeholder_image { + opacity: 0.7; + color: var(--tab-background-color); +} + +div.placeholder_image img { + height: 100%; + width: 100%; + filter: blur(6px); +} + +#buttons-wrapper { + -webkit-app-region: none; + cursor: pointer; + user-select: none; + display: flex; + justify-content: space-between; + align-items: center; +} + +.button { + -webkit-app-region: no-drag; + vertical-align: middle; + height: 100%; + width: 30px; + background-size: 14px; + background-position: center; + background-repeat: no-repeat; +} + +.button:hover { + background-color: var(--top-bar-button-hover-color); +} + +.button:active { + background-color: var(--top-bar-button-active-color); +} + +#close-button:hover { + background-color: var(--top-bar-close-button-color); +} + +#close-button:active { + background-color: var(--top-bar-close-button-active-color); +} + +#body-container { + height: var(--body-container-height); + width: var(--body-container-width); + padding: var(--body-container-padding); +} + +#layout-container { + height: var(--layout-container-height); + width: var(--layout-container-width); + padding: var(--layout-container-padding); +} + +.lm_header .lm_tab .lm_close_tab { + background-image: var(--tab-close-button-url); + height: 14px; + width: 14px; + background-size: 12px; + background-position: center; + border-radius: 50%; + position: absolute; /* Must be absolute, otherwise we end up with overflow errors due to inline styles */ + top: 6px; + right: 6px; +} + +.lm_header .lm_tab .lm_close_tab:hover { + background-color: var(--tab-button-hover-color); +} + +.lm_header .lm_tab .lm_close_tab:active { + background-color: var(--tab-button-active-color); +} + +#close-button { + background-image: var(--close-button-url); +} + +#expand-button { + background-image: var(--expand-button-url); +} + +#minimize-button { + background-image: var(--minimize-button-url); +} + +.lm_goldenlayout { + background-color: var(--frame-background-color); +} + +.lm_header { + -webkit-app-region: no-drag; + box-shadow: none; + border-bottom: var(--header-border-bottom-height) solid var(--tab-background-color); + height: 25px; + user-select: none; +} + +.lm_tabs { + -webkit-app-region: no-drag; + background-color: var(--tabs-bar-background-color); + border-top-left-radius: var(--corner-radius); + border-top-right-radius: var(--corner-radius); + width: 100%; +} + +.lm_header .lm_tab { + border-top-right-radius: var(--corner-radius); + border-top-left-radius: var(--corner-radius); + background-color: var(--tab-background-color); + color: var(--tab-font-color); + height: 100%; + margin-right: 0px; + margin-top: 0px; + white-space: nowrap; + overflow-x: hidden; +} + +.lm_header .lm_tabs .lm_tab { + padding-left: 8px; + padding-top: 2px; + padding-right: 8px; + padding-bottom: 2px; + border-top: 2px solid var(--tab-background-color); + opacity: 60%; + z-index: 100 !important; /* Necessary to make sure that the controls panel doesn't appear above the tabs. This is to overwrite an inline style coming from golden-layouts. */ +} + +.lm_header .lm_tabs .lm_tab:hover { + border-top: 2px solid var(--tab-border-top-color); /* might be able to take this out */ + opacity: 80%; +} + +.lm_header .lm_tab .lm_title { + margin-right: 10px; + line-height: 25px; + font-size: 12px; + vertical-align: middle; + padding: 0; + white-space: nowrap; + color: var(--tab-font-color); + font-weight: 300; +} + +.lm_title { + width: 120px; + white-space: nowrap; +} + +.lm_header .lm_tab.lm_active { + border-top: 2px solid var(--tab-border-top-color); + background-color: var(--tab-background-active-color); + opacity: 100%; +} + +.lm_header .lm_tabs .lm_active:hover { + border-color: var(--tab-border-top-highlight-color); + opacity: 90%; +} + +.lm_content { + background-color: var(--color-behind-views); + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; +} + +.lm_splitter { + background-color: var(--splitter-color); + opacity: 0.001; + transition: opacity 200ms ease; +} + +.lm_splitter:hover, +.lm_splitter.lm_dragging { + background-color: var(--splitter-hover-color); + opacity: 1; +} + +.lm_dropTargetIndicator { + box-shadow: none; + outline: none; + transition: all 200ms ease; + background: var(--drop-target-background-color); + border: 1px solid var(--drop-target-border-color); + box-sizing: border-box; + border-radius: 2px; + margin-top: 1px; +} + +.lm_dropTargetIndicator .lm_inner { + background: var(--tab-background-color); + opacity: .2 +} + +.lm_tabdropdown_list { + z-index: 101 !important; +} + +.lm_header .lm_tabdropdown_list .lm_tab { + background-color: var(--secondary-background-color); +} + +.lm_header .lm_tabdropdown_list .lm_tab:hover { + background-color: var(--main-background-color); +} + +.lm_header .lm_controls li.lm_tabdropdown:before{ + color: var(--tab-font-color) +} + +.lm_controls { + height: 100%; +} + +.lm_controls li { + position: relative; + background-position: center center; + background-repeat: no-repeat; + opacity: .4; + transition: opacity 300ms ease; + height: 100% !important; +} + +.lm_controls li:hover { + opacity: 1 +} + +.lm_controls .lm_popout { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAPklEQVR4nI2Q0QoAIAwCNfr/X7aXCpGN8snBdgejJOzckpkxs9jR6K6T5JpU0nWl5pSXTk7qwh8SnNT+CAAWCgkKFpuSWsUAAAAASUVORK5CYII=) +} + +.lm_controls .lm_maximise { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAKElEQVR4nGP8////fwYCgImQAgYGBgYWKM2IR81/okwajIpgvsMbVgAwgQYRVakEKQAAAABJRU5ErkJggg==) +} + +.lm_controls .lm_close { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAQUlEQVR4nHXOQQ4AMAgCQeT/f6aXpsGK3jSTuCVJAAr7iBdoAwCKd0nwfaAdHbYERw5b44+E8JoBjEYGMBq5gAYP3usUDu2IvoUAAAAASUVORK5CYII=) +} + +.lm_maximised .lm_controls .lm_maximise { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJ0lEQVR4nGP8//8/AzGAiShVI1YhCwMDA8OsWbPwBmZaWhoj0SYCAN1lBxMAX4n0AAAAAElFTkSuQmCC) +} + +.lm_header>.lm_tabs>.focused_tab { + border-color: var(--focused-tab-border-top-color); +} + +.lm_header>.lm_tabs>.focused_tab:hover { + border-color: var(--focused-tab-border-top-highlight-color); +} + +.tab-icon { + height: 12px; + width: 12px; + vertical-align: baseline; + margin-right: 7px; +} + +.lm_tabs .newTabButton { + background-image: var(--new-tab-button-url); + filter: invert(.3); + background-size: cover; + width: 12px; + height: 12px; + float: left; + margin: 6px 5px 0 8px; + cursor: pointer; +} + +.lm_tabs .newTabButton:hover { + filter: invert(0); +} + +:root.light-theme .newTabButton { + filter: invert(.7); +} +:root.light-theme .newTabButton:hover { + filter: invert(1); +} + +.lm_header .lm_tabdropdown_list { + overflow-y: auto; +} + +.lm_tabdropdown_list::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + border-radius: 8px; + background-color: #53565F; +} + +.lm_tabdropdown_list::-webkit-scrollbar { + width: 8px; + background-color: #53565F; +} + +.lm_tabdropdown_list::-webkit-scrollbar-thumb { + border-radius: 8px; + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + background-color: #FFFFFF; +} + +:root.light-theme .lm_tabdropdown_list::-webkit-scrollbar-track { + background-color: #C9CBD2; +} + +:root.light-theme .lm_tabdropdown_list::-webkit-scrollbar { + background-color: #C9CBD2; +} + +:root.light-theme .lm_tabdropdown_list::-webkit-scrollbar-thumb { + background-color: #111214; +} \ No newline at end of file diff --git a/how-to/web-notifications/public/views/notifications.html b/how-to/web-notifications/public/views/notifications.html new file mode 100644 index 0000000..e67aa3c --- /dev/null +++ b/how-to/web-notifications/public/views/notifications.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + +
+
+

Notifications

+
+
+ OpenFin +
+
+
+
+

Notifications

+ + + + + + +
+
+ + diff --git a/how-to/web-notifications/scripts/copy-core-web.js b/how-to/web-notifications/scripts/copy-core-web.js new file mode 100644 index 0000000..7a419a3 --- /dev/null +++ b/how-to/web-notifications/scripts/copy-core-web.js @@ -0,0 +1,43 @@ +const fs = require('fs'); +const path = require('path'); + +const sharedWorkerPath = `${path.dirname(require.resolve('@openfin/core-web'))}/shared-worker.js`; +const cssPath = `${path.dirname(require.resolve('@openfin/core-web'))}/styles.css`; + +const targetJSdirectory = path.resolve(__dirname, '..', 'public', 'js'); +const targetSharedWorkerPath = path.join(targetJSdirectory, 'shared-worker.bundle.js'); + +const targetCSSdirectory = path.resolve(__dirname, '..', 'public', 'style'); +const targetCSSPath = path.join(targetCSSdirectory, 'core-web-styles.css'); + +fs.mkdir(targetJSdirectory, { recursive: true }, (createdDirectoryError) => { + if (createdDirectoryError) { + console.error(`Error creating target directory: ${targetJSdirectory}`); + throw createdDirectoryError; + } + console.log( + `${targetJSdirectory} directory was created or already existed. Copying source shared-worker.js to target directory.` + ); + fs.copyFile(sharedWorkerPath, targetSharedWorkerPath, (copyFileError) => { + if (copyFileError) { + throw copyFileError; + } + console.log(`shared-worker.js was copied to target directory: ${targetSharedWorkerPath}`); + }); +}); + +fs.mkdir(targetCSSdirectory, { recursive: true }, (createdDirectoryError) => { + if (createdDirectoryError) { + console.error(`Error creating target directory: ${targetCSSdirectory}`); + throw createdDirectoryError; + } + console.log( + `${targetCSSdirectory} directory was created or already existed. Copying source styles.css to target directory.` + ); + fs.copyFile(cssPath, targetCSSPath, (copyFileError) => { + if (copyFileError) { + throw copyFileError; + } + console.log(`styles.css was copied to target directory: ${targetCSSPath}`); + }); +}); diff --git a/how-to/web-notifications/scripts/launch.mjs b/how-to/web-notifications/scripts/launch.mjs new file mode 100644 index 0000000..731ece8 --- /dev/null +++ b/how-to/web-notifications/scripts/launch.mjs @@ -0,0 +1,50 @@ +/* eslint-disable unicorn/no-process-exit */ +import { exec } from 'child_process'; + +/** + * Run the process. + * @param url The manifest to launch. + */ +async function run(url) { + try { + if (process.platform === 'win32') { + exec(`start ${url}`, (error, stdout, stderr) => { + if (error) { + console.error(`Error: ${error.message}`); + return; + } + if (stderr) { + console.error(`stderr: ${stderr}`); + return; + } + console.log(`stdout: ${stdout}`); + }); + } else if (process.platform === 'darwin') { + exec(`open ${url}`, (error, stdout, stderr) => { + if (error) { + console.error(`Error: ${error.message}`); + return; + } + if (stderr) { + console.error(`stderr: ${stderr}`); + return; + } + console.log(`stdout: ${stdout}`); + }); + } + } catch (e) { + console.error(`Error: Connection failed`); + console.error(e.message); + } +} + +console.log('Launch Url'); +console.log('==============='); +console.log(); +console.log(`Platform: ${process.platform}`); + +const launchArgs = process.argv.slice(2); +const url = launchArgs.length > 0 ? launchArgs[0] : 'http://localhost:6060/platform/provider.html'; +console.log(`Url: ${url}`); + +run(url).catch((err) => console.error(err)); diff --git a/how-to/web-notifications/tsconfig.eslint.json b/how-to/web-notifications/tsconfig.eslint.json new file mode 100644 index 0000000..a64fbd0 --- /dev/null +++ b/how-to/web-notifications/tsconfig.eslint.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "es2021", + "module": "ES2020", + "sourceMap": true, + "rootDir": "./src", + "outDir": "build", + "skipLibCheck": true, + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "node" + } +} diff --git a/package-lock.json b/package-lock.json index 61cd61d..5f8056b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "openfin-web-starter", - "version": "20.1.0", + "version": "21.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "openfin-web-starter", - "version": "20.1.0", + "version": "21.0.0", "license": "SEE LICENSE IN LICENSE.MD", "workspaces": [ "how-to/*" @@ -20,15 +20,15 @@ }, "how-to/cloud-interop": { "name": "openfin-web--cloud-interop", - "version": "20.1.0", + "version": "21.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/cloud-interop": "0.40.51", - "@openfin/core-web": "0.40.51" + "@openfin/cloud-interop": "0.41.131", + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -50,15 +50,15 @@ }, "how-to/cloud-interop-basic": { "name": "openfin-web--cloud-interop-basic", - "version": "20.1.0", + "version": "21.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/cloud-interop": "0.40.51", - "@openfin/core-web": "0.40.51" + "@openfin/cloud-interop": "0.41.131", + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "copy-webpack-plugin": "^12.0.2", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", @@ -80,91 +80,39 @@ } }, "how-to/cloud-interop-basic/node_modules/@openfin/cloud-interop": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.40.51.tgz", - "integrity": "sha512-Xx5yJQCH9rX/cnr9W3zkkeIb9ybtNT97eHSdgMDGUxSqkTuswxNtsnaore4SP1K6KcQcb5bawMMm4ynG9Ay8lw==", + "version": "0.41.131", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.41.131.tgz", + "integrity": "sha512-XWklv0tg1AVhTIKFjmpPbDSmYKvjvGO0aa3LZ8sg2kiQHl3TAx3k9k/yVpNW6wBHe9BEJQSMWR/6RJRDzTKkoA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@openfin/cloud-interop-core-api": "0.0.1-alpha.05c8c77" }, "peerDependencies": { - "@openfin/core": "40.104.2" - } - }, - "how-to/cloud-interop-basic/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" - } - }, - "how-to/cloud-interop-basic/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" - }, - "peerDependencies": { - "@openfin/core": "40.104.2" + "@openfin/core": "41.102.1" } }, "how-to/cloud-interop/node_modules/@openfin/cloud-interop": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.40.51.tgz", - "integrity": "sha512-Xx5yJQCH9rX/cnr9W3zkkeIb9ybtNT97eHSdgMDGUxSqkTuswxNtsnaore4SP1K6KcQcb5bawMMm4ynG9Ay8lw==", + "version": "0.41.131", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.41.131.tgz", + "integrity": "sha512-XWklv0tg1AVhTIKFjmpPbDSmYKvjvGO0aa3LZ8sg2kiQHl3TAx3k9k/yVpNW6wBHe9BEJQSMWR/6RJRDzTKkoA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@openfin/cloud-interop-core-api": "0.0.1-alpha.05c8c77" }, "peerDependencies": { - "@openfin/core": "40.104.2" - } - }, - "how-to/cloud-interop/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" - } - }, - "how-to/cloud-interop/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" - }, - "peerDependencies": { - "@openfin/core": "40.104.2" + "@openfin/core": "41.102.1" } }, "how-to/web-client-api": { "name": "openfin-web--web-client-api", - "version": "20.1.0", + "version": "21.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -184,42 +132,16 @@ "webpack-cli": "^5.1.4" } }, - "how-to/web-client-api/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" - } - }, - "how-to/web-client-api/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" - }, - "peerDependencies": { - "@openfin/core": "40.104.2" - } - }, "how-to/web-interop": { "name": "openfin-web--web-interop", - "version": "20.1.0", + "version": "21.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -241,14 +163,14 @@ }, "how-to/web-interop-basic": { "name": "openfin-web--web-interop-basic", - "version": "20.1.0", + "version": "21.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -268,43 +190,58 @@ "webpack-cli": "^5.1.4" } }, - "how-to/web-interop-basic/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", + "how-to/web-interop-support-context-and-intents": { + "name": "openfin-web--web-interop-support-context-and-intents", + "version": "21.0.0", + "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" + "@finos/fdc3": "2.0.3", + "@openfin/cloud-interop": "0.41.131", + "@openfin/core-web": "0.41.131" + }, + "devDependencies": { + "@openfin/core": "41.102.1", + "eslint": "8.57.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-airbnb-typescript": "18.0.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsdoc": "48.2.1", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-simple-import-sort": "12.0.0", + "eslint-plugin-unicorn": "51.0.1", + "eslint-plugin-unused-imports": "3.1.0", + "markdownlint-cli": "0.39.0", + "prettier": "3.2.5", + "ts-loader": "^9.5.1", + "typescript": "^5.4.2", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4" } }, - "how-to/web-interop-basic/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", + "how-to/web-interop-support-context-and-intents/node_modules/@openfin/cloud-interop": { + "version": "0.41.131", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.41.131.tgz", + "integrity": "sha512-XWklv0tg1AVhTIKFjmpPbDSmYKvjvGO0aa3LZ8sg2kiQHl3TAx3k9k/yVpNW6wBHe9BEJQSMWR/6RJRDzTKkoA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" + "@openfin/cloud-interop-core-api": "0.0.1-alpha.05c8c77" }, "peerDependencies": { - "@openfin/core": "40.104.2" + "@openfin/core": "41.102.1" } }, - "how-to/web-interop-support-context-and-intents": { - "name": "openfin-web--web-interop-support-context-and-intents", - "version": "20.1.0", + "how-to/web-layout": { + "name": "openfin-web--web-layout", + "version": "21.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "2.0.3", - "@openfin/cloud-interop": "0.40.51", - "@openfin/core-web": "0.40.51" + "@openfin/core-web": "0.41.131" }, "devDependencies": { - "@openfin/core": "40.104.2", + "@openfin/core": "41.102.1", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -324,212 +261,674 @@ "webpack-cli": "^5.1.4" } }, - "how-to/web-interop-support-context-and-intents/node_modules/@openfin/cloud-interop": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.40.51.tgz", - "integrity": "sha512-Xx5yJQCH9rX/cnr9W3zkkeIb9ybtNT97eHSdgMDGUxSqkTuswxNtsnaore4SP1K6KcQcb5bawMMm4ynG9Ay8lw==", - "license": "SEE LICENSE IN LICENSE.md", + "how-to/web-layout-basic": { + "name": "openfin-web--web-layout-basic", + "version": "21.0.0", + "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/cloud-interop-core-api": "0.0.1-alpha.05c8c77" + "@finos/fdc3": "2.0.3", + "@openfin/core-web": "0.41.131" }, - "peerDependencies": { - "@openfin/core": "40.104.2" + "devDependencies": { + "@openfin/core": "41.102.1", + "eslint": "8.57.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-airbnb-typescript": "18.0.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsdoc": "48.2.1", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-simple-import-sort": "12.0.0", + "eslint-plugin-unicorn": "51.0.1", + "eslint-plugin-unused-imports": "3.1.0", + "markdownlint-cli": "0.39.0", + "prettier": "3.2.5", + "ts-loader": "^9.5.1", + "typescript": "^5.4.2", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4" } }, - "how-to/web-interop-support-context-and-intents/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", + "how-to/web-notifications": { + "name": "openfin-web--web-notifications", + "version": "21.0.0", + "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" + "@finos/fdc3": "2.0.3", + "@openfin/core-web": "0.41.131", + "@openfin/web-notifications": "^2.11.0", + "@openfin/web-notifications-client": "^2.11.0" + }, + "devDependencies": { + "@openfin/core": "41.102.1", + "eslint": "^9.25.0", + "markdownlint-cli": "0.39.0", + "prettier": "3.2.5", + "ts-loader": "^9.5.1", + "typescript": "^5.4.2", + "typescript-eslint": "^8.33.0", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4" } }, - "how-to/web-interop-support-context-and-intents/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", - "license": "SEE LICENSE IN LICENSE.md", + "how-to/web-notifications/node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "how-to/web-notifications/node_modules/@eslint/js": { + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz", + "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "how-to/web-notifications/node_modules/@openfin/web-notifications": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@openfin/web-notifications/-/web-notifications-2.11.0.tgz", + "integrity": "sha512-IG/QwroEf4So3dyHnnGJxb//g4oEhqT3/YCVYsBL3T4vTCQoEdhnGsiBuNSRf2HtUHQS/fZi+Ltnsk0aOxnupQ==", + "license": "SEE LICENSE IN LICENSE.MD", "peerDependencies": { - "@openfin/core": "40.104.2" + "@openfin/core": "41.102.1", + "@openfin/predux": "1.0.0-alpha.1", + "@radix-ui/react-icons": ">=1.3.2 <2.0.0", + "date-fns": ">=4.1.0 <5.0.0", + "date-fns-tz": ">=3.2.0 <4.0.0", + "formik": ">=2.4.6 <3.0.0", + "framer-motion": ">=11.18.2 <12.0.0", + "fuse.js": ">=7.0.0 <8.0.0", + "history": ">=4.10.1 <5.0.0", + "inversify": ">=6.1.6 <7.0.0", + "lodash": ">=4.17.21 <5.0.0", + "lodash.clamp": ">=4.0.3 <5.0.0", + "lodash.noop": ">=3.0.1 <4.0.0", + "lodash.throttle": ">=4.1.1 <5.0.0", + "markdown-it": ">=14.1.0 <15.0.0", + "react": ">=18.3.1 <19.0.0", + "react-calendar": ">=5.1.0 <6.0.0", + "react-dom": ">=18.3.1 <19.0.0", + "react-redux": ">=7.0.2 <8.0.0", + "react-router": ">=5.3.4 <6.0.0", + "react-router-dom": ">=5.1.2 <6.0.0", + "react-transition-group": ">=4.4.5 <5.0.0", + "reflect-metadata": ">=0.2.2 <1.0.0", + "reselect": ">=5.1.1 <6.0.0", + "semver-compare": ">=1.0.0 <2.0.0", + "styled-components": ">=5.3.11 <6.0.0", + "yup": ">=0.32.9 <1.0.0" + } + }, + "how-to/web-notifications/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "how-to/web-interop/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", + "how-to/web-notifications/node_modules/eslint": { + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz", + "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.27.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "how-to/web-interop/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", - "license": "SEE LICENSE IN LICENSE.md", + "how-to/web-notifications/node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "how-to/web-notifications/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "how-to/web-notifications/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "how-to/web-notifications/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "how-to/web-notifications/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "how-to/web-notifications/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "how-to/web-notifications/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "how-to/web-notifications/node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "how-to/web-notifications/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz", + "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.3.tgz", + "integrity": "sha512-hyrN8ivxfvJ4i0fIJuV4EOlV0WDMz5Ui4StRTgVaAvWeiRCilXgwVvxJKtFQ3TKtHgJscB2YiXKGNJuVwhQMtA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.3", + "@babel/parser": "^7.27.3", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.3", + "@babel/types": "^7.27.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz", + "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.27.3", + "@babel/types": "^7.27.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "peer": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@openfin/core": "40.104.2" + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "how-to/web-layout": { - "name": "openfin-web--web-layout", - "version": "20.1.0", - "license": "SEE LICENSE IN LICENSE.MD", - "dependencies": { - "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" - }, - "devDependencies": { - "@openfin/core": "40.104.2", - "eslint": "8.57.0", - "eslint-config-airbnb": "19.0.4", - "eslint-config-airbnb-typescript": "18.0.0", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-jsdoc": "48.2.1", - "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-simple-import-sort": "12.0.0", - "eslint-plugin-unicorn": "51.0.1", - "eslint-plugin-unused-imports": "3.1.0", - "markdownlint-cli": "0.39.0", - "prettier": "3.2.5", - "ts-loader": "^9.5.1", - "typescript": "^5.4.2", - "webpack": "^5.90.3", - "webpack-cli": "^5.1.4" + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" } }, - "how-to/web-layout-basic": { - "name": "openfin-web--web-layout-basic", - "version": "20.1.0", - "license": "SEE LICENSE IN LICENSE.MD", + "node_modules/@babel/helpers": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.3.tgz", + "integrity": "sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==", + "license": "MIT", + "peer": true, "dependencies": { - "@finos/fdc3": "2.0.3", - "@openfin/core-web": "0.40.51" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3" }, - "devDependencies": { - "@openfin/core": "40.104.2", - "eslint": "8.57.0", - "eslint-config-airbnb": "19.0.4", - "eslint-config-airbnb-typescript": "18.0.0", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-jsdoc": "48.2.1", - "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-promise": "6.1.1", - "eslint-plugin-simple-import-sort": "12.0.0", - "eslint-plugin-unicorn": "51.0.1", - "eslint-plugin-unused-imports": "3.1.0", - "markdownlint-cli": "0.39.0", - "prettier": "3.2.5", - "ts-loader": "^9.5.1", - "typescript": "^5.4.2", - "webpack": "^5.90.3", - "webpack-cli": "^5.1.4" + "engines": { + "node": ">=6.9.0" } }, - "how-to/web-layout-basic/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", + "node_modules/@babel/parser": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz", + "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==", + "license": "MIT", + "peer": true, "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "how-to/web-layout-basic/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", - "license": "SEE LICENSE IN LICENSE.md", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "license": "MIT", + "peer": true, "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@openfin/core": "40.104.2" + "@babel/core": "^7.0.0-0" } }, - "how-to/web-layout/node_modules/@openfin/core": { - "version": "40.104.2", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-40.104.2.tgz", - "integrity": "sha512-JWCFDXzFYZGIBkBAOcsY0rcGYfPpxnGm2obJ9xvhkYOC0Sy73DfpAlyszF3wHBBz0vDdod5u/aNxXxbjHryOIg==", - "license": "SEE LICENSE IN LICENSE.md", + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", "dependencies": { - "@types/node": "^20.14.2", - "lodash": "^4.17.21", - "ws": "^7.3.0" + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "how-to/web-layout/node_modules/@openfin/core-web": { - "version": "0.40.51", - "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.40.51.tgz", - "integrity": "sha512-f2b+q68cSNtOgH9oc0hF1zKJ4Sql1mFGoNkePDeHwEQqMu1fFmOTuNBOl2w94YG/mlU1EMxeAvvAOK4TnqaHFA==", - "license": "SEE LICENSE IN LICENSE.md", + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "peer": true, "dependencies": { - "buffer": "6.0.3", - "events": "^3.3.0", - "lodash": "4.17.21", - "uuid": "^8.3.2" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, - "peerDependencies": { - "@openfin/core": "40.104.2" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, + "node_modules/@babel/traverse": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.3.tgz", + "integrity": "sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==", "license": "MIT", + "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.3", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "license": "MIT", + "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">=4" } }, - "node_modules/@babel/runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", - "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", + "node_modules/@babel/types": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", "license": "MIT", + "peer": true, "dependencies": { - "regenerator-runtime": "^0.14.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -545,6 +944,37 @@ "node": ">=10.0.0" } }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "license": "MIT", + "peer": true + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.42.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz", @@ -561,9 +991,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "license": "MIT", "dependencies": { @@ -589,6 +1019,68 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", + "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", @@ -647,12 +1139,74 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", + "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.14.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@finos/fdc3": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.0.3.tgz", "integrity": "sha512-sq+iGbjU6yRl7xHhp62nB1tV4biFaHZgUAInzPTJvzXWl9xjZMmXvvbeZW6WGZaCSvjQhJPSrmWs+4z2c73T+g==", "license": "Apache-2.0" }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -715,6 +1269,48 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inversifyjs/common": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@inversifyjs/common/-/common-1.4.0.tgz", + "integrity": "sha512-qfRJ/3iOlCL/VfJq8+4o5X4oA14cZSBbpAmHsYj8EsIit1xDndoOl0xKOyglKtQD4u4gdNVxMHx4RWARk/I4QA==", + "license": "MIT", + "peer": true + }, + "node_modules/@inversifyjs/core": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@inversifyjs/core/-/core-1.3.5.tgz", + "integrity": "sha512-B4MFXabhNTAmrfgB+yeD6wd/GIvmvWC6IQ8Rh/j2C3Ix69kmqwz9pr8Jt3E+Nho9aEHOQCZaGmrALgtqRd+oEQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@inversifyjs/common": "1.4.0", + "@inversifyjs/reflect-metadata-utils": "0.2.4" + } + }, + "node_modules/@inversifyjs/reflect-metadata-utils": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@inversifyjs/reflect-metadata-utils/-/reflect-metadata-utils-0.2.4.tgz", + "integrity": "sha512-u95rV3lKfG+NT2Uy/5vNzoDujos8vN8O18SSA5UyhxsGYd4GLQn/eUsGXfOsfa7m34eKrDelTKRUX1m/BcNX5w==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "reflect-metadata": "0.2.2" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -822,7 +1418,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -837,7 +1432,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -847,7 +1441,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -868,14 +1461,12 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -920,17 +1511,72 @@ "node": ">= 8" } }, - "node_modules/@openfin/cloud-interop-core-api": { - "version": "0.0.1-alpha.05c8c77", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop-core-api/-/cloud-interop-core-api-0.0.1-alpha.05c8c77.tgz", - "integrity": "sha512-mKlAKrWZbaPWqBBZeOTfVi3uF52odeNpKCVXc6U18+VQIhYrmp/UuLrsJ/JuH7Yk3jyXI+nwa17vVlBNY1pIQQ==", - "license": "SEE LICENSE IN LICENSE.md", + "node_modules/@openfin/cloud-interop-core-api": { + "version": "0.0.1-alpha.05c8c77", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop-core-api/-/cloud-interop-core-api-0.0.1-alpha.05c8c77.tgz", + "integrity": "sha512-mKlAKrWZbaPWqBBZeOTfVi3uF52odeNpKCVXc6U18+VQIhYrmp/UuLrsJ/JuH7Yk3jyXI+nwa17vVlBNY1pIQQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "mqtt": "^5.3.1", + "zod": "^3.24.1" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "*" + } + }, + "node_modules/@openfin/core": { + "version": "41.102.1", + "resolved": "https://registry.npmjs.org/@openfin/core/-/core-41.102.1.tgz", + "integrity": "sha512-O07+UkqX+PRHYZS4vDEf3parPSyi0Rb/adOLbObhDWEKsb6Ms6nhvrYjGSp/STbQ/PzfWGav5IPk/wHkGZ0pjQ==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@types/node": "^20.14.2", + "events": "^3.0.0", + "lodash": "^4.17.21", + "ws": "^7.3.0" + } + }, + "node_modules/@openfin/core-web": { + "version": "0.41.131", + "resolved": "https://registry.npmjs.org/@openfin/core-web/-/core-web-0.41.131.tgz", + "integrity": "sha512-2SWr8eu5tatdVx4R6DpoYckbKumC6Kz73TuqlQN/uv21loygykS6eUW0O6XLIkak7p88iCQE+6oyzoMFT4Sg4A==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "buffer": "6.0.3", + "events": "^3.3.0", + "lodash": "4.17.21", + "uuid": "^8.3.2" + }, + "peerDependencies": { + "@openfin/core": "41.102.1" + } + }, + "node_modules/@openfin/predux": { + "version": "1.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@openfin/predux/-/predux-1.0.0-alpha.1.tgz", + "integrity": "sha512-xEE4qwVhoXjHdgaWOvlEQOkr3bE5CVTwKm9m3oO/sjHdSwALIHRVHn59bmqhLpRE9LuAaQA4LMlKY1Sja6YsCg==", + "license": "ISC", + "peer": true, "dependencies": { - "mqtt": "^5.3.1", - "zod": "^3.24.1" - }, - "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "*" + "openfin-service-signal": "^1.0.0", + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@openfin/predux/node_modules/reflect-metadata": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@openfin/web-notifications-client": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@openfin/web-notifications-client/-/web-notifications-client-2.11.0.tgz", + "integrity": "sha512-lkpbNuniyTtqWQ0zHHYAApzi8nMsRoLdEY+qIXeEpu23S8rAYaUF8byNSLqnTbjUGsV4lu7we+h2kdsVFbqJ2w==", + "license": "SEE LICENSE IN LICENSE.MD", + "peerDependencies": { + "@openfin/core": "41.102.1", + "semver-compare": ">= 1.0.0 < 2.0.0" } }, "node_modules/@pkgjs/parseargs": { @@ -945,9 +1591,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz", + "integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==", "dev": true, "license": "MIT", "engines": { @@ -957,10 +1603,20 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz", + "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" + } + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", - "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", "cpu": [ "x64" ], @@ -1006,12 +1662,23 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, "license": "MIT" }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1026,10 +1693,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz", + "integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==", + "license": "MIT", + "peer": true + }, "node_modules/@types/node": { - "version": "20.17.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.17.tgz", - "integrity": "sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==", + "version": "20.17.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", + "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -1042,6 +1716,29 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/react": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz", + "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.34", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, "node_modules/@types/readable-stream": { "version": "4.0.18", "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", @@ -1053,9 +1750,9 @@ } }, "node_modules/@types/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -1126,6 +1823,39 @@ } } }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.0.tgz", + "integrity": "sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.33.0", + "@typescript-eslint/types": "^8.33.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz", + "integrity": "sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", @@ -1145,6 +1875,23 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz", + "integrity": "sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/type-utils": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", @@ -1494,6 +2241,16 @@ } } }, + "node_modules/@wojtekmaj/date-utils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.5.1.tgz", + "integrity": "sha512-+i7+JmNiE/3c9FKxzWFi2IjRJ+KzZl1QPu6QNrsgaa2MuBgXvUy4gA1TVzf/JMdIIloB76xSKikTWuyYAIVLww==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/wojtekmaj/date-utils?sponsor=1" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -1521,9 +2278,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "license": "MIT", "bin": { @@ -1602,16 +2359,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1652,7 +2399,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/aria-query": { @@ -1851,9 +2597,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", - "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", "dev": true, "license": "MPL-2.0", "peer": true, @@ -1872,6 +2618,23 @@ "node": ">= 0.4" } }, + "node_modules/babel-plugin-styled-components": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", + "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "lodash": "^4.17.21", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1938,7 +2701,6 @@ "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, "funding": [ { "type": "opencollective", @@ -2030,9 +2792,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2044,14 +2806,14 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -2070,11 +2832,20 @@ "node": ">=6" } }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001697", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz", - "integrity": "sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ==", - "dev": true, + "version": "1.0.30001713", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", + "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==", "funding": [ { "type": "opencollective", @@ -2119,9 +2890,9 @@ } }, "node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", "dev": true, "funding": [ { @@ -2187,6 +2958,16 @@ "node": ">=6" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2283,6 +3064,13 @@ "dev": true, "license": "MIT" }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT", + "peer": true + }, "node_modules/copy-webpack-plugin": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", @@ -2308,6 +3096,36 @@ "webpack": "^5.1.0" } }, + "node_modules/copy-webpack-plugin/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/copy-webpack-plugin/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2322,18 +3140,18 @@ } }, "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", - "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" + "unicorn-magic": "^0.3.0" }, "engines": { "node": ">=18" @@ -2342,14 +3160,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/copy-webpack-plugin/node_modules/ignore": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/copy-webpack-plugin/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2369,13 +3197,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", - "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.3" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -2397,6 +3225,35 @@ "node": ">= 8" } }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT", + "peer": true + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -2459,6 +3316,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-tz": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.2.0.tgz", + "integrity": "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "date-fns": "^3.0.0 || ^4.0.0" + } + }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -2493,6 +3371,16 @@ "dev": true, "license": "MIT" }, + "node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -2556,6 +3444,17 @@ "node": ">=6.0.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2579,10 +3478,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.92", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.92.tgz", - "integrity": "sha512-BeHgmNobs05N1HMmMZ7YIuHfYBGlq/UmvlsTgg+fsbFs9xVMj+xJHFg19GN04+9Q+r8Xnh9LXqaYIyEWElnNgQ==", - "dev": true, + "version": "1.5.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz", + "integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -2610,7 +3508,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -2794,13 +3691,16 @@ } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -2825,7 +3725,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3247,9 +4146,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", - "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", "peer": true, @@ -3264,7 +4163,7 @@ "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.8", + "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", @@ -3675,9 +4574,9 @@ } }, "node_modules/fastq": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3753,16 +4652,16 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, "node_modules/for-each": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", - "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { @@ -3776,13 +4675,13 @@ } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -3792,6 +4691,60 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/formik": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", + "integrity": "sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==", + "funding": [ + { + "type": "individual", + "url": "https://opencollective.com/formik" + } + ], + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/framer-motion": { + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", + "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", + "license": "MIT", + "peer": true, + "dependencies": { + "motion-dom": "^11.18.1", + "motion-utils": "^11.18.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -3855,6 +4808,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fuse.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -3866,18 +4839,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -3935,6 +4908,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-user-locale": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-2.3.2.tgz", + "integrity": "sha512-O2GWvQkhnbDoWFUJfaBlDIKUEdND8ATpBXD6KXcbhxlfktyD/d8w6mkzM/IlQEqGZAMz/PW6j6Hv53BiigKLUQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "mem": "^8.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/get-user-locale?sponsor=1" + } + }, "node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -4168,6 +5154,31 @@ "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", "license": "MIT" }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -4315,6 +5326,33 @@ "node": ">=10.13.0" } }, + "node_modules/inversify": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/inversify/-/inversify-6.2.2.tgz", + "integrity": "sha512-KB836KHbZ9WrUnB8ax5MtadOwnqQYa+ZJO3KWbPFgcr4RIEnHM621VaqFZzOZd9+U7ln6upt9n0wJei7x2BNqw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@inversifyjs/common": "1.4.0", + "@inversifyjs/core": "1.3.5" + }, + "peerDependencies": { + "reflect-metadata": "~0.2.2" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -4853,7 +5891,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -4869,6 +5906,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", @@ -4883,7 +5926,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -5037,7 +6079,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dev": true, "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" @@ -5075,6 +6116,20 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.clamp": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash.clamp/-/lodash.clamp-4.0.3.tgz", + "integrity": "sha512-HvzRFWjtcguTW7yd8NJBshuNaCa8aqNFtnswdT7f/cMd/1YKy5Zzoq4W/Oxvnx9l7aeY258uSdDfM793+eLsVg==", + "license": "MIT", + "peer": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5082,11 +6137,24 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.noop": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", + "integrity": "sha512-TmYdmu/pebrdTIBDK/FDx9Bmfzs9x0sZG6QIJuMDTqEPfeciLcN13ij+cOd0i9vwJfBtbG9UQ+C7MkXgYxrIJg==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT", + "peer": true + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -5102,6 +6170,19 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "license": "MIT", + "peer": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/markdown-it": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", @@ -5227,9 +6308,25 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true, "license": "MIT" }, + "node_modules/mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "license": "MIT", + "peer": true, + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -5284,6 +6381,16 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -5326,10 +6433,27 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/motion-dom": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", + "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==", + "license": "MIT", + "peer": true, + "dependencies": { + "motion-utils": "^11.18.1" + } + }, + "node_modules/motion-utils": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz", + "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==", + "license": "MIT", + "peer": true + }, "node_modules/mqtt": { - "version": "5.10.4", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.10.4.tgz", - "integrity": "sha512-wN+SuhT2/ZaG6NPxca0N6YtRivnMxk6VflxQUEeqDH4erKdj+wPAGhHmcTLzvqfE4sJRxrEJ+XJxUc0No0E7eQ==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.11.0.tgz", + "integrity": "sha512-VDqfADTNvohwcY02NgxPb7OojIeDrNQ1q62r/DcM+bnIWY8LBi3nMTvdEaFEp6Bu4ejBIpHjJVthUEgnvGLemA==", "license": "MIT", "dependencies": { "@types/readable-stream": "^4.0.18", @@ -5340,11 +6464,12 @@ "help-me": "^5.0.0", "lru-cache": "^10.4.3", "minimist": "^1.2.8", - "mqtt-packet": "^9.0.1", + "mqtt-packet": "^9.0.2", "number-allocator": "^1.0.14", "readable-stream": "^4.7.0", "reinterval": "^1.1.0", "rfdc": "^1.4.1", + "socks": "^2.8.3", "split2": "^4.2.0", "worker-timers": "^7.1.8", "ws": "^8.18.0" @@ -5396,6 +6521,13 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/nanoclone": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", + "license": "MIT", + "peer": true + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5414,7 +6546,6 @@ "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, "license": "MIT" }, "node_modules/normalize-package-data": { @@ -5464,7 +6595,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "peer": true, "engines": { @@ -5516,15 +6646,16 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -5579,6 +6710,13 @@ "wrappy": "1" } }, + "node_modules/openfin-service-signal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/openfin-service-signal/-/openfin-service-signal-1.0.0.tgz", + "integrity": "sha512-X9fptYE3f5e9tQsU0pdVR3vojYglqBKB+rPJ6h8uC1VFs4mVSMBa+hyHLtIiQf+s7G9gDxsnXm61N3igP5Ipqw==", + "license": "ISC", + "peer": true + }, "node_modules/openfin-web--cloud-interop": { "resolved": "how-to/cloud-interop", "link": true @@ -5611,6 +6749,10 @@ "resolved": "how-to/web-layout-basic", "link": true }, + "node_modules/openfin-web--web-notifications": { + "resolved": "how-to/web-notifications", + "link": true + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5647,6 +6789,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5775,6 +6927,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", + "peer": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-to-regexp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT", + "peer": true + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -5790,14 +6959,12 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -5886,15 +7053,22 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT", + "peer": true + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5953,7 +7127,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -5962,6 +7135,13 @@ "react-is": "^16.13.1" } }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT", + "peer": true + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -5976,7 +7156,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6013,14 +7192,163 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-calendar": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-5.1.0.tgz", + "integrity": "sha512-09o/rQHPZGEi658IXAJtWfra1N69D1eFnuJ3FQm9qUVzlzNnos1+GWgGiUeSs22QOpNm32aoVFOimq0p3Ug9Eg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@wojtekmaj/date-utils": "^1.1.3", + "clsx": "^2.0.0", + "get-user-locale": "^2.2.1", + "warning": "^4.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/react-calendar?sponsor=1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "license": "MIT", + "peer": true + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT", "peer": true }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT", + "peer": true + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -6160,6 +7488,23 @@ "node": ">= 10.13.0" } }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0", + "peer": true + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -6286,6 +7631,13 @@ "node": ">=0.10.0" } }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT", + "peer": true + }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -6340,10 +7692,17 @@ "node": ">=4" } }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT", + "peer": true + }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -6521,6 +7880,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/schema-utils": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", @@ -6591,6 +7960,13 @@ "node": ">=10" } }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "license": "MIT", + "peer": true + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -6663,6 +8039,13 @@ "node": ">=8" } }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT", + "peer": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6781,9 +8164,33 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "peer": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, "node_modules/source-map": { @@ -6873,6 +8280,12 @@ "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -7112,6 +8525,60 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-components": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", + "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/styled-components/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7166,9 +8633,9 @@ } }, "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -7185,9 +8652,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", "dependencies": { @@ -7233,6 +8700,20 @@ "dev": true, "license": "MIT" }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT", + "peer": true + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT", + "peer": true + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7246,6 +8727,13 @@ "node": ">=8.0" } }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT", + "peer": true + }, "node_modules/ts-api-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", @@ -7411,9 +8899,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7424,11 +8912,267 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.0.tgz", + "integrity": "sha512-5YmNhF24ylCsvdNW2oJwMzTbaeO4bg90KeGtMjUw0AGtHksgEPLRTUil+coHwCfiu4QjVJFnjp94DmU6zV7DhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.33.0", + "@typescript-eslint/parser": "8.33.0", + "@typescript-eslint/utils": "8.33.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.0.tgz", + "integrity": "sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.33.0", + "@typescript-eslint/type-utils": "8.33.0", + "@typescript-eslint/utils": "8.33.0", + "@typescript-eslint/visitor-keys": "8.33.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.33.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.0.tgz", + "integrity": "sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.33.0", + "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/typescript-estree": "8.33.0", + "@typescript-eslint/visitor-keys": "8.33.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz", + "integrity": "sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/visitor-keys": "8.33.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.0.tgz", + "integrity": "sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.33.0", + "@typescript-eslint/utils": "8.33.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz", + "integrity": "sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz", + "integrity": "sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.33.0", + "@typescript-eslint/tsconfig-utils": "8.33.0", + "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/visitor-keys": "8.33.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.0.tgz", + "integrity": "sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.33.0", + "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/typescript-estree": "8.33.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz", + "integrity": "sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.33.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/typescript-eslint/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript-eslint/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true, "license": "MIT" }, "node_modules/unbox-primitive": { @@ -7457,9 +9201,9 @@ "license": "MIT" }, "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", "engines": { @@ -7480,10 +9224,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", - "dev": true, + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -7557,6 +9300,23 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT", + "peer": true + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", @@ -7572,9 +9332,9 @@ } }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.99.5", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.5.tgz", + "integrity": "sha512-q+vHBa6H9qwBLUlHL4Y7L0L1/LlyBKZtS9FHNCQmtayxjI5RKC9yD8gpvLeqGv5lCQp1Re04yi0MF40pf30Pvg==", "dev": true, "license": "MIT", "dependencies": { @@ -7596,9 +9356,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -7723,25 +9483,6 @@ "node": ">=4.0" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7826,16 +9567,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -7972,6 +9714,13 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC", + "peer": true + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -8014,6 +9763,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yup": { + "version": "0.32.11", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/zod": { "version": "3.24.2", "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", diff --git a/package.json b/package.json index 61f07e1..8f62d47 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openfin-web-starter", - "version": "20.1.0", + "version": "21.0.0", "description": "OpenFin Web Starter", "scripts": { "build": "node ./scripts/workspaces.mjs build",