{"version":3,"file":"380.bundle.js","mappings":"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","sources":["webpack:///../node_modules/@paypalcorp/pp-react-contextual-alert/dist/@paypalcorp/pp-react-contextual-alert.esm.js","webpack:///./components/article-content/index.js","webpack:///./components/article-links/index.js","webpack:///./constants/api.js","webpack:///./hooks/useAPI.js","webpack:///./components/tab-switcher/index.js","webpack:///./components/article-content-tabs/index.js","webpack:///./components/article-feedback-reason/index.js","webpack:///./components/article-feedback/index.js","webpack:///./components/error-views/article-content-error.js","webpack:///./components/intent-chatbot-container/index.js","webpack:///./pages/article/index.js"],"sourcesContent":["import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo } from 'react';\nimport { InformationIcon, CheckmarkBackgroundIcon, WarningIcon, CriticalIcon } from '@paypalcorp/pp-react-icons';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { devWarning } from '@paypalcorp/pp-react-utils';\n\nvar _templateObject, _templateObject2, _templateObject3;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n devWarning('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSizeIconXs = tokens.sysSizeIconXs;\n\n var _textStyles = textStyles(tokens),\n textCaption = _textStyles.caption;\n\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: contextual-alert_base;\\n display: flex;\\n padding: \", \" 0;\\n \", \"\\n \"])), sysSpaceLg, textCaption());\n var statusIcon = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: status_icon;\\n margin-top: \", \";\\n margin-right: \", \";\\n height: \", \";\\n\\n [dir='rtl'] & {\\n margin-left: \", \";\\n margin-right: 0;\\n }\\n \"])), '0.0625rem', sysSpaceSm, sysSizeIconXs, sysSpaceSm);\n var noPadding = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: no_padding;\\n padding: 0;\\n \"])));\n return {\n base: base,\n statusIcon: statusIcon,\n noPadding: noPadding\n };\n}\n\nvar _excluded = [\"className\", \"type\", \"typeIconAriaLabel\", \"children\", \"noPadding\"];\nvar iconMap = {\n info: InformationIcon,\n success: CheckmarkBackgroundIcon,\n warning: WarningIcon,\n error: CriticalIcon\n};\n\nvar ContextualAlert = function (_ref) {\n var className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'info' : _ref$type,\n _ref$typeIconAriaLabe = _ref.typeIconAriaLabel,\n typeIconAriaLabel = _ref$typeIconAriaLabe === void 0 ? type : _ref$typeIconAriaLabe,\n children = _ref.children,\n _ref$noPadding = _ref.noPadding,\n noPadding = _ref$noPadding === void 0 ? false : _ref$noPadding,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var iconCssVal = _styles.statusIcon;\n var StatusIcon = iconMap[type];\n var baseCSS = [_styles.base, noPadding && _styles.noPadding];\n return jsx(\"div\", _extends({\n role: \"alert\",\n css: baseCSS,\n className: className,\n \"data-ppui-info\": \"contextual-alert_3.0.2-ql\"\n }, rest), jsx(StatusIcon, {\n css: iconCssVal,\n size: \"xs\",\n color: {\n info: 'sysColorInfoContrast',\n success: 'sysColorSuccessMain',\n warning: 'sysColorWarningAlt',\n error: 'sysColorErrorMain'\n }[type],\n role: \"img\",\n \"aria-label\": typeIconAriaLabel,\n \"data-ppui\": \"true\"\n }), children);\n};\n\nexport { ContextualAlert, styles as contextualAlertStyles };\n","import { HeadingText } from '@paypalcorp/pp-react'\nimport React, { useEffect, useRef } from 'react'\nimport { PAYPAL_OBJECTS_BASE_URL } from '../../constants'\nimport useTracking from '../../hooks/useTracking'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\nimport {\n getArticleVideoIframeSrcDoc,\n loadYTIframeScript,\n} from '../../utils/helper'\nimport { ARTICLE_CONTENT_DATA } from '../../utils/prop-type-shape'\nimport _isEmpty from 'lodash/isEmpty'\n\n// styles\nimport './article-content.less'\n\n// Article Component\nfunction ArticleContent(props) {\n const { articleContent, articleId, exp } = props\n const { trackActivity, trackClick } = useTracking()\n const articleContentRef = useRef(null)\n // get the ECM API tags from article data\n const { ecmComponentIds, ecmDocId } = articleContent\n const helpDocId = ecmDocId || articleId || ''\n const helpComponentIds = ecmComponentIds || ''\n\n // On component mount\n useEffect(() => {\n const loadYTIframeAPI = (onScriptLoad) => {\n loadYTIframeScript()\n window.onYouTubeIframeAPIReady = onScriptLoad\n }\n\n const handleClickOnLinks = (e, link) => {\n const href = link.getAttribute('href')\n\n if (!href) {\n e.preventDefault()\n trackClick({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n type: fptiTypes.ON_CLICK,\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n link: `article-content|${helpDocId}|broken-link-clicked`,\n })\n } else {\n trackClick({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n type: fptiTypes.ON_CLICK,\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n link: `article-content|${helpDocId}|link-clicked|${href}`,\n })\n }\n }\n\n const trackVideoPlayEvents = (videoSrc) => {\n // Add FPTI event for when video would be played\n trackClick({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n link: `article-content-video-played|${videoSrc}`,\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n event_name: 'article_content_video_played_in_article_page',\n type: fptiTypes.SUCCESS,\n })\n }\n\n const trackVideoPauseEvents = (videoSrc) => {\n // Add FPTI event for when video would be paused\n trackClick({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n link: `article-content-video-paused|${videoSrc}`,\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n event_name: 'article_content_video_paused_in_article_page',\n type: fptiTypes.SUCCESS,\n })\n }\n\n const onPlayerStateChange = (event, videoSrc) => {\n // eslint-disable-next-line default-case\n switch (event.data) {\n case window.YT.PlayerState.PLAYING:\n trackVideoPlayEvents(videoSrc)\n break\n case window.YT.PlayerState.PAUSED:\n trackVideoPauseEvents(videoSrc)\n break\n }\n }\n\n const trackYTVideoEvents = (videos) => {\n videos.forEach((video) => {\n if (window.YT) {\n // eslint-disable-next-line no-new\n new window.YT.Player(video, {\n events: {\n onStateChange: (e) => onPlayerStateChange(e, video.src),\n onReady: () => {\n trackActivity({\n name: componentNames.ARTICLE_CONTENT,\n exp,\n link: `article-content-video-displayed|${video.src}`,\n event_name: 'article_content_video_displayed_in_article_page',\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n type: fptiTypes.SUCCESS,\n })\n },\n },\n })\n }\n })\n }\n\n // FPTI Events for video play and pause controls\n const addFPTIsForVideoPlayPause = (videoElement, videoSrc) => {\n videoElement.addEventListener('play', () =>\n trackVideoPlayEvents(videoSrc),\n )\n\n videoElement.addEventListener('pause', () =>\n trackVideoPauseEvents(videoSrc),\n )\n }\n\n const parseArticleContent = () => {\n // Adding setTimeout on top as tag element is not picked immediately safari and IE versions\n setTimeout(() => {\n if (!articleContentRef) {\n return\n }\n\n // Link click Tracking in Article Component\n const contentLinks =\n articleContentRef.current.querySelectorAll('a[href]')\n Array.from(contentLinks).forEach((link) => {\n link.addEventListener('click', (e) => {\n const clickTarget = e.target\n const { id } = clickTarget\n\n // To check if the click content is solutionLink\n if (id && clickTarget.name === 'solutionLink') {\n // make the faqId the href for fpti usage\n link.href = id\n }\n\n handleClickOnLinks(e, link)\n })\n })\n\n // warp image in the article content\n let imageTags = articleContentRef.current.getElementsByTagName('img')\n imageTags = Array.prototype.slice.call(imageTags)\n imageTags.forEach((tag) => {\n const divEl = document.createElement('img')\n divEl.setAttribute('src', tag.src)\n divEl.style.height = `${tag.height}px`\n divEl.style.maxWidth = `${tag.width}px`\n divEl.setAttribute('alt', tag.alt)\n divEl.className = 'hc_article-content__image'\n tag.parentNode.replaceChild(divEl, tag)\n })\n\n // Logic to add video event listeners for play and pause for the videos [Paypal object videos] that are inside iframe.\n let iframeTags =\n articleContentRef.current.getElementsByTagName('iframe')\n iframeTags = Array.prototype.slice.call(iframeTags)\n const ytVideos = []\n iframeTags.forEach((tag) => {\n const videoEl = tag\n videoEl.className = 'hc_article-content__iFrame'\n\n if (tag.src && tag.src.includes('youtube')) {\n videoEl.setAttribute(\n 'src',\n tag.src &&\n tag.src.replace('youtube.com', 'youtube-nocookie.com') +\n '?enablejsapi=1',\n )\n ytVideos.push(videoEl)\n return\n }\n\n // This should not be done ideally, we should get proper format from ECM to display video and track events\n if (\n videoEl.src &&\n videoEl.src.startsWith(PAYPAL_OBJECTS_BASE_URL) &&\n !videoEl.srcdoc\n ) {\n videoEl.setAttribute('srcdoc', getArticleVideoIframeSrcDoc(videoEl))\n }\n tag.parentNode.replaceChild(videoEl, tag)\n\n videoEl.onload = function () {\n const iFrameDocument = videoEl.contentDocument\n const videoSrc = videoEl.src\n\n if (iFrameDocument) {\n const videoElement =\n iFrameDocument.getElementsByTagName('video')[0] || null\n if (videoElement) {\n // set video element width to 100% to display videos appropriatly for all device resolutions\n videoElement.setAttribute('width', '100%')\n\n trackActivity({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n link: `article-content-video-displayed|${videoSrc}`,\n event_name: 'article_content_video_displayed_in_article_page',\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n type: fptiTypes.SUCCESS,\n })\n\n addFPTIsForVideoPlayPause(videoElement, videoSrc)\n }\n }\n }\n })\n\n if (ytVideos.length) {\n loadYTIframeAPI(() => trackYTVideoEvents(ytVideos))\n }\n\n // Logic to add video event listeners for play and pause for the videos\n // that are coming directly with out iframe.\n let videoTags = articleContentRef.current.getElementsByTagName('video')\n videoTags = Array.prototype.slice.call(videoTags)\n\n videoTags.forEach((videoElement) => {\n const videoSrc = videoElement.currentSrc\n\n trackActivity({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n link: `article-content-video-displayed|${videoSrc}`,\n event_name: 'article_content_video_displayed_in_article_page',\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n type: fptiTypes.SUCCESS,\n })\n\n // FPTI event listeners for play and pause\n addFPTIsForVideoPlayPause(videoElement, videoSrc)\n })\n })\n }\n if (_isEmpty(articleContent) || _isEmpty(articleContent.articleContent)) {\n return trackActivity({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n type: fptiTypes.ERROR,\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n })\n }\n\n parseArticleContent()\n\n return trackActivity({\n name: componentNames.ARTICLE_CONTENT,\n articleContentExp: exp,\n type: fptiTypes.SUCCESS,\n help_doc_id: helpDocId,\n help_component_ids: helpComponentIds,\n })\n }, [\n articleContent,\n exp,\n helpComponentIds,\n helpDocId,\n articleContentRef,\n trackActivity,\n trackClick,\n ])\n\n return (\n <>\n \n {articleContent.articleTitle}\n \n\n \n \n )\n}\n\nArticleContent.propTypes = ARTICLE_CONTENT_DATA\n\nexport default ArticleContent\n","import { Link } from '@paypalcorp/pp-react'\nimport React, { useEffect } from 'react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport { ARTICLE_LINKS_DATA } from '../../utils/prop-type-shape'\nimport { getTitleForArticleUrl } from '../../utils/helper'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\n\n// Hooks\nimport useTracking from '../../hooks/useTracking'\nimport { useHelper } from '../../hooks/useHelper'\n\n// styles\nimport './article-links.less'\n\nconst linkTargetMappings = {\n [componentNames.COMMUNITY_POSTS]: '_blank',\n}\n\n// Note: If you need to implement any custom logic for any of the sections using this component, please clone it.\n// Ref: https://github.paypal.com/Customer-Support-R/helpcenternodeweb/pull/35#discussion_r4273361\nfunction ArticleLinks({ articleId, articlesData, componentName }) {\n const { trackActivity, trackClick } = useTracking()\n const { generateLinkWithCoBrand } = useHelper()\n\n // Component onmount\n useEffect(() => {\n trackActivity({\n name: componentName,\n type: fptiTypes.SUCCESS,\n })\n }, [componentName, trackActivity])\n\n // article link onclick handler\n const articleOnClickHandler = (e, url, articleData) => {\n e.preventDefault()\n\n // FPTI\n const fptiOptions = {\n name: componentName,\n type: fptiTypes.ON_CLICK,\n help_doc_id: articleId,\n link: `${componentName}|${articleId}|${articleData.articleId}|clicked|${url}`,\n }\n trackClick(fptiOptions)\n window.open(url, linkTargetMappings[componentName] || '_self')\n }\n\n const isArticleLinksExist = () =>\n articlesData && Array.isArray(articlesData) && articlesData.length\n\n const renderLinkTitle = (articleTitle, views) => {\n if (componentName === componentNames.COMMUNITY_POSTS) {\n return (\n \n )\n }\n return articleTitle\n }\n const renderArticleLinks = () => {\n if (isArticleLinksExist()) {\n return articlesData.map((articleData) => {\n const formattedTitle = () =>\n getTitleForArticleUrl(articleData.articleTitle, articleData.articleId)\n const url =\n articleData.link ||\n generateLinkWithCoBrand(`/cshelp/article/${formattedTitle()}`)\n\n return (\n
\n articleOnClickHandler(e, url, articleData)}\n >\n {renderLinkTitle(articleData.articleTitle, articleData.views)}\n \n
\n )\n })\n }\n return null\n }\n return <>{renderArticleLinks()}\n}\n\nArticleLinks.propTypes = ARTICLE_LINKS_DATA\n\nexport default ArticleLinks\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'\nexport const FULL_SEARCH_URL = '/api/search'\nexport const AI_SEARCH_STREAM_URL = '/api/get-search-ai-answer'\nexport const SEARCH_SUGGESTIONS = '/api/search-auto-complete'\nexport const SEND_EMAIL = '/api/send-email'\nexport const TOPIC_TREE_URL = '/api/topic-tree'\nexport const STEPUP_AUTH_VALIDATION = '/api/stepup-login-validate'\nexport const STEP_UP_RISK_CHECK = '/api/stepup-riskcheck'\nexport const STEP_UP_AUTH_URL = '/api/stepup-anw'\nexport const SEND_WEBFORM = '/api/send-webform'\n\nexport const API_NAMES = {\n CHECK_BOT_ELIGIBILITY: 'CHECK_BOT_ELIGIBILITY',\n MMT_CONVERSATIONS: 'MMT_CONVERSATIONS',\n OCP_SET_CONTEXT: 'OCP_SET_CONTEXT',\n UPDATE_BNA: 'UPDATE_BNA',\n FULL_SEARCH: 'FULL_SEARCH',\n AI_SEARCH_STREAM: 'AI_SEARCH_STREAM',\n SEARCH_SUGGESTIONS: 'SEARCH_SUGGESTIONS',\n SEND_EMAIL: 'SEND_EMAIL',\n TOPIC_TREE: 'TOPIC_TREE',\n STEPUP_AUTH_VALIDATION: 'STEPUP_AUTH_VALIDATION',\n STEP_UP_RISK_CHECK: 'STEP_UP_RISK_CHECK',\n STEP_UP_AUTH: 'STEP_UP_AUTH',\n SEND_WEBFORM: 'SEND_WEBFORM',\n}\n\nexport const API_URLS = {\n [API_NAMES.CHECK_BOT_ELIGIBILITY]: CHECK_BOT_ELIGIBILITY_URL,\n [API_NAMES.MMT_CONVERSATIONS]: MMT_CONVERSATIONS_URL,\n [API_NAMES.OCP_SET_CONTEXT]: OCP_SET_CONTEXT_URL,\n [API_NAMES.UPDATE_BNA]: UPDATE_BNA_URL,\n [API_NAMES.FULL_SEARCH]: FULL_SEARCH_URL,\n [API_NAMES.AI_SEARCH_STREAM]: AI_SEARCH_STREAM_URL,\n [API_NAMES.SEARCH_SUGGESTIONS]: SEARCH_SUGGESTIONS,\n [API_NAMES.SEND_EMAIL]: SEND_EMAIL,\n [API_NAMES.TOPIC_TREE]: TOPIC_TREE_URL,\n [API_NAMES.STEPUP_AUTH_VALIDATION]: STEPUP_AUTH_VALIDATION,\n [API_NAMES.STEP_UP_RISK_CHECK]: STEP_UP_RISK_CHECK,\n [API_NAMES.STEP_UP_AUTH]: STEP_UP_AUTH_URL,\n [API_NAMES.SEND_WEBFORM]: SEND_WEBFORM,\n}\n","import axios from 'axios'\n\nimport { useCallback } from 'react'\nimport { API_URLS } from '../constants/api'\nimport { useAppContext } from '../contexts/app-context'\n\n/**\n * attach query params on api url\n * @param { string } url\n * @param { object } queryParams\n * @returns\n */\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 * For any api calls from UI\n */\nconst useAPI = () => {\n const {\n reqContextData: { _csrf },\n } = useAppContext()\n // const { trackActivity } = useTracking()\n\n /**\n * For any GET API call invocation from UI\n * @param { string } url\n * @param { object } query params\n * @returns { Promise } API response\n */\n const getAPI = useCallback(\n async (\n apiName,\n options = { body: {}, queryParams: {}, fptiParams: {} },\n ) => {\n // const hc_event_info = options?.fptiParams?.hc_event_info || null\n try {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_INIT,\n // hc_event_info,\n // })\n const { queryParams = {} } = options\n let url = API_URLS[apiName]\n url = attachQueryParams(url, queryParams)\n const response = await axios.get(`/cshelp${url}`)\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_SUCCESS,\n // hc_event_info,\n // })\n return response\n } catch (error) {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_ERROR,\n // hc_event_info,\n // })\n throw error\n }\n },\n [],\n )\n\n /**\n * 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 */\n const postAPI = useCallback(\n async (\n apiName,\n options = { body: {}, queryParams: {}, fptiParams: {} },\n ) => {\n // const hc_event_info = options?.fptiParams?.hc_event_info || null\n try {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_INIT,\n // hc_event_info,\n // })\n const { body = {}, queryParams = {} } = options\n let url = API_URLS[apiName]\n url = attachQueryParams(url, queryParams)\n const response = await axios.post(`/cshelp${url}`, { ...body, _csrf })\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_SUCCESS,\n // hc_event_info,\n // })\n return response\n } catch (error) {\n // trackActivity({\n // name: apiName,\n // type: fptiTypes.SERVICE_ERROR,\n // hc_event_info,\n // })\n throw error\n }\n },\n [_csrf],\n )\n\n return { getAPI, postAPI }\n}\n\nexport default useAPI\n","import { TabPanel, Tabs } from '@paypalcorp/pp-react'\nimport React, { useState } from 'react'\n\nimport useTracking from '../../hooks/useTracking'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\nimport { TAB_SWITCHER_DATA } from '../../utils/prop-type-shape'\n\nimport './tab-switcher.less'\n\nfunction TabSwitcher(props) {\n const { name, tabsInfo, renderTabContent, articleId } = props\n const [selectedTabIdx, setSelectedTabIdx] = useState(0)\n const { trackClick } = useTracking()\n\n const onTabClickHandler = (_, tabIndex) => {\n if (tabIndex === selectedTabIdx) {\n return\n }\n const { componentName, exp } = tabsInfo[tabIndex].tabProps\n trackClick({\n name: componentNames.TAB_SWITCHER,\n type: fptiTypes.ON_CLICK,\n help_doc_id: articleId,\n exp,\n link: `${componentNames.TAB_SWITCHER}|${articleId}|${componentName}`,\n })\n setSelectedTabIdx(tabIndex)\n }\n\n const renderTabs = () => {\n let tabsProps = []\n if (Array.isArray(tabsInfo)) {\n tabsProps = tabsInfo.map((tab) => ({\n id: tab.id,\n panelId: `p-${tab.id}`,\n label: tab.label,\n }))\n }\n if (Array.isArray(tabsProps) && tabsProps.length) {\n return (\n \n {tabsInfo.map(({ id, tabProps }) => (\n \n {renderTabContent(tabProps)}\n \n ))}\n \n )\n }\n return null\n }\n\n return renderTabs()\n}\n\nTabSwitcher.propTypes = TAB_SWITCHER_DATA\n\nexport default TabSwitcher\n","import React from 'react'\nimport { BUSINESS, MERCHANT, PERSONAL } from '../../constants'\nimport { useMessage } from '../../hooks/useMessage'\nimport { componentNames } from '../../utils/analytics/fpti-constants'\nimport { ARTICLE_CONTENT_TABS_DATA } from '../../utils/prop-type-shape'\nimport ArticleContent from '../article-content'\nimport TabSwitcher from '../tab-switcher'\n\nimport './article-content-tabs.less'\n\nconst ArticleContentTabs = ({ articleContent, articleId, accountType }) => {\n const {\n personalContent,\n businessContent,\n articleContent: aContent,\n } = articleContent\n const { getMessage } = useMessage()\n\n const renderArticleContent = ({ content, exp }) => {\n const { articleTitle, ecmComponentIds, ecmDocId } = articleContent\n return (\n \n )\n }\n\n const renderTabSwitcher = () => {\n /*\n Personal content or business content key values exists for only the channels that are ECM enabled\n so in order to handle non ecm article content -\n If no personal content or business content exists dont show the tabs and instead show the article\n content from key articleContent\n */\n if (!(personalContent || businessContent)) {\n return renderArticleContent({\n content: aContent,\n exp: accountType,\n })\n }\n\n const tabs = []\n if (personalContent) {\n tabs.push({\n id: 'consumerArticleContent',\n label: getMessage('app.helpcenter.experience.personal'),\n tabProps: {\n content: personalContent,\n exp: PERSONAL,\n componentName: componentNames.ARTICLE_CONTENT,\n },\n })\n }\n if (businessContent) {\n tabs.push({\n id: 'merchantArticleContent',\n label: getMessage('app.helpcenter.experience.business'),\n tabProps: {\n content: businessContent,\n exp: BUSINESS,\n componentName: componentNames.ARTICLE_CONTENT,\n },\n })\n }\n if (tabs.length === 2 && accountType === MERCHANT) {\n tabs.reverse()\n }\n return (\n \n )\n }\n\n return renderTabSwitcher()\n}\n\nexport default ArticleContentTabs\n\nArticleContentTabs.propTypes = ARTICLE_CONTENT_TABS_DATA\n","import {\n Button,\n Container,\n HeadingText,\n RadioButton,\n TextArea,\n} from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport React, { useState } from 'react'\nimport { useMessage } from '../../hooks/useMessage'\n\nimport './article-feedback-reason.less'\nimport { ARTICLE_FEEDBACK_REASON_DATA } from '../../utils/prop-type-shape'\n\nconst formMetaData = {\n reasons: [\n 'toomuchinfo',\n 'notenoughinfo',\n 'lookingfor',\n 'incorrect',\n 'dontlike',\n 'other',\n ],\n rows: 3,\n maxLength: 250,\n}\nconst ArticleFeedbackReason = ({ onSubmit }) => {\n const [selectedReason, setSelectedReason] = useState('')\n const [reasonDesc, setReasonDesc] = useState('')\n const { getMessage } = useMessage()\n\n const renderReasonDescriptionForm = () => {\n return (\n <>\n setReasonDesc(e.target.value)}\n maxCharacters={formMetaData.maxLength}\n rows={formMetaData.rows}\n showCharacterCounter={true}\n maxLength={formMetaData.maxLength}\n placeholder={getMessage(\n 'app.article.feedback.reason.form.placeholder',\n )}\n data-testid=\"hc-fb-reason-option-desc\"\n />\n \n )\n }\n\n const renderReasons = () => {\n const { reasons } = formMetaData\n const options = Array.from(reasons, (reason) => {\n const message = getMessage(`app.article.feedback.reason.${reason}`)\n return {\n label: message,\n value: reason,\n }\n })\n return (\n \n setSelectedReason(e.target.value)}\n value={selectedReason}\n />\n {renderReasonDescriptionForm()}\n onSubmit(selectedReason, reasonDesc)}\n data-testid=\"hc-fb-reason-option-btn-submit\"\n >\n \n \n \n )\n }\n\n return (\n <>\n \n \n \n {renderReasons()}\n \n )\n}\n\nArticleFeedbackReason.propTypes = ARTICLE_FEEDBACK_REASON_DATA\n\nexport default ArticleFeedbackReason\n","import {\n Button,\n Col,\n ContextualAlert,\n HeadingText,\n Row,\n Sheet,\n} from '@paypalcorp/pp-react'\nimport React, { useState } from 'react'\n\nimport { Message } from '@paypalcorp/worldready-react'\nimport useTracking from '../../hooks/useTracking'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\nimport { dataMasking } from '../../utils/helper'\nimport { ARTICLE_FEEDBACK_DATA } from '../../utils/prop-type-shape'\nimport ArticleFeedbackReason from '../article-feedback-reason'\nimport './article-feedback.less'\nimport { useMessage } from '../../hooks/useMessage'\n\nconst { YES, NO } = {\n YES: 'Y',\n NO: 'N',\n}\n\nconst HCAR_MAPPINGS = {\n Y: 'Y',\n toomuchinfo: 'N1',\n notenoughinfo: 'N2',\n lookingfor: 'N3',\n incorrect: 'N4',\n dontlike: 'N5',\n other: 'N99',\n}\n\nfunction ArticleFeedback({ articleId, helpComponentIds }) {\n const [isFbCaptured, setIsFbCaptured] = useState(false)\n const [isFbSheetOpen, setIsFbSheetOpen] = useState(false)\n const { trackClick } = useTracking()\n\n const { getMessage } = useMessage()\n\n const captureFeedback = (reason, reasonDesc) => {\n setIsFbSheetOpen(false)\n setIsFbCaptured(true)\n const hcar = HCAR_MAPPINGS[reason]\n let hcaf = `${articleId}|${hcar}`\n if (reasonDesc) {\n hcaf += `|${dataMasking(reasonDesc)}`\n }\n trackClick({\n name: componentNames.ARTICLE_FEEDBACK,\n type: fptiTypes.ON_CLICK,\n hcar,\n hcaf,\n help_doc_id: articleId,\n help_component_ids: helpComponentIds,\n link: `${componentNames.ARTICLE_FEEDBACK}|${articleId}|feedback`,\n })\n }\n\n const fbAnswerHandler = (event, answer) => {\n event.stopPropagation()\n if (answer === NO) {\n setIsFbSheetOpen(true)\n\n trackClick({\n name: componentNames.ARTICLE_FEEDBACK,\n type: fptiTypes.ON_CLICK,\n help_doc_id: articleId,\n help_component_ids: helpComponentIds,\n link: `${componentNames.ARTICLE_FEEDBACK}|${articleId}|feedback-sheet|open`,\n })\n\n return\n }\n captureFeedback(answer)\n }\n\n const closeFbSheet = () => {\n setIsFbSheetOpen(false)\n\n trackClick({\n name: componentNames.ARTICLE_FEEDBACK,\n type: fptiTypes.ON_CLICK,\n help_doc_id: articleId,\n help_component_ids: helpComponentIds,\n link: `${componentNames.ARTICLE_FEEDBACK}|${articleId}|feedback-sheet|close`,\n })\n }\n\n const renderFbSection = () => {\n if (!isFbCaptured) {\n return (\n <>\n \n \n \n \n \n \n fbAnswerHandler(e, YES)}\n fullWidthOnMobile={false}\n secondary\n >\n \n \n fbAnswerHandler(e, NO)}\n secondary\n >\n \n \n \n \n )\n }\n\n return null\n }\n\n const renderReasonCaptureSheet = () => {\n return (\n \n \n \n )\n }\n\n const renderFbRecieved = () => {\n if (isFbCaptured) {\n return (\n \n \n \n \n \n )\n }\n\n return null\n }\n\n return (\n \n {renderFbRecieved()}\n {renderFbSection()}\n {renderReasonCaptureSheet()}\n \n )\n}\n\nArticleFeedback.propTypes = ARTICLE_FEEDBACK_DATA\n\nexport default ArticleFeedback\n","import React from 'react'\nimport { HeadingText, BodyText, Link } from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\n\nimport './error-views.less'\n\nfunction ArticleContentError() {\n return (\n
\n
\n \n \n \n
\n
\n \n {innerMessage}}\n />\n \n
\n
\n )\n}\n\nexport default ArticleContentError\n","import React, { lazy, Suspense, useEffect, useState } from 'react'\nimport { INTENT_CHATBOT_CONTAINER_DATA } from '../../utils/prop-type-shape'\n\nimport { FAQ } from '../../constants'\nimport { API_NAMES } from '../../constants/api'\n\nimport useAPI from '../../hooks/useAPI'\nimport ShimmerLoader from '../loaders/shimmerLoader'\n\nconst IntentChatBotPrompt = lazy(() => import('../intent-chatbot-prompt'))\n\nconst IntentChatBotContainer = (props) => {\n const [chatEligibilityData, setChatEligibilityData] = useState({\n isLoading: false,\n })\n\n const { getAPI } = useAPI()\n\n const { config, articleId, articleTitle } = props\n\n const callCheckBotEligibityAPI = async () => {\n setChatEligibilityData({ isLoading: true })\n try {\n const queryParams = {\n page: articleId,\n intentId: config.intentId,\n intentType: FAQ,\n }\n const { data } = await getAPI(API_NAMES.CHECK_BOT_ELIGIBILITY, {\n queryParams,\n })\n setChatEligibilityData({\n ...data,\n displayChatPrompt: data && data.result === 'ELIGIBLE',\n isLoading: false,\n })\n } catch (error) {\n setChatEligibilityData({ isLoading: false, displayChatPrompt: false })\n }\n }\n\n useEffect(() => {\n if (config && config.isEnabled) {\n callCheckBotEligibityAPI()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const renderChatPrompt = () => {\n if (!config || !config.isEnabled) {\n return null\n }\n if (chatEligibilityData.isLoading) {\n return \n }\n if (chatEligibilityData && chatEligibilityData.displayChatPrompt) {\n return (\n }>\n \n \n )\n }\n return null\n }\n return renderChatPrompt()\n}\n\nIntentChatBotContainer.propTypes = INTENT_CHATBOT_CONTAINER_DATA\n\nexport default IntentChatBotContainer\n","import { Col, Container, HeadingText, Row } from '@paypalcorp/pp-react'\nimport { Message } from '@paypalcorp/worldready-react'\nimport _get from 'lodash/get'\nimport React, { Suspense, useEffect } from 'react'\nimport ShimmerLoader from '../../components/loaders/shimmerLoader'\nimport { useAppContext } from '../../contexts/app-context'\nimport useTracking from '../../hooks/useTracking'\nimport ErrorBoundary from '../../shared/ErrorBoundary'\nimport {\n ARTICLE_INTENTS_NO_DATA_EVENT,\n COMPONENT_NAME,\n FPTI_PREFIX,\n componentNames,\n fptiTypes,\n} from '../../utils/analytics/fpti-constants'\n\n// UI Components\nimport ArticleContentTabs from '../../components/article-content-tabs'\nimport ArticleFeedback from '../../components/article-feedback'\nimport ArticleLinks from '../../components/article-links'\nimport Breadcrumbs from '../../components/breadcrumbs'\nimport ArticleContentError from '../../components/error-views/article-content-error'\nimport HeroModule from '../../components/hero-module'\nimport MoreWaysOfHelp from '../../components/more-ways-of-help'\nimport TabSwitcher from '../../components/tab-switcher'\nimport TopicTree from '../../components/topic-tree'\nimport { useMessage } from '../../hooks/useMessage'\n\nimport IntentChatBotContainer from '../../components/intent-chatbot-container'\nimport { API_NAMES } from '../../constants/api'\nimport useAPI from '../../hooks/useAPI'\nimport '../../styles/pages/article.less'\n\nconst Alerts = React.lazy(() =>\n import('../../components/alerts' /* webpackPrefetch: true */),\n)\n\nconst RefundTracker = React.lazy(() =>\n import('../../components/refund-tracker' /* webpackPrefetch: true */),\n)\n\nconst DisputeTracker = React.lazy(() =>\n import('../../components/dispute-tracker' /* webpackPrefetch: true */),\n)\n\nconst Survey = React.lazy(() =>\n import('../../components/survey' /* webpackPrefetch: true */),\n)\n\nconst CurrencyConverter = React.lazy(() =>\n import(\n '@paypalcorp/helpcomponents-currency-conv' /* webpackPrefetch: true */\n ).then((module) => {\n return { default: module.HcCurrencyConv }\n }),\n)\n\n/*\n Article page - This is the page/container for article view which will have the\n layout and components placement\n*/\nfunction Article() {\n const { trackActivity, fptiTypeByStatusCode } = useTracking()\n const { getMessage } = useMessage()\n const appCtx = useAppContext()\n const { postAPI } = useAPI()\n\n const {\n pageProps,\n reqContextData: { exp, isLoggedIn },\n } = appCtx\n const { apiData, pageName, articleId, configs } = pageProps\n const { article, topicTree, helpChannels, communityPosts } = apiData\n const {\n isDisputeTrackerEnabled,\n isRefundTrackerEnabled,\n intentChatBot: intentChatbotConfig,\n isCurrencyConverterEnabled,\n } = configs || {}\n\n const isArticleContentExist = () =>\n article &&\n article.articleContent &&\n (article.articleContent.personalContent ||\n article.articleContent.businessContent ||\n article.articleContent.articleContent)\n\n const isCommunityPostsExist = () =>\n Array.isArray(communityPosts) && communityPosts.length\n\n const isRelatedArticlesExist = () =>\n isArticleContentExist() &&\n Array.isArray(article.articleContent.relatedArticles) &&\n article.articleContent.relatedArticles.length\n\n const isTabSwitcherExist = () =>\n isRelatedArticlesExist() && isCommunityPostsExist()\n\n const setOCPContext = async () => {\n if (isArticleContentExist()) {\n const tags = article?.articleContent?.tags\n // extract predictions from tags if exist\n const predictions =\n Array.isArray(tags) && tags.length && tags[0].predictions\n if (Array.isArray(predictions) && predictions.length) {\n const intents = predictions.map(({ intent, score, intent_code }) => ({\n customer_intent: intent,\n score,\n code: intent_code,\n }))\n try {\n const body = {\n intents,\n articleId,\n }\n await postAPI(API_NAMES.OCP_SET_CONTEXT, { body })\n } catch (error) {\n // In case of failure ignore it fpti is already captured\n }\n } else {\n // This FPTI will help to know which articles are missing the intent mappings.\n trackActivity({\n name: componentNames.ARTICLE_INTENTS,\n type: fptiTypes.NO_DATA,\n event_name: ARTICLE_INTENTS_NO_DATA_EVENT,\n help_doc_id: articleId,\n })\n }\n }\n }\n\n useEffect(() => {\n if (isLoggedIn) {\n setOCPContext()\n }\n }, [])\n\n // <----------------------- START OF RELATED TOPICS SECTION ----------------------->\n const renderRelatedTopics = () => {\n const renderArticleLinks = ({\n currentArticleId,\n articlesData,\n componentName,\n }) => {\n return (\n \n )\n }\n\n // Tab switcher\n const renderTabSwitcher = () => {\n if (isTabSwitcherExist()) {\n const relatedTopicsTabsInfo = [\n {\n id: 'hcRelatedArticles',\n label: getMessage('app.helpcenter.helpArticles'),\n tabProps: {\n articlesData: article.articleContent.relatedArticles,\n componentName: componentNames.RELATED_ARTICLES,\n currentArticleId: articleId,\n },\n },\n {\n id: 'hcArticleCommunityPosts',\n label: getMessage('app.helpcenter.communityPosts'),\n tabProps: {\n articlesData: communityPosts,\n componentName: componentNames.COMMUNITY_POSTS,\n currentArticleId: articleId,\n },\n },\n ]\n return (\n \n )\n }\n return null\n }\n\n const renderRelatedArticlesOrCommunityPosts = () => {\n if (!isTabSwitcherExist()) {\n if (isRelatedArticlesExist()) {\n const props = {\n articlesData: article.articleContent.relatedArticles,\n componentName: componentNames.RELATED_ARTICLES,\n currentArticleId: articleId,\n }\n return renderArticleLinks(props)\n }\n if (isCommunityPostsExist()) {\n const props = {\n articlesData: communityPosts,\n componentName: componentNames.COMMUNITY_POSTS,\n currentArticleId: articleId,\n }\n return renderArticleLinks(props)\n }\n }\n return null\n }\n\n if (isRelatedArticlesExist() || isCommunityPostsExist()) {\n return (\n <>\n \n \n \n {renderTabSwitcher()}\n {renderRelatedArticlesOrCommunityPosts()}\n \n )\n }\n\n trackActivity({\n name: componentNames.RELATED_ARTICLES,\n type: fptiTypes.NO_DATA,\n help_doc_id: articleId,\n })\n trackActivity({\n name: componentNames.COMMUNITY_POSTS,\n type: fptiTypes.NO_DATA,\n help_doc_id: articleId,\n })\n return null\n }\n\n // <----------------------- END OF RELATED TOPICS SECTION ----------------------->\n\n // ARTICLE FEEDBACK SECTION\n const renderArticleFeedback = () => {\n if (isArticleContentExist()) {\n const helpComponentIds = _get(\n article,\n 'articleContent.ecmComponentIds',\n '',\n )\n\n return (\n \n )\n }\n return null\n }\n\n // TOPIC TREE SECTION\n const renderTopicTree = () => {\n const { data, isError, statusCode } = topicTree\n\n if (!isError && Array.isArray(data) && data.length) {\n const breadcrumbPath = _get(\n article,\n 'articleContent.breadCrumbPath',\n null,\n )\n\n return \n }\n\n // FPTI Tracking\n const type = isError && fptiTypeByStatusCode(statusCode)\n trackActivity({\n name: componentNames.TOPIC_TREE,\n type,\n help_doc_id: articleId,\n })\n return null\n }\n\n // ARTICLE CONTENT SECTION\n const renderArticleContent = () => {\n if (isArticleContentExist()) {\n return (\n \n )\n }\n\n const { isError, statusCode } = article\n const type = isError && fptiTypeByStatusCode(statusCode)\n\n trackActivity({\n name: componentNames.ARTICLE_CONTENT,\n type,\n help_doc_id: articleId,\n })\n return \n }\n\n // BREADCRUMB SECTION\n const renderBreadCrumb = () => {\n if (\n isArticleContentExist() &&\n article.articleContent.breadCrumbPath &&\n article.articleContent.breadCrumbTitle\n ) {\n const { breadCrumbPath, breadCrumbTitle } = article.articleContent\n return (\n \n )\n }\n return null\n }\n\n // MORE WAYS OF HELP SECTION\n const renderMoreWaysOfHelp = () => {\n const { data, isError, statusCode } = helpChannels\n if (!isError && Array.isArray(data) && data.length) {\n return \n }\n\n const type = isError && fptiTypeByStatusCode(statusCode)\n trackActivity({\n name: componentNames.MORE_WAYS_OF_HELP,\n type,\n help_doc_id: articleId,\n })\n\n return null\n }\n\n // CURRENCY CONVERTER\n const renderCurrencyConverter = () => {\n if (isCurrencyConverterEnabled) {\n return (\n }>\n \n \n )\n }\n return null\n }\n\n const renderDisputeTracker = () => {\n if (!isDisputeTrackerEnabled) {\n return null\n }\n return (\n \n }>\n \n \n \n )\n }\n\n const renderRefundTracker = () => {\n if (!isRefundTrackerEnabled) {\n return null\n }\n return (\n <>\n }>\n \n \n \n )\n }\n\n const renderIntentChatbot = () => {\n if (intentChatbotConfig && articleId && isArticleContentExist()) {\n const { articleContent } = article\n return (\n \n \n \n )\n }\n return null\n }\n\n return (\n <>\n \n \n }>\n \n \n \n \n\n \n\n {/* <--------- TRACKER SECTION - all the trackers (refund, dispute) or external components goes here ------------>*/}\n \n {renderDisputeTracker()}\n {renderRefundTracker()}\n \n {/* <------------------- END OF TRACKER SECTION -----------------> */}\n\n \n \n {renderBreadCrumb()}\n \n\n \n \n {renderTopicTree()}\n \n\n \n {/* We are wrapping error boundaries with individual widgets/components to protect crashing the rest of the application */}\n \n {renderArticleContent()}\n \n\n {renderCurrencyConverter()}\n {renderArticleFeedback()}\n {renderIntentChatbot()}\n {renderRelatedTopics()}\n \n \n\n {renderMoreWaysOfHelp()}\n\n }>\n \n \n \n \n )\n}\n\nexport default Article\n"],"names":["_templateObject","_templateObject2","_templateObject3","_excluded","iconMap","info","success","warning","error","ContextualAlert","_ref","className","_ref$type","type","_ref$typeIconAriaLabe","typeIconAriaLabel","children","_ref$noPadding","noPadding","rest","tokens","u","_styles","useMemo","Object","keys","length","sysSpaceSm","sysSpaceLg","sysSizeIconXs","textCaption","caption","base","css","statusIcon","styles","iconCssVal","StatusIcon","baseCSS","jsx","role","size","color","ArticleContent","props","articleContent","articleId","exp","useTracking","trackActivity","trackClick","articleContentRef","useRef","ecmComponentIds","helpDocId","ecmDocId","helpComponentIds","useEffect","trackVideoPlayEvents","videoSrc","name","componentNames","ARTICLE_CONTENT","articleContentExp","link","help_doc_id","help_component_ids","event_name","fptiTypes","SUCCESS","trackVideoPauseEvents","addFPTIsForVideoPlayPause","videoElement","addEventListener","_isEmpty","ERROR","setTimeout","contentLinks","current","querySelectorAll","Array","from","forEach","e","clickTarget","target","id","href","getAttribute","ON_CLICK","preventDefault","handleClickOnLinks","imageTags","getElementsByTagName","prototype","slice","call","tag","divEl","document","createElement","setAttribute","src","style","height","maxWidth","width","alt","parentNode","replaceChild","iframeTags","onScriptLoad","ytVideos","videoEl","includes","replace","push","startsWith","PAYPAL_OBJECTS_BASE_URL","srcdoc","getArticleVideoIframeSrcDoc","onload","iFrameDocument","contentDocument","video","window","YT","Player","events","onStateChange","event","data","PlayerState","PLAYING","PAUSED","onPlayerStateChange","onReady","loadYTIframeScript","onYouTubeIframeAPIReady","videoTags","currentSrc","as","articleTitle","dangerouslySetInnerHTML","__html","ref","propTypes","ARTICLE_CONTENT_DATA","linkTargetMappings","COMMUNITY_POSTS","ArticleLinks","articlesData","componentName","generateLinkWithCoBrand","useHelper","isArray","map","articleData","views","url","getTitleForArticleUrl","key","onClick","fptiOptions","open","articleOnClickHandler","Message","title","ARTICLE_LINKS_DATA","AI_SEARCH_STREAM_URL","API_NAMES","CHECK_BOT_ELIGIBILITY","MMT_CONVERSATIONS","OCP_SET_CONTEXT","UPDATE_BNA","FULL_SEARCH","AI_SEARCH_STREAM","SEARCH_SUGGESTIONS","SEND_EMAIL","TOPIC_TREE","STEPUP_AUTH_VALIDATION","STEP_UP_RISK_CHECK","STEP_UP_AUTH","SEND_WEBFORM","API_URLS","attachQueryParams","queryParams","param","encodeURIComponent","_csrf","useAppContext","reqContextData","getAPI","useCallback","apiName","options","body","fptiParams","axios","get","response","postAPI","post","TabSwitcher","tabsProps","tabsInfo","renderTabContent","useState","selectedTabIdx","setSelectedTabIdx","tab","panelId","label","_","tabIndex","tabProps","TAB_SWITCHER","tabs","tabClassName","tabId","TAB_SWITCHER_DATA","ArticleContentTabs","accountType","personalContent","businessContent","aContent","getMessage","useMessage","renderArticleContent","content","A","PERSONAL","BUSINESS","MERCHANT","reverse","ARTICLE_CONTENT_TABS_DATA","formMetaData","ArticleFeedbackReason","reasons","onSubmit","selectedReason","setSelectedReason","reasonDesc","setReasonDesc","reason","value","radioLabelClassName","onChange","inputClassName","maxCharacters","rows","showCharacterCounter","maxLength","placeholder","ARTICLE_FEEDBACK_REASON_DATA","HCAR_MAPPINGS","Y","toomuchinfo","notenoughinfo","lookingfor","incorrect","dontlike","other","ArticleFeedback","isFbCaptured","setIsFbCaptured","isFbSheetOpen","setIsFbSheetOpen","captureFeedback","hcar","hcaf","dataMasking","ARTICLE_FEEDBACK","fbAnswerHandler","answer","stopPropagation","xs","sm","lg","md","fullWidthOnMobile","secondary","isOpen","onCloseComplete","ARTICLE_FEEDBACK_DATA","innerMessage","IntentChatBotPrompt","lazy","IntentChatBotContainer","isLoading","chatEligibilityData","setChatEligibilityData","useAPI","config","callCheckBotEligibityAPI","page","intentId","intentType","FAQ","displayChatPrompt","result","isEnabled","Suspense","fallback","INTENT_CHATBOT_CONTAINER_DATA","Alerts","React","RefundTracker","DisputeTracker","Survey","CurrencyConverter","then","module","default","HcCurrencyConv","renderArticleLinks","fptiTypeByStatusCode","appCtx","pageProps","isLoggedIn","apiData","pageName","configs","article","topicTree","helpChannels","communityPosts","isDisputeTrackerEnabled","isRefundTrackerEnabled","intentChatbotConfig","intentChatBot","isCurrencyConverterEnabled","isArticleContentExist","isCommunityPostsExist","isRelatedArticlesExist","relatedArticles","isTabSwitcherExist","setOCPContext","tags","predictions","intents","customer_intent","intent","score","code","intent_code","ARTICLE_INTENTS","NO_DATA","ARTICLE_INTENTS_NO_DATA_EVENT","xxl","isTrackerEnabled","display","span","breadCrumbPath","breadCrumbTitle","isError","statusCode","breadcrumbPath","_get","topicTreeData","ErrorBoundary","COMPONENT_NAME","FPTI_PREFIX","CURRENCY_CONVERTER","pgrp","spinnerType","currentArticleId","relatedTopicsTabsInfo","RELATED_ARTICLES","renderTabSwitcher","renderRelatedArticlesOrCommunityPosts","MORE_WAYS_OF_HELP"],"sourceRoot":""}