{"version":3,"file":"modern.channels.CAsKRuO9.js","names":[],"sources":["../../../../../../owl-nest/external/owl-kit/src/legacy/VideoLoader.jsx","../../src/modern/redux/actions/channels.js","../../src/modern/redux/reducers/channels.js","../../src/modern/features/channel/store.js","../../src/modern/features/channel/prop-types.js","../../src/modern/components/BigProjectCard/BigProjectCard.js","../../src/modern/features/channel/detail/components/ThemedCard/styles.js","../../src/modern/features/channel/detail/components/ThemedCard/index.js","../../src/modern/features/channel/styles.js","../../src/modern/features/channel/detail/components/EditorialContent.js","../../src/modern/features/channel/detail/components/TaggedProjectList.js","../../src/modern/components/ChannelSubButton.js","../../src/modern/features/channel/detail/views/Partner.js","../../src/modern/features/channel/detail/components/CuratedProjectList.js","../../src/modern/features/channel/detail/views/User.js","../../src/modern/features/channel/context.js","../../src/modern/features/channel/components/ModalChannelNoAuth.js","../../src/modern/features/channel/components/ModalChannelSuccess.js","../../src/modern/features/channel/detail/index.js","../../src/modern/features/channel/list/TvBox.js","../../src/modern/features/channel/list/List.js","../../src/modern/features/channel/list/index.js","../../src/modern/features/channel/Router.js","../../src/modern/features/channel/index.js"],"sourcesContent":["import * as React from 'react'\nimport * as PropTypes from 'prop-types'\nimport { styled } from 'next-yak'\n\nimport * as colors from '../constants/colors.ts'\n\nimport Icon from './Icon.jsx'\n\n// NOTE: This is merely a proxy enabling us to target the component and style it\nconst VideoLoaderPlayIcon = styled(Icon)``\n\nconst VideoLoaderWrapper = styled.div`\n margin: 0 auto;\n text-align: center;\n position: relative;\n\n &:hover {\n cursor: pointer;\n\n ${VideoLoaderPlayIcon} {\n polygon {\n fill: ${colors.PRIMARY_BLUE_700};\n }\n }\n }\n`\n\nconst VideoLoaderButton = styled.div`\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n`\n\nconst VideoLoaderThumbnail = styled.img`\n max-width: 100%;\n`\n\n// TODO: Improve support for non-16/9 videos\nconst VideoWrapper = styled.div`\n background-color: black;\n height: 0;\n padding-bottom: 56.25%;\n position: relative;\n`\n\nconst Video = styled.div`\n iframe,\n video {\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n }\n`\n\nconst setParam = (videoHtml = '', param, value) => {\n const paramAlreadySet = new RegExp(`[?&]${param}=`)\n const hasQueryParams = /\\?[^=]+=/\n const srcAttribute = /src=\"(\\S+)\"/\n\n if (paramAlreadySet.test(videoHtml)) {\n return videoHtml\n }\n\n const [, url] = videoHtml.match(srcAttribute)\n\n const lastCharacter = url.charAt(url.length - 1)\n if (lastCharacter === '?' || lastCharacter === '&') {\n return videoHtml.replace(srcAttribute, `src=\"${url}${param}=${value}\"`)\n }\n\n if (hasQueryParams.test(url)) {\n return videoHtml.replace(srcAttribute, `src=\"${url}&${param}=${value}\"`)\n }\n\n return videoHtml.replace(srcAttribute, `src=\"${url}?${param}=${value}\"`)\n}\n\nconst setParams = (videoHtml = '', params) => {\n for (const param in params) {\n const value = params[param]\n videoHtml = setParam(videoHtml, param, value)\n }\n return videoHtml\n}\n\nconst useEnterView = (onEnterView, threshold) => {\n const ref = React.useRef(null)\n\n React.useEffect(() => {\n // References to window object must be done in useEffect or componentDidMount to be\n // ignored by gatsby when building the DS website. Otherwise we get\n // `XXX is not defined` errors\n const observer = new window.IntersectionObserver(\n (entries) => {\n const hasEnteredView = entries.some((entry) => entry.intersectionRatio >= threshold)\n if (hasEnteredView) {\n onEnterView()\n }\n },\n { threshold },\n )\n\n if (ref.current !== null) {\n observer.observe(ref.current)\n }\n })\n\n return ref\n}\n\n/** Acts as a placeholder for video content, and only loads the video when clicked. */\nconst VideoLoader = ({ className, placeholder, autoplay, srcSet, videoHtml }) => {\n const [videoLoaded, setVideoLoaded] = React.useState(false)\n const video = autoplay ? setParams(videoHtml, { mute: 1, autoplay: 1 }) : setParams(videoHtml, { autoplay: 1 })\n\n const ref = useEnterView(() => {\n if (autoplay) {\n setVideoLoaded(true)\n }\n }, 1)\n\n return (\n \n {!videoLoaded && (\n {\n event.preventDefault()\n setVideoLoaded(true)\n }}\n >\n \n \n \n \n \n )}\n {videoLoaded && (\n \n \n \n )}\n \n )\n}\n\nVideoLoader.propTypes = {\n className: PropTypes.string,\n /** URL of the placeholder image (shown before video is actually loaded) */\n placeholder: PropTypes.string.isRequired,\n /** Whether to autoplay the video when it enters view or not */\n autoplay: PropTypes.bool,\n /** String of images for retina screen */\n srcSet: PropTypes.string,\n /** HTML code (iframe or video element) that will be loaded after a click */\n videoHtml: PropTypes.string.isRequired,\n}\n\nVideoLoader.displayName = 'legacy.VideoLoader'\n\nexport default VideoLoader\n","import { api } from '$utils/apiRequester'\n\nexport const GET_CHANNEL_REQUEST = 'GET_CHANNEL_REQUEST'\nexport const GET_CHANNEL_SUCCESS = 'GET_CHANNEL_SUCCESS'\nexport const GET_CHANNEL_FAILURE = 'GET_CHANNEL_FAILURE'\n\nexport const GET_CHANNELS_REQUEST = 'GET_CHANNELS_REQUEST'\nexport const GET_CHANNELS_SUCCESS = 'GET_CHANNELS_SUCCESS'\nexport const GET_CHANNELS_FAILURE = 'GET_CHANNELS_FAILURE'\n\nexport const SUBSCRIBE_CHANNEL_REQUEST = 'SUBSCRIBE_CHANNEL_REQUEST'\nexport const SUBSCRIBE_CHANNEL_SUCCESS = 'SUBSCRIBE_CHANNEL_SUCCESS'\nexport const SUBSCRIBE_CHANNEL_FAILURE = 'SUBSCRIBE_CHANNEL_FAILURE'\n\nexport const SUBSCRIBE_DETAIL_CHANNEL_REQUEST = 'SUBSCRIBE_DETAIL_CHANNEL_REQUEST'\nexport const SUBSCRIBE_DETAIL_CHANNEL_SUCCESS = 'SUBSCRIBE_DETAIL_CHANNEL_SUCCESS'\nexport const SUBSCRIBE_DETAIL_CHANNEL_FAILURE = 'SUBSCRIBE_DETAIL_CHANNEL_FAILURE'\n\nexport const CLOSE_MODALS = 'CLOSE_MODALS'\nexport const OPEN_NO_AUTH = 'OPEN_NO_AUTH'\n\n/**\n * getChannel\n * @param {number} id ID of the channel to load\n * @return {object} redux action\n */\nexport const getChannel = id => {\n return {\n types: [GET_CHANNEL_REQUEST, GET_CHANNEL_SUCCESS, GET_CHANNEL_FAILURE],\n promise: () => api('ulule').get(`/channels/${id}`)\n }\n}\n\nexport const getChannels = (lang, country, limit = 18, extraFields, isAuthenticated, next) => {\n return {\n types: [GET_CHANNELS_REQUEST, GET_CHANNELS_SUCCESS, GET_CHANNELS_FAILURE],\n promise: () =>\n api('ulule').get(\n `/channels?limit=${limit}${lang ? `&lang=${lang}` : ''}${country ? `&country=${country}` : ''}${\n extraFields && isAuthenticated ? `&extra_fields=${extraFields}` : ''\n }${next ? `&next=${next}` : ''}`,\n {\n withAccessToken: isAuthenticated\n }\n )\n }\n}\nexport const openNoAuth = () => {\n return { type: OPEN_NO_AUTH }\n}\nexport const closeModals = () => {\n return { type: CLOSE_MODALS }\n}\nexport const subscribeChannel = (id, isSubscribed, detailPage = false) => {\n return {\n id,\n isSubscribed,\n types: detailPage\n ? [SUBSCRIBE_DETAIL_CHANNEL_REQUEST, SUBSCRIBE_DETAIL_CHANNEL_SUCCESS, SUBSCRIBE_DETAIL_CHANNEL_FAILURE]\n : [SUBSCRIBE_CHANNEL_REQUEST, SUBSCRIBE_CHANNEL_SUCCESS, SUBSCRIBE_CHANNEL_FAILURE],\n promise: async () => {\n const postRes = await api('ulule').post(`/channels/${id}/${isSubscribed ? 'unsubscribe' : 'subscribe'}`, {\n withAccessToken: true\n })\n return isSubscribed ? false : postRes.subscriptions_count\n }\n }\n}\n","import { combineReducers } from 'redux'\n\nimport * as ActionTypes from '../actions/channels'\n\nconst initialState = {\n detail: {\n showFirstTime: false,\n showNoAuth: false,\n subscriptionStatus: 'PRISTINE',\n error: false,\n isLoading: false,\n channel: null\n },\n list: {\n showFirstTime: false,\n showNoAuth: false,\n subscriptionStatus: 'PRISTINE',\n channels: null,\n error: false,\n isLoadingChannels: false,\n meta: null\n }\n}\n\nconst channelDetail = (state = initialState.detail, action) => {\n switch (action.type) {\n case ActionTypes.GET_CHANNEL_REQUEST: {\n return {\n ...state,\n isLoading: true\n }\n }\n\n case ActionTypes.GET_CHANNEL_SUCCESS: {\n const channel = action.response\n\n return {\n ...state,\n error: null,\n channel,\n isLoading: false\n }\n }\n\n // TODO: More detailed error handling\n case ActionTypes.GET_CHANNEL_FAILURE: {\n const { error } = action\n\n return {\n ...state,\n ...(error && { error: true }),\n channel: null,\n isLoading: false\n }\n }\n case ActionTypes.SUBSCRIBE_DETAIL_CHANNEL_REQUEST: {\n return {\n ...state,\n subscriptionStatus: 'PENDING'\n }\n }\n case ActionTypes.SUBSCRIBE_DETAIL_CHANNEL_SUCCESS: {\n const { isSubscribed, response } = action\n return {\n ...state,\n subscriptionStatus: 'SUCCESS',\n showFirstTime: response === 1,\n channel: {\n ...state.channel,\n is_subscribed: !isSubscribed\n }\n }\n }\n case ActionTypes.SUBSCRIBE_DETAIL_CHANNEL_FAILURE: {\n return {\n ...state,\n subscriptionStatus: 'FAILURE'\n }\n }\n case ActionTypes.CLOSE_MODALS:\n return {\n ...state,\n showFirstTime: false,\n showNoAuth: false\n }\n case ActionTypes.OPEN_NO_AUTH:\n return {\n ...state,\n showNoAuth: true\n }\n default:\n return state\n }\n}\n\nconst channelList = (state = initialState.list, action) => {\n switch (action.type) {\n case ActionTypes.GET_CHANNELS_SUCCESS: {\n const channels = state.channels ? [...state.channels, ...action.response.channels] : action.response.channels\n const meta = action.response.meta\n\n return {\n ...state,\n channels,\n meta,\n isLoadingChannels: false\n }\n }\n\n case ActionTypes.GET_CHANNELS_REQUEST: {\n return {\n isLoadingChannels: true,\n ...state\n }\n }\n case ActionTypes.GET_CHANNELS_FAILURE: {\n const { error } = action\n return {\n ...state,\n ...(error && { error: true }),\n channels: null,\n isLoadingChannels: false\n }\n }\n\n case ActionTypes.SUBSCRIBE_CHANNEL_REQUEST: {\n return {\n ...state,\n subscriptionStatus: 'PENDING'\n }\n }\n case ActionTypes.SUBSCRIBE_CHANNEL_SUCCESS: {\n const { response } = action\n\n return {\n ...state,\n subscriptionStatus: 'SUCCESS',\n showFirstTime: response === 1,\n channels: state.channels.map(channel => {\n if (channel.id === action.id) {\n return {\n ...channel,\n is_subscribed: !action.isSubscribed\n }\n }\n return channel\n })\n }\n }\n case ActionTypes.SUBSCRIBE_CHANNEL_FAILURE: {\n return {\n ...state,\n subscriptionStatus: 'FAILURE'\n }\n }\n\n case ActionTypes.CLOSE_MODALS: {\n return {\n ...state,\n showFirstTime: false,\n showNoAuth: false\n }\n }\n case ActionTypes.OPEN_NO_AUTH: {\n return {\n ...state,\n showNoAuth: true\n }\n }\n\n default:\n return state\n }\n}\n\nexport const channels = combineReducers({\n detail: channelDetail,\n list: channelList\n})\n","import { applyMiddleware, combineReducers, createStore } from 'redux'\nimport { thunk } from 'redux-thunk'\n\nimport { callAPIMiddleware } from '$redux/middleware/callAPI'\nimport { channels } from '$redux/reducers/channels'\nimport partners from '$redux/reducers/partner'\n\nimport config from '$utils/config'\n\nconfig.set({\n ...window.CHANNEL_LIST_DATA,\n channel: window.CHANNEL_DATA\n})\n\nconst reducers = combineReducers({\n channels,\n partners\n})\n\nexport default createStore(\n reducers,\n {\n channels: {\n detail: {\n showFirstTime: false,\n showNoAuth: false,\n subscriptionStatus: 'PRISTINE',\n error: false,\n isLoading: false,\n channel: config.get('channel')\n }\n }\n },\n applyMiddleware(thunk, callAPIMiddleware)\n)\n","import PropTypes from 'prop-types'\n\nexport const editorialContentShape = PropTypes.shape({\n ctaLabel: PropTypes.string,\n ctaLink: PropTypes.string,\n description: PropTypes.objectOf(PropTypes.string).isRequired,\n image: PropTypes.shape({\n value: PropTypes.string.isRequired,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.string\n }).isRequired\n })\n }),\n title: PropTypes.string,\n url: PropTypes.string,\n video: PropTypes.string\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { text } from '@owl-nest/utils'\nimport { CardTypeSelector } from '@ulule/duvet/CardTypeSelector.tsx'\nimport { t, tn } from '@owl-nest/localize'\n\nimport { getComingSoonLabel, getProgress, getShortCountdown, getFinishTrad } from '$models/projects'\nimport { updateUserRole, saveAction } from '../../features/init/services'\nimport * as cookie from '$utils/cookie'\nimport { projectShape, dataUTMPageContextShape } from '$utils/prop-types'\n\nimport { ModalProjectRemindMe, ModalProjectNoAuth } from '$components/Project/Modals'\n\nconst USER_ROLE_STATUS = {\n neutral: null,\n listed: 'fan',\n created: 'owner',\n backed: 'supporter',\n}\n\nconst LOCALSTORAGE_NAMESPACE = 'ul_modalShowedUp'\nconst COOKIE_MODAL_NAMESPACE = 'ul_modal_remind_me'\n\nconst getRelatedUserRole = (userRole) => {\n switch (userRole) {\n case 'fan':\n return {\n status: 'listed',\n label: t('Listed'),\n apiAction: 'unlike',\n roundButton: {\n text: t('Listed'),\n icon: 'active-heart',\n isCompact: true,\n },\n }\n\n case 'supporter':\n return {\n status: 'backed',\n label: t('Backed'),\n apiAction: null,\n roundButton: {\n text: t('Backed'),\n icon: 'backed',\n },\n }\n\n case 'owner':\n case 'coordinator':\n case 'editor':\n case 'moderator':\n return {\n status: 'created',\n label: t('Created'),\n apiAction: null,\n roundButton: {\n text: t('Created'),\n icon: 'created',\n },\n }\n\n default:\n return {\n status: 'neutral',\n label: t('Add to my list'),\n apiAction: 'like',\n roundButton: {\n text: t('Add to my list'),\n icon: 'inactive-heart',\n isCompact: true,\n },\n }\n }\n}\n\nclass BigProjectCard extends React.Component {\n constructor(props) {\n super(props)\n\n const { project } = props\n if (project && project.user_role === undefined) return\n\n this.state = {\n ...getRelatedUserRole(project && project.user_role),\n postAction: {\n onBeforeAction: this.checkAuth,\n onSuccess: this.handleModal,\n onError: this.onError,\n },\n isOpen: false,\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { project } = this.props\n const { status } = this.state\n const prevStatus = prevState && prevState.status\n\n if (status !== prevStatus) {\n if (project && project.user_role === undefined) return\n this.setState({\n ...getRelatedUserRole(USER_ROLE_STATUS[status]),\n })\n }\n\n if (window.localStorage.getItem(LOCALSTORAGE_NAMESPACE) === 'true') {\n return {\n modalShowedUp: true,\n }\n }\n }\n\n handleModal = (project, status) => {\n // we don't want to show modal for unlike event\n if (status && status === 'neutral') return\n\n const { isOpen } = this.state\n\n const { isAuthenticated } = this.props\n const hasCookie = cookie.get(COOKIE_MODAL_NAMESPACE) === 'true'\n if (hasCookie) {\n this.setState({\n modalShowedUp: true,\n })\n }\n\n // do not display modal if project ended\n // also shutdown the modal if cookie is here and\n // user is authenticated\n if ((isAuthenticated && hasCookie) || project.finished) {\n this.setState({\n isOpen: false,\n })\n return\n }\n\n this.setState(\n {\n isOpen: !isOpen,\n },\n () => {\n cookie.set(COOKIE_MODAL_NAMESPACE, true, { expires: +new Date(), path: '/', domain: 'ulule.com' })\n },\n )\n }\n\n onError = () => {\n const { isAuthenticated } = this.props\n\n if (!isAuthenticated) {\n this.setState({\n isOpen: true,\n })\n }\n }\n\n handleCloseModal = () => {\n this.setState({\n isOpen: false,\n })\n }\n\n onClick = (event) => {\n event.preventDefault()\n\n const { project, isAuthenticated } = this.props\n const { apiAction, postAction, status } = this.state\n if (isAuthenticated) {\n if (status && (status === 'created' || status === 'backed')) return\n\n const newStatus = status && status === 'listed' ? 'neutral' : 'listed'\n\n this.setState({\n status: newStatus,\n })\n\n updateUserRole(project && project.id, apiAction).then(() => {\n if (window.dataLayer) {\n window.dataLayer.push({\n event: 'socialInt',\n socialNetwork: 'Ulule',\n socialAction: newStatus === 'listed' ? 'Like' : 'Unlike',\n socialTarget: project && project.absolute_url,\n ululeProjectId: project && project.id,\n })\n }\n postAction.onSuccess(project, newStatus)\n }, postAction.onError)\n return\n }\n saveAction(project.id, apiAction)\n\n postAction.onError()\n }\n\n getStatus = () => {\n const { project } = this.props\n\n const { date_end: endDate, is_in_extra_time: extraTime, finished: isFinished, status: projectStatus } = project\n\n const isOnline = projectStatus === 'online'\n const countdownText = getShortCountdown(project)\n\n if (extraTime) {\n return t('Extension')\n } else if (isFinished) {\n return t('Finished')\n } else if (!endDate) {\n return ''\n }\n\n return isOnline && countdownText\n }\n\n render() {\n const { dataUTMPageContext, project } = this.props\n\n const progress = getProgress(project)\n\n const countdownText = getShortCountdown(project)\n\n const isOnline = project && project.status === 'online'\n const isProjectFinished = project && project.finished\n\n let textFinishProject = t('Finished')\n if (isProjectFinished) {\n textFinishProject = getFinishTrad(project.date_end)\n }\n\n const action =\n project.user_role !== undefined\n ? {\n ...this.state.roundButton,\n onClick: (event) => this.onClick(event),\n }\n : undefined\n\n return (\n \n \n {this.props.isAuthenticated && (\n \n )}\n {!this.props.isAuthenticated && (\n \n )}\n \n )\n }\n}\n\nBigProjectCard.defaultProps = {\n picture: null,\n rates: {},\n ribbonImage: null,\n srcSet: null,\n targetCurrency: 'EUR',\n}\n\nBigProjectCard.propTypes = {\n dataUTMPageContext: dataUTMPageContextShape,\n isAuthenticated: PropTypes.bool.isRequired,\n language: PropTypes.string.isRequired,\n modalImg: PropTypes.shape({\n x1: PropTypes.string,\n x2: PropTypes.string,\n x3: PropTypes.string,\n }).isRequired,\n picture: PropTypes.string,\n project: projectShape.isRequired,\n rates: PropTypes.objectOf(PropTypes.number),\n ribbonImage: PropTypes.string,\n srcSet: PropTypes.string,\n targetCurrency: PropTypes.string,\n}\n\nexport default BigProjectCard\n","import { styled, css } from 'next-yak'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { COLORS, Title1 } from '@ulule/owl-kit-components'\n\nimport { rem } from '$utils/styles'\n\nexport const CardWrapper = styled.div`\n background-color: ${COLORS.PRIMARY_SAND_100};\n color: ${COLORS.PRIMARY_GREY_000};\n color: ${(props) => props.theme.colors.primary};\n display: flex;\n flex-direction: column;\n\n ${Title1} {\n color: ${(props) => props.theme.colors.primary};\n }\n\n @media screen and (min-width: 767px) {\n flex-direction: ${(props) => (props.theme.isVertical ? 'column' : 'row')};\n\n ${(props) =>\n props.theme.isVertical\n ? css`\n height: 100%;\n padding: 7% 7% 8%;\n `\n : css`\n padding: ${() => rem(42)} ${() => rem(36)};\n `}\n }\n`\n\nexport const MediaWrapper = styled.div`\n width: 100%;\n\n img {\n width: 100%;\n }\n\n @media screen and (min-width: 767px) {\n margin-right: ${(props) => (props.theme.isVertical ? 0 : `${rem(50)}`)};\n width: ${(props) => (props.theme.isVertical ? '100%' : '50%')};\n }\n`\n\nexport const OutlineButton = styled(plume.ButtonAsLink).attrs({ kind: 'secondary' })`\n align-self: baseline;\n display: block;\n width: 100%;\n\n ${plume.Button} {\n width: 100%;\n }\n\n @media screen and (min-width: 767px) {\n width: initial;\n\n ${plume.Button} {\n width: initial;\n }\n }\n`\n\nexport const OutlineButtonVertical = styled(OutlineButton)`\n bottom: 0;\n position: absolute;\n`\n\nexport const Text = styled.div`\n font-size: ${() => rem(17)};\n font-weight: 300;\n line-height: ${() => rem(26)};\n margin: ${() => rem(21)} 0 ${() => rem(24)};\n margin-bottom: ${(props) => (props.theme.isVertical ? `${rem(78)}` : `${rem(24)}`)};\n\n @media screen and (min-width: 767px) {\n margin-bottom: ${() => rem(34)};\n\n ${(props) =>\n props.theme.isVertical &&\n css`\n margin-bottom: ${() => rem(78)};\n margin-top: ${() => rem(16)};\n `}\n }\n`\n\nexport const TextWrapper = styled.div`\n margin: ${() => rem(28)} ${() => rem(16)};\n position: ${(props) => (props.theme.isVertical ? 'relative' : 'initial')};\n\n @media screen and (min-width: 767px) {\n margin: 0;\n\n ${(props) =>\n props.theme.isVertical &&\n css`\n display: flex;\n flex-direction: column;\n height: 100%;\n margin-top: ${() => rem(34)};\n `}\n width: ${(props) => (props.theme.isVertical ? '100%' : '45%')};\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { YakThemeProvider } from 'next-yak'\n\nimport { Title1, VideoLoader } from '@ulule/owl-kit-components'\n\nimport * as S from './styles'\n\nconst DEFAULT_TRACKER = {\n element: React.Fragment,\n props: {},\n}\nconst EMPTY_THEME = {}\n\nconst ThemedCard = ({\n ctaLabel = null,\n ctaLink = null,\n image = null,\n isVertical = false,\n text = null,\n theme = EMPTY_THEME,\n title = null,\n tracker = DEFAULT_TRACKER,\n videoHtml = null,\n}) => {\n const customizedTheme = {\n ...theme,\n isVertical,\n }\n const CtaComponent = isVertical ? S.OutlineButtonVertical : S.OutlineButton\n\n const { element: Tracker, props: trackerProps } = tracker\n\n return (\n \n \n {image && (\n \n {videoHtml ? :
}\n \n )}\n \n {title && {title}}\n {text && {text}}\n {ctaLabel && ctaLink && (\n \n \n {ctaLabel}\n \n \n )}\n \n \n \n )\n}\n\nThemedCard.propTypes = {\n ctaLabel: PropTypes.string,\n ctaLink: PropTypes.string,\n image: PropTypes.string,\n isVertical: PropTypes.bool,\n text: PropTypes.string,\n theme: PropTypes.shape({}),\n title: PropTypes.string,\n tracker: PropTypes.shape({\n element: PropTypes.elementType,\n props: PropTypes.shape({}),\n }),\n videoHtml: PropTypes.string,\n}\n\nexport default ThemedCard\n","import { styled, css } from 'next-yak'\nimport {\n CallToAction,\n COLORS,\n FONTS,\n RegularText,\n SecondaryLink,\n Title1,\n Title2,\n Title5,\n} from '@ulule/owl-kit-components'\n\nimport { rem } from '$utils/styles'\n\nconst DEFAULT_GRID_BASIS = 1012\nconst LARGE_GRID_BASIS = 1146\nconst HEIGHT_SHIFT = 128\nconst SPACING = 16\n\n/**\n * CHANNEL PAGE — HEADER LAYOUT\n */\n\nexport const ChannelPageCover = styled.div`\n background-color: ${(props) => props.theme.colors.accent || props.theme.colors.primary};\n border-bottom: 4px solid ${(props) => props.theme.colors.primary};\n min-height: ${() => rem(250)};\n background-image: ${(props) => `url(${props.background})`};\n background-position: center bottom;\n background-repeat: no-repeat;\n\n @media screen and (min-width: 768px) {\n min-height: ${() => rem(350)};\n }\n`\n\nexport const ChannelPageHeader = styled.header`\n position: relative;\n z-index: -1;\n /**\n &:after {\n content: '';\n width: 100%;\n height: 100%;\n display: block;\n position: absolute;\n top: 0px;\n left: 0px;\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.35) 100%);\n }*/\n`\n\nexport const ChannelPageTitleContainer = styled.div`\n margin: auto;\n max-width: ${(props) => (props.theme.layout.isLarge ? rem(LARGE_GRID_BASIS) : rem(DEFAULT_GRID_BASIS))};\n padding: 0 ${() => rem(SPACING)};\n position: relative;\n z-index: 1;\n\n @media screen and (max-width: 767px) {\n margin-top: 12%;\n margin-bottom: ${() => `-${rem(68)}`};\n }\n`\n\n/**\n * CHANNEL PAGE — HEADER COMPONENTS\n */\n\nexport const ChannelPageLogo = styled.img`\n bottom: ${() => rem(HEIGHT_SHIFT - SPACING)};\n margin: 0;\n max-width: 90%;\n position: absolute;\n`\n\nexport const ChannelPageTitle = styled.h1`\n bottom: ${() => rem(HEIGHT_SHIFT - SPACING)};\n color: ${COLORS.PRIMARY_GREY_000};\n font-family: ${FONTS.PRIMARY_FONT};\n font-size: ${() => rem(55)};\n margin: 0;\n position: absolute;\n font-weight: 900;\n\n @media screen and (min-width: 768px) {\n max-width: 70%;\n font-size: ${() => rem(65)};\n }\n`\n\n/**\n * CHANNEL PAGE — BODY LAYOUT\n */\n\nexport const ChannelPageCuratedProjects = styled.div`\n margin-bottom: ${() => rem(64)};\n`\n\nexport const ChannelPageCuratedProjectsFooter = styled.div`\n margin-top: ${() => rem(32)};\n text-align: center;\n`\n\nexport const ChannelPageEditorialContent = styled.div`\n margin-bottom: ${() => rem(46)};\n\n ${(props) =>\n props.listMode &&\n css`\n display: flex;\n justify-content: space-between;\n `}\n\n @media screen and (min-width: 768px) {\n margin-bottom: ${() => rem(84)};\n }\n`\n\nexport const ChannelPageFullWidthSection = styled.div`\n @media screen and (min-width: 768px) {\n margin: auto;\n max-width: ${(props) => (props.theme.layout.isLarge ? rem(LARGE_GRID_BASIS) : rem(DEFAULT_GRID_BASIS))};\n padding: 0 ${() => rem(SPACING)};\n }\n`\nexport const ChannelSubButton = styled.div`\n position: absolute;\n right: 1.230769rem;\n top: -55px;\n`\nexport const ChannelPageGutteredSection = styled.div`\n position: relative;\n margin: auto;\n max-width: ${(props) => (props.theme.layout.isLarge ? rem(LARGE_GRID_BASIS) : rem(DEFAULT_GRID_BASIS))};\n padding: 0 ${() => rem(SPACING)};\n\n ${(props) =>\n !props.theme.layout.isLarge &&\n props.raised &&\n css`\n margin-top: ${() => `-${rem(26)}`};\n `}\n\n @media screen and (min-width: 768px) {\n ${(props) =>\n !props.theme.layout.isLarge &&\n props.raised &&\n css`\n margin-top: ${() => `-${rem(90)}`};\n `}\n }\n`\n\nexport const ChannelPageRightAside = styled.aside`\n margin: 0 auto;\n max-width: ${() => rem(360)};\n width: 100%;\n\n ${(props) =>\n props.theme.layout.isLarge &&\n css`\n margin-top: ${() => `-${rem(20)}`};\n `}\n\n @media screen and (min-width: 768px) {\n ${(props) =>\n !props.theme.layout.isLarge &&\n css`\n margin: 0;\n `}\n }\n`\n\nexport const ChannelPageFeaturedContent = styled.div`\n margin-bottom: ${(props) => !props.theme.layout.isLarge && `${rem(22)}`};\n width: 100%;\n\n @media screen and (min-width: 768px) {\n margin-bottom: 0;\n margin-right: ${() => rem(40)};\n }\n`\n\nexport const ChannelPageFeaturedSection = styled.div`\n display: flex;\n flex-direction: column;\n margin-bottom: ${() => rem(52)};\n\n @media (min-width: 768px) {\n flex-direction: row;\n }\n`\n\n/**\n * CHANNEL PAGE — BODY COMPONENTS\n */\n\nexport const ChannelPageCuratedProjectList = styled.div`\n margin-top: ${() => rem(32)};\n\n /* HACK: TODO: If you are reading this and the 'ProjectList' component\n ** has been migrated to SC, please use it here instead of the generic ul/li.\n */\n ul {\n @media screen and (max-width: 767px) {\n margin: 0;\n }\n }\n\n ul > li {\n box-sizing: border-box;\n display: flex;\n flex: 0 1 auto;\n justify-content: center;\n margin: 0;\n padding: ${() => rem(SPACING / 2)};\n width: 33%;\n\n @media screen and (max-width: 767px) {\n width: 50%;\n }\n\n @media screen and (max-width: 498px) {\n width: 100%;\n }\n }\n`\n\nexport const ChannelPageCuratedProjectsTitle = styled(Title1)`\n text-align: center;\n\n em {\n color: ${(props) => props.theme.colors.primary};\n font-style: normal;\n }\n`\n\nexport const ChannelPageEditorialContentItem = styled.li``\n\nexport const ChannelPageEditorialContentList = styled.ul`\n display: block;\n list-style: none;\n\n ${ChannelPageEditorialContentItem} + ${ChannelPageEditorialContentItem} {\n margin-top: ${() => rem(20)};\n }\n\n @media screen and (min-width: 768px) {\n display: inline-flex;\n\n ${ChannelPageEditorialContentItem} {\n width: ${(props) => props.itemCount && `${100 / props.itemCount}%`};\n }\n\n ${ChannelPageEditorialContentItem} + ${ChannelPageEditorialContentItem} {\n margin-top: 0;\n margin-left: ${(props) => (props.itemCount === 2 ? `${rem(46)}` : `${rem(14)}`)};\n }\n }\n`\n\nexport const ChannelPageOwnerCardTitle = styled(Title2)`\n margin-bottom: ${() => rem(22)};\n`\n\nexport const ChannelPageOwnerCard = styled.div`\n background: #ffffff;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: ${() => rem(20)} ${() => rem(14)};\n width: 100%;\n\n ${ChannelPageOwnerCardTitle} {\n text-align: center;\n }\n\n @media (min-width: 768px) {\n padding: ${() => rem(23)};\n padding-bottom: ${() => rem(20)};\n }\n`\n\nexport const ChannelPageOwnerCardDescription = styled.div`\n font-size: 15px;\n font-weight: 300;\n line-height: 22px;\n margin-top: ${() => rem(28)};\n\n strong {\n font-weight: 500;\n }\n`\n\nexport const ChannelPageOwnerCardImage = styled.img`\n max-width: 250px;\n`\n\nexport const ChannelPagePartnerCard = styled.div``\n\nexport const ChannelPagePartnerCardCTA = styled(CallToAction)`\n background-color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n margin-top: ${() => rem(20)};\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n opacity: 0.9;\n }\n`\n\nexport const ChannelPageTaggedProjects = styled.div`\n margin-bottom: ${(props) => (props.theme.layout.isLarge ? `${rem(42)}` : `${rem(62)}`)};\n margin-top: ${(props) => (props.theme.layout.isLarge ? `${rem(62)}` : 0)};\n\n @media screen and (min-width: 768px) {\n margin-bottom: ${() => rem(62)};\n margin-top: ${(props) => (props.theme.layout.isLarge ? `${rem(42)}` : 0)};\n }\n`\n\nexport const ChannelPageTaggedProjectsFooter = styled.footer`\n margin-top: ${() => rem(32)};\n text-align: center;\n`\n\nexport const ChannelPageTaggedProjectsHeader = styled.header`\n display: flex;\n justify-content: space-between;\n margin-bottom: ${() => rem(32)};\n width: 100%;\n\n @media screen and (max-width: 767px) {\n justify-content: center;\n }\n\n /* Sorting bar title */\n & > div {\n display: ${(props) => (!props.theme.layout.isLarge ? `flex` : `block`)};\n\n @media screen and (max-width: 820px) {\n display: block;\n }\n }\n\n strong {\n color: ${(props) => props.theme.colors.primary};\n font-size: 26px;\n margin-right: ${() => rem(10)};\n\n ${(props) =>\n props.theme.layout.isLarge &&\n css`\n display: block;\n margin-bottom: ${() => rem(4)};\n `}\n\n @media screen and (max-width: 820px) {\n display: block;\n margin-bottom: ${() => rem(10)};\n }\n }\n\n /* Filter dropdown */\n & > span {\n display: none;\n max-height: ${() => rem(42)};\n\n @media screen and (min-width: 768px) {\n display: inline-flex;\n }\n }\n`\n\nexport const ChannelPageTaggedProjectList = styled.div`\n /* HACK: TODO: If you are reading this and the 'ProjectList' component\n ** has been migrated to SC, please use it here instead of the generic ul/li.\n */\n ul {\n position: relative;\n display: flex;\n flex-flow: row wrap;\n justify-content: center;\n list-style: none;\n margin: -${() => rem(SPACING * 0.5)};\n margin: ${() => `-${rem(SPACING * 0.5)}`};\n padding: 0;\n\n li {\n box-sizing: border-box;\n display: flex;\n flex: 0 1 auto;\n justify-content: center;\n margin: 0;\n padding: ${() => rem(SPACING / 2)};\n width: ${(props) => (props.theme.layout.isLarge ? '33%' : '25%')};\n\n @media screen and (max-width: 1139px) {\n ${(props) => props.theme.layout.isLarge && `width: 50%`};\n }\n\n @media screen and (max-width: 989px) {\n ${(props) => !props.theme.layout.isLarge && `width: 33%`};\n }\n\n @media screen and (max-width: 899px) {\n ${(props) => props.theme.layout.isLarge && `width: 100%`};\n }\n\n @media screen and (max-width: 767px) {\n width: 50%;\n }\n\n @media screen and (max-width: 498px) {\n width: 100%;\n }\n }\n }\n`\n\nexport const ChannelPageTaggedProjectsNoResults = styled.div`\n text-align: center;\n`\n\nexport const ChannelPageTaggedProjectsNoResultsText = styled.div`\n margin-top: ${() => rem(24)};\n`\n\nexport const ChannelPageTaggedProjectsResetFilters = styled(SecondaryLink)`\n align-items: center;\n display: inline-flex;\n height: ${() => rem(50)};\n\n > div:first-child {\n color: ${COLORS.PRIMARY_GREY_500};\n margin-right: ${() => rem(5)};\n transform: rotate(-180deg);\n transition: transform 200ms ease-out;\n }\n\n &:hover {\n > div:first-child {\n transition: transform 400ms ease-in;\n transform: rotate(180deg);\n }\n }\n`\n\nexport const ChannelPageUserCard = styled.div`\n /* NOTE: Reset image styling applied in the main css */\n img {\n margin: 0;\n }\n`\n\nexport const ChannelPageUserCardLabel = styled.div`\n align-items: center;\n display: flex;\n justify-content: center;\n`\n\nexport const ChannelPageUserCardName = styled(Title1)`\n margin: 0 ${() => rem(14)};\n max-width: ${() => rem(150)};\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover {\n color: ${(props) => props.theme.colors.primary};\n }\n`\n\nexport const ChannelPageUserCardProfileLink = styled.a`\n align-items: center;\n display: flex;\n justify-content: center;\n`\n\n/**\n * CHANNEL LIST\n */\n\nexport const ChannelHeader = styled.div`\n background-color: ${COLORS.PRIMARY_BLUE_500};\n margin-top: -20px;\n padding: 35px 0 60px;\n transform-origin: top left;\n transform: skew(0, -5deg);\n\n @media screen and (min-width: 768px) {\n padding: 7% 0 0 0;\n }\n`\n\nexport const ChannelContainer = styled.div`\n transform: skew(0, 5deg);\n color: ${COLORS.PRIMARY_GREY_000};\n max-width: 1080px;\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin: 0 auto;\n\n @media (max-width: 1155px) {\n padding: 0 30px;\n }\n\n @media screen and (max-width: 767px) {\n flex-direction: column;\n margin-top: 30px;\n padding-bottom: 0;\n }\n`\n\nexport const ChannelTitle = styled(Title1)`\n color: ${COLORS.PRIMARY_GREY_000};\n font-family: ${FONTS.EMPHASIS_FONT};\n font-size: 50px;\n font-weight: 900;\n font-style: italic;\n line-height: 1.1;\n margin-bottom: 10px;\n\n @media screen and (min-width: 768px) {\n font-size: 80px;\n min-width: 445px;\n }\n`\n\nexport const ChannelSubtitle = styled(RegularText)`\n color: ${COLORS.PRIMARY_GREY_000};\n font-size: 18px;\n font-weight: 500;\n max-width: 615px;\n`\n\nexport const ChannelWrapper = styled.div`\n max-width: 1200px;\n margin: 0 auto;\n`\n\nexport const ChannelList = styled.ul`\n display: flex;\n margin-top: -60px;\n padding: 0;\n list-style: none;\n width: 100%;\n flex-wrap: wrap;\n justify-content: center;\n\n @media (min-width: 768px) {\n margin-top: 57px;\n }\n`\n\nexport const ChannelItem = styled.li`\n padding: 15px 15px 55px 15px;\n\n @media (max-width: 500px) {\n padding-bottom: 12px;\n padding-top: 12px;\n }\n`\n\nexport const ChannelCTAWrapper = styled.div`\n display: flex;\n justify-content: center;\n margin-bottom: 70px;\n\n @media (max-width: 500px) {\n margin-top: 25px;\n padding: 0 25px;\n margin-bottom: 40px;\n\n > span {\n width: 100%;\n max-width: 320px;\n }\n }\n`\n\nexport const ChannelTvBoxWrapper = styled.li`\n max-width: 1015px;\n min-height: 232px;\n max-height: 232px;\n width: 100%;\n background-color: ${COLORS.PRIMARY_BLUE_200};\n margin-bottom: 60px;\n margin-top: 50px;\n\n @media (max-width: 800px) {\n margin-top: 25px;\n margin-bottom: 30px;\n }\n`\n\nexport const ChannelTvBoxContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n`\n\nexport const ChannelTvBoxImgWrapper = styled.div`\n margin: -40px 90px 0 90px;\n\n @media (max-width: 800px) {\n display: none;\n }\n`\n\nexport const ChannelTvBoxImg = styled.img`\n margin: 0;\n`\n\nexport const ChannelTvBoxContent = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding-right: 90px;\n\n @media (max-width: 800px) {\n padding: 30px;\n margin: 0 auto;\n align-items: center;\n }\n`\n\nexport const ChannelTvBoxTitle = styled(Title5)`\n font-size: 22px;\n margin-bottom: 20px;\n color: ${COLORS.PRIMARY_BLUE_900};\n font-weight: 600;\n\n @media (max-width: 800px) {\n margin-bottom: 16px;\n }\n`\n\nexport const ChannelTvBoxText = styled(RegularText)`\n color: ${COLORS.PRIMARY_BLUE_900};\n font-weight: 300;\n margin-bottom: 30px;\n font-size: 15px;\n\n @media (max-width: 800px) {\n margin-bottom: 25px;\n text-align: center;\n }\n`\n\nexport const ChannelTvBoxCTAWrapper = styled.div`\n @media (max-width: 800px) {\n width: 100%;\n max-width: 300px;\n }\n`\n\nexport const ChannelTvBoxCTA = styled(CallToAction)`\n width: 241px;\n\n @media (max-width: 800px) {\n width: 100%;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { getResourceUrl, getResourceWithLanguage } from '$models/resources'\n\nimport { editorialContentShape } from '../../prop-types'\n\nimport SponsorshipTracker from '$components/SponsorshipTracker/SponsorshipTracker'\nimport ThemedCard from './ThemedCard'\n\nimport * as S from '../../styles'\n\nconst EMPTY_EDITORIAL_CONTENT = []\nconst EMPTY_THEME = {}\n\nconst getProperties = (content) => {\n const ctaLabel = getResourceWithLanguage(content.cta_label)\n const image = getResourceUrl(content.image)\n const text = getResourceWithLanguage(content.description)\n const title = getResourceWithLanguage(content.name)\n\n let videoHtml\n if (content.video) {\n videoHtml = ``\n }\n\n return {\n ctaLabel,\n id: content.id,\n image,\n text,\n title,\n url: content.url,\n videoHtml,\n }\n}\n\nconst EditorialContent = ({\n channelSlug = 'channel',\n editorialContent = EMPTY_EDITORIAL_CONTENT,\n partnerOwnerId,\n partnerSlug,\n theme = EMPTY_THEME,\n}) => {\n if (!editorialContent || editorialContent.length < 1) {\n return null\n }\n\n if (editorialContent.length === 1) {\n const { ctaLabel, image, text, title, url: ctaLink, videoHtml } = getProperties(editorialContent[0])\n\n return (\n \n \n \n )\n }\n\n const nodes = editorialContent.map((content, index) => {\n const { ctaLabel, id, image, text, title, url: ctaLink, videoHtml } = getProperties(content)\n\n return (\n \n \n \n )\n })\n\n return (\n \n {nodes}\n \n )\n}\n\nEditorialContent.propTypes = {\n channelSlug: PropTypes.string,\n editorialContent: PropTypes.arrayOf(editorialContentShape),\n partnerOwnerId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n partnerSlug: PropTypes.string,\n theme: PropTypes.shape({}),\n}\n\nexport default EditorialContent\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { DropdownFilter, LoadMoreButton, Icon } from '@ulule/owl-kit-components'\n\nimport { projectShape } from '$utils/prop-types'\n\nimport ProjectList from '$components/ProjectsList/ProjectsList'\nimport SortingBar from '$features/discover/components/sortingbar'\nimport { withProjectResults, DEFAULT_LIMIT } from '$hocs/ProjectSearchResults'\n\nimport * as S from '../../styles'\n\nconst CURRENCY_RATES = window.CURRENCIES && { ...window.CURRENCIES.RATES }\nconst { noResults: NO_RESULTS_IMAGE, remindMe: REMIND_ME_IMAGE } = { ...window.CHANNEL_PAGE_TAGGED_PROJECTS_ASSETS }\nconst EMPTY_FILTERS = {}\nconst EMPTY_RESULTS = []\n\nconst TaggedProjectList = ({\n channelName,\n currentFilters = EMPTY_FILTERS,\n currentCurrency,\n currentLanguage,\n currentSorting = null,\n errorFetchingMore = false,\n filters = [],\n isFetching = true,\n isFetchingMore = false,\n loadMoreProjects,\n moreProjectsToFetch = false,\n noProjectWithInitialParams = false,\n projectCount = 0,\n results = EMPTY_RESULTS,\n sorting,\n updateFilter,\n updateSorting,\n userIsAuthenticated = false,\n}) => {\n return noProjectWithInitialParams ? null : (\n \n \n updateSorting({ value })}\n withBigTitle\n />\n {\n updateFilter(filters[0].name, event.target.value)\n }}\n options={filters[0].options}\n useDefault\n value={currentFilters.statuses[0]}\n />\n \n\n {!projectCount && !isFetching ? (\n \n
\n \n {tc('[strong: No results]. We invite you to change your search criteria.', { strong: })}\n \n updateFilter('statuses', 'all')}>\n \n {t('Reinitialize filters')}\n \n \n ) : (\n \n \n \n )}\n\n {moreProjectsToFetch && (\n \n \n \n )}\n \n )\n}\n\nTaggedProjectList.propTypes = {\n channelName: PropTypes.string.isRequired,\n currentFilters: PropTypes.objectOf(PropTypes.array),\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n currentSorting: PropTypes.string,\n errorFetchingMore: PropTypes.bool,\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({})),\n position: PropTypes.number,\n }),\n ).isRequired,\n isFetching: PropTypes.bool,\n isFetchingMore: PropTypes.bool,\n loadMoreProjects: PropTypes.func.isRequired,\n moreProjectsToFetch: PropTypes.bool,\n noProjectWithInitialParams: PropTypes.bool,\n projectCount: PropTypes.number,\n results: PropTypes.arrayOf(projectShape),\n sorting: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n ).isRequired,\n updateFilter: PropTypes.func.isRequired,\n updateSorting: PropTypes.func.isRequired,\n userIsAuthenticated: PropTypes.bool,\n}\n\nexport default withProjectResults(TaggedProjectList)\n","import React from 'react'\nimport { styled } from 'next-yak'\nimport { PropTypes } from 'prop-types'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\n//! Button glyphs\nconst InactiveHeart = styled(plume.glyphs.stroke.Heart)`\n position: relative;\n top: 1px;\n`\nconst ActiveHeart = styled(plume.glyphs.fill.Heart)`\n position: relative;\n top: 1px;\n`\nconst Label = styled.span`\n margin-right: 2px;\n`\n\nconst ChannelSubButton = ({ isActive, onClick }) => {\n const subscribe = t('Subscribe')\n const unsubscribe = t('Unsubscribe')\n const subscribed = t('Subscribed')\n\n return (\n \n \n \n >\n ),\n inactiveHover: (\n <>\n \n \n >\n ),\n active: (\n <>\n \n \n >\n ),\n activeHover: <>{unsubscribe}>,\n }}\n />\n )\n}\nChannelSubButton.propTypes = {\n isActive: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n}\nexport default ChannelSubButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { LoadMoreButton } from '@ulule/owl-kit-components'\n\nimport { listPartnerProjects } from '$redux/actions/partner'\nimport { projectShape, userShape } from '$utils/prop-types'\n\nimport { editorialContentShape } from '../../prop-types'\n\nimport BigProjectCard from '$components/BigProjectCard/BigProjectCard'\nimport EditorialContent from '../components/EditorialContent'\nimport ProjectList from '$components/ProjectsList/ProjectsList'\nimport SponsorshipTracker from '$components/SponsorshipTracker/SponsorshipTracker'\nimport TaggedProjectList from '../components/TaggedProjectList'\n\nimport ChannelSubButton from '$components/ChannelSubButton'\n\nimport * as S from '../../styles'\n\nconst CURRENCY_RATES = window.CURRENCIES && { ...window.CURRENCIES.RATES }\nconst { remindMe: REMIND_ME_IMAGE } = { ...window.CHANNEL_PAGE_TAGGED_PROJECTS_ASSETS }\nconst URLS = { ...window.UFE.urls }\nconst EMPTY_EDITORIAL_CONTENT = []\nconst EMPTY_SPONSORED_PROJECTS = []\nconst EMPTY_THEME = {}\nconst NOOP = () => {}\n\nconst Partner = ({\n channelDescription = null,\n channelName,\n channelOwnerProfileURL,\n channelSlug,\n ctaLabel = null,\n ctaUrl = null,\n currentCurrency,\n currentLanguage,\n currentUser,\n editorialContent = EMPTY_EDITORIAL_CONTENT,\n featuredProject = null,\n initialSearchSettings,\n isSelectionFirst,\n listProjects = NOOP,\n meta = null,\n partnerLogo,\n partnerName,\n partnerOwnerId,\n partnerSlug,\n sponsoredProjects = EMPTY_SPONSORED_PROJECTS,\n sponsoredProjectsAreLoading = true,\n taggedProjectsData,\n isSubscribed,\n handleSubscription,\n theme = EMPTY_THEME,\n}) => {\n React.useEffect(() => {\n listProjects()\n }, [])\n\n const taggedProjectsNode = (\n \n \n \n )\n\n const sponsorProjectNode = (\n \n \n {tc('[em: %(channelName)s] prizewinners', {\n em: ,\n channelName,\n })}\n \n\n \n \n \n\n {meta && meta.next && (\n \n listProjects(meta.next)}\n translations={{\n initialLabel: t('More projects'),\n errorLabel: t('Retry'),\n }}\n />\n \n )}\n \n )\n\n const hasSponsorProjects = sponsoredProjectsAreLoading || (sponsoredProjects && sponsoredProjects.length > 0)\n\n const taggedProjectsOnFeaturePosition =\n !featuredProject && taggedProjectsData && (!isSelectionFirst || (isSelectionFirst && !hasSponsorProjects))\n const taggedProjectsOnFirstPosition =\n taggedProjectsData &&\n ((!isSelectionFirst && featuredProject) ||\n (isSelectionFirst && ((!featuredProject && hasSponsorProjects) || (featuredProject && !hasSponsorProjects))))\n const taggedrojectsOnLastPosition = isSelectionFirst && featuredProject && hasSponsorProjects && taggedProjectsData\n\n const sponsorProjectsOnFeaturePosition = isSelectionFirst && !featuredProject && hasSponsorProjects\n const sponsorProjectsOnFirstPosition = isSelectionFirst && featuredProject && hasSponsorProjects\n const sponsorProjectsOnLastPosition = !isSelectionFirst && hasSponsorProjects\n\n const dataUTMPageContext = { isFeaturedProject: true, type: 'channel', value: channelName }\n\n return (\n <>\n \n \n handleSubscription()} />\n \n \n \n {featuredProject && (\n \n )}\n {taggedProjectsOnFeaturePosition && taggedProjectsNode}\n {sponsorProjectsOnFeaturePosition && sponsorProjectNode}\n \n\n \n \n \n {t('With the support of')}\n \n \n \n \n \n {channelDescription && (\n \n )}\n {ctaUrl && (\n \n \n {ctaLabel || t('Learn more')}\n \n \n )}\n \n \n \n \n\n {taggedProjectsOnFirstPosition && taggedProjectsNode}\n {sponsorProjectsOnFirstPosition && sponsorProjectNode}\n \n\n \n \n\n {taggedrojectsOnLastPosition && taggedProjectsNode}\n {sponsorProjectsOnLastPosition && sponsorProjectNode}\n \n >\n )\n}\n\nPartner.propTypes = {\n channelDescription: PropTypes.string,\n channelName: PropTypes.string.isRequired,\n channelOwnerProfileURL: PropTypes.string.isRequired,\n channelSlug: PropTypes.string.isRequired,\n ctaLabel: PropTypes.string,\n ctaUrl: PropTypes.string,\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n currentUser: userShape.isRequired,\n editorialContent: PropTypes.arrayOf(editorialContentShape),\n featuredProject: projectShape,\n initialSearchSettings: PropTypes.shape({\n taggedProjects: PropTypes.shape({\n filters: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))),\n sorting: PropTypes.string,\n }),\n }).isRequired,\n listProjects: PropTypes.func,\n meta: PropTypes.shape({\n limit: PropTypes.number,\n next: PropTypes.string,\n offset: PropTypes.number,\n total_count: PropTypes.number,\n }),\n partnerLogo: PropTypes.string.isRequired,\n partnerName: PropTypes.string.isRequired,\n partnerOwnerId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n partnerSlug: PropTypes.string.isRequired,\n sponsoredProjects: PropTypes.arrayOf(projectShape),\n sponsoredProjectsAreLoading: PropTypes.bool,\n taggedProjectsData: PropTypes.shape({\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({})),\n position: PropTypes.number,\n }),\n ).isRequired,\n projects: PropTypes.arrayOf(PropTypes.number),\n sorting: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.string,\n }),\n ).isRequired,\n }).isRequired,\n isSubscribed: PropTypes.bool.isRequired,\n handleSubscription: PropTypes.func.isRequired,\n theme: PropTypes.shape({}),\n}\n\nconst mapStateToProps = (state) => ({\n meta: state.partners.meta,\n sponsoredProjects: state.partners.list,\n sponsoredProjectsAreLoading: state.partners.isLoading,\n})\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n listProjects: (next = null) => {\n const { currentUser, partnerSlug } = ownProps\n const withAccessToken = currentUser && currentUser.is_authenticated\n const extraFields = withAccessToken ? 'user_role' : null\n const isWinner = true\n const status = 'online'\n\n dispatch(listPartnerProjects({ extraFields, next, partnerSlug, withAccessToken, isWinner, status }))\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Partner)\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { LoadMoreButton } from '@ulule/owl-kit-components'\n\nimport { projectShape } from '$utils/prop-types'\n\nimport ProjectList from '$components/ProjectsList/ProjectsList'\nimport { withProjectResults } from '$hocs/ProjectSearchResults'\n\nimport * as S from '../../styles'\n\nconst CURRENCY_RATES = window.CURRENCIES && { ...window.CURRENCIES.RATES }\nconst { remindMe: REMIND_ME_IMAGE } = { ...window.CHANNEL_PAGE_TAGGED_PROJECTS_ASSETS }\nconst EMPTY_RESULTS = []\nconst NOOP = () => {}\n\nconst CuratedProjectList = ({\n channelName,\n currentCurrency,\n currentLanguage,\n isFetching = true,\n limit = 9,\n loadMoreProjects = NOOP,\n moreProjectsToFetch = false,\n results = EMPTY_RESULTS,\n userIsAuthenticated = false\n}) => {\n return !isFetching && !results.length ? null : (\n \n \n {tc('The [em: %(channelName)s] selection', {\n em: ,\n channelName\n })}\n \n\n \n \n \n\n {moreProjectsToFetch && (\n \n \n \n )}\n \n )\n}\n\nCuratedProjectList.propTypes = {\n channelName: PropTypes.string.isRequired,\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n isFetching: PropTypes.bool,\n limit: PropTypes.number,\n loadMoreProjects: PropTypes.func,\n moreProjectsToFetch: PropTypes.bool,\n results: PropTypes.arrayOf(projectShape),\n userIsAuthenticated: PropTypes.bool\n}\n\nexport default withProjectResults(CuratedProjectList)\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t } from '@owl-nest/localize'\nimport { Avatar, Tag } from '@ulule/owl-kit-components'\n\nimport { getLabel } from '$models/profile'\nimport { getResourceUrl } from '$models/resources'\nimport { getFullName } from '$models/user'\nimport { projectShape, userShape } from '$utils/prop-types'\n\nimport { editorialContentShape } from '../../prop-types'\n\nimport BigProjectCard from '$components/BigProjectCard/BigProjectCard'\nimport CuratedProjectList from '../components/CuratedProjectList'\nimport EditorialContent from '../components/EditorialContent'\nimport TaggedProjectList from '../components/TaggedProjectList'\n\nimport ChannelSubButton from '$components/ChannelSubButton'\n\nimport * as S from '../../styles'\n\nconst CURRENCY_RATES = window.CURRENCIES && { ...window.CURRENCIES.RATES }\nconst { remindMe: REMIND_ME_IMAGE } = { ...window.CHANNEL_PAGE_TAGGED_PROJECTS_ASSETS }\nconst URLS = { ...window.UFE.urls }\nconst EMPTY_EDITORIAL_CONTENT = []\nconst EMPTY_THEME = {}\n\nconst UserChannel = ({\n channelDescription = null,\n channelName,\n channelOwner,\n ctaLabel = null,\n ctaUrl = null,\n currentCurrency,\n currentLanguage,\n currentUser,\n editorialContent = EMPTY_EDITORIAL_CONTENT,\n featuredProject,\n initialSearchSettings,\n taggedProjectsData = null,\n isSubscribed,\n handleSubscription,\n theme = EMPTY_THEME,\n}) => {\n const label = channelOwner && getLabel(channelOwner)\n const { absolute_url: channelOwnerProfileURL } = channelOwner\n const dataUTMPageContext = { isFeaturedProject: true, type: 'channel', value: channelName }\n\n return (\n <>\n \n \n handleSubscription()} />\n \n \n {featuredProject && (\n \n \n \n )}\n\n \n \n \n {t('Curated by')}\n \n \n \n \n {channelOwner && getFullName(channelOwner, true)}\n \n \n {label && {label.name}}\n \n {channelDescription && (\n \n )}\n {ctaUrl && (\n \n {ctaLabel || t('Learn more')}\n \n )}\n \n \n \n \n\n \n \n\n {/* TODO: Newsletter section */}\n\n \n \n \n\n \n {taggedProjectsData && (\n \n \n \n )}\n \n >\n )\n}\n\nUserChannel.propTypes = {\n channelDescription: PropTypes.string,\n channelName: PropTypes.string.isRequired,\n channelOwner: userShape.isRequired,\n ctaLabel: PropTypes.string,\n ctaUrl: PropTypes.string,\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n currentUser: userShape.isRequired,\n editorialContent: PropTypes.arrayOf(editorialContentShape),\n featuredProject: projectShape.isRequired,\n initialSearchSettings: PropTypes.shape({\n curatedProjects: PropTypes.shape({\n filters: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))),\n sorting: PropTypes.string,\n }),\n taggedProjects: PropTypes.shape({\n filters: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))),\n sorting: PropTypes.string,\n }),\n }).isRequired,\n taggedProjectsData: PropTypes.shape({\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({})),\n position: PropTypes.number,\n }),\n ).isRequired,\n projects: PropTypes.arrayOf(PropTypes.number),\n sorting: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.string,\n }),\n ).isRequired,\n }),\n isSubscribed: PropTypes.bool.isRequired,\n handleSubscription: PropTypes.func.isRequired,\n theme: PropTypes.shape({}),\n}\n\nexport default UserChannel\n","import React from 'react'\n\nimport { getCurrentLanguage, getDefaultLanguage } from '$features/init/language'\n\nexport const UserSettingsContext = React.createContext({\n currentCountry: window.UFE.country,\n currentCurrency: window.CURRENCIES.CURRENT,\n currentLanguage: getCurrentLanguage() || getDefaultLanguage(),\n currentUser: window.UFE.user\n})\n","import React from 'react'\nimport { PropTypes } from 'prop-types'\nimport { styled } from 'next-yak'\n\nimport { t, tc } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nconst ModalChannelNoAuth = ({ open, onClose }) => (\n }\n svgScale={0.8}\n >\n {t('Subscribe to this channel')}\n \n {tc(\n \"[login: Login] to your Ulule account to follow this channel.[br] You don't have an account yet ? [br][signup: Signup].\",\n {\n login: ,\n signup: ,\n br:
,\n },\n )}\n \n \n)\n\nModalChannelNoAuth.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n\nconst ModalWithIcon = styled(plume.ModalWithIcon)`\n ${plume.ModalIconWrapper} {\n background-color: ${plume.COLORS.PRIMARY_BLUE_500};\n }\n`\n\nconst Title = styled(plume.styles.heading.XXS)`\n margin-bottom: 10px;\n margin-top: 10px;\n text-align: center;\n`\n\nconst Text = styled(plume.styles.copy.S.regular)`\n display: block;\n text-align: center;\n`\n\nexport default ModalChannelNoAuth\n","import React from 'react'\nimport { PropTypes } from 'prop-types'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nconst ModalChannelSuccess = ({ open, onClose }) => (\n }\n svgScale={0.825}\n buttons={{\n type: 'button',\n props: {\n onClick: onClose,\n children: t('Ok, thanks'),\n },\n }}\n >\n {t(\"You're subscribed!\")}\n {t('You will receive by e-mail once a week the new projects added to this channel.')}\n \n)\nModalChannelSuccess.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n}\n\nconst ModalWithIcon = styled(plume.ModalWithIcon)`\n ${plume.ModalIconWrapper} {\n background-color: ${plume.COLORS.PRIMARY_BLUE_500};\n }\n`\n\nconst Title = styled(plume.styles.heading.XXS)`\n margin-bottom: 10px;\n margin-top: 10px;\n text-align: center;\n`\nconst Text = styled(plume.styles.copy.S.regular)`\n display: block;\n text-align: center;\n`\n\nexport default ModalChannelSuccess\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { YakThemeProvider } from 'next-yak'\n\nimport { COLORS } from '@ulule/owl-kit-components'\n\nimport { getResourceUrl } from '$models/resources'\nimport { projectShape, userShape } from '$utils/prop-types'\n\nimport { editorialContentShape } from '../prop-types'\n\nimport PartnerChannelView from './views/Partner'\nimport UserChannelView from './views/User'\n\nimport * as S from '../styles'\n\nimport { UserSettingsContext } from '../context'\n\nimport { subscribeChannel, openNoAuth, closeModals } from '$redux/actions/channels'\n\nimport ModalChannelNoAuth from '../components/ModalChannelNoAuth'\nimport ModalChannelSuccess from '../components/ModalChannelSuccess'\n\nconst SEARCH_DATA = { ...window.CHANNEL_PAGE_SEARCH_DATA }\nconst EMPTY_CHANNEL = {}\n\nconst ChannelPage = ({\n channel = EMPTY_CHANNEL,\n showFirstTime,\n showNoAuth,\n subscribeChannel,\n openNoAuth,\n closeModals,\n}) => {\n const {\n accent_color: accentColor,\n background,\n bg_color: bgColor,\n cta_description: ctaLabel,\n cta_url: ctaUrl,\n description,\n featured_project: featuredProject,\n id,\n is_subscribed: isSubscribed,\n links,\n name,\n partner: channelPartner,\n selection_first: isSelectionFirst,\n slug,\n title,\n user: channelOwner,\n } = channel\n\n const initialSearchSettings = {\n partner: {\n taggedProjects: {\n filters: {\n channels: [id],\n statuses: ['all'],\n },\n ignoreQueryParams: false,\n sorting: 'new',\n },\n curatedProjects: {\n filters: {\n channels: [id],\n statuses: ['all'],\n },\n ignoreQueryParams: true,\n sorting: 'position',\n },\n },\n user: {\n taggedProjects: {\n filters: {\n channels: [id],\n statuses: ['all'],\n },\n ignoreQueryParams: false,\n sorting: 'popular',\n },\n curatedProjects: {\n filters: {\n channels: [id],\n statuses: ['all'],\n },\n ignoreQueryParams: true,\n sorting: 'position',\n },\n },\n }\n\n const theme = {\n colors: {\n accent: accentColor,\n primary: bgColor || COLORS.PRIMARY_BLUE_500,\n },\n layout: {\n isLarge: !featuredProject,\n },\n }\n\n const titleImage = getResourceUrl(title)\n\n const context = React.useContext(UserSettingsContext)\n\n const isAuth = context.currentUser && context.currentUser.is_authenticated\n\n const handleSubscription = isAuth ? () => subscribeChannel(id, isSubscribed) : () => openNoAuth()\n\n return (\n \n <>\n closeModals()} />\n closeModals()} />\n \n \n \n {titleImage ? (\n \n ) : (\n {name}\n )}\n \n \n {channelPartner ? (\n \n ) : (\n \n )}\n >\n \n )\n}\n\nChannelPage.propTypes = {\n channel: PropTypes.shape({\n accent_color: PropTypes.string,\n background: PropTypes.shape({\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string,\n width: PropTypes.number,\n }),\n }),\n }),\n bg_color: PropTypes.string,\n cta_description: PropTypes.string,\n description: PropTypes.string,\n featured_project: projectShape,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n is_subscribed: PropTypes.boolean,\n links: PropTypes.arrayOf(editorialContentShape),\n name: PropTypes.string.isRequired,\n partner: PropTypes.shape({\n name: PropTypes.string,\n }),\n title: PropTypes.shape({\n value: PropTypes.string.isRequired,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.string,\n }).isRequired,\n }),\n }),\n user: userShape.isRequired,\n }),\n}\n\nconst mapStateToProps = (state) => ({\n channel: state.channels.detail.channel,\n error: state.channels.detail.error,\n isLoading: state.channels.detail.isLoading,\n showFirstTime: state.channels.detail.showFirstTime,\n showNoAuth: state.channels.detail.showNoAuth,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n subscribeChannel(id, isSubscribed) {\n dispatch(subscribeChannel(id, isSubscribed, true))\n },\n openNoAuth() {\n dispatch(openNoAuth())\n },\n closeModals() {\n dispatch(closeModals())\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ChannelPage)\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t } from '@owl-nest/localize'\n\nimport * as S from '../styles'\n\nexport const TvBox = ({ channelTvImages }) => (\n \n \n \n \n \n \n {t('A topic in mind?')}\n \n {t('Impactful and innovating projects selected for you, by you! Got a topic in mind?')}\n \n \n {t('Suggest a topic')}\n \n \n \n \n)\n\nTvBox.proptypes = {\n channelTvImages: PropTypes.shape({\n '1x': PropTypes.string.isRequired,\n '2x': PropTypes.string.isRequired,\n '3x': PropTypes.string.isRequired,\n }),\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t } from '@owl-nest/localize'\n\nimport { ChannelCard } from '@ulule/owl-kit-components/next'\nimport ChannelSubButton from '$components/ChannelSubButton'\n\nimport { getFullName } from '$models/user'\nimport { getResourceUrl, getResourceWithLanguage } from '$models/resources'\nimport { userShape } from '$utils/prop-types'\n\nimport { TvBox } from './TvBox'\nimport * as S from '../styles'\n\nconst EMPTY_CHANNELS = []\n\nexport const ChannelList = ({ channels = EMPTY_CHANNELS, lang, channelTvImages, subscribeChannel, openNoAuth }) => {\n const channelsLength = channels && channels.length\n const isAuthenticated = window.UFE.user.is_authenticated\n\n return (\n \n {channels &&\n channels.map((channel, index) => {\n const isPartner = channel && channel.partner && channel.partner.id\n const user = channel && channel.user\n const description = isPartner\n ? t('With the support of %(name)s', { name: getFullName(user, false) })\n : t('Curated by %(name)s', { name: getFullName(user, true) })\n\n const isActive = Boolean(channel?.user && channel?.is_subscribed)\n const onClick = () =>\n isAuthenticated\n ? subscribeChannel(channel && channel.id, channel && channel.user && channel.is_subscribed)\n : openNoAuth()\n\n if (channelsLength && channelsLength <= 9 && index + 1 === channelsLength) {\n return (\n \n \n }\n />\n \n\n toto\n \n )\n }\n\n if (channelsLength > 9 && index + 1 === 9) {\n return (\n \n \n }\n />\n \n\n toto\n \n )\n }\n\n return (\n \n }\n />\n \n )\n })}\n \n )\n}\n\nChannelList.propTypes = {\n openNoAuth: PropTypes.func.isRequired,\n subscribeChannel: PropTypes.func.isRequired,\n channels: PropTypes.arrayOf(\n PropTypes.shape({\n absolute_url: PropTypes.string,\n background: PropTypes.shape({\n value: PropTypes.string,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string,\n width: PropTypes.number,\n }),\n }),\n }),\n bg_color: PropTypes.string,\n created_at: PropTypes.string,\n cta_background: PropTypes.shape({\n value: PropTypes.string,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string,\n width: PropTypes.number,\n }),\n }),\n }),\n description: PropTypes.shape({\n en: PropTypes.string,\n es: PropTypes.string,\n fr: PropTypes.string,\n it: PropTypes.string,\n nl: PropTypes.string,\n }),\n id: PropTypes.number,\n is_subscribed: PropTypes.bool,\n name: PropTypes.shape({\n en: PropTypes.string,\n es: PropTypes.string,\n fr: PropTypes.string,\n it: PropTypes.string,\n nl: PropTypes.string,\n }),\n position: PropTypes.number,\n slug: PropTypes.string,\n updated_at: PropTypes.string,\n user: userShape,\n }),\n ),\n channelTvImages: PropTypes.shape({\n '1x': PropTypes.string.isRequired,\n '2x': PropTypes.string.isRequired,\n '3x': PropTypes.string.isRequired,\n }).isRequired,\n lang: PropTypes.string.isRequired,\n}\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { t } from '@owl-nest/localize'\nimport { LoadMoreButton } from '@ulule/owl-kit-components'\n\nimport ModalChannelNoAuth from '../components/ModalChannelNoAuth'\nimport ModalChannelSuccess from '../components/ModalChannelSuccess'\n\nimport { getChannels, subscribeChannel, openNoAuth, closeModals } from '$redux/actions/channels'\n\nimport { userShape } from '$utils/prop-types'\n\nimport { ChannelList as Channels } from './List'\nimport * as S from '../styles'\n\nclass ChannelList extends React.Component {\n componentDidMount() {\n const { getChannels, channels, language, country } = this.props\n\n const isAuthenticated = window.UFE.user.is_authenticated\n\n if (!channels) {\n getChannels(language, country, 18, 'is_subscribed', isAuthenticated)\n }\n }\n\n handleLoadMore = () => {\n const { getChannels, meta, language, country } = this.props\n const next = meta && meta.next\n\n const isAuthenticated = window.UFE.user.is_authenticated\n\n getChannels(language, country, 18, 'is_subscribed', isAuthenticated, next)\n }\n\n render() {\n const {\n channels,\n channelTvImages,\n error,\n isLoadingChannels,\n language,\n meta,\n subscribeChannel,\n showFirstTime,\n showNoAuth,\n openNoAuth,\n closeModals,\n } = this.props\n\n return (\n <>\n closeModals()} />\n closeModals()} />\n \n \n {t('Thematic channels')}\n \n {t(\n 'From local to global, from niche edition to upcycled wonders, discover topics that shake, inspire and change our daily routines.',\n )}\n \n \n \n \n {channels && (\n \n )}\n {meta && meta.next && (\n \n \n \n )}\n \n >\n )\n }\n}\n\nChannelList.defaultProps = {\n channels: null,\n error: null,\n isLoadingChannels: false,\n meta: null,\n}\n\nChannelList.propTypes = {\n getChannels: PropTypes.func.isRequired,\n subscribeChannel: PropTypes.func.isRequired,\n showFirstTime: PropTypes.bool.isRequired,\n showNoAuth: PropTypes.bool.isRequired,\n closeModals: PropTypes.func.isRequired,\n openNoAuth: PropTypes.func.isRequired,\n channels: PropTypes.arrayOf(\n PropTypes.shape({\n absolute_url: PropTypes.string,\n background: PropTypes.shape({\n value: PropTypes.string,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string,\n width: PropTypes.number,\n }),\n }),\n }),\n bg_color: PropTypes.string,\n created_at: PropTypes.string,\n cta_background: PropTypes.shape({\n value: PropTypes.string,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string,\n width: PropTypes.number,\n }),\n }),\n }),\n description: PropTypes.shape({\n en: PropTypes.string,\n es: PropTypes.string,\n fr: PropTypes.string,\n it: PropTypes.string,\n nl: PropTypes.string,\n }),\n id: PropTypes.number,\n is_subscribed: PropTypes.bool,\n name: PropTypes.shape({\n en: PropTypes.string,\n es: PropTypes.string,\n fr: PropTypes.string,\n it: PropTypes.string,\n nl: PropTypes.string,\n }),\n position: PropTypes.number,\n slug: PropTypes.string,\n updated_at: PropTypes.string,\n user: userShape,\n }),\n ),\n channelTvImages: PropTypes.shape({\n '1x': PropTypes.string.isRequired,\n '2x': PropTypes.string.isRequired,\n '3x': PropTypes.string.isRequired,\n }).isRequired,\n country: PropTypes.string.isRequired,\n error: PropTypes.bool,\n isLoadingChannels: PropTypes.bool,\n language: PropTypes.string.isRequired,\n meta: PropTypes.shape({\n limit: PropTypes.number,\n next: PropTypes.string,\n offset: PropTypes.number,\n previous: PropTypes.string,\n total_count: PropTypes.number,\n }),\n}\n\nconst mapStateToProps = (state) => ({\n showFirstTime: state.channels.list.showFirstTime,\n showNoAuth: state.channels.list.showNoAuth,\n channels: state.channels.list.channels,\n error: state.channels.list.error,\n isLoadingChannels: state.channels.list.isLoadingChannels,\n meta: state.channels.list.meta,\n})\n\nconst mapDispatchToProps = (dispatch) => ({\n getChannels(language, country, limit, extraFields, isAuthenticated, next) {\n dispatch(getChannels(language, country, limit, extraFields, isAuthenticated, next))\n },\n subscribeChannel(id, isSubscribed) {\n dispatch(subscribeChannel(id, isSubscribed))\n },\n openNoAuth() {\n dispatch(openNoAuth())\n },\n closeModals() {\n dispatch(closeModals())\n },\n})\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ChannelList)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Route, Routes } from 'react-router'\n\nimport config from '$utils/config'\n\nimport ChannelDetail from './detail'\nimport ChannelList from './list'\n\nconfig.set({\n ...window.CHANNEL_LIST_DATA,\n channel: window.CHANNEL_DATA,\n})\n\nconst Router = ({ country, language }) => {\n const channelTvImages = config.get('channelImg')\n\n return (\n \n }\n />\n } />\n \n )\n}\n\nRouter.propTypes = {\n country: PropTypes.string.isRequired,\n language: PropTypes.string.isRequired,\n}\n\nexport default Router\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom/client'\nimport { Provider } from 'react-redux'\nimport { BrowserRouter as Router } from 'react-router'\n\nimport { getCurrentLanguage, getDefaultLanguage } from '$features/init/language'\n\nimport store from './store'\n\nimport ChannelRouter from './Router'\n\nconst Channel = (language, country) => {\n const container = document.querySelector('#js-channels-app')\n\n const root = ReactDOM.createRoot(container)\n root.render(\n \n \n \n \n ,\n )\n}\n\nwindow.addEventListener('js:location:loaded', (event) => {\n const currentLocation = event.detail\n const currentCountryCode =\n currentLocation && currentLocation.country_code ? currentLocation.country_code : window.UFE.defaultCountry\n\n const currentLanguage = getCurrentLanguage() || getDefaultLanguage()\n\n Channel(currentLanguage, currentCountryCode)\n})\n"],"mappings":"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"}