{
  "version": 3,
  "sources": ["../../../../../../internal/esbuild/entrypoints/modern/classic/channels.ts", "sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=bb335fff-1a56-45bd-baf9-4a56082faef5", "../../../../../../internal/esbuild/entrypoints/modern/classic/channels.ts", "../../src/modern/features/channel/index.js", "../../src/modern/features/channel/store.js", "../../src/modern/redux/reducers/channels.js", "../../src/modern/redux/actions/channels.js", "../../src/modern/features/channel/Router.js", "../../src/modern/features/channel/detail/index.js", "../../src/modern/features/channel/prop-types.js", "../../src/modern/features/channel/detail/views/Partner.js", "../../src/modern/components/BigProjectCard/BigProjectCard.js", "../../src/modern/features/channel/detail/components/EditorialContent.js", "../../src/modern/features/channel/detail/components/ThemedCard/index.js", "../../src/modern/features/channel/detail/components/ThemedCard/styles.js", "../../src/modern/features/channel/styles.js", "../../src/modern/features/channel/detail/components/TaggedProjectList.js", "../../src/modern/components/ChannelSubButton.js", "../../src/modern/features/channel/detail/views/User.js", "../../src/modern/features/channel/detail/components/CuratedProjectList.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/list/index.js", "../../src/modern/features/channel/list/List.js", "../../src/modern/features/channel/list/TvBox.js"],
  "sourcesContent": ["\n              import \"_sentry-debug-id-injection-stub\";\n              import * as OriginalModule from \"./internal/esbuild/entrypoints/modern/classic/channels.ts\";\n              export default OriginalModule.default;\n              export * from \"./internal/esbuild/entrypoints/modern/classic/channels.ts\";", ";{try{let e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\"7c35c99b-c323-4c2d-88a9-911d66e5d962\",e._sentryDebugIdIdentifier=\"sentry-dbid-7c35c99b-c323-4c2d-88a9-911d66e5d962\")}catch(e){}};", "import '@owl-nest/polyfill'\nimport '../../../../../src/ulule/static/site/src/modern/features/init/index.js'\nimport '../../../../../src/ulule/static/site/src/modern/features/channel/index.js'\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-dom'\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    <Provider store={store}>\n      <Router basename=\"/channels\">\n        <ChannelRouter country={country} language={language} />\n      </Router>\n    </Provider>\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", "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 { 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 { 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 React from 'react'\nimport PropTypes from 'prop-types'\nimport { Route, Routes } from 'react-router-dom'\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    <Routes>\n      <Route\n        path=\"/\"\n        element={<ChannelList channelTvImages={channelTvImages} country={country} language={language} />}\n      />\n      <Route path=\"/:name\" element={<ChannelDetail />} />\n    </Routes>\n  )\n}\n\nRouter.propTypes = {\n  country: PropTypes.string.isRequired,\n  language: PropTypes.string.isRequired,\n}\n\nexport default Router\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { ThemeProvider } from 'styled-components'\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 }\n\nconst ChannelPage = ({ channel, showFirstTime, showNoAuth, subscribeChannel, openNoAuth, closeModals }) => {\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        sorting: 'new',\n      },\n      curatedProjects: {\n        filters: {\n          channels: [id],\n          statuses: ['all'],\n        },\n        sorting: 'position',\n      },\n    },\n    user: {\n      taggedProjects: {\n        filters: {\n          channels: [id],\n          statuses: ['all'],\n        },\n        sorting: 'popular',\n      },\n      curatedProjects: {\n        filters: {\n          channels: [id],\n          statuses: ['all'],\n        },\n        sorting: 'position',\n      },\n    },\n  }\n\n  const theme = {\n    colors: {\n      accent: accentColor,\n      primary: bgColor || COLORS.PRIMARY_BLUE,\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    <ThemeProvider theme={theme}>\n      <>\n        <ModalChannelNoAuth open={showNoAuth} onClose={() => closeModals()} />\n        <ModalChannelSuccess open={showFirstTime} onClose={() => closeModals()} />\n        <S.ChannelPageHeader>\n          <S.ChannelPageCover background={getResourceUrl(background)} />\n          <S.ChannelPageTitleContainer>\n            {titleImage ? (\n              <S.ChannelPageLogo alt={name} src={titleImage} />\n            ) : (\n              <S.ChannelPageTitle>{name}</S.ChannelPageTitle>\n            )}\n          </S.ChannelPageTitleContainer>\n        </S.ChannelPageHeader>\n        {channelPartner ? (\n          <PartnerChannelView\n            channelDescription={description}\n            channelName={name}\n            channelSlug={slug}\n            channelOwnerProfileURL={channelOwner.absolute_url}\n            ctaLabel={ctaLabel}\n            ctaUrl={ctaUrl}\n            editorialContent={links}\n            featuredProject={featuredProject}\n            initialSearchSettings={initialSearchSettings.partner}\n            partnerLogo={getResourceUrl(channelPartner.logo)}\n            partnerName={channelPartner.name}\n            partnerOwnerId={channelPartner.user_id}\n            partnerSlug={channelPartner.slug}\n            taggedProjectsData={SEARCH_DATA.tagged_projects}\n            isSelectionFirst={isSelectionFirst}\n            isSubscribed={Boolean(isSubscribed)}\n            handleSubscription={handleSubscription}\n            {...context}\n          />\n        ) : (\n          <UserChannelView\n            channelDescription={description}\n            channelName={name}\n            channelOwner={channelOwner}\n            ctaLabel={ctaLabel}\n            ctaUrl={ctaUrl}\n            editorialContent={links}\n            featuredProject={featuredProject}\n            initialSearchSettings={initialSearchSettings.user}\n            taggedProjectsData={SEARCH_DATA.tagged_projects}\n            isSubscribed={Boolean(isSubscribed)}\n            handleSubscription={handleSubscription}\n            {...context}\n          />\n        )}\n      </>\n    </ThemeProvider>\n  )\n}\n\nChannelPage.defaultProps = {\n  channel: {},\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 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'\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 }\n\nconst Partner = ({\n  channelDescription,\n  channelName,\n  channelOwnerProfileURL,\n  channelSlug,\n  ctaLabel,\n  ctaUrl,\n  currentCurrency,\n  currentLanguage,\n  currentUser,\n  editorialContent,\n  featuredProject,\n  initialSearchSettings,\n  isSelectionFirst,\n  listProjects,\n  meta,\n  partnerLogo,\n  partnerName,\n  partnerOwnerId,\n  partnerSlug,\n  sponsoredProjects,\n  sponsoredProjectsAreLoading,\n  taggedProjectsData,\n  isSubscribed,\n  handleSubscription,\n}) => {\n  React.useEffect(() => {\n    listProjects()\n  }, [])\n\n  const taggedProjectsNode = (\n    <S.ChannelPageTaggedProjects>\n      <TaggedProjectList\n        channelName={channelName}\n        currentCurrency={currentCurrency}\n        currentLanguage={currentLanguage}\n        excludeXRatedProjects\n        filters={taggedProjectsData.filters}\n        initialSettings={initialSearchSettings.taggedProjects}\n        sorting={taggedProjectsData.sorting}\n        userIsAuthenticated={currentUser && currentUser.is_authenticated}\n      />\n    </S.ChannelPageTaggedProjects>\n  )\n\n  const sponsorProjectNode = (\n    <S.ChannelPageCuratedProjects>\n      <S.ChannelPageCuratedProjectsTitle>\n        {tc('[em: %(channelName)s] prizewinners', {\n          em: <em />,\n          channelName,\n        })}\n      </S.ChannelPageCuratedProjectsTitle>\n\n      <S.ChannelPageCuratedProjectList>\n        <ProjectList\n          currentCurrency={currentCurrency}\n          currentLanguage={currentLanguage}\n          isAuthenticated={currentUser && currentUser.is_authenticated}\n          modalImg={REMIND_ME_IMAGE}\n          nbPlaceholders={sponsoredProjectsAreLoading ? (meta && meta.limit) || 9 : 0}\n          projects={sponsoredProjects}\n          rates={CURRENCY_RATES}\n        />\n      </S.ChannelPageCuratedProjectList>\n\n      {meta && meta.next && (\n        <S.ChannelPageCuratedProjectsFooter>\n          <LoadMoreButton\n            error={null}\n            loading={false}\n            onClick={() => listProjects(meta.next)}\n            translations={{\n              initialLabel: t('More projects'),\n              errorLabel: t('Retry'),\n            }}\n          />\n        </S.ChannelPageCuratedProjectsFooter>\n      )}\n    </S.ChannelPageCuratedProjects>\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      <S.ChannelPageGutteredSection raised>\n        <S.ChannelSubButton>\n          <ChannelSubButton isActive={isSubscribed} onClick={() => handleSubscription()} />\n        </S.ChannelSubButton>\n        <S.ChannelPageFeaturedSection>\n          <S.ChannelPageFeaturedContent>\n            {featuredProject && (\n              <BigProjectCard\n                dataUTMPageContext={dataUTMPageContext}\n                isAuthenticated={currentUser && currentUser.is_authenticated}\n                language={currentLanguage}\n                modalImg={REMIND_ME_IMAGE}\n                project={{ ...featuredProject, owner: { screenname: t('Highlights') } }}\n                rates={CURRENCY_RATES}\n                targetCurrency={currentCurrency}\n                urls={URLS}\n              />\n            )}\n            {taggedProjectsOnFeaturePosition && taggedProjectsNode}\n            {sponsorProjectsOnFeaturePosition && sponsorProjectNode}\n          </S.ChannelPageFeaturedContent>\n\n          <S.ChannelPageRightAside>\n            <S.ChannelPageOwnerCard>\n              <S.ChannelPagePartnerCard>\n                <S.ChannelPageOwnerCardTitle>{t('With the support of')}</S.ChannelPageOwnerCardTitle>\n                <SponsorshipTracker\n                  clickEventConfig={{ enable: false }}\n                  position={`${channelSlug}-by-${partnerSlug}-description-logo`}\n                  userId={partnerOwnerId}\n                >\n                  <a href={channelOwnerProfileURL}>\n                    <S.ChannelPageOwnerCardImage alt={partnerName} src={partnerLogo} />\n                  </a>\n                </SponsorshipTracker>\n                {channelDescription && (\n                  <S.ChannelPageOwnerCardDescription dangerouslySetInnerHTML={{ __html: channelDescription }} />\n                )}\n                {ctaUrl && (\n                  <SponsorshipTracker\n                    impressionEventConfig={{ enable: false }}\n                    position={`${channelSlug}-by-${partnerSlug}-description-cta`}\n                    userId={partnerOwnerId}\n                  >\n                    <a href={ctaUrl}>\n                      <S.ChannelPagePartnerCardCTA>{ctaLabel || t('Learn more')}</S.ChannelPagePartnerCardCTA>\n                    </a>\n                  </SponsorshipTracker>\n                )}\n              </S.ChannelPagePartnerCard>\n            </S.ChannelPageOwnerCard>\n          </S.ChannelPageRightAside>\n        </S.ChannelPageFeaturedSection>\n\n        {taggedProjectsOnFirstPosition && taggedProjectsNode}\n        {sponsorProjectsOnFirstPosition && sponsorProjectNode}\n      </S.ChannelPageGutteredSection>\n\n      <S.ChannelPageFullWidthSection>\n        <EditorialContent\n          channelSlug={channelSlug}\n          editorialContent={editorialContent}\n          partnerOwnerId={partnerOwnerId}\n          partnerSlug={partnerSlug}\n        />\n\n        {taggedrojectsOnLastPosition && taggedProjectsNode}\n        {sponsorProjectsOnLastPosition && sponsorProjectNode}\n      </S.ChannelPageFullWidthSection>\n    </>\n  )\n}\n\nPartner.defaultProps = {\n  channelDescription: null,\n  ctaLabel: null,\n  ctaUrl: null,\n  editorialContent: [],\n  featuredProject: null,\n  listProjects: () => {},\n  meta: null,\n  sponsoredProjects: [],\n  sponsoredProjectsAreLoading: true,\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}\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 { text } from '@owl-nest/utils'\nimport * as duvet from '@ulule/duvet'\nimport { t, tn } from '@ulule/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 '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      <React.Fragment>\n        <duvet.CardTypeSelector\n          cardType=\"classic\"\n          data-page-identifier={dataUTMPageContext && dataUTMPageContext.value}\n          data-page-type={dataUTMPageContext && dataUTMPageContext.type}\n          data-project-id={project ? project.id : undefined}\n          data-selected-project={\n            (dataUTMPageContext && dataUTMPageContext.isFeaturedProject) || (project && project.is_featured)\n              ? 'true'\n              : undefined\n          }\n          size=\"large\"\n          action={action}\n          imageSize=\"large\"\n          overrideIsProjectOnline={isOnline}\n          project={{\n            ...project,\n            is_featured: false, // We do not want this specific card to be highlighted.\n            main_image: { [project.lang]: project.main_image },\n            video: { [project.lang]: project.video },\n          }}\n          rates={this.props.rates}\n          targetCurrency={this.props.targetCurrency}\n          projectTranslation={{\n            backerCount: tn(\n              '%s contribution',\n              '%s contributions',\n              (project && project.supporters_count) || 0,\n              text.numberToLocaleString(project.orders_count || project.supporters_count),\n            ),\n            comingSoon: getComingSoonLabel(project, Boolean(window.UFE.user.is_staff)),\n            extraTime: t('Extension'),\n            finished: textFinishProject,\n            highlights: t('Highlights'),\n            progressInfo: t('%(percent)s reached', {\n              percent: `${text.numberToLocaleString(progress)}%`,\n            }),\n            shortCountdown: countdownText,\n            status: this.getStatus(),\n          }}\n          withRibbon={false}\n        />\n        {this.props.isAuthenticated && (\n          <ModalProjectRemindMe\n            isOpen={this.state.isOpen}\n            onClose={this.handleCloseModal}\n            modalImg={this.props.modalImg}\n          />\n        )}\n        {!this.props.isAuthenticated && (\n          <ModalProjectNoAuth\n            isOpen={this.state.isOpen}\n            urls={this.props.urls}\n            isAuthenticated={this.props.isAuthenticated}\n            handleClick={this.handleModal}\n            onClose={this.handleCloseModal}\n            modalImg={this.props.modalImg}\n          />\n        )}\n      </React.Fragment>\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 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 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 = `<iframe allow=\"accelerometer; autoplay; encrypted-media;\" src=\"${content.video}?autoplay=1\" frameborder=\"0\" allowfullscreen></iframe>`\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 = ({ channelSlug, editorialContent, partnerOwnerId, partnerSlug }) => {\n  if (!editorialContent || editorialContent.length < 1) return null\n\n  if (editorialContent.length === 1) {\n    const { ctaLabel, image, text, title, url: ctaLink, videoHtml } = getProperties(editorialContent[0])\n\n    return (\n      <S.ChannelPageEditorialContent>\n        <ThemedCard\n          ctaLabel={ctaLabel}\n          ctaLink={ctaLink}\n          image={image}\n          text={text}\n          title={title}\n          tracker={\n            partnerOwnerId &&\n            partnerSlug && {\n              element: SponsorshipTracker,\n              props: {\n                impressionEventConfig: { enable: false },\n                position: `${channelSlug}-by-${partnerSlug}-editorial-cta`,\n                userId: partnerOwnerId\n              }\n            }\n          }\n          videoHtml={videoHtml}\n        />\n      </S.ChannelPageEditorialContent>\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      <S.ChannelPageEditorialContentItem key={id}>\n        <ThemedCard\n          ctaLabel={ctaLabel}\n          ctaLink={ctaLink}\n          image={image}\n          isVertical\n          text={text}\n          title={title}\n          tracker={\n            partnerOwnerId &&\n            partnerSlug && {\n              element: SponsorshipTracker,\n              props: {\n                impressionEventConfig: { enable: false },\n                position: `${channelSlug}-by-${partnerSlug}-editorial-cta-${index + 1}`,\n                userId: partnerOwnerId\n              }\n            }\n          }\n          videoHtml={videoHtml}\n        />\n      </S.ChannelPageEditorialContentItem>\n    )\n  })\n\n  return (\n    <S.ChannelPageEditorialContent listMode>\n      <S.ChannelPageEditorialContentList itemCount={editorialContent.length}>{nodes}</S.ChannelPageEditorialContentList>\n    </S.ChannelPageEditorialContent>\n  )\n}\n\nEditorialContent.defaultProps = {\n  channelSlug: 'channel',\n  editorialContent: [],\n  partnerOwnerId: undefined,\n  partnerSlug: undefined\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}\n\nexport default EditorialContent\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport { ThemeProvider } from 'styled-components'\n\nimport { Title1, VideoLoader } from '@ulule/owl-kit-components'\n\nimport * as S from './styles'\n\nconst ThemedCard = ({ ctaLabel, ctaLink, image, isVertical, text, theme: parentTheme, title, tracker, videoHtml }) => {\n  const theme = {\n    ...parentTheme,\n    isVertical\n  }\n\n  const { element: Tracker, props: trackerProps } = tracker\n\n  return (\n    <ThemeProvider theme={theme}>\n      <S.CardWrapper>\n        {image && (\n          <S.MediaWrapper>\n            {videoHtml ? <VideoLoader placeholder={image} videoHtml={videoHtml} /> : <img alt={title} src={image} />}\n          </S.MediaWrapper>\n        )}\n        <S.TextWrapper>\n          {title && <Title1>{title}</Title1>}\n          {text && <S.Text>{text}</S.Text>}\n          {ctaLabel && ctaLink && (\n            <Tracker {...trackerProps}>\n              <S.OutlineButton as=\"a\" href={ctaLink} target=\"_blank\" rel=\"noopener noreferrer\">\n                {ctaLabel}\n              </S.OutlineButton>\n            </Tracker>\n          )}\n        </S.TextWrapper>\n      </S.CardWrapper>\n    </ThemeProvider>\n  )\n}\n\nThemedCard.defaultProps = {\n  ctaLabel: null,\n  ctaLink: null,\n  image: null,\n  isVertical: false,\n  text: null,\n  theme: {},\n  title: null,\n  tracker: {\n    element: React.Fragment,\n    props: {}\n  },\n  videoHtml: null\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 from 'styled-components'\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};\n  color: ${COLORS.PRIMARY_WHITE};\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        ? `\n      height: 100%;\n      padding: 7% 7% 8%;\n    `\n        : `\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.span`\n  align-self: baseline;\n  border: 2px solid ${props => props.theme.colors.primary};\n  border-radius: 2px;\n  bottom: ${props => (props.theme.isVertical ? 0 : 'initial')};\n  box-sizing: border-box;\n  color: ${props => props.theme.colors.primary};\n  display: inline-block;\n  font-size: ${rem(13)};\n  height: ${rem(48)};\n  line-height: ${rem(46)};\n  padding: 0 ${rem(32)};\n  position: ${props => (props.theme.isVertical ? 'absolute' : 'initial')};\n  text-align: center;\n  transition: background-color 150ms ease-out, color 150ms ease-out;\n  vertical-align: middle;\n  width: 100%;\n\n  &:focus,\n  &:hover {\n    background-color: ${props => props.theme.colors.primary};\n    color: ${COLORS.PRIMARY_SAND};\n    cursor: pointer;\n    transition: background-color 200ms ease-in, color 200ms ease-in;\n  }\n\n  @media screen and (min-width: 767px) {\n    width: initial;\n  }\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      `\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      `\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 styled from 'styled-components'\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 \u2014 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 \u2014 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_WHITE};\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 \u2014 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    `\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    `\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    `\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    `\n    margin-top: -${rem(20)};\n  `}\n\n  @media screen and (min-width: 768px) {\n    ${props =>\n    !props.theme.layout.isLarge &&\n    `\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 \u2014 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};\n  margin-top: ${rem(20)};\n\n  &:hover {\n    background-color: ${props => props.theme.colors.primary || COLORS.PRIMARY_BLUE};\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    `\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    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.GREY_SHADE_4};\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};\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_WHITE};\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_WHITE};\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_WHITE};\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.BLUE_SHADE_1};\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.BLUE_SHADE_2};\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.BLUE_SHADE_2};\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 { 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 }\n\nconst TaggedProjectList = ({\n  channelName,\n  currentFilters,\n  currentCurrency,\n  currentLanguage,\n  currentSorting,\n  errorFetchingMore,\n  filters = [],\n  isFetching,\n  isFetchingMore,\n  loadMoreProjects,\n  moreProjectsToFetch,\n  noProjectWithInitialParams,\n  projectCount,\n  results,\n  sorting,\n  updateFilter,\n  updateSorting,\n  userIsAuthenticated\n}) => {\n  return noProjectWithInitialParams ? null : (\n    <React.Fragment>\n      <S.ChannelPageTaggedProjectsHeader>\n        <SortingBar\n          context=\"channel\"\n          count={projectCount}\n          currentFilters={currentFilters}\n          currentSorting={currentSorting}\n          labelOptions={{ tagName: channelName }}\n          sorting={sorting}\n          updateSorting={updateSorting}\n          withBigTitle\n        />\n        <DropdownFilter\n          name={filters[0].name}\n          label={filters[0].label}\n          onChange={event => {\n            updateFilter(filters[0].name, event.target.value)\n          }}\n          options={filters[0].options}\n          useDefault\n          value={currentFilters.statuses[0]}\n        />\n      </S.ChannelPageTaggedProjectsHeader>\n\n      {!projectCount && !isFetching ? (\n        <S.ChannelPageTaggedProjectsNoResults>\n          <img\n            src={NO_RESULTS_IMAGE.x1}\n            srcSet={`${NO_RESULTS_IMAGE.x2} 2x, ${NO_RESULTS_IMAGE.x3} 3x`}\n            alt={t('No results')}\n          />\n          <S.ChannelPageTaggedProjectsNoResultsText>\n            {tc('[strong: No results]. We invite you to change your search criteria.', { strong: <strong /> })}\n          </S.ChannelPageTaggedProjectsNoResultsText>\n          <S.ChannelPageTaggedProjectsResetFilters onClick={() => updateFilter('statuses', 'all')}>\n            <Icon glyph=\"refresh\" size={16} />\n            {t('Reinitialize filters')}\n          </S.ChannelPageTaggedProjectsResetFilters>\n        </S.ChannelPageTaggedProjectsNoResults>\n      ) : (\n        <S.ChannelPageTaggedProjectList>\n          <ProjectList\n            currentCurrency={currentCurrency}\n            currentLanguage={currentLanguage}\n            isAuthenticated={userIsAuthenticated}\n            modalImg={REMIND_ME_IMAGE}\n            nbPlaceholders={isFetching ? DEFAULT_LIMIT : 0}\n            projects={results}\n            rates={CURRENCY_RATES}\n            noCss\n          />\n        </S.ChannelPageTaggedProjectList>\n      )}\n\n      {moreProjectsToFetch && (\n        <S.ChannelPageTaggedProjectsFooter>\n          <LoadMoreButton\n            loading={isFetchingMore}\n            error={errorFetchingMore}\n            onClick={loadMoreProjects}\n            translations={{\n              initialLabel: t('More projects'),\n              errorLabel: t('Retry')\n            }}\n          />\n        </S.ChannelPageTaggedProjectsFooter>\n      )}\n    </React.Fragment>\n  )\n}\n\nTaggedProjectList.defaultProps = {\n  currentFilters: {},\n  currentSorting: null,\n  errorFetchingMore: false,\n  isFetching: true,\n  isFetchingMore: false,\n  moreProjectsToFetch: false,\n  noProjectWithInitialParams: false,\n  projectCount: 0,\n  results: [],\n  userIsAuthenticated: false\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 'styled-components'\nimport { PropTypes } from 'prop-types'\n\nimport { t } from '@ulule/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    <plume.ActionButton\n      active={isActive}\n      onClick={onClick}\n      contents={{\n        inactive: (\n          <>\n            <Label>{subscribe}</Label>\n            <InactiveHeart />\n          </>\n        ),\n        inactiveHover: (\n          <>\n            <Label>{subscribe}</Label>\n            <InactiveHeart />\n          </>\n        ),\n        active: (\n          <>\n            <Label>{subscribed}</Label>\n            <ActiveHeart />\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'\n\nimport { t } from '@ulule/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 }\n\nconst UserChannel = ({\n  channelDescription,\n  channelName,\n  channelOwner,\n  ctaLabel,\n  ctaUrl,\n  currentCurrency,\n  currentLanguage,\n  currentUser,\n  editorialContent,\n  featuredProject,\n  initialSearchSettings,\n  taggedProjectsData,\n  isSubscribed,\n  handleSubscription,\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      <S.ChannelPageGutteredSection raised>\n        <S.ChannelSubButton>\n          <ChannelSubButton isActive={isSubscribed} onClick={() => handleSubscription()} />\n        </S.ChannelSubButton>\n        <S.ChannelPageFeaturedSection>\n          {featuredProject && (\n            <S.ChannelPageFeaturedContent>\n              <BigProjectCard\n                dataUTMPageContext={dataUTMPageContext}\n                isAuthenticated={currentUser && currentUser.is_authenticated}\n                language={currentLanguage}\n                modalImg={REMIND_ME_IMAGE}\n                project={{ ...featuredProject, owner: { screenname: t('Highlights') } }}\n                rates={CURRENCY_RATES}\n                targetCurrency={currentCurrency}\n                urls={URLS}\n              />\n            </S.ChannelPageFeaturedContent>\n          )}\n\n          <S.ChannelPageRightAside>\n            <S.ChannelPageOwnerCard>\n              <S.ChannelPageUserCard>\n                <S.ChannelPageOwnerCardTitle>{t('Curated by')}</S.ChannelPageOwnerCardTitle>\n                <S.ChannelPageUserCardLabel>\n                  <S.ChannelPageUserCardProfileLink href={channelOwnerProfileURL}>\n                    <Avatar size={52} src={channelOwner && getResourceUrl(channelOwner.avatar, '128x128')} />\n                    <S.ChannelPageUserCardName>\n                      {channelOwner && getFullName(channelOwner, true)}\n                    </S.ChannelPageUserCardName>\n                  </S.ChannelPageUserCardProfileLink>\n                  {label && <Tag backgroundColor={label.color}>{label.name}</Tag>}\n                </S.ChannelPageUserCardLabel>\n                {channelDescription && (\n                  <S.ChannelPageOwnerCardDescription dangerouslySetInnerHTML={{ __html: channelDescription }} />\n                )}\n                {ctaUrl && (\n                  <a href={ctaUrl}>\n                    <S.ChannelPagePartnerCardCTA>{ctaLabel || t('Learn more')}</S.ChannelPagePartnerCardCTA>\n                  </a>\n                )}\n              </S.ChannelPageUserCard>\n            </S.ChannelPageOwnerCard>\n          </S.ChannelPageRightAside>\n        </S.ChannelPageFeaturedSection>\n\n        <CuratedProjectList\n          channelName={channelName}\n          currentCurrency={currentCurrency}\n          currentLanguage={currentLanguage}\n          initialSettings={initialSearchSettings.curatedProjects}\n          limit={9}\n          userIsAuthenticated={currentUser && currentUser.is_authenticated}\n        />\n      </S.ChannelPageGutteredSection>\n\n      {/* TODO: <S.ChannelPageFullWidthSection>Newsletter section</S.ChannelPageFullWidthSection> */}\n\n      <S.ChannelPageFullWidthSection>\n        <EditorialContent editorialContent={editorialContent} />\n      </S.ChannelPageFullWidthSection>\n\n      <S.ChannelPageGutteredSection>\n        {taggedProjectsData && (\n          <S.ChannelPageTaggedProjects>\n            <TaggedProjectList\n              channelName={channelName}\n              currentCurrency={currentCurrency}\n              currentLanguage={currentLanguage}\n              filters={taggedProjectsData.filters}\n              initialSettings={initialSearchSettings.taggedProjects}\n              sorting={taggedProjectsData.sorting}\n              userIsAuthenticated={currentUser && currentUser.is_authenticated}\n            />\n          </S.ChannelPageTaggedProjects>\n        )}\n      </S.ChannelPageGutteredSection>\n    </>\n  )\n}\n\nUserChannel.defaultProps = {\n  channelDescription: null,\n  ctaLabel: null,\n  ctaUrl: null,\n  editorialContent: [],\n  taggedProjectsData: null,\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}\n\nexport default UserChannel\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 }\n\nconst CuratedProjectList = ({\n  channelName,\n  currentCurrency,\n  currentLanguage,\n  isFetching,\n  limit,\n  loadMoreProjects,\n  moreProjectsToFetch,\n  results,\n  userIsAuthenticated\n}) => {\n  return !isFetching && !results.length ? null : (\n    <S.ChannelPageCuratedProjects>\n      <S.ChannelPageCuratedProjectsTitle>\n        {tc('The [em: %(channelName)s] selection', {\n          em: <em />,\n          channelName\n        })}\n      </S.ChannelPageCuratedProjectsTitle>\n\n      <S.ChannelPageCuratedProjectList>\n        <ProjectList\n          currentCurrency={currentCurrency}\n          currentLanguage={currentLanguage}\n          isAuthenticated={userIsAuthenticated}\n          modalImg={REMIND_ME_IMAGE}\n          nbPlaceholders={isFetching ? limit : 0}\n          projects={results}\n          rates={CURRENCY_RATES}\n        />\n      </S.ChannelPageCuratedProjectList>\n\n      {moreProjectsToFetch && (\n        <S.ChannelPageCuratedProjectsFooter>\n          <LoadMoreButton\n            error={null}\n            loading={false}\n            onClick={loadMoreProjects}\n            translations={{\n              initialLabel: t('More projects'),\n              errorLabel: t('Retry')\n            }}\n          />\n        </S.ChannelPageCuratedProjectsFooter>\n      )}\n    </S.ChannelPageCuratedProjects>\n  )\n}\n\nCuratedProjectList.defaultProps = {\n  isFetching: true,\n  limit: 9,\n  loadMoreProjects: () => {},\n  moreProjectsToFetch: false,\n  results: [],\n  userIsAuthenticated: false\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'\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 'styled-components'\n\nimport { t, tc } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nconst ModalChannelNoAuth = ({ open, onClose }) => (\n  <ModalWithIcon\n    open={open}\n    onClose={onClose}\n    closable\n    icon={<plume.illustrations.twoToned.EnvelopeWithHeart size={120} noBackground />}\n    svgScale={0.8}\n  >\n    <Title>{t('Subscribe to this channel')}</Title>\n    <Text>\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: <plume.Link href={window.UFE.urls.signin + '?next=' + window.location.href} tinted />,\n          signup: <plume.Link href={window.UFE.urls.signup + '?next=' + window.location.href} tinted />,\n          br: <br />,\n        },\n      )}\n    </Text>\n  </ModalWithIcon>\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)`\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 'styled-components'\n\nimport { t } from '@ulule/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nconst ModalChannelSuccess = ({ open, onClose }) => (\n  <ModalWithIcon\n    open={open}\n    onClose={onClose}\n    closable\n    icon={<plume.illustrations.twoToned.EnvelopeWithHeart size={120} noBackground />}\n    svgScale={0.825}\n    buttons={{\n      type: 'button',\n      props: {\n        onClick: onClose,\n        children: t('Ok, thanks'),\n      },\n    }}\n  >\n    <Title>{t(\"You're subscribed!\")}</Title>\n    <Text>{t('You will receive by e-mail once a week the new projects added to this channel.')}</Text>\n  </ModalWithIcon>\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)`\n  display: block;\n  text-align: center;\n`\n\nexport default ModalChannelSuccess\n", "import React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\n\nimport { t } from '@ulule/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        <ModalChannelNoAuth open={showNoAuth} onClose={() => closeModals()} />\n        <ModalChannelSuccess open={showFirstTime} onClose={() => closeModals()} />\n        <S.ChannelHeader>\n          <S.ChannelContainer>\n            <S.ChannelTitle>{t('Thematic channels')}</S.ChannelTitle>\n            <S.ChannelSubtitle>\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            </S.ChannelSubtitle>\n          </S.ChannelContainer>\n        </S.ChannelHeader>\n        <S.ChannelWrapper>\n          {channels && (\n            <Channels\n              lang={language}\n              channelTvImages={channelTvImages}\n              channels={channels}\n              subscribeChannel={subscribeChannel}\n              openNoAuth={openNoAuth}\n            />\n          )}\n          {meta && meta.next && (\n            <S.ChannelCTAWrapper>\n              <LoadMoreButton\n                loading={isLoadingChannels}\n                error={error}\n                translations={{\n                  initialLabel: t('More channels'),\n                  errorLabel: t('Retry'),\n                }}\n                onClick={this.handleLoadMore}\n              />\n            </S.ChannelCTAWrapper>\n          )}\n        </S.ChannelWrapper>\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        ca: PropTypes.string,\n        de: PropTypes.string,\n        en: PropTypes.string,\n        es: PropTypes.string,\n        fr: PropTypes.string,\n        it: PropTypes.string,\n        nl: PropTypes.string,\n        pt: PropTypes.string,\n      }),\n      id: PropTypes.number,\n      is_subscribed: PropTypes.bool,\n      name: PropTypes.shape({\n        ca: PropTypes.string,\n        de: PropTypes.string,\n        en: PropTypes.string,\n        es: PropTypes.string,\n        fr: PropTypes.string,\n        it: PropTypes.string,\n        nl: PropTypes.string,\n        pt: 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'\n\nimport { t } from '@ulule/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\nexport const ChannelList = ({ channels, lang, channelTvImages, subscribeChannel, openNoAuth }) => {\n  const channelsLength = channels && channels.length\n  const isAuthenticated = window.UFE.user.is_authenticated\n\n  return (\n    <S.ChannelList>\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              <React.Fragment key={index}>\n                <S.ChannelItem>\n                  <ChannelCard\n                    avatar={getResourceUrl(channel && channel.user && channel.user.avatar, '40x40')}\n                    description={description}\n                    href={channel && channel.absolute_url}\n                    src={getResourceUrl(channel && channel.cta_background, 'full')}\n                    title={getResourceWithLanguage(channel && channel.name, lang)}\n                    button={<ChannelSubButton isActive={isActive} onClick={onClick} />}\n                  />\n                </S.ChannelItem>\n\n                <TvBox channelTvImages={channelTvImages}>toto</TvBox>\n              </React.Fragment>\n            )\n          }\n\n          if (channelsLength > 9 && index + 1 === 9) {\n            return (\n              <React.Fragment key={index}>\n                <S.ChannelItem>\n                  <ChannelCard\n                    avatar={getResourceUrl(channel && channel.user && channel.user.avatar, '40x40')}\n                    description={description}\n                    href={channel && channel.absolute_url}\n                    src={getResourceUrl(channel && channel.cta_background, 'full')}\n                    title={getResourceWithLanguage(channel && channel.name, lang)}\n                    button={<ChannelSubButton isActive={isActive} onClick={onClick} />}\n                  />\n                </S.ChannelItem>\n\n                <TvBox channelTvImages={channelTvImages}>toto</TvBox>\n              </React.Fragment>\n            )\n          }\n\n          return (\n            <S.ChannelItem key={index}>\n              <ChannelCard\n                avatar={getResourceUrl(channel && channel.user && channel.user.avatar, '40x40')}\n                description={description}\n                href={channel && channel.absolute_url}\n                src={getResourceUrl(channel && channel.cta_background, 'full')}\n                title={getResourceWithLanguage(channel && channel.name, lang)}\n                button={<ChannelSubButton isActive={isActive} onClick={onClick} />}\n              />\n            </S.ChannelItem>\n          )\n        })}\n    </S.ChannelList>\n  )\n}\n\nChannelList.defaultProps = {\n  channels: [],\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        ca: PropTypes.string,\n        de: PropTypes.string,\n        en: PropTypes.string,\n        es: PropTypes.string,\n        fr: PropTypes.string,\n        it: PropTypes.string,\n        nl: PropTypes.string,\n        pt: PropTypes.string,\n      }),\n      id: PropTypes.number,\n      is_subscribed: PropTypes.bool,\n      name: PropTypes.shape({\n        ca: PropTypes.string,\n        de: PropTypes.string,\n        en: PropTypes.string,\n        es: PropTypes.string,\n        fr: PropTypes.string,\n        it: PropTypes.string,\n        nl: PropTypes.string,\n        pt: 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 PropTypes from 'prop-types'\n\nimport { t } from '@ulule/localize'\n\nimport * as S from '../styles'\n\nexport const TvBox = ({ channelTvImages }) => (\n  <S.ChannelTvBoxWrapper>\n    <S.ChannelTvBoxContainer>\n      <S.ChannelTvBoxImgWrapper>\n        <S.ChannelTvBoxImg\n          src={channelTvImages['1x']}\n          srcSet={`${channelTvImages['2x']} 2x, ${channelTvImages['x3']} 3x`}\n        />\n      </S.ChannelTvBoxImgWrapper>\n      <S.ChannelTvBoxContent>\n        <S.ChannelTvBoxTitle>{t('A topic in mind?')}</S.ChannelTvBoxTitle>\n        <S.ChannelTvBoxText>\n          {t('Impactful and innovating projects selected for you, by you! Got a topic in mind?')}\n        </S.ChannelTvBoxText>\n        <S.ChannelTvBoxCTAWrapper as=\"a\" href=\"https://makegoodthingshappen.typeform.com/to/SlsVVW\">\n          <S.ChannelTvBoxCTA>{t('Suggest a topic')}</S.ChannelTvBoxCTA>\n        </S.ChannelTvBoxCTAWrapper>\n      </S.ChannelTvBoxContent>\n    </S.ChannelTvBoxContainer>\n  </S.ChannelTvBoxWrapper>\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"],
  "mappings": "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",
  "names": ["init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "n", "init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "React", "ReactDOM", "init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "GET_CHANNEL_REQUEST", "GET_CHANNEL_SUCCESS", "GET_CHANNEL_FAILURE", "GET_CHANNELS_REQUEST", "GET_CHANNELS_SUCCESS", "GET_CHANNELS_FAILURE", "SUBSCRIBE_CHANNEL_REQUEST", "SUBSCRIBE_CHANNEL_SUCCESS", "SUBSCRIBE_CHANNEL_FAILURE", "SUBSCRIBE_DETAIL_CHANNEL_REQUEST", "SUBSCRIBE_DETAIL_CHANNEL_SUCCESS", "SUBSCRIBE_DETAIL_CHANNEL_FAILURE", "CLOSE_MODALS", "OPEN_NO_AUTH", "getChannels", "lang", "country", "limit", "extraFields", "isAuthenticated", "next", "GET_CHANNELS_REQUEST", "GET_CHANNELS_SUCCESS", "GET_CHANNELS_FAILURE", "api", "openNoAuth", "OPEN_NO_AUTH", "closeModals", "CLOSE_MODALS", "subscribeChannel", "id", "isSubscribed", "detailPage", "SUBSCRIBE_DETAIL_CHANNEL_REQUEST", "SUBSCRIBE_DETAIL_CHANNEL_SUCCESS", "SUBSCRIBE_DETAIL_CHANNEL_FAILURE", "SUBSCRIBE_CHANNEL_REQUEST", "SUBSCRIBE_CHANNEL_SUCCESS", "SUBSCRIBE_CHANNEL_FAILURE", "postRes", "initialState", "channelDetail", "state", "action", "GET_CHANNEL_REQUEST", "__spreadProps", "__spreadValues", "GET_CHANNEL_SUCCESS", "channel", "GET_CHANNEL_FAILURE", "error", "SUBSCRIBE_DETAIL_CHANNEL_REQUEST", "SUBSCRIBE_DETAIL_CHANNEL_SUCCESS", "isSubscribed", "response", "SUBSCRIBE_DETAIL_CHANNEL_FAILURE", "CLOSE_MODALS", "OPEN_NO_AUTH", "channelList", "GET_CHANNELS_SUCCESS", "channels", "meta", "GET_CHANNELS_REQUEST", "GET_CHANNELS_FAILURE", "SUBSCRIBE_CHANNEL_REQUEST", "SUBSCRIBE_CHANNEL_SUCCESS", "SUBSCRIBE_CHANNEL_FAILURE", "combineReducers", "config_default", "__spreadProps", "__spreadValues", "reducers", "combineReducers", "channels", "partner_default", "store_default", "createStore", "applyMiddleware", "thunk", "callAPIMiddleware", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "init_define_process_env", "init_sentry_release_injection_stub", "import_prop_types", "editorialContentShape", "PropTypes", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "import_localize", "USER_ROLE_STATUS", "LOCALSTORAGE_NAMESPACE", "COOKIE_MODAL_NAMESPACE", "getRelatedUserRole", "userRole", "BigProjectCard", "React", "props", "__publicField", "project", "status", "isOpen", "isAuthenticated", "hasCookie", "get", "set", "event", "apiAction", "postAction", "newStatus", "updateUserRole", "saveAction", "endDate", "extraTime", "isFinished", "projectStatus", "isOnline", "countdownText", "getShortCountdown", "__spreadProps", "__spreadValues", "prevProps", "prevState", "prevStatus", "dataUTMPageContext", "progress", "getProgress", "isProjectFinished", "textFinishProject", "getFinishTrad", "action", "CardTypeSelector", "text_exports", "getComingSoonLabel", "ModalProjectRemindMe", "ModalProjectNoAuth", "dataUTMPageContextShape", "PropTypes", "projectShape", "BigProjectCard_default", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "init_define_process_env", "init_sentry_release_injection_stub", "_a", "CardWrapper", "src_default", "__template", "colors_exports", "props", "Title1", "rem", "_b", "MediaWrapper", "_c", "OutlineButton", "_d", "Text", "_e", "TextWrapper", "ThemedCard", "ctaLabel", "ctaLink", "image", "isVertical", "text", "parentTheme", "title", "tracker", "videoHtml", "theme", "__spreadProps", "__spreadValues", "Tracker", "trackerProps", "React", "ThemeProvider", "CardWrapper", "MediaWrapper", "VideoLoader_default", "TextWrapper", "Title1", "Text", "OutlineButton", "PropTypes", "ThemedCard_default", "init_define_process_env", "init_sentry_release_injection_stub", "DEFAULT_GRID_BASIS", "LARGE_GRID_BASIS", "HEIGHT_SHIFT", "SPACING", "_a", "ChannelPageCover", "src_default", "__template", "props", "rem", "_b", "ChannelPageHeader", "_c", "ChannelPageTitleContainer", "_d", "ChannelPageLogo", "_e", "ChannelPageTitle", "colors_exports", "fonts_exports", "_f", "ChannelPageCuratedProjects", "_g", "ChannelPageCuratedProjectsFooter", "_h", "ChannelPageEditorialContent", "_i", "ChannelPageFullWidthSection", "_j", "ChannelSubButton", "_k", "ChannelPageGutteredSection", "_l", "ChannelPageRightAside", "_m", "ChannelPageFeaturedContent", "_n", "ChannelPageFeaturedSection", "_o", "ChannelPageCuratedProjectList", "_p", "ChannelPageCuratedProjectsTitle", "Title1", "_q", "ChannelPageEditorialContentItem", "_r", "ChannelPageEditorialContentList", "_s", "ChannelPageOwnerCardTitle", "Title2", "_t", "ChannelPageOwnerCard", "_u", "ChannelPageOwnerCardDescription", "_v", "ChannelPageOwnerCardImage", "_w", "ChannelPagePartnerCard", "_x", "ChannelPagePartnerCardCTA", "CallToAction", "_y", "ChannelPageTaggedProjects", "_z", "ChannelPageTaggedProjectsFooter", "_A", "ChannelPageTaggedProjectsHeader", "_B", "ChannelPageTaggedProjectList", "_C", "ChannelPageTaggedProjectsNoResults", "_D", "ChannelPageTaggedProjectsNoResultsText", "_E", "ChannelPageTaggedProjectsResetFilters", "SecondaryLink", "_F", "ChannelPageUserCard", "_G", "ChannelPageUserCardLabel", "_H", "ChannelPageUserCardName", "_I", "ChannelPageUserCardProfileLink", "_J", "ChannelHeader", "_K", "ChannelContainer", "_L", "ChannelTitle", "_M", "ChannelSubtitle", "RegularText", "_N", "ChannelWrapper", "_O", "ChannelList", "_P", "ChannelItem", "_Q", "ChannelCTAWrapper", "_R", "ChannelTvBoxWrapper", "_S", "ChannelTvBoxContainer", "_T", "ChannelTvBoxImgWrapper", "_U", "ChannelTvBoxImg", "_V", "ChannelTvBoxContent", "_W", "ChannelTvBoxTitle", "Title5", "_X", "ChannelTvBoxText", "_Y", "ChannelTvBoxCTAWrapper", "_Z", "ChannelTvBoxCTA", "getProperties", "content", "ctaLabel", "getResourceWithLanguage", "image", "getResourceUrl", "text", "title", "videoHtml", "EditorialContent", "channelSlug", "editorialContent", "partnerOwnerId", "partnerSlug", "ctaLink", "React", "ChannelPageEditorialContent", "ThemedCard_default", "SponsorshipTracker_default", "nodes", "index", "id", "ChannelPageEditorialContentItem", "ChannelPageEditorialContentList", "PropTypes", "editorialContentShape", "EditorialContent_default", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "CURRENCY_RATES", "__spreadValues", "NO_RESULTS_IMAGE", "REMIND_ME_IMAGE", "TaggedProjectList", "channelName", "currentFilters", "currentCurrency", "currentLanguage", "currentSorting", "errorFetchingMore", "filters", "isFetching", "isFetchingMore", "loadMoreProjects", "moreProjectsToFetch", "noProjectWithInitialParams", "projectCount", "results", "sorting", "updateFilter", "updateSorting", "userIsAuthenticated", "React", "ChannelPageTaggedProjectsHeader", "sortingbar_default", "DropdownFilter_default", "event", "ChannelPageTaggedProjectsNoResults", "ChannelPageTaggedProjectsNoResultsText", "ChannelPageTaggedProjectsResetFilters", "Icon_default", "ChannelPageTaggedProjectList", "ProjectsList_default", "DEFAULT_LIMIT", "ChannelPageTaggedProjectsFooter", "LoadMoreButton_default", "PropTypes", "projectShape", "TaggedProjectList_default", "withProjectResults", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "import_localize", "_a", "InactiveHeart", "src_default", "glyphs_exports", "__template", "_b", "ActiveHeart", "_c", "Label", "ChannelSubButton", "isActive", "onClick", "subscribe", "unsubscribe", "subscribed", "React", "ActionButton", "ChannelSubButton_default", "CURRENCY_RATES", "__spreadValues", "REMIND_ME_IMAGE", "URLS", "Partner", "channelDescription", "channelName", "channelOwnerProfileURL", "channelSlug", "ctaLabel", "ctaUrl", "currentCurrency", "currentLanguage", "currentUser", "editorialContent", "featuredProject", "initialSearchSettings", "isSelectionFirst", "listProjects", "meta", "partnerLogo", "partnerName", "partnerOwnerId", "partnerSlug", "sponsoredProjects", "sponsoredProjectsAreLoading", "taggedProjectsData", "isSubscribed", "handleSubscription", "React", "taggedProjectsNode", "ChannelPageTaggedProjects", "TaggedProjectList_default", "sponsorProjectNode", "ChannelPageCuratedProjects", "ChannelPageCuratedProjectsTitle", "ChannelPageCuratedProjectList", "ProjectsList_default", "ChannelPageCuratedProjectsFooter", "LoadMoreButton_default", "hasSponsorProjects", "taggedProjectsOnFeaturePosition", "taggedProjectsOnFirstPosition", "taggedrojectsOnLastPosition", "sponsorProjectsOnFeaturePosition", "sponsorProjectsOnFirstPosition", "sponsorProjectsOnLastPosition", "ChannelPageGutteredSection", "ChannelSubButton", "ChannelSubButton_default", "ChannelPageFeaturedSection", "ChannelPageFeaturedContent", "BigProjectCard_default", "__spreadProps", "ChannelPageRightAside", "ChannelPageOwnerCard", "ChannelPagePartnerCard", "ChannelPageOwnerCardTitle", "SponsorshipTracker_default", "ChannelPageOwnerCardImage", "ChannelPageOwnerCardDescription", "ChannelPagePartnerCardCTA", "ChannelPageFullWidthSection", "EditorialContent_default", "PropTypes", "userShape", "editorialContentShape", "projectShape", "mapStateToProps", "state", "mapDispatchToProps", "dispatch", "ownProps", "next", "withAccessToken", "listPartnerProjects", "Partner_default", "connect_default", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "import_localize", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "CURRENCY_RATES", "__spreadValues", "REMIND_ME_IMAGE", "CuratedProjectList", "channelName", "currentCurrency", "currentLanguage", "isFetching", "limit", "loadMoreProjects", "moreProjectsToFetch", "results", "userIsAuthenticated", "React", "ChannelPageCuratedProjects", "ChannelPageCuratedProjectsTitle", "ChannelPageCuratedProjectList", "ProjectsList_default", "ChannelPageCuratedProjectsFooter", "LoadMoreButton_default", "PropTypes", "projectShape", "CuratedProjectList_default", "withProjectResults", "CURRENCY_RATES", "__spreadValues", "REMIND_ME_IMAGE", "URLS", "UserChannel", "channelDescription", "channelName", "channelOwner", "ctaLabel", "ctaUrl", "currentCurrency", "currentLanguage", "currentUser", "editorialContent", "featuredProject", "initialSearchSettings", "taggedProjectsData", "isSubscribed", "handleSubscription", "label", "getLabel", "channelOwnerProfileURL", "React", "ChannelPageGutteredSection", "ChannelSubButton", "ChannelSubButton_default", "ChannelPageFeaturedSection", "ChannelPageFeaturedContent", "BigProjectCard_default", "__spreadProps", "ChannelPageRightAside", "ChannelPageOwnerCard", "ChannelPageUserCard", "ChannelPageOwnerCardTitle", "ChannelPageUserCardLabel", "ChannelPageUserCardProfileLink", "Avatar_default", "getResourceUrl", "ChannelPageUserCardName", "getFullName", "Tag_default", "ChannelPageOwnerCardDescription", "ChannelPagePartnerCardCTA", "CuratedProjectList_default", "ChannelPageFullWidthSection", "EditorialContent_default", "ChannelPageTaggedProjects", "TaggedProjectList_default", "PropTypes", "userShape", "editorialContentShape", "projectShape", "User_default", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "UserSettingsContext", "React", "getCurrentLanguage", "getDefaultLanguage", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "ModalChannelNoAuth", "open", "onClose", "React", "ModalWithIcon", "illustrations_exports", "Title", "Text", "Link", "_a", "src_default", "__template", "ModalIconWrapper", "colors_exports", "_b", "styles_exports", "_c", "ModalChannelNoAuth_default", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "import_localize", "ModalChannelSuccess", "open", "onClose", "React", "ModalWithIcon", "illustrations_exports", "Title", "Text", "_a", "src_default", "__template", "ModalIconWrapper", "colors_exports", "_b", "styles_exports", "_c", "ModalChannelSuccess_default", "SEARCH_DATA", "__spreadValues", "ChannelPage", "channel", "showFirstTime", "showNoAuth", "subscribeChannel", "openNoAuth", "closeModals", "accentColor", "background", "bgColor", "ctaLabel", "ctaUrl", "description", "featuredProject", "id", "isSubscribed", "links", "name", "channelPartner", "isSelectionFirst", "slug", "title", "channelOwner", "initialSearchSettings", "theme", "colors_exports", "titleImage", "getResourceUrl", "context", "React", "UserSettingsContext", "handleSubscription", "ThemeProvider", "ModalChannelNoAuth_default", "ModalChannelSuccess_default", "ChannelPageHeader", "ChannelPageCover", "ChannelPageTitleContainer", "ChannelPageLogo", "ChannelPageTitle", "Partner_default", "User_default", "PropTypes", "projectShape", "editorialContentShape", "userShape", "mapStateToProps", "state", "mapDispatchToProps", "dispatch", "detail_default", "connect_default", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "import_localize", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "import_localize", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "import_prop_types", "import_localize", "TvBox", "channelTvImages", "React", "ChannelTvBoxWrapper", "ChannelTvBoxContainer", "ChannelTvBoxImgWrapper", "ChannelTvBoxImg", "ChannelTvBoxContent", "ChannelTvBoxTitle", "ChannelTvBoxText", "ChannelTvBoxCTAWrapper", "ChannelTvBoxCTA", "PropTypes", "ChannelList", "channels", "lang", "channelTvImages", "subscribeChannel", "openNoAuth", "channelsLength", "isAuthenticated", "React", "channel", "index", "isPartner", "user", "description", "getFullName", "isActive", "onClick", "ChannelItem", "ChannelCard", "getResourceUrl", "getResourceWithLanguage", "ChannelSubButton_default", "TvBox", "PropTypes", "userShape", "ChannelList", "React", "__publicField", "getChannels", "meta", "language", "country", "next", "isAuthenticated", "channels", "channelTvImages", "error", "isLoadingChannels", "subscribeChannel", "showFirstTime", "showNoAuth", "openNoAuth", "closeModals", "ModalChannelNoAuth_default", "ModalChannelSuccess_default", "ChannelHeader", "ChannelContainer", "ChannelTitle", "ChannelSubtitle", "ChannelWrapper", "ChannelCTAWrapper", "LoadMoreButton_default", "PropTypes", "userShape", "mapStateToProps", "state", "mapDispatchToProps", "dispatch", "limit", "extraFields", "id", "isSubscribed", "list_default", "connect_default", "config_default", "__spreadProps", "__spreadValues", "Router", "country", "language", "channelTvImages", "React", "Routes", "Route", "list_default", "detail_default", "PropTypes", "Router_default", "Channel", "language", "country", "container", "Provider_default", "store_default", "BrowserRouter", "Router_default", "event", "currentLocation", "currentCountryCode", "currentLanguage", "getCurrentLanguage", "getDefaultLanguage", "channels_default"]
}