{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./contexts/program.tsx","webpack:///./util/state-variable-operation.ts","webpack:///./hooks/user.ts","webpack:///./network/user.ts","webpack:///./actions/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","dispatch","useReducer","initialState","useMemo","ProgramsContext","Provider","children","referralLink","createContext","getVariableValue","variable","result","initialValue","initialOperand","type_id","constantValue","pluckValue","stateValue","operations","operation","replaceVariablesInText","Math","round","operand","log","replace","variableValues","map","replaceKeys","fallbackText","useUser","context","useContext","UserContext","withInternalError","useUserInitilizer","status","setStatus","useStatus","userState","userDispatch","session","useSession","recordError","useLogs","useEffect","token","requestUser","async","user","url","res","body","parsedBody","success","withMalformedApiResponseError","method","fetchUser","store","FlushPendingEvents","delayRequest","obj","reportingVersion","sendV3Analytics","analyticsObj","sendV4Analytics","pendingEvents","pendingObj","v3Helper","default","analyticObj","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","localStorage","getItem","fetchUserId","nanoid","setItem","generateUserId","reqBody","customAttributes","gluAttributes","post","requestUserToken","userIdentification","userAttributes","fetchBannerData","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","getDeviceType","userAgent","navigator","vendor","device","some","b","match","isMobileDevice","test","isTabletDevice","getDeviceOS","indexOf","getAgentType","parent","webviewRegExp","RegExp","rules","join","getAppPlatform","postMessage","callback","webkit","messageHandlers","getEnvironmentDetails","environmentDetails","deviceType","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","PaginatedRewardMap","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","newReward","params","generateConsumeRewardParams","seenReward","redeemReward","analytics","generateConsumeGenerateRewardParams","requestGenerateConsumeReward","generateRetryRewardParams","requestRetryReward","requestSimpleRetryReward","locallyConsumedData","locallyConsumeReward","seenStatus","registerLocallyConsumedReward","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","updateFilters","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","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","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","configState","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","process","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","isValidElement","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","referral","stepsCompleted","activity","tier","userB","accepted","checkAccepted","banner","programExpiry","interactionStatus","activities","programType","isExpired","isCompleted","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","PageFrame","zIndex","onClose","PageContent","hidePreviousPages","postDimensionsUpdate","height","isEmbedingEnabled","containerRef","ro","ResizeObserver","entries","entry","clientHeight","observe","disconnect","className","resetError","useExternalDataSync","centralMessageReciver","dataString","initCallback","onEvent","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","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.bab77.esm.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\":\"2cc94\",\"1\":\"ff9f3\",\"2\":\"b901c\",\"3\":\"4ce00\",\"4\":\"b5927\",\"7\":\"fa0b1\",\"8\":\"5b676\",\"9\":\"f1af0\",\"10\":\"e7fa7\",\"11\":\"bffa6\",\"12\":\"de080\",\"13\":\"b0824\",\"14\":\"755ec\",\"15\":\"cef85\",\"16\":\"39544\",\"17\":\"4538f\",\"18\":\"73f5d\",\"19\":\"c8c36\",\"20\":\"0ff45\",\"21\":\"0f6a2\",\"22\":\"03c4a\",\"23\":\"f8b45\",\"24\":\"e5e97\",\"25\":\"48886\",\"26\":\"aedec\",\"27\":\"9af55\",\"28\":\"7e34c\",\"29\":\"274ce\",\"30\":\"41c5f\",\"31\":\"6d7e6\",\"32\":\"8f6ea\",\"33\":\"e42e5\",\"34\":\"7dfb3\",\"35\":\"15c81\",\"36\":\"9a8c7\",\"37\":\"e23c7\",\"38\":\"23a67\",\"39\":\"1744f\",\"40\":\"b0aa4\",\"41\":\"e82de\",\"42\":\"65635\",\"43\":\"d1b7d\",\"44\":\"e88de\",\"45\":\"ff429\",\"46\":\"eb982\",\"47\":\"cbea9\",\"48\":\"3fd03\",\"49\":\"dfe16\",\"50\":\"0ff29\",\"51\":\"c23da\",\"52\":\"60929\",\"53\":\"38799\",\"54\":\"6448a\",\"55\":\"65c49\",\"56\":\"f0172\",\"57\":\"eb456\",\"58\":\"78916\",\"59\":\"6f3d3\",\"60\":\"4e7ce\",\"61\":\"1b2dd\",\"62\":\"3ef09\",\"63\":\"f29fa\",\"64\":\"52cd2\",\"65\":\"5e91c\",\"66\":\"d51ff\",\"67\":\"556ee\",\"68\":\"e700b\",\"69\":\"2422b\",\"70\":\"2b761\",\"71\":\"7bb86\",\"72\":\"743b6\",\"73\":\"d5576\",\"74\":\"423e6\",\"75\":\"3650b\",\"76\":\"c21dc\",\"77\":\"9db44\",\"78\":\"b5ebd\",\"79\":\"0ee52\",\"80\":\"46b3c\",\"81\":\"83be3\",\"82\":\"91e89\",\"83\":\"a3ba7\",\"84\":\"f4f1d\",\"85\":\"91586\",\"86\":\"69918\",\"87\":\"97a0a\",\"88\":\"28d8d\",\"89\":\"0a8e2\",\"90\":\"4c524\",\"91\":\"e32ca\",\"92\":\"1896e\",\"93\":\"5cc3d\",\"94\":\"c2505\",\"95\":\"bc8bf\",\"96\":\"3a27c\",\"97\":\"bf48f\",\"98\":\"3a305\",\"99\":\"bb589\",\"100\":\"1fdfd\",\"101\":\"87846\",\"102\":\"aed1e\",\"103\":\"638d2\",\"104\":\"fbdc5\",\"105\":\"eedf2\",\"106\":\"dbd37\",\"107\":\"2bf2e\",\"108\":\"538dd\",\"109\":\"20cdc\",\"110\":\"3b440\",\"111\":\"c64aa\"}[chunkId] + \".esm.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 { 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 { 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 { 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 { 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