{"version":3,"file":"js/member_facing-4fb7849d72ddfeac430e.js","mappings":"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","sources":["webpack://app/./app/javascript/components/Button/Button.js","webpack://app/./app/javascript/legacy/member-facing/backbone/notification.js","webpack://app/./app/javascript/legacy/member-facing/check_top.js","webpack://app/./app/javascript/legacy/member-facing/ga_event_reporting.js","webpack://app/./app/javascript/legacy/member-facing/backbone/facebook_share_model.js","webpack://app/./app/javascript/legacy/member-facing/backbone/sweet_placeholder.js","webpack://app/./app/javascript/legacy/member-facing/backbone/facebook_share_view.js","webpack://app/./app/javascript/legacy/member-facing/backbone/petition.js","webpack://app/./app/javascript/legacy/member-facing/double_opt_in.js","webpack://app/./app/javascript/legacy/member-facing/backbone/petition_and_scroll_to_consent.js","webpack://app/./app/javascript/legacy/member-facing/backbone/mobile_check.js","webpack://app/./app/javascript/legacy/member-facing/backbone/survey.js","webpack://app/./app/javascript/components/consent/ExistingMemberConsent.js","webpack://app/./app/javascript/legacy/member-facing/backbone/action_form.js","webpack://app/./app/javascript/legacy/member-facing/backbone/overlay_toggle.js","webpack://app/./app/javascript/legacy/member-facing/backbone/thermometer.js","webpack://app/./app/javascript/legacy/member-facing/backbone/sidebar.js","webpack://app/./app/javascript/legacy/member-facing/backbone/campaigner_overlay.js","webpack://app/./app/javascript/legacy/member-facing/registration.js","webpack://app/./app/javascript/legacy/member-facing/track_shares.js","webpack://app/./app/javascript/legacy/member-facing/backbone/desktop_sticky.js","webpack://app/./app/javascript/legacy/member-facing/two_step_events.js","webpack://app/./app/javascript/legacy/member-facing/index.js","webpack://app/./app/javascript/state/features/index.js","webpack://app/./app/javascript/state/fundraiser/reducer.js","webpack://app/./app/javascript/state/paymentMethods/reducer.js","webpack://app/./app/javascript/state/page/reducer.js","webpack://app/./app/javascript/state/extraActionFields.js","webpack://app/./app/javascript/state/reducers.js","webpack://app/./app/javascript/state/pass_to_log_tracker.js","webpack://app/./app/javascript/modules/cookie-consent/index.ts","webpack://app/./app/javascript/modules/index.ts","webpack://app/./app/javascript/plugins/progress-tracker/index.js","webpack://app/./app/javascript/legacy/member-facing/redirectors.js","webpack://app/./app/javascript/packs/member_facing.js","webpack://app/./app/javascript/state/index.js","webpack://app/./app/javascript/shared/global_events.js","webpack://app/./app/javascript/shared/show_errors.js","webpack://app/./app/javascript/state/email_pension/actions.js","webpack://app/./app/javascript/state/experiments/index.js","webpack://app/./app/javascript/state/forms/index.ts","webpack://app/./app/javascript/state/fundraiser/actions.js","webpack://app/./app/javascript/util/directDebitDecider.js","webpack://app/./app/javascript/util/event_tracking.js","webpack://app/./app/javascript/util/log_event.js","webpack://app/external var \"window.I18n\"","webpack://app/external var \"window.jQuery\""],"sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport './Button.scss';\n\nconst Button = props => {\n const className = classnames(\n 'Button-root',\n props.theme,\n props.disabled ? 'disabled' : '',\n props.className ? props.className : ''\n );\n return (\n \n {props.children}\n \n );\n};\n\nexport default Button;\n","import Backbone from 'backbone';\n\nconst Notification = Backbone.View.extend({\n OPEN_AFTER: 0.5, // seconds\n CLOSE_AFTER: 20, // seconds\n\n el: '.notification',\n\n events: {\n 'click .notification__close': 'disappear',\n },\n\n initialize() {\n window.setTimeout(this.appear.bind(this), this.OPEN_AFTER * 1000);\n window.setTimeout(this.disappear.bind(this), this.CLOSE_AFTER * 1000);\n },\n\n disappear() {\n this.$el.addClass('notification--hidden');\n },\n\n appear() {\n this.$el.removeClass('notification--hidden');\n },\n});\n\nexport default Notification;\n","$(document).ready(function() {\n $('.checks-top').each(function(ii, el) {\n let $el = $(el);\n $(window).on('scroll', function() {\n var position = $(window).scrollTop();\n if (position == 0) {\n $el.addClass('checks-top--at-top');\n } else {\n $el.removeClass('checks-top--at-top');\n }\n });\n });\n});\n","if (window.event) {\n const EVENTS_TO_REPORT = [\n 'direct_debit:opened',\n 'direct_debit:donated_via_other',\n 'direct_debit:donated',\n ];\n\n EVENTS_TO_REPORT.forEach(e => {\n const [category, action] = e.split(':');\n window.ee.on(e, () => {\n if (typeof window.ga === 'function') {\n window.ga('send', 'event', category, action);\n }\n });\n });\n}\n","import I18n from 'champaign-i18n';\nimport Cookie from 'js-cookie';\nimport { Model } from 'backbone';\n\nconst FacebookShareModel = Model.extend({\n defaults: {\n name: '',\n message: '',\n enabled: Cookie.get('facebookShare') === '1',\n },\n\n feedOptions() {\n return {\n message: this.get('message'),\n link: this.buildLink(),\n caption: I18n.t('facebook_share.caption'),\n image: this.get('image'),\n title: this.get('title'),\n description: this.get('description'),\n };\n },\n\n post(client, cb) {\n const options = this.feedOptions();\n\n client.api('/me/feed', 'post', options, response => {\n if (!response || response.error) {\n console.log(response);\n }\n\n cb();\n });\n },\n\n buildLink() {\n return `${this.get('url')}?source=fbexpress`;\n },\n\n isEnabled() {\n return this.get('enabled');\n },\n\n enable() {\n this.set('enabled', true);\n Cookie.set('facebookShare', 1);\n },\n\n disable() {\n this.set('enabled', false);\n Cookie.set('facebookShare', 0);\n },\n});\n\nexport default FacebookShareModel;\n","import Backbone from 'backbone';\nconst SweetPlaceholder = Backbone.View.extend({\n el: '.sweet-placeholder',\n\n events: {\n 'focus .sweet-placeholder__field': 'focus',\n 'blur .sweet-placeholder__field': 'blur',\n 'click .sweet-placeholder__label': 'fauxcus',\n 'change .sweet-placeholder__field': 'decide',\n 'input .sweet-placeholder__field': 'decide',\n },\n\n initialize(els = null) {\n const $els = els || this.$el.find('.sweet-placeholder__field');\n\n $els.each(el => {\n this.decide({ target: el });\n });\n },\n\n focus(e) {\n const $label = this.rootEl(e.target).find('.sweet-placeholder__label');\n $label.addClass('sweet-placeholder__label--active');\n },\n\n blur(e) {\n const $field = this.rootEl(e.target).find('.sweet-placeholder__field');\n const $label = this.rootEl(e.target).find('.sweet-placeholder__label');\n if ($field.is(':focus')) return;\n $label.removeClass('sweet-placeholder__label--active');\n const empty = !$field.val() || $field.val().length === 0;\n $label.toggleClass('sweet-placeholder__label--full', !empty);\n },\n\n fauxcus(e) {\n if (this.rootEl(e.target).find('.selectize').length) {\n this.rootEl(e.target)\n .find('.sweet-placeholder__field input')\n .focus();\n this.rootEl(e.target)\n .find('.selectize')[0]\n .selectize.open();\n } else {\n this.rootEl(e.target)\n .find('.sweet-placeholder__field')\n .focus();\n }\n },\n\n decide(e) {\n const $field = this.rootEl(e.target).find('.sweet-placeholder__field');\n if ($field.is(':focus') || $field.find('input').is(':focus')) {\n this.focus(e);\n } else {\n this.blur(e);\n }\n },\n\n rootEl(target) {\n return this.$(target).parents('.sweet-placeholder');\n },\n});\n\nexport default SweetPlaceholder;\n","import $ from 'jquery';\nimport _ from 'lodash';\nimport Backbone from 'backbone';\nimport FacebookShareModel from './facebook_share_model';\nimport SweetPlaceholder from './sweet_placeholder';\n\nconst FacebookShareView = Backbone.View.extend({\n el: '#facebook_share-container',\n\n events: {\n 'click input[type=\"checkbox\"]': 'handleClick',\n 'change textarea': 'updateMessage',\n },\n\n trackEvent(name) {\n window.ga(\n 'send',\n 'event',\n 'fb:sign_share',\n name,\n window.champaign.personalization.urlParams.id\n );\n },\n\n initialize() {\n this.fbConnected = false;\n this.template = _.template(this.$('script').html());\n this.fbAppId = $(\"meta[property='fb:app_id']\").attr('content');\n this.trackEvent('landed_on_page');\n this.model = new FacebookShareModel(this.fbShareData());\n this.initializeFbClient();\n },\n\n fbShareData() {\n return {\n description: $(\"meta[property='og:description']\").attr('content'),\n title: $(\"meta[property='og:title']\").attr('content'),\n image: $(\"meta[property='og:image:url']\").attr('content'),\n url: $(\"meta[property='og:url']\").attr('content'),\n };\n },\n\n initializeFbClient() {\n $.ajaxSetup({ cache: true });\n\n $.getScript('//connect.facebook.net/en_US/sdk.js', () => {\n window.FB.init({\n appId: `${this.fbAppId}`,\n version: 'v2.7',\n });\n\n window.FB.getLoginStatus(response => {\n if (response.status === 'connected') {\n this.processConnected();\n } else {\n this.model.disable();\n this.render();\n }\n });\n });\n },\n\n processConnected() {\n let permitted = false;\n window.FB.api('/me/permissions', response => {\n _.forEach(response.data, function(item) {\n if (\n item.permission === 'publish_actions' &&\n item.status === 'granted'\n ) {\n permitted = true;\n }\n });\n if (permitted) {\n this.fbConnected = true;\n } else {\n this.model.disable();\n this.render();\n }\n });\n },\n\n post(cb) {\n if (this.model.isEnabled()) {\n this.model.post(window.FB, () => {\n this.trackEvent('shared');\n\n if (this.model.get('message') !== '') {\n this.trackEvent('custom_comment');\n }\n\n cb();\n });\n } else {\n cb();\n }\n },\n\n updateMessage(e) {\n this.model.set('message', e.target.value);\n },\n\n handleClick() {\n const loginHandler = resp => {\n if (\n resp.status !== 'connected' ||\n resp.authResponse.grantedScopes.indexOf('publish_actions') === -1\n ) {\n this.model.disable();\n this.render();\n this.fbConnected = false;\n this.trackEvent('aborts_authorisation');\n } else {\n this.trackEvent('authorised');\n }\n };\n\n const checked = this.$('input[type=\"checkbox\"]').prop('checked');\n const options = { scope: 'publish_actions', return_scopes: true };\n\n if (checked) {\n this.trackEvent('enabled');\n if (!this.fbConnected) window.FB.login(loginHandler, options);\n this.model.enable();\n } else {\n this.trackEvent('disabled');\n this.model.disable();\n }\n },\n\n check() {\n this.$el.prop('checked', true);\n },\n\n render() {\n this.$el.html(this.template(this.model.toJSON()));\n new SweetPlaceholder(this.$('.sweet-placeholder__field'));\n return this;\n },\n});\n\nFacebookShareView.isAvailable = () => {\n return !!$('#facebook_share-container').length;\n};\n\nexport default FacebookShareView;\n","import Backbone from 'backbone';\nimport ee from '../../../shared/pub_sub';\nimport GlobalEvents from '../../../shared/global_events';\nimport FacebookShareView from './facebook_share_view';\nimport I18n from 'champaign-i18n';\n\nconst Petition = Backbone.View.extend({\n el: '.petition-bar',\n\n globalEvents: {\n 'form:submitted': 'handleSuccess',\n },\n\n // options: object with any of the following keys\n // followUpUrl: the url to redirect to after success\n // submissionCallback: callback with event and server data for successful submission\n // redirectAfterAction: when true it redirects to the follow up page, defaults to true\n initialize(options = {}) {\n this.followUpUrl = options.followUpUrl;\n this.submissionCallback = options.submissionCallback;\n this.skipOnSuccessAction = options.skipOnSuccessAction;\n\n if (options.redirectAfterAction !== undefined) {\n this.redirectAfterAction = options.redirectAfterAction;\n } else {\n this.redirectAfterAction = true;\n }\n\n GlobalEvents.bindEvents(this);\n\n if (FacebookShareView.isAvailable()) {\n this.facebookShareView = new FacebookShareView().render();\n }\n },\n\n handleSuccess(e, data) {\n ee.emit('petition:submitted');\n\n const tracking = data.tracking;\n const member = window.champaign.personalization.member;\n if (tracking && !member.id) {\n if (typeof window.fbq === 'function') {\n if (tracking.user_id) {\n window.fbq('track', 'CompleteRegistration', tracking, {\n eventID: window.champaign.personalization.unique_id,\n });\n }\n }\n }\n\n if (this.skipOnSuccessAction) {\n return;\n }\n\n const hasCallbackFunction = typeof this.submissionCallback === 'function';\n\n if (hasCallbackFunction) {\n this.submissionCallback(e, data);\n }\n\n const handleRedirect = () => {\n if (data && data.follow_up_url) {\n this.redirectTo(data.follow_up_url);\n } else if (this.followUpUrl) {\n this.redirectTo(this.followUpUrl);\n } else if (!hasCallbackFunction) {\n // only do this option if no redirect or callback supplied\n alert(I18n.t('petition.excited_confirmation'));\n }\n };\n\n if (this.facebookShareView) {\n this.facebookShareView.post(handleRedirect.bind(this));\n } else if (this.redirectAfterAction) {\n handleRedirect();\n }\n },\n\n redirectTo(url) {\n window.location.href = url;\n },\n});\n\nexport default Petition;\n","import $ from 'jquery';\n\nlet version = 1;\n\nconst showNotice = () => {\n const banner = $('.cc-banner');\n const headerLogo = $('.header-logo');\n\n headerLogo.fadeOut(() => banner.fadeIn('slow'));\n\n banner.find('.cc-btn').on('click', () => {\n banner.hide();\n headerLogo.show();\n });\n};\n\nconst DoubleOptIn = {\n handleActionSuccess(resp) {\n if (!resp || !resp.double_opt_in) return;\n\n showNotice();\n },\n};\n\n$(() => {\n if (window.location.search.match(/double_opt_in=true/)) {\n showNotice();\n }\n});\n\nexport default DoubleOptIn;\n","import $ from 'jquery';\nimport I18n from 'champaign-i18n';\nimport Backbone from 'backbone';\nimport GlobalEvents from '../../../shared/global_events';\nimport DoubleOptIn from '../double_opt_in';\nimport Cookie from 'js-cookie';\n\nimport {\n changeCountry,\n changeVariant,\n changeConsent,\n} from '../../../state/consent';\n\nconst PetitionAndScrollToConsent = Backbone.View.extend({\n el: '.petition-bar',\n\n globalEvents: {\n 'form:validated': 'onValidateSuccess',\n 'form:submitted': 'onSubmitSuccess',\n },\n\n // options: object with any of the following keys\n // - followUpUrl: the url to redirect to after success.\n // - onSubmitSuccess: when present this will be called\n // after a successfull submission of the action form instead of\n // the doing the redirect.\n initialize(options = {}) {\n this.user_id =\n window.champaign.personalization.member.id || Cookie.get('__bpmx');\n this.store = window.champaign.store;\n this.followUpUrl = options.followUpUrl;\n this.petitionSidebar = $('.center-content__fixed-right');\n this.petitionOverlayButton = $('.petition-bar__mobile_ui__bottom_bar');\n this.consentQuestionStep = $(\n '.petition-and-scroll-to-consent__consent-question-wrapper'\n );\n this.optInButton = $('#opt-in-button');\n this.optOutButton = $('#opt-out-button');\n\n this.optInButton.on('click', this.optInCallback.bind(this));\n this.optOutButton.on('click', this.optOutCallback.bind(this));\n this.onSubmitSuccessCallback = options.onSubmitSuccess;\n\n GlobalEvents.bindEvents(this);\n },\n\n state() {\n return this.store.getState();\n },\n\n onValidateSuccess() {\n const { member, consent } = this.state();\n\n if (consent.isRequiredNew && !member) {\n this.petitionSidebar.fadeOut();\n this.petitionOverlayButton.fadeOut();\n this.displayAndScrollToConsentQuestion();\n } else {\n Backbone.trigger('form:submit_action_form');\n }\n },\n\n triggerRegistrationSuccessEvent(data) {\n const tracking = data.tracking;\n const member = window.champaign.personalization.member;\n const state = champaign.myPetition.store.getState();\n const consented = state.consent.isRequiredNew\n ? state.consent.consented\n : true;\n if (tracking && !member.id && consented) {\n if (typeof window.fbq === 'function') {\n if (tracking.user_id) {\n window.fbq('track', 'CompleteRegistration', tracking, {\n eventID: window.champaign.personalization.unique_id,\n });\n }\n }\n }\n },\n\n onSubmitSuccess(e, data) {\n this.triggerRegistrationSuccessEvent(data);\n\n DoubleOptIn.handleActionSuccess(data);\n if (this.onSubmitSuccessCallback) {\n this.onSubmitSuccessCallback();\n } else {\n this.redirectToFollowUp();\n }\n },\n\n optInCallback() {\n window.champaign.store.dispatch(changeConsent(true));\n Backbone.trigger('form:submit_action_form');\n },\n\n optOutCallback() {\n window.champaign.store.dispatch(changeConsent(false));\n Backbone.trigger('form:submit_action_form');\n },\n\n displayAndScrollToConsentQuestion() {\n this.makeStepFullScreen(this.consentQuestionStep);\n this.consentQuestionStep.fadeIn();\n this.scrollTo(this.consentQuestionStep);\n },\n\n redirectToFollowUp(data) {\n if (data && data.follow_up_url) {\n this.redirectTo(data.follow_up_url);\n } else if (this.followUpUrl) {\n this.redirectTo(this.followUpUrl);\n } else {\n alert(I18n.t('petition.excited_confirmation'));\n }\n },\n\n makeStepFullScreen(stepElement) {\n var padding = parseInt(stepElement.css('padding-top'), 10);\n var margin = parseInt(stepElement.css('margin-bottom'), 10);\n var totalElementHeight = stepElement.height() + padding + margin;\n if (totalElementHeight < window.innerHeight) {\n stepElement.css(\n 'margin-bottom',\n margin + (window.innerHeight - totalElementHeight)\n );\n }\n },\n\n scrollTo(element) {\n $('html, body').animate({ scrollTop: element.offset().top }, 800);\n },\n\n redirectTo(url) {\n window.location.href = url;\n },\n});\n\nexport default PetitionAndScrollToConsent;\n","import $ from 'jquery';\n\nconst MobileCheck = {\n el: '.mobile-indicator',\n\n isMobile() {\n return $(this.el).is(':visible');\n },\n};\n\nexport default MobileCheck;\n","import $ from 'jquery';\nimport I18n from 'champaign-i18n';\nimport _ from 'lodash';\nimport Backbone from 'backbone';\nimport ErrorDisplay from '../../../shared/show_errors';\nimport GlobalEvents from '../../../shared/global_events';\nimport MobileCheck from './mobile_check';\n\nconst Survey = Backbone.View.extend({\n el: '.survey',\n HIDDEN_FIELDS: ['source', 'referrer_id', 'rid', 'akid', 'referring_akid'],\n DEFAULT_SCROLL_OFFSET: 80,\n\n events: {\n 'click .survey__skip-button': 'skipSection',\n 'ajax:success form.survey__form': 'handleSuccess',\n 'ajax:error form.survey__form': 'handleFailure',\n 'ajax:send form.survey__form': 'handleSend',\n },\n\n // options: object with any of the following keys\n // source: the referring source to save\n // referrer_id: the champaign id of the referrer\n // referring_akid: the AK id of the referrer\n // prefill: an object with fields that will prefill the form\n // followUpUrl: the url to redirect to after the survey is completed\n // autoAdvance: if the page has all the data necessary to complete the first\n // form section by the time the page loads (eg from url params) then if this\n // param is truthy, the page will automatically scroll.\n // scrollOffset: the gap to leave between the top of the browser\n // window and the start of a form when scrolling down. default is 80\n initialize(options = {}) {\n const hasScrollOffset = options.hasOwnProperty('scrollOffset');\n this.scrollOffset = hasScrollOffset\n ? options.scrollOffset\n : this.DEFAULT_SCROLL_OFFSET;\n this.$forms = this.$('.survey__form');\n this.insertHiddenFields(options);\n this.prefill(options.prefill);\n this.revealFirstForm();\n if (options.autoAdvance) this.submitFirstFormIfComplete();\n this.followUpUrl = options.followUpUrl;\n if (!MobileCheck.isMobile()) {\n this.selectizeDropdowns();\n }\n GlobalEvents.bindEvents(this);\n },\n\n revealFirstForm() {\n this.$('.survey__form')\n .first()\n .removeClass('hidden-closed');\n },\n\n selectizeDropdowns() {\n this.$(\n '.action-form__country-selector, .survey-form__dropdown'\n ).selectize();\n },\n\n // prefillValues - an object mapping form names to prefill values\n prefill(prefillValues) {\n this.prefillValues = prefillValues;\n if (!_.isObject(prefillValues)) {\n return;\n }\n this.$('.survey__form input, select').each((ii, field) => {\n const $field = $(field);\n const name = $field.prop('name');\n if (prefillValues.hasOwnProperty(name)) {\n const radioOrCheck =\n $field.prop('type') === 'radio' || $field.prop('type') === 'checkbox';\n if (radioOrCheck && $field.val() == prefillValues[name]) {\n $field.prop('checked', 'checked');\n } else {\n $field.val(prefillValues[name]);\n }\n }\n });\n },\n\n submitFirstFormIfComplete() {\n // form.serialize() returns the forms values as URL encoded params,\n // so `=&` only happens when there's a blank value in the form, eg\n // name=&weight=180, and `=` at the end means the last param is blank\n const $form = this.$forms.first();\n const serialized = $form.serialize();\n const noneEmpty =\n serialized.indexOf('=&') === -1 && serialized.slice(-1) !== '=';\n const allPresent = _.every($form.find('input, select'), el => {\n if (this.$(el).prop('type') === 'hidden') return true;\n const name = this.$(el).prop('name');\n const outputIncludesName =\n serialized.indexOf(`&${name}=`) !== -1 ||\n serialized.indexOf(`${name}=`) === -0;\n const prefillIncludesName = this.prefillValues[name] !== undefined;\n return outputIncludesName && prefillIncludesName;\n });\n if (noneEmpty && allPresent) $form.submit();\n },\n\n insertHiddenFields(options) {\n for (const field of this.HIDDEN_FIELDS) {\n if (options[field] && this.$el) {\n this.insertHiddenInput(field, options[field], this.$forms.first());\n }\n }\n },\n\n insertHiddenInput(name, value, element) {\n $('')\n .attr({\n type: 'hidden',\n name: name,\n value: value,\n })\n .appendTo(element);\n },\n\n handleSuccess(e, data) {\n ErrorDisplay.clearErrors(this.$(e.target));\n this.enableButton(e);\n this.followForm(this.$(e.target));\n },\n\n handleFailure(e, data) {\n ErrorDisplay.clearErrors(this.$(e.target));\n ErrorDisplay.show(e, data);\n this.enableButton(e);\n },\n\n handleSend(e) {\n ErrorDisplay.clearErrors(this.$(e.target));\n this.disableButton(e);\n },\n\n // we assume all sections are skippable, since required sections should\n // not have a visible skip button\n skipSection(e) {\n this.followForm(this.$(e.target).parents('.survey__form'));\n },\n\n followForm($form) {\n const $nextForm = $form.next('.survey__form');\n if ($nextForm.length) {\n this.revealForm($nextForm);\n } else {\n this.followUp();\n }\n },\n\n revealForm($form) {\n $form.removeClass('hidden-closed');\n const position = $form.offset().top - this.scrollOffset; // leave room for header\n $('html, body').animate({ scrollTop: position }, 500);\n },\n\n followUp() {\n if (this.followUpUrl) {\n this.redirectTo(this.followUpUrl);\n } else {\n window.alert('Thanks for completing our survey!');\n }\n },\n\n redirectTo(url) {\n window.location.href = url;\n },\n\n disableButton(e) {\n this.$(e.target)\n .find('.survey__button')\n .each((ii, el) => {\n const $btn = this.$(el);\n if ($btn.data('enabled-text') === undefined) {\n $btn.data('enabled-text', $btn.text());\n }\n if (!$btn.hasClass('survey__skip-button')) {\n $btn.text(I18n.t('form.processing'));\n }\n $btn.addClass('button--disabled');\n });\n },\n\n enableButton(e) {\n this.$(e.target)\n .find('.survey__button')\n .each((ii, el) => {\n const $btn = this.$(el);\n $btn.text($btn.data('enabled-text'));\n $btn.removeClass('button--disabled');\n });\n },\n});\n\nexport default Survey;\n","import React, { Component } from 'react';\nimport Backbone from 'backbone';\nimport { FormattedMessage, FormattedHTMLMessage } from 'react-intl';\nimport Popup from 'reactjs-popup';\nimport { connect } from 'react-redux';\nimport Button from '../Button/Button';\nimport { changeConsent, toggleModal } from '../../state/consent';\nimport './ExistingMemberConsent.scss';\n\nconst style = {\n width: 'auto',\n padding: 30,\n};\n\nclass ExistingMemberConsent extends Component {\n closeModal = () => this.props.toggleModal(false);\n\n submit = value => {\n if (value) this.props.changeConsent(value);\n Backbone.trigger('form:submit_action_form');\n this.closeModal();\n };\n\n render() {\n if (!this.props.member || !this.props.isRequiredExisting) return null;\n return (\n \n
\n
\n \n
\n this.submit(true)}\n >\n \n \n this.submit()}\n >\n \n \n
\n \n
\n
\n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n open: state.consent.modalOpen,\n isRequiredExisting: state.consent.isRequiredExisting,\n member: state.member,\n});\n\nconst mapDispatchToProps = dispatch => ({\n toggleModal: value => dispatch(toggleModal(value)),\n changeConsent: value => dispatch(changeConsent(value)),\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ExistingMemberConsent);\n","import $ from 'jquery';\nimport I18n from 'champaign-i18n';\nimport React from 'react';\nimport { render } from 'react-dom';\nimport _ from 'lodash';\nimport Backbone from 'backbone';\nimport ee from '../../../shared/pub_sub';\nimport ErrorDisplay from '../../../shared/show_errors';\nimport MobileCheck from './mobile_check';\nimport GlobalEvents from '../../../shared/global_events';\nimport ComponentWrapper from '../../../components/ComponentWrapper';\nimport ConsentComponent from '../../../components/consent/ConsentComponent';\nimport ExistingMemberConsent from '../../../components/consent/ExistingMemberConsent';\nimport {\n changeCountry,\n changeVariant,\n resetState,\n showConsentRequired,\n toggleModal,\n} from '../../../state/consent';\nimport { resetMember } from '../../../state/member/reducer';\nimport { actionFormUpdated } from '../../../state/fundraiser/actions';\n\nconst ActionForm = Backbone.View.extend({\n el: 'form.action-form',\n HIDDEN_FIELDS: [\n 'source',\n 'akid',\n 'referrer_id',\n 'rid',\n 'bucket',\n 'referring_akid',\n ],\n\n events: {\n 'click .action-form__submit-button': 'onClickSubmit',\n 'click .action-form__clear-form': 'clearForm',\n 'change .action-form__dropdown[name=\"country\"]': 'handleCountryChange',\n 'ajax:success': 'handleSuccess',\n 'ajax:error': 'handleFailure',\n 'ajax:send': 'disableButton',\n },\n\n globalEvents: {\n 'form:clear': 'clearForm',\n 'form:step_change': 'handleStepChange',\n 'form:submit_action_form': 'submitForm',\n },\n\n // options: object with any of the following keys\n // akid: the actionkitid (akid) to save with the user request\n // source: the referring source to save\n // outstandingFields: the names of step 2 form fields that aren't satisfied by\n // the values in the member hash.\n // member: an object with fields that will prefill the form\n // referring_akid: if passed, submitted to the server in the form\n // referrer_id: if passed, submitted to the server in the form\n // bucket: if passed, submitted to the server in the form\n // location: a hash of location values inferred from the user's request\n // skipPrefill: boolean, will not prefill if true\n // async: when true the form will validate by default.\n // To submit trigger event `form:submit_action_form`\n initialize(options = {}) {\n this.$ = $;\n this.store = window.champaign.store;\n this.member = options.member;\n this.variant = options.variant || 'simple';\n this.async = options.async || false;\n this.insertHiddenFields(options);\n this.applyDisplayModeToFields(options.member);\n this.url = this.$el.attr('action');\n if (!options.skipPrefill) {\n this.prefillAsPossible(options);\n }\n if (!MobileCheck.isMobile()) {\n this.selectizeDropdowns();\n }\n this.$submitButton = this.$('.action-form__submit-button');\n this.$formWrapper = this.$('.form-wrapper');\n this.$petitionBarComponent = this.$('.petition-bar__main')[0];\n this.buttonText = this.$submitButton.text();\n this.setupState();\n this.enableGDPRConsent();\n GlobalEvents.bindEvents(this);\n },\n\n defaultAction() {\n if (this.isConsentNeededForExistingMember() || this.async) {\n return 'validate';\n }\n return 'submit';\n },\n\n state() {\n if (!this.store) return null;\n return this.store.getState();\n },\n\n setupState() {\n this.store.dispatch(changeVariant(this.variant));\n },\n\n isMemberPresent() {\n return !_.isEmpty(this.member);\n },\n\n isConsentNeededForExistingMember() {\n const { member, consent } = this.state();\n return member && consent.isRequiredExisting;\n },\n\n resetState() {\n if (this.store) {\n this.store.dispatch(resetState());\n this.store.dispatch(changeVariant(this.variant));\n }\n },\n\n submitForm() {\n _.delay(() => this.$el.submit(), 300);\n },\n\n handleCountryChange(event) {\n if (this.store) {\n this.store.dispatch(changeCountry(event.target.value) || null);\n }\n },\n\n onClickSubmit(event) {\n if (this.defaultAction() === 'validate') {\n event.preventDefault();\n event.stopPropagation();\n this.validateForm().then(() => {\n if (this.isConsentNeededForExistingMember()) {\n this.store.dispatch(toggleModal(true));\n } else {\n Backbone.trigger('form:validated');\n }\n });\n }\n\n const consentState = this.state().consent;\n\n if (consentState.isRequiredNew && consentState.consented === null) {\n event.preventDefault();\n event.stopPropagation();\n this.store.dispatch(showConsentRequired(true));\n const consentComponent = document.getElementsByClassName(\n 'ConsentControls'\n )[0];\n this.$petitionBarComponent.scrollTo({\n top: consentComponent.offsetTop,\n behavior: 'smooth',\n });\n this.$submitButton.blur();\n }\n },\n\n validateForm() {\n return $.post(`${this.url}/validate`, this.$el.serialize()).then(\n undefined,\n data => {\n this.handleFailure({ target: this.$el }, data);\n throw data;\n }\n );\n },\n\n // Looks at the display-mode for each field and hides them accordingly\n applyDisplayModeToFields(member) {\n if (this.isMemberPresent()) {\n this.$el.find('[data-display-mode=\"new_members_only\"]').hide(0);\n } else {\n this.$el.find('[data-display-mode=\"recognized_members_only\"]').hide(0);\n }\n },\n\n // prefills based on outstandingFields and member, returns true or false to indicate\n // the form can now be safely hidden from the user\n prefillAsPossible(options) {\n if (this.formCanAutocomplete(options.outstandingFields, options.member)) {\n this.completePrefill(options.member, options.location);\n if (this.formFieldCount() > 0) {\n this.showFormClearer(options.member);\n }\n this.$el.data('prefilled', true);\n return true;\n } else {\n this.partialPrefill(\n options.member,\n options.location,\n options.outstandingFields\n );\n return false;\n }\n },\n\n selectizeDropdowns() {\n try {\n $(this.$el)\n .find('.action-form__country-selector, .action-form__dropdown')\n .selectize();\n } catch (e) {\n return;\n }\n },\n\n clearFormErrors() {\n ErrorDisplay.clearErrors(this.$('form'));\n },\n\n formCanAutocomplete(outstandingFields, member) {\n return (\n _.isArray(outstandingFields) &&\n outstandingFields.length === 0 &&\n (this.formFieldCount() === 0 || _.isObject(member))\n );\n },\n\n clearForm() {\n this.store.dispatch(resetMember());\n const $fields_holder = $(this.$el).find('.form__group--prefilled');\n $fields_holder.removeClass('form__group--prefilled');\n $fields_holder\n .find(\n 'input[type=\"text\"], input[type=\"email\"], input[type=\"tel\"], select'\n )\n .val('')\n .trigger('change');\n $fields_holder.find('input[type=\"checkbox\"]').attr('checked', false);\n\n $fields_holder.find('select').each((ii, el) => {\n el.selectedIndex = -1;\n });\n $fields_holder.find('.selectized').each((ii, el) => {\n el.selectize.clear();\n });\n $fields_holder.parents('form').trigger('reset');\n $('.action-form__welcome-text').addClass('hidden-irrelevant');\n this.renameActionKitIdToReferringId();\n this.member = {};\n this.resetState();\n this.enableGDPRConsent();\n Backbone.trigger('sidebar:height_change');\n },\n\n completePrefill(prefillValues, unvalidatedPrefillValues) {\n $(this.$el)\n .find('.action-form__field-container')\n .addClass('form__group--prefilled');\n this.partialPrefill(prefillValues, unvalidatedPrefillValues, []);\n\n // DESIRED BUT WEIRD BEHAVIOR - unhide empty fields,\n // radio buttons, check boxes, and instructions\n const $empties = this.$('.action-form__field-container')\n .find('input, textarea, select')\n .filter(function(ii, el) {\n const val = $(this).val();\n return val === null || val.length === 0;\n });\n const $checkboxes = this.$('.action-form__field-container').find(\n '.checkbox-label, .radio-container, .form__instruction'\n );\n $($.merge($empties, $checkboxes))\n .parents('.action-form__field-container')\n .removeClass('form__group--prefilled');\n },\n\n // prefillValues - an object mapping form names to prefill values\n // fieldsToSkipPrefill - a list of names of fields that were not\n // satisfied when the form was validated with prefillValues\n // unvalidatedPrefillValues - values that were not passed through\n // the form validator, so should be prefilled even if the field\n // name comes up in fieldsToSkipPrefill.\n partialPrefill(\n prefillValues,\n unvalidatedPrefillValues = {},\n fieldsToSkipPrefill = []\n ) {\n if (!_.isObject(prefillValues)) {\n return;\n }\n fieldsToSkipPrefill = fieldsToSkipPrefill || [];\n this.$('input[type=text], input[type=email], input[type=tel], select').each(\n (ii, field) => {\n const $field = $(field);\n const name = $field.prop('name');\n if (unvalidatedPrefillValues.hasOwnProperty(name)) {\n // weird edge case handling - if the name field is country and the country code is\n // the 'Reserved' country code, don't prefill since it's not a real code.\n const isUnknownCountry =\n name.match('country') && unvalidatedPrefillValues[name] == 'RD';\n if (!isUnknownCountry) {\n $field.val(unvalidatedPrefillValues[name]).trigger('change');\n }\n }\n if (\n prefillValues.hasOwnProperty(name) &&\n fieldsToSkipPrefill.indexOf(name) === -1\n ) {\n $field.val(prefillValues[name]).trigger('change');\n }\n }\n );\n },\n\n formFieldCount() {\n return this.$('.action-form__field-container').length;\n },\n\n showFormClearer(member) {\n // don't bind to this.$ so it can be anywhere on the page\n $('.action-form__welcome-name').text(member.welcome_name);\n $('.action-form__welcome-text').removeClass('hidden-irrelevant');\n },\n\n insertHiddenFields(options) {\n for (let ii = 0; ii < this.HIDDEN_FIELDS.length; ii++) {\n const field = this.HIDDEN_FIELDS[ii];\n if (options[field] && this.$el) {\n this.insertHiddenInput(field, options[field], this.$el);\n }\n }\n\n if (this.consentNeeded) {\n this.insertHiddenInput('consented', options.member.consented, this.$el);\n }\n },\n\n insertHiddenInput(name, value, element) {\n $('')\n .attr({\n type: 'hidden',\n name: name,\n value: value,\n })\n .appendTo(element);\n },\n\n renameActionKitIdToReferringId() {\n const $action_kit_hidden = $('input[name=\"akid\"]');\n if ($action_kit_hidden) {\n $action_kit_hidden.attr('name', 'referring_akid');\n }\n },\n\n handleSuccess(e, data) {\n const consented = this.getConsent();\n // FIXME: we should return consistently from the backend\n ee.emit('action:submitted_success', {\n action: e.currentTarget.action,\n consented: consented.toString(),\n submitText: this.buttonText,\n });\n Backbone.trigger('form:submitted', e, data);\n this.store.dispatch(actionFormUpdated(this.formData()));\n },\n\n getConsent() {\n try {\n const { consented = true } = this.formData() || {};\n const parsedConsent =\n typeof consented === 'string'\n ? Boolean(parseInt(consented))\n : consented;\n return parsedConsent;\n } catch {\n return true;\n }\n },\n\n formData() {\n return _.reduce(\n $(this.el).serializeArray(),\n (reducedData, arrayItem) => ({\n ...reducedData,\n [arrayItem.name]: arrayItem.value,\n }),\n {}\n );\n },\n\n handleFailure(e, data) {\n ErrorDisplay.show(e, data);\n this.enableButton();\n this.$petitionBarComponent.scrollTo({ top: 0, behavior: 'smooth' });\n this.$submitButton.blur();\n if (window.Sentry && e) window.Sentry.captureException(e);\n },\n\n handleStepChange(step) {\n if (step <= 3) {\n this.enableButton();\n }\n },\n\n disableButton() {\n this.$submitButton.text(I18n.t('form.processing'));\n this.$submitButton.addClass('button--disabled');\n },\n\n enableButton() {\n this.$submitButton.text(this.buttonText);\n this.$submitButton.removeClass('button--disabled');\n },\n\n enableGDPRConsent() {\n if (this.gdprContainer) return;\n this.gdprContainer = document.createElement('div');\n this.$formWrapper.append(this.gdprContainer);\n\n render(\n \n \n \n ,\n this.gdprContainer\n );\n },\n});\n\nexport default ActionForm;\n","import $ from 'jquery';\nimport Backbone from 'backbone';\n\nconst OverlayToggle = Backbone.View.extend({\n el: '.overlay-toggle',\n\n events: {\n 'click .overlay-toggle__close-button': 'hide',\n },\n\n initialize() {\n // we bind this event globally because the button to open the\n // overlay probably isn't inside the overlay\n $('.overlay-toggle__open-button').on('click', this.reveal.bind(this));\n },\n\n hide() {\n const el = $('.partial--fundraiser');\n if (el.length) {\n el.find(\n '.section--header, .section--footer, .center-content__big-column'\n ).show();\n }\n this.$('.overlay-toggle__mobile-view')\n .addClass('overlay-toggle__mobile-view--closed')\n .removeClass('overlay-toggle__mobile-view--open');\n // hide header, cover-photo\n $('.center-content').removeClass('overlay-visible');\n },\n\n reveal() {\n $('.center-content').addClass('overlay-visible');\n this.$('.overlay-toggle__mobile-view')\n .removeClass('overlay-toggle__mobile-view--closed')\n .addClass('overlay-toggle__mobile-view--open');\n const el = $('.partial--fundraiser');\n if (el.length) {\n setTimeout(() => {\n el.find(\n '.section--header, .section--footer, .center-content__big-column'\n ).hide();\n }, 500);\n }\n },\n});\n\nexport default OverlayToggle;\n","import $ from 'jquery';\nimport I18n from 'champaign-i18n';\nimport _ from 'lodash';\nimport Backbone from 'backbone';\n\nconst Thermometer = Backbone.View.extend({\n // settings:\n // goal_k: the goal as a user-friendly string, such as '35k'\n // remaining: the number of signatures remaining before the target\n // signatures: the number of signatures recieved already\n // percentage: the percentage of the goal completed, eg '35.4'\n initialize(settings) {\n this.updateUi(settings);\n },\n\n updateUi(settings) {\n if (!_.isObject(settings) || _.keys(settings).length == 0) {\n return;\n }\n $('.thermometer__remaining').text(\n I18n.t('thermometer.signatures_until_goal', {\n goal: settings.goal_k,\n remaining: settings.remaining,\n })\n );\n $('.thermometer__signatures').text(\n `${settings.signatures} ${I18n.t('thermometer.signatures')}`\n );\n $('.thermometer__mercury').css('width', `${settings.percentage}%`);\n },\n});\n\nexport default Thermometer;\n","import $ from 'jquery';\nimport Backbone from 'backbone';\nimport GlobalEvents from '../../../shared/global_events';\nimport MobileCheck from './mobile_check';\n\nconst Sidebar = Backbone.View.extend({\n el: '.sidebar',\n\n globalEvents: {\n 'sidebar:height_change': 'policeHeights',\n 'fundraiser:change_step': 'policeHeights',\n },\n\n initialize(options = {}) {\n this.petitionTextMinHeight = options.petitionTextMinHeight || 120; // pixels\n this.baseClass = options.baseClass;\n if (!MobileCheck.isMobile()) {\n $(window).on('resize', () => this.policeHeights());\n }\n GlobalEvents.bindEvents(this);\n this.policeHeights();\n window.setTimeout(this.policeHeights.bind(this), 200); // give sticky time to init\n },\n\n isSticky: function() {\n return this.$el.parent().hasClass('sticky-wrapper');\n },\n\n policeHeights: function() {\n if (MobileCheck.isMobile()) {\n return;\n }\n this.positionBarTop();\n this.positionBarTitle();\n this.checkOverflow();\n },\n\n checkOverflow() {\n // if the page is too short for the form, make it scroll overflow\n let totalHeight = 0;\n const $titleHeight = this.$(`.${this.baseClass}__title-bar`).outerHeight();\n const $targetHeight = this.$(`.${this.baseClass}__target`).outerHeight();\n const $textHeight = this.$(`.${this.baseClass}__petition-text`).outerHeight();\n if (this.$el.hasClass('stuck-right')) {\n totalHeight = $titleHeight + $targetHeight + $textHeight + 30; // 30 being the extra buffer height in addition to the top bar\n }\n const main = this.$(`.${this.baseClass}__main`);\n if (main && main[0]) {\n main.css('max-height', `calc(100vh - ${totalHeight}px)`);\n }\n },\n\n positionBarTop() {\n // move the blurb up into the correct position\n this.topHeight = this.$(`.${this.baseClass}__top`).outerHeight();\n if (this.isSticky()) {\n this.$el.parent('.sticky-wrapper').css('top', `-${this.topHeight}px`);\n this.$el.css('top', 0);\n } else if (!this.$el.hasClass('stuck-right')) {\n this.$el.css('top', `-${this.topHeight}px`);\n }\n },\n\n positionBarTitle() {\n // make sure the title is in the right place if it wraps\n const $title = $(`.${this.baseClass}__title-bar`);\n if ($title.length) {\n $title.css('top', `-${$title.outerHeight()}px`);\n }\n },\n});\n\nexport default Sidebar;\n","import Backbone from 'backbone';\n\nconst CampaignerOverlay = Backbone.View.extend({\n el: '.campaigner-overlay',\n\n events: {\n 'click .campaigner-overlay__close': 'disappear',\n 'ajax:success': 'togglePublish',\n },\n\n disappear() {\n this.$el.css('bottom', '-1000px');\n this.status = this.$el.data('status');\n },\n\n togglePublish() {\n const $field = this.$('.campaigner-overlay__publish-field');\n $field.val($field.val() == 'true' ? false : true);\n this.status = this.status === 'active' ? 'inactive' : 'active';\n this.$el.toggleClass('campaigner-overlay--active');\n this.$el.toggleClass('campaigner-overlay--inactive');\n },\n});\n\nexport default CampaignerOverlay;\n","import $ from 'jquery';\nimport ErrorDisplay from '../../shared/show_errors';\n\n$(() => {\n $('form.registration-form').on('ajax:error', (e, xhr) =>\n ErrorDisplay.show(e, xhr)\n );\n});\n","import $ from 'jquery';\nimport MobileCheck from './backbone/mobile_check';\nimport { logEvent } from '../../util/log_event';\n\n$(() => {\n if (!MobileCheck.isMobile()) {\n $('.button--whatsapp').remove();\n }\n\n $('.button--whatsapp').click(function(e) {\n e.preventDefault();\n $.post(window.location.origin + '/api/shares/track', {\n variant_type: 'whatsapp',\n variant_id: $(this).attr('variant_id'),\n }).then(function() {\n window.location = $(e.currentTarget)\n .children('a')\n .attr('href');\n });\n });\n\n let shared = false;\n\n const handleFacebookShare = event => {\n // SP triggers 'share' twice so need to block\n // a duplicate event from being posted to GA.\n if (shared) return;\n\n const share = event.originalEvent.share;\n shared = true;\n\n logEvent('social_share', share);\n };\n\n $(window).bind('share', handleFacebookShare);\n});\n","import $ from 'jquery';\nimport MobileCheck from './mobile_check';\n\nconst DesktopSticky = Backbone.View.extend({\n el: '.desktop-sticky',\n\n // extraClass: string, optional - the class to add to the wrapper\n // generated by the sticky library (for CSS)\n // el: the CSS selector for the element to make sticky\n initialize: function(options) {\n this.extraClass = options.extraClass || '';\n\n this.isSticky = false;\n this.questionSticky();\n\n // can't use events hash cause scoped to window\n $(window).on('resize', () => this.questionSticky());\n },\n\n makeSticky: function() {\n if (!this.isSticky) {\n $(this.$el).sticky({ topSpacing: 0 });\n if (this.extraClass.length) {\n this.$el.parent('.sticky-wrapper').addClass(this.extraClass);\n }\n this.isSticky = true;\n }\n },\n\n unmakeSticky: function() {\n if (this.isSticky) {\n this.$el.unstick();\n this.isSticky = false;\n }\n },\n\n questionSticky: function() {\n if (MobileCheck.isMobile() || this.$el.hasClass('not-sticky')) {\n this.unmakeSticky();\n } else {\n this.makeSticky();\n }\n },\n});\n\nwindow.champaign.DesktopSticky = DesktopSticky;\n","import ee from '../../shared/pub_sub';\nimport Cookie from 'js-cookie';\n\n$(document).ready(function() {\n $('.two-step__decline').on('click', e => {\n ee.emit('two_step:decline', {\n id: e.target?.id,\n text: e.target?.innerText,\n });\n });\n\n $('.two-step__accept').on('click', e => {\n const id = e.target?.id || e.currentTarget?.id;\n ee.emit('two_step:accept', { id, text: e.target?.innerText });\n if (id === 'donate-two-step-accept') {\n if (typeof window.fbq === 'function') {\n try {\n const userId =\n window.champaign.personalization.member?.id || Cookie.get('__bpmx');\n window.fbq(\n 'trackCustom',\n 'PostActionDonateYes',\n {\n user_id: userId,\n },\n { eventID: window.champaign.personalization.unique_id }\n );\n } catch (e) {\n console.error(e);\n }\n }\n }\n });\n});\n","import Petition from './backbone/petition';\nimport PetitionAndScrollToConsent from './backbone/petition_and_scroll_to_consent';\nimport DoubleOptIn from './double_opt_in';\nimport Survey from './backbone/survey';\nimport ActionForm from './backbone/action_form';\nimport OverlayToggle from './backbone/overlay_toggle';\nimport Thermometer from './backbone/thermometer';\nimport Sidebar from './backbone/sidebar';\nimport Notification from './backbone/notification';\nimport SweetPlaceholder from './backbone/sweet_placeholder';\nimport CampaignerOverlay from './backbone/campaigner_overlay';\n\nimport './registration';\nimport './track_shares';\nimport './champaign';\n\nObject.assign(window.champaign, {\n ActionForm,\n CampaignerOverlay,\n DoubleOptIn,\n Notification,\n OverlayToggle,\n Petition,\n PetitionAndScrollToConsent,\n Sidebar,\n Survey,\n SweetPlaceholder,\n Thermometer,\n});\n","// The features store is essentially a key => value store that\n// holds a list of features (keys) with their on/off values (values).\n// To add a feature toggle, add a key with a default value to the defaults\n// and then use FeaturesHelper to enable or disable it.\n\nconst defaults = {\n thermometer: false,\n};\n\nexport default function reducer(s = defaults, a) {\n switch (a.type) {\n case '@@chmp:feature:enable':\n if (Object.keys(s).includes(a.featureName)) {\n return { ...s, [a.featureName]: true };\n }\n break;\n case '@@chmp:feature:disable':\n if (Object.keys(s).includes(a.featureName)) {\n return { ...s, [a.featureName]: false };\n }\n break;\n default:\n return s;\n }\n return s;\n}\n\nexport function enableFeature(featureName) {\n return { type: '@@chmp:feature:enable', featureName };\n}\n\nexport function disableFeature(featureName) {\n return { type: '@@chmp:feature:disable', featureName };\n}\n\n// FeaturesHelper needs to be initialised with your redux store.\n// const features = new FeaturesHelper(store);\n// features.enable('featurename');\n// features.disable('featurename');\n// If you try to enable or disable a feature that's not in the list\n// of features (those listed in defaults), it will be ignored.\nexport class FeaturesHelper {\n constructor(store) {\n if (!store) throw new Error('Features must be initialised with a store.');\n this.store = store;\n }\n\n list() {\n return this.store.getState().features;\n }\n\n enable(featureName) {\n this.store.dispatch(enableFeature(featureName));\n return this.store.getState().features;\n }\n\n disable(featureName) {\n this.store.dispatch(disableFeature(featureName));\n }\n\n isEnabled(featureName) {\n const features = this.store.getState().features;\n return features[featureName] || false;\n }\n}\n","import { isEmpty, keys, pick, reduce } from 'lodash';\nimport ee from '../../shared/pub_sub';\n\nimport { isDirectDebitSupported } from '../../util/directDebitDecider';\n\nconst getLocalPaymentTypes = ({ country, recurring, currency, amount }) => {\n const supportedList = [];\n\n if (recurring) return supportedList;\n\n if (currency === 'EUR') {\n // IDEAL\n if (country === 'NL') supportedList.push('ideal');\n }\n\n return supportedList;\n};\n\nexport const initialState = {\n currency: 'USD',\n currentPaymentType: 'ideal',\n currentStep: 0,\n showDirectDebit: false,\n showIdeal: false,\n directDebitOnly: false,\n disableSavedPayments: false,\n donationAmount: undefined,\n selectedAmountButton: null,\n isCustomAmount: false,\n donationBands: {\n USD: [2, 5, 10, 25, 50],\n GBP: [2, 5, 10, 25, 50],\n EUR: [2, 5, 10, 25, 50],\n CHF: [2, 5, 10, 25, 50],\n CAD: [2, 5, 10, 25, 50],\n AUD: [2, 5, 10, 25, 50],\n NZD: [2, 5, 10, 25, 50],\n MXN: [2, 5, 10, 25, 50],\n ARS: [2, 5, 10, 25, 50],\n BRL: [2, 5, 10, 25, 50],\n },\n fields: [],\n form: {},\n formId: '',\n formValues: {},\n oneClick: false,\n outstandingFields: [],\n paymentMethods: [],\n paymentTypes: ['card', 'paypal'],\n localPaymentTypes: [],\n preselectAmount: false,\n recurring: false,\n recurringDefault: 'one_off',\n storeInVault: false,\n submitting: false,\n oneClickError: false,\n title: '',\n supportedLocalCurrency: true,\n merchantAccounts: {\n USD: 'sumofus',\n GBP: 'sumofus2_GBP',\n EUR: 'sumofus2_EUR',\n CHF: 'SumOfUs_CHF',\n CAD: 'SumOfUs_CAD',\n AUD: 'SumOfUs_AUD',\n NZD: 'SumOfUs_NZD',\n MXN: 'SumOfUs_MXN',\n ARS: 'SumOfUs_ARS',\n BRL: 'SumOfUs_BRL',\n },\n merchantAccountId: 'sumofus',\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'initialize_fundraiser':\n const initialData = pick(\n action.payload,\n 'member',\n 'pageId',\n 'formValues',\n 'formId',\n 'outstandingFields',\n 'title',\n 'fields',\n 'oneClick',\n 'donationAmount',\n 'id_mismatch'\n );\n initialData.formValues = initialData.formValues || {};\n return {\n ...state,\n ...initialData,\n paymentTypes: ['paypal', 'card'],\n };\n case 'search_string_overrides':\n return searchStringOverrides(state, action.payload);\n case 'reset_member':\n return {\n ...state,\n outstandingFields: state.fields.map(field => field.name),\n formValues: {},\n };\n case 'change_currency': {\n const {\n preselectAmount,\n donationBands,\n merchantAccounts,\n donationAmount,\n } = state;\n const currency = supportedCurrency(action.payload, keys(donationBands));\n const localPaymentTypes = getLocalPaymentTypes({\n country: state.form.country || state.formValues.country,\n recurring: state.recurring,\n currency,\n amount: donationAmount,\n });\n const merchantAccountId = merchantAccounts[currency.toUpperCase()];\n\n return {\n ...state,\n ...featuredAmountState(preselectAmount, { donationBands, currency }),\n currency,\n localPaymentTypes,\n merchantAccountId,\n };\n }\n case 'change_amount':\n const donationAmount = action.payload || undefined;\n return { ...state, donationAmount };\n case 'set_selected_amount_button':\n return { ...state, selectedAmountButton: action.payload };\n case 'one_click_failed':\n return { ...state, disableSavedPayments: true, oneClickError: true };\n case 'change_step':\n return { ...state, currentStep: action.payload };\n case 'set_is_custom_amount':\n return { ...state, isCustomAmount: action.payload };\n case 'update_form': {\n const form = action.payload;\n const showDirectDebit = isDirectDebitSupported({\n country: form.country,\n recurring: state.recurring,\n });\n const localPaymentTypes = getLocalPaymentTypes({\n country: form.country,\n recurring: state.recurring,\n currency: state.currency,\n amount: state.donationAmount,\n });\n\n const paymentTypes = supportedPaymentTypes({\n showDirectDebit,\n localPaymentTypes,\n directDebitOnly: state.directDebitOnly,\n });\n const currentPaymentType = safePaymentType(\n state.currentPaymentType,\n paymentTypes\n );\n return {\n ...state,\n form,\n showDirectDebit,\n localPaymentTypes,\n paymentTypes,\n currentPaymentType,\n };\n }\n case 'set_direct_debit_only': {\n const localPaymentTypes = getLocalPaymentTypes({\n country: state.form.country || state.formValues.country,\n recurring: action.payload,\n currency: state.currency,\n amount: state.donationAmount,\n });\n\n const paymentTypes = supportedPaymentTypes({\n showDirectDebit: state.showDirectDebit,\n showIdeal: state.showIdeal,\n directDebitOnly: action.payload,\n localPaymentTypes,\n });\n\n const currentPaymentType = safePaymentType(\n state.currentPaymentType,\n paymentTypes\n );\n\n return {\n ...state,\n directDebitOnly: action.payload,\n paymentTypes,\n currentPaymentType,\n };\n }\n case 'set_donation_bands':\n const payload = action.payload;\n const donationBands = isEmpty(payload) ? state.donationBands : payload;\n const currency = supportedCurrency(state.currency, keys(donationBands));\n const preselectAmount = state.preselectAmount;\n return {\n ...state,\n ...featuredAmountState(preselectAmount, { donationBands, currency }),\n currency,\n donationBands,\n };\n case 'set_payment_type':\n const label = state.currentPaymentType\n ? `from_${state.currentPaymentType}_to_${action.payload}`\n : action.payload;\n ee.emit('set_payment_type', label);\n return {\n ...state,\n currentPaymentType: safePaymentType(action.payload, state.paymentTypes),\n };\n case 'set_recurring': {\n const showDirectDebit = isDirectDebitSupported({\n country: state.form.country || state.formValues.country,\n recurring: action.payload,\n });\n\n const localPaymentTypes = getLocalPaymentTypes({\n country: state.form.country || state.formValues.country,\n recurring: action.payload,\n currency: state.currency,\n amount: state.donationAmount,\n });\n\n const paymentTypes = supportedPaymentTypes({\n showDirectDebit,\n localPaymentTypes,\n directDebitOnly: state.directDebitOnly,\n });\n const currentPaymentType = safePaymentType(\n state.currentPaymentType,\n paymentTypes\n );\n\n return {\n ...state,\n recurring: action.payload,\n showDirectDebit,\n localPaymentTypes,\n paymentTypes,\n currentPaymentType,\n };\n }\n case 'set_recurring_defaults': {\n const data = recurringState(action.payload);\n const showDirectDebit = isDirectDebitSupported({\n country: state.form.country || state.formValues.country,\n recurring: data.recurring,\n });\n\n const localPaymentTypes = getLocalPaymentTypes({\n country: state.form.country || state.formValues.country,\n recurring: data.recurring,\n currency: state.currency,\n amount: state.donationAmount,\n });\n\n const paymentTypes = supportedPaymentTypes({\n showDirectDebit,\n localPaymentTypes,\n directDebitOnly: state.directDebitOnly,\n });\n\n const currentPaymentType = safePaymentType(\n state.currentPaymentType,\n paymentTypes\n );\n return {\n ...state,\n ...data,\n showDirectDebit,\n localPaymentTypes,\n paymentTypes,\n currentPaymentType,\n };\n }\n case 'set_store_in_vault':\n return { ...state, storeInVault: action.payload };\n case 'set_submitting':\n return { ...state, submitting: action.payload };\n case 'preselect_amount':\n return {\n ...state,\n ...featuredAmountState(action.payload, {\n donationBands: state.donationBands,\n currency: state.currency,\n }),\n };\n // Update our form with data from another form\n // E.g. petition was signed, so we can re-use the data from that form in\n // this form.\n case '@@chmp:action_form:updated': {\n const relevantFields = state.fields.map(field => field.name);\n const formValues = pick(action.payload, relevantFields);\n const form = formValues;\n const outstandingFields = relevantFields.filter(key => !formValues[key]);\n const showDirectDebit = isDirectDebitSupported({\n country: formValues.country,\n recurring: state.recurring,\n });\n const localPaymentTypes = getLocalPaymentTypes({\n country: formValues.country,\n recurring: state.recurring,\n currenct: state.currency,\n amount: state.donationAmount,\n });\n\n const paymentTypes = supportedPaymentTypes({\n showDirectDebit,\n localPaymentTypes,\n directDebitOnly: state.directDebitOnly,\n });\n const currentPaymentType = safePaymentType(\n state.currentPaymentType,\n paymentTypes\n );\n return {\n ...state,\n form,\n formValues,\n outstandingFields,\n paymentTypes,\n localPaymentTypes,\n currentPaymentType,\n };\n }\n case 'set_supported_local_currency':\n return { ...state, supportedLocalCurrency: action.payload };\n default:\n return state;\n }\n};\n\nexport const RECURRING_DEFAULTS = ['one_off', 'recurring', 'only_recurring'];\n\n// `supportedCurrency` gets a currency string and compares it against our list of supported currencies.\n// If our currency is not in the list of supported currencies, it will return the default currency (which,\n// by default, is the first currency in our supoortedCurrencies list)\nexport function supportedCurrency(\n currency,\n currencies = Object.keys(initialState.donationBands)\n) {\n return currencies.find(c => c === currency) || currencies[0];\n}\n\nexport function recurringState(recurringValue = '') {\n const recurringDefault =\n RECURRING_DEFAULTS.find(i => i === recurringValue.toLowerCase()) ||\n 'one_off';\n return {\n recurring: recurringDefault !== 'one_off',\n recurringDefault,\n };\n}\n\nexport function pickMedianAmount(bands, currency) {\n const amounts = bands[currency];\n return amounts[Math.floor(amounts.length / 2)] || 0;\n}\n\nexport function featuredAmountState(preselectAmount, state) {\n if (preselectAmount && state) {\n return {\n preselectAmount,\n donationFeaturedAmount: pickMedianAmount(\n state.donationBands,\n state.currency\n ),\n };\n }\n\n return {\n preselectAmount,\n };\n}\n\nconst searchStringHandlers = {\n hide_spm: function hideSavedPayments(state, value) {\n if (value === '1') return { ...state, disableSavedPayments: true };\n else return state;\n },\n};\n\n// Overrides state values based on url query/search string (highest priority)\nexport function searchStringOverrides(state, search) {\n const handlers = pick(searchStringHandlers, keys(search));\n return reduce(handlers, (res, handler, k) => handler(res, search[k]), state);\n}\n\nfunction supportedPaymentTypes(data) {\n let list = [];\n if (data.localPaymentTypes?.length > 0) list = data.localPaymentTypes;\n if (data.showDirectDebit) list.push('gocardless');\n if (!data.directDebitOnly) list.push('paypal', 'card');\n return list.sort(customSort);\n}\n\nfunction safePaymentType(pt, pts) {\n return pts.includes(pt) ? pt : pts[0];\n}\n\nfunction customSort(a, b) {\n const sortOrder = ['gocardless', 'paypal', 'card', 'ideal'];\n\n const indexA = sortOrder.indexOf(a);\n const indexB = sortOrder.indexOf(b);\n\n if (indexA === -1 && indexB === -1) {\n return 0;\n } else if (indexA === -1) {\n return 1;\n } else if (indexB === -1) {\n return -1;\n }\n\n return indexA - indexB;\n}\n","const initialState = [];\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case '@@chmp:initialize':\n return action.payload.personalization.paymentMethods;\n case 'reset_member':\n return initialState;\n default:\n return state;\n }\n};\n","export const initialState = {\n action_count: 0,\n allow_duplicate_actions: false,\n canonical_url: '',\n created_at: '',\n featured: false,\n follow_up_page_id: 0,\n follow_up_plan: 'with_liquid',\n id: 0,\n language_id: 1,\n primary_image_id: 0,\n publish_status: 'unpublished',\n slug: '',\n status: 'pending',\n title: '',\n updated_at: '',\n};\n\nexport default function pageReducer(state = initialState, action) {\n if (action.type === '@@chmp:initialize') {\n return action.payload.page;\n }\n return state;\n}\n","import { omit } from 'lodash';\nimport ee from '../shared/pub_sub';\n\nexport default function extraActionFieldsReducer(state = {}, action) {\n switch (action.type) {\n case '@@chmp:extra_action_fields:add':\n return { ...state, ...action.fields };\n case '@@chmp:extra_action_fields:remove':\n return omit(state, ...action.fieldNames);\n case '@@chmp:extra_action_fields:clear':\n return {};\n default:\n return state;\n }\n}\n\nexport function addExtraActionFields(fields) {\n return { type: '@@chmp:extra_action_fields:add', fields };\n}\nif (!ee.listeners('@@chmp:extra_action_fields:add').length) {\n ee.on('@@chmp:extra_action_fields:add', function(fields) {\n const store = window.champaign.store;\n if (store) {\n store.dispatch(addExtraActionFields(fields));\n }\n });\n}\n\nexport function removeExtraActionFields(...fieldNames) {\n return { type: '@@chmp:extra_action_fields:remove', fieldNames };\n}\nif (!ee.listeners('@@chmp:extra_action_fields:remove').length) {\n ee.on('@@chmp:extra_action_fields:remove', function(...fields) {\n const store = window.champaign.store;\n if (store) store.dispatch(removeExtraActionFields(...fields));\n });\n}\n\nexport function clearExtraActionFields() {\n return { type: '@@chmp:extra_action_fields:clear' };\n}\nif (!ee.listeners('@@chmp:extra_action_fields:clear').length) {\n ee.on('@@chmp:extra_action_fields:clear', function() {\n const store = window.champaign.store;\n if (store) store.dispatch(clearExtraActionFields());\n });\n}\n","import { combineReducers } from 'redux';\nimport member from './member/reducer';\nimport fundraiser from './fundraiser/reducer';\nimport paymentMethods from './paymentMethods/reducer';\nimport page from './page/reducer';\nimport consent from './consent';\nimport forms from './forms';\nimport features from './features';\nimport donationsThermometer from './thermometer';\nimport extraActionFields from './extraActionFields';\nimport { reducer as emailTarget } from './email_pension/actions';\nimport abTests from './experiments';\n\nconst reducers = {\n consent,\n emailTarget,\n extraActionFields,\n features,\n fundraiser,\n forms,\n member,\n page,\n paymentMethods,\n donationsThermometer,\n abTests,\n};\n\nexport default combineReducers(reducers);\n\nexport const INITIAL_ACTION = '@@chmp:initialize';\n","import { logEvent } from '../util/log_event';\n\nconst blacklist = ['update_form'];\n\nconst blacklisted = event => blacklist.indexOf(event) > -1;\n\nconst passToLogTracker = () => next => action => {\n const { type, skip_log = false, ...rest } = action;\n\n if (!skip_log && !blacklisted(type)) {\n logEvent(type, rest);\n }\n\n return next(action);\n};\n\nexport default passToLogTracker;\n","import EEA_LIST from '../../shared/eea-list';\n\nexport default {\n show() {\n const cookieconsent = window['cookieconsent'];\n const I18n = window['I18n'];\n cookieconsent.initialise({\n theme: 'edgeless',\n position: 'top',\n content: {\n message: I18n.t('cookie_consent.message'),\n dismiss: I18n.t('cookie_consent.dismiss_button_text'),\n link: I18n.t('cookie_consent.privacy_policy_link_text'),\n href: I18n.lookup('cookie_consent.privacy_policy_url') || '/privacy',\n },\n });\n },\n\n init(countryCode: string) {\n if (EEA_LIST.includes(countryCode)) {\n import('cookieconsent').then(() => this.show());\n }\n },\n};\n","/*\n * Usage\n *\n * Import the module (if you need to initialise it manually)\n * modules.import('ModuleName').then(ModuleName => ...);\n *\n * Load and initialise the module:\n * modules.load('ModuleName', options).then(instance => ...)\n *\n * List available modules:\n * modules.list()\n */\n\nconst MODULES = {\n StandaloneConsentPrompt: () => import('./consent/StandaloneConsentPrompt'),\n 'email-ukparliament': () => import('./EmailParliament'),\n 'braintree-web': () => import('./braintree-web'),\n 'eoy-thermometer': () => import('./eoy-thermometer'),\n api: () => import('./api'),\n};\n\nconst modules = {\n async import(moduleName: string) {\n if (!MODULES[moduleName]) {\n throw new Error('Module not found');\n }\n return MODULES[moduleName]();\n },\n\n async load(moduleName: string, options: any) {\n return modules.import(moduleName).then(module => module.init(options));\n },\n\n get list() {\n return Object.keys(MODULES);\n },\n};\n\nexport default modules;\n","import $ from 'jquery';\nimport ee from '../../shared/pub_sub';\n\nexport default class ProgressTracker {\n constructor() {\n this.addEventListeners();\n }\n\n addEventListeners() {\n const $header = $('.header-logo');\n ee.on('action:submitted_success', this.show);\n ee.on('action:submitted_success', () => this.tick('signed'));\n ee.on('fundraiser:transaction_success', () => this.tick('donated'));\n window.addEventListener(\n 'share',\n () => {\n if ($('.overlay-visible').length > 0) {\n $header.hide();\n }\n this.tick('shared');\n },\n false\n );\n ee.on('two_step:decline', () => {\n if ($('.overlay-visible').length > 0) {\n $header.hide();\n }\n $('[data-step=\"two\"]')\n .removeClass('progress-tracker__circle--tick')\n .addClass('progress-tracker__circle--cross');\n });\n }\n\n show() {\n const $header = $('.header-logo');\n const $tracker = $('.header-logo .progress-tracker');\n\n $header.addClass('with-progress-tracker');\n\n $tracker\n .removeClass('hidden-closed')\n .clone()\n .addClass('progress-tracker--fundraiser')\n .prependTo('.Stepper.fundraiser-bar__top');\n }\n\n tick(section) {\n $(`.progress-tracker__circle--${section}`)\n .removeClass('progress-tracker__circle--cross')\n .addClass('progress-tracker__circle--tick');\n }\n\n cross(section) {\n $(`.progress-tracker__circle--${section}`)\n .removeClass('progress-tracker__circle--tick')\n .addClass('progress-tracker__circle--cross');\n }\n}\n","import uri from 'urijs';\n\nconst RegisterMemberRedirector = {\n attemptRedirect(followUpUrl, member) {\n if (typeof member !== 'object') {\n member = window.champaign.personalization.member;\n }\n\n if (shouldMemberRegister()) {\n redirectToRegistration();\n return true;\n } else {\n return false;\n }\n\n function shouldMemberRegister() {\n return !member.registered;\n }\n\n function redirectToRegistration() {\n redirectTo(registrationUrl(followUpUrl, member.email));\n }\n\n function registrationUrl(url, email) {\n return uri('/member_authentication/new')\n .query({ follow_up_url: url, email: email })\n .toString();\n }\n },\n};\n\nconst AfterDonationRedirector = {\n attemptRedirect(followUpUrl, donationFormData) {\n redirectTo(followUpUrl);\n },\n};\n\nfunction redirectTo(url) {\n window.location.href = url;\n}\n\nexport default {\n RegisterMemberRedirector,\n AfterDonationRedirector,\n};\n","import { FeaturesHelper } from '../state/features';\nimport * as scrollToElement from '../modules/transition';\nimport configureStore from '../state';\nimport cookieConsent from '../modules/cookie-consent';\nimport DonationsThermometer from '../plugins/donations_thermometer';\nimport modules from '../modules/';\nimport ProgressTracker from '../plugins/progress-tracker';\nimport redirectors from '../legacy/member-facing/redirectors';\nimport URI from 'urijs';\n\nrequire('whatwg-fetch'); // TODO use fetch-ponyfill\nrequire('../legacy/member-facing/');\nrequire('../util/event_tracking');\n\nconst store = configureStore(window.champaign);\n\nwindow.URI = URI;\nwindow.champaign.store = store;\nwindow.champaign.modules = modules;\nwindow.champaign.DonationsThermometer = DonationsThermometer;\nwindow.champaign.features = new FeaturesHelper(store);\nwindow.champaign.ProgressTracker = ProgressTracker;\nwindow.champaign.redirectors = redirectors;\n\ndocument.addEventListener('DOMContentLoaded', function() {\n cookieConsent.init(window.champaign.personalization.location.country);\n});\n","import { createStore, applyMiddleware, compose } from 'redux';\nimport thunk from 'redux-thunk';\nimport reducers from './reducers';\nimport passToLogTracker from './pass_to_log_tracker';\n\nexport default data => {\n const composeEnhancers =\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n const enhancers = composeEnhancers(applyMiddleware(thunk, passToLogTracker));\n const store = createStore(reducers, {}, enhancers);\n\n if (data) {\n store.dispatch({\n type: '@@chmp:initialize',\n payload: data,\n skip_log: true,\n });\n }\n\n return store;\n};\n","// allow backbone views to use a hash to declaratively\n// bind their methods to events called through\n// ee.emit or Backbone.trigger\nimport ee from '../shared/pub_sub';\nimport _ from 'lodash';\nimport Backbone from 'backbone';\n\nexport default {\n bindEvents(view) {\n const events = view.globalEvents;\n if (!events || !_.isObject(events)) return;\n for (const eventName in events) {\n const methodName = events[eventName];\n const method = view[methodName];\n if (method) {\n Backbone.on(eventName, method, view);\n ee.on(eventName, method, view);\n }\n }\n },\n};\n","// This file adds error messages inline to forms.\n// For it to work properly, you need to pass data from the controller like:\n// format.json { render json: {errors: link.errors, name: 'link'}, status: :unprocessable_entity }\n// The name field is for if the form element names are prefixed, eg 'link[title]'\n\nconst ErrorDisplay = {\n show(e, data) {\n if (\n !e ||\n !data ||\n !data.responseText ||\n !data.getResponseHeader('Content-Type').match(/json/i) ||\n data.status != 422\n ) {\n return; // no reason to try if we dont have what we need\n }\n\n // use the relevant form if the event was a form submission.\n // otherwise, search in all the forms on the page.\n let $form = $(e.target) && $(e.target).length ? $(e.target) : $('form');\n let response = $.parseJSON(data.responseText);\n ErrorDisplay.clearErrors($form);\n $.each(response.errors, (f, m) => {\n ErrorDisplay.showError(f, m, $form, response);\n });\n },\n\n clearErrors($form) {\n $form.find('.has-error').removeClass('has-error');\n $form.find('.error-msg').remove();\n },\n\n showError(field_name, msgs, $form, response) {\n let $field = ErrorDisplay.findField(field_name, $form, response);\n $field\n .addClass('has-error')\n .parent()\n .addClass('has-error');\n $field.parent().append(ErrorDisplay.errorMsg(field_name, msgs));\n $field.on('change', e => {\n ErrorDisplay.hideError(e);\n });\n },\n\n errorMsg(field_name, msgs) {\n let msg = typeof msgs === 'string' ? msgs : msgs[0];\n let prefix = window.I18n ? I18n.t('errors.this_field') : 'The field';\n return `
${prefix} ${msg}
`;\n },\n\n hideError(e) {\n $(e.target)\n .removeClass('has-error')\n .parent()\n .removeClass('has-error');\n $(e.target)\n .siblings('.error-msg')\n .remove();\n $(e.target)\n .parent('.error-msg')\n .remove();\n },\n\n findField(field_name, $form, response) {\n if (response.name) {\n field_name = [response.name, '[', field_name, ']'].join('');\n }\n var $field = $form.find(`[name=\"${field_name}\"]`);\n if (!$field.length) {\n $field = $form.find(':submit').prev();\n } else if (\n $field.attr('type') === 'radio' &&\n $field.parents('.radio-container').length\n ) {\n return $field.parents('.radio-container');\n }\n return $field;\n },\n};\n\nexport default ErrorDisplay;\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","export const SET_VARIANT = 'set_variant';\n\nconst initialState = {\n experiments: [],\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case SET_VARIANT:\n const { variant, experimentId } = action.payload;\n if (!variant || !experimentId) return initialState;\n return {\n ...state,\n experiments: [...state.experiments, action.payload],\n };\n default:\n return state;\n }\n};\n\nexport function setExperimentVariant(payload) {\n return { type: SET_VARIANT, payload };\n}\n","import { INITIAL_ACTION } from '../reducers';\n\nexport interface IFormStore {\n [formId: number]: {\n [key: string]: string | number | boolean | undefined | null;\n };\n}\n\nconst initialState: IFormStore = {};\nexport default function formsReducer(state = initialState, action) {\n switch (action.type) {\n case '@@chmp:forms:update_form':\n return {\n ...state,\n [action.payload.id]: {\n ...state[action.payload.id],\n ...action.payload.data,\n },\n };\n case '@@chmp:forms:submitting':\n return {\n ...state,\n [action.payload.id]: {\n ...state[action.payload.id],\n submitting: action.payload.submitting,\n },\n };\n default:\n return state;\n }\n}\n\nexport function updateForm(id, data) {\n return { type: '@@chmp:forms:update_form', payload: { id, data } };\n}\n\nexport function setSubmitting(id, submitting: boolean) {\n return { type: '@@chmp:forms:submitting', payload: { id, submitting } };\n}\n","import ee from '../../shared/pub_sub';\nimport { snakeCase } from 'lodash';\n\nexport function changeAmount(payload) {\n ee.emit('fundraiser:change_amount', payload);\n return { type: 'change_amount', payload, skip_log: true };\n}\n\nexport function oneClickFailed() {\n return { type: 'one_click_failed' };\n}\n\nexport function changeCurrency(payload) {\n ee.emit('fundraiser:change_currency', payload);\n return { type: 'change_currency', payload, skip_log: true };\n}\n\nexport function setSubmitting(payload) {\n return { type: 'set_submitting', payload };\n}\n\nexport function changeStep(payload) {\n // we put it in a timeout because otherwise the event is fired before the step has switched\n setTimeout(() => ee.emit('fundraiser:change_step', payload), 100);\n return { type: 'change_step', payload };\n}\n\nexport function setIsCustomAmount(payload, amount) {\n return (dispatch, getState) => {\n if (payload) {\n const state = getState();\n const { selectedAmountButton, donationAmount } = state.fundraiser;\n\n const event =\n !selectedAmountButton && donationAmount === null\n ? 'form:select_amount'\n : 'change_amount';\n const getGaLabel = (selectedButton, amount, otherAmount) => {\n if (amount && selectedButton === null) {\n return `from_url_${amount}_to_field_other_${otherAmount}`;\n }\n return selectedButton === null\n ? `field_other_${otherAmount}`\n : `from_button_${selectedButton}_to_field_other_${otherAmount}`;\n };\n\n const label = getGaLabel(selectedAmountButton, donationAmount, amount);\n\n ee.emit(event, {\n label,\n amount: null,\n id: 'DonationBands-custom-amount',\n text: `${amount}`,\n });\n }\n\n dispatch({ type: 'set_is_custom_amount', payload });\n };\n}\n\nexport function setSelectedAmountButton(payload) {\n return (dispatch, getState) => {\n const state = getState();\n const { selectedAmountButton, donationAmount, isCustomAmount } =\n state.fundraiser || {};\n const event =\n !selectedAmountButton && !donationAmount\n ? 'form:select_amount'\n : 'change_amount';\n const getGaLabel = (selectedButton, amount, isCustom) => {\n if (amount && selectedButton === null && !isCustom) {\n return `from_url_${amount}_to_button_${payload.name}`;\n } else if (amount && isCustom) {\n return `from_field_other_${amount}_to_button_${payload.name}`;\n }\n\n return selectedButton === null\n ? `button_${payload.name}`\n : `from_button_${selectedButton}_to_button_${payload.name}`;\n };\n\n const label = getGaLabel(\n selectedAmountButton,\n donationAmount,\n isCustomAmount\n );\n\n ee.emit(event, {\n label,\n amount: null,\n id: payload.id,\n text: payload.innerText,\n });\n emitForcedLayoutEvent();\n\n dispatch({ type: 'set_selected_amount_button', payload: payload.name });\n };\n}\n\nexport function updateForm(payload) {\n return { type: 'update_form', payload };\n}\n\nexport function setRecurring(payload = false) {\n setTimeout(() => ee.emit('fundraiser:change_recurring', payload), 100);\n return { type: 'set_recurring', payload };\n}\n\nexport function setStoreInVault(payload = false) {\n const storeInVaultChoice = payload ? 'checked' : 'unchecked';\n const label = `user_${storeInVaultChoice}_to_store_payment_info`;\n setTimeout(() => ee.emit('fundraiser:set_store_in_vault', label), 100);\n return { type: 'set_store_in_vault', payload, skip_log: true };\n}\n\nexport function setPaymentType(payload) {\n return { type: 'set_payment_type', payload, skip_log: true };\n}\n\nexport function actionFormUpdated(data) {\n return { type: '@@chmp:action_form:updated', payload: data };\n}\n\nexport function setSupportedLocalCurrency(payload) {\n return { type: 'set_supported_local_currency', payload };\n}\n\nfunction emitForcedLayoutEvent() {\n const { original, forced } =\n window.champaign.plugins.fundraiser?.default?.config?.fundraiser\n ?.forcedDonateLayout || {};\n if (forced === true) {\n ee.emit(\n 'fundraiser:donate_button_clicked_forced_layout',\n `${snakeCase(original)}_template_used_scroll_to_donate`\n );\n }\n}\n","import { isObject, isMatch, find } from 'lodash';\n\nconst SUPPORTED_COUNTRIES = [\n { country: 'GB' },\n { country: 'NL' },\n { country: 'FR' },\n { country: 'DE' },\n { country: 'AT' },\n { country: 'ES' },\n { country: 'AU' },\n { country: 'BE' },\n { country: 'CY' },\n { country: 'EE' },\n { country: 'IE' },\n { country: 'IT' },\n { country: 'LV' },\n { country: 'LU' },\n { country: 'MC' },\n { country: 'PT' },\n { country: 'SM' },\n { country: 'SI' },\n];\n\n// countries not added in the list\n// as Gocardless mention the countries\n// have huge payment failure rate\n\n// { country: 'FI' },\n// { country: 'GR' },\n// { country: 'LT' },\n// { country: 'SK' }\n\nexport function isDirectDebitSupported(data) {\n return isObject(find(SUPPORTED_COUNTRIES, filter => isMatch(data, filter)));\n}\n","import $ from 'jquery';\nimport ee from '../shared/pub_sub';\nimport { logEvent } from './log_event';\n\n[\n 'page:arrived',\n 'form:update',\n 'member:set',\n 'member:reset',\n 'petition:submitted',\n 'fundraiser:transaction_submitted',\n 'fundraiser:donation_completed',\n 'fundraiser:one_time_transaction_submitted',\n 'fundraiser:monthly_transaction_submitted',\n 'fundraiser:weekly_transaction_submitted',\n 'fundraiser:one_time_transaction_submitted_forced_layout',\n 'fundraiser:monthly_transaction_submitted_forced_layout',\n 'fundraiser:weekly_transaction_submitted_forced_layout',\n 'fundraiser:set_store_in_vault',\n 'fundraiser:set_one_time',\n 'fundraiser:set_monthly',\n 'fundraiser:set_weekly',\n 'fundraiser:donate_button_clicked_forced_layout',\n 'change_currency',\n 'set_payment_type',\n 'form:select_amount',\n 'change_amount',\n 'action:submitted_success',\n 'two_step:accept',\n 'two_step:decline',\n 'donation_button_clicked',\n].forEach(eventName => {\n const callback = (...rest) => logEvent(eventName, ...rest);\n ee.on(eventName, callback);\n});\n\n$(() => {\n ee.emit('page:arrived');\n});\n","import { v1 as uuid } from 'uuid';\n\nexport const logEvent = (eventName, ...payload) => {\n if (typeof window.champaign === 'undefined') return;\n\n const opts = {\n page: window.champaign.page.slug,\n plugins: window.champaign.page.plugins,\n layout: window.champaign.page.layout,\n follow_up_layout: window.champaign.page.follow_up_layout,\n new_member: !Object.keys(window.champaign.personalization.member).length,\n ...payload,\n };\n\n if (window.ga) logToGa(eventName, ...payload);\n if (window.gtag) logToGa4(eventName, ...payload);\n};\n\nconst getGA4EventData = (eventName, data) => {\n switch (eventName) {\n case 'action:submitted_success':\n return {\n eventName: 'form_submit',\n params: {\n form_id: 'action-form',\n form_name: 'action-form',\n form_destination: data?.action,\n consent: data?.consented || true,\n form_submit_text: data?.submitText,\n },\n };\n case 'fundraiser:donation_completed':\n logGa4Ecommerce(data);\n break;\n case 'social_share':\n return {\n eventName: 'share',\n params: {\n content_type: 'link',\n method: getShareType(data?.share_type),\n },\n };\n case 'form:select_amount':\n case 'change_amount':\n return {\n eventName: 'select_item',\n params: {\n item_list_name: 'donation bands',\n items: [\n {\n item_id: data?.id,\n item_name: data?.text,\n ...(data?.text && {\n price: data.text.match(/\\d+/g).map(Number)[0],\n }),\n },\n ],\n },\n };\n case 'two_step:accept':\n case 'two_step:decline':\n case 'donation_button_clicked':\n case 'fundraiser:form:success':\n return {\n eventName: 'button_click',\n params: {\n button_id: data?.id,\n button_text: data?.text,\n action_page_type: getPageType(),\n },\n };\n default:\n return false;\n }\n};\n\nconst getEventData = (eventName, ...data) => {\n switch (eventName) {\n case 'action:submitted_success':\n return ['action', 'submitted_success'];\n case '@@chmp:consent:change_country':\n return ['gdpr', 'change_country', data[0].countryCode];\n case '@@chmp:consent:change_consent':\n return ['gdpr', 'change_consent', data[0].consented ? 'true' : 'false'];\n case 'form:select_amount':\n return ['fundraising', 'select_amount', data[0].label];\n case 'change_amount':\n return ['fundraising', 'change_amount', data[0].label];\n case 'set_store_in_vault':\n return [\n 'fundraising',\n 'set_store_in_vault',\n data[0].payload ? 'true' : 'false',\n ];\n case 'set_recurring':\n return [\n 'fundraising',\n 'set_recurring',\n data[0].payload ? 'true' : 'false',\n ];\n case 'fundraiser:transaction_submitted':\n if (window.ga) logEcommerce(data);\n return [\n 'fundraising',\n 'transaction_submitted',\n null,\n parseFloat(data[0].value || data[0].amount),\n ];\n case 'fundraiser:one_time_transaction_submitted':\n return ['fundraising', 'one_time_submitted', data[0]];\n case 'fundraiser:monthly_transaction_submitted':\n return ['fundraising', 'monthly_submitted', data[0]];\n case 'fundraiser:weekly_transaction_submitted':\n return ['fundraising', 'weekly_submitted', data[0]];\n case 'fundraiser:one_time_transaction_submitted_forced_layout':\n return [\n 'fundraising',\n 'one_time_submitted_forced_layout',\n data[0].label,\n parseFloat(data[0].amount),\n ];\n case 'fundraiser:monthly_transaction_submitted_forced_layout':\n return [\n 'fundraising',\n 'monthly_submitted_forced_layout',\n data[0].label,\n parseFloat(data[0].amount),\n ];\n case 'fundraiser:weekly_transaction_submitted_forced_layout':\n return [\n 'fundraising',\n 'weekly_submitted_forced_layout',\n data[0].label,\n parseFloat(data[0].amount),\n ];\n case 'fundraiser:set_store_in_vault':\n return ['fundraising', 'set_store_in_vault', data[0]];\n case 'fundraiser:set_one_time':\n return ['fundraising', 'set_one_time', data[0]];\n case 'fundraiser:set_monthly':\n return ['fundraising', 'set_monthly', data[0]];\n case 'fundraiser:set_weekly':\n return ['fundraising', 'set_weekly', data[0]];\n case 'fundraiser:donate_button_clicked_forced_layout':\n return ['fundraising', 'donate_button_clicked_forced_layout', data[0]];\n case 'change_step':\n return [\n 'fundraising',\n 'donation_form_change_step',\n `step_${data[0].payload + 1}`,\n ];\n case 'change_currency':\n return ['fundraising', 'change_currency', data[0]];\n case 'set_payment_type':\n return ['fundraising', 'set_payment_type', data[0]];\n case 'social_share':\n return ['social_share', 'shared_on_' + data[0].share_type];\n case 'two_step:accept':\n return ['fundraising', 'two_step_accept'];\n case 'two_step:decline':\n return ['fundraising', 'two_step_decline'];\n default:\n return false;\n }\n};\n\nconst logToGa = (eventName, data) => {\n const eventData = getEventData(eventName, data);\n\n if (eventData) {\n window.ga('send', 'event', ...eventData);\n }\n};\n\nconst logToGa4 = (eventName, data) => {\n const eventData = getGA4EventData(eventName, data);\n if (eventData) {\n window.gtag('event', eventData.eventName, eventData.params);\n }\n};\n\nconst logEcommerce = data => {\n const UUID = uuid();\n window.ga('ecommerce:addTransaction', {\n id: UUID,\n revenue: data[0].value || data[0].amount,\n currency: data[0].currency,\n });\n\n window.ga('ecommerce:addItem', {\n id: UUID,\n name: data[0].recurring == true ? 'recurring' : 'one-time',\n category: data[0].content_category || 'stored_payment_method',\n price: data[0].value || data[0].amount,\n quantity: 1,\n currency: data[0].currency,\n });\n\n window.ga('ecommerce:send');\n};\n\nconst logGa4Ecommerce = data => {\n const UUID = uuid();\n const pageType = getPageType();\n const baseParams = {\n value: data.value || data.amount,\n currency: data.currency,\n items: [\n {\n item_name: data.recurring ? 'recurring' : 'one-time',\n item_category: pageType,\n },\n ],\n };\n\n const purchase = {\n transaction_id: UUID,\n ...baseParams,\n };\n\n const paymentInfo = {\n payment_type: data.content_category,\n ...baseParams,\n };\n\n window.gtag('event', 'purchase', purchase);\n window.gtag('event', 'add_payment_info', paymentInfo);\n};\n\nconst getShareType = shareType => {\n switch (shareType) {\n case 'f':\n return 'facebook';\n case 't':\n return 'twitter';\n case 'e':\n return 'email';\n case 'w':\n return 'whatsapp';\n default:\n return 'other';\n }\n};\n\nconst getPageType = () => {\n const petition = 'petition';\n const donation = 'donation';\n const { layout = petition } = champaign?.page || {};\n\n return layout.toLowerCase().indexOf(petition) > -1 ? petition : donation;\n};\n","module.exports = window.I18n;","module.exports = window.jQuery;"],"names":["props","className","classnames","theme","disabled","React","type","name","id","onClick","children","Notification","Backbone","extend","OPEN_AFTER","CLOSE_AFTER","el","events","initialize","window","setTimeout","this","appear","bind","disappear","$el","addClass","removeClass","$","document","ready","each","ii","on","scrollTop","event","forEach","e","_e$split2","_slicedToArray","split","category","action","ee","ga","Model","defaults","message","enabled","Cookie","feedOptions","get","link","buildLink","caption","I18n","image","title","description","post","client","cb","options","api","response","error","console","log","concat","isEnabled","enable","set","disable","SweetPlaceholder","_this","arguments","length","undefined","find","decide","target","focus","rootEl","blur","$field","$label","is","empty","val","toggleClass","fauxcus","selectize","open","parents","FacebookShareView","trackEvent","champaign","personalization","urlParams","fbConnected","template","_","html","fbAppId","attr","model","FacebookShareModel","fbShareData","initializeFbClient","url","cache","FB","init","appId","version","getLoginStatus","status","processConnected","render","_this2","permitted","data","item","permission","_this3","updateMessage","value","handleClick","_this4","prop","login","resp","authResponse","grantedScopes","indexOf","scope","return_scopes","check","toJSON","isAvailable","Petition","globalEvents","followUpUrl","submissionCallback","skipOnSuccessAction","redirectAfterAction","GlobalEvents","bindEvents","facebookShareView","handleSuccess","emit","tracking","member","fbq","user_id","eventID","unique_id","hasCallbackFunction","handleRedirect","follow_up_url","redirectTo","alert","location","href","showNotice","banner","headerLogo","fadeOut","fadeIn","hide","show","DoubleOptIn","handleActionSuccess","double_opt_in","search","match","PetitionAndScrollToConsent","store","petitionSidebar","petitionOverlayButton","consentQuestionStep","optInButton","optOutButton","optInCallback","optOutCallback","onSubmitSuccessCallback","onSubmitSuccess","state","getState","onValidateSuccess","_this$state","consent","isRequiredNew","displayAndScrollToConsentQuestion","triggerRegistrationSuccessEvent","myPetition","consented","redirectToFollowUp","dispatch","changeConsent","makeStepFullScreen","scrollTo","stepElement","padding","parseInt","css","margin","totalElementHeight","height","innerHeight","element","animate","offset","top","isMobile","Survey","HIDDEN_FIELDS","DEFAULT_SCROLL_OFFSET","hasScrollOffset","hasOwnProperty","scrollOffset","$forms","insertHiddenFields","prefill","revealFirstForm","autoAdvance","submitFirstFormIfComplete","MobileCheck","selectizeDropdowns","first","prefillValues","field","$form","serialized","serialize","noneEmpty","slice","allPresent","outputIncludesName","prefillIncludesName","submit","_step","_iterator","_createForOfIteratorHelper","s","n","done","insertHiddenInput","err","f","appendTo","ErrorDisplay","clearErrors","enableButton","followForm","handleFailure","handleSend","disableButton","skipSection","$nextForm","next","revealForm","followUp","position","$btn","text","hasClass","style","width","ExistingMemberConsent","_Component","_inherits","_super","_createSuper","_classCallCheck","_len","args","Array","_key","call","apply","closeModal","toggleModal","key","isRequiredExisting","Popup","onClose","closeOnDocumentClick","contentStyle","FormattedHTMLMessage","Button","FormattedMessage","defaultMessage","Component","connect","modalOpen","ActionForm","variant","async","applyDisplayModeToFields","skipPrefill","prefillAsPossible","$submitButton","$formWrapper","$petitionBarComponent","buttonText","setupState","enableGDPRConsent","defaultAction","isConsentNeededForExistingMember","changeVariant","isMemberPresent","resetState","submitForm","handleCountryChange","changeCountry","onClickSubmit","preventDefault","stopPropagation","validateForm","then","consentState","showConsentRequired","consentComponent","getElementsByClassName","offsetTop","behavior","formCanAutocomplete","outstandingFields","completePrefill","formFieldCount","showFormClearer","partialPrefill","clearFormErrors","clearForm","resetMember","$fields_holder","trigger","selectedIndex","clear","renameActionKitIdToReferringId","unvalidatedPrefillValues","$empties","filter","$checkboxes","fieldsToSkipPrefill","welcome_name","consentNeeded","$action_kit_hidden","getConsent","currentTarget","toString","submitText","actionFormUpdated","formData","_ref$consented","Boolean","_unused","serializeArray","reducedData","arrayItem","_objectSpread","_defineProperty","Sentry","captureException","handleStepChange","step","gdprContainer","createElement","append","ComponentWrapper","locale","ConsentComponent","reveal","settings","updateUi","goal","goal_k","remaining","signatures","percentage","Sidebar","petitionTextMinHeight","baseClass","policeHeights","isSticky","parent","positionBarTop","positionBarTitle","checkOverflow","totalHeight","$titleHeight","outerHeight","$targetHeight","$textHeight","main","topHeight","$title","togglePublish","xhr","remove","click","origin","variant_type","variant_id","shared","share","originalEvent","logEvent","DesktopSticky","View","extraClass","questionSticky","makeSticky","sticky","topSpacing","unmakeSticky","unstick","_e$target","_e$target2","innerText","_e$target3","_e$currentTarget","_e$target4","_window$champaign$per","userId","Object","assign","CampaignerOverlay","OverlayToggle","Thermometer","thermometer","FeaturesHelper","Error","features","featureName","enableFeature","disableFeature","getLocalPaymentTypes","_ref","country","recurring","currency","supportedList","amount","push","initialState","currentPaymentType","currentStep","showDirectDebit","showIdeal","directDebitOnly","disableSavedPayments","donationAmount","selectedAmountButton","isCustomAmount","donationBands","USD","GBP","EUR","CHF","CAD","AUD","NZD","MXN","ARS","BRL","fields","form","formId","formValues","oneClick","paymentMethods","paymentTypes","localPaymentTypes","preselectAmount","recurringDefault","storeInVault","submitting","oneClickError","supportedLocalCurrency","merchantAccounts","merchantAccountId","RECURRING_DEFAULTS","supportedCurrency","currencies","keys","c","featuredAmountState","donationFeaturedAmount","bands","amounts","Math","floor","searchStringHandlers","hide_spm","supportedPaymentTypes","_data$localPaymentTyp","list","sort","customSort","safePaymentType","pt","pts","includes","a","b","sortOrder","indexA","indexB","action_count","allow_duplicate_actions","canonical_url","created_at","featured","follow_up_page_id","follow_up_plan","language_id","primary_image_id","publish_status","slug","updated_at","removeExtraActionFields","fieldNames","listeners","addExtraActionFields","reducers","emailTarget","extraActionFields","omit","_toConsumableArray","fundraiser","initialData","pick","payload","handlers","reduce","res","handler","k","searchStringOverrides","map","toUpperCase","isDirectDebitSupported","isEmpty","label","recurringValue","i","toLowerCase","recurringState","relevantFields","currenct","forms","page","donationsThermometer","abTests","combineReducers","blacklist","_action$skip_log","skip_log","rest","_objectWithoutProperties","_excluded","cookieconsent","initialise","content","t","dismiss","lookup","countryCode","EEA_LIST","MODULES","StandaloneConsentPrompt","modules","moduleName","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","abrupt","stop","load","_callee2","_context2","module","ProgressTracker","addEventListeners","$header","tick","addEventListener","$tracker","clone","prependTo","section","RegisterMemberRedirector","attemptRedirect","registered","email","uri","query","AfterDonationRedirector","donationFormData","require","enhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","applyMiddleware","thunk","passToLogTracker","createStore","configureStore","URI","DonationsThermometer","redirectors","cookieConsent","view","eventName","method","responseText","getResponseHeader","parseJSON","errors","m","showError","field_name","msgs","findField","errorMsg","hideError","msg","prefix","siblings","join","_initialState","postcode","isSubmitting","emailSubject","fundContact","fundEmail","reducer","emailBody","pensionFunds","funds","fund","fundId","_id","_action$payload","changeSubmitting","changeSubject","changeName","changeEmail","changeFund","changePensionFunds","SET_VARIANT","experiments","setExperimentVariant","experimentId","formsReducer","updateForm","setSubmitting","changeAmount","oneClickFailed","changeCurrency","changeStep","setIsCustomAmount","_state$fundraiser","selectedButton","otherAmount","getGaLabel","setSelectedAmountButton","isCustom","_window$champaign$plu","_window$champaign$plu2","_window$champaign$plu3","_window$champaign$plu4","_ref2","original","plugins","config","forcedDonateLayout","forced","snakeCase","setRecurring","setStoreInVault","setPaymentType","setSupportedLocalCurrency","SUPPORTED_COUNTRIES","isObject","isMatch","layout","follow_up_layout","new_member","logToGa","gtag","logToGa4","_window","eventData","_len2","_key2","logEcommerce","parseFloat","share_type","getEventData","params","form_id","form_name","form_destination","form_submit_text","logGa4Ecommerce","content_type","getShareType","item_list_name","items","item_id","item_name","price","Number","button_id","button_text","action_page_type","getPageType","getGA4EventData","UUID","uuid","revenue","content_category","quantity","pageType","baseParams","item_category","purchase","transaction_id","paymentInfo","payment_type","shareType","_champaign","petition","_ref$layout","exports","jQuery"],"sourceRoot":""}