@elliemae/pui-app-bridge 2.28.6 → 2.29.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cjs/appBridge.js +11 -14
  2. package/dist/cjs/config/app.js +2 -7
  3. package/dist/cjs/config/microFE.js +30 -28
  4. package/dist/cjs/eventManager.js +7 -6
  5. package/dist/cjs/frame.js +10 -7
  6. package/dist/cjs/loaders/manifest.js +1 -1
  7. package/dist/cjs/microfeHost.js +5 -2
  8. package/dist/cjs/tests/scriptingObjects/analytics.js +6 -21
  9. package/dist/cjs/tests/scriptingObjects/appraisalServiceModule.js +1 -4
  10. package/dist/cjs/tests/utils.js +76 -1
  11. package/dist/cjs/typings/window.js +1 -1
  12. package/dist/esm/appBridge.js +11 -14
  13. package/dist/esm/config/app.js +2 -7
  14. package/dist/esm/config/microFE.js +30 -28
  15. package/dist/esm/eventManager.js +7 -6
  16. package/dist/esm/frame.js +10 -7
  17. package/dist/esm/loaders/manifest.js +1 -1
  18. package/dist/esm/microfeHost.js +5 -2
  19. package/dist/esm/tests/scriptingObjects/analytics.js +6 -21
  20. package/dist/esm/tests/scriptingObjects/appraisalServiceModule.js +1 -4
  21. package/dist/esm/tests/serverHandlers.js +3 -1
  22. package/dist/esm/tests/utils.js +76 -1
  23. package/dist/esm/typings/window.js +1 -1
  24. package/dist/public/e2e-host.html +1 -1
  25. package/dist/public/e2e-index.html +1 -1
  26. package/dist/public/frame.html +1 -1
  27. package/dist/public/index.html +1 -1
  28. package/dist/public/js/emuiAppBridge.e4cfaa7d8c810b09c233.js +12 -0
  29. package/dist/public/js/emuiAppBridge.e4cfaa7d8c810b09c233.js.br +0 -0
  30. package/dist/public/js/emuiAppBridge.e4cfaa7d8c810b09c233.js.gz +0 -0
  31. package/dist/public/js/emuiAppBridge.e4cfaa7d8c810b09c233.js.map +1 -0
  32. package/dist/types/lib/appBridge.d.ts +6 -6
  33. package/dist/types/lib/appRegistry.d.ts +1 -1
  34. package/dist/types/lib/config/app.d.ts +1 -1
  35. package/dist/types/lib/config/microFE.d.ts +2 -2
  36. package/dist/types/lib/eventManager.d.ts +3 -3
  37. package/dist/types/lib/loaders/script.d.ts +1 -1
  38. package/dist/types/lib/loaders/style.d.ts +1 -1
  39. package/dist/types/lib/microfeHost.d.ts +5 -6
  40. package/dist/types/lib/tests/scriptingObjects/analytics.d.ts +5 -5
  41. package/dist/types/lib/tests/scriptingObjects/appraisalServiceModule.d.ts +8 -5
  42. package/dist/types/lib/tests/scriptingObjects/global.d.ts +1 -1
  43. package/dist/types/lib/tests/server.d.ts +1 -1
  44. package/dist/types/lib/tests/serverHandlers.d.ts +1 -1
  45. package/dist/types/lib/tests/utils.d.ts +64 -2
  46. package/dist/types/lib/typings/appInfo.d.ts +1 -1
  47. package/dist/types/lib/typings/common.d.ts +10 -0
  48. package/dist/types/lib/typings/guest.d.ts +6 -6
  49. package/dist/types/lib/typings/host.d.ts +4 -4
  50. package/dist/types/lib/typings/index.d.ts +1 -1
  51. package/dist/types/lib/typings/window.d.ts +4 -4
  52. package/dist/types/tsconfig.tsbuildinfo +1 -1
  53. package/dist/umd/index.js +9 -14
  54. package/dist/umd/index.js.br +0 -0
  55. package/dist/umd/index.js.gz +0 -0
  56. package/dist/umd/index.js.map +1 -1
  57. package/package.json +12 -11
  58. package/dist/public/js/emuiAppBridge.57ee9e3892a5a9c5af74.js +0 -17
  59. package/dist/public/js/emuiAppBridge.57ee9e3892a5a9c5af74.js.br +0 -0
  60. package/dist/public/js/emuiAppBridge.57ee9e3892a5a9c5af74.js.gz +0 -0
  61. package/dist/public/js/emuiAppBridge.57ee9e3892a5a9c5af74.js.map +0 -1
