var _FlexpaLink=function(n){"use strict";var T=Object.defineProperty;var o=(n,r,I)=>r in n?T(n,r,{enumerable:!0,configurable:!0,writable:!0,value:I}):n[r]=I;var t=(n,r,I)=>o(n,typeof r!="symbol"?r+"":r,I);var r;(function(e){e.LOGIN="LOGIN",e.LOGIN_SUCCESS="LOGIN_SUCCESS",e.SUBMIT_MFA="SUBMIT_MFA",e.SUBMIT_MFA_SUCCESS="SUBMIT_MFA_SUCCESS",e.SUBMIT_MFA_FAILURE="SUBMIT_MFA_FAILURE",e.SELECT_MFA="SELECT_MFA",e.SELECT_MFA_SUCCESS="SELECT_MFA_SUCCESS",e.ERROR="ERROR",e.AUTHENTICATED="AUTHENTICATED",e.AUTHORIZED="AUTHORIZED"})(r||(r={}));var I;(function(e){e.MISSING_MFA_METHODS="MISSING_MFA_METHODS",e.INVALID_MFA_CODE="INVALID_MFA_CODE",e.INVALID_MFA_METHOD="INVALID_MFA_METHOD",e.INVALID_CREDENTIALS="INVALID_CREDENTIALS",e.INVALID_STEP="INVALID_STEP",e.INVALID_AUTH_STATE="INVALID_AUTH_STATE",e.DATA_FETCH_FAILED="DATA_FETCH_FAILED",e.INVALID_SESSION="INVALID_SESSION",e.INVALID_PATIENT_AUTHORIZATION="INVALID_PATIENT_AUTHORIZATION",e.INVALID_ENDPOINT="INVALID_ENDPOINT",e.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED",e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.CONNECTION_TIMEOUT="CONNECTION_TIMEOUT",e.CONNECTION_ERROR="CONNECTION_ERROR",e.INVALID_EVENT="INVALID_EVENT",e.INVALID_AUTH_HEADER="INVALID_AUTH_HEADER",e.INVALID_PATIENT_ID="INVALID_PATIENT_ID"})(I||(I={}));var E;(function(e){e.SEARCHED="SEARCHED",e.OPTION_SELECTED="OPTION_SELECTED",e.CONSENTED="CONSENTED",e.MISSED_MESSAGE="MISSED_MESSAGE",e.MFA_SELECTED="MFA_SELECTED",e.CREDENTIALS_SUBMITTED="CREDENTIALS_SUBMITTED",e.MFA_SUBMITTED="MFA_SUBMITTED"})(E||(E={}));class S{constructor(){t(this,"iframe");t(this,"publishableKey");t(this,"user");t(this,"endpoint");t(this,"targetUrl");t(this,"strict",!0);t(this,"autoExit",!0);t(this,"skipExplainer",!1);t(this,"skipSyncing",!1);t(this,"requestedResources");t(this,"usage");t(this,"onSuccess");t(this,"onSyncing");t(this,"onExit");t(this,"onLoad");t(this,"boundListenEvent");t(this,"credentials");t(this,"redirectUrl");t(this,"hasStateParam",!1);t(this,"_experimentalResumeContext");this.boundListenEvent=this.listen.bind(this),this.checkForResumeParam()}decodeBase64Url(s){const i=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(Math.ceil(s.length/4)*4,"=");return JSON.parse(atob(i))}checkForResumeParam(){if(typeof window>"u")return;const s=new URLSearchParams(window.location.search),i=s.get("resume_context");if(i){try{const a=this.decodeBase64Url(i);this.handleResumeContext(a)}catch{throw new Error("Invalid resume_context parameter")}s.delete("resume_context"),history.replaceState({},"",window.location.pathname+(s.toString()?"?"+s.toString():"")+window.location.hash)}}getStateParam(){return typeof window<"u"?new URLSearchParams(window.location.search).get("flexpaLinkState"):null}decodeStateParam(s){if(!s)return null;try{return JSON.parse(atob(s))}catch{return null}}listen(s){s.origin==="https://link.flexpa.com"&&this.handleLinkMessageEvent(s.data)}handleLinkMessageEvent(s){switch(s.type){case"SUCCESS":this.close(),this.onSuccess&&this.onSuccess(s.payload);break;case"SYNCING":this.onSyncing&&this.onSyncing(s.payload);break;case"LOADED":this.onLoad&&this.onLoad();break;case"CLOSED":this.close(),this.onExit&&this.onExit(s.payload);break}}create(s){if(Object.entries(s).forEach(([i,a])=>{this[i]=a}),this.targetUrl=this.buildTargetUrl(),s._experimentalResumeContext)if(typeof s._experimentalResumeContext=="string")try{const i=this.decodeBase64Url(s._experimentalResumeContext);this.handleResumeContext(i)}catch{throw new Error("Invalid resume_context parameter")}else this.handleResumeContext(s._experimentalResumeContext);if(this._experimentalResumeContext&&!this.iframe){this.open();return}}open(s){if(!this.publishableKey)throw new Error("You must call `FlexpaLink.create(config)` before calling `FlexpaLink.open()`");if(!this.iframe){this.iframe=document.createElement("iframe");const i=` position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; border: none; margin: 0; padding: 0; overflow: hidden; z-index: 999999;`;this.iframe.id="flexpa-link-iframe",this.iframe.style.cssText=i,this.iframe.allow="clipboard-write https://link.flexpa.com",this.iframe.src=this.buildTargetUrl(s==null?void 0:s.endpoint).toString(),this.iframe.title="Flexpa Link",document.body.appendChild(this.iframe),window.addEventListener("message",this.boundListenEvent)}}exit(){this.close(),this.onExit&&this.onExit()}close(){this.iframe&&(document.body.removeChild(this.iframe),this.iframe=void 0,window.removeEventListener("message",this.boundListenEvent))}buildTargetUrl(s){if(!this.publishableKey)throw new Error("publishableKey required");if(!this.onSuccess&&!this._experimentalResumeContext)throw new Error("onSuccess required");const i=new URL("https://link.flexpa.com");if(i.searchParams.append("publishableKey",this.publishableKey),i.searchParams.append("openerUrl",window.location.href),i.searchParams.append("strict",this.strict?"true":"false"),i.searchParams.append("autoExit",this.autoExit?"true":"false"),i.searchParams.append("skipSyncing",this.skipSyncing?"true":"false"),i.searchParams.append("skipExplainer",this.skipExplainer?"true":"false"),this.user&&i.searchParams.append("user",JSON.stringify(this.user)),this.requestedResources&&i.searchParams.append("requestedResources",encodeURIComponent(this.requestedResources.join(","))),s?i.searchParams.append("endpoint",s):this.endpoint&&i.searchParams.append("endpoint",this.endpoint),this.usage&&i.searchParams.append("usage",this.usage),this.credentials&&i.searchParams.append("credentials",this.credentials?"true":"false"),this.redirectUrl&&i.searchParams.append("redirectUrl",this.redirectUrl),this._experimentalResumeContext&&typeof this._experimentalResumeContext!="string"){const{payload:a}=this._experimentalResumeContext;a!=null&&a.sessionToken&&i.searchParams.append("sessionToken",a.sessionToken),a!=null&&a.patientAuthorizationId&&i.searchParams.append("patientAuthorizationId",a.patientAuthorizationId)}return i}handleResumeContext(s){this._experimentalResumeContext=s}}const _=new S;typeof window<"u"&&(window.FlexpaLink=_);const l=Object.values(I),N=["API_DOWN","MISSING_PAT","MISSING_PAT_ID","MISSING_PATIENT_ID","MISSING_ENDPOINT","MISSING_SMART_CONFIG","MISSING_APPLICATION","MISSING_SESSION_TOKEN","INVALID_ENDPOINT","INVALID_ENDPOINT_MODE","INVALID_STATE","INVALID_REQUEST","INVALID_SESSION_TOKEN","INVALID_PUBLISHABLE_KEY","INVALID_REDIRECT_URL","INVALID_USER","INVALID_USAGE","INVALID_TYPE","QUERY_REJECTED","QUERY_TIMEOUT","QUERY_INELIGIBLE","QUERY_UNKNOWN","QUERY_SERVER_ERROR","QUERY_INVALID_CONFIG","QUERY_INVALID_SCOPE","AUTHORIZATION_CODE_EXCHANGE","SYNC_FAILED",...l];return n.CredentialsFailureTypes=l,n.FailureTypes=N,n.default=_,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),n}({});