Socket
Socket
Sign inDemoInstall

@mxenabled/web-widget-sdk

Package Overview
Dependencies
1
Maintainers
10
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.6 to 0.0.7

dist/esm/index.js

41

dist/amd/index.js

@@ -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);

2

dist/amd/index.min.js

@@ -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": {

@@ -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"
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc