{"version":3,"file":"static/chunks/8754.12a2100e2f857d73.js","mappings":"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","sources":["webpack://_N_E/./src/contentful/components/blocks/teases/article-tease.props.tsx","webpack://_N_E/./src/contentful/components/primitives/byline-author.props.tsx","webpack://_N_E/./src/contentful/components/primitives/byline.props.tsx","webpack://_N_E/./src/contentful/components/utils/use-search.props.ts","webpack://_N_E/./src/contentful/search/is-search-hit-type.ts","webpack://_N_E/./src/contentful/search/search-highlight.ts","webpack://_N_E/./src/contentful/search/search-article-tease.ts","webpack://_N_E/./src/hooks/use-search.ts","webpack://_N_E/"],"sourcesContent":["import { ArticleTeaseProps } from \"design-system/components/primitives/article-tease/article-tease\";\nimport { createContentfulProps } from \"frontend/contentful/lib/create-contentful-props\";\nimport { ArticlePageEntry } from \"frontend/contentful/schema/pages\";\nimport { createMediaAssetProps } from \"frontend/contentful/components/primitives/media-asset.props\";\nimport { documentToString } from \"frontend/contentful/lib/document-to-string\";\nimport { createBylineProps } from \"frontend/contentful/components/primitives/byline.props\";\nimport { useContentful } from \"frontend/hooks/use-contentful\";\n\nexport const createArticleTeaseProps = createContentfulProps<\n ArticlePageEntry,\n ArticleTeaseProps\n>(({ entry, createEditAttributes }) => {\n const { getEntry, getEntryUrl } = useContentful();\n\n const props: ArticleTeaseProps = {\n type: \"Article\",\n title: entry.fields?.title,\n link: getEntryUrl(entry),\n byline: createBylineProps(entry),\n tease: documentToString(\n entry.fields?.description ?? entry.fields?.shortDescription,\n ),\n\n editAttributes: {\n title: createEditAttributes({ entry, fieldId: \"title\" }),\n },\n };\n\n const mediaAsset = createMediaAssetProps(\n entry.fields.teaseImage || entry.fields.leadImage,\n );\n // force 4:3 aspect ratio\n if (mediaAsset?.image) {\n mediaAsset.image.width = \"600px\";\n mediaAsset.image.height = \"450px\";\n }\n\n props.image = mediaAsset?.image;\n props.video = mediaAsset?.video;\n props.kaltura = mediaAsset?.kaltura;\n if (props.kaltura) {\n props.kaltura.withModal = true;\n }\n\n const overlineEntry = getEntry(entry.fields.overline);\n\n if (overlineEntry?.fields.text && overlineEntry.fields.url) {\n props.overline = {\n label: overlineEntry.fields.text,\n link: getEntryUrl(overlineEntry),\n };\n }\n\n return props;\n});\n","import { BylineAuthor } from \"design-system/components/primitives/byline/byline\";\nimport { createContentfulProps } from \"frontend/contentful/lib/create-contentful-props\";\nimport {\n OrganizationEntry,\n PersonEntry,\n PersonWrapperEntry,\n} from \"frontend/contentful/schema/semantics\";\nimport { createPersonImageProps } from \"./media-asset.props\";\nimport { useContentful } from \"frontend/hooks/use-contentful\";\nimport { isContentType } from \"frontend/contentful/lib/is-content-type\";\n\nexport const createBylineAuthorProps = createContentfulProps<\n PersonEntry | PersonWrapperEntry | OrganizationEntry,\n BylineAuthor\n>(({ entry, createEditAttributes }) => {\n const { getPersonLink, getEntityName, getEntry } = useContentful();\n\n let authorEntry: PersonEntry | OrganizationEntry | undefined;\n\n if (isContentType(\"personWrapper\", entry)) {\n authorEntry = getEntry(entry.fields.person);\n } else {\n authorEntry = entry;\n }\n\n if (\n !isContentType(\"person\", authorEntry) &&\n !isContentType(\"organization\", authorEntry)\n ) {\n return undefined;\n }\n\n const props: BylineAuthor = {\n name: getEntityName(entry),\n link: getPersonLink(entry),\n avatar: createPersonImageProps(entry),\n editAttributes: {\n name: createEditAttributes({ entry, fieldId: \"firstName\" }),\n },\n };\n\n return props;\n});\n","import {\n BylineAuthor,\n BylineProps,\n} from \"design-system/components/primitives/byline/byline\";\nimport {\n ArticlePageEntry,\n PodcastEpisodePageEntry,\n} from \"frontend/contentful/schema/pages\";\nimport { createContentfulProps } from \"frontend/contentful/lib/create-contentful-props\";\nimport { createBylineAuthorProps } from \"../primitives/byline-author.props\";\nimport { isContentType } from \"frontend/contentful/lib/is-content-type\";\nimport { useContentful } from \"frontend/hooks/use-contentful\";\n\nexport const createBylineProps = createContentfulProps<\n ArticlePageEntry | PodcastEpisodePageEntry,\n BylineProps\n>(({ entry, createEditAttributes }) => {\n const { getIsPersonPastHbsFaculty } = useContentful();\n\n const props: BylineProps = {\n type: \"ShowAll\",\n publicationDate: entry.fields.publicationDate,\n editAttributes: {\n publicationDate: createEditAttributes({\n entry,\n fieldId: \"publicationDate\",\n }),\n },\n };\n\n props.authors = [];\n\n if (isContentType(\"articlePage\", entry)) {\n entry.fields.authors?.forEach((person) => {\n const bylinePersonProps = createBylineAuthorProps(person);\n if (bylinePersonProps) props.authors?.push(bylinePersonProps);\n });\n if (props.authors.length === 0 && entry.fields.legacyStoryBylineTypein) {\n const legacyAuthorByline: BylineAuthor = {\n name: entry.fields.legacyStoryBylineTypein,\n };\n props.authors.push(legacyAuthorByline);\n }\n entry.fields.relatedOrganizations?.forEach((organization) => {\n const bylinePersonProps = createBylineAuthorProps(organization);\n if (bylinePersonProps) props.authors?.push(bylinePersonProps);\n });\n }\n\n props.featuredAuthors = [];\n entry.fields.relatedFaculty?.forEach((person) => {\n if (getIsPersonPastHbsFaculty(person)) return;\n const bylinePersonProps = createBylineAuthorProps(person);\n if (bylinePersonProps) props.featuredAuthors?.push(bylinePersonProps);\n });\n\n if (props.featuredAuthors?.length > 0) props.headshots = true;\n\n return props;\n});\n","import { createContentfulProps } from \"frontend/contentful/lib/create-contentful-props\";\nimport { QueryEntry } from \"frontend/contentful/schema/semantics\";\nimport { SearchQuery, SearchQueryIndex } from \"frontend/types\";\n\nexport type UseSearchPropsOptions = Partial;\n\nexport const createUseSearchProps = createContentfulProps<\n QueryEntry,\n SearchQuery | null,\n UseSearchPropsOptions\n>(({ entry, options = {} }) => {\n if (!entry.fields.query) return null;\n\n const query: SearchQuery = {\n ...options,\n query:\n options.query ||\n \"(\" + entry.fields.query + \") AND -HBSDataLifecycle:Draft\",\n size: options.size || parseInt(entry.fields.limit || \"25\", 10),\n index:\n options.index || ((entry.fields.index || \"modern\") as SearchQueryIndex),\n };\n\n const sortValue = entry.fields.sort;\n\n if (!query.sort && sortValue) {\n query.sort = sortValue.join(\",\");\n\n // legacy default sort by HBSSortDate\n if (!query.sort && entry.fields.index === \"legacy\") {\n query.sort = \"HBSSortDate\";\n }\n }\n\n return query;\n});\n","import { SearchHit, SearchHitTypes } from \"frontend/types\";\n\nexport function isSearchHitType(\n hitType: SearchHitTypes,\n searchHit?: SearchHit,\n): searchHit is T {\n if (searchHit === undefined) return false;\n\n if (hitType === \"modern\") {\n return \"url\" in searchHit && \"title\" in searchHit;\n }\n if (hitType === \"hollis\") {\n return \"title\" in searchHit;\n }\n if (hitType === \"modernArticle\") {\n return \"contentType\" in searchHit && searchHit.contentType === \"Article\";\n }\n if (hitType === \"modernProgram\") {\n return \"contentType\" in searchHit && searchHit.contentType === \"Program\";\n }\n if (hitType === \"legacy\" || hitType === \"legacyArticle\") {\n return \"HBSLink\" in searchHit && \"HBSTitle\" in searchHit;\n }\n\n if (hitType === \"knowledgeSuggest\") {\n return \"Faculty\" in searchHit && \"suggestions\" in searchHit;\n }\n\n return false;\n}\n","export function cleanSearchHightlight(highlight?: string) {\n if (!highlight) return undefined;\n let text = highlight;\n // Update the highlights from Knowledge\n if (\n highlight &&\n highlight.indexOf(\n \"\",\n ) > -1 &&\n highlight.indexOf(\"\") > -1\n ) {\n text = highlight\n .replaceAll(\n \"\",\n \"\",\n )\n .replaceAll(\"\", \"\");\n }\n\n return text;\n}\n","import { ArticleTeaseProps } from \"design-system/components/primitives/article-tease/article-tease\";\nimport { MediaAssetImageProps } from \"design-system/components/primitives/media-asset/media-asset-image\";\nimport {\n SearchHit,\n ModernSearchHit,\n LegacySearchHit,\n SearchDisplay,\n} from \"frontend/types\";\nimport { stripHtml } from \"../components/utils/strip-html\";\nimport { isSearchHitType } from \"./is-search-hit-type\";\nimport { BylineAuthor } from \"design-system/components/primitives/byline/byline\";\nimport { cleanSearchHightlight } from \"./search-highlight\";\n\nexport function createSearchArticleTease(\n data?: SearchHit,\n siteId?: string,\n thumbnailProps?: Partial,\n) {\n if (isSearchHitType(\"modernArticle\", data)) {\n return createModernSearchArticleTease(data, siteId);\n }\n if (isSearchHitType(\"legacyArticle\", data)) {\n return createLegacySearchArticleTease(data, thumbnailProps);\n }\n}\n\nexport function createLegacySearchArticleTease(\n data: LegacySearchHit,\n thumbnailProps?: Partial,\n): ArticleTeaseProps {\n const props: ArticleTeaseProps = {\n type: \"Article\",\n title: data.HBSTitle,\n link: data.HBSLink,\n tease: data.HBSDescription,\n byline: {\n publicationDate: data.HBSPubDate,\n type: \"ShowAll\",\n },\n };\n\n if (data.HBSSource) {\n props.overline = { label: data.HBSSource };\n }\n\n if (data.HBSByline) {\n let people = data.HBSByline;\n let authors = data.HBSByline;\n\n if (authors.startsWith(\"by \") || authors.startsWith(\"By \")) {\n authors = authors.substring(3);\n }\n\n if (authors.startsWith(\"by: \") || authors.startsWith(\"By: \")) {\n authors = authors.substring(4);\n }\n\n if (people.startsWith(\"re \") || people.startsWith(\"Re \")) {\n people = people.substring(3);\n }\n\n if (people.startsWith(\"re: \") || people.startsWith(\"Re: \")) {\n people = people.substring(4);\n\n if (people.indexOf(\", \") > 0) {\n let peopleCleanup = \"\";\n\n people.split(\", \").forEach((person) => {\n if (person.indexOf(\"@\") > 0) return; // skip email addresses\n peopleCleanup = peopleCleanup\n ? peopleCleanup + \", \" + person\n : person;\n });\n\n people = peopleCleanup;\n }\n }\n\n if (authors !== data.HBSByline) props.byline!.authors = [{ name: authors }];\n if (people !== data.HBSByline) {\n props.byline!.featuredAuthors = [{ name: people }];\n }\n }\n\n if (data.HBSThumbnail) {\n props.image = {\n src: data.HBSThumbnail,\n ...thumbnailProps,\n };\n }\n\n return props;\n}\n\nexport function createModernSearchArticleTease(\n data: ModernSearchHit | SearchDisplay,\n siteId?: string,\n): ArticleTeaseProps {\n let description = data.description;\n\n //Modern Search Hit with \"legacy\" subset only used on sitewide Search Pages\n if (data.subset?.includes(\"legacy\") && !description) {\n description = data.body;\n }\n\n if (\n data.highlight?.description &&\n Array.isArray(data.highlight?.description)\n ) {\n description = data.highlight?.description[0];\n }\n\n if (data.highlight?.body && Array.isArray(data.highlight?.body)) {\n description = cleanSearchHightlight(data.highlight?.body[0]);\n }\n\n // Use the body as a last resort if no description is set\n if (!description && data.body) {\n description = data.body.substring(0, 500).trim();\n }\n\n const props: ArticleTeaseProps = {\n type: \"Article\",\n title: data.title,\n link: data.url,\n tease: description && stripHtml(description),\n };\n\n //if data type = ModernSearchHit then use data.display\n //if data type = SearchDisplay then use data\n //if data type = LegacySearchHit then use data.display\n if (isSearchHitType(\"modern\", data)) {\n // Display the category as an overline when entry is for the site\n if (siteId && data.display?.site === siteId) {\n if (data.display?.overline) {\n props.overline = data.display.overline;\n } else if (data.display?.category) {\n props.overline = data.display.category;\n }\n\n // Display the Site name as an overline when entry is from a different site\n } else if (data.display?.siteOverline) {\n props.overline = data.display.siteOverline;\n } else if (data.display?.category) {\n props.overline = data.display.category;\n }\n\n if (data.display?.thumbnail?.src) {\n props.image = data.display.thumbnail;\n if (data.display.thumbnail.gravity) {\n props.image.gravity = data.display.thumbnail.gravity;\n }\n if (data.display.thumbnail.aspectRatio) {\n props.image.aspectRatio = data.display.thumbnail.aspectRatio;\n }\n }\n\n if (data.display?.date) {\n props.byline = {\n publicationDate: data.display.date,\n };\n }\n\n if (data.display?.byline) {\n if (\n data.display.byline[0]?.label &&\n (data.display.byline[0].label.toLowerCase().startsWith(\"by\") ||\n data.display.byline[0].label.toLowerCase().startsWith(\"re\"))\n ) {\n // temporary add for supporting legacy byline data (legacy loader now in modern ES setup)\n const legacyByline = stripHtml(data.display.byline[0].label);\n\n let people = legacyByline;\n let authors = legacyByline;\n\n if (authors.startsWith(\"by \") || authors.startsWith(\"By \")) {\n authors = authors.substring(3);\n }\n\n if (authors.startsWith(\"by: \") || authors.startsWith(\"By: \")) {\n authors = authors.substring(4);\n }\n\n if (people.startsWith(\"re \") || people.startsWith(\"Re \")) {\n people = people.substring(3);\n }\n\n if (people.startsWith(\"re: \") || people.startsWith(\"Re: \")) {\n people = people.substring(4);\n\n if (people.indexOf(\", \") > 0) {\n let peopleCleanup = \"\";\n\n people.split(\", \").forEach((person) => {\n if (person.indexOf(\"@\") > 0) return; // skip email addresses\n peopleCleanup = peopleCleanup\n ? peopleCleanup + \", \" + person\n : person;\n });\n\n people = peopleCleanup;\n }\n }\n\n if (props.byline) {\n if (authors !== legacyByline) {\n props.byline.authors = [{ name: authors }];\n props.byline.type = \"ShowAll\";\n }\n if (people !== legacyByline) {\n props.byline.featuredAuthors = [{ name: people }];\n props.byline.type = \"ShowAll\";\n }\n } else {\n if (authors !== legacyByline) {\n props.byline = { authors: [{ name: authors }], type: \"ShowAll\" };\n }\n if (people !== legacyByline) {\n props.byline = {\n featuredAuthors: [{ name: people }],\n type: \"ShowAll\",\n };\n }\n }\n } else {\n const byline: Array = [];\n const hightlight = data.highlight;\n\n data.display.byline.forEach((author) => {\n if (author.label) {\n let label = author.label;\n if (\n hightlight?.[\"author.text\"] &&\n Array.isArray(hightlight?.[\"author.text\"]) &&\n hightlight?.[\"author.text\"][0]\n ) {\n const authorFirstHighlight = hightlight?.[\"author.text\"][0]\n ? hightlight?.[\"author.text\"][0]\n .replaceAll(\"\", \"\")\n .replaceAll(\"\", \"\")\n : \"\";\n if (\n hightlight?.[\"author.text\"][0] &&\n authorFirstHighlight === label\n ) {\n label = hightlight?.[\"author.text\"][0];\n }\n }\n byline.push({ name: label, link: author.link });\n }\n });\n\n if (data.subset?.includes(\"artwork\")) {\n props.byline = { authors: byline, type: \"ShowAll\" };\n } else if (props.byline) {\n props.byline.authors = byline;\n } else {\n props.byline = { authors: byline };\n }\n }\n\n if (data.display.downloadLink) {\n props.downloadLink = data.display.downloadLink;\n }\n if (data.display.caseHead) {\n props.display = {\n caseHead: data.display.caseHead,\n caseCategory: data.display.caseCategory,\n };\n }\n }\n } else {\n // TODO: Add category url support to modern search schema\n if (data.source) {\n props.overline = { label: data.source /*, link: data.sourceUrl */ };\n } else if (data.contentType) {\n props.overline = {\n label: data.contentType /*, link: data.contentTypeUrl */,\n };\n }\n }\n\n if (data.subset?.includes(\"artwork\")) {\n props.variant = \"artwork\";\n }\n\n if (\n data.subset?.includes(\"participantStory\") ||\n data.subset?.includes(\"profilePages\")\n ) {\n props.variant = \"profile\";\n }\n\n return props;\n}\n","import {\n ModernSearchHit,\n SearchHit,\n SearchQuery,\n SearchResults,\n} from \"frontend/types\";\nimport { UseFetchProps, useFetch } from \"./use-fetch\";\n\ntype UseSearchArgs = SearchQuery | null | undefined;\n\nconst searchApiUrl = \"/api/search/query\";\n\nexport function createSearchParams(search: UseSearchArgs) {\n if (search?.query === undefined) return {};\n\n return {\n from: search?.from?.toString(),\n size: search?.size?.toString(),\n index: search.index,\n query: search.query,\n facets: search?.facets?.join(\",\"),\n filters: search?.filters,\n sort: search?.sort,\n facetLimit: search?.facetLimit?.toString(),\n };\n}\n\ninterface UseSearchOptions {\n dedupe?: boolean;\n defaultSize?: number;\n}\n\nexport function useSearch(\n search: UseSearchArgs,\n options: UseSearchOptions = {},\n) {\n let size = search?.size;\n\n if (options.dedupe) {\n size = (size ?? 25) + 10; // add extra results to dedupe\n }\n\n const fetchProps: UseFetchProps = {\n url: searchApiUrl,\n params: createSearchParams({ ...search, size }),\n };\n\n const result = useFetch>(fetchProps);\n\n if (options.dedupe && result.data?.hits) {\n dedupeSearchData({ search, options, data: result.data });\n }\n\n return result;\n}\n\nexport function useMultiSearch(\n search: Array,\n options: UseSearchOptions = {},\n) {\n const fetchProps: UseFetchProps = {\n method: \"POST\",\n url: searchApiUrl,\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n queries: search.map((s) => {\n let size = s?.size;\n if (options.dedupe) size = (size ?? 25) + 10;\n return createSearchParams({ ...(s ?? {}), size });\n }),\n }),\n };\n\n const result = useFetch>>(fetchProps);\n\n if (options.dedupe && result.data) {\n result.data.forEach((data, i) =>\n dedupeSearchData({ options, data, search: search[i] }),\n );\n }\n\n return result;\n}\n\ninterface DedupeSearchDataArgs {\n data: SearchResults;\n search: UseSearchArgs;\n options: UseSearchOptions;\n}\n\nfunction dedupeSearchData({\n data,\n search,\n options,\n}: DedupeSearchDataArgs) {\n const deduped: Array = [];\n const size = search?.size ?? options.defaultSize ?? 25;\n\n for (const hit of data.hits) {\n const exists = deduped.some((item) => {\n if (\"id\" in item && \"id\" in hit && item.id === hit.id) return true;\n if (\n \"HBSTitle\" in item &&\n \"HBSTitle\" in hit &&\n item.HBSTitle === hit.HBSTitle\n ) {\n return true;\n }\n return false;\n });\n\n if (!exists) deduped.push(hit);\n if (deduped.length >= size) break;\n }\n\n data.hits = deduped;\n}\n"],"names":["createArticleTeaseProps","createContentfulProps","entry","createEditAttributes","param","getEntry","getEntryUrl","useContentful","props","type","title","fields","link","byline","createBylineProps","tease","documentToString","description","shortDescription","editAttributes","fieldId","mediaAsset","createMediaAssetProps","teaseImage","leadImage","image","width","height","video","kaltura","withModal","overlineEntry","overline","text","url","label","createBylineAuthorProps","authorEntry","getPersonLink","getEntityName","isContentType","person","name","avatar","createPersonImageProps","getIsPersonPastHbsFaculty","publicationDate","authors","forEach","bylinePersonProps","push","length","legacyStoryBylineTypein","legacyAuthorByline","relatedOrganizations","organization","featuredAuthors","relatedFaculty","headshots","createUseSearchProps","options","query","size","parseInt","limit","index","sortValue","sort","join","isSearchHitType","hitType","searchHit","undefined","contentType","createSearchArticleTease","data","siteId","thumbnailProps","createModernSearchArticleTease","createLegacySearchArticleTease","HBSTitle","HBSLink","HBSDescription","HBSPubDate","HBSSource","HBSByline","people","startsWith","substring","indexOf","peopleCleanup","split","HBSThumbnail","src","subset","includes","body","highlight","Array","isArray","cleanSearchHightlight","replaceAll","trim","stripHtml","display","site","category","siteOverline","thumbnail","gravity","aspectRatio","date","toLowerCase","legacyByline","hightlight","author","authorFirstHighlight","downloadLink","caseHead","caseCategory","source","variant","searchApiUrl","createSearchParams","search","from","toString","facets","filters","facetLimit","useSearch","result","dedupe","fetchProps","params","useFetch","hits","dedupeSearchData","useMultiSearch","method","headers","JSON","stringify","queries","map","s","i","deduped","defaultSize","hit","some","item","id"],"sourceRoot":""}