@@ -3,31 +3,16 @@ class Analytics extends ScriptingObject {
3
3
  constructor() {
4
4
  super("analytics");
5
5
  }
6
- deleteTimingEventSamplingRatio = (names) => {
7
- console.log("Analytics.deleteTimingEventSamplingRatio", names);
6
+ deleteTimingEventSamplingRatio = (_names) => {
8
7
  };
9
- getAllTimingEventSamplingRatios = () => {
10
- console.log("Analytics.getAllTimingEventSamplingRatios");
11
- return {};
12
- };
13
- getTimingEventSamplingRatio = (names) => {
14
- console.log("Analytics.getTimingEventSamplingRatio", names);
15
- return {};
16
- };
17
- setTimingEventSamplingRatio = (ratios) => {
18
- console.log("Analytics.setTimingEventSamplingRatio", ratios);
19
- };
20
- sendBAEvent = (event) => {
21
- console.log("Analytics.sendBAEvent", event);
22
- return Promise.resolve();
23
- };
24
- startTiming = (name, options) => {
25
- console.log("Analytics.perfMarkStart", name);
26
- return Promise.resolve(performance.mark(name, { detail: options }));
8
+ getAllTimingEventSamplingRatios = () => ({});
9
+ getTimingEventSamplingRatio = (_names) => ({});
10
+ setTimingEventSamplingRatio = (_ratios) => {
27
11
  };
12
+ sendBAEvent = (_event) => Promise.resolve();
13
+ startTiming = (name, options) => Promise.resolve(performance.mark(name, { detail: options }));
28
14
  endTiming = (start, options) => {
29
15
  const name = typeof start === "string" ? start : start.name;
30
- console.log("Analytics.perfMarkEnd", name);
31
16
  performance.measure(name, {
32
17
  detail: options,
33
18
  start: name
@@ -51,10 +51,7 @@ class AppraisalService extends ScriptingObject {
51
51
  delete = () => {
52
52
  throw new Error("Not implemented");
53
53
  };
54
- log = async (message, level) => {
55
- console.log(message, level);
56
- return Promise.resolve();
57
- };
54
+ log = async (_message, _level) => Promise.resolve();
58
55
  unload = async () => {
59
56
  };
60
57
  }
@@ -1,4 +1,6 @@
1
- import { rest } from "msw";
1
+ import {
2
+ rest
3
+ } from "msw";
2
4
  import { readFile } from "fs/promises";
3
5
  import path from "node:path";
4
6
  import appConfig from "../app.config.json";
@@ -1,6 +1,72 @@
1
1
  import { readFile } from "fs/promises";
2
2
  import path from "node:path";
3
3
  import { logger as puiLogger, Console } from "@elliemae/pui-diagnostics";
4
+ import { ScriptingObject } from "@elliemae/microfe-common";
5
+ const getIframeWindow = (frame) => {
6
+ const view = frame.contentDocument?.defaultView;
7
+ if (!view) {
8
+ throw new Error("iframe content window is not available");
9
+ }
10
+ return view;
11
+ };
12
+ const getEmuiApps = (emui, appId) => {
13
+ const entry = emui[appId];
14
+ if (Array.isArray(entry)) return entry;
15
+ return entry ? [entry] : [];
16
+ };
17
+ const setEmuiAppEntry = (emui, appId, entry) => {
18
+ emui[appId] = entry;
19
+ };
20
+ const clearWindowEmui = () => {
21
+ Reflect.deleteProperty(window, "emui");
22
+ };
23
+ const createTestModuleSO = () => {
24
+ const moduleSO = new ScriptingObject("module");
25
+ Object.defineProperty(moduleSO, "getParameters", {
26
+ value: () => Promise.resolve({ moduleId: "urn:test", homeRoute: "/test" }),
27
+ enumerable: true
28
+ });
29
+ return moduleSO;
30
+ };
31
+ const expectInitHistoryShape = (history) => {
32
+ expect(history).toBeDefined();
33
+ expect(history?.action).toBe("POP");
34
+ expect(typeof history?.push).toBe("function");
35
+ expect(typeof history?.replace).toBe("function");
36
+ };
37
+ const expectInitThemeShape = (theme) => {
38
+ expect(theme).toBeDefined();
39
+ expect(theme?.breakpoints).toBeDefined();
40
+ expect(theme?.colors).toBeDefined();
41
+ expect(typeof theme?.media.large).toBe("function");
42
+ expect(typeof theme?.media.medium).toBe("function");
43
+ };
44
+ const expectInitLoggerShape = (initLogger) => {
45
+ expect(initLogger).toBeDefined();
46
+ expect(typeof initLogger?.audit).toBe("function");
47
+ expect(typeof initLogger?.debug).toBe("function");
48
+ expect(typeof initLogger?.error).toBe("function");
49
+ };
50
+ const snapshotInitOptionsPayload = (initOptions) => ({
51
+ ...initOptions,
52
+ logger: void 0,
53
+ history: initOptions.history ? {
54
+ action: initOptions.history.action,
55
+ location: initOptions.history.location
56
+ } : void 0,
57
+ theme: initOptions.theme ? {
58
+ breakpoints: initOptions.theme.breakpoints,
59
+ colors: initOptions.theme.colors,
60
+ fontSizes: initOptions.theme.fontSizes,
61
+ fontWeights: initOptions.theme.fontWeights,
62
+ fonts: initOptions.theme.fonts,
63
+ letterSpacings: initOptions.theme.letterSpacings,
64
+ lineHeights: initOptions.theme.lineHeights,
65
+ shadows: initOptions.theme.shadows,
66
+ space: initOptions.theme.space,
67
+ zIndex: initOptions.theme.zIndex
68
+ } : void 0
69
+ });
4
70
  const getMajorMinorVersion = (version) => version.split(".").slice(0, 2).join(".");
5
71
  const sendJS = async (res, ctx, filePath) => {
6
72
  const fileContent = await readFile(path.join(__dirname, filePath), "utf-8");
@@ -25,9 +91,18 @@ const logger = puiLogger({
25
91
  appName: "MicroFE Tests"
26
92
  });
27
93
  export {
94
+ clearWindowEmui,
95
+ createTestModuleSO,
96
+ expectInitHistoryShape,
97
+ expectInitLoggerShape,
98
+ expectInitThemeShape,
99
+ getEmuiApps,
100
+ getIframeWindow,
28
101
  getMajorMinorVersion,
29
102
  logger,
30
103
  releaseJSThread,
31
104
  sendJS,
32
- sendJSText
105
+ sendJSText,
106
+ setEmuiAppEntry,
107
+ snapshotInitOptionsPayload
33
108
  };
@@ -3,7 +3,7 @@ const getWindow = () => {
3
3
  try {
4
4
  window.parent.document;
5
5
  return window.parent;
6
- } catch (err) {
6
+ } catch {
7
7
  return window;
8
8
  }
9
9
  };
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>AppBridge E2E — Comprehensive Host Test</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script src="https://cdn.mortgagetech.q1.ice.com/pui-diagnostics@3"></script><script defer="defer" src="js/emuiAppBridge.57ee9e3892a5a9c5af74.js"></script></head><body class="bg-gray-50"><header class="bg-indigo-600 text-white px-4 py-3 flex items-center justify-between"><h1 class="text-lg font-semibold">AppBridge E2E — Comprehensive Host Test</h1><a href="./e2e-index.html" class="text-indigo-200 hover:text-white text-sm">&larr; Back to dashboard</a></header><main class="mx-auto max-w-7xl px-4 py-4"><div class="bg-blue-50 border border-blue-200 rounded-md p-3 mb-4"><h2 class="text-sm font-bold text-blue-900 mb-1">How to Use This Page</h2><ol class="text-xs text-blue-800 list-decimal ml-4 space-y-1"><li>Wait for <strong>"E2E Host ready"</strong> in the Event Log.</li><li>Use buttons in each section to test AppBridge features.</li><li>Check Event Log and result panels for expected output.</li><li>Work through the Verification Checklist at the bottom.</li></ol></div><div class="grid grid-cols-3 gap-4"><div class="col-span-2 space-y-4"><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">App Loading</h2><div class="flex flex-wrap gap-2"><button data-testid="btn-open-app" id="btnOpenApp" class="rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700">Open App (pricingservice)</button> <button data-testid="btn-open-credit" id="btnOpenCredit" class="rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700">Open App (creditservice)</button> <button data-testid="btn-open-validation" id="btnOpenValidation" class="rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700">Open App (loanvalidation)</button> <button data-testid="btn-open-with-metadata" id="btnOpenWithMetadata" class="rounded bg-purple-600 px-3 py-1 text-xs text-white hover:bg-purple-700">Open App with Metadata</button> <button data-testid="btn-open-e2e-guest" id="btnOpenE2EGuest" class="rounded bg-teal-600 px-3 py-1 text-xs text-white hover:bg-teal-700">Open E2E Test Guest</button> <button data-testid="btn-open-nested-chain" id="btnOpenNestedChain" class="rounded bg-orange-600 px-3 py-1 text-xs text-white hover:bg-orange-700">Open Nested Chain (A→B→C)</button></div><p class="text-xs text-gray-400 mt-1"><strong>Expected:</strong> App loads into the container below. Log shows "openApp" succeeded. The E2E Test Guest provides interactive buttons to test guest→host communication. The Nested Chain (A→B→C) opens an intermediate that clones Loan and re-exposes it to a grandchild — use C's buttons to verify callChain propagation on Host A.</p></div><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">Scripting Object Management</h2><div class="flex flex-wrap gap-2"><button data-testid="btn-add-so" id="btnAddSO" class="rounded bg-green-600 px-3 py-1 text-xs text-white hover:bg-green-700">Add "Inventory" Object</button> <button data-testid="btn-remove-so" id="btnRemoveSO" class="rounded bg-red-600 px-3 py-1 text-xs text-white hover:bg-red-700">Remove "Inventory" Object</button> <button data-testid="btn-remove-all-so" id="btnRemoveAllSO" class="rounded bg-red-600 px-3 py-1 text-xs text-white hover:bg-red-700">Remove All Objects</button></div><p class="text-xs text-gray-400 mt-1"><strong>Expected:</strong> Add succeeds. Remove succeeds. Guest apps can/cannot call removed objects.</p></div><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">Event Dispatching</h2><div class="flex flex-wrap gap-2"><button data-testid="btn-dispatch-presave" id="btnDispatchPreSave" class="rounded bg-yellow-600 px-3 py-1 text-xs text-white hover:bg-yellow-700">Dispatch onPreSave (all apps)</button> <button data-testid="btn-dispatch-amount" id="btnDispatchAmount" class="rounded bg-yellow-600 px-3 py-1 text-xs text-white hover:bg-yellow-700">Dispatch onLoanAmountChanged</button> <button data-testid="btn-dispatch-term" id="btnDispatchTerm" class="rounded bg-yellow-600 px-3 py-1 text-xs text-white hover:bg-yellow-700">Dispatch onLoanTermChanged</button></div><div data-testid="dispatch-result" id="dispatchResult" class="mt-2 text-xs bg-gray-100 rounded p-2 min-h-[40px]">Dispatch results appear here...</div></div><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">callContext (from last scripting object invocation)</h2><div class="grid grid-cols-2 gap-2"><div><h3 class="text-xs font-medium text-gray-500 mb-1">callContext.guest</h3><pre data-testid="call-context-guest" id="callContextGuest" class="text-xs bg-gray-100 rounded p-2 min-h-[30px] whitespace-pre-wrap">
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>AppBridge E2E — Comprehensive Host Test</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script src="https://cdn.mortgagetech.q1.ice.com/pui-diagnostics@3"></script><script defer="defer" src="js/emuiAppBridge.e4cfaa7d8c810b09c233.js"></script></head><body class="bg-gray-50"><header class="bg-indigo-600 text-white px-4 py-3 flex items-center justify-between"><h1 class="text-lg font-semibold">AppBridge E2E — Comprehensive Host Test</h1><a href="./e2e-index.html" class="text-indigo-200 hover:text-white text-sm">&larr; Back to dashboard</a></header><main class="mx-auto max-w-7xl px-4 py-4"><div class="bg-blue-50 border border-blue-200 rounded-md p-3 mb-4"><h2 class="text-sm font-bold text-blue-900 mb-1">How to Use This Page</h2><ol class="text-xs text-blue-800 list-decimal ml-4 space-y-1"><li>Wait for <strong>"E2E Host ready"</strong> in the Event Log.</li><li>Use buttons in each section to test AppBridge features.</li><li>Check Event Log and result panels for expected output.</li><li>Work through the Verification Checklist at the bottom.</li></ol></div><div class="grid grid-cols-3 gap-4"><div class="col-span-2 space-y-4"><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">App Loading</h2><div class="flex flex-wrap gap-2"><button data-testid="btn-open-app" id="btnOpenApp" class="rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700">Open App (pricingservice)</button> <button data-testid="btn-open-credit" id="btnOpenCredit" class="rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700">Open App (creditservice)</button> <button data-testid="btn-open-validation" id="btnOpenValidation" class="rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700">Open App (loanvalidation)</button> <button data-testid="btn-open-with-metadata" id="btnOpenWithMetadata" class="rounded bg-purple-600 px-3 py-1 text-xs text-white hover:bg-purple-700">Open App with Metadata</button> <button data-testid="btn-open-e2e-guest" id="btnOpenE2EGuest" class="rounded bg-teal-600 px-3 py-1 text-xs text-white hover:bg-teal-700">Open E2E Test Guest</button> <button data-testid="btn-open-nested-chain" id="btnOpenNestedChain" class="rounded bg-orange-600 px-3 py-1 text-xs text-white hover:bg-orange-700">Open Nested Chain (A→B→C)</button></div><p class="text-xs text-gray-400 mt-1"><strong>Expected:</strong> App loads into the container below. Log shows "openApp" succeeded. The E2E Test Guest provides interactive buttons to test guest→host communication. The Nested Chain (A→B→C) opens an intermediate that clones Loan and re-exposes it to a grandchild — use C's buttons to verify callChain propagation on Host A.</p></div><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">Scripting Object Management</h2><div class="flex flex-wrap gap-2"><button data-testid="btn-add-so" id="btnAddSO" class="rounded bg-green-600 px-3 py-1 text-xs text-white hover:bg-green-700">Add "Inventory" Object</button> <button data-testid="btn-remove-so" id="btnRemoveSO" class="rounded bg-red-600 px-3 py-1 text-xs text-white hover:bg-red-700">Remove "Inventory" Object</button> <button data-testid="btn-remove-all-so" id="btnRemoveAllSO" class="rounded bg-red-600 px-3 py-1 text-xs text-white hover:bg-red-700">Remove All Objects</button></div><p class="text-xs text-gray-400 mt-1"><strong>Expected:</strong> Add succeeds. Remove succeeds. Guest apps can/cannot call removed objects.</p></div><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">Event Dispatching</h2><div class="flex flex-wrap gap-2"><button data-testid="btn-dispatch-presave" id="btnDispatchPreSave" class="rounded bg-yellow-600 px-3 py-1 text-xs text-white hover:bg-yellow-700">Dispatch onPreSave (all apps)</button> <button data-testid="btn-dispatch-amount" id="btnDispatchAmount" class="rounded bg-yellow-600 px-3 py-1 text-xs text-white hover:bg-yellow-700">Dispatch onLoanAmountChanged</button> <button data-testid="btn-dispatch-term" id="btnDispatchTerm" class="rounded bg-yellow-600 px-3 py-1 text-xs text-white hover:bg-yellow-700">Dispatch onLoanTermChanged</button></div><div data-testid="dispatch-result" id="dispatchResult" class="mt-2 text-xs bg-gray-100 rounded p-2 min-h-[40px]">Dispatch results appear here...</div></div><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">callContext (from last scripting object invocation)</h2><div class="grid grid-cols-2 gap-2"><div><h3 class="text-xs font-medium text-gray-500 mb-1">callContext.guest</h3><pre data-testid="call-context-guest" id="callContextGuest" class="text-xs bg-gray-100 rounded p-2 min-h-[30px] whitespace-pre-wrap">
2
2
  Waiting for invocation...</pre></div><div><h3 class="text-xs font-medium text-gray-500 mb-1">callContext.callChain</h3><pre data-testid="call-context-chain" id="callContextChain" class="text-xs bg-gray-100 rounded p-2 min-h-[30px] whitespace-pre-wrap">
3
3
  Waiting for invocation...</pre></div></div></div><div class="bg-white rounded-lg shadow p-4"><h2 class="text-sm font-semibold text-gray-700 mb-2">App Lifecycle</h2><div class="flex flex-wrap gap-2"><button data-testid="btn-close-app" id="btnCloseApp" class="rounded bg-red-600 px-3 py-1 text-xs text-white hover:bg-red-700">Close First App</button> <button data-testid="btn-close-all" id="btnCloseAll" class="rounded bg-red-800 px-3 py-1 text-xs text-white hover:bg-red-900">Close All Apps</button> <button data-testid="btn-list-apps" id="btnListApps" class="rounded bg-gray-600 px-3 py-1 text-xs text-white hover:bg-gray-700">List Apps</button></div><pre data-testid="app-list" id="appList" class="mt-2 text-xs bg-gray-100 rounded p-2 min-h-[30px] whitespace-pre-wrap">
4
4
  (no apps)</pre></div></div><div class="space-y-4"><div class="bg-white rounded-lg shadow p-3"><h2 class="text-sm font-semibold text-gray-700 mb-2">Guest App Container</h2><div data-testid="app-container" id="appContainer" class="border-2 border-dashed border-indigo-300 rounded-lg" style="height:700px;overflow:auto"></div></div><div class="bg-white rounded-lg shadow p-3"><div class="flex justify-between items-center mb-2"><h2 class="text-sm font-semibold text-gray-700">Event Log</h2><button data-testid="btn-clear-log" id="btnClearLog" class="rounded bg-gray-200 px-2 py-0.5 text-xs text-gray-600 hover:bg-gray-300">Clear</button></div><div data-testid="event-log" id="eventLog" class="text-xs bg-gray-100 rounded p-2 min-h-[200px] max-h-[400px] overflow-y-auto"></div></div></div></div><div class="bg-gray-100 border border-gray-300 rounded-md p-3 mt-4"><h2 class="text-sm font-bold text-gray-800 mb-2">Verification Checklist</h2><div class="grid grid-cols-2 gap-2 text-xs"><label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-APP-01:</strong> openApp loads pricingservice into container, log shows mounted</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-APP-02:</strong> openApp loads creditservice into container</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-APP-03:</strong> openApp loads loanvalidation into container</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-APP-04:</strong> openApp with metadata — metadata stored for callChain</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-SO-01:</strong> Loan object registered on init (guest apps can call getLoanDetails)</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-SO-02:</strong> Add Inventory object succeeds</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-SO-03:</strong> Remove Inventory object succeeds</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-SO-04:</strong> removeAllScriptingObjects clears everything</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-SO-05:</strong> callContext.guest populated when guest invokes scripting object method</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-SO-06:</strong> Loan.getLoanDetails returns expected loan data</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-EVT-01:</strong> Dispatch onPreSave reaches all subscribed apps, results returned</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-EVT-02:</strong> Dispatch onLoanAmountChanged reaches subscribed apps</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-EVT-03:</strong> Dispatch onLoanTermChanged reaches subscribed apps</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-LIFE-01:</strong> closeApp removes first app from list</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-LIFE-02:</strong> List Apps shows all active apps with instanceIds</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-LIFE-03:</strong> closeAllApps removes all apps</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-LIFE-04:</strong> No console errors during any operation</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-META-01:</strong> openApp with metadata — callContext.callChain contains metadata when guest invokes cloned object</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-01:</strong> Guest getObject("Loan") returns proxy with expected methods (getLoanDetails, setCreditScore)</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-02:</strong> Guest Loan.getLoanDetails() returns loan data, host callContext.guest shows e2etestguest</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-03:</strong> Guest Loan.setCreditScore(800) returns {updated: true}, host callContext updates</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-04:</strong> Guest getObject("Inventory") returns proxy after host adds it; null before</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-05:</strong> Guest Inventory.getItems() returns item array</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-06:</strong> Guest getObject("NonExistent") returns null</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-07:</strong> Guest subscribes to onPreSave — receives event when host dispatches</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-08:</strong> Guest subscribes to onLoanAmountChanged — receives event when host dispatches</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-GUEST-09:</strong> Guest unsubscribe all — no more events received after unsubscribe</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-CHAIN-01:</strong> Open Nested Chain — Intermediate B loads, shows "CAppBridge B initialized"</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-CHAIN-02:</strong> Grandchild C (E2E Test Guest) appears inside Intermediate B</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-CHAIN-03:</strong> In C: getObject("Loan") → Loan.getLoanDetails() → Host A shows callContext.guest = e2eintermediateguest, callChain = [{id: "e2etestguest", metadata: {role: "grandchild", ...}}]</span></label> <label class="flex items-start gap-2"><input type="checkbox" class="mt-0.5"/> <span><strong>TC-CHAIN-04:</strong> In C: Loan.setCreditScore(800) → Host A callChain includes e2etestguest with metadata from B</span></label></div></div></main><script src="./e2e-host.js" type="module"></script></body></html>
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>AppBridge E2E Test Suite</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script defer="defer" src="js/emuiAppBridge.57ee9e3892a5a9c5af74.js"></script></head><body class="bg-gray-50"><header class="bg-gray-900 text-white px-6 py-4"><h1 class="text-xl font-bold">AppBridge End-to-End Test Suite</h1><p class="text-sm text-gray-400 mt-1">Comprehensive blackbox tests for AppBridge (in-process micro-frontend framework). Each page includes test steps, expected values, and a verification checklist.</p></header><main class="mx-auto max-w-5xl px-6 py-6"><section class="mb-6 bg-yellow-50 border border-yellow-200 rounded-lg p-4"><h2 class="text-sm font-semibold text-yellow-800 mb-2">Setup Instructions</h2><ol class="text-xs text-yellow-700 list-decimal ml-4 space-y-1"><li>Install dependencies: <code class="bg-yellow-100 px-1 rounded">pnpm install</code></li><li>Start AppBridge dev server: <code class="bg-yellow-100 px-1 rounded">cd libs/app-bridge && pnpm start</code> (default port 3000)</li><li>Open <code class="bg-yellow-100 px-1 rounded">http://localhost:3000/e2e-index.html</code> in the browser</li><li>Each test page has <code class="bg-yellow-100 px-1 rounded">data-testid</code> attributes for Playwright/Cypress selectors</li></ol></section><section class="mb-6"><h2 class="text-lg font-semibold text-gray-800 border-b pb-1 mb-3">1. Core AppBridge Host Tests</h2><div class="grid grid-cols-1 md:grid-cols-2 gap-3"><a href="./e2e-host.html" data-testid="link-e2e-host" class="block bg-white rounded-lg shadow p-4 hover:shadow-md transition"><h3 class="font-medium text-indigo-700">Comprehensive E2E Host</h3><p class="text-xs text-gray-500 mt-1">All host scenarios: openApp, closeApp, scripting objects, events, lifecycle, metadata, callContext.</p><p class="text-xs text-gray-400 mt-2"><strong>What to verify:</strong> Apps open and mount into containers. Scripting objects can be added/removed/invoked with correct callContext. Events reach subscribed apps. closeApp/closeAllApps cleans up properly.</p><div class="mt-2 text-xs text-gray-400"><strong>Test Cases:</strong> TC-APP-01..04 &bull; TC-SO-01..06 &bull; TC-EVT-01..03 &bull; TC-LIFE-01..04 &bull; TC-META-01</div></a><a href="./index.html" data-testid="link-main-demo" class="block bg-white rounded-lg shadow p-4 hover:shadow-md transition"><h3 class="font-medium text-indigo-700">Main Demo App</h3><p class="text-xs text-gray-500 mt-1">Original Loan Application demo with credit, pricing, and loan validation micro-apps.</p><p class="text-xs text-gray-400 mt-2"><strong>What to verify:</strong> Loan form data flows to guest apps. Events (onLoanAmountChanged, etc.) update guest UIs. Credit score updates from guest. Save dispatches onPreSave with feedback.</p></a></div></section></main></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>AppBridge E2E Test Suite</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script defer="defer" src="js/emuiAppBridge.e4cfaa7d8c810b09c233.js"></script></head><body class="bg-gray-50"><header class="bg-gray-900 text-white px-6 py-4"><h1 class="text-xl font-bold">AppBridge End-to-End Test Suite</h1><p class="text-sm text-gray-400 mt-1">Comprehensive blackbox tests for AppBridge (in-process micro-frontend framework). Each page includes test steps, expected values, and a verification checklist.</p></header><main class="mx-auto max-w-5xl px-6 py-6"><section class="mb-6 bg-yellow-50 border border-yellow-200 rounded-lg p-4"><h2 class="text-sm font-semibold text-yellow-800 mb-2">Setup Instructions</h2><ol class="text-xs text-yellow-700 list-decimal ml-4 space-y-1"><li>Install dependencies: <code class="bg-yellow-100 px-1 rounded">pnpm install</code></li><li>Start AppBridge dev server: <code class="bg-yellow-100 px-1 rounded">cd libs/app-bridge && pnpm start</code> (default port 3000)</li><li>Open <code class="bg-yellow-100 px-1 rounded">http://localhost:3000/e2e-index.html</code> in the browser</li><li>Each test page has <code class="bg-yellow-100 px-1 rounded">data-testid</code> attributes for Playwright/Cypress selectors</li></ol></section><section class="mb-6"><h2 class="text-lg font-semibold text-gray-800 border-b pb-1 mb-3">1. Core AppBridge Host Tests</h2><div class="grid grid-cols-1 md:grid-cols-2 gap-3"><a href="./e2e-host.html" data-testid="link-e2e-host" class="block bg-white rounded-lg shadow p-4 hover:shadow-md transition"><h3 class="font-medium text-indigo-700">Comprehensive E2E Host</h3><p class="text-xs text-gray-500 mt-1">All host scenarios: openApp, closeApp, scripting objects, events, lifecycle, metadata, callContext.</p><p class="text-xs text-gray-400 mt-2"><strong>What to verify:</strong> Apps open and mount into containers. Scripting objects can be added/removed/invoked with correct callContext. Events reach subscribed apps. closeApp/closeAllApps cleans up properly.</p><div class="mt-2 text-xs text-gray-400"><strong>Test Cases:</strong> TC-APP-01..04 &bull; TC-SO-01..06 &bull; TC-EVT-01..03 &bull; TC-LIFE-01..04 &bull; TC-META-01</div></a><a href="./index.html" data-testid="link-main-demo" class="block bg-white rounded-lg shadow p-4 hover:shadow-md transition"><h3 class="font-medium text-indigo-700">Main Demo App</h3><p class="text-xs text-gray-500 mt-1">Original Loan Application demo with credit, pricing, and loan validation micro-apps.</p><p class="text-xs text-gray-400 mt-2"><strong>What to verify:</strong> Loan form data flows to guest apps. Events (onLoanAmountChanged, etc.) update guest UIs. Credit score updates from guest. Save dispatches onPreSave with feedback.</p></a></div></section></main></body></html>
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="mobile-web-app-capable" content="yes"/><link rel="icon" href="/favicon.ico"/><title>Application</title><style nonce="__CSP_NONCE__">.full-width{width:100%}.full-height{height:100%}</style><script defer="defer" src="js/emuiAppBridge.57ee9e3892a5a9c5af74.js"></script></head><body class="full-width full-height"><noscript>If you're seeing this message, that means <strong>JavaScript has been disabled on your browser</strong>, please <strong>enable JS</strong> to make this app work.</noscript><div id="pui-app-container-" class="full-width full-height"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="mobile-web-app-capable" content="yes"/><link rel="icon" href="/favicon.ico"/><title>Application</title><style nonce="__CSP_NONCE__">.full-width{width:100%}.full-height{height:100%}</style><script defer="defer" src="js/emuiAppBridge.e4cfaa7d8c810b09c233.js"></script></head><body class="full-width full-height"><noscript>If you're seeing this message, that means <strong>JavaScript has been disabled on your browser</strong>, please <strong>enable JS</strong> to make this app work.</noscript><div id="pui-app-container-" class="full-width full-height"></div></body></html>
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Host</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script src="https://cdn.mortgagetech.q1.ice.com/pui-diagnostics@3"></script><script defer="defer" src="js/emuiAppBridge.57ee9e3892a5a9c5af74.js"></script></head><body><header class="bg-indigo-300 h-10 flex place-items-center justify-between"><div class="px-2">ICE Mortgage Product</div><nav class="flex gap-3 px-2 text-sm"><a href="./e2e-index.html" class="text-indigo-800 hover:text-indigo-950 font-medium">E2E Test Suite</a> <a href="./e2e-host.html" class="text-indigo-800 hover:text-indigo-950 font-medium">E2E Host</a></nav></header><main class="mx-auto max-w-7xl px-2 sm:px-6 lg:px-8"><div class="min-w-0 flex-1 mt-4"><h1 class="text-2xl font-bold leading-7 text-gray-900 sm:truncate sm:text-3xl sm:tracking-tight">Loan Application</h1></div><div id="successFeedback" class="hidden rounded-md bg-green-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"/></svg></div><div class="ml-3"><p class="text-sm font-medium text-green-800">Loan Saved Successfully</p></div></div></div><div id="errorFeedback" class="hidden rounded-md bg-red-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z" clip-rule="evenodd"/></svg></div><div class="ml-3"><h3 class="text-sm font-medium text-red-800">Credit Score is not meeting the requirement</h3></div></div></div><div class="mt-2 sm:grid sm:grid-cols-2 sm:gap-2"><form class="px-2 py-2 space-y-8 divide-y divide-gray-200 bg-gray-50"><div class="space-y-8 divide-y divide-gray-200 sm:space-y-5"><div class="space-y-6 sm:space-y-5"><div><h3 class="text-lg font-medium leading-6 text-gray-900">Personal Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="firstName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">First name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="firstName" id="firstName" autocomplete="given-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="John" placeholder="John"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="lastName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Last name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="lastName" id="lastName" autocomplete="family-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="Doe" placeholder="Doe"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="ssn" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">SSN</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="ssn" id="ssn" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="123456789" placeholder="123456789"/></div></div></div><div><h3 class="text-lg font-medium leading-6 text-gray-900">Loan Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="amount" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Amount</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="amount" id="amount" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="500000" placeholder="500000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="Term" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Term (years)</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="term" id="term" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="30" placeholder="30"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="downPayment" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Down Payment</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="downPayment" id="downPayment" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="50000" placeholder="50000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="creditScore" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Credit Score</label><div class="mt-1 sm:mt-0"><output id="creditScore" class="block w-full max-w-lg pl-2 pt-2 sm:max-w-xs sm:text-sm">NA</output></div><div class="mt-1 sm:mt-0"><button id="getCreditScore" type="button" class="inline-flex items-center rounded-full border border-transparent bg-indigo-600 p-1 text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"/></svg></button></div></div></div></div></div><button id="saveLoan" type="button" class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Save</button></form><div id="aside-container" class="flex flex-col gap-4 items-start mt-4 border-2 p-2 rounded-lg border-dashed border-cyan-300 sm:mt-0"></div></div><div id="bottom-container" class="flex flex-col gap-4 items-start mt-4 p-2 sm:mt-0"></div></main><script src="./init.js" type="module"></script></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Host</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script src="https://cdn.mortgagetech.q1.ice.com/pui-diagnostics@3"></script><script defer="defer" src="js/emuiAppBridge.e4cfaa7d8c810b09c233.js"></script></head><body><header class="bg-indigo-300 h-10 flex place-items-center justify-between"><div class="px-2">ICE Mortgage Product</div><nav class="flex gap-3 px-2 text-sm"><a href="./e2e-index.html" class="text-indigo-800 hover:text-indigo-950 font-medium">E2E Test Suite</a> <a href="./e2e-host.html" class="text-indigo-800 hover:text-indigo-950 font-medium">E2E Host</a></nav></header><main class="mx-auto max-w-7xl px-2 sm:px-6 lg:px-8"><div class="min-w-0 flex-1 mt-4"><h1 class="text-2xl font-bold leading-7 text-gray-900 sm:truncate sm:text-3xl sm:tracking-tight">Loan Application</h1></div><div id="successFeedback" class="hidden rounded-md bg-green-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"/></svg></div><div class="ml-3"><p class="text-sm font-medium text-green-800">Loan Saved Successfully</p></div></div></div><div id="errorFeedback" class="hidden rounded-md bg-red-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z" clip-rule="evenodd"/></svg></div><div class="ml-3"><h3 class="text-sm font-medium text-red-800">Credit Score is not meeting the requirement</h3></div></div></div><div class="mt-2 sm:grid sm:grid-cols-2 sm:gap-2"><form class="px-2 py-2 space-y-8 divide-y divide-gray-200 bg-gray-50"><div class="space-y-8 divide-y divide-gray-200 sm:space-y-5"><div class="space-y-6 sm:space-y-5"><div><h3 class="text-lg font-medium leading-6 text-gray-900">Personal Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="firstName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">First name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="firstName" id="firstName" autocomplete="given-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="John" placeholder="John"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="lastName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Last name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="lastName" id="lastName" autocomplete="family-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="Doe" placeholder="Doe"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="ssn" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">SSN</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="ssn" id="ssn" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="123456789" placeholder="123456789"/></div></div></div><div><h3 class="text-lg font-medium leading-6 text-gray-900">Loan Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="amount" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Amount</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="amount" id="amount" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="500000" placeholder="500000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="Term" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Term (years)</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="term" id="term" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="30" placeholder="30"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="downPayment" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Down Payment</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="downPayment" id="downPayment" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="50000" placeholder="50000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="creditScore" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Credit Score</label><div class="mt-1 sm:mt-0"><output id="creditScore" class="block w-full max-w-lg pl-2 pt-2 sm:max-w-xs sm:text-sm">NA</output></div><div class="mt-1 sm:mt-0"><button id="getCreditScore" type="button" class="inline-flex items-center rounded-full border border-transparent bg-indigo-600 p-1 text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"/></svg></button></div></div></div></div></div><button id="saveLoan" type="button" class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Save</button></form><div id="aside-container" class="flex flex-col gap-4 items-start mt-4 border-2 p-2 rounded-lg border-dashed border-cyan-300 sm:mt-0"></div></div><div id="bottom-container" class="flex flex-col gap-4 items-start mt-4 p-2 sm:mt-0"></div></main><script src="./init.js" type="module"></script></body></html>
@@ -0,0 +1,12 @@
1
+ (function(Oe,Ht){typeof exports=="object"&&typeof module=="object"?module.exports=Ht(require("React")):typeof define=="function"&&define.amd?define(["React"],Ht):typeof exports=="object"?exports.ice=Ht(require("React")):Oe.ice=Ht(Oe.React)})(globalThis,Dn=>(()=>{var Oe={8054(i,d,r){var a=r(5592),c=r(907),l=a(c,"DataView");i.exports=l},3219(i,d,r){var a=r(2130),c=r(1924),l=r(4743),u=r(1755),f=r(5203);function g(m){var b=-1,w=m==null?0:m.length;for(this.clear();++b<w;){var S=m[b];this.set(S[0],S[1])}}g.prototype.clear=a,g.prototype.delete=c,g.prototype.get=l,g.prototype.has=u,g.prototype.set=f,i.exports=g},7321(i,d,r){var a=r(3044),c=r(4066),l=r(8461),u=r(4417),f=r(2777);function g(m){var b=-1,w=m==null?0:m.length;for(this.clear();++b<w;){var S=m[b];this.set(S[0],S[1])}}g.prototype.clear=a,g.prototype.delete=c,g.prototype.get=l,g.prototype.has=u,g.prototype.set=f,i.exports=g},2565(i,d,r){var a=r(5592),c=r(907),l=a(c,"Map");i.exports=l},111(i,d,r){var a=r(4614),c=r(9504),l=r(9251),u=r(5791),f=r(1511);function g(m){var b=-1,w=m==null?0:m.length;for(this.clear();++b<w;){var S=m[b];this.set(S[0],S[1])}}g.prototype.clear=a,g.prototype.delete=c,g.prototype.get=l,g.prototype.has=u,g.prototype.set=f,i.exports=g},8246(i,d,r){var a=r(5592),c=r(907),l=a(c,"Promise");i.exports=l},4099(i,d,r){var a=r(5592),c=r(907),l=a(c,"Set");i.exports=l},5963(i,d,r){var a=r(7321),c=r(1306),l=r(3180),u=r(5247),f=r(2835),g=r(9179);function m(b){var w=this.__data__=new a(b);this.size=w.size}m.prototype.clear=c,m.prototype.delete=l,m.prototype.get=u,m.prototype.has=f,m.prototype.set=g,i.exports=m},7759(i,d,r){var a=r(907),c=a.Symbol;i.exports=c},9386(i,d,r){var a=r(907),c=a.Uint8Array;i.exports=c},6221(i,d,r){var a=r(5592),c=r(907),l=a(c,"WeakMap");i.exports=l},6047(i){function d(r,a,c){switch(c.length){case 0:return r.call(a);case 1:return r.call(a,c[0]);case 2:return r.call(a,c[0],c[1]);case 3:return r.call(a,c[0],c[1],c[2])}return r.apply(a,c)}i.exports=d},6259(i){function d(r,a){for(var c=-1,l=r==null?0:r.length;++c<l&&a(r[c],c,r)!==!1;);return r}i.exports=d},1840(i){function d(r,a){for(var c=-1,l=r==null?0:r.length,u=0,f=[];++c<l;){var g=r[c];a(g,c,r)&&(f[u++]=g)}return f}i.exports=d},3737(i,d,r){var a=r(5562),c=r(1750),l=r(2619),u=r(3446),f=r(2159),g=r(3133),m=Object.prototype,b=m.hasOwnProperty;function w(S,O){var C=l(S),P=!C&&c(S),N=!C&&!P&&u(S),$=!C&&!P&&!N&&g(S),z=C||P||N||$,Y=z?a(S.length,String):[],ut=Y.length;for(var L in S)(O||b.call(S,L))&&!(z&&(L=="length"||N&&(L=="offset"||L=="parent")||$&&(L=="buffer"||L=="byteLength"||L=="byteOffset")||f(L,ut)))&&Y.push(L);return Y}i.exports=w},5862(i){function d(r,a){for(var c=-1,l=r==null?0:r.length,u=Array(l);++c<l;)u[c]=a(r[c],c,r);return u}i.exports=d},9130(i){function d(r,a){for(var c=-1,l=a.length,u=r.length;++c<l;)r[u+c]=a[c];return r}i.exports=d},8971(i,d,r){var a=r(3706),c=r(9506);function l(u,f,g){(g!==void 0&&!c(u[f],g)||g===void 0&&!(f in u))&&a(u,f,g)}i.exports=l},3853(i,d,r){var a=r(3706),c=r(9506),l=Object.prototype,u=l.hasOwnProperty;function f(g,m,b){var w=g[m];(!(u.call(g,m)&&c(w,b))||b===void 0&&!(m in g))&&a(g,m,b)}i.exports=f},7831(i,d,r){var a=r(9506);function c(l,u){for(var f=l.length;f--;)if(a(l[f][0],u))return f;return-1}i.exports=c},2183(i,d,r){var a=r(7145),c=r(2096);function l(u,f){return u&&a(f,c(f),u)}i.exports=l},4076(i,d,r){var a=r(7145),c=r(7999);function l(u,f){return u&&a(f,c(f),u)}i.exports=l},3706(i,d,r){var a=r(4665);function c(l,u,f){u=="__proto__"&&a?a(l,u,{configurable:!0,enumerable:!0,value:f,writable:!0}):l[u]=f}i.exports=c},6057(i,d,r){var a=r(5963),c=r(6259),l=r(3853),u=r(2183),f=r(4076),g=r(5196),m=r(3549),b=r(6573),w=r(9934),S=r(6280),O=r(6839),C=r(1663),P=r(143),N=r(7265),$=r(8879),z=r(2619),Y=r(3446),ut=r(7884),L=r(9323),ft=r(5070),X=r(2096),rt=r(7999),ct=1,Z=2,J=4,tt="[object Arguments]",_="[object Array]",M="[object Boolean]",st="[object Date]",B="[object Error]",dt="[object Function]",$t="[object GeneratorFunction]",qt="[object Map]",Ze="[object Number]",Te="[object Object]",ot="[object RegExp]",Ce="[object Set]",Un="[object String]",zn="[object Symbol]",Qe="[object WeakMap]",_e="[object ArrayBuffer]",Pe="[object DataView]",te="[object Float32Array]",je="[object Float64Array]",Bn="[object Int8Array]",kn="[object Int16Array]",qe="[object Int32Array]",tn="[object Uint8Array]",Ie="[object Uint8ClampedArray]",en="[object Uint16Array]",$e="[object Uint32Array]",H={};H[tt]=H[_]=H[_e]=H[Pe]=H[M]=H[st]=H[te]=H[je]=H[Bn]=H[kn]=H[qe]=H[qt]=H[Ze]=H[Te]=H[ot]=H[Ce]=H[Un]=H[zn]=H[tn]=H[Ie]=H[en]=H[$e]=!0,H[B]=H[dt]=H[Qe]=!1;function ee(k,Nt,Mt,Gn,wt,jt){var pt,Ot=Nt&ct,W=Nt&Z,Wt=Nt&J;if(Mt&&(pt=wt?Mt(k,Gn,wt,jt):Mt(k)),pt!==void 0)return pt;if(!L(k))return k;var U=z(k);if(U){if(pt=P(k),!Ot)return m(k,pt)}else{var Rt=C(k),Kt=Rt==dt||Rt==$t;if(Y(k))return g(k,Ot);if(Rt==Te||Rt==tt||Kt&&!wt){if(pt=W||Kt?{}:$(k),!Ot)return W?w(k,f(pt,k)):b(k,u(pt,k))}else{if(!H[Rt])return wt?k:{};pt=N(k,Rt,Ot)}}jt||(jt=new a);var ne=jt.get(k);if(ne)return ne;jt.set(k,pt),ft(k)?k.forEach(function(It){pt.add(ee(It,Nt,Mt,It,k,jt))}):ut(k)&&k.forEach(function(It,Lt){pt.set(Lt,ee(It,Nt,Mt,Lt,k,jt))});var Vn=Wt?W?O:S:W?rt:X,nn=U?void 0:Vn(k);return c(nn||k,function(It,Lt){nn&&(Lt=It,It=k[Lt]),l(pt,Lt,ee(It,Nt,Mt,Lt,k,jt))}),pt}i.exports=ee},8514(i,d,r){var a=r(9323),c=Object.create,l=(function(){function u(){}return function(f){if(!a(f))return{};if(c)return c(f);u.prototype=f;var g=new u;return u.prototype=void 0,g}})();i.exports=l},5795(i,d,r){var a=r(3375),c=a();i.exports=c},3208(i,d,r){var a=r(2155),c=r(5155);function l(u,f){f=a(f,u);for(var g=0,m=f.length;u!=null&&g<m;)u=u[c(f[g++])];return g&&g==m?u:void 0}i.exports=l},1405(i,d,r){var a=r(9130),c=r(2619);function l(u,f,g){var m=f(u);return c(u)?m:a(m,g(u))}i.exports=l},1490(i,d,r){var a=r(7759),c=r(4817),l=r(7748),u="[object Null]",f="[object Undefined]",g=a?a.toStringTag:void 0;function m(b){return b==null?b===void 0?f:u:g&&g in Object(b)?c(b):l(b)}i.exports=m},2780(i){var d=Object.prototype,r=d.hasOwnProperty;function a(c,l){return c!=null&&r.call(c,l)}i.exports=a},2960(i,d,r){var a=r(1490),c=r(2292),l="[object Arguments]";function u(f){return c(f)&&a(f)==l}i.exports=u},9694(i,d,r){var a=r(1663),c=r(2292),l="[object Map]";function u(f){return c(f)&&a(f)==l}i.exports=u},4401(i,d,r){var a=r(860),c=r(2958),l=r(9323),u=r(8815),f=/[\\^$.*+?()[\]{}|]/g,g=/^\[object .+?Constructor\]$/,m=Function.prototype,b=Object.prototype,w=m.toString,S=b.hasOwnProperty,O=RegExp("^"+w.call(S).replace(f,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function C(P){if(!l(P)||c(P))return!1;var N=a(P)?O:g;return N.test(u(P))}i.exports=C},8172(i,d,r){var a=r(1663),c=r(2292),l="[object Set]";function u(f){return c(f)&&a(f)==l}i.exports=u},5283(i,d,r){var a=r(1490),c=r(5300),l=r(2292),u="[object Arguments]",f="[object Array]",g="[object Boolean]",m="[object Date]",b="[object Error]",w="[object Function]",S="[object Map]",O="[object Number]",C="[object Object]",P="[object RegExp]",N="[object Set]",$="[object String]",z="[object WeakMap]",Y="[object ArrayBuffer]",ut="[object DataView]",L="[object Float32Array]",ft="[object Float64Array]",X="[object Int8Array]",rt="[object Int16Array]",ct="[object Int32Array]",Z="[object Uint8Array]",J="[object Uint8ClampedArray]",tt="[object Uint16Array]",_="[object Uint32Array]",M={};M[L]=M[ft]=M[X]=M[rt]=M[ct]=M[Z]=M[J]=M[tt]=M[_]=!0,M[u]=M[f]=M[Y]=M[g]=M[ut]=M[m]=M[b]=M[w]=M[S]=M[O]=M[C]=M[P]=M[N]=M[$]=M[z]=!1;function st(B){return l(B)&&c(B.length)&&!!M[a(B)]}i.exports=st},2322(i,d,r){var a=r(8861),c=r(9692),l=Object.prototype,u=l.hasOwnProperty;function f(g){if(!a(g))return c(g);var m=[];for(var b in Object(g))u.call(g,b)&&b!="constructor"&&m.push(b);return m}i.exports=f},5045(i,d,r){var a=r(9323),c=r(8861),l=r(1779),u=Object.prototype,f=u.hasOwnProperty;function g(m){if(!a(m))return l(m);var b=c(m),w=[];for(var S in m)S=="constructor"&&(b||!f.call(m,S))||w.push(S);return w}i.exports=g},3912(i,d,r){var a=r(5963),c=r(8971),l=r(5795),u=r(8342),f=r(9323),g=r(7999),m=r(5760);function b(w,S,O,C,P){w!==S&&l(S,function(N,$){if(P||(P=new a),f(N))u(w,S,$,O,b,C,P);else{var z=C?C(m(w,$),N,$+"",w,S,P):void 0;z===void 0&&(z=N),c(w,$,z)}},g)}i.exports=b},8342(i,d,r){var a=r(8971),c=r(5196),l=r(5979),u=r(3549),f=r(8879),g=r(1750),m=r(2619),b=r(1891),w=r(3446),S=r(860),O=r(9323),C=r(1281),P=r(3133),N=r(5760),$=r(4514);function z(Y,ut,L,ft,X,rt,ct){var Z=N(Y,L),J=N(ut,L),tt=ct.get(J);if(tt){a(Y,L,tt);return}var _=rt?rt(Z,J,L+"",Y,ut,ct):void 0,M=_===void 0;if(M){var st=m(J),B=!st&&w(J),dt=!st&&!B&&P(J);_=J,st||B||dt?m(Z)?_=Z:b(Z)?_=u(Z):B?(M=!1,_=c(J,!0)):dt?(M=!1,_=l(J,!0)):_=[]:C(J)||g(J)?(_=Z,g(Z)?_=$(Z):(!O(Z)||S(Z))&&(_=f(J))):M=!1}M&&(ct.set(J,_),X(_,J,ft,rt,ct),ct.delete(J)),a(Y,L,_)}i.exports=z},6936(i,d,r){var a=r(4846),c=r(8619),l=r(9599);function u(f,g){return l(c(f,g,a),f+"")}i.exports=u},604(i,d,r){var a=r(3853),c=r(2155),l=r(2159),u=r(9323),f=r(5155);function g(m,b,w,S){if(!u(m))return m;b=c(b,m);for(var O=-1,C=b.length,P=C-1,N=m;N!=null&&++O<C;){var $=f(b[O]),z=w;if($==="__proto__"||$==="constructor"||$==="prototype")return m;if(O!=P){var Y=N[$];z=S?S(Y,$,N):void 0,z===void 0&&(z=u(Y)?Y:l(b[O+1])?[]:{})}a(N,$,z),N=N[$]}return m}i.exports=g},7680(i,d,r){var a=r(6148),c=r(4665),l=r(4846),u=c?function(f,g){return c(f,"toString",{configurable:!0,enumerable:!1,value:a(g),writable:!0})}:l;i.exports=u},5562(i){function d(r,a){for(var c=-1,l=Array(r);++c<r;)l[c]=a(c);return l}i.exports=d},1978(i,d,r){var a=r(7759),c=r(5862),l=r(2619),u=r(7964),f=1/0,g=a?a.prototype:void 0,m=g?g.toString:void 0;function b(w){if(typeof w=="string")return w;if(l(w))return c(w,b)+"";if(u(w))return m?m.call(w):"";var S=w+"";return S=="0"&&1/w==-f?"-0":S}i.exports=b},6(i,d,r){var a=r(5082),c=/^\s+/;function l(u){return u&&u.slice(0,a(u)+1).replace(c,"")}i.exports=l},1155(i){function d(r){return function(a){return r(a)}}i.exports=d},2155(i,d,r){var a=r(2619),c=r(5304),l=r(4352),u=r(7164);function f(g,m){return a(g)?g:c(g,m)?[g]:l(u(g))}i.exports=f},2859(i,d,r){var a=r(9386);function c(l){var u=new l.constructor(l.byteLength);return new a(u).set(new a(l)),u}i.exports=c},5196(i,d,r){i=r.nmd(i);var a=r(907),c=d&&!d.nodeType&&d,l=c&&!0&&i&&!i.nodeType&&i,u=l&&l.exports===c,f=u?a.Buffer:void 0,g=f?f.allocUnsafe:void 0;function m(b,w){if(w)return b.slice();var S=b.length,O=g?g(S):new b.constructor(S);return b.copy(O),O}i.exports=m},7795(i,d,r){var a=r(2859);function c(l,u){var f=u?a(l.buffer):l.buffer;return new l.constructor(f,l.byteOffset,l.byteLength)}i.exports=c},6899(i){var d=/\w*$/;function r(a){var c=new a.constructor(a.source,d.exec(a));return c.lastIndex=a.lastIndex,c}i.exports=r},4518(i,d,r){var a=r(7759),c=a?a.prototype:void 0,l=c?c.valueOf:void 0;function u(f){return l?Object(l.call(f)):{}}i.exports=u},5979(i,d,r){var a=r(2859);function c(l,u){var f=u?a(l.buffer):l.buffer;return new l.constructor(f,l.byteOffset,l.length)}i.exports=c},3549(i){function d(r,a){var c=-1,l=r.length;for(a||(a=Array(l));++c<l;)a[c]=r[c];return a}i.exports=d},7145(i,d,r){var a=r(3853),c=r(3706);function l(u,f,g,m){var b=!g;g||(g={});for(var w=-1,S=f.length;++w<S;){var O=f[w],C=m?m(g[O],u[O],O,g,u):void 0;C===void 0&&(C=u[O]),b?c(g,O,C):a(g,O,C)}return g}i.exports=l},6573(i,d,r){var a=r(7145),c=r(1454);function l(u,f){return a(u,c(u),f)}i.exports=l},9934(i,d,r){var a=r(7145),c=r(6649);function l(u,f){return a(u,c(u),f)}i.exports=l},3703(i,d,r){var a=r(907),c=a["__core-js_shared__"];i.exports=c},2917(i,d,r){var a=r(6936),c=r(9542);function l(u){return a(function(f,g){var m=-1,b=g.length,w=b>1?g[b-1]:void 0,S=b>2?g[2]:void 0;for(w=u.length>3&&typeof w=="function"?(b--,w):void 0,S&&c(g[0],g[1],S)&&(w=b<3?void 0:w,b=1),f=Object(f);++m<b;){var O=g[m];O&&u(f,O,m,w)}return f})}i.exports=l},3375(i){function d(r){return function(a,c,l){for(var u=-1,f=Object(a),g=l(a),m=g.length;m--;){var b=g[r?m:++u];if(c(f[b],b,f)===!1)break}return a}}i.exports=d},4665(i,d,r){var a=r(5592),c=(function(){try{var l=a(Object,"defineProperty");return l({},"",{}),l}catch{}})();i.exports=c},6710(i){var d=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis;i.exports=d},6280(i,d,r){var a=r(1405),c=r(1454),l=r(2096);function u(f){return a(f,l,c)}i.exports=u},6839(i,d,r){var a=r(1405),c=r(6649),l=r(7999);function u(f){return a(f,l,c)}i.exports=u},9257(i,d,r){var a=r(7500);function c(l,u){var f=l.__data__;return a(u)?f[typeof u=="string"?"string":"hash"]:f.map}i.exports=c},5592(i,d,r){var a=r(4401),c=r(2490);function l(u,f){var g=c(u,f);return a(g)?g:void 0}i.exports=l},553(i,d,r){var a=r(7937),c=a(Object.getPrototypeOf,Object);i.exports=c},4817(i,d,r){var a=r(7759),c=Object.prototype,l=c.hasOwnProperty,u=c.toString,f=a?a.toStringTag:void 0;function g(m){var b=l.call(m,f),w=m[f];try{m[f]=void 0;var S=!0}catch{}var O=u.call(m);return S&&(b?m[f]=w:delete m[f]),O}i.exports=g},1454(i,d,r){var a=r(1840),c=r(5615),l=Object.prototype,u=l.propertyIsEnumerable,f=Object.getOwnPropertySymbols,g=f?function(m){return m==null?[]:(m=Object(m),a(f(m),function(b){return u.call(m,b)}))}:c;i.exports=g},6649(i,d,r){var a=r(9130),c=r(553),l=r(1454),u=r(5615),f=Object.getOwnPropertySymbols,g=f?function(m){for(var b=[];m;)a(b,l(m)),m=c(m);return b}:u;i.exports=g},1663(i,d,r){var a=r(8054),c=r(2565),l=r(8246),u=r(4099),f=r(6221),g=r(1490),m=r(8815),b="[object Map]",w="[object Object]",S="[object Promise]",O="[object Set]",C="[object WeakMap]",P="[object DataView]",N=m(a),$=m(c),z=m(l),Y=m(u),ut=m(f),L=g;(a&&L(new a(new ArrayBuffer(1)))!=P||c&&L(new c)!=b||l&&L(l.resolve())!=S||u&&L(new u)!=O||f&&L(new f)!=C)&&(L=function(ft){var X=g(ft),rt=X==w?ft.constructor:void 0,ct=rt?m(rt):"";if(ct)switch(ct){case N:return P;case $:return b;case z:return S;case Y:return O;case ut:return C}return X}),i.exports=L},2490(i){function d(r,a){return r?.[a]}i.exports=d},5728(i,d,r){var a=r(2155),c=r(1750),l=r(2619),u=r(2159),f=r(5300),g=r(5155);function m(b,w,S){w=a(w,b);for(var O=-1,C=w.length,P=!1;++O<C;){var N=g(w[O]);if(!(P=b!=null&&S(b,N)))break;b=b[N]}return P||++O!=C?P:(C=b==null?0:b.length,!!C&&f(C)&&u(N,C)&&(l(b)||c(b)))}i.exports=m},2130(i,d,r){var a=r(9444);function c(){this.__data__=a?a(null):{},this.size=0}i.exports=c},1924(i){function d(r){var a=this.has(r)&&delete this.__data__[r];return this.size-=a?1:0,a}i.exports=d},4743(i,d,r){var a=r(9444),c="__lodash_hash_undefined__",l=Object.prototype,u=l.hasOwnProperty;function f(g){var m=this.__data__;if(a){var b=m[g];return b===c?void 0:b}return u.call(m,g)?m[g]:void 0}i.exports=f},1755(i,d,r){var a=r(9444),c=Object.prototype,l=c.hasOwnProperty;function u(f){var g=this.__data__;return a?g[f]!==void 0:l.call(g,f)}i.exports=u},5203(i,d,r){var a=r(9444),c="__lodash_hash_undefined__";function l(u,f){var g=this.__data__;return this.size+=this.has(u)?0:1,g[u]=a&&f===void 0?c:f,this}i.exports=l},143(i){var d=Object.prototype,r=d.hasOwnProperty;function a(c){var l=c.length,u=new c.constructor(l);return l&&typeof c[0]=="string"&&r.call(c,"index")&&(u.index=c.index,u.input=c.input),u}i.exports=a},7265(i,d,r){var a=r(2859),c=r(7795),l=r(6899),u=r(4518),f=r(5979),g="[object Boolean]",m="[object Date]",b="[object Map]",w="[object Number]",S="[object RegExp]",O="[object Set]",C="[object String]",P="[object Symbol]",N="[object ArrayBuffer]",$="[object DataView]",z="[object Float32Array]",Y="[object Float64Array]",ut="[object Int8Array]",L="[object Int16Array]",ft="[object Int32Array]",X="[object Uint8Array]",rt="[object Uint8ClampedArray]",ct="[object Uint16Array]",Z="[object Uint32Array]";function J(tt,_,M){var st=tt.constructor;switch(_){case N:return a(tt);case g:case m:return new st(+tt);case $:return c(tt,M);case z:case Y:case ut:case L:case ft:case X:case rt:case ct:case Z:return f(tt,M);case b:return new st;case w:case C:return new st(tt);case S:return l(tt);case O:return new st;case P:return u(tt)}}i.exports=J},8879(i,d,r){var a=r(8514),c=r(553),l=r(8861);function u(f){return typeof f.constructor=="function"&&!l(f)?a(c(f)):{}}i.exports=u},2159(i){var d=9007199254740991,r=/^(?:0|[1-9]\d*)$/;function a(c,l){var u=typeof c;return l=l??d,!!l&&(u=="number"||u!="symbol"&&r.test(c))&&c>-1&&c%1==0&&c<l}i.exports=a},9542(i,d,r){var a=r(9506),c=r(644),l=r(2159),u=r(9323);function f(g,m,b){if(!u(b))return!1;var w=typeof m;return(w=="number"?c(b)&&l(m,b.length):w=="string"&&m in b)?a(b[m],g):!1}i.exports=f},5304(i,d,r){var a=r(2619),c=r(7964),l=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;function f(g,m){if(a(g))return!1;var b=typeof g;return b=="number"||b=="symbol"||b=="boolean"||g==null||c(g)?!0:u.test(g)||!l.test(g)||m!=null&&g in Object(m)}i.exports=f},7500(i){function d(r){var a=typeof r;return a=="string"||a=="number"||a=="symbol"||a=="boolean"?r!=="__proto__":r===null}i.exports=d},2958(i,d,r){var a=r(3703),c=(function(){var u=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||"");return u?"Symbol(src)_1."+u:""})();function l(u){return!!c&&c in u}i.exports=l},8861(i){var d=Object.prototype;function r(a){var c=a&&a.constructor,l=typeof c=="function"&&c.prototype||d;return a===l}i.exports=r},3044(i){function d(){this.__data__=[],this.size=0}i.exports=d},4066(i,d,r){var a=r(7831),c=Array.prototype,l=c.splice;function u(f){var g=this.__data__,m=a(g,f);if(m<0)return!1;var b=g.length-1;return m==b?g.pop():l.call(g,m,1),--this.size,!0}i.exports=u},8461(i,d,r){var a=r(7831);function c(l){var u=this.__data__,f=a(u,l);return f<0?void 0:u[f][1]}i.exports=c},4417(i,d,r){var a=r(7831);function c(l){return a(this.__data__,l)>-1}i.exports=c},2777(i,d,r){var a=r(7831);function c(l,u){var f=this.__data__,g=a(f,l);return g<0?(++this.size,f.push([l,u])):f[g][1]=u,this}i.exports=c},4614(i,d,r){var a=r(3219),c=r(7321),l=r(2565);function u(){this.size=0,this.__data__={hash:new a,map:new(l||c),string:new a}}i.exports=u},9504(i,d,r){var a=r(9257);function c(l){var u=a(this,l).delete(l);return this.size-=u?1:0,u}i.exports=c},9251(i,d,r){var a=r(9257);function c(l){return a(this,l).get(l)}i.exports=c},5791(i,d,r){var a=r(9257);function c(l){return a(this,l).has(l)}i.exports=c},1511(i,d,r){var a=r(9257);function c(l,u){var f=a(this,l),g=f.size;return f.set(l,u),this.size+=f.size==g?0:1,this}i.exports=c},3426(i,d,r){var a=r(8590),c=500;function l(u){var f=a(u,function(m){return g.size===c&&g.clear(),m}),g=f.cache;return f}i.exports=l},9444(i,d,r){var a=r(5592),c=a(Object,"create");i.exports=c},9692(i,d,r){var a=r(7937),c=a(Object.keys,Object);i.exports=c},1779(i){function d(r){var a=[];if(r!=null)for(var c in Object(r))a.push(c);return a}i.exports=d},1587(i,d,r){i=r.nmd(i);var a=r(6710),c=d&&!d.nodeType&&d,l=c&&!0&&i&&!i.nodeType&&i,u=l&&l.exports===c,f=u&&a.process,g=(function(){try{var m=l&&l.require&&l.require("util").types;return m||f&&f.binding&&f.binding("util")}catch{}})();i.exports=g},7748(i){var d=Object.prototype,r=d.toString;function a(c){return r.call(c)}i.exports=a},7937(i){function d(r,a){return function(c){return r(a(c))}}i.exports=d},8619(i,d,r){var a=r(6047),c=Math.max;function l(u,f,g){return f=c(f===void 0?u.length-1:f,0),function(){for(var m=arguments,b=-1,w=c(m.length-f,0),S=Array(w);++b<w;)S[b]=m[f+b];b=-1;for(var O=Array(f+1);++b<f;)O[b]=m[b];return O[f]=g(S),a(u,this,O)}}i.exports=l},907(i,d,r){var a=r(6710),c=typeof self=="object"&&self&&self.Object===Object&&self,l=a||c||Function("return this")();i.exports=l},5760(i){function d(r,a){if(!(a==="constructor"&&typeof r[a]=="function")&&a!="__proto__")return r[a]}i.exports=d},9599(i,d,r){var a=r(7680),c=r(6101),l=c(a);i.exports=l},6101(i){var d=800,r=16,a=Date.now;function c(l){var u=0,f=0;return function(){var g=a(),m=r-(g-f);if(f=g,m>0){if(++u>=d)return arguments[0]}else u=0;return l.apply(void 0,arguments)}}i.exports=c},1306(i,d,r){var a=r(7321);function c(){this.__data__=new a,this.size=0}i.exports=c},3180(i){function d(r){var a=this.__data__,c=a.delete(r);return this.size=a.size,c}i.exports=d},5247(i){function d(r){return this.__data__.get(r)}i.exports=d},2835(i){function d(r){return this.__data__.has(r)}i.exports=d},9179(i,d,r){var a=r(7321),c=r(2565),l=r(111),u=200;function f(g,m){var b=this.__data__;if(b instanceof a){var w=b.__data__;if(!c||w.length<u-1)return w.push([g,m]),this.size=++b.size,this;b=this.__data__=new l(w)}return b.set(g,m),this.size=b.size,this}i.exports=f},4352(i,d,r){var a=r(3426),c=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,l=/\\(\\)?/g,u=a(function(f){var g=[];return f.charCodeAt(0)===46&&g.push(""),f.replace(c,function(m,b,w,S){g.push(w?S.replace(l,"$1"):b||m)}),g});i.exports=u},5155(i,d,r){var a=r(7964),c=1/0;function l(u){if(typeof u=="string"||a(u))return u;var f=u+"";return f=="0"&&1/u==-c?"-0":f}i.exports=l},8815(i){var d=Function.prototype,r=d.toString;function a(c){if(c!=null){try{return r.call(c)}catch{}try{return c+""}catch{}}return""}i.exports=a},5082(i){var d=/\s/;function r(a){for(var c=a.length;c--&&d.test(a.charAt(c)););return c}i.exports=r},8313(i,d,r){var a=r(6057),c=1,l=4;function u(f){return a(f,c|l)}i.exports=u},6148(i){function d(r){return function(){return r}}i.exports=d},671(i,d,r){var a=r(9323),c=r(5062),l=r(9480),u="Expected a function",f=Math.max,g=Math.min;function m(b,w,S){var O,C,P,N,$,z,Y=0,ut=!1,L=!1,ft=!0;if(typeof b!="function")throw new TypeError(u);w=l(w)||0,a(S)&&(ut=!!S.leading,L="maxWait"in S,P=L?f(l(S.maxWait)||0,w):P,ft="trailing"in S?!!S.trailing:ft);function X(B){var dt=O,$t=C;return O=C=void 0,Y=B,N=b.apply($t,dt),N}function rt(B){return Y=B,$=setTimeout(J,w),ut?X(B):N}function ct(B){var dt=B-z,$t=B-Y,qt=w-dt;return L?g(qt,P-$t):qt}function Z(B){var dt=B-z,$t=B-Y;return z===void 0||dt>=w||dt<0||L&&$t>=P}function J(){var B=c();if(Z(B))return tt(B);$=setTimeout(J,ct(B))}function tt(B){return $=void 0,ft&&O?X(B):(O=C=void 0,N)}function _(){$!==void 0&&clearTimeout($),Y=0,O=z=C=$=void 0}function M(){return $===void 0?N:tt(c())}function st(){var B=c(),dt=Z(B);if(O=arguments,C=this,z=B,dt){if($===void 0)return rt(z);if(L)return clearTimeout($),$=setTimeout(J,w),X(z)}return $===void 0&&($=setTimeout(J,w)),N}return st.cancel=_,st.flush=M,st}i.exports=m},9506(i){function d(r,a){return r===a||r!==r&&a!==a}i.exports=d},2438(i,d,r){var a=r(3208);function c(l,u,f){var g=l==null?void 0:a(l,u);return g===void 0?f:g}i.exports=c},2146(i,d,r){var a=r(2780),c=r(5728);function l(u,f){return u!=null&&c(u,f,a)}i.exports=l},4846(i){function d(r){return r}i.exports=d},1750(i,d,r){var a=r(2960),c=r(2292),l=Object.prototype,u=l.hasOwnProperty,f=l.propertyIsEnumerable,g=a((function(){return arguments})())?a:function(m){return c(m)&&u.call(m,"callee")&&!f.call(m,"callee")};i.exports=g},2619(i){var d=Array.isArray;i.exports=d},644(i,d,r){var a=r(860),c=r(5300);function l(u){return u!=null&&c(u.length)&&!a(u)}i.exports=l},1891(i,d,r){var a=r(644),c=r(2292);function l(u){return c(u)&&a(u)}i.exports=l},3446(i,d,r){i=r.nmd(i);var a=r(907),c=r(9349),l=d&&!d.nodeType&&d,u=l&&!0&&i&&!i.nodeType&&i,f=u&&u.exports===l,g=f?a.Buffer:void 0,m=g?g.isBuffer:void 0,b=m||c;i.exports=b},860(i,d,r){var a=r(1490),c=r(9323),l="[object AsyncFunction]",u="[object Function]",f="[object GeneratorFunction]",g="[object Proxy]";function m(b){if(!c(b))return!1;var w=a(b);return w==u||w==f||w==l||w==g}i.exports=m},5300(i){var d=9007199254740991;function r(a){return typeof a=="number"&&a>-1&&a%1==0&&a<=d}i.exports=r},7884(i,d,r){var a=r(9694),c=r(1155),l=r(1587),u=l&&l.isMap,f=u?c(u):a;i.exports=f},9323(i){function d(r){var a=typeof r;return r!=null&&(a=="object"||a=="function")}i.exports=d},2292(i){function d(r){return r!=null&&typeof r=="object"}i.exports=d},1281(i,d,r){var a=r(1490),c=r(553),l=r(2292),u="[object Object]",f=Function.prototype,g=Object.prototype,m=f.toString,b=g.hasOwnProperty,w=m.call(Object);function S(O){if(!l(O)||a(O)!=u)return!1;var C=c(O);if(C===null)return!0;var P=b.call(C,"constructor")&&C.constructor;return typeof P=="function"&&P instanceof P&&m.call(P)==w}i.exports=S},5070(i,d,r){var a=r(8172),c=r(1155),l=r(1587),u=l&&l.isSet,f=u?c(u):a;i.exports=f},7964(i,d,r){var a=r(1490),c=r(2292),l="[object Symbol]";function u(f){return typeof f=="symbol"||c(f)&&a(f)==l}i.exports=u},3133(i,d,r){var a=r(5283),c=r(1155),l=r(1587),u=l&&l.isTypedArray,f=u?c(u):a;i.exports=f},2096(i,d,r){var a=r(3737),c=r(2322),l=r(644);function u(f){return l(f)?a(f):c(f)}i.exports=u},7999(i,d,r){var a=r(3737),c=r(5045),l=r(644);function u(f){return l(f)?a(f,!0):c(f)}i.exports=u},8590(i,d,r){var a=r(111),c="Expected a function";function l(u,f){if(typeof u!="function"||f!=null&&typeof f!="function")throw new TypeError(c);var g=function(){var m=arguments,b=f?f.apply(this,m):m[0],w=g.cache;if(w.has(b))return w.get(b);var S=u.apply(this,m);return g.cache=w.set(b,S)||w,S};return g.cache=new(l.Cache||a),g}l.Cache=a,i.exports=l},8970(i,d,r){var a=r(3912),c=r(2917),l=c(function(u,f,g){a(u,f,g)});i.exports=l},5062(i,d,r){var a=r(907),c=function(){return a.Date.now()};i.exports=c},2154(i,d,r){var a=r(604);function c(l,u,f){return l==null?l:a(l,u,f)}i.exports=c},5615(i){function d(){return[]}i.exports=d},9349(i){function d(){return!1}i.exports=d},6712(i,d,r){var a=r(671),c=r(9323),l="Expected a function";function u(f,g,m){var b=!0,w=!0;if(typeof f!="function")throw new TypeError(l);return c(m)&&(b="leading"in m?!!m.leading:b,w="trailing"in m?!!m.trailing:w),a(f,g,{leading:b,maxWait:g,trailing:w})}i.exports=u},9480(i,d,r){var a=r(6),c=r(9323),l=r(7964),u=NaN,f=/^[-+]0x[0-9a-f]+$/i,g=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt;function w(S){if(typeof S=="number")return S;if(l(S))return u;if(c(S)){var O=typeof S.valueOf=="function"?S.valueOf():S;S=c(O)?O+"":O}if(typeof S!="string")return S===0?S:+S;S=a(S);var C=g.test(S);return C||m.test(S)?b(S.slice(2),C?2:8):f.test(S)?u:+S}i.exports=w},4514(i,d,r){var a=r(7145),c=r(7999);function l(u){return a(u,c(u))}i.exports=l},7164(i,d,r){var a=r(1978);function c(l){return l==null?"":a(l)}i.exports=c},4883(i){"use strict";i.exports=Dn}},Ht={};function K(i){var d=Ht[i];if(d!==void 0)return d.exports;var r=Ht[i]={id:i,loaded:!1,exports:{}};return Oe[i](r,r.exports,K),r.loaded=!0,r.exports}K.n=i=>{var d=i&&i.__esModule?()=>i.default:()=>i;return K.d(d,{a:d}),d},K.d=(i,d)=>{for(var r in d)K.o(d,r)&&!K.o(i,r)&&Object.defineProperty(i,r,{enumerable:!0,get:d[r]})},K.o=(i,d)=>Object.prototype.hasOwnProperty.call(i,d),K.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},K.nmd=i=>(i.paths=[],i.children||(i.children=[]),i),(()=>{var i;globalThis.importScripts&&(i=globalThis.location+"");var d=globalThis.document;if(!i&&d&&(d.currentScript&&d.currentScript.tagName.toUpperCase()==="SCRIPT"&&(i=d.currentScript.src),!i)){var r=d.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&(!i||!/^http(s?):/.test(i));)i=r[a--].src}if(!i)throw new Error("Automatic publicPath is not supported in this browser");i=i.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),K.p=i+"../"})(),K.nc=void 0;var Xe={};return(()=>{"use strict";K.r(Xe),K.d(Xe,{CAppBridge:()=>$o,Event:()=>Z,LaunchMode:()=>X,MicroAppManager:()=>rt,ScriptLoader:()=>Dr,ScriptingObject:()=>B,SecurityContext:()=>i,StyleLoader:()=>Ur});var i=(t=>(t.USER="USER",t.PARTNER="PARTNER",t))(i||{}),d=K(8313),r=K.n(d),a=K(2438),c=K.n(a),l=K(2154),u=K.n(l),f=K(2146),g=K.n(f),m=K(8970),b=K.n(m);const w=JSON.parse('{"appId":"microfe","activeEnv":"localhost","googleTagManager":true,"sessionTimeoutWarnInterval":"7200000","sessionTimeoutInterval":"9000000","microFrontendApps":{"loanapp":{"name":"Loan","hostUrl":"./loan","development":{"files":["index.js"]},"production":{"files":["index.js"]}},"taskapp":{"name":"Task","hostUrl":"./task","mode":"development","development":{"files":["index.dev.js"]},"production":{"files":["index.js"]}},"travelhub":{"name":"TravelHub","hostUrl":"./travelhub","development":{"files":["app.js","landing.js","app.css","landing.css"]},"production":{"files":["app.js","landing.js","app.css","landing.css"]}},"flights":{"name":"Flights","hostUrl":"./flights","development":{"files":["app.js","app.css"]},"production":{"files":["app.js","app.css"]}},"hotels":{"name":"Hotels","hostUrl":"./hotels","development":{"files":["app.js","app.css"]},"production":{"files":["app.js","app.css"]}},"ssfapp":{"name":"SSF App","hostUrl":"./ssf-app","microappManager":"ssf"}},"serviceEndpoints":{"api":"","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"},"env":{"localhost":{"serviceEndpoints":{"api":"","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"dev":{"serviceEndpoints":{"api":"https://dev.api.puiservice.rd.elliemae.io","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"dev2":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"qa":{"serviceEndpoints":{"api":"https://dev.api.puiservice.rd.elliemae.io","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"qa2":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"qa3":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"int":{"serviceEndpoints":{"api":"https://int.api.ellielabs.com","idp":"https://int.idp.ellielabs.com","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-osb1":{"serviceEndpoints":{"api":"https://encompass-peg-api.elliemae.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-osb2":{"serviceEndpoints":{"api":"https://encompass-peg2-api.elliemae.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg":{"serviceEndpoints":{"api":"https://peg2-west.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-oapi-west":{"serviceEndpoints":{"api":"https://peg2-west.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg-oapi-east":{"serviceEndpoints":{"api":"https://peg2-east.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg2-oapi-east":{"serviceEndpoints":{"api":"https://peg2-east.api.ellielabs.com","idp":"https://peg.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"peg3":{"serviceEndpoints":{"api":"https://pel1.api.ellielabs.com","idp":"https://peg3.idp.ellielabs.com/authorize","logger":"https://int.api.ellielabs.com/diagnostics/v2/logging"}},"stage":{"serviceEndpoints":{"api":"https://stg.api.elliemae.com","idp":"https://stg.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"beta":{"serviceEndpoints":{"api":"https://concept.api.elliemae.com","idp":"https://concept.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"demo":{"serviceEndpoints":{"api":"https://concept.api.elliemae.com","idp":"https://concept.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"epc":{"serviceEndpoints":{"api":"https://concept.api.elliemae.com","idp":"https://concept.idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}},"prod":{"serviceEndpoints":{"api":"https://api.elliemae.com","idp":"https://idp.elliemae.com/authorize","logger":"https://api.ellielabs.com/diagnostics/v2/logging"}}}}'),S="latest",O=t=>t.replace(/([^:]\/)\/+/g,"$1"),C=t=>{const e=document.createElement("a");return e.href=t,e.href},P=t=>t?.replace?.(/\/?$/,"/"),N=(t,e)=>`${t.replace(/\/+$/,"")}/${e.replace(/^\/+/,"")}`,$=t=>/^(\/|https?:\/\/)/.test(t),z=(t,e)=>{const n=P(e);if($(n)){const{origin:s}=new URL(t,window.location.href);return O(new URL(n,s).href)}return O(new URL(n,P(t)).href)},Y=(t,e)=>O(new URL("manifest.json",z(t,e)).href),ut=()=>window.navigator.userAgent.includes("jsdom"),L=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),ft=t=>{try{if(new URL(t,window.location.href).origin===window.location.origin)return t;const n=window.location.hostname==="localhost"?"latest":window.emui?.version?.match(/^(\d+\.\d+)/)?.[1]??"latest";return`${window.location.origin}/${n}/frame.html`}catch{return t}};var X=(t=>(t.DEVELOPMENT="development",t.PRODUCTION="production",t))(X||{}),rt=(t=>(t.SSF="ssf",t.APPSDK="appsdk",t))(rt||{});class ct{#t=w;#e;#n;constructor(e){this.#e=e?.version||S,this.#n=P(e?.baseUrl||"")}#o=e=>{const{activeEnv:n,env:s,...o}=e,p=s[n]||{};this.#t=b()({},o,p)};get=(e="",n=null)=>r()(c()(this.#t,e,n));set=(e,n)=>{u()(this.#t,e,n)};has=(e="")=>g()(this.#t,e);setPreloadedConfig=e=>{this.#t=e};#r=()=>{if(!/(?:\/)(\d+\.\d+|latest)(?:\/?)?$/.test(this.#n)){const n=this.#e.match(/^(?:\d+\.\d+)*/g);return P(`${this.#n}${n?.[0]||S}`)}return this.#n};load=async e=>{const n=e??`${this.#r()}app.config.json`;let s;try{s=await fetch(n)}catch(o){if(!e&&this.#e!==S){await this.load(`${this.#n}latest/app.config.json`);return}throw new Error("Failed to fetch app config",{cause:o})}if(s.ok)try{const o=await s.json();this.#o(o)}catch(o){if(!e&&this.#e!==S)await this.load(`${this.#n}latest/app.config.json`);else throw new Error("Failed to parse app config",{cause:o})}else{if(!e&&this.#e!==S){await this.load(`${this.#n}latest/app.config.json`);return}throw new Error("Failed to load app config")}}}class Z{name;objectId;id;constructor(e){const{name:n,objectId:s}=e;if(!n)throw new Error("Event name is required");if(!s)throw new Error("Scripting object id is required");this.objectId=s,this.name=n,this.id=`${this.objectId}.${this.name}`.toLowerCase()}}class J{static[Symbol.hasInstance](e){return typeof e=="object"&&e!==null&&"getType"in e&&typeof e.getType=="function"&&e.getType()==="ProxyEvent"}#t;objectId;name;id;getType(){return"ProxyEvent"}constructor(e){const{name:n,objectId:s,eventSrc:o}=e;if(!n)throw new Error("Event name is required");if(!s)throw new Error("Scripting object id is required");if(!o)throw new Error("Event source is required");this.objectId=s,this.name=n,this.#t=o,this.id=`${this.objectId}.${this.name}`.toLowerCase()}subscribe=e=>this.#t.subscribe({eventId:this.id,callback:e});unsubscribe=e=>{this.#t.unsubscribe({eventId:this.id,token:e})}}const tt=t=>t instanceof Z,_=(t,e)=>`${t.toLowerCase()}.${e.toLowerCase()}`,M="function",st=(t,e)=>typeof t===M&&!!e&&!e.startsWith("_");class B{#t;#e="Object";constructor(e,n){this.#t=e,this.#e=n||this.#e}get id(){return this.#t}get objectType(){return this.#e}_toJSON=()=>{const e=[],n=[];return Object.keys(this).forEach(s=>{const o=this[s];tt(o)?n.push(s):st(o,s)&&e.push(s)}),{objectId:this.#t,objectType:this.#e,functions:e,events:n}};_dispose=()=>{};dispose=()=>{}}var dt=K(6712),$t=K.n(dt);const qt=new Uint8Array(16);function Ze(){return crypto.getRandomValues(qt)}var Te;const ot=[];for(let t=0;t<256;++t)ot.push((t+256).toString(16).slice(1));function Ce(t,e=0){return(ot[t[e+0]]+ot[t[e+1]]+ot[t[e+2]]+ot[t[e+3]]+"-"+ot[t[e+4]]+ot[t[e+5]]+"-"+ot[t[e+6]]+ot[t[e+7]]+"-"+ot[t[e+8]]+ot[t[e+9]]+"-"+ot[t[e+10]]+ot[t[e+11]]+ot[t[e+12]]+ot[t[e+13]]+ot[t[e+14]]+ot[t[e+15]]).toLowerCase()}function Un(t,e=0){const n=Ce(t,e);if(!Te(n))throw TypeError("Stringified UUID is invalid");return n}const zn=null;function Qe(t,e,n){return!e&&!t&&crypto.randomUUID?crypto.randomUUID():_e(t,e,n)}function _e(t,e,n){t=t||{};const s=t.random??t.rng?.()??Ze();if(s.length<16)throw new Error("Random bytes length must be >= 16");if(s[6]=s[6]&15|64,s[8]=s[8]&63|128,e){if(n=n||0,n<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let o=0;o<16;++o)e[n+o]=s[o];return e}return Ce(s)}const Pe=Qe;var te=(t=>(t.Analytics="analytics",t.Application="application",t.Auth="auth",t.Form="form",t.Global="global",t.Http="http",t.Loan="loan",t.LoanV2="loanV2",t.MemStorage="memstorage",t.Module="module",t.Service="service",t.Session="session",t.Styling="styling",t.Transaction="transaction",t.TransactionTemplate="transactiontemplate",t.WebSocket="websocket",t))(te||{});const je="module";var Bn=null,kn=null;class qe{#t=e=>e.trim().toLowerCase();#e=new Map;#n=new Map;#o=e=>{const{so:n,guestId:s,onDuplicate:o="throw",securityContext:p}=e,h=this.#t(n.id),y={so:n,guestId:s,securityContext:p},v=this.#n.get(s);if(!v){this.#n.set(s,new Map([[h,y]]));return}if(v.has(h)){if(o==="ignore")return;throw new Error(`Scripting Object ${n.id} already exists for guest ${s}`)}v.set(h,y)};#r=({so:e})=>{if(e._dispose&&typeof e._dispose=="function")try{e._dispose()}catch{}};#a=({objectId:e,guestId:n})=>{if(e===je&&!n)for(const[,o]of this.#n){const p=o.get(e);if(p)return p}const s=n?this.#n.get(n):null;return s?s.get(e)??null:null};#s=({objectId:e,guestId:n}={})=>{if(n){if(!e){const o=this.#n.get(n);o&&o.forEach(this.#r),this.#n.delete(n);return}const s=this.#n.get(n);if(s){const o=s.get(e);o&&this.#r(o),s.delete(e)}}else e&&this.#n.forEach(s=>{const o=s.get(e);o&&this.#r(o),s.delete(e)})};#c=e=>{if(!e?.id||!e?._toJSON)throw new Error("Object is not derived from ScriptingObject")};#i=(e,n)=>{if(e===je&&!n)throw new Error("Guest id is required to add Module scripting object")};#u=({objectId:e,so:n,guestId:s,securityContext:o,onDuplicate:p})=>{if(this.#e.has(e)){if(p==="ignore")return;throw new Error(`Scripting Object ${n.id} already exists`)}this.#e.set(e,{so:n,guestId:s,securityContext:o})};addScriptingObject=(e,n)=>{const{guestId:s,onDuplicate:o="throw",securityContext:p}=n||{};this.#c(e);const h=this.#t(e.id);if(this.#i(h,s),s){this.#o({so:e,...n,guestId:s,onDuplicate:o});return}this.#u({objectId:h,so:e,guestId:s,securityContext:p,onDuplicate:o})};getObject=(e,n)=>{const s=this.#t(e);let o=this.#a({objectId:s,guestId:n?.id});o=o??this.#e.get(s)??null;const{so:p}=o||{};return p||null};has=(e,n)=>this.getObject(e,n)!==null;listScriptingObjects=e=>{const n=new Set(this.#e.keys()),s=this.#n.get(e);if(s)for(const o of s.keys())n.add(o);return Array.from(n)};removeScriptingObject=(e,n)=>{const s=this.#t(e);if(n)this.#s({objectId:s,guestId:n});else{this.#s({objectId:s});const o=this.#e.get(s);o&&this.#r(o),this.#e.delete(s)}};removeAllScriptingObjects=e=>{e?this.#s({guestId:e}):(this.#e.forEach(this.#r),this.#e.clear())}}class tn{__TYPE__="Proxy";id;objectType;constructor(e,n){this.id=e,this.objectType=n}}const Ie=t=>{if(typeof t!="object"||t===null)return!1;const e=t;return e.constructor?.name==="Proxy"||e.constructor?.name==="ScriptingObjectProxy"||e.__TYPE__==="Proxy"};class en{#t=new Map;#e=new WeakMap;#n;constructor(e){this.#n=e}#o=(e,n)=>{const s=new Promise(o=>{setTimeout(()=>{o()},n)});return Promise.race([e,s])};#r=e=>{const{eventName:n,scriptingObject:s,eventParams:o,listeners:p}=e;p.forEach(h=>{h.criteria&&!(o&&this.#s(o,h.criteria))||Promise.resolve(h.callback({obj:s,eventName:n,eventParams:o})).catch(y=>{this.#n?.warn(`Error in event listener for "${n}": ${y.message}`)})})};#a=async({eventId:e,eventName:n,scriptingObject:s,eventParams:o,feedbackWaitTime:p})=>{const y=(this.#t.get(e)||[]).map(x=>x.criteria&&!(o?this.#s(o,x.criteria):!1)?Promise.resolve():this.#o(Promise.resolve(x.callback({obj:s,eventName:n,eventParams:o})),p));return(await Promise.all(y)).flat(1/0).filter(x=>x!==void 0)};#s(e,n){return Object.entries(n).every(([s,o])=>{const p=e[s];if("eq"in o)return p===o.eq;if("in"in o)return Array.isArray(o.in)&&o.in.includes(p);if("includes"in o)return Array.isArray(p)&&p.includes(o.includes);if("gt"in o){const h=typeof p=="number"?p:Number(p);return!Number.isNaN(h)&&h>o.gt}if("lt"in o){const h=typeof p=="number"?p:Number(p);return!Number.isNaN(h)&&h<o.lt}if("regex"in o){let h=this.#e.get(o);if(h===void 0){try{h=new RegExp(o.regex)}catch{h=null}this.#e.set(o,h)}return h!==null&&typeof p=="string"&&h.test(p)}return!1})}dispatchEvent=async(e,n)=>{const{event:{id:s,name:o},eventParams:p,eventOptions:h}=n,{timeout:y}=h??{};if(!s)throw new Error("Event Id is required");const v=this.#t.get(s)||[];return!y||y<=0?(this.#r({eventName:o,scriptingObject:e,eventParams:p,listeners:v}),Promise.resolve()):this.#a({eventId:s,eventName:o,scriptingObject:e,eventParams:p,feedbackWaitTime:y})};subscribe=e=>{const{eventId:n,callback:s,criteria:o}=e;if(!n)throw new Error("eventId is required");if(!s)throw new Error("Callback is required");const p=this.#t.get(n)||[],h=Pe();return p.push({token:h,criteria:o,callback:s}),this.#t.set(n,p),h};unsubscribe=e=>{const{eventId:n,token:s}=e;if(!n)throw new Error("eventId id is required");if(s){const o=this.#t.get(n)||[],p=o.findIndex(h=>h.token===s);p>-1&&(o.splice(p,1),this.#t.set(n,o))}else this.#t.delete(n)};unsubscribeAll=()=>{this.#t.clear()}}const $e=K.p+"assets/frame.4cbbcfa9ded96b660559.html?resource",H="pui-app-container-",ee=t=>{const e=t.src??$e.default??$e,n=ft(e);if(!t.queryParams)return n;const s=t.queryParams.replace(/[^a-zA-Z0-9&=_.~%+-]/g,"");return`${n}${n.includes("?")?"&":"?"}${s}`},k=({documentEle:t,hostUrl:e,manifestPath:n,guestId:s})=>{const o=t.getElementById(H);o&&(o.id=`${o.id}${s}`);const p=z(e,n);let h=t.getElementsByTagName("base")?.[0];if(h){h.href=p;return}h=t.createElement("base"),h.href=p,t.getElementsByTagName("head")[0].appendChild(h)},Nt=({id:t,instanceId:e,manifestPath:n,hostUrl:s,options:o})=>new Promise((p,h)=>{const{signal:y}=o;if(y?.aborted){h(new DOMException("iframe creation aborted","AbortError"));return}const v=document.createElement("div");v.setAttribute("style","display: flex;width: 100%;height: 100%;flex-direction: column;overflow: hidden;");const x=document.createElement("iframe");x.setAttribute("id",e),x.setAttribute("data-testid",t),x.setAttribute("title",o.title),x.setAttribute("allowfullscreen","true"),x.setAttribute("allowtransparency","true"),o.permissionPolicy&&x.setAttribute("allow",o.permissionPolicy),o.sandbox&&x.setAttribute("sandbox",o.sandbox),x.setAttribute("style",o.style??"flex-grow: 1;border: none;margin: 0;padding: 0;display: block;min-width: 100%;height: 100%;"),x.setAttribute("src",ee(o));const E=1e4;let A=!1;const T={timeoutId:void 0,onAbort:(()=>{})},F=()=>{T.timeoutId&&clearTimeout(T.timeoutId),y?.removeEventListener("abort",T.onAbort)},I=()=>y?.aborted?(A||(A=!0,F(),v.remove(),h(new DOMException("iframe creation aborted","AbortError"))),!0):!1;if(T.onAbort=()=>{I()},I())return;y?.addEventListener("abort",T.onAbort),T.timeoutId=setTimeout(()=>{A||(A=!0,F(),v.remove(),h(new Error(`iframe for ${t} failed to load within ${E}ms`)))},E),x.addEventListener("error",()=>{A||(A=!0,F(),v.remove(),h(new Error(`iframe for ${t} failed to load`)))}),x.addEventListener("load",()=>{A||I()||x.contentDocument&&(A=!0,F(),k({documentEle:x.contentDocument,hostUrl:s,manifestPath:n,guestId:t}),p(x))}),v.appendChild(x);const{containerId:G}=o;(document.getElementById(G??"")??document.body).appendChild(v)}),Mt=t=>document.getElementById(t),wt={create:Nt,remove:t=>{const e=Mt(t);e&&e.parentElement?.remove()},get:Mt},jt=()=>({breakpoints:["512px","768px","1024px","350px"],spaces:["0","4px","8px","12px","16px","32px","48px","56px","64px","72px"],fontSizes:["0.8461rem","0.9230rem","1rem","1.0769rem","1.2307rem","1.3846rem","1.8461rem","2.7692rem"],fontWeights:[100,200,300,400,500,600,700,800,900],lineHeights:["1rem","1.15rem","1.25rem","1.5rem"],letterSpacings:["normal","0.1rem","-0.05rem","0.25rem"],fonts:["proxima-nova, Arial, sans-serif"],colors:{neutral:["#FFFFFF","#F6F7F9","#EBEDF0","#E0E3E8","#CBCFD7","#B0B9C8","#8C93A6","#697489","#464F5C","#353C46","#25292F"],brand:["#F6FBFF","#EBF6FF","#A3D6FF","#52A6EC","#1394E5","#1E79C2","#006AA9","#005181","#C9E7FF"],success:["#E1F4ED","#E1F4ED","#289F6B","#207E56","#185D44"],warning:["#FFEFD8","#E06C29","#B25119","#853C12"],danger:["#FBEBED","#FBEBED","#ED5A64","#C64252","#A11B2B"]},shadows:["0 1px 5px 0 rgba(0, 0, 0, 0.13), 0 2px 4px 0 rgba(0, 0, 0, 0.2)","0 6px 20px 0 rgba(0, 0, 0, 0.24), 0 8px 17px 0 rgba(0, 0, 0, 0.19)","0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19)","0 16px 28px 0 rgba(0, 0, 0, 0.24), 0 25px 55px 0 rgba(0, 0, 0, 0.19)","0 27px 24px 0 rgba(0, 0, 0, 0.24), 0 40px 77px 0 rgba(0, 0, 0, 0.19)"],zIndex:[1e3,2e3,3e3,500,4e3],states:[null,"@media (prefers-reduced-motion: no-preference)","@media (prefers-reduced-motion: reduce)","&:first-child","&:last-child","&:odd","&:even","&:visited","&:checked","&:focus-within","&:hover","&:focus","&:focus-visible","&:active","&:disabled, &[aria-disabled=true]","&::placeholder"]});var pt=K(4883),Ot=K.n(pt),W="-ms-",Wt="-moz-",U="-webkit-",Rt="comm",Kt="rule",ne="decl",Vn="@page",nn="@media",It="@import",Lt="@charset",Mo="@viewport",Ro="@supports",Fo="@document",Gr="@namespace",Hn="@keyframes",No="@font-face",Lo="@counter-style",Do="@font-feature-values",Vr="@layer",Uo="@scope",Wn=Math.abs,rn=String.fromCharCode,sn=Object.assign;function Hr(t,e){return it(t,0)^45?(((e<<2^it(t,0))<<2^it(t,1))<<2^it(t,2))<<2^it(t,3):0}function Kn(t){return t.trim()}function Ft(t,e){return(t=e.exec(t))?t[0]:t}function R(t,e,n){return t.replace(e,n)}function Me(t,e,n){return t.indexOf(e,n)}function it(t,e){return t.charCodeAt(e)|0}function Yt(t,e,n){return t.slice(e,n)}function Tt(t){return t.length}function Yn(t){return t.length}function ge(t,e){return e.push(t),t}function Wr(t,e){return t.map(e).join("")}function Jn(t,e){return t.filter(function(n){return!Ft(n,e)})}var on,Kr,Re=1,re=1,Xn=0,bt=0,Q=0,se="";function Fe(t,e,n,s,o,p,h,y){return{value:t,root:e,parent:n,type:s,props:o,children:p,line:Re,column:re,length:h,return:"",siblings:y}}function Dt(t,e){return sn(Fe("",null,null,"",null,null,0,t.siblings),t,{length:-t.length},e)}function oe(t){for(;t.root;)t=Dt(t.root,{children:[t]});ge(t,t.siblings)}function Yr(){return Q}function Jr(){return Q=bt>0?it(se,--bt):0,re--,Q===10&&(re=1,Re--),Q}function St(){return Q=bt<Xn?it(se,bt++):0,re++,Q===10&&(re=1,Re++),Q}function Ut(){return it(se,bt)}function Ne(){return bt}function Le(t,e){return Yt(se,t,e)}function ie(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function Zn(t){return Re=re=1,Xn=Tt(se=t),bt=0,[]}function Qn(t){return se="",t}function De(t){return Kn(Le(bt-1,an(t===91?t+2:t===40?t+1:t)))}function zo(t){return Qn(Zr(Zn(t)))}function Xr(t){for(;(Q=Ut())&&Q<33;)St();return ie(t)>2||ie(Q)>3?"":" "}function Zr(t){for(;St();)switch(ie(Q)){case 0:on(_n(bt-1),t);break;case 2:on(De(Q),t);break;default:on(Kr(Q),t)}return t}function Qr(t,e){for(;--e&&St()&&!(Q<48||Q>102||Q>57&&Q<65||Q>70&&Q<97););return Le(t,Ne()+(e<6&&Ut()==32&&St()==32))}function an(t){for(;St();)switch(Q){case t:return bt;case 34:case 39:t!==34&&t!==39&&an(Q);break;case 40:t===41&&an(t);break;case 92:St();break}return bt}function _r(t,e){for(;St()&&t+Q!==57;)if(t+Q===84&&Ut()===47)break;return"/*"+Le(e,bt-1)+"*"+rn(t===47?t:St())}function _n(t){for(;!ie(Ut());)St();return Le(t,bt)}function Ue(t,e){for(var n="",s=0;s<t.length;s++)n+=e(t[s],s,t,e)||"";return n}function qr(t,e,n,s){switch(t.type){case Vr:if(t.children.length)break;case It:case Gr:case ne:return t.return=t.return||t.value;case Rt:return"";case Hn:return t.return=t.value+"{"+Ue(t.children,s)+"}";case Kt:if(!Tt(t.value=t.props.join(",")))return""}return Tt(n=Ue(t.children,s))?t.return=t.value+"{"+n+"}":""}function qn(t,e,n){switch(Hr(t,e)){case 5103:return U+"print-"+t+t;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:case 6391:case 5879:case 5623:case 6135:case 4599:return U+t+t;case 4855:return U+t.replace("add","source-over").replace("substract","source-out").replace("intersect","source-in").replace("exclude","xor")+t;case 4789:return Wt+t+t;case 5349:case 4246:case 4810:case 6968:case 2756:return U+t+Wt+t+W+t+t;case 5936:switch(it(t,e+11)){case 114:return U+t+W+R(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return U+t+W+R(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return U+t+W+R(t,/[svh]\w+-[tblr]{2}/,"lr")+t}case 6828:case 4268:case 2903:return U+t+W+t+t;case 6165:return U+t+W+"flex-"+t+t;case 5187:return U+t+R(t,/(\w+).+(:[^]+)/,U+"box-$1$2"+W+"flex-$1$2")+t;case 5443:return U+t+W+"flex-item-"+R(t,/flex-|-self/g,"")+(Ft(t,/flex-|baseline/)?"":W+"grid-row-"+R(t,/flex-|-self/g,""))+t;case 4675:return U+t+W+"flex-line-pack"+R(t,/align-content|flex-|-self/g,"")+t;case 5548:return U+t+W+R(t,"shrink","negative")+t;case 5292:return U+t+W+R(t,"basis","preferred-size")+t;case 6060:return U+"box-"+R(t,"-grow","")+U+t+W+R(t,"grow","positive")+t;case 4554:return U+R(t,/([^-])(transform)/g,"$1"+U+"$2")+t;case 6187:return R(R(R(t,/(zoom-|grab)/,U+"$1"),/(image-set)/,U+"$1"),t,"")+t;case 5495:case 3959:return R(t,/(image-set\([^]*)/,U+"$1$`$1");case 4968:return R(R(t,/(.+:)(flex-)?(.*)/,U+"box-pack:$3"+W+"flex-pack:$3"),/space-between/,"justify")+U+t+t;case 4200:if(!Ft(t,/flex-|baseline/))return W+"grid-column-align"+Yt(t,e)+t;break;case 2592:case 3360:return W+R(t,"template-","")+t;case 4384:case 3616:return n&&n.some(function(s,o){return e=o,Ft(s.props,/grid-\w+-end/)})?~Me(t+(n=n[e].value),"span",0)?t:W+R(t,"-start","")+t+W+"grid-row-span:"+(~Me(n,"span",0)?Ft(n,/\d+/):+Ft(n,/\d+/)-+Ft(t,/\d+/))+";":W+R(t,"-start","")+t;case 4896:case 4128:return n&&n.some(function(s){return Ft(s.props,/grid-\w+-start/)})?t:W+R(R(t,"-end","-span"),"span ","")+t;case 4095:case 3583:case 4068:case 2532:return R(t,/(.+)-inline(.+)/,U+"$1$2")+t;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Tt(t)-1-e>6)switch(it(t,e+1)){case 109:if(it(t,e+4)!==45)break;case 102:return R(t,/(.+:)(.+)-([^]+)/,"$1"+U+"$2-$3$1"+Wt+(it(t,e+3)==108?"$3":"$2-$3"))+t;case 115:return~Me(t,"stretch",0)?qn(R(t,"stretch","fill-available"),e,n)+t:t}break;case 5152:case 5920:return R(t,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(s,o,p,h,y,v,x){return W+o+":"+p+x+(h?W+o+"-span:"+(y?v:+v-+p)+x:"")+t});case 4949:if(it(t,e+6)===121)return R(t,":",":"+U)+t;break;case 6444:switch(it(t,it(t,14)===45?18:11)){case 120:return R(t,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,"$1"+U+(it(t,14)===45?"inline-":"")+"box$3$1"+U+"$2$3$1"+W+"$2box$3")+t;case 100:return R(t,":",":"+W)+t}break;case 5719:case 2647:case 2135:case 3927:case 2391:return R(t,"scroll-","scroll-snap-")+t}return t}var ts,es,ns,tr,rs,er,ss;function os(t){var e=Yn(t);return function(n,s,o,p){for(var h="",y=0;y<e;y++)h+=t[y](n,s,o,p)||"";return h}}function is(t){return function(e){e.root||(e=e.return)&&t(e)}}function as(t,e,n,s){if(t.length>-1&&!t.return)switch(t.type){case ne:t.return=qn(t.value,t.length,n);return;case Hn:return Ue([Dt(t,{value:R(t.value,"@","@"+U)})],s);case Kt:if(t.length)return Wr(n=t.props,function(o){switch(Ft(o,s=/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":oe(Dt(t,{props:[R(o,/:(read-\w+)/,":"+Wt+"$1")]})),oe(Dt(t,{props:[o]})),sn(t,{props:Jn(n,s)});break;case"::placeholder":oe(Dt(t,{props:[R(o,/:(plac\w+)/,":"+U+"input-$1")]})),oe(Dt(t,{props:[R(o,/:(plac\w+)/,":"+Wt+"$1")]})),oe(Dt(t,{props:[R(o,/:(plac\w+)/,W+"input-$1")]})),oe(Dt(t,{props:[o]})),sn(t,{props:Jn(n,s)});break}return""})}}function Bo(t){t.type===ts&&(t.props=t.props.map(function(e){return es(ss(e),function(n,s,o){switch(ns(n,0)){case 12:return tr(n,1,rs(n));case 0:case 40:case 43:case 62:case 126:return n;case 58:o[++s]==="global"&&(o[s]="",o[++s]="\f"+tr(o[s],s=1,-1));case 32:return s===1?"":n;default:switch(s){case 0:return t=n,er(o)>1?"":n;case(s=er(o)-1):case 2:return s===2?n+t+t:n+t;default:return n}}})}))}function cs(t){return Qn(ze("",null,null,null,[""],t=Zn(t),0,[0],t))}function ze(t,e,n,s,o,p,h,y,v){for(var x=0,E=0,A=h,T=0,F=0,I=0,G=1,q=1,et=1,j=0,mt="",Ct=o,nt=p,lt=s,D=mt;q;)switch(I=j,j=St()){case 40:if(I!=108&&it(D,A-1)==58){Me(D+=R(De(j),"&","&\f"),"&\f",Wn(x?y[x-1]:0))!=-1&&(et=-1);break}case 34:case 39:case 91:D+=De(j);break;case 9:case 10:case 13:case 32:D+=Xr(I);break;case 92:D+=Qr(Ne()-1,7);continue;case 47:switch(Ut()){case 42:case 47:ge(ls(_r(St(),Ne()),e,n,v),v),(ie(I||1)==5||ie(Ut()||1)==5)&&Tt(D)&&Yt(D,-1,void 0)!==" "&&(D+=" ");break;default:D+="/"}break;case 123*G:y[x++]=Tt(D)*et;case 125*G:case 59:case 0:switch(j){case 0:case 125:q=0;case 59+E:et==-1&&(D=R(D,/\f/g,"")),F>0&&(Tt(D)-A||G===0&&I===47)&&ge(F>32?rr(D+";",s,n,A-1,v):rr(R(D," ","")+";",s,n,A-2,v),v);break;case 59:D+=";";default:if(ge(lt=nr(D,e,n,x,E,o,y,mt,Ct=[],nt=[],A,p),p),j===123)if(E===0)ze(D,e,lt,lt,Ct,p,A,y,nt);else{switch(T){case 99:if(it(D,3)===110)break;case 108:if(it(D,2)===97)break;default:E=0;case 100:case 109:case 115:}E?ze(t,lt,lt,s&&ge(nr(t,lt,lt,0,0,o,y,mt,o,Ct=[],A,nt),nt),o,nt,A,y,s?Ct:nt):ze(D,lt,lt,lt,[""],nt,0,y,nt)}}x=E=F=0,G=et=1,mt=D="",A=h;break;case 58:A=1+Tt(D),F=I;default:if(G<1){if(j==123)--G;else if(j==125&&G++==0&&Jr()==125)continue}switch(D+=rn(j),j*G){case 38:et=E>0?1:(D+="\f",-1);break;case 44:y[x++]=(Tt(D)-1)*et,et=1;break;case 64:Ut()===45&&(D+=De(St())),T=Ut(),E=A=Tt(mt=D+=_n(Ne())),j++;break;case 45:I===45&&Tt(D)==2&&(G=0)}}return p}function nr(t,e,n,s,o,p,h,y,v,x,E,A){for(var T=o-1,F=o===0?p:[""],I=Yn(F),G=0,q=0,et=0;G<s;++G)for(var j=0,mt=Yt(t,T+1,T=Wn(q=h[G])),Ct=t;j<I;++j)(Ct=Kn(q>0?F[j]+" "+mt:R(mt,/&\f/g,F[j])))&&(v[et++]=Ct);return Fe(t,e,n,o===0?Kt:y,v,x,E,A)}function ls(t,e,n,s){return Fe(t,e,n,Rt,rn(Yr()),Yt(t,2,-2),0,s)}function rr(t,e,n,s,o){return Fe(t,e,n,ne,Yt(t,0,s),Yt(t,s+1,-1),s,o)}var at,us,cn,ln;const zt=typeof process<"u"&&!0&&("MISSING_ENV_VAR".REACT_APP_SC_ATTR||"MISSING_ENV_VAR".SC_ATTR)||"data-styled",sr="active",Be="data-styled-version",ae="6.4.2",un=`/*!sc*/
2
+ `,ce=typeof window<"u"&&typeof document<"u";function or(t){if(typeof process<"u"){const e="MISSING_ENV_VAR"[t];if(e!==void 0&&e!=="")return e!=="false"}}const ps=!!(typeof SC_DISABLE_SPEEDY=="boolean"?SC_DISABLE_SPEEDY:(ln=(cn=or("REACT_APP_SC_DISABLE_SPEEDY"))!==null&&cn!==void 0?cn:or("SC_DISABLE_SPEEDY"))!==null&&ln!==void 0?ln:typeof process<"u"&&!1),ir="sc-keyframes-",fs=null,ko=null;function Et(t,...e){return new Error(`An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#${t} for more information.${e.length>0?` Args: ${e.join(", ")}`:""}`)}const Go=null;let ke=new Map,Ge=new Map,Ve=1;const me=t=>{if(ke.has(t))return ke.get(t);for(;Ge.has(Ve);)Ve++;const e=Ve++;return ke.set(t,e),Ge.set(e,t),e},ds=t=>Ge.get(t),hs=(t,e)=>{Ve=e+1,ke.set(t,e),Ge.set(e,t)},Vo=/invalid hook call/i,Ho=new Set,Wo=(t,e)=>{},pn=Object.freeze([]),le=Object.freeze({});function fn(t,e,n=le){return t.theme!==n.theme&&t.theme||e||n.theme}const gs=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,ms=/(^-|-$)/g;function ar(t){return t.replace(gs,"-").replace(ms,"")}const ys=/(a)(d)/gi,cr=t=>String.fromCharCode(t+(t>25?39:97));function dn(t){let e,n="";for(e=Math.abs(t);e>52;e=e/52|0)n=cr(e%52)+n;return(cr(e%52)+n).replace(ys,"$1-$2")}const hn=5381,Jt=(t,e)=>{let n=e.length;for(;n;)t=33*t^e.charCodeAt(--n);return t},lr=t=>Jt(hn,t);function gn(t){return dn(lr(t)>>>0)}function ur(t){return t.displayName||t.name||"Component"}function mn(t){return typeof t=="string"&&!0}function vs(t){return mn(t)?`styled.${t}`:`Styled(${ur(t)})`}const pr=Symbol.for("react.memo"),bs=Symbol.for("react.forward_ref"),xs={contextType:!0,defaultProps:!0,displayName:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,propTypes:!0,type:!0},ws={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},fr={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Ss={[bs]:{$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},[pr]:fr};function dr(t){return("type"in(e=t)&&e.type.$$typeof)===pr?fr:"$$typeof"in t?Ss[t.$$typeof]:xs;var e}const Es=Object.defineProperty,As=Object.getOwnPropertyNames,Os=Object.getOwnPropertySymbols,Ts=Object.getOwnPropertyDescriptor,Cs=Object.getPrototypeOf,Ps=Object.prototype;function yn(t,e,n){if(typeof e!="string"){const s=Cs(e);s&&s!==Ps&&yn(t,s,n);const o=As(e).concat(Os(e)),p=dr(t),h=dr(e);for(let y=0;y<o.length;++y){const v=o[y];if(!(v in ws||n&&n[v]||h&&v in h||p&&v in p)){const x=Ts(e,v);try{Es(t,v,x)}catch{}}}}return t}function ue(t){return typeof t=="function"}const js=Symbol.for("react.forward_ref");function vn(t){return t!=null&&(typeof t=="object"||typeof t=="function")&&t.$$typeof===js&&"styledComponentId"in t}function ye(t,e){return t&&e?t+" "+e:t||e||""}function ve(t,e){return t.join(e||"")}function be(t){return t!==null&&typeof t=="object"&&t.constructor.name===Object.name&&!("props"in t&&t.$$typeof)}function bn(t,e,n=!1){if(!n&&!be(t)&&!Array.isArray(t))return e;if(Array.isArray(e))for(let s=0;s<e.length;s++)t[s]=bn(t[s],e[s]);else if(be(e))for(const s in e)t[s]=bn(t[s],e[s]);return t}function xn(t,e){Object.defineProperty(t,"toString",{value:e})}const Is=class{constructor(t){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=t,this._cGroup=0,this._cIndex=0}indexOfGroup(t){if(t===this._cGroup)return this._cIndex;let e=this._cIndex;if(t>this._cGroup)for(let n=this._cGroup;n<t;n++)e+=this.groupSizes[n];else for(let n=this._cGroup-1;n>=t;n--)e-=this.groupSizes[n];return this._cGroup=t,this._cIndex=e,e}insertRules(t,e){if(t>=this.groupSizes.length){const o=this.groupSizes,p=o.length;let h=p;for(;t>=h;)if(h<<=1,h<0)throw Et(16,`${t}`);this.groupSizes=new Uint32Array(h),this.groupSizes.set(o),this.length=h;for(let y=p;y<h;y++)this.groupSizes[y]=0}let n=this.indexOfGroup(t+1),s=0;for(let o=0,p=e.length;o<p;o++)this.tag.insertRule(n,e[o])&&(this.groupSizes[t]++,n++,s++);s>0&&this._cGroup>t&&(this._cIndex+=s)}clearGroup(t){if(t<this.length){const e=this.groupSizes[t],n=this.indexOfGroup(t),s=n+e;this.groupSizes[t]=0;for(let o=n;o<s;o++)this.tag.deleteRule(n);e>0&&this._cGroup>t&&(this._cIndex-=e)}}getGroup(t){let e="";if(t>=this.length||this.groupSizes[t]===0)return e;const n=this.groupSizes[t],s=this.indexOfGroup(t),o=s+n;for(let p=s;p<o;p++)e+=this.tag.getRule(p)+un;return e}},$s=`style[${zt}][${Be}="${ae}"]`,Ms=new RegExp(`^${zt}\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)`),hr=t=>typeof ShadowRoot<"u"&&t instanceof ShadowRoot||"host"in t&&t.nodeType===11,wn=t=>{if(!t)return document;if(hr(t))return t;if("getRootNode"in t){const e=t.getRootNode();if(hr(e))return e}return document},Rs=(t,e,n)=>{const s=n.split(",");let o;for(let p=0,h=s.length;p<h;p++)(o=s[p])&&t.registerName(e,o)},Fs=(t,e)=>{var n;const s=((n=e.textContent)!==null&&n!==void 0?n:"").split(un),o=[];for(let p=0,h=s.length;p<h;p++){const y=s[p].trim();if(!y)continue;const v=y.match(Ms);if(v){const x=0|parseInt(v[1],10),E=v[2];x!==0&&(hs(E,x),Rs(t,E,v[3]),t.getTag().insertRules(x,o)),o.length=0}else o.push(y)}},Sn=t=>{const e=wn(t.options.target).querySelectorAll($s);for(let n=0,s=e.length;n<s;n++){const o=e[n];o&&o.getAttribute(zt)!==sr&&(Fs(t,o),o.parentNode&&o.parentNode.removeChild(o))}};let xe=!1;function En(){if(xe!==!1)return xe;if(typeof document<"u"){const t=document.head.querySelector('meta[property="csp-nonce"]');if(t)return xe=t.nonce||t.getAttribute("content")||void 0;const e=document.head.querySelector('meta[name="sc-nonce"]');if(e)return xe=e.getAttribute("content")||void 0}return xe=K.nc}const gr=(t,e)=>{const n=document.head,s=t||n,o=document.createElement("style"),p=(v=>{const x=Array.from(v.querySelectorAll(`style[${zt}]`));return x[x.length-1]})(s),h=p!==void 0?p.nextSibling:null;o.setAttribute(zt,sr),o.setAttribute(Be,ae);const y=e||En();return y&&o.setAttribute("nonce",y),s.insertBefore(o,h),o},Ns=class{constructor(t,e){this.element=gr(t,e),this.element.appendChild(document.createTextNode("")),this.sheet=(n=>{var s;if(n.sheet)return n.sheet;const o=(s=n.getRootNode().styleSheets)!==null&&s!==void 0?s:document.styleSheets;for(let p=0,h=o.length;p<h;p++){const y=o[p];if(y.ownerNode===n)return y}throw Et(17)})(this.element),this.length=0}insertRule(t,e){try{return this.sheet.insertRule(e,t),this.length++,!0}catch{return!1}}deleteRule(t){this.sheet.deleteRule(t),this.length--}getRule(t){const e=this.sheet.cssRules[t];return e&&e.cssText?e.cssText:""}},Ls=class{constructor(t,e){this.element=gr(t,e),this.nodes=this.element.childNodes,this.length=0}insertRule(t,e){if(t<=this.length&&t>=0){const n=document.createTextNode(e);return this.element.insertBefore(n,this.nodes[t]||null),this.length++,!0}return!1}deleteRule(t){this.element.removeChild(this.nodes[t]),this.length--}getRule(t){return t<this.length?this.nodes[t].textContent:""}};let mr=ce;const Ds={isServer:!ce,useCSSOMInjection:!ps};class pe{static registerId(e){return me(e)}constructor(e=le,n={},s){this.options=Object.assign(Object.assign({},Ds),e),this.gs=n,this.keyframeIds=new Set,this.names=new Map(s),this.server=!!e.isServer,!this.server&&ce&&mr&&(mr=!1,Sn(this)),xn(this,()=>(o=>{const p=o.getTag(),{length:h}=p;let y="";for(let v=0;v<h;v++){const x=ds(v);if(x===void 0)continue;const E=o.names.get(x);if(E===void 0||!E.size)continue;const A=p.getGroup(v);if(A.length===0)continue;const T=zt+".g"+v+'[id="'+x+'"]';let F="";for(const I of E)I.length>0&&(F+=I+",");y+=A+T+'{content:"'+F+'"}'+un}return y})(this))}rehydrate(){!this.server&&ce&&Sn(this)}reconstructWithOptions(e,n=!0){const s=new pe(Object.assign(Object.assign({},this.options),e),this.gs,n&&this.names||void 0);return s.keyframeIds=new Set(this.keyframeIds),!this.server&&ce&&e.target!==this.options.target&&wn(this.options.target)!==wn(e.target)&&Sn(s),s}allocateGSInstance(e){return this.gs[e]=(this.gs[e]||0)+1}getTag(){return this.tag||(this.tag=(e=(({useCSSOMInjection:n,target:s,nonce:o})=>n?new Ns(s,o):new Ls(s,o))(this.options),new Is(e)));var e}hasNameForId(e,n){var s,o;return(o=(s=this.names.get(e))===null||s===void 0?void 0:s.has(n))!==null&&o!==void 0&&o}registerName(e,n){me(e),e.startsWith(ir)&&this.keyframeIds.add(e);const s=this.names.get(e);s?s.add(n):this.names.set(e,new Set([n]))}insertRules(e,n,s){this.registerName(e,n),this.getTag().insertRules(me(e),s)}clearNames(e){this.names.has(e)&&this.names.get(e).clear()}clearRules(e){this.getTag().clearGroup(me(e)),this.clearNames(e)}clearTag(){this.tag=void 0}}const yr=new WeakSet,Us={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexShrink:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};function zs(t,e){return e==null||typeof e=="boolean"||e===""?"":typeof e!="number"||e===0||t in Us||t.startsWith("--")?String(e).trim():e+"px"}const Xt=47;function vr(t){if(t.charCodeAt(0)===45&&t.charCodeAt(1)===45)return t;let e="";for(let n=0;n<t.length;n++){const s=t.charCodeAt(n);e+=s>=65&&s<=90?"-"+String.fromCharCode(s+32):t[n]}return e.startsWith("ms-")?"-"+e:e}const br=Symbol.for("sc-keyframes");function Bs(t){return typeof t=="object"&&t!==null&&br in t}function xr(t){return ue(t)&&!(t.prototype&&t.prototype.isReactComponent)}const wr=t=>t==null||t===!1||t==="",ks=Symbol.for("react.client.reference");function Sr(t){return t.$$typeof===ks}function Ko(t){const e=t.$$id,n=(e&&e.includes("#")?e.split("#").pop():e)||t.name||"unknown";`${n}`}function Er(t,e){for(const n in t){const s=t[n];t.hasOwnProperty(n)&&!wr(s)&&(Array.isArray(s)&&yr.has(s)||ue(s)?e.push(vr(n)+":",s,";"):be(s)?(e.push(n+" {"),Er(s,e),e.push("}")):e.push(vr(n)+": "+zs(n,s)+";"))}}function Bt(t,e,n,s,o=[]){if(wr(t))return o;const p=typeof t;if(p==="string")return o.push(t),o;if(p==="function"){if(Sr(t))return o;if(xr(t)&&e){const h=t(e);return Bt(h,e,n,s,o)}return o.push(t),o}if(Array.isArray(t)){for(let h=0;h<t.length;h++)Bt(t[h],e,n,s,o);return o}return vn(t)?(o.push(`.${t.styledComponentId}`),o):Bs(t)?(n?(t.inject(n,s),o.push(t.getName(s))):o.push(t),o):Sr(t)?o:be(t)?t.toString!==Object.prototype.toString?(o.push(t.toString()),o):(Er(t,o),o):(o.push(t.toString()),o)}const Gs=lr(ae);class Vs{constructor(e,n,s){this.rules=e,this.componentId=n,this.baseHash=Jt(Gs,n),this.baseStyle=s,pe.registerId(n)}generateAndInjectStyles(e,n,s){let o=this.baseStyle?this.baseStyle.generateAndInjectStyles(e,n,s):"";{let p="";for(let h=0;h<this.rules.length;h++){const y=this.rules[h];if(typeof y=="string")p+=y;else if(y)if(xr(y)){const v=y(e);typeof v=="string"?p+=v:v!=null&&v!==!1&&(p+=ve(Bt(v,e,n,s)))}else p+=ve(Bt(y,e,n,s))}if(p){this.dynamicNameCache||(this.dynamicNameCache=new Map);const h=s.hash?s.hash+p:p;let y=this.dynamicNameCache.get(h);if(!y){if(y=dn(Jt(Jt(this.baseHash,s.hash),p)>>>0),this.dynamicNameCache.size>=200){const v=this.dynamicNameCache.keys().next().value;v!==void 0&&this.dynamicNameCache.delete(v)}this.dynamicNameCache.set(h,y)}if(!n.hasNameForId(this.componentId,y)){const v=s(p,"."+y,void 0,this.componentId);n.insertRules(this.componentId,y,v)}o=ye(o,y)}}return o}}const Hs=/&/g;function An(t,e){let n=0;for(;--e>=0&&t.charCodeAt(e)===92;)n++;return!(1&~n)}function On(t){const e=t.length;let n="",s=0,o=0,p=0,h=!1,y=!1;for(let v=0;v<e;v++){const x=t.charCodeAt(v);if(p!==0||h||x!==Xt||t.charCodeAt(v+1)!==42)if(h)x===42&&t.charCodeAt(v+1)===Xt&&(h=!1,v++);else if(x!==34&&x!==39||An(t,v)){if(p===0)if(x===123)o++;else if(x===125){if(o--,o<0){y=!0;let E=v+1;for(;E<e;){const A=t.charCodeAt(E);if(A===59||A===10)break;E++}E<e&&t.charCodeAt(E)===59&&E++,o=0,v=E-1,s=E;continue}o===0&&(n+=t.substring(s,v+1),s=v+1)}else x===59&&o===0&&(n+=t.substring(s,v+1),s=v+1)}else p===0?p=x:p===x&&(p=0);else h=!0,v++}return y||o!==0||p!==0?(s<e&&o===0&&p===0&&(n+=t.substring(s)),n):t}function Ar(t,e){const n=e+" ",s=","+n;for(let o=0;o<t.length;o++){const p=t[o];if(p.type==="rule"){p.value=(n+p.value).replaceAll(",",s);const h=p.props,y=[];for(let v=0;v<h.length;v++)y[v]=n+h[v];p.props=y}Array.isArray(p.children)&&p.type!=="@keyframes"&&Ar(p.children,e)}return t}function Or({options:t=le,plugins:e=pn}=le){let n,s,o;const p=(T,F,I)=>I.startsWith(s)&&I.endsWith(s)&&I.replaceAll(s,"").length>0?`.${n}`:T,h=e.slice();h.push(T=>{T.type===Kt&&T.value.includes("&")&&(o||(o=new RegExp(`\\${s}\\b`,"g")),T.props[0]=T.props[0].replace(Hs,s).replace(o,p))}),t.prefix&&h.push(as),h.push(qr);let y=[];const v=os(h.concat(is(T=>y.push(T)))),x=(T,F="",I="",G="&")=>{n=G,s=F,o=void 0;const q=(function(j){const mt=j.indexOf("//")!==-1,Ct=j.indexOf("}")!==-1;if(!mt&&!Ct)return j;if(!mt)return On(j);const nt=j.length;let lt="",D=0,V=0,Qt=0,de=0,At=0,Se=!1;for(;V<nt;){const ht=j.charCodeAt(V);if(ht!==34&&ht!==39||An(j,V))if(Qt===0)if(ht===Xt&&V+1<nt&&j.charCodeAt(V+1)===42){for(V+=2;V+1<nt&&(j.charCodeAt(V)!==42||j.charCodeAt(V+1)!==Xt);)V++;V+=2}else if(ht!==40)if(ht!==41)if(de>0)V++;else if(ht===42&&V+1<nt&&j.charCodeAt(V+1)===Xt)lt+=j.substring(D,V),V+=2,D=V,Se=!0;else if(ht===Xt&&V+1<nt&&j.charCodeAt(V+1)===Xt){for(lt+=j.substring(D,V);V<nt&&j.charCodeAt(V)!==10;)V++;D=V,Se=!0}else ht===123?At++:ht===125&&At--,V++;else de>0&&de--,V++;else de++,V++;else V++;else Qt===0?Qt=ht:Qt===ht&&(Qt=0),V++}return Se?(D<nt&&(lt+=j.substring(D)),At===0?lt:On(lt)):At===0?j:On(j)})(T);let et=cs(I||F?I+" "+F+" { "+q+" }":q);return t.namespace&&(et=Ar(et,t.namespace)),y=[],Ue(et,v),y},E=t;let A=hn;for(let T=0;T<e.length;T++)e[T].name||Et(15),A=Jt(A,e[T].name);return E?.namespace&&(A=Jt(A,E.namespace)),E?.prefix&&(A=Jt(A,"p")),x.hash=A!==hn?A.toString():"",x}const Ws=new pe,Tn=Or(),Cn=Ot().createContext({shouldForwardProp:void 0,styleSheet:Ws,stylis:Tn,stylisPlugins:void 0}),Yo=Cn.Consumer;function Pn(){return Ot().useContext(Cn)}function Ks(t){var e;const n=Pn(),{styleSheet:s}=n,o=at.useMemo(()=>{let x=s;return t.sheet?x=t.sheet:t.target?x=x.reconstructWithOptions(t.nonce!==void 0?{target:t.target,nonce:t.nonce}:{target:t.target},!1):t.nonce!==void 0&&(x=x.reconstructWithOptions({nonce:t.nonce})),t.disableCSSOMInjection&&(x=x.reconstructWithOptions({useCSSOMInjection:!1})),x},[t.disableCSSOMInjection,t.nonce,t.sheet,t.target,s]),p=at.useMemo(()=>{var x;return t.stylisPlugins===void 0&&t.namespace===void 0&&t.enableVendorPrefixes===void 0?n.stylis:Or({options:{namespace:t.namespace,prefix:t.enableVendorPrefixes},plugins:(x=t.stylisPlugins)!==null&&x!==void 0?x:n.stylisPlugins})},[t.enableVendorPrefixes,t.namespace,t.stylisPlugins,n.stylis,n.stylisPlugins]),h="shouldForwardProp"in t?t.shouldForwardProp:n.shouldForwardProp,y=(e=t.stylisPlugins)!==null&&e!==void 0?e:n.stylisPlugins,v=at.useMemo(()=>({shouldForwardProp:h,styleSheet:o,stylis:p,stylisPlugins:y}),[h,o,p,y]);return at.createElement(Cn.Provider,{value:v},t.children)}const Zt=Ot().createContext(void 0),Jo=Zt.Consumer;function Xo(){const t=at.useContext(Zt);if(!t)throw Et(18);return t}function Zo(t){const e=at.useContext(Zt),n=at.useMemo(()=>(function(s,o){if(!s)throw Et(14);if(ue(s))return s(o);if(Array.isArray(s)||typeof s!="object")throw Et(8);return o?Object.assign(Object.assign({},o),s):s})(t.theme,e),[t.theme,e]);return t.children?at.createElement(Zt.Provider,{value:n},t.children):null}const Tr=Object.prototype.hasOwnProperty,jn={};function Ys(t,e){const n=typeof t!="string"?"sc":ar(t);jn[n]=(jn[n]||0)+1;const s=n+"-"+gn(ae+n+jn[n]);return e?e+"-"+s:s}let Qo;function Js(t,e,n){const s=vn(t),o=t,p=!mn(t),{attrs:h=pn,componentId:y=Ys(e.displayName,e.parentComponentId),displayName:v=vs(t)}=e,x=e.displayName&&e.componentId?ar(e.displayName)+"-"+e.componentId:e.componentId||y,E=s&&o.attrs?o.attrs.concat(h).filter(Boolean):h;let{shouldForwardProp:A}=e;if(s&&o.shouldForwardProp){const G=o.shouldForwardProp;if(e.shouldForwardProp){const q=e.shouldForwardProp;A=(et,j)=>G(et,j)&&q(et,j)}else A=G}const T=new Vs(n,x,s?o.componentStyle:void 0);function F(G,q){return(function(et,j,mt){const{attrs:Ct,componentStyle:nt,defaultProps:lt,foldedComponentIds:D,styledComponentId:V,target:Qt}=et,de=Ot().useContext(Zt),At=Pn(),Se=et.shouldForwardProp||At.shouldForwardProp,ht=fn(j,de,lt)||le;let kt,Ee;{const Gt=Ot().useRef(null),Pt=Gt.current;if(Pt!==null&&Pt[1]===ht&&Pt[2]===At.styleSheet&&Pt[3]===At.stylis&&Pt[7]===nt&&(function(he,xt,yt){const vt=he,gt=xt;let Ae=0;for(const _t in gt)if(Tr.call(gt,_t)&&(Ae++,vt[_t]!==gt[_t]))return!1;return Ae===yt})(Pt[0],j,Pt[4]))kt=Pt[5],Ee=Pt[6];else{kt=(function(xt,yt,vt){const gt=Object.assign(Object.assign({},yt),{className:void 0,theme:vt}),Ae=xt.length>1;for(let _t=0;_t<xt.length;_t++){const Ln=xt[_t],Je=ue(Ln)?Ln(Ae?Object.assign({},gt):gt):Ln;for(const Vt in Je)Vt==="className"?gt.className=ye(gt.className,Je[Vt]):Vt==="style"?gt.style=Object.assign(Object.assign({},gt.style),Je[Vt]):Vt in yt&&yt[Vt]===void 0||(gt[Vt]=Je[Vt])}return"className"in yt&&typeof yt.className=="string"&&(gt.className=ye(gt.className,yt.className)),gt})(Ct,j,ht),Ee=(function(xt,yt,vt,gt){return xt.generateAndInjectStyles(yt,vt,gt)})(nt,kt,At.styleSheet,At.stylis);let he=0;for(const xt in j)Tr.call(j,xt)&&he++;Gt.current=[j,ht,At.styleSheet,At.stylis,he,kt,Ee,nt]}}const Ye=kt.as||Qt,Fn=(function(Gt,Pt,he,xt){const yt={};for(const vt in Gt)Gt[vt]===void 0||vt[0]==="$"||vt==="as"||vt==="theme"&&Gt.theme===he||(vt==="forwardedAs"?yt.as=Gt.forwardedAs:xt&&!xt(vt,Pt)||(yt[vt]=Gt[vt]));return yt})(kt,Ye,ht,Se);let Nn=ye(D,V);return Ee&&(Nn+=" "+Ee),kt.className&&(Nn+=" "+kt.className),Fn[mn(Ye)&&Ye.includes("-")?"class":"className"]=Nn,mt&&(Fn.ref=mt),(0,pt.createElement)(Ye,Fn)})(I,G,q)}F.displayName=v;let I=Ot().forwardRef(F);return I.attrs=E,I.componentStyle=T,I.displayName=v,I.shouldForwardProp=A,I.foldedComponentIds=s?ye(o.foldedComponentIds,o.styledComponentId):"",I.styledComponentId=x,I.target=s?o.target:t,Object.defineProperty(I,"defaultProps",{get(){return this._foldedDefaultProps},set(G){this._foldedDefaultProps=s?(function(q,...et){for(const j of et)bn(q,j,!0);return q})({},o.defaultProps,G):G}}),xn(I,()=>`.${I.styledComponentId}`),p&&yn(I,t,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0}),I}var Xs=new Set(["a","abbr","address","area","article","aside","audio","b","bdi","bdo","blockquote","body","button","br","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","map","mark","menu","meter","nav","object","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","slot","small","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","switch","symbol","text","textPath","tspan","use"]);function Cr(t,e){const n=[t[0]];for(let s=0,o=e.length;s<o;s+=1)n.push(e[s],t[s+1]);return n}const Pr=t=>(yr.add(t),t);function we(t,...e){if(ue(t)||be(t))return Pr(Bt(Cr(pn,[t,...e])));const n=t;return e.length===0&&n.length===1&&typeof n[0]=="string"?Bt(n):Pr(Bt(Cr(n,e)))}function In(t,e,n=le){if(!e)throw Et(1,e);const s=(o,...p)=>t(e,n,we(o,...p));return s.attrs=o=>In(t,e,Object.assign(Object.assign({},n),{attrs:Array.prototype.concat(n.attrs,o).filter(Boolean)})),s.withConfig=o=>In(t,e,Object.assign(Object.assign({},n),o)),s}const jr=t=>In(Js,t),Zs=jr;Xs.forEach(t=>{Zs[t]=jr(t)});class Qs{constructor(e,n){this.instanceRules=new Map,this.rules=e,this.componentId=n,this.isStatic=(function(s){for(let o=0;o<s.length;o+=1){const p=s[o];if(ue(p)&&!vn(p))return!1}return!0})(e),pe.registerId(this.componentId)}removeStyles(e,n){this.instanceRules.delete(e),this.rebuildGroup(n)}renderStyles(e,n,s,o){const p=this.componentId;if(this.isStatic){if(s.hasNameForId(p,p+e))this.instanceRules.has(e)||this.computeRules(e,n,s,o);else{const y=this.computeRules(e,n,s,o);s.insertRules(p,y.name,y.rules)}return}const h=this.instanceRules.get(e);if(this.computeRules(e,n,s,o),!s.server&&h){const y=h.rules,v=this.instanceRules.get(e).rules;if(y.length===v.length){let x=!0;for(let E=0;E<y.length;E++)if(y[E]!==v[E]){x=!1;break}if(x)return}}this.rebuildGroup(s)}computeRules(e,n,s,o){const p=ve(Bt(this.rules,n,s,o)),h={name:this.componentId+e,rules:o(p,"")};return this.instanceRules.set(e,h),h}rebuildGroup(e){const n=this.componentId;e.clearRules(n);for(const s of this.instanceRules.values())e.insertRules(n,s.name,s.rules)}}function _s(t,...e){const n=we(t,...e),s=`sc-global-${gn(JSON.stringify(n))}`,o=new Qs(n,s),p=y=>{const v=Pn(),x=at.useContext(Zt);let E;{const A=at.useRef(null);A.current===null&&(A.current=v.styleSheet.allocateGSInstance(s)),E=A.current}v.styleSheet.server&&h(E,y,v.styleSheet,x,v.stylis);{const A=o.isStatic?[E,v.styleSheet,o]:[E,y,v.styleSheet,x,v.stylis,o],T=at.useRef(o);at.useLayoutEffect(()=>{v.styleSheet.server||(T.current!==o&&(v.styleSheet.clearRules(s),T.current=o),h(E,y,v.styleSheet,x,v.stylis))},A),at.useLayoutEffect(()=>()=>{v.styleSheet.server||o.removeStyles(E,v.styleSheet)},[E,v.styleSheet,o])}return v.styleSheet.server&&o.instanceRules.delete(E),null};function h(y,v,x,E,A){if(o.isStatic)o.renderStyles(y,fs,x,A);else{const T=Object.assign(Object.assign({},v),{theme:fn(v,E,p.defaultProps)});o.renderStyles(y,T,x,A)}}return at.memo(p)}function He(t,e,n,s,o){for(const p in t){const h=t[p],y=o?o+"-"+p:p;if(typeof h=="object"&&h!==null){const v={};He(h,e,v,s,y),n[p]=v}else n[p]=s(y,h,p)}}function Ir(t,e,n,s){let o="";for(const p in t){const h=t[p],y=e[p],v=s?s+"-"+p:p;typeof h=="object"&&h!==null?typeof y=="object"&&y!==null&&(o+=Ir(h,y,n,v)):y!==void 0&&typeof y!="function"&&(o+="--"+n+v+":"+y+";")}return o}function _o(t,e){var n,s;const o=((n=e?.prefix)!==null&&n!==void 0?n:"sc")+"-",p=(s=e?.selector)!==null&&s!==void 0?s:":root",h=(function(x,E){const A={};return He(x,E,A,T=>"--"+E+T),A})(t,o),y=(function(x,E){const A={};return He(x,E,A,(T,F)=>"var(--"+E+T+", "+F+")"),A})(t,o),v=_s`
3
+ ${p} {
4
+ ${x=>Ir(t,x.theme,o)}
5
+ }
6
+ `;return Object.assign(y,{GlobalStyle:v,raw:t,vars:h,resolve(x){if(!ce)throw new Error("createTheme.resolve() is client-only");const E=x??document.documentElement;return(function(A,T,F){const I={};return He(A,T,I,(G,q)=>F.getPropertyValue("--"+T+G).trim()||q),I})(t,o,getComputedStyle(E))}})}var $r;class qs{constructor(e,n){this[$r]=!0,this.inject=(s,o=Tn)=>{const p=this.getName(o);if(!s.hasNameForId(this.id,p)){const h=o(this.rules,p,"@keyframes");s.insertRules(this.id,p,h)}},this.name=e,this.id=ir+e,this.rules=n,me(this.id),xn(this,()=>{throw Et(12,String(this.name))})}getName(e=Tn){return e.hash?this.name+dn(+e.hash>>>0):this.name}}function qo(t,...e){const n=ve(we(t,...e)),s=gn(n);return new qs(s,n)}function ti(t){const e=at.forwardRef((n,s)=>{const o=fn(n,at.useContext(Zt),t.defaultProps);return at.createElement(t,Object.assign(Object.assign({},n),{theme:o,ref:s}))});return e.displayName=`WithTheme(${ur(t)})`,yn(e,t)}$r=br;class ei{constructor({nonce:e}={}){this._emitSheetCSS=()=>{const n=this.instance.toString();if(!n)return"";const s=this.instance.options.nonce||En();return`<style ${ve([s&&`nonce="${s}"`,`${zt}="true"`,`${Be}="${ae}"`].filter(Boolean)," ")}>${n}</style>`},this.getStyleTags=()=>{if(this.sealed)throw Et(2);return this._emitSheetCSS()},this.getStyleElement=()=>{if(this.sealed)throw Et(2);const n=this.instance.toString();if(!n)return[];const s={[zt]:"",[Be]:ae,dangerouslySetInnerHTML:{__html:n}},o=this.instance.options.nonce||En();return o&&(s.nonce=o),[at.createElement("style",Object.assign({},s,{key:"sc-0-0"}))]},this.seal=()=>{this.sealed=!0},this.instance=new pe({isServer:!0,nonce:e}),this.sealed=!1}collectStyles(e){if(this.sealed)throw Et(2);return at.createElement(Ks,{sheet:this.instance},e)}interleaveWithNodeStream(e){throw Et(3)}}const ni=null,ri=null,Mr=/:(?:(first)-child|(last)-child|(only)-child|(nth-child)\(([^()]+)\)|(nth-last-child)\(([^()]+)\))/g,fe=null,$n=null;function to(t){return t.indexOf("-child")===-1?t:(Mr.lastIndex=0,t.replace(Mr,(e,n,s,o,p,h,y,v)=>n?`:nth-child(1 of ${fe})`:s?`:nth-last-child(1 of ${fe})`:o?`:nth-child(1 of ${fe}):nth-last-child(1 of ${fe})`:p?h.indexOf(" of ")!==-1?e:`:nth-child(${h} of ${fe})`:v.indexOf(" of ")!==-1?e:`:nth-last-child(${v} of ${fe})`))}function eo(t,e){if(t.indexOf("+")===-1)return;let n=0,s=0;for(let o=0;o<t.length;o++){const p=t.charCodeAt(o);if(p===40)n++;else if(p===41)n--;else if(p===91)s++;else if(p===93)s--;else if(p===43&&n===0&&s===0&&!An(t,o)){const h=t.substring(0,o),y=t.substring(o+1);e.push(h+"+"+$n+"+"+y),e.push(h+"+"+$n+"+"+$n+"+"+y)}}}function si(t){if(t.type===us){const e=t.props,n=[];for(let s=0;s<e.length;s++){const o=to(e[s]);n.push(o),eo(o,n)}t.props=n}}const no=t=>Object.keys(t).reduce((e,n)=>(e[n]=(s,...o)=>we`
7
+ @media (max-width: ${t[n]}) {
8
+ ${we(s,...o)};
9
+ }
10
+ `,e),{}),ro=t=>({space:{...t.spaces,xxxs:t.spaces[1],xxs:t.spaces[2],xxs2:t.spaces[3],xs:t.spaces[4],s:t.spaces[5],m:t.spaces[6],l:t.spaces[7],xl:t.spaces[8],xxl:t.spaces[9]},fontSizes:{...t.fontSizes,title:{500:t.fontSizes[3],600:t.fontSizes[4],700:t.fontSizes[5],800:t.fontSizes[6],900:t.fontSizes[7]},subTitle:{300:t.fontSizes[1],400:t.fontSizes[2]},label:{200:t.fontSizes[0],300:t.fontSizes[1],400:t.fontSizes[2]},value:{300:t.fontSizes[1],400:t.fontSizes[2],500:t.fontSizes[3],600:t.fontSizes[4]},hyperlink:{200:t.fontSizes[0],300:t.fontSizes[1],400:t.fontSizes[2]},microText:{200:t.fontSizes[0]}},fontWeights:{...t.fontWeights,thin:t.fontWeights[0],light:t.fontWeights[1],regular:t.fontWeights[3],semibold:t.fontWeights[5],bold:t.fontWeights[8]},lineHeights:{...t.lineHeights,r:t.lineHeights[0],m:t.lineHeights[1],l:t.lineHeights[2],xl:t.lineHeights[3]},letterSpacings:{normal:t.letterSpacings[0],tracked:t.letterSpacings[1],tight:t.letterSpacings[2],mega:t.letterSpacings[3]},fonts:{...t.fonts,default:t.fonts[0]},colors:{neutral:{"000":t.colors.neutral[0],"050":t.colors.neutral[1],"080":t.colors.neutral[2],100:t.colors.neutral[3],200:t.colors.neutral[4],300:t.colors.neutral[5],400:t.colors.neutral[6],500:t.colors.neutral[7],600:t.colors.neutral[8],700:t.colors.neutral[9],800:t.colors.neutral[10]},brand:{100:t.colors.brand[0],200:t.colors.brand[1],250:t.colors.brand[8],300:t.colors.brand[2],400:t.colors.brand[3],500:t.colors.brand[4],600:t.colors.brand[5],700:t.colors.brand[6],800:t.colors.brand[7]},success:{300:t.colors.success[0],400:t.colors.success[1],600:t.colors.success[2],900:t.colors.success[3],950:t.colors.success[4]},warning:{400:t.colors.warning[0],500:t.colors.warning[1],600:t.colors.warning[1],900:t.colors.warning[2],950:t.colors.warning[3]},danger:{200:t.colors.danger[0],400:t.colors.danger[1],600:t.colors.danger[2],900:t.colors.danger[3],950:t.colors.danger[4]}},shadows:{xs:t.shadows[0],s:t.shadows[1],m:t.shadows[2],l:t.shadows[3],xl:t.shadows[4]},breakpoints:{...t.breakpoints,xsmall:t.breakpoints[3],small:t.breakpoints[0],medium:t.breakpoints[1],large:t.breakpoints[2]},media:no({xsmall:t.breakpoints[3],small:t.breakpoints[0],medium:t.breakpoints[1],large:t.breakpoints[2]}),zIndex:{dialog:t.zIndex[0],popper:t.zIndex[1],tooltip:t.zIndex[2],backdrop:t.zIndex[3],loader:t.zIndex[4]},states:{_:t.states[0],motionSafe:t.states[1],motionReduce:t.states[2],first:t.states[3],last:t.states[4],odd:t.states[5],even:t.states[6],visited:t.states[7],checked:t.states[8],focusWithin:t.states[9],hover:t.states[10],focus:t.states[11],focusVisible:t.states[12],active:t.states[13],disabled:t.states[14],placeholder:t.states[15]}}),so=((t=jt())=>()=>ro(t))(),ii=()=>{try{return window.parent.document,window.parent}catch{return window}},Mn=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),Rr=t=>Number(t.replace("px","")),Fr=()=>{const{width:t}=Mn(),{breakpoints:e}=so();return t<=Rr(e.small)?"small":t<=Rr(e.medium)?"medium":"large"},oo="microFrontendApps",io=()=>!0,ao=t=>io()?!0:String(t).toLowerCase()===X.PRODUCTION.toLowerCase(),co=t=>t?new URL(t).pathname:"",lo=t=>{const e=document.createElement("a");return e.href=t,e.href},uo=(t,e)=>{const n=e.match(/^(?:\d+\.\d+)*/g);return t.replace(/{SYSTEM_VERSION}/,n&&n[0]||S)},po=t=>!t||!t.length?!1:t.every(e=>typeof e=="string"),We=(t,e)=>String(t).toLowerCase()===e.toLowerCase(),fo=t=>String(t).toLowerCase()===rt.APPSDK.toLowerCase(),ho=(t,e)=>{if(!We(e,X.PRODUCTION)&&!We(e,X.DEVELOPMENT))throw new Error(`invalid mode '${String(e)}' for ${t}`)},Nr=(t,e,n)=>{if(!e)throw new Error(`microFrontendApps.${t} is missing ${n} section in app.config.json`);if(!po(e.files))throw new Error(`invalid value for ${n}.files`)},go=(t,e,n)=>{const{production:s,development:o}=n;We(e,X.PRODUCTION)&&Nr(t,s,"production"),We(e,X.DEVELOPMENT)&&Nr(t,o,"development")},mo=(t,e)=>{const{mode:n=X.PRODUCTION}=e;ho(t,n);const{microappManager:s=rt.APPSDK}=e;fo(s)&&go(t,n,e)},yo=({id:t,config:e,version:n="latest"})=>{const{mode:s=X.PRODUCTION,production:o,development:p,...h}=e,y=ao(s)?o:p,v=b()({id:t},{name:t,mode:X.PRODUCTION,manifestPath:"./{SYSTEM_VERSION}/",securityContext:i.USER,isJsModule:!0},h,{mode:s},y);return v.hostUrl=P(lo(v.hostUrl||"")),v.homeRoute=P(v.homeRoute)||co(v.hostUrl),v.manifestPath=P(uo(v.manifestPath,n)),v};class vo{#t=[];init=({version:e,appConfig:n})=>{const s=n.get(oo);s&&(this.#t=Object.keys(s).map(o=>(mo(o,s[o]),yo({id:o,config:s[o],version:e}))))};getConfigById=e=>this.#t.find(n=>n.id===e)}const bo=/^https?:\/\//i,xo=(t,e)=>{if(!bo.test(t))return!1;try{return!t.startsWith(new URL(e).href)}catch{return!0}},wo=(t,e)=>{const n=[],s=[];return t.forEach(o=>{xo(o.href,e)?n.push(o):s.push(o)}),{external:n,local:s}},So=t=>{if(!t)return;const e=t,n=e.emui?._ASSET_PATH;n&&(e.__webpack_public_path__=new URL("../",n).href)},Eo=(t,e)=>{if(!(!t||!e))try{const n=t;n.__webpack_public_path__=new URL("./",e).href}catch{}},Lr=(t,e)=>{if(!t)return;if(t.emui?._ASSET_PATH){So(t);return}Eo(t,e)},Ao="ice-script-";class Dr{#t;constructor(e){this.#t=e}#e=({href:e,isESMModule:n=!0,documentEle:s})=>{const o=s.createElement("link");o.rel=n?"modulepreload":"preload",o.href=e,o.crossOrigin="anonymous",n||(o.as="script"),s.head.appendChild(o)};#n=({id:e,href:n,documentEle:s,isESMModule:o=!0})=>new Promise((p,h)=>{const y=s.createElement("script");y.id=e,y.src=O(n),y.crossOrigin="anonymous",y.nonce="__CSP_NONCE__",!ut()&&o?y.type="module":y.async=!1,y.onload=p.bind(null,y.id),y.onerror=v=>{this.#t.error({message:`Error loading script ${y.src}`,exception:new Error(v)}),h(new Error(`Unable to load script ${y.src}`,{cause:new Error(v)}))},s.head.appendChild(y)});#o=async(e,n,s)=>{if(e.length===0)return;const o=e.map(({id:p,href:h})=>this.#n({id:p,href:h,documentEle:n,isESMModule:s}));await Promise.all(o)};#r=async({scripts:e,documentEle:n,isESMModule:s,hostUrl:o})=>{if(e.length===0)return;if(!o){await this.#o(e,n,s);return}const{external:p,local:h}=wo(e,o);await this.#o(p,n,s),Lr(n.defaultView,o),await this.#o(h,n,s)};load=async(e,n)=>{const{documentEle:s,isESMModule:o}=n,p=/^https?:\/\//i,h=e.map((y,v)=>{const x=`${Ao}${n.name.toLowerCase()}-${v}`,E=p.test(y)?y:new URL(y,n.hostUrl).href;return this.#e({href:E,documentEle:s,isESMModule:o}),{id:x,href:E}});return await this.#r({scripts:h,documentEle:s,isESMModule:o,hostUrl:n.hostUrl}),Lr(s.defaultView,n.hostUrl),h.map(y=>y.id)};remove=(e="",n=document)=>new Promise(s=>{const o=n.getElementById(e);if(!o){this.#t.warn(`script with id ${e} not found`),s();return}o.remove(),s()});removeDynamicImportedScripts=(e,n)=>{const s=new RegExp(L(e),"i"),o=n.getElementsByTagName("script");for(let p=o.length-1;p>=0;p-=1){const h=o[p],{src:y}=h;s.test(y)&&h.remove()}};removePrefetchLinks=(e,n)=>{const s=new RegExp(L(e),"i"),o=n.querySelectorAll('[rel="prefetch"]');for(let p=o.length-1;p>=0;p-=1){const h=o[p],{href:y}=h;s.test(y)&&h.remove()}}}const Oo="ice-style-";class Ur{#t;constructor(e){this.#t=e}#e=({id:e,href:n,documentEle:s})=>new Promise((o,p)=>{const h=s.createElement("link");h.id=e,h.nonce="__CSP_NONCE__",h.rel="stylesheet",h.href=O(n),h.onload=o.bind(null,h.id),h.onerror=y=>{this.#t.error({message:`Error loading stylesheet ${h.href}`,exception:new Error(y)}),p(new Error(`Unable to load stylesheet ${h.href}`,{cause:new Error(y)}))},s.head.appendChild(h)});load=async(e,n)=>{const s=[],o=e.map((p,h)=>{const y=new URL(p,n.hostUrl),v=`${Oo}${n.name.toLowerCase()}-${h}`;return s.push(v),this.#e({id:v,href:y.href,documentEle:n.documentEle})});return await Promise.all(o),s};remove=(e="",n=document)=>new Promise(s=>{const o=n.getElementById(e);if(!o){this.#t.warn(`style with id ${e} not found`),s();return}o.remove(),s()});removeDynamicImportedStyles=(e,n)=>{const s=new RegExp(L(e),"i"),o=n.querySelectorAll('[rel="stylesheet"]');for(let p=o.length-1;p>=0;p-=1){const h=o[p],{href:y}=h;s.test(y)&&h.remove()}}}const To=t=>t.replace(/\/\d+\.\d+/,"/latest"),Co=t=>{let e;try{e=new URL(t)}catch{return!1}return e.protocol==="http:"||e.protocol==="https:"},Rn=new Map,Ke={get:async({hostUrl:t,manifestPath:e})=>{const n=Y(t,e),s=Rn.get(n);if(s)return s;const o=async p=>{const h=await fetch(p);if(!h.ok)throw new Error(`unable to get manifest ${p}`);if(!(h.headers?.get?.("content-type")??"").includes("application/json"))throw new Error(`manifest ${p} is not a valid json`);const v=await h.json();return Rn.set(p,v),v};try{return await o(n)}catch(p){const h=To(e);if(e!==h){const y=Y(t,h);return await o(y)}throw p}},getFullFileNameofAssets:(t,e=[])=>e.reduce((n,s)=>{const o=t[s];if(o)n.push(o);else if(Co(s))n.push(s);else throw new Error(`unable to locate ${s} in manifest`);return n},[]),clearCache:()=>Rn.clear()};class zr{#t;#e;#n;#o;#r;constructor(e){this.#e=e.guest,this.#t=e.containerId,this.#n=e?.version||S,this.#o=e.soManager,this.#r=e.eventManager}get version(){return this.#n}getObject=e=>{try{const n=this.#o.getObject(e,this.#e);if(!n)return Promise.resolve(null);const s=new tn(n.id,n.objectType);return Object.keys(n).forEach(o=>{const p=n[o];p instanceof Z?Object.defineProperty(s,o,{value:new Z({name:o,objectId:n.id}),enumerable:!0}):st(p,o)&&Object.defineProperty(s,o,{value:(...h)=>{const v=s[o]?.callContext?.callChain;return Object.defineProperty(p,"callContext",{value:{guest:this.#e,...v?.length?{callChain:v}:{}},configurable:!0,enumerable:!0,writable:!0}),n[o](...h)},enumerable:!0})}),Promise.resolve(s)}catch(n){return Promise.reject(n instanceof Error?n:new Error(String(n)))}};setAppWindowSize=e=>{if(!this.#t)return;const{size:n}=e,s=document.getElementById(this.#t);s&&(s.style.height=`${n.height}px`,s.style.width=`${n.width}px`)};subscribe=e=>this.#r.subscribe(e);unsubscribe=e=>{this.#r.unsubscribe(e)}}class Po{constructor(){window.emui||(window.emui={}),window.emui.registerApp=this.#t}#t=({appId:e,app:n})=>{if(!e)throw new Error("appId is required");if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error(`Invalid appId: ${e}`);if(!n?.uuid)throw new Error("application uuid is required");if(window.emui[e]=window.emui[e]||[],Array.isArray(window.emui[e])){const s=window.emui[e].findIndex(o=>o.uuid===n.uuid);s>-1?window.emui[e][s]=n:window.emui[e].push(n)}else{let s=window.emui[e];s?.uuid===n.uuid?(s={...s,...n},window.emui[e]=[s]):typeof s.init>"u"?window.emui[e]=[{...s,...n}]:window.emui[e]=[window.emui[e],n]}};get=({id:e,instanceId:n})=>{const s=window.emui?.[e];return Array.isArray(s)?s.find(p=>p.uuid===n)??null:s?.uuid===n?s:null};add=({id:e,instanceId:n,documentEle:s})=>{if(!n)throw new Error(`instanceId (uuid) is required to register application ${e}`);const o={uuid:n,init:null,mount:null,unmount:null},p=window.emui[e];p?Array.isArray(p)?p.push(o):window.emui[e]=[p,o]:window.emui[e]=[o],s.defaultView&&(s.defaultView.emui=s.defaultView.emui??{},s.defaultView.emui.uuid=n)};delete=({id:e,instanceId:n})=>{if(Array.isArray(window.emui[e])){const s=window.emui[e].findIndex(o=>o.uuid===n);s>-1&&window.emui[e].splice(s,1),window.emui[e].length===0&&delete window.emui[e]}else delete window.emui[e]}}const jo=12e4,Br=["click","scroll","keypress","touchstart"],Io=/\.css$/,kr=t=>Io.test(t);class $o{#t;#e;#n;#o;#r;#a=new vo;#s;#c;#i=new Map;#u=new Map;#l=new Po;#p=!0;constructor(e){const{logger:n}=e;if(!n)throw new Error("logger is required");this.#t=e.logger,this.#e=e.version,this.#p=e.extendSession??!0,this.#r=new ct({version:e.version,baseUrl:e.appConfigBaseUrl}),this.#n=new Dr(n),this.#o=new Ur(n),this.#s=new qe,this.#c=new en(this.#t)}#g(e){return typeof e=="function"}#m=e=>e instanceof J?!0:typeof e=="object"&&e!==null&&"subscribe"in e?typeof e.subscribe=="function":!1;#y=(e,n)=>`Application ${e} with instance id ${n} is not found. Most probably the appId property of app.config.json is not set to ${e}`;#v=(e,n=document)=>{const{elementIds:s}=this.#i.get(e)||{};s&&s.forEach(o=>{const p=n.getElementById(o);p&&p.remove()})};#b=({id:e,instanceId:n,documentEle:s,elementIds:o,microFEHost:p})=>{const h=this.#l.get({id:e,instanceId:n});if(!h)throw new Error(this.#y(e,n));this.#i.set(n,{id:e,instanceId:n,elementIds:o,guest:{guestWindow:s?.defaultView,...h},microFEHost:p})};#x=async({id:e,instanceId:n,containerId:s,hostUrl:o,manifestPath:p,homeRoute:h,initialRoute:y,history:v,theme:x,microFEHost:E})=>{const A=this.#l.get({id:e,instanceId:n});if(!A)throw new Error(`Application ${e} with instance id ${n} is not found. Most probably the appId property of app.config.json is not set to ${e}`);if(!A.init||typeof A.init!="function")throw new Error(`Application ${e} with instance id ${n} doesn't expose init method`);const T=E??new zr({guest:{id:e},version:this.#e,containerId:s,logger:this.#t,soManager:this.#s,eventManager:this.#c});return A.init({host:T,hostUrl:o,manifestPath:p,homeRoute:h,initialRoute:y,prevState:null,history:v,theme:x,hostBreakpoint:Fr(),hostViewportSize:Mn(),logger:this.#t})};#w=async e=>{try{const{id:n,instanceId:s,files:o,name:p,hostUrl:h,documentEle:y,isJsModule:v}=e;this.#t.debug(`Application ${n} with instance id ${s} is loading...`);let x=o;const E=e.manifest??await Ke.get(e);x=Ke.getFullFileNameofAssets(E,o);const A=x.filter(q=>kr(q)),T=x.filter(q=>!kr(q)),F={name:p,hostUrl:h,documentEle:y,isESMModule:v},[I,G]=await Promise.all([this.#o.load(A,F),this.#n.load(T,F)]);this.#b({id:n,instanceId:s,documentEle:y,elementIds:[...I,...G],microFEHost:e.microFEHost}),e.selfInitialize||await this.#x(e),this.#t.audit(`Application ${n} with instance id ${s} loaded`)}catch(n){const s=`Application load failed. Unable to load one or more resources for ${e.id} with instance id ${e.instanceId}. ${n.message}`;throw this.#t.error({message:s,appId:e.id,exception:n}),new Error(s,{cause:n})}};#f=({id:e,instanceId:n,hostUrl:s,documentEle:o})=>{this.#t.debug(`Application ${e} with instance id ${n} unloading...`),this.#l.get({id:e,instanceId:n})&&(this.#v(n,o),this.#n.removeDynamicImportedScripts(s,o),this.#n.removePrefetchLinks(s,o),this.#o.removeDynamicImportedStyles(s,o),this.#l.delete({id:e,instanceId:n}),this.#t.audit(`Application ${e} with instance id ${n} unloaded`))};#d=async({id:e,instanceId:n})=>{const s=this.#l.get({id:e,instanceId:n});if(!s?.mount||typeof s?.mount!="function")throw new Error(`Application ${e} with instance id ${n} doesn't expose mount method`);return s.mount({containerId:`${H}${e}`,hostBreakpoint:Fr(),hostViewportSize:Mn()})};#h=({id:e,instanceId:n})=>{const s=this.#l.get({id:e,instanceId:n});if(!s?.unmount)return null;if(typeof s.unmount!="function")throw new Error(`Application ${e} with instance id ${n} doesn't expose unmount method`);return s.unmount({containerId:`${H}${e}`})};#S=({id:e,instanceId:n})=>{if(this.#p)try{const s=this.#s.getObject(te.Application);if(!s){this.#t.warn({message:`Application scripting object not available for ${e} to manage session`});return}const o=this.#i.get(n);if(!o)return;o.keepAlive=$t()(async()=>{try{await s.keepSessionAlive()}catch(h){this.#t.error(`Error keeping session alive. ${h.message}`)}},jo);const p=wt.get(n);Br.forEach(h=>{p?.contentDocument?.addEventListener(h,o.keepAlive)})}catch(s){this.#t.warn({message:`Application scripting object not available for ${e} to manage session`,exception:s})}};#E=(e,n)=>{const p=this.#s.getObject(te.Module,{id:e})?._setUnloadHandler;typeof p=="function"&&p(()=>this.closeApp(n))};#A=async e=>{const n=this.#s.getObject(te.Module,{id:e});if(!n)return!0;try{const s=await this.#c.dispatchEvent(n,{event:{id:"module.unloading",name:"unloading"},eventParams:{moduleId:e},eventOptions:{timeout:1e3}});if(Array.isArray(s)&&s.some(o=>o===!1))return this.#t.info(`Unload denied by guest ${e} via module.unloading event`),!1}catch(s){this.#t.warn({message:`Error dispatching module.unloading event for ${e}`,exception:s})}return!0};#O=e=>{if(!this.#p||!e)return;const{keepAlive:n,instanceId:s}=e;if(n){const p=wt.get(s)?.contentDocument;p&&Br.forEach(h=>{p.removeEventListener(h,n)}),e.keepAlive?.cancel()}};addScriptingObject=(e,n)=>{if(Ie(e)){const s=this.cloneScriptingObject(e);this.#s.addScriptingObject(s,n)}else this.#s.addScriptingObject(e,n)};cloneScriptingObject=e=>{if(!e)throw new Error("proxy is required");const n=new B(e.id,e.objectType);let s=[];return Object.keys(e).forEach(o=>{const p=e[o];if(this.#m(p)){const h=new Z({name:p.name||o,objectId:n.id});Object.defineProperty(n,o,{value:h,enumerable:!0});const y=({eventParams:x,eventOptions:E})=>this.dispatchEvent({event:h,eventParams:x,eventOptions:E}),v=p.subscribe(y);s.push(()=>{p.unsubscribe(v)})}else if(this.#g(p)&&(Object.defineProperty(n,o,{value:async(...h)=>{const v=n[o]?.callContext;if(v?.guest){const E=v.callChain??[],A=v.guest.id,T=this.#u.get(A),F={id:A};T&&(F.metadata=T),Object.defineProperty(p,"callContext",{value:{callChain:[...E,F]},configurable:!0,enumerable:!0,writable:!0})}const x=await p(...h);return Ie(x)?this.cloneScriptingObject(x):x},enumerable:!0}),o==="dispose")){const h=n.dispose;Object.defineProperty(n,o,{value:()=>(n._dispose(),h.apply(n)),enumerable:!0})}}),n._dispose=()=>{s.forEach(o=>{o?.()}),s=[]},n};closeAllApps=async()=>{await Promise.all([...this.#i.keys()].map(this.closeApp))};closeApp=async e=>{if(!e)throw new Error("instanceId is required");const n=this.#i.get(e);if(!n){this.#t.warn(`Application with instance id ${e} is not found`);return}const{id:s}=n;if(!await this.#A(s))return;const o=this.#a.getConfigById(s);if(!o){this.#t.warn(`Configuration for application ${s} is not found`),this.#i.delete(e),wt.remove(e);return}const{hostUrl:p}=o;try{this.#O(n),await this.#h({id:s,instanceId:e})}finally{const h=wt.get(e);h?.contentDocument&&this.#f({id:s,instanceId:e,hostUrl:p,documentEle:h.contentDocument}),this.#i.delete(e),this.#u.delete(s),wt.remove(e)}};dispatchEvent=async e=>{const{event:{id:n,name:s},eventOptions:o={}}=e,{guestId:p}=o;if(!n)throw new Error("Event Id is required");const h=n.split(".")?.[0],y=p?this.#s.getObject(h,{id:p}):this.#s.getObject(h);return y?this.#c.dispatchEvent(y,e):(this.#t.warn(`Attempt to dispatch event ${s} on unknown object ${h}`),Promise.resolve())};getApp=e=>this.#i.get(e)?.guest;getApps=()=>[...this.#i.values()].map(e=>e.guest);init=async e=>{e?this.#r.setPreloadedConfig(e):await this.#r.load(),this.#a.init({version:this.#e,appConfig:this.#r}),this.#T()};#T=()=>{const e=this.#r.get("microFrontendApps")??{},n=new Set;Object.keys(e).forEach(s=>{const o=this.#a.getConfigById(s);if(o?.hostUrl)try{n.add(new URL(o.hostUrl).origin)}catch{}}),n.forEach(s=>{const o=document.createElement("link");o.rel="preconnect",o.href=s,o.crossOrigin="anonymous",document.head.appendChild(o)})};mountApp=async e=>{if(!e)throw new Error("instanceId is required");const{id:n}=this.#i.get(e)||{};if(!n)throw new Error(`Application with instance id ${e} is not found`);const s=this.#a.getConfigById(n);if(!s)throw new Error(`Application with id ${n} is not found`);await this.#d({...s,instanceId:e})};#C=(e,n,s)=>{const o=new zr({guest:{id:s.id},version:this.#e,containerId:s.containerId,logger:this.#t,soManager:this.#s,eventManager:this.#c}),p=e.defaultView;p&&(p.emui=p.emui??{},p.emui.__host=o,p.emui.getHost=()=>p.emui?.__host??null);const h=e.createElement("link");return h.rel="preconnect",h.href=n.hostUrl,h.crossOrigin="anonymous",e.head.appendChild(h),o};openApp=async e=>{const{id:n,frameOptions:s,history:o,theme:p,homeRoute:h,initialRoute:y,metadata:v,selfInitialize:x}=e,E=Pe();v&&this.#u.set(n,v);const A=this.#a.getConfigById(n);if(!A)throw new Error(`Application ${n} is not found in app config`);const T=Ke.get(A);T.catch(()=>{});const F=await wt.create({id:n,instanceId:E,manifestPath:A.manifestPath,hostUrl:A.hostUrl,options:{title:A.name,...s}});if(!F?.contentDocument)throw new Error("unable to create iframe for the microapp");try{this.#l.add({id:n,instanceId:E,documentEle:F.contentDocument});const I=this.#C(F.contentDocument,A,{id:n,containerId:s?.containerId}),G=await T;return await this.#w({instanceId:E,history:o,theme:p,documentEle:F.contentDocument,containerId:s?.containerId,...A,homeRoute:h??A.homeRoute,initialRoute:y,microFEHost:I,selfInitialize:x,manifest:G}),x||await this.#d({instanceId:E,...A}),this.#S({id:n,instanceId:E}),this.#E(n,E),E}catch(I){throw this.#f({id:n,instanceId:E,hostUrl:A.hostUrl,documentEle:F.contentDocument}),wt.remove(E),I}};removeAllEventSubscriptions=()=>{this.#c.unsubscribeAll()};removeAllScriptingObjects=e=>{this.#s.removeAllScriptingObjects(e)};removeScriptingObject=(e,n)=>{this.#s.removeScriptingObject(e,n)};warmUp=e=>{const n=this.#a.getConfigById(e);n&&Ke.get(n).catch(()=>{})};unmountApp=async e=>{if(!e)throw new Error("instanceId is required");const{id:n}=this.#i.get(e)||{};if(!n)throw new Error(`Application with instance id ${e} is not found`);const s=this.#a.getConfigById(n);if(!s)throw new Error(`Application with id ${n} is not found`);await this.#h({...s,instanceId:e})}}})(),Xe})());
11
+
12
+ //# sourceMappingURL=emuiAppBridge.e4cfaa7d8c810b09c233.js.map