{"version":3,"file":"component---src-pages-winner-ranking-winner-overview-index-js.js","mappings":"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","sources":["webpack://if-website/./src/hooks/useWinnerFilters.js","webpack://if-website/./src/pages/winner-ranking/winner-overview/index.js","webpack://if-website/./src/pages/winner-ranking/winner-overview/styles.module.scss"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { getAPIRoot } from '../helpers/fetch';\nimport { getYearFilters, getOpenedFilters } from '../helpers/filters';\nimport { API_ROUTES, AWARD_IDS, AWARDS } from '../utils/constants';\n\nconst withCustomAwardsAndSorted = (awards, type) => {\n const iFDAward = awards.find((award) => award.id === AWARD_IDS.IFDA);\n const iFDATalentAward = awards.find((award) => award.id === AWARD_IDS.IFDSA);\n const iFSIPAward = awards.find((award) => award.id === AWARD_IDS.IFSIP);\n\n return [\n ...(type === 'project'\n ? [\n iFDAward,\n {\n id: AWARD_IDS.IFDA_GOLD,\n name: AWARDS.IFDA_GOLD,\n year: iFDAward.year,\n },\n ]\n : []),\n ...(type === 'student'\n ? [\n {\n ...iFDATalentAward,\n name: AWARDS.IFDSA,\n year: iFDATalentAward.year,\n },\n {\n id: AWARD_IDS.IFDSA_BEST,\n name: AWARDS.IFDSA_BEST,\n year: iFDATalentAward.year,\n },\n ]\n : []),\n ...(!type || type === 'sip'\n ? [\n {\n ...iFSIPAward,\n hide: true,\n name: AWARDS.IFSIP,\n locked: true,\n },\n ]\n : []),\n ];\n};\n\n// adapt current filters to what backend expects\nconst prepareFiltersForAPI = (filters, apiFilters, seed, count) => {\n const filtersForAPI = {\n // only one award can be selected\n award:\n filters?.awards?.map((filter) => {\n // map fake award ids (sub awards) to their respective award\n if (filter === AWARD_IDS.IFDA_GOLD) {\n return AWARD_IDS.IFDA;\n } else if (filter === AWARD_IDS.IFDSA_BEST) {\n return AWARD_IDS.IFDSA;\n } else if (filter === AWARD_IDS.IF_SIP_SUPPORTED) {\n return AWARD_IDS.IFSIP;\n }\n\n return filter;\n })[0] ?? AWARD_IDS.IFDA,\n // if there are regions selected but no countries, grab all countries from those regions\n countries:\n (filters?.region?.length && filters?.countries?.length === 0\n ? apiFilters?.countries\n .filter((country) => filters?.region?.includes(country.region))\n .map((country) => country.id)\n : filters?.countries) || [],\n range: filters?.time[0],\n seed: filters?.seed || seed,\n count,\n find: filters?.find || '',\n disciplines: filters?.disciplines || [],\n categories: [AWARD_IDS.IFDA_GOLD, AWARD_IDS.IFDA].some((filter) =>\n filters?.awards?.includes(filter)\n )\n ? filters?.categories || []\n : [],\n isGoldAward: filters?.awards?.includes(AWARD_IDS.IFDA_GOLD),\n isBestOfYear: filters?.awards?.includes(AWARD_IDS.IFDSA_BEST),\n isSupportedByIF: filters?.awards?.includes(AWARD_IDS.IF_SIP_SUPPORTED),\n profileId: Number(filters?.profile?.split('|id=')?.pop()) || 0,\n };\n\n return JSON.stringify(filtersForAPI);\n};\n\nexport const useWinnerFilters = (\n filters,\n items = [],\n type = null,\n isInSearch\n) => {\n const [totalCount, setTotalCount] = useState(null);\n const [apiFilters, setApiFilters] = useState({});\n const [visibleFilters, setVisibleFilters] = useState(null);\n const [page, setPage] = useState(filters.page || 0);\n const [tempFilters, setTempFilters] = useState(null); // used when deferred\n const [results, setResults] = useState([]);\n const [loading, setLoading] = useState(true);\n const [noMoreResults, setNoMoreResults] = useState(true);\n const [payload, setPayload] = useState('');\n const [seed, setSeed] = useState(filters.seed || '');\n const [windowLocation, setWindowLocation] = useState(null);\n\n useEffect(() => {\n setWindowLocation(window.location);\n }, []);\n\n // get filters from backend when component loads\n useEffect(() => {\n getAPIFilters();\n }, []);\n\n // initialize visible filters after receiving possible filters from backend\n // change them if filters changed\n useEffect(() => {\n if (Object.values(apiFilters).length) {\n const newVisibleFilters = {\n sort: [\n {\n id: 'desc',\n name: 'Newest',\n },\n {\n id: 'asc',\n name: 'Oldest',\n },\n {\n id: 'random',\n name: 'Random',\n },\n ],\n ...apiFilters,\n categories: getCategories(),\n disciplines: getDisciplines(),\n countries: getCountries(),\n };\n setVisibleFilters(newVisibleFilters);\n }\n }, [apiFilters, filters]);\n\n // update results once we have calculated what filters should be visible\n useEffect(() => {\n if (visibleFilters && filters) {\n updateResults();\n }\n }, [visibleFilters]);\n\n // update results on page change (only used with infinite scrolling)\n useEffect(() => {\n if (page > 0 && !isInSearch) {\n updateResults();\n }\n }, [page]);\n\n const increasePage = () => {\n setPage((prevPage) => prevPage + 1);\n };\n\n // returns categories that should be visible\n // if not gold award nor iFDA, show sipTalentCategories\n const getCategories = () => {\n return apiFilters?.categories ?? [];\n };\n\n // returns disciplines that should be visible\n // disciplines should only be shown when iFDA or gold award selected\n const getDisciplines = () => {\n return apiFilters?.disciplines ?? [];\n };\n\n // returns country filters that should be visible\n const getCountries = () => {\n // if more than 1 region selected, remove countries\n if (filters?.region?.length > 1) {\n return [];\n }\n // if 1 region selected, only show countries from that region\n if (filters?.region?.length === 1) {\n const regionName = apiFilters?.region?.find(\n (region) => region.id === filters?.region[0]\n ).id;\n return apiFilters?.countries?.filter(\n (country) => country.region === regionName\n );\n }\n // if no regions selected, show all countries\n if (!filters?.region?.length) {\n return apiFilters?.countries;\n }\n };\n\n useEffect(() => {\n sessionStorage?.setItem(\n `${type}QueryParams`,\n new URLSearchParams(windowLocation?.search).toString()\n );\n if (isInSearch) {\n sessionStorage?.setItem('returnToSearchPage', true);\n } else {\n sessionStorage?.removeItem('returnToSearchPage');\n }\n }, [windowLocation?.search]);\n\n useEffect(() => {\n const payloadObj = JSON.parse(payload || '{}');\n sessionStorage?.setItem(\n `${type}Payload`,\n JSON.stringify({\n ...payloadObj,\n sort: filters.sort,\n page,\n })\n );\n }, [payload]);\n\n useEffect(() => {\n sessionStorage?.setItem(`${type}Count`, totalCount);\n }, [totalCount]);\n\n // const getInspirationResults = async () => {\n // let apiRoot = await getAPIRoot();\n // const url = `${apiRoot}${API_ROUTES.ENTRIES_RANDOM}/15`;\n // const options = {\n // method: 'GET',\n // redirect: 'follow',\n // headers: {\n // 'Content-Type': 'application/json',\n // },\n // };\n\n // const response = await fetch(url, options);\n // const json = await response.json();\n\n // return json['items'];\n // };\n\n const getFiltersThatShouldApply = () => {\n // get only filters that are visible\n return Object.fromEntries(\n Object.entries(filters).map(([key, appliedFilter]) => {\n if (Array.isArray(appliedFilter)) {\n return [\n key,\n appliedFilter.filter((appliedFilterItem) =>\n visibleFilters?.[key].find(\n (visibleFilter) => visibleFilter.id === appliedFilterItem\n )\n ),\n ];\n } else {\n return [key, appliedFilter];\n }\n })\n );\n };\n\n const getFilteredResultsJsonResponse = async () => {\n let apiRoot = await getAPIRoot();\n const itemsPerPage = isInSearch ? 28 : 18;\n\n const filtersThatShouldApply = getFiltersThatShouldApply();\n\n const _payload = prepareFiltersForAPI(\n filtersThatShouldApply,\n apiFilters,\n seed,\n itemsPerPage\n );\n setPayload(_payload);\n const url = `${apiRoot}${\n API_ROUTES.SEARCH_WINNER\n }/${page}/${itemsPerPage}?order=${filters.sort || 'desc'}`;\n const options = {\n method: 'POST',\n redirect: 'follow',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: _payload,\n };\n\n const response = await fetch(url, options);\n return response.json();\n };\n\n const getDynamicFilters = async (localApiFilters = apiFilters) => {\n let apiRoot = await getAPIRoot();\n\n const url = apiRoot + API_ROUTES.SEARCH_WINNER_DYNAMIC_FILTER;\n\n const fullPayload = prepareFiltersForAPI(filters, localApiFilters);\n\n const options = {\n method: 'POST',\n redirect: 'follow',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: fullPayload,\n };\n\n const response = await fetch(url, options);\n return response.json();\n };\n\n // get filters from backend, rename them and set state\n const getAPIFilters = async () => {\n let apiRoot = await getAPIRoot();\n const url = apiRoot + API_ROUTES.SEARCH_WINNER_FILTER;\n\n const response = await fetch(url, {\n method: 'POST',\n });\n const _apiFilters = await response.json();\n\n const tempApiFilters = {\n awards: withCustomAwardsAndSorted(_apiFilters['awards'], type),\n time: getYearFilters({\n allTime: true,\n type,\n }),\n ...(type == 'project' && { disciplines: _apiFilters['disciplines'] }),\n region: _apiFilters['regions'],\n countries: _apiFilters['countries'],\n };\n\n const dynamicApiFilters = await getDynamicFilters(tempApiFilters);\n\n setApiFilters({\n ...tempApiFilters,\n ...dynamicApiFilters,\n awards: withCustomAwardsAndSorted(dynamicApiFilters['awards'], type),\n });\n };\n\n const updateResults = async () => {\n if (filters?.inspiration) {\n setResults(await getInspirationResults());\n setNoMoreResults(true);\n }\n\n const json = await getFilteredResultsJsonResponse();\n\n if (!json.items.length) {\n setNoMoreResults(true);\n }\n\n setTotalCount(json.count);\n setSeed(json.seed);\n\n if (page > 0) {\n const _results = results.concat(json.items);\n if (_results.length === json.count) {\n setNoMoreResults(true);\n }\n setResults(_results);\n } else {\n setResults(json.items);\n setNoMoreResults(json.items.length === json.count);\n }\n\n setLoading(false);\n };\n\n return {\n visibleFilters,\n filterOrderByKey:\n type === 'sip'\n ? [\n 'sort',\n 'awards',\n 'time',\n 'disciplines',\n 'categories',\n 'region',\n 'countries',\n ]\n : [\n 'sort',\n 'awards',\n 'time',\n 'region',\n 'countries',\n 'disciplines',\n 'categories',\n ],\n increasePage,\n results,\n loading,\n noMoreResults,\n totalCount,\n openedFilters: getOpenedFilters(filters, ['sort', 'awards', 'time']),\n radioFiltersKeys: ['sip'].includes(type)\n ? ['sort', 'time']\n : ['sort', 'awards', 'time'],\n seed,\n year: visibleFilters?.awards?.[0].year || 2025,\n };\n};\n","import React from 'react';\nimport {\n ArrayParam,\n BooleanParam,\n StringParam,\n useQueryParams,\n} from 'use-query-params';\nimport { graphql, useStaticQuery } from 'gatsby';\nimport { navigate } from 'gatsby';\nimport Layout from '../../../modules/layout';\nimport Search from '../../../components/ui/filterSearch';\nimport ResultsList from '../../../components/ui/resultsList';\nimport { useWinnerFilters } from '../../../hooks/useWinnerFilters';\nimport { useLocale } from '../../../context/locale.context';\nimport * as styles from './styles.module.scss';\nimport Container from '../../../modules/container';\nimport Headline from '../../../components/ui/headline';\nimport Text from '../../../components/ui/text';\nimport { getCopy } from '../../../helpers/copy';\n\nconst PARAMS_CONFIG = {\n tagId: StringParam,\n awardId: ArrayParam,\n regionId: ArrayParam,\n countryId: ArrayParam,\n disciplineId: ArrayParam,\n categoryId: ArrayParam,\n yearId: ArrayParam,\n sort: StringParam,\n find: StringParam,\n seed: StringParam,\n inspiration: BooleanParam,\n profile: StringParam,\n};\n\nconst WinnerOverview = () => {\n const { locale } = useLocale();\n const [query, _] = useQueryParams(PARAMS_CONFIG);\n\n const { allContentfulSearchChip, allContentfulMicrocopy } = useStaticQuery(\n graphql`\n query {\n allContentfulSearchChip(\n filter: {\n content_search: {\n elemMatch: {\n page: { elemMatch: { slug: { eq: \"winner-ranking\" } } }\n }\n }\n }\n ) {\n nodes {\n behaviour\n queryParameters\n tag\n label\n node_locale\n queryParameters\n }\n }\n allContentfulMicrocopy {\n nodes {\n key\n value\n node_locale\n }\n }\n }\n `\n );\n\n const localizedChips = {\n nodes: allContentfulSearchChip.nodes.filter(\n (chip) =>\n chip.node_locale === locale && chip.behaviour !== 'Query Parameter'\n ),\n };\n\n const onSubmit = (searchTerm) => {\n const params = new URLSearchParams(location.search);\n params.set('find', searchTerm.split('=').pop());\n navigate(`?${params.toString()}`, {\n replace: true,\n });\n };\n\n const searchByTag = (tag) => {\n navigate(`?tagId=${tag}`, {\n replace: true,\n });\n };\n\n const resetSearchTerm = () => {\n const params = new URLSearchParams(location.search);\n params.set('find', '');\n navigate(`?${params.toString()}`, {\n replace: true,\n });\n };\n\n const onInspire = () => {\n navigate('?inspiration=1', { replace: true });\n };\n\n const microcopy = allContentfulMicrocopy.nodes\n .filter((node) => node.node_locale === locale)\n .reduce((acc, curr) => {\n return {\n ...acc,\n [curr.key]: curr.value,\n };\n }, {});\n\n const queryFilters = {\n awards: query.awardId ? query.awardId.map(Number) : [2],\n disciplines: query.disciplineId ? query.disciplineId.map(Number) : [],\n categories: query.categoryId ? query.categoryId.map(Number) : [],\n region: query.regionId ? query.regionId.map(String) : [],\n countries: query.countryId ? query.countryId.map(String) : [],\n time: query.yearId ? query.yearId.map(Number) : query.profile ? [4] : [0],\n inspiration: query.inspiration,\n tag: query.tagId,\n sort: query.sort ? query.sort : 'random',\n find: query.find,\n profile: query.profile,\n seed: query.seed,\n };\n\n return (\n \n
\n \n \n \n {getCopy('label.ifdaFilterSubheadline', microcopy)}\n \n \n
\n \n \n \n );\n};\n\nexport default WinnerOverview;\n","// extracted by mini-css-extract-plugin\nexport var headlineContainer = \"styles-module--headlineContainer--b5455\";\nexport var headlineOuterContainer = \"styles-module--headlineOuterContainer--52058\";\nexport var subheadline = \"styles-module--subheadline--a4be5\";"],"names":["withCustomAwardsAndSorted","awards","type","iFDAward","find","award","id","AWARD_IDS","iFDATalentAward","iFSIPAward","name","AWARDS","year","hide","locked","prepareFiltersForAPI","filters","apiFilters","seed","count","_filters$awards$map$","_filters$awards","_filters$region","_filters$countries","_filters$awards3","_filters$awards4","_filters$awards5","_filters$profile","_filters$profile$spli","filtersForAPI","map","filter","countries","region","length","country","_filters$region2","includes","range","time","disciplines","categories","some","_filters$awards2","isGoldAward","isBestOfYear","isSupportedByIF","profileId","Number","profile","split","pop","JSON","stringify","useWinnerFilters","items","isInSearch","_visibleFilters$award","totalCount","setTotalCount","useState","setApiFilters","visibleFilters","setVisibleFilters","page","setPage","tempFilters","setTempFilters","results","setResults","loading","setLoading","noMoreResults","setNoMoreResults","payload","setPayload","setSeed","windowLocation","setWindowLocation","useEffect","window","location","getAPIFilters","Object","values","newVisibleFilters","sort","getCategories","getDisciplines","getCountries","updateResults","_apiFilters$categorie","_apiFilters$disciplin","_filters$region3","_filters$region4","_filters$region5","_apiFilters$region","_apiFilters$countries","regionName","_sessionStorage","_sessionStorage2","_sessionStorage3","sessionStorage","setItem","URLSearchParams","search","toString","removeItem","_sessionStorage4","payloadObj","parse","_sessionStorage5","getFilteredResultsJsonResponse","async","apiRoot","getAPIRoot","itemsPerPage","filtersThatShouldApply","fromEntries","entries","key","appliedFilter","Array","isArray","appliedFilterItem","visibleFilter","_payload","url","API_ROUTES","options","method","redirect","credentials","headers","body","fetch","json","response","_apiFilters","tempApiFilters","getYearFilters","allTime","dynamicApiFilters","localApiFilters","getDynamicFilters","inspiration","getInspirationResults","_results","concat","filterOrderByKey","increasePage","prevPage","openedFilters","getOpenedFilters","radioFiltersKeys","PARAMS_CONFIG","tagId","StringParam","awardId","ArrayParam","regionId","countryId","disciplineId","categoryId","yearId","BooleanParam","WinnerOverview","locale","useLocale","query","_","useQueryParams","allContentfulSearchChip","allContentfulMicrocopy","useStaticQuery","localizedChips","nodes","chip","node_locale","behaviour","resetSearchTerm","params","set","navigate","replace","microcopy","node","reduce","acc","curr","value","queryFilters","String","tag","React","Layout","title","description","slug","className","Container","Headline","text","getCopy","level","Text","as","Search","onSubmit","searchTerm","onTagClick","onInspire","initSearchTerm","chips","placeholder","ResultsList","filtersHook","teaserType","tags","noResultsLabelKey","isWinnerFilterlist","filtersApiParam"],"sourceRoot":""}