@elliemae/pui-app-bridge 2.0.0-next.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/app.config.json +229 -0
- package/dist/cjs/config/app.js +90 -0
- package/dist/cjs/config/microFE.js +162 -0
- package/dist/cjs/constant.js +24 -0
- package/dist/cjs/frame.html +47 -0
- package/dist/cjs/frame.js +79 -0
- package/dist/cjs/index.html +240 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/loaders/index.js +28 -0
- package/dist/cjs/loaders/manifest.js +73 -0
- package/dist/cjs/loaders/script.js +107 -0
- package/dist/cjs/loaders/style.js +93 -0
- package/dist/cjs/microAppFactory.js +305 -0
- package/dist/cjs/microAppHost.js +120 -0
- package/dist/cjs/package.json +4 -0
- package/dist/cjs/tests/constants.js +40 -0
- package/dist/cjs/tests/flights/23.1/app.checksum1.css +3 -0
- package/dist/cjs/tests/flights/23.1/app.checksum1.js +44 -0
- package/dist/cjs/tests/flights/23.1/manifest.json +4 -0
- package/dist/cjs/tests/flights/latest/app.checksum.css +3 -0
- package/dist/cjs/tests/flights/latest/app.checksum.js +44 -0
- package/dist/cjs/tests/flights/latest/manifest.json +4 -0
- package/dist/cjs/tests/hotels/23.1/app.checksum.css +3 -0
- package/dist/cjs/tests/hotels/23.1/app.checksum.js +42 -0
- package/dist/cjs/tests/hotels/23.1/manifest.json +4 -0
- package/dist/cjs/tests/hotels/latest/app.checksum.css +3 -0
- package/dist/cjs/tests/hotels/latest/app.checksum.js +42 -0
- package/dist/cjs/tests/hotels/latest/manifest.json +4 -0
- package/dist/cjs/tests/loan/latest/index.js +92 -0
- package/dist/cjs/tests/loan/latest/manifest.json +3 -0
- package/dist/cjs/tests/scriptingObjects/analytics.js +32 -0
- package/dist/cjs/tests/scriptingObjects/appraisalServiceModule.js +96 -0
- package/dist/cjs/tests/scriptingObjects/constant.js +26 -0
- package/dist/cjs/tests/scriptingObjects/global.js +55 -0
- package/dist/cjs/tests/server.js +29 -0
- package/dist/cjs/tests/serverHandlers.js +192 -0
- package/dist/cjs/tests/task/latest/index.dev.js +58 -0
- package/dist/cjs/tests/task/latest/index.js +58 -0
- package/dist/cjs/tests/task/latest/manifest.json +4 -0
- package/dist/cjs/tests/travelhub/23.1/app.checksum.css +3 -0
- package/dist/cjs/tests/travelhub/23.1/app.checksum.js +27 -0
- package/dist/cjs/tests/travelhub/23.1/landing.checksum1.css +3 -0
- package/dist/cjs/tests/travelhub/23.1/landing.checksum1.js +8 -0
- package/dist/cjs/tests/travelhub/23.1/manifest.json +6 -0
- package/dist/cjs/tests/travelhub/latest/app.checksum.css +3 -0
- package/dist/cjs/tests/travelhub/latest/app.checksum.js +27 -0
- package/dist/cjs/tests/travelhub/latest/landing.checksum.css +3 -0
- package/dist/cjs/tests/travelhub/latest/landing.checksum.js +8 -0
- package/dist/cjs/tests/travelhub/latest/manifest.json +6 -0
- package/dist/cjs/tests/utils.js +63 -0
- package/dist/cjs/typings/appInfo.js +16 -0
- package/dist/cjs/typings/common.js +16 -0
- package/dist/cjs/typings/guest.js +16 -0
- package/dist/cjs/typings/host.js +16 -0
- package/dist/cjs/typings/index.js +16 -0
- package/dist/cjs/utils.js +34 -0
- package/dist/cjs/window.js +54 -0
- package/dist/esm/app.config.json +229 -0
- package/dist/esm/config/app.js +60 -0
- package/dist/esm/config/microFE.js +132 -0
- package/dist/esm/constant.js +4 -0
- package/dist/esm/frame.html +47 -0
- package/dist/esm/frame.js +59 -0
- package/dist/esm/index.html +240 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/loaders/index.js +8 -0
- package/dist/esm/loaders/manifest.js +53 -0
- package/dist/esm/loaders/script.js +87 -0
- package/dist/esm/loaders/style.js +73 -0
- package/dist/esm/microAppFactory.js +285 -0
- package/dist/esm/microAppHost.js +100 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/tests/constants.js +20 -0
- package/dist/esm/tests/flights/23.1/app.checksum1.css +3 -0
- package/dist/esm/tests/flights/23.1/app.checksum1.js +43 -0
- package/dist/esm/tests/flights/23.1/manifest.json +4 -0
- package/dist/esm/tests/flights/latest/app.checksum.css +3 -0
- package/dist/esm/tests/flights/latest/app.checksum.js +43 -0
- package/dist/esm/tests/flights/latest/manifest.json +4 -0
- package/dist/esm/tests/hotels/23.1/app.checksum.css +3 -0
- package/dist/esm/tests/hotels/23.1/app.checksum.js +41 -0
- package/dist/esm/tests/hotels/23.1/manifest.json +4 -0
- package/dist/esm/tests/hotels/latest/app.checksum.css +3 -0
- package/dist/esm/tests/hotels/latest/app.checksum.js +41 -0
- package/dist/esm/tests/hotels/latest/manifest.json +4 -0
- package/dist/esm/tests/loan/latest/index.js +91 -0
- package/dist/esm/tests/loan/latest/manifest.json +3 -0
- package/dist/esm/tests/scriptingObjects/analytics.js +12 -0
- package/dist/esm/tests/scriptingObjects/appraisalServiceModule.js +76 -0
- package/dist/esm/tests/scriptingObjects/constant.js +6 -0
- package/dist/esm/tests/scriptingObjects/global.js +35 -0
- package/dist/esm/tests/server.js +9 -0
- package/dist/esm/tests/serverHandlers.js +162 -0
- package/dist/esm/tests/task/latest/index.dev.js +57 -0
- package/dist/esm/tests/task/latest/index.js +57 -0
- package/dist/esm/tests/task/latest/manifest.json +4 -0
- package/dist/esm/tests/travelhub/23.1/app.checksum.css +3 -0
- package/dist/esm/tests/travelhub/23.1/app.checksum.js +26 -0
- package/dist/esm/tests/travelhub/23.1/landing.checksum1.css +3 -0
- package/dist/esm/tests/travelhub/23.1/landing.checksum1.js +7 -0
- package/dist/esm/tests/travelhub/23.1/manifest.json +6 -0
- package/dist/esm/tests/travelhub/latest/app.checksum.css +3 -0
- package/dist/esm/tests/travelhub/latest/app.checksum.js +26 -0
- package/dist/esm/tests/travelhub/latest/landing.checksum.css +3 -0
- package/dist/esm/tests/travelhub/latest/landing.checksum.js +7 -0
- package/dist/esm/tests/travelhub/latest/manifest.json +6 -0
- package/dist/esm/tests/utils.js +33 -0
- package/dist/esm/typings/appInfo.js +0 -0
- package/dist/esm/typings/common.js +0 -0
- package/dist/esm/typings/guest.js +0 -0
- package/dist/esm/typings/host.js +0 -0
- package/dist/esm/typings/index.js +0 -0
- package/dist/esm/utils.js +14 -0
- package/dist/esm/window.js +34 -0
- package/dist/public/app.config.json +229 -0
- package/dist/public/creditService/latest/creditService.checksum.js +3 -0
- package/dist/public/creditService/latest/creditService.checksum.js.br +1 -0
- package/dist/public/creditService/latest/creditService.checksum.js.gz +0 -0
- package/dist/public/creditService/latest/creditService.checksum.js.map +1 -0
- package/dist/public/creditService/latest/manifest.json +3 -0
- package/dist/public/frame.html +1 -0
- package/dist/public/guest/businessObjects.js +3 -0
- package/dist/public/guest/businessObjects.js.br +0 -0
- package/dist/public/guest/businessObjects.js.gz +0 -0
- package/dist/public/guest/businessObjects.js.map +1 -0
- package/dist/public/guest/util.js +3 -0
- package/dist/public/guest/util.js.br +2 -0
- package/dist/public/guest/util.js.gz +0 -0
- package/dist/public/guest/util.js.map +1 -0
- package/dist/public/index.html +1 -0
- package/dist/public/init.js +3 -0
- package/dist/public/init.js.br +0 -0
- package/dist/public/init.js.gz +0 -0
- package/dist/public/init.js.map +1 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js +24 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js.br +0 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js.gz +0 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js.map +1 -0
- package/dist/public/latest/app.config.json +196 -0
- package/dist/public/loan-object.js +3 -0
- package/dist/public/loan-object.js.br +0 -0
- package/dist/public/loan-object.js.gz +0 -0
- package/dist/public/loan-object.js.map +1 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js +3 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js.br +0 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js.gz +0 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js.map +1 -0
- package/dist/public/loanValidation/latest/manifest.json +3 -0
- package/dist/public/pricingService/latest/manifest.json +3 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js +57 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js.br +0 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js.gz +0 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js.map +1 -0
- package/dist/public/utils.js +3 -0
- package/dist/public/utils.js.br +0 -0
- package/dist/public/utils.js.gz +0 -0
- package/dist/public/utils.js.map +1 -0
- package/dist/types/config/app.d.ts +41 -0
- package/dist/types/config/microFE.d.ts +10 -0
- package/dist/types/constant.d.ts +1 -0
- package/dist/types/frame.d.ts +14 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/loaders/index.d.ts +3 -0
- package/dist/types/loaders/manifest.d.ts +10 -0
- package/dist/types/loaders/script.d.ts +18 -0
- package/dist/types/loaders/style.d.ts +17 -0
- package/dist/types/microAppFactory.d.ts +22 -0
- package/dist/types/microAppHost.d.ts +38 -0
- package/dist/types/tests/appFactoryFailure.test.d.ts +1 -0
- package/dist/types/tests/constants.d.ts +9 -0
- package/dist/types/tests/factory.test.d.ts +1 -0
- package/dist/types/tests/flights/23.1/app.checksum1.d.ts +0 -0
- package/dist/types/tests/flights/latest/app.checksum.d.ts +0 -0
- package/dist/types/tests/host.test.d.ts +1 -0
- package/dist/types/tests/hotels/23.1/app.checksum.d.ts +0 -0
- package/dist/types/tests/hotels/latest/app.checksum.d.ts +0 -0
- package/dist/types/tests/loan/latest/index.d.ts +0 -0
- package/dist/types/tests/pubsubAPI.test.d.ts +1 -0
- package/dist/types/tests/scriptingObject.test.d.ts +1 -0
- package/dist/types/tests/scriptingObjectEvents.test.d.ts +1 -0
- package/dist/types/tests/scriptingObjects/analytics.d.ts +6 -0
- package/dist/types/tests/scriptingObjects/appraisalServiceModule.d.ts +33 -0
- package/dist/types/tests/scriptingObjects/constant.d.ts +2 -0
- package/dist/types/tests/scriptingObjects/global.d.ts +9 -0
- package/dist/types/tests/server.d.ts +1 -0
- package/dist/types/tests/serverHandlers.d.ts +5 -0
- package/dist/types/tests/task/latest/index.d.ts +0 -0
- package/dist/types/tests/task/latest/index.dev.d.ts +0 -0
- package/dist/types/tests/travelhub/23.1/app.checksum.d.ts +0 -0
- package/dist/types/tests/travelhub/23.1/landing.checksum1.d.ts +0 -0
- package/dist/types/tests/travelhub/latest/app.checksum.d.ts +0 -0
- package/dist/types/tests/travelhub/latest/landing.checksum.d.ts +0 -0
- package/dist/types/tests/utils.d.ts +7 -0
- package/dist/types/typings/appInfo.d.ts +9 -0
- package/dist/types/typings/common.d.ts +3 -0
- package/dist/types/typings/guest.d.ts +93 -0
- package/dist/types/typings/host.d.ts +120 -0
- package/dist/types/typings/index.d.ts +5 -0
- package/dist/types/utils.d.ts +4 -0
- package/dist/types/window.d.ts +26 -0
- package/dist/umd/app.config.json +229 -0
- package/dist/umd/creditService/latest/creditService.checksum.js +3 -0
- package/dist/umd/creditService/latest/creditService.checksum.js.br +1 -0
- package/dist/umd/creditService/latest/creditService.checksum.js.gz +0 -0
- package/dist/umd/creditService/latest/creditService.checksum.js.map +1 -0
- package/dist/umd/creditService/latest/manifest.json +3 -0
- package/dist/umd/frame.html +1 -0
- package/dist/umd/guest/businessObjects.js +3 -0
- package/dist/umd/guest/businessObjects.js.br +0 -0
- package/dist/umd/guest/businessObjects.js.gz +0 -0
- package/dist/umd/guest/businessObjects.js.map +1 -0
- package/dist/umd/guest/util.js +3 -0
- package/dist/umd/guest/util.js.br +2 -0
- package/dist/umd/guest/util.js.gz +0 -0
- package/dist/umd/guest/util.js.map +1 -0
- package/dist/umd/index.html +1 -0
- package/dist/umd/index.js +24 -0
- package/dist/umd/index.js.br +0 -0
- package/dist/umd/index.js.gz +0 -0
- package/dist/umd/index.js.map +1 -0
- package/dist/umd/init.js +3 -0
- package/dist/umd/init.js.br +0 -0
- package/dist/umd/init.js.gz +0 -0
- package/dist/umd/init.js.map +1 -0
- package/dist/umd/latest/app.config.json +196 -0
- package/dist/umd/loan-object.js +3 -0
- package/dist/umd/loan-object.js.br +0 -0
- package/dist/umd/loan-object.js.gz +0 -0
- package/dist/umd/loan-object.js.map +1 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js +3 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js.br +0 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js.gz +0 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js.map +1 -0
- package/dist/umd/loanValidation/latest/manifest.json +3 -0
- package/dist/umd/pricingService/latest/manifest.json +3 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js +57 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js.br +0 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js.gz +0 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js.map +1 -0
- package/dist/umd/utils.js +3 -0
- package/dist/umd/utils.js.br +0 -0
- package/dist/umd/utils.js.gz +0 -0
- package/dist/umd/utils.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
var __accessCheck = (obj, member, msg) => {
|
|
2
|
+
if (!member.has(obj))
|
|
3
|
+
throw TypeError("Cannot " + msg);
|
|
4
|
+
};
|
|
5
|
+
var __privateGet = (obj, member, getter) => {
|
|
6
|
+
__accessCheck(obj, member, "read from private field");
|
|
7
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
+
};
|
|
9
|
+
var __privateAdd = (obj, member, value) => {
|
|
10
|
+
if (member.has(obj))
|
|
11
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
13
|
+
};
|
|
14
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
15
|
+
__accessCheck(obj, member, "write to private field");
|
|
16
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
var _logger;
|
|
20
|
+
import { removeDoubleSlash } from "../utils.js";
|
|
21
|
+
const APP_STYLE_ID_PREFIX = "ice-style-";
|
|
22
|
+
class StyleLoader {
|
|
23
|
+
constructor(logger) {
|
|
24
|
+
__privateAdd(this, _logger, void 0);
|
|
25
|
+
this.add = ({
|
|
26
|
+
name,
|
|
27
|
+
hostUrl,
|
|
28
|
+
documentEle,
|
|
29
|
+
fileName,
|
|
30
|
+
index
|
|
31
|
+
}) => new Promise((resolve, reject) => {
|
|
32
|
+
const ele = documentEle.createElement("link");
|
|
33
|
+
ele.id = `${APP_STYLE_ID_PREFIX}${name.toLowerCase()}-${index}`;
|
|
34
|
+
ele.rel = "stylesheet";
|
|
35
|
+
const url = new URL(fileName, hostUrl);
|
|
36
|
+
ele.href = removeDoubleSlash(url.href);
|
|
37
|
+
ele.onload = resolve.bind(null, ele.id);
|
|
38
|
+
ele.onerror = (err) => {
|
|
39
|
+
reject(
|
|
40
|
+
new Error(`Unable to load stylesheet ${ele.href}`, {
|
|
41
|
+
cause: new Error(err)
|
|
42
|
+
})
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
documentEle.head.appendChild(ele);
|
|
46
|
+
});
|
|
47
|
+
this.remove = (elementId = "", documentEle = document) => new Promise((resolve) => {
|
|
48
|
+
const ele = documentEle.getElementById(elementId);
|
|
49
|
+
if (!ele) {
|
|
50
|
+
__privateGet(this, _logger).warn(`style with id ${elementId} not found`);
|
|
51
|
+
resolve();
|
|
52
|
+
}
|
|
53
|
+
ele.remove();
|
|
54
|
+
resolve();
|
|
55
|
+
});
|
|
56
|
+
this.removeDynamicImportedStyles = (hostUrl, documentEle) => {
|
|
57
|
+
const hostPattern = new RegExp(hostUrl, "i");
|
|
58
|
+
const prefetchElements = documentEle.querySelectorAll('[rel="stylesheet"]');
|
|
59
|
+
for (let index = prefetchElements.length - 1; index >= 0; index -= 1) {
|
|
60
|
+
const ele = prefetchElements[index];
|
|
61
|
+
const { href } = ele;
|
|
62
|
+
if (hostPattern.test(href))
|
|
63
|
+
ele.remove();
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
__privateSet(this, _logger, logger);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
_logger = new WeakMap();
|
|
70
|
+
export {
|
|
71
|
+
APP_STYLE_ID_PREFIX,
|
|
72
|
+
StyleLoader
|
|
73
|
+
};
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
var __accessCheck = (obj, member, msg) => {
|
|
2
|
+
if (!member.has(obj))
|
|
3
|
+
throw TypeError("Cannot " + msg);
|
|
4
|
+
};
|
|
5
|
+
var __privateGet = (obj, member, getter) => {
|
|
6
|
+
__accessCheck(obj, member, "read from private field");
|
|
7
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
+
};
|
|
9
|
+
var __privateAdd = (obj, member, value) => {
|
|
10
|
+
if (member.has(obj))
|
|
11
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
13
|
+
};
|
|
14
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
15
|
+
__accessCheck(obj, member, "write to private field");
|
|
16
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
var _logger, _scriptLoader, _styleLoader, _appConfig, _microFEConfig, _host, _activeGuests, _activeApps, _removeAssetsFromDOM, _addAppToActiveAppList, _waitAndInitApplication, _initApplication, _loadApp, _unloadApp, _mountApp, _unmountApp;
|
|
20
|
+
import { Frame } from "./frame.js";
|
|
21
|
+
import { getCurrentBreakpoint, getViewportSize } from "./window.js";
|
|
22
|
+
import { CAppConfig } from "./config/app.js";
|
|
23
|
+
import { CMicroFEConfig } from "./config/microFE.js";
|
|
24
|
+
import { StyleLoader, ScriptLoader, ManifestLoader } from "./loaders/index.js";
|
|
25
|
+
import { CMicroAppHost } from "./microAppHost.js";
|
|
26
|
+
const APP_CONTAINER_ID_PREFIX = "pui-app-container-";
|
|
27
|
+
const cssType = /\.css$/;
|
|
28
|
+
const isCss = (fileName) => cssType.test(fileName);
|
|
29
|
+
class CMicroAppFactory {
|
|
30
|
+
constructor(params) {
|
|
31
|
+
__privateAdd(this, _logger, void 0);
|
|
32
|
+
__privateAdd(this, _scriptLoader, void 0);
|
|
33
|
+
__privateAdd(this, _styleLoader, void 0);
|
|
34
|
+
__privateAdd(this, _appConfig, new CAppConfig());
|
|
35
|
+
__privateAdd(this, _microFEConfig, new CMicroFEConfig());
|
|
36
|
+
__privateAdd(this, _host, void 0);
|
|
37
|
+
__privateAdd(this, _activeGuests, /* @__PURE__ */ new Map());
|
|
38
|
+
__privateAdd(this, _activeApps, {});
|
|
39
|
+
__privateAdd(this, _removeAssetsFromDOM, (id, documentEle = document) => {
|
|
40
|
+
__privateGet(this, _activeGuests).delete(id);
|
|
41
|
+
const { elementIds } = __privateGet(this, _activeApps)[id] || {};
|
|
42
|
+
if (elementIds) {
|
|
43
|
+
elementIds.forEach((elementId) => {
|
|
44
|
+
const ele = documentEle.getElementById(elementId);
|
|
45
|
+
if (ele)
|
|
46
|
+
ele.remove();
|
|
47
|
+
});
|
|
48
|
+
delete __privateGet(this, _activeApps)[id];
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
__privateAdd(this, _addAppToActiveAppList, (id, documentEle, elementIds) => {
|
|
52
|
+
const app = window.emui?.[id] || {};
|
|
53
|
+
__privateGet(this, _activeApps)[id] = { elementIds };
|
|
54
|
+
__privateGet(this, _activeGuests).set(id, {
|
|
55
|
+
guestWindow: documentEle?.defaultView,
|
|
56
|
+
...app
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
__privateAdd(this, _waitAndInitApplication, (options, requests) => {
|
|
60
|
+
const { id, name, hostUrl, manifestPath, homeRoute, history, theme } = options;
|
|
61
|
+
return Promise.all(requests).then(
|
|
62
|
+
__privateGet(this, _addAppToActiveAppList).bind(null, options.id, options.documentEle)
|
|
63
|
+
).then(
|
|
64
|
+
__privateGet(this, _initApplication).bind(null, {
|
|
65
|
+
id,
|
|
66
|
+
name,
|
|
67
|
+
hostUrl,
|
|
68
|
+
manifestPath,
|
|
69
|
+
homeRoute,
|
|
70
|
+
history,
|
|
71
|
+
theme
|
|
72
|
+
})
|
|
73
|
+
).catch((err) => {
|
|
74
|
+
const message = `Application load failed. Unable to load one or more resources for appId: ${options.id}. ${err.message}`;
|
|
75
|
+
__privateGet(this, _logger).error({
|
|
76
|
+
message,
|
|
77
|
+
appId: options.id,
|
|
78
|
+
exception: err
|
|
79
|
+
});
|
|
80
|
+
throw new Error(message);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
__privateAdd(this, _initApplication, async ({
|
|
84
|
+
id,
|
|
85
|
+
name,
|
|
86
|
+
hostUrl,
|
|
87
|
+
manifestPath,
|
|
88
|
+
homeRoute,
|
|
89
|
+
history,
|
|
90
|
+
theme
|
|
91
|
+
}) => {
|
|
92
|
+
const app = window.emui?.[id];
|
|
93
|
+
if (!app) {
|
|
94
|
+
throw new Error(
|
|
95
|
+
`Application ${name} with ${id} is not found. Most probably the appId property of app.config.json is not set to ${id}`
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
if (!app.init || typeof app.init !== "function")
|
|
99
|
+
throw new Error(
|
|
100
|
+
`Application ${name} with id ${id} doesn't expose init method`
|
|
101
|
+
);
|
|
102
|
+
return app.init({
|
|
103
|
+
host: __privateGet(this, _host),
|
|
104
|
+
hostUrl,
|
|
105
|
+
manifestPath,
|
|
106
|
+
homeRoute,
|
|
107
|
+
prevState: null,
|
|
108
|
+
history,
|
|
109
|
+
theme,
|
|
110
|
+
hostBreakpoint: getCurrentBreakpoint(),
|
|
111
|
+
hostViewportSize: getViewportSize(),
|
|
112
|
+
logger: __privateGet(this, _logger)
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
__privateAdd(this, _loadApp, async (options) => {
|
|
116
|
+
const { id, files, name, hostUrl, documentEle } = options;
|
|
117
|
+
__privateGet(this, _logger).debug(`Application ${id} is loading...`);
|
|
118
|
+
let assets = files;
|
|
119
|
+
const manifest = await ManifestLoader.get(options);
|
|
120
|
+
assets = ManifestLoader.getFullFileNameofAssets(manifest, files);
|
|
121
|
+
let counter = 0;
|
|
122
|
+
const requests = assets.map((fileName) => {
|
|
123
|
+
counter += 1;
|
|
124
|
+
const resourceOptions = {
|
|
125
|
+
name,
|
|
126
|
+
hostUrl,
|
|
127
|
+
documentEle,
|
|
128
|
+
fileName,
|
|
129
|
+
index: counter
|
|
130
|
+
};
|
|
131
|
+
return !isCss(fileName) ? __privateGet(this, _scriptLoader).add(resourceOptions) : __privateGet(this, _styleLoader).add(resourceOptions);
|
|
132
|
+
});
|
|
133
|
+
await __privateGet(this, _waitAndInitApplication).call(this, options, requests);
|
|
134
|
+
__privateGet(this, _logger).audit({ message: "Application loaded", appId: id });
|
|
135
|
+
});
|
|
136
|
+
__privateAdd(this, _unloadApp, ({ id, hostUrl, documentEle }) => {
|
|
137
|
+
__privateGet(this, _logger).debug(`Application ${id} unloading...`);
|
|
138
|
+
const app = window.emui?.[id];
|
|
139
|
+
if (!app)
|
|
140
|
+
return;
|
|
141
|
+
__privateGet(this, _removeAssetsFromDOM).call(this, id, documentEle);
|
|
142
|
+
__privateGet(this, _scriptLoader).removeDynamicImportedScripts(hostUrl, documentEle);
|
|
143
|
+
__privateGet(this, _scriptLoader).removePrefetchLinks(hostUrl, documentEle);
|
|
144
|
+
__privateGet(this, _styleLoader).removeDynamicImportedStyles(hostUrl, documentEle);
|
|
145
|
+
if (window.emui?.[id])
|
|
146
|
+
delete window.emui[id];
|
|
147
|
+
__privateGet(this, _logger).info({ message: "Application unloaded", appId: id });
|
|
148
|
+
});
|
|
149
|
+
__privateAdd(this, _mountApp, async ({ id, name }) => {
|
|
150
|
+
const app = window.emui?.[id] || {};
|
|
151
|
+
if (!app?.mount || typeof app?.mount !== "function")
|
|
152
|
+
throw new Error(
|
|
153
|
+
`Application ${name} with id ${id} doesn't expose mount method`
|
|
154
|
+
);
|
|
155
|
+
return app.mount({
|
|
156
|
+
containerId: `${APP_CONTAINER_ID_PREFIX}${id}`,
|
|
157
|
+
hostBreakpoint: getCurrentBreakpoint(),
|
|
158
|
+
hostViewportSize: getViewportSize()
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
__privateAdd(this, _unmountApp, ({ id, name }) => {
|
|
162
|
+
const app = window.emui?.[id] || {};
|
|
163
|
+
if (!app?.unmount)
|
|
164
|
+
return null;
|
|
165
|
+
if (typeof app.unmount !== "function")
|
|
166
|
+
throw new Error(
|
|
167
|
+
`Application ${name} with id ${id} doesn't expose unmount method`
|
|
168
|
+
);
|
|
169
|
+
return app.unmount({
|
|
170
|
+
containerId: `${APP_CONTAINER_ID_PREFIX}${id}`
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
this.getGuests = () => Array.from(__privateGet(this, _activeGuests).values());
|
|
174
|
+
this.getGuest = (guestId) => __privateGet(this, _activeGuests).get(guestId);
|
|
175
|
+
this.init = async () => {
|
|
176
|
+
await __privateGet(this, _appConfig).load();
|
|
177
|
+
__privateGet(this, _microFEConfig).init({
|
|
178
|
+
version: __privateGet(this, _host).version,
|
|
179
|
+
appConfig: __privateGet(this, _appConfig)
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
this.openApp = async (options) => {
|
|
183
|
+
const { id, frameOptions, history, theme } = options;
|
|
184
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
185
|
+
if (!appConfig) {
|
|
186
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
187
|
+
}
|
|
188
|
+
if (Frame.get(id))
|
|
189
|
+
throw new Error(`Application with id ${id} is already open`);
|
|
190
|
+
const frameEle = await Frame.create(id, {
|
|
191
|
+
title: appConfig.name,
|
|
192
|
+
...frameOptions
|
|
193
|
+
});
|
|
194
|
+
if (!frameEle?.contentDocument)
|
|
195
|
+
throw new Error("unable to create iframe for the microapp");
|
|
196
|
+
try {
|
|
197
|
+
await __privateGet(this, _loadApp).call(this, {
|
|
198
|
+
...appConfig,
|
|
199
|
+
history,
|
|
200
|
+
theme,
|
|
201
|
+
documentEle: frameEle.contentDocument
|
|
202
|
+
});
|
|
203
|
+
await __privateGet(this, _mountApp).call(this, appConfig);
|
|
204
|
+
} catch (err) {
|
|
205
|
+
__privateGet(this, _unloadApp).call(this, {
|
|
206
|
+
id,
|
|
207
|
+
hostUrl: appConfig.hostUrl,
|
|
208
|
+
documentEle: frameEle.contentDocument
|
|
209
|
+
});
|
|
210
|
+
Frame.remove(id);
|
|
211
|
+
throw err;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
this.closeApp = async (id) => {
|
|
215
|
+
if (!id)
|
|
216
|
+
throw new Error("id is required");
|
|
217
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
218
|
+
if (!appConfig) {
|
|
219
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
220
|
+
}
|
|
221
|
+
const { name, hostUrl } = appConfig;
|
|
222
|
+
try {
|
|
223
|
+
await __privateGet(this, _unmountApp).call(this, { id, name });
|
|
224
|
+
} finally {
|
|
225
|
+
const frameEle = Frame.get(id);
|
|
226
|
+
if (!frameEle?.contentDocument) {
|
|
227
|
+
throw new Error(`Iframe for application with id ${id} is not found`);
|
|
228
|
+
}
|
|
229
|
+
__privateGet(this, _unloadApp).call(this, { id, hostUrl, documentEle: frameEle.contentDocument });
|
|
230
|
+
Frame.remove(id);
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
this.mountApp = async (id) => {
|
|
234
|
+
if (!id)
|
|
235
|
+
throw new Error("id is required");
|
|
236
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
237
|
+
if (!appConfig) {
|
|
238
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
239
|
+
}
|
|
240
|
+
await __privateGet(this, _mountApp).call(this, appConfig);
|
|
241
|
+
};
|
|
242
|
+
this.unmountApp = async (id) => {
|
|
243
|
+
if (!id)
|
|
244
|
+
throw new Error("id is required");
|
|
245
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
246
|
+
if (!appConfig) {
|
|
247
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
248
|
+
}
|
|
249
|
+
await __privateGet(this, _unmountApp).call(this, appConfig);
|
|
250
|
+
};
|
|
251
|
+
this.closeAllApps = async () => {
|
|
252
|
+
await Promise.all(Object.keys(__privateGet(this, _activeApps)).map(this.closeApp));
|
|
253
|
+
};
|
|
254
|
+
const { logger } = params;
|
|
255
|
+
if (!logger)
|
|
256
|
+
throw new Error("logger is required");
|
|
257
|
+
__privateSet(this, _logger, params.logger);
|
|
258
|
+
__privateSet(this, _scriptLoader, new ScriptLoader(logger));
|
|
259
|
+
__privateSet(this, _styleLoader, new StyleLoader(logger));
|
|
260
|
+
__privateSet(this, _host, new CMicroAppHost(params));
|
|
261
|
+
}
|
|
262
|
+
// public api
|
|
263
|
+
get host() {
|
|
264
|
+
return __privateGet(this, _host);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
_logger = new WeakMap();
|
|
268
|
+
_scriptLoader = new WeakMap();
|
|
269
|
+
_styleLoader = new WeakMap();
|
|
270
|
+
_appConfig = new WeakMap();
|
|
271
|
+
_microFEConfig = new WeakMap();
|
|
272
|
+
_host = new WeakMap();
|
|
273
|
+
_activeGuests = new WeakMap();
|
|
274
|
+
_activeApps = new WeakMap();
|
|
275
|
+
_removeAssetsFromDOM = new WeakMap();
|
|
276
|
+
_addAppToActiveAppList = new WeakMap();
|
|
277
|
+
_waitAndInitApplication = new WeakMap();
|
|
278
|
+
_initApplication = new WeakMap();
|
|
279
|
+
_loadApp = new WeakMap();
|
|
280
|
+
_unloadApp = new WeakMap();
|
|
281
|
+
_mountApp = new WeakMap();
|
|
282
|
+
_unmountApp = new WeakMap();
|
|
283
|
+
export {
|
|
284
|
+
CMicroAppFactory
|
|
285
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
var __accessCheck = (obj, member, msg) => {
|
|
2
|
+
if (!member.has(obj))
|
|
3
|
+
throw TypeError("Cannot " + msg);
|
|
4
|
+
};
|
|
5
|
+
var __privateGet = (obj, member, getter) => {
|
|
6
|
+
__accessCheck(obj, member, "read from private field");
|
|
7
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
+
};
|
|
9
|
+
var __privateAdd = (obj, member, value) => {
|
|
10
|
+
if (member.has(obj))
|
|
11
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
13
|
+
};
|
|
14
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
15
|
+
__accessCheck(obj, member, "write to private field");
|
|
16
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
var _logger, _version, _eventManager, _scriptingObjects;
|
|
20
|
+
import { publish, subscribe, unsubscribe } from "pubsub-js";
|
|
21
|
+
import { EventManager } from "@elliemae/em-ssf-common";
|
|
22
|
+
import { FRAME_CONTAINER_ID_PREFIX } from "./frame.js";
|
|
23
|
+
import { LATEST_VERSION } from "./constant.js";
|
|
24
|
+
class CMicroAppHost {
|
|
25
|
+
constructor(params) {
|
|
26
|
+
__privateAdd(this, _logger, void 0);
|
|
27
|
+
__privateAdd(this, _version, void 0);
|
|
28
|
+
__privateAdd(this, _eventManager, void 0);
|
|
29
|
+
__privateAdd(this, _scriptingObjects, /* @__PURE__ */ new Map());
|
|
30
|
+
this.setAppWindowSize = (appSize) => {
|
|
31
|
+
const { appId, size } = appSize;
|
|
32
|
+
const frameEle = document.getElementById(
|
|
33
|
+
`${FRAME_CONTAINER_ID_PREFIX}${appId}`
|
|
34
|
+
);
|
|
35
|
+
if (frameEle) {
|
|
36
|
+
frameEle.style.height = `${size.height}px`;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
// Scripting Object methods
|
|
40
|
+
this.getObject = (objectId) => {
|
|
41
|
+
const id = objectId.toLowerCase();
|
|
42
|
+
const data = __privateGet(this, _scriptingObjects).get(id);
|
|
43
|
+
return Promise.resolve(data || null);
|
|
44
|
+
};
|
|
45
|
+
this.registerScriptingObject = (so) => {
|
|
46
|
+
if (!so?.id || !so?._toJSON) {
|
|
47
|
+
throw new Error("Object is not derived from ScriptingObject");
|
|
48
|
+
}
|
|
49
|
+
const objectId = so.id.toLowerCase();
|
|
50
|
+
if (objectId === "module")
|
|
51
|
+
throw new Error(
|
|
52
|
+
"Do not publish the module object. Create a concrete object derived from it."
|
|
53
|
+
);
|
|
54
|
+
if (__privateGet(this, _scriptingObjects).has(objectId))
|
|
55
|
+
throw new Error(`Scripting Object ${so.id} already exists`);
|
|
56
|
+
__privateGet(this, _scriptingObjects).set(objectId, so);
|
|
57
|
+
};
|
|
58
|
+
this.unregisterScriptingObject = (objectId) => {
|
|
59
|
+
__privateGet(this, _scriptingObjects).delete(
|
|
60
|
+
objectId.toLowerCase()
|
|
61
|
+
);
|
|
62
|
+
};
|
|
63
|
+
this.dispatchEvent = async ({
|
|
64
|
+
event: { id, name, requiresFeedback, scriptingObject },
|
|
65
|
+
eventParams
|
|
66
|
+
}) => __privateGet(this, _eventManager).dispatchEvent({
|
|
67
|
+
event: { id, name, requiresFeedback, scriptingObject },
|
|
68
|
+
eventParams
|
|
69
|
+
});
|
|
70
|
+
this.addEventListener = ({
|
|
71
|
+
eventId,
|
|
72
|
+
listener
|
|
73
|
+
}) => __privateGet(this, _eventManager).subscribe({ eventId, listener });
|
|
74
|
+
this.removeEventListener = ({
|
|
75
|
+
eventId,
|
|
76
|
+
subscriptionId
|
|
77
|
+
}) => __privateGet(this, _eventManager).unsubscribe({ eventId, subscriptionId });
|
|
78
|
+
this.removeAllEventListeners = () => __privateGet(this, _eventManager).unsubscribeAll();
|
|
79
|
+
// deprecated methods
|
|
80
|
+
this.publish = (eventId, data) => publish(eventId, data);
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
82
|
+
this.subscribe = (eventId, listener) => subscribe(eventId, listener);
|
|
83
|
+
this.unsubscribe = (token) => {
|
|
84
|
+
unsubscribe(token);
|
|
85
|
+
};
|
|
86
|
+
__privateSet(this, _logger, params.logger);
|
|
87
|
+
__privateSet(this, _version, params?.version || LATEST_VERSION);
|
|
88
|
+
__privateSet(this, _eventManager, new EventManager());
|
|
89
|
+
}
|
|
90
|
+
get version() {
|
|
91
|
+
return __privateGet(this, _version);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_logger = new WeakMap();
|
|
95
|
+
_version = new WeakMap();
|
|
96
|
+
_eventManager = new WeakMap();
|
|
97
|
+
_scriptingObjects = new WeakMap();
|
|
98
|
+
export {
|
|
99
|
+
CMicroAppHost
|
|
100
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const LATEST_VERSION = "latest";
|
|
2
|
+
const RELEASE_VERSION = "23.1.0";
|
|
3
|
+
const LOAN_APP_ID = "loanapp";
|
|
4
|
+
const TASK_APP_ID = "taskapp";
|
|
5
|
+
const FLIGHTS_APP_ID = "flights";
|
|
6
|
+
const HOTELS_APP_ID = "hotels";
|
|
7
|
+
const APP_CONFIG_JSON_URL = "/latest/app.config.json";
|
|
8
|
+
const LOAN_SAVED_EVENT = "loanSaved";
|
|
9
|
+
const PRE_COMMIT_EVENT = "preCommit";
|
|
10
|
+
export {
|
|
11
|
+
APP_CONFIG_JSON_URL,
|
|
12
|
+
FLIGHTS_APP_ID,
|
|
13
|
+
HOTELS_APP_ID,
|
|
14
|
+
LATEST_VERSION,
|
|
15
|
+
LOAN_APP_ID,
|
|
16
|
+
LOAN_SAVED_EVENT,
|
|
17
|
+
PRE_COMMIT_EVENT,
|
|
18
|
+
RELEASE_VERSION,
|
|
19
|
+
TASK_APP_ID
|
|
20
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
const appId = "flights";
|
|
3
|
+
const appName = "Flights App";
|
|
4
|
+
const getWindow = () => {
|
|
5
|
+
try {
|
|
6
|
+
window.parent.document;
|
|
7
|
+
return window.parent;
|
|
8
|
+
} catch (err) {
|
|
9
|
+
return window;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
let host = null;
|
|
13
|
+
let parentHistory = null;
|
|
14
|
+
let logger = null;
|
|
15
|
+
const browserWindow = getWindow();
|
|
16
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
17
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
18
|
+
browserWindow.emui[appId].init = async (options) => {
|
|
19
|
+
host = options.host;
|
|
20
|
+
parentHistory = options.history;
|
|
21
|
+
logger = options.logger;
|
|
22
|
+
return Promise.resolve();
|
|
23
|
+
};
|
|
24
|
+
browserWindow.emui[appId].mount = async () => {
|
|
25
|
+
const mainElement = document.createElement("main");
|
|
26
|
+
const pageHeaderEle = document.createElement("h1");
|
|
27
|
+
pageHeaderEle.textContent = appName;
|
|
28
|
+
pageHeaderEle.id = "header";
|
|
29
|
+
mainElement.appendChild(pageHeaderEle);
|
|
30
|
+
const versionEle = document.createElement("p");
|
|
31
|
+
versionEle.textContent = "Version: 23.1";
|
|
32
|
+
versionEle.id = "version";
|
|
33
|
+
mainElement.appendChild(versionEle);
|
|
34
|
+
document.body.appendChild(mainElement);
|
|
35
|
+
return Promise.resolve();
|
|
36
|
+
};
|
|
37
|
+
browserWindow.emui[appId].unmount = () => {
|
|
38
|
+
const mainEle = document.getElementsByTagName("main")[0];
|
|
39
|
+
if (mainEle)
|
|
40
|
+
mainEle.remove();
|
|
41
|
+
return Promise.resolve();
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
const appId = "flights";
|
|
3
|
+
const appName = "Flights App";
|
|
4
|
+
const getWindow = () => {
|
|
5
|
+
try {
|
|
6
|
+
window.parent.document;
|
|
7
|
+
return window.parent;
|
|
8
|
+
} catch (err) {
|
|
9
|
+
return window;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
let host = null;
|
|
13
|
+
let parentHistory = null;
|
|
14
|
+
let logger = null;
|
|
15
|
+
const browserWindow = getWindow();
|
|
16
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
17
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
18
|
+
browserWindow.emui[appId].init = async (options) => {
|
|
19
|
+
host = options.host;
|
|
20
|
+
parentHistory = options.history;
|
|
21
|
+
logger = options.logger;
|
|
22
|
+
return Promise.resolve();
|
|
23
|
+
};
|
|
24
|
+
browserWindow.emui[appId].mount = async () => {
|
|
25
|
+
const mainElement = document.createElement("main");
|
|
26
|
+
const pageHeaderEle = document.createElement("h1");
|
|
27
|
+
pageHeaderEle.textContent = appName;
|
|
28
|
+
pageHeaderEle.id = "header";
|
|
29
|
+
mainElement.appendChild(pageHeaderEle);
|
|
30
|
+
const versionEle = document.createElement("p");
|
|
31
|
+
versionEle.textContent = "Version: latest";
|
|
32
|
+
versionEle.id = "version";
|
|
33
|
+
mainElement.appendChild(versionEle);
|
|
34
|
+
document.body.appendChild(mainElement);
|
|
35
|
+
return Promise.resolve();
|
|
36
|
+
};
|
|
37
|
+
browserWindow.emui[appId].unmount = () => {
|
|
38
|
+
const mainEle = document.getElementsByTagName("main")[0];
|
|
39
|
+
if (mainEle)
|
|
40
|
+
mainEle.remove();
|
|
41
|
+
return Promise.resolve();
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
(function() {
|
|
2
|
+
const appId = "hotels";
|
|
3
|
+
const appName = "Hotels App";
|
|
4
|
+
const getWindow = () => {
|
|
5
|
+
try {
|
|
6
|
+
window.parent.document;
|
|
7
|
+
return window.parent;
|
|
8
|
+
} catch (err) {
|
|
9
|
+
return window;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
let host = null;
|
|
13
|
+
let parentHistory = null;
|
|
14
|
+
let logger = null;
|
|
15
|
+
const browserWindow = getWindow();
|
|
16
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
17
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
18
|
+
browserWindow.emui[appId].init = async (options) => {
|
|
19
|
+
host = options.host;
|
|
20
|
+
parentHistory = options.history;
|
|
21
|
+
logger = options.logger;
|
|
22
|
+
return Promise.resolve();
|
|
23
|
+
};
|
|
24
|
+
browserWindow.emui[appId].mount = async () => {
|
|
25
|
+
const mainElement = document.createElement("main");
|
|
26
|
+
const pageHeaderEle = document.createElement("h1");
|
|
27
|
+
pageHeaderEle.textContent = appName;
|
|
28
|
+
mainElement.appendChild(pageHeaderEle);
|
|
29
|
+
const versionEle = document.createElement("p");
|
|
30
|
+
versionEle.textContent = "Version: 23.1";
|
|
31
|
+
mainElement.appendChild(versionEle);
|
|
32
|
+
document.body.appendChild(mainElement);
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
};
|
|
35
|
+
browserWindow.emui[appId].unmount = () => {
|
|
36
|
+
const mainEle = document.getElementsByTagName("main")[0];
|
|
37
|
+
if (mainEle)
|
|
38
|
+
mainEle.remove();
|
|
39
|
+
return Promise.resolve();
|
|
40
|
+
};
|
|
41
|
+
})();
|