{"version":3,"file":"581.b56a958df75ae5a23315.js","mappings":"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","sources":["webpack://pratt-main/../pratt/static/js/components/algolia/hit-helpers.js","webpack://pratt-main/../pratt/static/js/components/algolia/panel.js","webpack://pratt-main/../pratt/static/js/components/algolia/templates/refinement-list.js","webpack://pratt-main/../pratt/static/js/components/algolia/search-client.js","webpack://pratt-main/./static/js/components/algolia/person-search.js","webpack://pratt-main/../pratt/static/js/components/algolia/pagination.js"],"sourcesContent":["export const MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nexport const TIME_ZONE = 'America/New_York';\n\nexport class HitHelpers {\n static getTypeDisplay(type) {\n switch (type) {\n case 'post':\n return 'News';\n case 'prattfolio-story':\n return 'Prattfolio Story';\n default:\n return type[0].toLocaleUpperCase() + type.slice(1);\n }\n }\n\n static Courses = {\n /* eslint-disable */\n sectionsAsHtml(hit) {\n // prettier-ignore\n return `\n \n `;\n },\n /* eslint-enable */\n };\n\n static Events = {\n /* eslint-disable */\n dateAsHTML(hit) {\n const start = new Date(\n new Date(hit.occurrences[0].start).toLocaleString('en-US', { timeZone: TIME_ZONE }),\n );\n // prettier-ignore\n return `\n \n `;\n },\n /* eslint-enable */\n\n time(hit, opts = {}) {\n if (!hit.occurrences.length) {\n return '';\n }\n\n const start = new Date(\n new Date(hit.occurrences[0].start).toLocaleString('en-US', { timeZone: TIME_ZONE }),\n );\n const end = new Date(\n new Date(hit.occurrences[0].end).toLocaleString('en-US', { timeZone: TIME_ZONE }),\n );\n\n const timeFormat = new Intl.DateTimeFormat('en-US', { timeStyle: 'short' });\n const dateFormat = new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n const dateFormatNoYear = new Intl.DateTimeFormat('en-US', { month: 'long', day: 'numeric' });\n\n const isSameDay =\n start.getFullYear() === end.getFullYear() &&\n start.getMonth() === end.getMonth() &&\n start.getDate() === end.getDate();\n\n const isSameYear = start.getFullYear() === end.getFullYear();\n\n let time;\n if (hit.is_all_day) {\n if (isSameDay) {\n time = 'All Day';\n if (opts.includeDay) {\n time = dateFormat.format(start);\n }\n } else {\n if (isSameYear) {\n time = `${dateFormatNoYear.format(start)} – ${dateFormat.format(\n end,\n )} All Day`;\n } else {\n time = `${dateFormat.format(start)} – ${dateFormat.format(\n end,\n )} All Day`;\n }\n }\n } else {\n if (isSameDay) {\n time = `${timeFormat.format(start)} – ${timeFormat.format(end)}`;\n if (opts.includeDay) {\n time = `${dateFormat.format(start)} ${time}`;\n }\n } else {\n let startDateDay = `${dateFormat.format(start)}`;\n if (isSameYear) {\n startDateDay = `${dateFormatNoYear.format(start)}`;\n }\n const endDateDay = `${dateFormat.format(end)}`;\n const startDateTime = `${timeFormat.format(start)}`;\n const endDateTime = `${timeFormat.format(end)}`;\n time = `${startDateDay} – ${endDateDay} ${startDateTime} – ${endDateTime}`;\n }\n }\n\n return time;\n },\n\n location(hit) {\n if (hit.event_type === 'hybrid') {\n return `Online and ${hit.location}`;\n } else if (hit.event_type === 'physical') {\n return hit.location;\n } else {\n return 'Online Event';\n }\n },\n };\n}\n","import { refinementList, panel } from 'instantsearch.js/es/widgets';\n\nexport const refinementListWithPanel = header =>\n panel({\n templates: {\n header: `

${header}

`,\n },\n hidden(options) {\n return options.items.length === 0;\n },\n })(refinementList);\n","export const refinementListTemplate = `\n \n`;\n","import algoliasearch from 'algoliasearch/lite';\n\nconst { ALGOLIA_APPLICATION_ID, ALGOLIA_SEARCH_API_KEY } = window.pratt.env || {};\n\nlet searchClient = null;\n\ntry {\n searchClient = algoliasearch(ALGOLIA_APPLICATION_ID, ALGOLIA_SEARCH_API_KEY);\n} catch (e) {\n console.error(e);\n}\n\nexport default searchClient;\n","import instantsearch from 'instantsearch.js';\nimport { configure, searchBox, hits, clearRefinements } from 'instantsearch.js/es/widgets';\nimport searchClient from '@pratt/js/components/algolia/search-client';\nimport { customPagination } from '@pratt/js/components/algolia/pagination';\nimport { refinementListWithPanel } from '@pratt/js/components/algolia/panel';\nimport { HitHelpers } from '@pratt/js/components/algolia/hit-helpers';\nimport { refinementListTemplate } from '@pratt/js/components/algolia/templates/refinement-list';\n\nclass PersonSearch {\n constructor(rootEl) {\n this.rootEl = rootEl;\n if (!this.rootEl) {\n throw new Error('Root person search element not found.');\n }\n\n this.hitsPerPage = 24;\n\n this.search = instantsearch({\n indexName: this.rootEl.dataset['algoliaIndex'],\n searchClient: searchClient,\n routing: true,\n insights: true,\n });\n\n this.init();\n this.search.start();\n }\n\n init() {\n this.search.addWidgets([\n // https://www.algolia.com/doc/api-reference/widgets/configure/js/\n // Parameter options: https://www.algolia.com/doc/api-reference/search-api-parameters/\n configure({\n hitsPerPage: this.hitsPerPage,\n distinct: true,\n // Force faceting to be applied after de-duplication (via the Distinct setting)\n facetingAfterDistinct: true,\n // Filter results by 'type' facet\n // https://www.algolia.com/doc/api-reference/api-parameters/filters/#facet-filters\n filters: `type:\"person\"`,\n }),\n\n searchBox({\n container: '.js-person-search-input',\n placeholder: 'Search People',\n showSubmit: false,\n }),\n\n clearRefinements({\n container: '.js-person-search-clear',\n templates: {\n resetLabel: 'Reset',\n },\n }),\n\n refinementListWithPanel('School')({\n container: '.js-person-search-schools-input',\n attribute: 'schools',\n operator: 'and',\n limit: 10,\n showMore: true,\n showMoreLimit: 100,\n sortBy: ['name:asc'],\n templates: {\n item: refinementListTemplate,\n },\n }),\n\n refinementListWithPanel('Department')({\n container: '.js-person-search-departments-input',\n attribute: 'departments',\n operator: 'and',\n limit: 10,\n showMore: true,\n showMoreLimit: 100,\n sortBy: ['name:asc'],\n templates: {\n item: refinementListTemplate,\n },\n }),\n\n refinementListWithPanel('Office')({\n container: '.js-person-search-offices-input',\n attribute: 'offices',\n operator: 'and',\n limit: 10,\n showMore: true,\n showMoreLimit: 100,\n sortBy: ['name:asc'],\n templates: {\n item: refinementListTemplate,\n },\n }),\n\n refinementListWithPanel('Type')({\n container: '.js-person-search-types-input',\n attribute: 'person_type',\n operator: 'and',\n limit: 10,\n showMore: true,\n showMoreLimit: 100,\n sortBy: ['name:asc'],\n templates: {\n item: refinementListTemplate,\n },\n transformItems: items =>\n items.map(item => ({\n ...item,\n highlighted: HitHelpers.getTypeDisplay(item.highlighted),\n })),\n }),\n\n // https://www.algolia.com/doc/api-reference/widgets/hits/js/\n hits({\n container: '.js-person-search-hits',\n templates: {\n /* eslint-disable */\n item(hit) {\n return `\n
\n
\n
\n

\n \n \n ${hit.first_name} ${hit.last_name}\n \n \n

\n

${\n hit.job_title || hit.person_type.join(', ') || 'Student'\n }

\n
\n
\n ${\n hit.schools?.length\n ? `\n

${hit.schools.join(', ')}

\n `\n : ''\n }\n ${\n hit.departments?.length\n ? `\n

${hit.departments.join(', ')}

\n `\n : ''\n }\n ${\n hit.offices?.length\n ? `\n

${hit.offices.join(', ')}

\n `\n : ''\n }\n
\n
\n ${\n hit.thumbnail\n ? `\n
\n
\"\"
\n
\n `\n : ''\n }\n
\n `;\n },\n /* eslint-enable */\n },\n }),\n\n // https://www.algolia.com/doc/api-reference/widgets/pagination/js/\n customPagination({\n container: document.querySelector('.js-person-search-pagination'),\n }),\n ]);\n }\n}\n\nexport default PersonSearch;\n","import { connectPagination } from 'instantsearch.js/es/connectors';\n\n// Render custom pagination widget\n// https://www.algolia.com/doc/api-reference/widgets/pagination/js/#connector\nexport const customPagination = connectPagination(function(renderOptions) {\n const { currentRefinement, nbPages, isFirstPage, isLastPage, refine, createURL, widgetParams } =\n renderOptions;\n\n const container = widgetParams.container;\n\n // Hide pagination if no results\n container.classList.toggle('visually-hidden', nbPages === 0);\n\n const currentPage = currentRefinement + 1;\n const totalPages = nbPages === 0 ? 1 : nbPages;\n\n /* eslint-disable */\n container.innerHTML = `\n
\n ${currentPage} / ${totalPages}\n
\n
\n \n Previous page\n \n \n \n \n \n Next page\n \n \n \n \n
\n `;\n /* eslint-enable */\n\n [...container.querySelectorAll('a')].forEach(element => {\n element.addEventListener('click', event => {\n event.preventDefault();\n refine(event.currentTarget.dataset.value);\n });\n });\n});\n"],"names":["MONTHS","TIME_ZONE","HitHelpers","getTypeDisplay","type","toLocaleUpperCase","slice","static","sectionsAsHtml","hit","sections","map","section","days","join","start_time","end_time","location","loc","name","dateAsHTML","start","Date","occurrences","toLocaleString","timeZone","getMonth","getDate","time","opts","length","end","timeFormat","Intl","DateTimeFormat","timeStyle","dateFormat","year","month","day","dateFormatNoYear","isSameDay","getFullYear","isSameYear","is_all_day","includeDay","format","startDateDay","event_type","refinementListWithPanel","header","panel","templates","hidden","options","items","refinementList","refinementListTemplate","ALGOLIA_APPLICATION_ID","ALGOLIA_SEARCH_API_KEY","window","pratt","env","searchClient","algoliasearch","e","console","error","constructor","rootEl","this","Error","hitsPerPage","search","instantsearch","indexName","dataset","routing","insights","init","addWidgets","configure","distinct","facetingAfterDistinct","filters","searchBox","container","placeholder","showSubmit","clearRefinements","resetLabel","attribute","operator","limit","showMore","showMoreLimit","sortBy","item","transformItems","highlighted","hits","thumbnail","url","objectID","__queryID","__position","first_name","last_name","job_title","person_type","schools","departments","offices","customPagination","document","querySelector","connectPagination","renderOptions","currentRefinement","nbPages","isFirstPage","isLastPage","refine","createURL","widgetParams","classList","toggle","currentPage","totalPages","innerHTML","querySelectorAll","forEach","element","addEventListener","event","preventDefault","currentTarget","value"],"sourceRoot":""}