@elliemae/pui-app-sdk 4.0.0-beta.3 → 4.0.0-beta.6

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 (41) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/utils/micro-frontend/guest.js +8 -16
  3. package/dist/cjs/utils/micro-frontend/host.js +5 -0
  4. package/dist/cjs/utils/micro-frontend/ssfguest-adapter.js +47 -0
  5. package/dist/cjs/view/app-root/index.js +3 -2
  6. package/dist/cjs/view/error-boundary/default-error-template.js +1 -1
  7. package/dist/cjs/view/fields/date-range-picker/index.js +95 -0
  8. package/dist/cjs/view/fields/date-time-picker/index.js +80 -0
  9. package/dist/cjs/view/fields/input-text/index.js +71 -0
  10. package/dist/cjs/view/fields/toggle/index.js +81 -0
  11. package/dist/cjs/view/micro-app/resources/script.js +19 -15
  12. package/dist/cjs/view/micro-app/resources/style.js +15 -11
  13. package/dist/esm/utils/micro-frontend/guest.js +8 -16
  14. package/dist/esm/utils/micro-frontend/host.js +5 -0
  15. package/dist/esm/utils/micro-frontend/ssfguest-adapter.js +25 -0
  16. package/dist/esm/view/app-root/index.js +3 -2
  17. package/dist/esm/view/error-boundary/default-error-template.js +1 -1
  18. package/dist/esm/view/fields/date-range-picker/index.js +77 -0
  19. package/dist/esm/view/fields/date-time-picker/index.js +62 -0
  20. package/dist/esm/view/fields/input-text/index.js +53 -0
  21. package/dist/esm/view/fields/toggle/index.js +63 -0
  22. package/dist/esm/view/micro-app/resources/script.js +19 -15
  23. package/dist/esm/view/micro-app/resources/style.js +15 -11
  24. package/dist/types/index.d.ts +1 -1
  25. package/dist/types/utils/micro-frontend/guest.d.ts +1 -1
  26. package/dist/types/utils/micro-frontend/host.d.ts +3 -1
  27. package/dist/types/utils/micro-frontend/ssfguest-adapter.d.ts +7 -0
  28. package/dist/types/view/error-boundary/index.d.ts +2 -1
  29. package/dist/types/view/fields/date-range-picker/index.d.ts +9 -0
  30. package/dist/types/view/fields/date-range-picker/index.stories.d.ts +7 -0
  31. package/dist/types/view/fields/date-time-picker/index.d.ts +9 -0
  32. package/dist/types/view/fields/date-time-picker/index.stories.d.ts +7 -0
  33. package/dist/types/view/fields/form-item-layout/index.d.ts +1 -1
  34. package/dist/types/view/fields/input-text/index.d.ts +9 -0
  35. package/dist/types/view/fields/input-text/index.stories.d.ts +7 -0
  36. package/dist/types/view/fields/toggle/index.d.ts +9 -0
  37. package/dist/types/view/fields/toggle/index.stories.d.ts +7 -0
  38. package/dist/types/view/micro-app/resources/script.d.ts +1 -1
  39. package/dist/types/view/micro-app/resources/style.d.ts +2 -2
  40. package/dist/types/view/modals/error/index.d.ts +2 -0
  41. package/package.json +39 -39
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Software Development Kit / API for developing React Web applications. Implements cross cutting concerns as reusable APIs
4
4
 
5
- Build: [![Build Status](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/build/job/master/badge/icon)](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/build/job/master/) Deploy: [![Deploy Status](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/deploy/badge/icon)](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/deploy/) Test: [![Test Status](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/test/badge/icon)](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/test/) Infra: [![Infra Status](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/infra/badge/icon)](https://jenkins.dco.elmae/job/Platform%20UI/job/App%20SDK/job/infra/)
5
+ Build: [![Build Status](https://jenkins.dco.elmae/buildStatus/icon?job=UIPlatform/Dev/AppSDK/build/master)](https://jenkins.dco.elmae/job/UIPlatform/job/Dev/job/AppSDK/job/build/job/master/) Deploy: [![Build Status](https://jenkins.dco.elmae/buildStatus/icon?job=UIPlatform/Dev/AppSDK/deploy)](https://jenkins.dco.elmae/job/UIPlatform/Dev/AppSDK/deploy) Test: [![Build Status](https://jenkins.dco.elmae/buildStatus/icon?job=UIPlatform/QA/AppSDK/test)](https://jenkins.dco.elmae/job/UIPlatform/QA/AppSDK/test) SecScan: [![Build Status](https://jenkins.dco.elmae/buildStatus/icon?job=UIPlatform/Dev/AppSDK/secscan)](https://jenkins.dco.elmae/job/UIPlatform/job/Dev/job/AppSDK/job/secscan/)
6
6
 
7
7
  [SonarQube Report](https://sonar.ellielabs.com/overview?id=elliemae.pui.app.sdk-master)
8
8
 
@@ -23,9 +23,7 @@ __export(guest_exports, {
23
23
  CMicroAppGuest: () => CMicroAppGuest
24
24
  });
25
25
  module.exports = __toCommonJS(guest_exports);
26
- var import_react_dom = __toESM(require("react-dom"));
27
26
  var import_lodash = __toESM(require("lodash"));
28
- var import_em_ssf_guest = __toESM(require("@elliemae/em-ssf-guest"));
29
27
  var import_pui_theme = require("@elliemae/pui-theme");
30
28
  var import_window = require("../window.js");
31
29
  var import_app_config = require("../app-config/index.js");
@@ -35,6 +33,7 @@ var import_console_logger = require("./console-logger.js");
35
33
  var import_web_storage = require("../web-storage.js");
36
34
  var import_web_analytics = require("../../analytics/web-analytics.js");
37
35
  var import_appdynamics = require("../../analytics/appdynamics.js");
36
+ var import_ssfguest_adapter = require("./ssfguest-adapter.js");
38
37
  const isCrossDomain = () => {
39
38
  try {
40
39
  window.parent.document;
@@ -101,20 +100,16 @@ class CMicroAppGuest {
101
100
  }
102
101
  return value;
103
102
  }
104
- async getSSFHost() {
103
+ async getSSFAdapter() {
105
104
  let host = null;
106
105
  if (window.parent !== window) {
107
106
  if (!isCrossDomain()) {
108
107
  host = window.parent?.emui?.MicroAppHost || null;
109
- } else if (import_em_ssf_guest.default && this.props.hostName) {
110
- await import_em_ssf_guest.default.connect();
111
- const timeout = new Promise((resolve) => {
112
- setTimeout(resolve, 100, null);
113
- });
114
- host = await Promise.race([
115
- import_em_ssf_guest.default.getObject(this.props.hostName),
116
- timeout
117
- ]);
108
+ } else {
109
+ const ssfAdapter = new import_ssfguest_adapter.SSFGuestAdapter();
110
+ if (!await ssfAdapter.init())
111
+ return null;
112
+ host = ssfAdapter;
118
113
  }
119
114
  }
120
115
  return host;
@@ -123,7 +118,7 @@ class CMicroAppGuest {
123
118
  this.props = import_lodash.default.merge(this.props, options);
124
119
  this.props.history = options?.history || this.props.history;
125
120
  if (!this.props.host) {
126
- const host = await this.getSSFHost();
121
+ const host = await this.getSSFAdapter();
127
122
  if (host)
128
123
  this.props.host = host;
129
124
  }
@@ -145,9 +140,6 @@ class CMicroAppGuest {
145
140
  });
146
141
  }
147
142
  unmount(options) {
148
- const appEle = document.getElementById(this.containerId);
149
- if (appEle)
150
- import_react_dom.default.unmountComponentAtNode(appEle);
151
143
  (0, import_web_storage.removeStorageEvents)();
152
144
  return Promise.resolve().then(() => this.onUnmount ? this.onUnmount(options) : null);
153
145
  }
@@ -48,10 +48,12 @@ class CMicroAppHost {
48
48
  theme: (0, import_pui_theme.getDefaultTheme)()
49
49
  };
50
50
  this.activeGuests = {};
51
+ this.domainObjects = {};
51
52
  this.getProps = this.getProps.bind(this);
52
53
  this.getLogger = this.getLogger.bind(this);
53
54
  this.getGuests = this.getGuests.bind(this);
54
55
  this.getGuest = this.getGuest.bind(this);
56
+ this.getObject = this.getObject.bind(this);
55
57
  this.renewSessionTimer = this.renewSessionTimer.bind(this);
56
58
  this.setSystemVersion = this.setSystemVersion.bind(this);
57
59
  (0, import_app_config.loadAppConfig)().then(() => {
@@ -154,4 +156,7 @@ class CMicroAppHost {
154
156
  sendBAEvent(data) {
155
157
  (0, import_analytics.sendBAEvent)({ data, self: true });
156
158
  }
159
+ getObject(name) {
160
+ return this.domainObjects[name];
161
+ }
157
162
  }
@@ -0,0 +1,47 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var ssfguest_adapter_exports = {};
22
+ __export(ssfguest_adapter_exports, {
23
+ SSFGuestAdapter: () => SSFGuestAdapter
24
+ });
25
+ module.exports = __toCommonJS(ssfguest_adapter_exports);
26
+ var import_em_ssf_guest = __toESM(require("@elliemae/em-ssf-guest"));
27
+ class SSFGuestAdapter {
28
+ async init() {
29
+ if (!import_em_ssf_guest.default)
30
+ return false;
31
+ await import_em_ssf_guest.default.connect();
32
+ return true;
33
+ }
34
+ async getObject(name) {
35
+ return import_em_ssf_guest.default.getObject(name);
36
+ }
37
+ subscribe(message, func) {
38
+ const callback = (domainObject, eventData) => {
39
+ func(message, eventData);
40
+ };
41
+ const [objectId, eventName] = message.split(".");
42
+ return import_em_ssf_guest.default.subscribe(objectId, eventName || "", callback);
43
+ }
44
+ unsubscribe(token, objectId, eventName) {
45
+ return import_em_ssf_guest.default.unsubscribe(objectId, eventName, token);
46
+ }
47
+ }
@@ -38,6 +38,7 @@ __export(app_root_exports, {
38
38
  });
39
39
  module.exports = __toCommonJS(app_root_exports);
40
40
  var React = __toESM(require("react"));
41
+ var import_react = require("react");
41
42
  var import_react_redux = require("react-redux");
42
43
  var import_styled_components = require("styled-components");
43
44
  var import_pui_theme = require("@elliemae/pui-theme");
@@ -58,7 +59,7 @@ const AppRoot = ({
58
59
  WaitMessage,
59
60
  errorTemplate,
60
61
  children
61
- }) => /* @__PURE__ */ React.createElement(import_error_boundary.ErrorBoundary, {
62
+ }) => /* @__PURE__ */ React.createElement(import_react.StrictMode, null, /* @__PURE__ */ React.createElement(import_error_boundary.ErrorBoundary, {
62
63
  errorTemplate
63
64
  }, /* @__PURE__ */ React.createElement(import_react_redux.Provider, {
64
65
  store
@@ -69,4 +70,4 @@ const AppRoot = ({
69
70
  }, /* @__PURE__ */ React.createElement(AppToRender, {
70
71
  manageSession,
71
72
  WaitMessage
72
- }, children)))));
73
+ }, children))))));
@@ -27,4 +27,4 @@ var React = __toESM(require("react"));
27
27
  const DefaultErrorTemplate = ({
28
28
  error = new Error("We are unable to process your request"),
29
29
  errorInfo = { componentStack: "Please close your browser and login again" }
30
- }) => /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h2", null, error?.message), /* @__PURE__ */ React.createElement("section", null, errorInfo));
30
+ }) => /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h2", null, error?.message), /* @__PURE__ */ React.createElement("section", null, errorInfo?.componentStack));
@@ -0,0 +1,95 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
36
+ var __export = (target, all) => {
37
+ for (var name in all)
38
+ __defProp(target, name, { get: all[name], enumerable: true });
39
+ };
40
+ var __copyProps = (to, from, except, desc) => {
41
+ if (from && typeof from === "object" || typeof from === "function") {
42
+ for (let key of __getOwnPropNames(from))
43
+ if (!__hasOwnProp.call(to, key) && key !== except)
44
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
45
+ }
46
+ return to;
47
+ };
48
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
49
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
50
+ var date_range_picker_exports = {};
51
+ __export(date_range_picker_exports, {
52
+ DateRangePicker: () => DateRangePicker
53
+ });
54
+ module.exports = __toCommonJS(date_range_picker_exports);
55
+ var React = __toESM(require("react"));
56
+ var import_react = require("react");
57
+ var import_ds_controlled_form = require("@elliemae/ds-controlled-form");
58
+ var import_react_hook_form = require("react-hook-form");
59
+ const WrappedDateRangePicker = (_a) => {
60
+ var _b = _a, {
61
+ field: _c
62
+ } = _b, _d = _c, { value, onChange } = _d, restProps = __objRest(_d, ["value", "onChange"]), rest = __objRest(_b, [
63
+ "field"
64
+ ]);
65
+ const [fromDateString, setFromDateString] = (0, import_react.useState)(value[0]);
66
+ const [toDateString, setToDateString] = (0, import_react.useState)(value[1]);
67
+ (0, import_react.useEffect)(() => {
68
+ onChange([fromDateString, toDateString]);
69
+ }, [fromDateString, toDateString]);
70
+ return /* @__PURE__ */ React.createElement(import_ds_controlled_form.DSControlledDateRangePicker, __spreadProps(__spreadValues(__spreadValues({}, rest), restProps), {
71
+ fromDate: fromDateString,
72
+ onFromDateChange: setFromDateString,
73
+ toDate: toDateString,
74
+ onToDateChange: setToDateString
75
+ }));
76
+ };
77
+ const DateRangePicker = (_e) => {
78
+ var _f = _e, {
79
+ name,
80
+ defaultValue = ["", ""],
81
+ rules = {}
82
+ } = _f, rest = __objRest(_f, [
83
+ "name",
84
+ "defaultValue",
85
+ "rules"
86
+ ]);
87
+ return /* @__PURE__ */ React.createElement(import_react_hook_form.Controller, {
88
+ name,
89
+ defaultValue,
90
+ rules,
91
+ render: ({ field }) => /* @__PURE__ */ React.createElement(WrappedDateRangePicker, __spreadValues({
92
+ field
93
+ }, rest))
94
+ });
95
+ };
@@ -0,0 +1,80 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
36
+ var __export = (target, all) => {
37
+ for (var name in all)
38
+ __defProp(target, name, { get: all[name], enumerable: true });
39
+ };
40
+ var __copyProps = (to, from, except, desc) => {
41
+ if (from && typeof from === "object" || typeof from === "function") {
42
+ for (let key of __getOwnPropNames(from))
43
+ if (!__hasOwnProp.call(to, key) && key !== except)
44
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
45
+ }
46
+ return to;
47
+ };
48
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
49
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
50
+ var date_time_picker_exports = {};
51
+ __export(date_time_picker_exports, {
52
+ DateTimePicker: () => DateTimePicker
53
+ });
54
+ module.exports = __toCommonJS(date_time_picker_exports);
55
+ var React = __toESM(require("react"));
56
+ var import_ds_controlled_form = require("@elliemae/ds-controlled-form");
57
+ var import_react_hook_form = require("react-hook-form");
58
+ const DateTimePicker = (_a) => {
59
+ var _b = _a, {
60
+ name,
61
+ defaultValue = "",
62
+ rules = {}
63
+ } = _b, rest = __objRest(_b, [
64
+ "name",
65
+ "defaultValue",
66
+ "rules"
67
+ ]);
68
+ return /* @__PURE__ */ React.createElement(import_react_hook_form.Controller, {
69
+ name,
70
+ defaultValue,
71
+ rules,
72
+ render: (_a2) => {
73
+ var { field: _b2 } = _a2, _c = _b2, { value, onChange } = _c, restProps = __objRest(_c, ["value", "onChange"]);
74
+ return /* @__PURE__ */ React.createElement(import_ds_controlled_form.DSControlledDateTimePicker, __spreadProps(__spreadValues(__spreadValues({}, rest), restProps), {
75
+ dateTime: value,
76
+ onDateTimeChange: onChange
77
+ }));
78
+ }
79
+ });
80
+ };
@@ -0,0 +1,71 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
33
+ var __export = (target, all) => {
34
+ for (var name in all)
35
+ __defProp(target, name, { get: all[name], enumerable: true });
36
+ };
37
+ var __copyProps = (to, from, except, desc) => {
38
+ if (from && typeof from === "object" || typeof from === "function") {
39
+ for (let key of __getOwnPropNames(from))
40
+ if (!__hasOwnProp.call(to, key) && key !== except)
41
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
42
+ }
43
+ return to;
44
+ };
45
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
46
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
47
+ var input_text_exports = {};
48
+ __export(input_text_exports, {
49
+ InputText: () => InputText
50
+ });
51
+ module.exports = __toCommonJS(input_text_exports);
52
+ var React = __toESM(require("react"));
53
+ var import_ds_controlled_form = require("@elliemae/ds-controlled-form");
54
+ var import_react_hook_form = require("react-hook-form");
55
+ const InputText = (_a) => {
56
+ var _b = _a, {
57
+ name,
58
+ defaultValue = "",
59
+ rules = {}
60
+ } = _b, rest = __objRest(_b, [
61
+ "name",
62
+ "defaultValue",
63
+ "rules"
64
+ ]);
65
+ return /* @__PURE__ */ React.createElement(import_react_hook_form.Controller, {
66
+ name,
67
+ defaultValue,
68
+ rules,
69
+ render: ({ field }) => /* @__PURE__ */ React.createElement(import_ds_controlled_form.DSInputText, __spreadValues(__spreadValues({}, rest), field))
70
+ });
71
+ };
@@ -0,0 +1,81 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
36
+ var __export = (target, all) => {
37
+ for (var name in all)
38
+ __defProp(target, name, { get: all[name], enumerable: true });
39
+ };
40
+ var __copyProps = (to, from, except, desc) => {
41
+ if (from && typeof from === "object" || typeof from === "function") {
42
+ for (let key of __getOwnPropNames(from))
43
+ if (!__hasOwnProp.call(to, key) && key !== except)
44
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
45
+ }
46
+ return to;
47
+ };
48
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
49
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
50
+ var toggle_exports = {};
51
+ __export(toggle_exports, {
52
+ Toggle: () => Toggle
53
+ });
54
+ module.exports = __toCommonJS(toggle_exports);
55
+ var React = __toESM(require("react"));
56
+ var import_ds_controlled_form = require("@elliemae/ds-controlled-form");
57
+ var import_react_hook_form = require("react-hook-form");
58
+ const Toggle = (_a) => {
59
+ var _b = _a, {
60
+ name,
61
+ defaultValue = false,
62
+ rules = {}
63
+ } = _b, rest = __objRest(_b, [
64
+ "name",
65
+ "defaultValue",
66
+ "rules"
67
+ ]);
68
+ return /* @__PURE__ */ React.createElement(import_react_hook_form.Controller, {
69
+ name,
70
+ rules,
71
+ defaultValue,
72
+ render: (_a2) => {
73
+ var { field: _b2 } = _a2, _c = _b2, { value, onChange } = _c, restProps = __objRest(_c, ["value", "onChange"]);
74
+ return /* @__PURE__ */ React.createElement(import_ds_controlled_form.DSControlledToggle, __spreadProps(__spreadValues(__spreadValues({}, rest), restProps), {
75
+ checked: value,
76
+ value: value.toString(),
77
+ onChange: () => onChange(!value)
78
+ }));
79
+ }
80
+ });
81
+ };
@@ -28,21 +28,25 @@ var import_url = require("../../../utils/url.js");
28
28
  const APP_SCRIPT_ID_PREFIX = "emui-script-";
