{"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":""}