{"version":3,"file":"notice-of-accessibility.264bf9d254c05af6dbef.bundle.js","mappings":"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","sources":["webpack://CarMax.Online.Home.Micro.Site/./node_modules/@contentful/rich-text-types/dist/schemas/generated/ sync ^\\.\\/.*\\.json$","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/api/content-service-api.ts","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/components/ErrorBoundary.tsx","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/pages/notice-of-accessibility/index.tsx","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/utilities/contentful/dataHelper.ts","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/utilities/contentful/RichTextRenderer.tsx","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/components/contentfulPage/ContentfulPage.tsx","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/utilities/contentful/contentfulStartup.tsx","webpack://CarMax.Online.Home.Micro.Site/./Client/ts/utilities/onDomContentLoaded.ts"],"sourcesContent":["var map = {\n\t\"./asset-hyperlink.json\": 3502,\n\t\"./blockquote.json\": 7784,\n\t\"./document.json\": 4634,\n\t\"./embedded-asset-block.json\": 6188,\n\t\"./embedded-entry-block.json\": 4160,\n\t\"./embedded-entry-inline.json\": 3290,\n\t\"./embedded-resource-block.json\": 7904,\n\t\"./embedded-resource-inline.json\": 7242,\n\t\"./entry-hyperlink.json\": 830,\n\t\"./heading-1.json\": 2713,\n\t\"./heading-2.json\": 3036,\n\t\"./heading-3.json\": 8399,\n\t\"./heading-4.json\": 1634,\n\t\"./heading-5.json\": 8317,\n\t\"./heading-6.json\": 2800,\n\t\"./hr.json\": 8381,\n\t\"./hyperlink.json\": 1203,\n\t\"./list-item.json\": 4421,\n\t\"./ordered-list.json\": 3867,\n\t\"./paragraph.json\": 6311,\n\t\"./resource-hyperlink.json\": 7272,\n\t\"./table-cell.json\": 5156,\n\t\"./table-header-cell.json\": 8132,\n\t\"./table-row.json\": 3388,\n\t\"./table.json\": 5825,\n\t\"./text.json\": 4084,\n\t\"./unordered-list.json\": 1464\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5152;","import { BLOCKS } from '@contentful/rich-text-types';\r\nimport axios from 'axios';\r\nimport { ContentfulPageResponse, ContentResponse, IContentfulLinkFarmResponse } from './types/content-api';\r\n\r\nexport const emptyContentResponse: ContentResponse = {\r\n allPosts: [],\r\n portraitLeft: [],\r\n portraitRight: [],\r\n landscapeLeft: [],\r\n landscapeTop: [],\r\n landscapeBottom: [],\r\n};\r\n\r\nexport const emptyContentfulPageResponse: ContentfulPageResponse = {\r\n pageContent: { nodeType: BLOCKS.DOCUMENT, value: 'string', data: {}, content: [], marks: [] },\r\n pageName: '',\r\n};\r\n\r\nexport const emptyContentfulLinkFarmResponse: IContentfulLinkFarmResponse = {\r\n tabItems: [],\r\n};\r\n\r\nexport const VENDOR_ENTRY_ID = '3AjnUxJHvcDLloMJrd9S57';\r\nexport const ESIGN_DISCLOSURE_ENTRY_ID = '6DRCwMIskHDvBTNFb5LY9F';\r\nexport const INTEREST_BASED_ADS_ENTRY_ID = '5B3g6V3uq5Ey2DtKsBEYXR';\r\nexport const TERMS_ENTRY_ID = '63qdtxuRpsn7BM7GAr5gg2';\r\nexport const NOTICE_OF_ACCESSIBILITY_ENTRY_ID = '1WBZGJXw3frXP3jDcQrx7X';\r\nexport const CAF_CONSUMER_DISCLOSURE_ENTRY_ID = '2rY1jUTSAt6lZvMGsFySkd';\r\nexport const RESPONSIBLE_DISCLOSURE_ENTRY_ID = '2zPrnnf7pUCMt3gjeItnjh';\r\nexport const TEXTING_TERMS_ID = '70wUNefD1CICMz2386SitB';\r\nexport const LINK_FARM_ID = '3KVahwtGapk95QovNLirRM';\r\n\r\nexport function getSocialProofCarousel(): Promise<ContentResponse> {\r\n try {\r\n return axios\r\n .get<ContentResponse>(`/home/api/content/social-proof-carousel`)\r\n .then((response) => {\r\n if (response.data) {\r\n return response.data;\r\n }\r\n return Promise.resolve(emptyContentResponse);\r\n })\r\n .catch(() => emptyContentResponse);\r\n } catch (e) {\r\n return Promise.resolve(emptyContentResponse);\r\n }\r\n}\r\n\r\nexport function getContentfulPage(entryId: string): Promise<ContentfulPageResponse> {\r\n try {\r\n return axios\r\n .get<ContentfulPageResponse>(`/home/api/content/contentful-page/${entryId}`)\r\n .then((response) => {\r\n if (response.data) {\r\n return response.data;\r\n }\r\n return Promise.resolve(emptyContentfulPageResponse);\r\n })\r\n .catch(() => emptyContentfulPageResponse);\r\n } catch (e) {\r\n return Promise.resolve(emptyContentfulPageResponse);\r\n }\r\n}\r\n\r\nexport function getContentfulLinkFarm(): Promise<IContentfulLinkFarmResponse> {\r\n try {\r\n return fetch(`/home/api/content/link-farm`)\r\n .then((response: Response) => {\r\n return Promise.resolve(response.json());\r\n })\r\n .catch(() => emptyContentfulLinkFarmResponse);\r\n } catch (e) {\r\n return Promise.resolve(emptyContentfulLinkFarmResponse);\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\ninterface IErrorBoundaryProps {}\r\n\r\ninterface IErrorBoundaryState {\r\n hasError: boolean;\r\n}\r\n\r\nexport default class ErrorBoundary extends React.Component<IErrorBoundaryProps, IErrorBoundaryState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error: any) {\r\n return { hasError: true };\r\n }\r\n\r\n render() {\r\n return this.state.hasError || React.Children.count(this.props.children) === 0 ? null : this.props.children;\r\n }\r\n}\r\n","import '../../../scss/pages/notice-of-accessibility/main.scss';\r\nimport onDomContentLoaded from '../../utilities/onDomContentLoaded';\r\nimport contentfulStartup from '../../utilities/contentful/contentfulStartup';\r\nimport { NOTICE_OF_ACCESSIBILITY_ENTRY_ID } from '../../api/content-service-api';\r\n\r\nonDomContentLoaded(() =>\r\n contentfulStartup({\r\n containerId: 'notice-of-accessibility--container',\r\n entryId: NOTICE_OF_ACCESSIBILITY_ENTRY_ID,\r\n })\r\n);\r\n","import { Block, helpers as contentfulHelpers, Inline, Text } from '@contentful/rich-text-types';\r\nimport React, { Children, HTMLAttributes } from 'react';\r\n\r\nexport const getHtmlElementWithProps = (\r\n node: Block | Inline,\r\n children: React.ReactNode,\r\n props?: HTMLAttributes<HTMLElement>\r\n): { child: React.ReactNode; props?: HTMLAttributes<HTMLElement> } => {\r\n const newProps = props || {};\r\n const anchorTag = tryGetAnchorTagData(node);\r\n if (anchorTag) {\r\n newProps.id = anchorTag.anchorId;\r\n children = anchorTag.anchorText ? anchorTag.anchorText : Children.toArray(children).slice(1);\r\n }\r\n return {\r\n props: newProps,\r\n child: children,\r\n };\r\n};\r\n\r\nconst tryGetAnchorTagData = (node: Inline | Block): { anchorId: string; anchorText?: string } | undefined => {\r\n if (node.content.length === 0) return;\r\n\r\n const firstContent = node.content[0];\r\n if (!contentfulHelpers.isText(firstContent)) return;\r\n\r\n const { value } = firstContent as Text;\r\n if (!value || !value.startsWith('{#')) return;\r\n\r\n const closingBracket = value.indexOf('}');\r\n\r\n const anchorId = value.substring(2, closingBracket);\r\n const anchorText = value.substring(closingBracket + 1);\r\n return {\r\n anchorId,\r\n anchorText,\r\n };\r\n};\r\n","import { RenderNode, documentToReactComponents } from '@contentful/rich-text-react-renderer';\r\nimport { BLOCKS, Document, INLINES } from '@contentful/rich-text-types';\r\nimport { getHtmlElementWithProps } from './dataHelper';\r\n\r\nconst customRenderFunctions: RenderNode = {\r\n [BLOCKS.HEADING_2]: (node, children): JSX.Element => {\r\n const elementDetails = getHtmlElementWithProps(node, children);\r\n\r\n return <h2 {...elementDetails.props}>{elementDetails.child}</h2>;\r\n },\r\n [INLINES.HYPERLINK]: (node, children): JSX.Element => {\r\n const isInternalLink = node.data.uri.includes('carmax.com') || node.data.uri.startsWith('#');\r\n const target = isInternalLink ? '' : '_blank';\r\n const rel = isInternalLink ? '' : 'noreferrer';\r\n return (\r\n <a href={node.data.uri} target={target} rel={rel}>\r\n {children}\r\n </a>\r\n );\r\n },\r\n};\r\n\r\nconst renderText = (text: string) => {\r\n return text.split('\\n').reduce((children: any, textSegment: string, index: number) => {\r\n return [...children, index > 0 && <br key={`${index}-br`} />, textSegment];\r\n }, []);\r\n};\r\n\r\nexport const getKmxDocumentToReactComponents = (richText: Document) =>\r\n documentToReactComponents(richText, {\r\n renderNode: customRenderFunctions,\r\n renderText,\r\n });\r\n","import { Fragment, useEffect, useState } from 'react';\r\nimport { emptyContentfulPageResponse, getContentfulPage } from '../../api/content-service-api';\r\nimport { ContentfulPageResponse } from '../../api/types/content-api';\r\nimport { getKmxDocumentToReactComponents } from '../../utilities/contentful/RichTextRenderer';\r\n\r\ninterface ContentfulPageProps {\r\n entryId: string;\r\n}\r\n\r\nconst ContentfulPage = ({ entryId }: ContentfulPageProps) => {\r\n const [loading, setLoading] = useState<boolean>(true);\r\n const [contentfulPage, setContentfulPage] = useState<ContentfulPageResponse>(emptyContentfulPageResponse);\r\n\r\n useEffect(() => {\r\n getContentfulPage(entryId).then((contentfulPageResponse) => {\r\n setContentfulPage(contentfulPageResponse);\r\n setLoading(false);\r\n });\r\n }, [setLoading, setContentfulPage, entryId]);\r\n\r\n return (\r\n <div className=\"contentful-page-container\">\r\n {loading ? (\r\n <div style={{ textAlign: 'center', paddingTop: '100px' }}>\r\n <hzn-loading tone=\"brand\" size=\"large\"></hzn-loading>\r\n </div>\r\n ) : (\r\n contentfulPage.pageContent.content?.map((document, i) => (\r\n <Fragment key={`${i}-content`}>{getKmxDocumentToReactComponents(document)}</Fragment>\r\n ))\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ContentfulPage;\r\n","import * as ReactDOM from 'react-dom';\r\nimport ErrorBoundary from '../../components/ErrorBoundary';\r\nimport ContentfulPage from '../../components/contentfulPage';\r\n\r\ninterface ContentfulStartupParams {\r\n containerId: string;\r\n entryId: string;\r\n}\r\n\r\nconst contentfulStartup = ({ containerId, entryId }: ContentfulStartupParams) => {\r\n const container = document.getElementById(containerId);\r\n if (container) {\r\n ReactDOM.render(\r\n <ErrorBoundary>\r\n <ContentfulPage entryId={entryId} />\r\n </ErrorBoundary>,\r\n container\r\n );\r\n }\r\n};\r\n\r\nexport default contentfulStartup;\r\n","export default function(startup: () => any) {\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', startup);\r\n } else {\r\n startup();\r\n document.removeEventListener('DOMContentLoaded', startup);\r\n }\r\n}\r\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","emptyContentResponse","allPosts","portraitLeft","portraitRight","landscapeLeft","landscapeTop","landscapeBottom","emptyContentfulPageResponse","pageContent","nodeType","BLOCKS","DOCUMENT","value","data","content","marks","pageName","emptyContentfulLinkFarmResponse","tabItems","VENDOR_ENTRY_ID","ESIGN_DISCLOSURE_ENTRY_ID","INTEREST_BASED_ADS_ENTRY_ID","TERMS_ENTRY_ID","NOTICE_OF_ACCESSIBILITY_ENTRY_ID","CAF_CONSUMER_DISCLOSURE_ENTRY_ID","RESPONSIBLE_DISCLOSURE_ENTRY_ID","TEXTING_TERMS_ID","getSocialProofCarousel","get","then","response","Promise","catch","getContentfulPage","entryId","getContentfulLinkFarm","fetch","json","ErrorBoundary","constructor","props","super","this","state","hasError","getDerivedStateFromError","error","render","count","children","onDomContentLoaded","contentfulStartup","containerId","customRenderFunctions","HEADING_2","node","elementDetails","newProps","anchorTag","length","firstContent","isText","startsWith","closingBracket","indexOf","anchorId","substring","anchorText","tryGetAnchorTagData","Children","toArray","slice","child","getHtmlElementWithProps","INLINES","HYPERLINK","isInternalLink","uri","includes","target","rel","href","renderText","text","split","reduce","textSegment","index","loading","setLoading","useState","contentfulPage","setContentfulPage","useEffect","contentfulPageResponse","className","style","textAlign","paddingTop","tone","size","document","i","Fragment","richText","renderNode","container","getElementById","startup","readyState","addEventListener","removeEventListener"],"sourceRoot":""}