{ "version": 3, "sources": ["../../../../../../owl-nest/ulule/features/project/src/public/context.ts", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/utils/trackerEnums.ts", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/components/FollowProjectButton.tsx", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/hooks/useReduxProjectFollowing.ts", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/hooks/useProjectFollowing.ts", "../../../../../../owl-nest/ulule/features/project/src/actions/fandom.ts", "../../../../../../owl-nest/ulule/features/project/src/public/views/detail/components/Sidebar.tsx", "../../../../../../owl-nest/ulule/features/project/src/public/utils/URLs.ts"], "sourcesContent": ["import * as React from 'react'\n\nexport const DisplayMode = React.createContext('preview')\n", "export enum TRACKING_ACTION {\n ACCESS_CHECKOUT = 'access_checkout',\n ADD_REWARD = 'add_reward',\n CLICK_OFFBOARDING = 'click_offboarding',\n CLICK_SHARE = 'click_share',\n DISPLAY_REWARD = 'display_reward',\n FOLLOW_PROJECT = 'follow_project',\n OPEN_SHARE = 'open_share',\n}\n\nexport enum TRACKING_SOURCE {\n BACKER_BLOCK = 'source_backer_block',\n BACKERS = 'source_backers',\n FIRST_TIME_FOOTER = 'source_1st_time_footer',\n HERO = 'source_hero',\n MODAL = 'source_modal',\n NEWS = 'source_news',\n PAYMENT_DISTURBANCE = 'source_payment_disturbance_modal',\n PROJECT = 'source_project',\n PROJECT_BACKERS_LISTING = 'project_backers_listing',\n REWARD_MODAL = 'source_reward_modal',\n REWARDS = 'source_rewards',\n STICKY_MENU = 'source_sticky_menu',\n STICKY_MOBILE = 'source_sticky_mobile',\n}\n", "import * as React from 'react'\nimport * as Redux from 'react-redux'\n\nimport { t } from '@owl-nest/localize'\nimport { useAuth } from '@owl-nest/redux-wrapper/hooks'\nimport { CATEGORY } from '@owl-nest/shadow'\n\nimport { glyphs, ActionButton } from '@ulule/owl-kit-components/next'\n\nimport * as modalAction from '../../../../actions/modal'\nimport { useReduxProjectFollowing } from '../hooks/useReduxProjectFollowing'\nimport { TRACKING_ACTION, TRACKING_SOURCE } from '../utils/trackerEnums'\n\ntype FollowProjectButtonProps = {\n source: TRACKING_SOURCE\n}\n\nexport function FollowProjectButton({\n source,\n}: FollowProjectButtonProps): React.ReactElement {\n const auth = useAuth()\n const dispatch = Redux.useDispatch()\n const { toggleFollowing, userFollowsProject } = useReduxProjectFollowing({\n trackingExtraData: {\n eventCategory: CATEGORY.PROJECT_PAGE,\n eventAction: TRACKING_ACTION.FOLLOW_PROJECT,\n eventLabel: source,\n },\n })\n\n const followingStatusRef = React.useRef(userFollowsProject)\n\n const userIsAuthenticated = auth.type === 'loggedin'\n\n React.useEffect(() => {\n if (!followingStatusRef.current && userFollowsProject) {\n dispatch(modalAction.toggleModalFollow(true))\n } else followingStatusRef.current = userFollowsProject\n }, [userFollowsProject])\n\n return (\n {\n if (!userIsAuthenticated) dispatch(modalAction.toggleModalFollow(true))\n else {\n toggleFollowing()\n }\n }}\n contents={{\n active: (\n <>\n {t('Followed')} \n \n ),\n activeHover: {t('Unfollow')},\n inactive: (\n <>\n {t('Follow')} \n \n ),\n }}\n />\n )\n}\n", "import * as Redux from 'react-redux'\n\nimport * as projectModel from '../../../models/project'\nimport { TrackingExtraData, useProjectFollowing } from './useProjectFollowing'\nimport { toggleUserFollowingStatus } from '../../../../actions/fandom'\nimport { RootState } from '../../../../reducers'\n\ntype UseProjectFollowingOptions = {\n trackingExtraData?: TrackingExtraData\n}\n\ntype UseProjectFollowing = (\n options: UseProjectFollowingOptions,\n) => {\n toggleFollowing: () => void\n userFollowsProject: boolean\n}\n\nexport const useReduxProjectFollowing: UseProjectFollowing = ({ trackingExtraData }) => {\n const dispatch = Redux.useDispatch()\n const userFollowsProject = Redux.useSelector(state => state.application.fandom.userIsAFollower)\n const project = Redux.useSelector(state => state.application.project.data)\n\n const toggleFollowing = useProjectFollowing({\n callback: () => {\n dispatch(toggleUserFollowingStatus(!userFollowsProject))\n },\n project,\n trackingExtraData,\n userFollowsProject,\n })\n\n return { toggleFollowing, userFollowsProject }\n}\n", "import * as Redux from 'react-redux'\nimport { Dispatch } from 'redux'\n\nimport * as shadow from '@owl-nest/shadow'\nimport * as api from '@owl-nest/api-client/latest'\n\nimport { likeProject, unlikeProject } from '../../../../actions/project'\n\nexport type TrackingExtraData = {\n eventAction?: string\n eventCategory?: shadow.CATEGORY\n eventLabel?: string\n}\n\ntype UseProjectFollowing = () => void\n\ntype UseProjectFollowingOptions = {\n callback: () => void\n project: api.Project\n trackingExtraData?: TrackingExtraData\n userFollowsProject: boolean\n}\n\nexport function useProjectFollowing({\n callback,\n project,\n trackingExtraData,\n userFollowsProject,\n}: UseProjectFollowingOptions): UseProjectFollowing {\n const dispatch = Redux.useDispatch()\n const tracking = shadow.useTracking()\n\n if (userFollowsProject) {\n return () => {\n tracking.social.track({\n ...trackingExtraData,\n socialAction: 'Unlike',\n socialNetwork: shadow.SOCIAL_NETWORK.ULULE,\n socialTarget: project.absolute_url,\n })\n dispatch(unlikeProject(project.id)).then(callback)\n }\n } else {\n return () => {\n tracking.social.track({\n ...trackingExtraData,\n socialAction: 'Like',\n socialNetwork: shadow.SOCIAL_NETWORK.ULULE,\n socialTarget: project.absolute_url,\n })\n dispatch(likeProject(project.id)).then(() => callback())\n }\n }\n}\n", "import { ApiResponse, RequestFailure } from '@owl-nest/api-client'\nimport * as api from '@owl-nest/api-client/latest'\nimport { PromiseAction } from '@owl-nest/redux-wrapper'\nimport { RootState } from '../reducers'\n\nexport enum ACTION_TYPE {\n TOGGLE_USER_STATUS = 'FANDOM.TOGGLE_USER_STATUS',\n LOAD_FANS_REQUEST = 'LOAD_FANS_REQUEST',\n LOAD_FANS_SUCCESS = 'LOAD_FANS_SUCCESS',\n LOAD_FANS_FAILURE = 'LOAD_FANS_FAILURE',\n}\n\ntype ToggleUserStatus = { type: ACTION_TYPE.TOGGLE_USER_STATUS; isFollowing: boolean }\n\nexport function toggleUserFollowingStatus(isFollowing: boolean): ToggleUserStatus {\n return {\n type: ACTION_TYPE.TOGGLE_USER_STATUS,\n isFollowing,\n }\n}\n\ntype LoadFanFailure = { type: ACTION_TYPE.LOAD_FANS_FAILURE; failure: RequestFailure }\ntype LoadFanRequest = { type: ACTION_TYPE.LOAD_FANS_REQUEST }\ntype LoadFanSuccess = {\n type: ACTION_TYPE.LOAD_FANS_SUCCESS\n success: api.Pageable> & { forceClean: boolean }\n}\n\ntype LoadConfig = {\n pagination?: string\n extraFields?: EXTRA_FIELDS[]\n forceClean?: boolean\n}\n\nexport function loadProjectFans(\n projectId: number,\n { pagination = undefined, extraFields = [], forceClean = false }: LoadConfig = {},\n): PromiseAction> & { forceClean: boolean }>> {\n const search = new URLSearchParams(pagination)\n search.set('extra_fields', extraFields.join(','))\n\n return {\n types: [ACTION_TYPE.LOAD_FANS_REQUEST, ACTION_TYPE.LOAD_FANS_SUCCESS, ACTION_TYPE.LOAD_FANS_FAILURE],\n promise: async (_, state) => {\n const response = await api.api.get.projectFan({\n urlParams: { projectId: projectId.toString() },\n getParams: search,\n withToken: state.user.identity.type === 'loggedin',\n })\n return response.next(\n (success) =>\n ({ ...success.body, forceClean } as api.Pageable> & { forceClean: boolean }),\n )\n },\n }\n}\n\nexport type FanAction = ToggleUserStatus | LoadFanRequest | LoadFanSuccess | LoadFanFailure\n", "import * as React from 'react'\nimport * as Redux from 'react-redux'\n\nimport { Link as RouterLink, To } from 'react-router-dom'\nimport styled, { css } from 'styled-components'\n\nimport * as model from '@owl-nest/models'\nimport { t } from '@owl-nest/localize'\nimport {\n BREAKPOINTS,\n COLORS,\n illustrations,\n Link,\n LinkProps,\n Pastille,\n styles as S,\n} from '@ulule/owl-kit-components/next'\nimport { CATEGORY, EVENT_TYPE, useTracking } from '@owl-nest/shadow'\n\nimport * as projectModel from '../../../models/project'\nimport { PATHS } from '../../../paths'\nimport { FollowProjectButton } from '../components/FollowProjectButton'\nimport { useNavigation } from '../../../hooks/useNavigation'\nimport { TRACKING_ACTION, TRACKING_SOURCE } from '../utils/trackerEnums'\nimport { RootState } from '../../../../reducers'\nimport * as modalAction from '../../../../actions/modal'\nimport { DisplayMode } from '../../../context'\nimport * as URLs from '../../../utils/URLs'\nimport { EDIT_MODE_LAPTOP_BREAKPOINT } from '../constants'\n\nexport const SidebarPrimaryBlock = styled.article<{ fullWidth?: boolean }>`\n background-color: ${COLORS.PRIMARY_SAND};\n box-sizing: border-box;\n margin-top: 60px;\n max-width: 100%;\n padding: 40px 20px 20px;\n position: relative;\n text-align: center;\n\n ${({ fullWidth = false }) => {\n if (fullWidth) {\n return css`\n width: 100%;\n `\n }\n }}\n\n ${S.heading.XXXS} {\n margin-bottom: 5px;\n }\n\n ${S.copy.M} {\n margin-bottom: 16px;\n }\n\n ${Pastille} {\n left: calc(50% - 30px);\n margin: 0 auto 5px;\n position: absolute;\n top: -30px;\n\n span {\n font-size: 35px;\n }\n }\n`\n\nexport const SidebarSecondaryBlock = styled.article`\n border: 2px solid ${COLORS.PRIMARY_SAND};\n padding: 24px 21px;\n text-align: center;\n\n ${S.button.CallToAction} {\n margin-top: 12px;\n }\n`\n\nconst CTAWrapper = styled.div<{ isEditMode: boolean }>`\n display: none;\n\n @media screen and ${({ isEditMode }) => (isEditMode ? EDIT_MODE_LAPTOP_BREAKPOINT : BREAKPOINTS.LAPTOP)} {\n align-items: center;\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n`\n\nconst CTA = styled(S.button.CallToAction)<{ isEditMode: boolean }>`\n margin-bottom: 20px;\n\n @media screen and ${({ isEditMode }) => (isEditMode ? EDIT_MODE_LAPTOP_BREAKPOINT : BREAKPOINTS.LAPTOP)} {\n margin: 0 auto;\n margin-top: 34px;\n margin-bottom: 14px;\n width: 260px;\n }\n`\n\ntype SidebarNewsCTAProps = {\n className?: string\n source: TRACKING_SOURCE\n}\n\nexport function SidebarNewsCTA({ className, source }: SidebarNewsCTAProps): React.ReactElement {\n return (\n \n \n \n \n {t('Receive project posts directly in your inbox!')}\n {t('Follow the project to be updated on its progress.')}\n \n \n )\n}\n\nexport function SidebarRewardsCTA(): React.ReactElement {\n const navigation = useNavigation()\n return (\n \n {t('Back the project and receive rewards in return.')}\n \n {t('See rewards')}\n \n \n )\n}\n\nexport function SidebarDonationCTA(): React.ReactElement {\n const project = Redux.useSelector((state) => state.application.project.data)\n const dispatch = Redux.useDispatch()\n const isEditMode = React.useContext(DisplayMode) === 'edit'\n const tracking = useTracking()\n\n return (\n \n {t('Make a donation to support this project and help it become a success')}\n {model.project.hasCheckout(project) && (\n \n {\n if (project.is_online && !model.project.isFinished(project)) {\n if (!model.project.isOrdersEnabled(project)) {\n dispatch(modalAction.toggleModalPaymentDisturbance(true))\n } else {\n tracking.track({\n event: EVENT_TYPE.GENERIC,\n eventCategory: CATEGORY.PROJECT_PAGE,\n eventAction: TRACKING_ACTION.ACCESS_CHECKOUT,\n eventLabel: TRACKING_SOURCE.FIRST_TIME_FOOTER,\n })\n document.location.href = URLs.getCheckoutURL(project.id)\n }\n } else if (project.post_campaign_link) {\n dispatch(modalAction.toggleModalPostCampaign(true))\n }\n }}\n size=\"medium\"\n >\n {t('Donate')}\n \n \n )}\n \n )\n}\n\ntype SidebarRouterLinkProps = {\n to: To\n} & LinkProps\n\nexport function SidebarRouterLink({\n to,\n ...props\n}: SidebarRouterLinkProps): React.ReactElement {\n return (\n \n {props.children}\n \n )\n}\n", "import type * as api from '@owl-nest/api-client/latest'\nimport * as models from '@owl-nest/models'\nimport { searchParams } from '@owl-nest/utils'\n\nexport function getCheckoutURL(\n projectID: number,\n params?: {\n donationFrequency?: models.project.DonationFrequency\n optionValuesIds?: string[]\n rewardID?: number\n tipAmount?: number\n },\n): string {\n return searchParams.addSearchParamsToUrl(`/projects/${projectID}/checkout`, {\n ...(params?.donationFrequency !== undefined && { frequency: params?.donationFrequency }),\n ...(params?.optionValuesIds !== undefined && { valuesIds: params?.optionValuesIds.join(',') }),\n ...(params?.rewardID !== undefined && { reward: params?.rewardID }),\n ...(params?.tipAmount !== undefined && { tip: params?.tipAmount }),\n })\n}\n\nexport const getAddNewsURL = (project: api.Project): string => {\n return project.urls.web.edit.news.add\n}\n"], "mappings": "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", "names": ["init_define_process_env", "init_sentry_release_injection_stub", "React", "DisplayMode", "init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "React", "init_define_process_env", "init_sentry_release_injection_stub", "init_define_process_env", "init_sentry_release_injection_stub", "useProjectFollowing", "callback", "project", "trackingExtraData", "userFollowsProject", "dispatch", "useDispatch", "tracking", "useTracking", "__spreadProps", "__spreadValues", "unlikeProject", "likeProject", "init_define_process_env", "init_sentry_release_injection_stub", "toggleUserFollowingStatus", "isFollowing", "loadProjectFans", "projectId", "pagination", "extraFields", "forceClean", "search", "_", "state", "api", "success", "__spreadProps", "__spreadValues", "useReduxProjectFollowing", "trackingExtraData", "dispatch", "useDispatch", "userFollowsProject", "useSelector", "state", "project", "useProjectFollowing", "toggleUserFollowingStatus", "FollowProjectButton", "source", "auth", "useAuth", "dispatch", "useDispatch", "toggleFollowing", "userFollowsProject", "useReduxProjectFollowing", "followingStatusRef", "userIsAuthenticated", "toggleModalFollow", "ActionButton", "glyphs_exports", "init_define_process_env", "init_sentry_release_injection_stub", "React", "init_define_process_env", "init_sentry_release_injection_stub", "getCheckoutURL", "projectID", "params", "searchParams_exports", "__spreadValues", "getAddNewsURL", "project", "_a", "_b", "SidebarPrimaryBlock", "src_default", "__template", "colors_exports", "fullWidth", "css", "styles_exports", "Pastille", "_c", "SidebarSecondaryBlock", "_d", "CTAWrapper", "isEditMode", "EDIT_MODE_LAPTOP_BREAKPOINT", "breakpoints_exports", "_e", "CTA", "SidebarNewsCTA", "className", "source", "illustrations_exports", "FollowProjectButton", "SidebarRewardsCTA", "navigation", "useNavigation", "Link", "PATHS", "SidebarDonationCTA", "project", "useSelector", "state", "dispatch", "useDispatch", "DisplayMode", "tracking", "useTracking", "project_exports", "getCheckoutURL", "toggleModalPaymentDisturbance", "toggleModalPostCampaign", "SidebarRouterLink", "to", "props", "__objRest"] }