{"version":3,"file":"static/js/133.d0eb9dbc.chunk.js","mappings":"sJAMO,SAASA,EAAoBC,GAClC,MAAM,SAAEC,GAAaD,GACdE,EAAkBC,IAAuBC,EAAAA,EAAAA,UAAoB,CAAC,IAS/D,SAAEC,GAAaC,EAAAA,EACrB,OACEC,IAAAA,cAACF,EAAQ,CAACG,MAAO,CAAEN,mBAAkBO,uBATPC,IAC9BP,GAAqBQ,IAAmC,IACnDA,KACAD,KACF,IAMAT,EAGP,C,qQClBO,SAASW,EACdC,EACAC,GAAY,GAEZ,MAAMC,EAAuC,iBAAXF,EAE5BG,EAA2D,CAAC,EAC5DC,EAAO,4BACXF,EAAsB,SAAQF,IAAY,IAAGA,MAEzC,iBAAEX,EAAgB,uBAAEO,IAA2BS,EAAAA,EAAAA,KAE/CC,EAAwBC,IAC5B,IAAIC,GAAgB,EAQpB,MAPmB,iBAARD,EACTC,EAAgBC,OAAOC,KAAKrB,GAAkBsB,SAASJ,GAC9CK,MAAMC,QAAQN,KACvBC,EAAgBD,EAAIO,OAAOC,GACzBN,OAAOC,KAAKrB,GAAkBsB,SAASI,MAGpCP,CAAa,EAEhBQ,GAAiBC,EAAAA,EAAAA,MACjBC,GAAQC,EAAAA,EAAAA,aAAuBf,OAAKgB,EAAW,CACnDC,QAASpB,IAAcK,EAAqBN,KAAYgB,IAGpDM,EACJhB,EAAqBN,IACH,UAAlBkB,GAAOK,QACW,YAAlBL,GAAOK,OAET,GAAIjB,EAAqBN,IAAWsB,EAClC,GAAIV,MAAMC,QAAQb,GAChB,IAAK,MAAMO,KAAOP,EAChBG,EAAkBH,EAAOO,IAAQlB,EAAiBW,EAAOO,SAG3DJ,EAAkBH,GAAUX,EAAiBW,QAE1C,GAAIkB,GAAOM,MAAQF,EAAS,CACjC,IAAK,MAAMf,KAAOW,EAAMM,KACtBrB,EAAkBI,GAAOW,EAAMM,KAAKjB,IA4BxC,WACE,GAAIK,MAAMC,QAAQb,GAChB,IAAK,MAAMyB,KAASzB,EACbS,OAAOC,KAAKP,GAAmBQ,SAASX,EAAOyB,MAClDtB,EAAkBH,EAAOyB,SAAUL,QAItClB,GACAO,OAAOC,KAAKP,GAAmBQ,SAASX,KAEzCG,EAAkBH,QAAUoB,EAEhC,CAvCEM,EACF,CAmBA,OAjBAC,EAAAA,EAAAA,YAAU,KACR,GAAIL,EAAS,CACX,MAAMM,EAAUnB,OAAOC,KAAKP,GAAmB0B,QAC5Cd,IAAoD,IAA9CN,OAAOC,KAAKrB,GAAkBsB,SAASI,KAGhD,GAAIa,EAAQE,OAAS,EAAG,CACtB,MAAMC,EAA6BtB,OAAOuB,YACxCvB,OAAOwB,QAAQ9B,GAAmB0B,QAAO,EAAEtB,KACzCqB,EAAQjB,SAASJ,MAGrBX,EAAuBmC,EACzB,CACF,IACC,CAAC1C,EAAkBc,EAAmBmB,EAAS1B,IAE3C,CACL0B,UACAY,QAAShB,EAAMgB,QACfvC,MAAOO,EAAqBC,EAAoBA,EAAkBH,GAiBtE,C,0DCnFO,MAAMP,GAAqB0C,EAAAA,EAAAA,oBAEhCf,GAIK,SAASf,IACd,MAAM+B,GAAUC,EAAAA,EAAAA,YAAW5C,GAC3B,IAAK2C,EACH,MAAM,IAAIE,MACR,8GAGJ,OAAOF,CACT,C","sources":["webpack:///./src/feature-flag/FeatureFlagProvider.tsx","webpack:///./src/feature-flag/useFeatureFlag.ts","webpack:///./src/feature-flag/useFeatureFlagConfig.ts"],"sourcesContent":["import React, { ReactNode, SetStateAction, useState } from 'react';\nimport { ObjectMap, featureFlagContext } from './useFeatureFlagConfig';\n\ntype Props = {\n children: ReactNode;\n};\nexport function FeatureFlagProvider(props: Readonly) {\n const { children } = props;\n const [featureFlagCache, setFeatureFlagCache] = useState({});\n\n const updateFeatureFlagCache = (newData: ObjectMap) => {\n setFeatureFlagCache((prevData: SetStateAction) => ({\n ...prevData,\n ...newData,\n }));\n };\n\n const { Provider } = featureFlagContext;\n return (\n \n {children}\n \n );\n}\n","import { useEffect } from 'react';\nimport { useApiQuery } from '../query';\nimport { ObjectMap, useFeatureFlagContext } from './useFeatureFlagConfig';\nimport { useIsTokenExpired } from '../auth/user-info.hooks';\n\nexport function useFeatureFlag(\n params: string | string[],\n isEnabled = true\n): any {\n const isMultiFlagRequest = typeof params === 'object';\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const featureFlagValues: { [key: string]: string | undefined } = {};\n const url = `/shared/v1/feature-flags${\n isMultiFlagRequest ? `?keys=${params}` : `/${params}`\n }`;\n const { featureFlagCache, updateFeatureFlagCache } = useFeatureFlagContext();\n\n const doesFeatureFlagExist = (key?: string | string[]) => {\n let isFlagInCache = false;\n if (typeof key === 'string') {\n isFlagInCache = Object.keys(featureFlagCache).includes(key);\n } else if (Array.isArray(key)) {\n isFlagInCache = key.every((x) =>\n Object.keys(featureFlagCache).includes(x)\n );\n }\n return isFlagInCache;\n };\n const isTokenExpired = useIsTokenExpired();\n const query = useApiQuery(url, undefined, {\n enabled: isEnabled && !doesFeatureFlagExist(params) && !isTokenExpired,\n });\n\n const isReady =\n doesFeatureFlagExist(params) ||\n query?.status === 'error' ||\n query?.status === 'success';\n\n if (doesFeatureFlagExist(params) && isReady) {\n if (Array.isArray(params)) {\n for (const key in params) {\n featureFlagValues[params[key]] = featureFlagCache[params[key]];\n }\n } else {\n featureFlagValues[params] = featureFlagCache[params];\n }\n } else if (query?.data && isReady) {\n for (const key in query.data) {\n featureFlagValues[key] = query.data[key];\n }\n setDefaultForNonExistingKey();\n }\n\n useEffect(() => {\n if (isReady) {\n const newKeys = Object.keys(featureFlagValues).filter(\n (x) => Object.keys(featureFlagCache).includes(x) === false\n );\n\n if (newKeys.length > 0) {\n const newFeatureFlags: ObjectMap = Object.fromEntries(\n Object.entries(featureFlagValues).filter(([key]) =>\n newKeys.includes(key)\n )\n );\n updateFeatureFlagCache(newFeatureFlags);\n }\n }\n }, [featureFlagCache, featureFlagValues, isReady, updateFeatureFlagCache]);\n\n return {\n isReady,\n refetch: query.refetch,\n value: isMultiFlagRequest ? featureFlagValues : featureFlagValues[params],\n };\n\n function setDefaultForNonExistingKey() {\n if (Array.isArray(params)) {\n for (const param in params) {\n if (!Object.keys(featureFlagValues).includes(params[param])) {\n featureFlagValues[params[param]] = undefined;\n }\n }\n } else if (\n !isMultiFlagRequest &&\n !Object.keys(featureFlagValues).includes(params)\n ) {\n featureFlagValues[params] = undefined;\n }\n }\n}\n","import { createContext, useContext } from 'react';\n\nexport type ObjectMap = {\n [key: string]: string | undefined;\n};\n\n/** context for feature Flag */\nexport const featureFlagContext = createContext<\n IFeatureFlagContext | undefined\n>(undefined);\n\n/** Hook to access 'featureFlagContext' Data.\n */\nexport function useFeatureFlagContext() {\n const context = useContext(featureFlagContext);\n if (!context) {\n throw new Error(\n 'featureFlagContext value is undefined. Make sure you use the FeatureFlagProvider before using the context.'\n );\n }\n return context;\n}\n\nexport type IFeatureFlagContext = {\n featureFlagCache: ObjectMap;\n updateFeatureFlagCache: (newData: ObjectMap) => void;\n};\n"],"names":["FeatureFlagProvider","props","children","featureFlagCache","setFeatureFlagCache","useState","Provider","featureFlagContext","React","value","updateFeatureFlagCache","newData","prevData","useFeatureFlag","params","isEnabled","isMultiFlagRequest","featureFlagValues","url","useFeatureFlagContext","doesFeatureFlagExist","key","isFlagInCache","Object","keys","includes","Array","isArray","every","x","isTokenExpired","useIsTokenExpired","query","useApiQuery","undefined","enabled","isReady","status","data","param","setDefaultForNonExistingKey","useEffect","newKeys","filter","length","newFeatureFlags","fromEntries","entries","refetch","createContext","context","useContext","Error"],"sourceRoot":""}