{"version":3,"file":"govx-desktop.affiliatepage.20454f7de2886bc8352e.js","mappings":"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","sources":["webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/OccupationUtilities.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/OfferCTA/index.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/AffiliateOfferDiscountModal/index.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/AffiliateOfferDiscountCodeModal/index.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/AffiliateOfferProtectedLinkModal/index.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/EligibleGroupsModal/index.js","webpack://@govx/govx-shop/./src/components/Occupations/EligibilityIconList.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/OfferCard/index.js","webpack://@govx/govx-shop/./src/desktop/components/common/Tabs/index.js","webpack://@govx/govx-shop/./src/desktop/components/common/Tabs/tab.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/AffiliateHeroImageTop/index.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/MultipleOffersModal/index.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/AffiliateEvents/index.js","webpack://@govx/govx-shop/./src/desktop/components/AffiliatePage/index.js"],"sourcesContent":["export const getEligibleGroupsText = (eligibleGroups) => {\n let value = ''\n let validGroups = eligibleGroups.filter((g) => g <= 4)\n let newValues = []\n let milTitle\n \n if (validGroups.filter((g) => g === 1 || g === 2).length === 2) {\n milTitle = 'U.S. Military'\n } else if (validGroups.some((g) => g === 1)) {\n milTitle = 'U.S. Military'\n } else if (validGroups.some((g) => g === 2)) {\n milTitle = 'U.S. Military Families'\n }\n \n if (milTitle) {\n newValues.push(milTitle)\n }\n for (var i = 0; i < validGroups.length; i++) {\n switch (validGroups[i]) {\n case 3:\n newValues.push('Law Enforcement')\n newValues.push('Fire')\n newValues.push('Medical')\n break\n case 4:\n newValues.push('U.S. Government')\n break\n default:\n break\n }\n }\n \n for (let i = 0; i < newValues.length; i++) {\n let val = newValues[i]\n \n if (i > 0 && i === newValues.length - 1) {\n value += `, and ${val}`\n } else if (i > 0) {\n value += `, ${val}`\n } else {\n value += val\n }\n }\n \n return value\n }","import React from 'react'\nimport { connect } from 'react-redux'\nimport {\n compose,\n withState,\n lifecycle,\n branch,\n renderNothing,\n renderComponent,\n} from 'recompose'\nimport { withStyles } from '@material-ui/core/styles'\nimport Typography from '@material-ui/core/Typography'\nimport Button from '../../common/Button'\nimport NoActionLink from '../../common/links/NoActionLink'\nimport { viewAffiliateOffer } from '../../../../redux/modules/affiliates'\nimport useCordialEvent from '../../../../hooks/useCordialEvent'\n\nconst styles = {\n buttonContainer: {\n width: '175px',\n },\n button: {\n backgroundColor: '#0E5777',\n border: 'solid 2px #0E5777',\n '&:hover': {\n border: 'solid 2px #093C53',\n backgroundColor: '#093C53',\n },\n }\n}\n\nexport const OfferCTALoggedOut = ({\n offer,\n classes,\n onSignupClick,\n onLoginClick,\n onOfferClick,\n}) => (\n <div className={classes.buttonContainer}>\n <div>\n <Button\n className={classes.button}\n style={{ width: '175px' }}\n children='SIGN UP FOR GOVX'\n onClick={onSignupClick}\n />\n <Typography variant='caption' align='center' style={{ marginTop: '4px' }}>\n Already a member? \n <NoActionLink\n style={{ color: '#00a1df' }}\n children='Log in'\n onClick={onLoginClick}\n />\n </Typography>\n </div>\n </div>\n)\n\nexport const OfferCTAMembershipPending = ({ offer, classes, onOfferClick }) => (\n <div className={classes.buttonContainer}>\n <div>\n <Button\n className={classes.button}\n style={{ width: '175px' }}\n children='MEMBERSHIP PENDING'\n disabled\n />\n </div>\n </div>\n)\n\nexport const OfferCTA = ({\n offer,\n affiliate,\n classes,\n onRestrictionsClick,\n onOfferClick,\n}) => {\n const clickOfferEvent = useCordialEvent('click-offer', {\n sellerId: affiliate.id,\n sellerName: affiliate.name,\n })\n return (\n <div className={classes.buttonContainer}>\n <Button\n className={classes.button}\n style={{ width: '175px', fontFamily: 'geomanist-medium'}}\n children={offer.cta}\n onClick={(e) => {\n onOfferClick(e, affiliate)\n clickOfferEvent()\n }}\n />\n </div>\n )\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n track: (offer, affiliate) => dispatch(viewAffiliateOffer(offer, affiliate)),\n})\n\nconst enhance = compose(\n connect(null, mapDispatchToProps),\n withState('error', 'setError', (props) => null),\n lifecycle({\n componentDidMount() {\n this.props.track(this.props.offer, this.props.affiliate)\n },\n componentDidCatch(error, info) {\n this.props.setError(error)\n console.log('Error in OfferCTA:', error, info.componentStack)\n },\n }),\n withStyles(styles),\n branch(({ error }) => error, renderNothing),\n branch(({ user }) => !user, renderComponent(OfferCTALoggedOut)),\n branch(\n ({ user }) => user.isRegistered && !user.isApproved,\n renderComponent(OfferCTAMembershipPending),\n ),\n)\n\nexport default enhance(OfferCTA)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { compose, lifecycle, withHandlers, withState } from 'recompose'\nimport ModalContainer from '../../common/modals/ModalContainer'\nimport Button from '../../common/Button/Primary'\nimport CancelButton from '../../common/Button/Cancel'\nimport ExternalLink from '../../common/links/ExternalLink'\nimport {\n hideModal,\n gotoRegister,\n fetchOfferDiscount,\n clickAffiliateModalDiscount,\n gotoOfferLink,\n} from '../../../../redux/actions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport { FETCH_OFFER_DISCOUNT_REQUEST } from '../../../../redux/action-types'\nimport { LinearProgress } from '@material-ui/core'\nimport { getEligibleGroupsText } from '../OccupationUtilities'\n\nconst styles = (theme) => ({\n cancelButton: {\n color: theme.colors.darkBlue,\n border: 'solid 2px ' + theme.colors.darkBlue,\n fontWeight: '600',\n '&:hover': {\n color: theme.colors.white,\n backgroundColor: theme.colors.darkBlue,\n border: 'solid 2px ' + theme.colors.darkBlue,\n },\n },\n})\n\nconst AffiliateOfferDiscountModal = ({\n affiliate,\n offer,\n onOfferClick,\n classes,\n}) => {\n return (\n <ModalContainer title='Claim your exclusive offer!' maxWidth='440px'>\n <div>\n <DialogContent>\n {offer && offer.instructions && <p>{offer.instructions}</p>}\n <p>\n This offer is redeemable at the {affiliate.name} website. Click the\n button below and we’ll redirect you to take advantage of this\n special offer.\n </p>\n <p style={{ color: '#999', fontSize: '14px' }}>\n You will be redirected to{' '}\n {(affiliate && affiliate.name) || 'another site'} to complete your\n purchase.\n </p>\n </DialogContent>\n {offer && offer.link ? (\n <ExternalLink unstyled url={offer.link} newWindow={true}>\n <Button\n children='Redeem Offer'\n type='cta'\n style={{ width: '100%' }}\n onClick={() => {\n onOfferClick(offer)\n }}\n />\n </ExternalLink>\n ) : (\n <LinearProgress/>\n )}\n </div>\n </ModalContainer>\n )\n}\n\nconst ErrorModal = ({ error, closeModal, classes, goRegister }) => (\n <ModalContainer title={error.title} maxWidth='440px'>\n <div>\n <DialogContent>{error.content}</DialogContent>\n <DialogActions>\n <CancelButton\n children='Dismiss'\n onClick={closeModal}\n className={classes.cancelButton}\n />\n {!error && (\n <Button\n children='Get Verified'\n color='secondary'\n onClick={() => goRegister()}\n />\n )}\n </DialogActions>\n </div>\n </ModalContainer>\n)\nconst getGenericErrorMessage = () => ({\n type: 'general_error',\n title: 'Something went wrong',\n content: (\n <p>\n Unfortunately, this offer is not currently available. We apologize for the\n inconvenience. Please try back again later.\n </p>\n ),\n})\n\nconst getErrorMessage = (offer, eligibleGroupsDescription) => {\n if (!offer) return null\n\n switch (offer.type) {\n case 'DiscountCodeWithLinkModel':\n return null\n case 'OfferEventErrorModel':\n case 'ClaimOfferErrorModel':\n if (offer.title === '24_hour_limit') {\n return {\n type: '24_hour_limit',\n title: 'Coupon limit reached',\n content: (\n <>\n <p>\n Our records show that you claimed a coupon code in the last day.\n This offer is limited to one coupon per 24 hours, which means\n you have reached the daily limit.\n </p>\n <p>Please check back again tomorrow to claim a new code.</p>\n </>\n ),\n }\n } else if (offer.title === 'User is not eligible') {\n let notEligibleDescription = (\n <>\n <p>This offer is only available to select groups.</p>\n </>\n )\n if (eligibleGroupsDescription)\n notEligibleDescription = (\n <>\n <p>\n This offer is only available to select groups, including members\n of the {eligibleGroupsDescription}.\n </p>\n </>\n )\n\n return {\n type: 'not_eligible',\n title: \"Sorry! It looks like you don't qualify for this offer.\",\n content: notEligibleDescription,\n }\n } else {\n return getGenericErrorMessage()\n }\n default:\n return getGenericErrorMessage()\n }\n}\n\nexport const AffiliateOfferDiscountModalContainer = ({\n goRegister,\n eligibleGroupsText,\n affiliate,\n offer,\n classes,\n onOfferClick,\n closeModal,\n}) => {\n var error = getErrorMessage(offer, eligibleGroupsText)\n return error\n ? ErrorModal({ error, closeModal, classes, goRegister })\n : AffiliateOfferDiscountModal({\n affiliate,\n offer,\n onOfferClick,\n classes,\n })\n}\n\nAffiliateOfferDiscountModalContainer.propTypes = {\n affiliate: PropTypes.object.isRequired,\n onOfferClick: PropTypes.func.isRequired,\n copy: PropTypes.string.isRequired,\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n getOffer: () =>\n dispatch(\n fetchOfferDiscount(ownProps.affiliate, {\n ...ownProps.offer,\n offerButtonName: ownProps.offerButtonName,\n }),\n ),\n goRegister: () => dispatch(gotoRegister()),\n onOfferClick: (offer) => {\n dispatch(\n clickAffiliateModalDiscount({\n affiliate: ownProps.affiliate,\n offer: ownProps.offer,\n discountCode: offer.discountCode,\n object: ownProps.isEvent ? 'event' : null,\n }),\n )\n dispatch(gotoOfferLink({ affiliate: ownProps.affiliate, newWindow: true }))\n },\n closeModal: () => {\n dispatch(hideModal())\n },\n setOfferViewed: () => {\n dispatch({\n type: FETCH_OFFER_DISCOUNT_REQUEST,\n data: { affiliate: ownProps.affiliate, offer: { discountCode: ownProps.offerClaim?.discountCode, ...ownProps.offer}, object: ownProps.isEvent ? 'event' : null },\n })\n },\n})\n\nconst enhance = compose(\n connect(null, mapDispatchToProps),\n withState('offer', 'setOffer', () => null),\n withState('eligibleGroupsText', 'setEligibleGroupsText', null),\n withState('copy', 'setCopy', () => 'Copy'),\n withStyles(styles),\n lifecycle({\n componentDidMount() {\n if (this.props.offer) {\n this.props.setEligibleGroupsText(\n getEligibleGroupsText(this.props.offer.eligibleGroups),\n )\n }\n if (this.props.offerClaim) {\n this.props.setOffer(this.props.offerClaim)\n this.props.setOfferViewed()\n } else {\n this.props.getOffer(this.props.affiliate).then((r) => {\n this.props.setOffer(r)\n })\n }\n },\n }),\n)\n\nexport default enhance(AffiliateOfferDiscountModalContainer)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { compose, lifecycle, withHandlers, withState } from 'recompose'\nimport ModalContainer from '../../common/modals/ModalContainer'\nimport Button from '../../common/Button'\nimport CancelButton from '../../common/Button/Cancel'\nimport ExternalLink from '../../common/links/ExternalLink'\nimport {\n fetchOfferDiscount,\n gotoOfferLink,\n hideModal,\n gotoRegister,\n clickAffiliateModalDiscountCode,\n} from '../../../../redux/actions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport LinearProgress from '@material-ui/core/LinearProgress'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport { Alert, AlertTitle } from '@material-ui/lab'\nimport { FETCH_OFFER_DISCOUNT_REQUEST } from '../../../../redux/action-types'\nimport { getEligibleGroupsText } from '../OccupationUtilities'\n\nconst styles = (theme) => ({\n cancelButton: {\n color: theme.colors.darkBlue,\n border: 'solid 2px ' + theme.colors.darkBlue,\n fontWeight: '600',\n '&:hover': {\n color: theme.colors.white,\n backgroundColor: theme.colors.darkBlue,\n border: 'solid 2px ' + theme.colors.darkBlue,\n },\n },\n alertTitle: {\n color: 'black',\n fontWeight: '1000',\n fontSize: '14px',\n },\n alertText: {\n color: 'black',\n },\n})\n\nconst DiscountModal = ({\n affiliate,\n offer,\n onOfferClick,\n classes,\n onCopyCouponCode,\n copy,\n}) => {\n const getOfferMessage = (offer) => {\n if (!offer.isWithinClaimLimit) {\n if (offer.allowedClaims !== null) {\n return `We're issuing you the same code because there is a limit of ${offer.allowedClaims === 1 ? 'one' : offer.allowedClaims} \n\t\t\t\t\t\t\tper customer ${offer.maxDays === null ? '' : offer.maxDays === 1 ? 'each day' : `every ${offer.maxDays} days`}`\n }\n }\n }\n\n return (\n <ModalContainer title=\"Here's your discount code!\" maxWidth='440px'>\n <div>\n <DialogContent>\n <div\n style={{\n width: '100%',\n padding: offer ? '5px' : '24px 15px 23px 15px',\n textAlign: 'center',\n backgroundColor: '#e3e3e3',\n marginBottom: '20px',\n }}\n >\n {offer ? (\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <div style={{ width: '100%', textAlign: 'center' }}>\n <strong>{offer.discountCode}</strong>\n </div>\n <Button\n style={{ display: 'flex' }}\n color='secondary'\n onClick={onCopyCouponCode}\n >\n {copy}\n </Button>\n </div>\n ) : (\n <LinearProgress />\n )}\n </div>\n {offer && !offer.isWithinClaimLimit && (\n <Alert className={classes.alertText} severity='info'>\n <AlertTitle className={classes.alertTitle}>\n You claimed this offer before\n </AlertTitle>\n {getOfferMessage(offer)}\n </Alert>\n )}\n {offer && offer.instructions ? (\n <p>{offer.instructions}</p>\n ) : (\n <p>\n Please copy this code, then click the button below to proceed with\n your purchase. You'll need to enter the code at checkout to apply\n your discount.\n </p>\n )}\n <p style={{ color: '#999', fontSize: '14px' }}>\n You will be redirected to{' '}\n {(affiliate && affiliate.name) || 'another site'} to complete your\n purchase.\n </p>\n </DialogContent>\n {offer && offer.link && (\n <ExternalLink unstyled url={offer.link} newWindow={true}>\n <Button\n children='Use your code'\n fullWidth={true}\n color='secondary'\n onClick={() => onOfferClick(offer)}\n />\n </ExternalLink>\n )}\n </div>\n </ModalContainer>\n )\n}\n\nconst ErrorModal = ({ error, closeModal, classes, goRegister }) => (\n <ModalContainer title={error.title} maxWidth='440px'>\n <div>\n <DialogContent>{error.content}</DialogContent>\n <DialogActions>\n <CancelButton\n children='Dismiss'\n onClick={closeModal}\n className={classes.cancelButton}\n />\n {!error && (\n <Button\n children='Get Verified'\n color='secondary'\n onClick={() => goRegister()}\n />\n )}\n </DialogActions>\n </div>\n </ModalContainer>\n)\n\nconst getGenericErrorMessage = () => ({\n type: 'general_error',\n title: 'Something went wrong',\n content: (\n <p>\n Unfortunately, this offer is not currently available. We apologize for the\n inconvenience. Please try back again later.\n </p>\n ),\n})\n\nconst getErrorMessage = (offer, eligibleGroupsDescription) => {\n if (!offer) return null\n\n switch (offer.type) {\n case 'DiscountCodeWithLinkModel':\n return null\n case 'OfferEventErrorModel':\n case 'ClaimOfferErrorModel':\n if (offer.title === '24_hour_limit') {\n return {\n type: '24_hour_limit',\n title: 'Coupon limit reached',\n content: (\n <>\n <p>\n Our records show that you claimed a coupon code in the last day.\n This offer is limited to one coupon per 24 hours, which means\n you have reached the daily limit.\n </p>\n <p>Please check back again tomorrow to claim a new code.</p>\n </>\n ),\n }\n } else if (offer.title === 'User is not eligible') {\n let notEligibleDescription = (\n <>\n <p>This offer is only available to select groups.</p>\n </>\n )\n if (eligibleGroupsDescription)\n notEligibleDescription = (\n <>\n <p>\n This offer is only available to select groups, including members\n of the {eligibleGroupsDescription}.\n </p>\n </>\n )\n\n return {\n type: 'not_eligible',\n title: \"Sorry! It looks like you don't qualify for this offer.\",\n content: notEligibleDescription,\n }\n } else {\n return getGenericErrorMessage()\n }\n default:\n return getGenericErrorMessage()\n }\n}\n\nexport const AffiliateOfferDiscountCodeModal = ({\n goRegister,\n eligibleGroupsText,\n affiliate,\n offer,\n onOfferClick,\n closeModal,\n classes,\n onCopyCouponCode,\n copy,\n isEvent = false\n}) => {\n var error = getErrorMessage(offer, eligibleGroupsText)\n return error\n ? ErrorModal({ error, closeModal, classes, goRegister })\n : DiscountModal({\n affiliate,\n offer,\n onOfferClick,\n classes,\n onCopyCouponCode,\n copy,\n })\n}\n\nAffiliateOfferDiscountCodeModal.propTypes = {\n affiliate: PropTypes.object.isRequired,\n onOfferClick: PropTypes.func.isRequired,\n copy: PropTypes.string.isRequired,\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n getOffer: () =>\n dispatch(\n fetchOfferDiscount(ownProps.affiliate, {\n ...ownProps.offer,\n offerButtonName: ownProps.offerButtonName,\n }),\n ),\n goRegister: () => dispatch(gotoRegister()),\n onOfferClick: (offer) => {\n dispatch(\n clickAffiliateModalDiscountCode({\n affiliate: ownProps.affiliate,\n offer: ownProps.offer,\n discountCode: offer.discountCode,\n object: ownProps.isEvent ? 'event' : null,\n }),\n )\n dispatch(gotoOfferLink({ affiliate: ownProps.affiliate, newWindow: true }))\n },\n closeModal: () => {\n dispatch(hideModal())\n },\n setOfferViewed: () => {\n dispatch({\n type: FETCH_OFFER_DISCOUNT_REQUEST,\n data: { affiliate: ownProps.affiliate, offer: { discountCode: ownProps.offerClaim?.discountCode, ...ownProps.offer}, object: ownProps.isEvent ? 'event' : null },\n })\n }\n})\n\nconst enhance = compose(\n connect(null, mapDispatchToProps),\n withState('offer', 'setOffer', () => null),\n withState('eligibleGroupsText', 'setEligibleGroupsText', null),\n withState('copy', 'setCopy', () => 'Copy'),\n withHandlers({\n onCopyCouponCode: (props) => (e) => {\n e && e.preventDefault()\n navigator.clipboard.writeText(props.offer.discountCode)\n props.setCopy('Copied!')\n setTimeout(\n function () {\n props.setCopy('Copy')\n }.bind(this),\n 2000,\n )\n },\n }),\n withStyles(styles),\n lifecycle({\n componentDidMount() {\n if (this.props.affiliate?.offers && this.props.affiliate.offers[0]) {\n this.props.setEligibleGroupsText(\n getEligibleGroupsText(this.props.affiliate.offers[0].eligibleGroups),\n )\n }\n if (this.props.offerClaim) {\n this.props.setOffer(this.props.offerClaim)\n this.props.setOfferViewed(this.props.offerClaim)\n } else {\n this.props.getOffer(this.props.affiliate).then((r) => {\n this.props.setOffer(r)\n })\n }\n },\n }),\n)\n\nexport default enhance(AffiliateOfferDiscountCodeModal)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { compose, lifecycle, withHandlers, withState } from 'recompose'\nimport ModalContainer from '../../common/modals/ModalContainer'\nimport Button from '../../common/Button/Primary'\nimport CancelButton from '../../common/Button/Cancel'\nimport ExternalLink from '../../common/links/ExternalLink'\nimport {\n hideModal,\n gotoRegister,\n fetchOfferDiscount,\n clickAffiliateModalProtectedLink,\n gotoOfferLink,\n} from '../../../../redux/actions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport useCordialEvent from '../../../../hooks/useCordialEvent'\nimport { FETCH_OFFER_DISCOUNT_REQUEST } from '../../../../redux/action-types'\nimport { getEligibleGroupsText } from '../OccupationUtilities'\n\nconst styles = (theme) => ({\n cancelButton: {\n color: theme.colors.darkBlue,\n border: 'solid 2px ' + theme.colors.darkBlue,\n fontWeight: '600',\n '&:hover': {\n color: theme.colors.white,\n backgroundColor: theme.colors.darkBlue,\n border: 'solid 2px ' + theme.colors.darkBlue,\n },\n },\n})\n\nconst AffiliateOfferProtectedLinkModal = ({\n affiliate,\n offer,\n onOfferClick,\n classes,\n isEvent = false\n}) => {\n const useProtectedLinkEvent = useCordialEvent(\n 'click-affiliateprotectedlink-offer',\n {\n sellerId: affiliate.id,\n sellerName: affiliate.name,\n },\n )\n return (\n <ModalContainer title='Claim your exclusive offer!' maxWidth='440px'>\n <div>\n <DialogContent>\n {offer && offer.instructions && <p>{offer.instructions}</p>}\n <p>\n This offer is redeemable at the {affiliate.name} website. Click the\n button below and we’ll redirect you to take advantage of this\n special offer.\n </p>\n <p style={{ color: '#999', fontSize: '14px' }}>\n You will be redirected to{' '}\n {(affiliate && affiliate.name) || 'another site'} to complete your\n purchase.\n </p>\n </DialogContent>\n {offer && offer.link && (\n <ExternalLink unstyled url={offer.link} newWindow={true}>\n <Button\n children='Redeem Offer'\n type='cta'\n style={{ width: '100%' }}\n onClick={() => {\n onOfferClick(offer)\n useProtectedLinkEvent()\n }}\n />\n </ExternalLink>\n )}\n </div>\n </ModalContainer>\n )\n}\n\nconst ErrorModal = ({ error, closeModal, classes, goRegister }) => (\n <ModalContainer title={error.title} maxWidth='440px'>\n <div>\n <DialogContent>{error.content}</DialogContent>\n <DialogActions>\n <CancelButton\n children='Dismiss'\n onClick={closeModal}\n className={classes.cancelButton}\n />\n {!error && (\n <Button\n children='Get Verified'\n color='secondary'\n onClick={() => goRegister()}\n />\n )}\n </DialogActions>\n </div>\n </ModalContainer>\n)\nconst getGenericErrorMessage = () => ({\n type: 'general_error',\n title: 'Something went wrong',\n content: (\n <p>\n Unfortunately, this offer is not currently available. We apologize for the\n inconvenience. Please try back again later.\n </p>\n ),\n})\n\nconst getErrorMessage = (offer, eligibleGroupsDescription) => {\n if (!offer) return null\n\n switch (offer.type) {\n case 'DiscountCodeWithLinkModel':\n return null\n case 'OfferEventErrorModel':\n case 'ClaimOfferErrorModel':\n if (offer.title === '24_hour_limit') {\n return {\n type: '24_hour_limit',\n title: 'Coupon limit reached',\n content: (\n <>\n <p>\n Our records show that you claimed a coupon code in the last day.\n This offer is limited to one coupon per 24 hours, which means\n you have reached the daily limit.\n </p>\n <p>Please check back again tomorrow to claim a new code.</p>\n </>\n ),\n }\n } else if (offer.title === 'User is not eligible') {\n let notEligibleDescription = (\n <>\n <p>This offer is only available to select groups.</p>\n </>\n )\n if (eligibleGroupsDescription)\n notEligibleDescription = (\n <>\n <p>\n This offer is only available to select groups, including members\n of the {eligibleGroupsDescription}.\n </p>\n </>\n )\n\n return {\n type: 'not_eligible',\n title: \"Sorry! It looks like you don't qualify for this offer.\",\n content: notEligibleDescription,\n }\n } else {\n return getGenericErrorMessage()\n }\n default:\n return getGenericErrorMessage()\n }\n}\n\nexport const AffiliateOfferProtectedLinkModalContainer = ({\n goRegister,\n eligibleGroupsText,\n affiliate,\n offer,\n classes,\n onOfferClick,\n closeModal,\n}) => {\n var error = getErrorMessage(offer, eligibleGroupsText)\n return error\n ? ErrorModal({ error, closeModal, classes, goRegister })\n : AffiliateOfferProtectedLinkModal({\n affiliate,\n offer,\n onOfferClick,\n classes,\n })\n}\n\nAffiliateOfferProtectedLinkModalContainer.propTypes = {\n affiliate: PropTypes.object.isRequired,\n onOfferClick: PropTypes.func.isRequired,\n copy: PropTypes.string.isRequired,\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n getOffer: () =>\n dispatch(\n fetchOfferDiscount(ownProps.affiliate, {\n ...ownProps.offer,\n offerButtonName: ownProps.offerButtonName,\n }),\n ),\n goRegister: () => dispatch(gotoRegister()),\n onOfferClick: (offer) => {\n dispatch(\n clickAffiliateModalProtectedLink({\n affiliate: ownProps.affiliate,\n offer: ownProps.offer,\n discountCode: offer.discountCode,\n object: ownProps.isEvent ? 'event' : null,\n }),\n )\n dispatch(gotoOfferLink({ affiliate: ownProps.affiliate, newWindow: true }))\n },\n closeModal: () => {\n dispatch(hideModal())\n },\n setOfferViewed: () => {\n dispatch({\n type: FETCH_OFFER_DISCOUNT_REQUEST,\n data: { affiliate: ownProps.affiliate, offer: { discountCode: ownProps.offerClaim?.discountCode, ...ownProps.offer}, object: ownProps.isEvent ? 'event' : null },\n })\n },\n})\n\nconst enhance = compose(\n connect(null, mapDispatchToProps),\n withState('offer', 'setOffer', () => null),\n withState('eligibleGroupsText', 'setEligibleGroupsText', null),\n withState('copy', 'setCopy', () => 'Copy'),\n withStyles(styles),\n lifecycle({\n componentDidMount() {\n if (this.props.offer) {\n this.props.setEligibleGroupsText(\n getEligibleGroupsText(this.props.offer.eligibleGroups),\n )\n }\n if (this.props.offerClaim) {\n this.props.setOffer(this.props.offerClaim)\n this.props.setOfferViewed()\n } else {\n this.props.getOffer(this.props.affiliate).then((r) => {\n this.props.setOffer(r)\n })\n }\n },\n }),\n)\n\nexport default enhance(AffiliateOfferProtectedLinkModalContainer)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { compose, lifecycle, withHandlers, withState } from 'recompose'\nimport ModalContainer from '../../common/modals/ModalContainer'\nimport Button from '../../common/Button'\nimport CancelButton from '../../common/Button/Cancel'\nimport ExternalLink from '../../common/links/ExternalLink'\nimport { fetchOfferDiscount, hideModal } from '../../../../redux/actions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport LinearProgress from '@material-ui/core/LinearProgress'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport Grid from '@material-ui/core/Grid'\nimport OccupationIcon from '../../../../components/Occupations/OccupationIcon'\nimport { getIconUrls } from '../../../../setup/configuration'\nconst styles = (theme) => ({\n section: {\n marginBottom: '16px',\n },\n groupName: {\n fontFamily: 'geomanist-medium, Helvetica, sans-serif',\n fontSize: '16px',\n color: '#323440',\n },\n groupAffiliations: {\n fontFamily: 'geomanist-regular, Helvetica, sans-serif',\n fontSize: '14px',\n color: '#616161',\n lineHeight: '18px',\n },\n description: {},\n primaryButton: {\n border: 'none',\n fontFamily: 'geomanist-medium, Helvetica, sans-serif',\n backgroundColor: '#2A2D36',\n fontWeight: '400',\n letterSpacing: '.2px',\n '&:hover': {\n backgroundColor: '#16171B',\n border: 'none',\n },\n height: '45px',\n borderRadius: '2px',\n },\n})\n\nconst getMilTitle = (eligibleIcons) => {\n if (\n eligibleIcons.filter(\n (icon) => icon === 'Military' || icon === 'MilitaryFamily',\n ).length === 2\n ) {\n return 'U.S. Military'\n } else if (eligibleIcons.some((icon) => icon === 'Military')) {\n return 'U.S. Military'\n } else if (eligibleIcons.some((icon) => icon === 'MilitaryFamily')) {\n return 'U.S. Military Family members'\n }\n}\n\nconst getMilDescription = (eligibleIcons) => {\n if (\n eligibleIcons.filter(\n (icon) => icon === 'Military' || icon === 'MilitaryFamily',\n ).length === 2\n ) {\n return 'Includes active duty, reservists, veterans and military family members.'\n } else if (eligibleIcons.some((icon) => icon === 'Military')) {\n return 'Includes active duty, reservists and veterans.'\n } else if (eligibleIcons.some((icon) => icon === 'MilitaryFamily')) {\n return 'Includes spouses & dependents.'\n }\n}\n\nconst EligibleGroupsModal = ({\n offer,\n onRogerClick,\n iconUrls,\n size,\n classes,\n}) => (\n <ModalContainer\n title='This offer is available to the following groups'\n maxWidth='440px'\n >\n <div>\n <DialogContent>\n {offer.eligibleIcons.some(\n (icon) => icon === 'Military' || icon === 'MilitaryFamily',\n ) && (\n <Grid\n container\n alignItems='flex-start'\n className={classes.section}\n style={{ marginTop: '16px' }}\n >\n <Grid item xs={3}>\n <img\n src={iconUrls.military}\n style={{ width: size, height: size }}\n />\n </Grid>\n <Grid item xs={9} className={classes.description}>\n <div className={classes.groupName}>U.S. Military</div>\n <div className={classes.groupAffiliations}>\n Includes active duty, reservists, veterans and military family\n members.\n </div>\n </Grid>\n </Grid>\n )}\n {offer.eligibleIcons.some((icon) => icon === 'Police') && (\n <Grid container alignItems='flex-start' className={classes.section}>\n <Grid item xs={3}>\n <img\n src={iconUrls.police}\n style={{ width: size, height: size }}\n />\n </Grid>\n <Grid item xs={9}>\n <div className={classes.groupName}>Law Enforcement</div>\n <div className={classes.groupAffiliations}>\n Includes U.S. federal, state and local law enforcement\n officials.\n </div>\n </Grid>\n </Grid>\n )}\n {offer.eligibleIcons.some((icon) => icon === 'FirstResponder') && (\n <Grid container alignItems='flex-start' className={classes.section}>\n <Grid item xs={3}>\n <img\n src={iconUrls.firstResponder}\n style={{ width: size, height: size }}\n />\n </Grid>\n <Grid item xs={9}>\n <div className={classes.groupName}>Fire</div>\n <div className={classes.groupAffiliations}>\n Includes U.S. federal, state and local, full-time and volunteer\n firefighters.\n </div>\n </Grid>\n </Grid>\n )}\n {offer.eligibleIcons.some((icon) => icon === 'Medical') && (\n <Grid container alignItems='flex-start' className={classes.section}>\n <Grid item xs={3}>\n <img\n src={iconUrls.medical}\n style={{ width: size, height: size }}\n />\n </Grid>\n <Grid item xs={9}>\n <div className={classes.groupName}>Medical Personnel</div>\n <div className={classes.groupAffiliations}>\n Includes EMTs, paramedics, nurses, hospital physicians and\n staff.\n </div>\n </Grid>\n </Grid>\n )}\n {offer.eligibleIcons.some((icon) => icon === 'Government') && (\n <Grid container alignItems='center' className={classes.section}>\n <Grid item xs={3}>\n <img\n src={iconUrls.government}\n style={{ width: size, height: size }}\n />\n </Grid>\n <Grid item xs={9}>\n <div className={classes.groupName}>U.S. Government Employees</div>\n <div className={classes.groupAffiliations}>\n Includes federal, state and local government employees.\n </div>\n </Grid>\n </Grid>\n )}\n {offer.eligibleIcons.some((icon) => icon === 'Education') && (\n <Grid container alignItems='center' className={classes.section}>\n <Grid item xs={3}>\n <img\n src={iconUrls.education}\n style={{ width: size, height: size }}\n />\n </Grid>\n <Grid item xs={9}>\n <div className={classes.groupName}>Educators</div>\n <div className={classes.groupAffiliations}>\n Includes public K-12, College / University teachers, faculty,\n administrators and staff.\n </div>\n </Grid>\n </Grid>\n )}\n </DialogContent>\n <Grid container justify='center'>\n <Button\n children='Roger that!'\n className={classes.primaryButton}\n style={{ padding: '6px 48px' }}\n onClick={() => onRogerClick()}\n />\n </Grid>\n </div>\n </ModalContainer>\n)\n\nconst enhance = compose(\n withStyles(styles),\n withState('size', 'setSize', 67),\n withState('iconUrls', 'setIconUrls', getIconUrls()),\n withHandlers({\n onRogerClick: (props) => () => {\n props.hideModal()\n },\n }),\n)\n\nexport default enhance(EligibleGroupsModal)\n","import React from 'react'\nimport { getIconUrls } from '../../setup/configuration'\n\nexport const EligibilityIconList = ({ eligibleGroups, styles }) => {\n const iconUrls = getIconUrls()\n const styleOpts = { ...styles, width: 30, height: 30 }\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: '.25rem' }}>\n {(eligibleGroups.includes('Military') ||\n eligibleGroups.includes('MilitaryFamily')) && (\n <img src={iconUrls.military} style={styleOpts} />\n )}\n {eligibleGroups.includes('FirstResponder') && (\n <img src={iconUrls.firstResponder} style={styleOpts} />\n )}\n {eligibleGroups.includes('Police') && (\n <img src={iconUrls.police} style={styleOpts} />\n )}\n {eligibleGroups.includes('Medical') && (\n <img src={iconUrls.medical} style={styleOpts} />\n )}\n {eligibleGroups.includes('Government') && (\n <img src={iconUrls.government} style={styleOpts} />\n )}\n {eligibleGroups.includes('Education') && (\n <img src={iconUrls.education} style={styleOpts} />\n )}\n {eligibleGroups.includes('GovXFlag') && (\n <img src={iconUrls.govXFlag} style={styleOpts} />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport {\n compose,\n withState,\n lifecycle,\n branch,\n renderNothing,\n withPropsOnChange,\n} from 'recompose'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport {\n gotoRegister,\n gotoLogin,\n showModal,\n clickedOffer,\n fetchDiscountLimits,\n} from '../../../../redux/actions'\nimport { selectUser } from '../../../../redux/selectors'\nimport OfferCTA from '../OfferCTA'\nimport AffiliateOfferDiscountModal from '../AffiliateOfferDiscountModal'\nimport AffiliateOfferDiscountCodeModal from '../AffiliateOfferDiscountCodeModal'\nimport AffiliateOfferProtectedLinkModal from '../AffiliateOfferProtectedLinkModal'\nimport EligibleGroupsModal from '../EligibleGroupsModal'\nimport { EligibilityIconList } from '../../../../components/Occupations/EligibilityIconList'\nimport { Box } from '@material-ui/core'\nimport { getDiscountLimits } from '../../../../utilities/discount-util'\n\nconst styles = {\n affiliateOffer: {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n border: '1px solid #e0e0e0',\n padding: '10px',\n background: '#fff',\n marginBottom: '20px',\n },\n affiliateOfferAbout: {\n boxSizing: 'border-box',\n padding: '10px',\n textAlign: 'left',\n '& h3': {\n fontFamily: 'geomanist-medium, Helvetica, sans-serif',\n fontWeight: 400,\n },\n '& p': {\n fontSize: '14px',\n lineHeight: '1.43',\n },\n },\n affiliateOfferButton: {\n boxSizing: 'border-box',\n padding: '10px',\n },\n offerOccupationGroups: {\n display: 'block',\n },\n offerOccupationGroupIcons: {\n marginLeft: '.25rem',\n },\n occupationGroupIcon: {\n display: 'inline-block',\n marginLeft: '3px',\n marginTop: '5px',\n },\n link: {\n textDecoration: 'underline',\n cursor: 'pointer',\n fontFamily: 'geomanist-regular, Helvetica, sans-serif',\n fontSize: '14px',\n fontWeight: '400',\n color: '#0E5777',\n '&:hover': {\n color: '#000',\n },\n },\n linkText: {\n fontSize: '14px',\n },\n eligibleGroups: {\n padding: '0px 10px 0px 0px',\n },\n syndicateOffer: {\n marginTop: '7px',\n fontFamily: 'geomanist-regular, Helvetica, sans-serif',\n fontSize: '12px',\n color: '#7B7E84',\n fontWeight: '700',\n maxWidth: '175px',\n textAlign: 'center',\n },\n}\nconst discountTypes = {\n CodePool: 'CodePool',\n ProtectedLink: 'ProtectedLink',\n}\n\n// Context for what button generated the offer, populated as content in Offer.EventData\nconst offerButtonName = 'category-button'\n\nconst OfferCard = ({\n classes,\n onLoginClick,\n onSignupClick,\n onOfferClick,\n user,\n affiliate,\n offer,\n onDetailsClick,\n discountLimits,\n isSyndicateOffer = false,\n}) => {\n const getDiscountDetails = () => {\n if (discountLimits) {\n const messages = getDiscountLimits(discountLimits, offer)\n if (messages) {\n return messages.map((message, index) => (\n <span key={index}>\n {message}\n {index !== messages.length - 1 ? (\n <span style={{ paddingLeft: '7px', paddingRight: '7px' }}>•</span>\n ) : (\n ''\n )}\n </span>\n ))\n }\n }\n }\n\n return (\n <div className={classes.affiliateOffer}>\n <Box display={'flex'} justifyContent={'space-between'}>\n <div className={classes.affiliateOfferAbout}>\n <h3 style={{ marginTop: '0px', marginBottom: '0px' }}>\n {offer.displayName}\n </h3>\n {offer.description.length > 0 && <p>{offer.description}</p>}\n <p style={{ marginTop: offer.description.length > 0 ? '5px' : '' }}>\n {getDiscountDetails()}\n </p>\n <Box\n className={classes.eligibleGroups}\n display={'flex'}\n justifyContent='space-between'\n >\n <Box display={'flex'} alignItems='center'>\n <Box style={{ fontSize: '14px' }}>Eligible groups:</Box>\n <Box alignItems='center'>\n <div className={classes.offerOccupationGroupIcons}>\n {<EligibilityIconList eligibleGroups={offer.eligibleIcons} />}\n </div>\n </Box>\n {offer.eligibleOccupationsAllPrimary && (\n <Box style={{ marginLeft: '10px' }}>\n <a onClick={onDetailsClick} className={classes.link}>\n Details\n </a>\n </Box>\n )}\n </Box>\n </Box>\n </div>\n <Box className={classes.affiliateOfferButton}>\n <OfferCTA\n affiliate={affiliate}\n offer={offer}\n user={user}\n onSignupClick={onSignupClick}\n onLoginClick={onLoginClick}\n onOfferClick={onOfferClick}\n />\n {isSyndicateOffer && user && (\n <Box className={classes.syndicateOffer}>\n <Box>Powered by {offer.syndicateListingName}</Box>\n </Box>\n )}\n </Box>\n </Box>\n </div>\n )\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n user: selectUser(state),\n})\n\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n getDicountLimits: () => dispatch(fetchDiscountLimits(ownProps.offer.id)),\n onSignupClick: (e) => {\n e && e.preventDefault()\n dispatch(gotoRegister())\n },\n onLoginClick: (e) => {\n e && e.preventDefault()\n dispatch(gotoLogin())\n },\n onOfferClick: (e, affiliate) => {\n e && e.preventDefault()\n dispatch(clickedOffer(affiliate))\n const discount = ownProps.offer.discount\n if (discount.showCodeInDisplay) {\n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferDiscountCodeModal,\n affiliate,\n offerButtonName,\n offer: ownProps.offer,\n }),\n )\n } else if (discount.discountType === discountTypes.ProtectedLink) {\n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferProtectedLinkModal,\n affiliate,\n offerButtonName,\n offer: ownProps.offer,\n }),\n )\n } else {\n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferDiscountModal,\n affiliate,\n offerButtonName,\n offer: ownProps.offer,\n }),\n )\n }\n },\n onDetailsClick: (e, affiliate) => {\n return dispatch(\n showModal('DYNAMIC', {\n component: EligibleGroupsModal,\n offer: ownProps.offer,\n }),\n )\n },\n})\n\nconst enhance = compose(\n connect(mapStateToProps, mapDispatchToProps),\n withState('error', 'setError', (props) => null),\n withState('discountLimits', 'setDiscountLimits', (props) => null),\n withPropsOnChange(['offer'], (props) => {\n if (props.user) {\n props.getDicountLimits(props.offer.offerId).then((r) => {\n props.setDiscountLimits(r)\n })\n }\n }),\n lifecycle({\n componentDidCatch(error, info) {\n this.props.setError(error)\n console.log('Error in OfferVenueCardDesktop:', error, info.componentStack)\n },\n }),\n withStyles(styles),\n branch(({ error }) => error, renderNothing),\n)\n\nexport default enhance(OfferCard)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Typography from '@material-ui/core/Typography'\nimport { withStyles } from '@material-ui/core/styles'\nimport {\n compose,\n withProps,\n mapProps,\n withContext,\n withHandlers,\n} from 'recompose'\nimport Grid from '@material-ui/core/Grid'\nimport Tab from './tab'\nconst styles = {\n wrapper: {\n width: '100%',\n },\n separator: {\n borderBottom: 'solid 1px #ccc',\n marginTop: '-1px',\n },\n}\n\nconst Tabs = ({ classes, children, onTabClick }) => (\n <div>\n <Grid container className={classes.wrapper}>\n {children.map((c, i) => (\n <Grid\n item\n onClick={() => {\n onTabClick(c.props.id)\n }}\n key={i}\n >\n {c}\n </Grid>\n ))}\n </Grid>\n <div className={classes.separator}></div>\n </div>\n)\n\nTabs.propTypes = {\n children: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n}\n\nconst enhance = compose(\n withContext(\n {\n value: PropTypes.string,\n },\n (props) => ({\n value: props.value,\n }),\n ),\n withHandlers({\n onTabClick: (props) => (id) => {\n props.onChange(id)\n },\n }),\n withStyles(styles),\n)\n\nexport default enhance(Tabs)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport withStyles from 'react-jss'\nimport { compose, withProps, getContext } from 'recompose'\n\nconst styles = {\n wrapperBase: {\n padding: '10px 16px',\n textAlign: 'center',\n zIndex: '5',\n fontSize: '12px',\n fontWeight: 'bold',\n },\n wrapper: {\n extend: 'wrapperBase',\n },\n wrapperSelected: {\n extend: 'wrapperBase',\n borderTop: 'solid 1px #ccc',\n borderRight: 'solid 1px #ccc',\n borderLeft: 'solid 1px #ccc',\n borderRadius: '2px 2px 0px 0px',\n borderBottom: 'solid 1px #fff',\n },\n hideTab: {\n display: 'none',\n },\n}\n\nconst Tab = ({ classes, label, value, id, hide = false }) => (\n <div\n className={`\n ${value.toString() === id.toString()\n ? classes.wrapperSelected\n : classes.wrapper} ${hide ? classes.hideTab : ''}`\n }\n >\n {label}\n </div>\n)\n\nTab.propTypes = {\n label: PropTypes.string.isRequired,\n id: PropTypes.string,\n}\n\nconst enhance = compose(\n getContext({\n value: PropTypes.string,\n }),\n withStyles(styles),\n)\n\nexport default enhance(Tab)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport { compose } from 'recompose'\nimport classNames from 'classnames'\nimport { buildPictureUrl } from '../../../../utilities/picture-util'\n\nconst styles = {\n partnerBackgroundTop: {\n width: 'calc(100% + 24px)',\n paddingTop: '28.7%',\n position: 'relative',\n },\n partnerHeaderColor: {\n background: '#e3e3e3',\n backgroundBlendMode: 'multiply',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundImage: (props) =>\n `url(${buildPictureUrl(props.affiliate.desktopHeroImage, null, 1800)})`,\n backgroundRepeat: 'no-repeat',\n },\n}\n\nexport const AffiliateHeroImageTop = ({ classes, affiliate }) => (\n <div\n className={classNames(\n classes.partnerBackgroundTop,\n classes.partnerHeaderColor,\n )}\n />\n)\n\nconst enhance = compose(withStyles(styles))\n\nexport default enhance(AffiliateHeroImageTop)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { compose, lifecycle, withHandlers, withState } from 'recompose'\nimport ModalContainer from '../../common/modals/ModalContainer'\nimport { clickedOffer, fetchOfferDiscount, hideModal, showModal } from '../../../../redux/actions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport { KeyboardArrowRight } from '@material-ui/icons'\nimport AffiliateOfferProtectedLinkModal from '../AffiliateOfferProtectedLinkModal'\nimport AffiliateOfferDiscountCodeModal from '../AffiliateOfferDiscountCodeModal'\nimport { fetchEventOfferDiscount } from '../../../../redux/modules/affiliates'\nimport AffiliateOfferDiscountModal from '../AffiliateOfferDiscountModal'\n\nconst fontFamily = 'geomanist-regular, Helvetica, sans-serif'\nconst fontFamilyMedium = 'geomanist-medium, Helvetica, sans-serif'\nconst offerButtonName = 'category-button'\n\nconst styles = (theme) => ({\n container: {\n border: '1px solid rgb(227, 227, 227)',\n padding: '15px',\n marginBottom: '13px',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n eventText: {\n color: '#323440',\n fontFamily: fontFamilyMedium,\n fontSize: '16px',\n letter: '2%',\n margin: '0px',\n marginBottom: '5px',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordBreak: 'break-word',\n lineHeight: 'normal'\n },\n linkText: {\n textDecoration: 'underline',\n color: '#0E5777',\n fontWeight: '400',\n fontSize: '14px',\n lineHeight: '14px',\n fontFamily: fontFamily,\n },\n icon: {\n fontSize: 25,\n color: '#0E5777',\n },\n paragraphText: {\n fontSize: '16px',\n fontFamily: fontFamily,\n }\n})\n\nconst MultipleOffersModal = ({\n affiliate,\n offers,\n onOfferClick,\n event,\n classes,\n }) => (\n <ModalContainer title=\"You’re eligible for multiple offers on this event\" maxWidth=\"440px\">\n <DialogContent>\n <div>\n <p className={classes.paragraphText}>\n Which offer would you like to redeem?\n </p>\n <div>\n {offers.map((offer, index) => (\n <div key={index} className={classes.container} onClick={() => onOfferClick(offer)}>\n <div style={{ flex: '1' }}>\n <p className={classes.eventText}>{offer.name}</p>\n <a className={classes.linkText}>\n {offer.cta}\n </a>\n </div>\n <KeyboardArrowRight className={classes.icon} />\n </div>\n ))}\n </div>\n </div>\n </DialogContent>\n </ModalContainer>\n );\n\n const mapStateToProps = (state, ownProps) => ({\n })\n\n const mapDispatchToProps = (dispatch, ownProps) => ({\n onOfferClick: (offer, e) => {\n e && e.preventDefault()\n dispatch(clickedOffer(ownProps.affiliate))\n dispatch(fetchEventOfferDiscount({\n id: offer.id, eventId: \n ownProps.event.id, \n eventLink: ownProps.event.eventLink, \n offerButtonName: 'category-button'})).then(claim => {\n if (claim?.discountCode !== '' && claim?.showCodeInDisplay) {\n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferDiscountCodeModal,\n affiliate: ownProps.affiliate,\n offerButtonName,\n offer: offer,\n offerClaim: claim,\n isEvent: true,\n }))\n }\n else if (claim?.discountCode !== '' && !claim?.showCodeInDisplay){\n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferDiscountModal,\n affiliate: ownProps.affiliate,\n offerButtonName,\n offer: offer,\n offerClaim: claim,\n isEvent: true,\n }))\n\n } \n else { \n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferProtectedLinkModal,\n affiliate: ownProps.affiliate,\n offerButtonName,\n offer: offer,\n offerClaim: claim,\n isEvent: true,\n }),\n )\n }\n })\n },\n})\n\nconst enhance = compose(\n withStyles(styles),\n connect(mapStateToProps, mapDispatchToProps),\n)\n\nexport default enhance(MultipleOffersModal)\n","import React from 'react'\nimport {\n compose,\n} from 'recompose'\nimport { connect } from 'react-redux'\nimport 'react-virtualized/styles.css'\nimport { Grid, withStyles } from '@material-ui/core'\nimport { format, parseISO } from 'date-fns'\nimport OfferCTA from '../OfferCTA'\nimport { clickedOffer, gotoLogin, gotoRegister, showModal } from '../../../../redux/actions'\nimport { selectUser } from '../../../../redux/selectors'\nimport AffiliateOfferProtectedLinkModal from '../AffiliateOfferProtectedLinkModal'\nimport { fetchOfferDiscount } from '../../../../api/affiliateApi'\nimport MultipleOffersModal from '../MultipleOffersModal'\nimport { fetchEventOfferDiscount, fetchEventEligibleOffers } from '../../../../redux/modules/affiliates'\nimport AffiliateOfferDiscountCodeModal from '../AffiliateOfferDiscountCodeModal'\nimport { getEventDetails } from '../../../../utilities/events-util'\nimport AffiliateOfferDiscountModal from '../AffiliateOfferDiscountModal'\n\nconst fontFamilyMedium = 'geomanist-medium, Helvetica, sans-serif'\nconst fontFamilyRegular = 'geomanist-regular, Helvetica, sans-serif'\n\nconst styles = { \n container: {\n border: '1px solid #E0E0E0',\n borderRadius: '4px',\n position: 'relative',\n height: '100px',\n marginBottom: '14px',\n \n },\n innerContainer: {\n height: '100%'\n },\n dateFontSize: {\n fontSize: '24px'\n },\n dateContainer: {\n borderRight: '1px solid #E0E0E0',\n fontFamily: fontFamilyMedium,\n fontWeight: '400',\n fontSize: '18px',\n textTransform: 'uppercase',\n height: '100%',\n },\n eventTitle: {\n fontFamily: fontFamilyMedium,\n fontSize: '16px',\n fontWeight: '400',\n marginBottom: '5px',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordBreak: 'break-word',\n\n },\n eventDetails: {\n fontSize: '13px',\n color: '#323440',\n lineHeight: '16px',\n },\n eventDetailContainer: {\n textAlign: 'left',\n paddingLeft: '15px',\n paddingRight: '15px',\n\n },\n btnContainer: {\n paddingLeft: '80px',\n },\n containerMobile: {\n height: '100px',\n },\n calendarContainerMobile: { \n height: '70px',\n width: '70px',\n border: '1px solid #E0E0E0',\n borderRadius: '4px',\n },\n dateMonthTextMobile: {\n fontFamily: fontFamilyMedium,\n fontSize: '14px',\n fontWeight: '400',\n textAlign: 'center',\n textTransform: 'UPPERCASE',\n background: '#EEEEEE',\n color: '#757575',\n height: '25px'\n },\n dateDayTextMobile: {\n fontFamily: fontFamilyMedium,\n fontSize: '24px',\n fontWeight: '400',\n fontSize: '24px', \n marginTop: '-6px'\n },\n dateLineHeight: {\n lineHeight: '25px'\n },\n buttonContainer: {\n width: '175px',\n },\n button: {\n backgroundColor: '#0E5777',\n border: 'solid 2px #0E5777',\n '&:hover': {\n border: 'solid 2px #093C53',\n backgroundColor: '#093C53',\n },\n }\n}\n\nconst offerButtonName = 'category-button'\n\nconst AffiliateEvents = ({\n event,\n classes,\n onLoginClick,\n onSignupClick,\n onOfferClick,\n user,\n affiliate,\n offers,\n}) => {\n let eventDateTime = parseISO(event.startDate)\n let eventStartShortMonth = format(eventDateTime, 'MMM')\n const eventDetails = getEventDetails(event, eventDateTime)\n \n return (\n <Grid className={classes.container}>\n <Grid className={classes.innerContainer} container display={'flex'} alignItems={'center'}>\n <Grid container item xs={1} className={classes.dateContainer} alignItems={'center'}>\n <Grid className={classes.dateLineHeight} container direction={'column'} alignItems={'center'}>\n <Grid item xs={12}>\n {eventStartShortMonth}\n </Grid>\n <Grid item xs={12} className={classes.dateFontSize}>\n {eventDateTime.getUTCDate()}\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs={11}>\n <Grid container alignItems={'center'}>\n <Grid item xs={9} className={classes.eventDetailContainer}>\n <Grid item xs={12} className={classes.eventTitle}>\n {event.name}\n </Grid>\n <Grid item xs={12} className={classes.eventDetails}>\n {eventDetails}\n </Grid>\n </Grid>\n <Grid item xs={3} className={classes.btnContainer}>\n <div className={classes.buttonContainer}>\n <OfferCTA\n affiliate={affiliate}\n offer={offers[0]}\n user={user}\n onSignupClick={onSignupClick}\n onLoginClick={onLoginClick}\n onOfferClick={onOfferClick}\n />\n </div>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n )\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n user: selectUser(state),\n })\n \nconst mapDispatchToProps = (dispatch, ownProps) => ({\n getOffer: () =>\n dispatch(\n fetchOfferDiscount(ownProps.affiliate, {\n ...ownProps.offers[0],\n offerButtonName: ownProps.offerButtonName,\n }),\n ),\n onSignupClick: (e) => {\n e && e.preventDefault()\n dispatch(gotoRegister())\n },\n onLoginClick: (e) => {\n e && e.preventDefault()\n dispatch(gotoLogin())\n },\n onOfferClick: (e) => {\n e && e.preventDefault()\n dispatch(clickedOffer(ownProps.affiliate))\n dispatch(fetchEventEligibleOffers({eventId: ownProps.event.id, listingId: ownProps.affiliate.listingId})).then((response) => {\n let offers = (ownProps.offers.filter(i => response.includes(i.id)))\n if (offers.length > 1) {\n return dispatch(\n showModal('DYNAMIC', {\n component: MultipleOffersModal,\n affiliate: ownProps.affiliate,\n offers: offers,\n event: ownProps.event,\n }))\n } else {\n offers = offers.length > 0 ? offers : ownProps.offers\n dispatch(fetchEventOfferDiscount({\n id: offers[0].id,\n eventId: ownProps.event.id,\n eventLink: ownProps.event.eventLink,\n offerButtonName: 'category-button'\n }, ownProps.affiliate, 'category-button')).then(claim => {\n if (claim?.discountCode !== '' && claim?.showCodeInDisplay) {\n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferDiscountCodeModal,\n affiliate: ownProps.affiliate,\n offerButtonName,\n offer: offers[0],\n offerClaim: claim,\n isEvent: true,\n }))\n }\n else if (claim?.discountCode !== '' && !claim?.showCodeInDisplay){\n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferDiscountModal,\n affiliate: ownProps.affiliate,\n offerButtonName,\n offer: offers[0],\n offerClaim: claim,\n isEvent: true,\n }))\n } \n else { \n return dispatch(\n showModal('DYNAMIC', {\n component: AffiliateOfferProtectedLinkModal,\n affiliate: ownProps.affiliate,\n offerButtonName,\n offer: offers[0],\n offerClaim: claim,\n isEvent: true,\n }),\n )\n }\n })\n }\n })\n },\n})\n\nconst enhance = compose(\n connect(mapStateToProps, mapDispatchToProps),\n withStyles(styles),\n)\n\nexport default enhance(AffiliateEvents)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport {\n compose,\n withState,\n withHandlers,\n lifecycle,\n withPropsOnChange,\n} from 'recompose'\nimport { buildPictureUrl } from '../../../utilities/picture-util'\nimport { withStyles } from '@material-ui/core/styles'\nimport {\n selectAffiliateDetails,\n selectProductV3Search,\n} from '../../../redux/selectors'\nimport AffiliateBackgroundTop from '../../../components/AffiliatePage/AffiliateBackgroundTop'\nimport RouteLink from '../../../components/common/links/RouteLink'\nimport { withRouter } from 'react-router'\nimport RouteConstants from '../../../setup/routeConstants'\nimport { TablePagination, Typography } from '@material-ui/core'\nimport classNames from 'classnames'\nimport OfferCard from './OfferCard'\nimport Tabs from '../common/Tabs'\nimport Tab from '../common/Tabs/tab'\nimport AffiliateHeroImageTop from './AffiliateHeroImageTop'\nimport PageType from '../../../components/common/PageType'\nimport { pageViewed } from '../../../redux/modules/tracking/actions'\nimport GridsBrowser from '../../../components/GridBrowsers/GridsBrowser'\nimport useAffiliateProductBrowser from '../../../components/GridBrowsers/ProductsBrowser/hooks/useAffiliateProductBrowser'\nimport AffiliateEvents from './AffiliateEvents'\nimport { fetchAffiliateEvents } from '../../../redux/modules/affiliates'\nconst styles = (theme) => ({\n affiliateContainerMax: {\n maxWidth: '1200px',\n margin: '0 auto',\n overflow: 'hidden',\n position: 'relative',\n padding: '0',\n },\n affiliateMainContent: {\n marginTop: '-80px',\n zIndex: '100',\n },\n\n affiliateContainerTop: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'nowrap',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n alignContent: 'flex-start',\n },\n affiliateTopLogoContainer: {\n width: '25%',\n maxWidth: '250px',\n minWidth: '220px',\n margin: '0px',\n borderRadius: '3px',\n padding: '0',\n boxShadow:\n '0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n border: '1px solid #e3e3e3',\n height: 'auto',\n background: '#fff',\n position: 'relative',\n\n '&:after': {\n content: '\"\"',\n display: 'block',\n paddingBottom: '100%',\n },\n },\n affiliateLogo: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n padding: '20px',\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n alignContent: 'center',\n\n '& img': {\n maxHeight: '100%',\n maxWidth: '100%',\n },\n },\n affiliateTopInfoContainer: {\n width: '75%',\n boxSizing: 'border-box',\n margin: '110px 0px 0px',\n padding: '10px 0px 0px 40px',\n '& h1': {\n fontFamily: 'geomanist-medium, Helvetica, sans-serif',\n fontWeight: 400,\n },\n },\n affiliateName: {\n fontSize: '36px',\n padding: '0.5em 0',\n color: '#2a2d36',\n },\n affiliateTagline: {\n fontSize: '16px',\n color: '#2a2d36',\n lineHeight: 1,\n overflowWrap: 'break-word',\n },\n\n affiliateOffersContainer: {\n margin: '60px 0px',\n },\n\n affiliateContainerNav: {},\n affiliateContainerAbout: {\n marginTop: '40px',\n marginBottom: '10px',\n background: '#fff',\n '& h3': {\n fontFamily: 'geomanist-medium, Helvetica, sans-serif',\n fontWeight: 400,\n },\n '& p': {\n fontSize: '14px',\n lineHeight: '1.5',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n },\n },\n affiliateContainerProducts: {\n marginTop: '40px',\n marginBottom: '10px',\n background: '#fff',\n },\n tabsSeparator: {\n borderBottom: 'solid 1px #e0e0e0',\n marginTop: '-1px',\n },\n tabWrapper: {\n fontSize: '14px',\n fontWeight: '600',\n color: '#616161',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n tabWrapperSelected: {\n fontSize: '14px',\n color: '#2a2d36',\n fontWeight: '600',\n borderTop: 'solid 1px #e0e0e0',\n borderRight: 'solid 1px #e0e0e0',\n borderLeft: 'solid 1px #e0e0e0',\n borderRadius: '2px 2px 0px 0px',\n },\n})\n\nexport const About = ({ affiliate }) => (\n <>\n <h3>About {affiliate.name}</h3>\n <p>{affiliate.about}</p>\n </>\n)\n\nexport const HowItWorks = ({ affiliate }) => (\n <>\n <h3>How does it work?</h3>\n {affiliate.howItWorks ? (\n <p>{affiliate.howItWorks}</p>\n ) : (\n <p>\n In the GOVX Marketplace, we've curated the best offers from hundreds of\n partner websites that honor the men and women who serve our country. All\n offers are redeemed directly through the partner's website. GOVX does\n not process the transaction. If you have questions about the products or\n services or about an order you've placed through a GOVX Marketplace\n partner website, please follow up directly with the vendor.\n </p>\n )}\n </>\n)\n\nexport const AffiliatePage = ({\n affiliate,\n classes,\n tabValue,\n handleTabChange,\n tabs,\n search,\n events,\n}) => {\n const searchResults = useAffiliateProductBrowser(affiliate)\n\n const displayTabs = () => {\n if (\n events?.length === 0 &&\n searchResults?.totalResultsCount === 0 &&\n searchResults?.settings?.showFilters === false\n ) {\n return false\n } else {\n return true\n }\n }\n\n const hideTab = (tabId) => {\n switch (tabId) {\n case '0':\n return searchResults?.totalResultsCount === 0 &&\n searchResults?.settings?.showFilters === false\n ? true\n : false\n case '1':\n return events?.length === 0 ? true : false\n case '2':\n return events?.length === 0 &&\n searchResults?.totalResultsCount === 0 &&\n searchResults?.settings?.showFilters === false\n ? true\n : false\n\n default:\n return false\n }\n }\n\n return (\n <>\n {affiliate && (\n <div style={{ marginLeft: '-24px' }}>\n {affiliate.desktopHeroImage ? (\n <AffiliateHeroImageTop affiliate={affiliate} />\n ) : (\n <AffiliateBackgroundTop />\n )}\n <div\n className={classNames(\n classes.affiliateContainerMax,\n classes.affiliateMainContent,\n )}\n >\n <div className={classes.affiliateContainerTop}>\n <div className={classes.affiliateTopLogoContainer}>\n <div className={classes.affiliateLogo}>\n {affiliate.logoPictureUrl && (\n <img alt={affiliate.name} src={affiliate.logoPictureUrl} />\n )}\n </div>\n </div>\n <div className={classes.affiliateTopInfoContainer}>\n <Typography\n variant='h1'\n className={classes.affiliateName}\n style={{\n fontSize: affiliate.name.length <= 48 ? '36px' : '32px',\n }}\n >\n {affiliate.name.length <= 48\n ? affiliate.name\n : affiliate.name.substring(0, 48) + '...'}\n </Typography>\n <Typography\n variant='body1'\n className={classes.affiliateTagline}\n >\n {affiliate.tagline}\n </Typography>\n </div>\n </div>\n <div className={classes.affiliateOffersContainer}>\n {affiliate.offers.map((o, i) => (\n <OfferCard key={i} offer={o} affiliate={affiliate} />\n ))}\n {affiliate.syndicateOffers.map((o, i) => (\n <OfferCard\n key={i}\n offer={o}\n affiliate={affiliate}\n isSyndicateOffer={true}\n />\n ))}\n </div>\n <div className={classes.affiliateContainerNav}>\n <Tabs\n classes={{ separator: classes.tabsSeparator }}\n onChange={handleTabChange}\n value={tabValue}\n >\n {tabs.map((t, i) => (\n <Tab\n classes={{\n wrapper: classes.tabWrapper,\n wrapperSelected: classes.tabWrapperSelected,\n }}\n key={i}\n id={t.id}\n label={t.label}\n hide={hideTab(t.id)}\n />\n ))}\n </Tabs>\n </div>\n {displayTabs() ? (\n <>\n <div className={classes.affiliateContainerProducts}>\n <div\n style={{ display: tabValue === '0' ? 'inline' : 'none' }}\n >\n <GridsBrowser {...searchResults} />\n </div>\n <div\n style={{ display: tabValue === '1' ? 'inline' : 'none' }}\n >\n {events?.length > 0 &&\n [...events.keys()].map((key) => (\n <AffiliateEvents\n key={key}\n event={events[key]}\n affiliate={affiliate}\n offers={events[key].offers}\n />\n ))}\n </div>\n <div\n style={{ display: tabValue === '2' ? 'inline' : 'none' }}\n >\n <div className={classes.affiliateContainerAbout}>\n {affiliate.about && <About affiliate={affiliate} />}\n <HowItWorks affiliate={affiliate} />\n </div>\n </div>\n </div>\n </>\n ) : (\n <div className={classes.affiliateContainerAbout}>\n {affiliate.about && <About affiliate={affiliate} />}\n <HowItWorks affiliate={affiliate} />\n </div>\n )}\n </div>\n <div style={{ textAlign: 'center' }}></div>\n </div>\n )}\n </>\n )\n}\n\nAffiliatePage.propTypes = {\n affiliate: PropTypes.object,\n}\n\nconst mapStateToProps = (state, ownProps) => ({\n affiliate: selectAffiliateDetails(state),\n search: selectProductV3Search(state),\n})\n\nconst mapDispatchToProps = (dispatch, props) => ({\n pageViewed: () =>\n dispatch(\n pageViewed(PageType.Affiliate, props.affiliate.id, props.affiliate.name),\n ),\n getAffiliateEvents: (id) => dispatch(fetchAffiliateEvents(id)),\n})\n\nconst enhance = compose(\n withRouter,\n connect(mapStateToProps),\n connect(null, mapDispatchToProps),\n withState('tabValue', 'setTabValue', '0'),\n withState('tabs', 'setTabs', []),\n withState('events', 'setEvents', []),\n withPropsOnChange(['affiliate'], (props) => {\n props.setTabValue('0')\n if (props.affiliate) {\n props.getAffiliateEvents(props.affiliate?.listingId).then((events) => {\n props.setEvents(events)\n if (events.length > 0) {\n props.setTabValue('1')\n }\n })\n }\n }),\n withHandlers({\n handleTabChange: (props) => (v) => {\n props.setTabValue(v)\n },\n }),\n lifecycle({\n componentDidMount() {\n let tabs = []\n tabs.push({ label: 'Products', id: '0' })\n tabs.push({ label: 'Events', id: '1' })\n tabs.push({ label: 'About', id: '2' })\n this.props.setTabs(tabs)\n if (this.props.affiliate) {\n this.props.pageViewed()\n }\n },\n }),\n withStyles(styles),\n)\n\nexport default enhance(AffiliatePage)\n"],"names":["getEligibleGroupsText","eligibleGroups","milTitle","value","validGroups","filter","g","newValues","length","some","push","i","val","concat","compose","connect","dispatch","ownProps","track","offer","affiliate","viewAffiliateOffer","withState","props","lifecycle","componentDidMount","this","componentDidCatch","error","info","setError","console","log","componentStack","withStyles","buttonContainer","width","button","backgroundColor","border","branch","_ref4","renderNothing","_ref5","user","renderComponent","_ref","classes","onSignupClick","onLoginClick","onOfferClick","React","className","Button","style","children","onClick","Typography","variant","align","marginTop","NoActionLink","color","_ref6","isRegistered","isApproved","_ref2","disabled","_ref3","onRestrictionsClick","clickOfferEvent","useCordialEvent","sellerId","id","sellerName","name","fontFamily","cta","e","getGenericErrorMessage","type","title","content","AffiliateOfferDiscountModalContainer","goRegister","eligibleGroupsText","closeModal","eligibleGroupsDescription","notEligibleDescription","getErrorMessage","ModalContainer","maxWidth","DialogContent","DialogActions","CancelButton","cancelButton","ErrorModal","instructions","fontSize","link","ExternalLink","unstyled","url","newWindow","LinearProgress","AffiliateOfferDiscountModal","propTypes","PropTypes","isRequired","copy","getOffer","fetchOfferDiscount","_objectSpread","offerButtonName","gotoRegister","clickAffiliateModalDiscount","discountCode","object","isEvent","gotoOfferLink","hideModal","setOfferViewed","_ownProps$offerClaim","FETCH_OFFER_DISCOUNT_REQUEST","data","offerClaim","theme","colors","darkBlue","fontWeight","white","_this","setEligibleGroupsText","setOffer","then","r","AffiliateOfferDiscountCodeModal","onCopyCouponCode","padding","textAlign","marginBottom","display","flexDirection","alignItems","isWithinClaimLimit","Alert","alertText","severity","AlertTitle","alertTitle","allowedClaims","maxDays","getOfferMessage","fullWidth","DiscountModal","clickAffiliateModalDiscountCode","withHandlers","preventDefault","navigator","clipboard","writeText","setCopy","setTimeout","bind","_this$props$affiliate","_this2","offers","AffiliateOfferProtectedLinkModalContainer","useProtectedLinkEvent","AffiliateOfferProtectedLinkModal","clickAffiliateModalProtectedLink","section","groupName","groupAffiliations","lineHeight","description","primaryButton","letterSpacing","height","borderRadius","getIconUrls","onRogerClick","iconUrls","size","eligibleIcons","icon","Grid","container","item","xs","src","military","police","firstResponder","medical","government","education","justify","EligibilityIconList","styles","styleOpts","gap","includes","govXFlag","state","selectUser","getDicountLimits","fetchDiscountLimits","gotoLogin","clickedOffer","discount","showCodeInDisplay","showModal","component","discountType","onDetailsClick","EligibleGroupsModal","withPropsOnChange","offerId","setDiscountLimits","affiliateOffer","flexWrap","justifyContent","background","affiliateOfferAbout","boxSizing","affiliateOfferButton","offerOccupationGroups","offerOccupationGroupIcons","marginLeft","occupationGroupIcon","textDecoration","cursor","linkText","syndicateOffer","discountLimits","_ref$isSyndicateOffer","isSyndicateOffer","Box","displayName","messages","getDiscountLimits","map","message","index","key","paddingLeft","paddingRight","getDiscountDetails","eligibleOccupationsAllPrimary","OfferCTA","syndicateListingName","Tabs","onTabClick","wrapper","c","separator","onChange","withContext","borderBottom","Tab","label","_ref$hide","hide","toString","wrapperSelected","hideTab","getContext","wrapperBase","zIndex","extend","borderTop","borderRight","borderLeft","partnerBackgroundTop","paddingTop","position","partnerHeaderColor","backgroundBlendMode","backgroundSize","backgroundPosition","backgroundImage","buildPictureUrl","desktopHeroImage","backgroundRepeat","classNames","eventText","letter","margin","WebkitLineClamp","WebkitBoxOrient","overflow","textOverflow","wordBreak","paragraphText","fetchEventOfferDiscount","eventId","event","eventLink","claim","flex","KeyboardArrowRight","fontFamilyMedium","innerContainer","dateFontSize","dateContainer","textTransform","eventTitle","eventDetails","eventDetailContainer","btnContainer","containerMobile","calendarContainerMobile","dateMonthTextMobile","dateDayTextMobile","_defineProperty","dateLineHeight","fetchEventEligibleOffers","listingId","response","MultipleOffersModal","eventDateTime","parseISO","startDate","eventStartShortMonth","format","getEventDetails","direction","getUTCDate","About","about","HowItWorks","howItWorks","AffiliatePage","_searchResults$settin","tabValue","handleTabChange","tabs","events","search","searchResults","useAffiliateProductBrowser","tabId","_searchResults$settin2","_searchResults$settin3","totalResultsCount","settings","showFilters","AffiliateHeroImageTop","AffiliateBackgroundTop","affiliateContainerMax","affiliateMainContent","affiliateContainerTop","affiliateTopLogoContainer","affiliateLogo","logoPictureUrl","alt","affiliateTopInfoContainer","affiliateName","substring","affiliateTagline","tagline","affiliateOffersContainer","o","OfferCard","syndicateOffers","affiliateContainerNav","tabsSeparator","t","tabWrapper","tabWrapperSelected","affiliateContainerProducts","GridsBrowser","keys","AffiliateEvents","affiliateContainerAbout","withRouter","selectAffiliateDetails","selectProductV3Search","pageViewed","PageType","Affiliate","getAffiliateEvents","fetchAffiliateEvents","_props$affiliate","setTabValue","setEvents","v","setTabs","alignContent","minWidth","boxShadow","paddingBottom","maxHeight","overflowWrap","whiteSpace"],"sourceRoot":""}