{"version":3,"file":"js/58-15f573019b58e290609b.chunk.js","mappings":"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","sources":["webpack://app/./app/javascript/components/EmailEditor/EmailEditor.js","webpack://app/./app/javascript/components/ErrorMessages.js","webpack://app/./app/javascript/components/Form/FormGroup.js","webpack://app/./app/javascript/components/SweetInput/SweetInput.js","webpack://app/./app/javascript/modules/consent/consent.ts","webpack://app/./app/javascript/plugins/email_pension/SuggestFund.js","webpack://app/./app/javascript/plugins/email_pension/SelectPensionFund.js","webpack://app/./app/javascript/plugins/email_pension/EmailPensionView.js","webpack://app/./app/javascript/plugins/email_pension/SelectTarget.js","webpack://app/./app/javascript/plugins/email_pension/EmailRepresentativeView.js","webpack://app/./app/javascript/plugins/email_pension/index.tsx","webpack://app/./app/javascript/state/email_pension/actions.js","webpack://app/./app/javascript/util/ChampaignClient/Base.js","webpack://app/./app/javascript/util/ChampaignClient/CallsClient.js","webpack://app/./app/javascript/util/ChampaignClient/MailerClient.js","webpack://app/./app/javascript/util/util.js"],"sourcesContent":["//  weak\nimport React, { Component } from 'react';\nimport Input from '../SweetInput/SweetInput';\nimport FormGroup from '../Form/FormGroup';\nimport ErrorMessages from '../ErrorMessages';\nimport { FormattedMessage } from 'react-intl';\nimport { compact, debounce, template, isEqual, merge, isEmpty } from 'lodash';\nimport classnames from 'classnames';\nimport { Editor, EditorState } from 'draft-js';\nimport { htmlToText } from 'html-to-text';\nimport { stateFromHTML } from 'draft-js-import-html';\nimport { stateToHTML } from 'draft-js-export-html';\nimport memoizeOne from 'memoize-one';\nimport './EmailEditor.scss';\n\nconst MAX_SUBJECT_LENGTH = 64;\n\nexport default class EmailEditor extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      header: interpolateVars(props.header, props.templateVars),\n      editableBody: htmlToText(interpolateVars(props.body, props.templateVars)), // interpolate, convert to text & assign content to state\n      subject: interpolateVars(props.subject, props.templateVars),\n      footer: interpolateVars(props.footer, props.templateVars),\n    };\n  }\n\n  static getDerivedStateFromProps(props, state) {\n    const fn = props.templateInterpolate || interpolateVars;\n    let body = props.body;\n\n    if (typeof fn == 'function') {\n      body = fn(props.body, props.templateVars);\n    }\n    let stateParams = {\n      header: interpolateVars(props.header, props.templateVars),\n      body: htmlToText(body),\n      footer: interpolateVars(props.footer, props.templateVars),\n    };\n\n    if (state.templateVars != props.templateVars) {\n      stateParams = merge(stateParams, {\n        editorState: EditorState.createWithContent(\n          stateFromHTML(interpolateVars(props.body, props.templateVars))\n        ),\n      });\n    }\n    return stateParams;\n  }\n\n  // shouldComponentUpdate(nextProps, nextState) {\n  //   return (\n  //     !isEqual(nextProps.templateVars, this.props.templateVars) ||\n  //     this.state.subject !== nextState.subject ||\n  //     stateToHTML(this.state.editorState.getCurrentContent()) !==\n  //       stateToHTML(nextState.editorState.getCurrentContent()) ||\n  //     !isEqual(this.props.errors, nextProps.errors)\n  //   );\n  // }\n\n  componentDidMount() {\n    this.update();\n  }\n\n  componentDidUpdate() {\n    this.update();\n  }\n\n  update = debounce(() => {\n    if (typeof this.props.onUpdate !== 'function') return;\n    this.props.onUpdate({\n      subject: this.state.subject,\n      body: this.body(),\n    });\n  }, 400);\n\n  body() {\n    return compact([\n      this.state.header + '\\n\\n',\n      this.state.editableBody,\n      '\\n\\n' + this.state.footer,\n    ]).join('');\n  }\n\n  updateSubject = subject => {\n    if (subject.length > MAX_SUBJECT_LENGTH) return;\n    this.setState({ subject }, this.update);\n  };\n\n  updateEditableBody = e => {\n    this.setState({ editableBody: e.target.value }, this.update);\n  };\n\n  onEditorChange = editorState => {\n    this.setState({ editorState }, () => {\n      if (!editorState.getLastChangeType()) return;\n      this.update();\n    });\n  };\n\n  hasValue = memoizeOne(content => {\n    if (content) {\n      let parser = new DOMParser();\n      let parsedValue = parser.parseFromString(content, 'text/html');\n      return parsedValue.lastElementChild.innerText.trim().length > 0;\n    }\n    return false;\n  });\n\n  // class applied to content blocks\n  blockStyleFn = () => 'editor-content-block';\n\n  render() {\n    const { header, footer, errors } = this.props;\n\n    const hasHeaderValue = this.hasValue(header);\n    const hasFooterValue = this.hasValue(footer);\n\n    const bodyClassName = classnames({\n      'has-error': errors.body && errors.body.length > 0,\n    });\n\n    return (\n      <div className=\"EmailEditor\">\n        <FormGroup>\n          <Input\n            name=\"subject\"\n            value={this.state.subject}\n            hasError={errors.subject && errors.subject.length}\n            label={\n              <FormattedMessage\n                id=\"email_tool.form.subject\"\n                defaultMessage=\"Subject (default)\"\n              />\n            }\n            onChange={this.updateSubject}\n          />\n          <ErrorMessages\n            name={<FormattedMessage id=\"email_tool.form.subject\" />}\n            errors={errors.subject}\n          />\n        </FormGroup>\n        <FormGroup>\n          <FormGroup className={bodyClassName}>\n            <div className=\"EmailEditor-body\">\n              {hasHeaderValue && (\n                <div\n                  className=\"EmailEditor-header\"\n                  dangerouslySetInnerHTML={{ __html: this.state.header }}\n                />\n              )}\n\n              <textarea\n                value={this.state.editableBody}\n                className=\"sweet-placeholder__field EmailEditor-body\"\n                onChange={this.updateEditableBody}\n              />\n\n              {hasFooterValue && (\n                <div\n                  className=\"EmailEditor-footer\"\n                  dangerouslySetInnerHTML={{ __html: this.state.footer }}\n                />\n              )}\n            </div>\n          </FormGroup>\n          <ErrorMessages\n            name={<FormattedMessage id=\"email_tool.form.email_body\" />}\n            errors={errors.body}\n          />\n        </FormGroup>\n      </div>\n    );\n  }\n}\n\nfunction interpolateVars(templateString, templateVars) {\n  if (!templateString) return '';\n  if (templateString && isEmpty(templateVars)) return templateString;\n  return template(templateString)(templateVars);\n}\n","import React from 'react';\nimport { isArray } from 'lodash';\nimport { FormattedMessage } from 'react-intl';\n\nexport default function ErrorMessages(props) {\n  if (!props.errors) return null;\n  const { errors } = props;\n  const name = props.name || (\n    <FormattedMessage id=\"errors.this_field\" defaultMessage=\"This field\" />\n  );\n  let message = '';\n\n  if (isArray(errors)) {\n    message = errors\n      .map((error, i) => (\n        <span key={i} className=\"inline-error\">\n          {error}\n        </span>\n      ))\n      .reduce((prev, curr) => [prev, ', ', curr]);\n  } else {\n    message = <span className=\"inline-error\">{errors}</span>;\n  }\n\n  return (\n    <div className=\"ErrorMessages error-msg\">\n      <p>\n        <span>{name}</span> {message}.\n      </p>\n    </div>\n  );\n}\n","import React from 'react';\nimport classnames from 'classnames';\nimport './FormGroup.scss';\n\nexport default function FormGroup(props) {\n  const className = classnames('FormGroup', 'form__group', props.className);\n  return <div className={className}>{props.children}</div>;\n}\n","//  weak\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\n\nexport default class SweetInput extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      focused: false,\n    };\n  }\n\n  static defaultProps = {\n    value: '',\n    name: '',\n    label: '',\n    type: 'text',\n    errorMessage: '',\n    hasError: false,\n  };\n\n  hasError() {\n    return this.props.hasError || !!this.props.errorMessage;\n  }\n\n  onChange = e => {\n    if (this.props.onChange) {\n      this.props.onChange(e.currentTarget.value);\n    }\n  };\n\n  onFocus = () => {\n    this.refs.input.focus();\n    this.setState({ focused: true });\n  };\n\n  onBlur = () => this.setState({ focused: false });\n\n  render() {\n    const className = classnames('sweet-placeholder', this.props.className);\n    const labelClassName = classnames({\n      'sweet-placeholder__label': true,\n      'sweet-placeholder__label--full':\n        !!this.props.value && !this.state.focused,\n      'sweet-placeholder__label--active': this.state.focused,\n      'has-error': this.hasError(),\n    });\n    const inputClassName = classnames('sweet-placeholder__field', {\n      'has-error': this.hasError(),\n    });\n\n    return (\n      <div className={className}>\n        <label className={labelClassName} onClick={this.onFocus}>\n          {this.props.label}\n        </label>\n        <input\n          ref=\"input\"\n          value={this.props.value || ''}\n          name={this.props.name}\n          type={this.props.type}\n          required={this.props.required}\n          onChange={this.onChange}\n          onFocus={this.onFocus}\n          onBlur={this.onBlur}\n          className={inputClassName}\n        />\n        {this.props.errorMessage && (\n          <span className=\"error-msg\">{this.props.errorMessage}</span>\n        )}\n      </div>\n    );\n  }\n}\n","import { includes } from 'lodash';\nimport EEA_LIST from '../../shared/eea-list';\nimport { Member } from '../../state/member/';\n\nconst GDPR_LIST = EEA_LIST.concat('BR');\nexport const isGDPR = (countryCode: string) => GDPR_LIST.includes(countryCode);\n\nexport const isDoubleOptIn = (countryCode: string) => {\n  return ['DE', 'AT'].includes(countryCode);\n};\n\nexport const hasConsented = (member: Member) => {\n  return member && member.consented != null;\n};\n\nexport const isRequired = (countryCode: string, member: Member) => {\n  if (!isGDPR(countryCode)) {\n    return false;\n  }\n  return !hasConsented(member);\n};\n\nexport default {\n  hasConsented,\n  isRequired,\n  isGDPR,\n  isDoubleOptIn,\n};\n","import $ from 'jquery';\nimport React, { Component } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Input from '../../components/SweetInput/SweetInput';\nimport Button from '../../components/Button/Button';\n\nexport default class SuggestFund extends Component {\n  constructor() {\n    super();\n    this.state = {\n      showForm: false,\n      newPensionFundName: '',\n      isSubmittingNewPensionFundName: false,\n      newPensionFundNameError: false,\n    };\n  }\n\n  postSuggestedFund(fund) {\n    const url = '/api/pension_funds/suggest_fund';\n\n    this.setState({ isSubmittingNewPensionFundName: true });\n\n    $.post(url, {\n      'email_target[name]': fund,\n    })\n      .done(() => {\n        this.setState({\n          showForm: false,\n          isSubmittingNewPensionFundName: false,\n          newPensionFundName: '',\n          newPensionFundNameError: false,\n        });\n      })\n      .fail(() => {\n        console.log('err');\n      });\n  }\n\n  toggle = () => {\n    this.setState(state => ({\n      ...state,\n      showForm: !state.showForm,\n    }));\n  };\n\n  onChange = newPensionFundName => {\n    this.setState(state => ({\n      ...state,\n      newPensionFundName,\n    }));\n  };\n\n  submit = e => {\n    e.preventDefault();\n    if (this.state.newPensionFundName.trim() === '') {\n      this.setState({ newPensionFundNameError: true });\n    } else {\n      this.postSuggestedFund(this.state.newPensionFundName);\n    }\n  };\n\n  render() {\n    const errorMessage = this.state.newPensionFundNameError ? (\n      <FormattedMessage\n        id=\"email_tool.form.errors.suggest_fund\"\n        defaultMessage=\"Name of pension fund can't be blank\"\n      />\n    ) : (\n      ''\n    );\n\n    return (\n      <div className=\"email-target-action\">\n        <div className=\"email__target-suggest-fund\">\n          <p>\n            <a onClick={this.toggle}>\n              <FormattedMessage\n                id=\"email_pension.form.other_pension_fund_text\"\n                defaultMessage=\"Can't find your pension fund?\"\n              />\n            </a>\n          </p>\n        </div>\n        {this.state.showForm && (\n          <div className=\"email-target_box\">\n            <h3>\n              <span>\n                <FormattedMessage\n                  id=\"email_tool.form.errors.fund_not_found\"\n                  defaultMessage=\"We're sorry you couldn't find your pension fund. Send us its\n                name and we'll update our records.\"\n                />\n              </span>\n            </h3>\n            <div className=\"form__group\">\n              <Input\n                name=\"new_pension_fund\"\n                label={\n                  <FormattedMessage\n                    id=\"email_tool.form.name_of_your_pension_fund\"\n                    defaultMessage=\"Name of your pension fund\"\n                  />\n                }\n                value={this.state.newPensionFundName}\n                onChange={this.onChange}\n                errorMessage={errorMessage}\n              />\n            </div>\n\n            <div className=\"form__group\">\n              <Button\n                disabled={this.state.isSubmittingNewPensionFundName}\n                className=\"button action-form__submit-button\"\n                onClick={this.submit}\n              >\n                <FormattedMessage\n                  id=\"email_tool.form.send_button_text\"\n                  defaultMessage=\"Send\"\n                />\n              </Button>\n            </div>\n          </div>\n        )}\n      </div>\n    );\n  }\n}\n","//\nimport $ from 'jquery';\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { FormattedMessage } from 'react-intl';\nimport { find, sortBy } from 'lodash';\nimport Select from '../../components/SweetSelect/SweetSelect';\nimport Input from '../../components/SweetInput/SweetInput';\nimport Button from '../../components/Button/Button';\nimport FormGroup from '../../components/Form/FormGroup';\nimport SelectCountry from '../../components/SelectCountry/SelectCountry';\nimport SuggestFund from './SuggestFund';\n\nimport {\n  changeCountry,\n  changePensionFunds,\n  changeFund,\n} from '../../state/email_pension/actions';\nimport { changeCountry as changeConsentCountry } from '../../state/consent';\n\nconst SUPPORTED_COUNTRIES = [\n  'AU',\n  'BE',\n  'CA',\n  'CH',\n  'DE',\n  'DK',\n  'ES',\n  'FI',\n  'FR',\n  'GB',\n  'IE',\n  'IS',\n  'IT',\n  'NL',\n  'NO',\n  'PT',\n  'SE',\n  'US',\n];\n\nclass SelectPensionFund extends Component {\n  componentWillMount() {\n    this.getPensionFunds(this.props.country);\n  }\n\n  getPensionFunds = country => {\n    if (!country) return;\n\n    const url = `/api/pension_funds?country=${country.toLowerCase()}`;\n\n    $.getJSON(url)\n      .then(data => {\n        return data.map(f => ({\n          ...f,\n          value: f._id,\n          label: f.fund,\n        }));\n      })\n      .then(this.props.changePensionFunds);\n  };\n\n  onChangeCountry = country => {\n    this.getPensionFunds(country);\n    this.props.changeCountry(country);\n  };\n\n  changeFund = _id => {\n    const contact = find(this.props.pensionFunds, { _id });\n    this.props.changeFund(contact);\n  };\n\n  render() {\n    return (\n      <div className=\"SelectPensionFund\">\n        <FormGroup>\n          <SelectCountry\n            value={this.props.country}\n            name=\"country\"\n            filter={SUPPORTED_COUNTRIES}\n            label={\n              <FormattedMessage\n                id=\"email_tool.form.select_country\"\n                defaultMessage=\"Select country (default)\"\n              />\n            }\n            className=\"form-control\"\n            errorMessage={this.props.errors.country}\n            onChange={this.onChangeCountry}\n          />\n        </FormGroup>\n        <FormGroup>\n          <Select\n            className=\"form-control\"\n            value={this.props.fundId}\n            errorMessage={this.props.errors.fund}\n            label={\n              <FormattedMessage\n                id=\"email_pension.form.select_target\"\n                defaultMessage=\"Select a fund (default)\"\n              />\n            }\n            name=\"select-fund\"\n            options={this.props.pensionFunds}\n            onChange={this.changeFund}\n          />\n        </FormGroup>\n        <SuggestFund />\n      </div>\n    );\n  }\n}\n\nfunction mapStateToProps(state) {\n  return {\n    country: state.emailTarget.country,\n    pensionFunds: state.emailTarget.pensionFunds,\n    fundId: state.emailTarget.fundId,\n    fund: state.emailTarget.fund,\n  };\n}\n\nfunction mapDispatchToProps(disp) {\n  return {\n    changeCountry: country => {\n      // We could try to have only one place in the state\n      // with the country (how will that affect other reducers?)\n      // TODO: Investigate this\n      disp(changeCountry(country));\n      disp(changeConsentCountry(country));\n    },\n    changePensionFunds: funds => disp(changePensionFunds(funds)),\n    changeFund: fund => disp(changeFund(fund)),\n  };\n}\n\nexport default connect(\n  mapStateToProps,\n  mapDispatchToProps\n)(SelectPensionFund);\n","//\nimport React, { Component } from 'react';\nimport { isEmpty, find, template, merge, each, pick, join } from 'lodash';\n\nimport { connect } from 'react-redux';\nimport Select from '../../components/SweetSelect/SweetSelect';\nimport Input from '../../components/SweetInput/SweetInput';\nimport Button from '../../components/Button/Button';\nimport SelectCountry from '../../components/SelectCountry/SelectCountry';\nimport FormGroup from '../../components/Form/FormGroup';\nimport EmailEditor from '../../components/EmailEditor/EmailEditor';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport SelectPensionFund from './SelectPensionFund';\nimport './EmailPensionView.scss';\nimport ConsentComponent from '../../components/consent/ConsentComponent';\nimport consent from '../../modules/consent/consent';\n\nimport {\n  changeBody,\n  changeSubject,\n  changeSubmitting,\n  changePensionFunds,\n  changeEmail,\n  changeName,\n  changeFund,\n  changeConsented,\n} from '../../state/email_pension/actions';\nimport {\n  changeConsent,\n  changeIsRequiredNew,\n  showConsentRequired,\n} from '../../state/consent/index';\nimport {\n  convertHtmlToPlainText,\n  copyToClipboard,\n  composeEmailLink,\n  buildToEmailForCompose,\n} from '../../util/util';\nimport { MailerClient } from '../../util/ChampaignClient';\nimport URI from 'urijs';\nimport { resetMember } from '../../state/member/reducer';\n\nclass EmailPensionView extends Component {\n  constructor(props) {\n    super(props);\n    this.defaultTemplateVars = {\n      fundContact: this.props.intl.formatMessage({\n        id: 'email_tool.template_defaults.fund_contact',\n      }),\n      fundEmail: this.props.intl.formatMessage({\n        id: 'email_tool.template_defaults.fund_email',\n      }),\n      fund: this.props.intl.formatMessage({\n        id: 'email_tool.template_defaults.fund',\n      }),\n      name: this.props.intl.formatMessage({\n        id: 'email_tool.template_defaults.name',\n      }),\n    };\n\n    this.state = {\n      shouldShowFundSuggestion: false,\n      newPensionFundName: '',\n      isSubmittingNewPensionFundName: false,\n      newPensionFundSuggested: false,\n      clickedCopyBodyButton: false,\n      errors: {},\n    };\n    this.store = window.champaign.store;\n  }\n\n  validateForm() {\n    const errors = {};\n\n    const fields = ['country', 'emailSubject', 'name', 'email', 'fund'];\n\n    fields.forEach(field => {\n      if (isEmpty(this.props[field])) {\n        const location = `email_tool.form.errors.${field}`;\n        const message = <FormattedMessage id={location} />;\n        errors[field] = message;\n      }\n    });\n    // For GDPR countries alone this field should have value\n    if (this.props.isRequiredNew && this.props.consented === null) {\n      this.props.showConsentRequired(true);\n      errors['consented'] = true;\n    }\n    this.setState({ errors: errors });\n    return isEmpty(errors);\n  }\n\n  templateVars() {\n    let vars = pick(this.props, [\n      'name',\n      'fund',\n      'fundContact',\n      'fundEmail',\n      'email',\n      'country',\n      'postal',\n    ]);\n\n    each(this.defaultTemplateVars, (val, key) => {\n      if (vars[key] === undefined || vars[key] === '') {\n        vars[key] = val;\n      }\n    });\n    return vars;\n  }\n\n  onEmailEditorUpdate = ({ subject, body }) => {\n    this.props.changeSubject(subject);\n    this.setState(state => ({ ...state, body }));\n  };\n\n  onEmailChange = value => {\n    this.props.changeEmail(value);\n    if (window.champaign.personalization.member)\n      window.champaign.store.dispatch(resetMember());\n    if (this.props.consent !== null) {\n      this.props.changeConsent(null);\n      this.props.changeIsRequiredNew(\n        consent.isRequired(\n          this.props.countryCode,\n          window.champaign.personalization.member\n        )\n      );\n    }\n  };\n\n  validateFormBeforeCopying = () => {\n    if (!this.validateForm()) {\n      alert('Form has errors. Please fix before copying.');\n    }\n  };\n\n  handleCopyTargetEmailButton = e => {\n    e.preventDefault();\n    this.validateFormBeforeCopying();\n    copyToClipboard(\n      buildToEmailForCompose(\n        this.composeTargetAddress(),\n        this.state.emailService\n      )\n    );\n  };\n\n  handleCopyBodyButton = e => {\n    e.preventDefault();\n    this.validateFormBeforeCopying();\n    copyToClipboard(convertHtmlToPlainText(this.state.body));\n    this.setState({ clickedCopyBodyButton: true });\n  };\n\n  handleCopySubjectButton = e => {\n    e.preventDefault();\n    this.validateFormBeforeCopying();\n    copyToClipboard(convertHtmlToPlainText(this.props.emailSubject));\n  };\n\n  composeTargetAddress() {\n    return [{ name: this.props.fundContact, email: this.props.fundEmail }];\n  }\n\n  handleSendEmail = () => {\n    const emailParam = {\n      emailService: this.state.emailService,\n      toEmails: this.composeTargetAddress(),\n      subject: this.props.emailSubject,\n      body: convertHtmlToPlainText(this.state.body),\n    };\n    window.open(composeEmailLink(emailParam));\n  };\n\n  errorNotice = () => {\n    if (!isEmpty(this.state.errors)) {\n      return (\n        <span className=\"error-msg left-align\">\n          <FormattedMessage id=\"email_tool.form.errors.message\" />\n        </span>\n      );\n    }\n  };\n\n  onSubmit = e => {\n    e.preventDefault();\n    const valid = this.validateForm();\n\n    if (!valid) return;\n    this.handleSendEmail();\n    const payload = {\n      body: this.state.body,\n      subject: this.props.emailSubject,\n      target_name: this.props.fund,\n      country: this.props.country,\n      from_name: this.props.name,\n      from_email: this.props.email,\n      to_name: this.props.fundContact,\n      to_email: this.props.fundEmail,\n      email_service: this.state.emailService,\n      clicked_copy_body_button: this.state.clickedCopyBodyButton,\n    };\n    // For double optin consented field should not have a value\n    if (this.props.consented !== null)\n      payload.consented = this.props.consented ? 1 : 0;\n    merge(payload, this.props.formValues);\n    this.props.changeSubmitting(true);\n\n    MailerClient.sendPensionEmail({ page_id: this.props.pageId, payload }).then(\n      response => {\n        window.location.href = URI(`${response.data.follow_up_page}`);\n      },\n      ({ errors }) => {\n        this.setState(s => ({ ...s, errors }));\n      }\n    );\n  };\n\n  onEmailServiceChange = emailService => this.setState({ emailService });\n\n  render() {\n    return (\n      <div className=\"email-target\">\n        <div className=\"email-target-form\">\n          <form onSubmit={this.onSubmit} className=\"action-form form--big\">\n            <SelectPensionFund\n              country={this.props.country}\n              fund={this.props.fundId}\n              onChange={changeFund}\n              errors={{\n                country: this.state.errors.country,\n                fund: this.state.errors.fund,\n              }}\n            />\n            <div className=\"email-target-action\">\n              <h3>\n                <FormattedMessage\n                  id=\"email_tool.section.compose\"\n                  defaultMessage=\"Compose Your Email\"\n                />\n              </h3>\n\n              <FormGroup>\n                <Input\n                  name=\"name\"\n                  label={\n                    <FormattedMessage\n                      id=\"email_tool.form.your_name\"\n                      defaultMessage=\"Your name\"\n                    />\n                  }\n                  value={this.props.name}\n                  errorMessage={this.state.errors.name}\n                  onChange={value => this.props.changeName(value)}\n                />\n              </FormGroup>\n\n              <FormGroup>\n                <Input\n                  name=\"email\"\n                  type=\"email\"\n                  label={\n                    <FormattedMessage\n                      id=\"email_tool.form.your_email\"\n                      defaultMessage=\"Your email\"\n                    />\n                  }\n                  value={this.props.email}\n                  errorMessage={this.state.errors.email}\n                  onChange={this.onEmailChange}\n                />\n              </FormGroup>\n\n              <EmailEditor\n                errors={this.state.errors}\n                body={this.props.emailBody}\n                header={this.props.emailHeader}\n                footer={this.props.emailFooter}\n                subject={this.props.emailSubject}\n                templateVars={this.templateVars()}\n                onUpdate={this.onEmailEditorUpdate}\n              />\n            </div>\n\n            <div className=\"EmailToolView-note\">\n              <div className=\"section title\">\n                <FormattedMessage\n                  id=\"email_tool.form.choose_email_service\"\n                  defaultMessage=\"If you have not set up an email client or the above button does not open your email, please use the following instructions.\"\n                />\n              </div>\n\n              <div className=\"section\">\n                <div className=\"title\">\n                  <span>\n                    <FormattedMessage\n                      id=\"email_tool.form.mobile_desktop_apps\"\n                      defaultMessage=\"Mobile &amp; Desktop Apps\"\n                    />\n                  </span>\n                </div>\n                <div>\n                  <label>\n                    <input\n                      disabled={this.state.emailService === 'in_app_send'}\n                      type=\"radio\"\n                      checked={this.state.emailService === 'email_client'}\n                      onChange={e => this.onEmailServiceChange('email_client')}\n                    />\n                    <FormattedMessage\n                      id=\"email_tool.form.email_client\"\n                      defaultMessage=\"Email Client\"\n                    />\n                  </label>\n                </div>\n                <div className=\"title\">\n                  <span>\n                    <FormattedMessage\n                      id=\"email_tool.form.web_browser\"\n                      defaultMessage=\"Web Browser\"\n                    />\n                  </span>\n                </div>\n                <div>\n                  <label>\n                    <input\n                      disabled={this.state.emailService === 'in_app_send'}\n                      type=\"radio\"\n                      checked={this.state.emailService === 'gmail'}\n                      onChange={e => this.onEmailServiceChange('gmail')}\n                    />\n                    Gmail\n                  </label>\n                </div>\n\n                <div>\n                  <label>\n                    <input\n                      disabled={this.state.emailService === 'in_app_send'}\n                      type=\"radio\"\n                      checked={this.state.emailService === 'outlook'}\n                      onChange={e => this.onEmailServiceChange('outlook')}\n                    />\n                    Outlook / Live / Hotmail\n                  </label>\n                </div>\n\n                <div>\n                  <label>\n                    <input\n                      disabled={this.state.emailService === 'in_app_send'}\n                      type=\"radio\"\n                      checked={this.state.emailService === 'yahoo'}\n                      onChange={e => this.onEmailServiceChange('yahoo')}\n                    />\n                    Yahoo Mail\n                  </label>\n                </div>\n                <div className=\"title\">\n                  <span>\n                    <FormattedMessage\n                      id=\"email_tool.form.manual\"\n                      defaultMessage=\"Manual\"\n                    />\n                  </span>\n                </div>\n                <div>\n                  <label>\n                    <input\n                      disabled={this.state.emailService === 'in_app_send'}\n                      type=\"radio\"\n                      checked={\n                        this.state.emailService === 'other_email_services'\n                      }\n                      onChange={e =>\n                        this.onEmailServiceChange('other_email_services')\n                      }\n                    />\n                    <FormattedMessage\n                      id=\"email_tool.form.others\"\n                      defaultMessage=\"Others\"\n                    />\n                  </label>\n                </div>\n              </div>\n\n              {this.state.emailService === 'other_email_services' && (\n                <React.Fragment>\n                  <div className=\"section\">\n                    <FormattedMessage\n                      id=\"email_tool.form.title_for_no_email_client\"\n                      defaultMessage=\"If you have not set up an email client or the above button does not open your email, please use the following instructions.\"\n                    />\n                  </div>\n                  <div className=\"section\">\n                    <table>\n                      <tbody>\n                        <tr>\n                          <td>\n                            <span>\n                              <FormattedMessage\n                                id=\"email_tool.form.copy_target_email_address\"\n                                defaultMessage=\"Copy Target Email Address\"\n                              />\n                            </span>\n                          </td>\n                          <td>\n                            <span>\n                              <Button\n                                className=\"copy-button\"\n                                onClick={this.handleCopyTargetEmailButton}\n                              >\n                                <i className=\"fa fa-copy\"></i>\n                              </Button>\n                            </span>\n                          </td>\n                        </tr>\n                        <tr>\n                          <td>\n                            <span>\n                              <FormattedMessage\n                                id=\"email_tool.form.copy_email_subject\"\n                                defaultMessage=\"Copy Email Subject\"\n                              />\n                            </span>\n                          </td>\n                          <td>\n                            <span>\n                              <Button\n                                className=\"copy-button\"\n                                onClick={this.handleCopySubjectButton}\n                              >\n                                <i className=\"fa fa-copy\"></i>\n                              </Button>\n                            </span>\n                          </td>\n                        </tr>\n                        <tr>\n                          <td>\n                            <span>\n                              <FormattedMessage\n                                id=\"email_tool.form.copy_email_body\"\n                                defaultMessage=\"Copy Email Body\"\n                              />\n                            </span>\n                          </td>\n                          <td>\n                            <span>\n                              <Button\n                                className=\"copy-button\"\n                                onClick={this.handleCopyBodyButton}\n                              >\n                                <i className=\"fa fa-copy\"></i>\n                              </Button>\n                            </span>\n                          </td>\n                        </tr>\n                      </tbody>\n                    </table>\n                  </div>\n                </React.Fragment>\n              )}\n            </div>\n            {consent.isRequired(\n              this.props.countryCode,\n              window.champaign.personalization.member\n            ) && (\n              <ConsentComponent\n                alwaysShow={true}\n                isRequired={\n                  this.props.isRequiredNew || this.props.isRequiredExisting\n                }\n              />\n            )}\n            <div className=\"form__group\">\n              <Button\n                disabled={this.state.isSubmitting || !this.state.emailService}\n                className=\"button action-form__submit-button\"\n              >\n                {this.state.emailService === 'other_email_services' ? (\n                  <FormattedMessage\n                    id=\"email_tool.form.submit\"\n                    defaultMessage=\"Submit Action\"\n                  />\n                ) : (\n                  <FormattedMessage\n                    // id=\"email_tool.form.submit_action\"\n                    id=\"email_tool.form.submit_and_send_email\"\n                    defaultMessage=\"Submit Action &amp; Send Email\"\n                  />\n                )}\n              </Button>\n              {this.errorNotice()}\n            </div>\n          </form>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport const mapStateToProps = ({ emailTarget, consent }) => {\n  const {\n    email,\n    name,\n    country,\n    emailSubject,\n    isSubmitting,\n    fundContact,\n    fundEmail,\n    fund,\n    fundId,\n  } = emailTarget;\n  const { countryCode, consented, isRequiredNew, isRequiredExisting } = consent;\n  return {\n    email,\n    name,\n    country,\n    emailSubject,\n    isSubmitting,\n    fundContact,\n    fundEmail,\n    fund,\n    fundId,\n    countryCode,\n    consented,\n    isRequiredNew,\n    isRequiredExisting,\n  };\n};\n\nexport const mapDispatchToProps = dispatch => ({\n  changeSubmitting: value => dispatch(changeSubmitting(true)),\n  changeSubject: subject => dispatch(changeSubject(subject)),\n  changeName: name => {\n    dispatch(changeName(name));\n  },\n  changeEmail: email => {\n    dispatch(changeEmail(email));\n  },\n  changeConsent: value => dispatch(changeConsent(value)),\n  changeIsRequiredNew: value => dispatch(changeIsRequiredNew(value)),\n  showConsentRequired: consentRequired =>\n    dispatch(showConsentRequired(consentRequired)),\n});\n\nexport default injectIntl(\n  connect(mapStateToProps, mapDispatchToProps)(EmailPensionView)\n);\n","import React, { Component } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Input from '../../components/SweetInput/SweetInput';\nimport FormGroup from '../../components/Form/FormGroup';\n\nclass SelectTarget extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      searching: false,\n      not_found: false,\n      postcode: '',\n      targets: [],\n    };\n  }\n\n  getTarget = postcode => {\n    this.setState({ postcode: postcode });\n\n    if (!postcode) return;\n    if (postcode.length < 5) return;\n\n    this.setState({ searching: true, not_found: false });\n    fetch(`${this.props.endpoint}${postcode}`)\n      .then(resp => {\n        if (resp.ok) {\n          return resp.json();\n        }\n        throw new Error('not found.');\n      })\n      .then(json => {\n        this.setState({ targets: json, searching: false });\n        const data = { postcode, targets: json };\n        this.props.handler(data);\n      })\n      .catch(e => {\n        this.setState({ not_found: true, targets: [], searching: false });\n        console.log('error', e);\n      });\n  };\n\n  renderTarget({ id, title, first_name, last_name }) {\n    return (\n      <p key={id}>\n        {title} {first_name} {last_name}\n      </p>\n    );\n  }\n\n  render() {\n    let targets;\n\n    if (this.state.not_found) {\n      targets = (\n        <FormattedMessage\n          id=\"email_tool.form.representative.not_found\"\n          defaultMessage=\"Sorry, we couldn't find a target with this location.\"\n        />\n      );\n    } else {\n      targets = this.state.targets.length ? (\n        this.state.targets.map(target => this.renderTarget(target))\n      ) : (\n        <FormattedMessage\n          id=\"email_tool.form.representative.search_pending\"\n          defaultMessage=\"Please enter your postal code above.\"\n        />\n      );\n    }\n\n    return (\n      <div>\n        <FormGroup>\n          <Input\n            name=\"postcode\"\n            type=\"text\"\n            label={\n              <FormattedMessage\n                id=\"email_tool.form.representative.postal_code\"\n                defaultMessage=\"Enter your postal code\"\n              />\n            }\n            value={this.state.postcode}\n            onChange={value => this.getTarget(value)}\n            errorMessage={this.props.error}\n          />\n        </FormGroup>\n        <FormGroup>\n          <div className=\"target-panel\">\n            <h3>\n              <FormattedMessage\n                id=\"email_tool.form.representative.selected_targets\"\n                defaultMessage=\"Representatives\"\n              />\n            </h3>\n            <div className=\"target-panel-body\">\n              {this.state.searching ? (\n                <FormattedMessage\n                  id=\"email_tool.form.representative.searching\"\n                  defaultMessage=\"Searching for your representative\"\n                />\n              ) : (\n                targets\n              )}\n            </div>\n          </div>\n        </FormGroup>\n      </div>\n    );\n  }\n}\n\nexport default SelectTarget;\n","import React, { Component } from 'react';\nimport { isEmpty, find, template, merge, each, pick } from 'lodash';\n\nimport Input from '../../components/SweetInput/SweetInput';\nimport Button from '../../components/Button/Button';\nimport FormGroup from '../../components/Form/FormGroup';\nimport EmailEditor from '../../components/EmailEditor/EmailEditor';\nimport SelectTarget from './SelectTarget';\nimport SelectCountry from '../../components/SelectCountry/SelectCountry';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport './EmailPensionView.scss';\nimport { MailerClient } from '../../util/ChampaignClient';\n\nclass EmailRepresentativeView extends Component {\n  constructor(props) {\n    super(props);\n\n    this.handleChange = this.handleChange.bind(this);\n\n    this.defaultTemplateVars = {\n      targets_names: this.props.intl.formatMessage({\n        id: 'email_tool.template_defaults.target_full_name',\n      }),\n      constituency: this.props.intl.formatMessage({\n        id: 'email_tool.template_defaults.constituency_name',\n      }),\n      name: this.props.intl.formatMessage({\n        id: 'email_tool.template_defaults.name',\n      }),\n    };\n\n    this.state = {\n      errors: {},\n      targets: [],\n      name: '',\n      email: '',\n      subject: '',\n      country: '',\n      target_name: '',\n      target_email: '',\n      ...props,\n    };\n  }\n\n  validateForm() {\n    const errors = {};\n\n    const fields = ['country', 'subject', 'name', 'email', 'targets'];\n\n    fields.forEach(field => {\n      if (isEmpty(this.state[field])) {\n        const location = `email_tool.form.errors.${field}`;\n        const message = <FormattedMessage id={location} />;\n        errors[field] = message;\n      }\n    });\n\n    this.setState({ errors: errors });\n    return isEmpty(errors);\n  }\n\n  templateVars() {\n    let vars = pick(this.state, ['name', 'email', 'constituency']);\n\n    if (this.state.targets) {\n      vars.targets_names = this.state.targets\n        .map(\n          target => `${target.title} ${target.first_name} ${target.last_name}`\n        )\n        .join(', ');\n    }\n\n    each(this.defaultTemplateVars, (val, key) => {\n      if (vars[key] === undefined || vars[key] === '') {\n        vars[key] = val;\n      }\n    });\n\n    return vars;\n  }\n\n  onEmailEditorUpdate = ({ subject, body }) => {\n    this.setState(state => ({ ...state, body, subject }));\n  };\n\n  errorNotice = () => {\n    if (!isEmpty(this.state.errors)) {\n      return (\n        <span className=\"error-msg left-align\">\n          <FormattedMessage id=\"email_tool.form.errors.message\" />\n        </span>\n      );\n    }\n  };\n\n  onSubmission = e => {\n    e.preventDefault();\n\n    const valid = this.validateForm();\n    if (!valid) return;\n\n    const payload = {\n      body: this.state.body,\n      country: this.state.country,\n      subject: this.state.subject,\n      from_name: this.state.name,\n      from_email: this.state.email,\n      postcode: this.state.postcode.trim(),\n      plugin_id: this.props.pluginId,\n    };\n\n    merge(payload, this.props.formValues);\n    this.setState({ isSubmitting: true });\n\n    MailerClient.sendPensionEmail({ page_id: this.props.pageId, payload }).then(\n      response => {\n        window.location.href = URI(`${response.data.follow_up_page}`);\n      },\n      ({ errors }) => {\n        this.setState(s => ({ ...s, errors }));\n      }\n    );\n  };\n\n  handleTargetSelection(data) {\n    this.setState({\n      constituency: data.targets[0].constituency,\n      targets: data.targets,\n      postcode: data.postcode,\n    });\n  }\n\n  handleChange(data) {\n    this.setState(data);\n  }\n\n  render() {\n    return (\n      <div className=\"email-target\">\n        <div className=\"email-target-form\">\n          <form\n            onSubmit={e => e.preventDefault()}\n            className=\"action-form form--big\"\n          >\n            <FormGroup>\n              <SelectCountry\n                value={this.state.country}\n                name=\"country\"\n                label={\n                  <FormattedMessage\n                    id=\"email_tool.form.select_country\"\n                    defaultMessage=\"Select country (default)\"\n                  />\n                }\n                className=\"form-control\"\n                errorMessage={this.state.errors.country}\n                onChange={value => {\n                  this.handleChange({ country: value });\n                }}\n              />\n            </FormGroup>\n            <SelectTarget\n              handler={this.handleTargetSelection.bind(this)}\n              endpoint={this.props.targetEndpoint}\n              error={this.state.errors.targets}\n            />\n\n            <div className=\"email-target-action\">\n              <h3>\n                <FormattedMessage\n                  id=\"email_tool.section.compose\"\n                  defaultMessage=\"Compose Your Email\"\n                />\n              </h3>\n\n              <FormGroup>\n                <Input\n                  name=\"name\"\n                  label={\n                    <FormattedMessage\n                      id=\"email_tool.form.your_name\"\n                      defaultMessage=\"Your name (default)\"\n                    />\n                  }\n                  value={this.state.name}\n                  errorMessage={this.state.errors.name}\n                  onChange={value => {\n                    this.handleChange({ name: value });\n                  }}\n                />\n              </FormGroup>\n\n              <FormGroup>\n                <Input\n                  name=\"email\"\n                  type=\"email\"\n                  label={\n                    <FormattedMessage\n                      id=\"email_tool.form.your_email\"\n                      defaultMessage=\"Your email (default)\"\n                    />\n                  }\n                  value={this.state.email}\n                  errorMessage={this.state.errors.email}\n                  onChange={value => {\n                    this.handleChange({ email: value });\n                  }}\n                />\n              </FormGroup>\n\n              <EmailEditor\n                errors={this.state.errors}\n                body={this.props.emailBody}\n                header={this.props.emailHeader}\n                footer={this.props.emailFooter}\n                subject={this.props.emailSubject}\n                templateVars={this.templateVars()}\n                onUpdate={this.onEmailEditorUpdate}\n              />\n            </div>\n\n            <div className=\"form__group\">\n              <Button\n                onClick={this.onSubmission}\n                disabled={this.state.isSubmitting}\n                type=\"button\"\n                className=\"button action-form__submit-button\"\n              >\n                <FormattedMessage\n                  id=\"email_tool.form.send_email\"\n                  defaultMessage=\"Send email (default)\"\n                />\n              </Button>\n              {this.errorNotice()}\n            </div>\n          </form>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default injectIntl(EmailRepresentativeView);\n","import { omit, pick } from 'lodash';\nimport * as React from 'react';\nimport { render } from 'react-dom';\nimport { Store } from 'redux';\nimport ComponentWrapper from '../../components/ComponentWrapper';\nimport { IAppState } from '../../types';\nimport { camelizeKeys } from '../../util/util';\nimport Plugin from '../plugin';\nimport EmailPensionView from './EmailPensionView';\nimport EmailRepresentativeView from './EmailRepresentativeView';\n\ninterface IEmailPensionOptions {\n  el: HTMLElement;\n  namespace: string;\n  config: any; // todo\n  store: Store<IAppState>;\n}\nexport const init = options => {\n  if (!options.el) {\n    options.el = document.getElementById('email-pension-component');\n  }\n  const { el, config, store } = options;\n  const member = window.champaign.personalization.member;\n  const memberData = pick(member, 'name', 'email', 'country', 'postal');\n  const formValues = window.champaign.personalization.formValues;\n  return new EmailPension({\n    config: {\n      ...config,\n      ...memberData,\n      ...formValues,\n    },\n    el,\n    namespace: 'emailpension',\n    store,\n  });\n};\n\nclass EmailPension extends Plugin<any> {\n  public customRenderer: (instance: EmailPension) => any | undefined;\n  public wrappedReactComponent?: React.Component;\n  public props: { [key: string]: any };\n\n  constructor(options: IEmailPensionOptions) {\n    super(options);\n    this.store = options.store;\n    this.props = omit(camelizeKeys(this.config), 'id', 'ref');\n    this.store.dispatch({\n      type: 'email_target:initialize',\n      payload: omit(camelizeKeys(this.config), 'id', 'ref'),\n    });\n    this.render();\n  }\n\n  public render() {\n    if (this.customRenderer) {\n      return this.customRenderer(this);\n    }\n\n    return render(\n      <ComponentWrapper store={this.store} locale={window.I18n.locale}>\n        {this.props.targetEndpoint && (\n          <EmailRepresentativeView {...this.props} />\n        )}\n        {!this.props.targetEndpoint && <EmailPensionView {...this.props} />}\n      </ComponentWrapper>,\n      this.el\n    );\n  }\n}\n","const initialState = {\n  name: '',\n  email: '',\n  postcode: '',\n  isSubmitting: false,\n  emailSubject: '',\n  fundContact: '',\n  fundEmail: '',\n  fundContact: '',\n  fundId: '',\n  fund: '',\n  country: '',\n  consented: null,\n};\n\nexport const reducer = (state = initialState, action) => {\n  switch (action.type) {\n    case 'email_target:change_submitting':\n      return { ...state, isSubmitting: action.submitting };\n    case 'email_target:change_country':\n      return { ...state, country: action.country };\n    case 'email_target:change_body':\n      return { ...state, emailBody: action.emailBody };\n    case 'email_target:change_subject':\n      return { ...state, emailSubject: action.emailSubject };\n    case 'email_target:change_email':\n      return { ...state, email: action.email };\n    case 'email_target:change_name':\n      return { ...state, name: action.name };\n    case 'email_target:change_pension_funds':\n      return { ...state, pensionFunds: action.funds };\n    case 'email_target:change_fund':\n      const fund = action.fund;\n\n      if (!fund) {\n        return {\n          ...state,\n          fundEmail: undefined,\n          fundContact: undefined,\n          fundId: undefined,\n          fund: undefined,\n        };\n      }\n\n      return {\n        ...state,\n        fundEmail: fund.email,\n        fundContact: fund.name,\n        fundId: fund._id,\n        fund: fund.fund,\n      };\n    case 'email_target:initialize':\n      const { email, name, emailSubject, country, fundId } = action.payload;\n      return { ...state, email, name, emailSubject, country, fundId };\n    default:\n      return state;\n  }\n};\n\nexport const changeSubmitting = submitting => {\n  return { type: 'email_target:change_submitting', submitting };\n};\n\nexport const changeBody = emailBody => {\n  return { type: 'email_target:change_body', emailBody };\n};\n\nexport const changeCountry = country => {\n  return { type: 'email_target:change_country', country };\n};\n\nexport const changeSubject = emailSubject => {\n  return { type: 'email_target:change_subject', emailSubject };\n};\n\nexport const changeName = name => {\n  return { type: 'email_target:change_name', name };\n};\n\nexport const changeEmail = email => {\n  return { type: 'email_target:change_email', email };\n};\n\nexport const changeFund = fund => {\n  return { type: 'email_target:change_fund', fund };\n};\n\nexport const changePensionFunds = funds => {\n  return { type: 'email_target:change_pension_funds', funds };\n};\n\nexport const findMP = postcode => {\n  return { type: 'email_target:find_mp', postcode };\n};\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { camelizeKeys } from '../util';\n\nexport const parseResponse = response => {\n  switch (response.status) {\n    case 200:\n    case 201:\n    case 204:\n      return { success: true, errors: {}, data: response.responseJSON };\n    case 422:\n    case 403:\n      return {\n        success: false,\n        errors: camelizeKeys(response.responseJSON.errors),\n      };\n    default:\n      return {\n        success: false,\n        errors: {\n          base: [\n            <FormattedMessage\n              id=\"call_tool.errors.unknown\" // TODO use generic error and allow customization\n              defaultMessage={`Unknown error, code ${response.code}`}\n            />,\n          ],\n        },\n      };\n  }\n};\n","import { parseResponse } from './Base';\nimport captcha from '../../shared/recaptcha';\n\nconst create = async function(params) {\n  const inner = {};\n  inner.member_phone_number = params.memberPhoneNumber;\n  if (!!params.targetPhoneExtension)\n    inner.target_phone_extension = params.targetPhoneExtension;\n  if (!!params.targetPhoneNumber)\n    inner.target_phone_number = params.targetPhoneNumber;\n  if (!!params.targetTitle) inner.target_title = params.targetTitle;\n  if (!!params.targetName) inner.target_name = params.targetName;\n  if (!!params.checksum) inner.checksum = params.checksum;\n  if (!!params.targetId) inner.target_id = params.targetId;\n\n  const payload = {\n    call: inner,\n    ...params.trackingParams,\n    'g-recaptcha-response': params.recaptchaToken,\n  };\n\n  return new Promise((resolve, reject) => {\n    $.post(`/api/pages/${params.pageId}/call`, payload)\n      .done((data, textStatus, jqXHR) => {\n        resolve(parseResponse(jqXHR));\n      })\n      .fail((jqXHR, textStatus, errorThrown) => {\n        reject(parseResponse(jqXHR));\n      });\n  });\n};\n\nconst CallsClient = {\n  create: create,\n};\n\nexport default CallsClient;\n","import $ from 'jquery';\nimport { parseResponse } from './Base';\n\nexport function sendEmail(params) {\n  const { page_id, ...payload } = params;\n\n  return new Promise((resolve, reject) => {\n    $.post(`/api/pages/${page_id}/emails`, payload)\n      .done((data, textStatus, jqXHR) => {\n        // Facebook pixel tracking\n        const tracking = data.tracking;\n        if (tracking) {\n          if (typeof window.fbq === 'function') {\n            if (tracking.user_id) {\n              window.fbq('track', 'CompleteRegistration', tracking);\n            }\n          }\n        }\n        // end of pixel tracking\n        resolve(parseResponse(jqXHR));\n      })\n      .fail((jqXHR, textStatus, errorThrown) => {\n        reject(parseResponse(jqXHR));\n      });\n  });\n}\n\nexport function sendPensionEmail(params) {\n  const { page_id, payload } = params;\n\n  return new Promise((resolve, reject) => {\n    $.post(`/api/pages/${page_id}/pension_emails`, payload)\n      .done((data, textStatus, jqXHR) => {\n        // Facebook pixel tracking\n        const tracking = data.tracking;\n        if (tracking) {\n          if (typeof window.fbq === 'function') {\n            if (tracking.user_id) {\n              window.fbq('track', 'CompleteRegistration', tracking);\n            }\n          }\n        }\n        // end of pixel tracking\n        resolve(parseResponse(jqXHR));\n      })\n      .fail((jqXHR, textStatus, errorThrown) => {\n        reject(parseResponse(jqXHR));\n      });\n  });\n}\n\nexport default {\n  sendEmail,\n  sendPensionEmail,\n};\n","import { camelCase, mapKeys, mapValues, forEach } from 'lodash';\n\nexport function camelizeKeys(obj) {\n  if (!obj) return obj;\n  if (Array.isArray(obj)) return obj.map(v => camelizeKeys(v));\n  if (typeof obj === 'object') {\n    const camelCased = mapKeys(obj, (v, k) => camelCase(k));\n    return mapValues(camelCased, v => camelizeKeys(v));\n  }\n  return obj;\n}\n\nexport function convertHtmlToPlainText(htmlValue) {\n  let htmlElement = document.createElement('div');\n  htmlElement.innerHTML = htmlValue;\n  return htmlElement.textContent || htmlElement.innerText || '';\n} //Should move this to Utils once feature is done\n\nexport function copyToClipboard(content) {\n  const htmlElement = document.createElement('textarea');\n  htmlElement.value = content;\n  document.body.appendChild(htmlElement);\n  htmlElement.select();\n  document.execCommand('copy');\n  document.body.removeChild(htmlElement);\n}\n\nexport function getToEmailBasedOn(emailItem, emailService) {\n  if (emailService == 'yahoo') {\n    return emailItem.email;\n  } else {\n    return `${emailItem.name} <${emailItem.email}>`;\n  }\n}\n\nexport function buildToEmailForCompose(emailList, emailService) {\n  // emailList = [{name: 'ABC', email: 'abs@xyz.com'}];\n  let toEmailAddresses;\n  forEach(emailList, emailItem => {\n    const currentEmail = getToEmailBasedOn(emailItem, emailService);\n    toEmailAddresses = toEmailAddresses\n      ? `${toEmailAddresses}, ${currentEmail}`\n      : currentEmail;\n  });\n  return toEmailAddresses;\n}\n\nexport function composeEmailLink(email) {\n  const sanitizedToEmails = buildToEmailForCompose(\n    email.toEmails,\n    email.emailService\n  );\n\n  const { bcc, cc } = email;\n  const ccBcc = [];\n\n  if (cc && cc.length > 0) {\n    ccBcc.push(`cc=${encodeURIComponent(cc)}`);\n  }\n\n  if (bcc && bcc.length > 0) {\n    ccBcc.push(`bcc=${encodeURIComponent(bcc)}`);\n  }\n\n  const to_email = encodeURIComponent(sanitizedToEmails);\n  const subject = encodeURIComponent(email.subject);\n  const body = encodeURIComponent(email.body);\n  const ccBccString = ccBcc.join('&');\n  let host, urlParams;\n\n  var textWithoutLineBreaks = email.body.replace(/(\\r\\n|\\n|\\r)/gm, '');\n  var outlookBody = encodeURIComponent(textWithoutLineBreaks);\n\n  switch (email.emailService) {\n    case 'email_client':\n      host = 'mailto:';\n      urlParams = `${to_email}?subject=${subject}&body=${body}&${ccBccString}`;\n      break;\n    case 'gmail':\n      host = 'https://mail.google.com/mail/?view=cm&fs=1&tf=1&';\n      urlParams = `to=${to_email}&su=${subject}&body=${body}&${ccBccString}`;\n      break;\n    case 'outlook':\n      host = 'https://outlook.live.com/mail/0/deeplink/compose?popoutv2=1&';\n      urlParams = `to=${to_email}&subject=${subject}&body=${outlookBody}&${ccBccString}`;\n      break;\n    case 'yahoo':\n      host = 'https://compose.mail.yahoo.com/?';\n      urlParams = `to=${to_email}&subject=${subject}&body=${body}&${ccBccString}`;\n      break;\n    default:\n      host = 'mailto:';\n      urlParams = `${to_email}?subject=${subject}&body=${body}&${ccBccString}`;\n  }\n  return `${host}${urlParams}`;\n}\n"],"names":["EmailEditor","_Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","update","debounce","onUpdate","subject","state","body","updateSubject","length","setState","updateEditableBody","e","editableBody","target","value","onEditorChange","editorState","getLastChangeType","hasValue","memoizeOne","content","DOMParser","parseFromString","lastElementChild","innerText","trim","blockStyleFn","header","interpolateVars","templateVars","htmlToText","footer","key","fn","templateInterpolate","stateParams","merge","EditorState","createWithContent","stateFromHTML","this","compact","join","_this$props","errors","hasHeaderValue","hasFooterValue","bodyClassName","classnames","React","className","FormGroup","Input","name","hasError","label","FormattedMessage","id","defaultMessage","onChange","ErrorMessages","dangerouslySetInnerHTML","__html","Component","templateString","isEmpty","template","message","isArray","map","error","i","reduce","prev","curr","children","SweetInput","currentTarget","onFocus","refs","input","focus","focused","onBlur","errorMessage","labelClassName","inputClassName","onClick","ref","type","required","defaultProps","GDPR_LIST","EEA_LIST","concat","isGDPR","countryCode","includes","hasConsented","member","consented","isRequired","isDoubleOptIn","SuggestFund","toggle","_objectSpread","showForm","newPensionFundName","submit","preventDefault","newPensionFundNameError","postSuggestedFund","isSubmittingNewPensionFundName","fund","_this2","$","done","fail","console","log","Button","disabled","SUPPORTED_COUNTRIES","SelectPensionFund","_len","arguments","args","Array","_key","apply","getPensionFunds","country","url","toLowerCase","then","data","f","_id","changePensionFunds","onChangeCountry","changeCountry","changeFund","contact","find","pensionFunds","SelectCountry","filter","Select","fundId","options","connect","emailTarget","disp","changeConsentCountry","funds","EmailPensionView","onEmailEditorUpdate","_ref","changeSubject","onEmailChange","changeEmail","window","champaign","personalization","store","dispatch","resetMember","consent","changeConsent","changeIsRequiredNew","validateFormBeforeCopying","validateForm","alert","handleCopyTargetEmailButton","copyToClipboard","buildToEmailForCompose","composeTargetAddress","emailService","handleCopyBodyButton","convertHtmlToPlainText","clickedCopyBodyButton","handleCopySubjectButton","emailSubject","handleSendEmail","emailParam","toEmails","open","composeEmailLink","errorNotice","onSubmit","payload","target_name","from_name","from_email","email","to_name","fundContact","to_email","fundEmail","email_service","clicked_copy_body_button","formValues","changeSubmitting","MailerClient","sendPensionEmail","page_id","pageId","response","location","href","URI","follow_up_page","_ref2","s","onEmailServiceChange","defaultTemplateVars","intl","formatMessage","shouldShowFundSuggestion","newPensionFundSuggested","forEach","field","isRequiredNew","showConsentRequired","vars","pick","each","val","undefined","_this3","changeName","emailBody","emailHeader","emailFooter","checked","ConsentComponent","alwaysShow","isRequiredExisting","isSubmitting","injectIntl","_ref3","consentRequired","SelectTarget","getTarget","postcode","searching","not_found","fetch","endpoint","resp","ok","json","Error","targets","handler","title","first_name","last_name","renderTarget","EmailRepresentativeView","onSubmission","plugin_id","pluginId","handleChange","bind","_assertThisInitialized","targets_names","constituency","target_email","handleTargetSelection","targetEndpoint","init","el","document","getElementById","config","memberData","EmailPension","namespace","_Plugin","customRenderer","wrappedReactComponent","omit","camelizeKeys","render","ComponentWrapper","locale","I18n","Plugin","initialState","_defineProperty","_initialState","reducer","action","submitting","_action$payload","parseResponse","status","success","responseJSON","base","code","create","_regeneratorRuntime","_callee","params","inner","_context","next","member_phone_number","memberPhoneNumber","targetPhoneExtension","target_phone_extension","targetPhoneNumber","target_phone_number","targetTitle","target_title","targetName","checksum","targetId","target_id","trackingParams","recaptchaToken","abrupt","Promise","resolve","reject","post","textStatus","jqXHR","errorThrown","stop","_x","sendEmail","_objectWithoutProperties","_excluded","tracking","fbq","user_id","obj","v","camelCased","mapKeys","k","camelCase","mapValues","htmlValue","htmlElement","createElement","innerHTML","textContent","appendChild","select","execCommand","removeChild","emailList","toEmailAddresses","emailItem","currentEmail","getToEmailBasedOn","sanitizedToEmails","bcc","cc","ccBcc","push","encodeURIComponent","host","urlParams","ccBccString","textWithoutLineBreaks","replace","outlookBody"],"sourceRoot":""}