@mxenabled/web-widget-sdk
Advanced tools
Comparing version 0.0.6 to 0.0.7
@@ -200,3 +200,3 @@ define(['exports'], (function (exports) { 'use strict'; | ||
// This is an internal error. Thrown when we are decoding a post message's | ||
// metadata and we encourntered a missing field or an invalid value. This | ||
// metadata and we encountered a missing field or an invalid value. This | ||
// likely means there has been a change to the definition of a post message | ||
@@ -218,3 +218,3 @@ // that we do not know about. | ||
} | ||
// This is an internal error. Thrown when we get a post message we don't konw | ||
// This is an internal error. Thrown when we get a post message we don't know | ||
// about. This likely means there is a new post message that this package needs | ||
@@ -230,3 +230,3 @@ // to define. | ||
} | ||
function assertMessageProp(container, postMessageType, field, expectedType) { | ||
function assertMessageProp(container, postMessageType, field, expectedType, properties = {}) { | ||
const value = container[field]; | ||
@@ -237,2 +237,3 @@ const valueIsDefined = typeof value !== "undefined"; | ||
const valueIsObject = typeof value === "object" && !Array.isArray(value); | ||
const valueIsBoolean = typeof value === "boolean"; | ||
const typeIsString = expectedType === "string"; | ||
@@ -242,3 +243,7 @@ const typeIsNumber = expectedType === "number"; | ||
const typeIsObject = typeof expectedType === "object" && !Array.isArray(expectedType); | ||
if (!valueIsDefined) { | ||
const typeIsBoolean = expectedType === "boolean"; | ||
if (!valueIsDefined && properties.optional) { | ||
return; | ||
} | ||
else if (!valueIsDefined) { | ||
throw new PostMessageFieldDecodeError(postMessageType, field, expectedType, value); | ||
@@ -258,2 +263,5 @@ } | ||
} | ||
else if (typeIsBoolean && !valueIsBoolean) { | ||
throw new PostMessageFieldDecodeError(postMessageType, field, expectedType, value); | ||
} | ||
else if (typeIsObject && valueIsObject) { | ||
@@ -278,2 +286,3 @@ Object.keys(expectedType).forEach((field) => { | ||
Type["Ping"] = "mx/ping"; | ||
Type["Navigation"] = "mx/navigation"; | ||
Type["FocusTrap"] = "mx/focusTrap"; | ||
@@ -300,2 +309,3 @@ Type["ConnectLoaded"] = "mx/connect/loaded"; | ||
[Type.Ping]: Type.Ping, | ||
[Type.Navigation]: Type.Navigation, | ||
[Type.FocusTrap]: Type.FocusTrap, | ||
@@ -356,2 +366,12 @@ "mx/focustrap": Type.FocusTrap, | ||
}; | ||
case Type.Navigation: | ||
assertMessageProp(metadata, "mx/navigation", "user_guid", "string"); | ||
assertMessageProp(metadata, "mx/navigation", "session_guid", "string"); | ||
assertMessageProp(metadata, "mx/navigation", "did_go_back", "boolean"); | ||
return { | ||
type, | ||
user_guid: metadata.user_guid, | ||
session_guid: metadata.session_guid, | ||
did_go_back: metadata.did_go_back, | ||
}; | ||
case Type.FocusTrap: | ||
@@ -466,2 +486,5 @@ assertMessageProp(metadata, "mx/focusTrap", "user_guid", "string"); | ||
assertMessageProp(metadata, "mx/connect/oauthError", "session_guid", "string"); | ||
assertMessageProp(metadata, "mx/connect/oauthError", "member_guid", "string", { | ||
optional: true, | ||
}); | ||
return { | ||
@@ -471,2 +494,3 @@ type, | ||
session_guid: metadata.session_guid, | ||
member_guid: metadata.member_guid, | ||
}; | ||
@@ -602,2 +626,5 @@ case Type.ConnectOAuthRequested: | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -638,2 +665,5 @@ callbacks.onFocusTrap?.(payload); | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -716,2 +746,5 @@ callbacks.onFocusTrap?.(payload); | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -718,0 +751,0 @@ callbacks.onFocusTrap?.(payload); |
@@ -1,1 +0,1 @@ | ||
define(["exports"],(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var r;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(r||(r={}));const s={[r.SAND]:r.SAND,[r.QA]:r.QA,[r.INT]:r.INT,[r.PROD]:r.PROD};const o={[r.SAND]:"https://api.sand.internal.mx",[r.QA]:"https://api.qa.internal.mx",[r.INT]:"https://int-api.mx.com",[r.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var u,d;function a(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,wait_for_full_aggregation:e.waitForFullAggregation,widget_type:e.widgetType}}function g(e){return e.widget_url.url}function m(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),r=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,r=btoa(`${i}:${t}`);n.Authorization=`Basic ${r}`}const i="cors",r="POST",s=JSON.stringify({widget_url:a(e)});return{method:r,headers:n,body:s,mode:i}}(e);return{url:i,options:r}}function p(e){return e}function l(e){if(!e.ok)throw new i(e.status);return e.json()}function _(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(u||(u={}));class C extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,C.prototype)}}class h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function b(e,t,n,i){const r=e[n],s=void 0!==r,o="string"==typeof r,c="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="string"===i,a="number"===i,g=i instanceof Array,m="object"==typeof i&&!Array.isArray(i);if(!s)throw new C(t,n,i,r);if(d&&!o)throw new C(t,n,i,r);if(a&&!c)throw new C(t,n,i,r);if(!(!g||o&&i.includes(r)))throw new C(t,n,i,r);if(m&&!u)throw new C(t,n,i,r);m&&u&&Object.keys(i).forEach((e=>{b(r,t,e,i[e])}))}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.FocusTrap="mx/focusTrap",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(d||(d={}));const f={[d.Load]:d.Load,[d.Ping]:d.Ping,[d.FocusTrap]:d.FocusTrap,"mx/focustrap":d.FocusTrap,[d.ConnectLoaded]:d.ConnectLoaded,[d.ConnectEnterCredentials]:d.ConnectEnterCredentials,"mx/connect/entercredentials":d.ConnectEnterCredentials,[d.ConnectInstitutionSearch]:d.ConnectInstitutionSearch,"mx/connect/institutionsearch":d.ConnectInstitutionSearch,[d.ConnectSelectedInstitution]:d.ConnectSelectedInstitution,"mx/connect/selectedinstitution":d.ConnectSelectedInstitution,[d.ConnectMemberConnected]:d.ConnectMemberConnected,"mx/connect/memberconnected":d.ConnectMemberConnected,[d.ConnectConnectedPrimaryAction]:d.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":d.ConnectConnectedPrimaryAction,[d.ConnectMemberDeleted]:d.ConnectMemberDeleted,"mx/connect/memberdeleted":d.ConnectMemberDeleted,[d.ConnectCreateMemberError]:d.ConnectCreateMemberError,"mx/connect/createmembererror":d.ConnectCreateMemberError,[d.ConnectMemberStatusUpdate]:d.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":d.ConnectMemberStatusUpdate,[d.ConnectOAuthError]:d.ConnectOAuthError,"mx/connect/oautherror":d.ConnectOAuthError,[d.ConnectOAuthRequested]:d.ConnectOAuthRequested,"mx/connect/oauthrequested":d.ConnectOAuthRequested,[d.ConnectStepChange]:d.ConnectStepChange,"mx/connect/stepchange":d.ConnectStepChange,[d.ConnectSubmitMFA]:d.ConnectSubmitMFA,"mx/connect/submitmfa":d.ConnectSubmitMFA,[d.ConnectUpdateCredentials]:d.ConnectUpdateCredentials,"mx/connect/updatecredentials":d.ConnectUpdateCredentials,[d.PulseOverdraftWarningCtaTransferFunds]:d.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":d.PulseOverdraftWarningCtaTransferFunds,[d.AccountCreated]:d.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new h(t);n=f[t];const i=function(e,t){switch(e){case d.Load:return{type:e};case d.Ping:return b(t,"mx/ping","user_guid","string"),b(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.FocusTrap:return b(t,"mx/focusTrap","user_guid","string"),b(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectLoaded:return b(t,"mx/connect/loaded","user_guid","string"),b(t,"mx/connect/loaded","session_guid","string"),b(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case d.ConnectEnterCredentials:return b(t,"mx/connect/enterCredentials","user_guid","string"),b(t,"mx/connect/enterCredentials","session_guid","string"),b(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case d.ConnectInstitutionSearch:return b(t,"mx/connect/institutionSearch","user_guid","string"),b(t,"mx/connect/institutionSearch","session_guid","string"),b(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case d.ConnectSelectedInstitution:return b(t,"mx/connect/selectedInstitution","user_guid","string"),b(t,"mx/connect/selectedInstitution","session_guid","string"),b(t,"mx/connect/selectedInstitution","code","string"),b(t,"mx/connect/selectedInstitution","guid","string"),b(t,"mx/connect/selectedInstitution","name","string"),b(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case d.ConnectMemberConnected:return b(t,"mx/connect/memberConnected","user_guid","string"),b(t,"mx/connect/memberConnected","session_guid","string"),b(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectConnectedPrimaryAction:return b(t,"mx/connect/connected/primaryAction","user_guid","string"),b(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectMemberDeleted:return b(t,"mx/connect/memberDeleted","user_guid","string"),b(t,"mx/connect/memberDeleted","session_guid","string"),b(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectCreateMemberError:return b(t,"mx/connect/createMemberError","user_guid","string"),b(t,"mx/connect/createMemberError","session_guid","string"),b(t,"mx/connect/createMemberError","institution_guid","string"),b(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case d.ConnectMemberStatusUpdate:return b(t,"mx/connect/memberStatusUpdate","user_guid","string"),b(t,"mx/connect/memberStatusUpdate","session_guid","string"),b(t,"mx/connect/memberStatusUpdate","member_guid","string"),b(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case d.ConnectOAuthError:return b(t,"mx/connect/oauthError","user_guid","string"),b(t,"mx/connect/oauthError","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectOAuthRequested:return b(t,"mx/connect/oauthRequested","user_guid","string"),b(t,"mx/connect/oauthRequested","session_guid","string"),b(t,"mx/connect/oauthRequested","url","string"),b(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case d.ConnectStepChange:return b(t,"mx/connect/stepChange","user_guid","string"),b(t,"mx/connect/stepChange","session_guid","string"),b(t,"mx/connect/stepChange","previous","string"),b(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case d.ConnectSubmitMFA:return b(t,"mx/connect/submitMFA","user_guid","string"),b(t,"mx/connect/submitMFA","session_guid","string"),b(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectUpdateCredentials:return b(t,"mx/connect/updateCredentials","user_guid","string"),b(t,"mx/connect/updateCredentials","session_guid","string"),b(t,"mx/connect/updateCredentials","member_guid","string"),b(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case d.PulseOverdraftWarningCtaTransferFunds:return b(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),b(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case d.AccountCreated:return b(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new h(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof C)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof h))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;case d.ConnectLoaded:t.onLoaded?.(e);break;case d.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case d.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case d.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case d.ConnectMemberConnected:t.onMemberConnected?.(e);break;case d.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case d.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case d.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case d.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case d.ConnectOAuthError:t.onOAuthError?.(e);break;case d.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case d.ConnectStepChange:t.onStepChange?.(e);break;case d.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case d.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function W(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;case d.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class T{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"100%",width:"100%"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||m,n=e.ssoRequestPreprocess||p,i=e.ssoRequestPostprocess||g,r=e.onSsoUrlLoadError||_,s=n(t(e));return fetch(s.url,s.options).then(l).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends T{get widgetType(){return u.AccountsWidget}},e.BudgetsWidget=class extends T{get widgetType(){return u.BudgetsWidget}},e.ConnectWidget=class extends T{get widgetType(){return u.ConnectWidget}get dispatcher(){return A}},e.ConnectionsWidget=class extends T{get widgetType(){return u.ConnectionsWidget}},e.DebtsWidget=class extends T{get widgetType(){return u.DebtsWidget}},e.FinstrongWidget=class extends T{get widgetType(){return u.FinstrongWidget}},e.GoalsWidget=class extends T{get widgetType(){return u.GoalsWidget}},e.HelpWidget=class extends T{get widgetType(){return u.HelpWidget}},e.MasterWidget=class extends T{get widgetType(){return u.MasterWidget}},e.MiniBudgetsWidget=class extends T{get widgetType(){return u.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends T{get widgetType(){return u.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends T{get widgetType(){return u.MiniPulseCarouselWidget}get dispatcher(){return W}},e.MiniSpendingWidget=class extends T{get widgetType(){return u.MiniSpendingWidget}},e.PulseWidget=class extends T{get widgetType(){return u.PulseWidget}get dispatcher(){return W}},e.SettingsWidget=class extends T{get widgetType(){return u.SettingsWidget}},e.SpendingWidget=class extends T{get widgetType(){return u.SpendingWidget}},e.TransactionsWidget=class extends T{get widgetType(){return u.TransactionsWidget}},e.TrendsWidget=class extends T{get widgetType(){return u.TrendsWidget}},e.Widget=T,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
define(["exports"],(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var r;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(r||(r={}));const s={[r.SAND]:r.SAND,[r.QA]:r.QA,[r.INT]:r.INT,[r.PROD]:r.PROD};const o={[r.SAND]:"https://api.sand.internal.mx",[r.QA]:"https://api.qa.internal.mx",[r.INT]:"https://int-api.mx.com",[r.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var u,a;function d(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,wait_for_full_aggregation:e.waitForFullAggregation,widget_type:e.widgetType}}function g(e){return e.widget_url.url}function m(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),r=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,r=btoa(`${i}:${t}`);n.Authorization=`Basic ${r}`}const i="cors",r="POST",s=JSON.stringify({widget_url:d(e)});return{method:r,headers:n,body:s,mode:i}}(e);return{url:i,options:r}}function p(e){return e}function l(e){if(!e.ok)throw new i(e.status);return e.json()}function _(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(u||(u={}));class C extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,C.prototype)}}class b extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,b.prototype)}}function h(e,t,n,i,r={}){const s=e[n],o=void 0!==s,c="string"==typeof s,u="number"==typeof s,a="object"==typeof s&&!Array.isArray(s),d="boolean"==typeof s,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),_="boolean"===i;if(o||!r.optional){if(!o)throw new C(t,n,i,s);if(g&&!c)throw new C(t,n,i,s);if(m&&!u)throw new C(t,n,i,s);if(!(!p||c&&i.includes(s)))throw new C(t,n,i,s);if(l&&!a)throw new C(t,n,i,s);if(_&&!d)throw new C(t,n,i,s);l&&a&&Object.keys(i).forEach((e=>{h(s,t,e,i[e])}))}}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(a||(a={}));const f={[a.Load]:a.Load,[a.Ping]:a.Ping,[a.Navigation]:a.Navigation,[a.FocusTrap]:a.FocusTrap,"mx/focustrap":a.FocusTrap,[a.ConnectLoaded]:a.ConnectLoaded,[a.ConnectEnterCredentials]:a.ConnectEnterCredentials,"mx/connect/entercredentials":a.ConnectEnterCredentials,[a.ConnectInstitutionSearch]:a.ConnectInstitutionSearch,"mx/connect/institutionsearch":a.ConnectInstitutionSearch,[a.ConnectSelectedInstitution]:a.ConnectSelectedInstitution,"mx/connect/selectedinstitution":a.ConnectSelectedInstitution,[a.ConnectMemberConnected]:a.ConnectMemberConnected,"mx/connect/memberconnected":a.ConnectMemberConnected,[a.ConnectConnectedPrimaryAction]:a.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":a.ConnectConnectedPrimaryAction,[a.ConnectMemberDeleted]:a.ConnectMemberDeleted,"mx/connect/memberdeleted":a.ConnectMemberDeleted,[a.ConnectCreateMemberError]:a.ConnectCreateMemberError,"mx/connect/createmembererror":a.ConnectCreateMemberError,[a.ConnectMemberStatusUpdate]:a.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":a.ConnectMemberStatusUpdate,[a.ConnectOAuthError]:a.ConnectOAuthError,"mx/connect/oautherror":a.ConnectOAuthError,[a.ConnectOAuthRequested]:a.ConnectOAuthRequested,"mx/connect/oauthrequested":a.ConnectOAuthRequested,[a.ConnectStepChange]:a.ConnectStepChange,"mx/connect/stepchange":a.ConnectStepChange,[a.ConnectSubmitMFA]:a.ConnectSubmitMFA,"mx/connect/submitmfa":a.ConnectSubmitMFA,[a.ConnectUpdateCredentials]:a.ConnectUpdateCredentials,"mx/connect/updatecredentials":a.ConnectUpdateCredentials,[a.PulseOverdraftWarningCtaTransferFunds]:a.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":a.PulseOverdraftWarningCtaTransferFunds,[a.AccountCreated]:a.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new b(t);n=f[t];const i=function(e,t){switch(e){case a.Load:return{type:e};case a.Ping:return h(t,"mx/ping","user_guid","string"),h(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.Navigation:return h(t,"mx/navigation","user_guid","string"),h(t,"mx/navigation","session_guid","string"),h(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case a.FocusTrap:return h(t,"mx/focusTrap","user_guid","string"),h(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.ConnectLoaded:return h(t,"mx/connect/loaded","user_guid","string"),h(t,"mx/connect/loaded","session_guid","string"),h(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case a.ConnectEnterCredentials:return h(t,"mx/connect/enterCredentials","user_guid","string"),h(t,"mx/connect/enterCredentials","session_guid","string"),h(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case a.ConnectInstitutionSearch:return h(t,"mx/connect/institutionSearch","user_guid","string"),h(t,"mx/connect/institutionSearch","session_guid","string"),h(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case a.ConnectSelectedInstitution:return h(t,"mx/connect/selectedInstitution","user_guid","string"),h(t,"mx/connect/selectedInstitution","session_guid","string"),h(t,"mx/connect/selectedInstitution","code","string"),h(t,"mx/connect/selectedInstitution","guid","string"),h(t,"mx/connect/selectedInstitution","name","string"),h(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case a.ConnectMemberConnected:return h(t,"mx/connect/memberConnected","user_guid","string"),h(t,"mx/connect/memberConnected","session_guid","string"),h(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectConnectedPrimaryAction:return h(t,"mx/connect/connected/primaryAction","user_guid","string"),h(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case a.ConnectMemberDeleted:return h(t,"mx/connect/memberDeleted","user_guid","string"),h(t,"mx/connect/memberDeleted","session_guid","string"),h(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectCreateMemberError:return h(t,"mx/connect/createMemberError","user_guid","string"),h(t,"mx/connect/createMemberError","session_guid","string"),h(t,"mx/connect/createMemberError","institution_guid","string"),h(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case a.ConnectMemberStatusUpdate:return h(t,"mx/connect/memberStatusUpdate","user_guid","string"),h(t,"mx/connect/memberStatusUpdate","session_guid","string"),h(t,"mx/connect/memberStatusUpdate","member_guid","string"),h(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case a.ConnectOAuthError:return h(t,"mx/connect/oauthError","user_guid","string"),h(t,"mx/connect/oauthError","session_guid","string"),h(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectOAuthRequested:return h(t,"mx/connect/oauthRequested","user_guid","string"),h(t,"mx/connect/oauthRequested","session_guid","string"),h(t,"mx/connect/oauthRequested","url","string"),h(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case a.ConnectStepChange:return h(t,"mx/connect/stepChange","user_guid","string"),h(t,"mx/connect/stepChange","session_guid","string"),h(t,"mx/connect/stepChange","previous","string"),h(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case a.ConnectSubmitMFA:return h(t,"mx/connect/submitMFA","user_guid","string"),h(t,"mx/connect/submitMFA","session_guid","string"),h(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case a.ConnectUpdateCredentials:return h(t,"mx/connect/updateCredentials","user_guid","string"),h(t,"mx/connect/updateCredentials","session_guid","string"),h(t,"mx/connect/updateCredentials","member_guid","string"),h(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case a.PulseOverdraftWarningCtaTransferFunds:return h(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),h(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case a.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new b(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof C)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof b))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;default:throw new b(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;case a.ConnectLoaded:t.onLoaded?.(e);break;case a.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case a.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case a.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case a.ConnectMemberConnected:t.onMemberConnected?.(e);break;case a.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case a.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case a.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case a.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case a.ConnectOAuthError:t.onOAuthError?.(e);break;case a.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case a.ConnectStepChange:t.onStepChange?.(e);break;case a.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case a.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new b(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function W(e,t){try{w(e,t);!function(e,t){switch(e.type){case a.Load:t.onLoad?.(e);break;case a.Ping:t.onPing?.(e);break;case a.Navigation:t.onNavigation?.(e);break;case a.FocusTrap:t.onFocusTrap?.(e);break;case a.AccountCreated:t.onAccountCreated?.(e);break;case a.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new b(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class T{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"100%",width:"100%"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||m,n=e.ssoRequestPreprocess||p,i=e.ssoRequestPostprocess||g,r=e.onSsoUrlLoadError||_,s=n(t(e));return fetch(s.url,s.options).then(l).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends T{get widgetType(){return u.AccountsWidget}},e.BudgetsWidget=class extends T{get widgetType(){return u.BudgetsWidget}},e.ConnectWidget=class extends T{get widgetType(){return u.ConnectWidget}get dispatcher(){return A}},e.ConnectionsWidget=class extends T{get widgetType(){return u.ConnectionsWidget}},e.DebtsWidget=class extends T{get widgetType(){return u.DebtsWidget}},e.FinstrongWidget=class extends T{get widgetType(){return u.FinstrongWidget}},e.GoalsWidget=class extends T{get widgetType(){return u.GoalsWidget}},e.HelpWidget=class extends T{get widgetType(){return u.HelpWidget}},e.MasterWidget=class extends T{get widgetType(){return u.MasterWidget}},e.MiniBudgetsWidget=class extends T{get widgetType(){return u.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends T{get widgetType(){return u.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends T{get widgetType(){return u.MiniPulseCarouselWidget}get dispatcher(){return W}},e.MiniSpendingWidget=class extends T{get widgetType(){return u.MiniSpendingWidget}},e.PulseWidget=class extends T{get widgetType(){return u.PulseWidget}get dispatcher(){return W}},e.SettingsWidget=class extends T{get widgetType(){return u.SettingsWidget}},e.SpendingWidget=class extends T{get widgetType(){return u.SpendingWidget}},e.TransactionsWidget=class extends T{get widgetType(){return u.TransactionsWidget}},e.TrendsWidget=class extends T{get widgetType(){return u.TrendsWidget}},e.Widget=T,Object.defineProperty(e,"__esModule",{value:!0})})); |
@@ -202,3 +202,3 @@ 'use strict'; | ||
// This is an internal error. Thrown when we are decoding a post message's | ||
// metadata and we encourntered a missing field or an invalid value. This | ||
// metadata and we encountered a missing field or an invalid value. This | ||
// likely means there has been a change to the definition of a post message | ||
@@ -220,3 +220,3 @@ // that we do not know about. | ||
} | ||
// This is an internal error. Thrown when we get a post message we don't konw | ||
// This is an internal error. Thrown when we get a post message we don't know | ||
// about. This likely means there is a new post message that this package needs | ||
@@ -232,3 +232,3 @@ // to define. | ||
} | ||
function assertMessageProp(container, postMessageType, field, expectedType) { | ||
function assertMessageProp(container, postMessageType, field, expectedType, properties = {}) { | ||
const value = container[field]; | ||
@@ -239,2 +239,3 @@ const valueIsDefined = typeof value !== "undefined"; | ||
const valueIsObject = typeof value === "object" && !Array.isArray(value); | ||
const valueIsBoolean = typeof value === "boolean"; | ||
const typeIsString = expectedType === "string"; | ||
@@ -244,3 +245,7 @@ const typeIsNumber = expectedType === "number"; | ||
const typeIsObject = typeof expectedType === "object" && !Array.isArray(expectedType); | ||
if (!valueIsDefined) { | ||
const typeIsBoolean = expectedType === "boolean"; | ||
if (!valueIsDefined && properties.optional) { | ||
return; | ||
} | ||
else if (!valueIsDefined) { | ||
throw new PostMessageFieldDecodeError(postMessageType, field, expectedType, value); | ||
@@ -260,2 +265,5 @@ } | ||
} | ||
else if (typeIsBoolean && !valueIsBoolean) { | ||
throw new PostMessageFieldDecodeError(postMessageType, field, expectedType, value); | ||
} | ||
else if (typeIsObject && valueIsObject) { | ||
@@ -280,2 +288,3 @@ Object.keys(expectedType).forEach((field) => { | ||
Type["Ping"] = "mx/ping"; | ||
Type["Navigation"] = "mx/navigation"; | ||
Type["FocusTrap"] = "mx/focusTrap"; | ||
@@ -302,2 +311,3 @@ Type["ConnectLoaded"] = "mx/connect/loaded"; | ||
[Type.Ping]: Type.Ping, | ||
[Type.Navigation]: Type.Navigation, | ||
[Type.FocusTrap]: Type.FocusTrap, | ||
@@ -358,2 +368,12 @@ "mx/focustrap": Type.FocusTrap, | ||
}; | ||
case Type.Navigation: | ||
assertMessageProp(metadata, "mx/navigation", "user_guid", "string"); | ||
assertMessageProp(metadata, "mx/navigation", "session_guid", "string"); | ||
assertMessageProp(metadata, "mx/navigation", "did_go_back", "boolean"); | ||
return { | ||
type, | ||
user_guid: metadata.user_guid, | ||
session_guid: metadata.session_guid, | ||
did_go_back: metadata.did_go_back, | ||
}; | ||
case Type.FocusTrap: | ||
@@ -468,2 +488,5 @@ assertMessageProp(metadata, "mx/focusTrap", "user_guid", "string"); | ||
assertMessageProp(metadata, "mx/connect/oauthError", "session_guid", "string"); | ||
assertMessageProp(metadata, "mx/connect/oauthError", "member_guid", "string", { | ||
optional: true, | ||
}); | ||
return { | ||
@@ -473,2 +496,3 @@ type, | ||
session_guid: metadata.session_guid, | ||
member_guid: metadata.member_guid, | ||
}; | ||
@@ -604,2 +628,5 @@ case Type.ConnectOAuthRequested: | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -640,2 +667,5 @@ callbacks.onFocusTrap?.(payload); | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -718,2 +748,5 @@ callbacks.onFocusTrap?.(payload); | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -720,0 +753,0 @@ callbacks.onFocusTrap?.(payload); |
@@ -1,1 +0,1 @@ | ||
"use strict";function e(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,t.prototype)}}class n extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,n.prototype)}}var i;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(i||(i={}));const r={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const s={[i.SAND]:"https://api.sand.internal.mx",[i.QA]:"https://api.qa.internal.mx",[i.INT]:"https://int-api.mx.com",[i.PROD]:"https://api.mx.com"};function o(e){const t=function(e){const t=r[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=s[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c,u;function d(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,wait_for_full_aggregation:e.waitForFullAggregation,widget_type:e.widgetType}}function a(e){return e.widget_url.url}function g(n){const i=function(n){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(n))return function(e){return e.proxy}(n);if(e(n))return function(e){const t=o(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(n);throw new t}(n),r=function(t){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};t.language&&(n["Accept-Language"]=t.language);if(e(t)){const{apiKey:e,clientId:i}=t,r=btoa(`${i}:${e}`);n.Authorization=`Basic ${r}`}const i="cors",r="POST",s=JSON.stringify({widget_url:d(t)});return{method:r,headers:n,body:s,mode:i}}(n);return{url:i,options:r}}function m(e){return e}function p(e){if(!e.ok)throw new n(e.status);return e.json()}function l(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(c||(c={}));class _ extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,_.prototype)}}class C extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,C.prototype)}}function h(e,t,n,i){const r=e[n],s=void 0!==r,o="string"==typeof r,c="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="string"===i,a="number"===i,g=i instanceof Array,m="object"==typeof i&&!Array.isArray(i);if(!s)throw new _(t,n,i,r);if(d&&!o)throw new _(t,n,i,r);if(a&&!c)throw new _(t,n,i,r);if(!(!g||o&&i.includes(r)))throw new _(t,n,i,r);if(m&&!u)throw new _(t,n,i,r);m&&u&&Object.keys(i).forEach((e=>{h(r,t,e,i[e])}))}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.FocusTrap="mx/focusTrap",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(u||(u={}));const b={[u.Load]:u.Load,[u.Ping]:u.Ping,[u.FocusTrap]:u.FocusTrap,"mx/focustrap":u.FocusTrap,[u.ConnectLoaded]:u.ConnectLoaded,[u.ConnectEnterCredentials]:u.ConnectEnterCredentials,"mx/connect/entercredentials":u.ConnectEnterCredentials,[u.ConnectInstitutionSearch]:u.ConnectInstitutionSearch,"mx/connect/institutionsearch":u.ConnectInstitutionSearch,[u.ConnectSelectedInstitution]:u.ConnectSelectedInstitution,"mx/connect/selectedinstitution":u.ConnectSelectedInstitution,[u.ConnectMemberConnected]:u.ConnectMemberConnected,"mx/connect/memberconnected":u.ConnectMemberConnected,[u.ConnectConnectedPrimaryAction]:u.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":u.ConnectConnectedPrimaryAction,[u.ConnectMemberDeleted]:u.ConnectMemberDeleted,"mx/connect/memberdeleted":u.ConnectMemberDeleted,[u.ConnectCreateMemberError]:u.ConnectCreateMemberError,"mx/connect/createmembererror":u.ConnectCreateMemberError,[u.ConnectMemberStatusUpdate]:u.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":u.ConnectMemberStatusUpdate,[u.ConnectOAuthError]:u.ConnectOAuthError,"mx/connect/oautherror":u.ConnectOAuthError,[u.ConnectOAuthRequested]:u.ConnectOAuthRequested,"mx/connect/oauthrequested":u.ConnectOAuthRequested,[u.ConnectStepChange]:u.ConnectStepChange,"mx/connect/stepchange":u.ConnectStepChange,[u.ConnectSubmitMFA]:u.ConnectSubmitMFA,"mx/connect/submitmfa":u.ConnectSubmitMFA,[u.ConnectUpdateCredentials]:u.ConnectUpdateCredentials,"mx/connect/updatecredentials":u.ConnectUpdateCredentials,[u.PulseOverdraftWarningCtaTransferFunds]:u.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":u.PulseOverdraftWarningCtaTransferFunds,[u.AccountCreated]:u.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new C(t);n=b[t];const i=function(e,t){switch(e){case u.Load:return{type:e};case u.Ping:return h(t,"mx/ping","user_guid","string"),h(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.FocusTrap:return h(t,"mx/focusTrap","user_guid","string"),h(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ConnectLoaded:return h(t,"mx/connect/loaded","user_guid","string"),h(t,"mx/connect/loaded","session_guid","string"),h(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case u.ConnectEnterCredentials:return h(t,"mx/connect/enterCredentials","user_guid","string"),h(t,"mx/connect/enterCredentials","session_guid","string"),h(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case u.ConnectInstitutionSearch:return h(t,"mx/connect/institutionSearch","user_guid","string"),h(t,"mx/connect/institutionSearch","session_guid","string"),h(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case u.ConnectSelectedInstitution:return h(t,"mx/connect/selectedInstitution","user_guid","string"),h(t,"mx/connect/selectedInstitution","session_guid","string"),h(t,"mx/connect/selectedInstitution","code","string"),h(t,"mx/connect/selectedInstitution","guid","string"),h(t,"mx/connect/selectedInstitution","name","string"),h(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case u.ConnectMemberConnected:return h(t,"mx/connect/memberConnected","user_guid","string"),h(t,"mx/connect/memberConnected","session_guid","string"),h(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectConnectedPrimaryAction:return h(t,"mx/connect/connected/primaryAction","user_guid","string"),h(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ConnectMemberDeleted:return h(t,"mx/connect/memberDeleted","user_guid","string"),h(t,"mx/connect/memberDeleted","session_guid","string"),h(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectCreateMemberError:return h(t,"mx/connect/createMemberError","user_guid","string"),h(t,"mx/connect/createMemberError","session_guid","string"),h(t,"mx/connect/createMemberError","institution_guid","string"),h(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case u.ConnectMemberStatusUpdate:return h(t,"mx/connect/memberStatusUpdate","user_guid","string"),h(t,"mx/connect/memberStatusUpdate","session_guid","string"),h(t,"mx/connect/memberStatusUpdate","member_guid","string"),h(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case u.ConnectOAuthError:return h(t,"mx/connect/oauthError","user_guid","string"),h(t,"mx/connect/oauthError","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ConnectOAuthRequested:return h(t,"mx/connect/oauthRequested","user_guid","string"),h(t,"mx/connect/oauthRequested","session_guid","string"),h(t,"mx/connect/oauthRequested","url","string"),h(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case u.ConnectStepChange:return h(t,"mx/connect/stepChange","user_guid","string"),h(t,"mx/connect/stepChange","session_guid","string"),h(t,"mx/connect/stepChange","previous","string"),h(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case u.ConnectSubmitMFA:return h(t,"mx/connect/submitMFA","user_guid","string"),h(t,"mx/connect/submitMFA","session_guid","string"),h(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectUpdateCredentials:return h(t,"mx/connect/updateCredentials","user_guid","string"),h(t,"mx/connect/updateCredentials","session_guid","string"),h(t,"mx/connect/updateCredentials","member_guid","string"),h(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case u.PulseOverdraftWarningCtaTransferFunds:return h(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),h(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case u.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new C(e)}}(n,e.metadata||{});return i}function f(e,t,n){if(t instanceof _)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof C))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){try{y(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function M(e,t){try{y(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.ConnectLoaded:t.onLoaded?.(e);break;case u.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case u.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case u.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case u.ConnectMemberConnected:t.onMemberConnected?.(e);break;case u.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case u.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case u.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case u.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case u.ConnectOAuthError:t.onOAuthError?.(e);break;case u.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case u.ConnectStepChange:t.onStepChange?.(e);break;case u.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case u.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function A(e,t){try{y(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"100%",width:"100%"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return w}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||g,n=e.ssoRequestPreprocess||m,i=e.ssoRequestPostprocess||a,r=e.onSsoUrlLoadError||l,s=n(t(e));return fetch(s.url,s.options).then(p).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}exports.AccountsWidget=class extends W{get widgetType(){return c.AccountsWidget}},exports.BudgetsWidget=class extends W{get widgetType(){return c.BudgetsWidget}},exports.ConnectWidget=class extends W{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}},exports.ConnectionsWidget=class extends W{get widgetType(){return c.ConnectionsWidget}},exports.DebtsWidget=class extends W{get widgetType(){return c.DebtsWidget}},exports.FinstrongWidget=class extends W{get widgetType(){return c.FinstrongWidget}},exports.GoalsWidget=class extends W{get widgetType(){return c.GoalsWidget}},exports.HelpWidget=class extends W{get widgetType(){return c.HelpWidget}},exports.MasterWidget=class extends W{get widgetType(){return c.MasterWidget}},exports.MiniBudgetsWidget=class extends W{get widgetType(){return c.MiniBudgetsWidget}},exports.MiniFinstrongWidget=class extends W{get widgetType(){return c.MiniFinstrongWidget}},exports.MiniPulseCarouselWidget=class extends W{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return A}},exports.MiniSpendingWidget=class extends W{get widgetType(){return c.MiniSpendingWidget}},exports.PulseWidget=class extends W{get widgetType(){return c.PulseWidget}get dispatcher(){return A}},exports.SettingsWidget=class extends W{get widgetType(){return c.SettingsWidget}},exports.SpendingWidget=class extends W{get widgetType(){return c.SpendingWidget}},exports.TransactionsWidget=class extends W{get widgetType(){return c.TransactionsWidget}},exports.TrendsWidget=class extends W{get widgetType(){return c.TrendsWidget}},exports.Widget=W; | ||
"use strict";function e(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,t.prototype)}}class n extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,n.prototype)}}var i;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(i||(i={}));const r={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const s={[i.SAND]:"https://api.sand.internal.mx",[i.QA]:"https://api.qa.internal.mx",[i.INT]:"https://int-api.mx.com",[i.PROD]:"https://api.mx.com"};function o(e){const t=function(e){const t=r[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=s[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c,u;function a(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,wait_for_full_aggregation:e.waitForFullAggregation,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(n){const i=function(n){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(n))return function(e){return e.proxy}(n);if(e(n))return function(e){const t=o(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(n);throw new t}(n),r=function(t){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};t.language&&(n["Accept-Language"]=t.language);if(e(t)){const{apiKey:e,clientId:i}=t,r=btoa(`${i}:${e}`);n.Authorization=`Basic ${r}`}const i="cors",r="POST",s=JSON.stringify({widget_url:a(t)});return{method:r,headers:n,body:s,mode:i}}(n);return{url:i,options:r}}function m(e){return e}function p(e){if(!e.ok)throw new n(e.status);return e.json()}function l(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(c||(c={}));class _ extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,_.prototype)}}class C extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,C.prototype)}}function b(e,t,n,i,r={}){const s=e[n],o=void 0!==s,c="string"==typeof s,u="number"==typeof s,a="object"==typeof s&&!Array.isArray(s),d="boolean"==typeof s,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!r.optional){if(!o)throw new _(t,n,i,s);if(g&&!c)throw new _(t,n,i,s);if(m&&!u)throw new _(t,n,i,s);if(!(!p||c&&i.includes(s)))throw new _(t,n,i,s);if(l&&!a)throw new _(t,n,i,s);if(C&&!d)throw new _(t,n,i,s);l&&a&&Object.keys(i).forEach((e=>{b(s,t,e,i[e])}))}}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(u||(u={}));const h={[u.Load]:u.Load,[u.Ping]:u.Ping,[u.Navigation]:u.Navigation,[u.FocusTrap]:u.FocusTrap,"mx/focustrap":u.FocusTrap,[u.ConnectLoaded]:u.ConnectLoaded,[u.ConnectEnterCredentials]:u.ConnectEnterCredentials,"mx/connect/entercredentials":u.ConnectEnterCredentials,[u.ConnectInstitutionSearch]:u.ConnectInstitutionSearch,"mx/connect/institutionsearch":u.ConnectInstitutionSearch,[u.ConnectSelectedInstitution]:u.ConnectSelectedInstitution,"mx/connect/selectedinstitution":u.ConnectSelectedInstitution,[u.ConnectMemberConnected]:u.ConnectMemberConnected,"mx/connect/memberconnected":u.ConnectMemberConnected,[u.ConnectConnectedPrimaryAction]:u.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":u.ConnectConnectedPrimaryAction,[u.ConnectMemberDeleted]:u.ConnectMemberDeleted,"mx/connect/memberdeleted":u.ConnectMemberDeleted,[u.ConnectCreateMemberError]:u.ConnectCreateMemberError,"mx/connect/createmembererror":u.ConnectCreateMemberError,[u.ConnectMemberStatusUpdate]:u.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":u.ConnectMemberStatusUpdate,[u.ConnectOAuthError]:u.ConnectOAuthError,"mx/connect/oautherror":u.ConnectOAuthError,[u.ConnectOAuthRequested]:u.ConnectOAuthRequested,"mx/connect/oauthrequested":u.ConnectOAuthRequested,[u.ConnectStepChange]:u.ConnectStepChange,"mx/connect/stepchange":u.ConnectStepChange,[u.ConnectSubmitMFA]:u.ConnectSubmitMFA,"mx/connect/submitmfa":u.ConnectSubmitMFA,[u.ConnectUpdateCredentials]:u.ConnectUpdateCredentials,"mx/connect/updatecredentials":u.ConnectUpdateCredentials,[u.PulseOverdraftWarningCtaTransferFunds]:u.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":u.PulseOverdraftWarningCtaTransferFunds,[u.AccountCreated]:u.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in h))throw new C(t);n=h[t];const i=function(e,t){switch(e){case u.Load:return{type:e};case u.Ping:return b(t,"mx/ping","user_guid","string"),b(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.Navigation:return b(t,"mx/navigation","user_guid","string"),b(t,"mx/navigation","session_guid","string"),b(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case u.FocusTrap:return b(t,"mx/focusTrap","user_guid","string"),b(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ConnectLoaded:return b(t,"mx/connect/loaded","user_guid","string"),b(t,"mx/connect/loaded","session_guid","string"),b(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case u.ConnectEnterCredentials:return b(t,"mx/connect/enterCredentials","user_guid","string"),b(t,"mx/connect/enterCredentials","session_guid","string"),b(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case u.ConnectInstitutionSearch:return b(t,"mx/connect/institutionSearch","user_guid","string"),b(t,"mx/connect/institutionSearch","session_guid","string"),b(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case u.ConnectSelectedInstitution:return b(t,"mx/connect/selectedInstitution","user_guid","string"),b(t,"mx/connect/selectedInstitution","session_guid","string"),b(t,"mx/connect/selectedInstitution","code","string"),b(t,"mx/connect/selectedInstitution","guid","string"),b(t,"mx/connect/selectedInstitution","name","string"),b(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case u.ConnectMemberConnected:return b(t,"mx/connect/memberConnected","user_guid","string"),b(t,"mx/connect/memberConnected","session_guid","string"),b(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectConnectedPrimaryAction:return b(t,"mx/connect/connected/primaryAction","user_guid","string"),b(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case u.ConnectMemberDeleted:return b(t,"mx/connect/memberDeleted","user_guid","string"),b(t,"mx/connect/memberDeleted","session_guid","string"),b(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectCreateMemberError:return b(t,"mx/connect/createMemberError","user_guid","string"),b(t,"mx/connect/createMemberError","session_guid","string"),b(t,"mx/connect/createMemberError","institution_guid","string"),b(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case u.ConnectMemberStatusUpdate:return b(t,"mx/connect/memberStatusUpdate","user_guid","string"),b(t,"mx/connect/memberStatusUpdate","session_guid","string"),b(t,"mx/connect/memberStatusUpdate","member_guid","string"),b(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case u.ConnectOAuthError:return b(t,"mx/connect/oauthError","user_guid","string"),b(t,"mx/connect/oauthError","session_guid","string"),b(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectOAuthRequested:return b(t,"mx/connect/oauthRequested","user_guid","string"),b(t,"mx/connect/oauthRequested","session_guid","string"),b(t,"mx/connect/oauthRequested","url","string"),b(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case u.ConnectStepChange:return b(t,"mx/connect/stepChange","user_guid","string"),b(t,"mx/connect/stepChange","session_guid","string"),b(t,"mx/connect/stepChange","previous","string"),b(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case u.ConnectSubmitMFA:return b(t,"mx/connect/submitMFA","user_guid","string"),b(t,"mx/connect/submitMFA","session_guid","string"),b(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case u.ConnectUpdateCredentials:return b(t,"mx/connect/updateCredentials","user_guid","string"),b(t,"mx/connect/updateCredentials","session_guid","string"),b(t,"mx/connect/updateCredentials","member_guid","string"),b(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case u.PulseOverdraftWarningCtaTransferFunds:return b(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),b(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case u.AccountCreated:return b(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new C(e)}}(n,e.metadata||{});return i}function f(e,t,n){if(t instanceof _)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof C))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){try{y(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function M(e,t){try{y(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.ConnectLoaded:t.onLoaded?.(e);break;case u.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case u.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case u.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case u.ConnectMemberConnected:t.onMemberConnected?.(e);break;case u.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case u.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case u.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case u.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case u.ConnectOAuthError:t.onOAuthError?.(e);break;case u.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case u.ConnectStepChange:t.onStepChange?.(e);break;case u.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case u.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}function A(e,t){try{y(e,t);!function(e,t){switch(e.type){case u.Load:t.onLoad?.(e);break;case u.Ping:t.onPing?.(e);break;case u.Navigation:t.onNavigation?.(e);break;case u.FocusTrap:t.onFocusTrap?.(e);break;case u.AccountCreated:t.onAccountCreated?.(e);break;case u.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new C(e.type)}}(x(e.data),t)}catch(n){f(e,n,t)}}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"100%",width:"100%"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return w}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||g,n=e.ssoRequestPreprocess||m,i=e.ssoRequestPostprocess||d,r=e.onSsoUrlLoadError||l,s=n(t(e));return fetch(s.url,s.options).then(p).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}exports.AccountsWidget=class extends W{get widgetType(){return c.AccountsWidget}},exports.BudgetsWidget=class extends W{get widgetType(){return c.BudgetsWidget}},exports.ConnectWidget=class extends W{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}},exports.ConnectionsWidget=class extends W{get widgetType(){return c.ConnectionsWidget}},exports.DebtsWidget=class extends W{get widgetType(){return c.DebtsWidget}},exports.FinstrongWidget=class extends W{get widgetType(){return c.FinstrongWidget}},exports.GoalsWidget=class extends W{get widgetType(){return c.GoalsWidget}},exports.HelpWidget=class extends W{get widgetType(){return c.HelpWidget}},exports.MasterWidget=class extends W{get widgetType(){return c.MasterWidget}},exports.MiniBudgetsWidget=class extends W{get widgetType(){return c.MiniBudgetsWidget}},exports.MiniFinstrongWidget=class extends W{get widgetType(){return c.MiniFinstrongWidget}},exports.MiniPulseCarouselWidget=class extends W{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return A}},exports.MiniSpendingWidget=class extends W{get widgetType(){return c.MiniSpendingWidget}},exports.PulseWidget=class extends W{get widgetType(){return c.PulseWidget}get dispatcher(){return A}},exports.SettingsWidget=class extends W{get widgetType(){return c.SettingsWidget}},exports.SpendingWidget=class extends W{get widgetType(){return c.SpendingWidget}},exports.TransactionsWidget=class extends W{get widgetType(){return c.TransactionsWidget}},exports.TrendsWidget=class extends W{get widgetType(){return c.TrendsWidget}},exports.Widget=W; |
@@ -204,3 +204,3 @@ (function (global, factory) { | ||
// This is an internal error. Thrown when we are decoding a post message's | ||
// metadata and we encourntered a missing field or an invalid value. This | ||
// metadata and we encountered a missing field or an invalid value. This | ||
// likely means there has been a change to the definition of a post message | ||
@@ -222,3 +222,3 @@ // that we do not know about. | ||
} | ||
// This is an internal error. Thrown when we get a post message we don't konw | ||
// This is an internal error. Thrown when we get a post message we don't know | ||
// about. This likely means there is a new post message that this package needs | ||
@@ -234,3 +234,3 @@ // to define. | ||
} | ||
function assertMessageProp(container, postMessageType, field, expectedType) { | ||
function assertMessageProp(container, postMessageType, field, expectedType, properties = {}) { | ||
const value = container[field]; | ||
@@ -241,2 +241,3 @@ const valueIsDefined = typeof value !== "undefined"; | ||
const valueIsObject = typeof value === "object" && !Array.isArray(value); | ||
const valueIsBoolean = typeof value === "boolean"; | ||
const typeIsString = expectedType === "string"; | ||
@@ -246,3 +247,7 @@ const typeIsNumber = expectedType === "number"; | ||
const typeIsObject = typeof expectedType === "object" && !Array.isArray(expectedType); | ||
if (!valueIsDefined) { | ||
const typeIsBoolean = expectedType === "boolean"; | ||
if (!valueIsDefined && properties.optional) { | ||
return; | ||
} | ||
else if (!valueIsDefined) { | ||
throw new PostMessageFieldDecodeError(postMessageType, field, expectedType, value); | ||
@@ -262,2 +267,5 @@ } | ||
} | ||
else if (typeIsBoolean && !valueIsBoolean) { | ||
throw new PostMessageFieldDecodeError(postMessageType, field, expectedType, value); | ||
} | ||
else if (typeIsObject && valueIsObject) { | ||
@@ -282,2 +290,3 @@ Object.keys(expectedType).forEach((field) => { | ||
Type["Ping"] = "mx/ping"; | ||
Type["Navigation"] = "mx/navigation"; | ||
Type["FocusTrap"] = "mx/focusTrap"; | ||
@@ -304,2 +313,3 @@ Type["ConnectLoaded"] = "mx/connect/loaded"; | ||
[Type.Ping]: Type.Ping, | ||
[Type.Navigation]: Type.Navigation, | ||
[Type.FocusTrap]: Type.FocusTrap, | ||
@@ -360,2 +370,12 @@ "mx/focustrap": Type.FocusTrap, | ||
}; | ||
case Type.Navigation: | ||
assertMessageProp(metadata, "mx/navigation", "user_guid", "string"); | ||
assertMessageProp(metadata, "mx/navigation", "session_guid", "string"); | ||
assertMessageProp(metadata, "mx/navigation", "did_go_back", "boolean"); | ||
return { | ||
type, | ||
user_guid: metadata.user_guid, | ||
session_guid: metadata.session_guid, | ||
did_go_back: metadata.did_go_back, | ||
}; | ||
case Type.FocusTrap: | ||
@@ -470,2 +490,5 @@ assertMessageProp(metadata, "mx/focusTrap", "user_guid", "string"); | ||
assertMessageProp(metadata, "mx/connect/oauthError", "session_guid", "string"); | ||
assertMessageProp(metadata, "mx/connect/oauthError", "member_guid", "string", { | ||
optional: true, | ||
}); | ||
return { | ||
@@ -475,2 +498,3 @@ type, | ||
session_guid: metadata.session_guid, | ||
member_guid: metadata.member_guid, | ||
}; | ||
@@ -606,2 +630,5 @@ case Type.ConnectOAuthRequested: | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -642,2 +669,5 @@ callbacks.onFocusTrap?.(payload); | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -720,2 +750,5 @@ callbacks.onFocusTrap?.(payload); | ||
break; | ||
case Type.Navigation: | ||
callbacks.onNavigation?.(payload); | ||
break; | ||
case Type.FocusTrap: | ||
@@ -722,0 +755,0 @@ callbacks.onFocusTrap?.(payload); |
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).widgetSdk={})}(this,(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var r;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(r||(r={}));const s={[r.SAND]:r.SAND,[r.QA]:r.QA,[r.INT]:r.INT,[r.PROD]:r.PROD};const o={[r.SAND]:"https://api.sand.internal.mx",[r.QA]:"https://api.qa.internal.mx",[r.INT]:"https://int-api.mx.com",[r.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var u,d;function a(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,wait_for_full_aggregation:e.waitForFullAggregation,widget_type:e.widgetType}}function g(e){return e.widget_url.url}function m(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),r=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,r=btoa(`${i}:${t}`);n.Authorization=`Basic ${r}`}const i="cors",r="POST",s=JSON.stringify({widget_url:a(e)});return{method:r,headers:n,body:s,mode:i}}(e);return{url:i,options:r}}function p(e){return e}function l(e){if(!e.ok)throw new i(e.status);return e.json()}function _(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(u||(u={}));class C extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,C.prototype)}}class h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function b(e,t,n,i){const r=e[n],s=void 0!==r,o="string"==typeof r,c="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="string"===i,a="number"===i,g=i instanceof Array,m="object"==typeof i&&!Array.isArray(i);if(!s)throw new C(t,n,i,r);if(d&&!o)throw new C(t,n,i,r);if(a&&!c)throw new C(t,n,i,r);if(!(!g||o&&i.includes(r)))throw new C(t,n,i,r);if(m&&!u)throw new C(t,n,i,r);m&&u&&Object.keys(i).forEach((e=>{b(r,t,e,i[e])}))}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.FocusTrap="mx/focusTrap",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(d||(d={}));const f={[d.Load]:d.Load,[d.Ping]:d.Ping,[d.FocusTrap]:d.FocusTrap,"mx/focustrap":d.FocusTrap,[d.ConnectLoaded]:d.ConnectLoaded,[d.ConnectEnterCredentials]:d.ConnectEnterCredentials,"mx/connect/entercredentials":d.ConnectEnterCredentials,[d.ConnectInstitutionSearch]:d.ConnectInstitutionSearch,"mx/connect/institutionsearch":d.ConnectInstitutionSearch,[d.ConnectSelectedInstitution]:d.ConnectSelectedInstitution,"mx/connect/selectedinstitution":d.ConnectSelectedInstitution,[d.ConnectMemberConnected]:d.ConnectMemberConnected,"mx/connect/memberconnected":d.ConnectMemberConnected,[d.ConnectConnectedPrimaryAction]:d.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":d.ConnectConnectedPrimaryAction,[d.ConnectMemberDeleted]:d.ConnectMemberDeleted,"mx/connect/memberdeleted":d.ConnectMemberDeleted,[d.ConnectCreateMemberError]:d.ConnectCreateMemberError,"mx/connect/createmembererror":d.ConnectCreateMemberError,[d.ConnectMemberStatusUpdate]:d.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":d.ConnectMemberStatusUpdate,[d.ConnectOAuthError]:d.ConnectOAuthError,"mx/connect/oautherror":d.ConnectOAuthError,[d.ConnectOAuthRequested]:d.ConnectOAuthRequested,"mx/connect/oauthrequested":d.ConnectOAuthRequested,[d.ConnectStepChange]:d.ConnectStepChange,"mx/connect/stepchange":d.ConnectStepChange,[d.ConnectSubmitMFA]:d.ConnectSubmitMFA,"mx/connect/submitmfa":d.ConnectSubmitMFA,[d.ConnectUpdateCredentials]:d.ConnectUpdateCredentials,"mx/connect/updatecredentials":d.ConnectUpdateCredentials,[d.PulseOverdraftWarningCtaTransferFunds]:d.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":d.PulseOverdraftWarningCtaTransferFunds,[d.AccountCreated]:d.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new h(t);n=f[t];const i=function(e,t){switch(e){case d.Load:return{type:e};case d.Ping:return b(t,"mx/ping","user_guid","string"),b(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.FocusTrap:return b(t,"mx/focusTrap","user_guid","string"),b(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectLoaded:return b(t,"mx/connect/loaded","user_guid","string"),b(t,"mx/connect/loaded","session_guid","string"),b(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case d.ConnectEnterCredentials:return b(t,"mx/connect/enterCredentials","user_guid","string"),b(t,"mx/connect/enterCredentials","session_guid","string"),b(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case d.ConnectInstitutionSearch:return b(t,"mx/connect/institutionSearch","user_guid","string"),b(t,"mx/connect/institutionSearch","session_guid","string"),b(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case d.ConnectSelectedInstitution:return b(t,"mx/connect/selectedInstitution","user_guid","string"),b(t,"mx/connect/selectedInstitution","session_guid","string"),b(t,"mx/connect/selectedInstitution","code","string"),b(t,"mx/connect/selectedInstitution","guid","string"),b(t,"mx/connect/selectedInstitution","name","string"),b(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case d.ConnectMemberConnected:return b(t,"mx/connect/memberConnected","user_guid","string"),b(t,"mx/connect/memberConnected","session_guid","string"),b(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectConnectedPrimaryAction:return b(t,"mx/connect/connected/primaryAction","user_guid","string"),b(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectMemberDeleted:return b(t,"mx/connect/memberDeleted","user_guid","string"),b(t,"mx/connect/memberDeleted","session_guid","string"),b(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectCreateMemberError:return b(t,"mx/connect/createMemberError","user_guid","string"),b(t,"mx/connect/createMemberError","session_guid","string"),b(t,"mx/connect/createMemberError","institution_guid","string"),b(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case d.ConnectMemberStatusUpdate:return b(t,"mx/connect/memberStatusUpdate","user_guid","string"),b(t,"mx/connect/memberStatusUpdate","session_guid","string"),b(t,"mx/connect/memberStatusUpdate","member_guid","string"),b(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case d.ConnectOAuthError:return b(t,"mx/connect/oauthError","user_guid","string"),b(t,"mx/connect/oauthError","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectOAuthRequested:return b(t,"mx/connect/oauthRequested","user_guid","string"),b(t,"mx/connect/oauthRequested","session_guid","string"),b(t,"mx/connect/oauthRequested","url","string"),b(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case d.ConnectStepChange:return b(t,"mx/connect/stepChange","user_guid","string"),b(t,"mx/connect/stepChange","session_guid","string"),b(t,"mx/connect/stepChange","previous","string"),b(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case d.ConnectSubmitMFA:return b(t,"mx/connect/submitMFA","user_guid","string"),b(t,"mx/connect/submitMFA","session_guid","string"),b(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectUpdateCredentials:return b(t,"mx/connect/updateCredentials","user_guid","string"),b(t,"mx/connect/updateCredentials","session_guid","string"),b(t,"mx/connect/updateCredentials","member_guid","string"),b(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case d.PulseOverdraftWarningCtaTransferFunds:return b(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),b(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case d.AccountCreated:return b(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new h(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof C)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof h))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;case d.ConnectLoaded:t.onLoaded?.(e);break;case d.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case d.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case d.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case d.ConnectMemberConnected:t.onMemberConnected?.(e);break;case d.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case d.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case d.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case d.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case d.ConnectOAuthError:t.onOAuthError?.(e);break;case d.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case d.ConnectStepChange:t.onStepChange?.(e);break;case d.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case d.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function T(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;case d.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"100%",width:"100%"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||m,n=e.ssoRequestPreprocess||p,i=e.ssoRequestPostprocess||g,r=e.onSsoUrlLoadError||_,s=n(t(e));return fetch(s.url,s.options).then(l).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends W{get widgetType(){return u.AccountsWidget}},e.BudgetsWidget=class extends W{get widgetType(){return u.BudgetsWidget}},e.ConnectWidget=class extends W{get widgetType(){return u.ConnectWidget}get dispatcher(){return A}},e.ConnectionsWidget=class extends W{get widgetType(){return u.ConnectionsWidget}},e.DebtsWidget=class extends W{get widgetType(){return u.DebtsWidget}},e.FinstrongWidget=class extends W{get widgetType(){return u.FinstrongWidget}},e.GoalsWidget=class extends W{get widgetType(){return u.GoalsWidget}},e.HelpWidget=class extends W{get widgetType(){return u.HelpWidget}},e.MasterWidget=class extends W{get widgetType(){return u.MasterWidget}},e.MiniBudgetsWidget=class extends W{get widgetType(){return u.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends W{get widgetType(){return u.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends W{get widgetType(){return u.MiniPulseCarouselWidget}get dispatcher(){return T}},e.MiniSpendingWidget=class extends W{get widgetType(){return u.MiniSpendingWidget}},e.PulseWidget=class extends W{get widgetType(){return u.PulseWidget}get dispatcher(){return T}},e.SettingsWidget=class extends W{get widgetType(){return u.SettingsWidget}},e.SpendingWidget=class extends W{get widgetType(){return u.SpendingWidget}},e.TransactionsWidget=class extends W{get widgetType(){return u.TransactionsWidget}},e.TrendsWidget=class extends W{get widgetType(){return u.TrendsWidget}},e.Widget=W,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).widgetSdk={})}(this,(function(e){"use strict";function t(e){return"clientId"in e&&"string"==typeof e.clientId&&"apiKey"in e&&"string"==typeof e.apiKey&&"userGuid"in e&&"string"==typeof e.userGuid&&"environment"in e&&"string"==typeof e.environment}class n extends Error{constructor(){super("Missing required widget props!\n\nComponent needs one of the following groups of props:\n\n - url\n\n - or -\n\n - proxy\n\n - or -\n\n - apiKey\n - clientId\n - environment\n - userGuid"),Object.setPrototypeOf(this,n.prototype)}}class i extends Error{constructor(e){super(`Request failed: ${e}`),this.statusCode=e,Object.setPrototypeOf(this,i.prototype)}}var r;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(r||(r={}));const s={[r.SAND]:r.SAND,[r.QA]:r.QA,[r.INT]:r.INT,[r.PROD]:r.PROD};const o={[r.SAND]:"https://api.sand.internal.mx",[r.QA]:"https://api.qa.internal.mx",[r.INT]:"https://int-api.mx.com",[r.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=o[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var u,d;function a(e){return{client_redirect_url:e.clientRedirectUrl,color_scheme:e.colorScheme,current_institution_code:e.currentInstitutionCode,current_institution_guid:e.currentInstitutionGuid,current_member_guid:e.currentMemberGuid,disable_institution_search:e.disableInstitutionSearch,include_transactions:e.includeTransactions,is_mobile_webview:e.isMobileWebview||!1,mode:e.mode,oauth_referral_source:e.oauthReferralSource,ui_message_version:e.uiMessageVersion||4,ui_message_webview_url_scheme:e.uiMessageWebviewUrlScheme,update_credentials:e.updateCredentials,wait_for_full_aggregation:e.waitForFullAggregation,widget_type:e.widgetType}}function g(e){return e.widget_url.url}function m(e){const i=function(e){if(function(e){return"proxy"in e&&"string"==typeof e.proxy}(e))return function(e){return e.proxy}(e);if(t(e))return function(e){const t=c(e.environment),n=e.userGuid;return`${t}/users/${n}/widget_urls`}(e);throw new n}(e),r=function(e){const n={Accept:"application/vnd.mx.api.v1+json","Content-Type":"application/json"};e.language&&(n["Accept-Language"]=e.language);if(t(e)){const{apiKey:t,clientId:i}=e,r=btoa(`${i}:${t}`);n.Authorization=`Basic ${r}`}const i="cors",r="POST",s=JSON.stringify({widget_url:a(e)});return{method:r,headers:n,body:s,mode:i}}(e);return{url:i,options:r}}function p(e){return e}function l(e){if(!e.ok)throw new i(e.status);return e.json()}function _(e){console.error(e)}!function(e){e.AccountsWidget="accounts_widget",e.BudgetsWidget="budgets_widget",e.ConnectWidget="connect_widget",e.ConnectionsWidget="connections_widget",e.DebtsWidget="debts_widget",e.FinstrongWidget="finstrong_widget",e.GoalsWidget="goals_widget",e.HelpWidget="help_widget",e.MasterWidget="master_widget",e.MiniBudgetsWidget="mini_budgets_widget",e.MiniFinstrongWidget="mini_finstrong_widget",e.MiniPulseCarouselWidget="mini_pulse_carousel_widget",e.MiniSpendingWidget="mini_spending_widget",e.PulseWidget="pulse_widget",e.SettingsWidget="settings_widget",e.SpendingWidget="spending_widget",e.TransactionsWidget="transactions_widget",e.TrendsWidget="trends_widget"}(u||(u={}));class C extends Error{messageType;field;expectedType;gotValue;constructor(e,t,n,i){super(`Unable to decode '${t}' from '${e}'`),this.messageType=e,this.field=t,this.expectedType=n,this.gotValue=i,Object.setPrototypeOf(this,C.prototype)}}class b extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,b.prototype)}}function h(e,t,n,i,r={}){const s=e[n],o=void 0!==s,c="string"==typeof s,u="number"==typeof s,d="object"==typeof s&&!Array.isArray(s),a="boolean"==typeof s,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),_="boolean"===i;if(o||!r.optional){if(!o)throw new C(t,n,i,s);if(g&&!c)throw new C(t,n,i,s);if(m&&!u)throw new C(t,n,i,s);if(!(!p||c&&i.includes(s)))throw new C(t,n,i,s);if(l&&!d)throw new C(t,n,i,s);if(_&&!a)throw new C(t,n,i,s);l&&d&&Object.keys(i).forEach((e=>{h(s,t,e,i[e])}))}}!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ConnectLoaded="mx/connect/loaded",e.ConnectEnterCredentials="mx/connect/enterCredentials",e.ConnectInstitutionSearch="mx/connect/institutionSearch",e.ConnectSelectedInstitution="mx/connect/selectedInstitution",e.ConnectMemberConnected="mx/connect/memberConnected",e.ConnectConnectedPrimaryAction="mx/connect/connected/primaryAction",e.ConnectMemberDeleted="mx/connect/memberDeleted",e.ConnectCreateMemberError="mx/connect/createMemberError",e.ConnectMemberStatusUpdate="mx/connect/memberStatusUpdate",e.ConnectOAuthError="mx/connect/oauthError",e.ConnectOAuthRequested="mx/connect/oauthRequested",e.ConnectStepChange="mx/connect/stepChange",e.ConnectSubmitMFA="mx/connect/submitMFA",e.ConnectUpdateCredentials="mx/connect/updateCredentials",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(d||(d={}));const f={[d.Load]:d.Load,[d.Ping]:d.Ping,[d.Navigation]:d.Navigation,[d.FocusTrap]:d.FocusTrap,"mx/focustrap":d.FocusTrap,[d.ConnectLoaded]:d.ConnectLoaded,[d.ConnectEnterCredentials]:d.ConnectEnterCredentials,"mx/connect/entercredentials":d.ConnectEnterCredentials,[d.ConnectInstitutionSearch]:d.ConnectInstitutionSearch,"mx/connect/institutionsearch":d.ConnectInstitutionSearch,[d.ConnectSelectedInstitution]:d.ConnectSelectedInstitution,"mx/connect/selectedinstitution":d.ConnectSelectedInstitution,[d.ConnectMemberConnected]:d.ConnectMemberConnected,"mx/connect/memberconnected":d.ConnectMemberConnected,[d.ConnectConnectedPrimaryAction]:d.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":d.ConnectConnectedPrimaryAction,[d.ConnectMemberDeleted]:d.ConnectMemberDeleted,"mx/connect/memberdeleted":d.ConnectMemberDeleted,[d.ConnectCreateMemberError]:d.ConnectCreateMemberError,"mx/connect/createmembererror":d.ConnectCreateMemberError,[d.ConnectMemberStatusUpdate]:d.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":d.ConnectMemberStatusUpdate,[d.ConnectOAuthError]:d.ConnectOAuthError,"mx/connect/oautherror":d.ConnectOAuthError,[d.ConnectOAuthRequested]:d.ConnectOAuthRequested,"mx/connect/oauthrequested":d.ConnectOAuthRequested,[d.ConnectStepChange]:d.ConnectStepChange,"mx/connect/stepchange":d.ConnectStepChange,[d.ConnectSubmitMFA]:d.ConnectSubmitMFA,"mx/connect/submitmfa":d.ConnectSubmitMFA,[d.ConnectUpdateCredentials]:d.ConnectUpdateCredentials,"mx/connect/updatecredentials":d.ConnectUpdateCredentials,[d.PulseOverdraftWarningCtaTransferFunds]:d.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":d.PulseOverdraftWarningCtaTransferFunds,[d.AccountCreated]:d.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in f))throw new b(t);n=f[t];const i=function(e,t){switch(e){case d.Load:return{type:e};case d.Ping:return h(t,"mx/ping","user_guid","string"),h(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.Navigation:return h(t,"mx/navigation","user_guid","string"),h(t,"mx/navigation","session_guid","string"),h(t,"mx/navigation","did_go_back","boolean"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,did_go_back:t.did_go_back};case d.FocusTrap:return h(t,"mx/focusTrap","user_guid","string"),h(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectLoaded:return h(t,"mx/connect/loaded","user_guid","string"),h(t,"mx/connect/loaded","session_guid","string"),h(t,"mx/connect/loaded","initial_step",["search","selectMember","enterCreds","mfa","connected","loginError","disclosure"]),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case d.ConnectEnterCredentials:return h(t,"mx/connect/enterCredentials","user_guid","string"),h(t,"mx/connect/enterCredentials","session_guid","string"),h(t,"mx/connect/enterCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution:t.institution};case d.ConnectInstitutionSearch:return h(t,"mx/connect/institutionSearch","user_guid","string"),h(t,"mx/connect/institutionSearch","session_guid","string"),h(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case d.ConnectSelectedInstitution:return h(t,"mx/connect/selectedInstitution","user_guid","string"),h(t,"mx/connect/selectedInstitution","session_guid","string"),h(t,"mx/connect/selectedInstitution","code","string"),h(t,"mx/connect/selectedInstitution","guid","string"),h(t,"mx/connect/selectedInstitution","name","string"),h(t,"mx/connect/selectedInstitution","url","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,code:t.code,guid:t.guid,name:t.name,url:t.url};case d.ConnectMemberConnected:return h(t,"mx/connect/memberConnected","user_guid","string"),h(t,"mx/connect/memberConnected","session_guid","string"),h(t,"mx/connect/memberConnected","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectConnectedPrimaryAction:return h(t,"mx/connect/connected/primaryAction","user_guid","string"),h(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case d.ConnectMemberDeleted:return h(t,"mx/connect/memberDeleted","user_guid","string"),h(t,"mx/connect/memberDeleted","session_guid","string"),h(t,"mx/connect/memberDeleted","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectCreateMemberError:return h(t,"mx/connect/createMemberError","user_guid","string"),h(t,"mx/connect/createMemberError","session_guid","string"),h(t,"mx/connect/createMemberError","institution_guid","string"),h(t,"mx/connect/createMemberError","institution_code","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,institution_guid:t.institution_guid,institution_code:t.institution_code};case d.ConnectMemberStatusUpdate:return h(t,"mx/connect/memberStatusUpdate","user_guid","string"),h(t,"mx/connect/memberStatusUpdate","session_guid","string"),h(t,"mx/connect/memberStatusUpdate","member_guid","string"),h(t,"mx/connect/memberStatusUpdate","connection_status","number"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,connection_status:t.connection_status};case d.ConnectOAuthError:return h(t,"mx/connect/oauthError","user_guid","string"),h(t,"mx/connect/oauthError","session_guid","string"),h(t,"mx/connect/oauthError","member_guid","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectOAuthRequested:return h(t,"mx/connect/oauthRequested","user_guid","string"),h(t,"mx/connect/oauthRequested","session_guid","string"),h(t,"mx/connect/oauthRequested","url","string"),h(t,"mx/connect/oauthRequested","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,url:t.url,member_guid:t.member_guid};case d.ConnectStepChange:return h(t,"mx/connect/stepChange","user_guid","string"),h(t,"mx/connect/stepChange","session_guid","string"),h(t,"mx/connect/stepChange","previous","string"),h(t,"mx/connect/stepChange","current","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,previous:t.previous,current:t.current};case d.ConnectSubmitMFA:return h(t,"mx/connect/submitMFA","user_guid","string"),h(t,"mx/connect/submitMFA","session_guid","string"),h(t,"mx/connect/submitMFA","member_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid};case d.ConnectUpdateCredentials:return h(t,"mx/connect/updateCredentials","user_guid","string"),h(t,"mx/connect/updateCredentials","session_guid","string"),h(t,"mx/connect/updateCredentials","member_guid","string"),h(t,"mx/connect/updateCredentials","institution",{code:"string",guid:"string"}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,member_guid:t.member_guid,institution:t.institution};case d.PulseOverdraftWarningCtaTransferFunds:return h(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),h(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case d.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new b(e)}}(n,e.metadata||{});return i}function y(e,t,n){if(t instanceof C)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof b))throw t;n.onInvalidMessageError?.(e,t)}}function w(e,t){t.onMessage?.(e)}function M(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.Navigation:t.onNavigation?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;default:throw new b(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function A(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.Navigation:t.onNavigation?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;case d.ConnectLoaded:t.onLoaded?.(e);break;case d.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case d.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case d.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case d.ConnectMemberConnected:t.onMemberConnected?.(e);break;case d.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case d.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case d.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case d.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case d.ConnectOAuthError:t.onOAuthError?.(e);break;case d.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case d.ConnectStepChange:t.onStepChange?.(e);break;case d.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case d.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;default:throw new b(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}function T(e,t){try{w(e,t);!function(e,t){switch(e.type){case d.Load:t.onLoad?.(e);break;case d.Ping:t.onPing?.(e);break;case d.Navigation:t.onNavigation?.(e);break;case d.FocusTrap:t.onFocusTrap?.(e);break;case d.AccountCreated:t.onAccountCreated?.(e);break;case d.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new b(e.type)}}(x(e.data),t)}catch(n){y(e,n,t)}}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"100%",width:"100%"},this.messageCallback=e=>{e.data.mx&&this.dispatcher(e,this.options)},"string"==typeof e.container){const t=document.querySelector(e.container);if(!t)throw new Error(`Unable to find widget container. Ensure that an element matching a selector for '${this.options.container}' is available in the DOM before you initialize the widget.`);this.container=t}else{if(!(e.container instanceof Element))throw new Error("Invalid or missing value for container property, expecting a query selector string or a DOM Element.");this.container=e.container}this.setupIframe(),this.setupListener()}get widgetType(){if(this.options.widgetType)return this.options.widgetType;throw new Error("Missing value for widgetType property, expecting a string (eg. connect_widget).")}get dispatcher(){return M}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||m,n=e.ssoRequestPreprocess||p,i=e.ssoRequestPostprocess||g,r=e.onSsoUrlLoadError||_,s=n(t(e));return fetch(s.url,s.options).then(l).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.iframe.setAttribute("data-test-id","mx-widget-iframe"),this.iframe.setAttribute("title",this.options.iframeTitle||"Widget Iframe"),this.iframe.setAttribute("src",e),Object.keys(this.style).forEach((e=>{this.iframe.style[e]=this.style[e]})),this.container.appendChild(this.iframe))}))}teardownIframe(){this.container.contains(this.iframe)&&this.container.removeChild(this.iframe)}setupListener(){window.addEventListener("message",this.messageCallback,!1)}teardownListener(){window.removeEventListener("message",this.messageCallback,!1)}}e.AccountsWidget=class extends W{get widgetType(){return u.AccountsWidget}},e.BudgetsWidget=class extends W{get widgetType(){return u.BudgetsWidget}},e.ConnectWidget=class extends W{get widgetType(){return u.ConnectWidget}get dispatcher(){return A}},e.ConnectionsWidget=class extends W{get widgetType(){return u.ConnectionsWidget}},e.DebtsWidget=class extends W{get widgetType(){return u.DebtsWidget}},e.FinstrongWidget=class extends W{get widgetType(){return u.FinstrongWidget}},e.GoalsWidget=class extends W{get widgetType(){return u.GoalsWidget}},e.HelpWidget=class extends W{get widgetType(){return u.HelpWidget}},e.MasterWidget=class extends W{get widgetType(){return u.MasterWidget}},e.MiniBudgetsWidget=class extends W{get widgetType(){return u.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends W{get widgetType(){return u.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends W{get widgetType(){return u.MiniPulseCarouselWidget}get dispatcher(){return T}},e.MiniSpendingWidget=class extends W{get widgetType(){return u.MiniSpendingWidget}},e.PulseWidget=class extends W{get widgetType(){return u.PulseWidget}get dispatcher(){return T}},e.SettingsWidget=class extends W{get widgetType(){return u.SettingsWidget}},e.SpendingWidget=class extends W{get widgetType(){return u.SpendingWidget}},e.TransactionsWidget=class extends W{get widgetType(){return u.TransactionsWidget}},e.TrendsWidget=class extends W{get widgetType(){return u.TrendsWidget}},e.Widget=W,Object.defineProperty(e,"__esModule",{value:!0})})); |
{ | ||
"name": "@mxenabled/web-widget-sdk", | ||
"version": "0.0.6", | ||
"version": "0.0.7", | ||
"description": "MX Web Widget SDK", | ||
"main": "./dist/cjs/index.js", | ||
"exports": { | ||
".": { | ||
"import": { | ||
"default": "./dist/esm/index.js" | ||
}, | ||
"require": { | ||
"default": "./dist/cjs/index.js" | ||
} | ||
} | ||
}, | ||
"files": [ | ||
@@ -9,3 +20,3 @@ "dist" | ||
"scripts": { | ||
"build": "npm run clean && npm run compile && npm run bundle", | ||
"build": "npm run clean && npm run compile && npm run bundle && npm run documentation", | ||
"bundle": "rollup -c", | ||
@@ -16,12 +27,15 @@ "clean": "npm run clean:build && npm run clean:dist", | ||
"compile": "npm run compile:sdk && npm run compile:cypress && npm run compile:jest", | ||
"compile:cypress": "tsc --noEmit --types cypress,node $(find cypress -not -path 'cypress/application/*' -type f -name *.ts)", | ||
"compile:jest": "tsc --noEmit --types jest,node $(find jest -type f -name *.ts)", | ||
"compile:sdk": "tsc --outDir build", | ||
"compile:cypress": "tsc --noEmit --types cypress,node $(find cypress -type f -name *.ts)", | ||
"compile:jest": "tsc --noEmit --types jest,node $(find jest -type f -name *.ts)", | ||
"documentation": "cp node_modules/@mxenabled/widget-post-message-definitions/docs/web-sdk-generated.md docs/widget_callback_props.md", | ||
"format": "npm run prettier -- -w", | ||
"lint": "eslint src example jest cypress", | ||
"prepack": "npm run build", | ||
"prettier": "prettier src example jest cypress", | ||
"lint": "eslint src example jest cypress", | ||
"prettier": "prettier src example jest cypress --ignore-path .gitignore", | ||
"spellcheck": "cspell $(git ls-files)", | ||
"test": "jest --verbose --coverage", | ||
"test:integration": "start-server-and-test test:server ${PORT:-8089} test:cypress", | ||
"test:build": "./bin/test-build", | ||
"test:cypress": "cypress run", | ||
"test:integration": "./bin/test-integration", | ||
"test:server": "ts-node -O {\\\"module\\\":\\\"commonjs\\\"} cypress/application/server.ts", | ||
@@ -44,3 +58,3 @@ "watch": "npm-watch" | ||
"dependencies": { | ||
"@mxenabled/widget-post-message-definitions": "^1.0.7" | ||
"@mxenabled/widget-post-message-definitions": "^1.0.8" | ||
}, | ||
@@ -62,2 +76,3 @@ "devDependencies": { | ||
"babelify": "^10.0.0", | ||
"cspell": "^6.1.1", | ||
"cypress": "^9.5.3", | ||
@@ -91,3 +106,4 @@ "dotenv": "^16.0.0", | ||
"env": { | ||
"browser": true | ||
"browser": true, | ||
"node": true | ||
}, | ||
@@ -115,3 +131,7 @@ "extends": [ | ||
] | ||
} | ||
}, | ||
"ignorePatterns": [ | ||
"**/node_modules/**", | ||
"**/build/**" | ||
] | ||
}, | ||
@@ -118,0 +138,0 @@ "jest": { |
144
README.md
@@ -6,7 +6,6 @@ # MX Web Widget SDK | ||
The purpose of this project is to help simplify your integration experience. | ||
Giving you as few steps as possible to get up and running with an MX React | ||
Native widget. | ||
Giving you as few steps as possible to get up and running with an MX web widget. | ||
After following the Getting Started instructions below, you will be able to | ||
import and load MX widgets in your React Native application, and configure them | ||
import and load MX widgets in your web applications, and configure them | ||
for your specific needs. | ||
@@ -16,7 +15,7 @@ | ||
Please refer to the offical [MX Docs](https://docs.mx.com/) for an in-depth | ||
Please refer to the official [MX Docs](https://docs.mx.com/) for an in-depth | ||
explanation of the MX platform. The general outline for incorporating the | ||
`web-widget-sdk` into your project is as follow: | ||
- Signup for a developer account at the developer portal. | ||
- Sign up for a developer account at the developer portal. | ||
- Install and setup the SDK via `npm` or `yarn`. | ||
@@ -27,3 +26,3 @@ - Generate an authenticated SSO widget url. | ||
### Aquire your developer account | ||
### Acquire your developer account | ||
@@ -35,5 +34,79 @@ A developer account can be obtained by signing up on our [Client | ||
TODO: Install via es6 module system instructions. | ||
TODO: Install via AMD module system instructions. | ||
Open a terminal and run the commands below at the root of your project to | ||
install the SDK: | ||
Using npm | ||
``` | ||
npm install --save @mxenabled/web-widget-sdk | ||
``` | ||
Using yarn | ||
``` | ||
yarn add @mxenabled/web-widget-sdk | ||
``` | ||
### Incorporating the SDK into your application | ||
The Widget SDK provides multiple modules that you can import and use in your | ||
application. There is currently a [CommonJS module][commonjs_module], an ES | ||
module, an [AMD module][amd_module], and an [UMD module][umd_module] that you | ||
can use depending on your build process. | ||
#### CommonJS module | ||
A CommonJS module is exported by this package and available by requiring | ||
`@mxenabled/web-widget-sdk`. Require this module and build your project with a | ||
build tool that supports CommonJS modules (such as [browserify][browserify]): | ||
```js | ||
const widgetSdk = require("@mxenabled/web-widget-sdk") | ||
const widget = new widgetSdk.ConnectWidget({ /* options */ }) | ||
``` | ||
#### ES module | ||
An ES module is exported by this package and available by importing | ||
`@mxenabled/web-widget-sdk`. Import this module and build your project with a | ||
build tool that supports ES modules (such as [webpack][webpack]): | ||
```js | ||
import * as widgetSdk from "@mxenabled/web-widget-sdk" | ||
const widget = new widgetSdk.ConnectWidget({ /* options */ }) | ||
``` | ||
#### AMD module | ||
The AMD module can be found in | ||
`node_modules/@mxenabled/web-widget-sdk/dist/amd/index.js`. In order to serve | ||
this file in your application, you will have to host it yourself. Transfer this | ||
file into any location where it can be made publicly available from. Once the | ||
file is available, you can import and use it like so: | ||
```html | ||
<script src="https://requirejs.org/docs/release/2.3.6/minified/require.js"></script> | ||
<script> | ||
requirejs(["<path to MX Web Widget SDK AMD JavaScript file>"], function (widgetSdk) { | ||
const widget = new widgetSdk.ConnectWidget({ /* options */ }) | ||
}) | ||
</script> | ||
``` | ||
#### UMD module | ||
The UMD module can be found in | ||
`node_modules/@mxenabled/web-widget-sdk/dist/umd/index.js`. In order to serve | ||
this file in your application, you will have to host it yourself. Transfer this | ||
file into any location where it can be made publicly available from. Once the | ||
file is available, you can import and use it like so: | ||
```html | ||
<div id="container"></div> | ||
<script src="<path to MX Web Widget SDK UMD JavaScript file>"></script> | ||
<script> | ||
const widget = new widgetSdk.ConnectWidget({ /* options */ }) | ||
</script> | ||
``` | ||
### Generating your Widget SSO URL | ||
@@ -46,2 +119,9 @@ | ||
```js | ||
const options = { | ||
container: "#widget", | ||
url: "https://int-widgets.moneydesktop.com/md/connect/..." | ||
} | ||
``` | ||
#### Proxy server | ||
@@ -53,24 +133,27 @@ | ||
### Importing the SDK into your project and rendering a widget using modules with Asynchronous Module Definition (AMD) | ||
```js | ||
const options = { | ||
container: "#widget", | ||
proxy: "http://localhost:8089/{widget_type}/{user_guid}", | ||
} | ||
``` | ||
Once the steps above have been completed, you will be able to import | ||
the `@mxenabled/web-widget-sdk` package and render them in your application: | ||
### Mounting and Unmounting the widget | ||
When you instantiate a widget with options, it will mount itself in the DOM, and set up various event listeners. | ||
You'll need to call the `unmount` method when closing the widget and before creating a new instance. | ||
```html | ||
<script src="mx-web-widget-sdk-amd.js"></script> | ||
```js | ||
const options = { | ||
container: "#widget", | ||
widgetURL: "https://int-widgets.moneydesktop.com/md/connect/...." | ||
} | ||
<script> | ||
requirejs(["@mxenabled/web-widget-sdk"], function (sdk) { | ||
const options = { | ||
container: "#widget", | ||
proxy: "http://localhost:8089/{widget_type}/{user_guid}", | ||
onMessage: (event) => { | ||
logEvent(event.data) | ||
}, | ||
} | ||
// Calling `new sdk.ConnectWidget(...)` here will mount the widget in the DOM | ||
const widget = new widgetSdk.ConnectWidget(options) | ||
const widget = new sdk.ConnectWidget(options) | ||
}) | ||
</script> | ||
// When you are ready to close the widget, you'll want to call `unmount`. This | ||
// will remove the element and any event listeners added. | ||
widget.unmount() | ||
``` | ||
### Interacting with the widget | ||
@@ -91,3 +174,3 @@ | ||
You can configure the state and behaviour of the widget with the following | ||
You can configure the state and behavior of the widget with the following | ||
class options: | ||
@@ -119,3 +202,3 @@ | ||
will be disabled and end users will not be able to navigate to it. Must be | ||
used with `currentInstitutionCode`, `currentInstituionGuid`, or | ||
used with `currentInstitutionCode`, `currentInstitutionGuid`, or | ||
`currentMemberGuid`. | ||
@@ -168,4 +251,9 @@ - `includeTransactions`: When set to false while creating or updating a member, | ||
[amd_module]: https://requirejs.org/docs/whyamd.html "AMD modules" | ||
[api_request_connect_url]: https://docs.mx.com/api#connect_request_a_url "Request a Connect URL" | ||
[api_request_widget_url]: https://docs.mx.com/api#widgets_mx_widgets_request_widget_url "Request a widget URL" | ||
[api_request_connect_url]: https://docs.mx.com/api#connect_request_a_url "Request a Connect URL" | ||
[browserify]: https://browserify.org/ "Browserify" | ||
[commonjs_module]: https://nodejs.org/api/modules.html "CommonJS modules" | ||
[react_native_style]: https://reactnative.dev/docs/style "React Native Style" | ||
[umd_module]: https://github.com/umdjs/umd "UMD modules" | ||
[webpack]: https://webpack.js.org/ "webpack" |
240290
3965
251
29