var _FlexpaLink=function(t){"use strict";var d=Object.defineProperty;var h=(t,n,I)=>n in t?d(t,n,{enumerable:!0,configurable:!0,writable:!0,value:I}):t[n]=I;var i=(t,n,I)=>h(t,typeof n!="symbol"?n+"":n,I);var n;(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"})(n||(n={}));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 r;(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"})(r||(r={}));class N{constructor(){i(this,"iframe");i(this,"publishableKey");i(this,"user");i(this,"endpoint");i(this,"targetUrl");i(this,"strict",!0);i(this,"autoExit",!0);i(this,"skipExplainer",!1);i(this,"skipSyncing",!1);i(this,"requestedResources");i(this,"usage");i(this,"onSuccess");i(this,"onSyncing");i(this,"onExit");i(this,"onLoad");i(this,"boundListenEvent");i(this,"credentials");i(this,"hasStateParam",!1);this.boundListenEvent=this.listen.bind(this),this.checkInAppBrowser()&&this.checkForStateParam()}checkInAppBrowser(){if(typeof navigator>"u"||!navigator.userAgent)return!1;const a=navigator.userAgent;return a.includes("FBAN")||a.includes("FBAV")||a.includes("Instagram")||a.includes("Snapchat")||a.includes("Twitter")||a.includes("LinkedIn")||a.includes("Pinterest")}checkForStateParam(){if(typeof window<"u"){const a=new URLSearchParams(window.location.search);return this.hasStateParam=a.has("flexpaLinkState"),this.hasStateParam}return!1}getStateParam(){return typeof window<"u"?new URLSearchParams(window.location.search).get("flexpaLinkState"):null}decodeStateParam(a){if(!a)return null;try{return JSON.parse(atob(a))}catch{return null}}listen(a){a.origin==="https://link.flexpa.com"&&this.handleLinkMessageEvent(a.data)}handleLinkMessageEvent(a){switch(a.type){case"SUCCESS":this.close(),this.onSuccess&&this.onSuccess(a.payload);break;case"SYNCING":this.onSyncing&&this.onSyncing(a.payload);break;case"LOADED":this.onLoad&&this.onLoad();break;case"CLOSED":this.close(),this.onExit&&this.onExit(a.payload);break}}handleLinkStateMessage(a){switch(a.type){case"SUCCESS":this.close(),this.onSuccess&&this.onSuccess(a.payload.publicToken);break;default:this.onExit&&this.onExit({code:a.type})}}create(a){Object.entries(a).forEach(([s,E])=>{this[s]=E}),this.targetUrl=this.buildTargetUrl(),this.hasStateParam&&setTimeout(()=>{const s=this.getStateParam(),E=this.decodeStateParam(s);if(E&&!(E.exp&&E.exp<Date.now())&&(this.handleLinkStateMessage(E),typeof history<"u")){const S=new URLSearchParams(window.location.search);S.delete("flexpaLinkState");const c=window.location.pathname+(S.toString()?"?"+S.toString():"")+window.location.hash;history.replaceState({},"",c)}},0)}open(a){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 s=`
        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=s,this.iframe.allow="clipboard-write https://link.flexpa.com",this.iframe.src=this.buildTargetUrl(a==null?void 0:a.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(a){if(!this.publishableKey)throw"publishableKey required";if(!this.onSuccess)throw"onSuccess required";const s=new URL("https://link.flexpa.com");return s.searchParams.append("publishableKey",this.publishableKey),s.searchParams.append("openerUrl",window.location.href),s.searchParams.append("strict",this.strict?"true":"false"),s.searchParams.append("autoExit",this.autoExit?"true":"false"),s.searchParams.append("skipSyncing",this.skipSyncing?"true":"false"),s.searchParams.append("skipExplainer",this.skipExplainer?"true":"false"),this.user&&s.searchParams.append("user",JSON.stringify(this.user)),this.requestedResources&&s.searchParams.append("requestedResources",encodeURIComponent(this.requestedResources.join(","))),a?s.searchParams.append("endpoint",a):this.endpoint&&s.searchParams.append("endpoint",this.endpoint),this.usage&&s.searchParams.append("usage",this.usage),this.credentials&&s.searchParams.append("credentials",this.credentials?"true":"false"),s}}const l=new N;typeof window<"u"&&(window.FlexpaLink=l);const _=Object.values(I),T=["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_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",..._];return t.CredentialsFailureTypes=_,t.FailureTypes=T,t.default=l,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),t}({});