{"version":3,"file":"static/chunks/4734.93b7befaf5211bcd.js","mappings":"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","sources":["webpack://_N_E/../design-system/src/components/pages/landing-page/landing-page-body/landing-page-body.tsx","webpack://_N_E/../design-system/src/components/pages/landing-page/landing-page.tsx","webpack://_N_E/../design-system/src/hooks/use-program-comparison.tsx","webpack://_N_E/../design-system/src/sites/exed/program-comparison-tray/program-comparison-tray.tsx","webpack://_N_E/./src/contentful/components/pages/landing-page.contentful.tsx","webpack://_N_E/./src/hooks/use-page-footnotes.tsx","webpack://_N_E/../design-system/src/components/pages/landing-page/landing-page-body/landing-page-body.scss?8a85","webpack://_N_E/../design-system/src/components/pages/landing-page/landing-page.scss?10b4","webpack://_N_E/../design-system/src/sites/exed/program-comparison-tray/program-comparison-tray.scss?0a17","webpack://_N_E/"],"sourcesContent":["import {\n Breadcrumbs,\n BreadcrumbsProps,\n} from \"design-system/components/primitives/breadcrumbs/breadcrumbs\";\nimport \"./landing-page-body.scss\";\nimport { ReactNode } from \"react\";\nimport { LandingPageTopper } from \"../landing-page\";\nimport { LazyComponent } from \"design-system/components/system/lazy-component/lazy-component\";\n\nexport interface LandingPageBodyProps {\n breadcrumbs?: BreadcrumbsProps;\n topper?: LandingPageTopper;\n children?: ReactNode;\n}\n\nexport function LandingPageBody({\n breadcrumbs,\n topper,\n children,\n}: LandingPageBodyProps) {\n return (\n
\n {topper && }\n\n {breadcrumbs && }\n\n
\n
\n
\n
\n {children}\n
\n
\n
\n
\n
\n );\n}\n","import \"./landing-page.scss\";\n\nimport cn from \"clsx\";\nimport { ReactNode } from \"react\";\nimport {\n BaseLayout,\n SiteHeaderComponent,\n} from \"design-system/components/layouts/base\";\nimport { BreadcrumbsProps } from \"design-system/components/primitives/breadcrumbs/breadcrumbs\";\nimport { LandingPageBody } from \"design-system/components/pages/landing-page/landing-page-body/landing-page-body\";\nimport { SiteFooterProps } from \"design-system/components/universal/site-footer/site-footer\";\nimport { ExtractLazyComponent } from \"design-system/components/system/lazy-component/lazy-component\";\n\nexport type LandingPageTopper = ExtractLazyComponent<\n | \"CardTopper\"\n | \"MediaTopper\"\n | \"SplitTopper\"\n | \"StatisticsTopper\"\n | \"EditorialTopper\"\n | \"LargeAssetTopper\"\n | \"FeaturedTermTopper\"\n | \"SimplePageTopper\"\n>;\n\nexport interface LandingPageProps {\n header?: SiteHeaderComponent;\n footer?: SiteFooterProps;\n breadcrumbs?: BreadcrumbsProps;\n topper?: LandingPageTopper;\n children?: ReactNode;\n}\n\nexport function LandingPage({\n children,\n breadcrumbs,\n footer,\n header,\n topper,\n}: LandingPageProps) {\n return (\n \n \n {children}\n \n \n );\n}\n","import {\n createContext,\n useContext,\n useState,\n useEffect,\n Dispatch,\n SetStateAction,\n ReactNode,\n useRef,\n} from \"react\";\nimport { Program } from \"design-system/types/exed-schema\";\nimport { useDataLayer } from \"frontend/hooks/use-data-layer\";\n\nexport interface ProgramToCompare extends Program {\n activeSessionIndex?: number;\n}\n\ntype ProgramComparisonContext = [\n Array,\n Dispatch>>,\n];\n\nconst Context = createContext([[], (s) => s]);\n\ninterface ProgramComparisonProviderProps {\n children: ReactNode;\n programs: Array;\n}\n\nexport function ProgramComparisonProvider({\n children,\n programs,\n}: ProgramComparisonProviderProps) {\n const [programsToCompare, setProgramsToCompare] = useState<\n Array\n >([]);\n const { pushDataLayer } = useDataLayer();\n\n useEffect(() => {\n const getProgramsByIds = (ids: Array) => {\n return ids\n .map((id) => programs.find((p) => p.id === id))\n .filter((p): p is ProgramToCompare => !!p);\n };\n\n const urlParams = new URLSearchParams(window.location.search);\n const programParams = urlParams.get(\"programs\");\n if (!programParams) return;\n\n const ids = programParams.split(\",\");\n\n const initialProgramsToCompare = getProgramsByIds(ids).map((program) => ({\n ...program,\n activeSessionIndex: 0,\n }));\n\n setProgramsToCompare(initialProgramsToCompare);\n }, [programs]);\n\n const comparedPrograms = useRef(\"\");\n const prevUrl = useRef();\n\n // Update programs query param when programsToCompare updates\n useEffect(() => {\n const urlParams = new URLSearchParams(window.location.search);\n const programParams = urlParams.get(\"programs\");\n let programsChanged = false;\n if (!programParams || !programsToCompare.length) return;\n\n const updatedProgramIds = programsToCompare.map((p) => p.id).join(\",\");\n urlParams.delete(\"programs\");\n urlParams.set(\"programs\", updatedProgramIds);\n\n // Are all the programs the same? Order is not important\n if (\n comparedPrograms.current.split(\",\").sort().join() ===\n updatedProgramIds.split(\",\").sort().join()\n ) {\n return;\n } else {\n programsChanged = true;\n }\n\n if (programsChanged) {\n pushDataLayer({\n /* eslint-disable camelcase */\n event: \"program_finder_comparison\",\n event_data: {\n compared_programs: updatedProgramIds,\n },\n /* eslint-enable camelcase */\n });\n comparedPrograms.current = updatedProgramIds;\n }\n\n const queryParams = urlParams.toString();\n const newUrl = new URL(\n `${window.location.origin}${window.location.pathname}?${queryParams}`,\n );\n\n if (prevUrl.current && prevUrl.current !== newUrl.href) {\n window.history.pushState({}, \"\", newUrl.href);\n }\n prevUrl.current = newUrl.href;\n }, [programsToCompare, pushDataLayer]);\n\n useEffect(() => {\n // Handle browser back button\n window.onpopstate = (event) => {\n if (event.state) {\n history.go(0);\n }\n };\n });\n\n return (\n \n {children}\n \n );\n}\n\nexport function useProgramComparison() {\n const [programsToCompare, setProgramsToCompare] = useContext(Context);\n\n const addProgramToCompare = (program: ProgramToCompare) => {\n setProgramsToCompare((old) => [...old, program]);\n };\n\n const removeProgramToCompare = (program: ProgramToCompare) => {\n setProgramsToCompare((old) => old.filter((p) => p.id !== program.id));\n };\n\n const reorderProgramToCompare = (\n program: ProgramToCompare,\n direction: number,\n ) => {\n setProgramsToCompare((programsToCompare) => {\n const reordered = programsToCompare;\n const indexOfProgramToMove = programsToCompare.findIndex(\n (p) => p.id === program.id,\n );\n reordered.splice(indexOfProgramToMove, 1);\n reordered.splice(indexOfProgramToMove + direction, 0, program);\n\n return [...reordered];\n });\n };\n\n return {\n programsToCompare,\n setProgramsToCompare,\n addProgramToCompare,\n removeProgramToCompare,\n reorderProgramToCompare,\n };\n}\n","import \"./program-comparison-tray.scss\";\n\nimport { useState } from \"react\";\nimport cn from \"clsx\";\nimport { useProgramComparison } from \"design-system/hooks/use-program-comparison\";\nimport { CtaLink } from \"design-system/components/primitives/cta-link/cta-link\";\nimport { Icon } from \"design-system/components/icons/icon\";\nimport { ExEdContentReferencesEntry } from \"frontend/contentful/schema/universal\";\nimport { DataLayerEvent, useDataLayer } from \"frontend/hooks/use-data-layer\";\n\nexport interface ProgramComparisonTrayProps {\n programFinderUrl?: string;\n isHBSOnline?: boolean;\n contentReferences?: ExEdContentReferencesEntry;\n dataLayer?: DataLayerEvent;\n}\n\nexport function ProgramComparisonTray({\n programFinderUrl,\n isHBSOnline,\n /* eslint-disable-next-line camelcase */\n dataLayer = { event: \"program_finder_result_click\", event_data: {} },\n}: ProgramComparisonTrayProps) {\n const [isTrayHidden, setIsTrayHidden] = useState(false);\n\n const { programsToCompare, removeProgramToCompare } = useProgramComparison();\n\n const { pushDataLayer } = useDataLayer();\n\n // Show the tray when adding new programs to compare\n const [prevProgramsLength, setPrevProgramsLength] = useState(\n programsToCompare.length,\n );\n if (prevProgramsLength !== programsToCompare.length) {\n setPrevProgramsLength(programsToCompare.length);\n\n if (prevProgramsLength < programsToCompare.length) {\n setIsTrayHidden(false);\n }\n }\n\n if (programsToCompare.length < 1) {\n return null;\n }\n\n const trayClass = cn(\n \"hbs-program-comparison-tray__inner\",\n isTrayHidden && \"hbs-program-comparison-tray__inner--hidden\",\n isHBSOnline && \"hbs-program-comparison-tray__inner--online\",\n );\n\n const programIds = programsToCompare.map((p) => p.id).join(\",\");\n\n const pageUrl = new URL(\n programFinderUrl || window.location.href,\n window.location.origin,\n );\n if (programIds) {\n pageUrl.searchParams.set(\"programs\", programIds);\n }\n\n return (\n \n

