{"version":3,"file":"js/participant_referrals-6e113990fad7400363f0.js","mappings":"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","sources":["webpack://user-interviews/./app/javascript/common/icons/referrals/referral_icon.jsx","webpack://user-interviews/./app/javascript/participant/referrals/referral_card.jsx","webpack://user-interviews/./app/javascript/packs/participant_referrals.js","webpack://user-interviews/./app/javascript/hoc/with_tracked_click.jsx","webpack://user-interviews/./app/javascript/hoc/utils.ts"],"sourcesContent":["import React from 'react';\n\nimport ReferralBgWhite from 'images/referral-bg-white.png';\n\nexport function ReferralIcon() {\n return <img alt=\"\" src={ReferralBgWhite} />;\n}\n","import React from 'react';\nimport {\n Card,\n CopyToClipboardButton,\n FlexContainer,\n Heading,\n Text,\n Tooltip,\n} from '@user-interviews/ui-design-system';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { TrackedAnchor } from 'common/analytics';\nimport { ReferralIcon } from 'common/icons/referrals/referral_icon';\n\nimport * as routes from 'lib/routes';\nimport { reactTrackingEvent, track, trackingEvents } from 'lib/analytics';\nimport { faEnvelope } from 'lib/font_awesome/regular';\nimport * as propTypes from 'lib/prop_types';\n\n// eslint-disable-next-line local-rules/css_modules\nimport './referral_card.scss';\n\nconst referralEmailBody =\n 'Hi! I participate in paid research studies at User Interviews, and came \\\nacross this opportunity that I thought you might be interested in. Participating is really fun, \\\nand a great way to share your unique perspective to help influence new products.%0A%0AApplying is \\\neasy! Follow the link below.%0A%0A';\n\nconst referralEmailSubject = 'Interested in this paid study opportunity?';\n\nfunction ReferralCard({ incentive, payBothEnabled, url }) {\n const title = payBothEnabled\n ? `Refer a friend. Give $${incentive}, get $${incentive}.`\n : `Refer a participant. Get $${incentive}.`;\n const subtitle = (\n <p>\n {payBothEnabled ? (\n <>\n For every new participant you refer who completes this study using\n your unique link below,{` `}\n you'll get ${incentive} and they'll get ${incentive}.\n </>\n ) : (\n <>\n Get ${incentive} if one of your referrals successfully completes this\n study using your unique link below.\n </>\n )}\n <Tooltip\n placement=\"right\"\n text={\n <>\n A referral is a new participant who uses the referral link to create\n an account and completes the study you referred them to.{` `}\n <a href={routes.referral_support_path()}>Learn more.</a>\n </>\n }\n />\n </p>\n );\n\n return (\n <Card className=\"ReferralCard\" size=\"sm\">\n <FlexContainer\n className=\"ReferralCard__icon-container\"\n flexDirection=\"row\"\n justifyContent=\"center\"\n >\n <ReferralIcon className=\"ReferralCard__icon\" />\n </FlexContainer>\n <Heading level={2} size=\"xl\">\n {title}\n </Heading>\n <Text>{subtitle}</Text>\n <div className=\"ReferralCard__buttons\">\n <CopyToClipboardButton\n copyText={url}\n displayText=\"Copy share link\"\n trackingEvent={trackingEvents.PARTICIPANT_COPY_REFERRAL_LINK_CLICKED}\n variant=\"secondary\"\n />\n <TrackedAnchor\n className=\"btn btn-outline-neutral\"\n event={trackingEvents.PARTICIPANT_EMAIL_REFERRAL_LINK_CLICKED}\n href={`mailto:?body=${referralEmailBody}${url}&subject=${referralEmailSubject}`}\n >\n <FontAwesomeIcon className=\"icon-left\" icon={faEnvelope} />\n Send via email\n </TrackedAnchor>\n </div>\n </Card>\n );\n}\nReferralCard.propTypes = {\n incentive: propTypes.string.isRequired,\n payBothEnabled: propTypes.bool,\n source: propTypes.string.isRequired,\n url: propTypes.string.isRequired,\n};\n\nReferralCard.defaultProps = {\n payBothEnabled: false,\n};\n\nexport default track(\n (props) => ({ incentive: props.incentive, source: props.source }),\n {\n dispatch: reactTrackingEvent,\n dispatchOnMount: () => ({\n event: trackingEvents.PARTICIPANT_REFERRAL_CARD_VIEWED,\n }),\n },\n)(ReferralCard);\n","import { registerComponent } from 'lib/react_on_rails';\nimport ReferralCard from 'participant/referrals';\n\nregisterComponent('ReferralCard', ReferralCard);\n","import React, { Component } from 'react';\n\nimport { track, trackingPropsShape } from 'lib/analytics';\nimport * as propTypes from 'lib/prop_types';\n\nimport { getDisplayName } from './utils';\n\nexport default function withTrackedClick(Target) {\n class TrackedComponent extends Component {\n static displayName = `${getDisplayName(Target)}WithTrackedClick`;\n\n static propTypes = {\n event: propTypes.string.isRequired,\n eventData: propTypes.object,\n onClick: propTypes.func,\n ...trackingPropsShape,\n };\n\n static defaultProps = {\n eventData: {},\n };\n\n handleClick = (event) => {\n this.props.tracking.trackEvent({\n ...this.props.eventData,\n event: this.props.event,\n });\n\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n get targetProps() {\n const transferProps = { ...this.props };\n\n // Need to remove eventData, otherwise child props complain about:\n // https://reactjs.org/warnings/unknown-prop.html\n delete transferProps.eventData;\n\n return {\n ...transferProps,\n onClick: this.handleClick,\n };\n }\n\n render() {\n return <Target {...this.targetProps} />;\n }\n }\n\n return track()(TrackedComponent);\n}\n","import type { ComponentType } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDisplayName(WrappedComponent: ComponentType<any>) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n"],"names":["ReferralIcon","React","alt","src","ReferralBgWhite","ReferralCard","incentive","payBothEnabled","url","title","subtitle","Tooltip","placement","text","href","routes","Card","className","size","FlexContainer","flexDirection","justifyContent","Heading","level","Text","CopyToClipboardButton","copyText","displayText","trackingEvent","trackingEvents","PARTICIPANT_COPY_REFERRAL_LINK_CLICKED","variant","TrackedAnchor","event","PARTICIPANT_EMAIL_REFERRAL_LINK_CLICKED","FontAwesomeIcon","icon","faEnvelope","propTypes","isRequired","source","defaultProps","track","props","dispatch","reactTrackingEvent","dispatchOnMount","PARTICIPANT_REFERRAL_CARD_VIEWED","registerComponent","withTrackedClick","Target","TrackedComponent","Component","constructor","args","handleClick","this","tracking","trackEvent","_objectSpread","eventData","onClick","targetProps","transferProps","render","displayName","getDisplayName","trackingPropsShape","WrappedComponent","name"],"sourceRoot":""}