@phygitallabs/tapquest-core 4.2.0 → 4.4.0

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/dist/index.mjs CHANGED
@@ -1,2 +1,3 @@
1
- var be=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Hr=Object.getOwnPropertyNames;var Zr=Object.prototype.hasOwnProperty;var ye=(e,s)=>{for(var o in s)be(e,o,{get:s[o],enumerable:!0})},Oe=(e,s,o,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of Hr(s))!Zr.call(e,t)&&t!==o&&be(e,t,{get:()=>s[t],enumerable:!(r=qr(s,t))||r.enumerable});return e},d=(e,s,o)=>(Oe(e,s,"default"),o&&Oe(o,s,"default"));var Re={};ye(Re,{ALLOWED_ORIGINS:()=>ee,AchievementRuleActionType:()=>Ve,AchievementServiceProvider:()=>qe,AchievementType:()=>Ce,AuthProvider:()=>N,CALLBACK_URL:()=>X,CampaignState:()=>Sr,CmentityRewardType:()=>He,NotificationProvider:()=>J,RewardClaimStatus:()=>Ie,TapquestCoreProvider:()=>Gr,TaskType:()=>Ee,UserSourceType:()=>wr,accessTokenKey:()=>x,checkDeviceUid:()=>ie,chipAuthTokenKey:()=>L,cn:()=>zr,convertSnakeToCamel:()=>S,deviceUIDKey:()=>U,fileToBase64:()=>Kr,filterLocationsByProperty:()=>_e,generateDeviceId:()=>we,getAccessToken:()=>lr,getActionsFromAchievementRule:()=>Ne,getChipAuthToken:()=>ar,getDeviceUid:()=>se,getLocationIdsFromAchievementRule:()=>De,getRefreshToken:()=>fr,getRetryAttemptsRefreshToken:()=>dr,getUserInfo:()=>Ar,httpMaxRetries:()=>rr,isAchievementCompleted:()=>M,locationQueryKeys:()=>ge,memoriesKey:()=>er,parse:()=>Wr,refreshTokenKey:()=>_,removeAccessToken:()=>mr,removeChipAuthToken:()=>cr,removeDeviceUid:()=>ir,removeRefreshToken:()=>hr,removeUserInfo:()=>Rr,resetMemoriesQuery:()=>Xe,retryAttemptsRefreshToken:()=>O,setAccessToken:()=>pr,setChipAuthToken:()=>ae,setDeviceUid:()=>ke,setRefreshToken:()=>gr,setRetryAttemptsRefreshToken:()=>ur,setUserInfo:()=>vr,sortLocationsByIndex:()=>xe,useAchievementProgress:()=>Ge,useAchivementPlusRewardModel:()=>ve,useAuth:()=>k,useCampaignDetail:()=>ce,useCancelUserRewardsRequest:()=>Pr,useChipScanStory:()=>Te,useClaimUserReward:()=>K,useClearUserRewardCache:()=>Q,useCreateCertificate:()=>Ur,useCreateCertificateAnonymous:()=>Lr,useCreateCertificateWithMask:()=>Mr,useCreateMemory:()=>Ye,useCreateModelGroupReward:()=>j,useCreateRewardModel:()=>q,useDataTracking:()=>Dr,useDeleteRewardModel:()=>Z,useGenerateFansipanCertificate:()=>_r,useGenerateTemplateCertificate:()=>xr,useGenerateThaocamvienCertificate:()=>Er,useGetRewardModel:()=>V,useGetUserRewards:()=>W,useGoogleLogin:()=>ne,useInfiniteMemories:()=>Qe,useListRewardModels:()=>$,useLocationDetail:()=>pe,useLocationProgress:()=>me,useLocationsList:()=>le,useManyAchievementProgress:()=>$e,useManyAchievements:()=>Fe,useManyAchievementsRewardModels:()=>Ke,useManyChildrenAchievements:()=>ze,useManyMemory:()=>je,useManyUserActionLocations:()=>fe,useManyUserRewards:()=>z,useMyProfile:()=>yr,useOneAchievement:()=>We,useOneMemory:()=>Ze,useOneUserCampaign:()=>ue,usePGLCoreService:()=>Se,useScanChip:()=>Tr,useSendEmail:()=>Br,useSyncCheckin:()=>Ir,useUpdateMyProfile:()=>Cr,useUpdateRewardModel:()=>H,useUploadMedia:()=>Je,useUserAchievementAction:()=>Be,useUserCampaignAction:()=>de,useV1ListRewards:()=>Y,userInfoKey:()=>E,wrapTextWithFont:()=>Or});var l={};ye(l,{ALLOWED_ORIGINS:()=>ee,AchievementRuleActionType:()=>Ve,AchievementServiceProvider:()=>qe,AchievementType:()=>Ce,AuthProvider:()=>N,CALLBACK_URL:()=>X,CampaignState:()=>Sr,CmentityRewardType:()=>He,NotificationProvider:()=>J,RewardClaimStatus:()=>Ie,TapquestCoreProvider:()=>Gr,TaskType:()=>Ee,UserSourceType:()=>wr,accessTokenKey:()=>x,checkDeviceUid:()=>ie,chipAuthTokenKey:()=>L,cn:()=>zr,convertSnakeToCamel:()=>S,deviceUIDKey:()=>U,fileToBase64:()=>Kr,filterLocationsByProperty:()=>_e,generateDeviceId:()=>we,getAccessToken:()=>lr,getActionsFromAchievementRule:()=>Ne,getChipAuthToken:()=>ar,getDeviceUid:()=>se,getLocationIdsFromAchievementRule:()=>De,getRefreshToken:()=>fr,getRetryAttemptsRefreshToken:()=>dr,getUserInfo:()=>Ar,httpMaxRetries:()=>rr,isAchievementCompleted:()=>M,locationQueryKeys:()=>ge,memoriesKey:()=>er,parse:()=>Wr,refreshTokenKey:()=>_,removeAccessToken:()=>mr,removeChipAuthToken:()=>cr,removeDeviceUid:()=>ir,removeRefreshToken:()=>hr,removeUserInfo:()=>Rr,resetMemoriesQuery:()=>Xe,retryAttemptsRefreshToken:()=>O,setAccessToken:()=>pr,setChipAuthToken:()=>ae,setDeviceUid:()=>ke,setRefreshToken:()=>gr,setRetryAttemptsRefreshToken:()=>ur,setUserInfo:()=>vr,sortLocationsByIndex:()=>xe,useAchievementProgress:()=>Ge,useAchivementPlusRewardModel:()=>ve,useAuth:()=>k,useCampaignDetail:()=>ce,useCancelUserRewardsRequest:()=>Pr,useChipScanStory:()=>Te,useClaimUserReward:()=>K,useClearUserRewardCache:()=>Q,useCreateCertificate:()=>Ur,useCreateCertificateAnonymous:()=>Lr,useCreateCertificateWithMask:()=>Mr,useCreateMemory:()=>Ye,useCreateModelGroupReward:()=>j,useCreateRewardModel:()=>q,useDataTracking:()=>Dr,useDeleteRewardModel:()=>Z,useGenerateFansipanCertificate:()=>_r,useGenerateTemplateCertificate:()=>xr,useGenerateThaocamvienCertificate:()=>Er,useGetRewardModel:()=>V,useGetUserRewards:()=>W,useGoogleLogin:()=>ne,useInfiniteMemories:()=>Qe,useListRewardModels:()=>$,useLocationDetail:()=>pe,useLocationProgress:()=>me,useLocationsList:()=>le,useManyAchievementProgress:()=>$e,useManyAchievements:()=>Fe,useManyAchievementsRewardModels:()=>Ke,useManyChildrenAchievements:()=>ze,useManyMemory:()=>je,useManyUserActionLocations:()=>fe,useManyUserRewards:()=>z,useMyProfile:()=>yr,useOneAchievement:()=>We,useOneMemory:()=>Ze,useOneUserCampaign:()=>ue,usePGLCoreService:()=>Se,useScanChip:()=>Tr,useSendEmail:()=>Br,useSyncCheckin:()=>Ir,useUpdateMyProfile:()=>Cr,useUpdateRewardModel:()=>H,useUploadMedia:()=>Je,useUserAchievementAction:()=>Be,useUserCampaignAction:()=>de,useV1ListRewards:()=>Y,userInfoKey:()=>E,wrapTextWithFont:()=>Or});import{useManyAchievementProgress as jr}from"@phygitallabs/achievement";import{useManyAchievementProgressByDevice as Qr}from"@phygitallabs/api-core";import{useAchievementProgress as Ge,useManyAchievements as Fe,useUserAchievementAction as Be,useManyChildrenAchievements as ze,useOneAchievement as We,useManyAchievementsRewardModels as Ke}from"@phygitallabs/achievement";var De=e=>{if(!e.rule)return[];let s=[];return Object.values(e.rule).forEach(o=>{o.rules&&o.rules.forEach(r=>{r.filter&&Object.values(r.filter).forEach(t=>{t.filters&&t.filters.forEach(n=>{n.label==="location_id"&&n.value&&(Array.isArray(n.value)?s.push(...n.value):s.push(n.value))})})})}),Array.from(new Set(s))},Ne=e=>{if(!e.rule)return[];let s=[];return Object.values(e.rule).forEach(o=>{o.rules&&o.rules.forEach(r=>{r.action&&s.push(r.action)})}),Array.from(new Set(s))},M=e=>e.isCompleted||e.overallPercentage===100;function S(e){if(e==null)return e;if(Array.isArray(e))return e.map(s=>S(s));if(typeof e=="object"&&e.constructor===Object){let s={};for(let o in e)if(e.hasOwnProperty(o)){let r=o.replace(/_([a-z])/g,(t,n)=>n.toUpperCase());s[r]=S(e[o])}return s}return e}var $e=(e,s)=>{let o=!!e.userId,r=o?{achievementIds:e.achievementIds,userId:e.userId,applicationId:e.applicationId}:{achievement_ids:e.achievementIds,device_uid:e.deviceUid,applicationId:e.applicationId};return o?jr(r,{...s,select:t=>t.map(n=>({...n,isCompleted:M(n)}))}):Qr(r,{...s,select:t=>S(t).map(i=>({...i,isCompleted:M(i)}))})};import{AchievementRuleActionType as Ve,AchievementServiceProvider as qe}from"@phygitallabs/achievement";var Ce=(t=>(t.DEFAULT="default",t.MULTIPLE_CHECK_INS="multiple_check_ins",t.RANDOM_CHECK_INS="random_check_ins",t.GROUP_MISSION="group_mission",t))(Ce||{});import{useManyUserRewards as z,useGetUserRewards as W,useClaimUserReward as K,useListRewardModels as $,useGetRewardModel as V,useCreateRewardModel as q,useUpdateRewardModel as H,useDeleteRewardModel as Z,useCreateModelGroupReward as j,useClearUserRewardCache as Q,useV1ListRewards as Y}from"@phygitallabs/reward";import{CmentityRewardType as He}from"@phygitallabs/reward";var Ie=(t=>(t.NOT_CLAIMED="not_claimed",t.CLAIMED="claimed",t.IN_PROGRESS="in_progress",t.FAILED="failed",t))(Ie||{});var u={};ye(u,{NotificationProvider:()=>J});d(u,Tt);import*as Tt from"@phygitallabs/notification-api";import{NotificationProvider as Jr}from"@phygitallabs/notification-api";var Yr={dev:{API_BASE_URL:"https://backend-dev.nomion.io",API_BASE_CORE_URL:"https://backend-dev.nomion.io/core",API_ACHIEVEMENT_URL:"https://backend-dev.nomion.io/achievement",API_REWARD_URL:"https://backend-dev.nomion.io/reward",API_GENERATE_CERTIFICATE_URL:"https://media-prc-dev.nomion.io/api",API_NOTIFICATION_SOCKET_URL:"https://backend-dev.nomion.io/notification-ws/ws"},staging:{API_BASE_URL:"https://backend-staging.nomion.io",API_BASE_CORE_URL:"https://backend-staging.nomion.io/core",API_ACHIEVEMENT_URL:"https://backend-staging.nomion.io/achievement",API_REWARD_URL:"https://backend-staging.nomion.io/reward",API_GENERATE_CERTIFICATE_URL:"https://media-prc-staging.nomion.io/api",API_NOTIFICATION_SOCKET_URL:"https://backend-staging.nomion.io/notification-ws/ws"},production:{API_BASE_URL:"https://backend.nomion.io",API_BASE_CORE_URL:"https://backend.nomion.io/core",API_ACHIEVEMENT_URL:"https://backend.nomion.io/achievement",API_REWARD_URL:"https://backend.nomion.io/reward",API_GENERATE_CERTIFICATE_URL:"https://media-prc.nomion.io/api",API_NOTIFICATION_SOCKET_URL:"https://backend.nomion.io/notification-ws/ws"}},y=Yr;import{jsx as Xr}from"react/jsx-runtime";var J=({children:e,autoConnect:s=!0,environment:o="dev",user:r,onWebSocketOpen:t,onWebSocketClose:n,onWebSocketMessage:i})=>{let a=y[o]?.API_NOTIFICATION_SOCKET_URL;return Xr(Jr,{userUid:r?.id,accessToken:r?.accessToken??null,webSocketUrl:a,autoConnect:s,onWebSocketOpen:t,onWebSocketClose:n,onWebSocketMessage:i,children:e})};d(l,u);import{useOneMemory as Ze,useManyMemory as je,useInfiniteMemories as Qe,useCreateMemory as Ye,useUploadMedia as Je,resetMemoriesQuery as Xe,memoriesKey as er}from"@phygitallabs/api-core";import{AuthenticationProvider as uo,useAuthenticationHeaders as lo,tokenStorage as re}from"@phygitallabs/authentication";import{useEffect as po}from"react";import{create as eo}from"zustand";import{immer as ro}from"zustand/middleware/immer";import{createJSONStorage as oo,devtools as to,persist as no,subscribeWithSelector as so}from"zustand/middleware";import{authService as b,verifyCodeService as D,tokenStorage as I}from"@phygitallabs/authentication";var E="phygital-user-info",x="accessToken",_="refreshToken",rr=3,O="retryAttemptsRefreshToken",U="Device-UID",L="chip-auth-token",X="https://s3-sgn10.fptcloud.com/nomion-assets/platform/callback.html",ee=["https://s3-sgn10.fptcloud.com","https://accounts.google.com/"];var io={user:null,isSignedIn:!1,isInitialized:!1,isLoading:!1,error:null,cleanupFunctions:{},eventCallbacks:{}},f=eo()(to(no(so(ro((e,s)=>({...io,actions:{setIsLoading:o=>e(r=>{r.isLoading=o}),setCleanupFunctions:o=>e(r=>{r.cleanupFunctions={...r.cleanupFunctions,...o}}),addEventCallbacks:o=>(e(r=>{r.eventCallbacks={...r.eventCallbacks,...o}}),()=>{e(r=>{r.eventCallbacks={...r.eventCallbacks,...o}})}),signInWithEmail:async(o,r)=>{let{eventCallbacks:t}=s();e(n=>{n.isLoading=!0,n.error=null});try{let n=await b.signIn({email:o,password:r});return n?.data?.idToken&&n?.data?.refreshToken&&(I.setTokens({idToken:n.data.idToken,refreshToken:n.data.refreshToken}),e(i=>{i.isSignedIn=!0}),t.onLoginSuccess?.(n.data.idToken)),n}catch(n){if(n?.response?.data?.code===7)return{data:void 0,message:"Email verification required",code:7};let i=n instanceof Error?n.message:"Login failed";throw e(a=>{a.error=i}),t.onLoginError?.(new Error(i)),n}finally{e(n=>{n.isLoading=!1})}},signInWithGoogle:async()=>{let{eventCallbacks:o}=s();try{let r=X;return await b.getOAuthSignInUrl(r)}catch(r){let t=r instanceof Error?r.message:"Google sign in failed";throw e(n=>{n.error=t}),o.onLoginError?.(new Error(t)),r}},signUpWithEmail:async(o,r)=>{let{eventCallbacks:t}=s();e(n=>{n.isLoading=!0,n.error=null});try{let n=await b.signUp({email:o,password:r});return n.data&&t.onSignupSuccess?.(),n}catch(n){let i=n instanceof Error?n.message:"Signup failed";throw e(a=>{a.error=i}),t.onSignupError?.(new Error(i)),n}finally{e(n=>{n.isLoading=!1,n.user=null,n.isSignedIn=!1})}},signOut:async()=>{let{eventCallbacks:o,cleanupFunctions:r}=s();e(t=>{t.isLoading=!0,t.error=null});try{if(e(i=>{i.user=null,i.isSignedIn=!1,i.error=null}),I.isTokenExpired()){I.clearTokens(),localStorage.clear();return}let n=I.getRefreshToken();n&&await b.logout({refreshToken:n}),localStorage.clear(),I.clearTokens();try{r.clearQueryCache?.(),r.clearOrganization?.(),r.clearCustomData?.(),r.clearHeaders?.()}catch(i){console.warn("Error during logout cleanup:",i)}o.onLogoutSuccess?.()}catch(t){console.log(t);let n=t instanceof Error?t.message:"Logout failed";throw e(i=>{i.error=n}),o.onLogoutError?.(new Error(n)),t}finally{e(t=>{t.isLoading=!1})}},sendPasswordResetEmail:async o=>{e(r=>{r.isLoading=!0,r.error=null});try{await D.forgotPassword({email:o})}catch(r){let t=r instanceof Error?r.message:"Failed to send reset email";throw e(n=>{n.error=t}),r}finally{e(r=>{r.isLoading=!1})}},resetPassword:async o=>{e(r=>{r.isLoading=!0,r.error=null});try{return await D.resetPassword(o)}catch(r){let t=r instanceof Error?r.message:"Failed to reset password";throw e(n=>{n.error=t}),r}finally{e(r=>{r.isLoading=!1})}},changePassword:async o=>{e(r=>{r.isLoading=!0,r.error=null});try{return await D.changePassword(o)}catch(r){throw r}finally{e(r=>{r.isLoading=!1})}},verifyEmailCode:async o=>{e(r=>{r.isLoading=!0,r.error=null});try{return await D.verifyEmail(o)}catch(r){let t=r instanceof Error?r.message:"Failed to send reset email";throw e(n=>{n.error=t}),r}finally{e(r=>{r.isLoading=!1})}},sendVerifyCode:async o=>{e(r=>{r.isLoading=!0,r.error=null});try{return await D.sendVerifyCode(o)}catch(r){let t=r instanceof Error?r.message:"Failed to send verify code";throw e(n=>{n.error=t}),r}finally{e(r=>{r.isLoading=!1})}},refreshToken:async o=>await b.refreshToken({refreshToken:o??I.getRefreshToken()??""}),clearError:()=>e(o=>{o.error=null}),setUser:o=>e(r=>{r.user=o}),setIsSignedIn:o=>e(r=>{r.isSignedIn=o}),setIsInitialized:o=>e(r=>{r.isInitialized=o}),patchUser:o=>e(r=>{r.user?r.user={...r.user,...o}:r.user=o}),initialize:()=>{e(o=>{let r=I.getAuthToken();o.isSignedIn=!!r,o.isInitialized=!0})},syncAuthState:()=>{e(o=>{let r=I.getAuthToken(),t=o.isSignedIn;o.isSignedIn=!!r,t!==o.isSignedIn&&(o.isSignedIn?o.eventCallbacks?.onAuthStateChange?.(o.user,!0):o.eventCallbacks?.onAuthStateChange?.(null,!1))})}}}))),{version:1,name:"auth-store",storage:oo(()=>localStorage),partialize:e=>({isSignedIn:e.isSignedIn,user:e.user})}))),k=()=>{let e=f(i=>i.user),s=f(i=>i.isSignedIn),o=f(i=>i.isInitialized),r=f(i=>i.isLoading),t=f(i=>i.error),n=f(i=>i.actions);return{user:e,isSignedIn:s,isInitialized:o,isLoading:r,error:t,...n}};import ao from"jwt-decode";var or=(e,s)=>{let o={...e},r={};try{r=ao(s)}catch(t){console.warn("Failed to decode token in transformUserData:",t)}return o.exp=r.exp||0,o.accessToken=s||"",o.roles=r?.roles||["USER"],o.account_type=r?.account_type||0,o.picture=e.picture||"",o};import{userService as mo}from"@phygitallabs/api-core";import{usePGLCoreService as fo}from"@phygitallabs/api-core";import{useAchievementService as go}from"@phygitallabs/achievement";import{useRewardService as ho}from"@phygitallabs/reward";import{useGenerateCertificateService as Ao}from"@phygitallabs/generate-certificate";import{useQuery as co}from"@tanstack/react-query";import{tokenStorage as Pe}from"@phygitallabs/authentication";function tr(){let{refreshToken:e,signOut:s}=k(),o=async()=>{try{if(!Pe.isTokenExpired())return;let t=await e();t.data?.idToken&&t.data?.refreshToken&&Pe.setTokens({idToken:t.data?.idToken,refreshToken:t.data?.refreshToken})}catch(r){console.error("Failed to refresh token:",r),s()}};co({queryKey:["refresh-token"],queryFn:()=>o(),refetchInterval:1800*1e3,refetchIntervalInBackground:!1,refetchOnWindowFocus:!0,retry:!1,enabled:!!Pe.getAuthToken()})}import{jsx as nr,jsxs as yo}from"react/jsx-runtime";var vo=()=>{let{updateHeaders:e}=lo(),{updateHeaders:s,coreApi:o}=fo(),{updateHeaders:r}=go(),{updateHeaders:t}=ho(),{updateHeaders:n}=Ao();return po(()=>{f.getState().actions.initialize();let i=re.getAuthToken();if(i){e({Authorization:`Bearer ${i}`}),s({Authorization:`Bearer ${i}`}),r({Authorization:`Bearer ${i}`}),t({Authorization:`Bearer ${i}`}),n({Authorization:`Bearer ${i}`});let{user:g}=f.getState();g&&g.accessToken!==i&&f.getState().actions.setUser({...g,accessToken:i})}let a=f.getState().isSignedIn,c=f.subscribe(g=>[g.isSignedIn,g.user],async([g])=>{if(g!==a)if(a=g,g){let p=re.getAuthToken();if(p){e({Authorization:`Bearer ${p}`}),s({Authorization:`Bearer ${p}`}),r({Authorization:`Bearer ${p}`}),t({Authorization:`Bearer ${p}`}),n({Authorization:`Bearer ${p}`});try{let P=await mo(o).getMyProfile(),w=or(P,p);f.getState().actions.setUser(w)}catch{f.getState().actions.signOut()}}let{eventCallbacks:m,user:h}=f.getState();m?.onAuthStateChange?.(h,!0)}else{e({}),s({}),r({Authorization:""}),t({Authorization:""}),n({Authorization:""});let{eventCallbacks:p}=f.getState();p?.onAuthStateChange?.(null,!1)}}),T=re.addTokenChangeListener(async()=>{let{isSignedIn:g,user:p}=f.getState();if(g){let m=re.getAuthToken();m?(e({Authorization:`Bearer ${m}`}),s({Authorization:`Bearer ${m}`}),r({Authorization:`Bearer ${m}`}),t({Authorization:`Bearer ${m}`}),n({Authorization:`Bearer ${m}`}),p&&p.accessToken!==m&&f.getState().actions.setUser({...p,accessToken:m})):(f.getState().actions.signOut(),e({}),s({}),r({Authorization:""}),t({Authorization:""}),n({Authorization:""}))}});return()=>{c(),T()}},[e,s,r,t,n,o]),null},Ro=()=>(tr(),null),N=({children:e,baseURL:s,queryClient:o})=>yo(uo,{axiosConfig:{headers:{"Content-Type":"application/json"}},baseURL:s,queryClient:o,children:[nr(vo,{}),nr(Ro,{}),e]});import{useRef as oe,useCallback as te,useEffect as sr}from"react";import{tokenStorage as Co}from"@phygitallabs/authentication";function ne(e={}){let{onSuccess:s,onError:o,onPopupBlocked:r,onPopupClosed:t}=e,{signInWithGoogle:n,refreshToken:i,setIsSignedIn:a,setIsLoading:c,isLoading:T}=k(),g=oe(null),p=oe(!1),m=oe(null),h=oe(null),F=te(async A=>{if(A)try{let v=await i(A);v.data?.idToken&&v.data?.refreshToken&&(Co.setTokens({idToken:v.data.idToken,refreshToken:v.data.refreshToken}),a(!0),c(!1),s?.())}catch(v){let R=v instanceof Error?v.message:"Token refresh failed";h.current=R,o?.(R),c(!1)}},[i,a,c,s,o]),P=te(()=>{m.current&&(clearInterval(m.current),m.current=null),p.current=!1},[]),w=te(A=>{let v=ee.concat(window?.location?.origin);if(A.origin!=="*"&&!v.includes(A.origin)){console.warn("Rejected message from untrusted origin:",A.origin);return}if(!A.data||typeof A.data!="object"){console.warn("Invalid message data received");return}if(A.data.type==="LOGIN_SUCCESS"){let{refreshToken:R}=A.data;R&&F(R),p.current=!0,P()}else if(A.data.type==="LOGIN_ERROR"){let R=A.data.error||"Login failed";h.current=R,o?.(R),c(!1),p.current=!0,P()}},[F,c,P,o]),$r=te(async()=>{let R=window.screenX+(window.outerWidth-500)/2,Vr=window.screenY+(window.outerHeight-600)/2;try{h.current=null,c(!0);let B=await n();if(g.current=window.open(`${B.statusMessage}`,"oauthPopup",`width=500,height=600,left=${R},top=${Vr},resizable,scrollbars`),!g.current){c(!1);let C="Popup blocked. Please allow popups for this site.";h.current=C,r?.(),o?.(C);return}m.current=setInterval(()=>{if(g.current&&g.current.closed&&(m.current&&(clearInterval(m.current),m.current=null),!p.current)){let C="Authentication popup was closed";h.current=C,t?.(),o?.(C),c(!1)}},500)}catch(B){let C=B instanceof Error?B.message:"Google sign in failed";h.current=C,o?.(C),c(!1)}},[n,c,w,o,r,t]);return sr(()=>(window.addEventListener("message",w),()=>{window.removeEventListener("message",w)}),[w]),sr(()=>()=>{P()},[P,w]),{signIn:$r,isLoading:T,error:h.current}}import{v4 as Io}from"uuid";var we=async()=>{try{return await Po()}catch(e){return console.error("Error generating device fingerprint:",e),Io()}},Po=async()=>{let e=new Date().toISOString(),s=[navigator.userAgent,navigator.language,screen.width,screen.height,screen.colorDepth,Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.platform,navigator.hardwareConcurrency,e].join("::"),r=new TextEncoder().encode(s),t=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(t)).map(a=>a.toString(16).padStart(2,"0")).join("")};var se=()=>typeof window>"u"?null:localStorage.getItem(U),ke=e=>{typeof window>"u"||localStorage.setItem(U,e)},ir=()=>{typeof window>"u"||localStorage.removeItem(U)},ie=async()=>{let e=se();return e||(e=await we(),ke(e)),e},ar=()=>typeof window>"u"?null:localStorage.getItem(L),ae=e=>{typeof window>"u"||localStorage.setItem(L,e)},cr=()=>{typeof window>"u"||localStorage.removeItem(L)},dr=()=>typeof window>"u"?null:localStorage.getItem(O),ur=e=>{typeof window>"u"||localStorage.setItem(O,e)},lr=()=>typeof window>"u"?null:localStorage.getItem(x),pr=e=>{typeof window>"u"||localStorage.setItem(x,e)},mr=()=>{typeof window>"u"||localStorage.removeItem(x)},fr=()=>typeof window>"u"?null:localStorage.getItem(_),gr=e=>{typeof window>"u"||localStorage.setItem(_,e)},hr=()=>{typeof window>"u"||localStorage.removeItem(_)},Ar=()=>{if(typeof window>"u")return null;let e=localStorage.getItem(E);if(!e)return null;try{return JSON.parse(e)}catch(s){return console.error("Failed to parse stored user data:",s),null}},vr=e=>{typeof window>"u"||localStorage.setItem(E,JSON.stringify(e))},Rr=()=>{typeof window>"u"||localStorage.removeItem(E)};import{useMyProfile as yr,useUpdateMyProfile as Cr,useSyncCheckin as Ir,useCancelUserRewardsRequest as Pr}from"@phygitallabs/api-core";import{UserSourceType as wr}from"@phygitallabs/api-core";import{useEffect as kr}from"react";import{useChipScanStory as Te}from"@phygitallabs/api-core";import{usePGLCoreService as Se}from"@phygitallabs/api-core";function Tr({token:e,id:s,onScanChipError:o}){let{updateHeaders:r}=Se();kr(()=>{if(e){let c={"Chip-Authorization":e};ae(e),r(c)}},[e,r]);let{data:t,isLoading:n,isError:i,isSuccess:a}=Te({token:e,id:s});return kr(()=>{i&&o?.()},[i,o]),t?{data:{externalUrl:t?.external_url,campaignDetail:t?.project,locationDetail:t?.location,scanCounter:t?.scan_counter,campaignId:t?.campaign_id,chipModelId:t?.chip_model_id,organizationId:t?.organization_id,projectId:t?.project_id,locationId:t?.location_id,chipUid:t?.uid},isLoading:n,isError:i,isSuccess:a}:{data:null,isLoading:n,isError:i,isSuccess:a}}import{useOneCampaign as ce,useUserCampaignAction as de,useOneUserCampaign as ue}from"@phygitallabs/api-core";import{CampaignState as Sr}from"@phygitallabs/api-core";var Ee=(t=>(t.CHECK_IN="check_in",t.CREATE_MEMORY="create_memory",t.FILL_FORM="fill_form",t.SHARE="share",t))(Ee||{});import{useManyLocations as le,useOneLocation as pe,useUserCampaignsCompletedLocation as me,useManyUserActionLocations as fe,locationQueryKeys as ge}from"@phygitallabs/api-core";var xe=e=>[...e].sort((s,o)=>(s.index??0)-(o.index??0)),_e=(e,s,o)=>e.filter(r=>r[s]===o);import{useGenerateThaocamvienCertificate as Er,useGenerateTemplateCertificate as xr,useGenerateFansipanCertificate as _r,useCreateCertificate as Ur,useCreateCertificateAnonymous as Lr,useCreateCertificateWithMask as Mr}from"@phygitallabs/generate-certificate";import{wrapTextWithFont as Or}from"@phygitallabs/generate-certificate";import Ae from"posthog-js";import{createContext as wo,useEffect as ko,useReducer as To}from"react";import{v4 as So}from"uuid";var br=()=>typeof window<"u";import{jsx as Uo}from"react/jsx-runtime";var he=wo(null);function Eo(){return So()}async function xo(e){try{let s=(await import("@openreplay/tracker")).default,o=e?.userIdEnabled&&e?.getUserId?e.getUserId:Eo,r={projectKey:e?.projectKey||process.env.NEXT_PUBLIC_OPENREPLAY_PROJECT_KEY,ingestPoint:e?.ingestPoint,captureExceptions:e.captureExceptions??!0,capturePerformance:e.capturePerformance??!0,network:e.network||{capturePayload:!0,sanitizer:n=>n},console:e.console||{levels:["error","warn","log"]},obscureTextEmails:e.obscureTextEmails??!0,obscureTextNumbers:e.obscureTextNumbers??!1,obscureInputEmails:e.obscureInputEmails??!0,__DISABLE_SECURE_MODE:e.__DISABLE_SECURE_MODE??(typeof process<"u"&&process.env?.NODE_ENV==="development")},t=new s(r);if(e?.userIdEnabled){let n=o();t.setUserID(n),console.log("User ID set:",n)}return console.log("OpenReplay tracker initialized"),console.log("Project Key:",r.projectKey),console.log("Ingest Point:",r.ingestPoint),t}catch(s){throw console.error("Failed to create tracker:",s),s}}function _o(e,s){let{debug:o=!1}=e.config;switch(s.type){case"init":return!e.tracker&&br()?!e.config.projectKey&&!process.env.NEXT_PUBLIC_OPENREPLAY_PROJECT_KEY?(console.warn(o,"Project key not found. Skipping session replay initialization."),e):{...e,tracker:xo(e.config)}:e;case"start":return e.tracker?Promise.resolve(e.tracker).then(r=>{r.start(),console.log(o,"Session replay tracker started")}).catch(r=>{console.error("Failed to start tracker:",r)}):console.warn(o,"Tracker not initialized. Call initTracker() first."),e;case"setUserId":return e.tracker?Promise.resolve(e.tracker).then(r=>{r.setUserID(s.payload),console.log(o,"User ID updated:",s.payload)}).catch(r=>{console.error("Failed to set user ID:",r)}):console.warn(o,"Tracker not initialized. Call initTracker() first."),e;case"setMetadata":return e.tracker?Promise.resolve(e.tracker).then(r=>{Object.entries(s.payload||{})?.forEach(([t,n])=>{r.setMetadata(t,n)}),console.log(o,"Metadata updated:",s.payload.metadata)}).catch(r=>{console.error("Failed to set metadata:",r)}):console.warn(o,"Tracker not initialized. Call initTracker() first."),e;default:return e}}var Ue=({children:e,config:s={}})=>{let[,o]=To(_o,{tracker:null,config:s}),r=()=>o({type:"init"}),t=()=>o({type:"start"}),n=a=>o({type:"setUserId",payload:a}),i=a=>o({type:"setMetadata",payload:a});return ko(()=>{r(),t()},[]),Uo(he.Provider,{value:{initTracker:r,startTracking:t,setUserId:n,setMetadata:i},children:e})};import{useContext as Lo}from"react";function Le(){let e=Lo(he);if(!e)throw new Error("useSessionReplay must be used within a SessionReplayProvider. Make sure your component is wrapped with <SessionReplayProvider>.");return e}var Mo=(e,s)=>{try{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:e,...s})}catch(o){console.error(o)}},Oo=(e,s)=>{if(typeof gtag!="function"){console.error("gtag is not a function");return}gtag("event",e,s)},bo=(e,s)=>{Ae.capture(e,s)};function Dr(){let{setUserId:e,setMetadata:s}=Le();return{trackEvent:(n,i,a)=>{a=a||["gtm"],a.includes("gtm")&&typeof window<"u"&&Mo(n,i),a.includes("ga")&&typeof gtag=="function"&&Oo(n,i),a.includes("posthog")&&typeof Ae=="function"&&bo(n,i)},trackUserIdentify:n=>{Ae.identify(n.email,{email:n.email,name:n.name,avatar:n.avatar,uid:n.uid}),e(n.id),s({user_email:n.email})},trackLogoutEvent:()=>{Ae.capture("user_signed_out")}}}import{useMemo as Ko}from"react";import{useEffect as Do,useState as No}from"react";import{PGLCoreServiceProvider as Go}from"@phygitallabs/api-core";import{RewardServiceProvider as Fo}from"@phygitallabs/reward";import{AchievementServiceProvider as Bo}from"@phygitallabs/achievement";import{GenerateCertificateServiceProvider as zo}from"@phygitallabs/generate-certificate";import{Fragment as Wo,jsx as G}from"react/jsx-runtime";var Nr=({children:e,queryClient:s,apiConfig:o={environment:"dev",version:"v1"}})=>{let{environment:r,version:t}=o,[n,i]=No(null);return Do(()=>{(async()=>{try{let c=await ie();i({queryClient:s,axiosConfig:{headers:{"Content-Type":"application/json","Device-UID":c}},responseInterceptors:{onFulfilled:h=>h,onRejected:async h=>Promise.reject(h)},requestInterceptors:{onFulfilled:h=>h,onRejected:h=>Promise.reject(h)},useDevTool:!0})}catch(c){console.error(c)}})()},[s]),n?G(Go,{...n,baseURL:`${y[r].API_BASE_URL}/${t}`,baseCoreURL:`${y[r].API_BASE_CORE_URL}/${t}`,children:G(Fo,{...n,baseURL:`${y[r].API_REWARD_URL}/v1`,children:G(Bo,{...n,baseURL:`${y[r].API_ACHIEVEMENT_URL}/${t}`,children:G(zo,{...n,baseURL:`${y[r].API_GENERATE_CERTIFICATE_URL}/v1`,children:e})})})}):G(Wo,{})};import{jsx as Me}from"react/jsx-runtime";var Gr=({children:e,queryClient:s,apiConfig:o})=>{let{environment:r}=o,t=Ko(()=>{let n=process.env.NEXT_PUBLIC_OPENREPLAY_PROJECT_KEY;if(n)return{projectKey:n,ingestPoint:process.env.NEXT_PUBLIC_OPENREPLAY_INGEST_POINT,debug:process.env.NODE_ENV==="development",captureExceptions:!0,capturePerformance:!0,obscureTextEmails:!0,obscureInputEmails:!0}},[]);return Me(Ue,{config:t,children:Me(Nr,{queryClient:s,apiConfig:o,children:Me(N,{baseURL:`${y[r].API_BASE_URL}`,queryClient:s,children:e})})})};import{useManyAchievements as $o}from"@phygitallabs/achievement";import{useCreateModelGroupReward as Vo}from"@phygitallabs/reward";import{useEffect as qo,useMemo as Fr}from"react";function Ho(e,s){if(!s?.reward_models)return[];let o=s.reward_models;return e.map((r,t)=>{let n=o[t]?.[0]||null,i=r.subAchievementIds?.map((a,c)=>{let T=o[t*(r.subAchievementIds?.length||0)+c+1]?.[0]||null;return{id:a,reward_model:T}})||[];return{id:r.id,name:r.name,reward_model:n,subAchievements:i}})}var Zo=({campaignId:e})=>{let{data:s,isLoading:o}=$o({"filter.labels":{campaign_id:e},"filter.type":"group_mission","pagination.limit":200},{enabled:!!e}),r=Fr(()=>s?.data?s.data.map(c=>c.groupRewardId).filter(c=>c!==void 0):[],[s?.data]),{mutate:t,data:n,isPending:i}=Vo();return qo(()=>{r.length>0&&t({group_reward_ids:r})},[r,t]),{mappedAchievements:Fr(()=>!n?.data||!s?.data?[]:Ho(s.data,n.data),[n,s?.data]),isLoading:o||i}},ve=Zo;import{useSendEmail as Br}from"@phygitallabs/api-core";import{cn as zr,parse as Wr,fileToBase64 as Kr}from"@phygitallabs/helpers";d(Re,l);export{ee as ALLOWED_ORIGINS,Ve as AchievementRuleActionType,qe as AchievementServiceProvider,Ce as AchievementType,N as AuthProvider,X as CALLBACK_URL,Sr as CampaignState,He as CmentityRewardType,J as NotificationProvider,Ie as RewardClaimStatus,Gr as TapquestCoreProvider,Ee as TaskType,wr as UserSourceType,x as accessTokenKey,ie as checkDeviceUid,L as chipAuthTokenKey,zr as cn,S as convertSnakeToCamel,U as deviceUIDKey,Kr as fileToBase64,_e as filterLocationsByProperty,we as generateDeviceId,lr as getAccessToken,Ne as getActionsFromAchievementRule,ar as getChipAuthToken,se as getDeviceUid,De as getLocationIdsFromAchievementRule,fr as getRefreshToken,dr as getRetryAttemptsRefreshToken,Ar as getUserInfo,rr as httpMaxRetries,M as isAchievementCompleted,ge as locationQueryKeys,er as memoriesKey,Wr as parse,_ as refreshTokenKey,mr as removeAccessToken,cr as removeChipAuthToken,ir as removeDeviceUid,hr as removeRefreshToken,Rr as removeUserInfo,Xe as resetMemoriesQuery,O as retryAttemptsRefreshToken,pr as setAccessToken,ae as setChipAuthToken,ke as setDeviceUid,gr as setRefreshToken,ur as setRetryAttemptsRefreshToken,vr as setUserInfo,xe as sortLocationsByIndex,Ge as useAchievementProgress,ve as useAchivementPlusRewardModel,k as useAuth,ce as useCampaignDetail,Pr as useCancelUserRewardsRequest,Te as useChipScanStory,K as useClaimUserReward,Q as useClearUserRewardCache,Ur as useCreateCertificate,Lr as useCreateCertificateAnonymous,Mr as useCreateCertificateWithMask,Ye as useCreateMemory,j as useCreateModelGroupReward,q as useCreateRewardModel,Dr as useDataTracking,Z as useDeleteRewardModel,_r as useGenerateFansipanCertificate,xr as useGenerateTemplateCertificate,Er as useGenerateThaocamvienCertificate,V as useGetRewardModel,W as useGetUserRewards,ne as useGoogleLogin,Qe as useInfiniteMemories,$ as useListRewardModels,pe as useLocationDetail,me as useLocationProgress,le as useLocationsList,$e as useManyAchievementProgress,Fe as useManyAchievements,Ke as useManyAchievementsRewardModels,ze as useManyChildrenAchievements,je as useManyMemory,fe as useManyUserActionLocations,z as useManyUserRewards,yr as useMyProfile,We as useOneAchievement,Ze as useOneMemory,ue as useOneUserCampaign,Se as usePGLCoreService,Tr as useScanChip,Br as useSendEmail,Ir as useSyncCheckin,Cr as useUpdateMyProfile,H as useUpdateRewardModel,Je as useUploadMedia,Be as useUserAchievementAction,de as useUserCampaignAction,Y as useV1ListRewards,E as userInfoKey,Or as wrapTextWithFont};
1
+ import {useUserAchievementAction,useOneAchievement,useManyChildrenAchievements,useManyAchievementsRewardModels,useManyAchievements,useAchievementProgress,AchievementServiceProvider,AchievementRuleActionType,useManyAchievementProgress,useAchievementService}from'@phygitallabs/achievement';export{AchievementRuleActionType,AchievementServiceProvider,useAchievementProgress,useManyAchievements,useManyAchievementsRewardModels,useManyChildrenAchievements,useOneAchievement,useUserAchievementAction}from'@phygitallabs/achievement';import {useUserCampaignAction,useUploadMedia,useUpdateMyProfile,useSyncCheckin,useSendEmail,usePGLCoreService,useOneUserCampaign,useOneMemory,useMyProfile,useManyUserActionLocations,useManyMemory,useManyLocations,useUserCampaignsCompletedLocation,useOneLocation,useInfiniteMemories,useCreateMemory,useChipScanStory,useCancelUserRewardsRequest,useOneCampaign,resetMemoriesQuery,memoriesKey,locationQueryKeys,UserSourceType,CampaignState,useManyAchievementProgressByDevice,userService,PGLCoreServiceProvider}from'@phygitallabs/api-core';export{CampaignState,UserSourceType,locationQueryKeys,memoriesKey,resetMemoriesQuery,useOneCampaign as useCampaignDetail,useCancelUserRewardsRequest,useChipScanStory,useCreateMemory,useInfiniteMemories,useOneLocation as useLocationDetail,useUserCampaignsCompletedLocation as useLocationProgress,useManyLocations as useLocationsList,useManyMemory,useManyUserActionLocations,useMyProfile,useOneMemory,useOneUserCampaign,usePGLCoreService,useSendEmail,useSyncCheckin,useUpdateMyProfile,useUploadMedia,useUserCampaignAction}from'@phygitallabs/api-core';import {useV1ListRewards,useUpdateRewardModel,useManyUserRewards,useListRewardModels,useGetUserRewards,useGetRewardModel,useDeleteRewardModel,useCreateRewardModel,useCreateModelGroupReward,useClearUserRewardCache,useClaimUserReward,CmentityRewardType,useRewardService,RewardServiceProvider}from'@phygitallabs/reward';export{CmentityRewardType,useClaimUserReward,useClearUserRewardCache,useCreateModelGroupReward,useCreateRewardModel,useDeleteRewardModel,useGetRewardModel,useGetUserRewards,useListRewardModels,useManyUserRewards,useUpdateRewardModel,useV1ListRewards}from'@phygitallabs/reward';import*as yt from'@phygitallabs/notification-api';import {NotificationProvider}from'@phygitallabs/notification-api';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {authService,tokenStorage,verifyCodeService,AuthenticationProvider,useAuthenticationHeaders}from'@phygitallabs/authentication';import {createContext,useRef,useCallback,useEffect,useMemo,useContext,useReducer,useState}from'react';import {create}from'zustand';import {immer}from'zustand/middleware/immer';import {devtools,persist,subscribeWithSelector,createJSONStorage}from'zustand/middleware';import {jwtDecode}from'jwt-decode';import {wrapTextWithFont,useGenerateThaocamvienCertificate,useGenerateTemplateCertificate,useGenerateFansipanCertificate,useCreateCertificateWithMask,useCreateCertificateAnonymous,useCreateCertificate,useGenerateCertificateService,GenerateCertificateServiceProvider}from'@phygitallabs/generate-certificate';export{useCreateCertificate,useCreateCertificateAnonymous,useCreateCertificateWithMask,useGenerateFansipanCertificate,useGenerateTemplateCertificate,useGenerateThaocamvienCertificate,wrapTextWithFont}from'@phygitallabs/generate-certificate';import {useQuery}from'@tanstack/react-query';import {v4}from'uuid';import he from'posthog-js';import {parse,fileToBase64,cn}from'@phygitallabs/helpers';export{cn,fileToBase64,parse}from'@phygitallabs/helpers';var De=Object.defineProperty;var qr=Object.getOwnPropertyDescriptor;var Hr=Object.getOwnPropertyNames;var jr=Object.prototype.hasOwnProperty;var Re=(e,s)=>{for(var o in s)De(e,o,{get:s[o],enumerable:true});},Me=(e,s,o,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of Hr(s))!jr.call(e,t)&&t!==o&&De(e,t,{get:()=>s[t],enumerable:!(r=qr(s,t))||r.enumerable});return e},d=(e,s,o)=>(Me(e,s,"default"),o);var ye={};Re(ye,{ALLOWED_ORIGINS:()=>ee,AchievementRuleActionType:()=>AchievementRuleActionType,AchievementServiceProvider:()=>AchievementServiceProvider,AchievementType:()=>Ce,AuthProvider:()=>G,CALLBACK_URL:()=>Z,CampaignState:()=>CampaignState,CmentityRewardType:()=>CmentityRewardType,NotificationProvider:()=>X,RewardClaimStatus:()=>Ae,TapquestCoreProvider:()=>Nr,TaskType:()=>Ee,UserSourceType:()=>UserSourceType,accessTokenKey:()=>U,checkDeviceUid:()=>se,chipAuthTokenKey:()=>L,cn:()=>cn,convertSnakeToCamel:()=>T,deviceUIDKey:()=>_,fileToBase64:()=>fileToBase64,filterLocationsByProperty:()=>xe,generateDeviceId:()=>we,getAccessToken:()=>lr,getActionsFromAchievementRule:()=>Ge,getChipAuthToken:()=>ar,getDeviceUid:()=>ke,getLocationIdsFromAchievementRule:()=>Oe,getRefreshToken:()=>fr,getRetryAttemptsRefreshToken:()=>dr,getUserInfo:()=>vr,httpMaxRetries:()=>rr,isAchievementCompleted:()=>b,locationQueryKeys:()=>locationQueryKeys,memoriesKey:()=>memoriesKey,parse:()=>parse,refreshTokenKey:()=>x,removeAccessToken:()=>mr,removeChipAuthToken:()=>cr,removeDeviceUid:()=>ir,removeRefreshToken:()=>hr,removeUserInfo:()=>Rr,resetMemoriesQuery:()=>resetMemoriesQuery,retryAttemptsRefreshToken:()=>M,setAccessToken:()=>pr,setChipAuthToken:()=>ie,setDeviceUid:()=>Se,setRefreshToken:()=>gr,setRetryAttemptsRefreshToken:()=>ur,setUserInfo:()=>yr,sortLocationsByIndex:()=>Ue,useAchievementProgress:()=>useAchievementProgress,useAchivementPlusRewardModel:()=>ve,useAuth:()=>S,useCampaignDetail:()=>useOneCampaign,useCancelUserRewardsRequest:()=>useCancelUserRewardsRequest,useChipScanStory:()=>useChipScanStory,useClaimUserReward:()=>useClaimUserReward,useClearUserRewardCache:()=>useClearUserRewardCache,useCreateCertificate:()=>useCreateCertificate,useCreateCertificateAnonymous:()=>useCreateCertificateAnonymous,useCreateCertificateWithMask:()=>useCreateCertificateWithMask,useCreateMemory:()=>useCreateMemory,useCreateModelGroupReward:()=>useCreateModelGroupReward,useCreateRewardModel:()=>useCreateRewardModel,useDataTracking:()=>Or,useDeleteRewardModel:()=>useDeleteRewardModel,useGenerateFansipanCertificate:()=>useGenerateFansipanCertificate,useGenerateTemplateCertificate:()=>useGenerateTemplateCertificate,useGenerateThaocamvienCertificate:()=>useGenerateThaocamvienCertificate,useGetRewardModel:()=>useGetRewardModel,useGetUserRewards:()=>useGetUserRewards,useGoogleLogin:()=>ne,useInfiniteMemories:()=>useInfiniteMemories,useListRewardModels:()=>useListRewardModels,useLocationDetail:()=>useOneLocation,useLocationProgress:()=>useUserCampaignsCompletedLocation,useLocationsList:()=>useManyLocations,useManyAchievementProgress:()=>We,useManyAchievements:()=>useManyAchievements,useManyAchievementsRewardModels:()=>useManyAchievementsRewardModels,useManyChildrenAchievements:()=>useManyChildrenAchievements,useManyMemory:()=>useManyMemory,useManyUserActionLocations:()=>useManyUserActionLocations,useManyUserRewards:()=>useManyUserRewards,useMyProfile:()=>useMyProfile,useOneAchievement:()=>useOneAchievement,useOneMemory:()=>useOneMemory,useOneUserCampaign:()=>useOneUserCampaign,usePGLCoreService:()=>usePGLCoreService,useScanChip:()=>Ir,useSendEmail:()=>useSendEmail,useSyncCheckin:()=>useSyncCheckin,useUpdateMyProfile:()=>useUpdateMyProfile,useUpdateRewardModel:()=>useUpdateRewardModel,useUploadMedia:()=>useUploadMedia,useUserAchievementAction:()=>useUserAchievementAction,useUserCampaignAction:()=>useUserCampaignAction,useV1ListRewards:()=>useV1ListRewards,userInfoKey:()=>E,wrapTextWithFont:()=>wrapTextWithFont});var l={};Re(l,{ALLOWED_ORIGINS:()=>ee,AchievementRuleActionType:()=>AchievementRuleActionType,AchievementServiceProvider:()=>AchievementServiceProvider,AchievementType:()=>Ce,AuthProvider:()=>G,CALLBACK_URL:()=>Z,CampaignState:()=>CampaignState,CmentityRewardType:()=>CmentityRewardType,NotificationProvider:()=>X,RewardClaimStatus:()=>Ae,TapquestCoreProvider:()=>Nr,TaskType:()=>Ee,UserSourceType:()=>UserSourceType,accessTokenKey:()=>U,checkDeviceUid:()=>se,chipAuthTokenKey:()=>L,cn:()=>cn,convertSnakeToCamel:()=>T,deviceUIDKey:()=>_,fileToBase64:()=>fileToBase64,filterLocationsByProperty:()=>xe,generateDeviceId:()=>we,getAccessToken:()=>lr,getActionsFromAchievementRule:()=>Ge,getChipAuthToken:()=>ar,getDeviceUid:()=>ke,getLocationIdsFromAchievementRule:()=>Oe,getRefreshToken:()=>fr,getRetryAttemptsRefreshToken:()=>dr,getUserInfo:()=>vr,httpMaxRetries:()=>rr,isAchievementCompleted:()=>b,locationQueryKeys:()=>locationQueryKeys,memoriesKey:()=>memoriesKey,parse:()=>parse,refreshTokenKey:()=>x,removeAccessToken:()=>mr,removeChipAuthToken:()=>cr,removeDeviceUid:()=>ir,removeRefreshToken:()=>hr,removeUserInfo:()=>Rr,resetMemoriesQuery:()=>resetMemoriesQuery,retryAttemptsRefreshToken:()=>M,setAccessToken:()=>pr,setChipAuthToken:()=>ie,setDeviceUid:()=>Se,setRefreshToken:()=>gr,setRetryAttemptsRefreshToken:()=>ur,setUserInfo:()=>yr,sortLocationsByIndex:()=>Ue,useAchievementProgress:()=>useAchievementProgress,useAchivementPlusRewardModel:()=>ve,useAuth:()=>S,useCampaignDetail:()=>useOneCampaign,useCancelUserRewardsRequest:()=>useCancelUserRewardsRequest,useChipScanStory:()=>useChipScanStory,useClaimUserReward:()=>useClaimUserReward,useClearUserRewardCache:()=>useClearUserRewardCache,useCreateCertificate:()=>useCreateCertificate,useCreateCertificateAnonymous:()=>useCreateCertificateAnonymous,useCreateCertificateWithMask:()=>useCreateCertificateWithMask,useCreateMemory:()=>useCreateMemory,useCreateModelGroupReward:()=>useCreateModelGroupReward,useCreateRewardModel:()=>useCreateRewardModel,useDataTracking:()=>Or,useDeleteRewardModel:()=>useDeleteRewardModel,useGenerateFansipanCertificate:()=>useGenerateFansipanCertificate,useGenerateTemplateCertificate:()=>useGenerateTemplateCertificate,useGenerateThaocamvienCertificate:()=>useGenerateThaocamvienCertificate,useGetRewardModel:()=>useGetRewardModel,useGetUserRewards:()=>useGetUserRewards,useGoogleLogin:()=>ne,useInfiniteMemories:()=>useInfiniteMemories,useListRewardModels:()=>useListRewardModels,useLocationDetail:()=>useOneLocation,useLocationProgress:()=>useUserCampaignsCompletedLocation,useLocationsList:()=>useManyLocations,useManyAchievementProgress:()=>We,useManyAchievements:()=>useManyAchievements,useManyAchievementsRewardModels:()=>useManyAchievementsRewardModels,useManyChildrenAchievements:()=>useManyChildrenAchievements,useManyMemory:()=>useManyMemory,useManyUserActionLocations:()=>useManyUserActionLocations,useManyUserRewards:()=>useManyUserRewards,useMyProfile:()=>useMyProfile,useOneAchievement:()=>useOneAchievement,useOneMemory:()=>useOneMemory,useOneUserCampaign:()=>useOneUserCampaign,usePGLCoreService:()=>usePGLCoreService,useScanChip:()=>Ir,useSendEmail:()=>useSendEmail,useSyncCheckin:()=>useSyncCheckin,useUpdateMyProfile:()=>useUpdateMyProfile,useUpdateRewardModel:()=>useUpdateRewardModel,useUploadMedia:()=>useUploadMedia,useUserAchievementAction:()=>useUserAchievementAction,useUserCampaignAction:()=>useUserCampaignAction,useV1ListRewards:()=>useV1ListRewards,userInfoKey:()=>E,wrapTextWithFont:()=>wrapTextWithFont});var Oe=e=>{if(!e.rule)return [];let s=[];return Object.values(e.rule).forEach(o=>{o.rules&&o.rules.forEach(r=>{r.filter&&Object.values(r.filter).forEach(t=>{t.filters&&t.filters.forEach(n=>{n.label==="location_id"&&n.value&&(Array.isArray(n.value)?s.push(...n.value):s.push(n.value));});});});}),Array.from(new Set(s))},Ge=e=>{if(!e.rule)return [];let s=[];return Object.values(e.rule).forEach(o=>{o.rules&&o.rules.forEach(r=>{r.action&&s.push(r.action);});}),Array.from(new Set(s))},b=e=>e.isCompleted||e.overallPercentage===100;function T(e){if(e==null)return e;if(Array.isArray(e))return e.map(s=>T(s));if(typeof e=="object"&&e.constructor===Object){let s={};for(let o in e)if(e.hasOwnProperty(o)){let r=o.replace(/_([a-z])/g,(t,n)=>n.toUpperCase());s[r]=T(e[o]);}return s}return e}var We=(e,s)=>{let o=!!e.userId,r=o?{achievementIds:e.achievementIds,userId:e.userId,applicationId:e.applicationId}:{achievement_ids:e.achievementIds,device_uid:e.deviceUid,applicationId:e.applicationId};return o?useManyAchievementProgress(r,{...s,select:t=>t.map(n=>({...n,isCompleted:b(n)}))}):useManyAchievementProgressByDevice(r,{...s,select:t=>T(t).map(i=>({...i,isCompleted:b(i)}))})};var Ce=(t=>(t.DEFAULT="default",t.MULTIPLE_CHECK_INS="multiple_check_ins",t.RANDOM_CHECK_INS="random_check_ins",t.GROUP_MISSION="group_mission",t))(Ce||{});var Ae=(t=>(t.NOT_CLAIMED="not_claimed",t.CLAIMED="claimed",t.IN_PROGRESS="in_progress",t.FAILED="failed",t))(Ae||{});var u={};Re(u,{NotificationProvider:()=>X});d(u,yt);var Jr={dev:{API_BASE_URL:"https://backend-dev.nomion.io",API_BASE_CORE_URL:"https://backend-dev.nomion.io/core",API_ACHIEVEMENT_URL:"https://backend-dev.nomion.io/achievement",API_REWARD_URL:"https://backend-dev.nomion.io/reward",API_GENERATE_CERTIFICATE_URL:"https://media-prc-dev.nomion.io/api",API_NOTIFICATION_SOCKET_URL:"https://backend-dev.nomion.io/notification-ws/ws"},staging:{API_BASE_URL:"https://backend-staging.nomion.io",API_BASE_CORE_URL:"https://backend-staging.nomion.io/core",API_ACHIEVEMENT_URL:"https://backend-staging.nomion.io/achievement",API_REWARD_URL:"https://backend-staging.nomion.io/reward",API_GENERATE_CERTIFICATE_URL:"https://media-prc-staging.nomion.io/api",API_NOTIFICATION_SOCKET_URL:"https://backend-staging.nomion.io/notification-ws/ws"},production:{API_BASE_URL:"https://backend.nomion.io",API_BASE_CORE_URL:"https://backend.nomion.io/core",API_ACHIEVEMENT_URL:"https://backend.nomion.io/achievement",API_REWARD_URL:"https://backend.nomion.io/reward",API_GENERATE_CERTIFICATE_URL:"https://media-prc.nomion.io/api",API_NOTIFICATION_SOCKET_URL:"https://backend.nomion.io/notification-ws/ws"}},C=Jr;var X=({children:e,autoConnect:s=true,environment:o="dev",user:r,onWebSocketOpen:t,onWebSocketClose:n,onWebSocketMessage:i})=>{let a=C[o]?.API_NOTIFICATION_SOCKET_URL;return jsx(NotificationProvider,{userUid:r?.id,accessToken:r?.accessToken??null,webSocketUrl:a,autoConnect:s,onWebSocketOpen:t,onWebSocketClose:n,onWebSocketMessage:i,children:e})};d(l,u);var E="phygital-user-info",U="accessToken",x="refreshToken",rr=3,M="retryAttemptsRefreshToken",_="Device-UID",L="chip-auth-token",Z="https://s3-sgn10.fptcloud.com/nomion-assets/platform/callback.html",ee=["https://s3-sgn10.fptcloud.com","https://accounts.google.com/"];var io={user:null,isSignedIn:false,isInitialized:false,isLoading:false,error:null,cleanupFunctions:{},eventCallbacks:{}},f=create()(devtools(persist(subscribeWithSelector(immer((e,s)=>({...io,actions:{setIsLoading:o=>e(r=>{r.isLoading=o;}),setCleanupFunctions:o=>e(r=>{r.cleanupFunctions={...r.cleanupFunctions,...o};}),addEventCallbacks:o=>(e(r=>{r.eventCallbacks={...r.eventCallbacks,...o};}),()=>{e(r=>{r.eventCallbacks={...r.eventCallbacks,...o};});}),signInWithEmail:async(o,r)=>{let{eventCallbacks:t}=s();e(n=>{n.isLoading=true,n.error=null;});try{let n=await authService.signIn({email:o,password:r});return n?.data?.idToken&&n?.data?.refreshToken&&(tokenStorage.setTokens({idToken:n.data.idToken,refreshToken:n.data.refreshToken}),e(i=>{i.isSignedIn=!0;}),t.onLoginSuccess?.(n.data.idToken)),n}catch(n){if(n?.response?.data?.code===7)return {data:void 0,message:"Email verification required",code:7};let i=n instanceof Error?n.message:"Login failed";throw e(a=>{a.error=i;}),t.onLoginError?.(new Error(i)),n}finally{e(n=>{n.isLoading=false;});}},signInWithGoogle:async()=>{let{eventCallbacks:o}=s();try{let r=Z;return await authService.getOAuthSignInUrl(r)}catch(r){let t=r instanceof Error?r.message:"Google sign in failed";throw e(n=>{n.error=t;}),o.onLoginError?.(new Error(t)),r}},signUpWithEmail:async(o,r)=>{let{eventCallbacks:t}=s();e(n=>{n.isLoading=true,n.error=null;});try{let n=await authService.signUp({email:o,password:r});return n.data&&t.onSignupSuccess?.(),n}catch(n){let i=n instanceof Error?n.message:"Signup failed";throw e(a=>{a.error=i;}),t.onSignupError?.(new Error(i)),n}finally{e(n=>{n.isLoading=false,n.user=null,n.isSignedIn=false;});}},signOut:async()=>{let{eventCallbacks:o,cleanupFunctions:r}=s();e(t=>{t.isLoading=true,t.error=null;});try{if(e(i=>{i.user=null,i.isSignedIn=!1,i.error=null;}),tokenStorage.isTokenExpired()){tokenStorage.clearTokens(),localStorage.clear();return}let n=tokenStorage.getRefreshToken();n&&await authService.logout({refreshToken:n}),localStorage.clear(),tokenStorage.clearTokens();try{r.clearQueryCache?.(),r.clearOrganization?.(),r.clearCustomData?.(),r.clearHeaders?.();}catch(i){console.warn("Error during logout cleanup:",i);}o.onLogoutSuccess?.();}catch(t){console.log(t);let n=t instanceof Error?t.message:"Logout failed";throw e(i=>{i.error=n;}),o.onLogoutError?.(new Error(n)),t}finally{e(t=>{t.isLoading=false;});}},sendPasswordResetEmail:async o=>{e(r=>{r.isLoading=true,r.error=null;});try{await verifyCodeService.forgotPassword({email:o});}catch(r){let t=r instanceof Error?r.message:"Failed to send reset email";throw e(n=>{n.error=t;}),r}finally{e(r=>{r.isLoading=false;});}},resetPassword:async o=>{e(r=>{r.isLoading=true,r.error=null;});try{return await verifyCodeService.resetPassword(o)}catch(r){let t=r instanceof Error?r.message:"Failed to reset password";throw e(n=>{n.error=t;}),r}finally{e(r=>{r.isLoading=false;});}},changePassword:async o=>{e(r=>{r.isLoading=true,r.error=null;});try{return await verifyCodeService.changePassword(o)}catch(r){throw r}finally{e(r=>{r.isLoading=false;});}},verifyEmailCode:async o=>{e(r=>{r.isLoading=true,r.error=null;});try{return await verifyCodeService.verifyEmail(o)}catch(r){let t=r instanceof Error?r.message:"Failed to send reset email";throw e(n=>{n.error=t;}),r}finally{e(r=>{r.isLoading=false;});}},sendVerifyCode:async o=>{e(r=>{r.isLoading=true,r.error=null;});try{return await verifyCodeService.sendVerifyCode(o)}catch(r){let t=r instanceof Error?r.message:"Failed to send verify code";throw e(n=>{n.error=t;}),r}finally{e(r=>{r.isLoading=false;});}},refreshToken:async o=>await authService.refreshToken({refreshToken:o??tokenStorage.getRefreshToken()??""}),clearError:()=>e(o=>{o.error=null;}),setUser:o=>e(r=>{r.user=o;}),setIsSignedIn:o=>e(r=>{r.isSignedIn=o;}),setIsInitialized:o=>e(r=>{r.isInitialized=o;}),patchUser:o=>e(r=>{r.user?r.user={...r.user,...o}:r.user=o;}),initialize:()=>{e(o=>{let r=tokenStorage.getAuthToken();o.isSignedIn=!!r,o.isInitialized=true;});},syncAuthState:()=>{e(o=>{let r=tokenStorage.getAuthToken(),t=o.isSignedIn;o.isSignedIn=!!r,t!==o.isSignedIn&&(o.isSignedIn?o.eventCallbacks?.onAuthStateChange?.(o.user,true):o.eventCallbacks?.onAuthStateChange?.(null,false));});}}}))),{version:1,name:"auth-store",storage:createJSONStorage(()=>localStorage),partialize:e=>({isSignedIn:e.isSignedIn,user:e.user})}))),S=()=>{let e=f(i=>i.user),s=f(i=>i.isSignedIn),o=f(i=>i.isInitialized),r=f(i=>i.isLoading),t=f(i=>i.error),n=f(i=>i.actions);return {user:e,isSignedIn:s,isInitialized:o,isLoading:r,error:t,...n}};var or=(e,s)=>{let o={...e},r={};try{r=jwtDecode(s);}catch(t){console.warn("Failed to decode token in transformUserData:",t);}return o.exp=r.exp||0,o.accessToken=s||"",o.roles=r?.roles||["USER"],o.account_type=r?.account_type||0,o.picture=e.picture||"",o};function tr(){let{refreshToken:e,signOut:s}=S(),o=async()=>{try{if(!tokenStorage.isTokenExpired())return;let t=await e();t.data?.idToken&&t.data?.refreshToken&&tokenStorage.setTokens({idToken:t.data?.idToken,refreshToken:t.data?.refreshToken});}catch(r){console.error("Failed to refresh token:",r),s();}};useQuery({queryKey:["refresh-token"],queryFn:()=>o(),refetchInterval:1800*1e3,refetchIntervalInBackground:false,refetchOnWindowFocus:true,retry:false,enabled:!!tokenStorage.getAuthToken()});}var yo=()=>{let{updateHeaders:e}=useAuthenticationHeaders(),{updateHeaders:s,coreApi:o}=usePGLCoreService(),{updateHeaders:r}=useAchievementService(),{updateHeaders:t}=useRewardService(),{updateHeaders:n}=useGenerateCertificateService();return useEffect(()=>{f.getState().actions.initialize();let i=tokenStorage.getAuthToken();if(i){e({Authorization:`Bearer ${i}`}),s({Authorization:`Bearer ${i}`}),r({Authorization:`Bearer ${i}`}),t({Authorization:`Bearer ${i}`}),n({Authorization:`Bearer ${i}`});let{user:g}=f.getState();g&&g.accessToken!==i&&f.getState().actions.setUser({...g,accessToken:i});}let a=f.getState().isSignedIn,c=f.subscribe(g=>[g.isSignedIn,g.user],async([g])=>{if(g!==a)if(a=g,g){let p=tokenStorage.getAuthToken();if(p){e({Authorization:`Bearer ${p}`}),s({Authorization:`Bearer ${p}`}),r({Authorization:`Bearer ${p}`}),t({Authorization:`Bearer ${p}`}),n({Authorization:`Bearer ${p}`});try{let w=await userService(o).getMyProfile(),k=or(w,p);f.getState().actions.setUser(k);}catch{f.getState().actions.signOut();}}let{eventCallbacks:m,user:h}=f.getState();m?.onAuthStateChange?.(h,true);}else {e({}),s({}),r({Authorization:""}),t({Authorization:""}),n({Authorization:""});let{eventCallbacks:p}=f.getState();p?.onAuthStateChange?.(null,false);}}),I=tokenStorage.addTokenChangeListener(async()=>{let{isSignedIn:g,user:p}=f.getState();if(g){let m=tokenStorage.getAuthToken();m?(e({Authorization:`Bearer ${m}`}),s({Authorization:`Bearer ${m}`}),r({Authorization:`Bearer ${m}`}),t({Authorization:`Bearer ${m}`}),n({Authorization:`Bearer ${m}`}),p&&p.accessToken!==m&&f.getState().actions.setUser({...p,accessToken:m})):(f.getState().actions.signOut(),e({}),s({}),r({Authorization:""}),t({Authorization:""}),n({Authorization:""}));}});return ()=>{c(),I();}},[e,s,r,t,n,o]),null},Ro=()=>(tr(),null),G=({children:e,baseURL:s,queryClient:o})=>jsxs(AuthenticationProvider,{axiosConfig:{headers:{"Content-Type":"application/json"}},baseURL:s,queryClient:o,children:[jsx(yo,{}),jsx(Ro,{}),e]});function ne(e={}){let{onSuccess:s,onError:o,onPopupBlocked:r,onPopupClosed:t}=e,{signInWithGoogle:n,refreshToken:i,setIsSignedIn:a,setIsLoading:c,isLoading:I}=S(),g=useRef(null),p=useRef(false),m=useRef(null),h=useRef(null),F=useCallback(async v=>{if(v)try{let y=await i(v);y.data?.idToken&&y.data?.refreshToken&&(tokenStorage.setTokens({idToken:y.data.idToken,refreshToken:y.data.refreshToken}),a(!0),c(!1),s?.());}catch(y){let R=y instanceof Error?y.message:"Token refresh failed";h.current=R,o?.(R),c(false);}},[i,a,c,s,o]),w=useCallback(()=>{m.current&&(clearInterval(m.current),m.current=null),p.current=false;},[]),k=useCallback(v=>{let y=ee.concat(window?.location?.origin);if(v.origin!=="*"&&!y.includes(v.origin)){console.warn("Rejected message from untrusted origin:",v.origin);return}if(!v.data||typeof v.data!="object"){console.warn("Invalid message data received");return}if(v.data.type==="LOGIN_SUCCESS"){let{refreshToken:R}=v.data;R&&F(R),p.current=true,w();}else if(v.data.type==="LOGIN_ERROR"){let R=v.data.error||"Login failed";h.current=R,o?.(R),c(false),p.current=true,w();}},[F,c,w,o]),Wr=useCallback(async()=>{let R=window.screenX+(window.outerWidth-500)/2,Vr=window.screenY+(window.outerHeight-600)/2;try{h.current=null,c(!0);let z=await n();if(g.current=window.open(`${z.statusMessage}`,"oauthPopup",`width=500,height=600,left=${R},top=${Vr},resizable,scrollbars`),!g.current){c(!1);let A="Popup blocked. Please allow popups for this site.";h.current=A,r?.(),o?.(A);return}m.current=setInterval(()=>{if(g.current&&g.current.closed&&(m.current&&(clearInterval(m.current),m.current=null),!p.current)){let A="Authentication popup was closed";h.current=A,t?.(),o?.(A),c(!1);}},500);}catch(z){let A=z instanceof Error?z.message:"Google sign in failed";h.current=A,o?.(A),c(false);}},[n,c,k,o,r,t]);return useEffect(()=>(window.addEventListener("message",k),()=>{window.removeEventListener("message",k);}),[k]),useEffect(()=>()=>{w();},[w,k]),{signIn:Wr,isLoading:I,error:h.current}}var we=async()=>{try{return await wo()}catch(e){return console.error("Error generating device fingerprint:",e),v4()}},wo=async()=>{let e=new Date().toISOString(),s=[navigator.userAgent,navigator.language,screen.width,screen.height,screen.colorDepth,Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.platform,navigator.hardwareConcurrency,e].join("::"),r=new TextEncoder().encode(s),t=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(t)).map(a=>a.toString(16).padStart(2,"0")).join("")};var ke=()=>typeof window>"u"?null:localStorage.getItem(_),Se=e=>{typeof window>"u"||localStorage.setItem(_,e);},ir=()=>{typeof window>"u"||localStorage.removeItem(_);},se=async()=>{let e=ke();return e||(e=await we(),Se(e)),e},ar=()=>typeof window>"u"?null:localStorage.getItem(L),ie=e=>{typeof window>"u"||localStorage.setItem(L,e);},cr=()=>{typeof window>"u"||localStorage.removeItem(L);},dr=()=>typeof window>"u"?null:localStorage.getItem(M),ur=e=>{typeof window>"u"||localStorage.setItem(M,e);},lr=()=>typeof window>"u"?null:localStorage.getItem(U),pr=e=>{typeof window>"u"||localStorage.setItem(U,e);},mr=()=>{typeof window>"u"||localStorage.removeItem(U);},fr=()=>typeof window>"u"?null:localStorage.getItem(x),gr=e=>{typeof window>"u"||localStorage.setItem(x,e);},hr=()=>{typeof window>"u"||localStorage.removeItem(x);},vr=()=>{if(typeof window>"u")return null;let e=localStorage.getItem(E);if(!e)return null;try{return JSON.parse(e)}catch(s){return console.error("Failed to parse stored user data:",s),null}},yr=e=>{typeof window>"u"||localStorage.setItem(E,JSON.stringify(e));},Rr=()=>{typeof window>"u"||localStorage.removeItem(E);};function Ir({token:e,id:s,onScanChipError:o}){let{updateHeaders:r}=usePGLCoreService();useEffect(()=>{if(e){let c={"Chip-Authorization":e};ie(e),r(c);}},[e,r]);let{data:t,isLoading:n,isError:i,isSuccess:a}=useChipScanStory({token:e,id:s});return useEffect(()=>{i&&o?.();},[i,o]),t?{data:{externalUrl:t?.external_url,campaignDetail:t?.project,locationDetail:t?.location,scanCounter:t?.scan_counter,campaignId:t?.campaign_id,chipModelId:t?.chip_model_id,organizationId:t?.organization_id,projectId:t?.project_id,locationId:t?.location_id,chipUid:t?.uid},isLoading:n,isError:i,isSuccess:a}:{data:null,isLoading:n,isError:i,isSuccess:a}}var Ee=(t=>(t.CHECK_IN="check_in",t.CREATE_MEMORY="create_memory",t.FILL_FORM="fill_form",t.SHARE="share",t))(Ee||{});var Ue=e=>[...e].sort((s,o)=>(s.index??0)-(o.index??0)),xe=(e,s,o)=>e.filter(r=>r[s]===o);var Dr=()=>typeof window<"u";var ge=createContext(null);function Eo(){return v4()}async function Uo(e){try{let s=(await import('@openreplay/tracker')).default,o=e?.userIdEnabled&&e?.getUserId?e.getUserId:Eo,r={projectKey:e?.projectKey||process.env.NEXT_PUBLIC_OPENREPLAY_PROJECT_KEY,ingestPoint:e?.ingestPoint,captureExceptions:e.captureExceptions??!0,capturePerformance:e.capturePerformance??!0,network:e.network||{capturePayload:!0,sanitizer:n=>n},console:e.console||{levels:["error","warn","log"]},obscureTextEmails:e.obscureTextEmails??!0,obscureTextNumbers:e.obscureTextNumbers??!1,obscureInputEmails:e.obscureInputEmails??!0,__DISABLE_SECURE_MODE:e.__DISABLE_SECURE_MODE??(typeof process<"u"&&process.env?.NODE_ENV==="development")},t=new s(r);if(e?.userIdEnabled){let n=o();t.setUserID(n),console.log("User ID set:",n);}return console.log("OpenReplay tracker initialized"),console.log("Project Key:",r.projectKey),console.log("Ingest Point:",r.ingestPoint),t}catch(s){throw console.error("Failed to create tracker:",s),s}}function xo(e,s){let{debug:o=false}=e.config;switch(s.type){case "init":return !e.tracker&&Dr()?!e.config.projectKey&&!process.env.NEXT_PUBLIC_OPENREPLAY_PROJECT_KEY?(console.warn(o,"Project key not found. Skipping session replay initialization."),e):{...e,tracker:Uo(e.config)}:e;case "start":return e.tracker?Promise.resolve(e.tracker).then(r=>{r.start(),console.log(o,"Session replay tracker started");}).catch(r=>{console.error("Failed to start tracker:",r);}):console.warn(o,"Tracker not initialized. Call initTracker() first."),e;case "setUserId":return e.tracker?Promise.resolve(e.tracker).then(r=>{r.setUserID(s.payload),console.log(o,"User ID updated:",s.payload);}).catch(r=>{console.error("Failed to set user ID:",r);}):console.warn(o,"Tracker not initialized. Call initTracker() first."),e;case "setMetadata":return e.tracker?Promise.resolve(e.tracker).then(r=>{Object.entries(s.payload||{})?.forEach(([t,n])=>{r.setMetadata(t,n);}),console.log(o,"Metadata updated:",s.payload.metadata);}).catch(r=>{console.error("Failed to set metadata:",r);}):console.warn(o,"Tracker not initialized. Call initTracker() first."),e;default:return e}}var _e=({children:e,config:s={}})=>{let[,o]=useReducer(xo,{tracker:null,config:s}),r=()=>o({type:"init"}),t=()=>o({type:"start"}),n=a=>o({type:"setUserId",payload:a}),i=a=>o({type:"setMetadata",payload:a});return useEffect(()=>{r(),t();},[]),jsx(ge.Provider,{value:{initTracker:r,startTracking:t,setUserId:n,setMetadata:i},children:e})};function Le(){let e=useContext(ge);if(!e)throw new Error("useSessionReplay must be used within a SessionReplayProvider. Make sure your component is wrapped with <SessionReplayProvider>.");return e}var bo=(e,s)=>{try{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:e,...s});}catch(o){console.error(o);}},Mo=(e,s)=>{if(typeof gtag!="function"){console.error("gtag is not a function");return}gtag("event",e,s);},Do=(e,s)=>{he.capture(e,s);};function Or(){let{setUserId:e,setMetadata:s}=Le();return {trackEvent:(n,i,a)=>{a=a||["gtm"],a.includes("gtm")&&typeof window<"u"&&bo(n,i),a.includes("ga")&&typeof gtag=="function"&&Mo(n,i),a.includes("posthog")&&typeof he=="function"&&Do(n,i);},trackUserIdentify:n=>{he.identify(n.email,{email:n.email,name:n.name,avatar:n.avatar,uid:n.uid}),e(n.id),s({user_email:n.email});},trackLogoutEvent:()=>{he.capture("user_signed_out");}}}var Gr=({children:e,queryClient:s,apiConfig:o={environment:"dev",version:"v1"}})=>{let{environment:r,version:t}=o,[n,i]=useState(null);return useEffect(()=>{(async()=>{try{let c=await se();i({queryClient:s,axiosConfig:{headers:{"Content-Type":"application/json","Device-UID":c}},responseInterceptors:{onFulfilled:h=>h,onRejected:async h=>Promise.reject(h)},requestInterceptors:{onFulfilled:h=>h,onRejected:h=>Promise.reject(h)},useDevTool:!0});}catch(c){console.error(c);}})();},[s]),n?jsx(PGLCoreServiceProvider,{...n,baseURL:`${C[r].API_BASE_URL}/${t}`,baseCoreURL:`${C[r].API_BASE_CORE_URL}/${t}`,children:jsx(RewardServiceProvider,{...n,baseURL:`${C[r].API_REWARD_URL}/v1`,children:jsx(AchievementServiceProvider,{...n,baseURL:`${C[r].API_ACHIEVEMENT_URL}/${t}`,children:jsx(GenerateCertificateServiceProvider,{...n,baseURL:`${C[r].API_GENERATE_CERTIFICATE_URL}/v1`,children:e})})})}):jsx(Fragment,{})};var Nr=({children:e,queryClient:s,apiConfig:o})=>{let{environment:r}=o,t=useMemo(()=>{let n=process.env.NEXT_PUBLIC_OPENREPLAY_PROJECT_KEY;if(n)return {projectKey:n,ingestPoint:process.env.NEXT_PUBLIC_OPENREPLAY_INGEST_POINT,debug:process.env.NODE_ENV==="development",captureExceptions:true,capturePerformance:true,obscureTextEmails:true,obscureInputEmails:true}},[]);return jsx(_e,{config:t,children:jsx(Gr,{queryClient:s,apiConfig:o,children:jsx(G,{baseURL:`${C[r].API_BASE_URL}`,queryClient:s,children:e})})})};function Ho(e,s){if(!s?.reward_models)return [];let o=s.reward_models;return e.map((r,t)=>{let n=o[t]?.[0]||null,i=r.subAchievementIds?.map((a,c)=>{let I=o[t*(r.subAchievementIds?.length||0)+c+1]?.[0]||null;return {id:a,reward_model:I}})||[];return {id:r.id,name:r.name,reward_model:n,subAchievements:i}})}var jo=({campaignId:e})=>{let{data:s,isLoading:o}=useManyAchievements({"filter.labels":{campaign_id:e},"filter.type":"group_mission","pagination.limit":200},{enabled:!!e}),r=useMemo(()=>s?.data?s.data.map(c=>c.groupRewardId).filter(c=>c!==void 0):[],[s?.data]),{mutate:t,data:n,isPending:i}=useCreateModelGroupReward();return useEffect(()=>{r.length>0&&t({group_reward_ids:r});},[r,t]),{mappedAchievements:useMemo(()=>!n?.data||!s?.data?[]:Ho(s.data,n.data),[n,s?.data]),isLoading:o||i}},ve=jo;d(ye,l);
2
+ export{ee as ALLOWED_ORIGINS,Ce as AchievementType,G as AuthProvider,Z as CALLBACK_URL,X as NotificationProvider,Ae as RewardClaimStatus,Nr as TapquestCoreProvider,Ee as TaskType,U as accessTokenKey,se as checkDeviceUid,L as chipAuthTokenKey,T as convertSnakeToCamel,_ as deviceUIDKey,xe as filterLocationsByProperty,we as generateDeviceId,lr as getAccessToken,Ge as getActionsFromAchievementRule,ar as getChipAuthToken,ke as getDeviceUid,Oe as getLocationIdsFromAchievementRule,fr as getRefreshToken,dr as getRetryAttemptsRefreshToken,vr as getUserInfo,rr as httpMaxRetries,b as isAchievementCompleted,x as refreshTokenKey,mr as removeAccessToken,cr as removeChipAuthToken,ir as removeDeviceUid,hr as removeRefreshToken,Rr as removeUserInfo,M as retryAttemptsRefreshToken,pr as setAccessToken,ie as setChipAuthToken,Se as setDeviceUid,gr as setRefreshToken,ur as setRetryAttemptsRefreshToken,yr as setUserInfo,Ue as sortLocationsByIndex,ve as useAchivementPlusRewardModel,S as useAuth,Or as useDataTracking,ne as useGoogleLogin,We as useManyAchievementProgress,Ir as useScanChip,E as userInfoKey};//# sourceMappingURL=index.mjs.map
2
3
  //# sourceMappingURL=index.mjs.map