{"version":3,"file":"f378f59ed082271a14147fdb1515f2fe4a8b133b.js","mappings":"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","sources":["webpack://if-website/./src/components/ui/checkbox/index.jsx","webpack://if-website/./src/components/ui/checkbox/checkbox.module.scss","webpack://if-website/./src/components/ui/filterSearch/index.jsx","webpack://if-website/./src/components/ui/filterSearch/styles.module.scss","webpack://if-website/./src/components/ui/filterTag/index.jsx","webpack://if-website/./src/components/ui/filterTag/filterTag.module.scss","webpack://if-website/./src/components/ui/radiobutton/radiobutton.module.scss","webpack://if-website/./src/components/ui/radiobutton/index.jsx","webpack://if-website/./src/components/ui/filterSet/filterSet.module.scss","webpack://if-website/./src/components/ui/filterSet/index.jsx","webpack://if-website/./src/components/ui/filtersModal/index.jsx","webpack://if-website/./src/components/ui/filtersModal/filtersModal.module.scss","webpack://if-website/./src/components/ui/pagination/pagination.module.scss","webpack://if-website/./src/components/ui/pagination/index.jsx","webpack://if-website/./src/components/ui/resultsList/resultsList.module.scss","webpack://if-website/./src/components/ui/resultsList/index.jsx","webpack://if-website/./src/components/ui/tag/index.jsx","webpack://if-website/./src/components/ui/tag/styles.module.scss","webpack://if-website/./src/helpers/copyToClipboard.js","webpack://if-website/./src/hooks/usePagination.js","webpack://if-website/./src/hooks/useWindowSize.js"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport pt from 'prop-types';\nimport * as styles from './checkbox.module.scss';\nimport { combine } from '/src/helpers/styles';\nimport Text from '../text';\nimport Icon from '../icon';\n\nconst Checkbox = ({\n label,\n defaultChecked,\n checked,\n onClick,\n disabled,\n className,\n isLink,\n ...props\n}) => {\n const [hovered, setHovered] = useState(false);\n // Using ref to handle hover state as CSS is more reliable than mouseenter and mouseleave events\n const labelRef = useRef();\n\n const inputProps = {\n type: 'checkbox',\n ...(checked !== undefined && { checked }),\n ...(defaultChecked !== undefined && { defaultChecked }),\n ...(onClick !== undefined && { onChange: onClick }),\n disabled,\n ...props,\n };\n\n const Input = ({ children }) => {\n if (isLink) {\n return
{children}
;\n }\n\n return children;\n };\n\n return (\n \n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n \n {label}\n \n \n \n {(checked || defaultChecked) && (\n \n )}\n \n \n \n );\n};\n\nCheckbox.propTypes = {\n label: pt.string.isRequired,\n onClick: pt.func.isRequired,\n className: pt.string,\n checked: pt.bool,\n defaultChecked: pt.bool,\n isLink: pt.bool,\n disabled: pt.bool,\n};\nCheckbox.defaultProps = {\n disabled: false,\n className: '',\n};\n\nexport default Checkbox;\n","// extracted by mini-css-extract-plugin\nexport var checkbox = \"checkbox-module--checkbox--17cbc\";\nexport var checkmark = \"checkbox-module--checkmark--62a4a\";\nexport var disabled = \"checkbox-module--disabled--17816\";\nexport var icon = \"checkbox-module--icon--1a94b\";\nexport var inline = \"checkbox-module--inline--84149\";\nexport var input = \"checkbox-module--input--75c17\";\nexport var leftMargin = \"checkbox-module--leftMargin--4a0b1\";\nexport var link = \"checkbox-module--link--e93b5\";\nexport var linkDisabled = \"checkbox-module--link--disabled--46b34\";","import React from 'react';\nimport pt from 'prop-types';\nimport Container from '/src/modules/container';\nimport SearchField from './components/searchField';\nimport Tag from '../tag';\nimport * as styles from './styles.module.scss';\n\nimport { getAPIRoot } from '../../../helpers/fetch';\nimport { combine } from '../../../helpers/styles';\nimport { API_ROUTES } from '../../../utils/constants';\n\nconst Search = ({\n initSearchTerm,\n resetSearchTerm,\n placeholder,\n chips,\n onSubmit,\n onTagClick,\n onInspire,\n type,\n inContentPage,\n className,\n}) => {\n const submitSearch = async (queryParams) => {\n let apiRoot = await getAPIRoot();\n\n if (queryParams === `?find=Inspire Me`) {\n onInspire();\n } else {\n if (/^\\?find\\=[^&]+$/.test(queryParams)) {\n const term = queryParams.split('=').pop();\n\n if (term) {\n fetch(`${apiRoot}${API_ROUTES.TRACK_SEARCH}/${term}`);\n }\n }\n onSubmit(queryParams);\n }\n };\n\n const handleTagClick = (term) => {\n const searchTerm = typeof term === 'string' ? tag : term.label;\n const searchTag = typeof term === 'string' ? tag : term.tag;\n const isInspiration =\n (typeof term === 'string' && term === 'Inspire Me') ||\n (typeof term === 'object' && term.behaviour === 'Inspiration');\n const isQueryParam =\n typeof term === 'object' && term.behaviour === 'Query Parameter';\n\n if (isInspiration) {\n onInspire();\n } else {\n if (isQueryParam) {\n submitSearch(term.queryParameters);\n } else if (searchTag) {\n onTagClick(searchTag);\n } else {\n submitSearch(`?find=${encodeURIComponent(searchTerm)}`);\n }\n }\n };\n\n const presetList = chips || [];\n\n return (\n \n submitSearch(`?find=${term}`)}\n onReset={resetSearchTerm}\n type={type}\n />\n {!inContentPage && (\n
\n {presetList.map((item, index) => (\n handleTagClick(item)}>\n {typeof item === 'string' ? item : item.label}\n \n ))}\n
\n )}\n
\n );\n};\n\nSearch.propTypes = {\n initSearchTerm: pt.string,\n onSubmit: pt.func,\n onTagClick: pt.oneOfType([null, pt.func]),\n onInspire: pt.func,\n resetSearchTerm: pt.func,\n chips: pt.array,\n type: pt.oneOf(['Companies', 'Projects', 'Talent', 'SIP', 'Jury', 'Ranking']),\n inContentPage: pt.bool,\n};\n\nSearch.defaultProps = {\n initSearchTerm: '',\n onSubmit: () => {},\n onTagClick: null,\n onInspire: () => {},\n resetSearchTerm: () => {},\n chips: [],\n type: 'Companies',\n inContentPage: false,\n};\n\nexport default Search;\n","// extracted by mini-css-extract-plugin\nexport var container = \"styles-module--container--30f20\";\nexport var space = \"styles-module--space--087b6\";\nexport var tags = \"styles-module--tags--07657\";","import React, { useContext } from 'react';\nimport pt from 'prop-types';\nimport * as styles from './filterTag.module.scss';\nimport { combine } from '/src/helpers/styles';\nimport Text from '../text';\nimport Icon from '../icon';\nimport { MicrocopyContext } from '../../../context/microcopy.context';\nimport { getCopy } from '../../../helpers/copy';\nimport { useLocale } from '../../../context/locale.context';\nimport { getCountryName } from '../../../utils/constants';\n\nconst FilterTag = ({\n text,\n removeLink,\n isGolden,\n isLocked,\n className,\n filterKey,\n filterId,\n type,\n year,\n ...props\n}) => {\n const microcopy = useContext(MicrocopyContext);\n const { locale } = useLocale();\n\n const getLabel = () => {\n if (\n filterKey &&\n ((typeof filterId === 'string' && filterId.length) ||\n typeof filterId === 'number')\n ) {\n if (filterKey === 'yearId') {\n return getCopy(\n `filters.time.${filterId}${type !== '' ? `.${type}` : ''}`,\n microcopy\n ).replace('%YEAR%', year - filterId);\n }\n\n if (filterKey === 'profileTypeId') {\n return getCopy(\n `filters.profiletypes.${filterId}${type !== '' ? `.${type}` : ''}`,\n microcopy\n );\n }\n\n if (filterKey === 'regionId') {\n return getCopy(\n `filters.region.${filterId.replaceAll(' ', '').toLowerCase()}`,\n microcopy\n );\n }\n\n if (filterKey === 'countryId') {\n return getCountryName(locale, filterId);\n }\n\n if (filterKey === 'awardId') {\n let key = filterId;\n if (key === 9999) {\n key = '2.special';\n } else if (key === 7777) {\n key = '1.special';\n }\n return getCopy(`filters.awards.${key}`, microcopy);\n }\n }\n return getCopy(text, microcopy);\n };\n\n return (\n \n \n \n \n {getLabel()}\n \n \n \n );\n};\n\nFilterTag.propTypes = {\n text: pt.string.isRequired,\n removeLink: pt.string,\n isGolden: pt.bool,\n isLocked: pt.bool,\n className: pt.string,\n filterKey: pt.string,\n filterId: pt.oneOfType([pt.string, pt.number]),\n};\n\nFilterTag.defaultProps = {\n isGolden: false,\n isLocked: false,\n className: '',\n filterKey: '',\n filterId: '',\n};\n\nexport default FilterTag;\n","// extracted by mini-css-extract-plugin\nexport var button = \"filterTag-module--button--4b808\";\nexport var filterTag = \"filterTag-module--filterTag--39489\";\nexport var gold = \"filterTag-module--gold--9b0fe\";\nexport var icon = \"filterTag-module--icon--d45c1\";\nexport var locked = \"filterTag-module--locked--c8550\";","// extracted by mini-css-extract-plugin\nexport var checkbox = \"radiobutton-module--checkbox--6f6c7\";\nexport var checkmark = \"radiobutton-module--checkmark--93048\";\nexport var disabled = \"radiobutton-module--disabled--32d54\";\nexport var input = \"radiobutton-module--input--5cf8a\";\nexport var link = \"radiobutton-module--link--34bfb\";","import React, { useState, useRef } from 'react';\nimport pt from 'prop-types';\nimport * as styles from './radiobutton.module.scss';\nimport { combine } from '/src/helpers/styles';\nimport Text from '../text';\n\nconst Radiobutton = ({\n label,\n checked,\n defaultChecked,\n onClick,\n disabled,\n className,\n isLink,\n ...props\n}) => {\n const [hovered, setHovered] = useState(false);\n // Using ref to handle hover state as CSS is more reliable than mouseenter and mouseleave events\n const labelRef = useRef();\n\n const inputProps = {\n type: 'radio',\n ...(checked !== undefined && { checked }),\n ...(defaultChecked !== undefined && { defaultChecked }),\n ...(onClick !== undefined && { onChange: onClick }),\n disabled,\n ...props,\n };\n\n const Input = ({ children }) => {\n if (isLink) {\n return (\n
\n {children}\n
\n );\n }\n\n return children;\n };\n\n return (\n \n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n \n {label}\n \n \n \n \n \n );\n};\n\nRadiobutton.propTypes = {\n label: pt.string.isRequired,\n onClick: pt.func.isRequired,\n className: pt.string,\n checked: pt.bool,\n defaultChecked: pt.bool,\n isLink: pt.bool,\n disabled: pt.bool,\n};\nRadiobutton.defaultProps = {\n disabled: false,\n className: '',\n};\n\nexport default Radiobutton;\n","// extracted by mini-css-extract-plugin\nexport var filter = \"filterSet-module--filter--e5078\";\nexport var filterSet = \"filterSet-module--filterSet--efc5b\";\nexport var filtersContainer = \"filterSet-module--filtersContainer--b332a\";\nexport var header = \"filterSet-module--header--ec215\";\nexport var icon = \"filterSet-module--icon--6c9fc\";\nexport var isRadio = \"filterSet-module--isRadio--40026\";\nexport var withBorder = \"filterSet-module--withBorder--19d97\";\nexport var withMargin = \"filterSet-module--withMargin--a24cf\";","import React, { useState, useEffect, useRef, useContext } from 'react';\nimport { useLocation } from '@reach/router';\nimport pt from 'prop-types';\nimport Text from '../text';\nimport Checkbox from '../checkbox';\nimport { combine } from '../../../helpers/styles';\nimport Icon from '../icon';\nimport { formatFilterLabel, getCopyWithFallback } from '../../../helpers/copy';\nimport * as styles from './filterSet.module.scss';\nimport Radiobutton from '../radiobutton';\nimport { buildSearchParams } from '../../../helpers/filters';\nimport { MicrocopyContext } from '../../../context/microcopy.context';\nimport { getCopy } from '../../../helpers/copy';\nimport { useLocale } from '../../../context/locale.context';\nimport { getCountryName } from '../../../utils/constants';\n\nconst FilterSet = ({\n label,\n visibleFilters,\n queryFilters,\n withButtonMargin,\n withTopBorder,\n isRadio,\n openAtStart,\n onChange,\n isDynamic,\n type,\n award = '',\n year,\n}) => {\n const microcopy = useContext(MicrocopyContext);\n const { locale } = useLocale();\n const location = useLocation();\n const ref = useRef();\n const [isOpen, setIsOpen] = useState(openAtStart);\n const [maxHeight, setMaxHeight] = useState('none');\n const [filters, setFilters] = useState([]);\n\n const getFilterOptionLabel = (option, filterId) => {\n const isWdi = location.pathname.includes('wdi');\n\n // region is continent in wdi ranking\n filterId = (filterId === 'continent' ? 'region' : filterId)\n .toLowerCase()\n .replace(' ', '');\n\n // don't translate categories disciplines, industries, sectors or fields of work (nor countries if wdi)\n if (filterId === 'industry' || (filterId === 'country' && isWdi)) {\n return null;\n }\n\n if (filterId === 'sectors') {\n return getCopyWithFallback(\n `filters.sectors.${option.id}`,\n microcopy,\n option.name\n );\n }\n\n if (filterId === 'fieldsofwork') {\n return getCopyWithFallback(\n `filters.fieldsofwork.${option.id}`,\n microcopy,\n option.name\n );\n }\n\n if (filterId === 'categories') {\n return getCopyWithFallback(\n `filters.category.${option.id}${option.type ? `.${option.type}` : ''}`,\n microcopy,\n option.name\n );\n }\n\n if (filterId === 'disciplines') {\n return getCopyWithFallback(\n `filters.discipline.${option.id}`,\n microcopy,\n option.name\n );\n }\n\n // use Intl.DisplayNames to translate country names\n if (['countries', 'country'].includes(filterId)) {\n return getCountryName(locale, option.id);\n }\n\n // handle special awards\n if (filterId === 'awards') {\n if (option.id === 9999) {\n return getCopy('filters.awards.2.special', microcopy);\n } else if (option.id === 7777) {\n return getCopy('filters.awards.1.special', microcopy);\n }\n }\n\n if (filterId === 'time') {\n // options 0 (this year) and 1(last year) have different microcopies for jurors\n const hasCustomMicrocopy =\n type === 'juror' && (option.id == 0 || option.id == 1) && award;\n\n // if the option is this year or last year, we need to replace %YEAR% with the actual year (minus 0 for current year or minus 1 for last year)\n return getCopy(\n `filters.time.${option.id}${type ? `.${type}` : ''}${\n hasCustomMicrocopy ? `.${award}` : ''\n }`,\n microcopy\n ).replace('%YEAR%', year - option.id);\n }\n\n if (filterId === 'profiletypes' || filterId === 'profiletype') {\n return getCopy(\n `filters.profiletypes.${option.id}${type ? `.${type}` : ''}`,\n microcopy\n );\n }\n\n return getCopy(\n `filters.${filterId}.${option.id}`.toLowerCase().replace(' ', ''),\n microcopy\n );\n };\n\n useEffect(() => {\n // filter out filters that should be hidden and check them if they should be checked\n const _filters = visibleFilters\n .filter((filter) => !filter.hide)\n .map((filter) => ({\n ...filter,\n checked: queryFilters?.includes(filter.id),\n }));\n\n // sort countries by localized name or by sort order\n if (['countries', 'country'].includes(label)) {\n _filters.sort((a, b) =>\n getCountryName(locale, a.id).localeCompare(getCountryName(locale, b.id))\n );\n } else {\n _filters.sort((a, b) => a.sort - b.sort);\n }\n\n setFilters(_filters);\n }, [queryFilters, visibleFilters]);\n\n const handleFilterClick = onChange\n ? (filter) => {\n const newFilters = filters.map((f) =>\n f.id === filter.id ? { ...f, checked: !filter.checked } : f\n );\n setFilters(newFilters);\n }\n : () => {};\n\n useEffect(() => {\n if (onChange) {\n onChange(filters.filter((el) => el.checked).map((el) => el.id));\n }\n }, [filters]);\n\n const style = {\n transition: 'max-height 350ms ease-in-out',\n overflow: 'hidden',\n // For the collapse animation to work we need a fixed max-height,\n // therefore we simply pass the actual height of the element when the user collapses it (isOpen === false)\n maxHeight:\n maxHeight === 'none' && !isOpen ? ref.current?.clientHeight : maxHeight,\n };\n\n useEffect(() => {\n if (!isOpen) {\n setMaxHeight('0');\n } else {\n setMaxHeight(\n ref.current?.clientHeight ? `${ref.current?.clientHeight}px` : 'none'\n );\n }\n }, [isOpen]);\n\n const activeFilterCount = filters.filter((filter) => filter.checked).length;\n\n const Input = ({ children, filter }) => {\n if (!onChange) {\n const searchParams = buildSearchParams({\n filterKey: isDynamic ? 'dynamicFilterId' : label,\n filter,\n isSingleValue: isRadio,\n }).toString();\n\n return (\n \n {children}\n \n );\n }\n\n return children;\n };\n\n return filters.length > 0 && filters.filter((el) => !el.hide).length > 0 ? (\n \n \n {\n if (isOpen) {\n // To avoid problems when resizing the screen we simply reset max-height to default after ended transition\n setMaxHeight('none');\n }\n }}\n >\n
\n {filters.map((filter) =>\n isRadio ? (\n \n handleFilterClick(filter)}\n isLink\n />\n \n ) : (\n \n handleFilterClick(filter)}\n isLink\n />\n \n )\n )}\n
\n \n \n ) : null;\n};\n\nFilterSet.propTypes = {\n label: pt.string.isRequired,\n visibleFilters: pt.arrayOf(\n pt.shape({\n name: pt.string,\n id: pt.oneOfType([pt.string, pt.number]),\n })\n ).isRequired,\n queryFilters: pt.arrayOf(pt.string),\n withButtonMargin: pt.bool,\n withTopBorder: pt.bool,\n openAtStart: pt.bool,\n type: pt.string,\n};\n\nFilterSet.defaultProps = {\n withButtonMargin: false,\n withTopBorder: false,\n openAtStart: true,\n type: '',\n};\n\nexport default FilterSet;\n","import pt from 'prop-types';\nimport React, { useContext, useEffect, useMemo } from 'react';\nimport { MicrocopyContext } from '../../../context/microcopy.context';\nimport { getCopy } from '../../../helpers/copy';\nimport { queryParamKeyMicrocopyKeyMap } from '../../../helpers/filters';\nimport { combine } from '../../../helpers/styles';\nimport FilterSet from '../filterSet';\nimport Icon from '../icon';\nimport Text from '../text';\n\nimport { AWARD_IDS } from '../../../utils/constants';\nimport FilterTag from '../filterTag';\nimport * as styles from './filtersModal.module.scss';\n\nconst FiltersModal = ({\n visibleFilters,\n activeFilters,\n buildSearchParamsAfterRemove,\n queryFilters,\n onClose,\n isOpen,\n filterOrderByKey,\n radioFiltersKeys,\n onFilterSetChange,\n applyLink,\n resetLink,\n type,\n year,\n}) => {\n let orderedFiltersKeys = filterOrderByKey;\n if (orderedFiltersKeys.length === 0) {\n orderedFiltersKeys = Object.keys(visibleFilters);\n }\n const microcopy = useContext(MicrocopyContext);\n\n useEffect(() => {\n if (isOpen) {\n document.querySelector('body').style.height = '100vh';\n } else {\n document.querySelector('body').style.height = '';\n }\n }, [isOpen]);\n\n const renderFilters = useMemo(\n () =>\n visibleFilters\n ? orderedFiltersKeys\n .filter(\n (key) =>\n Array.isArray(visibleFilters[key]) && visibleFilters[key].length\n )\n .map((key) => (\n onFilterSetChange(key, val)}\n />\n ))\n : null,\n [visibleFilters, queryFilters]\n );\n\n return (\n
\n
\n \n {getCopy('results.filter', microcopy).toUpperCase()}\n \n \n
\n
\n {activeFilters\n .filter(\n (el) => !['categories', 'sort'].includes(el.key) && !el.locked\n )\n .map((filter) => {\n const searchParams = buildSearchParamsAfterRemove({\n key: filter.key,\n val: filter.id,\n }).toString();\n return (\n \n );\n })}\n {renderFilters}\n
\n {/* */}\n
\n );\n};\n\nFiltersModal.propTypes = {\n visibleFilters: pt.object.isRequired,\n queryFilters: pt.object.isRequired,\n onFilterSetChange: pt.func,\n onClose: pt.func,\n isOpen: pt.bool,\n hideSort: pt.bool,\n filterOrderByKey: pt.array,\n applyLink: pt.string,\n resetLink: pt.string,\n type: pt.string,\n};\n\nFiltersModal.defaultProps = {\n visibleFilters: {},\n queryFilters: {},\n onFilterSetChange: () => {},\n onClose: () => {},\n isOpen: false,\n filterOrderByKey: [],\n type: '',\n};\n\nexport default FiltersModal;\n","// extracted by mini-css-extract-plugin\nexport var actionButton = \"filtersModal-module--actionButton--350aa\";\nexport var actionButtons = \"filtersModal-module--actionButtons--eb238\";\nexport var actionLink = \"filtersModal-module--actionLink--1359e\";\nexport var button = \"filtersModal-module--button--49755\";\nexport var container = \"filtersModal-module--container--17be9\";\nexport var filterTag = \"filtersModal-module--filterTag--a33d2\";\nexport var filters = \"filtersModal-module--filters--e2f27\";\nexport var header = \"filtersModal-module--header--8ff16\";\nexport var icon = \"filtersModal-module--icon--4f24d\";\nexport var open = \"filtersModal-module--open--b59e8\";\nexport var sortingContainer = \"filtersModal-module--sortingContainer--66556\";\nexport var sortingOption = \"filtersModal-module--sortingOption--827f3\";\nexport var sortingTitle = \"filtersModal-module--sortingTitle--929cc\";","// extracted by mini-css-extract-plugin\nexport var active = \"pagination-module--active--24741\";\nexport var disabled = \"pagination-module--disabled--8606d\";\nexport var pagination = \"pagination-module--pagination--8c6dc\";\nexport var paginationItem = \"pagination-module--paginationItem--be503\";","import React, { useEffect, useState } from 'react';\nimport { combine } from '../../../helpers/styles';\nimport { usePagination } from '/src/hooks/usePagination';\nimport * as styles from './pagination.module.scss';\nimport { IF_RANKING_PROFILE_TYPES } from '../../../utils/constants';\nimport { NumberParam, StringParam, useQueryParams } from 'use-query-params';\nimport Text from '../text';\n\nconst Pagination = ({\n totalCount,\n resultsPerPage,\n currentPage,\n siblingCount,\n}) => {\n const [windowLocation, setWindowLocation] = useState(null);\n useEffect(() => {\n setWindowLocation(location);\n }, []);\n\n const [query, _] = useQueryParams({\n profileTypes: StringParam,\n continents: StringParam,\n countries: StringParam,\n keywords: NumberParam,\n page: NumberParam,\n });\n\n const queryFilters = {\n profileTypes:\n query.profileTypes ||\n IF_RANKING_PROFILE_TYPES.DESIGN_AND_ARCHITECTURE_STUDIO,\n continents: query.continents || '',\n countries: query.countries || '',\n keywords: query.keywords || 0,\n page: query.page || 1,\n };\n const totalPages = Math.ceil(totalCount / resultsPerPage);\n\n const items = usePagination({\n currentPage,\n count: totalPages,\n siblingCount,\n });\n\n const renderPageLink = (pageNum, text, disabled) => {\n const searchParams = new URLSearchParams(windowLocation?.search);\n searchParams.set('page', pageNum);\n\n searchParams.sort();\n\n return (\n \n {text || pageNum}\n \n );\n };\n\n return (\n
\n {items.map((item) => {\n switch (item.type) {\n case 'start-ellipsis':\n case 'end-ellipsis':\n return (\n \n …\n \n );\n case 'page':\n return !item.disabled && renderPageLink(item.page);\n case 'previous':\n return (\n totalPages > 1 &&\n renderPageLink(queryFilters.page - 1, '<', item.disabled)\n );\n case 'next':\n return (\n totalPages > 1 &&\n renderPageLink(queryFilters.page + 1, '>', item.disabled)\n );\n }\n })}\n
\n );\n};\n\nexport default Pagination;\n","// extracted by mini-css-extract-plugin\nexport var actions = \"resultsList-module--actions--6d4de\";\nexport var activeFilters = \"resultsList-module--activeFilters--1b026\";\nexport var activeFiltersContainer = \"resultsList-module--activeFiltersContainer--5d76d\";\nexport var backdrop = \"resultsList-module--backdrop--a82d1\";\nexport var button = \"resultsList-module--button--71bf0\";\nexport var containedImage = \"resultsList-module--containedImage--e7fcd\";\nexport var copiedToClipboard = \"resultsList-module--copiedToClipboard--7faf7\";\nexport var count = \"resultsList-module--count--c75a7\";\nexport var filterTag = \"resultsList-module--filterTag--25b04\";\nexport var filters = \"resultsList-module--filters--21410\";\nexport var filtersScrollable = \"resultsList-module--filtersScrollable--3d111\";\nexport var header = \"resultsList-module--header--75a9d\";\nexport var headerContainer = \"resultsList-module--headerContainer--18a1f\";\nexport var hidden = \"resultsList-module--hidden--874ac\";\nexport var icon = \"resultsList-module--icon--33d3a\";\nexport var inSearchPage = \"resultsList-module--inSearchPage--3829a\";\nexport var main = \"resultsList-module--main--73b71\";\nexport var noResults = \"resultsList-module--noResults--1aeba\";\nexport var outerContainer = \"resultsList-module--outerContainer--02297\";\nexport var paddedResults = \"resultsList-module--paddedResults--ef41d\";\nexport var pt40 = \"resultsList-module--pt40--b2363\";\nexport var reset = \"resultsList-module--reset--cc274\";\nexport var results = \"resultsList-module--results--60369\";\nexport var search = \"resultsList-module--search--35a38\";\nexport var separator = \"resultsList-module--separator--af2b9\";\nexport var showing = \"resultsList-module--showing--fe00f\";\nexport var showingFilter = \"resultsList-module--showingFilter--e71cd\";\nexport var sortingBox = \"resultsList-module--sortingBox--7211a\";\nexport var sortingButton = \"resultsList-module--sortingButton--63466\";\nexport var sortingContainer = \"resultsList-module--sortingContainer--1a476\";\nexport var sortingText = \"resultsList-module--sortingText--05a62\";\nexport var spinner = \"resultsList-module--spinner--ace30\";\nexport var spinnerContainer = \"resultsList-module--spinnerContainer--1f0d9\";\nexport var text = \"resultsList-module--text--77662\";\nexport var w100 = \"resultsList-module--w100--7089d\";\nexport var whiteBg = \"resultsList-module--whiteBg--08c07\";\nexport var withBorder = \"resultsList-module--withBorder--a7d6c\";\nexport var withSearch = \"resultsList-module--withSearch--ce700\";","import pt from 'prop-types';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { useLocale } from '../../../context/locale.context';\nimport { MicrocopyContext } from '../../../context/microcopy.context';\nimport { getIfDesignAwardBadge } from '../../../helpers/badges';\nimport { getCopy } from '../../../helpers/copy';\nimport {\n cleanSearchParams,\n getActiveFilters,\n queryParamKeyMicrocopyKeyMap,\n} from '../../../helpers/filters';\nimport useElementOnScreen from '../../../hooks/useElementOnScreen';\nimport useScrollPosition from '../../../hooks/useScrollPosition';\nimport useWindowSize from '../../../hooks/useWindowSize';\nimport Container from '../../../modules/container';\nimport { breakpoints, getCountryName } from '../../../utils/constants';\nimport CustomScrollable from '../customScrollable';\nimport Search from '../filterSearch';\nimport FilterSet from '../filterSet';\nimport WinnersFiltersModal from '../filtersModal';\nimport FilterTag from '../filterTag';\nimport Icon from '../icon';\nimport Image from '../image';\nimport Pagination from '../pagination';\nimport TeaserItem from '../teaserItem';\nimport Text from '../text';\nimport * as styles from './resultsList.module.scss';\nimport { copyToClipboard } from '/src/helpers/copyToClipboard';\nimport { combine } from '/src/helpers/styles';\n\nconst GOLD_AWARD_MOCK_ID = 9999;\n\nconst ResultsList = ({\n whiteBackground,\n filtersHook,\n teaserType,\n countLabelKey,\n noResultsLabelKey,\n searchTerm,\n itemRenderer: ItemRenderer,\n resultsContainerClassName,\n initialResults,\n borderInHeader,\n onTotalCountUpdated,\n noFilters,\n hideFilterOnLoad,\n onTypeChange,\n queryFilters,\n hideSort,\n filtersApiParam,\n type,\n includeSearch,\n resetSearchTerm,\n query,\n onSearchSubmit,\n isInSearchPage,\n usePagination,\n resultsPerPage = 28,\n}) => {\n const [activeFilters, setActiveFilters] = useState([]); // queryFilters that match visibleFilters\n const [tempActiveFilters, setTempActiveFilters] = useState([]); // used to hold temporary filters for mobile\n const [filtersOpen, setFiltersOpen] = useState(!hideFilterOnLoad);\n const microcopy = useContext(MicrocopyContext);\n const windowSize = useWindowSize();\n const { scrollY, scrollDirection } = useScrollPosition();\n const [menuBottomY, setMenuBottomY] = useState(44);\n const [filtersBottomY, setFiltersBottomY] = useState(190);\n const [isSmallScreen, setIsSmallScreen] = useState(\n windowSize.width < breakpoints.large\n );\n const [windowLocation, setWindowLocation] = useState(null);\n const { locale } = useLocale();\n const [copiedToClipboard, setCopiedToClipboard] = useState(false);\n\n const {\n filterOrderByKey = [],\n visibleFilters = [],\n openedFilters = [],\n increasePage,\n results,\n loading,\n noMoreResults,\n totalCount,\n radioFiltersKeys = [],\n mainFilter = '',\n seed,\n year = 2025,\n } = filtersHook(\n queryFilters,\n initialResults,\n filtersApiParam,\n usePagination,\n resultsPerPage\n );\n\n useEffect(() => {\n setWindowLocation(location);\n }, []);\n\n const [containerRef, isVisible] = useElementOnScreen({\n root: null,\n rootMargin: '0px',\n threshold: 0.9,\n ignore: loading || !visibleFilters,\n });\n\n // Notifify change on mainFilter for headline change if necessary\n useEffect(() => {\n if (mainFilter) {\n onTypeChange(mainFilter);\n }\n }, [mainFilter]);\n\n useEffect(() => {\n onTotalCountUpdated(totalCount);\n }, [totalCount]);\n\n useEffect(() => {\n let bottom;\n\n if (scrollDirection === 'down' && !isSmallScreen) {\n bottom = 0;\n } else {\n if (!isSmallScreen) {\n bottom = 140;\n }\n }\n if (bottom !== menuBottomY) {\n setMenuBottomY(bottom);\n }\n }, [scrollY, isSmallScreen]);\n\n useEffect(() => {\n let bottom;\n const desktopMenu = document.querySelector(\n '[class^=\"cubeNavigation-module--cubeNavigation\"]'\n );\n const header = document.querySelector(\n '[class^=\"resultsList-module--header\"]'\n );\n if (!isSmallScreen) {\n bottom = desktopMenu\n ? desktopMenu.getBoundingClientRect().bottom + header?.offsetHeight\n : 0;\n }\n if (!isSmallScreen && bottom !== filtersBottomY) {\n setFiltersBottomY(bottom);\n }\n }, [scrollY, isSmallScreen]);\n\n const buildSortSearchParams = ({ val, baseSearchParams = null }) => {\n let searchParams =\n baseSearchParams || new URLSearchParams(windowLocation?.search);\n searchParams.set('sort', val);\n\n searchParams.sort();\n\n return searchParams;\n };\n\n // calculate search params for given filter (key)\n const buildSearchParamsAfterRemove = useMemo(\n () =>\n ({ key, val, baseSearchParams = null }) => {\n let searchParams =\n baseSearchParams || new URLSearchParams(windowLocation?.search);\n const searchParamsFromKey = searchParams.getAll(key);\n\n searchParams.delete(key);\n if (searchParamsFromKey.length > 1) {\n for (let value of searchParamsFromKey) {\n if (String(value) !== String(val)) {\n searchParams.append(key, value);\n }\n }\n }\n\n searchParams.sort();\n\n return searchParams;\n },\n [windowLocation?.search]\n );\n\n const setDetailNavigationPage = (type, page) => {\n const payloadAsString = sessionStorage?.getItem(`${type}Payload`);\n\n if (payloadAsString) {\n const payload = JSON.parse(payloadAsString);\n payload.page = page;\n sessionStorage.setItem(`${type}Payload`, JSON.stringify(payload));\n }\n };\n\n const renderContributionItems = () =>\n results.map((el, index) => (\n 1 && el.awardYear}\n info={el.clients?.length && el.clients[0]}\n awardBadge={getIfDesignAwardBadge(el)}\n onLinkClick={() =>\n setDetailNavigationPage(filtersApiParam, Math.floor(index / 18))\n }\n />\n ));\n\n const renderProfileItems = () =>\n results.map((el, index) => (\n \n setDetailNavigationPage('profile', Math.floor(index / 18))\n }\n />\n ));\n\n const renderCustom = () =>\n results.map((el, index) => (\n \n ));\n\n // TODO: refactor so all cases are handled via ItemRenderer prop\n const renderResults = () => {\n if (ItemRenderer) {\n return renderCustom();\n }\n\n switch (teaserType) {\n case 'design':\n return renderContributionItems();\n case 'company':\n return renderProfileItems();\n default:\n return null;\n }\n };\n\n useEffect(() => {\n if (windowSize.width >= breakpoints.large) {\n setIsSmallScreen(false);\n } else {\n setIsSmallScreen(true);\n }\n }, [windowSize]);\n\n useEffect(() => {\n if (isSmallScreen) {\n setFiltersOpen(false);\n }\n }, [isSmallScreen]);\n\n const renderFilters = useMemo(\n () =>\n visibleFilters\n ? filterOrderByKey\n .filter(\n (key) =>\n Array.isArray(visibleFilters[key]) && visibleFilters[key].length\n )\n .map((key) => (\n \n ))\n : null,\n [visibleFilters, queryFilters]\n );\n\n useEffect(() => {\n if (isVisible && !loading && !noMoreResults && !isInSearchPage) {\n increasePage();\n }\n }, [isVisible]);\n\n const onFilterSetChange = (filterKey, newActiveFilters) => {\n setTempActiveFilters((prevTempActiveFilters) => ({\n ...prevTempActiveFilters,\n [filterKey]: newActiveFilters,\n }));\n };\n\n const onFilterModalClose = () => {\n setFiltersOpen(false);\n };\n\n useEffect(() => {\n if (visibleFilters && queryFilters) {\n const _activeFilters = getActiveFilters(visibleFilters, queryFilters);\n\n // remove from query params anything that is not active\n // we always want to keep the awardId (in IFDSA it's not visible)\n cleanSearchParams({ ..._activeFilters, awardId: queryFilters.awards });\n\n // if dynamicFilterId (wdiFilter), find the correct label\n if (queryFilters.hasOwnProperty('dynamicFilterId')) {\n for (let filterGroup of Object.values(visibleFilters)) {\n const match = filterGroup.find(\n (filter) => filter.id === queryFilters['dynamicFilterId']\n );\n if (match) {\n setActiveFilters([{ key: 'dynamicFilterId', label: match.name }]);\n }\n }\n } else {\n setActiveFilters(\n Object.entries(_activeFilters)\n .filter(([key, val]) =>\n Array.isArray(val) ? val.length : Boolean(val)\n )\n .reduce((prev, [key, value]) => {\n if (Array.isArray(value)) {\n return prev.concat(\n ...value.map((val) => ({\n key,\n id: val.id,\n label: val.name,\n locked: val.locked,\n }))\n );\n }\n return prev.concat({\n key,\n label:\n key === 'inspiration'\n ? 'Inspire Me'\n : key === 'profile'\n ? value.split('|id=').shift()\n : value,\n id: key === 'profile' ? value.split('|id=').pop() : null,\n });\n }, [])\n );\n }\n }\n }, [visibleFilters, queryFilters]);\n\n useEffect(() => {\n // set temporary active filters for mobile\n setTempActiveFilters(queryFilters);\n }, [queryFilters]);\n\n const handleShare = async () => {\n const url = new URL(location.href);\n url.searchParams.append('seed', queryFilters.seed || seed);\n url.searchParams.sort();\n const resultListLink = `${url}${location.hash ? '' : '#resultList'}`;\n if (navigator.share !== undefined) {\n navigator.share({\n title: document.title,\n text: document.title,\n url: resultListLink,\n });\n } else {\n copyToClipboard(resultListLink);\n setCopiedToClipboard(true);\n\n setTimeout(() => {\n setCopiedToClipboard(false);\n }, [4000]);\n }\n };\n\n return (\n
\n {!noFilters && (\n <>\n
\n \n \n )}\n \n \n {!noFilters && (\n \n {includeSearch && (\n \n )}\n\n
\n setFiltersOpen(!filtersOpen)}\n >\n \n \n {filtersOpen\n ? getCopy('results.hideFilter', microcopy)\n : getCopy('results.showFilter', microcopy)}\n \n \n {(activeFilters.length > 0 || searchTerm) && (\n <>\n \n |\n \n \n \n {getCopy('results.reset', microcopy)}\n \n \n \n )}\n \n |\n \n {copiedToClipboard ? (\n
\n \n \n {getCopy('results.copiedToClipboard', microcopy)}\n \n
\n ) : (\n \n )}\n
\n {!queryFilters.inspiration &&\n totalCount !== null &&\n !isInSearchPage && (\n \n {`${totalCount} ${\n totalCount === 1\n ? getCopy(countLabelKey, microcopy).replace(/s$/, '')\n : getCopy(countLabelKey, microcopy)\n }`}\n \n )}\n \n )}\n
\n {!noFilters && (\n \n \n
\n {activeFilters\n .filter(\n (el) =>\n !['categories', 'sort'].includes(el.key) && !el.locked\n )\n .map((filter) => {\n const searchParams = buildSearchParamsAfterRemove({\n key: filter.key,\n val: filter.id,\n }).toString();\n return (\n \n );\n })}\n
\n {renderFilters}\n
\n
\n )}\n {results?.length ? (\n
\n \n {renderResults()}\n
\n \n ) : (\n !loading && (\n \n \n {getCopy(noResultsLabelKey, microcopy)}\n \n \n )\n )}\n \n {usePagination ? (\n \n ) : (\n (!noMoreResults || queryFilters.inspiration) && (\n
\n {loading ? (\n \n ) : (\n !queryFilters.inspiration && (\n \n )\n )}\n
\n )\n )}\n \n \n \n );\n};\n\nexport default ResultsList;\n\nResultsList.propTypes = {\n filtersHook: pt.func.isRequired, // see winnerFilters\n teaserType: pt.oneOf(['design', 'company']).isRequired,\n countLabelKey: pt.string,\n noResultsLabelKey: pt.string.isRequired,\n searchTerm: pt.string,\n itemRenderer: pt.func,\n resetSearchTerm: pt.func,\n initialResults: pt.array,\n whiteBackground: pt.bool,\n borderInHeader: pt.bool,\n onTotalCountUpdated: pt.func,\n hideFilterOnLoad: pt.bool,\n onTypeChange: pt.func,\n tags: pt.arrayOf(\n pt.shape({\n tag: pt.string,\n name: pt.string,\n behaviour: pt.string,\n })\n ),\n type: pt.string,\n};\n\nResultsList.defaultProps = {\n countLabelKey: 'results.projects',\n noResultsLabelKey: 'results.generic.noResults',\n teaserType: 'design',\n searchTerm: '',\n itemRenderer: undefined,\n resetSearchTerm: () => {},\n initialResults: [],\n whiteBackground: false,\n borderInHeader: false,\n onTotalCountUpdated: () => {},\n hideFilterOnLoad: false,\n onTypeChange: null,\n tags: [],\n type: '',\n};\n","import React from 'react';\nimport pt from 'prop-types';\nimport { combine } from '/src/helpers/styles';\nimport Text from '../text';\nimport * as styles from './styles.module.scss';\n\nconst Tag = ({ className, onClick, interactive, htmlId, children }) => (\n \n \n {children}\n \n \n);\n\nTag.propTypes = {\n onClick: pt.func,\n children: pt.node.isRequired,\n className: pt.string,\n interactive: pt.bool,\n htmlId: pt.string,\n};\n\nTag.defaultProps = {\n className: '',\n interactive: true,\n onClick: () => null,\n htmlId: '',\n};\n\nexport default Tag;\n","// extracted by mini-css-extract-plugin\nexport var interactive = \"styles-module--interactive--9f64a\";\nexport var tag = \"styles-module--tag--2febb\";","export const copyToClipboard = (str) => {\n navigator.clipboard.writeText(str);\n};\n","export const usePagination = (props = {}) => {\n // keep default values in sync with @default tags in Pagination.propTypes\n const {\n boundaryCount = 1,\n count = 1,\n currentPage: page = 1,\n defaultPage = 1,\n disabled = false,\n hideNextButton = false,\n hidePrevButton = false,\n onChange: handleChange,\n page: pageProp,\n showFirstButton = false,\n showLastButton = false,\n siblingCount = 1,\n } = props;\n\n const handleClick = (event, value) => {\n if (!pageProp) {\n setPageState(value);\n }\n if (handleChange) {\n handleChange(event, value);\n }\n };\n\n // https://dev.to/namirsab/comment/2050\n const range = (start, end) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, i) => start + i);\n };\n\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(\n Math.max(count - boundaryCount + 1, boundaryCount + 1),\n count\n );\n\n const siblingsStart = Math.max(\n Math.min(\n // Natural start\n page - siblingCount,\n // Lower boundary when page is high\n count - boundaryCount - siblingCount * 2 - 1\n ),\n // Greater than startPages\n boundaryCount + 2\n );\n\n const siblingsEnd = Math.min(\n Math.max(\n // Natural end\n page + siblingCount,\n // Upper boundary when page is low\n boundaryCount + siblingCount * 2 + 2\n ),\n // Less than endPages\n endPages.length > 0 ? endPages[0] - 2 : count - 1\n );\n\n // Basic list of items to render\n // e.g. itemList = ['first', 'previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next', 'last']\n const itemList = [\n ...(showFirstButton ? ['first'] : []),\n ...(hidePrevButton ? [] : ['previous']),\n ...startPages,\n\n // Start ellipsis\n // eslint-disable-next-line no-nested-ternary\n ...(siblingsStart > boundaryCount + 2\n ? ['start-ellipsis']\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n\n // Sibling pages\n ...range(siblingsStart, siblingsEnd),\n\n // End ellipsis\n // eslint-disable-next-line no-nested-ternary\n ...(siblingsEnd < count - boundaryCount - 1\n ? ['end-ellipsis']\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n\n ...endPages,\n ...(hideNextButton ? [] : ['next']),\n ...(showLastButton ? ['last'] : []),\n ];\n\n const buttonPage = (type) => {\n switch (type) {\n case 'first':\n return 1;\n case 'previous':\n return page - 1;\n case 'next':\n return page + 1;\n case 'last':\n return count;\n default:\n return null;\n }\n };\n\n const items = itemList.map((item) => {\n return typeof item === 'number'\n ? {\n onClick: (event) => {\n handleClick(event, item);\n },\n type: 'page',\n page: item,\n selected: item === page,\n disabled: disabled || count === 1,\n }\n : {\n onClick: (event) => {\n handleClick(event, buttonPage(item));\n },\n type: item,\n page: buttonPage(item),\n selected: false,\n disabled:\n disabled ||\n (item.indexOf('ellipsis') === -1 &&\n (item === 'next' || item === 'last'\n ? page >= count\n : page <= 1)) ||\n (item === 'previous' && page <= 1) ||\n (item === 'next' && page >= count),\n };\n });\n\n return items;\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport default () => {\n const isClient = typeof window === 'object';\n\n const getSize = useCallback(\n function () {\n return {\n height: isClient ? window.innerHeight : undefined,\n width: isClient ? window.innerWidth : undefined,\n };\n },\n [isClient]\n );\n\n const [windowSize, setWindowSize] = useState(getSize);\n\n useEffect(() => {\n if (!isClient) {\n return false;\n }\n\n function handleResize() {\n setWindowSize(getSize());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [getSize, isClient]); // Empty array ensures that effect is only run on mount and unmount\n\n return windowSize;\n};\n"],"names":["Checkbox","label","defaultChecked","checked","onClick","disabled","className","isLink","props","hovered","setHovered","useState","labelRef","useRef","inputProps","type","undefined","onChange","Input","children","React","combine","ref","onMouseEnter","onMouseLeave","Text","as","variant","current","matches","Icon","name","propTypes","pt","defaultProps","Search","initSearchTerm","resetSearchTerm","placeholder","chips","onSubmit","onTagClick","onInspire","inContentPage","submitSearch","async","apiRoot","getAPIRoot","queryParams","test","term","split","pop","fetch","API_ROUTES","presetList","Container","fluid","noGap","SearchField","onReset","map","item","index","Tag","key","searchTerm","tag","searchTag","isInspiration","behaviour","isQueryParam","queryParameters","encodeURIComponent","handleTagClick","FilterTag","text","removeLink","isGolden","isLocked","filterKey","filterId","year","microcopy","useContext","MicrocopyContext","locale","useLocale","_extends","href","getLabel","length","getCopy","replace","replaceAll","toLowerCase","getCountryName","Radiobutton","styles","withMargin","FilterSet","visibleFilters","queryFilters","withButtonMargin","withTopBorder","isRadio","openAtStart","isDynamic","award","_ref$current","location","useLocation","isOpen","setIsOpen","maxHeight","setMaxHeight","filters","setFilters","getFilterOptionLabel","option","isWdi","pathname","includes","getCopyWithFallback","id","hasCustomMicrocopy","useEffect","_filters","filter","hide","sort","a","b","localeCompare","handleFilterClick","newFilters","f","el","style","transition","overflow","clientHeight","_ref$current2","_ref$current3","activeFilterCount","searchParams","buildSearchParams","isSingleValue","toString","formatFilterLabel","toUpperCase","onTransitionEnd","isRequired","FiltersModal","activeFilters","buildSearchParamsAfterRemove","onClose","filterOrderByKey","radioFiltersKeys","onFilterSetChange","applyLink","resetLink","orderedFiltersKeys","Object","keys","document","querySelector","height","renderFilters","useMemo","Array","isArray","locked","_queryParamKeyMicroco","val","queryParamKeyMicrocopyKeyMap","AWARD_IDS","hideSort","paginationItem","Pagination","totalCount","resultsPerPage","currentPage","siblingCount","windowLocation","setWindowLocation","query","_","useQueryParams","profileTypes","StringParam","continents","countries","keywords","NumberParam","page","IF_RANKING_PROFILE_TYPES","totalPages","Math","ceil","items","usePagination","count","renderPageLink","pageNum","URLSearchParams","search","set","inSearchPage","paddedResults","separator","spinner","whiteBg","ResultsList","whiteBackground","filtersHook","teaserType","countLabelKey","noResultsLabelKey","itemRenderer","ItemRenderer","resultsContainerClassName","initialResults","borderInHeader","onTotalCountUpdated","noFilters","hideFilterOnLoad","onTypeChange","filtersApiParam","includeSearch","onSearchSubmit","isInSearchPage","setActiveFilters","tempActiveFilters","setTempActiveFilters","filtersOpen","setFiltersOpen","windowSize","useWindowSize","scrollY","scrollDirection","useScrollPosition","menuBottomY","setMenuBottomY","filtersBottomY","setFiltersBottomY","isSmallScreen","setIsSmallScreen","width","breakpoints","copiedToClipboard","setCopiedToClipboard","openedFilters","increasePage","results","loading","noMoreResults","mainFilter","seed","containerRef","isVisible","useElementOnScreen","root","rootMargin","threshold","ignore","bottom","desktopMenu","header","getBoundingClientRect","offsetHeight","baseSearchParams","searchParamsFromKey","getAll","delete","value","String","append","setDetailNavigationPage","_sessionStorage","payloadAsString","sessionStorage","getItem","payload","JSON","parse","setItem","stringify","hasOwnProperty","_activeFilters","getActiveFilters","cleanSearchParams","awardId","awards","filterGroup","values","match","find","entries","Boolean","reduce","prev","concat","shift","WinnersFiltersModal","buildSortSearchParams","newActiveFilters","prevTempActiveFilters","onFilterModalClose","top","url","URL","resultListLink","hash","navigator","share","title","copyToClipboard","setTimeout","inspiration","CustomScrollable","vertical","renderResults","data","cappedWidth","_el$clients","TeaserItem","link","linkToPage","slug","image","primaryMediaThumbnail","description","subline","designation","time","awardYear","info","clients","awardBadge","getIfDesignAwardBadge","onLinkClick","floor","companyName","logo","country","imageBadge","imageClassName","Image","disableGatsbyImage","imgClassName","tags","interactive","htmlId","str","clipboard","writeText","boundaryCount","defaultPage","hideNextButton","hidePrevButton","handleChange","pageProp","showFirstButton","showLastButton","handleClick","event","setPageState","range","start","end","from","i","startPages","min","endPages","max","siblingsStart","siblingsEnd","itemList","buttonPage","selected","indexOf","isClient","window","getSize","useCallback","innerHeight","innerWidth","setWindowSize","handleResize","addEventListener","removeEventListener"],"sourceRoot":""}