{"version":3,"file":"static/chunks/974-44dc8f498d26a11d.js","mappings":"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","sources":["webpack://_N_E/./src/component-factory/components/page-content-component/support/components/search-bar/search-bar.tsx","webpack://_N_E/./src/component-factory/components/tabs-component/tabs-component.client.tsx","webpack://_N_E/../assets/resources/search-bar.svg","webpack://_N_E/./src/component-factory/components/page-content-component/support/search/components/search-results/search-results.tsx","webpack://_N_E/./src/component-factory/components/navibar-component/navibar-component.client.tsx","webpack://_N_E/../assets/resources/qr-code/qr-code-fallback.png","webpack://_N_E/./src/component-factory/components/page-content-component/(articles)/components/utils.ts","webpack://_N_E/./src/component-factory/components/page-content-component/(articles)/components/tile.tsx","webpack://_N_E/./src/component-factory/components/page-content-component/(articles)/components/load-more.client.tsx","webpack://_N_E/./src/component-factory/components/page-content-component/support/components/search-bar/utils/utils.tsx","webpack://_N_E/./src/component-factory/components/page-content-component/support/components/search-bar/utils/index.ts","webpack://_N_E/./src/component-factory/components/promo-component/components/promo-cta.client.tsx","webpack://_N_E/./src/component-factory/feature-flagger/feature-flagger.tsx","webpack://_N_E/./src/component-factory/components/report-component/availability-and-performance-report/report.client.tsx","webpack://_N_E/./src/component-factory/components/hero-multi-image-component/components/hero-multi-image-interval.client.tsx","webpack://_N_E/./src/component-factory/components/widget-component/widgets/trustpilot-widget/trustpilot-widget.client.tsx","webpack://_N_E/./src/component-factory/components/image-text-component/components/label-flagger/label-flagger.client.tsx","webpack://_N_E/./src/component-factory/components/hero-component/components/hero-cta.client.tsx","webpack://_N_E/./src/component-factory/components/hero-component/components/hero-bba-logo.tsx","webpack://_N_E/./src/component-factory/components/carousel-promo-component/components/carousel-promo-interval.client.tsx"],"sourcesContent":["'use client'\n\nimport { CustomSvg, ScreenReader } from '@chaseweb/ui-library/src'\nimport { cn } from '@chaseweb/utils/cn'\nimport throttle from 'lodash/throttle'\nimport { useRouter, useSearchParams } from 'next/navigation'\nimport {\n type ChangeEvent,\n type FocusEventHandler,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport { Link } from '@/components'\nimport type { SupportArticle } from '@/data/aem'\nimport { useHasRehydrated } from '@/lib/hooks/useHasRehydrated'\nimport type { RelativePathType } from '@/types'\n\nimport {\n configureSearchEngine,\n formRegexForMultiWordSearch,\n getSearchResults,\n highlightWords,\n} from './utils'\n\nexport const SEARCH_BUTTON_DISABLED_TEXT =\n 'Search button disabled. Please enter a search term.'\nexport const SEARCH_BUTTON_ENABLED_TEXT = 'Search button enabled.'\nconst SUGGESTIONS = 'Suggestions'\nconst SUGGESTIONS_INFO =\n 'Suggestions found, use up and down arrows to review and enter to select'\nconst MAX_SUGGESTIONS = 5\n\nexport interface SearchBarProps extends HTMLAttributes {\n placeholder: string\n /**\n * type of data being passed to search bar\n */\n articleList: SupportArticle[]\n /**\n * Set prefix for href of suggestion items\n */\n hrefPrefix?: RelativePathType\n /**\n * Style set for search bar container\n */\n classNameContainer?: string\n}\n\nexport const SearchBar = ({\n id,\n articleList,\n hrefPrefix = '/',\n placeholder,\n classNameContainer,\n ...props\n}: // eslint-disable-next-line sonarjs/cognitive-complexity\nSearchBarProps) => {\n const hasRehydrated = useHasRehydrated()\n const searchParams = useSearchParams()\n const inputRef = useRef(null)\n const resetButtonRef = useRef(null)\n const suggestionItemRef = useRef([])\n const [activeSuggestion, setActiveSuggestion] = useState(-1)\n const [isInputActive, setIsInputActive] = useState(false)\n const [showSuggestion, setShowSuggestion] = useState(false)\n const [inputValue, setInputValue] = useState(searchParams.get('query') ?? '')\n const [searchResultList, setSearchResultList] = useState([])\n const router = useRouter()\n\n const search = useMemo(() => {\n const transformedNodes = articleList.map(\n (item: SupportArticle, index: number) => ({\n index,\n ...item,\n content: {\n __html__: item.content.__html__.replace(\n /^([\\s\\S]+?)Related FAQs[\\s\\S]*?<\\/h.>[\\s\\S]+$/,\n '$1',\n ),\n },\n }),\n )\n return configureSearchEngine(transformedNodes, 'index', [\n 'title',\n 'content',\n ])\n }, [articleList])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const throttleGetResults = useCallback(\n throttle(\n (value: string) => {\n const results = getSearchResults(value, search)\n setSearchResultList(results)\n },\n 1000,\n {\n leading: false,\n trailing: true,\n },\n ),\n [search],\n )\n\n const handleInputChange = useCallback(\n (e: ChangeEvent) => {\n const value = e.target.value\n if (value.trim() === '') {\n setInputValue('')\n setSearchResultList([])\n return\n }\n throttleGetResults(value)\n setInputValue(value)\n },\n [throttleGetResults],\n )\n useEffect(() => {\n // if inputValue is set via search params...\n if (inputValue) {\n const results = getSearchResults(inputValue, search)\n setSearchResultList(results)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleReset = () => {\n setInputValue('')\n setSearchResultList([])\n }\n\n const filteredSuggestions = searchResultList\n .slice(0, MAX_SUGGESTIONS)\n .map((item, suggestionId) => ({\n suggestionId,\n ...item,\n }))\n const isSearchQueryValid = inputValue && inputValue.toString().trim() !== ''\n\n /**\n * Navigate to first item in list on keydown event of input\n * @param e\n */\n const onInputKeyDownPress = (e: KeyboardEvent) => {\n setShowSuggestion(true)\n setIsInputActive(false)\n // Focus on first list item\n if (e.key === 'ArrowDown' || e.key === 'Down') {\n e.preventDefault()\n ;(suggestionItemRef.current[0].children[0] as HTMLAnchorElement)?.focus()\n setActiveSuggestion(0)\n }\n // As focus moves out of input field, we won't show suggestion list\n if (e.key === 'Tab') {\n setShowSuggestion(false)\n }\n // On enter should behave like click of search button\n if (e.key === 'Enter') {\n setShowSuggestion(false)\n if (isSearchQueryValid) {\n router.push(`${hrefPrefix}search/?query=${inputValue}`)\n }\n }\n }\n\n const handleCloseSuggestions: MouseEventHandler = () => {\n setShowSuggestion(false)\n setIsInputActive(false)\n if (isSearchQueryValid) {\n router.push(`${hrefPrefix}search/?query=${inputValue}`)\n }\n }\n\n /**\n * On focusing back to input, suggestions should appear back if it was collapsed earlier\n */\n const onFocusOfInput: FocusEventHandler = (e) => {\n setShowSuggestion(filteredSuggestions.length > 0)\n setIsInputActive(e.target.getAttribute('data-input') === 'keyboard')\n }\n\n /**\n * Navigate through suggestion list\n * @param e\n */\n const navigateSuggestionList = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault()\n navigateUp()\n break\n case 'ArrowDown':\n e.preventDefault()\n navigateDown()\n break\n case 'Tab':\n e.preventDefault()\n setFocusToClearButton()\n break\n default:\n break\n }\n }\n\n /**\n * Navigate down the suggestion list\n */\n const navigateDown = () => {\n if (activeSuggestion === filteredSuggestions.length - 1) {\n suggestionItemRef.current[0].focus()\n ;(suggestionItemRef.current[0].children[0] as HTMLAnchorElement).focus()\n setActiveSuggestion(0)\n return\n }\n ;(\n suggestionItemRef.current[activeSuggestion + 1]\n .children[0] as HTMLAnchorElement\n ).focus()\n setActiveSuggestion(activeSuggestion + 1)\n }\n\n /**\n * Navigate up the suggestion list\n */\n const navigateUp = () => {\n if (activeSuggestion === 0) {\n inputRef.current?.focus() // condition for focus on input is covered in tests\n return\n }\n ;(\n suggestionItemRef.current[activeSuggestion - 1]\n .children[0] as HTMLAnchorElement\n ).focus()\n setActiveSuggestion(activeSuggestion - 1)\n }\n\n /**\n * Once we are at last suggestion item then on press of tab it should focus on reset button\n */\n const setFocusToClearButton = () => {\n resetButtonRef.current?.focus() // condition for focus on reset button is covered in tests\n suggestionItemRef.current[activeSuggestion].blur()\n setActiveSuggestion(-1)\n setShowSuggestion(false)\n }\n\n /**\n * Highlight search query words in suggestion box\n * @param title\n */\n const highlightSearchWords = (title: string) => {\n const input = `${inputValue}`.toLowerCase().replace(/[^\\w\\s]/gi, '')\n const keyWords = input.split(' ')\n // highlight single word search with prefix strategy\n if (title.toLowerCase().includes(input)) {\n return highlightWords(title, new RegExp(`(\\\\b)(${input})`, 'gi'))\n }\n // highlight multiple words in same sentence\n if (keyWords.length > 1) {\n const groups = formRegexForMultiWordSearch(keyWords)\n return highlightWords(title, new RegExp(groups, 'gi'))\n }\n // if search results are available but input query doesn't match the\n // keywords then just show the title without any highlighter\n if (!title.toLowerCase().includes(input)) {\n return (\n \n {title}\n \n )\n }\n }\n\n const isClearButtonVisible = inputValue && inputValue.toString().trim() !== ''\n\n return (\n
\n \n \n {filteredSuggestions.length > 0 && (\n // only readable by screen reader to inform users about number of suggestions available\n \n \n {`${filteredSuggestions.length} ${SUGGESTIONS_INFO}`}\n \n \n )}\n \n \n \n \n \n \n
\n {inputValue !== '' && ( // Suggestion box should be visible if search query has any results\n 0}\n className={`tw-absolute tw-z-50 -tw-mt-0.5 tw-box-border tw-w-full tw-rounded-lg tw-border tw-border-grey80 tw-bg-white tw-p-4 tw-shadow ${\n !showSuggestion ? 'tw-hidden' : ''\n }`}\n id={`${id}_suggestions`}\n aria-labelledby={`${id}_suggestions_label`}\n data-testid={'test-suggestions-dialog'}\n >\n \n {SUGGESTIONS}\n \n
    \n {filteredSuggestions.map(({ slug, title, suggestionId }) => {\n return (\n {\n suggestionItemRef.current[suggestionId] =\n el as HTMLLIElement\n }}\n >\n \n {highlightSearchWords(title)}\n \n \n )\n })}\n
\n \n )}\n \n )\n}\n","'use client'\n\nimport { Heading, Tabs } from '@chaseweb/ui-library/src'\nimport { useRouter } from 'next/navigation'\n\nimport type { FeatureTypeIdEnum } from '@/constants'\nimport type { FeatureDataFilteredByType } from '@/data/aem/types'\n\ntype Props = {\n featureData: FeatureDataFilteredByType\n}\n\nexport const TabsComponent = ({ featureData }: Props) => {\n const { push } = useRouter()\n const handleValueChange = (newTab: string) => {\n push(newTab)\n }\n\n return (\n <>\n \n \n {featureData.tabList.map((tab) => {\n return (\n \n {tab.label}\n \n )\n })}\n \n \n {featureData.shouldAddHeader && (\n \n {featureData.selectedTabLabel}\n \n )}\n \n )\n}\n","export default {\"src\":\"/gb/en/_next/static/media/search-bar.d40fed2d.svg\",\"height\":80,\"width\":80,\"blurWidth\":0,\"blurHeight\":0};","'use client'\n\nimport NoResultsImg from '@chaseweb/assets/resources/search-bar.svg'\nimport { Button, Heading } from '@chaseweb/ui-library/src'\nimport { useRouter, useSearchParams } from 'next/navigation'\nimport type { HTMLAttributes } from 'react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\nimport { Link, LocalImage } from '@/components'\nimport type { SupportArticle } from '@/data/aem'\n\nimport {\n configureSearchEngine,\n getSearchResults,\n} from '../../../components/search-bar/utils'\n\nconst SEARCH_RESULT_AMOUNT = 10\n\ninterface SearchResultsProps extends HTMLAttributes {\n supportArticleList: SupportArticle[]\n hrefPrefix: `/${string}`\n}\n\nexport const findQueryValue = (paramsArray: [string, string][]) => {\n const paramQueryArray = paramsArray.find((array) => array.includes('query'))\n return paramQueryArray ? paramQueryArray[1] : ''\n}\n\nconst IsANumber = (n: string) => /^\\d*$/.test(n)\n\nexport const SearchResults = ({\n supportArticleList,\n hrefPrefix,\n ...props\n}: SearchResultsProps) => {\n const [...urlParamsArray] = useSearchParams()\n const [pageNumber, setPageNumber] = useState(0)\n const [visibleArticles, setVisibleArticles] = useState([])\n const [viewingAmount, setViewingAmount] = useState(SEARCH_RESULT_AMOUNT)\n const listContainerRef = useRef(null)\n\n const paramQueryValue = findQueryValue(urlParamsArray)\n const router = useRouter()\n const resultList = useMemo(() => {\n const nodeList = supportArticleList.map(\n (item: SupportArticle, index: number) => ({\n index,\n ...item,\n content: {\n __html__: item.content.__html__.replace(\n /^([\\s\\S]+?)Related FAQs[\\s\\S]*?<\\/h.>[\\s\\S]+$/,\n '$1',\n ),\n },\n }),\n )\n const search = configureSearchEngine(nodeList, 'index', [\n 'title',\n ['content', '__html__'],\n ])\n return getSearchResults(paramQueryValue || '', search)\n }, [supportArticleList, paramQueryValue])\n\n useEffect(() => {\n const pageParamsArray = urlParamsArray.find((array) =>\n array.includes('page'),\n )\n\n const page =\n pageParamsArray && IsANumber(pageParamsArray[1]) && pageParamsArray[1]\n ? pageParamsArray[1]\n : 1\n if (page == 1) setViewingAmount(SEARCH_RESULT_AMOUNT)\n setPageNumber(+page)\n setVisibleArticles(resultList.slice(0, SEARCH_RESULT_AMOUNT * +page))\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pageNumber, paramQueryValue])\n\n const handleOnShowMoreButtonClick = () => {\n const currentLink =\n listContainerRef.current?.children[viewingAmount - 1].querySelector('a')\n currentLink?.focus()\n\n setViewingAmount(() => viewingAmount + SEARCH_RESULT_AMOUNT)\n setVisibleArticles(\n resultList.slice(0, viewingAmount * +pageNumber + SEARCH_RESULT_AMOUNT),\n )\n\n const newUrlParamsEntry = urlParamsArray.map((array) => {\n const [paramName, paramValue] = array\n if (paramName === 'page' && IsANumber(paramValue) && paramValue)\n return `page=${+paramValue + 1}`\n else if (paramName === 'page' && (!IsANumber(paramValue) || !paramValue))\n return 'page=2'\n else return array.join('=')\n })\n\n if (!newUrlParamsEntry.find((array) => array.includes('page')))\n newUrlParamsEntry.push('page=2')\n\n const newUrlParams = newUrlParamsEntry.join('&')\n\n router.replace(`?${newUrlParams}`, {\n scroll: false,\n })\n }\n\n if (!resultList.length) {\n return (\n
\n
\n

{`We couldn't find any results for \"${paramQueryValue}\"`}

\n

\n Try narrowing your search by adding more words or start a new\n search.\n

\n
\n \n
\n )\n }\n\n return (\n
\n {`${resultList.length} Results for \"${paramQueryValue}\"`}\n \n {visibleArticles.map((article) => (\n
  • \n \n
  • \n ))}\n \n {resultList.length > viewingAmount * pageNumber && (\n
    \n

    {`Viewing ${viewingAmount * pageNumber} out of ${\n resultList.length\n } results`}

    \n \n Show more\n \n
    \n )}\n
    \n )\n}\n","'use client'\n\nimport { Header, Navigation } from '@chaseweb/ui-library/src/molecules'\nimport { cn } from '@chaseweb/utils/cn'\nimport { usePathname } from 'next/navigation'\n\nimport {\n DesktopHeaderCta,\n Link,\n MobileHeaderCta,\n SkipToMainContentButton,\n} from '@/components'\nimport { FeatureActionLinkEnum, type FeatureTypeIdEnum } from '@/constants'\nimport type {\n ItemGroup,\n ItemLink,\n} from '@/data/aem/features/featureSchemas/layout-features/processGroupItemLink'\nimport type { FeatureDataFilteredByType } from '@/data/aem/types'\n\ntype Props = {\n featureData: FeatureDataFilteredByType\n logoImage: React.JSX.Element\n iconImageMap: Record\n}\n\nconst GroupOrLink = ({\n item,\n pathname,\n iconImageMap,\n}: {\n item: ItemGroup | ItemLink\n pathname: string\n iconImageMap: Props['iconImageMap']\n // eslint-disable-next-line sonarjs/cognitive-complexity\n}) => {\n if (item.type === 'group') {\n return (\n \n {item.label}\n \n {item.items[0].type === 'group' ? (\n item.items.map(\n (subItem) =>\n subItem.type === 'group' && (\n \n {subItem.label && (\n \n {subItem.label}\n \n )}\n {subItem.items.map((subGroupItem) => (\n \n ))}\n \n ),\n )\n ) : (\n \n {item.items.map((subItem) => (\n \n ))}\n \n )}\n \n \n )\n } else if (item.type === 'link' && item.linkData) {\n if (item.linkData.link) {\n const isActive =\n item.linkData.link === '/'\n ? pathname === '/'\n : item.linkData.link &&\n pathname.startsWith(item.linkData.link.replace(/\\/$/, ''))\n\n return (\n \n \n \n {item.iconUrl && (\n \n {iconImageMap[item.iconUrl.src]}\n \n )}\n \n {item.label}\n \n \n \n \n )\n } else if (\n item.linkData?.actionData.action === FeatureActionLinkEnum.DOWNLOAD &&\n !/^\\/?((sitemap)|(support)|(legal)|(download))\\//.test(pathname)\n ) {\n return item.visibleOnly === 'desktop' ? (\n \n \n \n ) : (\n \n \n \n )\n }\n }\n}\n\nexport const ClientNavibarComponent = ({\n featureData,\n logoImage,\n iconImageMap,\n}: Props) => {\n const pathname = usePathname()\n return (\n \n {(featureData.items ?? []).length > 0 && }\n \n \n {featureData.logoClickable ? (\n \n {logoImage}\n \n ) : (\n
    \n
    {logoImage}
    \n
    \n )}\n
    \n \n {(featureData.items ?? []).length > 0 && (\n \n {featureData.items?.map((item) => (\n \n ))}\n \n )}\n \n
    \n
    \n )\n}\n","export default {\"src\":\"/gb/en/_next/static/media/qr-code-fallback.d7e8d1f8.png\",\"height\":698,\"width\":682,\"blurDataURL\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAFVBMVEXNzc3Hx8fW1ta9vb2bm5uQkJCMjIxG3cQPAAAACXBIWXMAABYlAAAWJQFJUiTwAAAALUlEQVR4nCWKgQkAMAzCom77/+Rih6IQwkVgHSSQbQp+0+3HhCxUVmwEvBXwAAoPAEOrAUOQAAAAAElFTkSuQmCC\",\"blurWidth\":8,\"blurHeight\":8};","import unset from 'lodash/fp/unset'\nimport { notFound } from 'next/navigation'\n\nimport type { Article, ArticleMeta } from '@/data/aem/articles/types'\nimport type { SlugPathType } from '@/types'\nexport const TILES_COLUMN = 6\nexport const LOAD_MORE_AMOUNT = 6\n\nexport const featuredSlugsSet = new Set([\n 'romance-scams/',\n 'bank-online-safely/',\n 'problem-gambling/',\n 'money-lessons-kids/',\n 'identity-scams/',\n 'avoid-elder-fraud/',\n])\n\nexport const getCategories = (articles: Article[]) => {\n const hubArticleCategorySet = new Set()\n articles.forEach(({ category }) => {\n hubArticleCategorySet.add(category)\n })\n return [...hubArticleCategorySet]\n}\n\nexport const transformCategoryToLabel = (category: string) => {\n return category.replaceAll('--', ' & ').replaceAll('-', ' ')\n}\n\nexport const transformCategoryToLabelAndCapitalise = (category: string) => {\n return transformCategoryToLabel(category)\n .split(' ')\n .map((word) => `${word.charAt(0).toUpperCase()}${word.slice(1)}`)\n .join(' ')\n}\n\nexport const transformCategoryToPath = (category: string) => {\n return category\n .replaceAll(' & ', '--')\n .replaceAll('-&-', '--')\n .replaceAll(' ', '-')\n .toLowerCase()\n}\n\nexport const filterCategoryArticles = (\n allArticles: Article[],\n category: string,\n) => {\n return allArticles.filter((article) => article.category === category)\n}\n\nexport const getArticleBySlug = (\n allArticles: Article[],\n slug: SlugPathType,\n) => {\n const article = allArticles.find((article) => article.slug === slug)\n if (!article) return notFound()\n return article\n}\n\nexport const getRelatedArticles = (\n allArticles: Article[],\n currentArticle: Article,\n) => {\n return allArticles.filter(\n (article) =>\n article.category === currentArticle.category &&\n article.slug !== currentArticle.slug,\n )\n}\n\nexport const getArticleMetaForArticlePage = (\n article: Article,\n index: number,\n): ArticleMeta => {\n const {\n slug,\n title,\n readingTime,\n category,\n articleSummary,\n multiSizeImage: { tablet, desktop },\n } = article\n\n const image = index === 0 ? desktop : (tablet ?? desktop)\n\n return {\n slug,\n title,\n readingTime,\n category: transformCategoryToLabel(category),\n articleSummary,\n image,\n }\n}\n\nexport const stripPlaceholderData = (article: ArticleMeta): ArticleMeta => {\n return unset('multiSizeImage.desktop.base64', article)\n}\n","import { ArticleTile } from '@chaseweb/ui-library/src'\nimport { type FC } from 'react'\n\nimport { transformCategoryToLabel } from './utils'\n\nexport interface TileProps {\n variant: 'sm' | 'md' | 'lg'\n label: string\n title: string\n description?: string | React.JSX.Element | React.JSX.Element[]\n summary?: string\n image: React.JSX.Element\n}\n\nexport const Tile: FC = ({\n variant,\n image,\n label,\n title,\n description,\n summary,\n}) => (\n \n \n {image}\n \n \n \n {transformCategoryToLabel(label)}\n \n\n {title}\n\n {description && (\n {description}\n )}\n\n {summary && {summary}}\n \n \n)\n","'use client'\n\nimport { Button, Heading } from '@chaseweb/ui-library/src'\nimport { cn } from '@chaseweb/utils/cn'\nimport { useRouter, useSearchParams } from 'next/navigation'\nimport {\n type FC,\n type HTMLAttributes,\n Suspense,\n useEffect,\n useRef,\n useState,\n} from 'react'\n\nimport { Link } from '@/components'\nimport type { ArticleMeta } from '@/data/aem/articles/types'\nimport { parseContent } from '@/lib/parse-content'\nimport type { RelativePathOrHrefExternalType } from '@/types'\n\nimport { Tile } from './tile'\nimport { LOAD_MORE_AMOUNT, TILES_COLUMN } from './utils'\n\ninterface LoadMoreClientArticle extends ArticleMeta {\n imageComponent: React.JSX.Element\n}\n\nexport interface LoadMoreClientProps\n extends HTMLAttributes {\n articleList: LoadMoreClientArticle[]\n linkPathPrefix: RelativePathOrHrefExternalType\n title?: string\n}\n\nconst TILES_AMOUNT_PRELOADED = TILES_COLUMN + 1\n\nconst IsANumber = (n: string) => /^\\d*$/.test(n)\n\nconst LoadMoreImplementation: FC = ({\n articleList,\n linkPathPrefix,\n className,\n title,\n ...props\n}) => {\n const tileContainer = useRef(null)\n const totalAmount = articleList.length + TILES_AMOUNT_PRELOADED\n const router = useRouter()\n const [...urlParamsArray] = useSearchParams()\n const [pageNumber, setPageNumber] = useState(0)\n const [visibleTiles, setVisibleTiles] = useState([])\n\n useEffect(() => {\n const pageParamsArray = urlParamsArray.find((array) =>\n array.includes('page'),\n )\n const page =\n pageParamsArray && IsANumber(pageParamsArray[1]) && pageParamsArray[1]\n ? pageParamsArray[1]\n : 1\n setPageNumber(() => +page)\n setVisibleTiles(articleList.slice(0, LOAD_MORE_AMOUNT * +page))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n if (!articleList.length) {\n return null\n }\n\n const handleLoadMore = () => {\n const currentLink = tileContainer.current?.children[\n pageNumber * LOAD_MORE_AMOUNT - 1\n ] as HTMLAnchorElement\n currentLink.focus()\n\n setPageNumber(pageNumber + 1)\n setVisibleTiles(() =>\n articleList.slice(0, (pageNumber + 1) * LOAD_MORE_AMOUNT),\n )\n\n const newUrlParamsArray = urlParamsArray.map((array) => {\n const [paramName, paramValue] = array\n if (paramName === 'page' && IsANumber(paramValue) && paramValue)\n return `page=${+paramValue + 1}`\n else if (paramName === 'page' && (!IsANumber(paramValue) || !paramValue))\n return 'page=2'\n else return array.join('=')\n })\n\n if (!newUrlParamsArray.find((array) => array.includes('page')))\n newUrlParamsArray.push('page=2')\n\n const newUrlParams = newUrlParamsArray.join('&')\n\n router.replace(`?${newUrlParams}`, {\n scroll: false,\n })\n }\n\n return (\n \n {title && (\n \n {title}\n \n )}\n \n {visibleTiles.map((tile, index) => {\n const isLargeTile =\n index >= LOAD_MORE_AMOUNT &&\n (index % LOAD_MORE_AMOUNT === 0 || index % LOAD_MORE_AMOUNT === 1)\n return (\n \n {isLargeTile ? (\n \n ) : (\n \n )}\n \n )\n })}\n \n {totalAmount > LOAD_MORE_AMOUNT * pageNumber + TILES_AMOUNT_PRELOADED && (\n
    \n

    {`Viewing ${\n LOAD_MORE_AMOUNT * pageNumber + TILES_AMOUNT_PRELOADED\n } out of ${totalAmount} articles`}

    \n \n
    \n )}\n \n )\n}\n\nexport const LoadMoreClient: FC = ({ ...props }) => {\n return (\n // Wrapping LoadMore in a Suspense boundary ensures the whole page does not de-opt to client-side rendering\n // More info here: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout\n \n \n \n )\n}\n","import * as JsSearch from 'js-search'\n\nimport type { SupportArticle } from '@/data/aem'\n\n/**\n * Highlighting search words in suggestions box\n */\nexport const highlightWords = (result: string, pattern: RegExp) => {\n return result.split(pattern).map((word: string, index: number) => {\n // There is no way to guarantee uniquiness to the word\n const key = index.toString(32)\n return (\n \n {word}\n \n )\n })\n}\n\n/**\n * Regex pattern for multi word search\n * @param keyWords\n */\nexport const formRegexForMultiWordSearch = (keyWords: string[]) => {\n const format = /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/\n return (\n keyWords\n // get rid of spaces and special characters\n .filter((word: string) => {\n return word !== '' && !format.test(word)\n })\n .map((word: string) => `(\\\\b)(${word})`.trim())\n .join('|')\n )\n}\n\nexport const configureSearchEngine = (\n transformedNodes: SupportArticle[],\n idSearch: string,\n searchIndices: Array>,\n) => {\n const searchEngine = new JsSearch.Search(idSearch)\n searchEngine.indexStrategy = new JsSearch.PrefixIndexStrategy()\n searchEngine.sanitizer = new JsSearch.LowerCaseSanitizer()\n searchEngine.searchIndex = new JsSearch.TfIdfSearchIndex(idSearch)\n searchIndices.forEach((searchIndex) => {\n searchEngine.addIndex(searchIndex)\n })\n searchEngine.addDocuments(transformedNodes)\n return searchEngine\n}\n\nexport const getSearchResults = (value: string, search: JsSearch.Search) => {\n const queryResultSet = new Set()\n let requiredData: SupportArticle[] = []\n const splitWords = value.split(' ')\n if (splitWords.length > 1) {\n splitWords.forEach((word: string) => {\n search.search(word).forEach((output) => {\n queryResultSet.add(output)\n })\n })\n }\n if (value.length > 1) {\n search.search(value).forEach((output) => {\n queryResultSet.add(output)\n })\n // results based upon multiword as well as single word search\n const allData = [...queryResultSet] as SupportArticle[]\n // sort search result for multiwords in such a way that they appear on top\n const topSearchData = sortSearchResults(allData, value)\n // remove duplicate data if present\n requiredData = [...new Set([...topSearchData, ...allData])]\n }\n return requiredData\n}\n\n// sort data based upon indexOf values\nconst sortSearchResults = (data: SupportArticle[], value: string) => {\n return data\n .filter((item: SupportArticle) => {\n return item.title.toLowerCase().includes(value.toLowerCase())\n })\n .sort((a: SupportArticle, b: SupportArticle) => {\n // Sort results by matching title with keyword position in title\n if (\n a.title.toLowerCase().indexOf(value.toLowerCase()) >\n b.title.toLowerCase().indexOf(value.toLowerCase())\n ) {\n return 1\n }\n if (\n a.title.toLowerCase().indexOf(value.toLowerCase()) <\n b.title.toLowerCase().indexOf(value.toLowerCase())\n ) {\n return -1\n }\n return -1\n })\n}\n","export * from './utils'\n","'use client'\n\nimport { Promo as PromoUI } from '@chaseweb/ui-library/src'\nimport type { RefObject } from 'react'\nimport { useEffect, useRef } from 'react'\n\nimport { ActionableLink, DownloadLink } from '@/components'\nimport type { FeatureTypeIdEnum } from '@/constants'\nimport { useCTAStore } from '@/lib/stores'\n\nimport type { ComponentProps } from '../../types'\n\nexport const PromoCta = ({\n featureData,\n}: ComponentProps) => {\n const promoCtaRef = useRef(null) as RefObject\n const { setPromoCtaRef } = useCTAStore()\n\n useEffect(() => {\n if (promoCtaRef.current) {\n setPromoCtaRef(promoCtaRef)\n }\n return () => setPromoCtaRef(null)\n }, [setPromoCtaRef])\n\n return (\n
    \n \n {featureData.cta.linkData ? (\n \n {featureData.cta.label}\n \n ) : (\n \n {featureData.cta.label}\n \n )}\n \n
    \n )\n}\n","'use client'\n\nimport { useSplitStore } from '@chaseweb/utils/split'\nimport { createContext, type ReactNode } from 'react'\n\nexport const featureFlaggerContext = createContext>({})\n\nexport const FeatureFlagger = ({\n children,\n featureFlag,\n}: {\n children: ReactNode\n featureFlag?: {\n key: string\n treatment: string\n isControl: boolean\n } | null\n}): ReactNode => {\n const client = useSplitStore((state) => state.clients.user)\n\n if (featureFlag) {\n const splitFlag = client?.getTreatmentWithConfig(featureFlag.key)\n const shouldShowComponent =\n splitFlag?.treatment === featureFlag.treatment || // show if the feature flag treatment matches for this feature\n (featureFlag.isControl &&\n (splitFlag?.treatment === 'control' || // show if split is in CONTROL mode and the feature is marked as control\n !splitFlag)) // show if js split isn't available\n\n if (shouldShowComponent) {\n if (splitFlag?.config) {\n return (\n \n {children}\n \n )\n }\n return children\n }\n return null\n }\n return children\n}\n","'use client'\n\nimport {\n Button,\n CustomSvg,\n Heading,\n Prose,\n Select,\n Tabs,\n} from '@chaseweb/ui-library/src'\nimport type { ChartOptions } from 'chart.js'\nimport {\n Chart,\n Legend,\n LinearScale,\n LineController,\n LineElement,\n PointElement,\n TimeScale,\n Title,\n Tooltip,\n} from 'chart.js'\nChart.register([\n TimeScale,\n LineController,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend,\n Title,\n])\nimport 'chartjs-adapter-date-fns'\n\nimport { parse } from 'date-fns'\nimport merge from 'deepmerge'\nimport { useEffect, useMemo, useState } from 'react'\n\nimport { StyledLink } from '@/components'\nimport type { FeatureAvailabilityAndPerformanceReport } from '@/data/aem/main-pages/pageTransform/availability-and-performance-report'\nimport type { HrefExternals } from '@/types'\n\nenum TabOptions {\n 'openBanking' = 'Open banking performance',\n 'appPerformance' = 'App performance',\n}\ntype TabEnumType = keyof typeof TabOptions\nconst TabKeys = ['openBanking', 'appPerformance'] as const\nconst dateFormat = 'dd/MM/yyyy'\nconst QuarterList = [1, 2, 3, 4] as const\nconst graphOptions: ChartOptions = {\n clip: false,\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n x: {\n type: 'time',\n time: {\n tooltipFormat: dateFormat,\n displayFormats: {\n day: dateFormat,\n },\n },\n },\n },\n plugins: {\n tooltip: {\n intersect: false,\n position: 'nearest',\n },\n legend: {\n display: true,\n position: 'bottom',\n labels: {\n boxHeight: 3,\n },\n },\n },\n animation: false,\n interaction: {\n mode: 'x',\n },\n layout: {\n padding: 10,\n },\n elements: {\n point: {\n radius: 1,\n hitRadius: 3,\n },\n },\n} as const\n\nconst availabilityGraphOptions: ChartOptions = merge(\n graphOptions,\n {\n scales: {\n y: {\n suggestedMin: 90,\n suggestedMax: 100,\n },\n },\n plugins: {\n title: {\n display: true,\n text: 'Uptime %',\n font: { size: 20, weight: 'normal' },\n },\n },\n },\n)\n\nconst performanceGraphOptions: ChartOptions = merge(\n graphOptions,\n {\n scales: {\n y: {\n suggestedMin: 0,\n suggestedMax: 250,\n },\n },\n plugins: {\n title: {\n display: true,\n text: 'Performance (ms)',\n font: { size: 20, weight: 'normal' },\n },\n },\n },\n)\n\nexport const Report = ({\n featureData,\n}: {\n featureData: FeatureAvailabilityAndPerformanceReport\n}) => {\n const [currentYear, setCurrentYear] = useState(\n Math.max(...Object.keys(featureData.data).map(Number)),\n )\n const [currentQuarter, setCurrentQuarter] = useState(\n Math.max(...Object.keys(featureData.data[currentYear]).map(Number)),\n )\n\n const currentQuarterData = useMemo(\n () => featureData.data[currentYear][currentQuarter],\n [currentQuarter, currentYear, featureData.data],\n )\n\n useEffect(() => {\n const dateList = currentQuarterData.dateStringList.map((dateString) =>\n parse(dateString, dateFormat, new Date()),\n )\n const chartAvailability = new Chart(\n document.querySelector('#graphAvailability') as HTMLCanvasElement,\n {\n type: 'line',\n data: {\n labels: dateList,\n datasets: [\n {\n label: 'Chase App Availability',\n data: currentQuarterData.appPerformance.graph.uptime,\n fill: false,\n // eslint-disable-next-line sonarjs/no-duplicate-string\n borderColor: 'rgb(0, 176, 240)',\n backgroundColor: 'rgb(0, 176, 240)',\n tension: 0.1,\n },\n {\n label: 'Open Banking Availability',\n data: currentQuarterData.openBanking.graph.uptime,\n fill: false,\n borderColor: 'rgb(31, 56, 100)',\n backgroundColor: 'rgb(31, 56, 100)',\n tension: 0.1,\n },\n ],\n },\n options: availabilityGraphOptions,\n },\n )\n const chartPerformance = new Chart(\n document.querySelector('#graphPerformance') as HTMLCanvasElement,\n {\n type: 'line',\n data: {\n labels: dateList,\n datasets: [\n {\n label: 'AIS',\n data: currentQuarterData.openBanking.graph.aisp,\n fill: false,\n borderColor: 'rgb(68, 114, 196)',\n backgroundColor: 'rgb(68, 114, 196)',\n tension: 0.1,\n },\n {\n label: 'PIS',\n data: currentQuarterData.openBanking.graph.pisp,\n fill: false,\n borderColor: 'rgb(237, 125, 50)',\n backgroundColor: 'rgb(237, 125, 50)',\n tension: 0.1,\n },\n {\n label: 'COF',\n data: currentQuarterData.openBanking.graph.cof,\n fill: false,\n borderColor: 'rgb(165, 165, 165)',\n backgroundColor: 'rgb(165, 165, 165)',\n tension: 0.1,\n },\n {\n label: 'Chase App',\n data: currentQuarterData.appPerformance.graph.response,\n fill: false,\n borderColor: 'rgb(0, 176, 240)',\n backgroundColor: 'rgb(0, 176, 240)',\n tension: 0.1,\n },\n ],\n },\n options: performanceGraphOptions,\n },\n )\n return () => {\n chartAvailability.destroy()\n chartPerformance.destroy()\n }\n }, [currentQuarterData])\n\n const [tabSelected, setTabSelected] = useState('openBanking')\n\n const yearList = useMemo(\n () => [\n ...Object.keys(featureData.data).sort((a, b) => Number(a) - Number(b)),\n ],\n [featureData],\n )\n\n const quarterMap = useMemo(\n () =>\n Object.keys(featureData.data[currentYear]).reduce(\n (prev, quarter) => ({ ...prev, [quarter]: true }),\n {\n 1: false,\n 2: false,\n 3: false,\n 4: false,\n },\n ),\n [featureData.data, currentYear],\n )\n\n const averageList = [\n {\n type: 'availability',\n value: currentQuarterData?.[tabSelected].availabilityAverage,\n },\n {\n type: 'performance',\n value: currentQuarterData?.[tabSelected].performanceAverage,\n },\n ]\n\n const handleYearSelectChange = (newValue: string) => {\n const year = Number(newValue)\n setCurrentYear(year)\n if (!featureData.data[year][currentQuarter]) {\n const quarter = Math.max(\n ...Object.keys(featureData.data[year]).map(Number),\n )\n setCurrentQuarter(quarter)\n }\n }\n\n const handleQuarterClick = (ev: React.PointerEvent) => {\n const newQuarter = Number(ev.currentTarget.dataset.value)\n setCurrentQuarter(newQuarter)\n }\n\n const handleValueChange = (tabSelected: string) => {\n setTabSelected(tabSelected as TabEnumType)\n }\n\n return (\n \n \n \n {TabKeys.map((tabKey) => (\n \n {TabOptions[tabKey]}\n \n ))}\n \n \n {TabOptions[tabSelected]}\n
    \n
    \n \n Select year\n \n \n \n \n \n \n \n \n \n \n {yearList.map((year) => (\n \n {year}\n \n \n ))}\n \n \n \n \n
    \n \n Select quarter\n
    \n \n {QuarterList.map((quarter) => (\n \n \n \n ))}\n
    \n
    \n \n
    \n {averageList.map((averageData) => (\n \n
    \n Quarterly average {averageData.type}\n
    \n
    \n {averageData.value}\n
    \n \n ))}\n
    \n \n Availability\n
    \n \n
    \n Performance\n
    \n \n
    \n
    \n \n Download data\n \n
    \n
    \n )\n}\n","'use client'\n\nimport { cn } from '@chaseweb/utils/cn'\nimport { Children, type ReactElement, useEffect, useState } from 'react'\n\nexport const imageAnimationTimer = 5000\n\nexport const HeroMultiImageInterval = ({\n children,\n}: {\n children: ReactElement[]\n}) => {\n const [currentImage, setCurrentImage] = useState(0)\n\n useEffect(() => {\n const childrenCount = Children.count(children)\n if (childrenCount > 1) {\n const intervalId = setInterval(() => {\n setCurrentImage((cur) => {\n return (cur + 1) % childrenCount\n })\n }, imageAnimationTimer)\n return () => {\n clearInterval(intervalId)\n }\n }\n }, [children])\n\n return Children.map(children, (child: ReactElement, index) => {\n return (\n \n {child}\n \n )\n })\n}\n","'use client'\n\nimport { cn } from '@chaseweb/utils/cn'\nimport Script from 'next/script'\nimport { useEffect, useRef } from 'react'\n\nimport { Link } from '@/components/link'\n\ndeclare global {\n interface Window {\n Trustpilot?: {\n loadFromElement: (ref: HTMLElement, bool: boolean) => unknown\n }\n }\n}\n\nexport interface TrustpilotWidgetProps {\n className?: string\n}\n\nexport const TrustpilotWidget = ({ className }: TrustpilotWidgetProps) => {\n const ref = useRef(null)\n\n useEffect(() => {\n handleLoad()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleLoad = () => {\n if (ref.current && window.Trustpilot) {\n window.Trustpilot.loadFromElement(ref.current, true)\n }\n }\n\n return (\n <>\n \n \n \n \n \n )\n}\n\nTrustpilotWidget.displayName = 'TrustpilotWidget'\n","'use client'\n\nimport { useSplitStore } from '@chaseweb/utils/split'\nimport type { ReactElement, ReactNode } from 'react'\n\nexport const LabelFlagger = ({\n children,\n}: {\n children: ReactElement\n}): ReactNode => {\n const client = useSplitStore((state) => state.clients.user)\n const treatment = client?.getTreatmentWithConfig(\n 'homepage_feature_label',\n ).treatment\n\n if (treatment === 'on') {\n return children\n }\n return null\n}\n","'use client'\n\nimport { Hero as HeroUI } from '@chaseweb/ui-library/src'\nimport { cn } from '@chaseweb/utils/cn'\nimport { useSplitStore } from '@chaseweb/utils/split'\nimport type { RefObject } from 'react'\nimport { useEffect, useRef } from 'react'\n\nimport { ActionableLink, DownloadLink } from '@/components'\nimport { FeatureActionLinkEnum, type FeatureTypeIdEnum } from '@/constants'\nimport { useCTAStore } from '@/lib/stores'\nimport type { zActionableLinkType } from '@/lib/validators'\n\nimport type { ComponentProps } from '../../types'\n\nconst defaultHeroAction: zActionableLinkType = {\n actionData: {\n action: FeatureActionLinkEnum.DOWNLOAD,\n },\n link: undefined,\n}\n\nexport const HeroCta = ({\n featureData,\n}: ComponentProps) => {\n const client = useSplitStore((state) => state.clients.user)\n const treatmentCtaText = client?.getTreatmentWithConfig(\n 'homepage_hero_cta_text',\n )\n const treatmentCtaSize = client?.getTreatment('homepage_hero_cta_size')\n const treatmentCtaColour = client?.getTreatment('hero_cta_colour')\n\n const ctaRef = useRef(null) as RefObject\n const { setHeroCtaRef, setAlwaysVisible } = useCTAStore()\n\n useEffect(() => {\n if (client) {\n if (ctaRef.current) {\n setHeroCtaRef(ctaRef)\n setAlwaysVisible(false)\n } else {\n setAlwaysVisible(true)\n }\n }\n return () => setHeroCtaRef(null)\n }, [setHeroCtaRef, client, setAlwaysVisible])\n\n const ctaLabel = featureData.isHomepage\n ? (\n JSON.parse(\n treatmentCtaText?.config ?? '{\"inlineText\":\"Get the app\"}',\n ) as {\n inlineText: string\n }\n )['inlineText']\n : featureData.cta?.label\n\n const isCtaBigSize = treatmentCtaSize === 'on' && featureData.isHomepage\n const isCtaWhite = treatmentCtaColour === 'on' && featureData.isHomepage\n\n return featureData.cta ? (\n
    \n {client && (\n \n \n {ctaLabel}\n \n \n )}\n \n
    \n ) : null\n}\n","'use client'\n\nimport { cn } from '@chaseweb/utils/cn'\nimport { usePathname } from 'next/navigation'\n\nimport { BbaLogo } from '@/components'\n\nexport const HeroBbaLogo = () => {\n const pathname = usePathname()\n\n return ['/product/chase-account/', '/product/chase-saver-account/'].includes(\n pathname,\n ) ? (\n
    \n \n
    \n ) : null\n}\n","'use client'\n\nimport { useCarouselContext } from '@chaseweb/ui-library/src/molecules/carousel/carousel.context'\nimport type { HTMLAttributes } from 'react'\nimport { useEffect, useState } from 'react'\n\nexport const animationTimer = 5000\n\nexport const CarouselPromoInterval = ({\n children,\n ...props\n}: HTMLAttributes) => {\n const { setCurrentPage, childrenCount, currentPage } = useCarouselContext()\n const [isPlaying, setIsPlaying] = useState(false)\n\n const handleInOutEvent = (isInside: boolean) => () => {\n setIsPlaying(isInside)\n }\n\n useEffect(() => {\n if (!isPlaying && childrenCount > 1) {\n const intervalId = setInterval(() => {\n setCurrentPage((cur) => {\n return (cur + 1) % childrenCount\n })\n }, animationTimer)\n return () => {\n clearInterval(intervalId)\n }\n }\n }, [childrenCount, currentPage, isPlaying, setCurrentPage])\n\n return (\n \n {children}\n \n )\n}\n"],"names":["SEARCH_BUTTON_DISABLED_TEXT","SEARCH_BUTTON_ENABLED_TEXT","SearchBar","id","articleList","hrefPrefix","placeholder","classNameContainer","props","hasRehydrated","useHasRehydrated","searchParams","useSearchParams","inputRef","useRef","resetButtonRef","suggestionItemRef","activeSuggestion","setActiveSuggestion","useState","isInputActive","setIsInputActive","showSuggestion","setShowSuggestion","inputValue","setInputValue","get","searchResultList","setSearchResultList","router","useRouter","search","useMemo","transformedNodes","map","item","index","content","__html__","replace","configureSearchEngine","throttleGetResults","useCallback","throttle","getSearchResults","value","results","leading","trailing","handleInputChange","e","target","trim","useEffect","filteredSuggestions","slice","MAX_SUGGESTIONS","suggestionId","isSearchQueryValid","toString","navigateSuggestionList","key","preventDefault","navigateUp","navigateDown","setFocusToClearButton","length","current","focus","children","blur","highlightSearchWords","input","toLowerCase","keyWords","split","title","includes","highlightWords","groups","formRegexForMultiWordSearch","span","className","isClearButtonVisible","div","cn","disabled","type","ref","autoComplete","onKeyDown","onInputKeyDownPress","push","onFocus","onFocusOfInput","getAttribute","onChange","aria-autocomplete","role","aria-owns","aria-controls","aria-expanded","ScreenReader","aria-live","asChild","output","data-testid","SUGGESTIONS_INFO","button","tabIndex","aria-hidden","aria-label","onClick","handleReset","CustomSvg","name","handleCloseSuggestions","dialog","open","aria-labelledby","h2","SUGGESTIONS","ul","slug","li","el","Link","aria-selected","href","trackingActionLabel","sectionLabel","TabsComponent","featureData","Tabs","onValueChange","handleValueChange","newTab","defaultValue","path","defaultTabLabel","selectedTabLabel","mobileButtonClassName","mobile-aria-label-close","mobile-aria-label-open","ariaLabel","tabList","tab","label","shouldAddHeader","Heading","context","findQueryValue","paramQueryArray","paramsArray","find","array","test","n","SearchResults","supportArticleList","urlParamsArray","pageNumber","setPageNumber","visibleArticles","setVisibleArticles","viewingAmount","setViewingAmount","SEARCH_RESULT_AMOUNT","listContainerRef","paramQueryValue","resultList","nodeList","pageParamsArray","page","IsANumber","section","as","data-length","Button","noExternalIcon","variant","article","p","handleOnShowMoreButtonClick","currentLink","querySelector","newUrlParamsEntry","paramName","paramValue","join","newUrlParams","scroll","size","LocalImage","src","NoResultsImg","alt","GroupOrLink","pathname","iconImageMap","Navigation","items","subItem","subGroupItem","linkData","link","isActive","startsWith","visibleOnly","active","aria-current","iconUrl","actionData","action","FeatureActionLinkEnum","DOWNLOAD","DesktopHeaderCta","MobileHeaderCta","ClientNavibarComponent","logoImage","usePathname","Header","SkipToMainContentButton","logoClickable","notTracked","logoLabel","contentClassName","transformCategoryToLabel","category","replaceAll","Tile","image","description","summary","ArticleTile","hasHoverEffect","LoadMoreImplementation","linkPathPrefix","tileContainer","totalAmount","TILES_AMOUNT_PRELOADED","visibleTiles","setVisibleTiles","LOAD_MORE_AMOUNT","tile","isLargeTile","readingTime","articleSummary","parseContent","imageComponent","TILES_COLUMN","handleLoadMore","newUrlParamsArray","LoadMoreClient","Suspense","result","pattern","word","undefined","format","filter","idSearch","searchIndices","searchEngine","JsSearch","indexStrategy","sanitizer","searchIndex","forEach","addIndex","addDocuments","queryResultSet","Set","requiredData","splitWords","add","allData","sortSearchResults","data","sort","a","b","indexOf","PromoCta","promoCtaRef","setPromoCtaRef","useCTAStore","PromoUI","cta","ActionableLink","DownloadLink","featureFlaggerContext","createContext","featureFlag","client","useSplitStore","state","clients","user","splitFlag","getTreatmentWithConfig","treatment","shouldShowComponent","config","Provider","JSON","parse","Chart","register","TimeScale","LineController","LinearScale","PointElement","LineElement","Tooltip","Legend","Title","TabOptions","TabKeys","dateFormat","QuarterList","graphOptions","clip","responsive","maintainAspectRatio","scales","x","time","tooltipFormat","displayFormats","day","plugins","tooltip","intersect","position","legend","display","labels","boxHeight","animation","interaction","mode","layout","padding","elements","point","radius","hitRadius","availabilityGraphOptions","merge","y","suggestedMin","suggestedMax","text","font","weight","performanceGraphOptions","Report","currentYear","setCurrentYear","Math","max","Object","keys","Number","currentQuarter","setCurrentQuarter","currentQuarterData","dateList","dateStringList","dateString","Date","chartAvailability","document","datasets","appPerformance","graph","uptime","fill","borderColor","backgroundColor","tension","openBanking","options","chartPerformance","aisp","pisp","cof","response","destroy","tabSelected","setTabSelected","yearList","quarterMap","reduce","prev","quarter","averageList","availabilityAverage","performanceAverage","handleQuarterClick","ev","currentTarget","newQuarter","dataset","Prose","tabKey","Select","String","handleYearSelectChange","year","newValue","data-value","aria-checked","averageData","canvas","StyledLink","reportUrl","HeroMultiImageInterval","currentImage","setCurrentImage","childrenCount","Children","count","intervalId","setInterval","cur","imageAnimationTimer","clearInterval","child","TrustpilotWidget","handleLoad","window","Trustpilot","loadFromElement","Script","strategy","onLoad","inert","data-locale","data-template-id","data-businessunit-id","data-style-height","data-style-width","data-theme","data-style-alignment","displayName","LabelFlagger","defaultHeroAction","HeroCta","treatmentCtaText","treatmentCtaSize","getTreatment","treatmentCtaColour","ctaRef","setHeroCtaRef","setAlwaysVisible","ctaLabel","isHomepage","isCtaBigSize","isCtaWhite","HeroUI","noscript","HeroBbaLogo","BbaLogo","CarouselPromoInterval","setCurrentPage","currentPage","useCarouselContext","isPlaying","setIsPlaying","handleInOutEvent","isInside","animationTimer","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd"],"sourceRoot":"","ignoreList":[]}