UNPKG

@frak-labs/components

Version:

Frak Wallet components, helping any person to interact with the Frak wallet.

154 lines 44.3 kB
var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};const n=`.reset_base__1831jhd0 { margin: 0; padding: 0; border: 0; box-sizing: border-box; font-size: 100%; font: inherit; vertical-align: baseline; -webkit-tap-highlight-color: transparent; } .reset_focusRing__1831jhd1 { outline: 2px solid transparent; outline-offset: 2px; } .reset_focusRing__1831jhd1:focus-visible { outline-color: currentColor; } .reset_fieldAppearance__1831jhd2 { appearance: none; background-color: transparent; } .reset_visuallyHidden__1831jhd3 { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .reset_element_ul__1831jhd4 { list-style: none; } .reset_element_ol__1831jhd5 { list-style: none; } .reset_element_button__1831jhd6 { cursor: pointer; } .reset_element_a__1831jhd7 { text-decoration: none; color: inherit; } .reset_element_table__1831jhdb { border-collapse: collapse; border-spacing: 0; } .reset_element_img__1831jhdc { display: block; max-width: 100%; }:root { --text-primary__pbq4ak0: #000000; --text-secondary__pbq4ak1: #525252; --text-tertiary__pbq4ak2: #a3a3a3; --text-disabled__pbq4ak3: #a3a3a3; --text-action__pbq4ak4: #0043ef; --text-actionHover__pbq4ak5: #0036bf; --text-onAction__pbq4ak6: #ffffff; --text-error__pbq4ak7: #e31c31; --text-success__pbq4ak8: #09be67; --text-warning__pbq4ak9: #ec7e00; --surface-primary__pbq4aka: #0043ef; --surface-secondary__pbq4akb: #f2f6fe; --surface-background__pbq4akc: #ffffff; --surface-background2__pbq4akd: #f9fafb; --surface-elevated__pbq4ake: #ffffff; --surface-muted__pbq4akf: #f7f7f7; --surface-tertiary__pbq4akg: #f7f7f7; --surface-overlay__pbq4akh: #000000b2; --surface-disabled__pbq4aki: #e2e2e2; --surface-primaryHover__pbq4akj: #0036bf; --surface-primaryPressed__pbq4akk: #00288f; --surface-secondaryHover__pbq4akl: #e5ecfd; --surface-secondaryPressed__pbq4akm: #ccd9fc; --surface-error__pbq4akn: #fce8ea; --surface-success__pbq4ako: #f3fcf7; --surface-warning__pbq4akp: #fef9f2; --border-subtle__pbq4akq: #f5f5f5; --border-focus__pbq4akr: #a3a3a3; --border-error__pbq4aks: #e31c31; --border-success__pbq4akt: #09be67; --border-warning__pbq4aku: #ec7e00; --border-default__pbq4akv: #e2e2e2; --icon-primary__pbq4akw: #000000; --icon-secondary__pbq4akx: #525252; --icon-tertiary__pbq4aky: #a3a3a3; --icon-disabled__pbq4akz: #a3a3a3; --icon-action__pbq4ak10: #0043ef; --icon-actionHover__pbq4ak11: #0036bf; --icon-onAction__pbq4ak12: #ffffff; --icon-error__pbq4ak13: #e31c31; --icon-success__pbq4ak14: #09be67; --icon-warning__pbq4ak15: #ec7e00; } [data-theme='dark'] { --text-primary__pbq4ak0: #ffffff; --text-secondary__pbq4ak1: #f7f7f7; --text-tertiary__pbq4ak2: #f5f5f5; --text-disabled__pbq4ak3: #a3a3a3; --text-action__pbq4ak4: #668ef5; --text-actionHover__pbq4ak5: #0036bf; --text-onAction__pbq4ak6: #ffffff; --text-error__pbq4ak7: #e9495a; --text-success__pbq4ak8: #09be67; --text-warning__pbq4ak9: #ec7e00; --surface-primary__pbq4aka: #0043ef; --surface-secondary__pbq4akb: #00288f; --surface-background__pbq4akc: #000000; --surface-background2__pbq4akd: #000000; --surface-elevated__pbq4ake: #262626; --surface-muted__pbq4akf: #525252; --surface-tertiary__pbq4akg: #737373; --surface-overlay__pbq4akh: #000000b2; --surface-disabled__pbq4aki: #e2e2e2; --surface-primaryHover__pbq4akj: #0036bf; --surface-primaryPressed__pbq4akk: #00288f; --surface-secondaryHover__pbq4akl: #e5ecfd; --surface-secondaryPressed__pbq4akm: #ccd9fc; --surface-error__pbq4akn: #b61627; --surface-success__pbq4ako: #05723e; --surface-warning__pbq4akp: #8e4c00; --border-subtle__pbq4akq: #737373; --border-focus__pbq4akr: #a3a3a3; --border-error__pbq4aks: #e31c31; --border-success__pbq4akt: #09be67; --border-warning__pbq4aku: #ec7e00; --border-default__pbq4akv: #525252; --icon-primary__pbq4akw: #ffffff; --icon-secondary__pbq4akx: #f7f7f7; --icon-tertiary__pbq4aky: #f7f7f7; --icon-disabled__pbq4akz: #a3a3a3; --icon-action__pbq4ak10: #0043ef; --icon-actionHover__pbq4ak11: #0036bf; --icon-onAction__pbq4ak12: #ffffff; --icon-error__pbq4ak13: #e31c31; --icon-success__pbq4ak14: #09be67; --icon-warning__pbq4ak15: #ec7e00; }.sharedBaseCss_buttonReset__7cswil0 { margin: 0; border: 0; appearance: none; background-color: transparent; box-sizing: border-box; font-family: inherit; -webkit-tap-highlight-color: transparent; cursor: pointer; outline: 2px solid transparent; outline-offset: 2px; } .sharedBaseCss_buttonReset__7cswil0:focus-visible { outline-color: currentColor; }`;function r(e,t){let n=document.getElementById(e);if(n){n.textContent!==t&&(n.textContent=t);return}let r=document.createElement(`style`);r.id=e,r.textContent=t,document.head.appendChild(r)}function i(e,t){let n=`frak-base-${e}`;if(document.getElementById(n)||!t)return;let r=document.createElement(`style`);r.id=n,r.textContent=t,document.head.appendChild(r)}function a(e,t,n){r(`frak-placement-${e}-${t}`,n)}const o={injectBase:i,injectPlacement:a};function s(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}const c={parseError:-32700,invalidRequest:-32600,methodNotFound:-32601,invalidParams:-32602,internalError:-32603,serverError:-32e3,clientNotConnected:-32001,configError:-32002,corruptedResponse:-32003,clientAborted:-32004,walletNotConnected:-32005,serverErrorForInteractionDelegation:-32006,userRejected:-32007};var l=class extends Error{code;data;constructor(e,t,n){super(t),this.code=e,this.data=n}toJSON(){return{code:this.code,message:this.message,data:this.data}}},u=class{_promise;_resolve;_reject;constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve=e=>{this._resolve?.(e)};reject=e=>{this._reject?.(e)}};function d(e){let{emittingTransport:t,listeningTransport:n,targetOrigin:r,middleware:i=[],lifecycleHandlers:a}=e,o=new Map;function s(e){return typeof e!=`object`||!e?!1:`clientLifecycle`in e||`iframeLifecycle`in e}function c(e){return typeof e!=`object`||!e?!1:`id`in e&&`topic`in e&&`data`in e}async function d(e){try{`clientLifecycle`in e&&a?.clientLifecycle?await a.clientLifecycle(e,{origin:r,source:null}):`iframeLifecycle`in e&&a?.iframeLifecycle&&await a.iframeLifecycle(e,{origin:r,source:null})}catch{}}async function f(e){let t={origin:r,source:null};for(let n of i)n.onRequest&&await n.onRequest(e,t);return e}async function p(e,t){let n={origin:r,source:null},a=t;for(let t of i)t.onResponse&&(a=await t.onResponse(e,a,n));return a}async function m(e){try{if(new URL(e.origin).origin.toLowerCase()!==new URL(r).origin.toLowerCase())return}catch{return}if(s(e.data)){await d(e.data);return}if(!c(e.data))return;let t;try{let n=e.data.data,r=n instanceof Uint8Array||ArrayBuffer.isView(n)?{result:n}:n;t=await p(e.data,r)}catch{return}let n=o.get(e.data.id);n&&n(t)}async function h(e){let n=e;try{n=await f(e)}catch(e){throw e}t.postMessage(n,r)}function g(e){t.postMessage(e,r)}function _(){return`${Date.now()}-${Math.random().toString(36).substring(2,9)}`}n.addEventListener(`message`,m);function v(e){let t=_(),n=new u;return o.set(t,e=>{e.error?n.reject(new l(e.error.code,e.error.message,e.error.data)):n.resolve(e.result),o.delete(t)}),h({id:t,topic:e.method,data:{method:e.method,params:e.params}}).catch(e=>{o.delete(t),n.reject(e)}),n.promise}function y(e,t){let n=_();return o.set(n,e=>{e.error?o.delete(n):t(e.result)}),h({id:n,topic:e.method,data:{method:e.method,params:e.params}}).catch(e=>{o.delete(n)}),()=>{o.delete(n)}}function b(){n.removeEventListener(`message`,m),o.clear()}return{request:v,listen:y,sendLifecycle:g,cleanup:b}}function f(e){return new TextEncoder().encode(JSON.stringify(e))}function p(e){try{return JSON.parse(new TextDecoder().decode(e))}catch{return null}}const m=`frak-client-id`;function h(){return typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}function g(){if(typeof window>`u`||!window.localStorage)return h();let e=localStorage.getItem(m);return e||(e=h(),localStorage.setItem(m,e)),e}var _=class extends Map{maxSize;constructor(e){super(),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&(super.delete(e),super.set(e,t)),t}set(e,t){if(super.has(e)&&super.delete(e),super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=super.keys().next().value;e!==void 0&&super.delete(e)}return this}};const v=new _(1024),y=new _(1024),b=new _(1024);async function x(e,{cacheKey:t,cacheTime:n=3e4}){if(n>0){let e=y.get(t);if(e&&Date.now()-e.created<n)return e.data}let r=b.get(t);if(r&&Date.now()-r<1e3)throw Error(`Cache: ${t} recently failed, backing off`);let i=v.get(t);i||(i=e(),v.set(t,i));try{let e=await i;return y.set(t,{data:e,created:Date.now()}),b.delete(t),e}catch(e){throw b.set(t,Date.now()),e}finally{v.delete(t)}}function S(){v.clear(),y.clear(),b.clear()}const ee=`https://backend.frak.id`;function te(e){return e.includes(`localhost:3000`)||e.includes(`localhost:3010`)}function ne(e){return te(e)?`https://localhost:3030`:e.includes(`wallet-dev.frak.id`)||e.includes(`wallet.gcp-dev.frak.id`)?`https://backend.gcp-dev.frak.id`:ee}function C(e){if(e)return ne(e);if(typeof window<`u`){let e=window.FrakSetup?.client?.config?.walletUrl;if(e)return ne(e)}return ee}const w=`__frakSdkConfig`,re=`frak-config-cache`,T=`frak-merchant-id`,E={key:re},D=typeof window<`u`;function O(){return{isResolved:!1,merchantId:``}}let k=null;function A(){if(!D)return null;try{let e=localStorage.getItem(E.key);if(!e)return null;let t=JSON.parse(e);return t.config?.isResolved?(k=t,t):null}catch{return null}}function j(){return(k??A())?.config}function ie(){let e=k??A();return e?Date.now()-e.timestamp<3e4:!1}function ae(e){if(!(!D||!e.isResolved))try{let t={config:e,timestamp:Date.now()};localStorage.setItem(E.key,JSON.stringify(t)),k=t}catch{}}function oe(){if(D){k=null;try{localStorage.removeItem(E.key)}catch{}}}function se(){D&&(window[w]||(window[w]=j()??O()))}se();function M(){return D?window[w]??O():O()}function ce(e){D&&window.dispatchEvent(new CustomEvent(`frak:config`,{detail:e}))}function le(e){return e??(D?window.location.hostname:``)}async function ue(e,t,n){try{let r=C(t),i=n?`&lang=${encodeURIComponent(n)}`:``,a=await fetch(`${r}/user/merchant/resolve?domain=${encodeURIComponent(e)}${i}`);if(!a.ok)return;let o=await a.json();if(D)try{sessionStorage.setItem(T,o.merchantId)}catch{}return o}catch{return}}const N={getConfig:M,get isResolved(){return M().isResolved},get isCacheFresh(){return ie()},setCacheScope(e,t){E.key=`${re}:${`${e}:${t??``}`}`,k=null},setConfig(e){if(D&&(window[w]=e),ae(e),ce(e),D&&e.merchantId)try{sessionStorage.setItem(T,e.merchantId)}catch{}},reset(){let e=j()??O();D&&(window[w]=e),ce(e)},clearCache(){if(oe(),S(),D)try{sessionStorage.removeItem(T)}catch{}},resolve(e,t,n){let r=le(e);return r?x(async()=>{let e=await ue(r,t,n);if(!e)throw Error(`Config resolution returned empty`);return e},{cacheKey:`sdkConfig:${r}:${n??``}`,cacheTime:1/0}).catch(()=>void 0):Promise.resolve(void 0)},getMerchantId(){let e=M();if(e.isResolved&&e.merchantId)return e.merchantId;if(D)try{return sessionStorage.getItem(T)??void 0}catch{}},async resolveMerchantId(e,t){return N.getMerchantId()||(await N.resolve(e,t))?.merchantId}};function P(e){return btoa(Array.from(e,e=>String.fromCharCode(e)).join(``)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function F(e){let t=e.length%4;return Uint8Array.from(atob(e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(e.length+(t===0?0:4-t),`=`)),e=>e.charCodeAt(0))}function de(e){return P(f(e))}function fe(e,t,n,r,i,a){let o=de(pe({redirectUrl:t.redirectUrl,directExit:t.directExit,lang:t.lang,merchantId:n,metadata:{name:r,css:a,logoUrl:t.metadata?.logoUrl,homepageLink:t.metadata?.homepageLink},clientId:i})),s=new URL(e);return s.pathname=`/sso`,s.searchParams.set(`p`,o),s.toString()}function pe(e){return{r:e.redirectUrl,cId:e.clientId,d:e.directExit,l:e.lang,m:e.merchantId,md:{n:e.metadata?.name,css:e.metadata?.css,l:e.metadata?.logoUrl,h:e.metadata?.homepageLink}}}const me=`menubar=no,status=no,scrollbars=no,fullscreen=no,width=500, height=800`,he=`frak-sso`;async function ge(e,t){let{metadata:n,customizations:r,walletUrl:i}=e.config,a={...t,directExit:t.directExit??!t.redirectUrl};if(a.openInSameWindow??!!a.redirectUrl)return await e.request({method:`frak_openSso`,params:[a,n.name,r?.css]});let o=a.ssoPopupUrl??fe(i??`https://wallet.frak.id`,a,await N.resolveMerchantId()??``,n.name,g(),r?.css),s=window.open(o,he,me);if(!s)throw Error(`Popup was blocked. Please allow popups for this site.`);return s.focus(),await e.request({method:`frak_openSso`,params:[a,n.name,r?.css]})??{}}function I(e,t,n){if(e)try{e.openPanel?.track(t,n)}catch{}}const _e=/^0x[a-fA-F0-9]{40}$/;function L(e){return typeof e==`string`&&_e.test(e)}function ve(e,t){return e.toLowerCase()===t.toLowerCase()}function ye(e){let t=new Uint8Array(20);for(let n=0;n<20;n++){let r=Number.parseInt(e.substring(2+n*2,4+n*2),16);if(Number.isNaN(r))throw Error(`Invalid address: ${e}`);t[n]=r}return t}const be=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function xe(e){let t=`0x`;for(let n=0;n<20;n++)t+=be[e[n]];return t}function Se(e){return`r`in e&&!(`v`in e)}function R(e){return`v`in e&&e.v===2}const Ce=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function we(e){return typeof e==`string`&&Ce.test(e)}function Te(e){let t=e.replace(/-/g,``),n=new Uint8Array(16);for(let e=0;e<16;e++)n[e]=Number.parseInt(t.substring(e*2,e*2+2),16);return n}function Ee(e){let t=``;for(let n=0;n<16;n++)t+=e[n].toString(16).padStart(2,`0`);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20,32)}`}function De(e){if(!we(e.m)||!Number.isInteger(e.t)||e.t<0||e.t>4294967295)return null;let t=typeof e.c==`string`&&e.c.length>0,n=typeof e.w==`string`&&L(e.w);if(!t&&!n||t&&!we(e.c))return null;let r=new Uint8Array(21+(t?16:0)+(n?20:0)),i=new DataView(r.buffer,r.byteOffset,r.byteLength),a=0;return r[a++]=2|(t?16:0)|(n?32:0),r.set(Te(e.m),a),a+=16,i.setUint32(a,e.t,!1),a+=4,t&&(r.set(Te(e.c),a),a+=16),n&&(r.set(ye(e.w),a),a+=20),r}function Oe(e){if(e.length<21)return null;let t=e[0];if((t&15)!=2||t&192)return null;let n=(t&16)!=0,r=(t&32)!=0;if(!n&&!r)return null;let i=21+(n?16:0)+(r?20:0);if(e.length!==i)return null;let a=1,o=Ee(e.subarray(a,a+16));a+=16;let s=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(a,!1);a+=4;let c={v:2,m:o,t:s};if(n&&(c.c=Ee(e.subarray(a,a+16)),a+=16),r){let t=xe(e.subarray(a,a+20));if(!L(t))return null;c.w=t,a+=20}return c}const z=`fCtx`;function ke(e){if(e)try{if(R(e)){let t=De(e);return t?P(t):void 0}return P(ye(e.r))}catch{}}function Ae(e){if(!(!e||e.length===0))try{let t=F(e);if(t.length!==20)return Oe(t)||void 0;let n=xe(t);if(L(n))return{r:n}}catch{}}function je({url:e}){if(!e)return null;let t=new URL(e).searchParams.get(z);return t?Ae(t):null}function Me(e){return{utm_source:e.utmSource??`frak`,utm_medium:e.utmMedium??void 0,utm_campaign:e.utmCampaign??void 0,utm_content:e.utmContent,utm_term:e.utmTerm,via:e.via??void 0,ref:e.ref??void 0}}function Ne(e,t){let n=Me(t??{});for(let[t,r]of Object.entries(n))r===void 0||r===``||e.searchParams.has(t)||e.searchParams.set(t,r)}function Pe({url:e,context:t,attribution:n}){if(!e)return null;let r=ke(t);if(!r)return null;let i=new URL(e);return i.searchParams.set(z,r),Ne(i,n),i.toString()}function Fe(e){let t=new URL(e);return t.searchParams.delete(z),t.toString()}function Ie({url:e,context:t}){if(!window.location?.href||typeof window>`u`)return;let n=e??window.location.href,r;r=t===null?Fe(n):Pe({url:n,context:t}),r&&window.history.replaceState(null,``,r.toString())}const B={compress:ke,decompress:Ae,parse:je,update:Pe,remove:Fe,replaceUrl:Ie};var Le=class{constructor(e){this.baseUrl=e.baseUrl,this.headers={"Content-Type":`application/json`,...e.defaultHeaders},this.maxRetries=e.maxRetries??3,this.initialRetryDelay=e.initialRetryDelay??500}async resolveHeaders(){let e={};for(let[t,n]of Object.entries(this.headers)){let r=await n;r!==null&&(e[t]=r)}return e}addHeader(e,t){this.headers[e]=t}async post(e,t,n,r){try{let r=await fetch(e,{method:`POST`,headers:await this.resolveHeaders(),body:t?JSON.stringify(t??{}):void 0,keepalive:!0,...n});if(r.status===401)return null;if(r.status!==200&&r.status!==202)throw Error(`HTTP error! status: ${r.status}`);let i=await r.text();return i?JSON.parse(i):null}catch{if(r<this.maxRetries){let i=this.initialRetryDelay*2**r;return await new Promise(e=>setTimeout(e,i)),this.post(e,t,n,r+1)}return null}}async fetch(e,t,n={}){let r=`${this.baseUrl}${e}`;return this.post(r,t,n,0)}},Re=class{constructor(e){this.groups=[],this.queue=[],this.options=e;let t={"openpanel-client-id":e.clientId};e.clientSecret&&(t[`openpanel-client-secret`]=e.clientSecret),t[`openpanel-sdk-name`]=e.sdk||`node`,t[`openpanel-sdk-version`]=e.sdkVersion||`1.3.1`,this.api=new Le({baseUrl:e.apiUrl||`https://api.openpanel.dev`,defaultHeaders:t})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(e){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||e.type===`replay`&&!this.sessionId)}addQueue(e){e.type===`track`&&(e.payload.properties={...e.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(e)}async send(e){if(this.options.filter&&!this.options.filter(e))return Promise.resolve();if(this.shouldQueue(e))return this.addQueue(e),Promise.resolve();let t=await this.api.fetch(`/track`,e,{keepalive:e.type!==`replay`});this.deviceId=t?.deviceId;let n=!!this.sessionId;return this.sessionId=t?.sessionId,!n&&this.sessionId&&this.flush(),t}setGlobalProperties(e){this.global={...this.global,...e}}track(e,t){this.log(`track event`,e,t);let{groups:n,profileId:r,...i}=t??{},a=[...new Set([...this.groups,...n??[]])];return this.send({type:`track`,payload:{name:e,profileId:r??this.profileId,groups:a.length>0?a:void 0,properties:{...this.global??{},...i}}})}identify(e){if(this.log(`identify user`,e),e.profileId&&(this.profileId=e.profileId,this.flush()),e.profileId&&Object.keys(e).length>1)return this.send({type:`identify`,payload:{...e,properties:{...this.global,...e.properties}}})}upsertGroup(e){return this.log(`upsert group`,e),this.send({type:`group`,payload:e})}setGroup(e){return this.log(`set group`,e),this.groups.includes(e)||(this.groups=[...this.groups,e]),this.send({type:`assign_group`,payload:{groupIds:[e],profileId:this.profileId}})}setGroups(e){return this.log(`set groups`,e),this.groups=[...new Set([...this.groups,...e])],this.send({type:`assign_group`,payload:{groupIds:e,profileId:this.profileId}})}alias(e){}increment(e){return this.send({type:`increment`,payload:e})}decrement(e){return this.send({type:`decrement`,payload:e})}revenue(e,t){let n=t?.deviceId;return delete t?.deviceId,this.track(`revenue`,{...t??{},...n?{__deviceId:n}:{},__revenue:e})}getDeviceId(){return this.deviceId??``}getSessionId(){return this.sessionId??``}fetchDeviceId(){return Promise.resolve(this.deviceId??``)}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(e){if(e.type===`replay`)return e.payload;if(e.type===`track`){let t=`groups`in e.payload?e.payload.groups??[]:[],n=[...new Set([...this.groups,...t])];return{...e.payload,profileId:e.payload.profileId??this.profileId,groups:n.length>0?n:void 0}}return e.type===`identify`||e.type===`increment`||e.type===`decrement`||e.type===`assign_group`?{...e.payload,profileId:e.payload.profileId??this.profileId}:e.payload}flush(){let e=[];for(let t of this.queue){if(this.shouldQueue(t)){e.push(t);continue}let n=this.buildFlushPayload(t);this.send({...t,payload:n})}this.queue=e}log(...e){this.options.debug}},ze=typeof document<`u`?document.currentScript:null;function Be(e){return e.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace(`-`,``).replace(`_`,``))}var Ve=class extends Re{constructor(e){if(super({sdk:`web`,sdkVersion:`1.4.1`,...e}),this.options=e,this.lastPath=``,this.pendingRevenues=[],!this.isServer()){try{let e=sessionStorage.getItem(`openpanel-pending-revenues`);if(e){let t=JSON.parse(e);Array.isArray(t)&&(this.pendingRevenues=t)}}catch{this.pendingRevenues=[]}if(this.setGlobalProperties({__referrer:document.referrer}),this.options.trackScreenViews&&(this.trackScreenViews(),setTimeout(()=>this.screenView(),0)),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackAttributes&&this.trackAttributes(),this.options.sessionReplay?.enabled){let e=this.options.sessionReplay.sampleRate??1;Math.random()<e&&this.loadReplayModule().then(e=>{e&&e.startReplayRecorder(this.options.sessionReplay,e=>{this.send({type:`replay`,payload:{...e}})})})}}}async loadReplayModule(){try{if(typeof __OPENPANEL_REPLAY_URL__<`u`){let e=ze,t=this.options.sessionReplay?.scriptUrl||e?.src?.replace(`.js`,`-replay.js`)||`https://openpanel.dev/op1-replay.js`;return window.__openpanel_replay?window.__openpanel_replay:new Promise(e=>{let n=document.createElement(`script`);n.src=t,n.onload=()=>{e(window.__openpanel_replay??null)},n.onerror=()=>{e(null)},document.head.appendChild(n)})}return await import(`./replay-V6FXES7X.BoL9fAjx.js`)}catch{return null}}debounce(e,t){clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(e,t)}isServer(){return typeof document>`u`}trackOutgoingLinks(){this.isServer()||document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`a`);if(n&&t){let e=n.getAttribute(`href`);if(e?.startsWith(`http`))try{let r=new URL(e),i=window.location.hostname;r.hostname!==i&&super.track(`link_out`,{href:e,text:n.innerText||n.getAttribute(`title`)||t.getAttribute(`alt`)||t.getAttribute(`title`)})}catch{}}})}trackScreenViews(){if(this.isServer())return;let e=history.pushState;history.pushState=function(...t){let n=e.apply(this,t);return window.dispatchEvent(new Event(`pushstate`)),window.dispatchEvent(new Event(`locationchange`)),n};let t=history.replaceState;history.replaceState=function(...e){let n=t.apply(this,e);return window.dispatchEvent(new Event(`replacestate`)),window.dispatchEvent(new Event(`locationchange`)),n},window.addEventListener(`popstate`,()=>{window.dispatchEvent(new Event(`locationchange`))});let n=()=>this.debounce(()=>this.screenView(),50);this.options.trackHashChanges?window.addEventListener(`hashchange`,n):window.addEventListener(`locationchange`,n)}trackAttributes(){this.isServer()||document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`button`),r=t.closest(`a`),i=n?.getAttribute(`data-track`)?n:r?.getAttribute(`data-track`)?r:null;if(i){let e={};for(let t of i.attributes)t.name.startsWith(`data-`)&&t.name!==`data-track`&&(e[Be(t.name.replace(/^data-/,``))]=t.value);let t=i.getAttribute(`data-track`);t&&super.track(t,e)}})}track(e,t){return super.track(e,{...t,__path:this.lastPath})}screenView(e,t){if(this.isServer())return;let n,r;typeof e==`string`?(n=e,r=t):(n=window.location.href,r=e),this.lastPath!==n&&(this.lastPath=n,super.track(`screen_view`,{...r??{},__path:n,__title:document.title}))}async flushRevenue(){let e=this.pendingRevenues.map(e=>super.revenue(e.amount,e.properties));await Promise.all(e),this.clearRevenue()}clearRevenue(){if(this.pendingRevenues=[],!this.isServer())try{sessionStorage.removeItem(`openpanel-pending-revenues`)}catch{}}pendingRevenue(e,t){if(this.pendingRevenues.push({amount:e,properties:t}),!this.isServer())try{sessionStorage.setItem(`openpanel-pending-revenues`,JSON.stringify(this.pendingRevenues))}catch{}}};const V=`nexus-wallet-backup`,H=`frakwallet://`;function He(e,t){if(typeof window>`u`)return;let n=new URL(window.location.href),r=n.searchParams.get(`sso`);r&&(t.then(()=>{e.sendLifecycle({clientLifecycle:`sso-redirect-complete`,data:{compressed:r}})}).catch(e=>{}),n.searchParams.delete(`sso`),window.history.replaceState({},``,n.toString()))}function Ue(){let e=navigator.userAgent;return/Android/i.test(e)&&/Chrome\/\d+/i.test(e)}const We=H.replace(`://`,``);function Ge(e){return`intent://${e.slice(13)}#Intent;scheme=${We};end`}function U(e,t){let n=t?.timeout??2500,r=!1,i=()=>{document.hidden&&(r=!0)};document.addEventListener(`visibilitychange`,i);let a=Ue()&&Ke(e)?Ge(e):e;window.location.href=a,setTimeout(()=>{document.removeEventListener(`visibilitychange`,i),r||t?.onFallback?.()},n)}function Ke(e){return e.startsWith(H)}const W={id:`frak-wallet`,name:`frak-wallet`,title:`Frak Wallet`,allow:`publickey-credentials-get *; clipboard-write; web-share *`,style:{width:`0`,height:`0`,border:`0`,position:`absolute`,zIndex:2000001,top:`-1000px`,left:`-1000px`,colorScheme:`auto`}};function qe({walletBaseUrl:e,config:t}){let n=document.querySelector(`#frak-wallet`);n&&n.remove();let r=document.createElement(`iframe`);r.id=W.id,r.name=W.name,r.allow=W.allow,r.style.zIndex=W.style.zIndex.toString(),Je({iframe:r,isVisible:!1});let i=t?.walletUrl??e??`https://wallet.frak.id`,a=g();return Xe(i),Xe(C(i)),r.src=`${i}/listener?clientId=${encodeURIComponent(a)}`,new Promise(e=>{r.addEventListener(`load`,()=>e(r)),document.body.appendChild(r)})}function Je({iframe:e,isVisible:t}){if(!t){e.style.width=`0`,e.style.height=`0`,e.style.border=`0`,e.style.position=`fixed`,e.style.top=`-1000px`,e.style.left=`-1000px`;return}e.style.position=`fixed`,e.style.top=`0`,e.style.left=`0`,e.style.width=`100%`,e.style.height=`100%`,e.style.pointerEvents=`auto`}function Ye(e=`/listener`){if(!window.opener)return null;let t=t=>{try{return t.location.origin===window.location.origin&&t.location.pathname===e}catch{return!1}};if(t(window.opener))return window.opener;try{let e=window.opener.frames;for(let n=0;n<e.length;n++)if(t(e[n]))return e[n];return null}catch{return null}}function Xe(e){if(!(typeof document>`u`))try{let t=new URL(e).origin,n=`link[rel="preconnect"][data-frak-preconnect="${t}"]`;if(document.head.querySelector(n))return;let r=document.createElement(`link`);r.rel=`preconnect`,r.href=t,r.crossOrigin=``,r.dataset.frakPreconnect=t,document.head.appendChild(r)}catch{}}const Ze=(()=>{if(typeof navigator>`u`)return!1;let e=navigator.userAgent;if(!(/iPhone|iPad|iPod/i.test(e)||/Macintosh/i.test(e)&&navigator.maxTouchPoints>1))return!1;let t=e.toLowerCase();return t.includes(`instagram`)||t.includes(`fban`)||t.includes(`fbav`)||t.includes(`facebook`)})();function Qe(e){e?localStorage.setItem(V,e):localStorage.removeItem(V)}function G(e,t){try{let n=new URL(e);if(!n.searchParams.has(`u`))return e;let r=tt(window.location.href,t);return n.searchParams.delete(`u`),n.searchParams.append(`u`,r),n.toString()}catch{return e}}function $e(e){let t=new URL(window.location.href);e&&t.searchParams.set(`fmt`,e);let n=t.protocol===`http:`?`x-safari-http`:`x-safari-https`;window.location.href=`${n}://${t.host}${t.pathname}${t.search}${t.hash}`}function et(e){return e.includes(`/common/social`)}function tt(e,t){if(!t)return e;try{let n=new URL(e);return n.searchParams.set(`fmt`,t),n.toString()}catch{return`${e}${e.includes(`?`)?`&`:`?`}fmt=${encodeURIComponent(t)}`}}function nt(e,t,n,r,i){if(i){let e=G(t,r);window.open(e,`_blank`);return}if(Ke(t)){let i=G(t,r);U(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(Ze&&et(t))$e(r);else{let e=G(t,r);window.location.href=e}}function rt({iframe:e,targetOrigin:t}){let n=new u;return{handleEvent:r=>{if(!(`iframeLifecycle`in r))return;let{iframeLifecycle:i,data:a}=r;switch(i){case`connected`:n.resolve(!0);break;case`do-backup`:Qe(a.backup);break;case`remove-backup`:localStorage.removeItem(V);break;case`show`:case`hide`:Je({iframe:e,isVisible:i===`show`});break;case`redirect`:nt(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}function it({config:e,iframe:t}){let n=e?.walletUrl??`https://wallet.frak.id`,r=typeof navigator<`u`?navigator.language?.split(`-`)[0]:void 0,i=e.metadata.lang??(r===`en`||r===`fr`?r:void 0),a=e.domain??(typeof window<`u`?window.location.hostname:``);N.setCacheScope(a,i),N.reset();let o=N.isCacheFresh?void 0:N.resolve(e.domain,e.walletUrl,i),s=rt({iframe:t,targetOrigin:n}),f=new u,p=Date.now();if(!t.contentWindow)throw new l(c.configError,`The iframe does not have a content window`);let m=d({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await s.isConnected)throw new l(c.clientNotConnected,`The iframe provider isn't connected yet`);return await f.promise,t}}],lifecycleHandlers:{iframeLifecycle:(e,t)=>{s.handleEvent(e)}}}),h=at(m,s),_=async()=>{h(),m.cleanup(),t.remove(),S(),N.clearCache(),N.reset()},v;{v=new Ve({apiUrl:`https://op-api.gcp.frak.id`,clientId:`f305d11d-b93b-487c-80d4-92deb7903e98`,trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:e,payload:t})=>(e!==`track`||!t?.properties||`sdkVersion`in t.properties||(t.properties={...t.properties,sdkVersion:`1.1.3`,userAnonymousClientId:g()}),!0)}),v.setGlobalProperties({sdkVersion:`1.1.3`,userAnonymousClientId:g()}),v.init(),v.track(`sdk_initialized`,{sdkVersion:`1.1.3`});let e=!1,t=setTimeout(()=>{e||(e=!0,v?.track(`sdk_iframe_handshake_failed`,{reason:`timeout`}))},3e4);s.isConnected.then(()=>{e||(e=!0,clearTimeout(t),v?.track(`sdk_iframe_connected`,{handshake_duration_ms:Date.now()-p}))}).catch(()=>{e||(e=!0,clearTimeout(t),v?.track(`sdk_iframe_handshake_failed`,{reason:`unknown`}))})}let y=ot({config:e,rpcClient:m,lifecycleManager:s,configPromise:o,contextSent:f,openPanel:v}).then(()=>{}).catch(e=>{throw f.reject(e),e});return{config:e,waitForConnection:s.isConnected,waitForSetup:y,request:m.request,listenerRequest:m.listen,destroy:_,openPanel:v}}function at(e,t){let n,r,i=()=>e.sendLifecycle({clientLifecycle:`heartbeat`});async function a(){i(),n=setInterval(i,250),r=setTimeout(()=>{o()},3e4),await t.isConnected,o()}function o(){n&&clearInterval(n),r&&clearTimeout(r)}return a(),o}async function ot({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i,openPanel:a}){await n.isConnected,He(t,n.isConnected);let o=new URL(window.location.href),s=o.searchParams.get(`fmt`)??void 0;s&&(o.searchParams.delete(`fmt`),window.history.replaceState({},``,o.toString()));let c=t=>{let n=t?.merchantId??e.metadata.merchantId??``,r=t?.domain??``,i=t?.allowedDomains??[],a=t?.sdkConfig,o=a?.attribution||e.attribution?{...e.attribution,...a?.attribution}:void 0;N.setConfig(a?{isResolved:!0,merchantId:n,domain:r,allowedDomains:i,hasRawSdkConfig:!0,name:a.name??e.metadata.name,logoUrl:a.logoUrl??e.metadata.logoUrl,homepageLink:a.homepageLink??e.metadata.homepageLink,lang:a.lang??e.metadata.lang,currency:a.currency??e.metadata.currency,hidden:a.hidden,css:a.css,translations:a.translations,placements:a.placements,components:a.components,attribution:o}:{isResolved:!0,merchantId:n,domain:r,allowedDomains:i,name:e.metadata.name,logoUrl:e.metadata.logoUrl,homepageLink:e.metadata.homepageLink,lang:e.metadata.lang,currency:e.metadata.currency,attribution:o})},l=!1,u=e=>{let n=l?void 0:s;l=!0;let r=e.hasRawSdkConfig?{name:e.name,logoUrl:e.logoUrl,homepageLink:e.homepageLink,lang:e.lang,currency:e.currency,hidden:e.hidden,css:e.css,translations:e.translations,placements:e.placements,attribution:e.attribution}:e.attribution?{attribution:e.attribution}:void 0,i=g();if(a){let t=a.global??{};a.setGlobalProperties({...t,merchantId:e.merchantId,domain:e.domain??``})}t.sendLifecycle({clientLifecycle:`resolved-config`,data:{merchantId:e.merchantId,domain:e.domain??``,allowedDomains:e.allowedDomains??[],sourceUrl:window.location.href,...i&&{sdkAnonymousId:i},...n&&{pendingMergeToken:n},...r&&{sdkConfig:r}}})};N.isResolved&&(u(N.getConfig()),i.resolve()),r&&(c(await r),u(N.getConfig()),i.resolve());async function d(){let n=e.customizations?.css;n&&t.sendLifecycle({clientLifecycle:`modal-css`,data:{cssLink:n}})}async function f(){let n=e.customizations?.i18n;n&&t.sendLifecycle({clientLifecycle:`modal-i18n`,data:{i18n:n}})}async function p(){if(typeof window>`u`)return;let e=window.localStorage.getItem(V);e&&t.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}(await Promise.allSettled([d(),f(),p()])).some(e=>e.status===`rejected`)&&a?.track(`sdk_iframe_handshake_failed`,{reason:`asset_push`})}function st(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent;return!!(/iPhone|iPad|iPod/i.test(e)||/Macintosh/i.test(e)&&navigator.maxTouchPoints>1)}const K=st();function ct(){return typeof navigator>`u`?!1:K?!0:/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function lt(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent.toLowerCase();return e.includes(`instagram`)||e.includes(`fban`)||e.includes(`fbav`)||e.includes(`facebook`)}const ut=lt();function dt(e){K&&e.startsWith(`https://`)?window.location.href=`x-safari-https://${e.slice(8)}`:K&&e.startsWith(`http://`)?window.location.href=`x-safari-http://${e.slice(7)}`:window.location.href=`https://backend.frak.id/common/social?u=${encodeURIComponent(e)}`}function ft(e){return p(F(e))}const q={eur:`fr-FR`,usd:`en-US`,gbp:`en-GB`};function J(e){return e&&e in q?e:`eur`}function pt(e){return e?q[e]??q.eur:q.eur}function mt(e,t){let n=pt(t),r=J(t);return e.toLocaleString(n,{style:`currency`,currency:r,minimumFractionDigits:0,maximumFractionDigits:2})}function ht(e){return e?`${e}Amount`:`eurAmount`}async function gt({config:e}){let t=_t(e),n=await qe({config:t});if(!n)return;let r=it({config:t,iframe:n});if(await r.waitForSetup,await r.waitForConnection)return r}function _t(e){let t=J(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}function vt({perCall:e,defaults:t,productUtmContent:n}){if(e===null)return;let r=e!==void 0,i=t!==void 0&&Object.keys(t).length>0;if(!r&&!i&&!(n!==void 0&&n!==``))return;let a={...t,...e??{}},o=n??e?.utmContent;return o!==void 0&&o!==``?a.utmContent=o:delete a.utmContent,a}var yt=t({DEEP_LINK_SCHEME:()=>H,FrakContextManager:()=>B,base64urlDecode:()=>F,base64urlEncode:()=>P,baseIframeProps:()=>W,clearAllCache:()=>S,compressJsonToB64:()=>de,createIFrameFrakClient:()=>it,decompressJsonFromB64:()=>ft,findIframeInOpener:()=>Ye,formatAmount:()=>mt,generateSsoUrl:()=>fe,getBackendUrl:()=>C,getClientId:()=>g,getCurrencyAmountKey:()=>ht,getSupportedCurrency:()=>J,isIOS:()=>K,isInAppBrowser:()=>ut,isMobile:()=>ct,mergeAttribution:()=>vt,redirectToExternalBrowser:()=>dt,sdkConfigStore:()=>N,setupClient:()=>gt,ssoPopupFeatures:()=>me,ssoPopupName:()=>he,trackEvent:()=>I,triggerDeepLinkWithFallback:()=>U,withCache:()=>x});async function bt(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function Y(e,{steps:t,metadata:n},r){return await e.request({method:`frak_displayModal`,params:r?[t,n,e.config.metadata,r]:[t,n,e.config.metadata]})}async function xt(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function St(e){if(typeof window>`u`)return;let t=g();if(!t)return;let n=await N.resolveMerchantId();if(!n)return;let r=`frak-identity-ensured-${n}`;if(!window.sessionStorage.getItem(r))try{let i=C();(await fetch(`${i}/user/identity/ensure`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`,"x-wallet-sdk-auth":e,"x-frak-client-id":t},body:JSON.stringify({merchantId:n})})).ok&&window.sessionStorage.setItem(r,`1`)}catch{}}async function Ct(e,t){return x(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function wt(e,t){return x(()=>e.request({method:`frak_getMergeToken`}),{cacheKey:`frak_getMergeToken`,cacheTime:t?.cacheTime})}async function Tt(e,t){return x(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function Et(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function X(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t,{clientId:g()}]})}catch{}}function Dt(e,t,n){return R(t)?(I(e,`user_referred_started`,{referrerClientId:t.c,referrerWallet:t.w,walletStatus:n?.key}),X(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referrerWallet:t.w,referralTimestamp:t.t}),!0):Se(t)?(I(e,`user_referred_started`,{referrer:t.r,walletStatus:n?.key}),X(e,{type:`arrival`,referrerWallet:t.r}),!0):!1}function Ot(e,t){let n=g();return!n&&!t?null:{v:2,m:e,t:Math.floor(Date.now()/1e3),...n?{c:n}:{},...t?{w:t}:{}}}function kt(e,t){return R(e)?e.w&&t?.wallet?ve(e.w,t.wallet):e.c?g()===e.c:!1:Se(e)&&t?.wallet?ve(e.r,t.wallet):!1}function At(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;if(kt(n,t))return`self-referral`;if(!Dt(e,n,t))return`no-referrer`;let i=R(n)?n.m:r?.merchantId,a=r?.alwaysAppendUrl&&i?Ot(i,t?.wallet):null;return B.replaceUrl({url:window.location?.href,context:a}),I(e,`user_referred_completed`,{status:`success`}),`success`}async function jt(e,{options:t}={}){let n=B.parse({url:window.location.href}),r=await Pt(e);try{return At(e,{walletStatus:r,frakContext:n,options:t})}catch{}}const Z=`frak:referral-success`;async function Mt(e){try{await jt(e)===`success`&&window.dispatchEvent(new Event(Z))}catch{}}async function Nt(e){if(typeof window>`u`)return;let t=window.sessionStorage.getItem(`frak-wallet-interaction-token`),n=g();if(!t&&!n)return;let r=e.merchantId??await N.resolveMerchantId();if(!r)return;let i={Accept:`application/json`,"Content-Type":`application/json`};t&&(i[`x-wallet-sdk-auth`]=t),n&&(i[`x-frak-client-id`]=n);let a=C();await fetch(`${a}/user/track/purchase`,{method:`POST`,headers:i,body:JSON.stringify({customerId:e.customerId,orderId:e.orderId,token:e.token,merchantId:r})})}function Pt(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(Ft(e,t),t));let n=new u,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{Ft(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function Ft(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),St(t.interactionToken)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function It(e,{metadata:t,login:n}){return Q(e,{steps:{login:n??{}},metadata:t})}function Q(e,t){function n(n){return Q(e,{...t,steps:{...t.steps,sendTransaction:n}})}function r(n){return Q(e,{...t,steps:{...t.steps,final:{...n,action:{key:`reward`}}}})}function i(n,r){return Q(e,{...t,steps:{...t.steps,final:{...r,action:{key:`sharing`,options:n}}}})}async function a(n,r){return n&&(t.metadata=n(t.metadata??{})),await Y(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Lt(e,{tx:t,metadata:n}){return(await Y(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}function Rt(e=96){let t=Math.ceil(e/2),n=``;if(typeof crypto<`u`&&crypto.getRandomValues){let e=new Uint8Array(t);crypto.getRandomValues(e);for(let t=0;t<e.length;t++)n+=e[t].toString(16).padStart(2,`0`)}else for(let e=0;e<t;e++)n+=(Math.random()*256|0).toString(16).padStart(2,`0`);return n.substring(0,e)}async function zt(e,{siwe:t,metadata:n}){let r=e.config?.domain??window.location.host,i=t?.statement??`I confirm that I want to use my Frak wallet on: ${e.config.metadata.name}`;return(await Y(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??Rt(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}var Bt=t({REFERRAL_SUCCESS_EVENT:()=>Z,displayEmbeddedWallet:()=>bt,displayModal:()=>Y,displaySharingPage:()=>xt,ensureIdentity:()=>St,getMerchantInformation:()=>Ct,getMergeToken:()=>wt,getUserReferralStatus:()=>Tt,modalBuilder:()=>It,openSso:()=>ge,prepareSso:()=>Et,processReferral:()=>At,referralInteraction:()=>jt,sendInteraction:()=>X,sendTransaction:()=>Lt,setupReferral:()=>Mt,siweAuthenticate:()=>zt,trackPurchaseStatus:()=>Nt,watchWalletStatus:()=>Pt});async function $(e,t,n){window.FrakSetup?.client&&await xt(window.FrakSetup.client,{...n?.link&&{link:n.link},...n?.products?.length&&{products:n.products},...e&&{metadata:{targetInteraction:e}}},t)}function Vt(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function Ht(e){if(!e)return null;if(Array.isArray(e))return e;if(typeof e!=`string`)return null;try{let t=JSON.parse(e);return Array.isArray(t)?t:null}catch{return null}}function Ut(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.title==`string`?t.title.trim():``;if(n===``)return null;let r={title:n};return typeof t.imageUrl==`string`&&Vt(t.imageUrl)&&(r.imageUrl=t.imageUrl),typeof t.link==`string`&&Vt(t.link)&&(r.link=t.link),typeof t.utmContent==`string`&&t.utmContent!==``&&(r.utmContent=t.utmContent),r}function Wt(e){let t=Ht(e);if(!t)return;let n=[];for(let e of t){let t=Ut(e);t&&n.push(t)}return n.length>0?n:void 0}function Gt(e){if(!e)return;let t;try{t=ft(e)}catch{return}if(t!==null)return Wt(t)}const Kt=`frak:client`;function qt(){let e=new CustomEvent(Kt);window.dispatchEvent(e)}function Jt(e,t){if(window.FrakSetup?.client&&e===`add`){t();return}(e===`add`?window.addEventListener:window.removeEventListener)(Kt,t,!1)}function Yt(){return window.FrakSetup.core={...yt,...Bt},window.FrakSetup?.client?Promise.resolve():x(()=>Xt(),{cacheKey:`frak-sdk-init`,cacheTime:1/0}).catch(e=>{I(window.FrakSetup?.client,`sdk_init_failed`,{reason:e instanceof Error?e.message:typeof e==`string`?e:`unknown`,config_missing:!window.FrakSetup?.config})})}async function Xt(){if(!window.FrakSetup?.config)throw Error(`[Frak SDK] Configuration not found. Please ensure window.FrakSetup.config is set.`);let e=await gt({config:window.FrakSetup.config});if(!e)throw Error(`[Frak SDK] Failed to create client`);window.FrakSetup.client=e,qt(),Mt(e),Zt()}function Zt(){let e=new URL(window.location.href);if(e.searchParams.get(`frakAction`)!==`share`)return;let t=e.searchParams.get(`link`)??void 0,n=e.searchParams.get(`placement`)??void 0,r=Gt(e.searchParams.get(`products`));e.searchParams.delete(`frakAction`),e.searchParams.delete(`link`),e.searchParams.delete(`placement`),e.searchParams.delete(`products`),window.history.replaceState({},``,e.toString()),$(void 0,n,{link:t,products:r})}o.injectBase(`shared`,n),o.injectBase(`fouce`,`frak-button-share:not(:defined), frak-button-wallet:not(:defined), frak-open-in-app:not(:defined), frak-post-purchase:not(:defined), frak-banner:not(:defined) { display: none !important; }`),s(Yt);const Qt={"button-share":()=>import(`./ButtonShare.D9-F0jJJ.js`),"button-wallet":()=>import(`./ButtonWallet.B0buPR_z.js`),"open-in-app":()=>import(`./OpenInAppButton.Dgb-qhM8.js`),"post-purchase":()=>import(`./PostPurchase.BYxnAEyn.js`),banner:()=>import(`./Banner.CcOWT4lZ.js`)},$t=new MutationObserver(e=>{for(let{addedNodes:t}of e)for(let e of Array.from(t))e.nodeType===Node.ELEMENT_NODE&&en(e)});async function en(e){let t=e instanceof Element?e.tagName.toLowerCase():``,n=t?.startsWith(`frak-`),r=Array.from(e.querySelectorAll(`:not(:defined)`)).map(e=>e.tagName.toLowerCase()).filter(e=>e.startsWith(`frak-`));n&&!customElements.get(t)&&r.push(t);let i=[...new Set(r)];await Promise.allSettled(i.map(e=>tn(e)))}async function tn(e){if(customElements.get(e))return Promise.resolve();try{let t=e.replace(/^frak-/i,``);if(!(t in Qt))throw Error(`Component ${e} is not supported.`);await Qt[t]()}catch{}}en(document.body),$t.observe(document.documentElement,{subtree:!0,childList:!0});export{s as C,l as S,n as T,H as _,Nt as a,I as b,Ct as c,dt as d,mt as f,U as g,J as h,$ as i,bt as l,ct as m,Jt as n,Tt as o,ht as p,Wt as r,wt as s,Yt as t,Z as u,ut as v,o as w,c as x,N as y};