{"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?&nbsp;\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":""}