{"version":3,"file":"b2b3aef1eee90bb7dd64e887f4a27526fe5bdcf8.js","mappings":"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","sources":["webpack://if-website/./src/helpers/userAgent.js","webpack://if-website/./src/components/ui/customScrollable/index.jsx","webpack://if-website/./src/components/ui/customScrollable/customScrollable.module.scss","webpack://if-website/./src/components/ui/headline/index.jsx","webpack://if-website/./src/components/ui/skeleton/index.jsx","webpack://if-website/./src/components/ui/skeleton/styles.module.scss","webpack://if-website/./src/components/ui/teaserItem/styles.module.scss","webpack://if-website/./src/components/ui/teaserItem/index.jsx","webpack://if-website/./src/helpers/badges.js","webpack://if-website/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://if-website/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://if-website/./node_modules/date-fns/esm/addMonths/index.js","webpack://if-website/./node_modules/date-fns/esm/endOfYear/index.js","webpack://if-website/./node_modules/date-fns/esm/startOfYear/index.js","webpack://if-website/./node_modules/date-fns/esm/addYears/index.js","webpack://if-website/./src/helpers/filters.js","webpack://if-website/./src/helpers/isSSRPageLink.js","webpack://if-website/./src/hooks/useElementOnScreen.js"],"sourcesContent":["export const checkVersion = () => {\n if (typeof window !== `undefined`) {\n var agent = window.navigator.userAgent,\n start = agent.indexOf('OS ');\n if (\n (agent.indexOf('iPhone') > -1 || agent.indexOf('iPad') > -1) &&\n start > -1\n ) {\n return window.Number(agent.substr(start + 3, 3).replace('_', '.'));\n }\n return 0;\n }\n};\n\nexport const isSafari =\n typeof window !== `undefined` &&\n /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent);\n","import React, { useRef, useEffect, useState } from 'react';\nimport pt from 'prop-types';\nimport * as styles from './customScrollable.module.scss';\nimport { combine } from '/src/helpers/styles';\nimport { checkVersion, isSafari } from '../../../helpers/userAgent';\n\nconst CustomScrollable = ({\n children,\n vertical,\n onlySmall,\n className,\n ...props\n}) => {\n const containerRef = useRef();\n const trackRef = useRef();\n const thumbRef = useRef();\n\n // Safari iOS14 logic for scrollbars\n const [needsScrollbarTrack, setNeedsScrollbarTrack] = useState(false);\n const version = checkVersion();\n const hackNeeded = version >= 14 && isSafari;\n const onScroll = () => {\n if (hackNeeded) {\n const percentageScrolled =\n containerRef.current.scrollLeft /\n (containerRef.current.scrollWidth - containerRef.current.clientWidth);\n const thumbPosition =\n trackRef.current.clientWidth * percentageScrolled -\n thumbRef.current.clientWidth * percentageScrolled;\n thumbRef.current.style.transform = `translateX(${thumbPosition}px)`;\n }\n };\n\n useEffect(() => {\n if (containerRef.current) {\n if (\n containerRef.current.scrollWidth > containerRef.current.clientWidth &&\n hackNeeded\n ) {\n setNeedsScrollbarTrack(true);\n }\n }\n }, []);\n\n useEffect(() => {\n if (hackNeeded && thumbRef.current) {\n thumbRef.current.style.width =\n (containerRef.current.clientWidth / containerRef.current.scrollWidth) *\n 100 +\n '%';\n }\n });\n\n return (\n <>\n \n {children}\n \n {needsScrollbarTrack && (\n
\n
\n
\n )}\n \n );\n};\n\nCustomScrollable.propTypes = {\n children: pt.node.isRequired,\n vertical: pt.bool,\n onlySmall: pt.bool,\n className: pt.string,\n};\n\nCustomScrollable.defaultProps = {\n onlySmall: false,\n vertical: false,\n className: '',\n};\n\nexport default CustomScrollable;\n","// extracted by mini-css-extract-plugin\nexport var arrow = \"customScrollable-module--arrow--8da93\";\nexport var container = \"customScrollable-module--container--a92a0\";\nexport var hidden = \"customScrollable-module--hidden--41946\";\nexport var nextArrow = \"customScrollable-module--nextArrow--45775\";\nexport var onlyXS = \"customScrollable-module--onlyXS--0cd93\";\nexport var previousArrow = \"customScrollable-module--previousArrow--52410\";\nexport var scrollbarThumb = \"customScrollable-module--scrollbarThumb--f7cbd\";\nexport var scrollbarTrack = \"customScrollable-module--scrollbarTrack--61654\";\nexport var vertical = \"customScrollable-module--vertical--a0718\";","import React from 'react';\nimport pt from 'prop-types';\nimport RichText, { richTextPropTypes } from '../richText';\nimport Text from '../text';\n\nconst Headline = ({ text, level, type, variant, className, textClassName }) => {\n if (!text) return null;\n if (typeof text === 'string') {\n return (\n \n );\n }\n\n if (text.raw) {\n return (\n \n );\n }\n\n return null;\n};\n\nexport const headlinePropTypes = pt.oneOfType([\n pt.shape(richTextPropTypes),\n pt.string,\n]).isRequired;\n\nHeadline.propTypes = {\n text: headlinePropTypes,\n level: pt.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span']).isRequired,\n type: pt.string,\n variant: pt.string,\n className: pt.string,\n textClasName: pt.string,\n};\n\nHeadline.defaultProps = {\n text: null,\n variant: 'light',\n className: '',\n textClassName: '',\n type: 'h1',\n};\n\nexport default Headline;\n","import React from 'react';\nimport pt from 'prop-types';\nimport { combine } from '../../../helpers/styles';\nimport * as styles from './styles.module.scss';\n\nconst Skeleton = ({ className }) => (\n
\n
\n
\n);\n\nSkeleton.propTypes = {\n className: pt.string,\n};\n\nexport default Skeleton;\n","// extracted by mini-css-extract-plugin\nexport var parent = \"styles-module--parent--dd068\";\nexport var pulse = \"styles-module--pulse--1cbac\";","// extracted by mini-css-extract-plugin\nexport var additionalInfo = \"styles-module--additionalInfo--7459d\";\nexport var arrow = \"styles-module--arrow--d9243\";\nexport var badge = \"styles-module--badge--82840\";\nexport var date = \"styles-module--date--5ea30\";\nexport var empty = \"styles-module--empty--10c92\";\nexport var fallback = \"styles-module--fallback--110fa\";\nexport var fallbackSvg = \"styles-module--fallbackSvg--30763\";\nexport var imageBadge = \"styles-module--imageBadge--9bbd9\";\nexport var img = \"styles-module--img--19dec\";\nexport var imgIsLogo = \"styles-module--imgIsLogo--37e37\";\nexport var imgWrapper = \"styles-module--imgWrapper--423b6\";\nexport var inSlider = \"styles-module--inSlider--3efaa\";\nexport var isContainImage = \"styles-module--isContainImage--e710a\";\nexport var isSmall = \"styles-module--isSmall--973db\";\nexport var isSquare = \"styles-module--isSquare--7997b\";\nexport var itemWrapper = \"styles-module--itemWrapper--425ca\";\nexport var skeletonImg = \"styles-module--skeletonImg--27e02\";\nexport var skeletonText = \"styles-module--skeletonText--d4653\";\nexport var small = \"styles-module--small--f864b\";\nexport var textBadge = \"styles-module--textBadge--cf3b4\";\nexport var textWrapper = \"styles-module--textWrapper--5f188\";\nexport var title = \"styles-module--title--4ca8a\";","import React from 'react';\nimport pt from 'prop-types';\nimport Text from '/src/components/ui/text';\nimport Link, { linkProptypes } from '../link';\nimport Image, { imageProptypes } from '../image';\nimport AwardBadge from '../awardBadge';\nimport { combine } from '/src/helpers/styles';\nimport Icon from '../icon';\nimport Skeleton from '../skeleton';\nimport RichText, { richTextPropTypes } from '../richText';\nimport Headline from '../headline';\nimport FallbackIcon from './icon/if_fallback_profiles.svg';\nimport * as styles from './styles.module.scss';\nimport { isSSRPageLink, SSRPageLinks } from '../../../helpers/isSSRPageLink';\n\nconst TeaserItem = ({\n image,\n year,\n title,\n subline,\n text,\n info,\n link,\n isInSlider,\n imageBadge,\n awardBadge,\n className,\n imageClassName,\n isSkeleton,\n disableGatsbyImage,\n aspectRatio,\n isSmall,\n showArrow,\n arrowSize,\n textBadge,\n unstyledFallback,\n onLinkClick,\n}) => {\n const renderTeaserItem = () => (\n <>\n {!image?.image && !image?.url && !imageBadge && (\n \n {!unstyledFallback && }\n
\n )}\n {(image?.image || image?.url) && (\n \n )}\n {!image?.image && !image?.url && imageBadge && (\n \n )}\n
\n {year && (\n \n {year}\n \n )}\n {title && (\n \n {title}\n \n )}\n {subline && (\n \n )}\n {text && (\n \n )}\n {info && (\n \n {info}\n \n )}\n
\n {awardBadge && }\n {(image?.image || image?.url) && imageBadge && (\n \n \n
\n )}\n {textBadge && (\n
\n \n {textBadge}\n \n
\n )}\n {showArrow && (\n \n )}\n \n );\n\n if (isSkeleton) {\n return (\n \n
\n \n
\n
\n \n
\n \n );\n }\n if (link) {\n return (\n \n {renderTeaserItem()}\n \n );\n }\n\n return (\n \n {renderTeaserItem()}\n \n );\n};\n\nTeaserItem.propTypes = {\n image: pt.shape(imageProptypes),\n title: pt.string,\n subline: pt.string,\n text: pt.shape(richTextPropTypes),\n info: pt.string,\n link: pt.shape(linkProptypes),\n awardBadge: pt.string,\n imageBadge: pt.string,\n isInSlider: pt.bool,\n className: pt.string,\n imageClassName: pt.string,\n showArrow: pt.bool,\n arrowSize: pt.string,\n textBadge: pt.string,\n isSkeleton: pt.bool,\n disableGatsbyImage: pt.bool,\n aspectRatio: pt.oneOf(['1/1', '16/12']),\n isSmall: pt.bool,\n unstyledFallback: pt.bool,\n onLinkClick: pt.func,\n};\n\nTeaserItem.defaultProps = {\n link: null,\n image: null,\n title: '',\n className: '',\n imageClassName: '',\n info: '',\n subline: '',\n text: null,\n awardBadge: '',\n imageBadge: '',\n isInSlider: false,\n showArrow: false,\n arrowSize: '2x',\n disableGatsbyImage: true,\n isSkeleton: false,\n aspectRatio: '16/12',\n isSmall: false,\n unstyledFallback: false,\n};\n\nexport default TeaserItem;\n","const isIfDesignAward = (el) => el.awardType === 2;\n\nexport const getIfDesignAwardBadge = (el) => {\n if (el.awardType === 1) {\n if (el.status === 37) {\n return null;\n }\n }\n if (el.goldAward) {\n return 'ifDesignAwardGold';\n } else if (isIfDesignAward(el)) {\n return 'ifDesignAward';\n }\n return null;\n};\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import {\n addMonths,\n addYears,\n endOfMonth,\n endOfYear,\n format,\n startOfMonth,\n startOfYear,\n} from 'date-fns';\n\nconst FROM_NOW_ID = 999;\nconst YEAR = 2024; // hardcoded so that it doesn't jump to 2025 on January 1st\n\nexport const sortFiltersAlphabetically = (a, b) => a.name.localeCompare(b.name);\n\nexport const getRanges = (initialYear) => [\n {\n id: 0,\n name: `Current year ${initialYear}`,\n },\n {\n id: 1,\n name: `Last year ${initialYear - 1}`,\n },\n {\n id: 2,\n name: 'Last 3 years',\n },\n {\n id: 3,\n name: 'Last 5 years',\n },\n {\n id: 4,\n name: 'All winners since 1954',\n },\n];\n\nexport const getYearFilters = ({ allTime, year = YEAR, type } = {}) => {\n const filters = [\n {\n id: 0,\n name: `Current year ${year}`,\n type,\n },\n {\n id: 1,\n name: `Award year ${year - 1}`,\n type,\n },\n { id: 2, name: 'Last 3 years', type },\n { id: 3, name: 'Last 5 years', type },\n ].filter(Boolean);\n\n if (!allTime) {\n return filters;\n }\n\n return filters.concat({ id: 4, name: 'All winners since 1954', type });\n};\n\nexport const getJurorYearFilters = (year, isSip) =>\n [\n {\n id: 0,\n name: `Current year ${year}`,\n type: 'juror',\n displayYear: year,\n isJuror: true,\n },\n {\n id: 1,\n name: `Last year ${year - 1}`,\n type: 'juror',\n displayYear: year - 1,\n isJuror: true,\n },\n !isSip && {\n id: 2,\n name: 'All jurors since 1954',\n type: 'juror',\n isJuror: true,\n },\n isSip && { id: 3, name: 'Last 3 years', type: 'juror', isJuror: true },\n ].filter(Boolean);\n\nexport const getMappedJurorFilterDates = (year = 2025) => {\n return {\n 0: [year],\n 1: [year - 1],\n 2: Array.from(new Array(year - 1953)).map((_, index) => year - index),\n 3: Array.from(new Array(3)).map((_, index) => year - index),\n };\n};\n\nexport const getMappedFilterDates = () => {\n return {\n 0: [YEAR],\n 1: [YEAR - 1],\n 2: Array.from(new Array(3)).map((_, index) => YEAR - index),\n 3: Array.from(new Array(5)).map((_, index) => YEAR - index),\n 4: Array.from(new Array(YEAR - 1953)).map((_, index) => YEAR - index),\n };\n};\n\nconst formatFutureDateForAPI = (date) => format(date, 'yyyy-MM-dd');\n\nexport const getMappedFilterFutureDates = (key) => {\n const map = {\n 0: {\n fromDate: formatFutureDateForAPI(new Date()),\n toDate: formatFutureDateForAPI(endOfMonth(new Date())),\n },\n 1: {\n fromDate: formatFutureDateForAPI(startOfMonth(addMonths(new Date(), 1))),\n toDate: formatFutureDateForAPI(endOfMonth(addMonths(new Date(), 1))),\n },\n 2: {\n fromDate: formatFutureDateForAPI(startOfMonth(addMonths(new Date(), 1))),\n toDate: formatFutureDateForAPI(endOfMonth(addMonths(new Date(), 3))),\n },\n 3: {\n fromDate: formatFutureDateForAPI(new Date()),\n toDate: formatFutureDateForAPI(endOfYear(new Date())),\n },\n 4: {\n fromDate: formatFutureDateForAPI(startOfYear(addYears(new Date(), 1))),\n toDate: formatFutureDateForAPI(endOfYear(addYears(new Date(), 1))),\n },\n [FROM_NOW_ID]: {\n fromDate: formatFutureDateForAPI(new Date()),\n toDate: formatFutureDateForAPI(endOfYear(addYears(new Date(), 1))),\n },\n };\n\n return map[key || FROM_NOW_ID];\n};\n\nexport const getMonthFilters = (type) => {\n const filters = [\n {\n id: 0,\n name: `This month`,\n type,\n },\n {\n id: 1,\n name: `Next month`,\n type,\n },\n { id: 2, name: 'Next 3 months', type },\n { id: 3, name: 'This year', type },\n { id: 4, name: 'Next year', type },\n ];\n\n return filters;\n};\n\nexport const getActiveFilters = (filtersMap, queryFilters) => {\n if (!filtersMap || !queryFilters) {\n return {};\n }\n\n const activeFilters = Object.fromEntries(\n Object.entries(filtersMap).map(([key, filters]) => [\n getFilterKeyQueryParamKey(key),\n filters.filter((filter) => queryFilters[key]?.includes(filter.id)),\n ])\n );\n\n activeFilters.find = queryFilters['find'];\n activeFilters.profile = queryFilters['profile'];\n activeFilters.inspiration = queryFilters['inspiration'];\n activeFilters.sort = queryFilters['sort'];\n activeFilters.dynamicFilterId = queryFilters['dynamicFilterId'];\n\n return activeFilters;\n};\n\nconst filterKeyQueryParamKeyMap = {\n awards: 'awardId',\n profileTypes: 'profileTypeId',\n time: 'yearId',\n region: 'regionId',\n countries: 'countryId',\n country: 'countryId',\n fieldsOfWork: 'fieldOfWorkId',\n sectors: 'sectorId',\n disciplines: 'disciplineId',\n categories: 'categoryId',\n articleType: 'articleTypeId',\n articleCategory: 'articleCategoryId',\n readingTime: 'readingTimeId',\n pressType: 'pressTypeId',\n eventType: 'eventTypeId',\n};\n\nexport const queryParamKeyMicrocopyKeyMap = {\n awardId: 'awards',\n profileTypeId: 'profileTypes',\n yearId: 'time',\n regionId: 'region',\n countryId: 'country',\n fieldOfWorkId: 'fieldsOfWork',\n sectorId: 'sectors',\n disciplineId: 'discipline',\n categoryId: 'category',\n articleTypeId: 'articleType',\n articleCategoryId: 'articleCategory',\n readingTimeId: 'readingTime',\n pressTypeId: 'pressType',\n eventTypeId: 'eventType',\n};\n\nconst getFilterKeyQueryParamKey = (filterKey) => {\n return filterKeyQueryParamKeyMap[filterKey] || filterKey;\n};\n\n// builds new search params from current or provided search params, and previous filter state\nexport const buildSearchParams = ({\n filterKey,\n filter,\n isSingleValue = false,\n baseSearchParams = null,\n}) => {\n let searchParams = baseSearchParams || new URLSearchParams(location.search);\n\n const key = getFilterKeyQueryParamKey(filterKey);\n if (isSingleValue) {\n if (filter.checked) {\n searchParams.delete(key);\n } else {\n searchParams.set(key, filter.id);\n }\n } else {\n const pairs = Array.from(searchParams.entries());\n if (filter.checked) {\n searchParams = new URLSearchParams(\n pairs.filter(([pairKey, pairVal]) => {\n if (pairKey === key && pairVal === String(filter.id)) {\n return false;\n }\n return true;\n })\n );\n } else {\n searchParams.append(key, filter.id);\n }\n }\n\n // always reset page\n searchParams.delete('page');\n\n searchParams.sort();\n\n return searchParams;\n};\n\n// builds new search params from current or provided search params, and previous filter state\nexport const buildWDISearchParams = ({\n filterKey,\n filter,\n isSingleValue = false,\n baseSearchParams = null,\n location,\n}) => {\n let searchParams = baseSearchParams || new URLSearchParams(location.search);\n\n if (isSingleValue) {\n if (filter.checked) {\n searchParams.delete(filterKey);\n } else if (filter.value) {\n searchParams.set(filterKey, filter.value);\n } else {\n searchParams.delete(filterKey);\n }\n } else {\n const pairs = Array.from(searchParams.entries());\n if (filter.checked) {\n searchParams = new URLSearchParams(\n pairs.filter(([pairKey, pairVal]) => {\n if (pairKey === filterKey && pairVal === String(filter.value)) {\n return false;\n }\n return true;\n })\n );\n } else if (filter.value) {\n searchParams.append(filterKey, filter.value);\n }\n }\n\n // remove mutually exclusive field\n if (filter.mutuallyExclusiveField) {\n searchParams.delete(filter.mutuallyExclusiveField);\n }\n\n // reset page to 1 & the hide filters to false if filter is changed\n if (filterKey !== 'page' || !searchParams.get('page')) {\n searchParams.set('page', 1);\n searchParams.set('hideFilter', 0);\n }\n\n searchParams.sort();\n\n return searchParams;\n};\n\nexport const buildSearchParamsFromActiveFiltersIdsMap = (filters) => {\n const searchParams = new URL(document.URL).searchParams;\n\n // because we are altering searchParams, we need a new URLSearchParams instance for iteration\n let currentParamKeys = new URL(document.URL).searchParams.keys();\n\n const whitelist = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'page',\n ];\n\n // remove everything that's not tracking related\n for (let key of currentParamKeys) {\n if (!whitelist.includes(key)) {\n searchParams.delete(key);\n }\n }\n\n // add active filters\n for (let [filterKey, filterValue] of Object.entries(filters)) {\n if (filterValue !== undefined) {\n if (Array.isArray(filterValue)) {\n for (let el of filterValue) {\n searchParams.append(getFilterKeyQueryParamKey(filterKey), el);\n }\n } else {\n searchParams.set(getFilterKeyQueryParamKey(filterKey), filterValue);\n }\n }\n }\n\n searchParams.sort();\n\n return searchParams;\n};\n\n// remove from query params anything that is not active\nexport const cleanSearchParams = (filters) => {\n const activeFilterIdsMap = getActiveFilterIdsMap(filters);\n\n // since we always want to keep the awardId, we need to add it to the activeFilterIdsMap (in IFDSA it's not visible)\n const params = buildSearchParamsFromActiveFiltersIdsMap({\n ...activeFilterIdsMap,\n awardId: filters.awardId,\n });\n\n if (history.pushState) {\n var newurl =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n `?${params.toString()}`;\n window.history.replaceState({ path: newurl }, '', newurl);\n }\n};\n\nconst getActiveFilterIdsMap = (filters) => {\n const entries = Object.entries(filters).map(([key, val]) => {\n if (Array.isArray(val)) {\n return [key, val.map((el) => el.id)];\n }\n return [key, val];\n });\n\n return Object.fromEntries(entries);\n};\n\nexport const getFiltersFromQueryParams = (\n defaultFilters,\n queryParams,\n mapping = {},\n customResolvers = {}\n) => {\n const isInteger = (str) => {\n if (typeof str !== 'string') {\n return false;\n }\n\n const num = Number(str);\n\n if (Number.isInteger(num)) {\n return true;\n }\n\n return false;\n };\n\n const filters = { ...defaultFilters };\n const keyValuePairs = queryParams.split('&');\n\n keyValuePairs.forEach((pair) => {\n const key = pair.split('=').shift();\n let val;\n if (key === 'profile') {\n val = pair.split('|id=').pop();\n } else {\n val = pair.split('=').pop();\n }\n const value = isInteger(val) ? Number(val) : val;\n const filterKey = mapping[key] || key.split('Id').shift();\n const valueToAdd = customResolvers[key]?.(value) || value;\n\n if (filters[filterKey] && Array.isArray(filters[filterKey])) {\n filters[filterKey] = filters[filterKey].concat(valueToAdd);\n } else {\n filters[filterKey] = valueToAdd;\n }\n });\n\n return filters;\n};\n\nexport const getOpenedFilters = (filters, defaults = []) => {\n const activeFilters = Object.entries(filters)\n .filter(([_, val]) => Array.isArray(val) && val.length)\n .map(([key, _]) => key);\n\n return [...defaults, ...activeFilters];\n};\n","export const isSSRPageLink = (urls, link) => {\n return urls.some((page) => {\n return (\n link?.linkToPage?.includes?.(page.url) ||\n link?.linkToDynamicPage === page.name\n );\n });\n};\n\nexport const SSRPageLinks = [\n { url: '/winner-ranking/project/', name: 'Project Detail' },\n { url: '/brands-creatives/company/', name: 'Company Detail' },\n { url: '/if-design-award-and-jury/jury/profile/', name: 'Jury Detail' },\n];\n","import { useRef, useState, useEffect } from 'react';\n\nconst useElementOnScreen = (options) => {\n const containerRef = useRef(null);\n const [isVisible, setIsVisible] = useState(false);\n\n const callbackFunction = (entries) => {\n const [entry] = entries;\n setIsVisible(entry.isIntersecting && !options.ignore);\n };\n\n useEffect(() => {\n const observer = new IntersectionObserver(callbackFunction, options);\n if (containerRef.current) observer.observe(containerRef.current);\n\n return () => {\n if (containerRef.current) observer.unobserve(containerRef.current);\n };\n }, [containerRef, options]);\n\n return [containerRef, isVisible];\n};\n\nexport default useElementOnScreen;\n"],"names":["isSafari","window","test","navigator","userAgent","CustomScrollable","children","vertical","onlySmall","className","props","containerRef","useRef","trackRef","thumbRef","needsScrollbarTrack","setNeedsScrollbarTrack","useState","hackNeeded","checkVersion","agent","start","indexOf","Number","substr","replace","useEffect","current","scrollWidth","clientWidth","style","width","React","_extends","combine","ref","onScroll","percentageScrolled","scrollLeft","thumbPosition","transform","propTypes","pt","defaultProps","Headline","text","level","type","variant","textClassName","Text","as","dangerouslySetInnerHTML","__html","raw","RichText","content","paragraphAs","paragraphType","paragraphVariant","headlinePropTypes","richTextPropTypes","isRequired","textClasName","Skeleton","img","imgWrapper","inSlider","isContainImage","isSquare","itemWrapper","textWrapper","FallbackIcon","fill","fillRule","d","xmlns","viewBox","TeaserItem","image","year","title","subline","info","link","isInSlider","imageBadge","awardBadge","imageClassName","isSkeleton","disableGatsbyImage","aspectRatio","isSmall","showArrow","arrowSize","textBadge","unstyledFallback","onLinkClick","renderTeaserItem","url","styles","Image","imgClassName","disableImageCaption","AwardBadge","name","Icon","size","Link","useGatsbyLink","isSSRPageLink","SSRPageLinks","onClick","imageProptypes","linkProptypes","getIfDesignAwardBadge","el","awardType","status","goldAward","isIfDesignAward","endOfMonth","dirtyDate","requiredArgs","arguments","date","toDate","month","getMonth","setFullYear","getFullYear","setHours","startOfMonth","setDate","addMonths","dirtyAmount","amount","toInteger","isNaN","Date","NaN","dayOfMonth","getDate","endOfDesiredMonth","getTime","setMonth","endOfYear","startOfYear","cleanDate","addYears","YEAR","getYearFilters","allTime","filters","id","filter","Boolean","concat","getJurorYearFilters","isSip","displayYear","isJuror","getMappedFilterDates","Array","from","map","_","index","formatFutureDateForAPI","format","getMappedFilterFutureDates","key","fromDate","getMonthFilters","getActiveFilters","filtersMap","queryFilters","activeFilters","Object","fromEntries","entries","getFilterKeyQueryParamKey","_queryFilters$key","includes","find","profile","inspiration","sort","dynamicFilterId","filterKeyQueryParamKeyMap","awards","profileTypes","time","region","countries","country","fieldsOfWork","sectors","disciplines","categories","articleType","articleCategory","readingTime","pressType","eventType","queryParamKeyMicrocopyKeyMap","awardId","profileTypeId","yearId","regionId","countryId","fieldOfWorkId","sectorId","disciplineId","categoryId","articleTypeId","articleCategoryId","readingTimeId","pressTypeId","eventTypeId","filterKey","buildSearchParams","isSingleValue","baseSearchParams","searchParams","URLSearchParams","location","search","checked","delete","set","pairs","pairKey","pairVal","String","append","buildWDISearchParams","value","mutuallyExclusiveField","get","cleanSearchParams","params","URL","document","currentParamKeys","keys","whitelist","filterValue","undefined","isArray","buildSearchParamsFromActiveFiltersIdsMap","getActiveFilterIdsMap","history","pushState","newurl","protocol","host","pathname","toString","replaceState","path","val","getFiltersFromQueryParams","defaultFilters","queryParams","mapping","customResolvers","split","forEach","pair","_customResolvers$key","shift","pop","str","num","isInteger","valueToAdd","call","getOpenedFilters","defaults","length","urls","some","page","_link$linkToPage","_link$linkToPage$incl","linkToPage","linkToDynamicPage","options","isVisible","setIsVisible","callbackFunction","entry","isIntersecting","ignore","observer","IntersectionObserver","observe","unobserve"],"sourceRoot":""}