File: D:/HostingSpaces/SBogers95/rentman.io/wwwroot/js/site/createPlan.js.map
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/assets/js/components/createPlan.vue","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./resources/assets/js/components/productPopUp.vue?ba91","webpack:///resources/assets/js/components/productPopUp.vue","webpack:///./resources/assets/js/components/productPopUp.vue","webpack:///./resources/assets/js/components/singleProduct.vue?2e92","webpack:///resources/assets/js/components/singleProduct.vue","webpack:///./resources/assets/js/components/singleProduct.vue","webpack:///./resources/assets/js/components/cartProduct.vue?7e23","webpack:///resources/assets/js/components/cartProduct.vue","webpack:///./resources/assets/js/components/cartProduct.vue","webpack:///./resources/assets/js/components/openCloseProducts.vue?2f74","webpack:///resources/assets/js/components/openCloseProducts.vue","webpack:///./resources/assets/js/components/openCloseProducts.vue","webpack:///./resources/assets/js/components/createPlan.vue?3794","webpack:///resources/assets/js/components/createPlan.vue","webpack:///./resources/assets/js/createPlan/app.js","webpack:///./resources/assets/js/createPlan/mixins.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","props","active","type","required","product","mounted","modalHeader","modalThead","computed","features","row","columns","_vm","_c","_self","staticClass","class","on","$event","$emit","_v","ref","_s","translation","levels","length","_l","level","attrs","getCurrencyIcon","getPrice","trans","_e","rIndex","cIndex","components","ProductPopUp","mixins","data","amount","popupOpened","cartState","created","methods","updateCartState","toggleProduct","addProduct","id","removeProduct","setLevel","cartProduct","setAmount","changeAmount","incrementAmount","decrementAmount","openPopup","history","closePopup","productCart","isAddon","isLevels","showCta","isInShoppingCart","price","parentProductIsSelected","primaryProductSelected","requiresPrimary","pricing_product_icon","equipmentSchedulingSelected","requiresEquipmentScheduling","requiresEquipmentSchedulingPro","price_per_warehouse","description","specs","spec","equipmentSchedulingProSelected","includes","domProps","index","displayCorrectCurrency","pricePerWarehouse","pricing","pricing_product_type","containerOpen","toggleContainer","_t","OpenCloseProducts","CartProduct","SingleProduct","watch","productsInCart","powerUsers","updateProducts","changeCurrency","getPriceEachPowerUser","total_euro","total_dollar","getTotalPrice","each_power_user_euro","each_power_user_dollar","changePowerUsersAmount","getProductById","scrollToSummary","behavior","coreProduct","euro_price","dollar_price","selectableProducts","refInFor","hinted_products","hintedProduct","powerUserLimit","createPlanEl","document","querySelector","productData","getAttribute","Error","removeAttribute","primaryProductIds","productIdsRequiredPrimary","productIdsRequiredEquipmentScheduling","productIdsRequiredEquipmentSchedulingPro","removableProductIds","Set","products","values","JSON","parse","forEach","split","hintedProducts","productId","find","undefined","splice","hasParentProduct","parentProduct","push","parseInt","map","filter","has","Vue","mixin","require","el","CreatePlan","translations","window","rentman","currencyEuro","hasAddons","hasAddon","hasPrimaryProduct","hasSchedulingPro","deep","handler","isset","obj","euro","dollar","substr","slugify","str","replace","toLowerCase","from","RegExp","charAt","returnKey","console","warn","keys","resolvedKeyCounter","replaceKeys","log"],"mappings":"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","file":"/js/site/createPlan.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"create-plan\"},[_c('div',{staticClass:\"create-plan__main\"},[_c('div',{staticClass:\"c-switch\"},[_c('input',{staticClass:\"c-switch__input\",attrs:{\"id\":\"switch-create-plan-1\",\"type\":\"checkbox\"},on:{\"change\":_vm.changeCurrency}}),_vm._v(\" \"),_c('label',{staticClass:\"c-switch__label\",attrs:{\"for\":\"switch-create-plan-1\",\"data-checked\":\"EUR\",\"data-unchecked\":\"USD\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"u-margin-top-32 create-plan__core-product\"},[_c('h3',{staticClass:\"create-plan__subtitle\"},[_vm._v(_vm._s(this.$root.coreProduct.translation.name))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.displayCorrectCurrency(this.$root.coreProduct.euro_price, this.$root.coreProduct.dollar_price))+\" / \"+_vm._s(_vm.trans('month')))]),_vm._v(\" \"),_c('p',{staticClass:\"create-plan__description u-margin-top-16\"},[_vm._v(_vm._s(this.$root.coreProduct.translation.description))]),_vm._v(\" \"),_c('ul',{staticClass:\"create-plan__checks\"},_vm._l((this.$root.coreProduct.translation.specs),function(spec){return _c('li',[_vm._v(_vm._s(spec))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__read-more create-plan__read-more--nm\",on:{\"click\":_vm.openPopup}},[_vm._v(_vm._s(_vm.trans('see_features'))+\" \"),_c('span')])]),_vm._v(\" \"),_c('product-pop-up',{attrs:{\"active\":_vm.popupOpened,\"product\":this.$root.coreProduct},on:{\"close\":_vm.closePopup}}),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),_c('h5',{staticClass:\"create-plan__title\"},[_vm._v(_vm._s(_vm.trans('products')))]),_vm._v(\" \"),_c('h3',{staticClass:\"u-margin-top-32 create-plan__subtitle\"},[_vm._v(_vm._s(_vm.trans('products_subtitle_text')))]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__product-container\"},[_vm._l((this.$root.selectableProducts),function(product){return [_c('single-product',{ref:\"product\",refInFor:true,attrs:{\"product\":product}}),_vm._v(\" \"),(product.hinted_products.length > 0)?_c('open-close-products',{attrs:{\"name\":product.translation.name}},[_vm._l((product.hinted_products),function(hintedProduct){return [_c('single-product',{ref:\"product\",refInFor:true,attrs:{\"product\":hintedProduct}})]})],2):_vm._e()]})],2)],1),_vm._v(\" \"),_c('div',{ref:\"sidebar\",staticClass:\"create-plan__sidebar\"},[_c('div',{staticClass:\"create-plan__heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.trans('summary'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__cart-overview\"},[_c('div',{staticClass:\"create-plan__cart-product\"},[_c('strong',[_vm._v(_vm._s(_vm.trans('rentman_title')))]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__cart-label\"},[_c('span',[_vm._v(_vm._s(_vm.displayCorrectCurrency(_vm.$root.coreProduct.euro_price, _vm.$root.coreProduct.dollar_price)))]),_vm._v(\" / \"+_vm._s(_vm.trans('month'))+\"\\n \")])]),_vm._v(\" \"),_vm._l((_vm.$root.productsInCart),function(cartState){return [_c('cart-product',{attrs:{\"price-per-warehouse\":_vm.getProductById(cartState.id).price_per_warehouse == 1,\"product\":_vm.getProductById(cartState.id),\"cart-state\":cartState}})]}),_vm._v(\" \"),(!_vm.productsInCart.length > 0)?_c('p',{staticClass:\"create-plan__cart-label\"},[_vm._v(_vm._s(_vm.trans('add_products')))]):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__footer footer-row\"},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.trans('power_users'))+\"\\n \"),_c('span',{staticClass:\"c-tooltip c-tooltip--dark-pop-up js-pricing-prevent-click\",attrs:{\"data-tooltip\":_vm.trans('power_user_tooltip')}})]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan--small-label\"},[_vm._v(\" \"+_vm._s(_vm.getPriceEachPowerUser())+\" \"+_vm._s(_vm.trans('power_user'))+\" / \"+_vm._s(_vm.trans('month')))])]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan-product__numbers\",class:{'c-tooltip c-tooltip--element c-tooltip--dark-pop-up c-tooltip--small': !_vm.productsInCart.length > 0},attrs:{\"data-tooltip\":_vm.trans('add_product_first')}},[_c('button',{attrs:{\"disabled\":!_vm.productsInCart.length > 0},on:{\"click\":function($event){_vm.$root.powerUsers++}}},[_vm._v(\"+\")]),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"number\",\"min\":\"1\",\"disabled\":!_vm.productsInCart.length > 0},domProps:{\"value\":_vm.$root.powerUsers},on:{\"change\":_vm.changePowerUsersAmount}}),_vm._v(\" \"),_c('button',{attrs:{\"disabled\":_vm.$root.powerUsers === 1 || !_vm.productsInCart.length > 0},on:{\"click\":function($event){_vm.$root.powerUsers--}}},[_vm._v(\"-\")])])]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__footer footer-row create-plan__footer--no-bt\"},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.trans('basic_users'))+\"\\n \"),_c('span',{staticClass:\"c-tooltip c-tooltip--dark-pop-up js-pricing-prevent-click\",attrs:{\"data-tooltip\":_vm.trans('basic_user_tooltip')}})]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan--small-label\"},[_vm._v(_vm._s(_vm.trans('always_free')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__footer\"},[_c('div',{staticClass:\"footer-subtotal\"},[_c('span',[_vm._v(_vm._s(_vm.trans('platform_fee')))]),_vm._v(\" \"),(this.$root.powerUsers < this.$root.powerUserLimit)?_c('span',[_vm._v(_vm._s(_vm.displayCorrectCurrency(this.$root.coreProduct.euro_price, this.$root.coreProduct.dollar_price)))]):_c('span',[_vm._v(\"--\")])]),_vm._v(\" \"),_c('div',{staticClass:\"footer-subtotal\"},[_c('span',[_vm._v(_vm._s(_vm.$root.powerUsers)+\" \"+_vm._s(_vm.$root.powerUsers === 1 ? _vm.trans('power_user') : _vm.trans('power_users')))]),_vm._v(\" \"),(this.$root.powerUsers < this.$root.powerUserLimit)?_c('span',[_vm._v(_vm._s(_vm.getPriceEachPowerUser(true)))]):_c('span',[_vm._v(\"--\")])]),_vm._v(\" \"),_c('div',{staticClass:\"footer-total\"},[_c('strong',[_vm._v(_vm._s(_vm.trans('total')))]),_vm._v(\" \"),(this.$root.powerUsers < this.$root.powerUserLimit)?_c('span',[_vm._v(_vm._s(_vm.getTotalPrice()))]):_c('span',[_vm._v(_vm._s(_vm.trans('lets_talk')))])]),_vm._v(\" \"),(this.$root.powerUsers >= this.$root.powerUserLimit)?_c('div',{staticClass:\"custom-plan-notice\"},[_c('h4',[_vm._v(_vm._s(_vm.trans('custom_plan')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.trans('custom_plan_sub')))])]):_vm._e(),_vm._v(\" \"),(this.$root.powerUsers < this.$root.powerUserLimit)?_c('a',{staticClass:\"c-button c-button--filled\",attrs:{\"href\":_vm.trans('try_free_link')}},[_c('span',{staticClass:\"c-button__text\"},[_vm._v(_vm._s(_vm.trans('try_free')))])]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"c-button\",class:{'c-button--filled': this.$root.powerUsers >= this.$root.powerUserLimit},attrs:{\"href\":_vm.trans('speak_expert_link')}},[_c('span',{staticClass:\"c-button__text\"},[_vm._v(_vm._s(_vm.trans('speak_expert')))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__sidebar--mobile\"},[_c('strong',[_vm._v(_vm._s(_vm.trans('total'))+\": \"+_vm._s(_vm.getTotalPrice(false)))]),_vm._v(\" \"),_c('span',{staticClass:\"c-button c-button--filled\",on:{\"click\":_vm.scrollToSummary}},[_c('span',{staticClass:\"c-button__text\"},[_vm._v(_vm._s(_vm.trans('see_summary')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__scroll-up\"},[_c('span',{on:{\"click\":_vm.scrollToSummary}},[_vm._v(_vm._s(_vm.trans('price_breakdown')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./productPopUp.vue?vue&type=template&id=7a5ddb4d&\"\nimport script from \"./productPopUp.vue?vue&type=script&lang=js&\"\nexport * from \"./productPopUp.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","<template>\n\n <div class=\"o-modal\" :class=\"{'is-active': active}\">\n <div class=\"o-modal__shader\" @click=\"$emit('close')\"></div>\n <div class=\"o-modal__content js-modal-scroller\">\n <div class=\"o-modal__header\" ref=\"modalHeader\">\n <h2 class=\"o-modal__heading\" style=\"\">{{ product.translation.name }}</h2>\n <button class=\"o-modal__close\" @click=\"$emit('close')\"></button>\n </div>\n\n <table class=\"o-modal__table\">\n <thead class=\"o-modal__thead\" v-if=\"product.levels.length > 0\" ref=\"modalThead\">\n <tr>\n <th class=\"o-modal__thead-cell\"></th>\n\n <th class=\"o-modal__thead-cell\" v-for=\"level in product.levels\">\n <div class=\"c-package-price\">\n\n <h3 class=\"c-package-price__title\">{{ level[0] }}</h3>\n\n <div class=\"c-package-price__amount c-package-price__symbol\" v-bind:data-currency-symbol=\"getCurrencyIcon()\">\n <div class=\"c-package-price__number\">{{ getPrice(level[1],level[2]) }}</div>\n </div>\n <div class=\"c-package-price__info\">\n <p>\n <span>{{trans('per')}}</span>\n <span class=\"c-tooltip c-tooltip--text c-tooltip--dark-pop-up\" v-bind:data-tooltip=\"trans('power_user_tooltip')\">{{trans('power_user')}}</span>\n <span>/</span>\n <span>{{trans('month')}}</span>\n </p>\n<!-- <p>-->\n<!-- <span>+</span>-->\n<!-- <span class=\"c-package-price__base js-pricing-price js-pricing-symbol\" data-currency-symbol=\"€\" data-price-eur=\"39\" data-price-usd=\"39\">39</span>-->\n<!-- <span>base price</span>-->\n<!-- </p>-->\n </div>\n\n </div>\n </th>\n </tr>\n </thead>\n\n <tbody class=\"o-modal__tbody\" v-if=\"features\">\n <tr v-for=\"rIndex in features[0].length\" :key=\"rIndex\">\n\n <td v-if=\"features[2][rIndex - 1] == 1\" v-bind:colspan=\"features.length\">\n <div class=\"o-modal__table-subheader\">\n <span>{{ features[0][rIndex - 1] }}</span>\n </div>\n </td>\n\n <template v-else>\n\n <td class=\"o-modal__tbody-cell\">\n <div class=\"o-modal__label-column\">\n {{ features[0][rIndex - 1] }}\n <span v-if=\"features[1][rIndex - 1] != '' && rIndex != 2\" :data-tooltip=\"features[1][rIndex - 1]\"\n class=\"c-tooltip c-tooltip--dark-pop-up c-tooltip--modal\"></span>\n <span v-if=\"features[1][rIndex - 1] != '' && rIndex == 2\" :data-tooltip=\"features[1][rIndex - 1]\"\n class=\"c-tooltip c-tooltip--dark-pop-up c-tooltip--modal c-tooltip--modal--bottom\"></span>\n </div>\n </td>\n\n <td class=\"o-modal__tbody-cell\" v-for=\"cIndex in features.length - 3\" :key=\"cIndex\">\n <div class=\"o-modal__feature-icon\" :class=\"{ 'is-excluded': features[cIndex + 2][rIndex - 1] == 0 }\"></div>\n </td>\n\n </template>\n\n </tr>\n </tbody>\n\n </table>\n </div>\n </div>\n\n</template>\n\n<script>\nexport default {\n name: \"productPopUp\",\n props: {\n active: {\n type: Boolean,\n required: true\n },\n product: {\n type: Object,\n required: true,\n }\n },\n\n mounted() {\n // stacked sticky elements, 2nd element has top offset of 1st element's height\n const { modalHeader, modalThead } = this.$refs;\n if (modalThead) { modalThead.style.top = `${modalHeader.clientHeight}px` }\n },\n\n computed: {\n\n features() {\n\n if(this.product.translation.features == '') return null\n const features = JSON.parse(this.product.translation.features)\n\n if(!features) return null\n\n const columns = []\n\n features.forEach((row) => {\n row.forEach((column, index) => {\n if(columns[index] === undefined) columns[index] = []\n columns[index].push(column)\n })\n });\n\n if(this.product.levels.length <= 1) columns.splice(-2,2)\n else if(this.product.levels.length === 2) columns.splice(-1, 1)\n\n return columns;\n }\n }\n}\n</script>","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"o-modal\",class:{'is-active': _vm.active}},[_c('div',{staticClass:\"o-modal__shader\",on:{\"click\":function($event){return _vm.$emit('close')}}}),_vm._v(\" \"),_c('div',{staticClass:\"o-modal__content js-modal-scroller\"},[_c('div',{ref:\"modalHeader\",staticClass:\"o-modal__header\"},[_c('h2',{staticClass:\"o-modal__heading\"},[_vm._v(_vm._s(_vm.product.translation.name))]),_vm._v(\" \"),_c('button',{staticClass:\"o-modal__close\",on:{\"click\":function($event){return _vm.$emit('close')}}})]),_vm._v(\" \"),_c('table',{staticClass:\"o-modal__table\"},[(_vm.product.levels.length > 0)?_c('thead',{ref:\"modalThead\",staticClass:\"o-modal__thead\"},[_c('tr',[_c('th',{staticClass:\"o-modal__thead-cell\"}),_vm._v(\" \"),_vm._l((_vm.product.levels),function(level){return _c('th',{staticClass:\"o-modal__thead-cell\"},[_c('div',{staticClass:\"c-package-price\"},[_c('h3',{staticClass:\"c-package-price__title\"},[_vm._v(_vm._s(level[0]))]),_vm._v(\" \"),_c('div',{staticClass:\"c-package-price__amount c-package-price__symbol\",attrs:{\"data-currency-symbol\":_vm.getCurrencyIcon()}},[_c('div',{staticClass:\"c-package-price__number\"},[_vm._v(_vm._s(_vm.getPrice(level[1],level[2])))])]),_vm._v(\" \"),_c('div',{staticClass:\"c-package-price__info\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.trans('per')))]),_vm._v(\" \"),_c('span',{staticClass:\"c-tooltip c-tooltip--text c-tooltip--dark-pop-up\",attrs:{\"data-tooltip\":_vm.trans('power_user_tooltip')}},[_vm._v(_vm._s(_vm.trans('power_user')))]),_vm._v(\" \"),_c('span',[_vm._v(\"/\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.trans('month')))])])])])])})],2)]):_vm._e(),_vm._v(\" \"),(_vm.features)?_c('tbody',{staticClass:\"o-modal__tbody\"},_vm._l((_vm.features[0].length),function(rIndex){return _c('tr',{key:rIndex},[(_vm.features[2][rIndex - 1] == 1)?_c('td',{attrs:{\"colspan\":_vm.features.length}},[_c('div',{staticClass:\"o-modal__table-subheader\"},[_c('span',[_vm._v(_vm._s(_vm.features[0][rIndex - 1]))])])]):[_c('td',{staticClass:\"o-modal__tbody-cell\"},[_c('div',{staticClass:\"o-modal__label-column\"},[_vm._v(\"\\n \"+_vm._s(_vm.features[0][rIndex - 1])+\"\\n \"),(_vm.features[1][rIndex - 1] != '' && rIndex != 2)?_c('span',{staticClass:\"c-tooltip c-tooltip--dark-pop-up c-tooltip--modal\",attrs:{\"data-tooltip\":_vm.features[1][rIndex - 1]}}):_vm._e(),_vm._v(\" \"),(_vm.features[1][rIndex - 1] != '' && rIndex == 2)?_c('span',{staticClass:\"c-tooltip c-tooltip--dark-pop-up c-tooltip--modal c-tooltip--modal--bottom\",attrs:{\"data-tooltip\":_vm.features[1][rIndex - 1]}}):_vm._e()])]),_vm._v(\" \"),_vm._l((_vm.features.length - 3),function(cIndex){return _c('td',{key:cIndex,staticClass:\"o-modal__tbody-cell\"},[_c('div',{staticClass:\"o-modal__feature-icon\",class:{ 'is-excluded': _vm.features[cIndex + 2][rIndex - 1] == 0 }})])})]],2)}),0):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./singleProduct.vue?vue&type=template&id=70f03559&\"\nimport script from \"./singleProduct.vue?vue&type=script&lang=js&\"\nexport * from \"./singleProduct.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"create-plan-product\" :class=\"[isInShoppingCart ? 'create-plan-product__in-cart' : '', !this.$root.primaryProductSelected && product.requiresPrimary ? 'is-disabled' : '' ]\" v-bind:data-icon=\"product.pricing_product_icon\">\n\n <div class=\"c-announcements__item\" v-if=\"!this.$root.primaryProductSelected && product.requiresPrimary\">\n <div class=\"c-announcements__message c-announcements__message--pricing\">\n {{trans('available_with_equipment_scheduling_or_crew_scheduling')}}\n </div>\n </div>\n\n <div class=\"c-announcements__item\" v-else-if=\"!this.$root.equipmentSchedulingSelected && product.requiresEquipmentScheduling\">\n <div class=\"c-announcements__message c-announcements__message--pricing\">\n {{trans('available_with_equipment_scheduling')}}\n </div>\n </div>\n\n <div class=\"c-announcements__item\" v-else-if=\"!this.$root.equipmentSchedulingSelected && product.requiresEquipmentSchedulingPro\">\n <div class=\"c-announcements__message c-announcements__message--pricing\">\n {{trans('available_with_equipment_scheduling_pro')}}\n </div>\n </div>\n\n <div class=\"create-plan-product__inner\">\n\n\n <div class=\"create-plan-product__icon\"></div>\n <div class=\"create-plan-product__meta\">\n\n <span v-if=\"!isAddon && !isLevels\" class=\"create-plan-product__label\">{{ trans('product') }}</span>\n <span v-else class=\"create-plan-product__label\">{{ trans('additional_product') }}</span>\n\n <strong>{{ product.translation.name }}</strong>\n\n <template v-if=\"product.levels.length === 0\">\n <p v-if=\"(price !== null)\">{{ price }}\n <span v-if=\"product.price_per_warehouse === 0\">{{ trans('per_month') }}</span>\n <span v-if=\"product.price_per_warehouse === 1\">{{ trans('power_user_warehouse_month') }}</span>\n </p>\n </template>\n\n <p v-if=\"product.translation.description !== ''\">{{ product.translation.description }}</p>\n\n <ul v-if=\"product.specs && product.specs.length > 0\" class=\"create-plan__checks\">\n <li v-for=\"spec in product.specs\" v-if=\"spec.length > 0\">{{spec[0]}}</li>\n </ul>\n <div @click=\"openPopup\" v-if=\"showCta && product.translation.features && product.levels.length === 0\" class=\"create-plan__read-more\">{{ trans('read_more') }} <span></span></div>\n\n </div>\n\n <!-- Additional warehouse -->\n <div class=\"create-plan-product__button create-plan-product__button--suite\" :class=\"{ 'disabled' : !this.$root.equipmentSchedulingProSelected}\" v-if=\"product.requiresEquipmentSchedulingPro\">\n <div class=\"create-plan-product__tooltip\" v-if=\"[8].includes(product.id)\">\n {{trans('available_with_equipment_scheduling_pro')}}\n </div>\n\n <template v-if=\"isAddon\">\n <button type=\"button\" value=\"add product\" @click=\"toggleProduct\" :class=\"{'hidden': isInShoppingCart}\">\n <div></div>\n {{ isInShoppingCart ? trans('added') : trans('add') }}\n </button>\n <div class=\"create-plan-product__numbers\" v-if=\"isInShoppingCart\">\n <button @click=\"incrementAmount\">+</button>\n <input type=\"number\" min=\"0\" :value=\"cartState.amount\" @change=\"changeAmount\">\n <button @click=\"decrementAmount\">-</button>\n </div>\n </template>\n\n <template v-else>\n <button type=\"button\" value=\"add product\" @click=\"toggleProduct\" :class=\"{'active': isInShoppingCart}\">\n <div></div>\n {{ isInShoppingCart ? trans('added') : trans('add') }}\n </button>\n </template>\n </div>\n\n <div v-else class=\"create-plan-product__button create-plan-product__button--suite\" :class=\"{ 'disabled' : !this.$root.primaryProductSelected && product.requiresPrimary || parentProductIsSelected }\">\n\n <!-- Equipment Tracking -->\n <div class=\"create-plan-product__tooltip\" v-if=\"[3].includes(product.id)\">\n {{trans('available_with_equipment_scheduling')}}\n </div>\n\n <!-- Quoting & Invoicing -->\n <div class=\"create-plan-product__tooltip\" v-if=\"[5].includes(product.id)\">\n {{trans('available_with_equipment_scheduling_or_crew_scheduling')}}\n </div>\n\n <template v-if=\"isAddon\">\n <button type=\"button\" value=\"add product\" @click=\"toggleProduct\" :class=\"{'hidden': isInShoppingCart}\">\n <div></div>\n {{ isInShoppingCart ? trans('added') : trans('add') }}\n </button>\n <div class=\"create-plan-product__numbers\" v-if=\"isInShoppingCart\">\n <button @click=\"incrementAmount\">+</button>\n <input type=\"number\" min=\"0\" :value=\"cartState.amount\" @change=\"changeAmount\">\n <button @click=\"decrementAmount\">-</button>\n </div>\n </template>\n\n <template v-else>\n <button type=\"button\" value=\"add product\" @click=\"toggleProduct\" :class=\"{'active': isInShoppingCart}\">\n <div></div>\n {{ isInShoppingCart ? trans('added') : trans('add') }}\n </button>\n </template>\n </div>\n\n </div>\n\n <template v-if=\"product.levels.length > 0\">\n\n <div class=\"create-plan-product__levels\">\n <div v-for=\"(level, index) in product.levels\" @click=\"setLevel(index)\" class=\"create-plan-product__level\" :class=\"{'selected': isInShoppingCart && cartState.level == index}\">\n <strong>{{level[0]}}</strong>\n <span>{{ displayCorrectCurrency(level[1], level[2]) }} {{ trans('power_user') }} <br>\n / {{trans('month')}}\n </span>\n </div>\n </div>\n\n <div v-if=\"showCta\" @click=\"openPopup\" class=\"create-plan__read-more\">{{ trans('compare') }} <span></span></div>\n\n </template>\n\n <product-pop-up :active=\"popupOpened\" v-on:close=\"closePopup\" :product=\"product\"></product-pop-up>\n\n </div>\n</template>\n\n<script>\n\nimport mixin from './../createPlan/mixins'\nimport ProductPopUp from \"./productPopUp\";\n\nexport default {\n name: \"singleProduct\",\n components: {ProductPopUp},\n mixins: [mixin],\n props: {\n product: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n amount: 1,\n popupOpened: false,\n cartState: null\n }\n },\n\n created() {\n if(window.location.hash === '#' + this.slugify(this.product.translation.name)) this.popupOpened = true;\n },\n\n methods: {\n\n updateCartState() {\n this.cartState = this.$root.productsInCart.find((p) => p.id == this.product.id)\n\n if(this.cartState === undefined) this.cartState = null;\n },\n\n toggleProduct () {\n if(this.isInShoppingCart) this.removeProduct()\n else this.addProduct()\n },\n\n addProduct (level = null) {\n if(this.product.levels.length > 0 && level === null) level = 0\n this.$root.productsInCart.push({id: this.product.id, level: level, amount: 1})\n this.updateCartState()\n },\n\n removeProduct() {\n this.$root.productsInCart = this.$root.productsInCart.filter(p => p.id != this.product.id)\n\n if (this.product.hinted_products.length > 0) {\n this.product.hinted_products.forEach((hintedProduct) => {\n this.$root.productsInCart = this.$root.productsInCart.filter(p => p.id !== hintedProduct.id)\n })\n }\n this.updateCartState()\n },\n\n setLevel(level) {\n\n if(!this.isInShoppingCart) {\n this.addProduct(level)\n return\n }\n\n const cartProduct = this.$root.productsInCart.find(p => p.id == this.product.id)\n cartProduct.level = level\n\n this.updateCartState()\n },\n\n setAmount(amount) {\n const cartProduct = this.$root.productsInCart.find(p => p.id == this.product.id)\n cartProduct.amount = amount\n\n this.updateCartState()\n },\n\n changeAmount (event) {\n const amount = parseInt(event.target.value)\n\n if (amount === 0) this.removeProduct()\n else this.setAmount(amount)\n },\n incrementAmount() {\n let amount = this.cartState.amount + 1\n\n if (amount === 0) this.removeProduct()\n else this.setAmount(amount)\n },\n decrementAmount() {\n let amount = this.cartState.amount - 1\n\n if (amount === 0) this.removeProduct()\n else this.setAmount(amount)\n },\n\n openPopup() {\n history.replaceState(\"\", document.title, window.location.pathname + '#' + this.slugify(this.product.translation.name));\n this.popupOpened = true\n },\n\n closePopup() {\n history.replaceState(\"\", document.title, window.location.pathname);\n this.popupOpened = false\n }\n\n },\n computed: {\n\n productCart() {\n this.$root.productsInCart.find((p) => p.id == this.product.id)\n },\n\n isAddon() {\n return this.product.pricing_product_type === 'addon';\n },\n\n isLevels() {\n return this.product.pricing_product_type === 'levels';\n },\n\n showCta() {\n return this.product.show_cta === 1;\n },\n\n isInShoppingCart() {\n return this.cartState !== null;\n },\n\n price() {\n return this.displayCorrectCurrency(this.product.euro_price, this.product.dollar_price)\n },\n\n parentProductIsSelected() {\n if (this.product.parentProduct !== undefined) {\n if (this.$root.productsInCart.find((p) => p.id === this.product.parentProduct)) return false\n return true\n } else {\n return false\n }\n // return this.product.hasParentProduct;\n }\n\n }\n}\n</script>","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"create-plan-product\",class:[_vm.isInShoppingCart ? 'create-plan-product__in-cart' : '', !this.$root.primaryProductSelected && _vm.product.requiresPrimary ? 'is-disabled' : '' ],attrs:{\"data-icon\":_vm.product.pricing_product_icon}},[(!this.$root.primaryProductSelected && _vm.product.requiresPrimary)?_c('div',{staticClass:\"c-announcements__item\"},[_c('div',{staticClass:\"c-announcements__message c-announcements__message--pricing\"},[_vm._v(\"\\n \"+_vm._s(_vm.trans('available_with_equipment_scheduling_or_crew_scheduling'))+\"\\n \")])]):(!this.$root.equipmentSchedulingSelected && _vm.product.requiresEquipmentScheduling)?_c('div',{staticClass:\"c-announcements__item\"},[_c('div',{staticClass:\"c-announcements__message c-announcements__message--pricing\"},[_vm._v(\"\\n \"+_vm._s(_vm.trans('available_with_equipment_scheduling'))+\"\\n \")])]):(!this.$root.equipmentSchedulingSelected && _vm.product.requiresEquipmentSchedulingPro)?_c('div',{staticClass:\"c-announcements__item\"},[_c('div',{staticClass:\"c-announcements__message c-announcements__message--pricing\"},[_vm._v(\"\\n \"+_vm._s(_vm.trans('available_with_equipment_scheduling_pro'))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"create-plan-product__inner\"},[_c('div',{staticClass:\"create-plan-product__icon\"}),_vm._v(\" \"),_c('div',{staticClass:\"create-plan-product__meta\"},[(!_vm.isAddon && !_vm.isLevels)?_c('span',{staticClass:\"create-plan-product__label\"},[_vm._v(_vm._s(_vm.trans('product')))]):_c('span',{staticClass:\"create-plan-product__label\"},[_vm._v(_vm._s(_vm.trans('additional_product')))]),_vm._v(\" \"),_c('strong',[_vm._v(_vm._s(_vm.product.translation.name))]),_vm._v(\" \"),(_vm.product.levels.length === 0)?[((_vm.price !== null))?_c('p',[_vm._v(_vm._s(_vm.price)+\"\\n \"),(_vm.product.price_per_warehouse === 0)?_c('span',[_vm._v(_vm._s(_vm.trans('per_month')))]):_vm._e(),_vm._v(\" \"),(_vm.product.price_per_warehouse === 1)?_c('span',[_vm._v(_vm._s(_vm.trans('power_user_warehouse_month')))]):_vm._e()]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.product.translation.description !== '')?_c('p',[_vm._v(_vm._s(_vm.product.translation.description))]):_vm._e(),_vm._v(\" \"),(_vm.product.specs && _vm.product.specs.length > 0)?_c('ul',{staticClass:\"create-plan__checks\"},_vm._l((_vm.product.specs),function(spec){return (spec.length > 0)?_c('li',[_vm._v(_vm._s(spec[0]))]):_vm._e()}),0):_vm._e(),_vm._v(\" \"),(_vm.showCta && _vm.product.translation.features && _vm.product.levels.length === 0)?_c('div',{staticClass:\"create-plan__read-more\",on:{\"click\":_vm.openPopup}},[_vm._v(_vm._s(_vm.trans('read_more'))+\" \"),_c('span')]):_vm._e()],2),_vm._v(\" \"),(_vm.product.requiresEquipmentSchedulingPro)?_c('div',{staticClass:\"create-plan-product__button create-plan-product__button--suite\",class:{ 'disabled' : !this.$root.equipmentSchedulingProSelected}},[([8].includes(_vm.product.id))?_c('div',{staticClass:\"create-plan-product__tooltip\"},[_vm._v(\"\\n \"+_vm._s(_vm.trans('available_with_equipment_scheduling_pro'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isAddon)?[_c('button',{class:{'hidden': _vm.isInShoppingCart},attrs:{\"type\":\"button\",\"value\":\"add product\"},on:{\"click\":_vm.toggleProduct}},[_c('div'),_vm._v(\"\\n \"+_vm._s(_vm.isInShoppingCart ? _vm.trans('added') : _vm.trans('add'))+\"\\n \")]),_vm._v(\" \"),(_vm.isInShoppingCart)?_c('div',{staticClass:\"create-plan-product__numbers\"},[_c('button',{on:{\"click\":_vm.incrementAmount}},[_vm._v(\"+\")]),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":_vm.cartState.amount},on:{\"change\":_vm.changeAmount}}),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.decrementAmount}},[_vm._v(\"-\")])]):_vm._e()]:[_c('button',{class:{'active': _vm.isInShoppingCart},attrs:{\"type\":\"button\",\"value\":\"add product\"},on:{\"click\":_vm.toggleProduct}},[_c('div'),_vm._v(\"\\n \"+_vm._s(_vm.isInShoppingCart ? _vm.trans('added') : _vm.trans('add'))+\"\\n \")])]],2):_c('div',{staticClass:\"create-plan-product__button create-plan-product__button--suite\",class:{ 'disabled' : !this.$root.primaryProductSelected && _vm.product.requiresPrimary || _vm.parentProductIsSelected }},[([3].includes(_vm.product.id))?_c('div',{staticClass:\"create-plan-product__tooltip\"},[_vm._v(\"\\n \"+_vm._s(_vm.trans('available_with_equipment_scheduling'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),([5].includes(_vm.product.id))?_c('div',{staticClass:\"create-plan-product__tooltip\"},[_vm._v(\"\\n \"+_vm._s(_vm.trans('available_with_equipment_scheduling_or_crew_scheduling'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isAddon)?[_c('button',{class:{'hidden': _vm.isInShoppingCart},attrs:{\"type\":\"button\",\"value\":\"add product\"},on:{\"click\":_vm.toggleProduct}},[_c('div'),_vm._v(\"\\n \"+_vm._s(_vm.isInShoppingCart ? _vm.trans('added') : _vm.trans('add'))+\"\\n \")]),_vm._v(\" \"),(_vm.isInShoppingCart)?_c('div',{staticClass:\"create-plan-product__numbers\"},[_c('button',{on:{\"click\":_vm.incrementAmount}},[_vm._v(\"+\")]),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":_vm.cartState.amount},on:{\"change\":_vm.changeAmount}}),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.decrementAmount}},[_vm._v(\"-\")])]):_vm._e()]:[_c('button',{class:{'active': _vm.isInShoppingCart},attrs:{\"type\":\"button\",\"value\":\"add product\"},on:{\"click\":_vm.toggleProduct}},[_c('div'),_vm._v(\"\\n \"+_vm._s(_vm.isInShoppingCart ? _vm.trans('added') : _vm.trans('add'))+\"\\n \")])]],2)]),_vm._v(\" \"),(_vm.product.levels.length > 0)?[_c('div',{staticClass:\"create-plan-product__levels\"},_vm._l((_vm.product.levels),function(level,index){return _c('div',{staticClass:\"create-plan-product__level\",class:{'selected': _vm.isInShoppingCart && _vm.cartState.level == index},on:{\"click\":function($event){return _vm.setLevel(index)}}},[_c('strong',[_vm._v(_vm._s(level[0]))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.displayCorrectCurrency(level[1], level[2]))+\" \"+_vm._s(_vm.trans('power_user'))+\" \"),_c('br'),_vm._v(\"\\n / \"+_vm._s(_vm.trans('month'))+\"\\n \")])])}),0),_vm._v(\" \"),(_vm.showCta)?_c('div',{staticClass:\"create-plan__read-more\",on:{\"click\":_vm.openPopup}},[_vm._v(_vm._s(_vm.trans('compare'))+\" \"),_c('span')]):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('product-pop-up',{attrs:{\"active\":_vm.popupOpened,\"product\":_vm.product},on:{\"close\":_vm.closePopup}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./cartProduct.vue?vue&type=template&id=80473022&scoped=true&\"\nimport script from \"./cartProduct.vue?vue&type=script&lang=js&\"\nexport * from \"./cartProduct.vue?vue&type=script&lang=js&\"\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 \"80473022\",\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"create-plan__cart-product\">\n <div class=\"create-plan__cart-close\" @click=\"removeProduct\"></div>\n <strong>{{ product.translation.name }}</strong>\n <div class=\"create-plan__cart-label\">\n\n <template v-if=\"product.levels.length > 0\">\n <span class=\"cart-level\">{{ product.levels[cartState.level][0] }} - </span>\n <span>{{ displayCorrectCurrency(pricing[0], pricing[1]) }}</span> {{ trans('power_user_month') }}\n </template>\n <template v-else-if=\"pricePerWarehouse\">\n <span class=\"cart-level\">{{cartState.amount}}x - </span>\n <span>{{ displayCorrectCurrency(pricing[0], pricing[1]) }}</span>\n {{ trans('power_user_warehouse_month') }}\n </template>\n <template v-else-if=\"product.pricing_product_type === 'addon'\">\n <span class=\"cart-level\">{{cartState.amount}}x - </span>\n <span>{{ displayCorrectCurrency(pricing[0], pricing[1]) }}</span>\n </template>\n <template v-else>\n <span>{{ displayCorrectCurrency(pricing[0], pricing[1]) }}</span> {{ trans('power_user_month') }}\n </template>\n\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"cartProduct\",\n props: {\n product: {\n type: Object,\n required: true\n },\n cartState: {\n type: Object,\n required: true\n },\n pricePerWarehouse: {\n required: false\n }\n },\n methods: {\n removeProduct() {\n this.$root.productsInCart = this.$root.productsInCart.filter(p => p.id != this.product.id)\n }\n },\n computed: {\n pricing() {\n\n if(this.product.levels.length > 0) {\n const level = this.product.levels[this.cartState.level]\n return [parseFloat(level[1]), parseFloat(level[2])]\n }\n\n return [parseFloat(this.product.euro_price), parseFloat(this.product.dollar_price)]\n }\n }\n}\n</script>\n\n<style scoped>\n\n</style>","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"create-plan__cart-product\"},[_c('div',{staticClass:\"create-plan__cart-close\",on:{\"click\":_vm.removeProduct}}),_vm._v(\" \"),_c('strong',[_vm._v(_vm._s(_vm.product.translation.name))]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan__cart-label\"},[(_vm.product.levels.length > 0)?[_c('span',{staticClass:\"cart-level\"},[_vm._v(_vm._s(_vm.product.levels[_vm.cartState.level][0])+\" - \")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.displayCorrectCurrency(_vm.pricing[0], _vm.pricing[1])))]),_vm._v(\" \"+_vm._s(_vm.trans('power_user_month'))+\"\\n \")]:(_vm.pricePerWarehouse)?[_c('span',{staticClass:\"cart-level\"},[_vm._v(_vm._s(_vm.cartState.amount)+\"x - \")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.displayCorrectCurrency(_vm.pricing[0], _vm.pricing[1])))]),_vm._v(\"\\n \"+_vm._s(_vm.trans('power_user_warehouse_month'))+\"\\n \")]:(_vm.product.pricing_product_type === 'addon')?[_c('span',{staticClass:\"cart-level\"},[_vm._v(_vm._s(_vm.cartState.amount)+\"x - \")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.displayCorrectCurrency(_vm.pricing[0], _vm.pricing[1])))])]:[_c('span',[_vm._v(_vm._s(_vm.displayCorrectCurrency(_vm.pricing[0], _vm.pricing[1])))]),_vm._v(\" \"+_vm._s(_vm.trans('power_user_month'))+\"\\n \")]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./openCloseProducts.vue?vue&type=template&id=8accfbc6&\"\nimport script from \"./openCloseProducts.vue?vue&type=script&lang=js&\"\nexport * from \"./openCloseProducts.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"create-plan-additional-products\" :class=\"{'container-open': containerOpen}\">\n <div class=\"create-plan-additional-products__heading\" @click=\"toggleContainer\">\n {{ trans('additional_products') }} <strong>{{ name }}</strong>\n </div>\n <div class=\"create-plan-additional-products__inner\">\n <slot></slot>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"openCloseProducts\",\n props: {\n name: {\n type: String,\n required: true,\n },\n },\n data() {\n return {\n containerOpen: true\n }\n },\n methods: {\n toggleContainer() {\n this.containerOpen = !this.containerOpen\n }\n }\n}\n</script>","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"create-plan-additional-products\",class:{'container-open': _vm.containerOpen}},[_c('div',{staticClass:\"create-plan-additional-products__heading\",on:{\"click\":_vm.toggleContainer}},[_vm._v(\"\\n \"+_vm._s(_vm.trans('additional_products'))+\" \"),_c('strong',[_vm._v(_vm._s(_vm.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"create-plan-additional-products__inner\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./createPlan.vue?vue&type=template&id=4716c6fe&\"\nimport script from \"./createPlan.vue?vue&type=script&lang=js&\"\nexport * from \"./createPlan.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","<template>\n <div class=\"create-plan\">\n <div class=\"create-plan__main\">\n <div class=\"c-switch\">\n <input class=\"c-switch__input\" id=\"switch-create-plan-1\" type=\"checkbox\" @change=\"changeCurrency\">\n <label class=\"c-switch__label\" for=\"switch-create-plan-1\" data-checked=\"EUR\" data-unchecked=\"USD\">\n </label>\n </div>\n\n <div class=\"u-margin-top-32 create-plan__core-product\">\n <h3 class=\"create-plan__subtitle\">{{ this.$root.coreProduct.translation.name }}</h3>\n <small>{{ displayCorrectCurrency(this.$root.coreProduct.euro_price, this.$root.coreProduct.dollar_price) }} / {{ trans('month') }}</small>\n <p class=\"create-plan__description u-margin-top-16\">{{ this.$root.coreProduct.translation.description }}</p>\n <ul class=\"create-plan__checks\">\n <li v-for=\"spec in this.$root.coreProduct.translation.specs\">{{ spec }}</li>\n </ul>\n\n <div @click=\"openPopup\" class=\"create-plan__read-more create-plan__read-more--nm\">{{ trans('see_features') }} <span></span></div>\n\n </div>\n\n <product-pop-up :active=\"popupOpened\" v-on:close=\"closePopup\" :product=\"this.$root.coreProduct\" />\n\n <hr>\n\n <h5 class=\"create-plan__title\">{{ trans('products') }}</h5>\n <h3 class=\" u-margin-top-32 create-plan__subtitle\">{{ trans('products_subtitle_text') }}</h3>\n<!-- <p>{{ trans('products_subtitle_text') }}</p>-->\n\n <div class=\"create-plan__product-container\">\n <template v-for=\"product in this.$root.selectableProducts\">\n\n <single-product :product=\"product\" ref=\"product\"/>\n\n <open-close-products v-if=\"product.hinted_products.length > 0\" :name=\"product.translation.name\">\n <template v-for=\"hintedProduct in product.hinted_products\">\n <single-product :product=\"hintedProduct\" ref=\"product\"/>\n </template>\n </open-close-products>\n\n </template>\n </div>\n\n\n </div>\n <div class=\"create-plan__sidebar\" ref=\"sidebar\">\n <div class=\"create-plan__heading\">\n {{ trans('summary') }}\n </div>\n\n <div class=\"create-plan__cart-overview\">\n\n <div class=\"create-plan__cart-product\">\n <strong>{{ trans('rentman_title') }}</strong>\n <div class=\"create-plan__cart-label\">\n <span>{{ displayCorrectCurrency($root.coreProduct.euro_price, $root.coreProduct.dollar_price) }}</span> / {{ trans('month') }}\n </div>\n </div>\n\n <template v-for=\"cartState in $root.productsInCart\">\n <cart-product\n :price-per-warehouse=\"getProductById(cartState.id).price_per_warehouse == 1\"\n :product=\"getProductById(cartState.id)\"\n :cart-state=\"cartState\" />\n </template>\n\n <p v-if=\"!productsInCart.length > 0\" class=\"create-plan__cart-label\">{{ trans('add_products') }}</p>\n </div>\n\n\n\n <div class=\"create-plan__footer footer-row\">\n <div>\n <strong>{{ trans('power_users') }}\n <span class=\"c-tooltip c-tooltip--dark-pop-up js-pricing-prevent-click\" :data-tooltip=\"trans('power_user_tooltip')\"></span>\n </strong>\n <div class=\"create-plan--small-label\"> {{ getPriceEachPowerUser() }} {{ trans('power_user') }} / {{ trans('month') }}</div>\n </div>\n<!-- <div>-->\n<!-- <strong>{{ trans('basic_users') }}-->\n<!-- <span class=\"c-tooltip c-tooltip--dark-pop-up js-pricing-prevent-click\" :data-tooltip=\"trans('basic_user_tooltip')\"></span>-->\n<!-- </strong>-->\n<!-- <div class=\"create-plan--small-label\"> {{ getPriceEachPowerUser() }} {{ trans('power_user') }} / {{ trans('month') }}</div>-->\n<!-- </div>-->\n <div class=\"create-plan-product__numbers\" :class=\"{'c-tooltip c-tooltip--element c-tooltip--dark-pop-up c-tooltip--small': !productsInCart.length > 0}\" :data-tooltip=\"trans('add_product_first')\">\n <button @click=\"$root.powerUsers++\" :disabled=\"!productsInCart.length > 0\">+</button>\n <input type=\"number\" min=\"1\" :value=\"$root.powerUsers\" @change=\"changePowerUsersAmount\" :disabled=\"!productsInCart.length > 0\">\n <button :disabled=\"$root.powerUsers === 1 || !productsInCart.length > 0\" @click=\"$root.powerUsers--\">-</button>\n </div>\n </div>\n\n\n\n\n\n <div class=\"create-plan__footer footer-row create-plan__footer--no-bt\">\n <div>\n <strong>{{ trans('basic_users') }}\n <span class=\"c-tooltip c-tooltip--dark-pop-up js-pricing-prevent-click\" :data-tooltip=\"trans('basic_user_tooltip')\"></span>\n </strong>\n <div class=\"create-plan--small-label\">{{trans('always_free')}}</div>\n </div>\n </div>\n\n <div class=\"create-plan__footer\">\n\n <div class=\"footer-subtotal\">\n <span>{{ trans('platform_fee') }}</span>\n <span v-if=\"this.$root.powerUsers < this.$root.powerUserLimit\">{{ displayCorrectCurrency(this.$root.coreProduct.euro_price, this.$root.coreProduct.dollar_price) }}</span>\n <span v-else>--</span>\n </div>\n\n <div class=\"footer-subtotal\">\n <span>{{ $root.powerUsers }} {{ $root.powerUsers === 1 ? trans('power_user') : trans('power_users') }}</span>\n <span v-if=\"this.$root.powerUsers < this.$root.powerUserLimit\">{{ getPriceEachPowerUser(true) }}</span>\n <span v-else>--</span>\n </div>\n\n<!-- <div class=\"footer-subtotal\" v-if=\"$root.hasAddons && this.$root.powerUsers < this.$root.powerUserLimit\" >-->\n<!-- <span>{{ trans('addons') }}</span>-->\n<!-- <span>{{ getAddonsPrice() }}</span>-->\n<!-- </div>-->\n\n <div class=\"footer-total\">\n <strong>{{ trans('total') }}</strong>\n <span v-if=\"this.$root.powerUsers < this.$root.powerUserLimit\">{{ getTotalPrice() }}</span>\n <span v-else>{{ trans('lets_talk') }}</span>\n </div>\n\n <div class=\"custom-plan-notice\" v-if=\"this.$root.powerUsers >= this.$root.powerUserLimit\">\n <h4>{{ trans('custom_plan') }}</h4>\n <p>{{ trans('custom_plan_sub') }}</p>\n </div>\n\n <a :href=\"trans('try_free_link')\" class=\"c-button c-button--filled\" v-if=\"this.$root.powerUsers < this.$root.powerUserLimit\">\n <span class=\"c-button__text\">{{ trans('try_free') }}</span>\n </a>\n <a :href=\"trans('speak_expert_link')\" class=\"c-button\" :class=\"{'c-button--filled': this.$root.powerUsers >= this.$root.powerUserLimit}\">\n <span class=\"c-button__text\">{{ trans('speak_expert') }}</span>\n </a>\n </div>\n </div>\n <div class=\"create-plan__sidebar--mobile\">\n <strong>{{ trans('total') }}: {{ getTotalPrice(false) }}</strong>\n <span class=\"c-button c-button--filled\" @click=\"scrollToSummary\"><span class=\"c-button__text\">{{ trans('see_summary') }}</span></span>\n </div>\n <div class=\"create-plan__scroll-up\">\n <span @click=\"scrollToSummary\">{{ trans('price_breakdown') }}</span>\n </div>\n </div>\n</template>\n\n<script>\nimport SingleProduct from \"./singleProduct\";\nimport CartProduct from \"./cartProduct\";\nimport OpenCloseProducts from \"./openCloseProducts\";\nimport mixin from \"../createPlan/mixins\";\nimport ProductPopUp from \"./productPopUp\";\n\nexport default {\n name: \"createPlan\",\n mixins: [mixin],\n components: {ProductPopUp, OpenCloseProducts, CartProduct, SingleProduct},\n\n data() {\n return {\n popupOpened: false,\n }\n },\n\n watch: {\n productsInCart: function (newstate, oldstate) {\n this.updateProducts()\n },\n powerUsers: function (newstate, oldstate) {\n\n }\n },\n\n computed: {\n productsInCart() {\n return this.$root.productsInCart\n },\n\n // isPowerUserLimit() {\n // return this.$root.powerUsers >= this.$root.powerUserLimit\n // }\n },\n\n methods: {\n\n updateProducts() {\n this.$refs.product.forEach((product, index) => {\n if (!this.productsInCart.find((p) => p.id === product.product.id)) {\n this.$refs.product[index].cartState = null\n }\n })\n },\n\n changeCurrency(value) {\n this.$root.currencyEuro = !value.target.checked\n\n },\n\n getPriceEachPowerUser(multiplyByUsers = false) {\n\n let total_euro = 0\n let total_dollar = 0\n\n this.$root.productsInCart.forEach((cartState) => {\n\n const product = this.$root.products.find(p => p.id == cartState.id)\n\n if (product.price_per_warehouse == 1) {\n total_euro += cartState.amount * parseFloat(product.euro_price);\n total_dollar += cartState.amount * parseFloat(product.dollar_price);\n }\n else if(product.levels.length > 0) {\n const level = product.levels[cartState.level]\n total_euro += parseFloat(level[1])\n total_dollar += parseFloat(level[2])\n }\n else if(product.pricing_product_type == 'normal') {\n total_euro += parseFloat(product.euro_price) * cartState.amount\n total_dollar += parseFloat(product.dollar_price) * cartState.amount\n }\n else if(product.pricing_product_type == 'levels') {\n total_euro += parseFloat(product.euro_price) * cartState.amount\n total_dollar += parseFloat(product.dollar_price) * cartState.amount\n }\n\n })\n\n if(!multiplyByUsers) return this.displayCorrectCurrency(total_euro, total_dollar)\n return this.displayCorrectCurrency(total_euro * this.$root.powerUsers, total_dollar * this.$root.powerUsers)\n },\n\n // getAddonsPrice() {\n //\n // let total_euro = 0\n // let total_dollar = 0\n //\n // this.$root.productsInCart.forEach((cartState) => {\n // const product = this.$root.products.find(p => p.id == cartState.id)\n // // if the price depends on the number of warehouses\n // if (product.price_per_warehouse == 1) {\n // const amountOfProductInCart = this.$root.productsInCart.find(p => p.id == product.id).amount;\n // const amountOfPowerUsers = this.$root.powerUsers\n // total_euro = amountOfProductInCart * amountOfPowerUsers * product.euro_price;\n // total_dollar = amountOfProductInCart* amountOfPowerUsers * product.dollar_price;\n // }\n // // otherwise, just add up\n // else if(product.pricing_product_type == 'addon' || 'levels') {\n // total_euro = parseFloat(product.euro_price) * cartState.amount\n // total_dollar += parseFloat(product.dollar_price) * cartState.amount\n // }\n // })\n // return this.displayCorrectCurrency(total_euro, total_dollar)\n // },\n\n getTotalPrice() {\n\n let base_price_euro = parseFloat(this.$root.coreProduct.euro_price)\n let base_price_dollar = parseFloat(this.$root.coreProduct.dollar_price)\n\n let each_power_user_euro = 0\n let each_power_user_dollar = 0\n\n this.$root.productsInCart.forEach((cartState) => {\n\n const product = this.$root.products.find(p => p.id == cartState.id)\n\n if (product.price_per_warehouse == 1) {\n // console.log(cartState.amount * parseFloat(product.euro_price))\n each_power_user_euro += cartState.amount * parseFloat(product.euro_price);\n each_power_user_dollar += cartState.amount * parseFloat(product.dollar_price);\n }\n else if(product.levels.length > 0) {\n const level = product.levels[cartState.level]\n each_power_user_euro += parseFloat(level[1])\n each_power_user_dollar += parseFloat(level[2])\n }\n else if(product.pricing_product_type == 'normal') {\n each_power_user_euro += parseFloat(product.euro_price) * cartState.amount\n each_power_user_dollar += parseFloat(product.dollar_price) * cartState.amount\n }\n else if(product.pricing_product_type == 'addon') {\n each_power_user_euro += parseFloat(product.euro_price) * cartState.amount\n each_power_user_dollar += parseFloat(product.dollar_price) * cartState.amount\n }\n else if(product.pricing_product_type == 'levels') {\n each_power_user_euro += parseFloat(product.euro_price) * cartState.amount\n each_power_user_dollar += parseFloat(product.dollar_price) * cartState.amount\n }\n })\n\n\n let total_euro = (each_power_user_euro * this.$root.powerUsers) + base_price_euro\n let total_dollar = (each_power_user_dollar * this.$root.powerUsers) + base_price_dollar\n\n return this.displayCorrectCurrency(total_euro, total_dollar)\n },\n\n changePowerUsersAmount(event) {\n let amount = parseInt(event.target.value)\n if (amount >= 0) this.$root.powerUsers = amount\n },\n\n getProductById(id) {\n return this.$root.products.find(product => product.id == id);\n },\n\n scrollToSummary() {\n this.$refs.sidebar.scrollIntoView({behavior: \"smooth\"})\n },\n\n openPopup() {\n history.replaceState(\"\", document.title, window.location.pathname + '#' + this.slugify(this.$root.coreProduct.translation.name));\n this.popupOpened = true\n },\n\n closePopup() {\n history.replaceState(\"\", document.title, window.location.pathname);\n this.popupOpened = false\n }\n\n },\n}\n</script>","import CreatePlan from \"./../components/createPlan\"\n\nconst createPlanEl = document.querySelector('#create-plan-vue')\nconst productData = createPlanEl.getAttribute('data-product-data')\n\nif(!productData) throw new Error('productData is missing');\ncreatePlanEl.removeAttribute('data-product-data');\n\nconst coreProductId = 6\nconst primaryProductIds = [2, 4]\nconst productIdsRequiredPrimary = [5]\nconst equipmentSchedulingId = 2\nconst productIdsRequiredEquipmentScheduling = [3]\nconst productIdsRequiredEquipmentSchedulingPro = [8]\n\nconst removableProductIds = new Set([coreProductId])\n\n// Prepare products array\nlet products = Object.values(JSON.parse(productData))\nproducts.forEach(product => {\n\n product.requiresEquipmentScheduling = productIdsRequiredEquipmentScheduling.includes(product.id)\n product.requiresEquipmentSchedulingPro = productIdsRequiredEquipmentSchedulingPro.includes(product.id)\n product.requiresPrimary = productIdsRequiredPrimary.includes(product.id)\n product.levels = product.levels != '' && product.levels != '[]' ? JSON.parse(product.levels) : [];\n product.specs = product.translation && product.translation.specs != '' && product.translation.specs != '[]' ? JSON.parse(product.translation.specs) : [];\n product.hinted_products = product.hinted_products.split(',')\n\n const hintedProducts = [];\n\n // Validate hinted products exist\n product.hinted_products.forEach((productId, index) => {\n const hintedProduct = products.find(p => p.id == productId)\n if(hintedProduct === undefined) product.hinted_products.splice(index, 1)\n else{\n hintedProduct.hasParentProduct = true\n hintedProduct.parentProduct = product.id\n hintedProducts.push(hintedProduct)\n removableProductIds.add(parseInt(productId))\n }\n })\n\n product.hinted_products = hintedProducts\n\n})\n\nconst coreProduct = products.find(p => p.id == coreProductId);\n\nif(!coreProduct) throw new Error('Core product (Rentman Platform) / Product with id 6 is missing');\nif(!coreProduct.translation) throw new Error('Core product (Rentman Platform) / Product is missing its translation');\ncoreProduct.translation.specs = coreProduct.translation.specs !== '' ? Object.values(JSON.parse(coreProduct.translation.specs)).map(spec => spec[0]) : []\n\n\n// Create selectable products, by removing the hinted products and core product (so removableProductIds\nconst selectableProducts = products.filter(p => !removableProductIds.has(p.id))\n\n\nVue.mixin(require('./mixins'));\n\nvar vm = new Vue({\n el: '#create-plan-vue',\n components: {\n CreatePlan,\n },\n data: () => ({\n products: products,\n selectableProducts: selectableProducts,\n coreProduct: coreProduct,\n translations: window.rentman.translations,\n currencyEuro: true,\n powerUsers: 1,\n powerUserLimit: 15,\n productsInCart: [],\n }),\n computed: {\n hasAddons() {\n\n let hasAddon = false\n\n this.productsInCart.forEach((cartState) => {\n const product = this.products.find(p => p.id == cartState.id)\n if(product.pricing_product_type == 'addon') hasAddon = true\n })\n\n return hasAddon\n },\n primaryProductSelected() {\n\n let hasPrimaryProduct = false\n const selectedProductIds = this.productsInCart.map(p => p.id);\n\n selectedProductIds.forEach(productId => {\n let isPrimaryProduct = primaryProductIds.includes(productId)\n if(isPrimaryProduct) hasPrimaryProduct = true\n })\n\n return hasPrimaryProduct\n },\n\n equipmentSchedulingSelected() {\n\n let hasPrimaryProduct = false\n const selectedProductIds = this.productsInCart.map(p => p.id);\n\n selectedProductIds.forEach(productId => {\n let isPrimaryProduct = equipmentSchedulingId === productId\n if(isPrimaryProduct) hasPrimaryProduct = true\n })\n\n return hasPrimaryProduct\n },\n\n equipmentSchedulingProSelected() {\n let hasSchedulingPro = false\n const selectedProducts = this.productsInCart\n selectedProducts.forEach(product => {\n let isSchedulingPro = equipmentSchedulingId === product.id && product.level === 1\n if(isSchedulingPro) hasSchedulingPro = true\n })\n return hasSchedulingPro\n }\n },\n watch: {\n productsInCart: {\n deep: true,\n handler() {\n if (!this.equipmentSchedulingProSelected) {\n this.productsInCart.find(p => p.id === 8)\n ? this.productsInCart.find(p => p.id === 8).amount = 0\n : null;\n }\n }\n },\n }\n})","module.exports = {\n methods: {\n\n isset(obj) {\n return typeof obj !== 'undefined' && obj !== null;\n },\n\n displayCorrectCurrency(euro, dollar) {\n return this.getCurrencyIcon() + this.getPrice(euro, dollar);\n },\n\n getPrice(euro, dollar) {\n let price = (this.$root.currencyEuro) ? euro : dollar;\n\n if(typeof price === 'string' && price.substr(price.length -3) === '.00') {\n price = price.substr(0, price.length -3)\n }\n\n return price;\n },\n\n getCurrencyIcon() {\n return (this.$root.currencyEuro) ? '€' : '$'\n },\n\n slugify(str) {\n str = str.replace(/^\\s+|\\s+$/g, ''); // trim\n str = str.toLowerCase();\n\n // remove accents, swap ñ for n, etc\n var from = \"àáãäâèéëêìíïîòóöôùúüûñç·/_,:;\";\n var to = \"aaaaaeeeeiiiioooouuuunc------\";\n\n for (var i=0, l=from.length ; i<l ; i++) {\n str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));\n }\n\n str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars\n .replace(/\\s+/g, '-') // collapse whitespace and replace by -\n .replace(/-+/g, '-'); // collapse dashes\n\n return str;\n },\n\n\n trans(key, replace, returnKey = true) {\n\n if(!this.isset(this.$root.translations)) {\n console.warn('Create the translation on the window');\n if(returnKey) return key;\n else return '';\n }\n\n let translation;\n const keys = key.split('.');\n\n let resolvedKeyCounter = 0;\n while (resolvedKeyCounter < keys.length) {\n\n // Break if first key isn't resolved\n if(resolvedKeyCounter !== 0 && translation === null) break;\n\n if(resolvedKeyCounter === 0) translation = this.$root.translations[keys[resolvedKeyCounter]] || null\n else translation = translation[keys[resolvedKeyCounter]] || null;\n\n resolvedKeyCounter++;\n }\n\n if (translation === null) {\n if(returnKey) {\n console.warn('No translation for ' + key + '. Try clearing your session storage.');\n return key;\n }\n else return '';\n }\n\n // If we don't need to replace placeholders, return the translation\n if(replace === undefined) return translation;\n\n const replaceKeys = Object.keys(replace);\n replaceKeys.forEach((key) => {\n translation = translation.replace('%' + key, replace[key]);\n });\n\n return translation\n },\n\n log(data) {\n console.log(data);\n }\n\n\n },\n};\n"],"sourceRoot":""}