{
  "version": 3,
  "sources": ["../../src/modern/models/resources.js", "../../src/modern/components/ProjectsList/ProjectsList.js", "../../src/modern/components/ProjectsList/ProjectsListItem.js", "../../src/modern/components/ProjectsList/ProjectsListPlaceholderItem.js", "../../src/modern/components/Project/Modals.js", "../../src/modern/utils/misc.js"],
  "sourcesContent": ["import { getCurrentLanguage, getDefaultLanguage } from '$features/init/language'\n\nexport const getResourceUrl = (resource, size = 'full') => {\n  return resource && resource.versions && resource.versions[size] && resource.versions[size].url\n}\n\nexport const getResourceWithLanguage = (\n  resource,\n  language = getCurrentLanguage(),\n  fallbackLanguage = getDefaultLanguage()\n) => {\n  if (!resource) return null\n\n  if (resource[language]) {\n    return resource[language]\n  }\n\n  if (resource[fallbackLanguage]) {\n    return resource[fallbackLanguage]\n  }\n\n  return Object.values(resource).find(value => value !== '')\n}\n", "import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport * as cookie from '$utils/cookie'\nimport { dataUTMPageContextShape } from '$utils/prop-types'\n\nimport ProjectsListItem from './ProjectsListItem'\nimport ProjectsListPlaceholderItem from './ProjectsListPlaceholderItem'\nimport { ModalProjectRemindMe, ModalProjectNoAuth } from '../Project/Modals'\n\nconst COOKIE_MODAL_NAMESPACE = 'ul_modal_remind_me'\n\nclass ProjectsList extends React.Component {\n  constructor(props) {\n    super(props)\n    this.state = {\n      isOpen: false,\n      modalShowedUp: false\n    }\n  }\n\n  handleCloseModal = () => {\n    this.setState({\n      isOpen: false\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 { 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: this.state.isOpen ? false : true\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    return\n  }\n\n  render() {\n    const {\n      dataUTMPageContext,\n      nbPlaceholders,\n      noCss,\n      currentLanguage,\n      currentCurrency,\n      rates,\n      isAuthenticated,\n      urls,\n      modalImg,\n      projects,\n      isLikeCompact\n    } = this.props\n\n    let list\n    if (nbPlaceholders) {\n      if (nbPlaceholders < 0) {\n        list = projects && new Array(-nbPlaceholders).fill(null).concat(projects)\n      } else {\n        list = projects && projects.concat(new Array(nbPlaceholders).fill(null))\n      }\n    } else {\n      list = projects\n    }\n\n    const defaultClasses = 'b-list b-list--inline'\n\n    return (\n      <ul className={`b-blink__projects ${noCss ? '' : defaultClasses}`}>\n        {list &&\n          list.length > 0 &&\n          list.map((project, index) => {\n            return (\n              <li\n                className={`b-list__item ${!project && 'placeholder'}`}\n                key={`project-${index}`}\n                data-project-id={project ? project.id : undefined}\n                data-selected-project={project && project.is_featured ? 'true' : undefined}\n                data-page-identifier={dataUTMPageContext && dataUTMPageContext.value}\n                data-page-type={dataUTMPageContext && dataUTMPageContext.type}\n              >\n                {project ? (\n                  <ProjectsListItem\n                    rates={rates}\n                    project={project}\n                    currentLanguage={currentLanguage}\n                    currentCurrency={currentCurrency}\n                    action={{\n                      onBeforeAction: this.checkAuth,\n                      onSuccess: this.handleModal,\n                      onError: this.onError\n                    }}\n                    isAuthenticated={isAuthenticated}\n                    isLikeCompact={isLikeCompact}\n                  />\n                ) : (\n                  <ProjectsListPlaceholderItem />\n                )}\n              </li>\n            )\n          })}\n        {isAuthenticated && (\n          <ModalProjectRemindMe isOpen={this.state.isOpen} onClose={this.handleCloseModal} modalImg={modalImg} />\n        )}\n        {!isAuthenticated && (\n          <ModalProjectNoAuth\n            isOpen={this.state.isOpen}\n            urls={urls}\n            isAuthenticated={isAuthenticated}\n            handleClick={this.handleModal}\n            onClose={this.handleCloseModal}\n            modalImg={modalImg}\n          />\n        )}\n      </ul>\n    )\n  }\n}\n\nProjectsList.defaultProps = {\n  nbPlaceholders: 0,\n  noCss: false,\n  isLikeCompact: true\n}\n\nProjectsList.propTypes = {\n  dataUTMPageContext: dataUTMPageContextShape,\n  projects: PropTypes.arrayOf(PropTypes.object).isRequired,\n  currentLanguage: PropTypes.string.isRequired,\n  currentCurrency: PropTypes.string.isRequired,\n  isLikeCompact: PropTypes.bool,\n  nbPlaceholders: PropTypes.number,\n  // NOTE: The noCss prop is here to ensure this component can be used both with CSS and CSS-in-JS\n  // environments, until the component is fully migrated to styled-components.\n  noCss: PropTypes.bool\n}\n\nexport default ProjectsList\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport { RoundButton } from '@ulule/owl-kit-components'\nimport * as duvet from '@ulule/duvet'\nimport { t, tn } from '@ulule/localize'\nimport { text } from '@owl-nest/utils'\n\nimport { getComingSoonLabel, getProgress, getShortCountdown, getFinishTrad, getStatus } from '$models/projects'\nimport { updateUserRole, saveAction } from '../../features/init/services'\n\nconst USER_ROLE_STATUS = {\n  neutral: null,\n  listed: 'fan',\n  created: 'owner',\n  backed: 'supporter',\n}\n\nconst ProjectCardWrapper = styled.div`\n  display: flex;\n  position: relative;\n  flex-direction: column;\n  width: 100%;\n  min-width: 230px;\n  max-width: 310px;\n`\n\nconst Button = styled(RoundButton)`\n  position: relative;\n  padding: 10px;\n`\n\nconst getRelatedUserRole = (userRole, isLikeCompact) => {\n  switch (userRole) {\n    case 'fan': {\n      const fanLabel = isLikeCompact ? t('Listed') : t('Signed up for the launch')\n      return {\n        status: 'listed',\n        label: fanLabel,\n        apiAction: 'unlike',\n        roundButton: {\n          text: fanLabel,\n          icon: 'active-heart',\n          isCompact: isLikeCompact,\n        },\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          isCompact: isLikeCompact,\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          isCompact: isLikeCompact,\n        },\n      }\n\n    default: {\n      const neutralLabel = isLikeCompact ? t('Add to my list') : t('Sign up for the launch')\n      return {\n        status: 'neutral',\n        label: neutralLabel,\n        apiAction: 'like',\n        roundButton: {\n          text: neutralLabel,\n          icon: 'inactive-heart',\n          isCompact: isLikeCompact,\n        },\n      }\n    }\n  }\n}\n\nconst LOCALSTORAGE_NAMESPACE = 'ul_modalShowedUp'\n\nclass ProjectsListItem extends React.Component {\n  constructor(props) {\n    super(props)\n    const { project, isLikeCompact } = this.props\n\n    if (project && project.user_role === undefined) return\n\n    this.state = {\n      ...getRelatedUserRole(project && project.user_role, isLikeCompact),\n    }\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    const status = this.state && this.state.status\n    const prevStatus = prevState && prevState.status\n    if (status !== prevStatus) {\n      if (this.props.project && this.props.project.user_role === undefined) return\n      this.setState({\n        ...getRelatedUserRole(USER_ROLE_STATUS[this.state.status], this.props.isLikeCompact),\n      })\n    }\n\n    if (window.localStorage.getItem(LOCALSTORAGE_NAMESPACE) === 'true') {\n      return {\n        modalShowedUp: true,\n      }\n    }\n  }\n\n  onClick = (event) => {\n    event.preventDefault()\n    const { project, action, isAuthenticated } = this.props\n    const { 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, this.state.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        action.onSuccess(project, newStatus)\n      }, action.onError)\n      return\n    }\n    saveAction(project.id, this.state.apiAction)\n\n    action.onError()\n    return\n  }\n\n  isProjectAlmostEnded = () => {\n    const { project } = this.props\n\n    const FourtyHeightHours = 48 * 3600\n    const projectEndDate = +new Date(project && project.date_end).toISOString()\n    const today = +new Date().toISOString()\n\n    if (today - projectEndDate < FourtyHeightHours) {\n      return true\n    }\n\n    return false\n  }\n\n  handleCloseModal = () => {\n    this.setState({\n      isOpen: false,\n    })\n  }\n\n  render() {\n    const { currentLanguage, currentCurrency, rates, project, isLikeCompact } = this.props\n    const progress = getProgress(project)\n    let countdownText = ''\n    if (project && project.date_end) {\n      countdownText = getShortCountdown(project)\n    }\n    const isOnline = project && project.status === 'online'\n    const isProjectFinished = project && project.finished\n\n    const action =\n      project && project.user_role !== undefined\n        ? {\n          ...this.state.roundButton,\n          onClick: (event) => this.onClick(event),\n        }\n        : undefined\n\n    let textFinishProject = t('Finished')\n    if (isProjectFinished) {\n      textFinishProject = getFinishTrad(project.date_end)\n    }\n\n    return (\n      <React.Fragment>\n        {project && (\n          <ProjectCardWrapper>\n            <duvet.CardTypeSelector\n              mainImage={\n                project &&\n                project.main_image &&\n                project.main_image.versions &&\n                project.main_image.versions['2x'] &&\n                project.main_image.versions['2x'].url\n              }\n              cardType=\"classic\"\n              action={action}\n              overrideIsProjectOnline={isOnline}\n              project={{ ...project, language: currentLanguage, main_image: { [project.lang]: project.main_image } }}\n              rates={rates}\n              targetCurrency={currentCurrency}\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:\n                  getStatus({\n                    isOnline,\n                    endDate: project.date_end,\n                    extraTime: project.is_in_extra_time,\n                    finished: project.finished,\n                  }) ?? (isOnline ? countdownText : undefined),\n              }}\n            />\n            {!isLikeCompact && <Button {...action} isCompact={false} />}\n          </ProjectCardWrapper>\n        )}\n      </React.Fragment>\n    )\n  }\n}\n\nProjectsListItem.propTypes = {\n  project: PropTypes.shape({\n    name: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n    subtitle: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n    absolute_url: PropTypes.string.isRequired,\n    date_end: PropTypes.string,\n    is_featured: PropTypes.bool,\n  }).isRequired,\n  currentLanguage: PropTypes.string.isRequired,\n  currentCurrency: PropTypes.string.isRequired,\n  isLikeCompact: PropTypes.bool.isRequired,\n  rates: PropTypes.object.isRequired,\n}\n\nexport default ProjectsListItem\n", "import React from 'react'\n\nconst ProjectsListPlaceholderItem = () => (\n  <div className=\"b-blink__link\">\n    <div className=\"b-blink__cover\" />\n    <div className=\"b-blink__title\" />\n    <p className=\"b-blink__meta\">\n      <strong className=\"b-blink__author\" />\n      <span className=\"b-blink__category\" />\n    </p>\n    <p className=\"b-blink__meta\">\n      <span className=\"b-blink__amount\">\n        <svg\n          className=\"b-icon b-icon--egg-0 b-blink__egg\"\n          dangerouslySetInnerHTML={{\n            __html: '<use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-egg-0\" />'\n          }}\n        />\n        <span className=\"amount-text\" />\n      </span>\n      <span className=\"b-blink__timeleft\" />\n    </p>\n  </div>\n)\n\nexport default ProjectsListPlaceholderItem\n", "import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport { tc, t } from '@ulule/localize'\nimport { NotificationModal, PrimaryLink, Pastille, Title2, RegularText, CallToAction } from '@ulule/owl-kit-components'\n\nimport { mainUrlsShape } from '$utils/prop-types'\nimport { addQueryParamsToUrl } from '$utils/misc'\n\nconst StyledCallToAction = styled(CallToAction)``\nconst StyledPastille = styled(Pastille)``\n\nconst ModalContent = styled.div`\n  text-align: center;\n\n  ${StyledPastille} {\n    margin: auto;\n    transform: translateY(-90px);\n    margin-bottom: -90px;\n  }\n\n  ${StyledCallToAction} {\n    margin-top: 30px;\n  }\n\n  ${Title2} {\n    margin-bottom: 10px;\n    margin-top: 10px;\n  }\n`\n\nexport const ModalProjectRemindMe = ({ isOpen, modalImg, onClose }) => (\n  <NotificationModal isClosable overlay isOpen={isOpen} onClosing={onClose}>\n    <ModalContent>\n      <StyledPastille>\n        <img\n          src={modalImg && modalImg.x1}\n          srcSet={`${modalImg && modalImg.x2} 2x, ${modalImg && modalImg.x3} 3x`}\n          alt=\"\"\n        />\n      </StyledPastille>\n      <Title2 align=\"center\">{t('Project listed')}</Title2>\n      <RegularText>{t('You will be notified by email 48 hours before project ends.')}</RegularText>\n      <StyledCallToAction onClick={onClose}>{t('Ok, thanks')}</StyledCallToAction>\n    </ModalContent>\n  </NotificationModal>\n)\n\nModalProjectRemindMe.propTypes = {\n  isOpen: PropTypes.bool.isRequired,\n  onClose: PropTypes.func,\n  modalImg: PropTypes.shape({\n    '1x': PropTypes.string,\n    '2x': PropTypes.string,\n    '3x': PropTypes.string\n  })\n}\n\nconst addNextUrl = url => {\n  const params = { next: window.location.href }\n  return addQueryParamsToUrl(url, params)\n}\n\nexport const ModalProjectNoAuth = ({ isOpen, urls, modalImg, onClose }) => (\n  <NotificationModal isClosable overlay isOpen={isOpen} onClosing={onClose}>\n    <ModalContent>\n      <StyledPastille>\n        <img\n          src={modalImg && modalImg.x1}\n          srcSet={`${modalImg && modalImg.x2} 2x, ${modalImg && modalImg.x3} 3x`}\n          alt=\"\"\n        />\n      </StyledPastille>\n      <Title2 align=\"center\">{t('Add to my list')}</Title2>\n      <RegularText>\n        {tc(\n          \"[login: Login] to your Ulule account to like this project.[br] You don't have an account yet ? [br][signup: Signup].\",\n          {\n            login: <PrimaryLink href={urls && addNextUrl(urls.signin)} />,\n            signup: <PrimaryLink href={urls && addNextUrl(urls.join)} />,\n            br: <br />\n          }\n        )}\n      </RegularText>\n    </ModalContent>\n  </NotificationModal>\n)\n\nModalProjectNoAuth.propTypes = {\n  isOpen: PropTypes.bool.isRequired,\n  urls: mainUrlsShape,\n  isAuthenticated: PropTypes.bool,\n  handleClick: PropTypes.func.isRequired,\n  onClose: PropTypes.func,\n  modalImg: PropTypes.shape({\n    '1x': PropTypes.string,\n    '2x': PropTypes.string,\n    '3x': PropTypes.string\n  })\n}\n", "const queryParams = (params) => {\n  return Object.keys(params)\n    .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))\n    .join('&')\n}\n\nexport const addQueryParamsToUrl = (baseUrl, params) => {\n  if (!params) return baseUrl\n\n  const character = !baseUrl.includes('?') ? '?' : '&'\n  return `${baseUrl}${character}${queryParams(params)}`\n}\n"],
  "mappings": "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",
  "names": ["init_define_process_env", "init_sentry_release_injection_stub", "getResourceUrl", "resource", "size", "getResourceWithLanguage", "language", "getCurrentLanguage", "fallbackLanguage", "getDefaultLanguage", "value", "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", "_a", "ProjectCardWrapper", "src_default", "__template", "_b", "Button", "RoundButton_default", "getRelatedUserRole", "userRole", "isLikeCompact", "fanLabel", "neutralLabel", "LOCALSTORAGE_NAMESPACE", "ProjectsListItem", "React", "props", "__publicField", "event", "project", "action", "isAuthenticated", "status", "newStatus", "updateUserRole", "saveAction", "FourtyHeightHours", "projectEndDate", "__spreadValues", "prevProps", "prevState", "prevStatus", "currentLanguage", "currentCurrency", "rates", "progress", "getProgress", "countdownText", "getShortCountdown", "isOnline", "isProjectFinished", "__spreadProps", "textFinishProject", "getFinishTrad", "CardTypeSelector", "text_exports", "getComingSoonLabel", "getStatus", "PropTypes", "ProjectsListItem_default", "init_define_process_env", "init_sentry_release_injection_stub", "import_react", "ProjectsListPlaceholderItem", "React", "ProjectsListPlaceholderItem_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", "queryParams", "params", "k", "addQueryParamsToUrl", "baseUrl", "character", "_a", "StyledCallToAction", "src_default", "CallToAction", "__template", "_b", "StyledPastille", "Pastille_default", "_c", "ModalContent", "Title2", "ModalProjectRemindMe", "isOpen", "modalImg", "onClose", "React", "NotificationModal", "RegularText", "PropTypes", "addNextUrl", "url", "params", "addQueryParamsToUrl", "ModalProjectNoAuth", "urls", "PrimaryLink", "mainUrlsShape", "COOKIE_MODAL_NAMESPACE", "ProjectsList", "React", "props", "__publicField", "project", "status", "isAuthenticated", "hasCookie", "get", "set", "dataUTMPageContext", "nbPlaceholders", "noCss", "currentLanguage", "currentCurrency", "rates", "urls", "modalImg", "projects", "isLikeCompact", "list", "index", "ProjectsListItem_default", "ProjectsListPlaceholderItem_default", "ModalProjectRemindMe", "ModalProjectNoAuth", "dataUTMPageContextShape", "PropTypes", "ProjectsList_default"]
}