{ "version": 3, "sources": ["../../../../../../owl-nest/ulule/features/project/src/public/views/detail/hooks/useIndice.ts", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/components/AccordionWrapper.tsx", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/components/ProjectFaq.tsx", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/utils/Data.tsx"], "sourcesContent": ["import * as React from 'react'\n\ntype OpenIndice = {\n isOpen: (index: string) => boolean\n updateOpenIndices: (index: string) => void\n}\n\nexport function useIndice(): OpenIndice {\n const [openIndices, setOpenIndices] = React.useState>([])\n\n const isOpen = (index: string): boolean => {\n return openIndices.findIndex(element => element === index) !== -1\n }\n\n const updateOpenIndices = (index: string): void => {\n const activeIndex = openIndices.findIndex(element => element === index)\n const updatedOpenIndices = [...openIndices]\n\n if (activeIndex >= 0) {\n updatedOpenIndices.splice(activeIndex, 1)\n } else {\n updatedOpenIndices.push(index)\n }\n\n setOpenIndices(updatedOpenIndices)\n }\n\n return {\n isOpen: (index: string) => isOpen(index),\n updateOpenIndices: (index: string) => updateOpenIndices(index),\n }\n}\n", "import * as React from 'react'\nimport styled from 'styled-components'\n\nimport { BREAKPOINTS } from '@ulule/owl-kit-components/next'\n\ntype AccordionWrapperProps = {\n children: React.ReactNode\n open: boolean\n openOnDesktop?: boolean\n}\n\nconst ToggleContent = styled.div<{ open: boolean; height: number | undefined; openOnDesktop?: boolean }>`\n height: ${({ open }) => (open ? 'auto' : '0px')};\n min-height: ${({ open, height }) => (open ? height : '0')}px;\n opacity: ${({ open }) => (open ? '1' : '0')};\n overflow: hidden;\n pointer-events: ${({ open }) => (open ? 'initial' : 'none')};\n transition: 0.8s ease;\n\n @media screen and ${BREAKPOINTS.LAPTOP} {\n ${({ openOnDesktop }) =>\n openOnDesktop &&\n `\n height: auto;\n opacity: 1;\n pointer-events: initial;\n `}\n }\n`\n\nexport function AccordionWrapper({\n children,\n open,\n openOnDesktop,\n}: AccordionWrapperProps): React.ReactElement {\n const contentRef = React.useRef(null)\n const [toggleableHeight, setToggleableHeight] = React.useState(0)\n\n React.useLayoutEffect(() => {\n if (contentRef.current) {\n setToggleableHeight(contentRef.current.clientHeight)\n }\n }, [contentRef.current])\n\n return (\n \n
{children}
\n
\n )\n}\n", "import * as React from 'react'\nimport * as Redux from 'react-redux'\nimport styled from 'styled-components'\n\nimport { Lang } from '@owl-nest/api-client/latest'\nimport { t } from '@owl-nest/localize'\nimport * as model from '@owl-nest/models'\nimport { Status } from '@owl-nest/redux-wrapper'\nimport { useLazyInitialLoad } from '@owl-nest/hooks'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\n\nimport { loadProjectFaq } from '../../../../actions/faq'\nimport * as impactAction from '../../../../actions/impact'\nimport { DisplayMode } from '../../../context'\nimport { useIndice } from '../hooks/useIndice'\nimport { useNavigation } from '../../../hooks/useNavigation'\nimport { PATHS } from '../../../paths'\nimport { RootState, AppState } from '../../../../reducers'\nimport * as projectModel from '../../../models/project'\n\nimport { AccordionWrapper } from './AccordionWrapper'\nimport { CreateButton } from '../components/CreateButton'\nimport { EditButton } from '../components/EditButton'\n\nimport * as UFE from '../../../../UFE'\n\n/* This component is currently used on project tab and FAQ tab but some behaviours and one style are different:\n- Project tab: Project FAQ is opened on desktop and closed on mobile + \"Read full FAQ\" plume.Link\n- FAQ tab: Project FAQ is always opened + \"Read more\" plume.Link + specific style on mobile for one title\n*/\nexport function ProjectFaq(): React.ReactElement {\n const { isOpen, updateOpenIndices } = useIndice()\n const navigation = useNavigation()\n const userConfig = env.useUserEnv()\n\n const dispatch = Redux.useDispatch()\n const { faq, impact, project: projectState } = Redux.useSelector((state) => state.application)\n const displayMode = React.useContext(DisplayMode)\n const project = projectState.data\n const isEditMode = displayMode === 'edit'\n const projectToken = projectState.token\n const lang = project.lang as Lang\n\n const isProjectChallengeSet =\n impact.data?.challenges &&\n Object.keys(impact.data.challenges).length !== 0 &&\n Object.values(impact.data.challenges).find((value) => !!value)\n\n const hasProjectFAQ = faq?.faq?.length > 0\n\n const isProjectTab = navigation.is(PATHS.PROJECT)\n const toFAQ = (): void => navigation.to(PATHS.FAQ)\n const loadMoreFaq = (): void => {\n faq.next && dispatch(loadProjectFaq(project.id, { pagination: `${faq.next}&lang=${userConfig.lang}` }))\n }\n const risksHelperUrl = model.i18n.get(UFE.LINKS.risksHelper)\n\n const faqWrapperRef = React.useRef(null)\n useLazyInitialLoad({\n target: faqWrapperRef,\n load: () => {\n if (faq.status.load === Status.PRISTINE) {\n dispatch(\n loadProjectFaq(\n project.id,\n { pagination: `?limit=5&lang=${userConfig.lang}`, forceClean: true },\n projectToken,\n ),\n )\n }\n if (impact.status.load.status === Status.PRISTINE) {\n dispatch(impactAction.load(project.id, projectToken))\n }\n },\n })\n\n React.useEffect(() => {\n if (impact.data && window.matchMedia('(min-width: 768px)').matches) {\n if (!isOpen('challenges')) {\n updateOpenIndices('challenges')\n }\n }\n }, [impact])\n\n return (\n
\n {faq.status.load === Status.PENDING || (impact.status.load.status === Status.PRISTINE && )}\n {faq.status.load !== Status.PRISTINE &&\n (!hasProjectFAQ &&\n !isProjectChallengeSet &&\n isEditMode &&\n !model.project.refused(project) ? (\n \n {\n document.location.href = `/projects/${project.id}/edit/faq/#tab-content-${userConfig.lang}`\n }}\n mode=\"small\"\n title={{t('Add a FAQ')}}\n />\n \n ) : (\n <>\n {(hasProjectFAQ || isProjectChallengeSet) && (\n \n {\n updateOpenIndices('content')\n }}\n isProjectTab={isProjectTab}\n >\n {t('Questions about the project')}\n {isOpen('content') ? (\n \n ) : (\n \n )}\n \n \n <>\n {isEditMode && !model.project.refused(project) && (\n \n \n \n )}\n {isProjectChallengeSet && impact.data && (\n \n {\n updateOpenIndices('challenges')\n }}\n >\n \n \n {t('What are the risks associated with the project?')}\n \n \n {isOpen('challenges') ? (\n \n ) : (\n \n )}\n \n \n \n

{impact.data ? model.impact.getChallenges(impact.data, lang) : null}

\n
\n \n \n {t('Learn more about risks for Ulule projects')}\n \n \n
\n
\n )}\n {faq?.faq?.map((item, index) => (\n \n {\n updateOpenIndices(index.toString())\n }}\n >\n \n \n {item.question_author ? (\n \n ) : (\n \n {model.faq.getQuestion(item, lang)}\n \n )}\n \n {item.question_author && (\n {model.faq.getQuestion(item, lang)}\n )}\n \n {isOpen(index.toString()) ? (\n \n ) : (\n \n )}\n \n\n \n {item.answer_author ? (\n \n \n\n \n \n ) : (\n \n )}\n \n \n ))}\n {(faq?.next || (isProjectTab && hasProjectFAQ)) && (\n \n \n {isProjectTab ? t('Read full FAQ') : t('See more')}\n \n \n )}\n \n
\n
\n )}\n \n ))}\n
\n )\n}\n\nconst FAQWrapper = styled.div<{ open: boolean }>`\n position: relative;\n border-bottom: ${({ open }) => (!open ? `1px solid ${plume.COLORS.GREY_SHADE_5}` : 'none')};\n margin-bottom: 30px;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n border-bottom: none;\n }\n`\n\nconst Answer = styled.div`\n margin-top: 15px;\n border-bottom: 1px solid ${plume.COLORS.GREY_SHADE_5};\n margin-left: 40px;\n\n &:last-child {\n border-bottom: 0px solid #fff;\n }\n`\n\nconst Question = styled.div`\n border-bottom: 1px solid ${plume.COLORS.GREY_SHADE_5};\n padding: 17px 0px;\n\n &:last-child {\n border-bottom: 0px solid #fff;\n }\n`\n\nconst QuestionContent = styled.div`\n width: 100%;\n`\n\nconst AnswerWrapper = styled(plume.WysiwygContent)`\n margin-top: 4px;\n`\n\nconst Title = styled.div`\n align-items: center;\n cursor: pointer;\n display: flex;\n flex: 1;\n\n svg {\n margin-left: auto;\n color: ${plume.COLORS.GREY_SHADE_7};\n }\n\n ${plume.styles.heading.XXXS} {\n margin-top: 4px;\n }\n`\n\nconst TitleFlex = styled.div`\n display: flex;\n flex: 1;\n\n ${plume.styles.heading.XXXS} {\n margin-top: 0;\n margin-right: 5px;\n }\n`\n\nconst TitleContent = styled.div<{ isProjectTab: boolean }>`\n position: relative;\n\n ${plume.glyphs.Icon} {\n color: ${plume.COLORS.GREY_SHADE_7};\n position: absolute;\n right: 0px;\n top: 50%;\n transform: translateY(-50%);\n display: ${({ isProjectTab }) => (isProjectTab ? 'inline-block' : 'none')};\n }\n\n ${plume.styles.heading.L} {\n font-size: ${({ isProjectTab }) => (isProjectTab ? '26px' : '30px')};\n font-weight: ${({ isProjectTab }) => (isProjectTab ? '500' : '900')};\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n ${plume.glyphs.Icon} {\n display: none;\n }\n\n ${plume.styles.heading.L} {\n font-size: 30px;\n font-weight: 900;\n }\n }\n`\n\nconst LoadMoreWrapper = styled.div`\n margin-top: 45px;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n margin: 45px auto 0px;\n width: 260px;\n }\n\n ${plume.styles.button.Button} {\n padding: 9px 35px;\n }\n`\n\nconst CreateButtonWrapper = styled.div<{ isProjectTab: boolean }>`\n border: 1px solid ${plume.COLORS.PRIMARY_SAND};\n display: flex;\n flex-direction: row;\n height: auto;\n //justify-content: baseline;\n margin-bottom: ${({ isProjectTab }) => (isProjectTab ? '0px' : '30px')};\n padding: 21px 18px;\n text-align: center;\n transition: 0.3s ease;\n\n &:hover {\n box-shadow: ${plume.EFFECTS.SHADOW_1};\n }\n`\n\nconst EditButtonWrapper = styled.div`\n right: 5px;\n top: 0px;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n position: absolute;\n right: 0px;\n }\n`\n", "import * as React from 'react'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { Link, illustrations } from '@ulule/owl-kit-components/next'\n\nexport const FooterContent = {\n rewardBased: [\n {\n content: tc(\n '[link: Ulule] allows creators to fund their projects. By backing, you actively help them make it happen! In return for your support, the creator offers one or more rewards to choose from.',\n {\n link: ,\n },\n ),\n icon: ,\n title: t('From idea to action'),\n },\n {\n content: t(\n 'Ulule is not an online store. The project must reach 100% of its goal to get funded and deliver rewards.',\n ),\n icon: ,\n title: t('All or nothing'),\n },\n {\n content: t(\n 'All payments are secure and we do not store any credit card information. You can cancel and be refunded at any time while the campaign is still ongoing.',\n ),\n icon: ,\n title: t('Secure and without obligation'),\n },\n ],\n donationBased: [\n {\n content: t('Ulule allows creators to fund their projects. By donating, you actively help them make it happen!'),\n icon: ,\n title: t('From idea to action'),\n },\n {\n content: t(\n 'Every donation counts! Whether or not it reaches its goal, the project will receive all donations at the end of its fundraising.',\n ),\n icon: ,\n title: t('One donation after another'),\n },\n {\n content: t(\n 'All our payments are secure and we do not store any banking information. Funds are managed by our payment provider Mangopay.',\n ),\n icon: ,\n title: t('Secure payment'),\n },\n ],\n}\n\nexport const FaqData = {\n rewardBased: [\n {\n question: t('How to participate to the project?'),\n answer: tc(\n 'Ulule\u2019s principle is to receive a reward in exchange of your support. You need to select the reward you would like to get based on the amount you wish to contribute with (it is possible to make a donation without asking for a reward). \\\n [br][br]Click on the Rewards tab to see the list of available rewards and select the one you are interested in. You will be asked to log into your Ulule account or create one if you are not already logged in. Finally proceed to the payment form to support the project. \\\n [br][br]Keep also in mind the social aspect of the project: by sharing it to your network, your help the the project getting known and increasing its chances of success!',\n {\n br:
,\n },\n ),\n },\n\n {\n question: t('What happens if the project is not funded?'),\n answer: tc(\n 'Project owners only receive the funds if their campaign reach or exceeds the initial defined foal. \\\n [br][br]A project is therefore declared non financed if its campaign ends under %(percent)s. Your contribution will then given back to you: \\\n [br]Contribution paid by card to an EUR based project: you will receive a refund within 3 working days. \\\n [br]Contribution with PayPal or by card to a project based on a currency other than EUR: the payment won\u2019t happen.',\n {\n percent: '100%',\n br:
,\n },\n ),\n },\n {\n question: t('When will I be charged?'),\n answer: tc(\n 'An Ulule campaign is based on an All or Nothing principle. It means that the projects owners only receive the funds if the campaign goal is reached. \\\n [br][br]The payment and the debit of your contribution varies based on your payment method and the currency of the project: \\\n [br]Payment by card on a campaign in Euro: the debit takes place at the time of the contribution. If the campaign does not reach its objective, you will get a full refund within a few days after the end of the campaign. \\\n [br]Payment by card on a campaign in another currency: The debit only takes place at the end of the campaign if the project was successful. However, an imprint is taken at the time of contribution to verify that you have the funds. This imprint is reimbursed within 7 days.\\\n [br]Payment by PayPal: You create a direct debit authorization that only takes place if the goal is achieved at the end of the campaign. Note that payment by Paypal is optional, the option is only activated upon request by the project managers.\\\n [br][br]As long as the campaign is active, you have the option to [link: cancel your contribution].',\n {\n br:
,\n link: (\n \n ),\n },\n ),\n },\n {\n question: t('What personal information will be published?'),\n answer: tc(\n 'When you create a profile on Ulule, you specify a certain amount of information that can appear publicly on the Ulule platform and online. The public information is at a minimum your Ulule nickname and, if you make this information public, your first and last name.\\\n [br][br]This information will appear in the list of project supporters, in comments if you leave one, and on your public profile.\\\n [br][br]You can decide at any time to modify the information you post [link1: from your preferences] and can also [link2: make your contribution anonymous].\\\n [br][br]Note that your personal information such as delivery address (if requested) and email address will be shared with the owners of the project you support.',\n {\n br:
,\n link1: (\n \n ),\n link2: (\n \n ),\n },\n ),\n },\n ],\n donationBased: [\n {\n question: t('How to participate to the project?'),\n answer: tc(\n 'You can donate by selecting an amount from the suggestions or enter the donation amount yourself in the dedicated field. If the project accepts monthly donations, you will have to choose between making a one-time donation or giving the same amount every month (you can stop at any time from your settings).\\\n [br][br]You will be asked to log in to your Ulule account or to create one if you are not already logged in. Finally, you will access the payment form to support the fundraising.\\\n [br][br]Think also about the social aspect of the collection: by sharing it with your network, you help the project to be known and increase its chances to get more donations.',\n { br:
},\n ),\n },\n\n {\n question: t('Can I get a refund for a donation?'),\n answer: tc(\n 'The donations you make are final and cannot be cancelled or refunded. If you wish to receive a refund, you must contact the project team and ask them if they can give you back the amount you donated. This will be a private transaction outside of Ulule.\\\n [br][br]In the event that the project team decides to cancel its fundraising, all donations will be fully refunded.',\n { br:
},\n ),\n },\n {\n question: t('When will I be charged?'),\n answer: tc(\n 'Payment and debiting of your transaction take place immediately at the time of contribution.\\\n [br][br]Funding recipients receive the funds when they make a transfer request.',\n { br:
},\n ),\n },\n {\n question: t('What personal information will be published?'),\n answer: tc(\n 'When you create a profile on Ulule, you specify a certain amount of information that can appear publicly on the Ulule platform and online. The public information is at a minimum your Ulule nickname and, if you make this information public, your first and last name.\\\n [br][br]This information will appear in the list of project supporters, in comments if you leave one, and on your public profile.\\\n [br][br]You can decide at any time to modify the information you post from your preferences and can also make your contribution anonymous.\\\n [br][br]Note that your personal information such as delivery address (if requested) and email address will be shared with the owners of the project you support.',\n { br:
},\n ),\n },\n ],\n}\n"], "mappings": "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", "names": ["init_define_process_env", "init_sentry_release_injection_stub", "React", "useIndice", "openIndices", "setOpenIndices", "isOpen", "index", "element", "updateOpenIndices", "activeIndex", "updatedOpenIndices", "init_define_process_env", "init_sentry_release_injection_stub", "React", "_a", "ToggleContent", "src_default", "__template", "open", "height", "breakpoints_exports", "openOnDesktop", "AccordionWrapper", "children", "contentRef", "toggleableHeight", "setToggleableHeight", "init_define_process_env", "init_sentry_release_injection_stub", "React", "ProjectFaq", "_a", "_b", "_c", "isOpen", "updateOpenIndices", "useIndice", "navigation", "useNavigation", "userConfig", "useUserEnv", "dispatch", "useDispatch", "faq", "impact", "projectState", "useSelector", "state", "displayMode", "DisplayMode", "project", "isEditMode", "projectToken", "lang", "isProjectChallengeSet", "value", "hasProjectFAQ", "isProjectTab", "PATHS", "toFAQ", "loadMoreFaq", "loadProjectFaq", "risksHelperUrl", "i18n_exports", "LINKS", "faqWrapperRef", "useLazyInitialLoad", "load", "Spinner", "project_exports", "CreateButtonWrapper", "CreateButton", "styles_exports", "FAQWrapper", "TitleContent", "glyphs_exports", "AccordionWrapper", "EditButtonWrapper", "EditButton", "Question", "Title", "TitleFlex", "AnswerWrapper", "impact_exports", "Link", "item", "index", "QuestionContent", "UserLabel", "user_exports", "faq_exports", "Answer", "LoadMoreWrapper", "src_default", "__template", "open", "colors_exports", "breakpoints_exports", "_d", "_e", "WysiwygContent", "_f", "_g", "_h", "_i", "_j", "effects_exports", "_k", "init_define_process_env", "init_sentry_release_injection_stub", "React", "FooterContent", "Link", "illustrations_exports", "FaqData"] }