{"version":3,"file":"76.bundle.js","mappings":"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","sources":["webpack:///./components/login-prompt/index.js","webpack:///./components/recommended-solutions/index.js","webpack:///./components/topic-tree/index.js","webpack:///./constants/api.js","webpack:///./pages/experiences/technical.js","webpack:///./utils/api.js"],"sourcesContent":["import React, { useEffect } from 'react'\nimport { Card, Button, BodyText } from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport useTracking from '../../hooks/useTracking'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\n\nimport './login-prompt.less'\n\nconst signInUrl = '/signin/?returnUri='\n\nfunction LoginPrompt() {\n const { trackClick, trackActivity } = useTracking()\n\n // On component mount: login prompt shown fpti\n useEffect(() => {\n trackActivity({\n name: componentNames.LOGIN_PROMPT,\n type: fptiTypes.SUCCESS,\n })\n }, [trackActivity])\n\n /**\n * Login button clicked\n * - fire the login button clicked fpti\n * - open the login prompt\n */\n const btnClickHandler = (event) => {\n event.preventDefault()\n const currentUri = event.target.baseURI\n\n trackClick({\n name: componentNames.LOGIN_PROMPT,\n type: fptiTypes.ON_CLICK,\n link: 'login-prompt-btn-clicked',\n })\n window.open(`${signInUrl}${currentUri}`, '_self')\n }\n\n const renderLoginPrompt = () => {\n return (\n \n \n \n \n \n \n \n\n \n btnClickHandler(e)}\n className=\"hc_login-prompt__btn\"\n data-testid=\"hc-login-prompt-btn\"\n >\n \n \n \n \n \n )\n }\n\n return renderLoginPrompt()\n}\n\nexport default LoginPrompt\n","import { HeadingText, Link, Row } from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport _isEmpty from 'lodash/isEmpty'\nimport React, { useEffect } from 'react'\nimport {\n BNA,\n FAQ_CHANNELS,\n NON_FAQ_CHANNELS,\n recommendedSolutionsTitleLimits,\n} from '../../constants'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\nimport { getTitleForArticleUrl } from '../../utils/helper'\nimport { RECOMMENDED_SOLUTIONS_DATA } from '../../utils/prop-type-shape'\n\n//Hooks\nimport { useHelper } from '../../hooks/useHelper'\nimport { useMessage } from '../../hooks/useMessage'\nimport useTracking from '../../hooks/useTracking'\n\n// styles\nimport { UPDATE_BNA_URL } from '../../constants/api'\nimport { postAPI } from '../../utils/api'\nimport './recommended-solutions.less'\n\nconst joinAllRecArticleIds = (data) => {\n if (Array.isArray(data) && data.length) {\n return data.map((article) => article.articleId).join('|')\n }\n return null\n}\n\n// Recommended Solutions Component\nfunction RecommendedSolutions({\n deviceType,\n isLoggedIn,\n recommendedSolutionsData,\n}) {\n const { generateLinkWithCoBrand } = useHelper()\n const { trackActivity, trackClick } = useTracking()\n const { getMessage } = useMessage()\n const { getDisplayName } = useHelper()\n\n useEffect(() => {\n trackActivity({\n name: componentNames.RECOMMENDED_SOLUTIONS,\n type: fptiTypes.SUCCESS,\n help_doc_id: joinAllRecArticleIds(recommendedSolutionsData),\n })\n }, [trackActivity, recommendedSolutionsData])\n\n /**\n * If 'For {firstName}' length is less than the solutions title threshold then display 'For FirstName' if not just display 'For you'\n */\n const getSolutionsTitleForUser = () => {\n const displayName = getDisplayName()\n if (!_isEmpty(displayName) && !_isEmpty(deviceType)) {\n const solutionsTitle = getMessage('app.helpcenter.forUser', {\n name: displayName,\n })\n if (\n solutionsTitle.length <=\n recommendedSolutionsTitleLimits[deviceType.toLowerCase()]\n ) {\n return solutionsTitle\n }\n }\n return getMessage('app.helpcenter.forYou')\n }\n\n // update BNA if article channel is BNA\n const updateBNA = async (article) => {\n if (article?.channelDetails) {\n const { bnaId, bnaListId, intentCode } = article?.channelDetails\n const body = { bnaId, bnaListId, intentId: intentCode }\n try {\n await postAPI(UPDATE_BNA_URL, { body })\n } catch (error) {\n // ignore failure\n }\n }\n }\n\n // Recommended article on click handler\n const onClickHandler = (e, article) => {\n e.stopPropagation()\n trackClick({\n name: componentNames.RECOMMENDED_SOLUTIONS,\n type: fptiTypes.ON_CLICK,\n link: `recommended-solutions|${article.channel}|${article.articleId}|${article.rank}|clicked`,\n })\n // update BNA for BNA articles\n if (article.channel === BNA) {\n updateBNA(article)\n }\n }\n\n const renderSolutionsHeading = (channels) => {\n if (channels === FAQ_CHANNELS) {\n return \n }\n if (channels === NON_FAQ_CHANNELS) {\n return getSolutionsTitleForUser()\n }\n return null\n }\n\n // render solution link\n const renderSolutionLink = (article) => {\n const formattedTitle = () =>\n getTitleForArticleUrl(article.articleTitle, article.articleId)\n const articleUrl = generateLinkWithCoBrand(\n `/cshelp/article/${formattedTitle()}`,\n )\n\n return (\n onClickHandler(e, article)}\n key={article.articleId}\n data-testid=\"hc-recommended-solutions-list-item\"\n className=\"hc_recommended-solutions__list-item\"\n >\n \n {article.articleTitle}\n \n \n )\n }\n\n // render the recommended-soltions list\n const renderSolutionsForChannels = (channels) => {\n const recommendedSolutionsForChannel =\n Array.isArray(recommendedSolutionsData) &&\n recommendedSolutionsData.filter((solution) =>\n channels.includes(solution.channel),\n )\n if (!recommendedSolutionsForChannel.length) {\n return null\n }\n const links = recommendedSolutionsForChannel.map(renderSolutionLink)\n\n return (\n <>\n \n \n {renderSolutionsHeading(channels)}\n \n \n \n {links}\n \n \n )\n }\n\n // render BNA/OMNI channel's solutions\n const renderNonFAQSolutions = () => {\n if (!isLoggedIn) {\n return null\n }\n return renderSolutionsForChannels(NON_FAQ_CHANNELS)\n }\n\n return (\n
\n {renderNonFAQSolutions()}\n {renderSolutionsForChannels(FAQ_CHANNELS)}\n
\n )\n}\n\nRecommendedSolutions.propTypes = RECOMMENDED_SOLUTIONS_DATA\n\nexport default RecommendedSolutions\n","import { Link } from '@paypalcorp/pp-react'\nimport classNames from 'classnames'\nimport React, { useEffect, useState } from 'react'\nimport { TOPIC_TREE_COMPLETE_DATA } from '../../utils/prop-type-shape'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\nimport { Message } from '@paypalcorp/worldready-react'\n\n//Hooks\nimport { useHelper } from '../../hooks/useHelper'\nimport useTracking from '../../hooks/useTracking'\nimport { useAppContext } from '../../contexts/app-context'\n\n// styles\nimport './topic-tree.less'\n\n// Topic Tree Component\nfunction TopicTree({ breadCrumbPath, topicTreeData }) {\n const [selectedTopic, setSelectedTopic] = useState('')\n const { generateLinkWithCoBrand, getHomePathByExperience } = useHelper()\n const { trackActivity, trackClick } = useTracking()\n const {\n pageProps: { pageName },\n } = useAppContext()\n\n useEffect(() => {\n trackActivity({ name: componentNames.TOPIC_TREE, type: fptiTypes.SUCCESS })\n }, [trackActivity])\n\n useEffect(() => {\n if (breadCrumbPath) {\n setSelectedTopic(breadCrumbPath.split('/')[0])\n }\n if (pageName === 'home') {\n setSelectedTopic('home')\n }\n }, [breadCrumbPath, pageName])\n\n // on click topic tree item handler\n const onClickHandler = (e, topic) => {\n e.stopPropagation()\n let link = ''\n\n if (typeof topic === 'string' && topic === 'home') {\n link = 'topic-tree|home|clicked'\n } else {\n link = `topic-tree|${topic.topicId}|clicked`\n }\n // track topictree item on click\n trackClick({\n name: componentNames.TOPIC_TREE,\n type: fptiTypes.ON_CLICK,\n link,\n })\n }\n\n const isTopicTreeExist = () =>\n Array.isArray(topicTreeData) && topicTreeData.length\n\n const renderHomeLink = () => {\n return (\n onClickHandler(e, 'home')}\n key=\"topic-tree-home-link\"\n data-testid=\"hc-topic-tree-home-li\"\n >\n \n \n \n \n )\n }\n\n const renderTopicTree = () => {\n if (isTopicTreeExist()) {\n return topicTreeData.map((topic) => (\n onClickHandler(e, topic)}\n key={topic.topicId}\n data-testid=\"hc-topic-tree-item\"\n >\n \n {topic.topicName}\n \n \n ))\n }\n return <>\n }\n\n return (\n <>\n
    \n {renderHomeLink()}\n {renderTopicTree()}\n
