Socket
Socket
Sign inDemoInstall

@mxenabled/web-widget-sdk

Package Overview
Dependencies
1
Maintainers
23
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.11 to 0.0.12

6

dist/amd/index.js

@@ -198,3 +198,3 @@ define(['exports'], (function (exports) { 'use strict';

const sdkVersion = "0.0.11";
const sdkVersion = "0.0.12";

@@ -549,3 +549,5 @@ // This is an internal error. Thrown when we are decoding a post message's

assertMessageProp(metadata, "mx/connect/backToSearch", "session_guid", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string", {
optional: true,
});
return {

@@ -552,0 +554,0 @@ type,

@@ -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 s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[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 a;function u(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,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(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),s=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,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:u(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function m(e){return e}function p(e){if(!e.ok)throw new i(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"}(a||(a={}));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 h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function C(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),h="boolean"===i;if(o||!s.optional){if(!o)throw new _(t,n,i,r);if(g&&!c)throw new _(t,n,i,r);if(m&&!a)throw new _(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new _(t,n,i,r);if(l&&!u)throw new _(t,n,i,r);if(h&&!d)throw new _(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{C(r,t,e,i[e])}))}}var b;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(b||(b={}));const f={[b.Load]:b.Load,[b.Ping]:b.Ping,[b.Navigation]:b.Navigation,[b.FocusTrap]:b.FocusTrap,"mx/focustrap":b.FocusTrap,[b.ClientOAuthComplete]:b.ClientOAuthComplete,"mx/client/oauthcomplete":b.ClientOAuthComplete,[b.ConnectLoaded]:b.ConnectLoaded,[b.ConnectEnterCredentials]:b.ConnectEnterCredentials,"mx/connect/entercredentials":b.ConnectEnterCredentials,[b.ConnectInstitutionSearch]:b.ConnectInstitutionSearch,"mx/connect/institutionsearch":b.ConnectInstitutionSearch,[b.ConnectSelectedInstitution]:b.ConnectSelectedInstitution,"mx/connect/selectedinstitution":b.ConnectSelectedInstitution,[b.ConnectMemberConnected]:b.ConnectMemberConnected,"mx/connect/memberconnected":b.ConnectMemberConnected,[b.ConnectConnectedPrimaryAction]:b.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":b.ConnectConnectedPrimaryAction,[b.ConnectMemberDeleted]:b.ConnectMemberDeleted,"mx/connect/memberdeleted":b.ConnectMemberDeleted,[b.ConnectCreateMemberError]:b.ConnectCreateMemberError,"mx/connect/createmembererror":b.ConnectCreateMemberError,[b.ConnectMemberStatusUpdate]:b.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":b.ConnectMemberStatusUpdate,[b.ConnectOAuthError]:b.ConnectOAuthError,"mx/connect/oautherror":b.ConnectOAuthError,[b.ConnectOAuthRequested]:b.ConnectOAuthRequested,"mx/connect/oauthrequested":b.ConnectOAuthRequested,[b.ConnectStepChange]:b.ConnectStepChange,"mx/connect/stepchange":b.ConnectStepChange,[b.ConnectSubmitMFA]:b.ConnectSubmitMFA,"mx/connect/submitmfa":b.ConnectSubmitMFA,[b.ConnectUpdateCredentials]:b.ConnectUpdateCredentials,"mx/connect/updatecredentials":b.ConnectUpdateCredentials,[b.ConnectBackToSearch]:b.ConnectBackToSearch,"mx/connect/backtosearch":b.ConnectBackToSearch,[b.PulseOverdraftWarningCtaTransferFunds]:b.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":b.PulseOverdraftWarningCtaTransferFunds,[b.AccountCreated]:b.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 b.Load:return{type:e};case b.Ping:return C(t,"mx/ping","user_guid","string"),C(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.Navigation:return C(t,"mx/navigation","user_guid","string"),C(t,"mx/navigation","session_guid","string"),C(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 b.FocusTrap:return C(t,"mx/focusTrap","user_guid","string"),C(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ClientOAuthComplete:return C(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case b.ConnectLoaded:return C(t,"mx/connect/loaded","user_guid","string"),C(t,"mx/connect/loaded","session_guid","string"),C(t,"mx/connect/loaded","initial_step","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case b.ConnectEnterCredentials:return C(t,"mx/connect/enterCredentials","user_guid","string"),C(t,"mx/connect/enterCredentials","session_guid","string"),C(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 b.ConnectInstitutionSearch:return C(t,"mx/connect/institutionSearch","user_guid","string"),C(t,"mx/connect/institutionSearch","session_guid","string"),C(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case b.ConnectSelectedInstitution:return C(t,"mx/connect/selectedInstitution","user_guid","string"),C(t,"mx/connect/selectedInstitution","session_guid","string"),C(t,"mx/connect/selectedInstitution","code","string"),C(t,"mx/connect/selectedInstitution","guid","string"),C(t,"mx/connect/selectedInstitution","name","string"),C(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 b.ConnectMemberConnected:return C(t,"mx/connect/memberConnected","user_guid","string"),C(t,"mx/connect/memberConnected","session_guid","string"),C(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 b.ConnectConnectedPrimaryAction:return C(t,"mx/connect/connected/primaryAction","user_guid","string"),C(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ConnectMemberDeleted:return C(t,"mx/connect/memberDeleted","user_guid","string"),C(t,"mx/connect/memberDeleted","session_guid","string"),C(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 b.ConnectCreateMemberError:return C(t,"mx/connect/createMemberError","user_guid","string"),C(t,"mx/connect/createMemberError","session_guid","string"),C(t,"mx/connect/createMemberError","institution_guid","string"),C(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 b.ConnectMemberStatusUpdate:return C(t,"mx/connect/memberStatusUpdate","user_guid","string"),C(t,"mx/connect/memberStatusUpdate","session_guid","string"),C(t,"mx/connect/memberStatusUpdate","member_guid","string"),C(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 b.ConnectOAuthError:return C(t,"mx/connect/oauthError","user_guid","string"),C(t,"mx/connect/oauthError","session_guid","string"),C(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 b.ConnectOAuthRequested:return C(t,"mx/connect/oauthRequested","user_guid","string"),C(t,"mx/connect/oauthRequested","session_guid","string"),C(t,"mx/connect/oauthRequested","url","string"),C(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 b.ConnectStepChange:return C(t,"mx/connect/stepChange","user_guid","string"),C(t,"mx/connect/stepChange","session_guid","string"),C(t,"mx/connect/stepChange","previous","string"),C(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 b.ConnectSubmitMFA:return C(t,"mx/connect/submitMFA","user_guid","string"),C(t,"mx/connect/submitMFA","session_guid","string"),C(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 b.ConnectUpdateCredentials:return C(t,"mx/connect/updateCredentials","user_guid","string"),C(t,"mx/connect/updateCredentials","session_guid","string"),C(t,"mx/connect/updateCredentials","member_guid","string"),C(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 b.ConnectBackToSearch:return C(t,"mx/connect/backToSearch","user_guid","string"),C(t,"mx/connect/backToSearch","session_guid","string"),C(t,"mx/connect/backToSearch","context","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case b.PulseOverdraftWarningCtaTransferFunds:return C(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),C(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case b.AccountCreated:return C(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 _)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){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function T(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.ConnectLoaded:t.onLoaded?.(e);break;case b.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case b.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case b.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case b.ConnectMemberConnected:t.onMemberConnected?.(e);break;case b.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case b.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case b.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case b.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case b.ConnectOAuthError:t.onOAuthError?.(e);break;case b.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case b.ConnectStepChange:t.onStepChange?.(e);break;case b.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case b.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case b.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function S(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:b.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===b.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===b.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.11"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}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,s=e.onSsoUrlLoadError||l,r=n(t(e));return fetch(r.url,r.options).then(p).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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 a.AccountsWidget}},e.BudgetsWidget=class extends W{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends W{get widgetType(){return a.ConnectWidget}get dispatcher(){return T}},e.ConnectionsWidget=class extends W{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends W{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends W{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends W{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends W{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends W{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends W{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends W{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends W{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return S}},e.MiniSpendingWidget=class extends W{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends W{get widgetType(){return a.PulseWidget}get dispatcher(){return S}},e.SettingsWidget=class extends W{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends W{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends W{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends W{get widgetType(){return a.TrendsWidget}},e.Widget=W,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 s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[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 a;function u(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,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(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),s=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,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:u(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function m(e){return e}function p(e){if(!e.ok)throw new i(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"}(a||(a={}));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 h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function C(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),h="boolean"===i;if(o||!s.optional){if(!o)throw new _(t,n,i,r);if(g&&!c)throw new _(t,n,i,r);if(m&&!a)throw new _(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new _(t,n,i,r);if(l&&!u)throw new _(t,n,i,r);if(h&&!d)throw new _(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{C(r,t,e,i[e])}))}}var b;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(b||(b={}));const f={[b.Load]:b.Load,[b.Ping]:b.Ping,[b.Navigation]:b.Navigation,[b.FocusTrap]:b.FocusTrap,"mx/focustrap":b.FocusTrap,[b.ClientOAuthComplete]:b.ClientOAuthComplete,"mx/client/oauthcomplete":b.ClientOAuthComplete,[b.ConnectLoaded]:b.ConnectLoaded,[b.ConnectEnterCredentials]:b.ConnectEnterCredentials,"mx/connect/entercredentials":b.ConnectEnterCredentials,[b.ConnectInstitutionSearch]:b.ConnectInstitutionSearch,"mx/connect/institutionsearch":b.ConnectInstitutionSearch,[b.ConnectSelectedInstitution]:b.ConnectSelectedInstitution,"mx/connect/selectedinstitution":b.ConnectSelectedInstitution,[b.ConnectMemberConnected]:b.ConnectMemberConnected,"mx/connect/memberconnected":b.ConnectMemberConnected,[b.ConnectConnectedPrimaryAction]:b.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":b.ConnectConnectedPrimaryAction,[b.ConnectMemberDeleted]:b.ConnectMemberDeleted,"mx/connect/memberdeleted":b.ConnectMemberDeleted,[b.ConnectCreateMemberError]:b.ConnectCreateMemberError,"mx/connect/createmembererror":b.ConnectCreateMemberError,[b.ConnectMemberStatusUpdate]:b.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":b.ConnectMemberStatusUpdate,[b.ConnectOAuthError]:b.ConnectOAuthError,"mx/connect/oautherror":b.ConnectOAuthError,[b.ConnectOAuthRequested]:b.ConnectOAuthRequested,"mx/connect/oauthrequested":b.ConnectOAuthRequested,[b.ConnectStepChange]:b.ConnectStepChange,"mx/connect/stepchange":b.ConnectStepChange,[b.ConnectSubmitMFA]:b.ConnectSubmitMFA,"mx/connect/submitmfa":b.ConnectSubmitMFA,[b.ConnectUpdateCredentials]:b.ConnectUpdateCredentials,"mx/connect/updatecredentials":b.ConnectUpdateCredentials,[b.ConnectBackToSearch]:b.ConnectBackToSearch,"mx/connect/backtosearch":b.ConnectBackToSearch,[b.PulseOverdraftWarningCtaTransferFunds]:b.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":b.PulseOverdraftWarningCtaTransferFunds,[b.AccountCreated]:b.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 b.Load:return{type:e};case b.Ping:return C(t,"mx/ping","user_guid","string"),C(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.Navigation:return C(t,"mx/navigation","user_guid","string"),C(t,"mx/navigation","session_guid","string"),C(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 b.FocusTrap:return C(t,"mx/focusTrap","user_guid","string"),C(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ClientOAuthComplete:return C(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case b.ConnectLoaded:return C(t,"mx/connect/loaded","user_guid","string"),C(t,"mx/connect/loaded","session_guid","string"),C(t,"mx/connect/loaded","initial_step","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case b.ConnectEnterCredentials:return C(t,"mx/connect/enterCredentials","user_guid","string"),C(t,"mx/connect/enterCredentials","session_guid","string"),C(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 b.ConnectInstitutionSearch:return C(t,"mx/connect/institutionSearch","user_guid","string"),C(t,"mx/connect/institutionSearch","session_guid","string"),C(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case b.ConnectSelectedInstitution:return C(t,"mx/connect/selectedInstitution","user_guid","string"),C(t,"mx/connect/selectedInstitution","session_guid","string"),C(t,"mx/connect/selectedInstitution","code","string"),C(t,"mx/connect/selectedInstitution","guid","string"),C(t,"mx/connect/selectedInstitution","name","string"),C(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 b.ConnectMemberConnected:return C(t,"mx/connect/memberConnected","user_guid","string"),C(t,"mx/connect/memberConnected","session_guid","string"),C(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 b.ConnectConnectedPrimaryAction:return C(t,"mx/connect/connected/primaryAction","user_guid","string"),C(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ConnectMemberDeleted:return C(t,"mx/connect/memberDeleted","user_guid","string"),C(t,"mx/connect/memberDeleted","session_guid","string"),C(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 b.ConnectCreateMemberError:return C(t,"mx/connect/createMemberError","user_guid","string"),C(t,"mx/connect/createMemberError","session_guid","string"),C(t,"mx/connect/createMemberError","institution_guid","string"),C(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 b.ConnectMemberStatusUpdate:return C(t,"mx/connect/memberStatusUpdate","user_guid","string"),C(t,"mx/connect/memberStatusUpdate","session_guid","string"),C(t,"mx/connect/memberStatusUpdate","member_guid","string"),C(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 b.ConnectOAuthError:return C(t,"mx/connect/oauthError","user_guid","string"),C(t,"mx/connect/oauthError","session_guid","string"),C(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 b.ConnectOAuthRequested:return C(t,"mx/connect/oauthRequested","user_guid","string"),C(t,"mx/connect/oauthRequested","session_guid","string"),C(t,"mx/connect/oauthRequested","url","string"),C(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 b.ConnectStepChange:return C(t,"mx/connect/stepChange","user_guid","string"),C(t,"mx/connect/stepChange","session_guid","string"),C(t,"mx/connect/stepChange","previous","string"),C(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 b.ConnectSubmitMFA:return C(t,"mx/connect/submitMFA","user_guid","string"),C(t,"mx/connect/submitMFA","session_guid","string"),C(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 b.ConnectUpdateCredentials:return C(t,"mx/connect/updateCredentials","user_guid","string"),C(t,"mx/connect/updateCredentials","session_guid","string"),C(t,"mx/connect/updateCredentials","member_guid","string"),C(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 b.ConnectBackToSearch:return C(t,"mx/connect/backToSearch","user_guid","string"),C(t,"mx/connect/backToSearch","session_guid","string"),C(t,"mx/connect/backToSearch","context","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case b.PulseOverdraftWarningCtaTransferFunds:return C(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),C(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case b.AccountCreated:return C(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 _)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){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function T(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.ConnectLoaded:t.onLoaded?.(e);break;case b.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case b.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case b.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case b.ConnectMemberConnected:t.onMemberConnected?.(e);break;case b.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case b.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case b.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case b.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case b.ConnectOAuthError:t.onOAuthError?.(e);break;case b.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case b.ConnectStepChange:t.onStepChange?.(e);break;case b.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case b.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case b.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function S(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:b.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===b.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===b.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.12"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}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,s=e.onSsoUrlLoadError||l,r=n(t(e));return fetch(r.url,r.options).then(p).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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 a.AccountsWidget}},e.BudgetsWidget=class extends W{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends W{get widgetType(){return a.ConnectWidget}get dispatcher(){return T}},e.ConnectionsWidget=class extends W{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends W{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends W{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends W{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends W{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends W{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends W{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends W{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends W{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return S}},e.MiniSpendingWidget=class extends W{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends W{get widgetType(){return a.PulseWidget}get dispatcher(){return S}},e.SettingsWidget=class extends W{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends W{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends W{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends W{get widgetType(){return a.TrendsWidget}},e.Widget=W,Object.defineProperty(e,"__esModule",{value:!0})}));

@@ -200,3 +200,3 @@ 'use strict';

const sdkVersion = "0.0.11";
const sdkVersion = "0.0.12";

@@ -551,3 +551,5 @@ // This is an internal error. Thrown when we are decoding a post message's

assertMessageProp(metadata, "mx/connect/backToSearch", "session_guid", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string", {
optional: true,
});
return {

@@ -554,0 +556,0 @@ type,

@@ -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 s={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const r={[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=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=r[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c;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,widget_type:e.widgetType}}function u(e){return e.widget_url.url}function d(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),s=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,s=btoa(`${i}:${e}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:a(t)});return{method:s,headers:n,body:r,mode:i}}(n);return{url:i,options:s}}function g(e){return e}function m(e){if(!e.ok)throw new n(e.status);return e.json()}function p(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 l 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,l.prototype)}}class _ extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,_.prototype)}}function h(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,_="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!s.optional){if(!o)throw new l(t,n,i,r);if(g&&!c)throw new l(t,n,i,r);if(m&&!a)throw new l(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new l(t,n,i,r);if(_&&!u)throw new l(t,n,i,r);if(C&&!d)throw new l(t,n,i,r);_&&u&&Object.keys(i).forEach((e=>{h(r,t,e,i[e])}))}}var C;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(C||(C={}));const b={[C.Load]:C.Load,[C.Ping]:C.Ping,[C.Navigation]:C.Navigation,[C.FocusTrap]:C.FocusTrap,"mx/focustrap":C.FocusTrap,[C.ClientOAuthComplete]:C.ClientOAuthComplete,"mx/client/oauthcomplete":C.ClientOAuthComplete,[C.ConnectLoaded]:C.ConnectLoaded,[C.ConnectEnterCredentials]:C.ConnectEnterCredentials,"mx/connect/entercredentials":C.ConnectEnterCredentials,[C.ConnectInstitutionSearch]:C.ConnectInstitutionSearch,"mx/connect/institutionsearch":C.ConnectInstitutionSearch,[C.ConnectSelectedInstitution]:C.ConnectSelectedInstitution,"mx/connect/selectedinstitution":C.ConnectSelectedInstitution,[C.ConnectMemberConnected]:C.ConnectMemberConnected,"mx/connect/memberconnected":C.ConnectMemberConnected,[C.ConnectConnectedPrimaryAction]:C.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":C.ConnectConnectedPrimaryAction,[C.ConnectMemberDeleted]:C.ConnectMemberDeleted,"mx/connect/memberdeleted":C.ConnectMemberDeleted,[C.ConnectCreateMemberError]:C.ConnectCreateMemberError,"mx/connect/createmembererror":C.ConnectCreateMemberError,[C.ConnectMemberStatusUpdate]:C.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":C.ConnectMemberStatusUpdate,[C.ConnectOAuthError]:C.ConnectOAuthError,"mx/connect/oautherror":C.ConnectOAuthError,[C.ConnectOAuthRequested]:C.ConnectOAuthRequested,"mx/connect/oauthrequested":C.ConnectOAuthRequested,[C.ConnectStepChange]:C.ConnectStepChange,"mx/connect/stepchange":C.ConnectStepChange,[C.ConnectSubmitMFA]:C.ConnectSubmitMFA,"mx/connect/submitmfa":C.ConnectSubmitMFA,[C.ConnectUpdateCredentials]:C.ConnectUpdateCredentials,"mx/connect/updatecredentials":C.ConnectUpdateCredentials,[C.ConnectBackToSearch]:C.ConnectBackToSearch,"mx/connect/backtosearch":C.ConnectBackToSearch,[C.PulseOverdraftWarningCtaTransferFunds]:C.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":C.PulseOverdraftWarningCtaTransferFunds,[C.AccountCreated]:C.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new _(t);n=b[t];const i=function(e,t){switch(e){case C.Load:return{type:e};case C.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 C.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 C.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 C.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case C.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","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.ConnectBackToSearch:return h(t,"mx/connect/backToSearch","user_guid","string"),h(t,"mx/connect/backToSearch","session_guid","string"),h(t,"mx/connect/backToSearch","context","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case C.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 C.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new _(e)}}(n,e.metadata||{});return i}function f(e,t,n){if(t instanceof l)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof _))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){let n;try{y(e,t),n=x(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){f(e,n,t)}return n}function M(e,t){let n;try{y(e,t),n=x(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.ConnectLoaded:t.onLoaded?.(e);break;case C.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case C.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case C.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case C.ConnectMemberConnected:t.onMemberConnected?.(e);break;case C.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case C.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case C.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case C.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case C.ConnectOAuthError:t.onOAuthError?.(e);break;case C.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case C.ConnectStepChange:t.onStepChange?.(e);break;case C.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case C.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case C.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){f(e,n,t)}return n}function T(e,t){let n;try{y(e,t),n=x(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){f(e,n,t)}return n}class S{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:C.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===C.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===C.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.11"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||d,n=e.ssoRequestPreprocess||g,i=e.ssoRequestPostprocess||u,s=e.onSsoUrlLoadError||p,r=n(t(e));return fetch(r.url,r.options).then(m).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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 S{get widgetType(){return c.AccountsWidget}},exports.BudgetsWidget=class extends S{get widgetType(){return c.BudgetsWidget}},exports.ConnectWidget=class extends S{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}},exports.ConnectionsWidget=class extends S{get widgetType(){return c.ConnectionsWidget}},exports.DebtsWidget=class extends S{get widgetType(){return c.DebtsWidget}},exports.FinstrongWidget=class extends S{get widgetType(){return c.FinstrongWidget}},exports.GoalsWidget=class extends S{get widgetType(){return c.GoalsWidget}},exports.HelpWidget=class extends S{get widgetType(){return c.HelpWidget}},exports.MasterWidget=class extends S{get widgetType(){return c.MasterWidget}},exports.MiniBudgetsWidget=class extends S{get widgetType(){return c.MiniBudgetsWidget}},exports.MiniFinstrongWidget=class extends S{get widgetType(){return c.MiniFinstrongWidget}},exports.MiniPulseCarouselWidget=class extends S{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return T}},exports.MiniSpendingWidget=class extends S{get widgetType(){return c.MiniSpendingWidget}},exports.PulseWidget=class extends S{get widgetType(){return c.PulseWidget}get dispatcher(){return T}},exports.SettingsWidget=class extends S{get widgetType(){return c.SettingsWidget}},exports.SpendingWidget=class extends S{get widgetType(){return c.SpendingWidget}},exports.TransactionsWidget=class extends S{get widgetType(){return c.TransactionsWidget}},exports.TrendsWidget=class extends S{get widgetType(){return c.TrendsWidget}},exports.Widget=S;
"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 s={[i.SAND]:i.SAND,[i.QA]:i.QA,[i.INT]:i.INT,[i.PROD]:i.PROD};const r={[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=s[e];if(!t)throw new Error(`Invalid MX environment: ${e}`);return t}(e),n=r[t];if(!n)throw new Error(`Missing host for MX environment: ${e}`);return n}var c;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,widget_type:e.widgetType}}function u(e){return e.widget_url.url}function d(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),s=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,s=btoa(`${i}:${e}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:a(t)});return{method:s,headers:n,body:r,mode:i}}(n);return{url:i,options:s}}function g(e){return e}function m(e){if(!e.ok)throw new n(e.status);return e.json()}function p(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 l 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,l.prototype)}}class _ extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,_.prototype)}}function h(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,_="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!s.optional){if(!o)throw new l(t,n,i,r);if(g&&!c)throw new l(t,n,i,r);if(m&&!a)throw new l(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new l(t,n,i,r);if(_&&!u)throw new l(t,n,i,r);if(C&&!d)throw new l(t,n,i,r);_&&u&&Object.keys(i).forEach((e=>{h(r,t,e,i[e])}))}}var C;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(C||(C={}));const b={[C.Load]:C.Load,[C.Ping]:C.Ping,[C.Navigation]:C.Navigation,[C.FocusTrap]:C.FocusTrap,"mx/focustrap":C.FocusTrap,[C.ClientOAuthComplete]:C.ClientOAuthComplete,"mx/client/oauthcomplete":C.ClientOAuthComplete,[C.ConnectLoaded]:C.ConnectLoaded,[C.ConnectEnterCredentials]:C.ConnectEnterCredentials,"mx/connect/entercredentials":C.ConnectEnterCredentials,[C.ConnectInstitutionSearch]:C.ConnectInstitutionSearch,"mx/connect/institutionsearch":C.ConnectInstitutionSearch,[C.ConnectSelectedInstitution]:C.ConnectSelectedInstitution,"mx/connect/selectedinstitution":C.ConnectSelectedInstitution,[C.ConnectMemberConnected]:C.ConnectMemberConnected,"mx/connect/memberconnected":C.ConnectMemberConnected,[C.ConnectConnectedPrimaryAction]:C.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":C.ConnectConnectedPrimaryAction,[C.ConnectMemberDeleted]:C.ConnectMemberDeleted,"mx/connect/memberdeleted":C.ConnectMemberDeleted,[C.ConnectCreateMemberError]:C.ConnectCreateMemberError,"mx/connect/createmembererror":C.ConnectCreateMemberError,[C.ConnectMemberStatusUpdate]:C.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":C.ConnectMemberStatusUpdate,[C.ConnectOAuthError]:C.ConnectOAuthError,"mx/connect/oautherror":C.ConnectOAuthError,[C.ConnectOAuthRequested]:C.ConnectOAuthRequested,"mx/connect/oauthrequested":C.ConnectOAuthRequested,[C.ConnectStepChange]:C.ConnectStepChange,"mx/connect/stepchange":C.ConnectStepChange,[C.ConnectSubmitMFA]:C.ConnectSubmitMFA,"mx/connect/submitmfa":C.ConnectSubmitMFA,[C.ConnectUpdateCredentials]:C.ConnectUpdateCredentials,"mx/connect/updatecredentials":C.ConnectUpdateCredentials,[C.ConnectBackToSearch]:C.ConnectBackToSearch,"mx/connect/backtosearch":C.ConnectBackToSearch,[C.PulseOverdraftWarningCtaTransferFunds]:C.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":C.PulseOverdraftWarningCtaTransferFunds,[C.AccountCreated]:C.AccountCreated};function x(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new _(t);n=b[t];const i=function(e,t){switch(e){case C.Load:return{type:e};case C.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 C.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 C.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 C.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case C.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","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.ConnectBackToSearch:return h(t,"mx/connect/backToSearch","user_guid","string"),h(t,"mx/connect/backToSearch","session_guid","string"),h(t,"mx/connect/backToSearch","context","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case C.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 C.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new _(e)}}(n,e.metadata||{});return i}function f(e,t,n){if(t instanceof l)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof _))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){let n;try{y(e,t),n=x(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){f(e,n,t)}return n}function M(e,t){let n;try{y(e,t),n=x(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.ConnectLoaded:t.onLoaded?.(e);break;case C.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case C.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case C.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case C.ConnectMemberConnected:t.onMemberConnected?.(e);break;case C.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case C.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case C.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case C.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case C.ConnectOAuthError:t.onOAuthError?.(e);break;case C.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case C.ConnectStepChange:t.onStepChange?.(e);break;case C.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case C.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case C.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){f(e,n,t)}return n}function T(e,t){let n;try{y(e,t),n=x(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){f(e,n,t)}return n}class S{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:C.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===C.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===C.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.12"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||d,n=e.ssoRequestPreprocess||g,i=e.ssoRequestPostprocess||u,s=e.onSsoUrlLoadError||p,r=n(t(e));return fetch(r.url,r.options).then(m).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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 S{get widgetType(){return c.AccountsWidget}},exports.BudgetsWidget=class extends S{get widgetType(){return c.BudgetsWidget}},exports.ConnectWidget=class extends S{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}},exports.ConnectionsWidget=class extends S{get widgetType(){return c.ConnectionsWidget}},exports.DebtsWidget=class extends S{get widgetType(){return c.DebtsWidget}},exports.FinstrongWidget=class extends S{get widgetType(){return c.FinstrongWidget}},exports.GoalsWidget=class extends S{get widgetType(){return c.GoalsWidget}},exports.HelpWidget=class extends S{get widgetType(){return c.HelpWidget}},exports.MasterWidget=class extends S{get widgetType(){return c.MasterWidget}},exports.MiniBudgetsWidget=class extends S{get widgetType(){return c.MiniBudgetsWidget}},exports.MiniFinstrongWidget=class extends S{get widgetType(){return c.MiniFinstrongWidget}},exports.MiniPulseCarouselWidget=class extends S{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return T}},exports.MiniSpendingWidget=class extends S{get widgetType(){return c.MiniSpendingWidget}},exports.PulseWidget=class extends S{get widgetType(){return c.PulseWidget}get dispatcher(){return T}},exports.SettingsWidget=class extends S{get widgetType(){return c.SettingsWidget}},exports.SpendingWidget=class extends S{get widgetType(){return c.SpendingWidget}},exports.TransactionsWidget=class extends S{get widgetType(){return c.TransactionsWidget}},exports.TrendsWidget=class extends S{get widgetType(){return c.TrendsWidget}},exports.Widget=S;

@@ -196,3 +196,3 @@ function isSsoUrlMethodUrl(props) {

const sdkVersion = "0.0.11";
const sdkVersion = "0.0.12";

@@ -547,3 +547,5 @@ // This is an internal error. Thrown when we are decoding a post message's

assertMessageProp(metadata, "mx/connect/backToSearch", "session_guid", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string", {
optional: true,
});
return {

@@ -550,0 +552,0 @@ type,

@@ -1,1 +0,1 @@

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}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;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,widget_type:e.widgetType}}function u(e){return e.widget_url.url}function d(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 g(e){return e}function m(e){if(!e.ok)throw new n(e.status);return e.json()}function p(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 l 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,l.prototype)}}class _ extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,_.prototype)}}function h(e,t,n,i,r={}){const s=e[n],o=void 0!==s,c="string"==typeof s,a="number"==typeof s,u="object"==typeof s&&!Array.isArray(s),d="boolean"==typeof s,g="string"===i,m="number"===i,p=i instanceof Array,_="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!r.optional){if(!o)throw new l(t,n,i,s);if(g&&!c)throw new l(t,n,i,s);if(m&&!a)throw new l(t,n,i,s);if(!(!p||c&&i.includes(s)))throw new l(t,n,i,s);if(_&&!u)throw new l(t,n,i,s);if(C&&!d)throw new l(t,n,i,s);_&&u&&Object.keys(i).forEach((e=>{h(s,t,e,i[e])}))}}var C;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(C||(C={}));const b={[C.Load]:C.Load,[C.Ping]:C.Ping,[C.Navigation]:C.Navigation,[C.FocusTrap]:C.FocusTrap,"mx/focustrap":C.FocusTrap,[C.ClientOAuthComplete]:C.ClientOAuthComplete,"mx/client/oauthcomplete":C.ClientOAuthComplete,[C.ConnectLoaded]:C.ConnectLoaded,[C.ConnectEnterCredentials]:C.ConnectEnterCredentials,"mx/connect/entercredentials":C.ConnectEnterCredentials,[C.ConnectInstitutionSearch]:C.ConnectInstitutionSearch,"mx/connect/institutionsearch":C.ConnectInstitutionSearch,[C.ConnectSelectedInstitution]:C.ConnectSelectedInstitution,"mx/connect/selectedinstitution":C.ConnectSelectedInstitution,[C.ConnectMemberConnected]:C.ConnectMemberConnected,"mx/connect/memberconnected":C.ConnectMemberConnected,[C.ConnectConnectedPrimaryAction]:C.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":C.ConnectConnectedPrimaryAction,[C.ConnectMemberDeleted]:C.ConnectMemberDeleted,"mx/connect/memberdeleted":C.ConnectMemberDeleted,[C.ConnectCreateMemberError]:C.ConnectCreateMemberError,"mx/connect/createmembererror":C.ConnectCreateMemberError,[C.ConnectMemberStatusUpdate]:C.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":C.ConnectMemberStatusUpdate,[C.ConnectOAuthError]:C.ConnectOAuthError,"mx/connect/oautherror":C.ConnectOAuthError,[C.ConnectOAuthRequested]:C.ConnectOAuthRequested,"mx/connect/oauthrequested":C.ConnectOAuthRequested,[C.ConnectStepChange]:C.ConnectStepChange,"mx/connect/stepchange":C.ConnectStepChange,[C.ConnectSubmitMFA]:C.ConnectSubmitMFA,"mx/connect/submitmfa":C.ConnectSubmitMFA,[C.ConnectUpdateCredentials]:C.ConnectUpdateCredentials,"mx/connect/updatecredentials":C.ConnectUpdateCredentials,[C.ConnectBackToSearch]:C.ConnectBackToSearch,"mx/connect/backtosearch":C.ConnectBackToSearch,[C.PulseOverdraftWarningCtaTransferFunds]:C.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":C.PulseOverdraftWarningCtaTransferFunds,[C.AccountCreated]:C.AccountCreated};function f(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new _(t);n=b[t];const i=function(e,t){switch(e){case C.Load:return{type:e};case C.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 C.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 C.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 C.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case C.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","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.ConnectBackToSearch:return h(t,"mx/connect/backToSearch","user_guid","string"),h(t,"mx/connect/backToSearch","session_guid","string"),h(t,"mx/connect/backToSearch","context","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case C.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 C.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new _(e)}}(n,e.metadata||{});return i}function x(e,t,n){if(t instanceof l)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof _))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){let n;try{y(e,t),n=f(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){x(e,n,t)}return n}function M(e,t){let n;try{y(e,t),n=f(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.ConnectLoaded:t.onLoaded?.(e);break;case C.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case C.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case C.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case C.ConnectMemberConnected:t.onMemberConnected?.(e);break;case C.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case C.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case C.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case C.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case C.ConnectOAuthError:t.onOAuthError?.(e);break;case C.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case C.ConnectStepChange:t.onStepChange?.(e);break;case C.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case C.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case C.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){x(e,n,t)}return n}function T(e,t){let n;try{y(e,t),n=f(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){x(e,n,t)}return n}class S{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:C.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===C.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===C.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.11"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||d,n=e.ssoRequestPreprocess||g,i=e.ssoRequestPostprocess||u,r=e.onSsoUrlLoadError||p,s=n(t(e));return fetch(s.url,s.options).then(m).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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)}}class A extends S{get widgetType(){return c.AccountsWidget}}class v extends S{get widgetType(){return c.BudgetsWidget}}class k extends S{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}}class W extends S{get widgetType(){return c.ConnectionsWidget}}class E extends S{get widgetType(){return c.DebtsWidget}}class O extends S{get widgetType(){return c.FinstrongWidget}}class P extends S{get widgetType(){return c.GoalsWidget}}class I extends S{get widgetType(){return c.HelpWidget}}class F extends S{get widgetType(){return c.MasterWidget}}class U extends S{get widgetType(){return c.MiniBudgetsWidget}}class L extends S{get widgetType(){return c.MiniFinstrongWidget}}class q extends S{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return T}}class D extends S{get widgetType(){return c.MiniSpendingWidget}}class N extends S{get widgetType(){return c.PulseWidget}get dispatcher(){return T}}class R extends S{get widgetType(){return c.SettingsWidget}}class B extends S{get widgetType(){return c.SpendingWidget}}class j extends S{get widgetType(){return c.TransactionsWidget}}class $ extends S{get widgetType(){return c.TrendsWidget}}export{A as AccountsWidget,v as BudgetsWidget,k as ConnectWidget,W as ConnectionsWidget,E as DebtsWidget,O as FinstrongWidget,P as GoalsWidget,I as HelpWidget,F as MasterWidget,U as MiniBudgetsWidget,L as MiniFinstrongWidget,q as MiniPulseCarouselWidget,D as MiniSpendingWidget,N as PulseWidget,R as SettingsWidget,B as SpendingWidget,j as TransactionsWidget,$ as TrendsWidget,S as Widget};
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}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;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,widget_type:e.widgetType}}function u(e){return e.widget_url.url}function d(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 g(e){return e}function m(e){if(!e.ok)throw new n(e.status);return e.json()}function p(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 l 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,l.prototype)}}class _ extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,_.prototype)}}function h(e,t,n,i,r={}){const s=e[n],o=void 0!==s,c="string"==typeof s,a="number"==typeof s,u="object"==typeof s&&!Array.isArray(s),d="boolean"==typeof s,g="string"===i,m="number"===i,p=i instanceof Array,_="object"==typeof i&&!Array.isArray(i),C="boolean"===i;if(o||!r.optional){if(!o)throw new l(t,n,i,s);if(g&&!c)throw new l(t,n,i,s);if(m&&!a)throw new l(t,n,i,s);if(!(!p||c&&i.includes(s)))throw new l(t,n,i,s);if(_&&!u)throw new l(t,n,i,s);if(C&&!d)throw new l(t,n,i,s);_&&u&&Object.keys(i).forEach((e=>{h(s,t,e,i[e])}))}}var C;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(C||(C={}));const b={[C.Load]:C.Load,[C.Ping]:C.Ping,[C.Navigation]:C.Navigation,[C.FocusTrap]:C.FocusTrap,"mx/focustrap":C.FocusTrap,[C.ClientOAuthComplete]:C.ClientOAuthComplete,"mx/client/oauthcomplete":C.ClientOAuthComplete,[C.ConnectLoaded]:C.ConnectLoaded,[C.ConnectEnterCredentials]:C.ConnectEnterCredentials,"mx/connect/entercredentials":C.ConnectEnterCredentials,[C.ConnectInstitutionSearch]:C.ConnectInstitutionSearch,"mx/connect/institutionsearch":C.ConnectInstitutionSearch,[C.ConnectSelectedInstitution]:C.ConnectSelectedInstitution,"mx/connect/selectedinstitution":C.ConnectSelectedInstitution,[C.ConnectMemberConnected]:C.ConnectMemberConnected,"mx/connect/memberconnected":C.ConnectMemberConnected,[C.ConnectConnectedPrimaryAction]:C.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":C.ConnectConnectedPrimaryAction,[C.ConnectMemberDeleted]:C.ConnectMemberDeleted,"mx/connect/memberdeleted":C.ConnectMemberDeleted,[C.ConnectCreateMemberError]:C.ConnectCreateMemberError,"mx/connect/createmembererror":C.ConnectCreateMemberError,[C.ConnectMemberStatusUpdate]:C.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":C.ConnectMemberStatusUpdate,[C.ConnectOAuthError]:C.ConnectOAuthError,"mx/connect/oautherror":C.ConnectOAuthError,[C.ConnectOAuthRequested]:C.ConnectOAuthRequested,"mx/connect/oauthrequested":C.ConnectOAuthRequested,[C.ConnectStepChange]:C.ConnectStepChange,"mx/connect/stepchange":C.ConnectStepChange,[C.ConnectSubmitMFA]:C.ConnectSubmitMFA,"mx/connect/submitmfa":C.ConnectSubmitMFA,[C.ConnectUpdateCredentials]:C.ConnectUpdateCredentials,"mx/connect/updatecredentials":C.ConnectUpdateCredentials,[C.ConnectBackToSearch]:C.ConnectBackToSearch,"mx/connect/backtosearch":C.ConnectBackToSearch,[C.PulseOverdraftWarningCtaTransferFunds]:C.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":C.PulseOverdraftWarningCtaTransferFunds,[C.AccountCreated]:C.AccountCreated};function f(e){const t=e.type||"type not provided";let n;if(!t||!(t in b))throw new _(t);n=b[t];const i=function(e,t){switch(e){case C.Load:return{type:e};case C.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 C.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 C.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 C.ClientOAuthComplete:return h(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case C.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","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.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 C.ConnectBackToSearch:return h(t,"mx/connect/backToSearch","user_guid","string"),h(t,"mx/connect/backToSearch","session_guid","string"),h(t,"mx/connect/backToSearch","context","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case C.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 C.AccountCreated:return h(t,"mx/account/created","guid","string"),{type:e,guid:t.guid};default:throw new _(e)}}(n,e.metadata||{});return i}function x(e,t,n){if(t instanceof l)n.onInvalidMessageError?.(e,t);else{if(!(t instanceof _))throw t;n.onInvalidMessageError?.(e,t)}}function y(e,t){t.onMessage?.(e)}function w(e,t){let n;try{y(e,t),n=f(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){x(e,n,t)}return n}function M(e,t){let n;try{y(e,t),n=f(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.ConnectLoaded:t.onLoaded?.(e);break;case C.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case C.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case C.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case C.ConnectMemberConnected:t.onMemberConnected?.(e);break;case C.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case C.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case C.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case C.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case C.ConnectOAuthError:t.onOAuthError?.(e);break;case C.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case C.ConnectStepChange:t.onStepChange?.(e);break;case C.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case C.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case C.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){x(e,n,t)}return n}function T(e,t){let n;try{y(e,t),n=f(e.data),function(e,t){switch(e.type){case C.Load:t.onLoad?.(e);break;case C.Ping:t.onPing?.(e);break;case C.Navigation:t.onNavigation?.(e);break;case C.FocusTrap:t.onFocusTrap?.(e);break;case C.AccountCreated:t.onAccountCreated?.(e);break;case C.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new _(e.type)}}(n,t)}catch(n){x(e,n,t)}return n}class S{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:C.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===C.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===C.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.12"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}setupIframe(){(function(e){if(function(e){return"url"in e&&"string"==typeof e.url}(e))return Promise.resolve(e.url);const t=e.ssoRequestBuilder||d,n=e.ssoRequestPreprocess||g,i=e.ssoRequestPostprocess||u,r=e.onSsoUrlLoadError||p,s=n(t(e));return fetch(s.url,s.options).then(m).then(i).catch(r)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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)}}class A extends S{get widgetType(){return c.AccountsWidget}}class v extends S{get widgetType(){return c.BudgetsWidget}}class k extends S{get widgetType(){return c.ConnectWidget}get dispatcher(){return M}}class W extends S{get widgetType(){return c.ConnectionsWidget}}class E extends S{get widgetType(){return c.DebtsWidget}}class O extends S{get widgetType(){return c.FinstrongWidget}}class P extends S{get widgetType(){return c.GoalsWidget}}class I extends S{get widgetType(){return c.HelpWidget}}class F extends S{get widgetType(){return c.MasterWidget}}class U extends S{get widgetType(){return c.MiniBudgetsWidget}}class L extends S{get widgetType(){return c.MiniFinstrongWidget}}class q extends S{get widgetType(){return c.MiniPulseCarouselWidget}get dispatcher(){return T}}class D extends S{get widgetType(){return c.MiniSpendingWidget}}class N extends S{get widgetType(){return c.PulseWidget}get dispatcher(){return T}}class R extends S{get widgetType(){return c.SettingsWidget}}class B extends S{get widgetType(){return c.SpendingWidget}}class j extends S{get widgetType(){return c.TransactionsWidget}}class $ extends S{get widgetType(){return c.TrendsWidget}}export{A as AccountsWidget,v as BudgetsWidget,k as ConnectWidget,W as ConnectionsWidget,E as DebtsWidget,O as FinstrongWidget,P as GoalsWidget,I as HelpWidget,F as MasterWidget,U as MiniBudgetsWidget,L as MiniFinstrongWidget,q as MiniPulseCarouselWidget,D as MiniSpendingWidget,N as PulseWidget,R as SettingsWidget,B as SpendingWidget,j as TransactionsWidget,$ as TrendsWidget,S as Widget};

@@ -1,1 +0,1 @@

export declare const sdkVersion = "0.0.11";
export declare const sdkVersion = "0.0.12";

@@ -202,3 +202,3 @@ (function (global, factory) {

const sdkVersion = "0.0.11";
const sdkVersion = "0.0.12";

@@ -553,3 +553,5 @@ // This is an internal error. Thrown when we are decoding a post message's

assertMessageProp(metadata, "mx/connect/backToSearch", "session_guid", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string");
assertMessageProp(metadata, "mx/connect/backToSearch", "context", "string", {
optional: true,
});
return {

@@ -556,0 +558,0 @@ type,

@@ -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 s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[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 a;function u(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,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(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),s=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,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:u(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function m(e){return e}function p(e){if(!e.ok)throw new i(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"}(a||(a={}));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 h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function C(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),h="boolean"===i;if(o||!s.optional){if(!o)throw new _(t,n,i,r);if(g&&!c)throw new _(t,n,i,r);if(m&&!a)throw new _(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new _(t,n,i,r);if(l&&!u)throw new _(t,n,i,r);if(h&&!d)throw new _(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{C(r,t,e,i[e])}))}}var b;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(b||(b={}));const f={[b.Load]:b.Load,[b.Ping]:b.Ping,[b.Navigation]:b.Navigation,[b.FocusTrap]:b.FocusTrap,"mx/focustrap":b.FocusTrap,[b.ClientOAuthComplete]:b.ClientOAuthComplete,"mx/client/oauthcomplete":b.ClientOAuthComplete,[b.ConnectLoaded]:b.ConnectLoaded,[b.ConnectEnterCredentials]:b.ConnectEnterCredentials,"mx/connect/entercredentials":b.ConnectEnterCredentials,[b.ConnectInstitutionSearch]:b.ConnectInstitutionSearch,"mx/connect/institutionsearch":b.ConnectInstitutionSearch,[b.ConnectSelectedInstitution]:b.ConnectSelectedInstitution,"mx/connect/selectedinstitution":b.ConnectSelectedInstitution,[b.ConnectMemberConnected]:b.ConnectMemberConnected,"mx/connect/memberconnected":b.ConnectMemberConnected,[b.ConnectConnectedPrimaryAction]:b.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":b.ConnectConnectedPrimaryAction,[b.ConnectMemberDeleted]:b.ConnectMemberDeleted,"mx/connect/memberdeleted":b.ConnectMemberDeleted,[b.ConnectCreateMemberError]:b.ConnectCreateMemberError,"mx/connect/createmembererror":b.ConnectCreateMemberError,[b.ConnectMemberStatusUpdate]:b.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":b.ConnectMemberStatusUpdate,[b.ConnectOAuthError]:b.ConnectOAuthError,"mx/connect/oautherror":b.ConnectOAuthError,[b.ConnectOAuthRequested]:b.ConnectOAuthRequested,"mx/connect/oauthrequested":b.ConnectOAuthRequested,[b.ConnectStepChange]:b.ConnectStepChange,"mx/connect/stepchange":b.ConnectStepChange,[b.ConnectSubmitMFA]:b.ConnectSubmitMFA,"mx/connect/submitmfa":b.ConnectSubmitMFA,[b.ConnectUpdateCredentials]:b.ConnectUpdateCredentials,"mx/connect/updatecredentials":b.ConnectUpdateCredentials,[b.ConnectBackToSearch]:b.ConnectBackToSearch,"mx/connect/backtosearch":b.ConnectBackToSearch,[b.PulseOverdraftWarningCtaTransferFunds]:b.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":b.PulseOverdraftWarningCtaTransferFunds,[b.AccountCreated]:b.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 b.Load:return{type:e};case b.Ping:return C(t,"mx/ping","user_guid","string"),C(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.Navigation:return C(t,"mx/navigation","user_guid","string"),C(t,"mx/navigation","session_guid","string"),C(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 b.FocusTrap:return C(t,"mx/focusTrap","user_guid","string"),C(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ClientOAuthComplete:return C(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case b.ConnectLoaded:return C(t,"mx/connect/loaded","user_guid","string"),C(t,"mx/connect/loaded","session_guid","string"),C(t,"mx/connect/loaded","initial_step","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case b.ConnectEnterCredentials:return C(t,"mx/connect/enterCredentials","user_guid","string"),C(t,"mx/connect/enterCredentials","session_guid","string"),C(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 b.ConnectInstitutionSearch:return C(t,"mx/connect/institutionSearch","user_guid","string"),C(t,"mx/connect/institutionSearch","session_guid","string"),C(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case b.ConnectSelectedInstitution:return C(t,"mx/connect/selectedInstitution","user_guid","string"),C(t,"mx/connect/selectedInstitution","session_guid","string"),C(t,"mx/connect/selectedInstitution","code","string"),C(t,"mx/connect/selectedInstitution","guid","string"),C(t,"mx/connect/selectedInstitution","name","string"),C(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 b.ConnectMemberConnected:return C(t,"mx/connect/memberConnected","user_guid","string"),C(t,"mx/connect/memberConnected","session_guid","string"),C(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 b.ConnectConnectedPrimaryAction:return C(t,"mx/connect/connected/primaryAction","user_guid","string"),C(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ConnectMemberDeleted:return C(t,"mx/connect/memberDeleted","user_guid","string"),C(t,"mx/connect/memberDeleted","session_guid","string"),C(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 b.ConnectCreateMemberError:return C(t,"mx/connect/createMemberError","user_guid","string"),C(t,"mx/connect/createMemberError","session_guid","string"),C(t,"mx/connect/createMemberError","institution_guid","string"),C(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 b.ConnectMemberStatusUpdate:return C(t,"mx/connect/memberStatusUpdate","user_guid","string"),C(t,"mx/connect/memberStatusUpdate","session_guid","string"),C(t,"mx/connect/memberStatusUpdate","member_guid","string"),C(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 b.ConnectOAuthError:return C(t,"mx/connect/oauthError","user_guid","string"),C(t,"mx/connect/oauthError","session_guid","string"),C(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 b.ConnectOAuthRequested:return C(t,"mx/connect/oauthRequested","user_guid","string"),C(t,"mx/connect/oauthRequested","session_guid","string"),C(t,"mx/connect/oauthRequested","url","string"),C(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 b.ConnectStepChange:return C(t,"mx/connect/stepChange","user_guid","string"),C(t,"mx/connect/stepChange","session_guid","string"),C(t,"mx/connect/stepChange","previous","string"),C(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 b.ConnectSubmitMFA:return C(t,"mx/connect/submitMFA","user_guid","string"),C(t,"mx/connect/submitMFA","session_guid","string"),C(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 b.ConnectUpdateCredentials:return C(t,"mx/connect/updateCredentials","user_guid","string"),C(t,"mx/connect/updateCredentials","session_guid","string"),C(t,"mx/connect/updateCredentials","member_guid","string"),C(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 b.ConnectBackToSearch:return C(t,"mx/connect/backToSearch","user_guid","string"),C(t,"mx/connect/backToSearch","session_guid","string"),C(t,"mx/connect/backToSearch","context","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case b.PulseOverdraftWarningCtaTransferFunds:return C(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),C(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case b.AccountCreated:return C(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 _)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){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function T(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.ConnectLoaded:t.onLoaded?.(e);break;case b.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case b.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case b.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case b.ConnectMemberConnected:t.onMemberConnected?.(e);break;case b.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case b.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case b.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case b.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case b.ConnectOAuthError:t.onOAuthError?.(e);break;case b.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case b.ConnectStepChange:t.onStepChange?.(e);break;case b.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case b.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case b.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function S(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:b.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===b.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===b.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.11"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}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,s=e.onSsoUrlLoadError||l,r=n(t(e));return fetch(r.url,r.options).then(p).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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 a.AccountsWidget}},e.BudgetsWidget=class extends W{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends W{get widgetType(){return a.ConnectWidget}get dispatcher(){return T}},e.ConnectionsWidget=class extends W{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends W{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends W{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends W{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends W{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends W{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends W{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends W{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends W{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return S}},e.MiniSpendingWidget=class extends W{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends W{get widgetType(){return a.PulseWidget}get dispatcher(){return S}},e.SettingsWidget=class extends W{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends W{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends W{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends W{get widgetType(){return a.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 s;!function(e){e.SAND="sand",e.QA="qa",e.INT="integration",e.PROD="production"}(s||(s={}));const r={[s.SAND]:s.SAND,[s.QA]:s.QA,[s.INT]:s.INT,[s.PROD]:s.PROD};const o={[s.SAND]:"https://api.sand.internal.mx",[s.QA]:"https://api.qa.internal.mx",[s.INT]:"https://int-api.mx.com",[s.PROD]:"https://api.mx.com"};function c(e){const t=function(e){const t=r[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 a;function u(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,widget_type:e.widgetType}}function d(e){return e.widget_url.url}function g(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),s=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,s=btoa(`${i}:${t}`);n.Authorization=`Basic ${s}`}const i="cors",s="POST",r=JSON.stringify({widget_url:u(e)});return{method:s,headers:n,body:r,mode:i}}(e);return{url:i,options:s}}function m(e){return e}function p(e){if(!e.ok)throw new i(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"}(a||(a={}));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 h extends Error{postMessageType;constructor(e){super(`Unknown post message: ${e}`),this.postMessageType=e,Object.setPrototypeOf(this,h.prototype)}}function C(e,t,n,i,s={}){const r=e[n],o=void 0!==r,c="string"==typeof r,a="number"==typeof r,u="object"==typeof r&&!Array.isArray(r),d="boolean"==typeof r,g="string"===i,m="number"===i,p=i instanceof Array,l="object"==typeof i&&!Array.isArray(i),h="boolean"===i;if(o||!s.optional){if(!o)throw new _(t,n,i,r);if(g&&!c)throw new _(t,n,i,r);if(m&&!a)throw new _(t,n,i,r);if(!(!p||c&&i.includes(r)))throw new _(t,n,i,r);if(l&&!u)throw new _(t,n,i,r);if(h&&!d)throw new _(t,n,i,r);l&&u&&Object.keys(i).forEach((e=>{C(r,t,e,i[e])}))}}var b;!function(e){e.Load="mx/load",e.Ping="mx/ping",e.Navigation="mx/navigation",e.FocusTrap="mx/focusTrap",e.ClientOAuthComplete="mx/client/oauthComplete",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.ConnectBackToSearch="mx/connect/backToSearch",e.PulseOverdraftWarningCtaTransferFunds="mx/pulse/overdraftWarning/cta/transferFunds",e.AccountCreated="mx/account/created"}(b||(b={}));const f={[b.Load]:b.Load,[b.Ping]:b.Ping,[b.Navigation]:b.Navigation,[b.FocusTrap]:b.FocusTrap,"mx/focustrap":b.FocusTrap,[b.ClientOAuthComplete]:b.ClientOAuthComplete,"mx/client/oauthcomplete":b.ClientOAuthComplete,[b.ConnectLoaded]:b.ConnectLoaded,[b.ConnectEnterCredentials]:b.ConnectEnterCredentials,"mx/connect/entercredentials":b.ConnectEnterCredentials,[b.ConnectInstitutionSearch]:b.ConnectInstitutionSearch,"mx/connect/institutionsearch":b.ConnectInstitutionSearch,[b.ConnectSelectedInstitution]:b.ConnectSelectedInstitution,"mx/connect/selectedinstitution":b.ConnectSelectedInstitution,[b.ConnectMemberConnected]:b.ConnectMemberConnected,"mx/connect/memberconnected":b.ConnectMemberConnected,[b.ConnectConnectedPrimaryAction]:b.ConnectConnectedPrimaryAction,"mx/connect/connected/primaryaction":b.ConnectConnectedPrimaryAction,[b.ConnectMemberDeleted]:b.ConnectMemberDeleted,"mx/connect/memberdeleted":b.ConnectMemberDeleted,[b.ConnectCreateMemberError]:b.ConnectCreateMemberError,"mx/connect/createmembererror":b.ConnectCreateMemberError,[b.ConnectMemberStatusUpdate]:b.ConnectMemberStatusUpdate,"mx/connect/memberstatusupdate":b.ConnectMemberStatusUpdate,[b.ConnectOAuthError]:b.ConnectOAuthError,"mx/connect/oautherror":b.ConnectOAuthError,[b.ConnectOAuthRequested]:b.ConnectOAuthRequested,"mx/connect/oauthrequested":b.ConnectOAuthRequested,[b.ConnectStepChange]:b.ConnectStepChange,"mx/connect/stepchange":b.ConnectStepChange,[b.ConnectSubmitMFA]:b.ConnectSubmitMFA,"mx/connect/submitmfa":b.ConnectSubmitMFA,[b.ConnectUpdateCredentials]:b.ConnectUpdateCredentials,"mx/connect/updatecredentials":b.ConnectUpdateCredentials,[b.ConnectBackToSearch]:b.ConnectBackToSearch,"mx/connect/backtosearch":b.ConnectBackToSearch,[b.PulseOverdraftWarningCtaTransferFunds]:b.PulseOverdraftWarningCtaTransferFunds,"mx/pulse/overdraftwarning/cta/transferfunds":b.PulseOverdraftWarningCtaTransferFunds,[b.AccountCreated]:b.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 b.Load:return{type:e};case b.Ping:return C(t,"mx/ping","user_guid","string"),C(t,"mx/ping","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.Navigation:return C(t,"mx/navigation","user_guid","string"),C(t,"mx/navigation","session_guid","string"),C(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 b.FocusTrap:return C(t,"mx/focusTrap","user_guid","string"),C(t,"mx/focusTrap","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ClientOAuthComplete:return C(t,"mx/client/oauthComplete","url","string"),{type:e,url:t.url};case b.ConnectLoaded:return C(t,"mx/connect/loaded","user_guid","string"),C(t,"mx/connect/loaded","session_guid","string"),C(t,"mx/connect/loaded","initial_step","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,initial_step:t.initial_step};case b.ConnectEnterCredentials:return C(t,"mx/connect/enterCredentials","user_guid","string"),C(t,"mx/connect/enterCredentials","session_guid","string"),C(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 b.ConnectInstitutionSearch:return C(t,"mx/connect/institutionSearch","user_guid","string"),C(t,"mx/connect/institutionSearch","session_guid","string"),C(t,"mx/connect/institutionSearch","query","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,query:t.query};case b.ConnectSelectedInstitution:return C(t,"mx/connect/selectedInstitution","user_guid","string"),C(t,"mx/connect/selectedInstitution","session_guid","string"),C(t,"mx/connect/selectedInstitution","code","string"),C(t,"mx/connect/selectedInstitution","guid","string"),C(t,"mx/connect/selectedInstitution","name","string"),C(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 b.ConnectMemberConnected:return C(t,"mx/connect/memberConnected","user_guid","string"),C(t,"mx/connect/memberConnected","session_guid","string"),C(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 b.ConnectConnectedPrimaryAction:return C(t,"mx/connect/connected/primaryAction","user_guid","string"),C(t,"mx/connect/connected/primaryAction","session_guid","string"),{type:e,user_guid:t.user_guid,session_guid:t.session_guid};case b.ConnectMemberDeleted:return C(t,"mx/connect/memberDeleted","user_guid","string"),C(t,"mx/connect/memberDeleted","session_guid","string"),C(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 b.ConnectCreateMemberError:return C(t,"mx/connect/createMemberError","user_guid","string"),C(t,"mx/connect/createMemberError","session_guid","string"),C(t,"mx/connect/createMemberError","institution_guid","string"),C(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 b.ConnectMemberStatusUpdate:return C(t,"mx/connect/memberStatusUpdate","user_guid","string"),C(t,"mx/connect/memberStatusUpdate","session_guid","string"),C(t,"mx/connect/memberStatusUpdate","member_guid","string"),C(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 b.ConnectOAuthError:return C(t,"mx/connect/oauthError","user_guid","string"),C(t,"mx/connect/oauthError","session_guid","string"),C(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 b.ConnectOAuthRequested:return C(t,"mx/connect/oauthRequested","user_guid","string"),C(t,"mx/connect/oauthRequested","session_guid","string"),C(t,"mx/connect/oauthRequested","url","string"),C(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 b.ConnectStepChange:return C(t,"mx/connect/stepChange","user_guid","string"),C(t,"mx/connect/stepChange","session_guid","string"),C(t,"mx/connect/stepChange","previous","string"),C(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 b.ConnectSubmitMFA:return C(t,"mx/connect/submitMFA","user_guid","string"),C(t,"mx/connect/submitMFA","session_guid","string"),C(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 b.ConnectUpdateCredentials:return C(t,"mx/connect/updateCredentials","user_guid","string"),C(t,"mx/connect/updateCredentials","session_guid","string"),C(t,"mx/connect/updateCredentials","member_guid","string"),C(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 b.ConnectBackToSearch:return C(t,"mx/connect/backToSearch","user_guid","string"),C(t,"mx/connect/backToSearch","session_guid","string"),C(t,"mx/connect/backToSearch","context","string",{optional:!0}),{type:e,user_guid:t.user_guid,session_guid:t.session_guid,context:t.context};case b.PulseOverdraftWarningCtaTransferFunds:return C(t,"mx/pulse/overdraftWarning/cta/transferFunds","account_guid","string"),C(t,"mx/pulse/overdraftWarning/cta/transferFunds","amount","number"),{type:e,account_guid:t.account_guid,amount:t.amount};case b.AccountCreated:return C(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 _)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){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function T(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.ConnectLoaded:t.onLoaded?.(e);break;case b.ConnectEnterCredentials:t.onEnterCredentials?.(e);break;case b.ConnectInstitutionSearch:t.onInstitutionSearch?.(e);break;case b.ConnectSelectedInstitution:t.onSelectedInstitution?.(e);break;case b.ConnectMemberConnected:t.onMemberConnected?.(e);break;case b.ConnectConnectedPrimaryAction:t.onConnectedPrimaryAction?.(e);break;case b.ConnectMemberDeleted:t.onMemberDeleted?.(e);break;case b.ConnectCreateMemberError:t.onCreateMemberError?.(e);break;case b.ConnectMemberStatusUpdate:t.onMemberStatusUpdate?.(e);break;case b.ConnectOAuthError:t.onOAuthError?.(e);break;case b.ConnectOAuthRequested:t.onOAuthRequested?.(e);break;case b.ConnectStepChange:t.onStepChange?.(e);break;case b.ConnectSubmitMFA:t.onSubmitMFA?.(e);break;case b.ConnectUpdateCredentials:t.onUpdateCredentials?.(e);break;case b.ConnectBackToSearch:t.onBackToSearch?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}function S(e,t){let n;try{w(e,t),n=x(e.data),function(e,t){switch(e.type){case b.Load:t.onLoad?.(e);break;case b.Ping:t.onPing?.(e);break;case b.Navigation:t.onNavigation?.(e);break;case b.FocusTrap:t.onFocusTrap?.(e);break;case b.AccountCreated:t.onAccountCreated?.(e);break;case b.PulseOverdraftWarningCtaTransferFunds:t.onOverdraftWarningCtaTransferFunds?.(e);break;default:throw new h(e.type)}}(n,t)}catch(n){y(e,n,t)}return n}class W{constructor(e){if(this.isUnmounting=!1,this.options=e,this.iframe=document.createElement("iframe"),this.style=e.style||{border:"none",height:"550px",width:"320px"},this.messageCallback=e=>{this.handleMXPostMessage(e)},"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}navigateBack(){return new Promise((e=>{const t=this.iframe.contentWindow,n={mx:!0,type:b.Navigation,payload:{action:"back"}};if(!t)throw new Error("Unable to navigate back, iframe element is not available.");const i=t=>{t.data.type===b.Navigation&&(window.removeEventListener("message",i),e(t.data.metadata.did_go_back))};window.addEventListener("message",i,!1),t.postMessage(JSON.stringify(n),this.targetOrigin)}))}ping(){this.postMessageToWidget({type:"ping"})}unmount(){this.isUnmounting=!0,this.teardownListener(),this.teardownIframe()}get targetOrigin(){var e;const t=/^https?:\/\/[^/]+/i;let n;return this.ssoUrl&&this.ssoUrl.match(t)&&(n=null===(e=this.ssoUrl.match(t))||void 0===e?void 0:e[0]),n||"https://widgets.moneydesktop.com"}handleMXPostMessage(e){e.data.mx&&(this.dispatcher(e,this.options),e.data.type===b.Load&&this.postMessageToWidget({type:"mx/sdk/info",metadata:{sdk:"web",version:"0.0.12"}}))}postMessageToWidget(e){if(!this.iframe.contentWindow)throw new Error("Unable to postMessage to widget, iframe doesn't exist");this.iframe.contentWindow.postMessage(JSON.stringify(e),this.targetOrigin)}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,s=e.onSsoUrlLoadError||l,r=n(t(e));return fetch(r.url,r.options).then(p).then(i).catch(s)})(Object.assign(Object.assign({},this.options),{widgetType:this.widgetType})).then((e=>{!this.isUnmounting&&e&&(this.ssoUrl=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 a.AccountsWidget}},e.BudgetsWidget=class extends W{get widgetType(){return a.BudgetsWidget}},e.ConnectWidget=class extends W{get widgetType(){return a.ConnectWidget}get dispatcher(){return T}},e.ConnectionsWidget=class extends W{get widgetType(){return a.ConnectionsWidget}},e.DebtsWidget=class extends W{get widgetType(){return a.DebtsWidget}},e.FinstrongWidget=class extends W{get widgetType(){return a.FinstrongWidget}},e.GoalsWidget=class extends W{get widgetType(){return a.GoalsWidget}},e.HelpWidget=class extends W{get widgetType(){return a.HelpWidget}},e.MasterWidget=class extends W{get widgetType(){return a.MasterWidget}},e.MiniBudgetsWidget=class extends W{get widgetType(){return a.MiniBudgetsWidget}},e.MiniFinstrongWidget=class extends W{get widgetType(){return a.MiniFinstrongWidget}},e.MiniPulseCarouselWidget=class extends W{get widgetType(){return a.MiniPulseCarouselWidget}get dispatcher(){return S}},e.MiniSpendingWidget=class extends W{get widgetType(){return a.MiniSpendingWidget}},e.PulseWidget=class extends W{get widgetType(){return a.PulseWidget}get dispatcher(){return S}},e.SettingsWidget=class extends W{get widgetType(){return a.SettingsWidget}},e.SpendingWidget=class extends W{get widgetType(){return a.SpendingWidget}},e.TransactionsWidget=class extends W{get widgetType(){return a.TransactionsWidget}},e.TrendsWidget=class extends W{get widgetType(){return a.TrendsWidget}},e.Widget=W,Object.defineProperty(e,"__esModule",{value:!0})}));
{
"name": "@mxenabled/web-widget-sdk",
"version": "0.0.11",
"version": "0.0.12",
"description": "MX Web Widget SDK",

@@ -61,3 +61,3 @@ "main": "./dist/cjs/index.js",

"dependencies": {
"@mxenabled/widget-post-message-definitions": "^1.2.0"
"@mxenabled/widget-post-message-definitions": "^1.3.0"
},

@@ -64,0 +64,0 @@ "devDependencies": {

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