29
29
  const HEAD_SCRIPTS = /(?:emuiDiagnostics|global|global-prod|emuiUserMonitoring)(?:..*)?.js/;
30
30
  const isHeadScript = (scriptSrc) => HEAD_SCRIPTS.test(scriptSrc);
31
- const addScriptToDOM = ({ name, hostUrl, documentEle }, fileName, index) => new Promise((resolve, reject) => {
32
- const ele = documentEle.createElement("script");
33
- if (!ele)
34
- reject(new Error("Unable to insert Application scripts."));
35
- ele.id = `${APP_SCRIPT_ID_PREFIX}${name}-${index}`;
36
- const url = new URL(fileName, hostUrl);
37
- ele.src = (0, import_url.removeDoubleSlash)(url.href);
38
- ele.onload = resolve.bind(null, ele.id);
39
- ele.onerror = reject.bind(null, ele.id);
40
- ele.async = false;
41
- if (isHeadScript(ele.src))
42
- documentEle.head.appendChild(ele);
43
- else
44
- documentEle.body.appendChild(ele);
45
- });
31
+ const addScriptToDOM = ({ name, hostUrl, documentEle, manifestPath }, fileName, index) => {
32
+ if (!hostUrl || !manifestPath)
33
+ throw new Error("Unable to add scripts to DOM. hostUrl and manifestPath are required.");
34
+ return new Promise((resolve, reject) => {
35
+ const ele = documentEle.createElement("script");
36
+ if (!ele)
37
+ reject(new Error("Unable to insert Application scripts."));
38
+ ele.id = `${APP_SCRIPT_ID_PREFIX}${name}-${index}`;
39
+ const url = new URL(`${manifestPath.replace(/\/?$/, "/")}${fileName}`, hostUrl);
40
+ ele.src = (0, import_url.removeDoubleSlash)(url.href);
41
+ ele.onload = resolve.bind(null, ele.id);
42
+ ele.onerror = reject.bind(null, ele.id);
43
+ ele.async = false;
44
+ if (isHeadScript(ele.src))
45
+ documentEle.head.appendChild(ele);
46
+ else
47
+ documentEle.body.appendChild(ele);
48
+ });
49
+ };
46
50
  const removeScriptFromDOM = (elementId = "", documentEle = document) => new Promise((resolve) => {
47
51
  const ele = documentEle.getElementById(elementId);
48
52
  if (!ele)
@@ -25,17 +25,21 @@ __export(style_exports, {
25
25
  module.exports = __toCommonJS(style_exports);
26
26
  var import_url = require("../../../utils/url.js");
27
27
  const APP_STYLE_ID_PREFIX = "emui-style-";
28
- const addStylesToDOM = ({ name, hostUrl, documentEle }, fileName, index) => new Promise((resolve, reject) => {
29
- const ele = documentEle.createElement("link");
30
- if (!ele)
31
- reject(new Error("Unable to insert Application styles."));
32
- ele.id = `${APP_STYLE_ID_PREFIX}${name}-${index}`;
33
- ele.rel = "stylesheet";
34
- const url = new URL(fileName, hostUrl);
35
- ele.href = (0, import_url.removeDoubleSlash)(url.href);
36
- ele.onload = resolve.bind(null, ele.id);
37
- documentEle.head.appendChild(ele);
38
- });
28
+ const addStylesToDOM = ({ name, hostUrl, documentEle, manifestPath }, fileName, index) => {
29
+ if (!hostUrl || !manifestPath)
30
+ throw new Error("Unable to add styles to DOM. hostUrl and manifestPath are required.");
31
+ return new Promise((resolve, reject) => {
32
+ const ele = documentEle.createElement("link");
33
+ if (!ele)
34
+ reject(new Error("Unable to insert Application styles."));
35
+ ele.id = `${APP_STYLE_ID_PREFIX}${name}-${index}`;
36
+ ele.rel = "stylesheet";
37
+ const url = new URL(`${manifestPath.replace(/\/?$/, "/")}${fileName}`, hostUrl);
38
+ ele.href = (0, import_url.removeDoubleSlash)(url.href);
39
+ ele.onload = resolve.bind(null, ele.id);
40
+ documentEle.head.appendChild(ele);
41
+ });
42
+ };
39
43
  const removeStyleFromDOM = (elementId = "", documentEle = document) => new Promise((resolve) => {
40
44
  const ele = documentEle.getElementById(elementId);
41
45
  if (!ele)
@@ -1,6 +1,4 @@
1
- import ReactDOM from "react-dom";
2
1
  import _ from "lodash";
3
- import ssfGuest from "@elliemae/em-ssf-guest";
4
2
  import { getDefaultTheme } from "@elliemae/pui-theme";
5
3
  import { getWindow } from "../window.js";
6
4
  import { loadAppConfig } from "../app-config/index.js";
@@ -10,6 +8,7 @@ import { logger } from "./console-logger.js";
10
8
  import { removeStorageEvents } from "../web-storage.js";
11
9
  import { updateBAEventParameters } from "../../analytics/web-analytics.js";
12
10
  import { setAppDynamicsUserData } from "../../analytics/appdynamics.js";
11
+ import { SSFGuestAdapter } from "./ssfguest-adapter.js";
13
12
  const isCrossDomain = () => {
14
13
  try {
15
14
  window.parent.document;
@@ -76,20 +75,16 @@ class CMicroAppGuest {
76
75
  }
77
76
  return value;
78
77
  }
79
- async getSSFHost() {
78
+ async getSSFAdapter() {
80
79
  let host = null;
81
80
  if (window.parent !== window) {
82
81
  if (!isCrossDomain()) {
83
82
  host = window.parent?.emui?.MicroAppHost || null;
84
- } else if (ssfGuest && this.props.hostName) {
85
- await ssfGuest.connect();
86
- const timeout = new Promise((resolve) => {
87
- setTimeout(resolve, 100, null);
88
- });
89
- host = await Promise.race([
90
- ssfGuest.getObject(this.props.hostName),
91
- timeout
92
- ]);
83
+ } else {
84
+ const ssfAdapter = new SSFGuestAdapter();
85
+ if (!await ssfAdapter.init())
86
+ return null;
87
+ host = ssfAdapter;
93
88
  }
94
89
  }
95
90
  return host;
@@ -98,7 +93,7 @@ class CMicroAppGuest {
98
93
  this.props = _.merge(this.props, options);
99
94
  this.props.history = options?.history || this.props.history;
100
95
  if (!this.props.host) {
101
- const host = await this.getSSFHost();
96
+ const host = await this.getSSFAdapter();
102
97
  if (host)
103
98
  this.props.host = host;
104
99
  }
@@ -120,9 +115,6 @@ class CMicroAppGuest {
120
115
  });
121
116
  }
122
117
  unmount(options) {
123
- const appEle = document.getElementById(this.containerId);
124
- if (appEle)
125
- ReactDOM.unmountComponentAtNode(appEle);
126
118
  removeStorageEvents();
127
119
  return Promise.resolve().then(() => this.onUnmount ? this.onUnmount(options) : null);
128
120
  }
@@ -33,10 +33,12 @@ class CMicroAppHost {
33
33
  theme: getDefaultTheme()
34
34
  };
35
35
  this.activeGuests = {};
36
+ this.domainObjects = {};
36
37
  this.getProps = this.getProps.bind(this);
37
38
  this.getLogger = this.getLogger.bind(this);
38
39
  this.getGuests = this.getGuests.bind(this);
39
40
  this.getGuest = this.getGuest.bind(this);
41
+ this.getObject = this.getObject.bind(this);
40
42
  this.renewSessionTimer = this.renewSessionTimer.bind(this);
41
43
  this.setSystemVersion = this.setSystemVersion.bind(this);
42
44
  loadAppConfig().then(() => {
@@ -139,6 +141,9 @@ class CMicroAppHost {
139
141
  sendBAEvent(data) {
140
142
  sendBAEvent({ data, self: true });
141
143
  }
144
+ getObject(name) {
145
+ return this.domainObjects[name];
146
+ }
142
147
  }
143
148
  export {
144
149
  CMicroAppHost