@phygitallabs/tapquest-core 4.5.0 → 4.6.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.js CHANGED
@@ -1,3 +1,3 @@
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.js.map
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 St from'@phygitallabs/notification-api';import {NotificationProvider}from'@phygitallabs/notification-api';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {tokenStorage,authService,verifyCodeService,AuthenticationProvider,useAuthenticationHeaders}from'@phygitallabs/authentication';import {createContext,useRef,useCallback,useEffect,useReducer,useContext,useMemo,useState}from'react';import {create}from'zustand';import {immer}from'zustand/middleware/immer';import {devtools,persist,subscribeWithSelector,createJSONStorage}from'zustand/middleware';import tr from'jwt-decode';import {wrapTextWithFont,useGenerateThaocamvienCertificate,useGenerateTemplateCertificate,useGenerateFansipanCertificate,useCreateCertificateWithMask,useCreateCertificateAnonymous,useCreateCertificate,useAddFrame,useGenerateCertificateService,GenerateCertificateServiceProvider}from'@phygitallabs/generate-certificate';export{useAddFrame,useCreateCertificate,useCreateCertificateAnonymous,useCreateCertificateWithMask,useGenerateFansipanCertificate,useGenerateTemplateCertificate,useGenerateThaocamvienCertificate,wrapTextWithFont}from'@phygitallabs/generate-certificate';import {useQuery}from'@tanstack/react-query';import {v4}from'uuid';import Ce from'posthog-js';import {parse,fileToBase64,cn,getFromLS,setToLS}from'@phygitallabs/helpers';export{cn,fileToBase64,parse}from'@phygitallabs/helpers';import jo from'axios';var Ge=Object.defineProperty;var Yr=Object.getOwnPropertyDescriptor;var Xr=Object.getOwnPropertyNames;var Zr=Object.prototype.hasOwnProperty;var Se=(e,s)=>{for(var o in s)Ge(e,o,{get:s[o],enumerable:true});},Oe=(e,s,o,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of Xr(s))!Zr.call(e,t)&&t!==o&&Ge(e,t,{get:()=>s[t],enumerable:!(r=Yr(s,t))||r.enumerable});return e},c=(e,s,o)=>(Oe(e,s,"default"),o);var ke={};Se(ke,{ALLOWED_ORIGINS:()=>se,AchievementRuleActionType:()=>AchievementRuleActionType,AchievementServiceProvider:()=>AchievementServiceProvider,AchievementType:()=>Ie,AuthProvider:()=>F,CALLBACK_URL:()=>ne,CampaignState:()=>CampaignState,CmentityRewardType:()=>CmentityRewardType,NotificationProvider:()=>oe,RewardClaimStatus:()=>Te,SessionReplayProvider:()=>B,TapquestCoreProvider:()=>$r,TaskType:()=>Le,TrackerContext:()=>b,UserSourceType:()=>UserSourceType,accessTokenKey:()=>x,checkDeviceUid:()=>ue,chipAuthTokenKey:()=>M,cn:()=>cn,convertSnakeToCamel:()=>E,deviceUIDKey:()=>L,fileToBase64:()=>fileToBase64,filterLocationsByProperty:()=>be,generateDeviceId:()=>Ee,getAccessToken:()=>gr,getActionsFromAchievementRule:()=>Fe,getChipAuthToken:()=>lr,getDeviceUid:()=>z,getLocationIdsFromAchievementRule:()=>Ne,getRefreshToken:()=>yr,getRetryAttemptsRefreshToken:()=>mr,getSessionUserId:()=>zr,getUserInfo:()=>Cr,httpMaxRetries:()=>te,isAchievementCompleted:()=>O,isBrowser:()=>Ae,locationQueryKeys:()=>locationQueryKeys,memoriesKey:()=>memoriesKey,parse:()=>parse,refreshTokenKey:()=>_,removeAccessToken:()=>vr,removeChipAuthToken:()=>pr,removeDeviceUid:()=>ur,removeRefreshToken:()=>Ar,removeUserInfo:()=>kr,resetMemoriesQuery:()=>resetMemoriesQuery,retryAttemptsRefreshToken:()=>k,setAccessToken:()=>hr,setChipAuthToken:()=>le,setDeviceUid:()=>Ue,setRefreshToken:()=>Rr,setRetryAttemptsRefreshToken:()=>fr,setUserInfo:()=>Pr,sortLocationsByIndex:()=>Me,useAchievementProgress:()=>useAchievementProgress,useAchivementPlusRewardModel:()=>Pe,useAddFrame:()=>useAddFrame,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:()=>Br,useDeleteRewardModel:()=>useDeleteRewardModel,useGenerateFansipanCertificate:()=>useGenerateFansipanCertificate,useGenerateTemplateCertificate:()=>useGenerateTemplateCertificate,useGenerateThaocamvienCertificate:()=>useGenerateThaocamvienCertificate,useGetRewardModel:()=>useGetRewardModel,useGetUserRewards:()=>useGetUserRewards,useGoogleLogin:()=>de,useInfiniteMemories:()=>useInfiniteMemories,useListRewardModels:()=>useListRewardModels,useLocationDetail:()=>useOneLocation,useLocationProgress:()=>useUserCampaignsCompletedLocation,useLocationsList:()=>useManyLocations,useManyAchievementProgress:()=>qe,useManyAchievements:()=>useManyAchievements,useManyAchievementsRewardModels:()=>useManyAchievementsRewardModels,useManyChildrenAchievements:()=>useManyChildrenAchievements,useManyMemory:()=>useManyMemory,useManyUserActionLocations:()=>useManyUserActionLocations,useManyUserRewards:()=>useManyUserRewards,useMyProfile:()=>useMyProfile,useOneAchievement:()=>useOneAchievement,useOneMemory:()=>useOneMemory,useOneUserCampaign:()=>useOneUserCampaign,usePGLCoreService:()=>usePGLCoreService,useScanChip:()=>xr,useSendEmail:()=>useSendEmail,useSessionReplay:()=>K,useSyncCheckin:()=>useSyncCheckin,useUpdateMyProfile:()=>useUpdateMyProfile,useUpdateRewardModel:()=>useUpdateRewardModel,useUploadMedia:()=>useUploadMedia,useUserAchievementAction:()=>useUserAchievementAction,useUserCampaignAction:()=>useUserCampaignAction,useV1ListRewards:()=>useV1ListRewards,userInfoKey:()=>U,wrapTextWithFont:()=>wrapTextWithFont});var u={};Se(u,{ALLOWED_ORIGINS:()=>se,AchievementRuleActionType:()=>AchievementRuleActionType,AchievementServiceProvider:()=>AchievementServiceProvider,AchievementType:()=>Ie,AuthProvider:()=>F,CALLBACK_URL:()=>ne,CampaignState:()=>CampaignState,CmentityRewardType:()=>CmentityRewardType,NotificationProvider:()=>oe,RewardClaimStatus:()=>Te,SessionReplayProvider:()=>B,TapquestCoreProvider:()=>$r,TaskType:()=>Le,TrackerContext:()=>b,UserSourceType:()=>UserSourceType,accessTokenKey:()=>x,checkDeviceUid:()=>ue,chipAuthTokenKey:()=>M,cn:()=>cn,convertSnakeToCamel:()=>E,deviceUIDKey:()=>L,fileToBase64:()=>fileToBase64,filterLocationsByProperty:()=>be,generateDeviceId:()=>Ee,getAccessToken:()=>gr,getActionsFromAchievementRule:()=>Fe,getChipAuthToken:()=>lr,getDeviceUid:()=>z,getLocationIdsFromAchievementRule:()=>Ne,getRefreshToken:()=>yr,getRetryAttemptsRefreshToken:()=>mr,getSessionUserId:()=>zr,getUserInfo:()=>Cr,httpMaxRetries:()=>te,isAchievementCompleted:()=>O,isBrowser:()=>Ae,locationQueryKeys:()=>locationQueryKeys,memoriesKey:()=>memoriesKey,parse:()=>parse,refreshTokenKey:()=>_,removeAccessToken:()=>vr,removeChipAuthToken:()=>pr,removeDeviceUid:()=>ur,removeRefreshToken:()=>Ar,removeUserInfo:()=>kr,resetMemoriesQuery:()=>resetMemoriesQuery,retryAttemptsRefreshToken:()=>k,setAccessToken:()=>hr,setChipAuthToken:()=>le,setDeviceUid:()=>Ue,setRefreshToken:()=>Rr,setRetryAttemptsRefreshToken:()=>fr,setUserInfo:()=>Pr,sortLocationsByIndex:()=>Me,useAchievementProgress:()=>useAchievementProgress,useAchivementPlusRewardModel:()=>Pe,useAddFrame:()=>useAddFrame,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:()=>Br,useDeleteRewardModel:()=>useDeleteRewardModel,useGenerateFansipanCertificate:()=>useGenerateFansipanCertificate,useGenerateTemplateCertificate:()=>useGenerateTemplateCertificate,useGenerateThaocamvienCertificate:()=>useGenerateThaocamvienCertificate,useGetRewardModel:()=>useGetRewardModel,useGetUserRewards:()=>useGetUserRewards,useGoogleLogin:()=>de,useInfiniteMemories:()=>useInfiniteMemories,useListRewardModels:()=>useListRewardModels,useLocationDetail:()=>useOneLocation,useLocationProgress:()=>useUserCampaignsCompletedLocation,useLocationsList:()=>useManyLocations,useManyAchievementProgress:()=>qe,useManyAchievements:()=>useManyAchievements,useManyAchievementsRewardModels:()=>useManyAchievementsRewardModels,useManyChildrenAchievements:()=>useManyChildrenAchievements,useManyMemory:()=>useManyMemory,useManyUserActionLocations:()=>useManyUserActionLocations,useManyUserRewards:()=>useManyUserRewards,useMyProfile:()=>useMyProfile,useOneAchievement:()=>useOneAchievement,useOneMemory:()=>useOneMemory,useOneUserCampaign:()=>useOneUserCampaign,usePGLCoreService:()=>usePGLCoreService,useScanChip:()=>xr,useSendEmail:()=>useSendEmail,useSessionReplay:()=>K,useSyncCheckin:()=>useSyncCheckin,useUpdateMyProfile:()=>useUpdateMyProfile,useUpdateRewardModel:()=>useUpdateRewardModel,useUploadMedia:()=>useUploadMedia,useUserAchievementAction:()=>useUserAchievementAction,useUserCampaignAction:()=>useUserCampaignAction,useV1ListRewards:()=>useV1ListRewards,userInfoKey:()=>U,wrapTextWithFont:()=>wrapTextWithFont});var Ne=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))},Fe=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))},O=e=>e.isCompleted||e.overallPercentage===100;function E(e){if(e==null)return e;if(Array.isArray(e))return e.map(s=>E(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]=E(e[o]);}return s}return e}var qe=(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:O(n)}))}):useManyAchievementProgressByDevice(r,{...s,select:t=>E(t).map(i=>({...i,isCompleted:O(i)}))})};var Ie=(t=>(t.DEFAULT="default",t.MULTIPLE_CHECK_INS="multiple_check_ins",t.RANDOM_CHECK_INS="random_check_ins",t.GROUP_MISSION="group_mission",t))(Ie||{});var Te=(t=>(t.NOT_CLAIMED="not_claimed",t.CLAIMED="claimed",t.IN_PROGRESS="in_progress",t.FAILED="failed",t))(Te||{});var d={};Se(d,{NotificationProvider:()=>oe});c(d,St);var oo={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"}},P=oo;var oe=({children:e,autoConnect:s=true,environment:o="dev",user:r,onWebSocketOpen:t,onWebSocketClose:n,onWebSocketMessage:i})=>{let a=P[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})};c(u,d);var U="phygital-user-info",x="accessToken",_="refreshToken",te=3,k="retryAttemptsRefreshToken",L="Device-UID",M="chip-auth-token",ne="https://s3-sgn10.fptcloud.com/nomion-assets/platform/callback.html",se=["https://s3-sgn10.fptcloud.com","https://accounts.google.com/"];var po={user:null,isSignedIn:false,isInitialized:false,isLoading:false,error:null,cleanupFunctions:{},eventCallbacks:{}},g=create()(devtools(persist(subscribeWithSelector(immer((e,s)=>({...po,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){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=ne;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{e(i=>{i.user=null,i.isSignedIn=!1,i.error=null;});let t=tokenStorage.getRefreshToken();if(tokenStorage.isTokenExpired()||!t){tokenStorage.clearTokens();return}await authService.logout({refreshToken:t}),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=>{let r=await authService.refreshToken({refreshToken:o??tokenStorage.getRefreshToken()??""});return r.data?.idToken&&r.data?.refreshToken&&tokenStorage.setTokens({idToken:r.data?.idToken,refreshToken:r.data?.refreshToken}),r},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=g(i=>i.user),s=g(i=>i.isSignedIn),o=g(i=>i.isInitialized),r=g(i=>i.isLoading),t=g(i=>i.error),n=g(i=>i.actions);return {user:e,isSignedIn:s,isInitialized:o,isLoading:r,error:t,...n}};var nr=(e,s)=>{let o={...e},r={};try{r=tr(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},sr=e=>{try{return tr(e)}catch(s){return console.warn("Failed to decode token in decodeJWTToken:",s),null}};function ar(){let{refreshToken:e,signOut:s}=S(),o=async()=>{try{if(!tokenStorage.isTokenExpired())return;await e();}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 Po=()=>{let{updateHeaders:e}=useAuthenticationHeaders(),{updateHeaders:s,coreApi:o}=usePGLCoreService(),{updateHeaders:r}=useAchievementService(),{updateHeaders:t}=useRewardService(),{updateHeaders:n}=useGenerateCertificateService();return useEffect(()=>{g.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:p}=g.getState();p&&p.accessToken!==i&&g.getState().actions.setUser({...p,accessToken:i});}let a=g.getState().isSignedIn,l=g.subscribe(p=>[p.isSignedIn,p.user],async([p])=>{if(p!==a)if(a=p,p){let m=tokenStorage.getAuthToken();if(m){e({Authorization:`Bearer ${m}`}),s({Authorization:`Bearer ${m}`}),r({Authorization:`Bearer ${m}`}),t({Authorization:`Bearer ${m}`}),n({Authorization:`Bearer ${m}`});try{let h=await userService(o).getMyProfile(),R=nr(h,m);g.getState().actions.setUser(R);}catch{g.getState().actions.signOut();}}let{eventCallbacks:f,user:C}=g.getState();f?.onAuthStateChange?.(C,true);}else {e({}),s({}),r({Authorization:""}),t({Authorization:""}),n({Authorization:""});let{eventCallbacks:m}=g.getState();m?.onAuthStateChange?.(null,false);}}),T=tokenStorage.addTokenChangeListener(async()=>{let{isSignedIn:p,user:m}=g.getState();if(p){let f=tokenStorage.getAuthToken();f?(e({Authorization:`Bearer ${f}`}),s({Authorization:`Bearer ${f}`}),r({Authorization:`Bearer ${f}`}),t({Authorization:`Bearer ${f}`}),n({Authorization:`Bearer ${f}`}),m&&m.accessToken!==f&&g.getState().actions.setUser({...m,accessToken:f})):(g.getState().actions.signOut(),e({}),s({}),r({Authorization:""}),t({Authorization:""}),n({Authorization:""}));}});return ()=>{l(),T();}},[e,s,r,t,n,o]),null},ko=()=>(ar(),null),F=({children:e,baseURL:s,queryClient:o})=>jsxs(AuthenticationProvider,{axiosConfig:{headers:{"Content-Type":"application/json"}},baseURL:s,queryClient:o,children:[jsx(Po,{}),jsx(ko,{}),e]});function de(e={}){let{onSuccess:s,onError:o,onPopupBlocked:r,onPopupClosed:t}=e,{signInWithGoogle:n,refreshToken:i,setIsSignedIn:a,setIsLoading:l,isLoading:T}=S(),p=useRef(null),m=useRef(false),f=useRef(null),C=useRef(null),D=useCallback(async v=>{if(v)try{let y=await i(v);if(y.data?.idToken&&y.data?.refreshToken){tokenStorage.setTokens({idToken:y.data.idToken,refreshToken:y.data.refreshToken});let A=sr(y.data.idToken);a(!0),l(!1),s?.(A);}}catch(y){let A=y instanceof Error?y.message:"Token refresh failed";C.current=A,o?.(A),l(false);}},[i,a,l,s,o]),h=useCallback(()=>{f.current&&(clearInterval(f.current),f.current=null),m.current=false;},[]),R=useCallback(v=>{let y=se.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:A}=v.data;A&&D(A),m.current=true,h();}else if(v.data.type==="LOGIN_ERROR"){let A=v.data.error||"Login failed";C.current=A,o?.(A),l(false),m.current=true,h();}},[D,l,h,o]),we=useCallback(async()=>{let A=window.screenX+(window.outerWidth-500)/2,Jr=window.screenY+(window.outerHeight-600)/2;try{C.current=null,l(!0);let $=await n();if(p.current=window.open(`${$.statusMessage}`,"oauthPopup",`width=500,height=600,left=${A},top=${Jr},resizable,scrollbars`),!p.current){l(!1);let I="Popup blocked. Please allow popups for this site.";C.current=I,r?.(),o?.(I);return}f.current=setInterval(()=>{if(p.current&&p.current.closed&&(f.current&&(clearInterval(f.current),f.current=null),!m.current)){let I="Authentication popup was closed";C.current=I,t?.(),o?.(I),l(!1);}},500);}catch($){let I=$ instanceof Error?$.message:"Google sign in failed";C.current=I,o?.(I),l(false);}},[n,l,R,o,r,t]);return useEffect(()=>(window.addEventListener("message",R),()=>{window.removeEventListener("message",R);}),[R]),useEffect(()=>()=>{h();},[h,R]),{signIn:we,isLoading:T,error:C.current}}var Ee=async()=>{try{return await To()}catch(e){return console.error("Error generating device fingerprint:",e),v4()}},To=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 z=()=>typeof window>"u"?null:localStorage.getItem(L),Ue=e=>{typeof window>"u"||localStorage.setItem(L,e);},ur=()=>{typeof window>"u"||localStorage.removeItem(L);},ue=async()=>{let e=z();return e||(e=await Ee(),Ue(e)),e},lr=()=>typeof window>"u"?null:localStorage.getItem(M),le=e=>{typeof window>"u"||localStorage.setItem(M,e);},pr=()=>{typeof window>"u"||localStorage.removeItem(M);},mr=()=>typeof window>"u"?null:localStorage.getItem(k),fr=e=>{typeof window>"u"||localStorage.setItem(k,e);},gr=()=>typeof window>"u"?null:localStorage.getItem(x),hr=e=>{typeof window>"u"||localStorage.setItem(x,e);},vr=()=>{typeof window>"u"||localStorage.removeItem(x);},yr=()=>typeof window>"u"?null:localStorage.getItem(_),Rr=e=>{typeof window>"u"||localStorage.setItem(_,e);},Ar=()=>{typeof window>"u"||localStorage.removeItem(_);},Cr=()=>{if(typeof window>"u")return null;let e=localStorage.getItem(U);if(!e)return null;try{return JSON.parse(e)}catch(s){return console.error("Failed to parse stored user data:",s),null}},Pr=e=>{typeof window>"u"||localStorage.setItem(U,JSON.stringify(e));},kr=()=>{typeof window>"u"||localStorage.removeItem(U);};function xr({token:e,id:s,onScanChipError:o}){let{updateHeaders:r}=usePGLCoreService();useEffect(()=>{if(e){let l={"Chip-Authorization":e};le(e),r(l);}},[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 Le=(t=>(t.CHECK_IN="check_in",t.CREATE_MEMORY="create_memory",t.FILL_FORM="fill_form",t.SHARE="share",t))(Le||{});var Me=e=>[...e].sort((s,o)=>(s.index??0)-(o.index??0)),be=(e,s,o)=>e.filter(r=>r[s]===o);var zr=e=>e||z(),Ae=()=>typeof window<"u";var b=createContext(null);function Lo(){return v4()}async function Mo(e){try{let s=(await import('@openreplay/tracker')).default,o=e?.userIdEnabled&&e?.getUserId?e.getUserId:Lo,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 bo(e,s){let{debug:o=false}=e.config;switch(s.type){case "init":return !e.tracker&&Ae()?!e.config.projectKey&&!process.env.NEXT_PUBLIC_OPENREPLAY_PROJECT_KEY?(console.warn(o,"Project key not found. Skipping session replay initialization."),e):{...e,tracker:Mo(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 B=({children:e,config:s={}})=>{let[,o]=useReducer(bo,{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(b.Provider,{value:{initTracker:r,startTracking:t,setUserId:n,setMetadata:i},children:e})};function K(){let e=useContext(b);if(!e)throw new Error("useSessionReplay must be used within a SessionReplayProvider. Make sure your component is wrapped with <SessionReplayProvider>.");return e}var Go=(e,s)=>{try{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:e,...s});}catch(o){console.error(o);}},No=(e,s)=>{if(typeof gtag!="function"){console.error("gtag is not a function");return}gtag("event",e,s);},Fo=(e,s)=>{Ce.capture(e,s);};function Br(){let{setUserId:e,setMetadata:s}=K();return {trackEvent:(n,i,a)=>{console.log("trackEvent ",n,i),a=a||["gtm"],a.includes("gtm")&&typeof window<"u"&&Go(n,i),a.includes("ga")&&typeof gtag=="function"&&No(n,i),a.includes("posthog")&&typeof Ce=="function"&&Fo(n,i);},trackUserIdentify:n=>{Ce.identify(n.email,{email:n.email,name:n.name,avatar:n.avatar,uid:n.uid}),e(n.id),s({user_email:n.email});},trackLogoutEvent:()=>{Ce.capture("user_signed_out");}}}var Wr=({children:e,queryClient:s,apiConfig:o={environment:"dev",version:"v1"}})=>{let{signOut:r,refreshToken:t}=S(),{environment:n,version:i}=o,[a,l]=useState(null);return useEffect(()=>{(async()=>{try{let p=await ue();l({queryClient:s,axiosConfig:{headers:{"Content-Type":"application/json","Device-UID":p}},responseInterceptors:{onFulfilled:h=>h,onRejected:async h=>{let R=h.config,we=tokenStorage.getAuthToken();if(h.response?.status===401&&!R._retry){let v=parseInt(getFromLS(k)||"0",10);if(v>=3)return await r(),setToLS(k,0),Promise.reject(h);if(setToLS(k,`${v+1}`),R._retry=!0,we)try{let y=await t();if(y?.data?.idToken)return R.headers.Authorization=`Bearer ${y?.data?.idToken}`,jo(R)}catch(y){console.log("Failed to refresh token:",y);}}}},requestInterceptors:{onFulfilled:h=>h,onRejected:h=>Promise.reject(h)},useDevTool:!0});}catch(p){console.error(p);}})();},[s]),a?jsx(PGLCoreServiceProvider,{...a,baseURL:`${P[n].API_BASE_URL}/${i}`,baseCoreURL:`${P[n].API_BASE_CORE_URL}/${i}`,children:jsx(RewardServiceProvider,{...a,baseURL:`${P[n].API_REWARD_URL}/v1`,children:jsx(AchievementServiceProvider,{...a,baseURL:`${P[n].API_ACHIEVEMENT_URL}/${i}`,children:jsx(GenerateCertificateServiceProvider,{...a,baseURL:`${P[n].API_GENERATE_CERTIFICATE_URL}/v1`,children:e})})})}):jsx(Fragment,{})};var $r=({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(B,{config:t,children:jsx(Wr,{queryClient:s,apiConfig:o,children:jsx(F,{baseURL:`${P[r].API_BASE_URL}`,queryClient:s,children:e})})})};function et(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,l)=>{let T=o[t*(r.subAchievementIds?.length||0)+l+1]?.[0]||null;return {id:a,reward_model:T}})||[];return {id:r.id,name:r.name,reward_model:n,subAchievements:i}})}var rt=({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(l=>l.groupRewardId).filter(l=>l!==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?[]:et(s.data,n.data),[n,s?.data]),isLoading:o||i}},Pe=rt;c(ke,u);
2
+ export{se as ALLOWED_ORIGINS,Ie as AchievementType,F as AuthProvider,ne as CALLBACK_URL,oe as NotificationProvider,Te as RewardClaimStatus,B as SessionReplayProvider,$r as TapquestCoreProvider,Le as TaskType,b as TrackerContext,x as accessTokenKey,ue as checkDeviceUid,M as chipAuthTokenKey,E as convertSnakeToCamel,L as deviceUIDKey,be as filterLocationsByProperty,Ee as generateDeviceId,gr as getAccessToken,Fe as getActionsFromAchievementRule,lr as getChipAuthToken,z as getDeviceUid,Ne as getLocationIdsFromAchievementRule,yr as getRefreshToken,mr as getRetryAttemptsRefreshToken,zr as getSessionUserId,Cr as getUserInfo,te as httpMaxRetries,O as isAchievementCompleted,Ae as isBrowser,_ as refreshTokenKey,vr as removeAccessToken,pr as removeChipAuthToken,ur as removeDeviceUid,Ar as removeRefreshToken,kr as removeUserInfo,k as retryAttemptsRefreshToken,hr as setAccessToken,le as setChipAuthToken,Ue as setDeviceUid,Rr as setRefreshToken,fr as setRetryAttemptsRefreshToken,Pr as setUserInfo,Me as sortLocationsByIndex,Pe as useAchivementPlusRewardModel,S as useAuth,Br as useDataTracking,de as useGoogleLogin,qe as useManyAchievementProgress,xr as useScanChip,K as useSessionReplay,U as userInfoKey};//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map