{"version":3,"file":"js/chunk-common.a3cd1874.js","mappings":"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","sources":["webpack://newsletter-pages/./src/cms/index.ts","webpack://newsletter-pages/./src/mixins/theme-handler.ts","webpack://newsletter-pages/./src/mixins/app-handler.ts","webpack://newsletter-pages/./src/mixins/bridge-handler.ts","webpack://newsletter-pages/./src/mixins/translation-handler.ts","webpack://newsletter-pages/./src/registerServiceWorker.ts","webpack://newsletter-pages/./src/app/views/Home.vue?1883","webpack://newsletter-pages/./src/utils/injectors.ts","webpack://newsletter-pages/./src/app/views/Home.vue?ec5c","webpack://newsletter-pages/./src/app/views/Home.vue?d400","webpack://newsletter-pages/./src/app/views/Home.vue","webpack://newsletter-pages/./src/app/views/Success.vue?8a36","webpack://newsletter-pages/./src/app/views/Success.vue?07f3","webpack://newsletter-pages/./src/app/views/Success.vue?a2d4","webpack://newsletter-pages/./src/app/views/Success.vue","webpack://newsletter-pages/./src/app/views/End.vue?10cc","webpack://newsletter-pages/./src/app/views/End.vue?8503","webpack://newsletter-pages/./src/app/views/End.vue?6e13","webpack://newsletter-pages/./src/app/views/End.vue","webpack://newsletter-pages/./src/router/index.ts","webpack://newsletter-pages/./src/store/modules/theme.ts","webpack://newsletter-pages/./src/store/modules/page-modules.ts","webpack://newsletter-pages/./src/rest/forms/client.ts","webpack://newsletter-pages/./src/rest/forms/index.ts","webpack://newsletter-pages/./src/store/modules/forms.ts","webpack://newsletter-pages/./src/rest/users/client.ts","webpack://newsletter-pages/./src/utils/sleep.ts","webpack://newsletter-pages/./src/rest/users/__mock__.ts","webpack://newsletter-pages/./src/rest/users/index.ts","webpack://newsletter-pages/./src/utils/casingConversions.ts","webpack://newsletter-pages/./src/store/modules/user.ts","webpack://newsletter-pages/./src/rest/campaign/client.ts","webpack://newsletter-pages/./src/rest/campaign/__mock__.ts","webpack://newsletter-pages/./src/rest/campaign/index.ts","webpack://newsletter-pages/./src/store/index.ts","webpack://newsletter-pages/./src/types.ts"],"sourcesContent":["import { CMSConnector } from 'umg-cms-js-sdk/src'\n\nexport default new CMSConnector()\n","import { IThemeFont } from '@/types'\nimport { Component, Vue } from 'vue-property-decorator'\nimport { Getter } from 'vuex-class'\n\n@Component\nexport class ThemeHandler extends Vue {\n @Getter themeFont!: IThemeFont\n\n $themeInsertFont () {\n const style = document.createElement('link')\n style.rel = 'stylesheet'\n style.href = this.$themeFontLink\n\n document.head.appendChild(style)\n }\n\n get $themeFontFamily () {\n switch (this.themeFont) {\n case IThemeFont.PT_MONO: {\n return '\"PT Mono\", monospace'\n }\n case IThemeFont.POPPINS: {\n return '\"Poppins\", sans-serif'\n }\n case IThemeFont.MERRIWEATHER: {\n return '\"Merriweather\", serif'\n }\n default: {\n return ''\n }\n }\n }\n\n get $themeFontLink (): string {\n switch (this.themeFont) {\n case IThemeFont.POPPINS: {\n return 'https://fonts-googleapis-com.universal-music.de/css?family=Poppins:400,600,700&display=swap'\n }\n case IThemeFont.MERRIWEATHER: {\n return 'https://fonts-googleapis-com.universal-music.de/css2?family=Merriweather:wght@300;400;900&display=swap'\n }\n case IThemeFont.PT_MONO: {\n return 'https://fonts-googleapis-com.universal-music.de/css2?family=PT+Mono&display=swap'\n }\n default: {\n return ''\n }\n }\n }\n}\n","import { Mixins, Component } from 'vue-property-decorator'\nimport cms from '@/cms'\nimport { Action, Getter, Mutation } from 'vuex-class'\nimport { ThemeHandler } from './theme-handler'\nimport { ISectionFormWithoutThemeAndSectionData } from '@/types'\n\n@Component\nexport class AppHandler extends Mixins(ThemeHandler) {\n @Mutation('SET_CAMPAIGN_ID') setCampaignId!: (id: number) => void\n @Mutation('SET_FORM_COMPETITION') setForm!: (forrm: ISectionFormWithoutThemeAndSectionData) => void\n\n @Action('LOAD_CAMPAIGN') loadCampaign!: () => Promise\n\n async $appInit ({ editor = true } = {}) {\n await cms.init({ i18n: true, iframeEnabled: editor })\n\n if (cms.campaign.appId) {\n this.setCampaignId(parseInt(cms.campaign.appId))\n }\n\n await this.loadCampaign()\n\n this.$themeInsertFont()\n }\n}\n","import { FormsState } from '@/store/modules/forms'\nimport { PageModulesState } from '@/store/modules/page-modules'\nimport { ThemeState } from '@/store/modules/theme'\nimport { Vue, Component, Watch } from 'vue-property-decorator'\n\nenum MessageType {\n VIEW = 'view',\n THEME = 'theme',\n PAGE_MODULE = 'page-module',\n FORMS = 'forms'\n}\n\n// this is to listen and send messages between admin and app\n@Component\nexport class BridgeHandler extends Vue {\n public $bridgeMessageTheme (state: ThemeState) {\n this.$bridgeMessage(MessageType.THEME, { state })\n }\n\n public $bridgeMessagePageModules (state: PageModulesState) {\n this.$bridgeMessage(MessageType.PAGE_MODULE, { state })\n }\n\n public $bridgeMessageForms (state: FormsState) {\n this.$bridgeMessage(MessageType.FORMS, { state })\n }\n\n public $bridgeMessageView (view: string) {\n this.$bridgeMessage(MessageType.VIEW, { view })\n }\n\n private $bridgeMessage (type: MessageType, data: Record) {\n window.postMessage({ admin: true, type, ...data }, window.origin)\n }\n\n public $bridgeListenMessages () {\n window.parent.addEventListener('message', this.$bridgeHandleMessage)\n }\n\n private $bridgeHandleMessage (event: MessageEvent): void {\n if (!event.data.admin) return\n\n switch (event.data.type) {\n case MessageType.VIEW: {\n this.$router.push(`/${event.data.view}`)\n\n break\n }\n case MessageType.THEME: {\n this.$store.commit('SET_THEME_IS_DARK', event.data.state.isDark)\n this.$store.commit('SET_THEME_BUTTON_TEXT_COLOR', event.data.state.buttonText)\n this.$store.commit('SET_THEME_PRIMARY_COLOR', event.data.state.primaryColor)\n this.$store.commit('SET_THEME_FONT', event.data.state.font)\n this.$store.commit('SET_THEME_SECONDARY_COLOR', event.data.state.secondaryColor)\n this.$store.commit('SET_THEME_BACKGROUND_COLOR', event.data.state.backgroundColor)\n this.$store.commit('SET_THEME_INPUT_COLOR', event.data.state.inputColor)\n this.$store.commit('SET_THEME_TEXT_INPUT_COLOR', event.data.state.textInput)\n this.$store.commit('SET_THEME_TEXT_COLOR', event.data.state.text)\n this.$store.commit('SET_THEME_FOOTER_ICON_COLOR', event.data.state.footerIconColor)\n this.$store.commit('SET_THEME_ROUNDED', event.data.state.rounded)\n break\n }\n case MessageType.PAGE_MODULE: {\n this.$store.commit('SET_HOME_INTROS', event.data.state.homeIntros)\n this.$store.commit('SET_HOME_PAGE_MODULES', event.data.state.homePage)\n this.$store.commit('SET_SUCCESS_INTROS', event.data.state.successIntros)\n this.$store.commit('SET_SUCCESS_PAGE_MODULES', event.data.state.successPage)\n this.$store.commit('SET_END_INTROS', event.data.state.endIntros)\n this.$store.commit('SET_END_PAGE_MODULES', event.data.state.endPage)\n break\n }\n case MessageType.FORMS: {\n this.$store.commit('SET_FORM_NEWSLETTER', event.data.state.newsletter)\n this.$store.commit('SET_FORM_COMPETITION', event.data.state.competition)\n break\n }\n default: {\n break\n }\n }\n }\n}\n","import cms from '@/cms'\nimport { Component, Vue } from 'vue-property-decorator'\n\n@Component\nexport class TranslationHandler extends Vue {\n $t (id: string): string {\n const t = cms.i18n.t(id)\n\n return t === id ? '' : t\n }\n\n get $tLocales (): string[] {\n const locales: string[] = cms.i18n.translations\n // @ts-ignore\n ? cms.i18n.translations.map((t) => t.locale.code).filter((v) => v)\n : []\n\n return locales.sort()\n }\n\n get $tLocaleCurrent (): string {\n return cms.i18n.currentLocale?.code || this.$tLocales[0]\n }\n\n $setLocale (locale: string) {\n cms.i18n.userPreferredLocale = locale\n }\n\n $tx (messages: any, key: string): string {\n return cms.i18n.tx(messages, key)\n }\n\n get $userCountryCode (): string | null {\n return cms.i18n.userCountryCode\n }\n}\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready () {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered () {\n console.log('Service worker has been registered.')\n },\n cached () {\n console.log('Content has been cached for offline use.')\n },\n updatefound () {\n console.log('New content is downloading.')\n },\n updated () {\n console.log('New content is available; please refresh.')\n },\n offline () {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error (error) {\n console.error('Error during service worker registration:', error)\n }\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"home\"},[(_vm.sectionModal && _vm.isModalActive)?_c('Modal',{attrs:{\"isOpen\":_vm.isModalOpen},on:{\"close\":function($event){_vm.isModalOpen = false}}},[_c('div',{staticClass:\"mb-7\"},[_c('Form',{attrs:{\"item\":_vm.sectionModal.items[0]},on:{\"close\":function($event){_vm.isModalOpen = false}}})],1)]):_vm._e(),_vm._l((_vm.intros),function(intro,index){return _c('div',{key:`intro-${index}`},[_c('Intro',{class:{ 'pb-6': index === _vm.intros.length - 1 },attrs:{\"data\":intro}})],1)}),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,staticClass:\"relative\",class:[\n index === 0 ? 'py-8 md:py-12' : 'py-24 md:py-36'\n ],style:({ background: section.background })},[(section.backgroundImage)?_c('figure',{staticClass:\"absolute top-0 left-0 w-full h-full flex justify-center items-center overflow-hidden\"},[_c('img',{staticClass:\"h-full w-full object-cover\",attrs:{\"src\":section.backgroundImage}})]):_vm._e(),_c('Section',{attrs:{\"section\":section}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\n IFormInputCheckbox,\n IFormInputRadio,\n IFormInputSelect,\n IFormInputText,\n ISection,\n ISectionCard,\n ISectionFeature,\n ISectionForm,\n ISectionFormWithoutTheme,\n ISectionFormWithoutThemeAndSectionData,\n ISectionMedia,\n ISectionWithoutTheme,\n ISectionWithoutThemeAndForms,\n ITheme,\n IIntro,\n IIntroWithoutTheme,\n IIntroWithoutThemeAndForms,\n IFormInputConsent,\n} from '@/types'\n\nconst injectThemeInForm = (\n form: ISectionFormWithoutTheme,\n theme: ITheme,\n): ISectionForm => {\n const formImputWithTheme: (\n | IFormInputText\n | IFormInputSelect\n | IFormInputRadio\n | IFormInputCheckbox\n | IFormInputConsent\n )[] = form.data.inputs.map((input) => {\n switch (input.type) {\n case 'input-text': {\n const inputWithTheme: IFormInputText = {\n ...input,\n data: {\n ...input.data,\n background: theme.inputColor,\n rounded: theme.rounded,\n textColor: theme.textInput,\n },\n }\n return inputWithTheme\n }\n case 'input-select': {\n const inputWithTheme: IFormInputSelect = {\n ...input,\n data: {\n ...input.data,\n background: theme.inputColor,\n rounded: theme.rounded,\n textColor: theme.textInput,\n },\n }\n return inputWithTheme\n }\n case 'input-radio': {\n const inputWithTheme: IFormInputRadio = {\n ...input,\n data: {\n ...input.data,\n background: theme.inputColor,\n checkedColor: theme.primaryColor,\n textColor: theme.textInput,\n },\n }\n return inputWithTheme\n }\n case 'input-checkbox': {\n const inputWithTheme: IFormInputCheckbox = {\n ...input,\n data: {\n ...input.data,\n rounded: theme.rounded,\n background: theme.inputColor,\n checkedColor: theme.primaryColor,\n textColor: theme.textInput,\n },\n }\n return inputWithTheme\n }\n case 'input-consent': {\n const inputWithTheme: IFormInputConsent = {\n ...input,\n data: {\n ...input.data,\n textColor: theme.textInput,\n },\n }\n\n return inputWithTheme\n }\n default: {\n const _exhaustiveCheck: never = input\n return _exhaustiveCheck\n }\n }\n })\n\n const formWIthTheme: ISectionForm = {\n ...form,\n data: {\n ...form.data,\n inputs: formImputWithTheme,\n buttonBackground: theme.primaryColor,\n rounded: theme.rounded,\n background: theme.backgroundColor,\n },\n }\n return formWIthTheme\n}\n\n/**\n * Injects the `form` object into all the placeholders in `section`.\n *\n * The theme injection will be performed in another function.\n */\nexport const injectFormInSection = (\n section: ISectionWithoutThemeAndForms,\n form: ISectionFormWithoutThemeAndSectionData\n): ISectionWithoutTheme => {\n const newSection: ISectionWithoutTheme = { ...section, items: [] }\n\n newSection.items = section.items.map((item) => {\n if (item.type === 'form') {\n return {\n type: 'form',\n data: {\n ...item.data,\n ...form.data,\n }\n }\n }\n\n return item\n })\n\n return newSection\n}\n\n/**\n * Injects the `form` object into all the placeholders in `intro`.\n *\n * The theme injection will be performed in another function.\n */\nexport const injectFormInIntro = (\n intro: IIntroWithoutThemeAndForms,\n form: ISectionFormWithoutThemeAndSectionData\n): IIntroWithoutTheme => {\n const newIntro: IIntroWithoutTheme = { ...intro, items: [] }\n\n newIntro.items = intro.items.map((item) => {\n if (item.type === 'form') {\n return {\n type: 'form',\n data: {\n ...item.data,\n ...form.data,\n }\n }\n }\n\n return item\n })\n\n return newIntro\n}\n\n/**\n * Injects the theme properties into a given section and child items.\n */\nexport const injectThemeInSection = (\n section: ISectionWithoutTheme,\n theme: ITheme\n): ISection => {\n const newSection: ISection = {\n ...section,\n buttonBackground: theme.primaryColor,\n rounded: theme.rounded,\n background: section.background || theme.backgroundColor,\n items: [],\n }\n\n newSection.items = section.items.map((item) => {\n switch (item.type) {\n case 'card': {\n const itemWithTheme: ISectionCard = {\n ...item,\n data: {\n ...item.data,\n buttonBackground: theme.primaryColor,\n rounded: theme.rounded,\n },\n }\n return itemWithTheme\n }\n case 'feature': {\n const itemWithTheme: ISectionFeature = {\n ...item,\n data: {\n ...item.data,\n background: theme.secondaryColor,\n imageBackground: theme.primaryColor,\n rounded: theme.rounded,\n },\n }\n return itemWithTheme\n }\n case 'form': {\n return injectThemeInForm(item, theme)\n }\n case 'media': {\n const itemWithTheme: ISectionMedia = {\n ...item,\n rounded: theme.rounded,\n data: {\n ...item.data,\n },\n }\n return itemWithTheme\n }\n default: {\n const _exhaustiveCheck: never = item\n return _exhaustiveCheck\n }\n }\n })\n\n return newSection\n}\n\n/**\n * Injects the theme properties into a given section and child items.\n */\nexport const injectThemeInIntro = (\n intro: IIntroWithoutTheme,\n theme: ITheme\n): IIntro => {\n const newIntro: IIntro = {\n ...intro,\n background: theme.backgroundColor,\n items: [],\n }\n\n newIntro.items = intro.items.map((item) => {\n switch (item.type) {\n case 'form': {\n return injectThemeInForm(item, theme)\n }\n case 'media': {\n const itemWithTheme: ISectionMedia = {\n ...item,\n rounded: theme.rounded,\n data: {\n ...item.data,\n },\n }\n return itemWithTheme\n }\n default: {\n const _exhaustiveCheck: never = item\n return _exhaustiveCheck\n }\n }\n })\n\n return newIntro\n}\n","\nimport { TranslationHandler } from '../../mixins/translation-handler'\nimport { FormsState } from '../../store/modules/forms'\nimport { PageModulesState } from '../../store/modules/page-modules'\nimport { ThemeState } from '../../store/modules/theme'\nimport { IIntro, ISection, ISectionFormWithoutThemeAndSectionData } from '../../types'\nimport { Component, Mixins, Watch } from 'vue-property-decorator'\nimport { Getter } from 'vuex-class'\nimport { injectFormInIntro, injectFormInSection, injectThemeInIntro, injectThemeInSection } from '../../utils/injectors'\n\n@Component({\n components: {},\n})\nexport default class Home extends Mixins(TranslationHandler) {\n @Getter themeIsDark!: ThemeState['isDark']\n @Getter themeFont!: ThemeState['font']\n @Getter themePrimaryColor!: ThemeState['primaryColor']\n @Getter themeSecondaryColor!: ThemeState['secondaryColor']\n @Getter themeBackgroundColor!: ThemeState['backgroundColor']\n @Getter themeInputColor!: ThemeState['inputColor']\n @Getter themeFooterIconColor!: ThemeState['footerIconColor']\n @Getter themeText!: ThemeState['text']\n @Getter themeTextInput!: ThemeState['textInput']\n @Getter themeRounded!: ThemeState['rounded']\n @Getter themeButtonText!: ThemeState['buttonText']\n @Getter pageModulesHomeIntros!: PageModulesState['homeIntros']\n @Getter pageModulesHome!: PageModulesState['homePage']\n @Getter formNewsletter!: FormsState['newsletter']\n @Getter formCompetition!: FormsState['competition']\n @Getter formAllFormsAreSubmitted!: boolean\n @Getter formIsCompetitionSubmitted!: boolean\n\n isModalOpen = false\n\n @Watch('formIsCompetitionSubmitted')\n watchIsCompetitionSubmitted (val: boolean) {\n if (this.isModalActive && this.sectionModal && val) {\n this.isModalOpen = true\n }\n }\n\n @Watch('formAllFormsAreSubmitted')\n watchAllFormsAreSubmitted (val: boolean) {\n if (val === true) {\n // some campaigns should be redirected to a specific url like whatsapp campaigns\n if (this.formNewsletter?.data.afterSubmitUrl) {\n window.location.href = this.formNewsletter?.data.afterSubmitUrl\n\n return\n }\n\n // some campaigns should be redirected to a specific url like whatsapp campaigns\n if (this.formCompetition?.data.afterSubmitUrl) {\n window.location.href = this.formCompetition?.data.afterSubmitUrl\n\n return\n }\n\n this.$router.push({ name: 'Success' })\n }\n }\n\n get isModalActive (): boolean {\n return !!this.formNewsletter && !!this.formCompetition\n }\n\n get form (): ISectionFormWithoutThemeAndSectionData {\n if (this.formCompetition) {\n return this.formCompetition\n }\n\n // @ts-ignore (todo)\n return this.formNewsletter\n }\n\n get sectionModal () {\n if (this.formNewsletter === null) {\n return null\n }\n\n const section = injectFormInSection({\n messages: {\n en: {\n title: '',\n subtitle: '',\n button: '',\n buttonLink: '',\n }\n },\n backgroundImage: '',\n isFullWidth: true,\n isAlignmentCenter: true,\n cols: 1,\n items: [\n {\n type: 'form',\n data: {\n isAlignmentCenter: true,\n isPositionCenter: true,\n }\n }\n ]\n }, this.formNewsletter)\n\n return injectThemeInSection(section, {\n isDark: this.themeIsDark,\n text: this.themeText,\n font: this.themeFont,\n primaryColor: this.themePrimaryColor,\n secondaryColor: this.themeSecondaryColor,\n backgroundColor: this.themeBackgroundColor,\n inputColor: this.themeInputColor,\n textInput: this.themeTextInput,\n rounded: this.themeRounded,\n footerIconColor: this.themeFooterIconColor,\n buttonText: this.themeButtonText,\n })\n }\n\n get intros (): IIntro[] {\n if (this.form === null) {\n return []\n }\n\n // inject forms in pageModules object\n const homeIntrosWithForms = this.pageModulesHomeIntros.map((module) =>\n injectFormInIntro(module, this.form)\n )\n\n // inject theme in pageModules object\n const homeIntrosWIthTheme = homeIntrosWithForms.map((module) =>\n injectThemeInIntro(module, {\n isDark: this.themeIsDark,\n text: this.themeText,\n font: this.themeFont,\n primaryColor: this.themePrimaryColor,\n secondaryColor: this.themeSecondaryColor,\n backgroundColor: this.themeBackgroundColor,\n inputColor: this.themeInputColor,\n textInput: this.themeTextInput,\n footerIconColor: this.themeFooterIconColor,\n rounded: this.themeRounded,\n buttonText: this.themeButtonText,\n })\n )\n\n return homeIntrosWIthTheme\n }\n\n get sections (): ISection[] {\n if (this.form === null) {\n return []\n }\n\n // inject forms in pageModules object\n const homeWithForms = this.pageModulesHome.map((module) =>\n injectFormInSection(module, this.form)\n )\n\n // inject theme in pageModules object\n const homeWithTheme = homeWithForms.map((module) =>\n injectThemeInSection(module, {\n isDark: this.themeIsDark,\n text: this.themeText,\n font: this.themeFont,\n primaryColor: this.themePrimaryColor,\n secondaryColor: this.themeSecondaryColor,\n backgroundColor: this.themeBackgroundColor,\n inputColor: this.themeInputColor,\n footerIconColor: this.themeFooterIconColor,\n textInput: this.themeTextInput,\n rounded: this.themeRounded,\n buttonText: this.themeButtonText,\n })\n )\n\n return homeWithTheme\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=557c1060&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"success\"},[_vm._l((_vm.intros),function(intro,index){return _c('div',{key:`intro-${index}`},[_c('Intro',{class:{ 'pb-6': index === _vm.intros.length - 1 },attrs:{\"data\":intro}})],1)}),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,staticClass:\"py-24 md:py-36 relative\",class:[\n index === 0 ? 'py-8 md:py-12' : 'py-24 md:py-36'\n ],style:({ background: section.background })},[(section.backgroundImage)?_c('figure',{staticClass:\"absolute top-0 left-0 w-full h-full flex justify-center items-center overflow-hidden\"},[_c('img',{staticClass:\"h-full w-full object-cover\",attrs:{\"src\":section.backgroundImage}})]):_vm._e(),_c('Section',{attrs:{\"section\":section}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { TranslationHandler } from '@/mixins/translation-handler'\nimport { FormsState } from '@/store/modules/forms'\nimport { PageModulesState } from '@/store/modules/page-modules'\nimport { ThemeState } from '@/store/modules/theme'\nimport { IIntro, ISection, ISectionFormWithoutThemeAndSectionData } from '@/types'\nimport { Component, Mixins } from 'vue-property-decorator'\nimport { Getter } from 'vuex-class'\nimport { injectFormInIntro, injectFormInSection, injectThemeInIntro, injectThemeInSection } from '@/utils/injectors'\n\n@Component({\n components: {},\n})\nexport default class Success extends Mixins(TranslationHandler) {\n @Getter themeIsDark!: ThemeState['isDark']\n @Getter themeFont!: ThemeState['font']\n @Getter themePrimaryColor!: ThemeState['primaryColor']\n @Getter themeSecondaryColor!: ThemeState['secondaryColor']\n @Getter themeBackgroundColor!: ThemeState['backgroundColor']\n @Getter themeInputColor!: ThemeState['inputColor']\n @Getter themeFooterIconColor!: ThemeState['footerIconColor']\n @Getter themeText!: ThemeState['text']\n @Getter themeTextInput!: ThemeState['textInput']\n @Getter themeButtonText!: ThemeState['buttonText']\n @Getter themeRounded!: ThemeState['rounded']\n @Getter pageModulesSuccess!: PageModulesState['successPage']\n @Getter pageModulesSuccessIntros!: PageModulesState['successIntros']\n @Getter formNewsletter!: FormsState['newsletter']\n @Getter formCompetition!: FormsState['competition']\n\n mounted () {\n window.scrollTo(0, 0)\n document.body.classList.remove('overflow-hidden')\n }\n\n get form (): ISectionFormWithoutThemeAndSectionData {\n if (this.formNewsletter) {\n return this.formNewsletter\n }\n\n // @ts-ignore (todo)\n return this.formCompetition\n }\n\n get intros (): IIntro[] {\n if (this.form === null) {\n return []\n }\n\n // inject forms in pageModules object\n const homeIntrosWithForms = this.pageModulesSuccessIntros.map((module) =>\n injectFormInIntro(module, this.form)\n )\n\n // inject theme in pageModules object\n const homeIntrosWIthTheme = homeIntrosWithForms.map((module) =>\n injectThemeInIntro(module, {\n isDark: this.themeIsDark,\n text: this.themeText,\n font: this.themeFont,\n primaryColor: this.themePrimaryColor,\n secondaryColor: this.themeSecondaryColor,\n backgroundColor: this.themeBackgroundColor,\n inputColor: this.themeInputColor,\n footerIconColor: this.themeFooterIconColor,\n textInput: this.themeTextInput,\n rounded: this.themeRounded,\n buttonText: this.themeButtonText,\n })\n )\n\n return homeIntrosWIthTheme\n }\n\n get sections (): ISection[] {\n if (this.form === null) {\n return []\n }\n\n // inject forms in pageModules object\n const pageModulesHomeWithForms = this.pageModulesSuccess.map((module) =>\n injectFormInSection(module, this.form)\n )\n\n // inject theme in pageModules object\n const pageModulesHomeWithTheme = pageModulesHomeWithForms.map((module) =>\n injectThemeInSection(module, {\n isDark: this.themeIsDark,\n text: this.themeText,\n font: this.themeFont,\n primaryColor: this.themePrimaryColor,\n secondaryColor: this.themeSecondaryColor,\n backgroundColor: this.themeBackgroundColor,\n inputColor: this.themeInputColor,\n textInput: this.themeTextInput,\n rounded: this.themeRounded,\n buttonText: this.themeButtonText,\n footerIconColor: this.themeFooterIconColor,\n })\n )\n\n return pageModulesHomeWithTheme\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Success.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Success.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Success.vue?vue&type=template&id=5e4fdc20&\"\nimport script from \"./Success.vue?vue&type=script&lang=ts&\"\nexport * from \"./Success.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"end\"},[_vm._l((_vm.intros),function(intro,index){return _c('div',{key:`intro-${index}`},[_c('Intro',{class:{ 'pb-6': index === _vm.intros.length - 1 },attrs:{\"data\":intro}})],1)}),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,staticClass:\"py-24 md:py-36 relative\",class:[\n index === 0 ? 'py-8 md:py-12' : 'py-24 md:py-36'\n ],style:({ background: section.background })},[(section.backgroundImage)?_c('figure',{staticClass:\"absolute top-0 left-0 w-full h-full flex justify-center items-center overflow-hidden\"},[_c('img',{staticClass:\"h-full w-full object-cover\",attrs:{\"src\":section.backgroundImage}})]):_vm._e(),_c('Section',{attrs:{\"section\":section}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { TranslationHandler } from '@/mixins/translation-handler'\nimport { FormsState } from '@/store/modules/forms'\nimport { PageModulesState } from '@/store/modules/page-modules'\nimport { ThemeState } from '@/store/modules/theme'\nimport { IIntro, ISection, ISectionFormWithoutThemeAndSectionData } from '@/types'\nimport { Component, Mixins } from 'vue-property-decorator'\nimport { Getter } from 'vuex-class'\nimport { injectFormInIntro, injectFormInSection, injectThemeInIntro, injectThemeInSection } from '@/utils/injectors'\n\n@Component({\n components: {},\n})\nexport default class End extends Mixins(TranslationHandler) {\n @Getter themeIsDark!: ThemeState['isDark']\n @Getter themeFont!: ThemeState['font']\n @Getter themePrimaryColor!: ThemeState['primaryColor']\n @Getter themeSecondaryColor!: ThemeState['secondaryColor']\n @Getter themeBackgroundColor!: ThemeState['backgroundColor']\n @Getter themeInputColor!: ThemeState['inputColor']\n @Getter themeFooterIconColor!: ThemeState['footerIconColor']\n @Getter themeText!: ThemeState['text']\n @Getter themeTextInput!: ThemeState['textInput']\n @Getter themeButtonText!: ThemeState['buttonText']\n @Getter themeRounded!: ThemeState['rounded']\n @Getter pageModulesEnd!: PageModulesState['endPage']\n @Getter pageModulesEndIntros!: PageModulesState['endIntros']\n @Getter formNewsletter!: FormsState['newsletter']\n @Getter formCompetition!: FormsState['competition']\n @Getter campaignIsEnded!: boolean\n\n mounted () {\n window.scrollTo(0, 0)\n document.body.classList.remove('overflow-hidden')\n\n // if modules don't exist, redirect to home\n // if (!this.campaignIsEnded) {\n // this.$router.push('/')\n // }\n }\n\n get form (): ISectionFormWithoutThemeAndSectionData {\n if (this.formNewsletter) {\n return this.formNewsletter\n }\n\n // @ts-ignore (todo)\n return this.formCompetition\n }\n\n get intros (): IIntro[] {\n if (this.form === null || !this.pageModulesEndIntros?.length) {\n return []\n }\n\n // inject forms in pageModules object\n const homeIntrosWithForms = this.pageModulesEndIntros.map((module) =>\n injectFormInIntro(module, this.form)\n )\n\n // inject theme in pageModules object\n const homeIntrosWIthTheme = homeIntrosWithForms.map((module) =>\n injectThemeInIntro(module, {\n isDark: this.themeIsDark,\n text: this.themeText,\n font: this.themeFont,\n primaryColor: this.themePrimaryColor,\n secondaryColor: this.themeSecondaryColor,\n backgroundColor: this.themeBackgroundColor,\n inputColor: this.themeInputColor,\n footerIconColor: this.themeFooterIconColor,\n textInput: this.themeTextInput,\n rounded: this.themeRounded,\n buttonText: this.themeButtonText,\n })\n )\n\n return homeIntrosWIthTheme\n }\n\n get sections (): ISection[] {\n if (this.form === null || !this.pageModulesEnd?.length) {\n return []\n }\n\n // inject forms in pageModules object\n const pageModulesWithForms = this.pageModulesEnd.map((module) =>\n injectFormInSection(module, this.form)\n )\n\n // inject theme in pageModules object\n const pageModulesWithTheme = pageModulesWithForms.map((module) =>\n injectThemeInSection(module, {\n isDark: this.themeIsDark,\n text: this.themeText,\n font: this.themeFont,\n primaryColor: this.themePrimaryColor,\n secondaryColor: this.themeSecondaryColor,\n backgroundColor: this.themeBackgroundColor,\n inputColor: this.themeInputColor,\n textInput: this.themeTextInput,\n rounded: this.themeRounded,\n buttonText: this.themeButtonText,\n footerIconColor: this.themeFooterIconColor,\n })\n )\n\n return pageModulesWithTheme\n }\n}\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./End.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./End.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./End.vue?vue&type=template&id=4f7c2e02&\"\nimport script from \"./End.vue?vue&type=script&lang=ts&\"\nexport * from \"./End.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter, { RouteConfig } from 'vue-router'\nimport Home from '../app/views/Home.vue'\nimport Raffle from '../app/views/Raffle.vue'\nimport Success from '../app/views/Success.vue'\nimport End from '../app/views/End.vue'\n\nVue.use(VueRouter)\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Home',\n component: Home\n },\n {\n path: '/home',\n name: 'Home-linked',\n component: Home\n },\n {\n path: '/success',\n name: 'Success',\n component: Success\n },\n {\n path: '/end',\n name: 'End',\n component: End\n },\n]\n\nconst router = new VueRouter({\n mode: 'hash',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vuex, { MutationTree, GetterTree, ActionTree, Module } from 'vuex'\nimport Vue from 'vue'\nimport { RootState } from '..'\nimport { ITheme, IThemeFont } from '@/types'\n\nVue.use(Vuex)\n\nexport type ThemeState = ITheme\n\nexport const themeState: ThemeState = {\n isDark: false,\n primaryColor: '#747AB4',\n secondaryColor: '#EFDEE4',\n backgroundColor: '#EBCDD6',\n textInput: '#000',\n inputColor: '#D498AB',\n text: '#000',\n buttonText: '#fff',\n footerIconColor: '#747AB4',\n font: IThemeFont.POPPINS,\n rounded: 'medium',\n}\n\nconst themeMutations: MutationTree = {\n SET_THEME (state: ThemeState, themeState: ITheme) {\n Object.assign(state, themeState)\n },\n SET_THEME_IS_DARK (state: ThemeState, isDark) {\n state.isDark = isDark\n },\n SET_THEME_PRIMARY_COLOR (state: ThemeState, primaryColor) {\n state.primaryColor = primaryColor\n },\n SET_THEME_SECONDARY_COLOR (state: ThemeState, secondaryColor) {\n state.secondaryColor = secondaryColor\n },\n SET_THEME_BACKGROUND_COLOR (state: ThemeState, backgroundColor) {\n state.backgroundColor = backgroundColor\n },\n SET_THEME_INPUT_COLOR (state: ThemeState, inputColor) {\n state.inputColor = inputColor\n },\n SET_THEME_TEXT_INPUT_COLOR (state: ThemeState, textInput) {\n state.textInput = textInput\n },\n SET_THEME_TEXT_COLOR (state: ThemeState, text) {\n state.text = text\n },\n SET_THEME_BUTTON_TEXT_COLOR (state: ThemeState, buttonText) {\n state.buttonText = buttonText\n },\n SET_THEME_FOOTER_ICON_COLOR (state: ThemeState, footerIconColor) {\n state.footerIconColor = footerIconColor\n },\n SET_THEME_FONT (state: ThemeState, font) {\n state.font = font\n },\n SET_THEME_ROUNDED (state: ThemeState, rounded) {\n state.rounded = rounded\n },\n}\n\nconst themeActions: ActionTree = {\n}\n\nconst themeGetters: GetterTree = {\n themeIsDark: (state: ThemeState) => state.isDark,\n themePrimaryColor: (state: ThemeState) => state.primaryColor,\n themeSecondaryColor: (state: ThemeState) => state.secondaryColor,\n themeInputColor: (state: ThemeState) => state.inputColor,\n themeBackgroundColor: (state: ThemeState) => state.backgroundColor,\n themeText: (state: ThemeState) => state.text,\n themeTextInput: (state: ThemeState) => state.textInput,\n themeFont: (state: ThemeState) => state.font,\n themeButtonText: (state: ThemeState) => state.buttonText,\n themeRounded: (state: ThemeState) => state.rounded,\n themeFooterIconColor: (state: ThemeState) => state.footerIconColor,\n}\n\nexport const themeModule: Module = {\n state: themeState,\n mutations: themeMutations,\n getters: themeGetters,\n actions: themeActions,\n}\n","import Vuex, {\n MutationTree,\n GetterTree,\n ActionTree,\n Module,\n} from 'vuex'\nimport Vue from 'vue'\nimport { IIntroWithoutThemeAndForms, ISectionWithoutThemeAndForms } from '@/types'\nimport { RootState } from '..'\n\nVue.use(Vuex)\n\nexport interface PageModulesState {\n homeIntros: IIntroWithoutThemeAndForms[];\n homePage: ISectionWithoutThemeAndForms[];\n successIntros: IIntroWithoutThemeAndForms[];\n successPage: ISectionWithoutThemeAndForms[];\n endIntros: IIntroWithoutThemeAndForms[];\n endPage: ISectionWithoutThemeAndForms[];\n}\n\nexport const pageModulesState: PageModulesState = {\n homeIntros: [],\n homePage: [],\n successIntros: [],\n successPage: [],\n endIntros: [],\n endPage: [],\n}\n\nconst pageModulesMutations: MutationTree = {\n SET_HOME_INTROS (\n state: PageModulesState,\n modules: IIntroWithoutThemeAndForms[]\n ) {\n state.homeIntros = modules\n },\n SET_HOME_PAGE_MODULES (\n state: PageModulesState,\n modules: ISectionWithoutThemeAndForms[]\n ) {\n state.homePage = modules\n },\n SET_SUCCESS_INTROS (\n state: PageModulesState,\n modules: IIntroWithoutThemeAndForms[]\n ) {\n state.successIntros = modules\n },\n SET_SUCCESS_PAGE_MODULES (\n state: PageModulesState,\n modules: ISectionWithoutThemeAndForms[]\n ) {\n state.successPage = modules\n },\n SET_END_INTROS (\n state: PageModulesState,\n modules: IIntroWithoutThemeAndForms[]\n ) {\n state.endIntros = modules\n },\n SET_END_PAGE_MODULES (\n state: PageModulesState,\n modules: ISectionWithoutThemeAndForms[]\n ) {\n state.endPage = modules\n },\n}\n\nconst pageModulesActions: ActionTree = {\n}\n\nconst pageModulesGetters: GetterTree = {\n pageModulesHomeIntros: (state: PageModulesState) => state.homeIntros,\n pageModulesHome: (state: PageModulesState) => state.homePage,\n pageModulesSuccessIntros: (state: PageModulesState) => state.successIntros,\n pageModulesSuccess: (state: PageModulesState) => state.successPage,\n pageModulesEndIntros: (state: PageModulesState) => state.endIntros,\n pageModulesEnd: (state: PageModulesState) => state.endPage,\n}\n\nexport const pageModulesModule: Module = {\n state: pageModulesState,\n mutations: pageModulesMutations,\n getters: pageModulesGetters,\n actions: pageModulesActions,\n}\n","import axios from 'axios'\n\nclass FormsRest {\n public async signup (campaignId: number, data: Record): Promise {\n return await axios.post(`/api/campaigns/${campaignId}/competition/signup`, data)\n }\n}\n\nexport default new FormsRest()\n","import client from './client'\n\nexport default client\n","import Vuex, {\n MutationTree,\n GetterTree,\n ActionTree,\n Module,\n ActionContext,\n} from 'vuex'\nimport Vue from 'vue'\nimport {\n IRestForms,\n ISectionFormWithoutThemeAndSectionData,\n} from '@/types'\nimport { RootState } from '..'\nimport { sleep } from '@/utils/sleep'\nimport cms from '../../cms'\nimport forms from '@/rest/forms'\n\nVue.use(Vuex)\n\nexport interface FormsState {\n newsletter: ISectionFormWithoutThemeAndSectionData | null;\n competition: ISectionFormWithoutThemeAndSectionData | null;\n isNewsletterSubmitted: boolean\n isCompetitionSubmitted: boolean\n}\n\nexport const formsState: FormsState = {\n newsletter: null,\n competition: null,\n isNewsletterSubmitted: false,\n isCompetitionSubmitted: false,\n}\n\nconst formsMutations: MutationTree = {\n SET_FORM_NEWSLETTER (state: FormsState, form: ISectionFormWithoutThemeAndSectionData) {\n state.newsletter = form\n },\n SET_FORM_COMPETITION (state: FormsState, form: ISectionFormWithoutThemeAndSectionData) {\n state.competition = form\n },\n SET_FORM_IS_COMPETITION_SUBMITTED (state: FormsState, isCompetitionSubmitted: boolean) {\n state.isCompetitionSubmitted = isCompetitionSubmitted\n },\n SET_FORM_IS_NEWSLETTER_SUBMITTED (state: FormsState, isNewsletterSubmitted: boolean) {\n state.isNewsletterSubmitted = isNewsletterSubmitted\n },\n}\n\nconst formsActions: ActionTree = {\n async SUBMIT_NEWSLETTER_FORM (ctx: ActionContext, data: { email: string, country: string, name: string }) {\n if (!cms.newsletter.enabled) {\n // Mark submitted anyway because combined form with cms newsletter disabled causes problems\n ctx.commit('SET_FORM_IS_NEWSLETTER_SUBMITTED', true)\n }\n try {\n await cms.newsletter.signup({\n email: data.email,\n country: data.country,\n name: data.name,\n })\n cms.tracking.trackCustomer('Newsletter', 'Single Opt-In - Successful', 'newsletter_soi_success', {\n newsletter_selection: cms.newsletter.addressbookId,\n })\n ctx.commit('SET_FORM_IS_NEWSLETTER_SUBMITTED', true)\n } catch (e) {\n cms.tracking.trackCustomer('Newsletter', 'Single Opt-In - Fail', 'newsletter_soi_fail', {\n newsletter_selection: cms.newsletter.addressbookId,\n error_message: (e as string),\n })\n throw (e)\n }\n },\n async SUBMIT_COMPETITION_FORM (ctx: ActionContext, data: { fields: Record }) {\n const locale = cms.i18n.currentLocale.code\n await forms.signup(ctx.rootState.campaignId, { fields: data.fields, locale })\n ctx.commit('SET_FORM_IS_COMPETITION_SUBMITTED', true)\n },\n}\n\nconst formsGetters: GetterTree = {\n formNewsletter: (state: FormsState) => state.newsletter,\n formCompetition: (state: FormsState) => state.competition,\n formIsCompetitionSubmitted: (state: FormsState) => state.isCompetitionSubmitted,\n formIsNewsletterSubmitted: (state: FormsState) => state.isNewsletterSubmitted,\n formAllFormsAreSubmitted: (state: FormsState) => {\n const combined = state.newsletter?.data.formType === 'combined' || state.competition?.data.formType === 'combined'\n if (combined) {\n return state.isNewsletterSubmitted && state.isCompetitionSubmitted\n }\n const forms = [[state.newsletter, state.isNewsletterSubmitted], [state.competition, state.isCompetitionSubmitted]]\n for (const [form, submitted] of forms) {\n if (!form) {\n continue\n }\n if (!submitted) {\n return false\n }\n }\n return true\n }\n}\n\nexport const formsModule: Module = {\n state: formsState,\n mutations: formsMutations,\n getters: formsGetters,\n actions: formsActions,\n}\n","import { IRestUser } from '@/types'\nimport axios from 'axios'\n\nclass UsersClient {\n public me (token: string): Promise {\n return axios.get('/api/users/me', {\n headers: {\n Authorization: `Bearer ${token}`\n }\n })\n .then((res) => res.data)\n }\n}\n\nexport default new UsersClient()\n","export function sleep (ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n","import { IRestUser } from '@/types'\nimport { sleep } from '@/utils/sleep'\n\nclass UsersMock {\n public async me (token: string): Promise {\n await sleep(1200)\n\n return {\n id: 1,\n display_name: 'John Doe',\n email: null,\n service: 'spotify',\n service_id: '123',\n profile_picture: '',\n country: null,\n campaign_id: 1,\n }\n }\n}\n\nexport default new UsersMock()\n","import client from './client'\nimport mock from './__mock__'\n\nexport default process.env.VUE_APP_MOCK === 'true' ? mock : client\n","import transform from 'lodash/transform'\nimport isArray from 'lodash/isArray'\nimport isObject from 'lodash/isObject'\nimport camelCase from 'lodash/camelCase'\nimport snakeCase from 'lodash/snakeCase'\n\n/**\n * Generate snake case typings from camel case object\n */\n type CamelToSnakeCase =\n S extends `${infer T}${infer U}` ?\n `${T extends Capitalize ? '_' : ''}${Lowercase}${CamelToSnakeCase}` :\n S\n/**\n* Recursively generate snake case typings from camel case object\n*/\nexport type CamelToSnakeCaseNested = T extends Record ? {\n [K in keyof T as CamelToSnakeCase]: CamelToSnakeCaseNested\n} : T\n/**\n* Generate camel case typings from snake case object\n*/\ntype SnakeToCamelCase =\nS extends `${infer T}_${infer U}` ?\n`${T}${Capitalize>}` :\nS\n/**\n* Recursively generate camel case typings from snake case object\n*/\nexport type SnakeToCamelCaseNested = T extends Record ? {\n[K in keyof T as SnakeToCamelCase]: SnakeToCamelCaseNested\n} : T\n\n/**\n * Recursively transforms an object from snake_case to camelCase keys.\n * Usefull for API to Vuex conversions.\n */\nexport const transformObjectToCamelCase = (obj: Record) =>\n transform(obj, (acc: Record, value, key, target) => {\n const camelKey = isArray(target) ? key : camelCase(key)\n acc[camelKey] = isObject(value) ? transformObjectToCamelCase(value) : value\n })\n\n/**\n * Recursively transforms an object from camelCase to snake_case keys.\n * Usefull for Vuex to API conversions.\n */\nexport const transformObjectToSnakeCase = (obj: Record) =>\n transform(obj, (acc: Record, value, key, target) => {\n const camelKey = isArray(target) ? key : snakeCase(key)\n acc[camelKey] = isObject(value) ? transformObjectToSnakeCase(value) : value\n })\n","import Vuex, {\n MutationTree,\n GetterTree,\n ActionTree,\n Module,\n ActionContext,\n} from 'vuex'\nimport Vue from 'vue'\nimport { RootState } from '..'\nimport users from '@/rest/users'\nimport { IUser } from '@/types'\nimport { transformObjectToCamelCase } from '@/utils/casingConversions'\n\nVue.use(Vuex)\n\nexport interface UsersState {\n current: IUser | null\n}\n\nexport const usersState: UsersState = {\n current: null,\n}\n\nconst usersMutations: MutationTree = {\n SET_USER_CURRENT (state: UsersState, current: IUser) {\n state.current = current\n },\n}\n\nconst usersActions: ActionTree = {\n async LOAD_USER (ctx: ActionContext, data: { token: string }) {\n const user = await users.me(data.token)\n if (user) {\n ctx.commit('SET_USER_CURRENT', transformObjectToCamelCase(user))\n }\n },\n}\n\nconst usersGetters: GetterTree = {\n userCurrent: (state: UsersState) => state.current,\n}\n\nexport const usersModule: Module = {\n state: usersState,\n mutations: usersMutations,\n getters: usersGetters,\n actions: usersActions,\n}\n","import { IRestResult, IRestResultCreate, IRestResultEdit } from '@/types'\nimport axios from 'axios'\n\nclass CampaignRest {\n async get (id: number, token?: string|null): Promise {\n return (await axios.get(`/api/campaigns/${id}`, {\n headers: token ? {\n Authorization: token\n } : {}\n })).data\n }\n\n async edit (token: string | null, id: number, data: IRestResultEdit): Promise {\n return (await axios.patch(`/api/campaigns/${id}`, data, token ? {\n headers: {\n Authorization: token\n }\n } : {})).data\n }\n\n async create (token: string | null, data: IRestResultCreate): Promise {\n return (await axios.post('/api/campaigns', data, token ? {\n headers: {\n Authorization: token\n }\n } : {})).data\n }\n}\n\nexport default new CampaignRest()\n","import { englishCountries, germanCountries } from '@/admin/utils/countries'\nimport { IRestForms, IRestPageModules, IRestResult, IRestResultCreate, IRestResultEdit, IRestTheme, ISectionFormWithoutThemeAndSectionData, IThemeFont } from '@/types'\nimport { CamelToSnakeCaseNested } from '@/utils/casingConversions'\nimport { sleep } from '@/utils/sleep'\n\nconst THEME_MOCK: IRestTheme = {\n is_dark: false,\n primary_color: '#8386BC',\n secondary_color: '#D398AB',\n background_color: '#EBCDD6',\n text_input: '#000',\n input_color: '#D498AB',\n button_text: '#fff',\n text: '#000',\n font: IThemeFont.POPPINS,\n footer_icon_color: '#8386BC',\n rounded: 'full',\n} as const\n\nexport const PAGE_MODULES_MOCK: IRestPageModules = {\n end_intros: [\n {\n background_image: 'https://dev.backend.universalmusic.digital/media/space-2.jpg',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n messages: {\n en: {\n url: 'https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_916,h_301/https://thebackyardband.de/wp-content/uploads/2021/10/Logo_black.png',\n }\n }\n },\n },\n ],\n },\n ],\n end_page: [\n {\n messages: {\n en: {\n title: 'It\\'s over!',\n subtitle: '',\n button: '',\n button_link: '',\n },\n de: {\n title: 'It\\'s over!',\n subtitle: '',\n button: '',\n button_link: '',\n }\n },\n is_full_width: true,\n is_alignment_center: true,\n cols: 1,\n background_image: '',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n messages: {\n en: {\n url: 'https://images.pexels.com/photos/1105666/pexels-photo-1105666.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',\n }\n }\n },\n },\n ],\n },\n ],\n success_intros: [\n {\n background_image: 'https://dev.backend.universalmusic.digital/media/space-2.jpg',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n messages: {\n en: {\n url: 'https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_916,h_301/https://thebackyardband.de/wp-content/uploads/2021/10/Logo_black.png',\n }\n }\n },\n },\n ],\n },\n ],\n success_page: [\n {\n messages: {\n en: {\n title: 'Thanks for signing up!',\n subtitle: 'You will receive an email',\n button: '',\n button_link: '',\n },\n de: {\n title: 'Thanks for signing up!',\n subtitle: 'You will receive an email',\n button: '',\n button_link: '',\n }\n },\n is_full_width: true,\n is_alignment_center: true,\n cols: 1,\n background_image: '',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n messages: {\n en: {\n url: 'https://images.pexels.com/photos/1105666/pexels-photo-1105666.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',\n }\n }\n },\n },\n ],\n },\n ],\n home_intros: [\n {\n background_image: '',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n messages: {\n en: {\n url: 'https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_916,h_301/https://thebackyardband.de/wp-content/uploads/2021/10/Logo_black.png',\n }\n }\n },\n },\n ],\n },\n {\n background_image: 'https://dev.backend.universalmusic.digital/media/space-2.jpg',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n messages: {\n en: {\n url: 'https://images.pexels.com/photos/736355/pexels-photo-736355.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=1600',\n }\n }\n },\n },\n {\n type: 'form',\n data: {\n is_alignment_center: true,\n is_position_center: true,\n },\n },\n ],\n },\n ],\n home_page: [\n {\n messages: {\n en: {\n title: 'Schlager find ich toll 1',\n subtitle:\n 'Hier sind drei Gründe warum dieser Newsletter absolut hammer cool ist:',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n },\n de: {\n title: 'Schlager find ich toll 1',\n subtitle:\n 'Hier sind drei Gründe warum dieser Newsletter absolut hammer cool ist:',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n }\n },\n is_full_width: true,\n is_alignment_center: false,\n cols: 4,\n background_image: '',\n items: [\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/2PWo9EH.png',\n is_square: true,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/2PWo9EH.png',\n is_square: true,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/2PWo9EH.png',\n is_square: true,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/2PWo9EH.png',\n is_square: true,\n },\n },\n ],\n },\n {\n messages: {\n en: {\n title: 'Schlager find ich toll 2',\n subtitle:\n 'Hier sind drei Gründe warum dieser Newsletter absolut hammer cool ist:',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n },\n de: {\n title: 'Schlager find ich toll 2',\n subtitle:\n 'Hier sind drei Gründe warum dieser Newsletter absolut hammer cool ist:',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n }\n },\n is_full_width: false,\n is_alignment_center: true,\n cols: 3,\n background_image: '',\n items: [\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/Njs80kQ.png',\n is_square: false,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/Njs80kQ.png',\n is_square: false,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/Njs80kQ.png',\n is_square: false,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/Njs80kQ.png',\n is_square: false,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/Njs80kQ.png',\n is_square: false,\n },\n },\n {\n type: 'feature',\n data: {\n messages: {\n en: {\n title: 'Alle News auf einen Blick',\n },\n de: {\n title: 'Alle News auf einen Blick',\n },\n },\n image_url: 'https://i.imgur.com/Njs80kQ.png',\n is_square: false,\n },\n },\n ],\n },\n {\n messages: {\n en: {\n title: '',\n subtitle: '',\n button: '',\n button_link: '',\n },\n de: {\n title: '',\n subtitle: '',\n button: '',\n button_link: '',\n },\n },\n is_full_width: true,\n is_alignment_center: false,\n cols: 1,\n background_image: '',\n items: [\n {\n type: 'card',\n data: {\n messages: {\n en: {\n title: 'Alles auf einen Blick',\n subtitle:\n 'Egal ob exklusive Unboxing, unheilige Videopremieren oder musikalische Schätze des Grafen - als Teil des unheiligen Newsletters verpasst du künftig nichts mehr!',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n },\n de: {\n title: 'Alles auf einen Blick',\n subtitle:\n 'Egal ob exklusive Unboxing, unheilige Videopremieren oder musikalische Schätze des Grafen - als Teil des unheiligen Newsletters verpasst du künftig nichts mehr!',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n }\n },\n image_url:\n 'https://images.pexels.com/photos/8041082/pexels-photo-8041082.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500',\n background: '',\n is_image_first_desktop: true,\n },\n },\n {\n type: 'card',\n data: {\n messages: {\n en: {\n title: 'Alles auf einen Blick',\n subtitle:\n 'Egal ob exklusive Unboxing, unheilige Videopremieren oder musikalische Schätze des Grafen - als Teil des unheiligen Newsletters verpasst du künftig nichts mehr!',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n },\n de: {\n title: 'Alles auf einen Blick',\n subtitle:\n 'Egal ob exklusive Unboxing, unheilige Videopremieren oder musikalische Schätze des Grafen - als Teil des unheiligen Newsletters verpasst du künftig nichts mehr!',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n }\n },\n image_url:\n 'https://images.pexels.com/photos/8041082/pexels-photo-8041082.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500',\n background: '',\n is_image_first_desktop: false,\n },\n },\n {\n type: 'card',\n data: {\n messages: {\n en: {\n title: 'Alles auf einen Blick',\n subtitle:\n 'Egal ob exklusive Unboxing, unheilige Videopremieren oder musikalische Schätze des Grafen - als Teil des unheiligen Newsletters verpasst du künftig nichts mehr!',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n },\n de: {\n title: 'Alles auf einen Blick',\n subtitle:\n 'Egal ob exklusive Unboxing, unheilige Videopremieren oder musikalische Schätze des Grafen - als Teil des unheiligen Newsletters verpasst du künftig nichts mehr!',\n button: 'Abonnieren',\n button_link: 'https://takeit.agency/',\n }\n },\n background: '',\n image_url:\n 'https://images.pexels.com/photos/8041082/pexels-photo-8041082.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500',\n is_image_first_desktop: true,\n },\n },\n ],\n },\n {\n messages: {\n en: {\n title: '',\n subtitle: '',\n button: '',\n button_link: '',\n },\n de: {\n title: '',\n subtitle: '',\n button: '',\n button_link: '',\n },\n },\n is_full_width: true,\n is_alignment_center: false,\n cols: 1,\n background_image: '',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n\n messages: {\n en: {\n url: 'https://images.pexels.com/photos/1105666/pexels-photo-1105666.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',\n }\n }\n },\n },\n ],\n },\n {\n messages: {\n en: {\n title: '',\n subtitle: '',\n button: '',\n button_link: '',\n },\n de: {\n title: '',\n subtitle: '',\n button: '',\n button_link: '',\n },\n },\n is_full_width: true,\n is_alignment_center: false,\n cols: 2,\n background_image: '',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'spotifyEmbed',\n\n messages: {\n en: {\n url: 'https://open.spotify.com/embed/album/1DFixLWuPkv3KT3TnV35m3',\n }\n }\n },\n },\n {\n type: 'media',\n data: {\n width: '',\n type: 'appleEmbed',\n\n messages: {\n en: {\n url: 'https://embed.music.apple.com/us/playlist/heard-in-apple-ads/pl.b28c3a5975b04436b42680595f6983ad',\n }\n }\n },\n },\n ],\n },\n {\n messages: {\n en: {\n title: 'Jetzt anmelden! 1',\n subtitle:\n 'Melde dich jetzt an und bekomme wöchentlich die neusten Songs und Videos per Email auf dein Smartphone',\n button: '',\n button_link: '',\n },\n de: {\n title: 'Jetzt anmelden! 1',\n subtitle:\n 'Melde dich jetzt an und bekomme wöchentlich die neusten Songs und Videos per Email auf dein Smartphone',\n button: '',\n button_link: '',\n }\n },\n is_full_width: true,\n is_alignment_center: true,\n cols: 1,\n background_image: '',\n items: [\n {\n type: 'form',\n data: {\n is_alignment_center: true,\n is_position_center: true,\n },\n },\n ],\n },\n {\n messages: {\n en: {\n title: 'Jetzt anmelden! 2',\n subtitle:\n 'Melde dich jetzt an und bekomme wöchentlich die neusten Songs und Videos per Email auf dein Smartphone',\n button: '',\n button_link: '',\n },\n de: {\n title: 'Jetzt anmelden! 2',\n subtitle:\n 'Melde dich jetzt an und bekomme wöchentlich die neusten Songs und Videos per Email auf dein Smartphone',\n button: '',\n button_link: '',\n }\n },\n is_full_width: true,\n is_alignment_center: false,\n cols: 2,\n background_image: '',\n items: [\n {\n type: 'media',\n data: {\n width: '',\n type: 'image',\n\n messages: {\n en: {\n url: 'https://images.pexels.com/photos/2272854/pexels-photo-2272854.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2',\n }\n }\n },\n },\n {\n type: 'form',\n data: {\n is_alignment_center: false,\n is_position_center: false,\n },\n },\n ],\n },\n ],\n}\n\nconst newsletterForm: CamelToSnakeCaseNested = {\n type: 'form',\n data: {\n form_type: 'newsletter',\n messages: {\n en: {\n title: 'Super Newsletter nur hier und heute!',\n spotify_button_text: 'Mit Spotify anmelden',\n spotify_under_button_text: 'Text Spotify',\n small_text:\n 'Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n subtitle: '',\n bottom_text: 'Bottom text',\n button_text: 'Jetzt Anmelden',\n end_text:\n 'Erhalte per E-Mail immer die neuesten Informationen zu Releases, Gewinnspielen und Aktionen. Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n },\n de: {\n title: 'Super Newsletter nur hier und heute!',\n spotify_button_text: 'Mit Spotify anmelden',\n spotify_under_button_text: 'Text Spotify',\n small_text:\n 'Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n subtitle: '',\n bottom_text: 'Bottom text',\n button_text: 'Jetzt Anmelden',\n end_text:\n 'Erhalte per E-Mail immer die neuesten Informationen zu Releases, Gewinnspielen und Aktionen. Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n }\n },\n is_required: true,\n background: '',\n inputs: [\n {\n type: 'input-text',\n data: {\n id: 'name',\n messages: {\n en: {\n error: 'This is required',\n label: 'Name*',\n placeholder: 'Type your name',\n },\n de: {\n error: 'This is required',\n label: 'Name*',\n placeholder: 'Type your name',\n }\n },\n required: true,\n type: 'text',\n },\n },\n {\n type: 'input-text',\n data: {\n id: 'email',\n messages: {\n en: {\n error: 'This is not a valid email',\n label: 'Email*',\n placeholder: 'Type your email',\n }\n },\n required: true,\n type: 'email',\n },\n },\n {\n type: 'input-select',\n data: {\n type: 'country',\n id: 'country',\n messages: {\n en: {\n error: 'This is required',\n label: 'Country*',\n placeholder: 'Select your country',\n }\n },\n required: true,\n items: [],\n },\n },\n {\n type: 'input-checkbox',\n data: {\n messages: {\n en: {\n overline: '',\n error: 'This is required',\n label:\n 'Mit deiner Anmeldung bestätigst du, dass du unsere Unheilig Newsletter erhalten möchtest.',\n }\n },\n required: false,\n },\n },\n {\n type: 'input-radio',\n data: {\n messages: {\n en: {\n label: 'Radio label',\n error: 'This is required',\n }\n },\n required: false,\n items: [\n {\n messages: {\n en: {\n label: 'Option 1'\n },\n de: {\n label: 'Optione 1'\n },\n },\n id: 'option-1'\n },\n {\n messages: {\n en: {\n label: 'Option 2'\n },\n de: {\n label: 'Optione 2'\n },\n },\n id: 'option-2'\n }\n ],\n }\n },\n ],\n },\n}\n\nconst competitionForm: CamelToSnakeCaseNested = {\n type: 'form',\n data: {\n is_required: false,\n form_type: 'newsletter',\n messages: {\n en: {\n title: 'Super Newsletter nur hier und heute!',\n spotify_button_text: 'Mit Spotify anmelden',\n spotify_under_button_text: 'Text Spotify',\n secondary_button_text: 'Skip',\n small_text:\n 'Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n subtitle: '',\n bottom_text: 'Bottom text',\n button_text: 'Jetzt Anmelden',\n end_text:\n 'Erhalte per E-Mail immer die neuesten Informationen zu Releases, Gewinnspielen und Aktionen. Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n },\n de: {\n title: 'Super Newsletter nur hier und heute!',\n spotify_button_text: 'Mit Spotify anmelden',\n spotify_under_button_text: 'Text Spotify',\n secondary_button_text: 'Skip',\n small_text:\n 'Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n subtitle: '',\n bottom_text: 'Bottom text',\n button_text: 'Jetzt Anmelden',\n end_text:\n 'Erhalte per E-Mail immer die neuesten Informationen zu Releases, Gewinnspielen und Aktionen. Du kannst Deine Einwilligung jederzeit widerrufen. Mehr Informationen unter Sicherheit & Datenschutz.',\n },\n },\n button_icon: 'whatsapp',\n after_submit_url: 'http://localhost:8080/test-url',\n background: '',\n inputs: [\n {\n type: 'input-text',\n data: {\n id: 'name',\n messages: {\n en: {\n error: 'This is required',\n label: 'Name*',\n placeholder: 'Type your name',\n },\n de: {\n error: 'This is required',\n label: 'Name*',\n placeholder: 'Type your name',\n }\n },\n required: true,\n type: 'text',\n },\n },\n {\n type: 'input-text',\n data: {\n id: 'email',\n messages: {\n en: {\n error: 'This is required',\n label: 'Email*',\n placeholder: 'Type your email',\n },\n de: {\n error: 'This is required',\n label: 'Email*',\n placeholder: 'Type your email',\n }\n },\n required: true,\n type: 'email',\n },\n },\n {\n type: 'input-text',\n data: {\n messages: {\n en: {\n error: 'This is required',\n label: 'Address',\n placeholder: 'Type your address',\n },\n de: {\n error: 'This is required',\n label: 'Address',\n placeholder: 'Type your address',\n }\n },\n required: false,\n type: 'text',\n },\n },\n {\n type: 'input-text',\n data: {\n id: 'phone',\n messages: {\n en: {\n error: 'This is required',\n label: 'Phone',\n placeholder: 'Type your phone number',\n },\n de: {\n error: 'This is required',\n label: 'Phone',\n placeholder: 'Type your phone number',\n }\n },\n required: false,\n preSelect: 'nl',\n type: 'telephone',\n },\n },\n {\n type: 'input-consent',\n data: {\n id: 'consent',\n messages: {\n en: {\n error: '',\n label: 'Consent Text',\n text: 'This is consent text',\n },\n de: {\n error: '',\n label: 'Consent Text',\n text: 'This is consent text',\n }\n },\n required: false,\n },\n },\n {\n type: 'input-select',\n data: {\n id: 'country',\n type: 'country',\n messages: {\n en: {\n error: 'This is required',\n label: 'Country',\n placeholder: 'Select your country',\n },\n de: {\n error: 'This is required',\n label: 'Country',\n placeholder: 'Select your country',\n }\n },\n required: false,\n items: [],\n },\n },\n {\n type: 'input-checkbox',\n data: {\n messages: {\n en: {\n overline: '',\n error: 'This is required',\n label:\n 'Mit deiner Anmeldung bestätigst du, dass du unsere Unheilig Newsletter erhalten möchtest. *',\n },\n de: {\n overline: '',\n error: 'This is required',\n label:\n 'Mit deiner Anmeldung bestätigst du, dass du unsere Unheilig Newsletter erhalten möchtest. *',\n }\n },\n required: true,\n },\n },\n ],\n },\n}\n\nexport const FORMS_MOCK: IRestForms = {\n newsletter_form: newsletterForm,\n competition_form: competitionForm,\n}\n\nclass CampaignRestMock {\n public async get (id: number, token?: string|null): Promise {\n await sleep(1200)\n\n return new Promise((resolve) => resolve({\n id,\n theme: THEME_MOCK,\n forms: FORMS_MOCK,\n pages: PAGE_MODULES_MOCK,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString(),\n setup_done: true,\n }))\n }\n\n public async edit (token: string | null, id: number, data: IRestResultEdit): Promise {\n await sleep(1200)\n\n console.log('data', data)\n return new Promise((resolve) => resolve({\n ...data,\n id,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString(),\n }))\n }\n}\n\nexport default new CampaignRestMock()\n","import client from './client'\nimport mock from './__mock__'\n\nexport default process.env.VUE_APP_MOCK === 'true' ? mock : client\n","import Vuex, { StoreOptions, MutationTree, GetterTree, ActionTree, ActionContext } from 'vuex'\nimport Vue from 'vue'\nimport { themeModule } from './modules/theme'\nimport { pageModulesModule } from './modules/page-modules'\nimport { formsModule } from './modules/forms'\nimport { usersModule } from './modules/user'\nimport campaign from '@/rest/campaign'\nimport { transformObjectToCamelCase, transformObjectToSnakeCase } from '@/utils/casingConversions'\nimport { IRestForms, IRestPageModules } from '@/types'\nimport cms from '@/cms'\n\nVue.use(Vuex)\n\nexport interface RootState {\n campaignId: number\n campaignCreatedAt: string\n campaignUpdatedAt: string\n campaignSetupDone: boolean\n}\n\nexport const rootState: RootState = {\n campaignId: -1,\n campaignCreatedAt: '',\n campaignUpdatedAt: '',\n campaignSetupDone: false,\n}\n\nexport const rootMutations: MutationTree = {\n\n SET_CAMPAIGN_ID (state: RootState, campaignId) {\n state.campaignId = campaignId\n },\n SET_CAMPAIGN_CREATED_AT (state: RootState, campaignCreatedAt) {\n state.campaignCreatedAt = campaignCreatedAt\n },\n SET_CAMPAIGN_UPDATED_AT (state: RootState, campaignUpdatedAt) {\n state.campaignUpdatedAt = campaignUpdatedAt\n },\n SET_CAMPAIGN_SETUP_DONE (state: RootState, setupDone: boolean) {\n state.campaignSetupDone = setupDone\n }\n}\n\nexport const rootGetters: GetterTree = {\n campaignId: (state: RootState) => state.campaignId,\n campaignCreatedAt: (state: RootState) => state.campaignCreatedAt,\n campaignUpdatedAt: (state: RootState) => state.campaignUpdatedAt,\n campaignIsNew: (state: RootState) => !state.campaignSetupDone,\n campaignIsEnded: () => cms.campaign.hasEnded(),\n}\n\nexport const rootActions: ActionTree = {\n async LOAD_CAMPAIGN (ctx: ActionContext) {\n const res = await campaign.get(ctx.state.campaignId, cms.accessToken)\n\n ctx.commit('SET_CAMPAIGN_CREATED_AT', res.created_at)\n ctx.commit('SET_CAMPAIGN_UPDATED_AT', res.updated_at)\n ctx.commit('SET_CAMPAIGN_SETUP_DONE', res.setup_done)\n\n ctx.commit('SET_THEME_IS_DARK', res.theme.is_dark)\n ctx.commit('SET_THEME_PRIMARY_COLOR', res.theme.primary_color)\n ctx.commit('SET_THEME_SECONDARY_COLOR', res.theme.secondary_color)\n ctx.commit('SET_THEME_BACKGROUND_COLOR', res.theme.background_color)\n ctx.commit('SET_THEME_INPUT_COLOR', res.theme.input_color)\n ctx.commit('SET_THEME_TEXT_INPUT_COLOR', res.theme.text_input)\n ctx.commit('SET_THEME_TEXT_COLOR', res.theme.text)\n ctx.commit('SET_THEME_FONT', res.theme.font)\n ctx.commit('SET_THEME_ROUNDED', res.theme.rounded)\n ctx.commit('SET_THEME_FOOTER_ICON_COLOR', res.theme.footer_icon_color || res.theme.primary_color)\n\n ctx.commit('SET_HOME_INTROS', transformObjectToCamelCase(res.pages.home_intros))\n ctx.commit('SET_HOME_PAGE_MODULES', transformObjectToCamelCase(res.pages.home_page))\n ctx.commit('SET_SUCCESS_INTROS', transformObjectToCamelCase(res.pages.success_intros))\n ctx.commit('SET_SUCCESS_PAGE_MODULES', transformObjectToCamelCase(res.pages.success_page))\n ctx.commit('SET_END_INTROS', transformObjectToCamelCase(res.pages.end_intros))\n ctx.commit('SET_END_PAGE_MODULES', transformObjectToCamelCase(res.pages.end_page))\n\n if (res.theme.button_text) {\n ctx.commit('SET_THEME_BUTTON_TEXT_COLOR', res.theme.button_text)\n }\n\n if (res.forms.newsletter_form) {\n ctx.commit('SET_FORM_NEWSLETTER', transformObjectToCamelCase(res.forms.newsletter_form))\n }\n if (res.forms.competition_form) {\n ctx.commit('SET_FORM_COMPETITION', transformObjectToCamelCase(res.forms.competition_form))\n }\n },\n async EDIT_CAMPAIGN (ctx: ActionContext) {\n const result = await campaign.edit(cms.accessToken, ctx.state.campaignId, {\n theme: {\n is_dark: ctx.getters.themeIsDark,\n primary_color: ctx.getters.themePrimaryColor,\n secondary_color: ctx.getters.themeSecondaryColor,\n background_color: ctx.getters.themeBackgroundColor,\n input_color: ctx.getters.themeInputColor,\n footer_icon_color: ctx.getters.themeFooterIconColor,\n text_input: ctx.getters.themeTextInput,\n text: ctx.getters.themeText,\n font: ctx.getters.themeFont,\n rounded: ctx.getters.themeRounded,\n button_text: ctx.getters.themeButtonText,\n },\n pages: {\n home_intros: transformObjectToSnakeCase(ctx.getters.pageModulesHomeIntros) as IRestPageModules['home_intros'],\n home_page: transformObjectToSnakeCase(ctx.getters.pageModulesHome) as IRestPageModules['home_page'],\n success_intros: transformObjectToSnakeCase(ctx.getters.pageModulesSuccessIntros) as IRestPageModules['success_intros'],\n success_page: transformObjectToSnakeCase(ctx.getters.pageModulesSuccess) as IRestPageModules['success_page'],\n end_intros: transformObjectToSnakeCase(ctx.getters.pageModulesEndIntros) as IRestPageModules['end_intros'],\n end_page: transformObjectToSnakeCase(ctx.getters.pageModulesEnd) as IRestPageModules['end_page'],\n },\n forms: {\n newsletter_form: ctx.getters.formNewsletter !== null\n ? transformObjectToSnakeCase(ctx.getters.formNewsletter) as IRestForms['newsletter_form']\n : null,\n competition_form: ctx.getters.formCompetition !== null\n ? transformObjectToSnakeCase(ctx.getters.formCompetition) as IRestForms['competition_form']\n : null,\n },\n setup_done: true,\n })\n ctx.commit('SET_CAMPAIGN_UPDATED_AT', result.created_at)\n ctx.commit('SET_CAMPAIGN_SETUP_DONE', result.setup_done)\n cms.campaignSaved(result.id)\n }\n}\n\nexport const storeOptions: StoreOptions = {\n state: rootState,\n mutations: rootMutations,\n getters: rootGetters,\n actions: rootActions,\n modules: {\n theme: themeModule,\n pageModules: pageModulesModule,\n forms: formsModule,\n users: usersModule\n },\n}\n\nexport default new Vuex.Store(storeOptions)\n","import { CamelToSnakeCaseNested } from './utils/casingConversions'\n\ndeclare global {\n interface Window {\n dataLayer: any[]\n }\n}\nexport interface ILink {\n text: string\n url: string\n}\n\nexport interface ISocial {\n id: 'spotify' | 'youtube' | 'instagram' | 'twitter' | 'facebook' | 'appleMusic' | string\n url: string\n}\n\nexport type ISectionCard = {\n type: 'card'\n data: {\n messages: {\n [lang: string]: {\n title: string\n subtitle: string\n button: string\n buttonLink: string\n }\n }\n imageUrl: string\n background: string // color\n buttonLink?: string // moved to messages\n buttonBackground: IRestTheme['primary_color']\n isImageFirstDesktop: boolean\n rounded: IRestTheme['rounded']\n }\n}\nexport type ISectionCardWithoutTheme = Omit\n & { data: Omit }\n\nexport type ISectionFeature = {\n type: 'feature'\n data: {\n messages: {\n [lang: string]: {\n title: string\n }\n }\n background: IRestTheme['secondary_color']\n imageUrl: string\n imageBackground: IRestTheme['primary_color']\n isSquare: boolean // (sets icon background and background)\n rounded: IRestTheme['rounded']\n }\n}\nexport type ISectionFeatureWithoutTheme = Omit\n & { data: Omit }\n\nexport type ISectionForm = {\n type: 'form'\n data: {\n formType: 'newsletter' | 'competition' | 'combined'\n messages: {\n [lang: string]: {\n title: string\n spotifyButtonText?: string\n spotifyUnderButtonText?: string\n smallText: string\n subtitle: string\n bottomText: string\n buttonText: string\n endText: string\n secondaryButtonText?: string\n }\n }\n background: string\n /**\n * default on left (only title/subtile)\n */\n isAlignmentCenter: boolean\n /**\n * position, default left\n */\n isPositionCenter: boolean\n inputs: (IFormInputText | IFormInputSelect | IFormInputRadio | IFormInputCheckbox | IFormInputConsentWithoutTheme)[]\n buttonBackground: IRestTheme['primary_color']\n rounded: IRestTheme['rounded']\n /**\n * if not required, form can be skipped\n */\n isRequired: boolean\n\n /**\n * icon shoown next to button text, e.g. whatsapp\n */\n buttonIcon?: string\n /**\n * url to open after submit\n * if not set, show success message\n */\n afterSubmitUrl?: string\n }\n}\nexport type ISectionFormWithoutThemeInputs = (IFormInputTextWithoutTheme | IFormInputSelectWithoutTheme | IFormInputRadioWithoutTheme | IFormInputCheckboxWithoutTheme | IFormInputConsentWithoutTheme)[]\nexport type ISectionFormWithoutThemeAndSectionData = Omit\n & { data: Omit }\n & { data: { inputs: ISectionFormWithoutThemeInputs } }\n/**\n * Empty form placeholder object, to be populated at render time.\n */\nexport type ISectionFormPlaceholder = Omit & {\n data: {\n isAlignmentCenter: boolean\n isPositionCenter: boolean\n }\n}\n\nexport type ISectionFormWithoutTheme = ISectionFormWithoutThemeAndSectionData & ISectionFormPlaceholder\n\nexport type ISectionMedia = {\n type: 'media'\n rounded: IRestTheme['rounded']\n data: {\n /**\n * depending on type show media\n */\n type: 'video' | 'videoEmbed' | 'spotifyEmbed' | 'appleEmbed' | 'image'\n url?: string // old way of adding a URL\n width: string\n messages: { // for each language a different url\n [lang: string]: {\n url: string\n }\n }\n }\n}\nexport type ISectionMediaWithoutTheme = Omit\n\nexport type ISection = {\n messages: {\n [lang: string]: {\n title: string\n subtitle: string\n button: string // after subtitle\n buttonLink: string\n }\n }\n buttonLink?: string // moved to messages\n buttonBackground: IRestTheme['primary_color']\n rounded: IRestTheme['rounded']\n background?: IRestTheme['background_color']\n backgroundImage?: string\n isFullWidth: boolean\n isAlignmentCenter: boolean // defaul on left\n cols: 1 | 2 | 3 | 4; // amount of cols in a row\n items: (ISectionCard | ISectionFeature | ISectionForm | ISectionMedia)[]\n}\nexport type ISectionWithoutTheme = Omit\n & { items: (ISectionCardWithoutTheme | ISectionFeatureWithoutTheme | ISectionFormWithoutTheme | ISectionMediaWithoutTheme)[] }\nexport type ISectionWithoutThemeAndForms = Omit\n & { items: (ISectionCardWithoutTheme | ISectionFeatureWithoutTheme | ISectionFormPlaceholder | ISectionMediaWithoutTheme)[] }\n\nexport type IIntro = {\n backgroundImage: string\n background: IRestTheme['background_color']\n items: (ISectionForm | ISectionMedia)[]\n}\nexport type IIntroWithoutTheme = Omit\n & { items: (ISectionFormWithoutTheme | ISectionMediaWithoutTheme)[] }\nexport type IIntroWithoutThemeAndForms = Omit\n & { items: (ISectionFormPlaceholder | ISectionMediaWithoutTheme)[] }\n\nexport type IFormInputText = {\n type: 'input-text'\n data: {\n id?: string\n messages: {\n [lang: string]: {\n label: string\n placeholder: string\n error?: string\n }\n }\n required: boolean\n type: 'email' | 'text' | 'telephone'\n background: IRestTheme['input_color']\n rounded: IRestTheme['rounded']\n textColor: IRestTheme['text_input']\n preSelect?: string // for tel\n }\n}\nexport type IFormInputTextWithoutTheme = Omit &\n{ data: Omit }\n\nexport type IFormInputSelect = {\n type: 'input-select'\n data: {\n type: 'free' | 'country'\n id?: string\n messages: {\n [lang: string]: {\n label: string\n placeholder: string\n error?: string\n }\n }\n required: boolean\n background: IRestTheme['input_color']\n rounded: IRestTheme['rounded']\n textColor: IRestTheme['text_input']\n items: {\n messages: {\n [lang: string]: {\n label: string\n }\n }\n id: string\n }[]\n }\n}\nexport type IFormInputSelectWithoutTheme = Omit &\n{ data: Omit }\n\nexport type IFormInputRadio = {\n type: 'input-radio'\n data: {\n id?: string\n messages: {\n [lang: string]: {\n label: string\n error?: string\n }\n }\n required: boolean\n background: IRestTheme['input_color']\n checkedColor: IRestTheme['primary_color']\n textColor: IRestTheme['text_input']\n items: {\n id: string\n messages: {\n [lang: string]: {\n label: string\n }\n }\n }[]\n }\n}\nexport type IFormInputRadioWithoutTheme = Omit &\n{ data: Omit }\n\nexport type IFormInputCheckbox = {\n type: 'input-checkbox'\n data: {\n id?: string\n messages: {\n [lang: string]: {\n label: string\n overline: string\n error?: string\n }\n }\n required: boolean\n rounded: IRestTheme['rounded']\n background: IRestTheme['input_color']\n checkedColor: IRestTheme['primary_color']\n textColor: IRestTheme['text_input']\n }\n}\nexport type IFormInputCheckboxWithoutTheme = Omit &\n{ data: Omit }\n\nexport type IFormInputConsent = {\n type: 'input-consent'\n data: {\n id?: string\n messages: {\n [lang: string]: {\n error?: string\n label: string\n text: string\n }\n }\n required: boolean\n textColor: IRestTheme['text_input']\n }\n}\nexport type IFormInputConsentWithoutTheme = Omit &\n{ data: Omit }\n\nexport interface IFooter {\n background: string // color\n textColor: string\n iconColor: string\n iconBackground: string\n isSquareSocial: boolean // sets all square\n links: ILink[]\n socialLinks: ISocial[]\n}\n\nexport enum IThemeFont {\n MERRIWEATHER = 'Merriweather',\n POPPINS = 'Poppins',\n PT_MONO = 'PT Mono',\n}\n\nexport type ITheme = {\n isDark: boolean\n primaryColor: string\n secondaryColor: string\n backgroundColor: string\n textInput: string\n inputColor: string\n text: string\n buttonText: string\n font: IThemeFont\n rounded: 'none' | 'full' | 'medium'\n footerIconColor: string\n}\n\nexport type IRestTheme = CamelToSnakeCaseNested\n\nexport type IRestPageModulesIntro = (CamelToSnakeCaseNested>\n & {\n items: (\n CamelToSnakeCaseNested |\n CamelToSnakeCaseNested)[]\n }\n)[]\n\nexport type IRestPageModulesPage = (CamelToSnakeCaseNested>\n & {\n items: (\n CamelToSnakeCaseNested |\n CamelToSnakeCaseNested |\n CamelToSnakeCaseNested |\n CamelToSnakeCaseNested)[]\n }\n)[]\n\n/**\n * This endpoint returns page-modules information.\n *\n * Forms are returned as placeholders, as they are fetched from another endpoint and injected later.\n */\nexport type IRestPageModules = {\n home_intros: IRestPageModulesIntro\n home_page: IRestPageModulesPage\n success_intros: IRestPageModulesIntro\n success_page: IRestPageModulesPage\n end_intros: IRestPageModulesIntro\n end_page: IRestPageModulesPage\n}\n\nexport type IRestForms = {\n newsletter_form: CamelToSnakeCaseNested | null\n competition_form: CamelToSnakeCaseNested | null\n}\n\nexport type IRestResult = {\n id: number\n theme: IRestTheme\n forms: IRestForms\n pages: IRestPageModules\n updated_at: string\n created_at: string\n setup_done: boolean\n}\n\nexport type IRestResultEdit = Omit\nexport type IRestResultCreate = Omit\n\nexport type IUser = {\n campaignId: number\n country: null | string\n displayName: string\n email: null | string\n id: number\n profilePicture: string\n service: 'spotify' | 'apple' | ''\n serviceId: string\n}\n\nexport type IRestUser = CamelToSnakeCaseNested\n"],"names":["ThemeHandler","themeFont","$themeInsertFont","style","document","createElement","rel","href","this","$themeFontLink","head","appendChild","$themeFontFamily","PT_MONO","POPPINS","MERRIWEATHER","AppHandler","setCampaignId","setForm","loadCampaign","$appInit","editor","cms","init","i18n","iframeEnabled","campaign","appId","parseInt","MessageType","BridgeHandler","$bridgeMessageTheme","state","$bridgeMessage","THEME","$bridgeMessagePageModules","PAGE_MODULE","$bridgeMessageForms","FORMS","$bridgeMessageView","view","VIEW","type","data","window","postMessage","admin","origin","$bridgeListenMessages","parent","addEventListener","$bridgeHandleMessage","event","$router","push","$store","commit","isDark","buttonText","primaryColor","font","secondaryColor","backgroundColor","inputColor","textInput","text","footerIconColor","rounded","homeIntros","homePage","successIntros","successPage","endIntros","endPage","newsletter","competition","TranslationHandler","$t","id","t","$tLocales","locales","translations","map","locale","code","filter","v","sort","$tLocaleCurrent","currentLocale","$setLocale","userPreferredLocale","$tx","messages","key","tx","$userCountryCode","userCountryCode","ready","console","log","registered","cached","updatefound","updated","offline","error","render","_vm","_c","_self","_setupProxy","staticClass","sectionModal","isModalActive","attrs","isModalOpen","on","$event","items","_e","_l","intro","index","class","intros","length","section","background","backgroundImage","staticRenderFns","injectThemeInForm","form","theme","formImputWithTheme","inputs","input","inputWithTheme","textColor","checkedColor","_exhaustiveCheck","formWIthTheme","buttonBackground","injectFormInSection","newSection","item","injectFormInIntro","newIntro","injectThemeInSection","itemWithTheme","imageBackground","injectThemeInIntro","Home","themeIsDark","themePrimaryColor","themeSecondaryColor","themeBackgroundColor","themeInputColor","themeFooterIconColor","themeText","themeTextInput","themeRounded","themeButtonText","pageModulesHomeIntros","pageModulesHome","formNewsletter","formCompetition","formAllFormsAreSubmitted","formIsCompetitionSubmitted","watchIsCompetitionSubmitted","val","watchAllFormsAreSubmitted","afterSubmitUrl","location","name","en","title","subtitle","button","buttonLink","isFullWidth","isAlignmentCenter","cols","isPositionCenter","homeIntrosWithForms","module","homeIntrosWIthTheme","sections","homeWithForms","homeWithTheme","components","component","Success","pageModulesSuccess","pageModulesSuccessIntros","mounted","scrollTo","body","classList","remove","pageModulesHomeWithForms","pageModulesHomeWithTheme","End","pageModulesEnd","pageModulesEndIntros","campaignIsEnded","pageModulesWithForms","pageModulesWithTheme","use","routes","path","router","mode","base","themeState","themeMutations","SET_THEME","Object","assign","SET_THEME_IS_DARK","SET_THEME_PRIMARY_COLOR","SET_THEME_SECONDARY_COLOR","SET_THEME_BACKGROUND_COLOR","SET_THEME_INPUT_COLOR","SET_THEME_TEXT_INPUT_COLOR","SET_THEME_TEXT_COLOR","SET_THEME_BUTTON_TEXT_COLOR","SET_THEME_FOOTER_ICON_COLOR","SET_THEME_FONT","SET_THEME_ROUNDED","themeActions","themeGetters","themeModule","mutations","getters","actions","pageModulesState","pageModulesMutations","SET_HOME_INTROS","modules","SET_HOME_PAGE_MODULES","SET_SUCCESS_INTROS","SET_SUCCESS_PAGE_MODULES","SET_END_INTROS","SET_END_PAGE_MODULES","pageModulesActions","pageModulesGetters","pageModulesModule","FormsRest","signup","campaignId","axios","post","formsState","isNewsletterSubmitted","isCompetitionSubmitted","formsMutations","SET_FORM_NEWSLETTER","SET_FORM_COMPETITION","SET_FORM_IS_COMPETITION_SUBMITTED","SET_FORM_IS_NEWSLETTER_SUBMITTED","formsActions","SUBMIT_NEWSLETTER_FORM","ctx","enabled","email","country","tracking","trackCustomer","newsletter_selection","addressbookId","e","error_message","SUBMIT_COMPETITION_FORM","rootState","fields","formsGetters","formIsNewsletterSubmitted","combined","formType","forms","submitted","formsModule","UsersClient","me","token","get","headers","Authorization","then","res","sleep","ms","Promise","resolve","setTimeout","UsersMock","display_name","service","service_id","profile_picture","campaign_id","VUE_APP_MOCK","transformObjectToCamelCase","obj","acc","value","target","camelKey","transformObjectToSnakeCase","usersState","current","usersMutations","SET_USER_CURRENT","usersActions","LOAD_USER","user","users","usersGetters","userCurrent","usersModule","CampaignRest","edit","patch","create","THEME_MOCK","is_dark","primary_color","secondary_color","background_color","text_input","input_color","button_text","footer_icon_color","PAGE_MODULES_MOCK","end_intros","background_image","width","url","end_page","button_link","de","is_full_width","is_alignment_center","success_intros","success_page","home_intros","is_position_center","home_page","image_url","is_square","is_image_first_desktop","newsletterForm","form_type","spotify_button_text","spotify_under_button_text","small_text","bottom_text","end_text","is_required","label","placeholder","required","overline","competitionForm","secondary_button_text","button_icon","after_submit_url","preSelect","FORMS_MOCK","newsletter_form","competition_form","CampaignRestMock","pages","created_at","Date","toISOString","updated_at","setup_done","campaignCreatedAt","campaignUpdatedAt","campaignSetupDone","rootMutations","SET_CAMPAIGN_ID","SET_CAMPAIGN_CREATED_AT","SET_CAMPAIGN_UPDATED_AT","SET_CAMPAIGN_SETUP_DONE","setupDone","rootGetters","campaignIsNew","hasEnded","rootActions","LOAD_CAMPAIGN","accessToken","EDIT_CAMPAIGN","result","campaignSaved","storeOptions","pageModules","IThemeFont"],"sourceRoot":""}