Compare Programs

\n setIsTrayHidden(false)}\n className={cn(\n \"hbs-program-comparison-tray__fab\",\n !isTrayHidden && \"hbs-program-comparison-tray__fab--hidden\",\n )}\n >\n \n Show comparison tray\n \n
\n setIsTrayHidden(true)}\n className=\"hbs-program-comparison-tray__hide\"\n aria-label=\"Hide comparison tray\"\n >\n Hide\n \n \n\n
\n
    \n {programsToCompare.map((program) => (\n \n

    \n {program.title}\n

    \n {\n removeProgramToCompare(program);\n /* eslint-disable camelcase */\n if (!dataLayer.event) {\n dataLayer.event = \"program_finder_result_click\";\n }\n if (dataLayer.event_data) {\n dataLayer.event_data.program_action =\n \"compare remove click\";\n dataLayer.event_data.program_name = program.title;\n pushDataLayer(dataLayer);\n } else {\n dataLayer.event_data = {\n program_action: \"compare remove click\",\n program_name: program.title,\n };\n }\n pushDataLayer(dataLayer);\n /* eslint-enable camelcase */\n }}\n className=\"hbs-program-comparison-tray__remove\"\n >\n \n Remove {program.title}\n \n \n \n \n ))}\n
\n
\n\n
\n \n Compare{!isHBSOnline && \" Programs\"}\n \n {isHBSOnline && (\n \n Request Info\n \n )}\n
\n
\n \n );\n}\n","import { createContentfulComponent } from \"frontend/contentful/lib/create-contentful-component\";\nimport dynamic from \"next/dynamic\";\nimport {\n LandingPage,\n LandingPageTopper,\n} from \"design-system/components/pages/landing-page/landing-page\";\nimport { createSiteHeaderProps } from \"../universal/site-header.props\";\nimport { createSiteFooterProps } from \"../universal/site-footer.props\";\nimport { LandingPageEntry } from \"frontend/contentful/schema/pages\";\nimport { usePageProps } from \"frontend/hooks/use-page-props\";\nimport { ContentfulHead } from \"../primitives/head.contentful\";\nimport { ContentfulPageSections } from \"./page-sections.contentful\";\nimport { usePageNavigation } from \"frontend/hooks/use-page-navigation\";\nimport { createLazyTopperProps } from \"../toppers/lazy-topper.props\";\nimport { Footnotes } from \"design-system/components/primitives/footnote/footnotes\";\nimport { usePageFootnotes } from \"frontend/hooks/use-page-footnotes\";\nimport { useContentful } from \"frontend/hooks/use-contentful\";\nimport { ProgramComparisonProvider } from \"design-system/hooks/use-program-comparison\";\nimport { ProgramComparisonTray } from \"design-system/sites/exed/program-comparison-tray/program-comparison-tray\";\n\nconst ContentfulHomePage = dynamic(() =>\n import(\"./home-page.contentful\").then((e) => ({\n default: e.ContentfulHomePage,\n })),\n);\n\nexport const ContentfulLandingPage =\n createContentfulComponent(({ entry }) => {\n const { singletons, includes } = usePageProps();\n const { site, getEntry, getEntryUrl } = useContentful();\n const { breadcrumbs } = usePageNavigation();\n const footnotes = usePageFootnotes(entry.fields.blocks);\n\n if (singletons.isWWWHomePage) {\n return ;\n }\n\n // This is a temporary solution to determine if the page needs the program comparison context & tray.\n // It is currently needed for ExEd pages, and will be needed for HBS Online pages in the future.\n // Consider a refactor to expose global site-specific context/state in a more structured way.\n const needsProgramComparison = includes.Entry.some(\n (i) => i.sys.contentType.sys.id === \"teaseRowProgramCards\",\n );\n\n let programFinderUrl: string | undefined;\n if (site?.fields.contentReferences) {\n const contentReferences = getEntry(site.fields.contentReferences);\n const programFinderPageRef = contentReferences?.fields.programFinderPage;\n if (programFinderPageRef) {\n programFinderUrl = getEntryUrl(programFinderPageRef);\n }\n }\n\n return (\n <>\n \n\n \n {needsProgramComparison ? (\n \n \n \n \n \n ) : (\n <>\n \n \n \n )}\n \n \n );\n });\n","import { ContentfulEntry, EntryRef } from \"frontend/contentful/schema/sys\";\nimport { useContentful } from \"./use-contentful\";\nimport { FootnoteProps } from \"design-system/components/primitives/footnote/footnotes\";\nimport { Block, INLINES, Inline, Text } from \"@contentful/rich-text-types\";\nimport { FootnoteEntry } from \"frontend/contentful/schema/primitives\";\nimport { isContentType } from \"frontend/contentful/lib/is-content-type\";\nimport { RenderContentfulRichText } from \"frontend/contentful/components/utils/render-contentful-rich-text\";\nimport { RichTextEntry } from \"frontend/contentful/schema/blocks\";\n\nexport function usePageFootnotes(blocks?: Array>) {\n const { getEntry, createEditAttributes } = useContentful();\n\n const footnotes: Array = [];\n\n if (!Array.isArray(blocks)) return footnotes;\n\n const searchForFootnote = (node: Block | Inline | Text): void => {\n if (node.nodeType === INLINES.EMBEDDED_ENTRY) {\n const footnote = getEntry(node.data.target as ContentfulEntry);\n\n if (isContentType(\"footnote\", footnote)) {\n footnotes.push({\n children: (\n \n ),\n editAttributes: createEditAttributes({\n entry: footnote,\n fieldId: \"text\",\n }),\n });\n }\n }\n\n if (\"content\" in node) {\n node.content.forEach(searchForFootnote);\n }\n };\n\n blocks.forEach((block) => {\n const entry = getEntry(block);\n\n if (isContentType(\"richText\", entry)) {\n entry.fields?.text?.content.forEach((content) => {\n content.content.forEach((content) => searchForFootnote(content));\n });\n }\n });\n\n return footnotes;\n}\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin"],"names":["LandingPageBody","param","breadcrumbs","topper","children","jsx_runtime","jsxs","main","id","tabIndex","jsx","LazyComponent","Breadcrumbs","div","className","section","LandingPage","footer","header","BaseLayout","cn","name","concat","Context","createContext","s","ProgramComparisonProvider","programs","programsToCompare","setProgramsToCompare","useState","pushDataLayer","useDataLayer","useEffect","programParams","urlParams","URLSearchParams","window","location","search","get","getProgramsByIds","split","map","find","p","filter","program","activeSessionIndex","comparedPrograms","useRef","prevUrl","programsChanged","length","updatedProgramIds","join","delete","set","current","sort","event","event_data","compared_programs","queryParams","toString","newUrl","URL","origin","pathname","href","history","pushState","onpopstate","state","go","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","Provider","value","useProgramComparison","useContext","addProgramToCompare","old","removeProgramToCompare","reorderProgramToCompare","direction","indexOfProgramToMove","findIndex","reordered","splice","ProgramComparisonTray","programFinderUrl","isHBSOnline","dataLayer","isTrayHidden","setIsTrayHidden","prevProgramsLength","setPrevProgramsLength","trayClass","programIds","pageUrl","searchParams","h2","button","onClick","Icon","span","aria-label","ul","li","title","program_action","program_name","CtaLink","isSmall","type","icon","ContentfulHomePage","dynamic","__webpack_require__","e","then","bind","default","ContentfulLandingPage","createContentfulComponent","entry","singletons","includes","usePageProps","site","getEntry","getEntryUrl","useContentful","usePageNavigation","footnotes","usePageFootnotes","fields","blocks","isWWWHomePage","needsProgramComparison","Entry","some","i","sys","contentType","contentReferences","programFinderPageRef","programFinderPage","Fragment","ContentfulHead","seo","createLazyTopperProps","props","createSiteHeaderProps","createSiteFooterProps","ContentfulPageSections","Footnotes","domain","createEditAttributes","Array","isArray","searchForFootnote","node","nodeType","INLINES","EMBEDDED_ENTRY","footnote","data","target","isContentType","push","RenderContentfulRichText","document","text","disableParagraphs","editAttributes","fieldId","content","forEach","block"],"sourceRoot":""}