@frak-labs/components 1.0.12-beta.8ffb7167 → 1.0.12-beta.9905e8f6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdn/Banner.Dl3YwoEL.js +183 -0
- package/cdn/ButtonShare.B1CGO6_9.js +1 -0
- package/cdn/ButtonWallet.BJmwiurL.js +40 -0
- package/cdn/{GiftIcon.DT1i36Fm.js → GiftIcon.C2M59Q4m.js} +1 -1
- package/cdn/OpenInAppButton.D7NlWUqu.js +1 -0
- package/cdn/PostPurchase.CA3F9d3o.js +89 -0
- package/cdn/actions-CMPlZ7CH.DZFAhfKm.js +1 -0
- package/cdn/clientReady.CPe9C8dP.js +1 -0
- package/cdn/components.js +1 -1
- package/cdn/defaults.Cc2Npf8m.js +58 -0
- package/cdn/embeddedWallet.D3GODltA.js +1 -0
- package/cdn/loader.js +1 -154
- package/cdn/rewards.BHoSugMr.js +1 -0
- package/cdn/sharedBaseCss.css.BDzFcWnD.js +154 -0
- package/cdn/sharingPage.B8z2OScU.js +1 -0
- package/cdn/sharingPageProducts.Be0kIfZy.js +1 -0
- package/cdn/src-Bigq2qnT.CyWI_ZK9.js +1 -0
- package/cdn/styleManager.Cun1-fKi.js +1 -0
- package/cdn/useGlobalComponents.ChIY6Foy.js +1 -0
- package/cdn/useLightDomStyles.BHMFG8TC.js +1 -0
- package/cdn/useReward.Dn6zovBQ.js +1 -0
- package/dist/{GiftIcon-BEzYdiux.js → GiftIcon-BhL0bhVu.js} +10 -4
- package/dist/banner.d.ts +1 -16
- package/dist/banner.js +24 -8
- package/dist/buttonShare.d.ts +1 -10
- package/dist/buttonShare.js +6 -6
- package/dist/buttonWallet.d.ts +1 -7
- package/dist/buttonWallet.js +3 -3
- package/dist/i18n/defaults.d.ts +3 -2
- package/dist/openInApp.d.ts +1 -5
- package/dist/openInApp.js +2 -2
- package/dist/postPurchase.d.ts +1 -19
- package/dist/postPurchase.js +5 -5
- package/dist/{rewards-VoZGH2Ko.js → rewards-BtPHdGcI.js} +4 -3
- package/dist/{useGlobalComponents-CZ7Sh2tZ.js → useGlobalComponents-Cl7MBkeo.js} +1 -1
- package/dist/{useLightDomStyles-DphuQhvx.js → useLightDomStyles-CyWohXRl.js} +1 -1
- package/dist/{useReward-BGgymGoH.js → useReward-B-yZ7nhY.js} +1 -1
- package/package.json +7 -6
- package/cdn/Banner.CgCiMrqn.js +0 -167
- package/cdn/ButtonShare.DJqup6VY.js +0 -1
- package/cdn/ButtonWallet.BKuPBrKl.js +0 -40
- package/cdn/OpenInAppButton.D1UzTuHx.js +0 -1
- package/cdn/PostPurchase.CkqSCboo.js +0 -89
- package/cdn/defaults.kWEdCyGS.js +0 -58
- package/cdn/embeddedWallet.CDUxjdX2.js +0 -1
- package/cdn/rewards.CIu9qbmI.js +0 -1
- package/cdn/useGlobalComponents.BC6Jgzg5.js +0 -1
- package/cdn/useLightDomStyles.imPXuAtf.js +0 -1
- package/cdn/useReward.BAmvPaVu.js +0 -1
- /package/cdn/{replay-V6FXES7X.CNozpSRg.js → replay-V6FXES7X.CgBxdfNp.js} +0 -0
- /package/dist/{embeddedWallet-By3_p5Xc.js → embeddedWallet-CxgyuwtP.js} +0 -0
- /package/dist/{usePlacement-4PoDbn2X.js → usePlacement-BhNse5cN.js} +0 -0
package/cdn/loader.js
CHANGED
|
@@ -1,154 +1 @@
|
|
|
1
|
-
var
|
|
2
|
-
margin: 0;
|
|
3
|
-
padding: 0;
|
|
4
|
-
border: 0;
|
|
5
|
-
box-sizing: border-box;
|
|
6
|
-
font-size: 100%;
|
|
7
|
-
font: inherit;
|
|
8
|
-
vertical-align: baseline;
|
|
9
|
-
-webkit-tap-highlight-color: transparent;
|
|
10
|
-
}
|
|
11
|
-
.reset_focusRing__1831jhd1 {
|
|
12
|
-
outline: 2px solid transparent;
|
|
13
|
-
outline-offset: 2px;
|
|
14
|
-
}
|
|
15
|
-
.reset_focusRing__1831jhd1:focus-visible {
|
|
16
|
-
outline-color: currentColor;
|
|
17
|
-
}
|
|
18
|
-
.reset_fieldAppearance__1831jhd2 {
|
|
19
|
-
appearance: none;
|
|
20
|
-
background-color: transparent;
|
|
21
|
-
}
|
|
22
|
-
.reset_visuallyHidden__1831jhd3 {
|
|
23
|
-
position: absolute;
|
|
24
|
-
width: 1px;
|
|
25
|
-
height: 1px;
|
|
26
|
-
padding: 0;
|
|
27
|
-
margin: -1px;
|
|
28
|
-
overflow: hidden;
|
|
29
|
-
clip: rect(0, 0, 0, 0);
|
|
30
|
-
white-space: nowrap;
|
|
31
|
-
border-width: 0;
|
|
32
|
-
}
|
|
33
|
-
.reset_element_ul__1831jhd4 {
|
|
34
|
-
list-style: none;
|
|
35
|
-
}
|
|
36
|
-
.reset_element_ol__1831jhd5 {
|
|
37
|
-
list-style: none;
|
|
38
|
-
}
|
|
39
|
-
.reset_element_button__1831jhd6 {
|
|
40
|
-
cursor: pointer;
|
|
41
|
-
}
|
|
42
|
-
.reset_element_a__1831jhd7 {
|
|
43
|
-
text-decoration: none;
|
|
44
|
-
color: inherit;
|
|
45
|
-
}
|
|
46
|
-
.reset_element_table__1831jhdb {
|
|
47
|
-
border-collapse: collapse;
|
|
48
|
-
border-spacing: 0;
|
|
49
|
-
}
|
|
50
|
-
.reset_element_img__1831jhdc {
|
|
51
|
-
display: block;
|
|
52
|
-
max-width: 100%;
|
|
53
|
-
}:root {
|
|
54
|
-
--text-primary__pbq4ak0: #000000;
|
|
55
|
-
--text-secondary__pbq4ak1: #525252;
|
|
56
|
-
--text-tertiary__pbq4ak2: #a3a3a3;
|
|
57
|
-
--text-disabled__pbq4ak3: #a3a3a3;
|
|
58
|
-
--text-action__pbq4ak4: #0043ef;
|
|
59
|
-
--text-actionHover__pbq4ak5: #0036bf;
|
|
60
|
-
--text-onAction__pbq4ak6: #ffffff;
|
|
61
|
-
--text-error__pbq4ak7: #e31c31;
|
|
62
|
-
--text-success__pbq4ak8: #09be67;
|
|
63
|
-
--text-warning__pbq4ak9: #ec7e00;
|
|
64
|
-
--surface-primary__pbq4aka: #0043ef;
|
|
65
|
-
--surface-secondary__pbq4akb: #f2f6fe;
|
|
66
|
-
--surface-background__pbq4akc: #ffffff;
|
|
67
|
-
--surface-background2__pbq4akd: #f9fafb;
|
|
68
|
-
--surface-elevated__pbq4ake: #ffffff;
|
|
69
|
-
--surface-muted__pbq4akf: #f7f7f7;
|
|
70
|
-
--surface-tertiary__pbq4akg: #f7f7f7;
|
|
71
|
-
--surface-overlay__pbq4akh: #000000b2;
|
|
72
|
-
--surface-disabled__pbq4aki: #e2e2e2;
|
|
73
|
-
--surface-primaryHover__pbq4akj: #0036bf;
|
|
74
|
-
--surface-primaryPressed__pbq4akk: #00288f;
|
|
75
|
-
--surface-secondaryHover__pbq4akl: #e5ecfd;
|
|
76
|
-
--surface-secondaryPressed__pbq4akm: #ccd9fc;
|
|
77
|
-
--surface-error__pbq4akn: #fce8ea;
|
|
78
|
-
--surface-success__pbq4ako: #f3fcf7;
|
|
79
|
-
--surface-warning__pbq4akp: #fef9f2;
|
|
80
|
-
--border-subtle__pbq4akq: #f5f5f5;
|
|
81
|
-
--border-focus__pbq4akr: #a3a3a3;
|
|
82
|
-
--border-error__pbq4aks: #e31c31;
|
|
83
|
-
--border-success__pbq4akt: #09be67;
|
|
84
|
-
--border-warning__pbq4aku: #ec7e00;
|
|
85
|
-
--border-default__pbq4akv: #e2e2e2;
|
|
86
|
-
--icon-primary__pbq4akw: #000000;
|
|
87
|
-
--icon-secondary__pbq4akx: #525252;
|
|
88
|
-
--icon-tertiary__pbq4aky: #a3a3a3;
|
|
89
|
-
--icon-disabled__pbq4akz: #a3a3a3;
|
|
90
|
-
--icon-action__pbq4ak10: #0043ef;
|
|
91
|
-
--icon-actionHover__pbq4ak11: #0036bf;
|
|
92
|
-
--icon-onAction__pbq4ak12: #ffffff;
|
|
93
|
-
--icon-error__pbq4ak13: #e31c31;
|
|
94
|
-
--icon-success__pbq4ak14: #09be67;
|
|
95
|
-
--icon-warning__pbq4ak15: #ec7e00;
|
|
96
|
-
}
|
|
97
|
-
[data-theme='dark'] {
|
|
98
|
-
--text-primary__pbq4ak0: #ffffff;
|
|
99
|
-
--text-secondary__pbq4ak1: #f7f7f7;
|
|
100
|
-
--text-tertiary__pbq4ak2: #f5f5f5;
|
|
101
|
-
--text-disabled__pbq4ak3: #a3a3a3;
|
|
102
|
-
--text-action__pbq4ak4: #668ef5;
|
|
103
|
-
--text-actionHover__pbq4ak5: #0036bf;
|
|
104
|
-
--text-onAction__pbq4ak6: #ffffff;
|
|
105
|
-
--text-error__pbq4ak7: #e9495a;
|
|
106
|
-
--text-success__pbq4ak8: #09be67;
|
|
107
|
-
--text-warning__pbq4ak9: #ec7e00;
|
|
108
|
-
--surface-primary__pbq4aka: #0043ef;
|
|
109
|
-
--surface-secondary__pbq4akb: #00288f;
|
|
110
|
-
--surface-background__pbq4akc: #000000;
|
|
111
|
-
--surface-background2__pbq4akd: #000000;
|
|
112
|
-
--surface-elevated__pbq4ake: #262626;
|
|
113
|
-
--surface-muted__pbq4akf: #525252;
|
|
114
|
-
--surface-tertiary__pbq4akg: #737373;
|
|
115
|
-
--surface-overlay__pbq4akh: #000000b2;
|
|
116
|
-
--surface-disabled__pbq4aki: #e2e2e2;
|
|
117
|
-
--surface-primaryHover__pbq4akj: #0036bf;
|
|
118
|
-
--surface-primaryPressed__pbq4akk: #00288f;
|
|
119
|
-
--surface-secondaryHover__pbq4akl: #e5ecfd;
|
|
120
|
-
--surface-secondaryPressed__pbq4akm: #ccd9fc;
|
|
121
|
-
--surface-error__pbq4akn: #b61627;
|
|
122
|
-
--surface-success__pbq4ako: #05723e;
|
|
123
|
-
--surface-warning__pbq4akp: #8e4c00;
|
|
124
|
-
--border-subtle__pbq4akq: #737373;
|
|
125
|
-
--border-focus__pbq4akr: #a3a3a3;
|
|
126
|
-
--border-error__pbq4aks: #e31c31;
|
|
127
|
-
--border-success__pbq4akt: #09be67;
|
|
128
|
-
--border-warning__pbq4aku: #ec7e00;
|
|
129
|
-
--border-default__pbq4akv: #525252;
|
|
130
|
-
--icon-primary__pbq4akw: #ffffff;
|
|
131
|
-
--icon-secondary__pbq4akx: #f7f7f7;
|
|
132
|
-
--icon-tertiary__pbq4aky: #f7f7f7;
|
|
133
|
-
--icon-disabled__pbq4akz: #a3a3a3;
|
|
134
|
-
--icon-action__pbq4ak10: #0043ef;
|
|
135
|
-
--icon-actionHover__pbq4ak11: #0036bf;
|
|
136
|
-
--icon-onAction__pbq4ak12: #ffffff;
|
|
137
|
-
--icon-error__pbq4ak13: #e31c31;
|
|
138
|
-
--icon-success__pbq4ak14: #09be67;
|
|
139
|
-
--icon-warning__pbq4ak15: #ec7e00;
|
|
140
|
-
}.sharedBaseCss_buttonReset__7cswil0 {
|
|
141
|
-
margin: 0;
|
|
142
|
-
border: 0;
|
|
143
|
-
appearance: none;
|
|
144
|
-
background-color: transparent;
|
|
145
|
-
box-sizing: border-box;
|
|
146
|
-
font-family: inherit;
|
|
147
|
-
-webkit-tap-highlight-color: transparent;
|
|
148
|
-
cursor: pointer;
|
|
149
|
-
outline: 2px solid transparent;
|
|
150
|
-
outline-offset: 2px;
|
|
151
|
-
}
|
|
152
|
-
.sharedBaseCss_buttonReset__7cswil0:focus-visible {
|
|
153
|
-
outline-color: currentColor;
|
|
154
|
-
}`;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(e){console.error(`[RPC Client] Lifecycle handler error:`,e)}}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{let t=new URL(e.origin).origin.toLowerCase(),n=new URL(r).origin.toLowerCase();if(t!==n){console.log(`Not expected origin`,t,n);return}}catch(e){console.error(`[RPC Client] Invalid origin`,e);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(e){console.error(`[RPC Client] Middleware error on response:`,e);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 console.error(`[RPC Client] Middleware error on request:`,e),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?(console.error(`[RPC Client] Listener error:`,e.error),o.delete(n)):t(e.result)}),h({id:n,topic:e.method,data:{method:e.method,params:e.params}}).catch(e=>{console.error(`[RPC Client] Failed to send listener request:`,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 console.warn(`[Frak SDK] No Window / localStorage available to save the clientId`),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}};let v;function y(){return v||={promiseCache:new _(1024),responseCache:new _(1024),failureCache:new _(1024)},v}async function b(e,{cacheKey:t,cacheTime:n=3e4}){let{promiseCache:r,responseCache:i,failureCache:a}=y();if(n>0){let e=i.get(t);if(e&&Date.now()-e.created<n)return e.data}let o=a.get(t);if(o&&Date.now()-o<1e3)throw Error(`Cache: ${t} recently failed, backing off`);let s=r.get(t);s||(s=e(),r.set(t,s));try{let e=await s;return i.set(t,{data:e,created:Date.now()}),a.delete(t),e}catch(e){throw a.set(t,Date.now()),e}finally{r.delete(t)}}function x(){v&&(v.promiseCache.clear(),v.responseCache.clear(),v.failureCache.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 S(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 C=`__frakSdkConfig`,re=`frak-config-cache`,w=`frak-merchant-id`,T={key:re},E=typeof window<`u`;function D(){return{isResolved:!1,merchantId:``}}let O=null;function ie(){if(!E)return null;try{let e=localStorage.getItem(T.key);if(!e)return null;let t=JSON.parse(e);return t.config?.isResolved?(O=t,t):null}catch{return null}}function ae(){return(O??ie())?.config}function oe(){let e=O??ie();return e?Date.now()-e.timestamp<3e4:!1}function se(e){if(!(!E||!e.isResolved))try{let t={config:e,timestamp:Date.now()};localStorage.setItem(T.key,JSON.stringify(t)),O=t}catch{}}function ce(){if(E){O=null;try{localStorage.removeItem(T.key)}catch{}}}function le(){E&&(window[C]||(window[C]=ae()??D()))}function k(){return E?(le(),window[C]??D()):D()}function ue(e){E&&window.dispatchEvent(new CustomEvent(`frak:config`,{detail:e}))}function de(e){return e??(E?window.location.hostname:``)}async function fe(e,t,n){try{let r=S(t),i=n?`&lang=${encodeURIComponent(n)}`:``,a=await fetch(`${r}/user/merchant/resolve?domain=${encodeURIComponent(e)}${i}`);if(!a.ok){console.warn(`[Frak SDK] Merchant lookup failed for domain ${e}: ${a.status}`);return}let o=await a.json();if(E)try{sessionStorage.setItem(w,o.merchantId)}catch{}return o}catch(e){console.warn(`[Frak SDK] Failed to fetch merchant config:`,e);return}}const A={getConfig:k,get isResolved(){return k().isResolved},get isCacheFresh(){return oe()},setCacheScope(e,t){T.key=`${re}:${`${e}:${t??``}`}`,O=null},setConfig(e){if(E&&(window[C]=e),se(e),ue(e),E&&e.merchantId)try{sessionStorage.setItem(w,e.merchantId)}catch{}},reset(){let e=ae()??D();E&&(window[C]=e),ue(e)},clearCache(){if(ce(),x(),E)try{sessionStorage.removeItem(w)}catch{}},resolve(e,t,n){let r=de(e);return r?b(async()=>{let e=await fe(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=k();if(e.isResolved&&e.merchantId)return e.merchantId;if(E)try{return sessionStorage.getItem(w)??void 0}catch{}},async resolveMerchantId(e,t){return A.getMerchantId()||(await A.resolve(e,t))?.merchantId}};function j(e){return btoa(Array.from(e,e=>String.fromCharCode(e)).join(``)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function M(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 pe(e){return j(f(e))}function me(e,t,n,r,i,a){let o=pe(he({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 he(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 ge=`menubar=no,status=no,scrollbars=no,fullscreen=no,width=500, height=800`,_e=`frak-sso`;async function ve(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??me(i??`https://wallet.frak.id`,a,await A.resolveMerchantId()??``,n.name,g(),r?.css),s=window.open(o,_e,ge);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 N(e,t,n){if(!e){console.debug(`[Frak] No client provided, skipping event tracking`);return}try{e.openPanel?.track(t,n)}catch(e){console.debug(`[Frak] Failed to track event:`,t,e)}}function P(e,t){let n=e.get(t);if(n!==null)return n;let r=t.toLowerCase();for(let[t,n]of e)if(t.toLowerCase()===r)return n;return null}function F(e,t){let n=t.toLowerCase(),r=[...e.keys()].filter(e=>e.toLowerCase()===n);for(let t of r)e.delete(t)}const ye=/^0x[a-fA-F0-9]{40}$/;function I(e){return typeof e==`string`&&ye.test(e)}function L(e,t){return e.toLowerCase()===t.toLowerCase()}function be(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 xe=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function Se(e){let t=`0x`;for(let n=0;n<20;n++)t+=xe[e[n]];return t}function Ce(e){return`r`in e&&!(`v`in e)}function R(e){return`v`in e&&e.v===2}const we=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Te(e){return typeof e==`string`&&we.test(e)}function Ee(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 De(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 Oe(e){if(!Te(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`&&I(e.w);if(!t&&!n||t&&!Te(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(Ee(e.m),a),a+=16,i.setUint32(a,e.t,!1),a+=4,t&&(r.set(Ee(e.c),a),a+=16),n&&(r.set(be(e.w),a),a+=20),r}function ke(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=De(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=De(e.subarray(a,a+16)),a+=16),r){let t=Se(e.subarray(a,a+20));if(!I(t))return null;c.w=t,a+=20}return c}const z=`fCtx`;function Ae(e){if(e)try{if(R(e)){let t=Oe(e);return t?j(t):void 0}return j(be(e.r))}catch(t){console.error(`Error compressing Frak context`,{e:t,context:e})}}function je(e){if(!(!e||e.length===0))try{let t=M(e);if(t.length!==20)return ke(t)||void 0;let n=Se(t);if(I(n))return{r:n}}catch(t){console.error(`Error decompressing Frak context`,{e:t,context:e})}}function Me({url:e}){if(!e)return null;let t=P(new URL(e).searchParams,z);return t?je(t):null}function Ne(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 Pe(e,t){let n=Ne(t??{});for(let[t,r]of Object.entries(n))r===void 0||r===``||e.searchParams.has(t)||e.searchParams.set(t,r)}function Fe({url:e,context:t,attribution:n}){if(!e)return null;let r=Ae(t);if(!r)return null;let i=new URL(e);return F(i.searchParams,z),i.searchParams.set(z,r),Pe(i,n),i.toString()}function Ie(e){let t=new URL(e);return F(t.searchParams,z),t.toString()}function Le({url:e,context:t}){if(!window.location?.href||typeof window>`u`){console.error(`No window found, can't update context`);return}let n=e??window.location.href,r;r=t===null?Ie(n):Fe({url:n,context:t}),r&&window.history.replaceState(null,``,r.toString())}const B={compress:Ae,decompress:je,parse:Me,update:Fe,remove:Ie,replaceUrl:Le},V={eur:`fr-FR`,usd:`en-US`,gbp:`en-GB`};function H(e){return e&&e in V?e:`eur`}function Re(e){return e?V[e]??V.eur:V.eur}function ze(e,t){let n=Re(t),r=H(t);return e.toLocaleString(n,{style:`currency`,currency:r,minimumFractionDigits:0,maximumFractionDigits:2})}function Be(e){return e?`${e}Amount`:`eurAmount`}var Ve=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(i){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 console.error(`Max retries reached:`,i),null}}async fetch(e,t,n={}){let r=`${this.baseUrl}${e}`;return this.post(r,t,n,0)}},He=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 Ve({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&&console.log(`[OpenPanel.dev]`,...e)}},Ue=typeof document<`u`?document.currentScript:null;function We(e){return e.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace(`-`,``).replace(`_`,``))}var Ge=class extends He{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=Ue,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=()=>{console.warn(`[OpenPanel] Failed to load replay script from`,t),e(null)},document.head.appendChild(n)})}return await import(`./replay-V6FXES7X.CNozpSRg.js`)}catch(e){return console.warn(`[OpenPanel] Failed to load replay module`,e),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[We(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 U=`nexus-wallet-backup`,W=`frakwallet://`;function Ke(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}}),console.log(`[SSO URL Listener] Forwarded compressed SSO data to iframe`)}).catch(e=>{console.error(`[SSO URL Listener] Failed to forward SSO data:`,e)}),n.searchParams.delete(`sso`),window.history.replaceState({},``,n.toString()),console.log(`[SSO URL Listener] SSO parameter detected and URL cleaned`))}function qe(){let e=navigator.userAgent;return/Android/i.test(e)&&/Chrome\/\d+/i.test(e)}const Je=W.replace(`://`,``);function Ye(e){return`intent://${e.slice(13)}#Intent;scheme=${Je};end`}function G(e,t){let n=t?.timeout??2500,r=!1,i=()=>{document.hidden&&(r=!0)};document.addEventListener(`visibilitychange`,i);let a=qe()&&Xe(e)?Ye(e):e;window.location.href=a,setTimeout(()=>{document.removeEventListener(`visibilitychange`,i),r||t?.onFallback?.()},n)}function Xe(e){return e.startsWith(W)}function Ze(){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=Ze();function Qe(){return typeof navigator>`u`?!1:K?!0:/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function $e(){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 q=$e();function et(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)}`}const J={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 tt({walletBaseUrl:e,config:t}){let n=document.querySelector(`#frak-wallet`);n&&n.remove();let r=document.createElement(`iframe`);r.id=J.id,r.name=J.name,r.allow=J.allow,r.style.zIndex=J.style.zIndex.toString(),rt({iframe:r,isVisible:!1});let i=t?.walletUrl??e??`https://wallet.frak.id`,a=g();return at(i),at(S(i)),r.src=nt({walletUrl:i,clientId:a,preload:t?.preload}),new Promise(e=>{r.addEventListener(`load`,()=>e(r)),document.body.appendChild(r)})}function nt({walletUrl:e,clientId:t,preload:n}){let r=`${e}/listener?clientId=${encodeURIComponent(t)}`;return!n||n.length===0?r:`${r}#preload=${n.join(`,`)}`}function rt({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 it(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(t){return console.error(`[findIframeInOpener] Error finding iframe with pathname ${e}:`,t),null}}function at(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 ot=K&&q;function st(e){e?localStorage.setItem(U,e):localStorage.removeItem(U)}function Y(e,t){try{let n=new URL(e);if(!n.searchParams.has(`u`))return e;let r=ut(window.location.href,t);return n.searchParams.delete(`u`),n.searchParams.append(`u`,r),n.toString()}catch{return e}}function ct(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 lt(e){return e.includes(`/common/social`)}function ut(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 dt(e,t,n,r,i){if(i){let e=Y(t,r);window.open(e,`_blank`);return}if(Xe(t)){let i=Y(t,r);G(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(ot&<(t))ct(r);else{let e=Y(t,r);window.location.href=e}}function ft({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`:st(a.backup);break;case`remove-backup`:localStorage.removeItem(U);break;case`show`:case`hide`:rt({iframe:e,isVisible:i===`show`});break;case`redirect`:dt(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}function pt({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:``);A.setCacheScope(a,i),A.reset();let o=A.isCacheFresh?void 0:A.resolve(e.domain,e.walletUrl,i),s=ft({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=mt(m,s),_=async()=>{h(),m.cleanup(),t.remove(),x(),A.clearCache(),A.reset()},v;{console.log(`[Frak SDK] Initializing OpenPanel`),v=new Ge({apiUrl:`https://op-api.gcp.frak.id`,clientId:`6eacc8d7-49ac-4936-95e9-81ef29449570`,trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:e,payload:t})=>(e!==`track`||!t?.properties||`sdk_version`in t.properties||(t.properties={...t.properties,sdk_version:`1.2.0`,user_anonymous_client_id:g()}),!0)}),v.setGlobalProperties({sdk_version:`1.2.0`,user_anonymous_client_id:g()}),v.init(),v.track(`sdk_initialized`,{sdk_version:`1.2.0`});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=ht({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 mt(e,t){let n,r,i=()=>e.sendLifecycle({clientLifecycle:`heartbeat`});async function a(){i(),n=setInterval(i,250),r=setTimeout(()=>{o(),console.log(`Heartbeat timeout: connection failed`)},3e4),await t.isConnected,o()}function o(){n&&clearInterval(n),r&&clearTimeout(r)}return a(),o}async function ht({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i,openPanel:a}){await n.isConnected,Ke(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;A.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,merchant_id: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}}})};A.isResolved&&(u(A.getConfig()),i.resolve()),r&&(c(await r),u(A.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(U);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 gt(e){return p(M(e))}async function _t({config:e}){let t=vt(e),n=await tt({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=pt({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function vt(e){let t=H(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}function yt({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 bt=t({DEEP_LINK_SCHEME:()=>W,FrakContextManager:()=>B,areAddressesEqual:()=>L,base64urlDecode:()=>M,base64urlEncode:()=>j,baseIframeProps:()=>J,clearAllCache:()=>x,compressJsonToB64:()=>pe,createIFrameFrakClient:()=>pt,decompressJsonFromB64:()=>gt,deleteQueryParamCaseInsensitive:()=>F,findIframeInOpener:()=>it,formatAmount:()=>ze,generateSsoUrl:()=>me,getBackendUrl:()=>S,getClientId:()=>g,getCurrencyAmountKey:()=>Be,getQueryParamCaseInsensitive:()=>P,getSupportedCurrency:()=>H,isIOS:()=>K,isInAppBrowser:()=>q,isMobile:()=>Qe,mergeAttribution:()=>yt,redirectToExternalBrowser:()=>et,sdkConfigStore:()=>A,setupClient:()=>_t,ssoPopupFeatures:()=>ge,ssoPopupName:()=>_e,trackEvent:()=>N,triggerDeepLinkWithFallback:()=>G,withCache:()=>b});async function xt(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function X(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 St(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function Ct(e){if(typeof window>`u`)return;let t=g();if(!t)return;let n=await A.resolveMerchantId();if(!n)return;let r=`frak-identity-ensured-${n}`;if(!window.sessionStorage.getItem(r))try{let i=S();(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 wt(e,t){return b(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function Tt(e,t){return b(()=>e.request({method:`frak_getMergeToken`}),{cacheKey:`frak_getMergeToken`,cacheTime:t?.cacheTime})}async function Et(e,t){return b(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function Dt(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function Z(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t,{clientId:g()}]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}function Ot(e,t,n){return R(t)?(N(e,`user_referred_started`,{referrer_client_id:t.c,referrer_wallet:t.w,wallet_status:n?.key}),Z(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referrerWallet:t.w,referralTimestamp:t.t}),!0):Ce(t)?(N(e,`user_referred_started`,{referrer:t.r,wallet_status:n?.key}),Z(e,{type:`arrival`,referrerWallet:t.r}),!0):!1}function kt(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 At(e,t){return R(e)?e.w&&t?.wallet?L(e.w,t.wallet):e.c?g()===e.c:!1:Ce(e)&&t?.wallet?L(e.r,t.wallet):!1}function jt(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;if(At(n,t))return`self-referral`;if(!Ot(e,n,t))return`no-referrer`;let i=R(n)?n.m:r?.merchantId,a=r?.alwaysAppendUrl&&i?kt(i,t?.wallet):null;return B.replaceUrl({url:window.location?.href,context:a}),N(e,`user_referred_completed`,{status:`success`}),`success`}async function Mt(e,{options:t}={}){let n=B.parse({url:window.location.href}),r=await Ft(e);try{return jt(e,{walletStatus:r,frakContext:n,options:t})}catch(e){console.warn(`Error processing referral`,{error:e})}}const Q=`frak:referral-success`;async function Nt(e){try{await Mt(e)===`success`&&window.dispatchEvent(new Event(Q))}catch(e){console.warn(`[Frak] Referral setup failed`,e)}}async function Pt(e){if(typeof window>`u`){console.warn(`[Frak] No window found, can't track purchase`);return}let t=window.sessionStorage.getItem(`frak-wallet-interaction-token`),n=g();if(!t&&!n){console.warn(`[Frak] No identity found, skipping purchase check`);return}let r=e.merchantId??await A.resolveMerchantId();if(!r){console.warn(`[Frak] No merchant id found, skipping purchase check`);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=S();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 Ft(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(It(e,t),t));let n=new u,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{It(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function It(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),Ct(t.interactionToken)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function Lt(e,{metadata:t,login:n}){return $(e,{steps:{login:n??{}},metadata:t})}function $(e,t){function n(n){return $(e,{...t,steps:{...t.steps,sendTransaction:n}})}function r(n){return $(e,{...t,steps:{...t.steps,final:{...n,action:{key:`reward`}}}})}function i(n,r){return $(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 X(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Rt(e,{tx:t,metadata:n}){return(await X(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}function zt(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 Bt(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 X(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??zt(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}var Vt=t({REFERRAL_SUCCESS_EVENT:()=>Q,displayEmbeddedWallet:()=>xt,displayModal:()=>X,displaySharingPage:()=>St,ensureIdentity:()=>Ct,getMerchantInformation:()=>wt,getMergeToken:()=>Tt,getUserReferralStatus:()=>Et,modalBuilder:()=>Lt,openSso:()=>ve,prepareSso:()=>Dt,processReferral:()=>jt,referralInteraction:()=>Mt,sendInteraction:()=>Z,sendTransaction:()=>Rt,setupReferral:()=>Nt,siweAuthenticate:()=>Bt,trackPurchaseStatus:()=>Pt,watchWalletStatus:()=>Ft});async function Ht(e,t,n){if(!window.FrakSetup?.client){console.error(`Frak client not found`);return}await St(window.FrakSetup.client,{...n?.link&&{link:n.link},...n?.products?.length&&{products:n.products},...e&&{metadata:{targetInteraction:e}}},t)}const Ut=[`frak-button-share`,`frak-button-wallet`,`frak-open-in-app`,`frak-post-purchase`,`frak-banner`].join(`,`);function Wt(){return typeof document>`u`||document.querySelector(Ut)===null?[]:[`sharing`]}function Gt(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function Kt(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 qt(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`&&Gt(t.imageUrl)&&(r.imageUrl=t.imageUrl),typeof t.link==`string`&&Gt(t.link)&&(r.link=t.link),typeof t.utmContent==`string`&&t.utmContent!==``&&(r.utmContent=t.utmContent),r}function Jt(e){let t=Kt(e);if(!t)return;let n=[];for(let e of t){let t=qt(e);t&&n.push(t)}return n.length>0?n:void 0}function Yt(e){if(!e)return;let t;try{t=gt(e)}catch{return}if(t!==null)return Jt(t)}const Xt=`frak:client`;function Zt(){let e=new CustomEvent(Xt);window.dispatchEvent(e)}function Qt(e,t){if(window.FrakSetup?.client&&e===`add`){t();return}(e===`add`?window.addEventListener:window.removeEventListener)(Xt,t,!1)}function $t(){return window.FrakSetup.core={...bt,...Vt},window.FrakSetup?.client?Promise.resolve():b(()=>en(),{cacheKey:`frak-sdk-init`,cacheTime:1/0}).catch(e=>{N(window.FrakSetup?.client,`sdk_init_failed`,{reason:e instanceof Error?e.message:typeof e==`string`?e:`unknown`,config_missing:!window.FrakSetup?.config})})}async function en(){if(!window.FrakSetup?.config)throw Error(`[Frak SDK] Configuration not found. Please ensure window.FrakSetup.config is set.`);console.log(`[Frak SDK] Starting initialization`);let e=await _t({config:tn(window.FrakSetup.config)});if(!e)throw Error(`[Frak SDK] Failed to create client`);window.FrakSetup.client=e,console.log(`[Frak SDK] Client initialized successfully`),Zt(),Nt(e),nn()}function tn(e){return e.preload===void 0?{...e,preload:Wt()}:e}function nn(){let e=new URL(window.location.href);if(P(e.searchParams,`frakAction`)?.toLowerCase()!==`share`)return;console.log(`[Frak SDK] Auto open share via query param`);let t=P(e.searchParams,`link`)??void 0,n=P(e.searchParams,`placement`)??void 0,r=Yt(P(e.searchParams,`products`));F(e.searchParams,`frakAction`),F(e.searchParams,`link`),F(e.searchParams,`placement`),F(e.searchParams,`products`),window.history.replaceState({},``,e.toString()),Ht(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($t);const rn={"button-share":()=>import(`./ButtonShare.DJqup6VY.js`),"button-wallet":()=>import(`./ButtonWallet.BKuPBrKl.js`),"open-in-app":()=>import(`./OpenInAppButton.D1UzTuHx.js`),"post-purchase":()=>import(`./PostPurchase.CkqSCboo.js`),banner:()=>import(`./Banner.CgCiMrqn.js`)},an=new MutationObserver(e=>{for(let{addedNodes:t}of e)for(let e of Array.from(t))e.nodeType===Node.ELEMENT_NODE&&on(e)});async function on(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=>sn(e)))}async function sn(e){if(customElements.get(e))return Promise.resolve();try{let t=e.replace(/^frak-/i,``);if(!(t in rn))throw Error(`Component ${e} is not supported.`);await rn[t]()}catch(e){console.error(e)}}on(document.body),an.observe(document.documentElement,{subtree:!0,childList:!0});export{s as C,l as S,n as T,ze as _,Pt as a,N as b,wt as c,Qe as d,et as f,Be as g,q as h,Ht as i,xt as l,G as m,Qt as n,Et as o,W as p,Jt as r,Tt as s,$t as t,Q as u,H as v,o as w,c as x,A as y};
|
|
1
|
+
import{t as e}from"./sharedBaseCss.css.BDzFcWnD.js";import{t}from"./styleManager.Cun1-fKi.js";import{C as n,S as r,_ as i,a,b as ee,c as o,d as s,f as c,i as l,l as u,m as te,o as ne,p as re,r as ie,s as d,t as f,u as p,v as m,w as h,x as g,y as _}from"./clientReady.CPe9C8dP.js";import{a as v,c as y,d as b,f as x,i as S,l as C,n as w,o as T,r as E,s as D,t as O,u as k}from"./src-Bigq2qnT.CyWI_ZK9.js";import{_ as A,a as j,c as M,d as N,f as P,g as ae,h as F,i as I,l as L,m as R,n as z,o as B,p as V,r as H,s as U,t as W,u as G,v as K}from"./actions-CMPlZ7CH.DZFAhfKm.js";import{t as q}from"./sharingPage.B8z2OScU.js";import{t as J}from"./sharingPageProducts.Be0kIfZy.js";var Y=Object.defineProperty,X=(e,t)=>{let n={};for(var r in e)Y(n,r,{get:e[r],enumerable:!0});return t||Y(n,Symbol.toStringTag,{value:`Module`}),n};function oe(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}var se=X({DEEP_LINK_SCHEME:()=>C,FrakContextManager:()=>m,areAddressesEqual:()=>ee,base64urlDecode:()=>r,base64urlEncode:()=>re,baseIframeProps:()=>E,clearAllCache:()=>i,compressJsonToB64:()=>ne,createIFrameFrakClient:()=>w,decompressJsonFromB64:()=>D,deleteQueryParamCaseInsensitive:()=>p,findIframeInOpener:()=>O,formatAmount:()=>l,generateSsoUrl:()=>g,getBackendUrl:()=>_,getClientId:()=>n,getCurrencyAmountKey:()=>ie,getQueryParamCaseInsensitive:()=>u,getSupportedCurrency:()=>a,isIOS:()=>x,isInAppBrowser:()=>b,isMobile:()=>v,mergeAttribution:()=>S,redirectToExternalBrowser:()=>T,sdkConfigStore:()=>d,setupClient:()=>y,ssoPopupFeatures:()=>s,ssoPopupName:()=>c,trackEvent:()=>o,triggerDeepLinkWithFallback:()=>k,withCache:()=>h}),ce=X({REFERRAL_SUCCESS_EVENT:()=>K,displayEmbeddedWallet:()=>ae,displayModal:()=>M,displaySharingPage:()=>L,ensureIdentity:()=>F,getMerchantInformation:()=>R,getMergeToken:()=>N,getUserReferralStatus:()=>G,modalBuilder:()=>V,openSso:()=>te,prepareSso:()=>U,processReferral:()=>j,referralInteraction:()=>W,sendInteraction:()=>A,sendTransaction:()=>P,setupReferral:()=>B,siweAuthenticate:()=>I,trackPurchaseStatus:()=>H,watchWalletStatus:()=>z});const le=[`frak-button-share`,`frak-button-wallet`,`frak-open-in-app`,`frak-post-purchase`,`frak-banner`].join(`,`);function ue(){return typeof document>`u`||document.querySelector(le)===null?[]:[`sharing`]}function de(){return window.FrakSetup.core={...se,...ce},window.FrakSetup?.client?Promise.resolve():h(()=>Z(),{cacheKey:`frak-sdk-init`,cacheTime:1/0}).catch(e=>{o(window.FrakSetup?.client,`sdk_init_failed`,{reason:e instanceof Error?e.message:typeof e==`string`?e:`unknown`,config_missing:!window.FrakSetup?.config})})}async function Z(){if(!window.FrakSetup?.config)throw Error(`[Frak SDK] Configuration not found. Please ensure window.FrakSetup.config is set.`);console.log(`[Frak SDK] Starting initialization`);let e=await y({config:fe(window.FrakSetup.config)});if(!e)throw Error(`[Frak SDK] Failed to create client`);window.FrakSetup.client=e,console.log(`[Frak SDK] Client initialized successfully`),f(),B(e),pe()}function fe(e){return e.preload===void 0?{...e,preload:ue()}:e}function pe(){let e=new URL(window.location.href);if(u(e.searchParams,`frakAction`)?.toLowerCase()!==`share`)return;console.log(`[Frak SDK] Auto open share via query param`);let t=u(e.searchParams,`link`)??void 0,n=u(e.searchParams,`placement`)??void 0,r=J(u(e.searchParams,`products`));p(e.searchParams,`frakAction`),p(e.searchParams,`link`),p(e.searchParams,`placement`),p(e.searchParams,`products`),window.history.replaceState({},``,e.toString()),q(void 0,n,{link:t,products:r})}t.injectBase(`shared`,e),t.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; }`),oe(de);const Q={"button-share":()=>import(`./ButtonShare.B1CGO6_9.js`),"button-wallet":()=>import(`./ButtonWallet.BJmwiurL.js`),"open-in-app":()=>import(`./OpenInAppButton.D7NlWUqu.js`),"post-purchase":()=>import(`./PostPurchase.CA3F9d3o.js`),banner:()=>import(`./Banner.Dl3YwoEL.js`)},me=new MutationObserver(e=>{for(let{addedNodes:t}of e)for(let e of Array.from(t))e.nodeType===Node.ELEMENT_NODE&&$(e)});async function $(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=>he(e)))}async function he(e){if(customElements.get(e))return Promise.resolve();try{let t=e.replace(/^frak-/i,``);if(!(t in Q))throw Error(`Component ${e} is not supported.`);await Q[t]()}catch(e){console.error(e)}}$(document.body),me.observe(document.documentElement,{subtree:!0,childList:!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,i as t,r as n}from"./clientReady.CPe9C8dP.js";function r(e){return Array.isArray(e)?e:e.conditions}function i(e){if(typeof e==`number`)return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:void 0}}function a(e,t,n){let o=[];for(let s of r(e)){if(`logic`in s){o.push(...a(s,t,n));continue}if(s.field===t&&n.has(s.operator)){let e=i(s.value);e!=null&&o.push(e)}}return o}const o=new Set([`gt`,`gte`,`between`]),s=new Set([`gt`,`gte`]);function c(e){let t=a(e,`purchase.amount`,o);return t.length>0?Math.min(...t):void 0}function l(e){let t=a(e,`time.timestamp`,s);if(t.length!==0)return new Date(Math.min(...t)*1e3)}function u(e,t){switch(e.payoutType){case`fixed`:return e.amount[t];case`percentage`:return e.maxAmount?.[t]??0;case`tiered`:return e.tiers.reduce((e,n)=>`amount`in n?Math.max(e,n.amount[t]):e,0)}}function d(e){return e.payoutType===`percentage`?e.percent:e.payoutType===`tiered`?e.tiers.reduce((e,t)=>`percent`in t?Math.max(e,t.percent):e,0):0}function f(e,t){let n=u(e,t);return n>0?n:d(e)*1e-6}function p(r,i){let a=e(i),o=n(a);switch(r.payoutType){case`fixed`:return t(Math.round(r.amount[o]),a);case`percentage`:return`${r.percent} %`;case`tiered`:{let e=u(r,o);if(e>0)return t(Math.round(e),a);let n=d(r);return n>0?`${n} %`:t(0,a)}}}function m(t,r){if(t&&!(f(t,n(e(r)))<=0))return p(t,r)}function h(e,t){return t?e.replaceAll(`{REWARD}`,t):e.replaceAll(`{REWARD}`,``)}function g(e,t){return e.expiresAt!=null&&new Date(e.expiresAt).getTime()<=t}function _(e,t){let n=l(e.conditions);return n==null||n.getTime()<=t}function v(e,t){return t===`referee`?e.referee:e.referrer}function y(e,t,n){let r=v(e,n);return r?f(r,t):0}function b(t,r={}){let i=(r.now??new Date).getTime(),a=r.audience??`referrer`,o=n(e(r.currency)),s=(r.targetInteraction?t.filter(e=>e.interactionTypeKey===r.targetInteraction):t).filter(e=>!g(e,i)),c=s.filter(e=>_(e,i));if(c.length>0)return{campaign:c.reduce((e,t)=>y(t,o,a)>y(e,o,a)?t:e),status:`live`};let u=s.map(e=>({campaign:e,startsAt:l(e.conditions)})).filter(e=>e.startsAt!=null);if(u.length===0)return;let d=u.reduce((e,t)=>t.startsAt.getTime()<e.startsAt.getTime()?t:e);return{campaign:d.campaign,status:`upcoming`,startsAt:d.startsAt}}function x(e,n={}){let r=b(e,n);if(!r)return;let i=v(r.campaign,n.audience??`referrer`);if(!i)return;let a=m(i,n.currency);if(!a)return;let o=c(r.campaign.conditions),s=o==null?void 0:t(o,n.currency),l=r.campaign.defaultLockupSeconds,u=l&&l>0?Math.round(l/86400):void 0;return{formatted:a,payoutType:i.payoutType,minPurchaseAmount:s,lockupDurationDays:u,referrerReward:r.campaign.referrer,refereeReward:r.campaign.referee,minPurchaseValue:o??void 0}}export{m as i,b as n,h as r,x as t};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
const e=`.reset_base__1831jhd0 {
|
|
2
|
+
margin: 0;
|
|
3
|
+
padding: 0;
|
|
4
|
+
border: 0;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
font-size: 100%;
|
|
7
|
+
font: inherit;
|
|
8
|
+
vertical-align: baseline;
|
|
9
|
+
-webkit-tap-highlight-color: transparent;
|
|
10
|
+
}
|
|
11
|
+
.reset_focusRing__1831jhd1 {
|
|
12
|
+
outline: 2px solid transparent;
|
|
13
|
+
outline-offset: 2px;
|
|
14
|
+
}
|
|
15
|
+
.reset_focusRing__1831jhd1:focus-visible {
|
|
16
|
+
outline-color: currentColor;
|
|
17
|
+
}
|
|
18
|
+
.reset_fieldAppearance__1831jhd2 {
|
|
19
|
+
appearance: none;
|
|
20
|
+
background-color: transparent;
|
|
21
|
+
}
|
|
22
|
+
.reset_visuallyHidden__1831jhd3 {
|
|
23
|
+
position: absolute;
|
|
24
|
+
width: 1px;
|
|
25
|
+
height: 1px;
|
|
26
|
+
padding: 0;
|
|
27
|
+
margin: -1px;
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
clip: rect(0, 0, 0, 0);
|
|
30
|
+
white-space: nowrap;
|
|
31
|
+
border-width: 0;
|
|
32
|
+
}
|
|
33
|
+
.reset_element_ul__1831jhd4 {
|
|
34
|
+
list-style: none;
|
|
35
|
+
}
|
|
36
|
+
.reset_element_ol__1831jhd5 {
|
|
37
|
+
list-style: none;
|
|
38
|
+
}
|
|
39
|
+
.reset_element_button__1831jhd6 {
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
}
|
|
42
|
+
.reset_element_a__1831jhd7 {
|
|
43
|
+
text-decoration: none;
|
|
44
|
+
color: inherit;
|
|
45
|
+
}
|
|
46
|
+
.reset_element_table__1831jhdb {
|
|
47
|
+
border-collapse: collapse;
|
|
48
|
+
border-spacing: 0;
|
|
49
|
+
}
|
|
50
|
+
.reset_element_img__1831jhdc {
|
|
51
|
+
display: block;
|
|
52
|
+
max-width: 100%;
|
|
53
|
+
}:root {
|
|
54
|
+
--text-primary__pbq4ak0: #000000;
|
|
55
|
+
--text-secondary__pbq4ak1: #525252;
|
|
56
|
+
--text-tertiary__pbq4ak2: #a3a3a3;
|
|
57
|
+
--text-disabled__pbq4ak3: #a3a3a3;
|
|
58
|
+
--text-action__pbq4ak4: #0043ef;
|
|
59
|
+
--text-actionHover__pbq4ak5: #0036bf;
|
|
60
|
+
--text-onAction__pbq4ak6: #ffffff;
|
|
61
|
+
--text-error__pbq4ak7: #e31c31;
|
|
62
|
+
--text-success__pbq4ak8: #09be67;
|
|
63
|
+
--text-warning__pbq4ak9: #ec7e00;
|
|
64
|
+
--surface-primary__pbq4aka: #0043ef;
|
|
65
|
+
--surface-secondary__pbq4akb: #f2f6fe;
|
|
66
|
+
--surface-background__pbq4akc: #ffffff;
|
|
67
|
+
--surface-background2__pbq4akd: #f9fafb;
|
|
68
|
+
--surface-elevated__pbq4ake: #ffffff;
|
|
69
|
+
--surface-muted__pbq4akf: #f7f7f7;
|
|
70
|
+
--surface-tertiary__pbq4akg: #f7f7f7;
|
|
71
|
+
--surface-overlay__pbq4akh: #000000b2;
|
|
72
|
+
--surface-disabled__pbq4aki: #e2e2e2;
|
|
73
|
+
--surface-primaryHover__pbq4akj: #0036bf;
|
|
74
|
+
--surface-primaryPressed__pbq4akk: #00288f;
|
|
75
|
+
--surface-secondaryHover__pbq4akl: #e5ecfd;
|
|
76
|
+
--surface-secondaryPressed__pbq4akm: #ccd9fc;
|
|
77
|
+
--surface-error__pbq4akn: #fce8ea;
|
|
78
|
+
--surface-success__pbq4ako: #f3fcf7;
|
|
79
|
+
--surface-warning__pbq4akp: #fef9f2;
|
|
80
|
+
--border-subtle__pbq4akq: #f5f5f5;
|
|
81
|
+
--border-focus__pbq4akr: #a3a3a3;
|
|
82
|
+
--border-error__pbq4aks: #e31c31;
|
|
83
|
+
--border-success__pbq4akt: #09be67;
|
|
84
|
+
--border-warning__pbq4aku: #ec7e00;
|
|
85
|
+
--border-default__pbq4akv: #e2e2e2;
|
|
86
|
+
--icon-primary__pbq4akw: #000000;
|
|
87
|
+
--icon-secondary__pbq4akx: #525252;
|
|
88
|
+
--icon-tertiary__pbq4aky: #a3a3a3;
|
|
89
|
+
--icon-disabled__pbq4akz: #a3a3a3;
|
|
90
|
+
--icon-action__pbq4ak10: #0043ef;
|
|
91
|
+
--icon-actionHover__pbq4ak11: #0036bf;
|
|
92
|
+
--icon-onAction__pbq4ak12: #ffffff;
|
|
93
|
+
--icon-error__pbq4ak13: #e31c31;
|
|
94
|
+
--icon-success__pbq4ak14: #09be67;
|
|
95
|
+
--icon-warning__pbq4ak15: #ec7e00;
|
|
96
|
+
}
|
|
97
|
+
[data-theme='dark'] {
|
|
98
|
+
--text-primary__pbq4ak0: #ffffff;
|
|
99
|
+
--text-secondary__pbq4ak1: #f7f7f7;
|
|
100
|
+
--text-tertiary__pbq4ak2: #f5f5f5;
|
|
101
|
+
--text-disabled__pbq4ak3: #a3a3a3;
|
|
102
|
+
--text-action__pbq4ak4: #668ef5;
|
|
103
|
+
--text-actionHover__pbq4ak5: #0036bf;
|
|
104
|
+
--text-onAction__pbq4ak6: #ffffff;
|
|
105
|
+
--text-error__pbq4ak7: #e9495a;
|
|
106
|
+
--text-success__pbq4ak8: #09be67;
|
|
107
|
+
--text-warning__pbq4ak9: #ec7e00;
|
|
108
|
+
--surface-primary__pbq4aka: #0043ef;
|
|
109
|
+
--surface-secondary__pbq4akb: #00288f;
|
|
110
|
+
--surface-background__pbq4akc: #000000;
|
|
111
|
+
--surface-background2__pbq4akd: #000000;
|
|
112
|
+
--surface-elevated__pbq4ake: #262626;
|
|
113
|
+
--surface-muted__pbq4akf: #525252;
|
|
114
|
+
--surface-tertiary__pbq4akg: #737373;
|
|
115
|
+
--surface-overlay__pbq4akh: #000000b2;
|
|
116
|
+
--surface-disabled__pbq4aki: #e2e2e2;
|
|
117
|
+
--surface-primaryHover__pbq4akj: #0036bf;
|
|
118
|
+
--surface-primaryPressed__pbq4akk: #00288f;
|
|
119
|
+
--surface-secondaryHover__pbq4akl: #e5ecfd;
|
|
120
|
+
--surface-secondaryPressed__pbq4akm: #ccd9fc;
|
|
121
|
+
--surface-error__pbq4akn: #b61627;
|
|
122
|
+
--surface-success__pbq4ako: #05723e;
|
|
123
|
+
--surface-warning__pbq4akp: #8e4c00;
|
|
124
|
+
--border-subtle__pbq4akq: #737373;
|
|
125
|
+
--border-focus__pbq4akr: #a3a3a3;
|
|
126
|
+
--border-error__pbq4aks: #e31c31;
|
|
127
|
+
--border-success__pbq4akt: #09be67;
|
|
128
|
+
--border-warning__pbq4aku: #ec7e00;
|
|
129
|
+
--border-default__pbq4akv: #525252;
|
|
130
|
+
--icon-primary__pbq4akw: #ffffff;
|
|
131
|
+
--icon-secondary__pbq4akx: #f7f7f7;
|
|
132
|
+
--icon-tertiary__pbq4aky: #f7f7f7;
|
|
133
|
+
--icon-disabled__pbq4akz: #a3a3a3;
|
|
134
|
+
--icon-action__pbq4ak10: #0043ef;
|
|
135
|
+
--icon-actionHover__pbq4ak11: #0036bf;
|
|
136
|
+
--icon-onAction__pbq4ak12: #ffffff;
|
|
137
|
+
--icon-error__pbq4ak13: #e31c31;
|
|
138
|
+
--icon-success__pbq4ak14: #09be67;
|
|
139
|
+
--icon-warning__pbq4ak15: #ec7e00;
|
|
140
|
+
}.sharedBaseCss_buttonReset__7cswil0 {
|
|
141
|
+
margin: 0;
|
|
142
|
+
border: 0;
|
|
143
|
+
appearance: none;
|
|
144
|
+
background-color: transparent;
|
|
145
|
+
box-sizing: border-box;
|
|
146
|
+
font-family: inherit;
|
|
147
|
+
-webkit-tap-highlight-color: transparent;
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
outline: 2px solid transparent;
|
|
150
|
+
outline-offset: 2px;
|
|
151
|
+
}
|
|
152
|
+
.sharedBaseCss_buttonReset__7cswil0:focus-visible {
|
|
153
|
+
outline-color: currentColor;
|
|
154
|
+
}`;export{e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as e}from"./actions-CMPlZ7CH.DZFAhfKm.js";async function t(t,n,r){if(!window.FrakSetup?.client){console.error(`Frak client not found`);return}await e(window.FrakSetup.client,{...r?.link&&{link:r.link},...r?.products?.length&&{products:r.products},...t&&{metadata:{targetInteraction:t}}},n)}export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e}from"./src-Bigq2qnT.CyWI_ZK9.js";function t(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function n(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 r(e){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.title==`string`?n.title.trim():``;if(r===``)return null;let i={title:r};return typeof n.imageUrl==`string`&&t(n.imageUrl)&&(i.imageUrl=n.imageUrl),typeof n.link==`string`&&t(n.link)&&(i.link=n.link),typeof n.utmContent==`string`&&n.utmContent!==``&&(i.utmContent=n.utmContent),i}function i(e){let t=n(e);if(!t)return;let i=[];for(let e of t){let t=r(e);t&&i.push(t)}return i.length>0?i:void 0}function a(t){if(!t)return;let n;try{n=e(t)}catch{return}if(n!==null)return i(n)}export{i as n,a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,D as t,E as n,O as r,S as i,T as a,_ as o,a as s,k as c,s as l,y as u}from"./clientReady.CPe9C8dP.js";var d=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(i){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 console.error(`Max retries reached:`,i),null}}async fetch(e,t,n={}){let r=`${this.baseUrl}${e}`;return this.post(r,t,n,0)}},f=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 d({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&&console.log(`[OpenPanel.dev]`,...e)}},p=typeof document<`u`?document.currentScript:null;function m(e){return e.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace(`-`,``).replace(`_`,``))}var h=class extends f{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=p,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=()=>{console.warn(`[OpenPanel] Failed to load replay script from`,t),e(null)},document.head.appendChild(n)})}return await import(`./replay-V6FXES7X.CgBxdfNp.js`)}catch(e){return console.warn(`[OpenPanel] Failed to load replay module`,e),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[m(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 g=`nexus-wallet-backup`,_=`frakwallet://`;function v(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}}),console.log(`[SSO URL Listener] Forwarded compressed SSO data to iframe`)}).catch(e=>{console.error(`[SSO URL Listener] Failed to forward SSO data:`,e)}),n.searchParams.delete(`sso`),window.history.replaceState({},``,n.toString()),console.log(`[SSO URL Listener] SSO parameter detected and URL cleaned`))}function y(){let e=navigator.userAgent;return/Android/i.test(e)&&/Chrome\/\d+/i.test(e)}const b=_.replace(`://`,``);function x(e){return`intent://${e.slice(13)}#Intent;scheme=${b};end`}function S(e,t){let n=t?.timeout??2500,r=!1,i=()=>{document.hidden&&(r=!0)};document.addEventListener(`visibilitychange`,i);let a=y()&&C(e)?x(e):e;window.location.href=a,setTimeout(()=>{document.removeEventListener(`visibilitychange`,i),r||t?.onFallback?.()},n)}function C(e){return e.startsWith(_)}function w(){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 T=w();function E(){return typeof navigator>`u`?!1:T?!0:/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function D(){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 O=D();function k(e){T&&e.startsWith(`https://`)?window.location.href=`x-safari-https://${e.slice(8)}`:T&&e.startsWith(`http://`)?window.location.href=`x-safari-http://${e.slice(7)}`:window.location.href=`https://backend.frak.id/common/social?u=${encodeURIComponent(e)}`}const A={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 j({walletBaseUrl:t,config:n}){let r=document.querySelector(`#frak-wallet`);r&&r.remove();let i=document.createElement(`iframe`);i.id=A.id,i.name=A.name,i.allow=A.allow,i.style.zIndex=A.style.zIndex.toString(),N({iframe:i,isVisible:!1});let a=n?.walletUrl??t??`https://wallet.frak.id`,o=e();return F(a),F(u(a)),i.src=M({walletUrl:a,clientId:o,preload:n?.preload}),new Promise(e=>{i.addEventListener(`load`,()=>e(i)),document.body.appendChild(i)})}function M({walletUrl:e,clientId:t,preload:n}){let r=`${e}/listener?clientId=${encodeURIComponent(t)}`;return!n||n.length===0?r:`${r}#preload=${n.join(`,`)}`}function N({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 P(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(t){return console.error(`[findIframeInOpener] Error finding iframe with pathname ${e}:`,t),null}}function F(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 I=T&&O;function L(e){e?localStorage.setItem(g,e):localStorage.removeItem(g)}function R(e,t){try{let n=new URL(e);if(!n.searchParams.has(`u`))return e;let r=V(window.location.href,t);return n.searchParams.delete(`u`),n.searchParams.append(`u`,r),n.toString()}catch{return e}}function z(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 B(e){return e.includes(`/common/social`)}function V(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 H(e,t,n,r,i){if(i){let e=R(t,r);window.open(e,`_blank`);return}if(C(t)){let i=R(t,r);S(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(I&&B(t))z(r);else{let e=R(t,r);window.location.href=e}}function U({iframe:e,targetOrigin:t}){let n=new a;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`:L(a.backup);break;case`remove-backup`:localStorage.removeItem(g);break;case`show`:case`hide`:N({iframe:e,isVisible:i===`show`});break;case`redirect`:H(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}function W({config:t,iframe:i}){let s=t?.walletUrl??`https://wallet.frak.id`,u=typeof navigator<`u`?navigator.language?.split(`-`)[0]:void 0,d=t.metadata.lang??(u===`en`||u===`fr`?u:void 0),f=t.domain??(typeof window<`u`?window.location.hostname:``);l.setCacheScope(f,d),l.reset();let p=l.isCacheFresh?void 0:l.resolve(t.domain,t.walletUrl,d),m=U({iframe:i,targetOrigin:s}),g=new a,_=Date.now();if(!i.contentWindow)throw new c(n.configError,`The iframe does not have a content window`);let v=r({emittingTransport:i.contentWindow,listeningTransport:window,targetOrigin:s,middleware:[{async onRequest(e,t){if(!await m.isConnected)throw new c(n.clientNotConnected,`The iframe provider isn't connected yet`);return await g.promise,t}}],lifecycleHandlers:{iframeLifecycle:(e,t)=>{m.handleEvent(e)}}}),y=G(v,m),b=async()=>{y(),v.cleanup(),i.remove(),o(),l.clearCache(),l.reset()},x;{console.log(`[Frak SDK] Initializing OpenPanel`),x=new h({apiUrl:`https://op-api.gcp.frak.id`,clientId:`6eacc8d7-49ac-4936-95e9-81ef29449570`,trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:t,payload:n})=>(t!==`track`||!n?.properties||`sdk_version`in n.properties||(n.properties={...n.properties,sdk_version:`1.2.0`,user_anonymous_client_id:e()}),!0)}),x.setGlobalProperties({sdk_version:`1.2.0`,user_anonymous_client_id:e()}),x.init(),x.track(`sdk_initialized`,{sdk_version:`1.2.0`});let t=!1,n=setTimeout(()=>{t||(t=!0,x?.track(`sdk_iframe_handshake_failed`,{reason:`timeout`}))},3e4);m.isConnected.then(()=>{t||(t=!0,clearTimeout(n),x?.track(`sdk_iframe_connected`,{handshake_duration_ms:Date.now()-_}))}).catch(()=>{t||(t=!0,clearTimeout(n),x?.track(`sdk_iframe_handshake_failed`,{reason:`unknown`}))})}let S=K({config:t,rpcClient:v,lifecycleManager:m,configPromise:p,contextSent:g,openPanel:x}).then(()=>{}).catch(e=>{throw g.reject(e),e});return{config:t,waitForConnection:m.isConnected,waitForSetup:S,request:v.request,listenerRequest:v.listen,destroy:b,openPanel:x}}function G(e,t){let n,r,i=()=>e.sendLifecycle({clientLifecycle:`heartbeat`});async function a(){i(),n=setInterval(i,250),r=setTimeout(()=>{o(),console.log(`Heartbeat timeout: connection failed`)},3e4),await t.isConnected,o()}function o(){n&&clearInterval(n),r&&clearTimeout(r)}return a(),o}async function K({config:t,rpcClient:n,lifecycleManager:r,configPromise:i,contextSent:a,openPanel:o}){await r.isConnected,v(n,r.isConnected);let s=new URL(window.location.href),c=s.searchParams.get(`fmt`)??void 0;c&&(s.searchParams.delete(`fmt`),window.history.replaceState({},``,s.toString()));let u=e=>{let n=e?.merchantId??t.metadata.merchantId??``,r=e?.domain??``,i=e?.allowedDomains??[],a=e?.sdkConfig,o=a?.attribution||t.attribution?{...t.attribution,...a?.attribution}:void 0;l.setConfig(a?{isResolved:!0,merchantId:n,domain:r,allowedDomains:i,hasRawSdkConfig:!0,name:a.name??t.metadata.name,logoUrl:a.logoUrl??t.metadata.logoUrl,homepageLink:a.homepageLink??t.metadata.homepageLink,lang:a.lang??t.metadata.lang,currency:a.currency??t.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:t.metadata.name,logoUrl:t.metadata.logoUrl,homepageLink:t.metadata.homepageLink,lang:t.metadata.lang,currency:t.metadata.currency,attribution:o})},d=!1,f=t=>{let r=d?void 0:c;d=!0;let i=t.hasRawSdkConfig?{name:t.name,logoUrl:t.logoUrl,homepageLink:t.homepageLink,lang:t.lang,currency:t.currency,hidden:t.hidden,css:t.css,translations:t.translations,placements:t.placements,attribution:t.attribution}:t.attribution?{attribution:t.attribution}:void 0,a=e();if(o){let e=o.global??{};o.setGlobalProperties({...e,merchant_id:t.merchantId,domain:t.domain??``})}n.sendLifecycle({clientLifecycle:`resolved-config`,data:{merchantId:t.merchantId,domain:t.domain??``,allowedDomains:t.allowedDomains??[],sourceUrl:window.location.href,...a&&{sdkAnonymousId:a},...r&&{pendingMergeToken:r},...i&&{sdkConfig:i}}})};l.isResolved&&(f(l.getConfig()),a.resolve()),i&&(u(await i),f(l.getConfig()),a.resolve());async function p(){let e=t.customizations?.css;e&&n.sendLifecycle({clientLifecycle:`modal-css`,data:{cssLink:e}})}async function m(){let e=t.customizations?.i18n;e&&n.sendLifecycle({clientLifecycle:`modal-i18n`,data:{i18n:e}})}async function h(){if(typeof window>`u`)return;let e=window.localStorage.getItem(g);e&&n.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}(await Promise.allSettled([p(),m(),h()])).some(e=>e.status===`rejected`)&&o?.track(`sdk_iframe_handshake_failed`,{reason:`asset_push`})}function q(e){return t(i(e))}async function J({config:e}){let t=Y(e),n=await j({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=W({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function Y(e){let t=s(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}function X({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}export{E as a,J as c,O as d,T as f,X as i,_ as l,W as n,k as o,A as r,q as s,P as t,S as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(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 t(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 n(t,n,r){e(`frak-placement-${t}-${n}`,r)}const r={injectBase:t,injectPlacement:n};export{r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e}from"./clientReady.CPe9C8dP.js";import{c as t,o as n}from"./defaults.Cc2Npf8m.js";function r(){return t(n,()=>e.getConfig().components)}export{r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./styleManager.Cun1-fKi.js";import{f as t,i as n}from"./defaults.Cc2Npf8m.js";function r(r,i,a,o,s){t(()=>{s&&e.injectBase(`shared`,s),e.injectBase(r,o??n)},[r]),t(()=>{!i||!a||e.injectPlacement(r,i,a)},[r,i,a])}export{r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{m as e}from"./actions-CMPlZ7CH.DZFAhfKm.js";import{d as t,f as n}from"./defaults.Cc2Npf8m.js";import{t as r}from"./rewards.BHoSugMr.js";function i(i,a,o){let[s,c]=t(void 0);return n(()=>{if(!i)return;let t=window.FrakSetup?.client;t&&e(t).then(e=>{let n=r(e.rewards,{currency:t.config.metadata?.currency,targetInteraction:a,audience:o});n&&n.payoutType!==`percentage`&&c(n.formatted)}).catch(()=>{})},[i,a,o]),{reward:s}}export{i as t};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "preact/hooks";
|
|
2
2
|
import { jsx, jsxs } from "preact/jsx-runtime";
|
|
3
3
|
import { Component, Fragment as Fragment$1, createElement, options, toChildArray } from "preact";
|
|
4
|
-
//#region ../../node_modules/.bun/preact@10.29.
|
|
4
|
+
//#region ../../node_modules/.bun/preact@10.29.7/node_modules/preact/compat/dist/compat.module.js
|
|
5
5
|
function g(n, t) {
|
|
6
6
|
for (var e in t) n[e] = t[e];
|
|
7
7
|
return n;
|
|
@@ -25,7 +25,7 @@ options.__b = function(n) {
|
|
|
25
25
|
var O = options.__e;
|
|
26
26
|
options.__e = function(n, t, e, r) {
|
|
27
27
|
if (n.then) {
|
|
28
|
-
for (var u, o = t; o = o.__;) if ((u = o.__c) && u.__c) return t.__e ?? (t.__e = e.__e, t.__k = e.__k), u.__c(n, t);
|
|
28
|
+
for (var u, o = t; o = o.__;) if ((u = o.__c) && u.__c) return t.__e ?? (t.__e = e.__e, t.__k = e.__k || []), u.__c(n, t);
|
|
29
29
|
}
|
|
30
30
|
O(n, t, e, r);
|
|
31
31
|
};
|
|
@@ -119,7 +119,12 @@ var H = function(n, t, e) {
|
|
|
119
119
|
H(n, e, t);
|
|
120
120
|
});
|
|
121
121
|
};
|
|
122
|
-
var q = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103
|
|
122
|
+
var q = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103;
|
|
123
|
+
var G = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;
|
|
124
|
+
var J = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;
|
|
125
|
+
var K = /[A-Z0-9]/g;
|
|
126
|
+
var Q = "undefined" != typeof document;
|
|
127
|
+
var X = function(n) {
|
|
123
128
|
return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(n);
|
|
124
129
|
};
|
|
125
130
|
Component.prototype.isReactComponent = !0, [
|
|
@@ -154,7 +159,8 @@ var un = {
|
|
|
154
159
|
get: function() {
|
|
155
160
|
return this.class;
|
|
156
161
|
}
|
|
157
|
-
}
|
|
162
|
+
};
|
|
163
|
+
var on = options.vnode;
|
|
158
164
|
options.vnode = function(n) {
|
|
159
165
|
"string" == typeof n.type && function(n) {
|
|
160
166
|
var t = n.props, e = n.type, u = {}, o = -1 == e.indexOf("-");
|
package/dist/banner.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { InteractionTypeKey } from "@frak-labs/core-sdk";
|
|
2
|
-
|
|
3
2
|
//#region src/components/Banner/types.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* The props type for {@link Banner}.
|
|
@@ -108,21 +107,7 @@ type BannerProps = {
|
|
|
108
107
|
* <frak-banner classname="my-custom-banner"></frak-banner>
|
|
109
108
|
* ```
|
|
110
109
|
*/
|
|
111
|
-
declare function Banner({
|
|
112
|
-
placement: placementId,
|
|
113
|
-
classname,
|
|
114
|
-
interaction,
|
|
115
|
-
referralTitle: propReferralTitle,
|
|
116
|
-
referralDescription: propReferralDescription,
|
|
117
|
-
referralCta: propReferralCta,
|
|
118
|
-
inappTitle: propInappTitle,
|
|
119
|
-
inappDescription: propInappDescription,
|
|
120
|
-
inappCta: propInappCta,
|
|
121
|
-
imageUrl: propImageUrl,
|
|
122
|
-
preview,
|
|
123
|
-
previewMode,
|
|
124
|
-
allowInappRedirect
|
|
125
|
-
}: BannerProps): import("preact").JSX.Element | null;
|
|
110
|
+
declare function Banner({ placement: placementId, classname, interaction, referralTitle: propReferralTitle, referralDescription: propReferralDescription, referralCta: propReferralCta, inappTitle: propInappTitle, inappDescription: propInappDescription, inappCta: propInappCta, imageUrl: propImageUrl, preview, previewMode, allowInappRedirect }: BannerProps): import("preact").JSX.Element | null;
|
|
126
111
|
//#endregion
|
|
127
112
|
//#region src/components/Banner/index.d.ts
|
|
128
113
|
/**
|
package/dist/banner.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
import { i as useLang, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-
|
|
2
|
-
import { t as useGlobalComponents } from "./useGlobalComponents-
|
|
3
|
-
import { t as useLightDomStyles } from "./useLightDomStyles-
|
|
4
|
-
import { r as b } from "./rewards-
|
|
5
|
-
import { t as useReward } from "./useReward-
|
|
1
|
+
import { i as useLang, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-BhNse5cN.js";
|
|
2
|
+
import { t as useGlobalComponents } from "./useGlobalComponents-Cl7MBkeo.js";
|
|
3
|
+
import { t as useLightDomStyles } from "./useLightDomStyles-CyWohXRl.js";
|
|
4
|
+
import { r as b } from "./rewards-BtPHdGcI.js";
|
|
5
|
+
import { t as useReward } from "./useReward-B-yZ7nhY.js";
|
|
6
6
|
import { componentDefaults } from "./i18n/defaults.js";
|
|
7
|
-
import { a as ExternalLinkIcon, i as LogoFrakWithName, n as cssSource$5, o as CloseCircleIcon, r as WarningIcon, t as GiftIcon } from "./GiftIcon-
|
|
7
|
+
import { a as ExternalLinkIcon, i as LogoFrakWithName, n as cssSource$5, o as CloseCircleIcon, r as WarningIcon, t as GiftIcon } from "./GiftIcon-BhL0bhVu.js";
|
|
8
8
|
import { isInAppBrowser, redirectToExternalBrowser, trackEvent } from "@frak-labs/core-sdk";
|
|
9
9
|
import { REFERRAL_SUCCESS_EVENT, getMergeToken } from "@frak-labs/core-sdk/actions";
|
|
10
10
|
import { useCallback, useEffect, useMemo, useRef, useState } from "preact/hooks";
|
|
11
11
|
import { jsx, jsxs } from "preact/jsx-runtime";
|
|
12
12
|
//#region \0ve-inline:../../packages/design-system/src/keyframes.css.ts.vanilla.js
|
|
13
13
|
const cssSource$4 = `@keyframes keyframes_fadeIn__mnqmlt0 {
|
|
14
|
+
from {
|
|
15
|
+
opacity: 0;
|
|
16
|
+
}
|
|
17
|
+
to {
|
|
18
|
+
opacity: 1;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
@keyframes keyframes_fadeOut__mnqmlt1 {
|
|
22
|
+
from {
|
|
23
|
+
opacity: 1;
|
|
24
|
+
}
|
|
25
|
+
to {
|
|
26
|
+
opacity: 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
@keyframes keyframes_fadeInDown__mnqmlt2 {
|
|
14
30
|
from {
|
|
15
31
|
opacity: 0;
|
|
16
32
|
transform: translateY(-4px);
|
|
@@ -38,7 +54,7 @@ const cssSource$3 = `.inAppBanner_container__1ibpiy70 {
|
|
|
38
54
|
backdrop-filter: blur(12px);
|
|
39
55
|
-webkit-backdrop-filter: blur(12px);
|
|
40
56
|
color: var(--text-onAction__pbq4ak6);
|
|
41
|
-
animation:
|
|
57
|
+
animation: keyframes_fadeInDown__mnqmlt2 300ms ease-out;
|
|
42
58
|
}
|
|
43
59
|
.inAppBanner_header__1ibpiy71 {
|
|
44
60
|
display: flex;
|
|
@@ -175,7 +191,7 @@ function InAppBanner({ title: title$1, description: description$1, cta: cta$1, d
|
|
|
175
191
|
const cssSource$1 = `.Banner_rootBase__1gnumzi0 {
|
|
176
192
|
position: relative;
|
|
177
193
|
display: flex;
|
|
178
|
-
animation:
|
|
194
|
+
animation: keyframes_fadeInDown__mnqmlt2 300ms ease-out;
|
|
179
195
|
}
|
|
180
196
|
.Banner_iconSvg__1gnumzi1 {
|
|
181
197
|
width: 100%;
|
package/dist/buttonShare.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { InteractionTypeKey } from "@frak-labs/core-sdk";
|
|
2
|
-
|
|
3
2
|
//#region src/components/ButtonShare/types.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* The props type for {@link ButtonShare}.
|
|
@@ -97,15 +96,7 @@ type ButtonShareProps = {
|
|
|
97
96
|
* @see {@link @frak-labs/core-sdk!actions.displaySharingPage | `displaySharingPage()`} for more info about the sharing-page flow
|
|
98
97
|
* @see {@link @frak-labs/core-sdk!actions.getMerchantInformation | `getMerchantInformation()`} for more info about the estimated reward fetching
|
|
99
98
|
*/
|
|
100
|
-
declare function ButtonShare({
|
|
101
|
-
placement: placementId,
|
|
102
|
-
text,
|
|
103
|
-
classname,
|
|
104
|
-
noRewardText,
|
|
105
|
-
targetInteraction,
|
|
106
|
-
clickAction: rawClickAction,
|
|
107
|
-
preview
|
|
108
|
-
}: ButtonShareProps): import("preact").JSX.Element | null;
|
|
99
|
+
declare function ButtonShare({ placement: placementId, text, classname, noRewardText, targetInteraction, clickAction: rawClickAction, preview }: ButtonShareProps): import("preact").JSX.Element | null;
|
|
109
100
|
//#endregion
|
|
110
101
|
//#region src/components/ButtonShare/index.d.ts
|
|
111
102
|
/**
|