{"version":3,"sources":["webpack:///./src/components/product/ProductCard.vue?d5d6","webpack:///src/components/product/ProductCard.vue","webpack:///./src/components/product/ProductCard.vue?43bb","webpack:///./src/components/product/ProductCard.vue","webpack:///./src/helpers/helpers.js","webpack:///./src/store.js","webpack:///./src/common.js","webpack:///./src/components/form/LeadForm.vue?8e9b","webpack:///./src/plugins/bootstrap.js","webpack:///./src/components/core/swiper/SwiperWrapper.vue?ff67","webpack:///src/components/core/swiper/SwiperWrapper.vue","webpack:///./src/components/core/swiper/SwiperWrapper.vue?503f","webpack:///./src/components/core/swiper/SwiperWrapper.vue","webpack:///./src/components/product/ProductCard.vue?99cb","webpack:///./src/components/solution/SolutionPreferredPopin.vue?cf91","webpack:///./src/components/core/swiper/SwiperWrapper.vue?d225","webpack:///./src/mixins/visual.js","webpack:///./src/components/form/LeadForm.vue?a7ac","webpack:///src/components/form/LeadForm.vue","webpack:///./src/components/form/LeadForm.vue?c7a1","webpack:///./src/components/form/LeadForm.vue","webpack:///./src/components/list/ListHighlights.vue?dd47","webpack:///src/components/list/ListHighlights.vue","webpack:///./src/components/list/ListHighlights.vue?e869","webpack:///./src/components/list/ListHighlights.vue","webpack:///./src/components/list/ListHighlights.vue?52b2","webpack:///./src/components/solution/SolutionPreferredPopin.vue?f5a0","webpack:///src/components/solution/SolutionPreferredPopin.vue","webpack:///./src/components/solution/SolutionPreferredPopin.vue?c13d","webpack:///./src/components/solution/SolutionPreferredPopin.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","class","classes","staticClass","isFromApi","forceImage","attrs","image","size","label","domProps","_s","config","knowMore","on","togglePopin","_e","staticRenderFns","component","api","Nespresso","getNameFromApi","sku","getProduct","name","Vue","use","Vuex","Store","state","selectedFilters","business","capsules","milk","accessories","ui","popin","opened","survey","active","form","surveyIndex","planIndex","genericMessage","getters","isFilterSelected","key","filter","Array","isArray","includes","currentSelectedFilter","isPopinOpened","getPlan","dico","plan","isPlanDefined","plans","getAccessories","reduce","list","getMessage","template","planCombos","combos","comboItems","output","item","quantity","combosList","planAccessories","accessoriesItems","title","accessoriesList","length","skuReplaces","replace","capture","push","Promise","all","skus","combosWithNames","shift","machine","mutations","initialiseStore","match","document","cookie","RegExp","agreedCookie","sessionStorage","getItem","parseInt","JSON","parse","toggleSlide","index","setItem","togglePlan","toggleForm","status","toggleSurvey","addFilter","value","stringify","addMultipleFilter","filterValue","removeFilter","updatedValue","removeMultipleFilter","difference","setGenericMessage","actions","updateFilters","commit","isMultiple","stateFilterValue","isInObject","intersection","mutation","productionTip","App","trackingLabel","centralLandingAlias","sectionTrackingLabels","trackingLabelTxt","VueLanding","project","landing","trackingLabelPrefix","skipMutationKeys","additionalBrands","Tracking","globalTracking","el","store","h","prototype","indexOf","b","a","c","Number","arguments","Math","ceil","floor","Object","defineProperty","searchElement","fromIndex","TypeError","o","len","n","k","max","abs","sameValueZero","x","y","isNaN","find","predicate","thisArg","kValue","call","configurable","writable","wrapper","ref","_t","visual","methods","getVisualUrl","type","svg","$landing","getImgUrl","folder","ext","target","displayForm","$event","preventDefault","onSubmit","_l","field","full","_b","scopedSlots","_u","fn","errors","error","directives","rawName","expression","_i","$$a","$$el","$$c","checked","$$v","$$i","$set","concat","slice","isRequired","placeholder","composing","_q","$$selectedVal","options","selected","map","val","_value","multiple","_v","default","option","regex","required","allowFalse","terms","fields","reCaptchaID","feedback","message","back","isLoading","submit","script","setAttribute","head","appendChild","highlight","excluded","icon","onChange","imgURL","isForcingPopinImage","images","forcedSameMachinePopin","solution","introduction","highlights","package"],"mappings":"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","file":"js/chunk-common.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.classes},[_c('div',{staticClass:\"image\"},[(_vm.isFromApi && !_vm.forceImage)?_c('img',{attrs:{\"src\":_vm.image}}):(_vm.isIcon)?_c('visual',{attrs:{\"svg\":_vm.image}}):_c('visual',{attrs:{\"src\":_vm.image}})],1),(_vm.label)?_c('div',{staticClass:\"caption\"},[(_vm.size === 'small')?_c('paragraph',{attrs:{\"size\":\"S\",\"content\":_vm.label}}):_c('heading',{attrs:{\"level\":5},domProps:{\"innerHTML\":_vm._s(_vm.label)}}),(_vm.hasPopin)?_c('cta',{attrs:{\"is-link\":\"\",\"font-icon\":\"fn_angleLink\",\"type\":\"text\",\"size\":\"S\",\"content\":_vm.config.knowMore},on:{\"click\":_vm.togglePopin}}):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <div :class=\"classes\">\n        <div class=\"image\">\n            <img v-if=\"isFromApi && !forceImage\" :src=\"image\">\n            <visual v-else-if=\"isIcon\" :svg=\"image\"/>\n            <visual v-else :src=\"image\"/>\n        </div>\n        <div class=\"caption\" v-if=\"label\">\n            <paragraph size=\"S\" :content=\"label\" v-if=\"size === 'small'\" />\n            <heading :level=\"5\" v-html=\"label\" v-else />\n            <cta\n                is-link\n                font-icon=\"fn_angleLink\"\n                type=\"text\"\n                size=\"S\"\n                :content=\"config.knowMore\"\n                @click=\"togglePopin\"\n                v-if=\"hasPopin\"\n            />\n        </div>\n    </div>\n</template>\n\n<script>\nimport Nespresso from 'nespresso-library/src/core/api'\nimport Cta from 'gvue/src/core/Cta'\nimport Heading from 'gvue/src/core/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph'\nimport Visual from 'gvue/src/core/Visual'\n\nconst SIZES = ['small', 'normal', 'inline', 'free']\n\nexport default {\n    name: 'ProductCard',\n    components: {\n        Cta,\n        Heading,\n        Paragraph,\n        Visual\n    },\n    props: {\n        product: { type: Object, required: true },\n        size: {\n            type: String,\n            default: 'normal',\n            validator: value => SIZES.includes(value)\n        },\n        isIcon: { type: Boolean, default: false },\n        isImg: { type: Boolean, default: false },\n        forceTitle: { type: Boolean, default: false },\n        hasPopin: { type: Boolean, default: false }\n    },\n    data () {\n        return {\n            apiProduct: null\n        }\n    },\n    computed: {\n        image (name) {\n            if (this.isFromApi && !this.forceImage) {\n                if (this.isImg) {\n                    window.sessionStorage.setItem('popinImg', this.apiProduct.responsiveImages.standard)\n                }\n                return this.apiProduct.responsiveImages.standard\n            }\n            if (this.isIcon) {\n                return this.$landing.getImgUrl({ ext: 'svg', folder: 'icons', name: this.product.image })\n            }\n            return { ext: 'png', folder: 'visuals', name: this.product.image }\n        },\n        label () {\n            const _label = !this.isFromApi || (this.forceTitle && this.product.title !== '')\n                ? this.product.title\n                : this.apiProduct.name\n            const { quantity } = this.product\n            const suffix = quantity ? ` ×${quantity}` : ''\n            return _label ? `${_label}${suffix}` : ''\n        },\n        isFromApi () {\n            return this.apiProduct !== null\n        },\n        forceImage () {\n            return this.product.image && this.product.image !== ''\n        },\n        classes () {\n            return ['product', this.size]\n        }\n    },\n    async created () {\n        const api = new Nespresso()\n        const sku = this.product.sku\n        if (sku) {\n            this.apiProduct = await api.getProduct(sku)\n        }\n        this.config = this.$json.config\n    },\n    methods: {\n        togglePopin () {\n            this.$store.commit('togglePopin', true)\n        }\n    }\n}\n</script>\n\n<style lang=\"sass\" scoped>\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n.product\n    display: flex\n    align-items: center\n\n    + .product\n        margin-left: ($gap * .25)\n\n    &.normal\n\n        .image\n            height: pxToRem(170)\n            width: pxToRem(170)\n\n    &.small\n\n        .image\n            height: pxToRem(145)\n            width: pxToRem(110)\n            mix-blend-mode: multiply\n\n        .caption\n            margin-top: 0\n\n    &.normal,\n    &.small\n        .image\n            display: flex\n            align-items: center\n            img\n                max-width: 100%\n                max-height: 100%\n                height: auto\n                display: block\n                margin: 0 auto\n\n    &.inline\n        align-items: flex-end\n        margin-top: ($gap*0.75)\n\n        > *\n            flex: 0 0 50%\n            max-width: 50%\n\n        .caption\n            margin-bottom: 0.75em\n            margin-left: 0.5em\n\n    &.free\n        .image\n            img\n                width: auto\n.caption\n    width: 100%\n\n.image\n    img\n        display: block\n        margin: 0 auto\n        transition: none\n        object-fit: contain\n    /deep/ svg\n        box-sizing: border-box\n\n.g\n    .g_h5\n        margin: 0 auto\n        max-width: 12em\n\n    .g_link\n        margin: ($gap * 0.5) 0 0\n        color: $color_base\n        text-transform: uppercase\n        cursor: pointer\n+mobile\n    .image\n        img\n            height: pxToRem(100)\n            width: pxToRem(100)\n        /deep/ svg\n            padding: pxToRem(20)\n            height: pxToRem(100)\n            width: pxToRem(100)\n    .caption\n        text-align: left\n\n    .product\n        &.normal,\n        &.small\n            flex-direction: column\n\n            .image\n                height: pxToRem(80)\n                width: pxToRem(80)\n\n            .caption\n                text-align: center\n\n        + .product\n            margin-top: $gap\n\n    .g .g_h5\n        margin: 0 auto\n\n+desktop\n    .image\n        img\n            height: pxToRem(170)\n            width: pxToRem(170)\n        /deep/ svg\n            padding: pxToRem(30)\n            box-sizing: border-box\n            height: pxToRem(170)\n            width: pxToRem(170)\n\n    .caption\n        margin-top: $gap\n\n    .product\n        flex-direction: column\n        + .product\n            margin-left: ($gap * 4)\n\n        &.inline\n            flex-direction: row\n\n            .image\n                img\n                    height: auto\n                    width: auto\n                    max-height: 12em\n                    max-width: 100%\n\n+tablet\n    .image\n        img\n            height: pxToRem(120)\n            width: pxToRem(120)\n        /deep/ svg\n            padding: pxToRem(25)\n            height: pxToRem(120)\n            width: pxToRem(120)\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductCard.vue?vue&type=template&id=3d62766b&scoped=true&\"\nimport script from \"./ProductCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProductCard.vue?vue&type=style&index=0&id=3d62766b&lang=sass&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3d62766b\",\n  null\n  \n)\n\nexport default component.exports","import Nespresso from 'nespresso-library/src/core/api'\n\nconst api = new Nespresso()\n\nexport const customPrice = (price, entity) =>\n    price\n        ? `${entity.currencySymbol}${price}`\n        : entity.displayedPrice\n\nexport const getNameFromApi = async sku => (await api.getProduct(sku) || {}).name\n","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport { difference, intersection } from 'lodash'\nimport { getNameFromApi } from '@/helpers/helpers'\n\nVue.use(Vuex)\nexport default new Vuex.Store({\n    state: {\n        // selectedFilters: {\n        //     business: 'restaurant',\n        //     capsules: '0-30',\n        //     milk: 'milk',\n        //     accessories: ['accessories', 'cookiesAndChocolates']\n        // },\n        selectedFilters: {\n            business: '',\n            capsules: '',\n            milk: '',\n            accessories: []\n        },\n        ui: {\n            popin: {\n                opened: false\n            },\n            survey: {\n                active: true\n                // active: false\n            },\n            form: {\n                active: false\n            }\n        },\n        surveyIndex: 1,\n        planIndex: 1,\n        genericMessage: ''\n    },\n    getters: {\n        isFilterSelected: state => (key, filter) => {\n            if (Array.isArray(state.selectedFilters[key])) {\n                return state.selectedFilters[key].includes(filter)\n            } else {\n                return state.selectedFilters[key] === filter\n            }\n        },\n        currentSelectedFilter: state => label => state.selectedFilters[label],\n        isPopinOpened: state => state.ui.popin.opened,\n        getPlan: state => dico => {\n            const { capsules, milk } = state.selectedFilters\n            const plan = `plan${state.planIndex}`\n            const isPlanDefined = dico.plans && dico.plans[capsules] && dico.plans[capsules][plan]\n            return isPlanDefined ? dico.plans[capsules][plan][milk] : null\n        },\n        getAccessories: state => dico => {\n            const { accessories } = state.selectedFilters\n            return accessories.reduce(\n                (list, filter) => ([...list, ...[dico.list[filter]]]),\n                []\n            )\n        },\n        getMessage: (state, getters) => async (dico, template) => {\n            const plan = getters.getPlan(dico.plan)\n            if (plan) {\n                const planCombos = plan.combos\n                const comboItems = (output, item) => `${output}${output !== '' ? '\\n' : ''}  - {sku}${item.sku}{/sku} ×${item.quantity}`\n                const combosList = (output, combos) => `${output}${output !== '' ? '\\n  or\\n' : ''}${combos.reduce(comboItems, '')}`\n                const combos = planCombos.reduce(combosList, '')\n\n                const planAccessories = getters.getAccessories(dico.accessories)\n\n                const accessoriesItems = (output, item) =>\n                    item.title\n                        ? `${output}${output !== '' ? '\\n' : ''}  - ${item.title}`\n                        : ''\n                const accessoriesList = (output, accessories) =>\n                    `${output}${output !== '' ? '\\n  or\\n' : ''}${accessories.reduce(accessoriesItems, '')}`\n                const accessories = planAccessories.length ? planAccessories.reduce(accessoriesList, '') : []\n\n                const skuReplaces = []\n                combos.replace(\n                    /{sku}(.*?){\\/sku}/g,\n                    async (capture, sku) => {\n                        skuReplaces.push(getNameFromApi(sku))\n                    }\n                )\n                const skus = await Promise.all(skuReplaces)\n                const combosWithNames = combos.replace(\n                    /{sku}(.*?){\\/sku}/g,\n                    () => skus.shift().replace(/(<([^>]+)>)/gi, '')\n                )\n\n                return template\n                    .replace('{machine}', plan.machine.title)\n                    .replace('{capsules}', plan.capsules)\n                    .replace('{combos}', combosWithNames)\n                    .replace('{accessories}', accessories)\n            }\n            return ''\n        }\n    },\n    mutations: {\n        initialiseStore (state) {\n            const match = document.cookie.match(new RegExp('(^| )evidonConsentCategories=([^;]+)'))\n            // Only works with the cookie banner, not in local\n            const agreedCookie = match ? match[2] === 'all' : false\n            if (agreedCookie) {\n                if (sessionStorage.getItem('tool__ui_survey_active')) {\n                    state.ui.survey.active = sessionStorage.getItem('tool__ui_survey_active') === 'true'\n                }\n                if (sessionStorage.getItem('tool__surveyIndex')) {\n                    state.surveyIndex = parseInt(sessionStorage.getItem('tool__surveyIndex'))\n                }\n                if (sessionStorage.getItem('tool__selectedFilters')) {\n                    state.selectedFilters = JSON.parse(sessionStorage.getItem('tool__selectedFilters'))\n                }\n            }\n        },\n        toggleSlide (state, index) {\n            state.surveyIndex = index\n            sessionStorage.setItem('tool__surveyIndex', index)\n        },\n        togglePlan (state, index) {\n            state.planIndex = index\n        },\n        toggleForm (state, status) {\n            state.ui.form.active = status\n        },\n        togglePopin (state, status) {\n            state.ui.popin.opened = status\n        },\n        toggleSurvey (state, status) {\n            state.ui.survey.active = status\n            sessionStorage.setItem('tool__ui_survey_active', state.ui.survey.active)\n        },\n        addFilter (state, { key, value }) {\n            state.selectedFilters = { ...state.selectedFilters, [key]: value }\n            sessionStorage.setItem('tool__selectedFilters', JSON.stringify(state.selectedFilters))\n        },\n        addMultipleFilter (state, { key, value }) {\n            const filterValue = [...state.selectedFilters[key], ...value]\n            state.selectedFilters = { ...state.selectedFilters, [key]: filterValue }\n            sessionStorage.setItem('tool__selectedFilters', JSON.stringify(state.selectedFilters))\n        },\n        removeFilter (state, { key, value }) {\n            const updatedValue = state.selectedFilters[key] === value ? '' : value\n            state.selectedFilters = { ...state.selectedFilters, [key]: updatedValue }\n            sessionStorage.setItem('tool__selectedFilters', JSON.stringify(state.selectedFilters))\n        },\n        removeMultipleFilter (state, { key, value }) {\n            const updatedValue = difference(state.selectedFilters[key], value)\n            state.selectedFilters = { ...state.selectedFilters, [key]: updatedValue }\n            sessionStorage.setItem('tool__selectedFilters', JSON.stringify(state.selectedFilters))\n        },\n        setGenericMessage (state, value) {\n            state.genericMessage = value\n        }\n    },\n    actions: {\n        updateFilters ({ commit, state }, filter) {\n            const isMultiple = Array.isArray(filter.value)\n            const stateFilterValue = state.selectedFilters[filter.key]\n            const isInObject = isMultiple\n                ? intersection(stateFilterValue, filter.value).length\n                : stateFilterValue === filter.value\n            const mutation = `${isInObject ? 'remove' : 'add'}${isMultiple ? 'Multiple' : ''}Filter`\n            commit(mutation, filter)\n        }\n    }\n})\n","import '@/plugins/bootstrap'\nimport 'swiper/css/swiper.css'\n\nimport Vue from 'vue'\nimport VueLanding from 'nespresso-components/landing/VueLanding'\nimport Tracking from 'nespresso-library/src/core/tracking'\nimport store from '@/store'\n\nVue.config.productionTip = false\n\nexport default ({ App, trackingLabel, centralLandingAlias, sectionTrackingLabels }) => {\n    const trackingLabelTxt = `B2B - LP - Page ${trackingLabel}`\n    Vue.use(VueLanding, {\n        project: 'b2b-plans',\n        landing: centralLandingAlias,\n        centralLandingAlias,\n        trackingLabelPrefix: trackingLabelTxt,\n        skipMutationKeys: ['background', 'image', 'standard', 'name', 'target', 'link', 'template', 'machine'],\n        additionalBrands: [],\n        sectionTrackingLabels\n    })\n    Tracking.globalTracking(trackingLabelTxt)\n    return new Vue({\n        el: '#agilityApp',\n        store,\n        render: h => h(App)\n    })\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeadForm.vue?vue&type=style&index=0&id=b5fb17a0&lang=sass&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeadForm.vue?vue&type=style&index=0&id=b5fb17a0&lang=sass&scoped=true&\"","\nif (process.env.NODE_ENV === 'development') {\n    require('nespresso-library/src/utils/mocks')\n}\n\n// Reset classic prototype\n/* eslint-disable */\nArray.prototype.indexOf = function (b) {\n    var a = this.length >>> 0\n    var c = Number(arguments[1]) || 0\n    c = (c < 0) ? Math.ceil(c) : Math.floor(c)\n    if (c < 0) { c += a }\n    for (; c < a; c++) { if (c in this && this[c] === b) { return c } }\n    return -1\n}\n/* eslint-disable */\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n    Object.defineProperty(Array.prototype, 'includes', {\n        value: function(searchElement, fromIndex) {\n            if (this == null) {\n                throw new TypeError('\"this\" est nul ou non défini');\n            }\n            var o = Object(this);\n            var len = o.length >>> 0;\n            if (len === 0) {\n                return false;\n            }\n            var n = fromIndex | 0;\n            var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n            function sameValueZero(x, y) {\n                return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\n            }\n            while (k < len) {\n                if (sameValueZero(o[k], searchElement)) {\n                    return true;\n                }\n                k++;\n            }\n            return false;\n        }\n    });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\nif (!Array.prototype.find) {\n    Object.defineProperty(Array.prototype, 'find', {\n        value: function(predicate) {\n            if (this == null) {\n                throw new TypeError('\"this\" is null or not defined');\n            }\n            var o = Object(this);\n            var len = o.length >>> 0;\n            if (typeof predicate !== 'function') {\n                throw new TypeError('predicate must be a function');\n            }\n            var thisArg = arguments[1];\n            var k = 0;\n            while (k < len) {\n                var kValue = o[k];\n                if (predicate.call(thisArg, kValue, k, o)) {\n                    return kValue;\n                }\n                k++;\n            }\n            return undefined;\n        },\n        configurable: true,\n        writable: true\n    });\n}\n\nimport(/* webpackChunkName: \"classic-reset\" */ 'nespresso-sass/reset/_classic.sass')\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.classes.wrapper},[_c('div',{ref:\"swiper\",staticClass:\"swiper-container\"},[_c('div',{staticClass:\"swiper-wrapper\"},[_vm._t(\"slides\")],2)]),(_vm.toolbar)?_c('div',{staticClass:\"swiper-toolbar\"},[_c('div',{ref:\"pagination\",staticClass:\"swiper-pagination\"}),_c('div',{ref:\"prevEl\",staticClass:\"swiper-button-prev\"}),_c('div',{ref:\"nextEl\",staticClass:\"swiper-button-next\"})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <div :class=\"classes.wrapper\">\n        <div class=\"swiper-container\" ref=\"swiper\">\n            <div class=\"swiper-wrapper\">\n                <slot name=\"slides\"></slot>\n            </div>\n        </div>\n        <div class=\"swiper-toolbar\" v-if=\"toolbar\">\n            <div class=\"swiper-pagination\" ref=\"pagination\"></div>\n            <div class=\"swiper-button-prev\" ref=\"prevEl\"></div>\n            <div class=\"swiper-button-next\" ref=\"nextEl\"></div>\n        </div>\n    </div>\n</template>\n\n<script>\nimport Swiper from 'swiper'\n\nconst CONTRASTS = ['dark', 'light']\n\nexport default {\n    name: 'SwiperWrapper',\n    props: {\n        contrast: {\n            type: String,\n            default: 'light',\n            validator: value => CONTRASTS.includes(value)\n        },\n        options: {\n            type: Object,\n            default: () => ({})\n        },\n        toolbar: {\n            type: Boolean,\n            default: true\n        }\n    },\n    data () {\n        return {\n            swiper: null\n        }\n    },\n    computed: {\n        classes () {\n            return {\n                wrapper: ['swiper', this.contrast]\n            }\n        }\n    },\n    mounted () {\n        this.$nextTick(this.initSwiper)\n    },\n    beforeDestroy () {\n        this.swiper.destroy()\n    },\n    methods: {\n        initSwiper () {\n            const { swiper, pagination, nextEl, prevEl } = this.$refs\n            const options = {\n                speed: 350,\n                ...this.options,\n                ...this.options.navigation && {\n                    navigation: {\n                        nextEl,\n                        prevEl\n                    }\n                },\n                ...this.options.pagination && {\n                    pagination: {\n                        el: pagination,\n                        ...this.options.pagination\n                    }\n                }\n            }\n            this.swiper = new Swiper(swiper, options)\n        }\n    }\n}\n</script>\n\n<style lang=\"sass\" scoped>\n@import nespresso-bi/utilities\n@import nespresso-bi/brand/_variables\n\n.swiper\n    position: relative\n    --swiper-navigation-size: 38px\n    max-width: calc(100vw - 2.5em)\n    box-sizing: border-box\n\n.swiper-pagination\n    position: static\n    width: auto\n\n    &-fraction\n        color: $color_action\n        font-weight: 300\n        letter-spacing: 0.0625em\n\n.swiper-button-disabled\n    opacity: 0.625\n\n.swiper-button-prev,\n.swiper-button-next\n    font-size: 2.25em\n    color: $color_mid\n    transition: opacity 200ms ease\n\n    &.swiper-button-disabled\n        opacity: 0.05\n\n.swiper-toolbar\n    height: 14px\n\n.swiper-button-prev\n    left: 0\n\n.swiper-button-next\n    right: 0\n\n/deep/\n    .swiper-pagination-fraction\n\n        .swiper-pagination-current\n            color: $color_base\n            font-size: 2em\n            font-weight: 800\n            letter-spacing: 0.25em\n\n    .swiper-pagination-bullets\n        display: flex\n        justify-content: center\n\n    .swiper-pagination-bullet\n        position: relative\n        height: pxToRem(7)\n        width: pxToRem(7)\n        border: 1px solid\n        border-radius: 50%\n\n        &::before\n            content: ''\n            +pos(absolute, -1px, -1px, -1px, -1px)\n            border-radius: inherit\n            transform: scale(0)\n            opacity: 0\n            transition: opacity 150ms ease, transform 150ms ease\n\n        &-active\n            &::before\n                opacity: 1\n                transform: scale(1.5)\n\n        + .swiper-pagination-bullet\n            margin-left: 1em\n\n.light\n    /deep/\n        .swiper-pagination-bullet\n            border-color: $color-base\n            &::before\n                background-color: $color-base\n\n.dark\n    /deep/\n        .swiper-pagination-bullet\n            border-color: $color-white\n            &::before\n                background-color: $color-white\n\n+desktop\n    .swiper\n        max-width: 62.25em\n        margin: ($gap*2.5) auto\n\n+mobile\n    .swiper\n        --swiper-navigation-size: 30px\n\n    .swiper-button-prev\n        left: $gap * -0.25\n\n    .swiper-button-next\n        right: $gap * -0.25\n\n@media only screen and (max-width: 1150px)\n    .swiper\n        max-width: 80vw\n        margin: ($gap*1.5) auto\n\n// Legacy styles for IE11 compatibility\n@media all and (-ms-high-contrast:none)\n    .swiper-button-prev,\n    .swiper-button-next\n      position: absolute\n      top: 50%\n      width: 27px\n      height: 44px\n      margin-top: -22px\n      z-index: 10\n      cursor: pointer\n      background-size: 27px 44px\n      background-position: center\n      background-repeat: no-repeat\n\n    .swiper-button-prev.swiper-button-disabled,\n    .swiper-button-next.swiper-button-disabled\n      opacity: 0.35\n      cursor: auto\n      pointer-events: none\n\n    .swiper-button-prev,\n    .swiper-container-rtl .swiper-button-next\n      background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23757575'%2F%3E%3C%2Fsvg%3E\")\n      left: 10px\n      right: auto\n\n    .swiper-button-next,\n    .swiper-container-rtl .swiper-button-prev\n      background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23757575'%2F%3E%3C%2Fsvg%3E\")\n      right: 10px\n      left: auto\n\n    .swiper-button-prev.swiper-button-white,\n    .swiper-container-rtl .swiper-button-next.swiper-button-white\n      background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\")\n\n    .swiper-button-next.swiper-button-white,\n    .swiper-container-rtl .swiper-button-prev.swiper-button-white\n      background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\")\n\n    .swiper-button-prev.swiper-button-black,\n    .swiper-container-rtl .swiper-button-next.swiper-button-black\n      background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\")\n\n    .swiper-button-next.swiper-button-black,\n    .swiper-container-rtl .swiper-button-prev.swiper-button-black\n      background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\")\n\n    .swiper-button-lock\n      display: none\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwiperWrapper.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwiperWrapper.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SwiperWrapper.vue?vue&type=template&id=576f8ba0&scoped=true&\"\nimport script from \"./SwiperWrapper.vue?vue&type=script&lang=js&\"\nexport * from \"./SwiperWrapper.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SwiperWrapper.vue?vue&type=style&index=0&id=576f8ba0&lang=sass&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"576f8ba0\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductCard.vue?vue&type=style&index=0&id=3d62766b&lang=sass&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductCard.vue?vue&type=style&index=0&id=3d62766b&lang=sass&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SolutionPreferredPopin.vue?vue&type=style&index=0&id=224d7bde&lang=sass&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SolutionPreferredPopin.vue?vue&type=style&index=0&id=224d7bde&lang=sass&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwiperWrapper.vue?vue&type=style&index=0&id=576f8ba0&lang=sass&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwiperWrapper.vue?vue&type=style&index=0&id=576f8ba0&lang=sass&scoped=true&\"","export const visual = {\n    methods: {\n        getVisualUrl (type, name) {\n            return {\n                svg: this.$landing.getImgUrl({\n                    folder: 'icons',\n                    name,\n                    ext: 'svg'\n                })\n            }[type]\n        }\n    }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.dico.target && _vm.displayForm)?_c('validation-observer',[_c('form',{ref:\"form\",staticClass:\"wrapper\",on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_vm._l((_vm.dico.fields),function(field,name){return _c('div',{key:name,class:['row', { full: field.type === 'textarea' }]},[(field.display)?_c('validation-provider',_vm._b({staticClass:\"control\",attrs:{\"mode\":\"lazy\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('label',{class:{ error: errors[0] }},[(field.type === 'checkbox')?[_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form[name]),expression:\"form[name]\"}],attrs:{\"name\":\"name\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.form[name])?_vm._i(_vm.form[name],null)>-1:(_vm.form[name])},on:{\"change\":function($event){var $$a=_vm.form[name],$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.form, name, $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.form, name, $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.form, name, $$c)}}}},'input',_vm.isRequired(field),false)),_c('span',{domProps:{\"innerHTML\":_vm._s(field.label)}})]:[_c('span',{domProps:{\"innerHTML\":_vm._s(field.label)}}),((field.type)==='checkbox'&&(field.type === 'text' || field.type === 'email'|| field.type === 'tel'))?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form[name]),expression:\"form[name]\"}],attrs:{\"name\":name,\"placeholder\":field.placeholder,\"size\":field.size,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.form[name])?_vm._i(_vm.form[name],null)>-1:(_vm.form[name])},on:{\"change\":function($event){var $$a=_vm.form[name],$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.form, name, $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.form, name, $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.form, name, $$c)}}}},'input',_vm.isRequired(field),false)):((field.type)==='radio'&&(field.type === 'text' || field.type === 'email'|| field.type === 'tel'))?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form[name]),expression:\"form[name]\"}],attrs:{\"name\":name,\"placeholder\":field.placeholder,\"size\":field.size,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.form[name],null)},on:{\"change\":function($event){return _vm.$set(_vm.form, name, null)}}},'input',_vm.isRequired(field),false)):(field.type === 'text' || field.type === 'email'|| field.type === 'tel')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form[name]),expression:\"form[name]\"}],attrs:{\"name\":name,\"placeholder\":field.placeholder,\"size\":field.size,\"type\":field.type},domProps:{\"value\":(_vm.form[name])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.form, name, $event.target.value)}}},'input',_vm.isRequired(field),false)):_vm._e(),(field.type === 'select')?_c('select',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form[name]),expression:\"form[name]\"}],attrs:{\"name\":name},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.form, name, $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},'select',_vm.isRequired(field),false),[_c('option',{attrs:{\"value\":\"\",\"selected\":\"\",\"disabled\":\"\"}},[_vm._v(_vm._s(field.default))]),_vm._l((field.options),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.label))])})],2):_vm._e(),(field.type === 'textarea')?_c('textarea',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form[name]),expression:\"form[name]\"}],attrs:{\"name\":name,\"placeholder\":field.placeholder},domProps:{\"value\":(_vm.form[name])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.form, name, $event.target.value)}}},'textarea',_vm.isRequired(field),false)):_vm._e()]],2),_c('small',[_vm._v(_vm._s(errors[0]))])]}}],null,true)},'validation-provider',_vm.regex(field),false)):_vm._e()],1)}),_c('div',{staticClass:\"row footer\"},[_c('div',[_c('validation-provider',{staticClass:\"mention\",attrs:{\"rules\":{ required: { allowFalse: false } }},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('label',{class:{ error: errors[0] }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.terms),expression:\"terms\"}],attrs:{\"name\":\"terms\",\"required\":\"\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.terms)?_vm._i(_vm.terms,null)>-1:(_vm.terms)},on:{\"change\":function($event){var $$a=_vm.terms,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.terms=$$a.concat([$$v]))}else{$$i>-1&&(_vm.terms=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.terms=$$c}}}}),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.dico.fields.terms.label)}}),_c('small',[_vm._v(_vm._s(errors[0]))])])]}}],null,false,1844413010)})],1),_c('div',{staticClass:\"grecaptcha-badge\"},[_c('div',{staticClass:\"g-recaptcha\",attrs:{\"data-sitekey\":_vm.reCaptchaID}}),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"captchaToken\",\"id\":\"captchaToken\"}})])]),_c('div',{staticClass:\"row bar\"},[(_vm.feedback.message)?_c('small',{class:_vm.feedback.status,domProps:{\"innerHTML\":_vm._s(_vm.feedback.message)}}):_vm._e(),_c('cta',{staticClass:\"back g_btnWhite\",attrs:{\"is-btn\":\"\",\"type\":\"button\",\"content\":_vm.config.back},on:{\"click\":_vm.back}}),_c('button',{ref:\"submit\",staticClass:\"g_btn submit\",attrs:{\"type\":\"submit\",\"disabled\":_vm.isLoading}},[_vm._v(\" \"+_vm._s(_vm.dico.fields.submit.label)+\" \")])],1)],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <validation-observer\n        v-if=\"dico.target && displayForm\"\n    >\n        <form class=\"wrapper\" ref=\"form\" @submit.prevent=\"onSubmit\">\n            <div :class=\"['row', { full: field.type === 'textarea' }]\"\n                 v-for=\"(field, name) in dico.fields\"\n                 :key=\"name\"\n            >\n                <validation-provider\n                    class=\"control\"\n                    mode=\"lazy\"\n                    v-bind=\"regex(field)\"\n                    v-if=\"field.display\"\n                    v-slot=\"{ errors }\"\n                >\n                    <label :class=\"{ error: errors[0] }\">\n\n                        <template v-if=\"field.type === 'checkbox'\">\n                            <input\n                                name=\"name\"\n                                v-bind=\"isRequired(field)\"\n                                type=\"checkbox\"\n                                v-model=\"form[name]\"\n                            >\n                            <span v-html=\"field.label\" />\n                        </template>\n\n                        <template v-else>\n                            <span v-html=\"field.label\" />\n                            <input\n                                :name=\"name\"\n                                :placeholder=\"field.placeholder\"\n                                :size=\"field.size\"\n                                :type=\"field.type\"\n                                v-bind=\"isRequired(field)\"\n                                v-if=\"field.type === 'text' || field.type === 'email'|| field.type === 'tel'\"\n                                v-model=\"form[name]\"\n                            />\n                            <select\n                                :name=\"name\"\n                                v-bind=\"isRequired(field)\"\n                                v-if=\"field.type === 'select'\"\n                                v-model=\"form[name]\"\n                            >\n                                <option value=\"\" selected disabled>{{ field.default }}</option>\n                                <option\n                                    v-for=\"option in field.options\"\n                                    :key=\"option.value\"\n                                    :value=\"option.value\"\n                                >{{ option.label }}</option>\n                            </select>\n                            <textarea\n                                :name=\"name\"\n                                :placeholder=\"field.placeholder\"\n                                v-bind=\"isRequired(field)\"\n                                v-if=\"field.type === 'textarea'\"\n                                v-model=\"form[name]\"\n                            />\n                        </template>\n\n                    </label>\n                    <small>{{ errors[0] }}</small>\n                </validation-provider>\n            </div>\n\n            <div class=\"row footer\">\n                <div>\n                    <validation-provider class=\"mention\" v-slot=\"{ errors }\" :rules=\"{ required: { allowFalse: false } }\">\n                        <label :class=\"{ error: errors[0] }\">\n                            <input\n                                name=\"terms\"\n                                required\n                                type=\"checkbox\"\n                                v-model=\"terms\"\n                            >\n                            <span v-html=\"dico.fields.terms.label\" />\n                            <small>{{ errors[0] }}</small>\n                        </label>\n                    </validation-provider>\n                </div>\n                <div class=\"grecaptcha-badge\">\n                    <div class=\"g-recaptcha\" :data-sitekey=\"reCaptchaID\">&nbsp;</div>\n                    <input type=\"hidden\" name=\"captchaToken\" id=\"captchaToken\" />\n                </div>\n            </div>\n            <div class=\"row bar\">\n                <small\n                    :class=\"feedback.status\"\n                    v-if=\"feedback.message\"\n                    v-html=\"feedback.message\"\n                />\n                <cta\n                    is-btn\n                    type=\"button\"\n                    class=\"back g_btnWhite\"\n                    :content=\"config.back\"\n                    @click=\"back\"\n                />\n                <button\n                    class=\"g_btn submit\"\n                    ref=\"submit\"\n                    type=\"submit\"\n                    :disabled=\"isLoading\"\n                >\n                    {{ dico.fields.submit.label }}\n                </button>\n            </div>\n        </form>\n    </validation-observer>\n</template>\n\n<script>\nimport axios from 'axios'\nimport Cta from 'gvue/src/core/Cta'\nimport { ValidationObserver, ValidationProvider, extend } from 'vee-validate'\nimport { email, regex, required } from 'vee-validate/dist/rules'\nimport Tracking from 'nespresso-library/src/core/tracking'\n\nexport default {\n    name: 'LeadForm',\n    components: {\n        Cta,\n        ValidationObserver,\n        ValidationProvider\n    },\n    props: {\n        message: { type: String, default: '' }\n    },\n    data () {\n        return {\n            form: {},\n            formFields: {},\n            terms: '',\n            feedback: {\n                status: '',\n                message: ''\n            },\n            reCaptchaID: '',\n            isLoading: false\n        }\n    },\n    computed: {\n        displayForm () {\n            return Object.values(this.form)\n        }\n    },\n    created () {\n        this.config = this.$json.config\n        this.dico = this.$json.form\n        this.initializeData()\n        this.configureValidation(this.dico.config)\n    },\n    watch: {\n        message (value) {\n            this.form.comment = value\n        }\n    },\n    mounted () {\n        const apiURL = `https://www.nespresso.com/ecapi/stores/v5/${this.$landing.country.toLowerCase()}/B2B`\n        fetch(apiURL)\n            .then(async response => {\n                const data = await response.json()\n                // check for error response\n                if (!response.ok) {\n                    // get error message from body or default to response statusText\n                    const error = (data && data.message) || response.statusText\n                    return Promise.reject(error)\n                }\n                this.reCaptchaID = data.recaptchaKey || ''\n                // Load the recaptcha script once recaptchaKey is added to the data-sitekey attribute of div having class=\"g-recaptcha\"\n                const script = document.createElement('script')\n                script.setAttribute('src', 'https://www.google.com/recaptcha/api.js')\n                document.head.appendChild(script)\n            })\n            .catch(error => {\n                console.error('There was an error!', error)\n            })\n    },\n    methods: {\n        onSubmit (event) {\n            this.isLoading = true\n            this.form.captchaToken = event.target['g-recaptcha-response'].value\n            if (!this.form.captchaToken) {\n                this.isLoading = false\n                return\n            }\n            this.form.language = window.padl.page.pageInfo.language\n\n            for (const key in this.form) {\n                if (this.form[key]) {\n                    this.formFields[key] = this.form[key]\n                }\n            }\n\n            if (!this.formFields.firstName) {\n                this.formFields.firstName = 'Subscription'\n            }\n\n            if (this.formFields.comment) {\n                const { country } = this.$landing\n                if (country !== 'BE' && country !== 'LU') {\n                    this.formFields.comment = this.formFields.comment.substr(0, 499)\n                }\n            }\n\n            this.send()\n        },\n        send () {\n            const axiosConfig = {\n                headers: {\n                    'Content-Type': 'application/json; charset=utf-8'\n                }\n            }\n            axios.post(this.dico.target, JSON.stringify(this.formFields), axiosConfig)\n                .then((res) => {\n                    this.feedback = {\n                        status: 'success',\n                        message: this.dico.messages.success\n                    }\n                    this.isLoading = false\n                    this.track()\n                })\n                .catch((error) => {\n                    this.feedback = {\n                        status: 'error',\n                        message: this.dico.messages.error.replace('{error}', error.message)\n                    }\n                    this.isLoading = false\n                })\n        },\n        initializeData () {\n            this.form = Object\n                .keys(this.dico.fields)\n                .reduce(\n                    (fields, fieldName) => ({ ...fields, [fieldName]: '' }), {}\n                )\n            this.form.comment = this.message\n        },\n        configureValidation (config) {\n            extend('email', { ...email, message: this.dico.fields.emailAddress.error })\n            extend('regex-city', { ...regex, message: this.dico.fields.city.error })\n            extend('regex-name', { ...regex, message: this.dico.fields.firstName.error })\n            extend('regex-phone', { ...regex, message: this.dico.fields.phoneNumber.error })\n            extend('regex-zipcode', { ...regex, message: this.dico.fields.zipCode.error })\n            extend('regex-postcode', { ...regex, message: this.dico.fields.zipCode.error })\n            extend('required', { ...required, message: config.required })\n        },\n        track () {\n            Tracking.customEvent({\n                category: 'User Engagement',\n                action: 'Click',\n                label: `${this.$landing.trackingLabelPrefix} - Lead`,\n                interaction: 0\n            })\n        },\n        isRequired (field) {\n            return {\n                ...field.required && {\n                    required: 'required'\n                }\n            }\n        },\n        regex (field) {\n            if (!field.regex || field.regex.name === '') {\n                return {}\n            }\n            const rules = field.type === 'checkbox' && field.required\n                ? { required: { allowFalse: false } }\n                : { [`regex-${field.regex.name.trim().toLowerCase()}`]: new RegExp(field.regex.rule) }\n\n            return { rules }\n        },\n        back () {\n            this.$store.commit('toggleForm', false)\n        }\n    }\n}\n</script>\n\n<style lang=\"sass\" scoped>\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n@import LeadForm\n\n.g\n    .g_btn.submit\n        margin-left: $gap\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeadForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeadForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LeadForm.vue?vue&type=template&id=b5fb17a0&scoped=true&\"\nimport script from \"./LeadForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LeadForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LeadForm.vue?vue&type=style&index=0&id=b5fb17a0&lang=sass&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b5fb17a0\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"highlights\"},_vm._l((_vm.highlights),function(highlight){return _c('li',{key:highlight.title,class:['highlight', { excluded: highlight.excluded }]},[_c('span',{staticClass:\"bullet\"},[_c('visual',{attrs:{\"svg\":_vm.icon}})],1),_c('paragraph',{attrs:{\"size\":\"S\",\"content\":highlight.label}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <ul class=\"highlights\">\n        <li\n            :class=\"['highlight', { excluded: highlight.excluded }]\"\n            :key=\"highlight.title\"\n            v-for=\"highlight in highlights\"\n        >\n            <span class=\"bullet\">\n                <visual :svg=\"icon\"/>\n            </span>\n            <paragraph size=\"S\" :content=\"highlight.label\" />\n        </li>\n    </ul>\n\n</template>\n\n<script>\nimport Paragraph from 'gvue/src/core/Paragraph'\nimport Visual from 'gvue/src/core/Visual'\n\nexport default {\n    name: 'Highlight',\n    props: {\n        highlights: { type: Array, required: true }\n    },\n    components: {\n        Paragraph,\n        Visual\n    },\n    computed: {\n        icon () {\n            return this.$landing.getImgUrl({ folder: 'icons', name: 'icon-list-item', ext: 'svg' })\n        }\n    }\n}\n</script>\n\n<style lang=\"sass\" scoped>\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n\n.highlights\n    list-style-type: none\n    margin: ($gap * 0.75) 0 0 0\n    padding: 0\n\n.highlight\n    display: flex\n    align-items: center\n\n    + .highlight\n        margin-top: 0.75em\n\n    &.excluded\n        opacity: 0.7\n        filter: grayscale(1)\n\n.bullet\n    display: flex\n    align-items: center\n    justify-content: center\n    margin-right: 0.75em\n    padding: 0.25em\n    background-color: $color_action\n    border-radius: 50%\n\n    /deep/\n        svg\n            height: pxToRem(10)\n            width: pxToRem(10)\n            display: block\n            fill: $color_white\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHighlights.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHighlights.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ListHighlights.vue?vue&type=template&id=3c056a76&scoped=true&\"\nimport script from \"./ListHighlights.vue?vue&type=script&lang=js&\"\nexport * from \"./ListHighlights.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ListHighlights.vue?vue&type=style&index=0&id=3c056a76&lang=sass&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3c056a76\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHighlights.vue?vue&type=style&index=0&id=3c056a76&lang=sass&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHighlights.vue?vue&type=style&index=0&id=3c056a76&lang=sass&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('popin',{attrs:{\"close-label\":\"Close\",\"is-open\":_vm.value},on:{\"input\":_vm.onChange}},[_c('div',{staticClass:\"figure\"},[(_vm.imgURL && !_vm.isForcingPopinImage())?_c('img',{attrs:{\"src\":_vm.imgURL()}}):(_vm.isForcingPopinImage())?_c('visual',{attrs:{\"src\":_vm.images.forcedSameMachinePopin}}):(_vm.isFromApi && !_vm.forceImage && !_vm.isForcingPopinImage())?_c('img',{attrs:{\"src\":_vm.images.machine}}):_c('img',{attrs:{\"src\":_vm.images.machine}})],1),_c('div',{staticClass:\"caption\"},[_c('heading',{attrs:{\"level\":3},domProps:{\"innerHTML\":_vm._s(_vm.solution.popin.title)}}),_c('paragraph',{attrs:{\"size\":\"S\"},domProps:{\"innerHTML\":_vm._s(_vm.solution.popin.introduction)}}),_c('list-highlights',{attrs:{\"highlights\":_vm.solution.popin.highlights}}),_c('heading',{attrs:{\"level\":5}},[_c('visual',{attrs:{\"src\":_vm.images.package}}),_vm._v(\" \"+_vm._s(_vm.solution.popin.package.title)+\" \")],1),_c('list-highlights',{attrs:{\"highlights\":_vm.solution.popin.package.highlights}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <popin\n        close-label=\"Close\"\n        :is-open=\"value\"\n        @input=\"onChange\"\n    >\n        <div class=\"figure\">\n            <img v-if=\"imgURL && !isForcingPopinImage()\" :src=\"imgURL()\"/>\n            <visual v-else-if=\"isForcingPopinImage()\" :src=\"images.forcedSameMachinePopin\"/>\n            <img v-else-if=\"isFromApi && !forceImage && !isForcingPopinImage()\" :src=\"images.machine\"/>\n            <img v-else :src=\"images.machine\"/>\n        </div>\n\n        <div class=\"caption\">\n            <heading :level=\"3\" v-html=\"solution.popin.title\" />\n            <paragraph size=\"S\" v-html=\"solution.popin.introduction\" />\n            <list-highlights :highlights=\"solution.popin.highlights\" />\n            <heading :level=\"5\">\n                <visual :src=\"images.package\" />\n                {{ solution.popin.package.title }}\n            </heading>\n            <list-highlights :highlights=\"solution.popin.package.highlights\" />\n        </div>\n    </popin>\n</template>\n\n<script>\nimport Nespresso from 'nespresso-library/src/core/api'\nimport Heading from 'gvue/src/core/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph'\nimport Popin from 'gvue/src/core/Popin'\nimport ListHighlights from '@/components/list/ListHighlights'\n\nexport default {\n    name: 'SolutionPreferredPopin',\n    components: {\n        Heading,\n        Paragraph,\n        Popin,\n        ListHighlights\n    },\n    props: {\n        solution: { type: Object, required: true },\n        value: { type: Boolean, default: false }\n    },\n    computed: {\n        images () {\n            return {\n                package: { folder: 'visuals', name: this.solution.popin.visual, ext: 'png' },\n                machine: (!this.forceImage && this.isFromApi)\n                    ? this.apiProduct.responsiveImages.standard\n                    : { folder: 'visuals', name: this.solution.machine.image, ext: 'png' },\n                forcedSameMachinePopin: { folder: 'visuals', name: this.solution.machine.image, ext: 'png' }\n            }\n        },\n        isFromApi () {\n            return this.apiProduct !== null\n        },\n        forceImage () {\n            return this.solution.machine.image\n        }\n    },\n    data () {\n        return {\n            isOpened: this.open,\n            apiProduct: null\n        }\n    },\n    async created () {\n        const api = new Nespresso()\n        const sku = this.solution.machine.sku\n        if (sku) {\n            this.apiProduct = await api.getProduct(sku)\n        }\n        this.config = this.$json.config\n    },\n    methods: {\n        isForcingPopinImage () {\n            return this.solution.machine.forceImagePopin\n        },\n        imgURL () {\n            const popImg = window.sessionStorage.getItem('popinImg')\n            if (popImg !== null) {\n                return popImg\n            }\n            return false\n        },\n        onChange (value) {\n            this.$emit('input', value)\n        }\n    }\n}\n</script>\n\n<style lang=\"sass\" scoped>\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n\n.g\n    .g_popin\n        /deep/\n            .g_popinContent\n                background-color: white\n                padding: ($gap * 4.5) ($gap * 2) ($gap * 2)\n\n    .g_h3\n        margin: 0\n\n    .g_h5\n        margin: ($gap * 1.5) 0 0 0\n\n        img\n            margin-right: 0.25em\n            position: relative\n            top: 0.125em\n            height: 1.25em\n            width: auto\n\n    .g_txt_S\n        margin: ($gap * 0.5) 0 0\n        max-width: 25em\n\n.figure\n    img\n        margin: 0 auto\n        max-height: 20em\n        max-width: 14em\n\n.caption\n    flex-basis: 60%\n    text-align: left\n\n.terms\n    margin-top: ($gap * 2)\n    padding-top: ($gap * 2)\n    border-top: 1px solid $color_border\n    opacity: 0.5\n\n/deep/\n    .bullet\n        background-color: currentColor\n\n    .highlights\n        margin-top: $gap\n        font-size: 0.875em\n\n        .g_wysiwyg\n            margin: 0\n\n+mobile\n    .figure\n        text-align: center\n        height: 15em\n        img\n            max-height: 15em\n            min-height: 100%\n\n    .g\n        .g_popin\n            /deep/\n                .g_popinContent\n                    height: 100%\n\n+desktop\n    .figure\n        flex-basis: 40%\n        flex-shrink: 0\n        img\n            display: block\n            height: 100%\n            width: 100%\n            object-fit: contain\n\n    .g\n        .g_popin\n            /deep/\n                .g_popinRestrict\n                    width: 50em\n                    min-width: 50em\n                    height: auto\n                    max-height: none\n                    border-radius: 5px\n\n                .g_popinContent\n                    border-radius: 5px\n                    padding: ($gap * 3) ($gap * 4) ($gap * 3) 0\n                    display: flex\n\n@media all and (-ms-high-contrast:none)\n    .figure\n        img\n            height: auto\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SolutionPreferredPopin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SolutionPreferredPopin.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SolutionPreferredPopin.vue?vue&type=template&id=224d7bde&scoped=true&\"\nimport script from \"./SolutionPreferredPopin.vue?vue&type=script&lang=js&\"\nexport * from \"./SolutionPreferredPopin.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SolutionPreferredPopin.vue?vue&type=style&index=0&id=224d7bde&lang=sass&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"224d7bde\",\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}