{"version":3,"sources":["webpack:///./src/components/molecules/ProductEventList/ProductEventList.scss","webpack:///./src/components/molecules/ProductEventList/ProductEventList.jsx","webpack:///./src/components/molecules/ProductEventList/index.jsx"],"names":["module","exports","productEventList","eventItem","ticketInfo","groupTitle","weekday","date","onlyTime","time","timeIcon","headerButton","on","title","info","iconCircle","showMore","showMoreDates","grouper","groups","item","itemKey","month","_objectSpread","_defineProperty","concat","_toConsumableArray","sortFunctions","a","b","timestamp","EventListItems","_ref","products","showProductLink","map","product","i","react_default","createElement","Fragment","key","TableList","className","styles","Link","href","startTime","appendQueryParams","parseUrl","getFullUrl","url","startDate","fromDate","getFormattedDate","fromTime","makeProductUrl","Heading","size","sizes","heading5","Icon","icon","calendar","toDate","clock","nameOfStartDay","nameOfEndDay","undefined","toTime","marker","intro","EventTicketInfo","isLoading","externalData","ticketData","alt","EventListHeader","_ref2","columnCount","onClick","culture","useSiteSettings","colSpan","Button","transparent","full","noPadding","classnames","heading3","minus","plus","out","split","alterGroupTitleByCulture","ProductEventList","React","memo","_ref3","dateVariant","channel","render","toggleGroups","groupByMonth","showInitial","_useSiteSettings2","productPageLink","tellusTicketChannelName","transformedProducts","useMemo","eventDate","getDateFromISO","now","Date","day","id","getProductUrl","sortedProducts","sort","length","translate","ticketAvailabilityFetcherKey","TicketAvailabilityFetcher","Toggle","_ref4","setOn","caption","ProductEventList_EventListItems","slice","iconAfter","chevronDown","groupedProducts","groupedObject","reduce","Object","keys","groupProducts","group","groupIndex","_ref5","toggle","ProductEventList_EventListHeader","displayName","propTypes","PropTypes","array","isRequired","bool","string","func","defaultProps"],"mappings":"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","file":"producteventlist.bundle.54c59c275a833701a90e.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"productEventList\":\"_30aO8f\",\"eventItem\":\"_3jM4s0\",\"ticketInfo\":\"_1sQopa\",\"groupTitle\":\"_1ePezS\",\"weekday\":\"qZXNce\",\"date\":\"_2X9Ed9\",\"onlyTime\":\"_2Or858\",\"time\":\"_2t-wEn\",\"timeIcon\":\"UrLhe6\",\"headerButton\":\"_2CLlEg\",\"on\":\"ALNGp1\",\"title\":\"_1sYxBX\",\"info\":\"_1FlSRE\",\"iconCircle\":\"_2YACm6\",\"showMore\":\"_1frRlE\",\"showMoreDates\":\"IkdPZA\"};","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Heading, { H4, H3 } from 'components/atoms/Heading';\nimport Link from 'components/atoms/Link';\nimport Icon from 'components/atoms/Icon';\nimport {\n clock,\n marker,\n minus,\n plus,\n chevronDown,\n calendar,\n} from 'components/atoms/Icon/icons';\nimport EventTicketInfo from 'components/molecules/EventTicketInfo';\nimport Table, { Row, Column } from 'components/molecules/TableList';\nimport Button, { IconButton } from 'components/atoms/Button';\nimport BreakpointContainer from 'containers/BreakpointContainer';\nimport Toggle from 'components/utilities/Toggle';\nimport TicketAvailabilityFetcher from 'components/utilities/TicketAvailabilityFetcher';\nimport getProductUrl from 'utils/getProductUrl';\nimport { translate } from 'utils/translate';\nimport { getFullUrl, appendQueryParams, parseUrl } from 'utils/bundle-helper';\nimport useSiteSettings from 'hooks/use-site-settings';\nimport { getDateFromISO, getFormattedDate } from 'utils/dateTime';\n\nimport * as styles from './ProductEventList.scss';\n\nconst grouper = (groups, item) => {\n const itemKey = item.month;\n return {\n ...groups,\n [itemKey]: [...(groups[itemKey] || []), ...[item]],\n };\n};\nconst sortFunctions = {\n noFromTime: (a, b) => {\n if (!a.fromTime) return -1;\n return 0;\n },\n timestamp: (a, b) => {\n if (a.timestamp > b.timestamp) {\n return 1;\n }\n if (a.timestamp < b.timestamp) {\n return -1;\n }\n return 0;\n },\n};\n\nconst groupProducts = products => {\n const groupedObject = products.reduce(grouper, {});\n return Object.keys(groupedObject).map(key => ({\n title: key,\n products: groupedObject[key],\n }));\n};\n\nconst makeProductUrl = product => {\n if (!!product.startTime) {\n return appendQueryParams(parseUrl(getFullUrl(product.url)), {\n startDate: product.fromDate,\n startTime: getFormattedDate(product.fromTime, 'HH:mm'),\n }).href;\n }\n return appendQueryParams(parseUrl(getFullUrl(product.url)), {\n startDate: product.fromDate,\n }).href;\n};\n\nconst EventListItems = ({ products, showProductLink, ticketInfo }) =>\n products.map((product, i) => (\n \n \n \n
\n {showProductLink ? (\n \n

{product.title}

\n \n ) : (\n \n

{product.title}

\n
\n )}\n \n \n \n\n {`${getFormattedDate(\n product.fromDate,\n 'dd',\n )} ${getFormattedDate(product.fromDate, 'MMM yyyy')}`}{' '}\n {!!product.toDate && product.fromDate !== product.toDate && (\n \n {\"- \"}\n {getFormattedDate(product.toDate, 'dd')}\n {getFormattedDate(product.toDate, ' MMM yyyy')}\n \n )}\n \n \n \n \n \n \n {product.nameOfStartDay}{' '}\n \n {product.fromDate !== product.toDate && (product.nameOfEndDay !== null && product.nameOfEndDay !== '' && product.nameOfEndDay !== undefined) && (\n - {product.nameOfEndDay}\n )}\n {!!product.fromTime && (\n \n {getFormattedDate(product.fromTime, ' p')}\n {!!product.toTime &&\n product.fromTime !== product.toTime &&\n getFormattedDate(product.toTime, '-p')}\n \n )}\n \n \n \n \n {product.intro}\n \n
\n \n
\n
\n
\n
\n
\n ));\n\nconst alterGroupTitleByCulture = (title, culture) => {\n let out = title;\n if (culture === 'it') {\n out = title.split(' ');\n return `${out[0]}, ${out[1]} ${out[2]} ${out[3]}`;\n }\n if (culture === 'de') {\n out = title.split(',');\n // return `${out[0]}, ${out[1]} ${out[2]}`;\n return `${out[0]}, ${out[1]}`;\n }\n return out;\n};\n\nconst EventListHeader = ({ columnCount, title, onClick, on }) => {\n const { culture } = useSiteSettings();\n\n return (\n \n \n
\n {!onClick ? (\n

\n {alterGroupTitleByCulture(title, culture)}\n

\n ) : (\n \n

\n {title}\n

\n \n \n )}\n
\n
\n
\n );\n};\n\nconst ProductEventList = React.memo(\n ({\n dateVariant,\n products,\n showProductLink,\n channel,\n render,\n toggleGroups,\n groupByMonth,\n showInitial,\n title,\n }) => {\n const { productPageLink, tellusTicketChannelName } = useSiteSettings();\n const transformedProducts = useMemo(\n () =>\n products\n ? products.map(product => {\n const eventDate = getDateFromISO(\n product.fromDate,\n product.fromTime,\n );\n const timestamp = getFormattedDate(eventDate, 't');\n const now = new Date();\n const day = getFormattedDate(product.fromDate, 'PPPP');\n const month = getFormattedDate(eventDate < now ? now : product.fromDate, 'MMMM yyyy');\n const key = `${product.id}_${getFormattedDate(\n eventDate,\n \"yyyy-MM-dd'T'HH:mm\",\n )}`;\n const url = getProductUrl(product.url, productPageLink);\n return {\n ...product,\n eventDate,\n key,\n day,\n month,\n timestamp,\n url,\n };\n })\n : null,\n [products, productPageLink],\n );\n\n const sortedProducts = transformedProducts\n ? transformedProducts.sort(sortFunctions.timestamp)\n : [];\n\n // no products\n if (!products || !products.length) {\n return

{translate('/pages/eventListPage/noResult')}

;\n }\n\n if (!groupByMonth) {\n const ticketAvailabilityFetcherKey = `${sortedProducts[0].fromDate}–${sortedProducts[0].toDate}`;\n\n return (\n \n {ticketInfo => (\n (\n \n \n \n
\n {!on && (\n

\n \n {translate('/product/showMoreDates')}\n \n

\n )}\n
\n )}\n />\n )}\n \n );\n }\n\n // grouped products\n const groupedProducts = groupProducts(sortedProducts);\n\n if (render) {\n return render(groupedProducts);\n }\n const ticketAvailabilityFetcherKey = `${sortedProducts[0].fromDate}–${sortedProducts[0].toDate}`;\n return (\n \n {groupedProducts.map((group, groupIndex) => (\n (\n \n {!!group.title && (\n \n )}\n {on && (\n \n {ticketInfo => (\n \n )}\n \n )}\n \n )}\n />\n ))}\n
\n );\n },\n);\nProductEventList.displayName = 'ProductEventList';\nProductEventList.propTypes = {\n products: PropTypes.array.isRequired,\n showProductLink: PropTypes.bool,\n channel: PropTypes.string,\n render: PropTypes.func,\n};\nProductEventList.defaultProps = {\n dateVariant: 'dateTime',\n showProductLink: true,\n render: null,\n};\n\nexport default ProductEventList;\n","import ProductEventList from './ProductEventList';\nexport default ProductEventList;\n"],"sourceRoot":""}