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