\n \n )\n}\n\nTopicTree.propTypes = TOPIC_TREE_COMPLETE_DATA\n\nexport default TopicTree\n","export const CHECK_BOT_ELIGIBILITY_URL = '/api/check-bot-eligibility'\nexport const MMT_CONVERSATIONS_URL = '/api/mmt-conversations'\nexport const OCP_SET_CONTEXT_URL = '/api/ocp-set-context'\nexport const UPDATE_BNA_URL = '/api/update-bna'\n","import React from 'react'\nimport { Container, Row, Col } from '@paypalcorp/pp-react'\nimport { componentNames } from '../../utils/analytics/fpti-constants'\n\n// Hooks\nimport { useAppContext } from '../../contexts/app-context'\nimport useTracking from '../../hooks/useTracking'\n\n// Components\nimport TopicTree from '../../components/topic-tree'\nimport LoginPrompt from '../../components/login-prompt'\nimport RecommendedSolutions from '../../components/recommended-solutions'\nimport { TECHNICAL_EXP_DATA } from '../../utils/prop-type-shape'\n\n/*\n Experience based specific layout will be here for Technical Experience Route\n*/\nfunction TechnicalExp({ renderWidgets }) {\n const appCtx = useAppContext()\n const { trackErrorFPTI } = useTracking()\n const { pageProps, reqContextData } = appCtx\n const { apiData } = pageProps\n const { topicTree, recommendedSolutions } = apiData\n const { isLoggedIn, device_type } = reqContextData\n\n // render RecommendedSolutions component when valid data from service,\n // if not fire an error fpti event\n const renderRecommendedSolutions = () => {\n if (\n !Array.isArray(recommendedSolutions.data) ||\n recommendedSolutions.data.length === 0\n ) {\n trackErrorFPTI(recommendedSolutions, componentNames.RECOMMENDED_SOLUTIONS)\n return null\n }\n\n return (\n \n )\n }\n\n const renderTopicTree = () => {\n const { data, isError } = topicTree\n if (!isError && Array.isArray(data)) {\n return \n }\n\n // FPTI Tracking\n trackErrorFPTI(topicTree, componentNames.TOPIC_TREE)\n return null\n }\n\n return (\n <>\n \n \n \n {renderTopicTree()}\n \n \n {renderRecommendedSolutions()}\n {renderWidgets()}\n \n \n {!isLoggedIn && }\n \n \n \n \n )\n}\n\nTechnicalExp.propTypes = TECHNICAL_EXP_DATA\n\nexport default TechnicalExp\n","import axios from 'axios'\nimport _get from 'lodash/get'\nimport serverData from '../utils/server-data'\n\n// TODO: remove all direct axios uses inside components and replace with fetch call\n\n// GET csrf token from server data\nconst getCSRFToken = () => {\n return _get(serverData, '_csrf', '')\n}\n\n// attach query params in url\nconst attachQueryParams = (url, queryParams = {}) => {\n url += '?'\n for (const param in queryParams) {\n url += `${encodeURIComponent(param)}=${encodeURIComponent(\n queryParams[param],\n )}&`\n }\n url = url.slice(0, -1)\n return url\n}\n\n/**\n * call this for any GET API call invocation from UI\n * @param { string } url\n * @param { object } query params\n * @returns { Promise } API response\n */\nexport const getAPI = (url, options = {}) => {\n const { queryParams = {} } = options\n url = attachQueryParams(url, queryParams)\n return axios.get(`/cshelp${url}`)\n}\n\n/**\n * call this for any POST API call invocation from UI\n * @param { string } url\n * @param { object } request body and query params\n * @returns { Promise } API response\n */\nexport const postAPI = (url, options = { body: {}, queryParams: {} }) => {\n const { body = {}, queryParams = {} } = options\n url = attachQueryParams(url, queryParams)\n return axios.post(`/cshelp${url}`, { ...body, _csrf: getCSRFToken() })\n}\n"],"names":["useTracking","trackClick","trackActivity","useEffect","name","componentNames","type","fptiTypes","className","id","size","primary","onClick","e","event","preventDefault","currentUri","target","baseURI","link","window","open","btnClickHandler","RecommendedSolutions","deviceType","isLoggedIn","recommendedSolutionsData","generateLinkWithCoBrand","useHelper","getMessage","useMessage","getDisplayName","data","help_doc_id","Array","isArray","length","map","article","articleId","join","updateBNA","channelDetails","bnaId","bnaListId","intentCode","body","intentId","postAPI","UPDATE_BNA_URL","renderSolutionLink","articleUrl","getTitleForArticleUrl","articleTitle","stopPropagation","channel","rank","BNA","onClickHandler","key","href","renderSolutionsForChannels","channels","recommendedSolutionsForChannel","filter","solution","includes","links","FAQ_CHANNELS","NON_FAQ_CHANNELS","displayName","_isEmpty","solutionsTitle","recommendedSolutionsTitleLimits","toLowerCase","getSolutionsTitleForUser","renderSolutionsHeading","propTypes","RECOMMENDED_SOLUTIONS_DATA","TopicTree","breadCrumbPath","topicTreeData","useState","selectedTopic","setSelectedTopic","getHomePathByExperience","pageName","useAppContext","pageProps","split","topic","topicId","classNames","secondary","topicName","TOPIC_TREE_COMPLETE_DATA","CHECK_BOT_ELIGIBILITY_URL","MMT_CONVERSATIONS_URL","OCP_SET_CONTEXT_URL","TechnicalExp","renderWidgets","appCtx","trackErrorFPTI","reqContextData","apiData","topicTree","recommendedSolutions","device_type","xxl","noGutters","xs","span","order","sm","md","lg","xl","isError","TECHNICAL_EXP_DATA","attachQueryParams","url","queryParams","param","encodeURIComponent","slice","getAPI","axios","options","_csrf","_get","serverData"],"sourceRoot":""}