{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./contexts/program.tsx","webpack:///./util/state-variable-operation.ts","webpack:///./actions/user.ts","webpack:///./network/user.ts","webpack:///./hooks/user.ts","webpack:///./hooks/analytics.ts","webpack:///./actions/reward.ts","webpack:///./contexts/reward.tsx","webpack:///./actions/session.ts","webpack:///./network/session.ts","webpack:///./hooks/session.ts","webpack:///./util/get-registration-object.ts","webpack:///./hooks/status.ts","webpack:///./util/localstorage.ts","webpack:///./contexts/session.tsx","webpack:///./contexts/user.tsx","webpack:///./util/state-values.ts","webpack:///./util/custom-errors.ts","webpack:///./util/platform-details.ts","webpack:///./util/url.ts","webpack:///./contexts/router.tsx","webpack:///./components/async/loading-wrapper/index.tsx?01d3","webpack:///./hooks/reward.ts","webpack:///./util/sleep.ts","webpack:///../src/index.js","webpack:///./hooks/router.ts","webpack:///./actions/router.ts","webpack:///./hooks/component-content-style-resolver.ts","webpack:///./util/api.ts","webpack:///./util/pluck.ts","webpack:///../node_modules/nanoid/index.browser.js","webpack:///../node_modules/@preact/async-loader/async.js","webpack:///./components/async/error-wrapper/index.tsx?42ca","webpack:///./actions/client-configurations.ts","webpack:///./network/client-configurations.ts","webpack:///./hooks/client-configurations.ts","webpack:///../src/util.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/options.js","webpack:///../src/constants.js","webpack:///../src/diff/catch-error.js","webpack:///./util/regex.ts","webpack:///../node_modules/preact-cli/lib/lib/entry.js","webpack:///./hooks/common-state.ts","webpack:///./network/reward.ts","webpack:///./hooks/logging.ts","webpack:///./util/format-program.ts","webpack:///./components/main/index.tsx","webpack:///./components/portal/style.css","webpack:///./components/async/client-guard-wrapper/index.tsx?3955","webpack:///./components/async/wallet-wrapper/index.tsx?1b7e","webpack:///./components/async/reward-wrapper/index.tsx?4d20","webpack:///./components/async/program-wrapper/index.tsx?b6d8","webpack:///./components/async/program-nudge-wrapper/index.tsx?2fff","webpack:///./components/async/full-page/index.tsx?4e7b","webpack:///./components/async/bottom-sheet/index.tsx?b790","webpack:///./components/async/popup/index.tsx?6e55","webpack:///./components/portal/index.tsx","webpack:///./hooks/external-data-sync.tsx","webpack:///./index.ts","webpack:///./components/app.tsx","webpack:///./util/conditional-operation.ts","webpack:///./util/apply-theme.ts","webpack:///./contexts/client-configurations.tsx","webpack:///./util/apply-theme-configurations.ts","webpack:///./util/routes-details.ts","webpack:///./hooks/auto-refresh.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","installedCssChunks","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onerror","onload","event","errorType","realHref","target","err","Error","code","request","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","src","jsonpScriptSrc","error","clearTimeout","chunk","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","programsReducer","state","action","newProgramMap","payload","programMap","newState","allIds","byId","allProgramsLoaded","id","program","campaignId","ProgramsProvider","props","useReducer","initialState","dispatch","useMemo","ProgramsContext","Provider","children","referralLink","createContext","getVariableValue","variable","result","initialOperand","type_id","constantValue","pluckValue","stateValue","operations","operation","replaceVariablesInText","Math","round","operand","log","replace","variableValues","map","replaceKeys","fallbackText","fetchUser","token","url","process","res","body","parsedBody","success","user","withMalformedApiResponseError","method","useUser","context","useContext","UserContext","withInternalError","useUserInitilizer","useStatus","status","setStatus","userDispatch","session","useSession","recordError","useLogs","useEffect","requestUser","store","FlushPendingEvents","delayRequest","obj","reportingVersion","sendV3Analytics","analyticsObj","sendV4Analytics","pendingEvents","pendingObj","analyticObj","v3Helper","default","v4Helper","useAnalytics","rootTypeId","rootId","pageName","reward","commonDetails","useCommonState","details","setRewardsAction","setRewardAction","consumeRewardAction","retryRewardAction","consumeGenerateRewardAction","consumeScoreBasedRewardAction","rewardsReducer","newRewardMap","rewardMap","forEach","rewardsSkeletonObject","isSkeleton","allRewardsLoaded","RewardsProvider","RewardsContext","setToken","fetchToken","writeKey","identification","attributes","userId","anonymousId","userState","localStorage","getItem","nanoid","setItem","generateUserId","reqBody","customAttributes","gluAttributes","post","fetchBannerData","requestUserToken","userIdentification","userAttributes","SessionContext","useTokenInitilizer","dispatchSessionAction","queryParams","getRouteQueryParams","writekey","fetchUserToken","matches","userName","phone","email","firebaseToken","apnsDeviceToken","referredBy","platform","toLowerCase","app","includes","split","getRegistrationDataFromObject","useQueryParamsInitilizer","useQueryParameter","initStatus","useState","getFromLocalStorage","storageDataString","storageData","JSON","parse","expiresAt","now","Date","exp","valueOf","setToLocalStorage","expiry","setHours","getHours","stringify","savedAt","deleteLocalStorageKey","removeItem","sessionReducer","SessionProvider","session_start_time","userReducer","isLoggedIn","UserProvider","gluId","profile","identities","sessionId","getStateValues","stateMap","stateToBeFilled","select","getStateValuesLegacy","referenceId","elementState","layoutSlotInfo","extraData","withApiError","response","meta","severity","statusCode","resolveError","withInitilizationError","functionName","functionArguments","getDeviceOS","userAgent","navigator","vendor","test","indexOf","getAgentType","parent","webviewRegExp","RegExp","rules","join","match","getAppPlatform","postMessage","callback","webkit","messageHandlers","getEnvironmentDetails","environmentDetails","deviceType","device","some","b","isMobileDevice","isTabletDevice","os","agentType","appPlatform","emitEventV2","eventName","eventStr","routerReducer","actionPage","previousSamePageIndex","findIndex","content","currentId","startClose","newCurrentId","history","pushState","page","toString","close","filter","isNative","back","RouterProvider","onpopstate","popPageStartAction","RouterContext","CurrentPageProvider","CurrentPageContext","isActive","rewardsState","programsState","cb","getSelectedRewardIndexFromScore","slots","score","selectedSlotIndex","maxscore","useRewards","useRewardsFilter","ref","useV1","refresh","requestRewards","rewardState","rewardDispatch","useAutoRefresh","skipLoading","rewardUserId","getSingleIdFromFilter","fetchAllRewards","fetchPaginatedRewards","rewards","filterRewards","useSingleRewardFilter","requestReward","keys","filterSingleReward","rewardStatus","syncRewardWithLocalStorage","didRewardMatch","activityId","rewardProperties","rewardType","userAId","userBId","experienceConsumed","couponExpired","couponExpiry","currentDate","floor","rewardExpired","rewardExpiry","expired","removeNoRewardType","experience","types","condition","leftValue","leftOperand","rightValue","rightOperand","checkCondition","operator","matched","useRewardActionHandler","actionHandler","requestConsumeReward","onComplete","version","generateConsumeRewardParams","params","newReward","seenReward","redeemReward","analytics","requestRetryReward","generateRetryRewardParams","requestGenerateConsumeReward","generateConsumeGenerateRewardParams","requestSimpleRetryReward","registerLocallyConsumedReward","locallyConsumedData","seenStatus","locallyConsumeReward","generateNewReward","Number","isInteger","rewardIndex","layout","quiz","refreshReward","createNewReward","localData","useRewardInit","requestRewardInitObject","rewardObject","rewardInit","fragmentMap","usePaginatedRewardsFilter","limit","sort","totalRewardCount","setTotalRewardCount","totalPages","setTotalPages","hideLoader","setHideLoader","currentPage","useRef","rewardUserIdsRef","rewardfilters","updatedFilters","newPage","current","newRewardUserIds","totalItems","titleCache","skipDuplicates","title","sleep","time","getHookState","index","options","__h","currentComponent","currentHook","hooks","__","__V","EMPTY","invokeOrReturn","reducer","init","hookState","currentIndex","_reducer","__c","currentValue","__N","nextValue","setState","_hasScuFromHooks","prevScu","shouldComponentUpdate","__H","stateHooks","x","every","this","shouldUpdate","hookItem","args","argsChanged","_pendingArgs","useLayoutEffect","initialValue","useImperativeHandle","createHandle","concat","factory","useCallback","provider","sub","useDebugValue","formatter","useErrorBoundary","errState","componentDidCatch","errorInfo","useId","h","charCodeAt","hash","__v","_mask","flushAfterPaintEffects","component","afterPaintEffects","__P","invokeCleanup","invokeEffect","__e","afterNextFrame","raf","done","HAS_RAF","cancelAnimationFrame","requestAnimationFrame","hook","comp","cleanup","oldArgs","newArgs","arg","f","previousComponent","prevRaf","oldBeforeDiff","oldBeforeRender","__r","oldAfterDiff","diffed","oldCommit","oldBeforeUnmount","unmount","__b","vnode","Fragment","commitQueue","hasErrored","useRouter","useCurrentPage","useRouterActionHandler","payloadStateMap","pushPageAction","popPageAction","replacePageAction","SIZE","MAX_SIZE_BREAK_POINTS","useComponentContentStyleResolver","ui","css","cssBreakpoints","size","getSize","breakPointStyles","bp","patchValue","innerWidth","http","ok","fetch","contentType","headers","json","path","Request","getChildren2","targetObject","properties","else","crypto","getRandomValues","Uint8Array","reduce","byte","toUpperCase","getPreviousSibling","inner","__k","Array","isArray","end","child","dom","async","load","AsyncComponent","Component","componentWillMount","mod","render","prev","me","nextSibling","_parentDom","firstChild","localName","dangerouslySetInnerHTML","PENDING","preload","constructor","updateClientConfigurations","fetchConfigurations","config","end_point","configData","client","wallet","theme","loading","mock","useClientConfigurations","ClientConfigurationContext","useClientConfigurationsInitilizer","configDispatch","clientId","getClientFromToken","localConfig","networkConfig","useWalletConfig","useBackButtonConfig","backButton","payloadEncoded","decodedPayload","atob","assign","removeNode","node","normalizedProps","arguments","defaultProps","createVNode","original","__d","vnodeId","createRef","getDomSibling","childIndex","sibling","updateParentDomPointers","base","enqueueRender","rerenderQueue","prevDebounce","debounceRendering","queue","a","oldVNode","oldDom","parentDom","diff","__n","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","childVNode","newDom","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","reorderChildren","placeChild","applyRef","tmp","toChildArray","out","nextDom","sibDom","outer","insertBefore","diffProps","setStyle","style","setProperty","IS_NON_DIMENSIONAL","oldValue","useCapture","cssText","addEventListener","eventProxyCapture","eventProxy","removeEventListener","removeAttribute","newVNode","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","componentContext","renderHook","count","newType","contextType","__E","doRender","__s","getDerivedStateFromProps","componentDidMount","componentWillReceiveProps","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","root","oldHtml","newHtml","nodeType","createTextNode","createElementNS","is","childNodes","__html","innerHTML","hydrate","checked","parentVNode","skipRemove","componentWillUnmount","replaceNode","cloneElement","defaultValue","contextId","Consumer","contextValue","subs","ctx","_props","old","splice","ctor","handled","getDerivedStateFromError","update","forceUpdate","replaceAll","search","replacement","dict","Preact","interopDefault","normalizeURL","require","getElementById","firstElementChild","preRenderData","inlineDataElement","querySelector","decodeURI","CLI_DATA","currentURL","location","pathname","programLayout","analyticsMeta","campaignName","slotReward","hidden","rewardId","rewardShuffle","isShuffled","routerState","formatProgram","isCompleted","referral","stepsCompleted","activity","accepted","checkAccepted","banner","programExpiry","interactionStatus","activities","programType","isExpired","tier","userB","rule","level","levelReward","selfReferral","getSelf","otherReferrals","others","tierCount","tiers","getLevel","getReferralState","fragment","challenge","LEGACY_experienceTypeMatch","bannerLayout","nudge","isAccepted","self","valid","expiresOn","activites","limits","campaign","completedCount","cardImageSrc","totalSteps","completedSteps","subTitle","streakv2","streak","gamechallenge","multiStep","getPageContent","wrapperType","getRoutePath","firstPath","getWrapperType","Portal","pop","pageStack","unshift","zIndex","onClose","hidePreviousPages","PageFrame","postDimensionsUpdate","height","isEmbedingEnabled","containerRef","ro","ResizeObserver","entries","entry","clientHeight","observe","disconnect","className","PageContent","useExternalDataSync","centralMessageReciver","onEvent","dataString","loadCampaignsFromSdk","requestId","rewardsResponse","checkRewards","Main","onRouterEvent","tokenStatus","confgStatus","animation","container","App","getConditionalResult","caseMap","cases","singleCase","didMatch","conditions","defaultResult","nestedPropertyName","loadedFonts","loadFont","font","link","append","loadGoogleFont","fontFaces","variants","v","fontFace","family","weight","display","loadCustomFont","applyTheme","isGlobal","variables","q","darkMode","fonts","primaryFont","primary","secondaryFont","secondary","deviceVariables","paletteVariables","custom","otherVariables","configReducer","themeData","variablesMap","allVariables","fallback","styles","applyThemeConfig","__HACKY__THEME","ClientConfigurationsProvider","initialConfigState","cache","pair","decodeURIComponent","callbacks","router","autoRefresh","visibilityState"],"mappings":"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","file":"bundle.ae8c3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t5: 0\n \t};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t5: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"1\":\"route-game-challenge-root-1~route-simple-game-root-1\",\"7\":\"route-activtiy-game-root-1\",\"8\":\"route-client-guard-root-1\",\"9\":\"route-direct-root-1\",\"10\":\"route-game-challenge-root-1\",\"11\":\"route-intro-root-1\",\"12\":\"route-intro-root-2\",\"13\":\"route-main-error-root-1\",\"14\":\"route-multi-step-root-1\",\"15\":\"route-plane-banner-root-1\",\"16\":\"route-referral-root1\",\"17\":\"route-reward-card-root-1\",\"18\":\"route-reward-root-1\",\"19\":\"route-simple-game-root-1\",\"20\":\"route-streak-root-1\",\"21\":\"route-wallet-root-1\"}[chunkId]||chunkId) + \".chunk.\" + {\"0\":\"f81af\",\"1\":\"345e5\",\"2\":\"a49e6\",\"3\":\"0824d\",\"4\":\"c5a46\",\"7\":\"a11eb\",\"8\":\"d3e3c\",\"9\":\"092bf\",\"10\":\"c630b\",\"11\":\"35f99\",\"12\":\"f335f\",\"13\":\"9c944\",\"14\":\"e0db8\",\"15\":\"b2543\",\"16\":\"0db82\",\"17\":\"42d2a\",\"18\":\"c21b6\",\"19\":\"990bd\",\"20\":\"22df2\",\"21\":\"5c764\",\"22\":\"87aa1\",\"23\":\"8c6b3\",\"24\":\"c414e\",\"25\":\"ad9ba\",\"26\":\"54118\",\"27\":\"45363\",\"28\":\"2b1d9\",\"29\":\"1d9a0\",\"30\":\"1507c\",\"31\":\"11968\",\"32\":\"4f1b6\",\"33\":\"93438\",\"34\":\"caa7b\",\"35\":\"982ec\",\"36\":\"255e8\",\"37\":\"c275b\",\"38\":\"e1ef1\",\"39\":\"4fd9b\",\"40\":\"b053f\",\"41\":\"7857e\",\"42\":\"74cf6\",\"43\":\"e0ba8\",\"44\":\"8b8fc\",\"45\":\"d6a56\",\"46\":\"50b13\",\"47\":\"86321\",\"48\":\"418e6\",\"49\":\"70265\",\"50\":\"75e07\",\"51\":\"09529\",\"52\":\"95f1c\",\"53\":\"5b405\",\"54\":\"da9c9\",\"55\":\"581e8\",\"56\":\"3b02f\",\"57\":\"72ebb\",\"58\":\"6868f\",\"59\":\"7f375\",\"60\":\"be522\",\"61\":\"cb6f7\",\"62\":\"b3ec8\",\"63\":\"b13fa\",\"64\":\"73b0c\",\"65\":\"f5529\",\"66\":\"49e1c\",\"67\":\"3928e\",\"68\":\"def70\",\"69\":\"e83cb\",\"70\":\"824ab\",\"71\":\"4bf22\",\"72\":\"a8e98\",\"73\":\"65977\",\"74\":\"9d473\",\"75\":\"e6c59\",\"76\":\"2bbaf\",\"77\":\"88ab7\",\"78\":\"90035\",\"79\":\"8a160\",\"80\":\"08bbf\",\"81\":\"f25a5\",\"82\":\"940c8\",\"83\":\"655f0\",\"84\":\"6b6d6\",\"85\":\"5fba0\",\"86\":\"75ac2\",\"87\":\"373dd\",\"88\":\"7f67a\",\"89\":\"98e70\",\"90\":\"db4ec\",\"91\":\"1e4b5\",\"92\":\"78721\",\"93\":\"a7cb4\",\"94\":\"329a5\",\"95\":\"27a31\",\"96\":\"1b3a2\",\"97\":\"09b89\",\"98\":\"07fc8\",\"99\":\"86c07\",\"100\":\"6a727\",\"101\":\"6492a\",\"102\":\"2faca\",\"103\":\"789ea\",\"104\":\"69682\",\"105\":\"8627f\",\"106\":\"48796\",\"107\":\"9c8cf\",\"108\":\"f58ab\",\"109\":\"aa8fe\",\"110\":\"f1bcd\",\"111\":\"6db94\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"0\":1,\"1\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1,\"11\":1,\"12\":1,\"13\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1,\"18\":1,\"19\":1,\"20\":1,\"21\":1,\"22\":1,\"23\":1,\"29\":1,\"31\":1,\"32\":1,\"33\":1,\"34\":1,\"35\":1,\"36\":1,\"37\":1,\"38\":1,\"39\":1,\"40\":1,\"41\":1,\"42\":1,\"45\":1,\"46\":1,\"47\":1,\"48\":1,\"49\":1,\"51\":1,\"52\":1,\"53\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"58\":1,\"59\":1,\"64\":1,\"65\":1,\"66\":1,\"68\":1,\"69\":1,\"70\":1,\"71\":1,\"72\":1,\"73\":1,\"74\":1,\"75\":1,\"76\":1,\"77\":1,\"78\":1,\"79\":1,\"80\":1,\"81\":1,\"82\":1,\"83\":1,\"84\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"97\":1,\"98\":1,\"99\":1,\"100\":1,\"101\":1,\"102\":1,\"103\":1,\"104\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"1\":\"route-game-challenge-root-1~route-simple-game-root-1\",\"7\":\"route-activtiy-game-root-1\",\"8\":\"route-client-guard-root-1\",\"9\":\"route-direct-root-1\",\"10\":\"route-game-challenge-root-1\",\"11\":\"route-intro-root-1\",\"12\":\"route-intro-root-2\",\"13\":\"route-main-error-root-1\",\"14\":\"route-multi-step-root-1\",\"15\":\"route-plane-banner-root-1\",\"16\":\"route-referral-root1\",\"17\":\"route-reward-card-root-1\",\"18\":\"route-reward-root-1\",\"19\":\"route-simple-game-root-1\",\"20\":\"route-streak-root-1\",\"21\":\"route-wallet-root-1\"}[chunkId]||chunkId) + \".chunk.\" + {\"0\":\"0ac19\",\"1\":\"eac1f\",\"2\":\"31d6c\",\"3\":\"31d6c\",\"4\":\"31d6c\",\"7\":\"f96d5\",\"8\":\"3ba37\",\"9\":\"8bbda\",\"10\":\"8d73c\",\"11\":\"e5716\",\"12\":\"9ba5d\",\"13\":\"3ba37\",\"14\":\"c3e61\",\"15\":\"eba1e\",\"16\":\"6ee16\",\"17\":\"8ae8b\",\"18\":\"b97d0\",\"19\":\"6572f\",\"20\":\"4c9d3\",\"21\":\"4be6e\",\"22\":\"7d5af\",\"23\":\"95e5c\",\"24\":\"31d6c\",\"25\":\"31d6c\",\"26\":\"31d6c\",\"27\":\"31d6c\",\"28\":\"31d6c\",\"29\":\"46352\",\"30\":\"31d6c\",\"31\":\"c0105\",\"32\":\"d23c9\",\"33\":\"4e576\",\"34\":\"647d4\",\"35\":\"e7378\",\"36\":\"9bb40\",\"37\":\"e5caf\",\"38\":\"5a68e\",\"39\":\"fd64a\",\"40\":\"59183\",\"41\":\"22ba7\",\"42\":\"f2bb8\",\"43\":\"31d6c\",\"44\":\"31d6c\",\"45\":\"33c72\",\"46\":\"f2bb8\",\"47\":\"beb99\",\"48\":\"49c30\",\"49\":\"10def\",\"50\":\"31d6c\",\"51\":\"c2ca9\",\"52\":\"be82f\",\"53\":\"a99a9\",\"54\":\"c526b\",\"55\":\"aada8\",\"56\":\"1892b\",\"57\":\"3deea\",\"58\":\"ce97b\",\"59\":\"b48c6\",\"60\":\"31d6c\",\"61\":\"31d6c\",\"62\":\"31d6c\",\"63\":\"31d6c\",\"64\":\"56bf3\",\"65\":\"9a109\",\"66\":\"880ad\",\"67\":\"31d6c\",\"68\":\"5328c\",\"69\":\"1ec48\",\"70\":\"8ad8d\",\"71\":\"a86fe\",\"72\":\"c42c2\",\"73\":\"3536d\",\"74\":\"05660\",\"75\":\"8fdc4\",\"76\":\"f5f9d\",\"77\":\"b410f\",\"78\":\"f43f6\",\"79\":\"abbfe\",\"80\":\"4e837\",\"81\":\"a6b08\",\"82\":\"c40dc\",\"83\":\"42ad7\",\"84\":\"ab04f\",\"85\":\"c953d\",\"86\":\"a964a\",\"87\":\"6d971\",\"88\":\"3ba37\",\"89\":\"11c4d\",\"90\":\"a638e\",\"91\":\"f440c\",\"92\":\"cbf29\",\"93\":\"05c63\",\"94\":\"59e56\",\"95\":\"c791f\",\"96\":\"e3fbf\",\"97\":\"1feb0\",\"98\":\"55dcb\",\"99\":\"09ce7\",\"100\":\"49aab\",\"101\":\"0414f\",\"102\":\"e0d44\",\"103\":\"8b7dd\",\"104\":\"0c334\",\"105\":\"31d6c\",\"106\":\"31d6c\",\"107\":\"31d6c\",\"108\":\"31d6c\",\"109\":\"31d6c\",\"110\":\"31d6c\",\"111\":\"31d6c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tvar onLinkComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks.\n \t\t\t\t\tlinkTag.onerror = linkTag.onload = null;\n \t\t\t\t\tif (event.type === 'load') {\n \t\t\t\t\t\tresolve();\n \t\t\t\t\t} else {\n \t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n \t\t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n \t\t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\t\terr.type = errorType;\n \t\t\t\t\t\terr.request = realHref;\n \t\t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\t\treject(err);\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tdocument.head.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","import { IProgramActions } from \"../actions/program\";\nimport { IProgram } from \"../interfaces\";\nimport { IContext } from \"../interfaces/store-action\";\nimport { createContext, h } from \"preact\";\nimport { useMemo, useReducer } from \"preact/hooks\";\n\nexport interface IProgramsState {\n allIds: string[];\n byId: {\n [id: string]: IProgram;\n };\n allProgramsLoaded: boolean;\n referralLink: string;\n}\n\nconst initialState: IProgramsState = {\n allIds: [],\n byId: {},\n allProgramsLoaded: false,\n referralLink: \"**REFERRAL_LINK**\",\n};\n\nfunction programsReducer(\n state: IProgramsState,\n action: IProgramActions\n): IProgramsState {\n switch (action.type) {\n case \"SET PROGRAMS\": {\n const newProgramMap = action.payload.programMap;\n\n const newState: IProgramsState = {\n ...state,\n allIds: [...state.allIds],\n byId: { ...state.byId },\n allProgramsLoaded: action.payload.allProgramsLoaded,\n };\n\n for(let i = 0; i < newProgramMap.allIds.length; i++) {\n const id = newProgramMap.allIds[i];\n if(!state.byId[id]) {\n newState.allIds.push(id);\n }\n newState.byId[id] = newProgramMap.byId[id];\n }\n\n return newState;\n }\n case \"SET PROGRAM\": {\n const newState: IProgramsState = {\n ...state,\n byId: { ...state.byId },\n };\n\n if(!state.byId[action.payload.program.campaignId]) {\n newState.allIds = [...newState.allIds, action.payload.program.campaignId]\n }\n\n newState.byId[action.payload.program.campaignId] = {...action.payload.program}\n return newState;\n }\n }\n}\n\nexport const ProgramsContext =\n createContext>(undefined);\n\nexport function ProgramsProvider(props: { children?: any }) {\n const [state, dispatch] = useReducer(\n programsReducer,\n initialState\n );\n\n const value = useMemo(() => ({ state, dispatch }), [state]);\n\n return (\n \n {props.children}\n \n );\n}\n","import { pluckValue } from \"./conditional-operation\";\nimport { withInternalError } from \"./custom-errors\";\nimport { replaceKeys } from \"./regex\";\n\nexport interface IOperand {\n type_id: \"CONSTANT\" | \"STATE_VALUE\";\n constantValue?: IConstantType;\n stateValue?: (string | string[])[];\n}\n\ninterface IADD {\n type_id: \"ADD\";\n operand: IOperand;\n}\n\ninterface ISubtract {\n type_id: \"SUBTRACT\";\n operand: IOperand;\n}\n\ninterface IDivide {\n type_id: \"DIVIDE\";\n operand: IOperand;\n round?: boolean;\n}\n\ninterface IMultiply {\n type_id: \"MULTIPLY\";\n operand: IOperand;\n}\n\ninterface IRound {\n type_id: \"ROUND\";\n}\n\ninterface IPrepend {\n type_id: \"PREPEND\";\n operand: IOperand;\n}\n\ninterface IAppend {\n type_id: \"APPEND\";\n operand: IOperand;\n}\n\ninterface IReplace {\n type_id: \"REPLACE\";\n map: {\n [pattern: string]: IVariable;\n };\n fallbackText: string;\n}\n\nexport type IOperation =\n | IADD\n | ISubtract\n | IMultiply\n | IDivide\n | IRound\n | IAppend\n | IPrepend\n | IReplace;\n\nexport interface IVariable {\n initialOperand: IOperand;\n operations?: IOperation[];\n}\n\nexport function getVariableValue(state: Object, variable: IVariable) {\n try {\n let result = null;\n let initialValue = null;\n if (variable.initialOperand.type_id === \"CONSTANT\") {\n initialValue = variable.initialOperand.constantValue;\n } else {\n initialValue = pluckValue(state, variable.initialOperand.stateValue);\n }\n\n result = initialValue;\n\n if (variable.operations && variable.operations.length) {\n for (let i = 0; i < variable.operations.length; i++) {\n const operation = variable.operations[i];\n if (operation.type_id === \"REPLACE\") {\n result = replaceVariablesInText(state, operation, result);\n } else if (operation.type_id === \"ROUND\") {\n result = Math.round(result);\n } else {\n let operand = null;\n if (operation.operand.type_id === \"CONSTANT\") {\n operand = operation.operand.constantValue;\n } else {\n operand = pluckValue(state, operation.operand.stateValue);\n }\n if (operation.type_id === \"ADD\") {\n result = result + operand;\n } else if (operation.type_id === \"DIVIDE\") {\n result = result / operand;\n } else if (operation.type_id === \"MULTIPLY\") {\n result = result * operand;\n } else if (operation.type_id === \"SUBTRACT\") {\n result = result - operand;\n }\n }\n }\n }\n\n if (result === undefined || result === null) {\n throw \"invalid result\";\n // throw withInternalError(\"invalid result obtained from variable\", \"getVariableValue\", { state, variable })\n }\n\n return result;\n } catch (e) {\n console.log(e);\n return undefined;\n }\n}\n\nexport function replaceVariablesInText(\n state: Object,\n replace: IReplace,\n target: string\n) {\n try {\n const variableValues: { [key: string]: any } = {};\n\n for (let key in replace.map) {\n variableValues[key] = getVariableValue(state, replace.map[key]);\n }\n\n return replaceKeys(target, variableValues);\n } catch (e) {\n console.log(e);\n return replace.fallbackText;\n }\n}\n","import { IAction } from \"../interfaces/store-action\";\nimport { IUser } from \"../interfaces/user\";\n\ntype ISetUserAction = IAction<\"USER\", \"USER_STORE SET USER\", { user: IUser }>;\nexport const setUserAction = (payload: { user: IUser }): ISetUserAction => {\n return {\n store: \"USER\",\n type: \"USER_STORE SET USER\",\n payload,\n };\n};\n\ntype IRequestUserAction = IAction<\"USER\", \"USER_STORE REQUEST USER\">;\nexport const requestUserAction = (): IRequestUserAction => {\n return {\n store: \"USER\",\n type: \"USER_STORE REQUEST USER\",\n payload: null,\n };\n};\n\nexport type IUserAction = ISetUserAction | IRequestUserAction;\n","import { IUser } from \"../interfaces/user\";\nimport { get } from \"../util/api\";\nimport { withMalformedApiResponseError } from \"../util/custom-errors\";\n\nexport const fetchUser = async (token: string): Promise => {\n const url = `${process.env.HOST_ENV}/user/v1/user/sdk/getUser`;\n const res = await get<{ success: boolean; data: { user: IUser } }>(\n url,\n token\n );\n const body = res.parsedBody;\n if (!res || !body || !body.success || !body.data || !body.data.user)\n throw withMalformedApiResponseError(\n \"error fetching user\",\n {\n url,\n method: \"get\",\n },\n res\n );\n if (body.data.user) return body.data.user;\n};\n","import { IUserAction, setUserAction } from \"../actions/user\";\nimport { IUserState, UserContext } from \"../contexts/user\";\nimport { IDispatch } from \"../interfaces/dispatch\";\nimport { IStatus } from \"../interfaces/status\";\nimport { fetchUser } from \"../network/user\";\nimport { useSession } from \"./session\";\nimport { useContext, useEffect } from \"preact/hooks\";\nimport { useStatus } from \"./status\";\nimport { withInternalError } from \"../util/custom-errors\";\nimport { useLogs } from \"./logging\";\n\nexport const useUser = (): [IUserState, IDispatch] => {\n const context = useContext(UserContext);\n if (context === undefined) {\n throw withInternalError(\"useUser must be used within a SessionProvider\", \"useUser\");\n }\n return [context.state, context.dispatch];\n};\n\nexport const useUserInitilizer = (): [IStatus] => {\n const [status, setStatus] = useStatus();\n const [userState, userDispatch] = useUser();\n const [session] = useSession();\n const [recordError] = useLogs();\n\n useEffect(() => {\n if (session.token) {\n requestUser();\n }\n }, [session.token]);\n\n const requestUser = async () => {\n try {\n setStatus({ state: \"LOADING\" });\n if (!session.token) throw withInternalError(\"token not found\", \"useUserInitilizer.requestUser\");\n const user = await fetchUser(session.token);\n userDispatch(setUserAction({ user }));\n setStatus({ state: \"LOAD_SUCCESS\" });\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"error fetching user\"});\n recordError(e);\n }\n };\n\n return [status];\n};\n","import { IProgram, IReward } from \"../interfaces\";\nimport { AllPageNames } from \"../interfaces/constants-mapper\";\nimport { IActionHandler } from \"../interfaces/event-actions\";\nimport { useCommonState } from \"./common-state\";\n\ninterface IAnalyticsDetails {\n rootTypeId: string;\n rootId: string;\n reward?: IReward;\n program?: IProgram;\n pageName?: AllPageNames;\n}\n\nvar pendingEvents: { reportingVersion: number; analyticsObj: {} }[] = [];\n\nexport function FlushPendingEvents() {\n while (pendingEvents.length > 0) {\n let pendingObj = pendingEvents.shift();\n if (pendingObj.analyticsObj[\"commonDetails\"]) {\n pendingObj.analyticsObj[\"commonDetails\"][\"user\"] = window[\"USER\"];\n }\n delayRequest(pendingObj);\n }\n\n function delayRequest(obj) {\n console.log(\"flush pending objects \", obj);\n setTimeout(() => {\n if (obj.reportingVersion === 3) {\n sendV3Analytics(obj.analyticsObj);\n } else {\n sendV4Analytics(obj.analyticsObj);\n }\n }, 1000);\n }\n\n const sendV3Analytics = async (analyticObj) => {\n try {\n if (!window[\"v3Helper\"]) {\n const v3Helper = (await import(\"../network/analytics-v3/transform\"))\n .default;\n window[\"v3Helper\"] = v3Helper;\n }\n window[\"v3Helper\"](analyticObj);\n } catch (e) {\n console.log(e);\n }\n };\n\n const sendV4Analytics = async (analyticObj) => {\n try {\n if (!window[\"v4Helper\"]) {\n const v4Helper = (await import(\"../network/analytics-v4/transform\"))\n .default;\n window[\"v4Helper\"] = v4Helper;\n }\n window[\"v4Helper\"](analyticObj);\n } catch (e) {\n console.log(e);\n }\n };\n}\n\nexport const useAnalytics = ({\n rootTypeId,\n rootId,\n pageName,\n reward,\n program,\n}: IAnalyticsDetails): [IActionHandler] => {\n const [commonDetails] = useCommonState();\n let reportingVersion = 4;\n\n const onAction: IActionHandler = (action, details) => {\n if (process.env.MODE === \"DEMO\") return;\n\n if (window[\"user_is_set\"]) {\n if (reportingVersion === 3) {\n sendV3Analytics(action, details);\n }\n if (reportingVersion === 4) {\n sendV4Analytics(action, details);\n }\n } else {\n if (reportingVersion === 3) {\n pendingEvents.push({\n reportingVersion: reportingVersion,\n analyticsObj: {\n rootId,\n rootTypeId,\n reward,\n program,\n action,\n stateDetails: details,\n },\n });\n } else {\n pendingEvents.push({\n reportingVersion: reportingVersion,\n analyticsObj: {\n action: action,\n details: details,\n rootTypeId: rootTypeId,\n pageName: pageName,\n rootId: rootId,\n reward: reward,\n program: program,\n commonDetails: commonDetails,\n },\n });\n }\n }\n };\n\n const sendV3Analytics: IActionHandler = async (action, details) => {\n try {\n if (!window[\"v3Helper\"]) {\n const v3Helper = (await import(\"../network/analytics-v3/transform\"))\n .default;\n window[\"v3Helper\"] = v3Helper;\n }\n window[\"v3Helper\"]({\n rootId,\n rootTypeId,\n reward,\n program,\n action,\n stateDetails: details,\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n const sendV4Analytics: IActionHandler = async (action, details) => {\n try {\n if (!window[\"v4Helper\"]) {\n const v4Helper = (await import(\"../network/analytics-v4/transform\"))\n .default;\n window[\"v4Helper\"] = v4Helper;\n }\n window[\"v4Helper\"]({\n action: action,\n details: details,\n rootTypeId: rootTypeId,\n pageName: pageName,\n rootId: rootId,\n reward: reward,\n program: program,\n commonDetails: commonDetails,\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n return [onAction];\n};\n","import { IReward, IRewardMap } from \"../interfaces\";\nimport { IRewardFilter } from \"../interfaces/campaign-filter\";\nimport { IStateMapGeneric } from \"../interfaces/state-map\";\nimport { IAction } from \"../interfaces/store-action\";\n\n/* SET REWARDS */\nexport type ISetRewardsPayload = {\n rewardMap: IRewardMap;\n allRewardsLoaded?: boolean;\n};\ntype ISetRewardsAction = IAction<\"REWARD\", \"SET REWARDS\", ISetRewardsPayload>;\nexport function setRewardsAction(\n payload: ISetRewardsPayload\n): ISetRewardsAction {\n return {\n store: \"REWARD\",\n type: \"SET REWARDS\",\n payload,\n };\n}\n\n/* SET REWARD */\nexport type ISetRewardPayload = { id: string; reward: IReward };\ntype ISetRewardAction = IAction<\"REWARD\", \"SET REWARD\", ISetRewardPayload>;\nexport function setRewardAction(payload: ISetRewardPayload): ISetRewardAction {\n return {\n store: \"REWARD\",\n type: \"SET REWARD\",\n payload,\n };\n}\n\n/* HOOK ACTIONS */\n\n/* LOAD REWARDS */\nexport type ILoadRewardsPayload = { filter?: IRewardFilter };\ntype ILoadRewardsAction = IAction<\n \"REWARD\",\n \"LOAD REWARDS\",\n ILoadRewardsPayload\n>;\nexport function loadRewardsAction(\n payload: ILoadRewardsPayload\n): ILoadRewardsAction {\n return {\n store: \"REWARD\",\n type: \"LOAD REWARDS\",\n payload,\n };\n}\n\n/* CONSUME REWARD */\nexport type IConsumeRewardPayload = {\n rewardUserId: string;\n params: {\n score?: number;\n timeLeft?: number;\n selectedSlotIndex?: number;\n };\n};\ntype IConsumeRewardAction = IAction<\n \"REWARD\",\n \"CONSUME REWARD\",\n IConsumeRewardPayload,\n IStateMapGeneric<\"params\" | \"rewardUserId\">\n>;\nexport function consumeRewardAction(\n payload: IConsumeRewardPayload\n): IConsumeRewardAction {\n return {\n store: \"REWARD\",\n type: \"CONSUME REWARD\",\n payload,\n };\n}\n\n/* UN-CONSUME REWARDS */\nexport type IUnConsumeRewardPayload = { rewardUserId?: string };\ntype IUnConsumeRewardAction = IAction<\n \"REWARD\",\n \"UNCONSUME REWARD\",\n IUnConsumeRewardPayload\n>;\nexport function unConsumeRewardAction(\n payload: IUnConsumeRewardPayload\n): IUnConsumeRewardAction {\n return {\n store: \"REWARD\",\n type: \"UNCONSUME REWARD\",\n payload,\n };\n}\n\n/* RETRY REWARD */\nexport type IRetryRewardPayload = {\n rewardUserId: string;\n params: {\n score?: number;\n timeLeft?: number;\n selectedSlotIndex?: number;\n };\n};\ntype IRetryRewardAction = IAction<\n \"REWARD\",\n \"RETRY REWARD\",\n IRetryRewardPayload,\n IStateMapGeneric<\"params\" | \"rewardUserId\">\n>;\nexport function retryRewardAction(\n payload: IRetryRewardPayload\n): IRetryRewardAction {\n return {\n store: \"REWARD\",\n type: \"RETRY REWARD\",\n payload,\n };\n}\n\n/* CONSUME GENERATE REWARD */\nexport type IConsumeGenerateRewardPayload = {\n rewardUserId: string;\n params: {\n score?: number;\n timeLeft?: number;\n selectedSlotIndex?: number;\n };\n};\ntype IConsumeGenerateRewardAction = IAction<\n \"REWARD\",\n \"CONSUME GENERATE REWARD\",\n IConsumeGenerateRewardPayload,\n IStateMapGeneric<\"params\" | \"rewardUserId\">\n>;\nexport function consumeGenerateRewardAction(\n payload: IConsumeGenerateRewardPayload\n): IConsumeGenerateRewardAction {\n return {\n store: \"REWARD\",\n type: \"CONSUME GENERATE REWARD\",\n payload,\n };\n}\n\n/* LOCALLY CONSUME REWARD */\nexport type ILocallyConsumeRewardPayload = {\n rewardUserId: string;\n params: {\n score?: number;\n timeLeft?: number;\n selectedSlotIndex?: number;\n };\n};\ntype ILocallyConsumeRewardAction = IAction<\n \"REWARD\",\n \"LOCALLY CONSUME REWARD\",\n ILocallyConsumeRewardPayload,\n IStateMapGeneric<\"params\" | \"rewardUserId\">\n>;\nexport function locallyConsumeRewardAction(\n payload: ILocallyConsumeRewardPayload\n): ILocallyConsumeRewardAction {\n return {\n store: \"REWARD\",\n type: \"LOCALLY CONSUME REWARD\",\n payload,\n };\n}\n\n/* REGISTER CONSUME REWARD */\nexport type IRegisterLocallyConsumedRewardPayload = {\n rewardUserId: string;\n};\ntype IRegisterLocallyConsumedRewardAction = IAction<\n \"REWARD\",\n \"REGISTER LOCALLY CONSUMED REWARD\",\n IRegisterLocallyConsumedRewardPayload,\n IStateMapGeneric<\"rewardUserId\">\n>;\nexport function registerLocallyConsumeRewardAction(\n payload: IRegisterLocallyConsumedRewardPayload\n): IRegisterLocallyConsumedRewardAction {\n return {\n store: \"REWARD\",\n type: \"REGISTER LOCALLY CONSUMED REWARD\",\n payload,\n };\n}\n\n/* CONSUME SCORE BASED REWARD */\nexport type IConsumeScoreBasedRewardPayload = {\n rewardUserId: string;\n params: {\n score?: number;\n };\n};\n\ntype IConsumeScoreBasedRewardAction = IAction<\n \"REWARD\",\n \"CONSUME SCORE BASED REWARD\",\n IConsumeScoreBasedRewardPayload,\n IStateMapGeneric<\"params\" | \"rewardUserId\">\n>;\nexport function consumeScoreBasedRewardAction(\n payload: IConsumeScoreBasedRewardPayload\n): IConsumeScoreBasedRewardAction {\n return {\n store: \"REWARD\",\n type: \"CONSUME SCORE BASED REWARD\",\n payload,\n };\n}\n\n\nexport type IRewardAction =\n | ILoadRewardsAction\n | ISetRewardsAction\n | ISetRewardAction\n | IConsumeRewardAction\n | IUnConsumeRewardAction\n | IRetryRewardAction\n | IConsumeGenerateRewardAction\n | ILocallyConsumeRewardAction\n | IRegisterLocallyConsumedRewardAction\n | IConsumeScoreBasedRewardAction;\n","import { IRewardAction } from \"../actions/reward\";\nimport { IReward, IRewardMap } from \"../interfaces\";\nimport { IContext } from \"../interfaces/store-action\";\nimport { createContext, h } from \"preact\";\nimport { useMemo, useReducer } from \"preact/hooks\";\n\nexport interface IRewardsState {\n allIds: string[];\n byId: {\n [id: string]: IReward;\n };\n allRewardsLoaded?: boolean;\n}\ninterface ISkeletonObjects {[campaignId:string]:boolean}\n\nlet rewardsSkeletonObject: ISkeletonObjects = {};\nconst initialState: IRewardsState = {\n allIds: [],\n byId: {},\n allRewardsLoaded: false,\n};\n\nfunction rewardsReducer(\n state: IRewardsState,\n action: IRewardAction\n): IRewardsState {\n switch (action.type) {\n case \"SET REWARDS\": {\n const newState: IRewardsState = {\n ...state,\n allIds: [...state.allIds],\n byId: { ...state.byId },\n };\n const newRewardMap = action.payload.rewardMap;\n newRewardMap.allIds.forEach((id) => {\n const r = newRewardMap.byId[id];\n if(rewardsSkeletonObject[r.campaignId] && r.isSkeleton){\n return;\n } \n \n if (!newState.byId[id]) {\n newState.allIds.push(id);\n rewardsSkeletonObject = {\n ...rewardsSkeletonObject,\n [r.campaignId]:true\n }\n }\n newState.byId[id] = newRewardMap.byId[id];\n \n });\n newState.allRewardsLoaded = action.payload.allRewardsLoaded;\n return newState;\n }\n case \"SET REWARD\": {\n const newState: IRewardsState = {\n ...state,\n byId: { ...state.byId },\n };\n\n if (!state.byId[action.payload.id]) {\n newState.allIds = [...newState.allIds, action.payload.id];\n }\n\n newState.byId[action.payload.id] = action.payload.reward;\n return newState;\n }\n }\n}\n\nexport const RewardsContext =\n createContext>(undefined);\n\nexport function RewardsProvider(props: { children?: any }) {\n const [state, dispatch] = useReducer(\n rewardsReducer,\n initialState\n );\n\n const value = useMemo(() => ({ state, dispatch }), [state]);\n\n return (\n \n {props.children}\n \n );\n}\n","import { ISessionState } from \"../contexts/session\";\nimport { IAction } from \"../interfaces/store-action\";\nimport { IRouteQueryParams } from \"../util/routes-details\";\n\ntype ISetSession = IAction<\n \"SESSION\",\n \"SESSION_STORE SET SESSION\",\n ISessionState\n>;\n\nexport const setSession = (payload: ISessionState): ISetSession => {\n return {\n store: \"SESSION\",\n type: \"SESSION_STORE SET SESSION\",\n payload,\n };\n};\n\ntype ISetQueryParamSession = IAction<\n \"SESSION\",\n \"SESSION_STORE SET QUERY PARAM SESSION\",\n { queryParams: IRouteQueryParams }\n>;\nexport const setQueryParamSession = (payload: {\n queryParams: IRouteQueryParams;\n}): ISetQueryParamSession => {\n return {\n store: \"SESSION\",\n type: \"SESSION_STORE SET QUERY PARAM SESSION\",\n payload,\n };\n};\n\ntype IRequestToken = IAction<\n \"SESSION\",\n \"SESSION_STORE REQUEST TOKEN\",\n { details: {} }\n>;\nexport const requestToken = (payload: { details: {} }): IRequestToken => {\n return {\n store: \"SESSION\",\n type: \"SESSION_STORE REQUEST TOKEN\",\n payload,\n };\n};\n\ntype ISetToken = IAction<\n \"SESSION\",\n \"SESSION_STORE SET TOKEN\",\n { token: string }\n>;\nexport const setToken = (payload: { token: string }): ISetToken => {\n return {\n store: \"SESSION\",\n type: \"SESSION_STORE SET TOKEN\",\n payload,\n };\n};\n\nexport type ISessionAction =\n | ISetSession\n | ISetQueryParamSession\n | IRequestToken\n | ISetToken;\n","import {\n IUserAttributes,\n IUserIdentification,\n IUserRegistrationData,\n} from \"../interfaces/user-registration\";\nimport { get, post } from \"../util/api\";\nimport { nanoid } from \"nanoid\";\nimport { withMalformedApiResponseError } from \"../util/custom-errors\";\n\n/* HELPER */\nconst fetchUserId = (): string => {\n if (!window.localStorage) return null;\n const session = localStorage.getItem(\"__glu__session\");\n if (session) return session;\n};\n\n/* HELPER */\nconst generateUserId = (): string => {\n if (!window.localStorage) return null;\n const session = localStorage.getItem(\"__glu__session\");\n if (session) return session;\n else {\n const id = nanoid();\n localStorage.setItem(\"__glu__session\", id);\n return id;\n }\n};\n\n/* HELPER */\nconst fetchToken = async (\n writeKey: string,\n identification: IUserIdentification,\n attributes: IUserAttributes\n): Promise => {\n let userId = identification.userId;\n let anonymousId = identification.anonymousId;\n let userState: \"loggedIn\" | \"nonLoggedIn\" = identification.userId\n ? \"loggedIn\"\n : \"nonLoggedIn\";\n\n if (!anonymousId) {\n anonymousId = fetchUserId();\n }\n\n if (!userId) {\n if (!anonymousId) {\n anonymousId = generateUserId();\n }\n userId = anonymousId;\n }\n\n const reqBody = {\n writeKey,\n userId,\n userState,\n customAttributes: attributes.customAttributes,\n ...attributes.gluAttributes,\n };\n\n if (anonymousId) {\n reqBody.anonymousId = anonymousId;\n }\n\n const res = await post<{ data: { token: string } }>(\n `${process.env.HOST_ENV}/user/v1/user/sdk?token=true`,\n reqBody\n );\n\n if (res.parsedBody && res.parsedBody.data.token) {\n return res.parsedBody.data.token;\n } else {\n throw withMalformedApiResponseError(\n \"error fetching token\",\n {\n url: `${process.env.HOST_ENV}/user/v1/user/sdk?token=true`,\n body: reqBody,\n method: \"post\",\n },\n res\n );\n }\n};\n\n/* HELPER */\nconst fetchBannerData = async (token: string): Promise => {\n const res = await get(`${process.env.HOST_ENV}/reward/v1.1/user`, token);\n return res;\n};\n\n/* EXPORT #1 */\nexport const requestUserToken = async (\n data: IUserRegistrationData\n): Promise => {\n const token = await fetchToken(\n data.writeKey,\n data.userIdentification,\n data.userAttributes\n );\n const bannerData = await fetchBannerData(token);\n return token;\n};\n","import {\n ISessionAction,\n setQueryParamSession,\n setToken,\n} from \"../actions/session\";\nimport { ISessionState, SessionContext } from \"../contexts/session\";\nimport { IDispatch } from \"../interfaces/dispatch\";\nimport { IStatus } from \"../interfaces/status\";\nimport { IUserRegistrationData } from \"../interfaces/user-registration\";\nimport { requestUserToken } from \"../network/session\";\nimport { getRegistrationDataFromObject } from \"../util/get-registration-object\";\nimport { getRouteQueryParams, IRouteQueryParams } from \"../util/routes-details\";\nimport { useContext, useEffect, useState } from \"preact/hooks\";\nimport { useStatus } from \"./status\";\nimport { withInternalError } from \"../util/custom-errors\";\nimport { useLogs } from \"./logging\";\n\nexport const useSession = (): [ISessionState, IDispatch] => {\n const context = useContext(SessionContext);\n if (context === undefined) {\n throw withInternalError(\"useSession must be used within a SessionProvider\", \"useSession\");\n }\n return [context.state, context.dispatch];\n};\n\nexport const useTokenInitilizer = (): IStatus => {\n const [status, setStatus] = useStatus();\n const [session, dispatchSessionAction] = useSession();\n const [recordError] = useLogs();\n\n useEffect(() => {\n try {\n const queryParams = getRouteQueryParams();\n if (queryParams.token) {\n dispatchSessionAction(setToken({ token: queryParams.token }));\n setStatus({ state: \"LOAD_SUCCESS\" });\n } else if (queryParams.writekey) {\n fetchUserToken(queryParams);\n } else {\n throw withInternalError(\"writekey not found\", \"useTokenInitilizer.useEffect\");\n }\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"writekey not found\" });\n recordError(e);\n }\n }, []);\n\n const fetchUserToken = async (queryParams: IRouteQueryParams) => {\n setStatus({ state: \"LOADING\" });\n try {\n const data: IUserRegistrationData =\n getRegistrationDataFromObject(queryParams);\n const token = await requestUserToken(data);\n dispatchSessionAction(setToken({ token }));\n setStatus({ state: \"LOAD_SUCCESS\" });\n } catch (e) {\n setStatus({\n state: \"LOAD_ERROR\",\n message:\n \"error generating the token\"\n });\n recordError(e);\n }\n };\n\n return status;\n};\n\nexport const useQueryParamsInitilizer = () => {\n const [session, dispatchSessionAction] = useSession();\n\n useEffect(() => {\n const queryParams = getRouteQueryParams();\n window[\"skipSeen\"] = queryParams[\"skipSeen\"] === undefined ? false : true;\n dispatchSessionAction(setQueryParamSession({ queryParams }));\n }, []);\n};\n\nexport const useQueryParameter = (key: string) => {\n const [session] = useSession();\n return session.queryParams ? session.queryParams[key] : null;\n};\n","import { IUserRegistrationData } from \"../interfaces/user-registration\";\n\nexport const getRegistrationDataFromObject = (matches: {\n [key: string]: string;\n}): IUserRegistrationData => {\n const userId = matches[\"userId\"];\n const anonymousId = matches[\"anonymousId\"];\n const writeKey = matches[\"writeKey\"] || matches[\"writekey\"];\n\n const userName = matches[\"userName\"];\n const phone = matches[\"userName\"];\n const email = matches[\"userName\"];\n const firebaseToken = matches[\"firebaseToken\"];\n const apnsDeviceToken = matches[\"apnsDeviceToken\"];\n const referredBy = matches[\"referredBy\"];\n\n let platform = matches[\"platform\"];\n if (platform) platform = platform.toLowerCase();\n let customAttributes = {};\n\n const gluAttributes = {\n userName,\n phone,\n email,\n firebaseToken,\n apnsDeviceToken,\n referredBy,\n };\n\n for (let key in matches) {\n if (\n !app[key] &&\n !gluAttributes[key] &&\n key.includes(\"_user_attribute_\") &&\n matches[key]\n ) {\n customAttributes[key.split(\"_user_attribute_\")[1]] = matches[key];\n }\n }\n\n return {\n writeKey,\n userIdentification: {\n anonymousId,\n userId,\n },\n userAttributes: {\n gluAttributes,\n customAttributes,\n },\n };\n};\n","import { useState } from \"preact/hooks\";\nimport { IStatus } from \"../interfaces/status\";\n\nexport const useStatus = (\n initStatus?: IStatus\n): [IStatus, (status: IStatus) => void] => {\n const [status, setStatus] = useState(\n initStatus || { state: \"IDEL\" }\n );\n return [status, setStatus];\n};\n","interface IStorage {\n savedAt: Date;\n expiresAt: Date;\n data: any;\n version?: any;\n}\n\nexport const getFromLocalStorage = (key: string): T => {\n try {\n if(!key) throw new Error(\"key is required\");\n const storageDataString = localStorage.getItem(key);\n if (!storageDataString) return null;\n const storageData = JSON.parse(storageDataString) as IStorage;\n if (storageData.expiresAt) {\n const now = new Date();\n const exp = new Date(storageData.expiresAt);\n\n if (now.valueOf() > exp.valueOf()) return null;\n }\n return storageData.data;\n } catch (e) {\n return null;\n }\n};\n\nexport const setToLocalStorage = (key: string, data: any, expiry?: number) => {\n try {\n if(!key) throw new Error(\"key is required\");\n const now = new Date();\n let exp: Date = null;\n if (expiry) {\n exp = new Date();\n exp.setHours(exp.getHours() + expiry);\n }\n const storageData: IStorage = {\n savedAt: now,\n expiresAt: exp,\n data,\n };\n localStorage.setItem(key, JSON.stringify(storageData));\n } catch (e) {\n console.log(e);\n }\n};\n\nexport const deleteLocalStorageKey = (key: string) => {\n try {\n localStorage.removeItem(key);\n } catch (e) {\n console.log(e);\n }\n}","import { ISessionAction } from \"../actions/session\";\nimport { IContext } from \"../interfaces/store-action\";\nimport { IRouteQueryParams } from \"../util/routes-details\";\nimport { createContext, h } from \"preact\";\nimport { useMemo, useReducer } from \"preact/hooks\";\nimport { nanoid } from \"nanoid\";\n\nexport interface ISessionState {\n queryParams: IRouteQueryParams;\n token: string;\n id?: string;\n session_start_time: Date;\n}\n\nconst initialState: ISessionState = {\n token: null,\n queryParams: {},\n id: nanoid(),\n session_start_time: new Date()\n};\n\nfunction sessionReducer(\n state: ISessionState,\n action: ISessionAction\n): ISessionState {\n switch (action.type) {\n case \"SESSION_STORE SET SESSION\": {\n return action.payload;\n }\n case \"SESSION_STORE SET QUERY PARAM SESSION\": {\n return {\n ...state,\n queryParams: action.payload.queryParams,\n };\n }\n case \"SESSION_STORE SET TOKEN\": {\n window[\"token\"] = action.payload.token;\n window[\"GluToken\"] = action.payload.token;\n return {\n ...state,\n token: action.payload.token,\n };\n }\n }\n}\n\nexport const SessionContext =\n createContext>(undefined);\n\nexport function SessionProvider(props: { children?: any }) {\n const [state, dispatch] = useReducer(\n sessionReducer,\n initialState\n );\n\n const value = useMemo(() => ({ state, dispatch }), [state]);\n\n return (\n \n {props.children}\n \n );\n}\n","import { IUserAction } from \"../actions/user\";\nimport { IUser } from \"../interfaces/user\";\nimport { IContext } from \"../interfaces/store-action\";\nimport { createContext, h } from \"preact\";\nimport { useMemo, useReducer } from \"preact/hooks\";\nimport { FlushPendingEvents } from \"../hooks/analytics\";\n\nexport interface IUserState {\n user: IUser;\n}\n\nconst initialState: IUserState = {\n user: {\n isLoggedIn: null,\n id: null,\n userId: null,\n gluId: null,\n profile: {\n },\n identities: {\n },\n sessionId: null,\n },\n};\n\nfunction userReducer(state: IUserState, action: IUserAction): IUserState {\n switch (action.type) {\n case \"USER_STORE SET USER\": {\n if (action.payload.user) {\n window[\"user_is_set\"] = true;\n window[\"USER\"] = action.payload.user;\n FlushPendingEvents();\n try {\n if (\n action.payload.user.userId === action.payload.user[\"anonymousId\"]\n ) {\n action.payload.user.isLoggedIn = false;\n } else {\n action.payload.user.isLoggedIn = true;\n }\n } catch (e) {\n console.log(e);\n }\n return {\n ...state,\n user: action.payload.user,\n };\n }\n }\n }\n}\n\nexport const UserContext =\n createContext>(undefined);\n\nexport function UserProvider(props: { children?: any }) {\n const [state, dispatch] = useReducer(\n userReducer,\n initialState\n );\n\n const value = useMemo(() => ({ state, dispatch }), [state]);\n\n return (\n {props.children}\n );\n}\n","import { IRewardState } from \"../hooks/reward-state\";\nimport { IStateMap } from \"../interfaces/state-map\";\nimport { withInternalError } from \"./custom-errors\";\nimport { getVariableValue } from \"./state-variable-operation\";\n\nexport function getStateValues(state: any, stateMap: IStateMap): T {\n const stateToBeFilled: T = {} as T;\n\n if (!state) throw withInternalError(\"state is undefined\", \"getStateValues\", { state, stateMap });\n\n if (stateMap && stateMap.select) {\n for (let key in stateMap.select) {\n let value = null;\n try {\n value = getVariableValue(state, stateMap.select[key]);\n } catch (e) {\n value = null;\n throw withInternalError(e, \"getStateValues\", { state, stateMap });\n }\n stateToBeFilled[key] = value;\n }\n }\n return stateToBeFilled; \n}\n\nexport function getStateValuesLegacy(\n state: IRewardState,\n referenceId: string\n): T {\n try {\n let elementState: T = {} as T;\n if (\n referenceId &&\n state &&\n state.layoutSlotInfo &&\n state.layoutSlotInfo.extraData &&\n state.layoutSlotInfo.extraData[referenceId]\n ) {\n elementState = state.layoutSlotInfo.extraData[referenceId].data as T;\n }\n\n return elementState;\n } catch (e) {\n console.log(e);\n throw withInternalError(e, \"getStateValuesLegacy\", { state, referenceId });\n }\n}\n","import { HttpResponse } from \"./api\";\n\ninterface IApiRequest {\n method: string;\n url?: string;\n body?: any;\n}\n\nexport interface IErrorWithMeta extends Error {\n meta?:\n | IApiError\n | IMalformedApiResponseError\n | IInitilizationError\n | IInternalError;\n}\n\nexport interface IApiError {\n name: \"API_ERROR\";\n severity: \"EXCEPTION\";\n statusCode: number;\n request: IApiRequest;\n response: any;\n}\n\nexport interface IMalformedApiResponseError {\n name: \"MALFORMED_API_RESPONSE_ERROR\";\n severity: \"EXCEPTION\";\n request: IApiRequest;\n response: any;\n}\n\nexport interface IInitilizationError {\n name: \"INITILIZATION_ERROR\";\n severity: \"EXCEPTION\";\n}\n\nexport interface IInternalError {\n name: \"INTERNAL_ERROR\";\n severity: \"EXCEPTION\";\n functionName?: string | string[];\n functionArguments?: any;\n}\n\nexport const withApiError = (\n e: Error | string | unknown,\n request: Request,\n response: HttpResponse,\n body?: string\n) => {\n const meta: IApiError = {\n name: \"API_ERROR\",\n severity: \"EXCEPTION\",\n statusCode: response?.status,\n request: {\n url: request.url,\n body: body,\n method: request.method,\n },\n response: response?.parsedBody,\n };\n\n const error = resolveError(e);\n error[\"meta\"] = meta;\n return error;\n};\n\nexport const withMalformedApiResponseError = (\n e: Error | string | unknown,\n request: IApiRequest,\n response: HttpResponse\n) => {\n const meta: IMalformedApiResponseError = {\n name: \"MALFORMED_API_RESPONSE_ERROR\",\n severity: \"EXCEPTION\",\n request: {\n url: request.url,\n body: request.body,\n method: request.method,\n },\n response: response.parsedBody,\n };\n\n const error = resolveError(e);\n error[\"meta\"] = meta;\n return error;\n};\n\nexport const withInitilizationError = (e: Error | string | unknown) => {\n const meta: IInitilizationError = {\n name: \"INITILIZATION_ERROR\",\n severity: \"EXCEPTION\",\n };\n const error = resolveError(e);\n error[\"meta\"] = meta;\n return error;\n};\n\nexport const withInternalError = (\n e: Error | string | unknown,\n functionName?: string | string[],\n functionArguments?: any\n) => {\n const meta: IInternalError = {\n name: \"INTERNAL_ERROR\",\n severity: \"EXCEPTION\",\n functionName: functionName,\n functionArguments: functionArguments,\n };\n const error = resolveError(e);\n error[\"meta\"] = meta;\n return error;\n};\n\nconst resolveError = (e: unknown) => {\n let error: Error = null;\n if (e instanceof Error) {\n error = e;\n } else if (typeof e === \"string\") {\n error = new Error(e);\n } else {\n error = new Error(JSON.stringify(e));\n }\n\n return error;\n};","import { getRouteQueryParams } from \"./routes-details\";\n\n//#region getDeviceType\ntype IDeviceType = \"mobile\" | \"tablet\" | \"desktop\";\n\n/* check mobile */\nconst isMobileDevice = (userAgent: string): boolean => {\n const regexs = [\n /(Android)(.+)(Mobile)/i,\n /BlackBerry/i,\n /iPhone|iPod/i,\n /Opera Mini/i,\n /IEMobile/i,\n ];\n return regexs.some((b) => userAgent.match(b));\n};\n\n/* check tablet */\nconst isTabletDevice = (userAgent: string): boolean => {\n const regex =\n /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/;\n return regex.test(userAgent.toLowerCase());\n};\n\n/* main export */\nexport function getDeviceType(): IDeviceType {\n const userAgent: string = navigator.userAgent || navigator.vendor;\n let device: IDeviceType = \"desktop\";\n\n if (isMobileDevice(userAgent)) {\n device = \"mobile\";\n }\n if (isTabletDevice(userAgent)) {\n device = \"tablet\";\n }\n return device;\n}\n//#endregion\n\n//#region getOs\ntype IDeviceOS =\n | \"windows_phone_os\"\n | \"android\"\n | \"ios\"\n | \"windows\"\n | \"macos\"\n | \"unix\"\n | \"linux\"\n | \"unknown\";\n\nexport function getDeviceOS(): IDeviceOS {\n const userAgent: string = navigator.userAgent || navigator.vendor;\n if (/windows phone/i.test(userAgent)) return \"windows_phone_os\";\n else if (/android/i.test(userAgent)) return \"android\";\n else if (/iPad|iPhone|iPod/.test(userAgent) && !window[\"MSStream\"])\n return \"ios\";\n else if (userAgent.indexOf(\"Win\") !== -1) return \"windows\";\n else if (userAgent.indexOf(\"Mac\") !== -1) return \"macos\";\n else if (userAgent.indexOf(\"X11\") !== -1) return \"unix\";\n else if (userAgent.indexOf(\"Linux\") !== -1) return \"linux\";\n\n return \"unknown\";\n}\n//#endregion\n\n//#region getAgentType\nconst rules = [\n // if it says it's a webview, let's go with that\n \"WebView\",\n // iOS webview will be the same as safari but missing \"Safari\"\n \"(iPhone|iPod|iPad)(?!.*Safari)\",\n // Android Lollipop and Above: webview will be the same as native but it will contain \"wv\"\n // Android KitKat to lollipop webview will put {version}.0.0.0\n \"Android.*(wv|.0.0.0)\",\n // old chrome android webview agent\n \"Linux; U; Android\",\n];\n\ntype IAgentType = \"iframe\" | \"webview\" | \"browser\";\n\nexport function getAgentType(): IAgentType {\n if (window && window.parent !== window) return \"iframe\";\n\n const userAgent: string = navigator.userAgent || navigator.vendor;\n const webviewRegExp = new RegExp(\"(\" + rules.join(\"|\") + \")\", \"ig\");\n\n if (userAgent.match(webviewRegExp)) return \"webview\";\n\n return \"browser\";\n}\n//#endregion\n\n//#region getPlatform\ntype IAppPlatform =\n | \"android\"\n | \"ios\"\n | \"flutter\"\n | \"reactNative\"\n | \"web\"\n | string;\n\nexport function getAppPlatform(): IAppPlatform {\n const queryParams = getRouteQueryParams();\n if (queryParams.platform) {\n return queryParams.platform;\n } else {\n try {\n if (window[\"app\"] && window[\"app\"].postMessage) {\n return \"flutter\";\n } else if (window[\"app\"] && window[\"app\"].callback) {\n return \"android\";\n } else if (\n window[\"ReactNativeWebView\"] &&\n window[\"ReactNativeWebView\"].postMessage\n ) {\n return \"reactNative\";\n } else if (\n window.webkit &&\n window.webkit.messageHandlers &&\n window.webkit.messageHandlers.callback.postMessage\n ) {\n return \"ios\";\n } else {\n return \"web\";\n }\n } catch (e) {\n console.log(e);\n }\n }\n}\n//#endregion\n\nexport interface IEnvironmentDetails {\n deviceType: IDeviceType;\n os: IDeviceOS;\n agentType: IAgentType;\n appPlatform: IAppPlatform;\n}\n\nlet environmentDetails: IEnvironmentDetails;\n\nexport function getEnvironmentDetails(): IEnvironmentDetails {\n if (environmentDetails) {\n return environmentDetails;\n } else {\n environmentDetails = {\n deviceType: getDeviceType(),\n os: getDeviceOS(),\n agentType: getAgentType(),\n appPlatform: getAppPlatform(),\n };\n return environmentDetails;\n }\n}\n","export function emitEventV2(eventName: string, data: any) {\n const event = { eventName, data };\n const eventStr = JSON.stringify(event);\n console.log(event);\n try {\n if (window[\"app\"] && window[\"app\"].postMessage) {\n window[\"app\"].postMessage(eventStr);\n } else if (window[\"app\"] && window[\"app\"].callback) {\n window[\"app\"].callback(eventStr);\n } else if (window.parent !== window && window.parent.postMessage) {\n window.parent.postMessage(eventStr, \"*\");\n } else if (\n window[\"ReactNativeWebView\"] &&\n window[\"ReactNativeWebView\"].postMessage\n ) {\n window[\"ReactNativeWebView\"].postMessage(eventStr);\n } else if (window.webkit && window.webkit.messageHandlers) {\n webkit.messageHandlers.callback.postMessage(eventStr);\n }\n } catch (e) {\n console.log(e);\n }\n}\n","import { IRouterAction, popPageStartAction } from \"../actions/router\";\nimport { IBottomSheetLayout } from \"../components/async/bottom-sheet\";\nimport { IFullPageLayout } from \"../components/async/full-page\";\nimport { IPopupLayout } from \"../components/async/popup\";\nimport { emitEventV2 } from \"../util/url\";\nimport { createContext, h } from \"preact\";\nimport { useEffect, useMemo, useReducer } from \"preact/hooks\";\nimport { IWalletWrapper } from \"../components/async/wallet-wrapper\";\nimport { IRewardWrapper } from \"../components/async/reward-wrapper\";\nimport { IProgramWrapper } from \"../components/async/program-wrapper\";\nimport { IProgramNudgeWrapper } from \"../components/async/program-nudge-wrapper\";\n\nexport type IPageLayout = IFullPageLayout | IBottomSheetLayout | IPopupLayout;\nexport type IPageContent =\n | IWalletWrapper\n | IRewardWrapper\n | IProgramWrapper\n | IProgramNudgeWrapper;\n\nexport interface IPage {\n hidePreviousPages?: boolean;\n layout: IPageLayout;\n content: IPageContent;\n startClose?: boolean;\n state?: any;\n}\n\nexport interface IRouterState {\n allIds: number[];\n byId: {\n [id: number]: IPage;\n };\n currentId: number;\n}\n\nconst initialState: IRouterState = {\n allIds: [],\n byId: {},\n currentId: 0,\n};\n\nfunction routerReducer(\n state: IRouterState,\n action: IRouterAction\n): IRouterState {\n switch (action.type) {\n case \"ROUTER_STORE PUSH PAGE\": {\n const actionPage = action.payload;\n if (state.allIds.length) {\n const previousSamePageIndex = state.allIds.findIndex((id, index) => {\n const page = state.byId[id];\n if (\n actionPage.content.type_id === \"WALLET_WRAPPER\" &&\n page.content.type_id === \"WALLET_WRAPPER\"\n )\n return true;\n });\n if (\n previousSamePageIndex !== -1 &&\n previousSamePageIndex !== state.allIds.length - 1\n ) {\n return {\n ...state,\n byId: {\n ...state.byId,\n [state.currentId]: {\n ...state.byId[state.currentId],\n startClose: true,\n },\n },\n };\n }\n }\n const newCurrentId = state.currentId + 1;\n if (history) history.pushState({ page: 1 }, newCurrentId.toString());\n return {\n ...state,\n allIds: [...state.allIds, newCurrentId],\n byId: {\n ...state.byId,\n [newCurrentId]: actionPage,\n },\n currentId: newCurrentId,\n };\n }\n case \"ROUTER_STORE POP PAGE\": {\n if (state.allIds.length === 1) {\n close();\n return state;\n } else\n return {\n ...state,\n allIds: state.allIds.filter((id) => id !== state.currentId),\n currentId: state.currentId - 1,\n };\n }\n case \"ROUTER_STORE POP PAGE START\": {\n if (!action.payload?.isNative) {\n if (history) history.back();\n }\n if (state.allIds.length === 1) {\n close();\n return state;\n } else\n return {\n ...state,\n byId: {\n ...state.byId,\n [state.currentId]: {\n ...state.byId[state.currentId],\n startClose: true,\n },\n },\n };\n }\n case \"ROUTER_STORE REPLACE PAGE\": {\n const obj = {\n ...state,\n allIds: [...state.allIds],\n byId: {\n ...state.byId,\n [state.currentId]: action.payload,\n },\n currentId: state.currentId,\n }\n return obj;\n }\n }\n}\n\nexport const RouterContext = createContext<\n { state: IRouterState; dispatch: (action: IRouterAction) => void } | undefined\n>(undefined);\n\nexport function RouterProvider(props: { children?: any }) {\n const [state, dispatch] = useReducer(\n routerReducer,\n initialState\n );\n\n useEffect(() => {\n window.onpopstate = (e) => {\n dispatch(popPageStartAction({ isNative: true }));\n };\n }, []);\n\n const value = useMemo(() => ({ state, dispatch }), [state]);\n\n return (\n \n {props.children}\n \n );\n}\n\nexport const CurrentPageContext = createContext<\n { page: IPage; isActive: boolean } | undefined\n>(undefined);\n\nexport function CurrentPageProvider(props: {\n children?: any;\n page: IPage;\n isActive: boolean;\n}) {\n return (\n \n {props.children}\n \n );\n}\n\nfunction close() {\n emitEventV2(\"CLOSE\", null);\n if (window.parent !== window) {\n const data: any = {\n target: \"GLU_SDK\",\n action: {\n type: \"CLOSE_FRAME_CONTENT\",\n data: {\n rewardsState: null,\n programsState: null,\n },\n },\n };\n window.parent.postMessage(data, \"*\");\n }\n}\n","\n\t\timport Async from \"../../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../../node_modules/babel-loader/lib/index.js??ref--4!./index.tsx\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t});\n\t\t}\n\n\t\texport default Async(load);\n\t","import {\n IConsumeGenerateRewardPayload,\n IConsumeRewardPayload,\n ILocallyConsumeRewardPayload,\n IRegisterLocallyConsumedRewardPayload,\n IRetryRewardPayload,\n IRewardAction,\n IUnConsumeRewardPayload,\n setRewardAction,\n setRewardsAction,\n} from \"../actions/reward\";\nimport { IRewardsState, RewardsContext } from \"../contexts/reward\";\nimport { IReward, IRewardMap } from \"../interfaces\";\nimport { IRewardFilter } from \"../interfaces/campaign-filter\";\nimport { IDispatch } from \"../interfaces/dispatch\";\nimport { IStatus } from \"../interfaces/status\";\nimport {\n fetchAllRewards,\n fetchPaginatedRewards,\n IConsumeRewardParams,\n redeemReward,\n rewardInit,\n} from \"../network/reward\";\nimport { useSession } from \"./session\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { useStatus } from \"./status\";\nimport { IActionDetails, IActionHandler } from \"../interfaces/event-actions\";\nimport { checkCondition } from \"../util/conditional-operation\";\nimport { getVariableValue } from \"../util/state-variable-operation\";\nimport { ISimpleGameResult } from \"../interfaces/simple-game\";\nimport { ILayoutRewardSlot } from \"../interfaces/reward-layout-info\";\nimport { useAutoRefresh } from \"./auto-refresh\";\nimport { withInternalError } from \"../util/custom-errors\";\nimport { useLogs } from \"./logging\";\nimport {\n deleteLocalStorageKey,\n getFromLocalStorage,\n setToLocalStorage,\n} from \"../util/localstorage\";\n\nexport const useRewards = (): [IRewardsState, IDispatch] => {\n const context = useContext(RewardsContext);\n if (context === undefined) {\n throw withInternalError(\n \"useRewards must be used within a RewardsProvider\",\n \"useRewards\"\n );\n }\n return [context.state, context.dispatch];\n};\n\nexport const useRewardsFilter = (\n filter?: IRewardFilter,\n ref?: any,\n useV1?: boolean\n): [IRewardMap, IStatus, typeof refresh] => {\n const [rewardState, rewardDispatch] = useRewards();\n const [status, setStatus] = useStatus();\n const [recordError] = useLogs();\n\n useAutoRefresh([refresh]);\n\n useEffect(() => {\n if (rewardState.allRewardsLoaded) {\n setStatus({ state: \"LOAD_SUCCESS\" });\n } else {\n requestRewards();\n }\n }, [ref ? ref : filter]);\n\n const requestRewards = async (skipLoading?: boolean) => {\n try {\n if (!skipLoading) setStatus({ state: \"LOADING\" });\n\n let rewardMap: IRewardMap = null;\n\n if (useV1) {\n let campaignId = null;\n let rewardUserId = null;\n if (filter) {\n campaignId = getSingleIdFromFilter(\"campaignId\", filter);\n rewardUserId = getSingleIdFromFilter(\"rewardUserId\", filter);\n }\n const data = await fetchAllRewards(\n window[\"GluToken\"],\n campaignId,\n rewardUserId\n );\n rewardMap = data;\n } else {\n const PaginatedRewardMap = await fetchPaginatedRewards(filter, 30, 1);\n rewardMap = PaginatedRewardMap.data.rewards;\n }\n rewardDispatch(\n setRewardsAction({\n rewardMap,\n allRewardsLoaded: filter ? false : true,\n })\n );\n\n setStatus({ state: \"LOAD_SUCCESS\" });\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"reward failed to load\" });\n recordError(e);\n }\n };\n\n function refresh() {\n requestRewards(true);\n }\n\n const matched: IRewardMap = useMemo(() => {\n if (filter) return filterRewards(rewardState, filter);\n else return rewardState;\n }, [filter, rewardState.byId]);\n\n return [matched, status, refresh];\n};\n\nexport const useSingleRewardFilter = (\n filter: IRewardFilter\n): [IReward | null, IStatus] => {\n if (!filter)\n throw withInternalError(\"filter missing\", \"useSingleRewardFilter\");\n const [rewardState, rewardDispatch] = useRewards();\n const [status, setStatus] = useStatus();\n const [recordError] = useLogs();\n\n useAutoRefresh([requestReward]);\n\n async function requestReward() {\n if (!filter) {\n throw new Error(\"filter missing\");\n }\n\n setStatus({ state: \"LOADING\" });\n if (filter.campaignId && Object.keys(filter.campaignId).length > 0) {\n delete filter.rewardUserId;\n } else {\n delete filter.campaignId;\n }\n\n try {\n const PaginatedRewardMap = await fetchPaginatedRewards(filter, 1, 1);\n\n const {\n data: { rewards },\n } = PaginatedRewardMap;\n rewardDispatch(setRewardsAction({ rewardMap: rewards }));\n\n const reward = filterSingleReward(rewards, filter);\n if (reward) {\n setStatus({ state: \"LOAD_SUCCESS\" });\n return;\n }\n\n setStatus({ state: \"LOAD_ERROR\", message: \"reward not found\" });\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"error loading reward\" });\n recordError(e);\n }\n }\n\n let reward = filterSingleReward(rewardState, filter);\n\n let rewardStatus: IStatus = status;\n\n if (reward) {\n reward = syncRewardWithLocalStorage(reward);\n rewardStatus = { state: \"LOAD_SUCCESS\" };\n } else if (status.state === \"IDEL\") {\n requestReward();\n }\n\n return [reward, rewardStatus];\n};\n\nexport const didRewardMatch = (\n reward: IReward,\n filter: IRewardFilter\n): boolean => {\n if (!filter) return true;\n if (!reward) throw withInternalError(\"reward missing\", \"didRewardMatch\");\n\n if (filter.campaignId) {\n if (filter.campaignId[reward.campaignId as string]) {\n } else {\n if (filter.campaignId[reward.campaignId as string] == undefined) {\n if (!filter.campaignId?.default) {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n if (\n filter.activityId &&\n !filter.activityId[reward.rewardProperties?.details?.activityId as string]\n )\n return false;\n if (\n filter.eventName &&\n !filter.eventName[reward.rewardProperties?.details?.eventName as string]\n )\n return false;\n if (filter.rewardType && !filter.rewardType[reward.type as string])\n return false;\n if (filter.rewardUserId && !filter.rewardUserId[reward.rewardUserId])\n return false;\n if (\n filter.userAId &&\n !filter.userAId[reward.rewardProperties?.details?.userAId as string]\n )\n return false;\n if (\n filter.userBId &&\n !filter.userBId[reward.rewardProperties?.details?.userBId as string]\n )\n return false;\n if (\n filter.experienceConsumed !== undefined &&\n reward.experienceConsumed !== filter.experienceConsumed\n )\n return false;\n if (filter.couponExpired !== undefined && reward.experienceConsumed) {\n if (reward.rewardProperties?.couponExpiry?.expiry) {\n const currentDate = Math.floor(new Date().valueOf() / 1000);\n if (filter.couponExpired === false) {\n if (currentDate > reward.rewardProperties.couponExpiry.expiry) {\n return false;\n }\n }\n }\n }\n\n if (\n filter.rewardExpired !== undefined &&\n filter.rewardExpired !== reward.rewardExpiry?.expired\n )\n return false;\n\n if (filter.removeNoRewardType) {\n if (\n (reward.experience === \"direct\" || reward.experienceConsumed) &&\n reward.type === \"noReward\"\n )\n return false;\n }\n if (filter.type) {\n let types = Object.keys(filter.type);\n for (let i = 0; i < types.length; i++) {\n if (filter.type[types[i]] == true) {\n if (reward.experience === types[i]) {\n return true;\n } else {\n return false;\n }\n }\n if (filter.type[types[i]] == false) {\n if (reward.experience === types[i]) {\n return false;\n }\n }\n }\n }\n\n if (filter.condition) {\n const condition = filter.condition;\n const leftValue = getVariableValue({ reward }, condition.leftOperand);\n const rightValue = getVariableValue({ reward }, condition.rightOperand);\n const didMatch = checkCondition(leftValue, rightValue, condition.operator);\n if (!didMatch) return false;\n }\n\n return true;\n};\n\nconst filterSingleReward = (\n state: IRewardsState,\n filter: IRewardFilter\n): IReward | null => {\n if (filter.rewardUserId) {\n const keys = Object.keys(filter.rewardUserId);\n if (keys.length === 1 && state.byId[keys[0]]) {\n return state.byId[keys[0]];\n }\n }\n for (let i = 0; i < state.allIds.length; i++) {\n const r = state.byId[state.allIds[i]];\n if (didRewardMatch(r, filter)) {\n return r;\n }\n }\n return null;\n};\n\nconst filterRewards = (\n state: IRewardsState,\n filter: IRewardFilter\n): IRewardMap => {\n const matched: IRewardMap = { allIds: [], byId: {} };\n if (!filter) return matched;\n for (let i = 0; i < state.allIds.length; i++) {\n const r = state.byId[state.allIds[i]];\n if (didRewardMatch(r, filter)) {\n matched.allIds.push(r.rewardUserId);\n matched.byId[r.rewardUserId] = r;\n }\n }\n return matched;\n};\n\nconst getSingleIdFromFilter = (property: string, filter: IRewardFilter) => {\n const obj = filter[property] as any;\n if (!obj) return null;\n const keys = Object.keys(obj);\n if (keys.length !== 1) return null;\n return keys[0];\n};\n\nexport const useRewardActionHandler = (\n actionHandler?: IActionHandler\n): [IStatus, typeof onAction] => {\n const [session] = useSession();\n const [state, dispatch] = useRewards();\n const [status, setStatus] = useStatus();\n const [recordError] = useLogs();\n\n const requestConsumeReward = async (\n payload: IConsumeRewardPayload,\n onComplete?: Function,\n version: \"v1.1\" | \"v2\" = \"v1.1\"\n ) => {\n try {\n setStatus({ state: \"LOADING\" });\n const r = state.byId[payload.rewardUserId];\n const { newReward, params } = generateConsumeRewardParams(\n r,\n payload.params\n );\n newReward.selectedSlotIndex = params.selectedSlotIndex;\n newReward.status = \"redeemable-seen\";\n dispatch(\n setRewardAction({\n id: newReward.rewardUserId,\n reward: newReward,\n })\n );\n const seenReward = await redeemReward(\n newReward,\n params,\n session.token,\n version\n );\n dispatch(\n setRewardAction({\n id: seenReward.rewardUserId,\n reward: seenReward,\n })\n );\n setStatus({ state: \"LOAD_SUCCESS\" });\n if (actionHandler)\n actionHandler({} as any, {\n analytics: { eventName: \"GAME_PLAYED\", type: \"TRACK\" },\n state: { reward: seenReward },\n onComplete: null,\n });\n if (onComplete) {\n onComplete();\n }\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"failed to consume reward\" });\n recordError(e);\n }\n };\n\n const requestRetryReward = async (\n payload: IRetryRewardPayload,\n onComplete: Function\n ) => {\n try {\n setStatus({ state: \"LOADING\" });\n const r = state.byId[payload.rewardUserId];\n const { newReward, params } = generateRetryRewardParams(r);\n newReward.selectedSlotIndex = params.selectedSlotIndex;\n await redeemReward(newReward, params, session.token);\n const filter: IRewardFilter = {\n rewardUserId: {},\n };\n if (newReward.rewardUserId) {\n filter.rewardUserId[newReward.rewardUserId] = true;\n }\n const paginatedRewardMap = await fetchPaginatedRewards(filter, 1, 1);\n const rewardMap = paginatedRewardMap.data.rewards;\n dispatch(setRewardsAction({ rewardMap }));\n if (onComplete) {\n onComplete();\n }\n setStatus({ state: \"LOAD_SUCCESS\" });\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"failed to retry\" });\n recordError(e);\n }\n };\n\n const requestGenerateConsumeReward = async (\n payload: IConsumeGenerateRewardPayload,\n onComplete?: Function\n ) => {\n try {\n setStatus({ state: \"LOADING\" });\n const r = state.byId[payload.rewardUserId];\n\n const { newReward, params } = generateConsumeGenerateRewardParams(\n r,\n payload.params\n );\n newReward.selectedSlotIndex = params.selectedSlotIndex;\n await redeemReward(newReward, params, session.token);\n const filter: IRewardFilter = {\n rewardUserId: {},\n };\n if (newReward.rewardUserId) {\n filter.rewardUserId[newReward.rewardUserId] = true;\n }\n const paginatedRewardMap = await fetchPaginatedRewards(filter, 1, 1);\n const rewardMap = paginatedRewardMap.data.rewards;\n dispatch(setRewardsAction({ rewardMap }));\n setStatus({ state: \"LOAD_SUCCESS\" });\n if (actionHandler)\n actionHandler({} as any, {\n analytics: { eventName: \"GAME_PLAYED\", type: \"TRACK\" },\n state: {\n reward: rewardMap.byId[newReward.rewardUserId],\n onComplete: null,\n },\n });\n if (onComplete) {\n onComplete();\n }\n } catch (e) {\n console.log(e);\n setStatus({\n state: \"LOAD_ERROR\",\n message: \"failed to consume the reward\",\n });\n recordError(e);\n }\n };\n\n const requestSimpleRetryReward = async (\n payload: IUnConsumeRewardPayload,\n details?: IActionDetails\n ) => {\n try {\n setStatus({ state: \"LOADING\" });\n let id = null;\n if (payload && payload.rewardUserId) {\n id = payload.rewardUserId;\n } else if (details?.state?.reward?.rewardUserId) {\n id = details?.state?.reward?.rewardUserId;\n } else {\n throw withInternalError(\n \"reward user id not passed\",\n \"useRewardActionHandler.requestSimpleRetryReward\"\n );\n }\n const r = state.byId[id];\n const { newReward, params } = generateRetryRewardParams(r);\n newReward.selectedSlotIndex = params.selectedSlotIndex;\n await redeemReward(newReward, params, session.token);\n const filter: IRewardFilter = {\n rewardUserId: {},\n };\n if (newReward.rewardUserId) {\n filter.rewardUserId[newReward.rewardUserId] = true;\n }\n const paginatedRewardMap = await fetchPaginatedRewards(filter, 1, 1);\n const rewardMap = paginatedRewardMap.data.rewards;\n if (\n rewardMap &&\n rewardMap.byId &&\n rewardMap.byId[id] &&\n (rewardMap.byId[id].experience === \"quiz\" ||\n rewardMap.byId[id].experience === \"unitygame\")\n ) {\n rewardMap.byId[id].experienceConsumed = false;\n }\n dispatch(setRewardsAction({ rewardMap }));\n if (details?.onComplete) {\n details?.onComplete();\n }\n setStatus({ state: \"LOAD_SUCCESS\" });\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"failed to retry\" });\n recordError(e);\n }\n };\n\n const locallyConsumeReward = (\n payload: ILocallyConsumeRewardPayload,\n onComplete?: Function\n ) => {\n try {\n setStatus({ state: \"LOADING\" });\n const r = state.byId[payload.rewardUserId];\n const { params } = generateConsumeRewardParams(r, payload.params);\n const newReward: IReward = {\n ...r,\n locallyConsumedData: {\n params,\n },\n };\n dispatch(\n setRewardAction({\n id: newReward.rewardUserId,\n reward: newReward,\n })\n );\n setToLocalStorage(\n `__GLU__LOCAL_${r.rewardUserId}`,\n newReward.locallyConsumedData\n );\n setStatus({ state: \"LOAD_SUCCESS\" });\n if (onComplete) {\n onComplete();\n }\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"failed to consume reward\" });\n recordError(e);\n }\n };\n\n const registerLocallyConsumedReward = async (\n payload: IRegisterLocallyConsumedRewardPayload,\n onComplete?: Function\n ) => {\n try {\n const r = state.byId[payload.rewardUserId];\n if (r.status === \"redeemable-seen\" || !r.locallyConsumedData?.params)\n return;\n\n setStatus({ state: \"LOADING\" });\n const params = r.locallyConsumedData.params;\n const newReward: IReward = {\n ...r,\n experienceConsumed: true,\n seenStatus: \"CONSUMING\",\n };\n newReward.selectedSlotIndex = params.selectedSlotIndex;\n newReward.status = \"redeemable-seen\";\n dispatch(\n setRewardAction({\n id: newReward.rewardUserId,\n reward: newReward,\n })\n );\n const seenReward = await redeemReward(newReward, params, session.token);\n dispatch(\n setRewardAction({\n id: seenReward.rewardUserId,\n reward: seenReward,\n })\n );\n setStatus({ state: \"LOAD_SUCCESS\" });\n deleteLocalStorageKey(`__GLU__LOCAL_${r.rewardUserId}`);\n if (actionHandler)\n actionHandler({} as any, {\n analytics: { eventName: \"GAME_PLAYED\", type: \"TRACK\" },\n state: { reward: seenReward },\n onComplete: null,\n });\n if (onComplete) {\n onComplete();\n }\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"failed to consume reward\" });\n recordError(e);\n }\n };\n\n const onAction: IActionHandler = (action, details) => {\n if (action.store === \"REWARD\") {\n if (action.type === \"CONSUME REWARD\") {\n requestConsumeReward(action.payload, details?.onComplete);\n } else if (action.type === \"CONSUME GENERATE REWARD\") {\n requestGenerateConsumeReward(action.payload, details?.onComplete);\n } else if (action.type === \"RETRY REWARD\") {\n requestRetryReward(action.payload, details?.onComplete);\n } else if (action.type === \"UNCONSUME REWARD\") {\n requestSimpleRetryReward(action.payload, details);\n } else if (action.type === \"LOCALLY CONSUME REWARD\") {\n locallyConsumeReward(action.payload, details?.onComplete);\n } else if (action.type === \"REGISTER LOCALLY CONSUMED REWARD\") {\n registerLocallyConsumedReward(action.payload, details.onComplete);\n } else if (action.type === \"CONSUME SCORE BASED REWARD\") {\n requestConsumeReward(action.payload, details?.onComplete, \"v2\");\n }\n }\n };\n\n return [status, onAction];\n};\n\n/* util, consume reward params generator */\nconst generateConsumeRewardParams = (\n reward: IReward,\n result: ISimpleGameResult\n): { newReward: IReward; params: IConsumeRewardParams } => {\n const newReward: IReward = {\n ...reward,\n experienceConsumed: true,\n seenStatus: \"CONSUMING\",\n };\n const params: IConsumeRewardParams = {\n selectedSlotIndex: reward.selectedSlotIndex,\n generateNewReward: true,\n rewardUserId: newReward.rewardUserId,\n };\n\n if (result) {\n if (Number.isInteger(result.rewardIndex)) {\n params.selectedSlotIndex = result.rewardIndex;\n reward.selectedSlotIndex = params.selectedSlotIndex;\n }\n if (Number.isInteger(result.score)) {\n params.score = result.score;\n const i = getSelectedRewardIndexFromScore(\n reward.layout.layout.data.slots,\n result.score\n );\n if (Number.isInteger(i)) {\n params.selectedSlotIndex = i;\n reward.selectedSlotIndex = i;\n }\n if (newReward.quiz) {\n newReward.quiz.score = params.score;\n }\n }\n if (\n result.result &&\n (!Number.isInteger(params.selectedSlotIndex) ||\n params.selectedSlotIndex < 0)\n ) {\n params.selectedSlotIndex = result.result === \"WIN\" ? 1 : 0;\n reward.selectedSlotIndex = params.selectedSlotIndex;\n }\n }\n\n return { newReward, params };\n};\n\nconst generateRetryRewardParams = (\n reward: IReward\n): { newReward: IReward; params: IConsumeRewardParams } => {\n const params: IConsumeRewardParams = {\n refreshReward: true,\n selectedSlotIndex: reward.selectedSlotIndex,\n rewardUserId: reward.rewardUserId,\n };\n const newReward: IReward = { ...reward };\n\n return { newReward, params };\n};\n\nconst generateConsumeGenerateRewardParams = (\n reward: IReward,\n result: ISimpleGameResult\n): { newReward: IReward; params: IConsumeRewardParams } => {\n const newReward: IReward = {\n ...reward,\n experienceConsumed: true,\n seenStatus: \"CONSUMING\",\n };\n const params: IConsumeRewardParams = {\n selectedSlotIndex: reward.selectedSlotIndex,\n rewardUserId: newReward.rewardUserId,\n createNewReward: true,\n };\n\n if (result) {\n if (Number.isInteger(result.rewardIndex)) {\n params.selectedSlotIndex = result.rewardIndex;\n }\n if (Number.isInteger(result.score)) {\n params.score = result.score;\n const i = getSelectedRewardIndexFromScore(\n reward.layout.layout.data.slots,\n result.score\n );\n if (Number.isInteger(i)) {\n params.selectedSlotIndex = i;\n }\n if (newReward.quiz) {\n newReward.quiz.score = params.score;\n }\n }\n if (\n result.result &&\n (!Number.isInteger(params.selectedSlotIndex) ||\n params.selectedSlotIndex < 0)\n ) {\n params.selectedSlotIndex = result.result === \"WIN\" ? 1 : 0;\n }\n }\n\n return { newReward, params };\n};\n\nfunction getSelectedRewardIndexFromScore(\n slots: ILayoutRewardSlot[],\n score: number\n) {\n let selectedSlotIndex: number = 0;\n for (let i = 0; i < slots.length; i++) {\n if (score <= slots[i].maxscore) {\n selectedSlotIndex = i;\n break;\n }\n }\n return selectedSlotIndex;\n}\n\nconst syncRewardWithLocalStorage = (reward: IReward) => {\n try {\n if (\n reward.rewardUserId &&\n reward.experienceConsumed === false &&\n reward.locallyConsumedData !== null\n ) {\n const newReward: IReward = { ...reward };\n let localData = reward.locallyConsumedData;\n if (!localData) {\n localData = getFromLocalStorage(\n `__GLU__LOCAL_${reward.rewardUserId}`\n ) as {\n params: IConsumeRewardParams;\n };\n }\n if (localData && localData.params) {\n newReward.experienceConsumed = true;\n newReward.selectedSlotIndex = localData.params.selectedSlotIndex;\n if (reward.quiz) reward.quiz.score = localData.params.score;\n } else {\n newReward.locallyConsumedData = null;\n }\n reward = newReward;\n }\n } catch (e) {}\n return reward;\n};\n\nexport const useRewardInit = (reward: IReward): [IStatus] => {\n const [session] = useSession();\n const [status, setStatus] = useStatus();\n const [rewardState, rewardDispatch] = useRewards();\n\n useEffect(() => {\n if (reward && reward.isSkeleton) {\n requestRewardInitObject();\n }\n }, [reward?.isSkeleton]);\n\n const requestRewardInitObject = async () => {\n try {\n setStatus({ state: \"LOADING\" });\n if (!session.token) {\n throw new Error(\"Token not found\");\n }\n const rewardObject = await rewardInit(\n session.token,\n reward.campaignId,\n reward.rewardUserId\n );\n if (rewardObject) {\n let newRewardMap: IRewardMap = {\n ...rewardState,\n allIds: [...rewardState.allIds, reward?.rewardUserId],\n byId: {\n ...rewardState.byId,\n [reward?.rewardUserId]: {\n ...rewardObject,\n layout: reward.layout,\n fragmentMap: reward.fragmentMap,\n },\n },\n };\n rewardDispatch(setRewardsAction({ rewardMap: newRewardMap }));\n setStatus({ state: \"LOAD_SUCCESS\" });\n } else {\n setStatus({ state: \"LOAD_ERROR\" });\n }\n } catch (e) {\n setStatus({ state: \"LOAD_ERROR\", message: \"Reward not Initialized\" });\n }\n };\n\n return [status];\n};\n\nexport const usePaginatedRewardsFilter = (\n filter: IRewardFilter,\n limit: number,\n sort?: {\n on: string;\n order: 1 | -1;\n }\n): [IRewardPaginationState, IActionHandler] => {\n const [status, setStatus] = useStatus();\n const [rewardState, rewardDispatch] = useRewards();\n const [totalRewardCount, setTotalRewardCount] = useState();\n const [totalPages, setTotalPages] = useState();\n const [hideLoader, setHideLoader] = useState(false);\n const currentPage = useRef(0);\n const rewardUserIdsRef = useRef([]);\n useAutoRefresh([refresh]);\n\n useEffect(() => {\n requestRewards();\n }, []);\n\n const updateFilters = () => {\n let updatedFilters = { ...filter };\n\n if (!updatedFilters.hasOwnProperty(\"rewardExpired\")) {\n updatedFilters = { ...updatedFilters, rewardExpired: false };\n }\n if (updatedFilters[\"rewardExpired\"] === null) {\n delete updatedFilters[\"rewardExpired\"];\n }\n\n if (!updatedFilters.hasOwnProperty(\"couponExpired\")) {\n updatedFilters = { ...updatedFilters, couponExpired: false };\n }\n\n if (updatedFilters[\"couponExpired\"] === null) {\n delete updatedFilters[\"couponExpired\"];\n }\n\n if (!updatedFilters.hasOwnProperty(\"removeNoRewardType\")) {\n updatedFilters = { ...updatedFilters, removeNoRewardType: true };\n }\n\n return updatedFilters;\n };\n\n const rewardfilters = useMemo(() => updateFilters(), [filter]);\n\n const requestRewards = async (skipLoading?: boolean) => {\n try {\n if (!skipLoading) {\n setStatus({ state: \"LOADING\" });\n }\n\n const newPage = currentPage.current + 1;\n const response: IPagination = await fetchPaginatedRewards(\n rewardfilters,\n skipLoading ? limit * currentPage.current : limit,\n skipLoading ? 1 : newPage,\n sort\n );\n setStatus({ state: \"LOAD_SUCCESS\" });\n\n const newRewardUserIds = response.data.rewards.allIds;\n if (!skipLoading) {\n rewardUserIdsRef.current = [\n ...rewardUserIdsRef.current,\n ...newRewardUserIds,\n ];\n } else {\n rewardUserIdsRef.current = [...newRewardUserIds];\n }\n\n rewardDispatch(\n setRewardsAction({\n rewardMap: response.data.rewards,\n allRewardsLoaded:\n newPage >= response.totalPages && !filter ? true : false,\n })\n );\n\n setStatus({ state: \"LOAD_SUCCESS\" });\n if (!skipLoading) currentPage.current = newPage;\n setTotalPages(response.totalPages);\n setTotalRewardCount(response.totalItems);\n if (newPage >= response.totalPages) {\n setHideLoader(true);\n }\n } catch (e) {\n console.log(e);\n setStatus({ state: \"LOAD_ERROR\", message: \"reward failed to load\" });\n }\n };\n\n const onAction: IActionHandler = (action, details) => {\n if (action.store !== \"PAGINATION_ACTION\") return;\n if (action.type === \"LOAD_MORE\") {\n if (totalPages >= currentPage.current) {\n if (status.state === \"LOADING\" || hideLoader) return;\n requestRewards();\n }\n }\n };\n\n function refresh() {\n requestRewards(true);\n }\n\n const rewardList = useMemo(() => {\n const matched: IRewardMap = { allIds: [], byId: {} };\n const titleCache: { [k: string]: boolean } = {};\n for (let i = 0; i < rewardUserIdsRef.current.length; i++) {\n const rewardUserId = rewardUserIdsRef.current[i];\n if (rewardState.byId[rewardUserId]) {\n const reward = rewardState.byId[rewardUserId];\n if (filter?.skipDuplicates && reward.experienceConsumed) {\n const key = reward.rewardProperties.title + reward.campaignId;\n if (titleCache[key]) continue;\n titleCache[key] = true;\n }\n matched.allIds.push(reward.rewardUserId);\n matched.byId[reward.rewardUserId] = reward;\n }\n }\n\n return matched;\n }, [rewardUserIdsRef.current, rewardState]);\n\n return [\n {\n rewardMap: rewardList,\n status: status,\n totalRewardCount: totalRewardCount,\n hideLoader: hideLoader,\n },\n onAction,\n ];\n};\n\ninterface IPagination {\n totalPages: number;\n page: number;\n totalItems: number;\n data: {\n rewards: IRewardMap;\n };\n limit: number;\n}\n\nexport interface IRewardPaginationState {\n rewardMap: IRewardMap;\n status: IStatus;\n totalRewardCount: number;\n hideLoader: boolean;\n}\n","export const sleep = async (result: any, time?: number): Promise => {\n const t = time || 0;\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(result);\n }, t);\n });\n};\n","import { Fragment, options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tif (\n\t\ttypeof vnode.type === 'function' &&\n\t\t!vnode._mask &&\n\t\tvnode.type !== Fragment\n\t) {\n\t\tvnode._mask =\n\t\t\t(vnode._parent && vnode._parent._mask ? vnode._parent._mask : '') +\n\t\t\t(vnode._parent && vnode._parent._children\n\t\t\t\t? vnode._parent._children.indexOf(vnode)\n\t\t\t\t: 0);\n\t} else if (!vnode._mask) {\n\t\tvnode._mask =\n\t\t\tvnode._parent && vnode._parent._mask ? vnode._parent._mask : '';\n\t}\n\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tconst prevScu = currentComponent.shouldComponentUpdate;\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\tcurrentComponent.shouldComponentUpdate = function(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t};\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nfunction hash(s) {\n\tlet h = 0,\n\t\ti = s.length;\n\twhile (i > 0) {\n\t\th = ((h << 5) - h + s.charCodeAt(--i)) | 0;\n\t}\n\treturn h;\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\tstate._value = 'P' + hash(currentComponent._vnode._mask) + currentIndex;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","import {\n CurrentPageContext,\n IPage,\n IRouterState,\n RouterContext,\n} from \"../contexts/router\";\nimport { IDispatch } from \"../interfaces/dispatch\";\nimport { useContext } from \"preact/hooks\";\nimport { IRouterAction } from \"../actions/router\";\nimport { IActionHandler } from \"../interfaces/event-actions\";\nimport { getStateValues } from \"../util/state-values\";\nimport { withInternalError } from \"../util/custom-errors\";\n\nexport function useRouter(): [IRouterState, IDispatch] {\n const context = useContext(RouterContext);\n if (context === undefined) {\n throw withInternalError(\"useContext must be used within a RouterProvider\", \"useRouter\");\n }\n return [context.state, context.dispatch];\n}\n\nexport interface ICurrentPage {\n page: IPage;\n isActive: boolean;\n}\n\nexport function useCurrentPage(): [ICurrentPage] {\n const context = useContext(CurrentPageContext);\n if (context === undefined) {\n return [null];\n }\n return [context];\n}\n\nexport const useRouterActionHandler = (): [typeof onAction] => {\n const [state, dispatch] = useRouter();\n\n const onAction: IActionHandler = (action, details) => {\n if (action.store === \"ROUTER\") {\n try {\n if (action.payload && action.payload[\"page\"]) {\n action.payload = action.payload[\"page\"];\n }\n if(action.payloadStateMap && details?.state) {\n action.payload = {\n ...action.payload,\n ...getStateValues(details.state, action.payloadStateMap)\n }\n }\n } catch (e) {}\n dispatch(action);\n if (details && details.onComplete) {\n details.onComplete();\n }\n }\n };\n\n return [onAction];\n};\n","import { IPage } from \"../contexts/router\";\nimport { IStateMap, IStateMapGeneric } from \"../interfaces/state-map\";\nimport { IAction } from \"../interfaces/store-action\";\n\ntype IPushPageAction = IAction<\n \"ROUTER\",\n \"ROUTER_STORE PUSH PAGE\",\n IPage,\n IStateMapGeneric<\"page\">\n>;\nexport function pushPageAction(payload: IPage): IPushPageAction {\n return {\n store: \"ROUTER\",\n type: \"ROUTER_STORE PUSH PAGE\",\n payload,\n };\n}\n\ntype IPopPageAction = IAction<\"ROUTER\", \"ROUTER_STORE POP PAGE\", null>;\nexport function popPageAction(): IPopPageAction {\n return {\n store: \"ROUTER\",\n type: \"ROUTER_STORE POP PAGE\",\n payload: null,\n };\n}\n\ntype IReplacePageAction = IAction<\n \"ROUTER\",\n \"ROUTER_STORE REPLACE PAGE\",\n IPage,\n IStateMapGeneric<\"page\">\n>;\nexport function replacePageAction(payload: IPage): IReplacePageAction {\n return {\n store: \"ROUTER\",\n type: \"ROUTER_STORE REPLACE PAGE\",\n payload,\n };\n}\n\ntype IPopPageStartAction = IAction<\n \"ROUTER\",\n \"ROUTER_STORE POP PAGE START\",\n { isNative?: boolean }\n>;\nexport function popPageStartAction(payload: {\n isNative?: boolean;\n}): IPopPageStartAction {\n return {\n store: \"ROUTER\",\n type: \"ROUTER_STORE POP PAGE START\",\n payload: payload,\n };\n}\n\n/* legacy push page */\ninterface ILegacyPage {\n props: {\n id: \"REWARD_WRAPPER\";\n data: {\n idType:\n | \"REWARD_USER_ID\"\n | \"CAMPAIGN_ID\"\n | \"ACTIVTY_ID\"\n | \"EVENT_COMPLETED\";\n rewardUserId?: string;\n campaignId?: string;\n activityId?: string;\n eventCompleted?: string;\n };\n listen?: any;\n };\n config: {\n mode: \"FULL\";\n animation: boolean;\n hideClose?: boolean;\n confetti?: boolean;\n };\n}\ntype ILegacyPushPageAction = IAction<\n \"ROUTER\",\n \"ROUTER_STORE PUSH PAGE\",\n ILegacyPage\n>;\nexport function legacyPushPageAction(\n payload: ILegacyPage\n): ILegacyPushPageAction {\n return {\n store: \"ROUTER\",\n type: \"ROUTER_STORE PUSH PAGE\",\n payload,\n };\n}\n\nexport type IRouterAction =\n | IPushPageAction\n | IPopPageAction\n | IReplacePageAction\n | IPopPageStartAction;\n","import { ICSSBreakpoints, ICssPatch } from \"../interfaces/css\";\nimport { pluckValue } from \"../util/pluck\";\n\nlet SIZE: \"mobile\" | \"tablet\" | \"laptop\" = null;\nconst MAX_SIZE_BREAK_POINTS = {\n MOBILE: 480,\n TABLET: 800,\n};\n\nexport const useComponentContentStyleResolver = (ui: {\n content: any;\n css: any;\n cssBreakpoints?: ICSSBreakpoints;\n}) => {\n const { content, css, cssBreakpoints } = ui;\n\n try {\n if (cssBreakpoints && css && !css[\"__break_point_css_injected__\"]) {\n const size = getSize();\n if (cssBreakpoints[size]) {\n const breakPointStyles: ICssPatch[] = cssBreakpoints[size];\n for (let i = 0; i < breakPointStyles.length; i++) {\n const bp = breakPointStyles[i];\n const nestedTarget = pluckValue(css, bp.key);\n Object.assign(nestedTarget, bp.patchValue);\n }\n }\n css[\"__break_point_css_injected__\"] = true;\n }\n } catch (e) {\n console.log(e);\n }\n\n return { content, css };\n};\n\nexport const getSize = () => {\n if (SIZE) return SIZE;\n SIZE = \"mobile\";\n if (window && window.innerWidth > MAX_SIZE_BREAK_POINTS.TABLET)\n SIZE = \"laptop\";\n else if (window && window.innerWidth > MAX_SIZE_BREAK_POINTS.MOBILE)\n SIZE = \"tablet\";\n return SIZE;\n};\n","import { withApiError } from \"./custom-errors\";\n\nexport interface HttpResponse extends Response {\n parsedBody?: T;\n}\n\nexport async function http(request: Request, body?: any): Promise> {\n let response: HttpResponse;\n try {\n if(window[\"checkFromCache\"] && window[\"checkFromCache\"](request.url)) {\n response = await window[\"getFromCache\"](request.url);\n }\n if(!response || !response.ok) {\n response = await fetch(request);\n }\n // may error if there is no body\n const contentType = response.headers.get(\"content-type\");\n if (contentType && contentType.indexOf(\"application/json\") !== -1)\n response.parsedBody = await response.json();\n } catch (e) {\n throw withApiError(e, request, response, body);\n }\n\n if (!response.ok) {\n throw withApiError(\n `API STATUS: ${response.status.toString()}`,\n request,\n response,\n body\n );\n }\n return response;\n}\n\nexport async function post(\n path: string,\n body: any,\n token?: string\n): Promise> {\n const args: RequestInit = {\n method: \"post\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n if (token) {\n args.headers[\"authorization\"] = `Bearer ${token}`;\n }\n return await http(new Request(path, args), body);\n}\n\nexport async function get(\n path: string,\n token?: string\n): Promise> {\n const args: RequestInit = {\n method: \"get\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n if (token) {\n args.headers[\"authorization\"] = `Bearer ${token}`;\n }\n return await http(new Request(path, args));\n}\n","import { ICSS } from \"src/interfaces/css\";\n\nexport function getChildren(\n properties: string[],\n map: { [key: string]: string[] },\n targetObject: ITargetType\n) {\n try {\n const r = pluckValue(targetObject, properties);\n return map[r] ? map[r] : [];\n } catch (e) {\n console.log(e);\n }\n}\n\nexport function getChildren2(\n content: {\n properties: string[];\n map: {\n [key: string]: string[];\n };\n else?: string[];\n },\n targetObject: ITargetType\n) {\n const r = pluckValue(targetObject, content.properties);\n if (content.map[r]) return content.map[r];\n else if (content.else) {\n return content.else;\n } else return [];\n}\n\nexport function pluckValue(targetObject: any, properties: string[]) {\n if (!targetObject || !properties.length) return null;\n let r = targetObject;\n properties.forEach((p) => {\n if (r) r = r[p];\n });\n return r;\n}\n\nexport interface IConditionalWrapperLayout {\n type_id: \"CONDITIONAL_WRAPPER\";\n ui: {\n content: {\n properties: string[];\n map: {\n [key: string]: string[];\n };\n else?: string[];\n };\n css: { container: ICSS };\n };\n}\n","export { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\n","import { h, Component } from 'preact';\n\nconst PENDING = {};\n\n// Given a VNode, finds its previous element sibling\nfunction getPreviousSibling(vnode, inner) {\n\t// in an element parent with no preceeding siblings means we're the first child\n\tif (typeof vnode.type === 'string') return null;\n\tconst parent = vnode.__;\n\tif (!parent) return;\n\tlet children = parent.__k;\n\tif (children) {\n\t\tif (!Array.isArray(children)) children = [children];\n\t\t// only search previous children\n\t\tlet end = children.indexOf(vnode);\n\t\tif (end === -1) end = children.length;\n\t\tfor (let i=end; i--; ) {\n\t\t\tconst child = children[i];\n\t\t\tconst dom = child && child.__e || getPreviousSibling(child, true);\n\t\t\tif (dom) return dom;\n\t\t}\n\t}\n\tif (!inner) return getPreviousSibling(parent);\n}\n\nexport default function async(load) {\n\tlet component;\n\n\tfunction AsyncComponent() {\n\t\tComponent.call(this);\n\n\t\tif (!component) {\n\t\t\tthis.componentWillMount = () => {\n\t\t\t\tload((mod) => {\n\t\t\t\t\tcomponent = (mod && mod.default) || mod;\n\t\t\t\t\tthis.setState({});\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = () => component != null;\n\t\t}\n\n\t\tthis.render = (props) => {\n\t\t\tif (component) {\n\t\t\t\treturn h(component, props);\n\t\t\t}\n\n\t\t\tconst prev = getPreviousSibling(this.__v);\n\t\t\tconst me = prev && prev.nextSibling || (this.__P || this._parentDom).firstChild;\n\n\t\t\treturn (\n\t\t\t\tme &&\n\t\t\t\th(me.localName, {\n\t\t\t\t\tdangerouslySetInnerHTML: PENDING,\n\t\t\t\t})\n\t\t\t);\n\t\t};\n\t}\n\n\tAsyncComponent.preload = load;\n\t(AsyncComponent.prototype = new Component()).constructor = AsyncComponent;\n\n\treturn AsyncComponent;\n}\n","\n\t\timport Async from \"../../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../../node_modules/babel-loader/lib/index.js??ref--4!./index.tsx\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t});\n\t\t}\n\n\t\texport default Async(load);\n\t","import {\n IAnalyticsConfig,\n IClientConfig,\n IThemeConfig,\n} from \"../interfaces/client-configurations\";\nimport { IAllErrorFragments, IAllLoadingFragments, IAllWalletFragments } from \"../interfaces/client-level-fragments\";\nimport { IAction } from \"../interfaces/store-action\";\n\ntype IUpdateClientConfigurations = IAction<\n \"CLIENT CONFIGURATIONS\",\n \"UPDATE CLIENT CONFIGURATIONS\",\n {\n client?: IClientConfig;\n wallet?: IAllWalletFragments;\n theme?: IThemeConfig;\n analytics?: IAnalyticsConfig;\n error?: IAllErrorFragments;\n loading?: IAllLoadingFragments;\n }\n>;\nexport function updateClientConfigurations(payload: {\n client?: IClientConfig;\n wallet?: IAllWalletFragments;\n theme?: IThemeConfig;\n analytics?: IAnalyticsConfig;\n error?: IAllErrorFragments;\n loading?: IAllLoadingFragments;\n}): IUpdateClientConfigurations {\n return {\n store: \"CLIENT CONFIGURATIONS\",\n type: \"UPDATE CLIENT CONFIGURATIONS\",\n payload,\n };\n}\n\nexport type IClientConfigurationsAction = IUpdateClientConfigurations;\n","import { IClientConfigurationState } from \"../contexts/client-configurations\";\nimport { IConfigurationResponse } from \"../interfaces/client-configurations\";\nimport { get } from \"../util/api\";\n\nexport async function fetchConfigurations(token: string, config: string[]) {\n let end_point = `${process.env.HOST_ENV}/reward/v1.1/client/config?`;\n end_point = end_point + \"config=\";\n config.map((value) => {\n end_point = end_point + value + \",\";\n });\n\n try {\n let body: IConfigurationResponse = null;\n if (process.env.MODE === \"DEMO\") {\n body = (await import(\"./mock/client-configurations\")).default();\n } else {\n try {\n const res = await get(end_point, token);\n body = res.parsedBody;\n if (!body || !body.success || !body.data) {\n throw `Invalid Response, ${\n body && body[\"message\"] ? \"cause: \" + body[\"message\"] : null\n }`;\n }\n } catch (e) {\n console.log(e);\n body = (await import(\"./mock/client-configurations\")).default();\n }\n }\n\n const configData = body?.data;\n\n const data: IClientConfigurationState = {\n client: configData?.client,\n analytics: configData?.analytics,\n wallet: configData?.wallet,\n theme: configData?.client?.theme,\n loading: configData?.loading,\n error: configData?.error,\n };\n\n if (!data.wallet && config.includes(\"wallet\")) {\n const mock = (await import(\"./mock/client-configurations\")).default();\n data.wallet = mock.data.wallet;\n }\n\n return data;\n } catch (e) {\n throw e;\n }\n}\n","import { useContext, useEffect } from \"preact/hooks\";\nimport {\n IClientConfigurationsAction,\n updateClientConfigurations,\n} from \"../actions/client-configurations\";\nimport {\n ClientConfigurationContext,\n IClientConfigurationState,\n} from \"../contexts/client-configurations\";\nimport { IAllWalletFragments, IClientFragments } from \"../interfaces/client-level-fragments\";\nimport { IDispatch } from \"../interfaces/dispatch\";\nimport { IStatus } from \"../interfaces/status\";\nimport { fetchConfigurations } from \"../network/client-configurations\";\nimport { withInternalError } from \"../util/custom-errors\";\nimport { getFromLocalStorage, setToLocalStorage } from \"../util/localstorage\";\nimport { useLogs } from \"./logging\";\nimport { useSession } from \"./session\";\nimport { useStatus } from \"./status\";\n\nexport function useClientConfigurations(): [\n IClientConfigurationState,\n IDispatch\n] {\n const context = useContext(ClientConfigurationContext);\n if (context === undefined) {\n throw withInternalError(\"initialise the client configuration context provoder\", \"useClientConfigurations\");\n }\n return [context.state, context.dispatch];\n}\n\nexport const useClientConfigurationsInitilizer = (): IStatus => {\n const [status, setStatus] = useStatus({ state: \"LOADING\" });\n const [session] = useSession();\n const [configState, configDispatch] = useClientConfigurations();\n const [recordError] = useLogs();\n\n useEffect(() => {\n if (session.token) {\n const clientId = getClientFromToken(session.token);\n window[\"GLU_CLIENT_ID\"] = clientId;\n load(clientId);\n }\n }, [session.token]);\n\n const load = async (clientId?: string) => {\n try {\n const key = clientId ? \"__GLU__CLIENT_CONFIG_\" + clientId : null;\n let localConfig: IClientConfigurationState = getFromLocalStorage(key);\n if (localConfig) {\n configDispatch(updateClientConfigurations(localConfig));\n setStatus({ state: \"LOAD_SUCCESS\" });\n try {\n setTimeout(async () => {\n const networkConfig = await fetchConfigurations(session.token, [\n \"wallet\",\n \"client\",\n \"analytics\",\n \"error\",\n \"loading\",\n ]);\n if (networkConfig) {\n configDispatch(updateClientConfigurations(networkConfig));\n setToLocalStorage(key, networkConfig, 48);\n }\n }, 3000);\n } catch (e) {}\n } else {\n const networkConfig = await fetchConfigurations(session.token, [\n \"wallet\",\n \"client\",\n \"analytics\",\n \"error\",\n \"loading\",\n ]);\n if (networkConfig) {\n configDispatch(updateClientConfigurations(networkConfig));\n setToLocalStorage(key, networkConfig, 48);\n setStatus({ state: \"LOAD_SUCCESS\" });\n } else {\n throw withInternalError(\"client configurations not found\", \"useClientConfigurationsInitilizer.load\");\n }\n }\n } catch (e) {\n setStatus({\n state: \"LOAD_ERROR\",\n message: \"failed to fetch client config\",\n });\n recordError(e);\n }\n };\n\n return status;\n};\n\nexport const useWalletConfig = (): [IAllWalletFragments] => {\n const [state] = useClientConfigurations();\n return [state.wallet];\n};\nexport const useBackButtonConfig = (): [IClientFragments]=> {\n const [state] = useClientConfigurations();\n return [state?.client?.backButton];\n};\n\nexport const getClientFromToken = (token: string): string => {\n try {\n const payloadEncoded = token.split(\".\")[1];\n const decodedPayload = atob(payloadEncoded);\n const payload = JSON.parse(decodedPayload);\n return payload[\"client\"];\n } catch (e) {\n console.log(e);\n return null;\n }\n}","import { EMPTY_ARR } from \"./constants\";\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || setTimeout)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
{reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse =
\n\t\t\t//
{reuse}{reuse}
\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldParentVNode, i + 1);\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (\n\t\t\tvalue != null &&\n\t\t\t(value !== false || (name[0] === 'a' && name[1] === 'r'))\n\t\t) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix