@worthai/onboarding-sdk 2.0.8 → 2.0.9

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/index.js CHANGED
@@ -5,10 +5,12 @@ const createChildSite = /* @__PURE__ */ __name((args) => {
5
5
  const app = args.window || window;
6
6
  const queryParams = args.queryParams;
7
7
  const iframe = document.createElement("iframe");
8
+ const state = { mode };
8
9
  const setMode = /* @__PURE__ */ __name((mode2) => {
10
+ state.mode = mode2;
9
11
  postMessage({
10
12
  type: "SET_IFRAME_MODE",
11
- payload: { mode: mode2 }
13
+ payload: { mode: state.mode }
12
14
  });
13
15
  }, "setMode");
14
16
  const refreshSize = /* @__PURE__ */ __name(() => {
@@ -30,6 +32,9 @@ const createChildSite = /* @__PURE__ */ __name((args) => {
30
32
  }, "buildIframeSrc");
31
33
  const subscribe = /* @__PURE__ */ __name((callback) => {
32
34
  const handler = /* @__PURE__ */ __name((event) => {
35
+ if (event.source !== iframe.contentWindow) {
36
+ return;
37
+ }
33
38
  callback(event);
34
39
  }, "handler");
35
40
  app.addEventListener("message", handler);
@@ -45,12 +50,12 @@ const createChildSite = /* @__PURE__ */ __name((args) => {
45
50
  subscribe((event) => {
46
51
  switch (event.data.type) {
47
52
  case "IFRAME_RESIZE":
48
- if (autoResize === false) return;
53
+ if (autoResize === false || state.mode === "non-embedded") return;
49
54
  iframe.style.border = "none";
50
55
  iframe.style.height = `${event.data.payload.height}px`;
51
56
  break;
52
57
  case "IFRAME_INITIALIZED":
53
- setMode(mode);
58
+ setMode(state.mode);
54
59
  postMessage({
55
60
  type: "IFRAME_RENDERED_ON_PARENT_SITE"
56
61
  });
@@ -95,9 +100,6 @@ const createOnboardingApp = /* @__PURE__ */ __name((args) => {
95
100
  const prev = /* @__PURE__ */ __name(() => {
96
101
  postMessage({ type: "PREV_STAGE" });
97
102
  }, "prev");
98
- const setMode = /* @__PURE__ */ __name((mode) => {
99
- postMessage({ type: "SET_IFRAME_MODE", payload: { mode } });
100
- }, "setMode");
101
103
  const setCustomCss = /* @__PURE__ */ __name((css) => {
102
104
  postMessage({ type: "SET_CUSTOM_CSS", payload: { css } });
103
105
  }, "setCustomCss");
@@ -112,40 +114,33 @@ const createOnboardingApp = /* @__PURE__ */ __name((args) => {
112
114
  detachedChildApp.iframe.id = id;
113
115
  document.getElementById(id)?.remove();
114
116
  document.querySelector("body")?.appendChild(detachedChildApp.iframe);
115
- const subscription = detachedChildApp.subscribe(
116
- (event) => {
117
- if (event.data.type === "IFRAME_INITIALIZED") {
118
- detachedChildApp.postMessage({ type: "START_DETACHED_APP" });
119
- subscription.unsubscribe();
120
- }
121
- }
122
- );
123
117
  detachedChildAppSubscription = detachedChildApp.subscribe(
124
118
  (event) => {
125
119
  if (event.data.type === "DETACHED_EVENT") {
126
- postMessage(event.data);
127
120
  const detachedEvent = event.data.payload;
128
121
  switch (detachedEvent.type) {
129
122
  case "SHOW_DETACHED_IFRAME":
130
123
  detachedChildApp.iframe.style.display = "block";
131
124
  break;
132
125
  case "HIDE_DETACHED_IFRAME":
126
+ detachedChildApp.postMessage(event.data);
133
127
  detachedChildApp.iframe.style.display = "none";
134
128
  break;
129
+ default:
130
+ postMessage(event.data);
131
+ break;
135
132
  }
136
133
  }
137
134
  }
138
135
  );
139
136
  }, "appendDetachedOnboardingApp");
140
137
  const onIframeInitialized = /* @__PURE__ */ __name(() => {
138
+ appendDetachedOnboardingApp();
141
139
  childAppSubscription = subscribe(
142
140
  (event) => {
143
- if (event.data.type === "IFRAME_INITIALIZED" && inviteToken) {
141
+ if (event.data.type === "IFRAME_INITIALIZED") {
144
142
  postMessage({ type: "INVITE_TOKEN_SENT", payload: { inviteToken } });
145
143
  }
146
- if (event.data.type === "ONBOARDING_STARTED") {
147
- appendDetachedOnboardingApp();
148
- }
149
144
  if (event.data.type === "DETACHED_EVENT") {
150
145
  detachedChildApp.postMessage(event.data);
151
146
  }
@@ -163,14 +158,10 @@ const createOnboardingApp = /* @__PURE__ */ __name((args) => {
163
158
  cleanupChildApp();
164
159
  cleanupDetachedApp();
165
160
  }, "cleanup");
166
- const onLoad = /* @__PURE__ */ __name(() => {
167
- onIframeInitialized();
168
- childApp.iframe.removeEventListener("load", onLoad);
169
- }, "onLoad");
170
- childApp.iframe.addEventListener("load", onLoad);
161
+ onIframeInitialized();
171
162
  return {
172
163
  subscribe,
173
- setMode,
164
+ setMode: childApp.setMode,
174
165
  setCustomCss,
175
166
  iframe: childApp.iframe,
176
167
  next,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/createChildSite/index.ts","../src/utils/createOnboardingApp/index.ts","../src/utils/getURLQueryParams/index.ts","../src/utils/createParentSite/index.ts","../src/utils/createOnboardingConsumerApp/index.ts"],"sourcesContent":["import type { AnyMessage } from '@/interfaces/AnyMessage';\nimport type { IframeMode } from '@/interfaces/IframeMode';\nimport type { IframeQueryParams } from '@/interfaces/IframeQueryParams';\nimport type { ParentSiteMessage } from '@/interfaces/ParentSiteMessage';\n\nexport const createChildSite = (args: {\n origin: string;\n initialRoute?: string;\n queryParams?: IframeQueryParams;\n window?: Window | null;\n mode?: IframeMode;\n autoResize?: boolean;\n}) => {\n const { origin, initialRoute = '', mode, autoResize = true } = args;\n const app = args.window || window;\n const queryParams = args.queryParams;\n const iframe = document.createElement('iframe');\n\n const setMode = (mode: IframeMode) => {\n postMessage<ParentSiteMessage>({\n type: 'SET_IFRAME_MODE',\n payload: { mode },\n });\n };\n\n const refreshSize = () => {\n postMessage<ParentSiteMessage>({ type: 'REFRESH_SIZE' });\n };\n\n const buildIframeSrc = () => {\n let srcUrl: URL;\n if (initialRoute) {\n srcUrl = new URL(initialRoute.replace(/^\\//, ''), origin);\n } else {\n srcUrl = new URL(origin);\n }\n\n for (const [key, value] of Object.entries(queryParams || {})) {\n if (typeof value === 'string') {\n srcUrl.searchParams.set(key, value);\n }\n }\n\n return srcUrl;\n };\n\n const subscribe = <T extends AnyMessage>(\n callback: (event: MessageEvent<T>) => void\n ) => {\n const handler = (event: MessageEvent<T>) => {\n callback(event);\n };\n\n app.addEventListener('message', handler);\n return {\n unsubscribe: () => app.removeEventListener('message', handler),\n };\n };\n\n const initializeChildSite = () => {\n iframe.style.width = '100%';\n iframe.style.height = '100%';\n iframe.style.border = 'none';\n iframe.src = buildIframeSrc().toString();\n\n subscribe((event) => {\n switch (event.data.type) {\n case 'IFRAME_RESIZE':\n if (autoResize === false) return;\n iframe.style.border = 'none';\n iframe.style.height = `${event.data.payload.height}px`;\n break;\n case 'IFRAME_INITIALIZED':\n setMode(mode);\n postMessage<ParentSiteMessage>({\n type: 'IFRAME_RENDERED_ON_PARENT_SITE',\n });\n break;\n }\n });\n };\n\n const postMessage = <TMessage extends AnyMessage>(\n message: TMessage,\n transfer?: Transferable[]\n ) => {\n iframe.contentWindow?.postMessage(message, '*', transfer);\n };\n\n initializeChildSite();\n\n return { iframe, subscribe, postMessage, setMode, refreshSize };\n};\n","import type { AnyMessage } from '@/interfaces/AnyMessage';\nimport type { ChildSiteSubscription } from '@/interfaces/ChildSiteSubscription';\nimport type { IframeQueryParams } from '@/interfaces/IframeQueryParams';\nimport type { OnboardingAppMessage } from '@/interfaces/OnboardingAppMessage';\nimport type { OnboardingAppMode } from '@/interfaces/OnboardingAppMode';\nimport type { OnboardingConsumerAppMessage } from '@/interfaces/OnboardingConsumerAppMessage';\nimport { createChildSite } from '@/utils/createChildSite';\n\nexport const createOnboardingApp = (args: {\n origin: string;\n inviteToken: string;\n mode?: OnboardingAppMode;\n}) => {\n const queryParams: IframeQueryParams = {};\n const { inviteToken, ...restArgs } = args;\n const childApp = createChildSite({\n ...restArgs,\n queryParams,\n });\n const detachedChildApp = createChildSite({\n ...restArgs,\n queryParams,\n initialRoute: '/detached',\n window: childApp.iframe.contentWindow,\n autoResize: false,\n });\n let childAppSubscription: ChildSiteSubscription | undefined;\n let detachedChildAppSubscription: ChildSiteSubscription | undefined;\n\n const postMessage = (message: OnboardingConsumerAppMessage) => {\n childApp.postMessage(message as unknown as AnyMessage);\n };\n\n const subscribe = (\n callback: (event: MessageEvent<OnboardingAppMessage>) => void\n ) => {\n return childApp.subscribe(callback);\n };\n\n const skip = () => {\n postMessage({ type: 'SKIP_STAGE' });\n };\n\n const next = () => {\n postMessage({ type: 'NEXT_STAGE' });\n };\n\n const prev = () => {\n postMessage({ type: 'PREV_STAGE' });\n };\n\n const setMode = (mode: OnboardingAppMode) => {\n postMessage({ type: 'SET_IFRAME_MODE', payload: { mode } });\n };\n\n const setCustomCss = (css: string) => {\n postMessage({ type: 'SET_CUSTOM_CSS', payload: { css } });\n };\n\n const appendDetachedOnboardingApp = async () => {\n const id = 'detached-onboarding-app';\n detachedChildApp.iframe.style.display = 'none';\n detachedChildApp.iframe.style.width = '100%';\n detachedChildApp.iframe.style.height = '100%';\n detachedChildApp.iframe.style.position = 'fixed';\n detachedChildApp.iframe.style.top = '0px';\n detachedChildApp.iframe.style.left = '0px';\n detachedChildApp.iframe.id = id;\n document.getElementById(id)?.remove();\n document.querySelector('body')?.appendChild(detachedChildApp.iframe);\n\n const subscription = detachedChildApp.subscribe(\n (event: MessageEvent<OnboardingAppMessage>) => {\n if (event.data.type === 'IFRAME_INITIALIZED') {\n detachedChildApp.postMessage({ type: 'START_DETACHED_APP' });\n subscription.unsubscribe();\n }\n }\n );\n\n detachedChildAppSubscription = detachedChildApp.subscribe(\n (event: MessageEvent<OnboardingAppMessage>) => {\n if (event.data.type === 'DETACHED_EVENT') {\n /**\n * Redirects the detached event to the main child app.\n */\n postMessage(event.data);\n\n const detachedEvent = event.data.payload;\n switch (detachedEvent.type) {\n case 'SHOW_DETACHED_IFRAME':\n detachedChildApp.iframe.style.display = 'block';\n break;\n case 'HIDE_DETACHED_IFRAME':\n detachedChildApp.iframe.style.display = 'none';\n break;\n default:\n break;\n }\n }\n }\n );\n };\n\n const onIframeInitialized = () => {\n childAppSubscription = subscribe(\n (event: MessageEvent<OnboardingAppMessage>) => {\n if (event.data.type === 'IFRAME_INITIALIZED' && inviteToken) {\n postMessage({ type: 'INVITE_TOKEN_SENT', payload: { inviteToken } });\n }\n\n if (event.data.type === 'ONBOARDING_STARTED') {\n appendDetachedOnboardingApp();\n }\n\n /**\n * Redirects the detached event to the detached child app.\n */\n if (event.data.type === 'DETACHED_EVENT') {\n detachedChildApp.postMessage(event.data);\n }\n }\n );\n };\n\n const cleanupChildApp = () => {\n childAppSubscription?.unsubscribe();\n };\n\n const cleanupDetachedApp = () => {\n detachedChildAppSubscription?.unsubscribe();\n detachedChildApp.iframe.remove();\n };\n\n const cleanup = () => {\n cleanupChildApp();\n cleanupDetachedApp();\n };\n\n const onLoad = () => {\n onIframeInitialized();\n childApp.iframe.removeEventListener('load', onLoad);\n };\n\n childApp.iframe.addEventListener('load', onLoad);\n\n return {\n subscribe,\n setMode,\n setCustomCss,\n iframe: childApp.iframe,\n next,\n prev,\n skip,\n refreshSize: childApp.refreshSize,\n cleanup,\n };\n};\n","import type { QueryParams } from '@/interfaces/QueryParams';\n\nexport const getURLQueryParams = <T extends QueryParams>() => {\n const urlSearchParams = new URLSearchParams(window.location.search);\n const queryParams: QueryParams = {};\n urlSearchParams.forEach((value, key) => {\n queryParams[key] = value;\n });\n\n return queryParams as T;\n};\n","import type { AnyMessage } from '@/interfaces/AnyMessage';\nimport type { ChildSiteMessage } from '@/interfaces/ChildSiteMessage';\nimport type { IframeMode } from '@/interfaces/IframeMode';\nimport type { IframeQueryParams } from '@/interfaces/IframeQueryParams';\nimport { getURLQueryParams } from '@/utils/getURLQueryParams';\n\nexport const createParentSite = () => {\n const queryParams = getURLQueryParams<IframeQueryParams>();\n\n const notifyHeight = () => {\n const height = document.body.scrollHeight;\n postMessage<ChildSiteMessage>({\n type: 'IFRAME_RESIZE',\n payload: { height },\n });\n };\n\n const postMessage = <TMessage extends AnyMessage>(message: TMessage) => {\n window.parent.postMessage(message, '*');\n };\n\n const subscribe = <T extends AnyMessage>(\n callback: (event: MessageEvent<T>) => void\n ) => {\n const handler = (event: MessageEvent<T>) => {\n callback(event);\n };\n\n window.addEventListener('message', handler);\n return {\n unsubscribe: () => window.removeEventListener('message', handler),\n };\n };\n\n const notifySize = () => {\n notifyHeight();\n };\n\n const initializeParentSite = () => {\n const observer = new ResizeObserver(notifySize);\n observer.observe(document.body);\n\n subscribe((event) => {\n switch (event.data.type) {\n case 'SET_IFRAME_MODE':\n const mode = event.data.payload.mode as IframeMode;\n document.body.style.overflow =\n mode === 'embedded' ? 'hidden' : 'auto';\n break;\n case 'REFRESH_SIZE':\n notifySize();\n break;\n default:\n break;\n }\n });\n\n postMessage<ChildSiteMessage>({ type: 'IFRAME_INITIALIZED' });\n };\n\n initializeParentSite();\n\n return {\n notifySize,\n subscribe,\n postMessage,\n queryParams,\n };\n};\n","import type { OnboardingAppMessage } from '@/interfaces/OnboardingAppMessage';\nimport type { OnboardingConsumerAppMessage } from '@/interfaces/OnboardingConsumerAppMessage';\nimport { createParentSite } from '@/utils/createParentSite';\n\nexport const createOnboardingConsumerApp = () => {\n const parentApp = createParentSite();\n\n const postMessage = (message: OnboardingAppMessage) => {\n parentApp.postMessage(message);\n };\n\n const subscribe = (\n callback: (event: MessageEvent<OnboardingConsumerAppMessage>) => void\n ) => {\n return parentApp.subscribe(callback);\n };\n\n return {\n postMessage,\n subscribe,\n notifySize: parentApp.notifySize,\n };\n};\n"],"names":["mode"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/createChildSite/index.ts","../src/utils/createOnboardingApp/index.ts","../src/utils/getURLQueryParams/index.ts","../src/utils/createParentSite/index.ts","../src/utils/createOnboardingConsumerApp/index.ts"],"sourcesContent":["import type { AnyMessage } from '@/interfaces/AnyMessage';\nimport type { ChildSiteMessage } from '@/interfaces/ChildSiteMessage';\nimport type { IframeMode } from '@/interfaces/IframeMode';\nimport type { IframeQueryParams } from '@/interfaces/IframeQueryParams';\nimport type { ParentSiteMessage } from '@/interfaces/ParentSiteMessage';\n\nexport const createChildSite = (args: {\n origin: string;\n initialRoute?: string;\n queryParams?: IframeQueryParams;\n window?: Window | null;\n mode?: IframeMode;\n autoResize?: boolean;\n}) => {\n const { origin, initialRoute = '', mode, autoResize = true } = args;\n const app = args.window || window;\n const queryParams = args.queryParams;\n const iframe = document.createElement('iframe');\n const state = { mode };\n\n const setMode = (mode: IframeMode) => {\n state.mode = mode;\n postMessage<ParentSiteMessage>({\n type: 'SET_IFRAME_MODE',\n payload: { mode: state.mode },\n });\n };\n\n const refreshSize = () => {\n postMessage<ParentSiteMessage>({ type: 'REFRESH_SIZE' });\n };\n\n const buildIframeSrc = () => {\n let srcUrl: URL;\n if (initialRoute) {\n srcUrl = new URL(initialRoute.replace(/^\\//, ''), origin);\n } else {\n srcUrl = new URL(origin);\n }\n\n for (const [key, value] of Object.entries(queryParams || {})) {\n if (typeof value === 'string') {\n srcUrl.searchParams.set(key, value);\n }\n }\n\n return srcUrl;\n };\n\n const subscribe = <T extends AnyMessage>(\n callback: (event: MessageEvent<T>) => void\n ) => {\n const handler = (event: MessageEvent<T>) => {\n if (event.source !== iframe.contentWindow) {\n return;\n }\n callback(event);\n };\n\n app.addEventListener('message', handler);\n return {\n unsubscribe: () => app.removeEventListener('message', handler),\n };\n };\n\n const initializeChildSite = () => {\n iframe.style.width = '100%';\n iframe.style.height = '100%';\n iframe.style.border = 'none';\n iframe.src = buildIframeSrc().toString();\n\n subscribe<ChildSiteMessage>((event) => {\n switch (event.data.type) {\n case 'IFRAME_RESIZE':\n if (autoResize === false || state.mode === 'non-embedded') return;\n iframe.style.border = 'none';\n iframe.style.height = `${event.data.payload.height}px`;\n break;\n case 'IFRAME_INITIALIZED':\n setMode(state.mode);\n postMessage<ParentSiteMessage>({\n type: 'IFRAME_RENDERED_ON_PARENT_SITE',\n });\n break;\n }\n });\n };\n\n const postMessage = <TMessage extends AnyMessage>(\n message: TMessage,\n transfer?: Transferable[]\n ) => {\n iframe.contentWindow?.postMessage(message, '*', transfer);\n };\n\n initializeChildSite();\n\n return { iframe, subscribe, postMessage, setMode, refreshSize };\n};\n","import type { AnyMessage } from '@/interfaces/AnyMessage';\nimport type { ChildSiteSubscription } from '@/interfaces/ChildSiteSubscription';\nimport type { IframeQueryParams } from '@/interfaces/IframeQueryParams';\nimport type { OnboardingAppMessage } from '@/interfaces/OnboardingAppMessage';\nimport type { OnboardingAppMode } from '@/interfaces/OnboardingAppMode';\nimport type { OnboardingConsumerAppMessage } from '@/interfaces/OnboardingConsumerAppMessage';\nimport { createChildSite } from '@/utils/createChildSite';\n\nexport const createOnboardingApp = (args: {\n origin: string;\n inviteToken: string;\n mode?: OnboardingAppMode;\n}) => {\n const queryParams: IframeQueryParams = {};\n const { inviteToken, ...restArgs } = args;\n const childApp = createChildSite({\n ...restArgs,\n queryParams,\n });\n const detachedChildApp = createChildSite({\n ...restArgs,\n queryParams,\n initialRoute: '/detached',\n window: childApp.iframe.contentWindow,\n autoResize: false,\n });\n let childAppSubscription: ChildSiteSubscription | undefined;\n let detachedChildAppSubscription: ChildSiteSubscription | undefined;\n\n const postMessage = (message: OnboardingConsumerAppMessage) => {\n childApp.postMessage(message as unknown as AnyMessage);\n };\n\n const subscribe = (\n callback: (event: MessageEvent<OnboardingAppMessage>) => void\n ) => {\n return childApp.subscribe(callback);\n };\n\n const skip = () => {\n postMessage({ type: 'SKIP_STAGE' });\n };\n\n const next = () => {\n postMessage({ type: 'NEXT_STAGE' });\n };\n\n const prev = () => {\n postMessage({ type: 'PREV_STAGE' });\n };\n\n const setCustomCss = (css: string) => {\n postMessage({ type: 'SET_CUSTOM_CSS', payload: { css } });\n };\n\n const appendDetachedOnboardingApp = async () => {\n const id = 'detached-onboarding-app';\n detachedChildApp.iframe.style.display = 'none';\n detachedChildApp.iframe.style.width = '100%';\n detachedChildApp.iframe.style.height = '100%';\n detachedChildApp.iframe.style.position = 'fixed';\n detachedChildApp.iframe.style.top = '0px';\n detachedChildApp.iframe.style.left = '0px';\n detachedChildApp.iframe.id = id;\n document.getElementById(id)?.remove();\n document.querySelector('body')?.appendChild(detachedChildApp.iframe);\n\n detachedChildAppSubscription = detachedChildApp.subscribe(\n (event: MessageEvent<OnboardingAppMessage>) => {\n if (event.data.type === 'DETACHED_EVENT') {\n const detachedEvent = event.data.payload;\n switch (detachedEvent.type) {\n case 'SHOW_DETACHED_IFRAME':\n detachedChildApp.iframe.style.display = 'block';\n break;\n case 'HIDE_DETACHED_IFRAME':\n detachedChildApp.postMessage(event.data);\n detachedChildApp.iframe.style.display = 'none';\n break;\n default:\n postMessage(event.data);\n break;\n }\n }\n }\n );\n };\n\n const onIframeInitialized = () => {\n appendDetachedOnboardingApp();\n\n childAppSubscription = subscribe(\n (event: MessageEvent<OnboardingAppMessage>) => {\n if (event.data.type === 'IFRAME_INITIALIZED') {\n postMessage({ type: 'INVITE_TOKEN_SENT', payload: { inviteToken } });\n }\n\n if (event.data.type === 'DETACHED_EVENT') {\n detachedChildApp.postMessage(event.data);\n }\n }\n );\n };\n\n const cleanupChildApp = () => {\n childAppSubscription?.unsubscribe();\n };\n\n const cleanupDetachedApp = () => {\n detachedChildAppSubscription?.unsubscribe();\n detachedChildApp.iframe.remove();\n };\n\n const cleanup = () => {\n cleanupChildApp();\n cleanupDetachedApp();\n };\n\n onIframeInitialized();\n\n return {\n subscribe,\n setMode: childApp.setMode,\n setCustomCss,\n iframe: childApp.iframe,\n next,\n prev,\n skip,\n refreshSize: childApp.refreshSize,\n cleanup,\n };\n};\n","import type { QueryParams } from '@/interfaces/QueryParams';\n\nexport const getURLQueryParams = <T extends QueryParams>() => {\n const urlSearchParams = new URLSearchParams(window.location.search);\n const queryParams: QueryParams = {};\n urlSearchParams.forEach((value, key) => {\n queryParams[key] = value;\n });\n\n return queryParams as T;\n};\n","import type { AnyMessage } from '@/interfaces/AnyMessage';\nimport type { ChildSiteMessage } from '@/interfaces/ChildSiteMessage';\nimport type { IframeMode } from '@/interfaces/IframeMode';\nimport type { IframeQueryParams } from '@/interfaces/IframeQueryParams';\nimport { getURLQueryParams } from '@/utils/getURLQueryParams';\n\nexport const createParentSite = () => {\n const queryParams = getURLQueryParams<IframeQueryParams>();\n\n const notifyHeight = () => {\n const height = document.body.scrollHeight;\n postMessage<ChildSiteMessage>({\n type: 'IFRAME_RESIZE',\n payload: { height },\n });\n };\n\n const postMessage = <TMessage extends AnyMessage>(message: TMessage) => {\n window.parent.postMessage(message, '*');\n };\n\n const subscribe = <T extends AnyMessage>(\n callback: (event: MessageEvent<T>) => void\n ) => {\n const handler = (event: MessageEvent<T>) => {\n callback(event);\n };\n\n window.addEventListener('message', handler);\n return {\n unsubscribe: () => window.removeEventListener('message', handler),\n };\n };\n\n const notifySize = () => {\n notifyHeight();\n };\n\n const initializeParentSite = () => {\n const observer = new ResizeObserver(notifySize);\n observer.observe(document.body);\n\n subscribe((event) => {\n switch (event.data.type) {\n case 'SET_IFRAME_MODE':\n const mode = event.data.payload.mode as IframeMode;\n document.body.style.overflow =\n mode === 'embedded' ? 'hidden' : 'auto';\n break;\n case 'REFRESH_SIZE':\n notifySize();\n break;\n default:\n break;\n }\n });\n\n postMessage<ChildSiteMessage>({ type: 'IFRAME_INITIALIZED' });\n };\n\n initializeParentSite();\n\n return {\n notifySize,\n subscribe,\n postMessage,\n queryParams,\n };\n};\n","import type { OnboardingAppMessage } from '@/interfaces/OnboardingAppMessage';\nimport type { OnboardingConsumerAppMessage } from '@/interfaces/OnboardingConsumerAppMessage';\nimport { createParentSite } from '@/utils/createParentSite';\n\nexport const createOnboardingConsumerApp = () => {\n const parentApp = createParentSite();\n\n const postMessage = (message: OnboardingAppMessage) => {\n parentApp.postMessage(message);\n };\n\n const subscribe = (\n callback: (event: MessageEvent<OnboardingConsumerAppMessage>) => void\n ) => {\n return parentApp.subscribe(callback);\n };\n\n return {\n postMessage,\n subscribe,\n notifySize: parentApp.notifySize,\n };\n};\n"],"names":["mode"],"mappings":"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"}
@@ -3,6 +3,26 @@ export type DetachedEvent = {
3
3
  payload: {
4
4
  token: string | null;
5
5
  };
6
+ } | {
7
+ type: 'PLAID_IDV_CONNECT';
8
+ payload: {
9
+ token: string | null;
10
+ };
11
+ } | {
12
+ type: 'OPEN_DELETE_OWNER';
13
+ payload: {
14
+ deleteIndex: number;
15
+ };
16
+ } | {
17
+ type: 'OPEN_DISCONNECT_BANKING_ACCOUNT';
18
+ } | {
19
+ type: 'DELETE_OWNER_CONFIRMED';
20
+ } | {
21
+ type: 'DISCONNECT_BANKING_ACCOUNT_CONFIRMED';
22
+ } | {
23
+ type: 'IDENTITY_VERIFICATION_PASS_SESSION';
24
+ } | {
25
+ type: 'IDENTITY_VERIFICATION_FAIL_SESSION';
6
26
  } | {
7
27
  type: 'PLAID_LINK_SUCCESS';
8
28
  payload: {
@@ -6,8 +6,6 @@ export type OnboardingConsumerAppMessage = {
6
6
  type: 'PREV_STAGE';
7
7
  } | {
8
8
  type: 'SKIP_STAGE';
9
- } | {
10
- type: 'START_DETACHED_APP';
11
9
  } | {
12
10
  type: 'DETACHED_EVENT';
13
11
  payload: DetachedEvent;
@@ -8,7 +8,7 @@ export declare const createOnboardingApp: (args: {
8
8
  subscribe: (callback: (event: MessageEvent<OnboardingAppMessage>) => void) => {
9
9
  unsubscribe: () => void;
10
10
  };
11
- setMode: (mode: OnboardingAppMode) => void;
11
+ setMode: (mode: import('../..').IframeMode) => void;
12
12
  setCustomCss: (css: string) => void;
13
13
  iframe: HTMLIFrameElement;
14
14
  next: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@worthai/onboarding-sdk",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "type": "module",
5
5
  "source": "./src",
6
6
  "types": "./dist/index.d.ts",