{"version":3,"sources":["helpers/dateHelpers.js","services/jwtService.js","config/enviromentVariables.js","services/cookieService.js","mocks/webhooksHandlers.js","mocks/handlers.js","common/authorizationModeType.js","helpers/request.js","common/modeUtils.js","mocks/index.js","mocks/server.js","mocks/browser.js","components/common/ThemeProvider/index.js","themes/rootTheme.js","themes/configureThemes.js","themes/sideBar/developersPortal.js","theme.js","components/common/Alert/index.js","routes/RouteWithLayout.js","files/panel.svg","files/webhook.svg","files/code.svg","files/test.svg","files/key.svg","files/delete.svg","components/common/Icons.js","sideMenuNavigation.js","components/common/AppSidebar/useAppSidebar.js","components/common/AppSidebar/AppSidebar.js","helpers/reduxUtils.js","redux/actions/merchants/index.js","redux/actions/session/index.js","components/common/AppHeader/useAppHeader.js","components/common/AppHeader/AppHeader.js","components/layouts/DashboardLayout/DashboardLayout.js","events/index.js","files/empty-credentials.svg","components/common/Skeleton/Skeleton.js","components/common/forms/NewCredential/useNewCredential.js","components/common/forms/NewCredential/NewCredential.js","components/common/Credentials/useCredentials.js","components/common/Credentials/Credentials.js","components/views/ApiCredentials.js","themes/sideBar/redClip.js","components/views/AppConfiguration.js","components/common/formFields/InputLabeled/index.js","components/common/forms/WebhookForm/webhookUtils.js","redux/actions/webhooks/index.js","components/common/forms/WebhookForm/useStyles.js","components/common/forms/WebhookForm/index.js","components/common/WebHookCard/useStyles.js","components/common/WebHookCard/WebHookToggle/index.js","components/common/WebHookCard/WebHookTest/index.js","components/common/WebHookCard/index.js","components/views/WebHooks/index.js","components/common/DetailCredential/useDetailCredential.js","components/common/DetailCredential/DetailCredential.js","components/views/DetailCredentialView/useDetailCredentialView.js","components/views/DetailCredentialView/DetailCredentialView.js","routes/Router.js","redux/reducers/session/index.js","redux/reducers/webhooks/index.js","redux/reducers/index.js","redux/middlewares/apiResolve.js","components/common/Loading/Loading.js","components/common/AuthGuard.js","serviceWorker.js","index.js","redux/storeConfig.js"],"names":["toDateLong","date","moment","format","toUpperCase","replace","toLowerCase","isTimestampExpired","theDate","isSameOrAfter","orderByDate","list","arguments","length","undefined","nameProp","type","some","item","sort","a","b","c","Date","d","locale","JwtAuthServiceInstance","constructor","storageService","cookieService","logout","this","setSession","removeUser","token","saveToken","PRODUCTIVE_MODE","axios","defaults","headers","common","Authorization","clearToken","isTokenExpired","decoded","jwtDecode","exp","e","console","log","message","getToken","mode","validateMode","setUser","user","setItem","removeItem","app","env","process","loginToken","REACT_APP_LOGIN_TOKEN","signInCookieDomain","apiUrl1","apiUrl2","reactAppUrl","reactAppCookieDomain","merchantDashboard","docSite","documentationSite","techRefSite","genApiKeyDoc","webHookSiteDoc","devPortalDocSite","merchantTokens","launchDarklyKey","clevertapApiKey","debugMSW","REACT_APP_DEBUG_MSW","SDKBucket","appToken","REACT_APP_ACCESS_TOKEN","getConfigValue","key","PRODUCTION_AUTH_COOKIE_NAME","SANDBOX_AUTH_COOKIE_NAME","getDomainName","hostName","substring","lastIndexOf","getCookieNameByMode","SANDBOX_MODE","createCookieName","baseName","instance","defaultOptions","expires","domain","value","options","cookieOptions","Cookies","set","remove","getItem","get","window","location","hostname","cookieName","cookieNameSandbox","handlers","rest","makeFullUrl","req","res","ctx","status","json","installment_body","notification_email","enabled","destination","notification_postback","post","notification","postback","put","endpoint","require","GET","POST","PUT","PATCH","DELETE","url","apiEndPoint","getRequestOptions","JwtAuthService","Accept","apiSendData","method","params","data","axiosConfig","Promise","resolve","reject","then","response","catch","error","Error","server","listen","worker","start","setupServer","setupWorker","generateClassName","createGenerateClassName","seed","ThemeProvider","props","theme","rootTheme","component","Component","pageProps","overrides","clipTheme","MuiAlert","icon","minWidth","marginRight","padding","lineHeight","mixedTheme","setTheme","useState","clippedHeader","setClippedHeader","withIcons","setWithIcons","_jsx","StylesProvider","children","_jsxs","ClipThemeProvider","CssBaseline","changeHeaderType","changeTheme","name","dataTheme","newTheme","changeIconSettings","defaultProps","MuiPaper","elevation","MuiAppBar","MuiMenu","MuiCard","sharedStyles","sectionHeader","fontSize","fontWeight","marginBottom","MuiInputBase","root","opacity","MuiButton","contained","boxShadow","containedSecondary","color","backgroundColor","MuiButtonGroup","MuiListItemIcon","MuiCardContent","paddingBottom","MuiLinearProgress","background","MuiDialogContent","overflow","typography","fontFamily","h1","h2","h3","h4","h5","h6","themeService","configureThemes","mainTheme","cssClasses","createMuiTheme","Object","keys","forEach","getTheme","sidebarColor","sideBarWidth","sidebarHeader","display","alignItems","justifyContent","alignContent","whiteSpace","isCollapsed","mixins","toolbar","headerLogo","width","headerLogoMobile","sidebarHeaderCollapsed","sidebarHeaderNone","height","sidebarTitleLink","textDecoration","logo","palette","secondary","main","zIndex","title","position","marginLeft","letterSpacing","textTransform","sidebarTheme","sidebarBackground","iconColor","sideBarCollapsedWidth","spacing","widthCollapsed","sidebar","top","bottom","sidebarClipped","left","sidebarBody","overflowX","overflowY","sidebarSection","sectionTitle","tagline","marginTop","primary","borderRadius","right","navList","navListHeader","textAlign","iconFeatures","iconDocs","iconSupporters","iconDiscuss","navItemWrapper","navItemWrapperActive","navItemWrapperActiveCollapsed","navItem","transition","navItemPoper","navItemChildren","navItemChildrenActive","navItemCollapsed","flexWrap","transform","navItemIcon","navItemIconCollapsed","iconToggle","iconToggleInactive","iconSpacer","navItemCollapsedWrapper","menuDivider","logoSvg","verticalAlign","size","path","outline","fill","letter","backZone","iconText","AlertContext","createContext","AlertProvider","_ref","alertValues","setAlertValues","severity","Provider","openAlert","Alert","memo","useContext","open","setOpen","useEffect","className","ClipSnackbar","anchorOrigin","horizontal","vertical","autoHideDuration","onClose","ClipAlert","variant","RouteWithLayout","layout","Layout","prevProps","Route","render","DialogProvider","Icons","iconName","nameCustomIcon","Icon","clsx","alt","src","webhookIcon","codeIcon","testIcon","keyIcon","deleteIcon","panelIcon","dashboardNavigations","customIcon","clipIcon","isExternalLink","replaceHistory","navigations","useAppSidebar","useTheme","isMobil","useMediaQuery","breakpoints","down","openSideBar","setOpenSideBar","pathname","pathNameActive","useLocation","localLinks","filter","element","externalLinks","items","removeSpaces","text","subMenusStates","reduce","prevValue","currentValue","_currentValue$items","statesSubmenus","setStatesSubmenus","resetToggleSubmenus","getPropsIconType","_propsIcon","propsIcon","ItemNavBar","categoryName","isCategory","isCategoryLink","validPropsIcon","isBlankRedirect","CategoryLinks","category","Tooltip","disableHoverListener","disableFocusListener","disableTouchListener","placement","arrow","NavLink","to","onClick","returnPanel","target","WrapCategoryLinks","_ref2","isShowSubmenu","lengthItems","heightWrapItemsToggle","style","_ref3","nameWithoutSpaces","isCategoryActive","Typography","map","link","methods","microcomponents","AppSideBar","DrawerClip","anchor","ClipLogo","requestState","resource","successResponse","errorResponse","createConstant","suffix","verb","createGetRequest","createPostRequest","createResponse","actionInfo","payload","code","isFunction","functionToCheck","toString","call","MERCHANT_INFO","MERCHANT_API_KEY","MERCHANT_CREATE_API_APPLICATION","MERCHANT_DELETE_API_KEY","MERCHANT_VERIFIED_ACCOUNT","getMerchantInfo","route","success","store","_res$config","config","Boolean","dispatch","fullRoute","merchantVerifiedAccount","getMerchantApiKey","createApiApplication","onSuccess","onFailure","failure","deleteApiApplication","apikeyId","LOGIN_WITH_TOKEN","GET_SANDBOX_TOKEN","LOGOUT","getSandboxTokenAndLoginUser","_res$data","loginUserWithToken","exitApp","useAppHeader","_merchantInfo$merchan","merchantInfo","useSelector","state","session","nameMerchant","merchant","showMenu","setShowMenu","addShadow","navbar","document","getElementById","exitsClass","classList","contains","scrollY","add","addEventListener","removeEventListener","closeSession","getInitialsName","trim","split","slice","AppHeader","id","ClipButton","DashboardLayout","AppSidebar","getFullEventName","eventName","EVENTS","API_KEYS","APP_LIST_VIEWED","APP_LIST_CREATE_NEW_CLICKED","CREATE_APP_DIALOG","CREATE_APP_SAVE","CREATE_APP_SUCCEEDED","CREATE_APP_FAILED","APP_DETAIL_CLICKED","APP_DETAIL_DELETE_CLICK","DELETE_APP_DIALOG_DISPLAYED","DELETE_APP_CONFIRMATION_CLICKED","DELETE_APP_FAILED","DELETE_APP_SUCCEEDED","WEBHOOKS","SETUP_VIEWED","SETUP_URL_SUCCEEDED","SETUP_URL_FAILED","DISABLE_SUCCEEDED","DISABLE_FAILED","ENABLE_SUCCEEDED","ENABLE_FAILED","TEST_NOTIFICATION_SENT","TEST_NOTIFICATION_FAILED","SDK","SDK_IOS_DOWNLOAD_VIEWED","SDK_IOS_DOWNLOAD_CLICKED","SAMPLE_PROJECTS_VIEWED","SAMPLE_DOWNLOAD_CLICKED","CleverTap","initialize","clevertap","privacy","push","optOut","useIP","spa","init","event","info","profile","userInfo","onUserLogin","Site","Name","first_name","last_name","second_last_name","Identity","email","Email","Phone","mobile","DOB","Skeleton","otherProps","styleProps","Array","from","_","index","useNewCredential","typeCredential","apiKey","inputNameCredential","setInputNameCredential","sendRequest","setSendRequest","dialogActions","DialogContext","history","useHistory","RULES","notEmpty","regex","threerOrMore","noSpecialCharacters","upToOneHundredCharacters","EVALUATIONS","accumulator","_regex","test","getError","appName","_apiKey$item","_apiKey$item2","_apiKey$item3","_apiKey$item4","nameCredential","apiKeyCredential","api_key","apiSecretCredential","api_secret","createdAt","created_at","isError","rulesKeysToRender","_RULES$currentValue","onChange","onCloseDialog","closeDialog","onClickCreate","async","values","evaluation","SOURCE","submitData","connect","bindActionCreators","reduxForm","form","ClipTypography","align","TextField","label","helperText","InputProps","endAdornment","inputProps","FormHelperTextProps","_RULES$key","disabled","CircularProgress","useCredentials","_prodCredentials$item","_prodCredentials$item2","_testCredentials$item","_testCredentials$item2","credentials","prodCredentials","testCredentials","prod","EmptyCredentials","EmptyCredentialsImg","gutterBottom","RenderListByType","_credentials$items","_Fragment","credential","redirectToCredential","lengthCredentialsProd","lengthCredentialsTest","ProdCredentialsList","TestCredentialsList","CtaCreate","_ref4","_credentialsList$item","_credentialsList$item2","credentialsList","lengthList","startIcon","registerDialog","maxWidth","NewCredential","createCredential","Credentials","verifiedAccount","href","rel","ApiCredentialsComponent","useDispatch","apiKeySandBox","isVerifiedAccount","classes","redTheme","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","AppConfiguration","margin","Button","MenuOpenTwoToneIcon","redClipTheme","SwapHorizTwoToneIcon","InputLabeled","input","meta","touched","enableTip","ClipInput","errormessage","fullWidth","clickable","popoverExternalFlag","URL_REGEX","RegExp","POSTBACK_GET_INFO","POSTBACK_UPDATE_WEBHOOK","POSTBACK_UPDATE_NOTIFICATION_STATUS","useStyles","makeStyles","formContainer","paddingTop","inputContainer","actions","flexDirection","edit","cursor","WebHookForm","webhookUrl","_state$webhooks","webhooks","setDisabled","URL","validateURL","isURL","onClickEdit","Form","onSubmit","updatePostbackWebHook","handleSubmit","submitting","invalid","Grid","container","xs","Field","placeholder","validate","initialValue","adornmentIcon","CreateIcon","toggleContainer","toggleDescription","webHookTestContainer","borderTop","grey","webHookTestAction","webhookLink","celurean","base","WebHookToggle","toggleStatus","getSuccessMessage","ClipSwitch","checked","handleStatus","updatePostbackNotificationsStatus","WebHookTest","direction","justify","handleClick","testPostbackWebHook","WebHookCard","notificationStatus","webHookUrl","_state$webhooks2","showWebHookTest","showWebHookToggle","IS_ENABLED","Card","CardHeader","CardContent","flexGrow","flex","header","WebHooks","loading","sm","md","lg","useDetailCredential","deleteApiKey","isShowKeySecret","setIsShowKeySecret","processResultRemoveCredential","isSuccessProcess","callbackCloseModal","ConfirmModal","isProcessDelete","setIsProcessDelete","showKeySecret","deleteCredential","Legend","IconCopy","copyClipboard","navigator","clipboard","writeText","DetailCredential","maxHeight","FormControlLabel","control","Checkbox","DetailCredentialView","BackToList","useDetailCredentialView","CloseModalReturn","ReturToList","AppRouterComponent","BrowserRouter","Router","Switch","exact","Redirect","ApiCredentials","initialState","tokenSandbox","action","produce","draft","_payload$data","_payload$data2","_payload$data2$query","query","_payload$data3","KYC","isEmpty","obj","webhooksReducer","_payload$data$notific","_payload$data2$notifi","_payload$data3$notifi","_payload$data3$notifi2","_payload$data4","_payload$data4$notifi","_payload$data4$notifi2","combineReducers","reduxFormReducer","processMiddleware","successAction","failureAction","createSuccessResponse","createErrorResponse","autoHandleError","apiResolveMiddleware","next","actionType","invalidResponse","correctActionType","validResponse","prefix","responseActionType","join","getActionTypeInfo","Loading","AuthGuard","showContent","merchantInfoAndUserInfoLoaded","redirectRoute","uri","authGuard","login","role","logProfile","componentDidMount","shouldComponentUpdate","nextProps","nextState","componentDidUpdate","canProcessAuth","setState","Fragment","match","theStore","preloadedState","middlewares","thunkMiddleware","enhancers","applyMiddleware","composedEnhancers","composeWithDevTools","createStore","rootReducer","ReactDOM","App","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.591a33d9.chunk.js","sourcesContent":["import moment from 'moment-timezone';\nimport 'moment/locale/es';\n\n// Formats date to spanish\n// Languages other than English must be imported separately\nmoment.locale('es');\n\n/**\n * Returns a date as short and full year (i.e Jan 2017)\n * @param date - date to be formatted\n * @return string - formatted date\n */\nexport function toMonthAndYear(date) {\n if (!date) return '';\n\n return moment(date).format('MMM YYYY').toUpperCase();\n}\n\n/**\n * Returns a full date in a short format (i.e 7 Jan 2017)\n * @param date - date to be formatted\n * @return string - formatted date\n */\nexport function toShortDate(date) {\n if (!date) return '';\n\n return moment(date).format('D MMM YYYY').toUpperCase();\n}\n\n/**\n * Returns a standard date\n * Without full month spelling (i.e 07 Jan 2017)\n * @param date - date to be formatted\n * @return string - formatted date\n */\nexport function toDate(date) {\n if (!date) return '';\n\n return moment(date).format('DD MMMM YYYY').toUpperCase().replace('.', '');\n}\n\n/**\n * Returns the date in long format\n * eje. 16 DE MAYO DE 2024\n * @param date - date to be formatted\n * @return string - formatted date\n */\nexport function toDateLong(date) {\n if (!date) return '';\n return moment(date).format('LL').toUpperCase().replace('.', '').toLowerCase();\n}\n\n/**\n * Returns a standard date with time\n * Without full month spelling (i.e 07 Jan 2017)\n * @param date - date to be formatted\n * @return string - formatted date\n */\nexport function toDateTime(date) {\n if (!date) return '';\n\n const dateTime = moment(date).format('hh:mm A');\n return `${moment(date).format('DD MMM YYYY').toUpperCase()} ${dateTime} CST`;\n}\n\n/**\n * Determines if a date is within a specified period\n * @param date - date to be evaluated\n * @param start - start date of time period\n * @param end - end date of time period\n * @return boolean - wether or not date is between given params\n */\nexport function isBetween(date, start, end) {\n if (!date || !start || !end) return false;\n // eslint-disable-next-line no-param-reassign\n date = moment(date).format('YYYY-MM-DD');\n // eslint-disable-next-line no-param-reassign\n start = moment(start).format('YYYY-MM-DD');\n // eslint-disable-next-line no-param-reassign\n end = moment(end).format('YYYY-MM-DD');\n\n return moment(date).isBetween(start, end, null, '[]');\n}\n\n/**\n * Determines if a date is the same or after a given limit\n * @param date - date to be evaluated\n * @param limit - number of units of time to be subtracted\n * from current date to find the start date\n * @param level - unit type to be subtracted from start date\n * options are 'day', 'month', or 'year'\n * @return boolean - whether or not date is same or after start date\n */\nexport function isSameOrAfter(date, limit, level) {\n if (!date || !limit || !level) return false;\n\n const limitDate = moment().subtract(limit, `${level}s`);\n\n return moment(date).isSameOrAfter(limitDate, `${level}`);\n}\n\n/**\n * Determines if a date is expired (date provided is before current date/time)\n * @param date - date to be evaluated (timestamp in seconds)\n * @return boolean - wether or not date is expired\n */\nexport function isTimestampExpired(theDate) {\n if (!theDate) return true;\n const date = moment(theDate * 1000); // seconds to milliseconds\n\n return moment().isSameOrAfter(date);\n}\n\n/**\n * Determines if a date is expired (date provided is before current date/time)\n * @param list - List of items to sort\n * @param nameProp - Name of the property that stores the date\n * @return array - List of elements ordered by the indicated property\n */\nexport function orderByDate(list = [], nameProp, type = 'asc' /* or des */) {\n const isInvalidProp = list.some(item => {\n if (!item[nameProp]) {\n return true;\n }\n return false;\n });\n\n if (isInvalidProp) {\n return list;\n }\n\n return list.sort(function (a, b) {\n var c = new Date(a[nameProp].replace('Z', ''));\n var d = new Date(b[nameProp].replace('Z', ''));\n if (type === 'asc') {\n return c - d;\n }\n return d - c;\n });\n}\n","import axios from 'axios';\nimport jwtDecode from 'jwt-decode';\nimport cookieService from './cookieService';\nimport { isTimestampExpired } from '../helpers/dateHelpers';\nimport { PRODUCTIVE_MODE } from '../common/authorizationModeType';\nimport { validateMode } from '../common/modeUtils';\n\nclass JwtAuthService {\n constructor(storageService = cookieService) {\n this.storageService = storageService;\n }\n\n logout = () => {\n this.setSession(null);\n this.removeUser();\n };\n\n // Set Productive token to all http request header, so you don't need to attach everytime\n setSession = token => {\n // if (token && !this.isTokenExpired(token)) {\n if (token) {\n this.storageService.saveToken(token, PRODUCTIVE_MODE);\n axios.defaults.headers.common.Authorization = token;\n } else {\n this.storageService.clearToken();\n delete axios.defaults.headers.common.Authorization;\n }\n };\n\n isTokenExpired = token => {\n try {\n if (typeof token === 'undefined' || token === null || token === '') return true;\n const decoded = jwtDecode(token);\n return isTimestampExpired(decoded.exp);\n } catch (e) {\n console.log(e.message);\n }\n return true;\n };\n\n getToken = mode => {\n validateMode(mode);\n return this.storageService.getToken(mode);\n };\n\n // Save user to localstorage\n setUser = user => {\n this.storageService.setItem('auth_user', user);\n };\n\n // Remove user from localstorage\n removeUser = () => {\n this.storageService.removeItem('auth_user');\n };\n}\n\nconst JwtAuthServiceInstance = new JwtAuthService();\n\nexport default JwtAuthServiceInstance;\n","export const app = {\n // App\n env: process.env.REACT_APP_ENV,\n loginToken: process.env.REACT_APP_LOGIN_TOKEN,\n signInCookieDomain: process.env.REACT_APP_SIGN_IN_COOKIE_DOMAIN,\n apiUrl1: process.env.REACT_APP_API_URL,\n apiUrl2: process.env.REACT_APP_API_URL2,\n reactAppUrl: process.env.REACT_APP_PUBLIC_URL,\n reactAppCookieDomain: process.env.REACT_APP_COOKIEDOMAIN,\n // external sites\n merchantDashboard: process.env.REACT_APP_MERCHANT_DASHBOARD,\n docSite: process.env.REACT_APP_DOC_SITE,\n documentationSite: process.env.REACT_APP_DOCUMENTATION_PORTAL_SITE,\n techRefSite: process.env.REACT_APP_TEC_REF_SITE,\n genApiKeyDoc: process.env.REACT_APP_GENERATE_API_KEY_DOC,\n webHookSiteDoc: process.env.REACT_APP_WEBHOOKS_DOC_SITE,\n devPortalDocSite: process.env.REACT_APP_DEVELOPER_PORTAL_DOC_SITE,\n // authentication\n merchantTokens: process.env.REACT_APP_MERCHANT_TOKENS,\n // Launch Darkly\n launchDarklyKey: process.env.REACT_APP_LAUNCH_DARKLY_KEY,\n // CleverTap\n clevertapApiKey: process.env.REACT_APP_CLEVERTAP_API_KEY,\n // Debug MSW\n debugMSW: process.env.REACT_APP_DEBUG_MSW,\n\n // SDK Download Links\n SDKBucket: process.env.REACT_APP_AMAZON_S3_BUCKET_SDK,\n //\n appToken: process.env.REACT_APP_ACCESS_TOKEN,\n};\n\nconst getConfigValue = key => app[key];\n\nexport default getConfigValue;\n","import Cookies from 'js-cookie';\nimport getConfigValue from '../config/enviromentVariables';\nimport { PRODUCTIVE_MODE, SANDBOX_MODE } from '../common/authorizationModeType';\nimport { validateMode } from '../common/modeUtils';\n\nconst signInCookieDomain = getConfigValue('signInCookieDomain');\nconst PRODUCTION_AUTH_COOKIE_NAME = 'access_token';\nconst SANDBOX_AUTH_COOKIE_NAME = 'sandbox_access_token';\n\n/**\n * Gets the domain name of a hostname\n * @param hostName - the hostname\n * @return string - The domain name\n */\nfunction getDomainName(hostName) {\n return hostName.substring(hostName.lastIndexOf('.', hostName.lastIndexOf('.') - 1) + 1);\n}\n\n/*\n * Gets the cookie name depending on the environment\n * @param mode - The environment name\n * @return string - The cookie name\n */\nfunction getCookieNameByMode(mode) {\n return mode === SANDBOX_MODE ? SANDBOX_AUTH_COOKIE_NAME : PRODUCTION_AUTH_COOKIE_NAME;\n}\n\n/**\n * Creates a name for a cookie depending on the environment\n * @param env - The environment name\n * @param baseName - The base name for the cookie\n * @return string - The cookie name\n */\nfunction createCookieName(env, baseName) {\n if (env === 'production') return baseName;\n return `${getConfigValue('env')}_${baseName}`;\n}\n\nclass CookieService {\n defaultOptions = () => ({ expires: 60, domain: signInCookieDomain });\n\n setItem = (key, value, options) => {\n const cookieOptions = options || this.defaultOptions();\n Cookies.set(key, value, cookieOptions);\n };\n\n removeItem = (key, options) => {\n const cookieOptions = options || this.defaultOptions();\n Cookies.remove(key, cookieOptions);\n };\n\n getItem = key => {\n return Cookies.get(key);\n };\n\n clearToken = () => {\n const domain = `${getDomainName(window.location.hostname)}`;\n const options = { expires: 60, domain };\n const cookieName = createCookieName(getConfigValue('env'), PRODUCTION_AUTH_COOKIE_NAME);\n const cookieNameSandbox = createCookieName(getConfigValue('env'), SANDBOX_AUTH_COOKIE_NAME);\n this.removeItem(cookieName, options);\n this.removeItem(cookieNameSandbox, options);\n };\n\n saveToken = (token, mode) => {\n validateMode(mode);\n const domain = `${getDomainName(window.location.hostname)}`;\n const options = { expires: 60, domain };\n const cookieName = createCookieName(getConfigValue('env'), getCookieNameByMode(mode));\n this.setItem(cookieName, token, options);\n };\n\n getToken = mode => {\n validateMode(mode);\n //This is used for always get token from environment variable without necessity of go through login process, Just in local.\n if (mode === PRODUCTIVE_MODE && getConfigValue('env') === 'local') {\n const token = getConfigValue('loginToken');\n //This is used for save productive token in cookie, as we aren't log users in local mode\n //therefore we can't save token in cookie\n this.saveToken(token, mode);\n return token;\n }\n\n const cookieName = createCookieName(getConfigValue('env'), getCookieNameByMode(mode));\n return this.getItem(cookieName);\n };\n}\n\nconst instance = new CookieService();\n\nexport default instance;\n","import { rest } from 'msw';\nimport { makeFullUrl } from '../helpers/request';\n\nexport const webHooksHandlers = [\n rest.get(makeFullUrl('/api/merchant/settings', 1), (req, res, ctx) => {\n return res(\n ctx.status(200),\n ctx.json({\n installment_body: null,\n notification_email: {\n enabled: 1,\n destination: 'miguel.martinezz@clipdashboard.com',\n },\n notification_postback: null,\n })\n );\n }),\n rest.post(makeFullUrl('/api/merchant/notification/postback/edit', 1), (req, res, ctx) => {\n return res(\n ctx.status(200),\n ctx.json({\n notification: {\n postback: {\n enabled: 1,\n destination: 'www.someurl.com',\n },\n },\n })\n );\n }),\n rest.put(makeFullUrl('/api/merchant/notification/payment-postback-toggle', 1), (req, res, ctx) => {\n return res(\n ctx.status(200),\n ctx.json({\n enabled: 1,\n endpoint: 'www.some.url',\n })\n );\n }),\n rest.get(makeFullUrl('/api/merchant/notification/postback-endpoint-health', 1), (req, res, ctx) => {\n return res(ctx.status(204));\n }),\n];\n","import { webHooksHandlers } from './webhooksHandlers';\n\nexport const handlers = [...webHooksHandlers];\n","export const PRODUCTIVE_MODE = 'PRODUCTIVE';\nexport const SANDBOX_MODE = 'SANDBOX';\n","import JwtAuthService from '../services/jwtService';\nimport getConfigValue from '../config/enviromentVariables';\nimport { PRODUCTIVE_MODE } from '../common/authorizationModeType';\n\nconst axios = require('axios');\n\nexport const GET = 'get';\nexport const POST = 'post';\nexport const PUT = 'put';\nexport const PATCH = 'path';\nexport const DELETE = 'delete';\n\nexport const makeFullUrl = (url, apiEndPoint = 1) => {\n const apiBase = getConfigValue(`apiUrl${apiEndPoint}`);\n return `${apiBase || 'https://dev-api-gateway.payclip.com'}${url}`;\n};\n\nexport const getRequestOptions = (mode = PRODUCTIVE_MODE) => {\n const token = JwtAuthService.getToken(mode);\n const headers = {\n Accept: 'application/vnd.com.payclip.v1+json',\n };\n\n if (token) {\n headers.Authorization = token;\n }\n\n return headers;\n};\n\n/**\n * Post data to our middleware server.\n */\nexport function apiSendData(\n method,\n url,\n params,\n data = null,\n mode = PRODUCTIVE_MODE,\n apiEndPoint = 1,\n fullRoute = false,\n headers = {}\n) {\n const axiosConfig = {\n method,\n url: fullRoute ? url : makeFullUrl(url, apiEndPoint),\n data,\n params,\n headers: { ...getRequestOptions(mode), ...headers },\n };\n return new Promise((resolve, reject) => {\n axios(axiosConfig)\n .then(response => {\n resolve(response);\n })\n .catch(error => {\n reject(error);\n });\n });\n}\n","import { PRODUCTIVE_MODE, SANDBOX_MODE } from './authorizationModeType';\n\nexport function validateMode(mode) {\n if (!mode) throw new Error(`Mode must be provided`);\n if (mode !== PRODUCTIVE_MODE && mode !== SANDBOX_MODE) throw new Error('Invalid mode');\n}\n","if (typeof window === 'undefined') {\n const { server } = require('./server');\n server.listen();\n} else {\n const { worker } = require('./browser');\n worker.start();\n}\n","import { rest } from 'msw';\nimport { setupServer } from 'msw/node';\nimport { handlers } from './handlers';\n\nconst server = setupServer(...handlers);\n\nexport { server, rest };\n","import { setupWorker } from 'msw';\nimport { handlers } from './handlers';\n\n// This configures a Service Worker with the given request handlers.\nexport const worker = setupWorker(...handlers);\n","import React, { useState } from 'react';\nimport { StylesProvider, createGenerateClassName } from '@material-ui/core/styles';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport PropTypes from 'prop-types';\nimport { ClipThemeProvider, theme as clipTheme } from '@clipmx/clip-storybook';\n\nconst generateClassName = createGenerateClassName({\n seed: 'dp',\n});\n\nconst ThemeProvider = props => {\n const { theme: rootTheme, component: Component, ...pageProps } = props;\n const overrides = { ...rootTheme.overrides, ...clipTheme.overrides };\n overrides.MuiAlert.icon.minWidth = 18;\n overrides.MuiAlert.icon.marginRight = 8;\n overrides.MuiAlert.message = {\n padding: 0,\n lineHeight: 'normal',\n };\n const mixedTheme = { ...rootTheme, overrides };\n const [theme, setTheme] = useState(mixedTheme);\n const [clippedHeader, setClippedHeader] = useState(false);\n const [withIcons, setWithIcons] = useState(false);\n const changeTheme = (name, data) => {\n const dataTheme = data(theme);\n const newTheme = { ...theme, [name]: { ...dataTheme } };\n setTheme(newTheme);\n };\n const changeHeaderType = () => {\n setClippedHeader(!clippedHeader);\n };\n const changeIconSettings = () => {\n setWithIcons(!withIcons);\n };\n return (\n \n \n \n {Component && (\n \n )}\n {!Component &&
No component
}\n
\n
\n );\n};\n\nThemeProvider.defaultProps = {\n component: null,\n theme: {},\n};\n\nThemeProvider.propTypes = {\n theme: PropTypes.object,\n component: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n ]),\n};\n\nexport default ThemeProvider;\n","import { theme as clipTheme } from '@clipmx/clip-storybook';\n\nconst rootTheme = {\n ...clipTheme,\n props: {\n MuiPaper: {\n elevation: 0,\n },\n MuiAppBar: {\n elevation: 1,\n },\n MuiMenu: {\n elevation: 1,\n },\n MuiCard: {\n elevation: 0,\n },\n },\n sharedStyles: {\n sectionHeader: {\n fontSize: 24,\n fontWeight: 600,\n marginBottom: 24,\n },\n },\n overrides: {\n MuiInputBase: {\n root: {\n '&.Mui-disabled': {\n opacity: '1 !important',\n },\n },\n },\n MuiButton: {\n root: {\n minWidth: 0,\n },\n contained: {\n boxShadow: 'none',\n '&:active': {\n boxShadow: 'none',\n },\n '&:focus': {\n boxShadow: 'none',\n },\n },\n containedSecondary: {\n color: '#fff',\n '&:hover': {\n backgroundColor: 'rgb(118, 195, 21)',\n },\n },\n },\n MuiButtonGroup: {\n root: {\n boxShadow: 'none',\n },\n contained: {\n boxShadow: 'none',\n '&:active': {\n boxShadow: 'none',\n },\n '&:focus': {\n boxShadow: 'none',\n },\n },\n },\n MuiListItemIcon: {\n root: {\n minWidth: 40,\n },\n },\n MuiCardContent: {\n root: {\n '&:last-child': {\n paddingBottom: 16,\n },\n },\n },\n MuiLinearProgress: {\n root: {\n background: '#f3f3f3 !important',\n },\n },\n MuiDialogContent: {\n root: {\n overflow: 'hidden',\n },\n },\n },\n typography: {\n fontFamily: 'Inter, Roboto, Helvetica, Arial, sans-serif',\n h1: {\n fontSize: '2rem',\n },\n h2: {\n fontSize: '1.8rem',\n },\n h3: {\n fontSize: '1.6rem',\n },\n h4: {\n fontSize: '1.4rem',\n },\n h5: {\n fontSize: '1.2rem',\n },\n h6: {\n fontSize: '1rem',\n },\n },\n};\n\nrootTheme.overrides = { ...clipTheme.overrides, ...rootTheme.overrides };\n\nexport default rootTheme;\n","import { createMuiTheme } from '@material-ui/core/styles';\n\nconst themeService = () => {\n let theme = {};\n const configureThemes = (mainTheme = {}, cssClasses = {}) => {\n theme = createMuiTheme(mainTheme);\n Object.keys(cssClasses).forEach(key => {\n theme[key] = cssClasses[key](theme);\n });\n return theme;\n };\n const getTheme = () => {\n return theme;\n };\n return {\n configureThemes,\n getTheme,\n };\n};\n\nexport default themeService();\n","const sidebarColor = '#192E3A';\nconst sideBarWidth = 255;\nexport const sharedStyles = theme => ({\n sidebarHeader: props => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n alignContent: 'center',\n whiteSpace: 'nowrap',\n padding: props.isCollapsed ? '0 8px' : '0 16px',\n backgroundColor: 'white',\n ...theme.mixins.toolbar,\n }),\n headerLogo: {\n width: sideBarWidth,\n },\n headerLogoMobile: {\n width: 60,\n overflow: 'hidden',\n },\n sidebarHeaderCollapsed: {\n padding: '0 8px',\n },\n sidebarHeaderNone: {\n width: 0,\n height: 0,\n opacity: 0,\n },\n sidebarTitleLink: {\n textDecoration: 'none',\n color: 'inherit',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n alignContent: 'center',\n whiteSpace: 'nowrap',\n },\n logo: {\n color: theme.palette.secondary.main,\n zIndex: 10,\n },\n title: props => ({\n position: 'relative',\n overflow: 'visible',\n marginLeft: '10px',\n display: props.isCollapsed ? 'none' : 'block',\n fontSize: '1rem',\n letterSpacing: '.015em',\n // fontWeight: 'bold',\n }),\n name: {\n textTransform: 'uppercase',\n color: sidebarColor,\n },\n});\n\nconst sidebarTheme = theme => {\n const sidebarBackground = '#fff';\n const headerColor = 'rgba(25,46,58,0.9)';\n const iconColor = sidebarColor;\n const sideBarCollapsedWidth = theme.spacing(7);\n return {\n width: sideBarWidth,\n widthCollapsed: sideBarCollapsedWidth,\n background: sidebarBackground,\n color: sidebarColor,\n sidebar: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n color: sidebarColor,\n background: sidebarBackground,\n },\n sidebarClipped: {\n ...theme.mixins.toolbar,\n },\n sidebarBackground: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 0,\n backgroundColor: '#FAFBFB',\n },\n sidebarBody: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n overflowX: 'hidden',\n overflowY: 'auto',\n },\n sidebarSection: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'left',\n alignContent: 'center',\n whiteSpace: 'nowrap',\n padding: '0 16px',\n color: '#1a2e3a',\n ...theme.mixins.toolbar,\n },\n sectionTitle: {\n fontWeight: 500,\n },\n tagline: {\n fontSize: 8,\n fontWeight: 'bold',\n position: 'absolute',\n top: '100%',\n marginTop: -5,\n background: theme.palette.primary.main,\n color: '#fff',\n borderRadius: 2,\n padding: '1px 3px',\n right: 0,\n },\n navList: {\n width: sideBarWidth,\n fontSize: '1.1em',\n fontWeight: 400,\n lineHeight: 1.5,\n letterSpacing: '0.00938em',\n },\n navListHeader: {\n textAlign: 'center',\n color: headerColor,\n },\n iconFeatures: {\n color: '#95de3c',\n },\n iconDocs: {\n color: '#f8cda9',\n },\n iconSupporters: {\n color: '#e3b546',\n },\n iconDiscuss: {\n color: '#ccc',\n },\n navItemWrapper: {\n position: 'relative',\n },\n navItemWrapperActive: {\n // background: 'rgba(0, 0, 0, 0.08)',\n },\n navItemWrapperActiveCollapsed: {\n background: 'rgba(0, 0, 0, 0.08)',\n },\n navItem: {\n position: 'relative',\n transition: 'background .23s ease',\n '&.active:not(.open)': {\n color: theme.palette.secondary.main,\n fontWeight: 500,\n // background: 'rgba(0, 0, 0, 0.08)',\n '& .MuiListItemIcon-root': {\n // color: '#fff',\n color: theme.palette.primary.main,\n },\n },\n '&.open': {\n fontWeight: 500,\n // color: `${Color(sidebarColor).alpha(0.8)}`,\n // backgroundColor: `${Color(theme.palette.primary.main).alpha(0.1).lighten(0.5)}`,\n '& .MuiListItemIcon-root': {\n color: sidebarColor,\n },\n },\n '&:hover': {\n color: sidebarColor,\n '& .MuiListItemIcon-root': {\n color: sidebarColor,\n },\n },\n },\n navItemPoper: {\n width: sideBarWidth,\n color: sidebarColor,\n background: sidebarBackground,\n },\n navItemChildren: {\n transition: 'background .23s ease',\n // position: 'absolute',\n },\n navItemChildrenActive: {\n background: 'rgba(0, 0, 0, 0.1)',\n },\n navItemCollapsed: {\n whiteSpace: 'nowrap',\n flexWrap: 'nowrap',\n width: sideBarCollapsedWidth,\n '& $iconToggle': {\n position: 'absolute',\n // bottom: -1,\n fontSize: 14,\n top: '50%',\n marginTop: '-0.5em',\n transform: 'rotate(90deg)',\n right: '3px',\n },\n '&.active': {\n background: 'rgba(0, 0, 0, 0.08)',\n },\n },\n navItemIcon: {\n minWidth: 40,\n color: `${iconColor}`,\n },\n navItemIconCollapsed: {\n minWidth: 40,\n color: 'rgba(0, 0, 0, 0.87)',\n },\n iconToggle: {\n fontSize: '1rem',\n },\n iconToggleInactive: {\n opacity: 1,\n },\n iconSpacer: {\n fontSize: 13,\n marginLeft: 6,\n },\n navItemCollapsedWrapper: {\n width: sideBarCollapsedWidth,\n },\n menuDivider: {\n backgroundColor: 'rgba(0,0,0,0.1)',\n },\n logoSvg: props => ({\n display: 'inline-block',\n verticalAlign: 'text-bottom',\n width: props.size,\n height: props.size,\n }),\n path: {\n transition: 'all .3s ease',\n },\n outline: {\n fill: '#FC4B00',\n },\n letter: {\n fill: sidebarBackground,\n },\n backZone: {},\n iconText: {\n fontWeight: 'bold',\n fontSize: 14,\n marginLeft: 7,\n },\n ...sharedStyles(theme),\n };\n};\n\nexport default sidebarTheme;\n","import rootTheme from './themes/rootTheme';\nimport themeService from './themes/configureThemes';\nimport sidebar from './themes/sideBar/developersPortal';\n\nthemeService.configureThemes(rootTheme, { sidebar });\nconst theme = themeService.getTheme();\n\nexport default theme;\n","import React, { createContext, useState, useContext, memo, useEffect } from 'react';\n\nimport ClipSnackbar from '@clipmx/clip-storybook/dist/components/Snackbar';\nimport ClipAlert from '@clipmx/clip-storybook/dist/components/Alert';\nimport './Alert.css';\n\nexport const AlertContext = createContext();\n\nexport const AlertProvider = ({ children }) => {\n const [alertValues, setAlertValues] = useState({\n severity: null,\n message: null,\n });\n\n return {children};\n};\n\n/** Shows an alert in the top/center section of the app\n * This component is showed when one action (regularly actions) has\n * a response (success/error) and notifies the user about it.\n * @component\n * @name Alert\n */\nexport const Alert = memo(() => {\n const { alertValues } = useContext(AlertContext);\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (alertValues?.severity) {\n setOpen(true);\n }\n }, [alertValues]);\n\n return (\n
\n {alertValues?.message && (\n setOpen(false)}\n >\n setOpen(false)}>\n {alertValues.message}\n \n \n )}\n
\n );\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Route } from 'react-router-dom';\n\nimport { DialogProvider } from '@clipmx/clip-storybook/dist/components/Dialog/dialogContext';\nimport { Alert, AlertProvider } from '../components/common/Alert';\n\nconst RouteWithLayout = ({ component: Component, layout: Layout, prevProps, ...rest }) => {\n return (\n {\n if (Layout) {\n return (\n \n \n \n \n \n \n \n \n );\n }\n return ;\n }}\n />\n );\n};\n\nRouteWithLayout.defaultProps = {\n component: null,\n layout: null,\n prevProps: null,\n};\n\nRouteWithLayout.propTypes = {\n component: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.element,\n PropTypes.func,\n PropTypes.object,\n ]),\n layout: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node, PropTypes.element, PropTypes.func]),\n prevProps: PropTypes.object,\n};\n\nexport default RouteWithLayout;\n","export default __webpack_public_path__ + \"static/media/panel.a61b3399.svg\";","export default __webpack_public_path__ + \"static/media/webhook.db39c32f.svg\";","export default __webpack_public_path__ + \"static/media/code.3a3f35ba.svg\";","export default __webpack_public_path__ + \"static/media/test.d8aa8457.svg\";","export default __webpack_public_path__ + \"static/media/key.65990368.svg\";","export default __webpack_public_path__ + \"static/media/delete.a7110e48.svg\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '@material-ui/core/Icon';\nimport clsx from 'clsx';\nimport panelIcon from './../../files/panel.svg';\nimport webhookIcon from './../../files/webhook.svg';\nimport codeIcon from './../../files/code.svg';\nimport testIcon from './../../files/test.svg';\nimport keyIcon from './../../files/key.svg';\nimport deleteIcon from './../../files/delete.svg';\n\nconst Icons = props => {\n const { type, iconName, className, nameCustomIcon, ...rest } = props;\n switch (type) {\n case 'icon':\n return (\n \n {iconName}\n \n );\n case 'iconText':\n return (\n \n {iconName}\n \n );\n case 'custom':\n switch (nameCustomIcon) {\n case 'webhook':\n return \"webhook-icon\";\n case 'code':\n return \"code-icon\";\n case 'test':\n return \"code-icon\";\n case 'key':\n return \"code-icon\";\n case 'delete':\n return \"code-icon\";\n default:\n return \"panel-icon\";\n }\n default:\n return ;\n }\n};\n\nIcons.defaultProps = {\n iconName: '',\n type: 'icon',\n className: '',\n nameCustomIcon: 'panel',\n};\n\nIcons.propTypes = {\n iconName: PropTypes.string,\n className: PropTypes.string,\n type: PropTypes.oneOf(['icon', 'iconText', 'clipIcon', 'custom']),\n nameCustomIcon: PropTypes.oneOf(['panel', 'webhook', 'code', 'test', 'key', 'delete']),\n};\n\nexport default Icons;\n","import getConfigValue from './config/enviromentVariables';\n\nexport const original = [\n {\n name: 'Developers Dashboard',\n path: '/dashboard',\n icon: 'dashboard',\n },\n {\n name: 'Multilevel',\n icon: 'trending_up',\n items: [\n {\n name: 'Level 1',\n icon: 'list',\n items: [\n {\n name: 'Item 1',\n path: '/charts/victory-charts',\n iconText: '1',\n },\n {\n name: 'Item 2',\n path: '/charts/react-vis',\n iconText: '2',\n },\n {\n name: 'Item 3',\n path: '/charts/recharts',\n iconText: '3',\n },\n {\n name: 'Item 4',\n path: '/charts/echarts',\n iconText: '4',\n },\n ],\n },\n {\n name: 'Level 2',\n icon: 'list',\n items: [\n {\n name: 'Item 1',\n path: '/charts/victory-charts',\n iconText: '1',\n },\n {\n name: 'Item 2',\n path: '/charts/react-vis',\n iconText: '2',\n },\n {\n name: 'Item 3',\n path: '/charts/recharts',\n iconText: '3',\n },\n {\n name: 'Item 4',\n path: '/charts/echarts',\n iconText: '4',\n },\n ],\n },\n ],\n },\n {\n name: 'Utilities',\n icon: 'format_list_bulleted',\n items: [\n {\n name: 'Color',\n path: '/utilities/color',\n iconText: 'C',\n },\n {\n name: 'Spacing',\n path: '/utilities/spacing',\n iconText: 'S',\n },\n {\n name: 'Typography',\n path: '/utilities/typography',\n iconText: 'T',\n },\n {\n name: 'Display',\n path: '/utilities/display',\n iconText: 'D',\n },\n ],\n },\n {\n name: 'Sessions',\n icon: 'trending_up',\n items: [\n {\n name: 'Sign in',\n iconText: 'SI',\n path: '/session/signin',\n },\n {\n name: 'Sign up',\n iconText: 'SU',\n path: '/session/signup',\n },\n {\n name: 'Forgot password',\n iconText: 'FP',\n path: '/session/forgot-password',\n },\n {\n name: 'Error',\n iconText: '404',\n path: '/session/404',\n },\n ],\n },\n\n {\n name: 'UI Kits',\n icon: 'favorite',\n badge: { value: '50+', color: 'secondary' },\n items: [\n {\n name: 'Auto Complete',\n path: '/material/autocomplete',\n iconText: 'A',\n },\n {\n name: 'Buttons',\n path: '/material/buttons',\n iconText: 'B',\n },\n {\n name: 'Checkbox',\n path: '/material/checkbox',\n iconText: 'C',\n },\n {\n name: 'Dialog',\n path: '/material/dialog',\n iconText: 'D',\n },\n {\n name: 'Expansion Panel',\n path: '/material/expansion-panel',\n iconText: 'E',\n },\n {\n name: 'Form',\n path: '/material/form',\n iconText: 'F',\n },\n {\n name: 'Icons',\n path: '/material/icons',\n iconText: 'I',\n },\n {\n name: 'Menu',\n path: '/material/menu',\n iconText: 'M',\n },\n {\n name: 'Progress',\n path: '/material/progress',\n iconText: 'P',\n },\n {\n name: 'Radio',\n path: '/material/radio',\n iconText: 'R',\n },\n {\n name: 'Switch',\n path: '/material/switch',\n iconText: 'S',\n },\n {\n name: 'Slider',\n path: '/material/slider',\n iconText: 'S',\n },\n {\n name: 'Snackbar',\n path: '/material/snackbar',\n iconText: 'S',\n },\n {\n name: 'Table',\n path: '/material/table',\n iconText: 'T',\n },\n ],\n },\n\n {\n name: 'Map',\n icon: 'add_location',\n path: '/map',\n },\n];\n\nexport const navigations = [\n {\n name: 'Documentación',\n path: getConfigValue('documentationSite'),\n clipIcon: 'manual',\n },\n {\n name: 'Referencia Técnica',\n path: getConfigValue('techRefSite'),\n clipIcon: 'code',\n },\n {\n name: 'Panel de Control',\n path: getConfigValue('merchantDashboard'),\n clipIcon: 'reader',\n reload: true,\n },\n];\n\nexport const dashboardNavigations = [\n {\n name: 'Credenciales',\n path: '/credentials',\n icon: 'control_camera',\n },\n {\n name: 'Postback Webhook',\n path: '/webhooks',\n customIcon: 'webhook',\n },\n /* {\n name: 'SDK',\n customIcon: 'code',\n items: [\n {\n name: 'SDK para iOS',\n path: '/sdk/ios',\n },\n {\n name: 'Proyecto demo Android',\n path: '/sdk/demo-project-android',\n },\n {\n name: 'Proyecto demo iOS',\n path: '/sdk/demo-project-ios',\n },\n ],\n }, */\n {\n name: 'Documentación',\n path: getConfigValue('documentationSite'),\n clipIcon: 'manual',\n isExternalLink: true,\n },\n {\n name: 'Panel de Control',\n path: getConfigValue('merchantDashboard'),\n customIcon: 'panel',\n isExternalLink: true,\n replaceHistory: true,\n },\n];\n\nexport default navigations;\n","import React, { useEffect, useState } from 'react';\nimport { dashboardNavigations } from '../../../sideMenuNavigation';\nimport clsx from 'clsx';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport Tooltip from '@clipmx/clip-storybook/dist/components/Tooltip';\nimport Typography from '@clipmx/clip-storybook/dist/components/Typography';\nimport Icons from '../Icons';\nimport useMediaQuery from '@clipmx/clip-storybook/dist/hooks/useMediaQuery';\nimport useTheme from '@clipmx/clip-storybook/dist/hooks/useTheme';\n\nexport const useAppSidebar = () => {\n const theme = useTheme();\n const isMobil = useMediaQuery(theme.breakpoints.down('xs'));\n const [openSideBar, setOpenSideBar] = useState(true);\n const { pathname: pathNameActive } = useLocation();\n\n const localLinks = dashboardNavigations.filter(element => !element.isExternalLink);\n const externalLinks = dashboardNavigations.filter(element => !element.items && element.isExternalLink);\n\n const removeSpaces = text => text.replace(/ /g, '');\n\n const subMenusStates = localLinks.reduce((prevValue, currentValue) => {\n if (currentValue?.items?.some(item => item.path === pathNameActive)) {\n const name = removeSpaces(currentValue.name);\n return {\n ...prevValue,\n [name]: true,\n };\n }\n return prevValue;\n }, {});\n\n const [statesSubmenus, setStatesSubmenus] = useState(subMenusStates);\n\n const resetToggleSubmenus = () => setStatesSubmenus({});\n\n const getPropsIconType = ({ icon, clipIcon, customIcon }) => {\n let propsIcon = null;\n\n if (!!customIcon) {\n propsIcon = { type: 'custom', nameCustomIcon: customIcon };\n } else if (!!clipIcon) {\n propsIcon = { type: 'clipIcon', iconName: clipIcon };\n } else if (!!icon) {\n propsIcon = { type: 'icon', iconName: icon };\n }\n return propsIcon ?? {};\n };\n\n const returnPanel = path => {\n window.location.replace(path);\n };\n\n const ItemNavBar = props => {\n const {\n name,\n path,\n icon,\n clipIcon,\n customIcon,\n isExternalLink = false,\n replaceHistory = false,\n items,\n categoryName,\n } = props;\n\n const isCategory = !!items;\n const isCategoryLink = !!categoryName;\n const propsIcon = getPropsIconType({ icon, clipIcon, customIcon });\n const validPropsIcon = Object.keys(propsIcon).length > 0;\n const isBlankRedirect = isExternalLink && !replaceHistory;\n\n return isCategory ? (\n \n ) : (\n \n {\n if (replaceHistory) {\n returnPanel(path);\n return;\n }\n if (!isMobil && (openSideBar === false || (openSideBar && isCategoryLink === false))) {\n resetToggleSubmenus();\n }\n if (openSideBar && isMobil) {\n setOpenSideBar(false);\n }\n }}\n {...(isBlankRedirect && { target: '_blank' })}\n >\n {validPropsIcon && }\n {name}\n \n \n );\n };\n\n const WrapCategoryLinks = ({ children, isShowSubmenu = true, lengthItems }) => {\n const marginBottomItemLink = 12;\n const heightWrapItemsToggle = lengthItems * (36 + marginBottomItemLink) - marginBottomItemLink;\n\n return openSideBar || isMobil ? (\n \n {children}\n \n ) : (\n
\n
{children}
\n
\n
\n );\n };\n\n const CategoryLinks = ({ category }) => {\n const nameWithoutSpaces = removeSpaces(category.name);\n const isShowSubmenu = !!statesSubmenus[nameWithoutSpaces];\n const propsIcon = getPropsIconType(category);\n const isCategoryActive = category.items.some(item => item.path === pathNameActive) && openSideBar === false;\n\n return (\n
\n \n {\n resetToggleSubmenus();\n setStatesSubmenus({\n [nameWithoutSpaces]: !statesSubmenus[nameWithoutSpaces],\n });\n }}\n >\n \n {category.name}\n {openSideBar && (\n \n )}\n
\n \n \n {category.items.map(link => {\n return ;\n })}\n \n \n );\n };\n\n useEffect(() => {\n if (isMobil && openSideBar) {\n setOpenSideBar(false);\n }\n if (!isMobil && openSideBar === false) {\n setOpenSideBar(true);\n }\n // eslint-disable-next-line\n }, [isMobil]);\n\n return {\n props: {\n localLinks,\n externalLinks,\n openSideBar,\n isMobil,\n },\n methods: {\n setOpenSideBar,\n removeSpaces,\n },\n microcomponents: {\n ItemNavBar,\n },\n };\n};\n","import React from 'react';\nimport Typography from '@clipmx/clip-storybook/dist/components/Typography';\nimport Icons from '../Icons';\nimport clsx from 'clsx';\nimport DrawerClip from '@clipmx/clip-storybook/dist/components/Drawer';\nimport ClipLogo from '@clipmx/clip-storybook/dist/components/Illustrations/ClipLogo';\nimport './AppSidebar.css';\nimport { useAppSidebar } from './useAppSidebar';\n\nconst AppSideBar = () => {\n const {\n props: { externalLinks, localLinks, openSideBar, isMobil },\n methods: { setOpenSideBar, removeSpaces },\n microcomponents: { ItemNavBar },\n } = useAppSidebar();\n\n return (\n \n
\n \n setOpenSideBar(!openSideBar)}\n />\n
\n\n \n \n );\n};\n\nAppSideBar.defaultProps = {};\n\nAppSideBar.propTypes = {};\n\nexport default AppSideBar;\n","/* eslint prefer-destructuring: \"off\" */\n\nexport function requestState(method = 'get', resource = 'RESOURCE') {\n return `API_${method.toUpperCase()}_${resource}_REQUEST`;\n}\n\nexport function successResponse(method = 'get', resource = 'RESOURCE') {\n return `API_${method.toUpperCase()}_${resource}_SUCCESS`;\n}\n\nexport function errorResponse(method = 'get', resource = 'RESOURCE') {\n return `API_${method.toUpperCase()}_${resource}_ERROR`;\n}\n\nexport function createConstant(resource = 'RESOURCE', method = 'get', type = 'request') {\n let suffix = type.toLowerCase();\n let verb = method.toLowerCase();\n\n switch (suffix) {\n case 'request':\n suffix = 'REQUEST';\n break;\n case 'error':\n suffix = 'ERROR';\n break;\n case 'success':\n suffix = 'SUCCESS';\n break;\n default:\n suffix = 'REQUEST';\n }\n\n switch (verb) {\n case 'get':\n verb = 'GET';\n break;\n case 'post':\n verb = 'POST';\n break;\n case 'delete':\n verb = 'DELETE';\n break;\n case 'put':\n verb = 'PUT';\n break;\n case 'patch':\n verb = 'PATCH';\n break;\n default:\n verb = 'GET';\n }\n\n return `API_${verb}_${resource}_${suffix}`;\n}\n\nexport function createGetRequest(resource) {\n return createConstant(resource, 'get');\n}\n\nexport function createPostRequest(resource) {\n return createConstant(resource, 'post');\n}\n\nexport function createPutRequest(resource) {\n return createConstant(resource, 'put');\n}\n\nexport function createPatchRequest(resource) {\n return createConstant(resource, 'patch');\n}\n\nexport function createDeleteRequest(resource) {\n return createConstant(resource, 'delete');\n}\n\nexport function createResponse(actionInfo, response, type) {\n return {\n type: createConstant(actionInfo.resource, actionInfo.verb, type),\n payload: {\n code: response.status,\n data: response.data,\n },\n };\n}\n\nexport function createSuccessResponse(actionInfo, response) {\n return createResponse(actionInfo, response, 'success');\n}\n\nexport function createErrorResponse(actionInfo, response) {\n return createResponse(actionInfo, response, 'error');\n}\n\nexport function getActionTypeInfo(actionType) {\n const info = actionType.split('_');\n const invalidResponse = { correctActionType: false };\n const validResponse = {\n prefix: '',\n verb: '',\n suffix: '',\n resource: '',\n correctActionType: '',\n responseActionType: '',\n };\n if (info.length < 4) {\n return invalidResponse;\n }\n validResponse.prefix = info[0];\n validResponse.verb = info[1];\n validResponse.suffix = info[info.length - 1];\n validResponse.resource = info.slice(2, info.length - 1).join('_');\n validResponse.correctActionType = validResponse.prefix === 'API' && validResponse.suffix === 'REQUEST';\n validResponse.responseActionType = `API_${validResponse.verb}_${validResponse.resource}`;\n return validResponse;\n}\n\nexport function isObject(value) {\n return Object.prototype.toString.call(value) === '[object Object]';\n}\n\nexport function isFunction(functionToCheck) {\n const getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\nexport function isString(value) {\n return typeof value === 'string' || value instanceof String;\n}\n\nexport function isArray(value) {\n return value instanceof Array;\n}\nexport function assingIdValue(paramObj, idName, objName) {\n const obj = paramObj;\n if (obj[objName] === undefined || obj[objName] === null) {\n obj[idName] = null;\n delete obj[objName];\n return obj;\n }\n obj[idName] = obj[objName].id;\n delete obj[objName];\n return obj;\n}\n","import { validateMode } from '../../../common/modeUtils';\nimport { createDeleteRequest, createGetRequest, createPostRequest } from '../../../helpers/reduxUtils';\n\nexport const MERCHANT_INFO = 'MERCHANT_INFO';\nexport const MERCHANT_API_KEY = 'MERCHANT_API_KEY';\nexport const MERCHANT_CREATE_API_APPLICATION = 'MERCHANT_CREATE_API_APPLICATION';\nexport const MERCHANT_DELETE_API_KEY = 'MERCHANT_DELETE_API_KEY';\nexport const MERCHANT_VERIFIED_ACCOUNT = 'MERCHANT_VERIFIED_ACCOUNT';\n\nexport function getMerchantInfo() {\n const route = '/api/merchant/info';\n return {\n type: createGetRequest(MERCHANT_INFO),\n payload: {\n route,\n success: (res, store) => {\n const headers = res?.config?.headers;\n if (Boolean(headers)) {\n store.dispatch(merchantVerifiedAccount(headers));\n }\n },\n },\n };\n}\n\nexport function getMerchantApiKey(mode) {\n validateMode(mode);\n const route = '/apikey';\n return {\n type: createGetRequest(MERCHANT_API_KEY),\n payload: {\n route,\n apiEndPoint: 2,\n mode,\n },\n };\n}\n\nexport function createApiApplication(name, onSuccess = () => {}, onFailure = () => {}, mode) {\n validateMode(mode);\n const route = '/apikey';\n const data = {\n type: 'BASIC',\n name,\n };\n return {\n type: createPostRequest(MERCHANT_CREATE_API_APPLICATION),\n payload: {\n route,\n data,\n apiEndPoint: 2,\n success: onSuccess,\n failure: onFailure,\n mode,\n },\n };\n}\n\nexport function deleteApiApplication(apikeyId, onSuccess = () => {}, onFailure = () => {}, mode) {\n validateMode(mode);\n const route = `/apikey/${apikeyId}`;\n return {\n type: createDeleteRequest(MERCHANT_DELETE_API_KEY),\n payload: {\n route,\n apiEndPoint: 2,\n success: onSuccess,\n failure: onFailure,\n mode,\n },\n };\n}\n\nexport function merchantVerifiedAccount(headers) {\n const route = `https://api-gw.payclip.com/kyc/fraud-profile`;\n return {\n type: createGetRequest(MERCHANT_VERIFIED_ACCOUNT),\n payload: {\n route,\n fullRoute: true,\n headers: headers,\n },\n };\n}\n","import { createGetRequest, createPostRequest } from '../../../helpers/reduxUtils';\nimport { getMerchantInfo } from '../merchants';\nimport JwtAuthService from '../../../services/jwtService';\n\nimport cookieService from '../../../services/cookieService';\nimport { PRODUCTIVE_MODE, SANDBOX_MODE } from '../../../common/authorizationModeType';\n\nexport const LOGIN_WITH_TOKEN = 'LOGIN_WITH_TOKEN';\nexport const GET_SANDBOX_TOKEN = 'GET_SANDBOX_TOKEN';\nexport const LOGOUT = 'LOGOUT';\n\nexport function getSandboxTokenAndLoginUser() {\n return {\n type: createPostRequest(GET_SANDBOX_TOKEN),\n payload: {\n route: '/iam/sandbox/login',\n apiEndPoint: 2,\n success: (res, store) => {\n cookieService.saveToken(res?.data?.token, SANDBOX_MODE);\n store.dispatch(loginUserWithToken());\n },\n },\n };\n}\n\nexport function loginUserWithToken() {\n const route = '/api/merchant/user/info';\n return {\n type: createGetRequest(LOGIN_WITH_TOKEN),\n payload: {\n route,\n success: (res, store) => {\n store.dispatch(getMerchantInfo());\n },\n mode: PRODUCTIVE_MODE,\n },\n };\n}\n\nexport function exitApp() {\n return {\n type: LOGOUT,\n };\n}\n\nexport function logout() {\n JwtAuthService.logout();\n return dispatch => {\n setTimeout(() => {\n dispatch(exitApp());\n }, 500);\n };\n}\n","import { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { logout } from '../../../redux/actions/session';\nimport getConfigValue from '../../../config/enviromentVariables';\n\nexport const useAppHeader = () => {\n const merchantInfo = useSelector(state => state.session.merchantInfo);\n const nameMerchant = merchantInfo?.merchant?.name;\n const [showMenu, setShowMenu] = useState();\n\n const addShadow = () => {\n const navbar = document.getElementById(`navbar`);\n const exitsClass = navbar?.classList.contains(`shadow`);\n if (window.scrollY >= 15) {\n if (!exitsClass) {\n navbar?.classList.add(`shadow`);\n }\n } else {\n if (exitsClass) {\n navbar?.classList.remove(`shadow`);\n }\n }\n };\n\n useEffect(() => {\n window.addEventListener(`scroll`, addShadow);\n return () => {\n window.removeEventListener(`scroll`, addShadow);\n };\n }, []);\n\n return {\n props: {\n showMenu,\n nameMerchant,\n },\n methods: {\n setShowMenu,\n closeSession: () => {\n logout();\n setShowMenu(false);\n window.location.replace(`${getConfigValue('merchantDashboard')}/users/sign_in?loginFrom=developerPortal`);\n },\n getInitialsName: () => {\n return nameMerchant.trim().split(/\\s+/).length > 1\n ? `${nameMerchant.trim().split(/\\s+/)[0][0].toUpperCase()}${nameMerchant\n .trim()\n .split(/\\s+/)[1][0]\n .toUpperCase()}`\n : nameMerchant.trim().slice(0, 2).toUpperCase();\n },\n },\n };\n};\n","import React from 'react';\nimport './AppHeader.css';\nimport { useAppHeader } from './useAppHeader';\nimport ClipButton from '@clipmx/clip-storybook/dist/components/Button';\nimport clsx from 'clsx';\n\nconst AppHeader = () => {\n const {\n props: { showMenu, nameMerchant },\n methods: { setShowMenu, closeSession, getInitialsName },\n } = useAppHeader();\n return (\n \n );\n};\n\nexport default AppHeader;\n\nAppHeader.defaultProps = {};\nAppHeader.propTypes = {};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport AppSidebar from '../../common/AppSidebar';\nimport AppHeader from '../../common/AppHeader/AppHeader';\nimport './DashboardLayout.css';\n\nconst DashboardLayout = ({ children }) => {\n return (\n
\n \n
\n \n
{children}
\n
\n
\n );\n};\n\nDashboardLayout.defaultProps = {\n children: null,\n};\n\nDashboardLayout.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n};\n\nexport default DashboardLayout;\n","import clevertap from 'clevertap-web-sdk';\nimport getConfigValue from '../config/enviromentVariables';\n\nconst getFullEventName = eventName => {\n return `CX_DEV-DASHBOARD_${eventName}`;\n};\n\nexport const EVENTS = {\n API_KEYS: {\n APP_LIST_VIEWED: 'API-KEYS_APP-LIST_VIEWED',\n APP_LIST_CREATE_NEW_CLICKED: 'API-KEYS_APP-LIST_CREATE-NEW-CLICKED',\n CREATE_APP_DIALOG: 'API-KEYS_CREATE-APP-DIALOG_DISPLAYED',\n CREATE_APP_SAVE: 'API-KEYS_CREATE-APP-DIALOG_SAVE-CLICKED',\n CREATE_APP_SUCCEEDED: 'API-KEYS_CREATE-APP_SUCCEEDED',\n CREATE_APP_FAILED: 'API-KEYS_CREATE-APP_FAILED',\n APP_DETAIL_CLICKED: 'API-KEYS_APP-LIST_APP-DETAIL-CLICKED',\n APP_DETAIL_DELETE_CLICK: 'API-KEYS_APP-DETAIL_DELETE-CLICKED',\n DELETE_APP_DIALOG_DISPLAYED: 'API-KEYS_DELETE-APP-DIALOG_DISPLAYED',\n DELETE_APP_CONFIRMATION_CLICKED: 'API-KEYS_DELETE-APP-DIALOG_CONFIRMATION-CLICKED',\n DELETE_APP_FAILED: 'API-KEYS_DELETE-APP_FAILED',\n DELETE_APP_SUCCEEDED: 'API-KEYS_DELETE-APP_SUCCEEDED',\n },\n WEBHOOKS: {\n SETUP_VIEWED: 'WEBHOOKS_SETUP_VIEWED',\n SETUP_URL_SUCCEEDED: 'WEBHOOKS_SETUP-URL_SUCCEEDED',\n SETUP_URL_FAILED: 'WEBHOOKS_SETUP-URL_FAILED',\n DISABLE_SUCCEEDED: 'WEBHOOKS_DISABLE_SUCCEEDED',\n DISABLE_FAILED: 'WEBHOOKS_DISABLE_FAILED',\n ENABLE_SUCCEEDED: 'WEBHOOKS_ENABLE_SUCCEEDED',\n ENABLE_FAILED: 'WEBHOOKS_ENABLE_FAILED',\n TEST_NOTIFICATION_SENT: 'WEBHOOKS_TEST-NOTIFICATION_SENT',\n TEST_NOTIFICATION_FAILED: 'WEBHOOKS_TEST-NOTIFICATION_FAILED',\n },\n SDK: {\n SDK_IOS_DOWNLOAD_VIEWED: 'SDK_IOS-DOWNLOAD_VIEWED',\n SDK_IOS_DOWNLOAD_CLICKED: 'SDK_IOS-DOWNLOAD_CLICKED',\n SAMPLE_PROJECTS_VIEWED: 'SDK_SAMPLE-PROJECTS_VIEWED',\n SAMPLE_DOWNLOAD_CLICKED: 'SDK_SAMPLE-DOWNLOAD_CLICKED',\n },\n};\n\nexport const CleverTap = {\n initialize: function () {\n try {\n clevertap.privacy.push({ optOut: false });\n clevertap.privacy.push({ useIP: false });\n clevertap.spa = true;\n clevertap.init(getConfigValue('clevertapApiKey'));\n } catch (error) {\n console.log(error);\n }\n },\n\n event: function (name, payload) {\n if (process.env.NODE_ENV !== 'test') {\n try {\n if (payload) {\n clevertap.event.push(getFullEventName(name), payload);\n console.info('CLEVERTAP_EVENT', {\n name: getFullEventName(name),\n payload,\n });\n } else {\n clevertap.event.push(getFullEventName(name));\n console.info('CLEVERTAP_EVENT', {\n name: getFullEventName(name),\n });\n }\n } catch (error) {\n console.info('CLEVERTAP_EVENT', {\n name: getFullEventName(name),\n error: error,\n });\n }\n }\n },\n\n profile: function (userInfo) {\n clevertap.onUserLogin.push({\n Site: {\n Name: `${userInfo.first_name} ${userInfo.last_name} ${userInfo.second_last_name}`,\n Identity: userInfo?.email,\n Email: userInfo?.email,\n Phone: `+52${userInfo?.mobile}`,\n DOB: new Date(),\n },\n });\n },\n};\n\nexport default CleverTap;\n","export default __webpack_public_path__ + \"static/media/empty-credentials.dc45254c.svg\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport './Skeleton.css';\n\nconst Skeleton = ({ length, className, height, ...otherProps }) => {\n const styleProps = {\n ...(height && {\n height: height,\n }),\n };\n return (\n
\n {Array.from({ length }).map((_, index) => (\n
\n ))}\n
\n );\n};\n\nSkeleton.defaultProps = {\n className: '',\n length: 3,\n height: '',\n};\n\nSkeleton.propTypes = {\n className: PropTypes.string,\n length: PropTypes.number,\n height: PropTypes.string,\n};\n\nexport default Skeleton;\n","import { useContext, useEffect, useState } from 'react';\nimport { DialogContext } from '@clipmx/clip-storybook/dist/components/Dialog/dialogContext';\nimport { useHistory } from 'react-router-dom';\nimport { AlertContext } from '../../Alert';\nimport { initialize } from 'redux-form';\nimport { PRODUCTIVE_MODE, SANDBOX_MODE } from '../../../../common/authorizationModeType';\nimport CleverTap, { EVENTS } from '../../../../events';\n\nexport const useNewCredential = ({ typeCredential, createApiApplication, dispatch, apiKey }) => {\n const [inputNameCredential, setInputNameCredential] = useState({\n value: '',\n error: '',\n });\n const [sendRequest, setSendRequest] = useState(false);\n const { dialogActions } = useContext(DialogContext);\n const { openAlert } = useContext(AlertContext);\n const history = useHistory();\n\n /*\n * Validation rules for the credential name. Regular expressions are used that are validated sequentially\n * and if any condition does not meet, the error message is displayed. To add one more you have to consider\n * the order of where it is placed.\n */\n const RULES = {\n /* Validation rules for credential name. Regular expressions are used. */\n notEmpty: {\n regex: /^.{1}?/,\n error: 'Este campo es obligatorio.',\n },\n threerOrMore: {\n text: '3 caracteres o más',\n regex: /^.{3}?/,\n error: 'El nombre debe llevar 3 caracteres o más.',\n },\n noSpecialCharacters: {\n text: 'Sin caracteres especiales',\n regex: /^[a-zA-Z0-9\\u00E0-\\u00FC\\s]+$/,\n error: 'El nombre no puede llevar caracteres especiales.',\n },\n /**Validate that there are no spaces in the middle of the word */\n /*noSpaces: {\n text: 'Sin espacios',\n regex: /\\b^(?!.* )\\w+\\b/,\n error: 'El nombre no puede llevar espacios.',\n }, */\n upToOneHundredCharacters: {\n regex: /^[\\w\\u00E0-\\u00FC\\s]{3,100}$/,\n error: 'El nombre debe tener menos de 100 caracteres.',\n },\n };\n\n const EVALUATIONS = Object.keys(RULES).reduce((accumulator, currentValue) => {\n const _regex = RULES[currentValue].regex;\n return {\n ...accumulator,\n [currentValue]: _regex.test(inputNameCredential.value.trim()),\n };\n }, {});\n\n const getError = () => {\n let error = '';\n Object.keys(RULES).some(key => {\n if (EVALUATIONS[key] === false) {\n error = RULES[key].error;\n return true;\n }\n return false;\n });\n return error;\n };\n\n const submitData = ({ appName }) => {\n const mode = typeCredential === 'prod' ? PRODUCTIVE_MODE : SANDBOX_MODE;\n return new Promise(() => {\n return createApiApplication(\n appName,\n () => {\n CleverTap.event(EVENTS.API_KEYS.CREATE_APP_SUCCEEDED, { SOURCE: mode, appName: appName });\n setSendRequest(false);\n openAlert({ severity: 'success', message: `Creaste la credencial ${inputNameCredential.value}.` });\n dialogActions.closeDialog('ApplicationName');\n },\n () => {\n setSendRequest(false);\n openAlert({ severity: 'error', message: 'Hubo un error al crear la credencial. Intentalo más tarde.' });\n CleverTap.event(EVENTS.API_KEYS.CREATE_APP_FAILED, { SOURCE: mode, appName: appName });\n dialogActions.closeDialog('ApplicationName');\n },\n mode\n );\n });\n };\n\n useEffect(() => {\n dispatch(initialize('createApiKeyForm', { appName: '' }));\n }, [dispatch]);\n\n useEffect(() => {\n if (apiKey?.item) {\n const nameCredential = apiKey?.item?.name;\n const apiKeyCredential = apiKey?.item?.api_key;\n const apiSecretCredential = apiKey?.item?.api_secret;\n const createdAt = apiKey?.item?.created_at;\n history.push({\n pathname: `/credentials/${apiKeyCredential}`,\n state: { nameCredential, apiKeyCredential, apiSecretCredential, typeCredential, createdAt },\n });\n }\n // eslint-disable-next-line\n }, [apiKey]);\n\n return {\n props: {\n inputNameCredential,\n EVALUATIONS,\n RULES,\n sendRequest,\n isError:\n (inputNameCredential.error !== '' && inputNameCredential.value !== '') ||\n (inputNameCredential.error !== '' && inputNameCredential.value === ''),\n rulesKeysToRender: Object.keys(RULES).reduce((accumulator, currentValue) => {\n const text = RULES[currentValue]?.text;\n if (text) {\n return [...accumulator, currentValue];\n }\n return accumulator;\n }, []),\n },\n methods: {\n onChange: ({ target: { value } }) => {\n setInputNameCredential({\n value,\n error: '',\n });\n },\n onCloseDialog: () => {\n dialogActions.closeDialog('ApplicationName');\n },\n onClickCreate: async () => {\n const invalidText = Object.values(EVALUATIONS).some(evaluation => evaluation === false);\n if (invalidText) {\n setInputNameCredential({ ...inputNameCredential, error: getError() });\n } else {\n setSendRequest(true);\n submitData({ appName: inputNameCredential.value.trim() });\n }\n },\n },\n };\n};\n","import React from 'react';\nimport { ClipTypography } from '@clipmx/clip-storybook/dist/components/Typography/Typography';\nimport { TextField } from '@material-ui/core';\nimport { ClipButton } from '@clipmx/clip-storybook/dist/components/Button/Button';\nimport CircularProgress from '@clipmx/clip-storybook/dist/components/CircularProgress';\nimport { bindActionCreators } from 'redux';\nimport { reduxForm } from 'redux-form';\nimport { connect } from 'react-redux';\nimport { createApiApplication } from '../../../../redux/actions/merchants';\nimport './NewCredential.css';\nimport { useNewCredential } from './useNewCredential';\nimport clsx from 'clsx';\nimport Icons from '../../Icons';\n\nconst NewCredential = ({ typeCredential = 'prod', ...otherProps }) => {\n const {\n props: { inputNameCredential, EVALUATIONS, RULES, sendRequest, isError, rulesKeysToRender },\n methods: { onChange, onCloseDialog, onClickCreate },\n } = useNewCredential({ ...otherProps, typeCredential });\n return (\n
\n
\n \n Asigna un nombre único a tu nueva credencial de {typeCredential === 'prod' ? 'producción.' : 'pruebas.'}\n \n : null,\n }}\n inputProps={{\n 'data-testid': 'input-name-credential',\n }}\n FormHelperTextProps={{\n 'data-testid': isError ? 'error-message' : 'indication-message',\n }}\n />\n
    \n {rulesKeysToRender.map(key => {\n return (\n \n {RULES[key]?.text}\n \n );\n })}\n
\n
\n
\n \n Cancelar\n \n \n {sendRequest ? : 'Crear'}\n \n
\n
\n );\n};\n\nconst mapStateToProps = state => {\n const {\n session: { apiKey },\n } = state;\n return { apiKey };\n};\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({ createApiApplication }, dispatch);\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(\n reduxForm({\n form: 'createApiKeyForm', // a unique identifier for this form\n })(NewCredential)\n);\n","import React, { useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { CleverTap, EVENTS } from '../../../events';\nimport { DialogContext } from '@clipmx/clip-storybook/dist/components/Dialog/dialogContext';\nimport { ClipTypography } from '@clipmx/clip-storybook/dist/components/Typography/Typography';\nimport Icons from '../Icons';\nimport EmptyCredentialsImg from './../../../files/empty-credentials.svg';\nimport Skeleton from '../Skeleton/Skeleton';\nimport NewCredential from '../forms/NewCredential/NewCredential';\nimport { orderByDate, toDateLong } from '../../../helpers/dateHelpers';\nimport { ClipButton } from '@clipmx/clip-storybook/dist/components/Button/Button';\n\nexport const useCredentials = ({ credentials: { prodCredentials = null, testCredentials = null } }) => {\n const history = useHistory();\n\n const { dialogActions } = useContext(DialogContext);\n\n const typeCredential = {\n test: 'test',\n prod: 'prod',\n };\n\n const createCredential = (credential = typeCredential.prod) => {\n CleverTap.event(EVENTS.API_KEYS.APP_LIST_CREATE_NEW_CLICKED, { SOURCE: 'APP_LIST' });\n dialogActions.registerDialog('ApplicationName', {\n open: true,\n type: 'form',\n maxWidth: 'xl',\n title: 'Crear credencial',\n children: ,\n name: 'ApplicationName',\n });\n };\n\n const redirectToCredential = (\n nameCredential = '',\n apiKeyCredential = '',\n type = typeCredential.prod,\n createdAt = ''\n ) => {\n if (nameCredential !== '' && apiKeyCredential !== '') {\n CleverTap.event(EVENTS.API_KEYS.APP_DETAIL_CLICKED);\n history.push({\n pathname: `/credentials/${apiKeyCredential}`,\n state: { nameCredential, apiKeyCredential, typeCredential: type, createdAt },\n });\n }\n };\n\n const EmptyCredentials = ({ type = typeCredential.prod }) => (\n
\n \"Empty\n \n Aún no creas credenciales para pruebas.\n \n
\n );\n\n const RenderListByType = ({ credentials, type = typeCredential.prod }) => {\n if (credentials === null) {\n return ;\n }\n\n const items = credentials?.items ?? [];\n if (items.length === 0) {\n return ;\n }\n\n return (\n <>\n {Array.from(orderByDate([...items], 'created_at', 'des')).map((credential, index) => (\n redirectToCredential(credential.name, credential.api_key, type, credential.created_at)}\n >\n \n \n {credential.name}\n

{toDateLong(credential.created_at)}

\n
\n \n
\n ))}\n \n );\n };\n\n return {\n props: {\n typeCredential,\n lengthCredentialsProd: prodCredentials?.items?.length ?? 0,\n lengthCredentialsTest: testCredentials?.items?.length ?? 0,\n },\n microcomponents: {\n ProdCredentialsList: ,\n TestCredentialsList: ,\n CtaCreate: ({ type = typeCredential.prod }) => {\n const credentialsList = type === typeCredential.prod ? prodCredentials : testCredentials;\n\n if (credentialsList === null) return <>;\n\n const lengthList = credentialsList?.items?.length ?? 0;\n\n return (\n <>\n {lengthList < 6 ? (\n }\n onClick={() => createCredential(type)}\n data-testid={`cta-create-${type}`}\n >\n Crear credencial\n \n ) : (\n \n Has alcanzado el número máximo de credenciales permitidas\n \n )}\n \n );\n },\n },\n };\n};\n","import React from 'react';\nimport './Credentials.css';\nimport { ClipTypography } from '@clipmx/clip-storybook/dist/components/Typography/Typography';\nimport Icons from '../Icons';\nimport { useCredentials } from './useCredentials';\nimport PropTypes from 'prop-types';\nimport getConfigValue from '../../../config/enviromentVariables';\nimport clsx from 'clsx';\n\nconst Credentials = ({ credentials, verifiedAccount }) => {\n const {\n props: { typeCredential, lengthCredentialsProd, lengthCredentialsTest },\n microcomponents: { ProdCredentialsList, TestCredentialsList, CtaCreate },\n } = useCredentials({ credentials });\n return (\n
\n \n Credenciales\n \n \n Cada credencial proporciona un conjunto único de claves API y configuraciones para realizar solicitudes a las\n APIs de Clip.\n \n {verifiedAccount === false && (\n
\n \n

\n Importante: Asegúrate de verificar tu identidad como se indica{' '}\n \n aquí\n {' '}\n antes de usar los productos de Clip (APIs | SDKs | Plugins). De lo contrario, tus clientes podrían tener\n rechazos en los pagos, lo que afectará el proceso de pagos y la experiencia de compra.\n

\n
\n )}\n
\n
\n \n \n Producción\n \n {lengthCredentialsProd}/6\n \n \n
{ProdCredentialsList}
\n \n
\n
\n \n \n Pruebas\n \n {lengthCredentialsTest}/6\n \n \n\n
{TestCredentialsList}
\n \n Importante:{` `}\n Las credenciales de pruebas funcionan únicamente con el Checkout Transparente. Consulta la lista de APIs\n compatibles{' '}\n \n aquí\n \n .\n \n \n
\n
\n
\n );\n};\n\nCredentials.defaultProps = {\n credentials: {\n prodCredentials: null,\n testCredentials: null,\n },\n};\n\nCredentials.propTypes = {\n /**\n * The response from the server with\n * the merchant API keys information\n * This can be one of the two types\n * string for loading || object for the response\n */\n credentials: PropTypes.exact({\n prodCredentials: PropTypes.exact({\n items: PropTypes.array,\n messages: PropTypes.array,\n query: PropTypes.object,\n meta: PropTypes.object,\n }),\n testCredentials: PropTypes.exact({\n items: PropTypes.array,\n messages: PropTypes.array,\n query: PropTypes.object,\n meta: PropTypes.object,\n }),\n }),\n};\n\nexport default Credentials;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { getMerchantApiKey } from '../../redux/actions/merchants';\nimport Credentials from '../common/Credentials';\nimport './ApiCredentials.css';\nimport { PRODUCTIVE_MODE, SANDBOX_MODE } from '../../common/authorizationModeType';\nfunction ApiCredentialsComponent() {\n const dispatch = useDispatch();\n const session = useSelector(state => {\n return state?.session;\n });\n\n useEffect(() => {\n dispatch(getMerchantApiKey(PRODUCTIVE_MODE));\n dispatch(getMerchantApiKey(SANDBOX_MODE));\n }, [dispatch]);\n\n return (\n
\n \n
\n );\n}\n\nApiCredentialsComponent.defaultProps = {\n getMerchantApiKey: null,\n classes: null,\n merchantInfo: null,\n apiKey: null,\n};\n\nApiCredentialsComponent.propTypes = {\n getMerchantApiKey: PropTypes.func,\n classes: PropTypes.object,\n merchantInfo: PropTypes.object,\n apiKey: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default ApiCredentialsComponent;\n","const redTheme = theme => {\n const sidebarColor = '#fff';\n const sidebarBackground = '#fff';\n const sideBarWidth = 255;\n const sideBarCollapsedWidth = theme.spacing(7);\n return {\n width: sideBarWidth,\n widthCollapsed: sideBarCollapsedWidth,\n background: sidebarBackground,\n color: sidebarColor,\n sidebar: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n color: sidebarColor,\n background: sidebarBackground,\n },\n sidebarBackground: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 0,\n // backgroundImage: `url(${AppSidebarBg})`,\n backgroundImage: 'linear-gradient(to bottom, #fc4c02, #a8093c)',\n backgroundPosition: 'center',\n backgroundRepeat: 'repeat',\n backgroundSize: 'cover',\n },\n sidebarBody: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n overflowX: 'hidden',\n overflowY: 'auto',\n },\n sidebarHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n alignContent: 'center',\n whiteSpace: 'nowrap',\n padding: '0 8px',\n ...theme.mixins.toolbar,\n },\n sidebarSection: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'left',\n alignContent: 'center',\n whiteSpace: 'nowrap',\n padding: '0 16px',\n color: sidebarColor,\n ...theme.mixins.toolbar,\n },\n sectionTitle: {\n fontWeight: 400,\n },\n sidebarTitleLink: {\n textDecoration: 'none',\n color: 'inherit',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-around',\n alignContent: 'center',\n whiteSpace: 'nowrap',\n },\n logo: {\n color: theme.palette.secondary.main,\n zIndex: 10,\n },\n title: props => ({\n position: 'relative',\n overflow: 'visible',\n marginLeft: '5px',\n display: props.isCollapsed ? 'none' : 'block',\n fontSize: '1.1rem',\n letterSpacing: '.015em',\n // fontWeight: 'bold',\n }),\n name: {},\n tagline: {\n fontSize: 8,\n fontWeight: 'bold',\n position: 'absolute',\n top: '100%',\n marginTop: -5,\n background: theme.palette.primary.main,\n color: '#fff',\n borderRadius: 2,\n padding: '1px 3px',\n right: 0,\n },\n navList: {\n width: sideBarWidth,\n fontSize: '1.1em',\n fontWeight: 400,\n lineHeight: 1.5,\n letterSpacing: '0.00938em',\n },\n navListHeader: {\n textAlign: 'center',\n color: 'rgba(255,255,255,0.9)',\n },\n iconFeatures: {\n color: '#95de3c',\n },\n iconDocs: {\n color: '#f8cda9',\n },\n iconSupporters: {\n color: '#e3b546',\n },\n iconDiscuss: {\n color: '#ccc',\n },\n navItemWrapper: {\n position: 'relative',\n },\n navItemWrapperActive: {\n // background: 'rgba(0, 0, 0, 0.08)',\n },\n navItemWrapperActiveCollapsed: {\n background: 'rgba(0, 0, 0, 0.08)',\n },\n navItem: {\n position: 'relative',\n transition: 'background .23s ease',\n '&.active:not(.open)': {\n color: theme.palette.secondary.main,\n backgroundColor: 'white',\n // background: 'rgba(0, 0, 0, 0.08)',\n '& .MuiListItemIcon-root': {\n // color: '#fff',\n color: theme.palette.secondary.main,\n },\n },\n '&.open': {\n color: '#fff',\n '& .MuiListItemIcon-root': {\n color: '#fff',\n },\n },\n },\n navItemPoper: {\n width: sideBarWidth,\n color: 'rgba(0, 0, 0, 0.87)',\n background: sidebarBackground,\n },\n navItemChildren: {\n transition: 'background .23s ease',\n // position: 'absolute',\n },\n navItemChildrenActive: {\n background: 'rgba(0, 0, 0, 0.1)',\n },\n navItemCollapsed: {\n whiteSpace: 'nowrap',\n flexWrap: 'nowrap',\n width: sideBarCollapsedWidth,\n '& $iconToggle': {\n position: 'absolute',\n // bottom: -1,\n fontSize: 14,\n top: '50%',\n marginTop: '-0.5em',\n transform: 'rotate(90deg)',\n right: '3px',\n },\n '&.active': {\n background: 'rgba(0, 0, 0, 0.08)',\n },\n },\n navItemIcon: {\n minWidth: 40,\n color: 'white',\n },\n navItemIconCollapsed: {\n minWidth: 40,\n color: 'rgba(0, 0, 0, 0.87)',\n },\n iconToggle: {\n fontSize: '100',\n },\n iconToggleInactive: {\n opacity: 1,\n },\n iconSpacer: {\n fontSize: 13,\n marginLeft: 6,\n },\n navItemCollapsedWrapper: {\n width: sideBarCollapsedWidth,\n },\n menuDivider: {\n backgroundColor: 'rgba(255,255,255,0.2)',\n },\n logoSvg: props => ({\n display: 'inline-block',\n verticalAlign: 'text-bottom',\n width: props.size,\n height: props.size,\n }),\n path: {\n transition: 'all .3s ease',\n },\n outline: {\n fill: 'white',\n },\n letter: {\n fill: 'red',\n },\n backZone: {},\n };\n};\n\nexport default redTheme;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@clipmx/clip-storybook/dist/components/Button';\nimport { MenuOpenTwoTone as MenuOpenTwoToneIcon } from '@clipmx/clip-storybook/dist/components/Icons';\nimport { SwapHorizTwoTone as SwapHorizTwoToneIcon } from '@clipmx/clip-storybook/dist/components/Icons';\nimport redClipTheme from '../../themes/sideBar/redClip';\n\nconst AppConfiguration = props => {\n const { changeTheme, changeHeaderType, changeIconSettings } = props;\n return (\n
\n
\n }\n onClick={() => changeTheme('sidebar', redClipTheme)}\n >\n Cambiar Tema Sidebar\n \n }\n onClick={() => changeIconSettings()}\n >\n Cambiar modo iconos de Sidebar\n \n }\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => changeHeaderType()}\n >\n Cambiar El tipo de Header\n \n
\n
\n );\n};\nAppConfiguration.defaultProps = {\n changeTheme: () => true,\n changeHeaderType: () => true,\n changeIconSettings: () => true,\n};\n\nAppConfiguration.propTypes = {\n changeTheme: PropTypes.func,\n changeHeaderType: PropTypes.func,\n changeIconSettings: PropTypes.func,\n};\n\nexport default AppConfiguration;\n","import React from 'react';\nimport { ClipInput } from '@clipmx/clip-storybook/dist/components/Input';\n\nconst InputLabeled = props => {\n const {\n input,\n id,\n inputProps,\n label,\n type,\n helperText,\n meta: { touched, error },\n enableTip,\n className,\n ...rest\n } = props;\n return (\n \n );\n};\n\nexport default InputLabeled;\n","const URL_REGEX = new RegExp(\n '^(https?:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$',\n 'i'\n);\n\nexport const isURL = webhookUrl => {\n return !URL_REGEX.test(webhookUrl);\n};\n","import { createGetRequest, createPostRequest, createPutRequest } from '../../../helpers/reduxUtils';\n\nexport const POSTBACK_GET_INFO = 'POSTBACK_GET_INFO';\nexport const POSTBACK_UPDATE_WEBHOOK = 'POSTBACK_UPDATE_WEBHOOK';\nexport const POSTBACK_UPDATE_NOTIFICATION_STATUS = 'POSTBACK_UPDATE_NOTIFICATION_STATUS';\nexport const POSTBACK_TEST_WEBHOOK_HEALTH = 'POSTBACK_TEST_WEBHOOK_HEALTH';\n\nexport const getPostbackInfo = () => {\n const route = '/api/merchant/settings';\n return {\n type: createGetRequest(POSTBACK_GET_INFO),\n payload: {\n route,\n },\n };\n};\n\nexport const updatePostbackWebHook = (endpoint, onSuccess, onFailure) => {\n const route = '/api/merchant/notification/postback/edit';\n const data = {\n endpoint: endpoint,\n };\n return {\n type: createPostRequest(POSTBACK_UPDATE_WEBHOOK),\n payload: {\n route,\n data,\n apiEndPoint: 1,\n success: onSuccess,\n failure: onFailure,\n },\n };\n};\n\nexport const updatePostbackNotificationsStatus = (onSuccess, onFailure) => {\n const route = '/api/merchant/notification/payment-postback-toggle';\n return {\n type: createPutRequest(POSTBACK_UPDATE_NOTIFICATION_STATUS),\n payload: {\n route,\n data: {},\n apiEndPoint: 1,\n success: onSuccess,\n failure: onFailure,\n },\n };\n};\n\nexport const testPostbackWebHook = (onSuccess, onFailure) => {\n const route = '/api/merchant/notification/postback-endpoint-health';\n return {\n type: createGetRequest(POSTBACK_TEST_WEBHOOK_HEALTH),\n payload: {\n route,\n data: {},\n apiEndPoint: 1,\n success: onSuccess,\n failure: onFailure,\n },\n };\n};\n","import makeStyles from '@clipmx/clip-storybook/dist/theme/clipMakeStyles';\n\nconst useStyles = makeStyles(() => ({\n formContainer: {\n '& span': {\n marginTop: '-10px',\n },\n '& div > label': {\n paddingTop: '10px',\n },\n },\n inputContainer: {\n margin: '12px 0',\n '& input': {\n padding: '12px 4px',\n },\n },\n actions: {\n display: 'flex',\n flexDirection: 'row-reverse',\n },\n edit: {\n cursor: 'pointer',\n },\n}));\n\nexport default useStyles;\n","import React, { memo, useState, useContext } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Form, Field } from 'react-final-form';\n\nimport Grid from '@clipmx/clip-storybook/dist/components/Grid';\nimport ClipButton from '@clipmx/clip-storybook/dist/components/Button';\nimport { CreateOutlined as CreateIcon } from '@clipmx/clip-storybook/dist/components/Icons';\n\nimport InputLabeled from '../../formFields/InputLabeled';\nimport { AlertContext } from '../../Alert';\n\nimport { isURL } from './webhookUtils';\nimport { updatePostbackWebHook } from '../../../../redux/actions/webhooks';\nimport useStyles from './useStyles';\n\nimport { EVENTS, CleverTap } from '../../../../events';\n\nconst WebHookForm = memo(() => {\n const { openAlert } = useContext(AlertContext);\n const dispatch = useDispatch();\n const webhookUrl = useSelector(state => state?.webhooks?.destination);\n let endpoint;\n\n const isDisabled = () => !!webhookUrl;\n\n const [disabled, setDisabled] = useState(!!isDisabled());\n\n const onSubmit = values => {\n endpoint = values?.endpoint;\n dispatch(updatePostbackWebHook(endpoint, onSuccess, onFailure));\n };\n\n const onSuccess = () => {\n setDisabled(true);\n openAlert({ severity: 'success', message: 'Tus ajustes se han guardado con éxito.' });\n CleverTap.event(EVENTS.WEBHOOKS.SETUP_URL_SUCCEEDED, {\n URL: endpoint,\n });\n };\n\n const onFailure = () => {\n openAlert({ severity: 'error', message: 'Se produjo un error. Intenta de nuevo.' });\n CleverTap.event(EVENTS.WEBHOOKS.SETUP_URL_FAILED);\n };\n\n const validateURL = value => {\n return isURL(value) && 'Introduce una URL válida';\n };\n\n const onClickEdit = () => {\n setDisabled(!disabled);\n };\n\n const classes = useStyles();\n\n return (\n (\n
\n \n \n }\n />\n \n \n \n Guardar\n \n \n \n
\n )}\n />\n );\n});\n\nexport default WebHookForm;\n","import makeStyles from '@clipmx/clip-storybook/dist/theme/clipMakeStyles';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n maxWidth: '700px',\n borderRadius: 6,\n boxShadow: '0 0 8px 0 rgba(128, 139, 145, 0.27)',\n },\n title: {\n fontWeight: '600',\n },\n toggleContainer: {\n display: 'flex',\n marginTop: '16px',\n alignItems: 'center',\n },\n toggleDescription: {\n fontWeight: 'bold',\n },\n webHookTestContainer: {\n marginTop: '24px',\n paddingTop: '16px',\n borderTop: `1px solid ${theme.palette.grey[300]}`,\n },\n webHookTestAction: {\n marginTop: '8px',\n },\n webhookLink: {\n color: theme.palette.celurean.base,\n textDecoration: 'none',\n fontWeight: '500',\n },\n}));\n\nexport default useStyles;\n","import React, { memo, useContext } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\n\nimport Typography from '@clipmx/clip-storybook/dist/components/Typography';\nimport ClipSwitch from '@clipmx/clip-storybook/dist/components/Switch';\n\nimport { updatePostbackNotificationsStatus } from '../../../../redux/actions/webhooks';\nimport { AlertContext } from '../../Alert';\n\nimport useStyles from '../useStyles';\nimport { EVENTS, CleverTap } from '../../../../events';\n\nconst WebHookToggle = memo(() => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const toggleStatus = useSelector(state => state?.webhooks?.enabled);\n const { openAlert } = useContext(AlertContext);\n const { ENABLE_SUCCEEDED, ENABLE_FAILED, DISABLE_SUCCEEDED, DISABLE_FAILED } = EVENTS.WEBHOOKS;\n\n const handleStatus = () => {\n dispatch(\n updatePostbackNotificationsStatus(\n () => {\n CleverTap.event(!!toggleStatus ? DISABLE_SUCCEEDED : ENABLE_SUCCEEDED);\n openAlert({ severity: 'success', message: `${getSuccessMessage()}` });\n },\n () => {\n CleverTap.event(!!toggleStatus ? DISABLE_FAILED : ENABLE_FAILED);\n openAlert({ severity: 'error', message: 'Se produjo un error. Intenta de nuevo.' });\n }\n )\n );\n };\n\n const getSuccessMessage = () => {\n return `Las notificaciones se han ${!!toggleStatus ? 'desabilitado' : 'habilitado'} exitosamente`;\n };\n\n return (\n
\n \n Activar recepción de notificaciones\n \n \n
\n );\n});\n\nexport default WebHookToggle;\n","import React, { memo, useContext } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport Typography from '@clipmx/clip-storybook/dist/components/Typography';\nimport Grid from '@clipmx/clip-storybook/dist/components/Grid';\nimport ClipButton from '@clipmx/clip-storybook/dist/components/Button';\n\nimport { testPostbackWebHook } from '../../../../redux/actions/webhooks';\nimport { AlertContext } from '../../Alert';\n\nimport getConfigValue from '../../../../config/enviromentVariables';\n\nimport useStyles from '../useStyles';\nimport { EVENTS, CleverTap } from '../../../../events';\n\nconst WebHookTest = memo(() => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const { openAlert } = useContext(AlertContext);\n\n const handleClick = () => {\n dispatch(\n testPostbackWebHook(\n () => {\n CleverTap.event(EVENTS.WEBHOOKS.TEST_NOTIFICATION_SENT);\n openAlert({ severity: 'success', message: `La notificación de prueba se ha enviado exitosamente` });\n },\n () => {\n CleverTap.event(EVENTS.WEBHOOKS.TEST_NOTIFICATION_FAILED);\n openAlert({\n severity: 'error',\n message: 'Hubo un error al enviar la notificación de prueba. Comprueba tu URL y vuelve a intentarlo',\n });\n }\n )\n );\n };\n\n return (\n
\n \n \n \n Notificación de prueba\n \n \n \n \n {`Envía una notificación de prueba a tu endpoint, el contenido de la respuestas\n se envía en formato JSON. Puedes saber más sobre los casos de notificación en la `}\n \n referencia técnica de Postback webhooks\n \n \n \n \n \n \n Enviar notificación\n \n \n
\n );\n});\n\nexport default WebHookTest;\n","import React, { memo, useEffect } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport CardHeader from '@clipmx/clip-storybook/dist/components/Card/CardHeader';\nimport CardContent from '@clipmx/clip-storybook/dist/components/Card/CardContent';\n\nimport Card from '@clipmx/clip-storybook/dist/components/Card';\nimport Typography from '@clipmx/clip-storybook/dist/components/Typography';\n\nimport WebHookForm from '../forms/WebhookForm';\nimport WebHookToggle from './WebHookToggle';\nimport WebHookTest from './WebHookTest';\n\nimport useStyles from './useStyles';\nimport { EVENTS, CleverTap } from '../../../events';\n\nconst WebHookCard = memo(() => {\n const notificationStatus = useSelector(state => state?.webhooks?.enabled);\n const webHookUrl = useSelector(state => state?.webhooks?.destination);\n\n const showWebHookTest = !!notificationStatus && !!webHookUrl;\n const showWebHookToggle = !!webHookUrl;\n\n const classes = useStyles();\n\n useEffect(() => {\n const { WEBHOOKS } = EVENTS;\n CleverTap.event(WEBHOOKS.SETUP_VIEWED, {\n IS_ENABLED: showWebHookTest && showWebHookToggle,\n });\n }, [showWebHookTest, showWebHookToggle]);\n\n return (\n \n \n Configuración de las notificaciones de pago por postback\n \n }\n >\n \n \n Ingresa la URL del endpoint que recibirá las notificaciones.\n \n \n {showWebHookToggle && }\n {showWebHookTest && }\n \n \n );\n});\n\nexport default WebHookCard;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport makeStyles from '@clipmx/clip-storybook/dist/theme/clipMakeStyles';\n\nimport Grid from '@clipmx/clip-storybook/dist/components/Grid';\nimport Typography from '@clipmx/clip-storybook/dist/components/Typography';\nimport CircularProgress from '@clipmx/clip-storybook/dist/components/CircularProgress';\n\nimport WebHookCard from '../../common/WebHookCard';\n\nimport { getPostbackInfo } from '../../../redux/actions/webhooks';\n\nconst useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n },\n container: {\n flex: 1,\n margin: 24,\n padding: '0 4px',\n },\n header: {\n fontSize: 24,\n fontWeight: 600,\n marginBottom: 24,\n },\n}));\n\n/**\n * View for the /webhook route\n * @name WebHooks\n */\nconst WebHooks = () => {\n const dispatch = useDispatch();\n const loading = useSelector(state => state?.webhooks?.loading);\n const classes = useStyles();\n\n useEffect(() => {\n dispatch(getPostbackInfo());\n }, [dispatch]);\n\n return (\n
\n \n Postback Webhooks\n \n \n \n {loading ? : }\n \n \n
\n );\n};\n\nWebHooks.propTypes = {\n classes: PropTypes.object,\n};\n\nexport default WebHooks;\n","import { useContext, useState } from 'react';\nimport { DialogContext } from '@clipmx/clip-storybook/dist/components/Dialog/dialogContext';\nimport { CleverTap, EVENTS } from '../../../events';\nimport { AlertContext } from '../Alert';\nimport Icons from '../Icons';\nimport { ClipTypography } from '@clipmx/clip-storybook/dist/components/Typography/Typography';\nimport { ClipButton } from '@clipmx/clip-storybook/dist/components/Button/Button';\nimport { useHistory } from 'react-router-dom';\nimport { CircularProgress } from '@material-ui/core';\nimport { PRODUCTIVE_MODE, SANDBOX_MODE } from '../../../common/authorizationModeType';\n\nexport const useDetailCredential = ({\n apiSecretCredential,\n apiKeyCredential,\n deleteApiKey,\n nameCredential,\n typeCredential,\n}) => {\n const { dialogActions } = useContext(DialogContext);\n const history = useHistory();\n const [isShowKeySecret, setIsShowKeySecret] = useState(false);\n\n const { openAlert } = useContext(AlertContext);\n\n const copyClipboard = (type, data) => {\n try {\n navigator.clipboard.writeText(data);\n openAlert({ severity: 'success', message: `Copiaste la clave ${type === 'apiKey' ? 'API' : 'secreta'}.` });\n } catch (error) {\n openAlert({ severity: 'error', message: 'Hubo un error al copiar la clave. Por favor inténtalo de nuevo.' });\n }\n };\n\n const processResultRemoveCredential = (isSuccessProcess = true, callbackCloseModal = () => {}) => {\n CleverTap.event(EVENTS.API_KEYS.DELETE_APP_SUCCEEDED);\n dialogActions.closeDialog('DeleteApiKeyForm');\n openAlert({\n severity: isSuccessProcess ? 'success' : 'error',\n message: isSuccessProcess\n ? `Eliminaste la credencial ${nameCredential}.`\n : 'Hubo un error al eliminar la credencial. Intentalo más tarde',\n });\n if (isSuccessProcess) {\n history.push('/credentials');\n }\n callbackCloseModal();\n };\n\n const ConfirmModal = () => {\n const [isProcessDelete, setIsProcessDelete] = useState(false);\n const mode = typeCredential === 'prod' ? PRODUCTIVE_MODE : SANDBOX_MODE;\n return (\n
\n \n {`¿Deseas eliminar la credencial ${nameCredential}?`}\n \n
\n dialogActions.closeDialog('DeleteApiKeyForm')}\n data-testid=\"button-return-modal-delete-credential\"\n >\n Regresar\n \n {\n setIsProcessDelete(true);\n await deleteApiKey(\n apiKeyCredential,\n () => processResultRemoveCredential(true, setIsProcessDelete),\n () => processResultRemoveCredential(false, setIsProcessDelete),\n mode\n );\n }}\n >\n {isProcessDelete ? (\n \n ) : (\n 'Eliminar'\n )}\n \n
\n
\n );\n };\n\n return {\n props: {\n isShowKeySecret,\n },\n methods: {\n showKeySecret: () => {\n setIsShowKeySecret(!isShowKeySecret);\n },\n deleteCredential: () => {\n CleverTap.event(EVENTS.API_KEYS.APP_DETAIL_DELETE_CLICK);\n dialogActions.registerDialog('DeleteApiKeyForm', {\n open: true,\n type: 'form',\n minWidth: 'xl',\n title: 'Eliminar credencial',\n children: ,\n name: 'DeleteApiKeyForm',\n });\n },\n },\n microcomponents: {\n Legend: (\n

\n {apiSecretCredential !== '' ? (\n <>\n Recuerda usar las credenciales correctas dependiendo del ambiente en el que estés trabajando. Si olvidas\n tu clave secreta, debes crear una credencial nueva.\n \n ) : (\n <>\n Por seguridad tu clave secreta ya no esta disponible. Si la olvidas o extravias, deberas crear una\n credencial nueva.\n \n )}\n

\n ),\n IconCopy: ({ type, data }) => (\n
\n copyClipboard(type, data)} />\n
\n ),\n },\n };\n};\n","/* eslint max-len: 0 */\nimport React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { ClipTypography } from '@clipmx/clip-storybook/dist/components/Typography/Typography';\nimport { Checkbox, FormControlLabel, TextField } from '@material-ui/core';\nimport Icons from '../Icons';\nimport { useDetailCredential } from './useDetailCredential';\nimport './DetailCredential.css';\nimport { toDateLong } from '../../../helpers/dateHelpers';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { deleteApiApplication } from '../../../redux/actions/merchants';\n\nconst DetailCredential = ({\n className,\n apiKeyCredential = '',\n apiSecretCredential = '',\n nameCredential = '',\n createdAt = '',\n typeCredential = 'prod' /* or test */,\n deleteApiApplication: deleteApiKey,\n}) => {\n const {\n props: { isShowKeySecret },\n methods: { showKeySecret, deleteCredential },\n microcomponents: { Legend, IconCopy },\n } = useDetailCredential({ apiSecretCredential, apiKeyCredential, deleteApiKey, nameCredential, typeCredential });\n return (\n \n \n {nameCredential}\n {typeCredential && (\n \n {typeCredential === 'prod' ? 'Producción' : 'Pruebas'}\n \n )}\n \n \n {createdAt && (\n \n Creada el {toDateLong(createdAt)}\n \n )}\n
\n ,\n }}\n inputProps={{\n 'data-testid': 'input-key-credential',\n }}\n />\n {apiSecretCredential && (\n <>\n ,\n }}\n inputProps={{\n 'data-testid': 'input-secret-credential',\n style: {\n fontSize: isShowKeySecret ? '16px' : '30px',\n maxHeight: isShowKeySecret ? 'auto' : '19px',\n },\n }}\n />\n \n }\n label=\"Mostrar clave secreta\"\n />\n \n )}\n
\n
\n \n {Legend}\n
\n \n );\n};\n\nDetailCredential.defaultProps = {\n className: '',\n};\n\nDetailCredential.propTypes = {\n className: PropTypes.string,\n};\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({ deleteApiApplication }, dispatch);\n}\n\nexport default connect(null, mapDispatchToProps)(DetailCredential);\n","import useMediaQuery from '@clipmx/clip-storybook/dist/hooks/useMediaQuery';\nimport useTheme from '@clipmx/clip-storybook/dist/hooks/useTheme';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { DialogContext } from '@clipmx/clip-storybook/dist/components/Dialog/dialogContext';\nimport { useContext } from 'react';\nimport { ClipTypography } from '@clipmx/clip-storybook/dist/components/Typography/Typography';\nimport { ClipButton } from '@clipmx/clip-storybook/dist/components/Button/Button';\n\nexport const useDetailCredentialView = () => {\n const history = useHistory();\n const theme = useTheme();\n const { state = {} } = useLocation();\n const { nameCredential, apiKeyCredential, apiSecretCredential, typeCredential, createdAt } = state;\n const { dialogActions } = useContext(DialogContext);\n\n const isMobil = useMediaQuery(theme.breakpoints.down('xs'));\n\n const CloseModalReturn = () => dialogActions.closeDialog('BackToCredentialsList');\n const ReturToList = () =>\n history.push({\n pathname: `/credentials`,\n });\n\n return {\n props: {\n isMobil,\n nameCredential,\n apiKeyCredential,\n apiSecretCredential,\n createdAt,\n typeCredential,\n },\n methods: {\n BackToList: (isReturnShowSecretKey = false) => {\n if (isReturnShowSecretKey === false) {\n ReturToList();\n return;\n }\n\n dialogActions.registerDialog('BackToCredentialsList', {\n open: true,\n type: 'form',\n maxWidth: 'xl',\n title: '¿Quieres salir?',\n children: (\n
\n \n Una vez que lo hagas, esta clave secreta ya no estará disponible. Asegúrate de guardarla en un lugar\n seguro.\n \n
\n \n Cancelar\n \n {\n CloseModalReturn();\n ReturToList();\n }}\n >\n Salir\n \n
\n
\n ),\n name: 'BackToCredentialsList',\n });\n },\n },\n };\n};\n","/* eslint max-len: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport DetailCredential from '../../common/DetailCredential';\nimport { ClipButton } from '@clipmx/clip-storybook/dist/components/Button/Button';\nimport Icons from '../../common/Icons';\nimport './DetailCredentialView.css';\nimport { useDetailCredentialView } from './useDetailCredentialView';\n\nconst DetailCredentialView = () => {\n const {\n props: { isMobil, apiKeyCredential, apiSecretCredential = '', nameCredential, createdAt, typeCredential },\n methods: { BackToList },\n } = useDetailCredentialView();\n return (\n
\n }\n onClick={() => BackToList(apiSecretCredential !== '')}\n data-testid=\"cta-back\"\n >\n {!isMobil && 'Regresar'}\n \n
\n \n
\n
\n );\n};\n\nDetailCredentialView.defaultProps = {\n className: '',\n};\n\nDetailCredentialView.propTypes = {\n className: PropTypes.string,\n};\n\nexport default DetailCredentialView;\n","import React from 'react';\nimport { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom';\n\nimport RouteWithLayout from './RouteWithLayout';\n\nimport DashboardLayout from '../components/layouts/DashboardLayout';\nimport ApiCredentials from '../components/views/ApiCredentials';\nimport AppConfiguration from '../components/views/AppConfiguration';\nimport WebHooks from '../components/views/WebHooks';\nimport DetailCredentialView from '../components/views/DetailCredentialView';\n\nexport const AppRouterComponent = BrowserRouter;\n\nconst Router = props => {\n return (\n
\n \n \n \n \n \n \n \n \n {/* \n \n */}\n \n \n
\n );\n};\nexport default Router;\n","/* eslint no-param-reassign: \"off\" */\n/* eslint consistent-return: \"off\" */\nimport produce from 'immer';\nimport { GET_SANDBOX_TOKEN, LOGIN_WITH_TOKEN, LOGOUT } from '../../actions/session';\nimport {\n MERCHANT_INFO,\n MERCHANT_API_KEY,\n MERCHANT_CREATE_API_APPLICATION,\n MERCHANT_DELETE_API_KEY,\n MERCHANT_VERIFIED_ACCOUNT,\n} from '../../actions/merchants';\nimport { successResponse, errorResponse, requestState } from '../../../helpers/reduxUtils';\nimport { SANDBOX_MODE } from '../../../common/authorizationModeType';\n\nexport const PENDING = 1;\nexport const NO_AUTHENTICATED = 2;\nexport const IS_AUTHENTICATED = 3;\n\nexport const ADMIN = 'ADMIN';\n\nexport const initialState = {\n userInfo: null,\n merchantInfo: null,\n apiKey: null,\n apiKeySandBox: null,\n tokenSandbox: null,\n status: PENDING,\n isVerifiedAccount: null,\n};\n\nconst session = (state = initialState, action = {}) =>\n produce(state, draft => {\n const { type, payload } = action;\n switch (type) {\n case successResponse('get', LOGIN_WITH_TOKEN): {\n draft.userInfo = payload.data;\n break;\n }\n case successResponse('get', MERCHANT_INFO): {\n draft.merchantInfo = payload.data;\n draft.status = IS_AUTHENTICATED;\n break;\n }\n case requestState('get', MERCHANT_API_KEY): {\n draft.apiKey = null;\n draft.apiKeySandBox = null;\n break;\n }\n case successResponse('post', GET_SANDBOX_TOKEN): {\n draft.tokenSandbox = payload?.data?.token;\n break;\n }\n case errorResponse('post', GET_SANDBOX_TOKEN): {\n draft.status = NO_AUTHENTICATED;\n break;\n }\n case requestState('post', MERCHANT_CREATE_API_APPLICATION): {\n break;\n }\n case successResponse('post', MERCHANT_CREATE_API_APPLICATION): {\n draft.apiKey = payload.data;\n break;\n }\n case successResponse('get', MERCHANT_API_KEY): {\n if (payload?.data?.query?.mode === SANDBOX_MODE) {\n draft.apiKeySandBox = payload.data;\n } else {\n draft.apiKey = payload.data;\n }\n break;\n }\n case errorResponse('post', MERCHANT_CREATE_API_APPLICATION):\n break;\n case errorResponse('get', MERCHANT_API_KEY): {\n draft.apiKey = null;\n draft.apiKeySandBox = null;\n break;\n }\n case successResponse('delete', MERCHANT_DELETE_API_KEY): {\n break;\n }\n case requestState('delete', MERCHANT_DELETE_API_KEY): {\n break;\n }\n case errorResponse('delete', MERCHANT_DELETE_API_KEY): {\n break;\n }\n case LOGOUT:\n case errorResponse('get', MERCHANT_INFO):\n case errorResponse('get', LOGIN_WITH_TOKEN): {\n draft.status = NO_AUTHENTICATED;\n draft.userInfo = initialState.userInfo;\n draft.merchantInfo = initialState.merchantInfo;\n draft.tokenSandbox = initialState.tokenSandbox;\n break;\n }\n case successResponse('get', MERCHANT_VERIFIED_ACCOUNT): {\n if (payload?.data?.KYC === 'KYC_ACCEPTED') {\n draft.isVerifiedAccount = true;\n } else {\n draft.isVerifiedAccount = false;\n }\n break;\n }\n case errorResponse('get', MERCHANT_VERIFIED_ACCOUNT): {\n draft.isVerifiedAccount = false;\n break;\n }\n default:\n break;\n }\n });\n\nexport default session;\n","import produce from 'immer';\n\nimport { successResponse, requestState } from '../../../helpers/reduxUtils';\nimport {\n POSTBACK_GET_INFO,\n POSTBACK_UPDATE_WEBHOOK,\n POSTBACK_UPDATE_NOTIFICATION_STATUS,\n} from '../../actions/webhooks';\n\nexport const initialState = {\n loading: null,\n destination: null,\n enabled: null,\n};\n\nconst webhooksReducer = (state = initialState, action = {}) =>\n produce(state, draft => {\n const { type, payload } = action;\n switch (type) {\n case requestState('get', POSTBACK_GET_INFO): {\n draft.loading = true;\n break;\n }\n case successResponse('get', POSTBACK_GET_INFO): {\n draft.loading = null;\n draft.destination = payload.data?.notification_postback?.destination;\n draft.enabled = payload.data?.notification_postback?.enabled;\n break;\n }\n case successResponse('post', POSTBACK_UPDATE_WEBHOOK): {\n if (isEmpty(payload.data)) {\n draft.destination = true;\n draft.enabled = true;\n break;\n }\n draft.destination = payload.data?.notification?.postback?.destination;\n draft.enabled = payload.data?.notification?.postback?.enabled;\n break;\n }\n case successResponse('put', POSTBACK_UPDATE_NOTIFICATION_STATUS): {\n draft.destination = payload.data.endpoint;\n draft.enabled = payload.data.enabled;\n break;\n }\n default:\n break;\n }\n });\n\nconst isEmpty = obj => {\n return Object.keys(obj).length === 0;\n};\n\nexport default webhooksReducer;\n","import { combineReducers } from 'redux';\nimport { reducer as reduxFormReducer } from 'redux-form';\nimport session from './session';\nimport webhooks from './webhooks';\n\nexport default combineReducers({\n session,\n webhooks,\n form: reduxFormReducer,\n});\n","import { apiSendData, POST, PUT, PATCH, DELETE, GET } from '../../helpers/request';\nimport { getActionTypeInfo, createSuccessResponse, createErrorResponse, isFunction } from '../../helpers/reduxUtils';\nimport { PRODUCTIVE_MODE } from '../../common/authorizationModeType';\n\nfunction processMiddleware(action, store, actionInfo) {\n const {\n payload: {\n route,\n query,\n data,\n success: successAction,\n failure: failureAction,\n apiEndPoint,\n fullRoute,\n mode = PRODUCTIVE_MODE,\n headers = {},\n },\n } = action;\n\n function success(res) {\n store.dispatch(createSuccessResponse(actionInfo, res));\n if (isFunction(successAction)) {\n successAction(res, store);\n }\n }\n\n function failure(error) {\n store.dispatch(createErrorResponse(actionInfo, error));\n if (isFunction(failureAction)) {\n failureAction(error, store);\n }\n throw error;\n }\n const autoHandleError = !isFunction(failure);\n\n switch (actionInfo.verb) {\n case 'GET':\n apiSendData(GET, route, query, {}, mode, apiEndPoint, fullRoute, headers, autoHandleError, store)\n .then(success, failure)\n .catch(e => console.log(e));\n break;\n case 'PUT':\n apiSendData(PUT, route, {}, data, mode, apiEndPoint, fullRoute, headers, autoHandleError, store)\n .then(success, failure)\n .catch(e => console.log(e));\n break;\n case 'POST':\n apiSendData(POST, route, {}, data, mode, apiEndPoint, fullRoute, headers, autoHandleError, store)\n .then(success, failure)\n .catch(e => console.log(e));\n break;\n case 'PATCH':\n apiSendData(PATCH, route, {}, data, mode, apiEndPoint, fullRoute, headers, autoHandleError, store)\n .then(success, failure)\n .catch(e => console.log(e));\n break;\n case 'DELETE':\n apiSendData(DELETE, route, {}, data, mode, apiEndPoint, fullRoute, headers, autoHandleError, store)\n .then(success, failure)\n .catch(e => console.log(e));\n break;\n default:\n throw new Error('Bad format on the API method name');\n }\n}\n\nconst apiResolveMiddleware = store => next => action => {\n const actionInfo = getActionTypeInfo(action.type);\n if (actionInfo.correctActionType === true) {\n processMiddleware(action, store, actionInfo);\n }\n next(action);\n};\n\nexport default apiResolveMiddleware;\n","import React from 'react';\nimport { ClipTypography } from '@clipmx/clip-storybook/dist/components/Typography/Typography';\nimport CircularProgress from '@clipmx/clip-storybook/dist/components/CircularProgress';\nimport './Loading.css';\n\nconst Loading = () => {\n return (\n
\n \n \n Cargando...\n \n
\n );\n};\n\nexport default Loading;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport { getSandboxTokenAndLoginUser, exitApp } from '../../redux/actions/session';\nimport { PENDING, NO_AUTHENTICATED, IS_AUTHENTICATED, ADMIN } from '../../redux/reducers/session';\nimport getConfigValue from '../../config/enviromentVariables';\nimport JwtAuthService from '../../services/jwtService';\nimport CleverTap from '../../events';\nimport { PRODUCTIVE_MODE } from '../../common/authorizationModeType';\nimport Loading from './Loading/Loading';\n\nclass AuthGuard extends Component {\n state = {\n showContent: false,\n merchantInfoAndUserInfoLoaded: false,\n };\n\n componentDidMount() {\n this.authGuard();\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const { status } = this.props;\n const { showContent } = this.state;\n return nextProps.status !== status || nextState.showContent !== showContent || nextProps.tokenSandbox !== null;\n }\n\n componentDidUpdate() {\n const { merchantInfoAndUserInfoLoaded } = this.state;\n const { status, userInfo, merchantInfo, tokenSandbox } = this.props;\n const canProcessAuth = status === IS_AUTHENTICATED && !!userInfo && !!merchantInfo && !!tokenSandbox;\n this.authGuard();\n if (canProcessAuth && !merchantInfoAndUserInfoLoaded) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ merchantInfoAndUserInfoLoaded: true });\n this.setState({ showContent: true });\n }\n }\n\n redirectRoute = () => {\n const token = JwtAuthService.getToken(PRODUCTIVE_MODE);\n const uri = token ? '' : '/users/sign_in?loginFrom=developerPortal';\n window.location.replace(`${getConfigValue('merchantDashboard')}${uri}`);\n };\n\n authGuard = () => {\n const { merchantInfo, userInfo, status, tokenSandbox, getSandboxTokenAndLoginUser: login } = this.props;\n if (status === NO_AUTHENTICATED || (userInfo && userInfo.role !== ADMIN)) {\n this.redirectRoute();\n return null;\n }\n if (status === PENDING && !userInfo && !merchantInfo && !tokenSandbox) {\n login();\n }\n\n if (status === IS_AUTHENTICATED && !!merchantInfo && !!userInfo && !!tokenSandbox) this.logProfile();\n\n return null;\n };\n\n logProfile = () => {\n const { userInfo } = this.props;\n CleverTap.profile(userInfo);\n };\n\n render() {\n const { showContent } = this.state;\n const { status, userInfo, merchantInfo, tokenSandbox, children } = this.props;\n const canProcessAuth = status === IS_AUTHENTICATED && !!userInfo && !!merchantInfo && !!tokenSandbox;\n return canProcessAuth && showContent ? {children} : ;\n }\n}\n\nAuthGuard.defaultProps = {\n merchantInfo: null,\n userInfo: null,\n status: 1,\n getSandboxTokenAndLoginUser: () => true,\n exitApp: () => true,\n children: null,\n tokenSandbox: null,\n};\n\nAuthGuard.propTypes = {\n merchantInfo: PropTypes.object,\n userInfo: PropTypes.object,\n status: PropTypes.number,\n tokenSandbox: PropTypes.string,\n getSandboxTokenAndLoginUser: PropTypes.func,\n exitApp: PropTypes.func,\n children: PropTypes.element,\n};\n\nconst mapStateToProps = state => {\n const {\n session: { merchantInfo, userInfo, status, tokenSandbox },\n } = state;\n return { merchantInfo, userInfo, status, tokenSandbox };\n};\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({ getSandboxTokenAndLoginUser, exitApp }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AuthGuard);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport './index.css';\nimport ThemeProvider from './components/common/ThemeProvider';\nimport theme from './theme';\nimport Router, { AppRouterComponent } from './routes/Router';\nimport store from './redux/storeConfig';\nimport AuthGuard from './components/common/AuthGuard';\nimport * as serviceWorker from './serviceWorker';\nimport CleverTap from './events/index';\nimport getConfigValue from './config/enviromentVariables';\nimport './vars.css';\nimport './App.css';\n\nimport './overwrite.css';\n\nrequire('dotenv').config();\n\nCleverTap.initialize();\n\nif (getConfigValue('debugMSW') === 'MSW') {\n require('./mocks');\n}\n\nconst App = () => {\n return (\n \n \n \n \n \n );\n};\nconst theStore = store();\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import { applyMiddleware, createStore } from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport rootReducer from './reducers';\nimport apiResolveMiddleware from './middlewares/apiResolve';\n\nexport default function configureStore(preloadedState) {\n const middlewares = [thunkMiddleware, apiResolveMiddleware];\n /* if (process.env.NODE_ENV === 'development') {\n middlewares.push(secretMiddleware)\n } */\n const middlewareEnhancer = applyMiddleware(...middlewares);\n\n const enhancers = [middlewareEnhancer];\n const composedEnhancers = composeWithDevTools(...enhancers);\n\n return createStore(rootReducer, preloadedState, composedEnhancers);\n}\n"],"sourceRoot":""}