@perevorot/shop 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Cart.js","sources":["../../../../src/components/shop/cart/Cart.vue","../../../../src/components/shop/cart/Cart.vue?vue&type=template&id=f7ffb5d2&lang.js"],"sourcesContent":["<template>\n <div class=\"cart\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span> <i class=\"fas fa-shopping-cart\"></i> {{ quantity }} </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">\n {{ __('shop.cart.total') }}\n </div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a :href=\"$ziggy('shop.checkout')\" class=\"button is-link\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"cart-title\">Корзина <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span></div>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">Итого: <span v-html=\"$filters.price(total)\"></span></div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a :href=\"$ziggy('shop.checkout')\" class=\"button is-link checkout\">Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</div>\n <div class=\"swiper-container\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in cross\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div class=\"price-old\" v-if=\"item.priceOld\" v-html=\"$filters.price(item.priceOld)\"></div>\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add :id=\"item.id\" :is-simple=\"true\">\n <svg><use xlink:href=\"#cart-alternate\" /></svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">Вместе дешевле</div>\n <div class=\"swiper-container\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in bundles\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless is-vcentered\" v-bind:class=\"{ 'is-third': item.third }\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\"><use xlink:href=\"#bundle-plus\"/></svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.second.image }\">\n <img :src=\"item.second.image\" v-if=\"item.second.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.second.href)\">{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.second.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\"><use xlink:href=\"#bundle-plus\"/></svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.third.image }\">\n <img :src=\"item.third.image\" v-if=\"item.third.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.third.href)\">{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.third.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span class=\"total-old\" v-html=\"$filters.price(item.bundle.priceOld)\"></span>\n <span class=\"bundle-amount\" v-html=\"'Выгода ' + item.bundle.amount\"></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span class=\"total\" v-html=\"$filters.price(item.bundle.price)\"></span>\n <bundle-add :id=\"item.id\" :second=\"item.second.id\" v-bind:third=\"item.third ? item.third.id : null\"></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">Посмотрите предложения на <a @click=\"goto($env.locale.url + '/')\">главной странице</a>,<br />воспользуйтесь каталогом или поиском</div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport SwiperCore, { Navigation } from 'swiper/core';\n\nSwiperCore.use([Navigation]);\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n \n store.dispatch(\"cart/get\", {\n finally: () => {\n },\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', false);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters['cart/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n \n if(cross.length) {\n crossSwiper = new SwiperCore(crossSlider.value, {\n slidesPerView: 2,\n slidesPerGroup: 2,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters['cart/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n \n if(bundles.length) {\n bundlesSwiper = new SwiperCore(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', null);\n });\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext\n };\n }\n});\n</script>","<template>\n <div class=\"cart\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span> <i class=\"fas fa-shopping-cart\"></i> {{ quantity }} </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">\n {{ __('shop.cart.total') }}\n </div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a :href=\"$ziggy('shop.checkout')\" class=\"button is-link\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"cart-title\">Корзина <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span></div>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">Итого: <span v-html=\"$filters.price(total)\"></span></div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a :href=\"$ziggy('shop.checkout')\" class=\"button is-link checkout\">Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</div>\n <div class=\"swiper-container\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in cross\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div class=\"price-old\" v-if=\"item.priceOld\" v-html=\"$filters.price(item.priceOld)\"></div>\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add :id=\"item.id\" :is-simple=\"true\">\n <svg><use xlink:href=\"#cart-alternate\" /></svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">Вместе дешевле</div>\n <div class=\"swiper-container\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in bundles\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless is-vcentered\" v-bind:class=\"{ 'is-third': item.third }\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\"><use xlink:href=\"#bundle-plus\"/></svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.second.image }\">\n <img :src=\"item.second.image\" v-if=\"item.second.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.second.href)\">{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.second.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\"><use xlink:href=\"#bundle-plus\"/></svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.third.image }\">\n <img :src=\"item.third.image\" v-if=\"item.third.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.third.href)\">{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.third.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span class=\"total-old\" v-html=\"$filters.price(item.bundle.priceOld)\"></span>\n <span class=\"bundle-amount\" v-html=\"'Выгода ' + item.bundle.amount\"></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span class=\"total\" v-html=\"$filters.price(item.bundle.price)\"></span>\n <bundle-add :id=\"item.id\" :second=\"item.second.id\" v-bind:third=\"item.third ? item.third.id : null\"></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">Посмотрите предложения на <a @click=\"goto($env.locale.url + '/')\">главной странице</a>,<br />воспользуйтесь каталогом или поиском</div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport SwiperCore, { Navigation } from 'swiper/core';\n\nSwiperCore.use([Navigation]);\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n \n store.dispatch(\"cart/get\", {\n finally: () => {\n },\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', false);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters['cart/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n \n if(cross.length) {\n crossSwiper = new SwiperCore(crossSlider.value, {\n slidesPerView: 2,\n slidesPerGroup: 2,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters['cart/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n \n if(bundles.length) {\n bundlesSwiper = new SwiperCore(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', null);\n });\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext\n };\n }\n});\n</script>"],"names":["SwiperCore","use","Navigation","defineComponent","name","props","isModal","type","Boolean","setup","store","useStore","loading","ref","items","computed","getters","modal","total","quantity","close","commit","dispatch","window","addEventListener","e","value","key","crossSwiper","bundlesSwiper","crossSlider","crossSliderNext","crossSliderPrev","cross","destroy","length","slidesPerView","slidesPerGroup","spaceBetween","allowTouchMove","mousewheel","forceToAxis","navigation","nextEl","prevEl","bundlesSlider","bundlesSliderNext","bundlesSliderPrev","bundles","open","clear","pluralize","href","location","_createElementVNode","role","_createElementBlock","_hoisted_1","_hoisted_2","_hoisted_3","_renderSlot","_ctx","onClick","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","innerHTML","price","_hoisted_12","_hoisted_13","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_21","_hoisted_22","_toDisplayString","_hoisted_25","_hoisted_26","item","_createBlock","id","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_34","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","image","src","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_51","_hoisted_52","_hoisted_53","priceOld","_hoisted_56","_createVNode","_hoisted_57","_hoisted_58","_hoisted_61","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","third","_hoisted_68","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_78","_hoisted_79","_hoisted_81","_hoisted_82","second","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_92","_hoisted_93","_hoisted_95","_hoisted_98","_hoisted_104","_hoisted_105","_hoisted_106","_hoisted_108","_hoisted_109","_hoisted_111","_hoisted_112","bundle","amount","_hoisted_115","_hoisted_116","_hoisted_118","_hoisted_121","_hoisted_124","_hoisted_125","_hoisted_126","locale","url","_hoisted_129","_hoisted_131","slider"],"mappings":"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"}
1
+ {"version":3,"file":"Cart.js","sources":["../../../../src/components/shop/cart/Cart.vue","../../../../src/components/shop/cart/Cart.vue?vue&type=template&id=e4e757b6&lang.js"],"sourcesContent":["<template>\n <div class=\"cart\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span>\n <i class=\"fas fa-shopping-cart\"></i>\n {{ quantity }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">{{ __('shop.cart.total') }}</div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a\n :href=\"$ziggy('shop.checkout')\"\n class=\"button is-link\"\n >{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"cart-title\">\n Корзина\n <span\n v-if=\"quantity\"\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span>\n </div>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n Итого:\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n :href=\"$ziggy('shop.checkout')\"\n class=\"button is-link checkout\"\n >Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in cross\"\n v-bind:key=\"item.id\"\n >\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div\n class=\"price-old\"\n v-if=\"item.priceOld\"\n v-html=\"$filters.price(item.priceOld)\"\n ></div>\n <div\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n ></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add\n :id=\"item.id\"\n :is-simple=\"true\"\n >\n <svg>\n <use\n xlink:href=\"#cart-alternate\"\n />\n </svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">Вместе дешевле</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in bundles\"\n v-bind:key=\"item.id\"\n >\n <div\n class=\"columns is-gapless is-vcentered\"\n v-bind:class=\"{ 'is-third': item.third }\"\n >\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.second.image }\"\n >\n <img\n :src=\"item.second.image\"\n v-if=\"item.second.image\"\n />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a\n @click=\"goto(item.second.href)\"\n >{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.second.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.third.image }\"\n >\n <img\n :src=\"item.third.image\"\n v-if=\"item.third.image\"\n />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a\n @click=\"goto(item.third.href)\"\n >{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.third.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span\n class=\"total-old\"\n v-html=\"$filters.price(item.bundle.priceOld)\"\n ></span>\n <span\n class=\"bundle-amount\"\n v-html=\"'Выгода ' + item.bundle.amount\"\n ></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span\n class=\"total\"\n v-html=\"$filters.price(item.bundle.price)\"\n ></span>\n <bundle-add\n :id=\"item.id\"\n :second=\"item.second.id\"\n v-bind:third=\"item.third ? item.third.id : null\"\n ></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a\n @click=\"goto($env.locale.url + '/')\"\n >главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(\"cart/get\", {\n finally: () => {\n },\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', false);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters['cart/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n\n if (cross.length) {\n crossSwiper = new Swiper(crossSlider.value, {\n slidesPerView: 2,\n slidesPerGroup: 2,\n spaceBetween: 0,\n allowTouchMove: true,\n modules: [Navigation],\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters['cart/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n\n if (bundles.length) {\n bundlesSwiper = new Swiper(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', null);\n });\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext\n };\n }\n});\n</script>","<template>\n <div class=\"cart\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span>\n <i class=\"fas fa-shopping-cart\"></i>\n {{ quantity }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">{{ __('shop.cart.total') }}</div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a\n :href=\"$ziggy('shop.checkout')\"\n class=\"button is-link\"\n >{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"cart-title\">\n Корзина\n <span\n v-if=\"quantity\"\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span>\n </div>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n Итого:\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n :href=\"$ziggy('shop.checkout')\"\n class=\"button is-link checkout\"\n >Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in cross\"\n v-bind:key=\"item.id\"\n >\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div\n class=\"price-old\"\n v-if=\"item.priceOld\"\n v-html=\"$filters.price(item.priceOld)\"\n ></div>\n <div\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n ></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add\n :id=\"item.id\"\n :is-simple=\"true\"\n >\n <svg>\n <use\n xlink:href=\"#cart-alternate\"\n />\n </svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">Вместе дешевле</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in bundles\"\n v-bind:key=\"item.id\"\n >\n <div\n class=\"columns is-gapless is-vcentered\"\n v-bind:class=\"{ 'is-third': item.third }\"\n >\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.second.image }\"\n >\n <img\n :src=\"item.second.image\"\n v-if=\"item.second.image\"\n />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a\n @click=\"goto(item.second.href)\"\n >{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.second.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.third.image }\"\n >\n <img\n :src=\"item.third.image\"\n v-if=\"item.third.image\"\n />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a\n @click=\"goto(item.third.href)\"\n >{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.third.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span\n class=\"total-old\"\n v-html=\"$filters.price(item.bundle.priceOld)\"\n ></span>\n <span\n class=\"bundle-amount\"\n v-html=\"'Выгода ' + item.bundle.amount\"\n ></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span\n class=\"total\"\n v-html=\"$filters.price(item.bundle.price)\"\n ></span>\n <bundle-add\n :id=\"item.id\"\n :second=\"item.second.id\"\n v-bind:third=\"item.third ? item.third.id : null\"\n ></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a\n @click=\"goto($env.locale.url + '/')\"\n >главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(\"cart/get\", {\n finally: () => {\n },\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', false);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters['cart/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n\n if (cross.length) {\n crossSwiper = new Swiper(crossSlider.value, {\n slidesPerView: 2,\n slidesPerGroup: 2,\n spaceBetween: 0,\n allowTouchMove: true,\n modules: [Navigation],\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters['cart/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n\n if (bundles.length) {\n bundlesSwiper = new Swiper(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('cart/modal', null);\n });\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext\n };\n }\n});\n</script>"],"names":["defineComponent","name","props","isModal","type","Boolean","setup","store","useStore","loading","ref","items","computed","getters","modal","total","quantity","close","commit","dispatch","window","addEventListener","e","value","key","crossSwiper","bundlesSwiper","crossSlider","crossSliderNext","crossSliderPrev","cross","destroy","length","Swiper","slidesPerView","slidesPerGroup","spaceBetween","allowTouchMove","modules","Navigation","mousewheel","forceToAxis","navigation","nextEl","prevEl","bundlesSlider","bundlesSliderNext","bundlesSliderPrev","bundles","open","clear","pluralize","href","location","_createElementVNode","role","_createElementBlock","_hoisted_1","_hoisted_2","_hoisted_3","_renderSlot","_ctx","onClick","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","innerHTML","price","_hoisted_12","_hoisted_13","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_21","_hoisted_22","_toDisplayString","_hoisted_25","_hoisted_26","item","_createBlock","id","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_34","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","image","src","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_51","_hoisted_52","_hoisted_53","priceOld","_hoisted_56","_createVNode","_hoisted_57","_hoisted_58","_hoisted_61","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","third","_hoisted_68","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_78","_hoisted_79","_hoisted_81","_hoisted_82","second","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_92","_hoisted_93","_hoisted_95","_hoisted_98","_hoisted_104","_hoisted_105","_hoisted_106","_hoisted_108","_hoisted_109","_hoisted_111","_hoisted_112","bundle","amount","_hoisted_115","_hoisted_116","_hoisted_118","_hoisted_121","_hoisted_124","_hoisted_125","_hoisted_126","locale","url","_hoisted_129","_hoisted_131","slider"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("vue"),n=require("swiper/core");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=t(n);o.default.use([n.Navigation,n.Mousewheel]);var i=e.defineComponent({name:"viewed",props:{slider:{type:Boolean,default:!1}},setup:function(n){var t=!1,i=e.ref(null),r=e.ref(null),a=function(e){e.forEach((function(e){e.isIntersecting&&(t||(t=!0,c()))}))},c=function(){$http.post($ziggy("api.viewed"),{action:"list",account:-1!==window.location.href.indexOf("/account/viewed")}).then((function(t){window.app.component("viewed-container",{template:t.data?t.data:"<i></i>"}),r.value="viewed-container",e.nextTick((function(){if(n.slider){var e=window.viewedSwiperOptions?window.viewedSwiperOptions:{slidesPerView:5,spaceBetween:24,freeMode:!0,navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"},mousewheel:{forceToAxis:!0}};new o.default(i.value.querySelector(".swiper-container"),e)}window.lazyImages&&window.lazyImages.update()}))}))};return e.onMounted((function(){new IntersectionObserver(a).observe(i.value)})),{container:i,component:r}}}),r={ref:"container"};i.render=function(n,t,o,i,a,c){return e.openBlock(),e.createElementBlock("div",r,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.component)))],512)},module.exports=i;
1
+ "use strict";var e=require("vue"),n=require("swiper");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=o(n),i=e.defineComponent({name:"viewed",props:{slider:{type:Boolean,default:!1}},setup:function(o){var i=!1,r=e.ref(null),a=e.ref(null),c=function(e){e.forEach((function(e){e.isIntersecting&&(i||(i=!0,u()))}))},u=function(){$http.post($ziggy("api.viewed"),{action:"list",account:-1!==window.location.href.indexOf("/account/viewed")}).then((function(i){window.app.component("viewed-container",{template:i.data?i.data:"<i></i>"}),a.value="viewed-container",e.nextTick((function(){if(o.slider){var e=window.viewedSwiperOptions?window.viewedSwiperOptions:{slidesPerView:5,spaceBetween:24,freeMode:!0,navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"},mousewheel:{forceToAxis:!0}};e.modules=[n.Navigation,n.Mousewheel],new t.default(r.value.querySelector(".swiper"),e)}window.lazyImages&&window.lazyImages.update()}))}))};return e.onMounted((function(){new IntersectionObserver(c).observe(r.value)})),{container:r,component:a}}}),r={ref:"container"};i.render=function(n,o,t,i,a,c){return e.openBlock(),e.createElementBlock("div",r,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.component)))],512)},module.exports=i;
2
2
  //# sourceMappingURL=Viewed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Viewed.js","sources":["../../../../src/components/shop/viewed/Viewed.vue","../../../../src/components/shop/viewed/Viewed.vue?vue&type=template&id=3c702d8a&lang.js"],"sourcesContent":["<template>\n <div ref=\"container\">\n <component :is=\"component\"></component>\n </div>\n</template>\n<script>\nimport { ref, onMounted, nextTick, defineComponent } from 'vue';\nimport SwiperCore, { Navigation, Mousewheel } from 'swiper/core';\n\nSwiperCore.use([Navigation, Mousewheel]);\n\nexport default defineComponent({\n name: 'viewed',\n props: {\n slider: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n let inited = false;\n\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.viewed'), {\n action: 'list',\n account: window.location.href.indexOf('/account/viewed') !== -1\n })\n .then((response) => {\n window.app.component('viewed-container', {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = 'viewed-container';\n\n nextTick(() => {\n if (props.slider) {\n const options = window.viewedSwiperOptions\n ? window.viewedSwiperOptions\n : {\n slidesPerView: 5,\n spaceBetween: 24,\n freeMode: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n mousewheel: {\n forceToAxis: true\n }\n };\n\n new SwiperCore(container.value.querySelector('.swiper-container'), options);\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n onMounted(() => {\n const observer = new IntersectionObserver(callback);\n observer.observe(container.value);\n });\n\n return {\n container,\n component\n };\n }\n});\n</script>\n","<template>\n <div ref=\"container\">\n <component :is=\"component\"></component>\n </div>\n</template>\n<script>\nimport { ref, onMounted, nextTick, defineComponent } from 'vue';\nimport SwiperCore, { Navigation, Mousewheel } from 'swiper/core';\n\nSwiperCore.use([Navigation, Mousewheel]);\n\nexport default defineComponent({\n name: 'viewed',\n props: {\n slider: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n let inited = false;\n\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.viewed'), {\n action: 'list',\n account: window.location.href.indexOf('/account/viewed') !== -1\n })\n .then((response) => {\n window.app.component('viewed-container', {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = 'viewed-container';\n\n nextTick(() => {\n if (props.slider) {\n const options = window.viewedSwiperOptions\n ? window.viewedSwiperOptions\n : {\n slidesPerView: 5,\n spaceBetween: 24,\n freeMode: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n mousewheel: {\n forceToAxis: true\n }\n };\n\n new SwiperCore(container.value.querySelector('.swiper-container'), options);\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n onMounted(() => {\n const observer = new IntersectionObserver(callback);\n observer.observe(container.value);\n });\n\n return {\n container,\n component\n };\n }\n});\n</script>\n"],"names":["SwiperCore","use","Navigation","Mousewheel","defineComponent","name","props","slider","type","Boolean","setup","inited","container","ref","component","callback","entries","forEach","entry","isIntersecting","load","$http","post","$ziggy","action","account","window","location","href","indexOf","then","response","app","template","data","value","nextTick","options","viewedSwiperOptions","slidesPerView","spaceBetween","freeMode","navigation","nextEl","prevEl","mousewheel","forceToAxis","querySelector","lazyImages","update","onMounted","IntersectionObserver","observe","_createElementBlock","_hoisted_1","_createBlock","_ctx"],"mappings":"8IASAA,UAAWC,IAAI,CAACC,aAAYC,eAE5B,MAAeC,kBAAgB,CAC3BC,KAAM,SACNC,MAAO,CACHC,OAAQ,CACJC,KAAMC,iBACG,IAGjBC,eAAMJ,OACEK,GAAS,EAEPC,EAAYC,MAAI,MAChBC,EAAYD,MAAI,MAEhBE,EAAW,SAACC,GACdA,EAAQC,SAAQ,SAACC,GACTA,EAAMC,iBACDR,IACDA,GAAS,EACTS,UAMVA,EAAO,WACTC,MACKC,KAAKC,OAAO,cAAe,CACxBC,OAAQ,OACRC,SAA8D,IAArDC,OAAOC,SAASC,KAAKC,QAAQ,qBAEzCC,MAAK,SAACC,GACHL,OAAOM,IAAIlB,UAAU,mBAAoB,CACrCmB,SAAUF,EAASG,KAAOH,EAASG,KAAO,YAG9CpB,EAAUqB,MAAQ,mBAElBC,YAAS,cACD9B,EAAMC,OAAQ,KACR8B,EAAUX,OAAOY,oBACjBZ,OAAOY,oBACP,CACIC,cAAe,EACfC,aAAc,GACdC,UAAU,EACVC,WAAY,CACRC,OAAQ,sBACRC,OAAQ,uBAEZC,WAAY,CACRC,aAAa,QAIvB9C,UAAWY,EAAUuB,MAAMY,cAAc,qBAAsBV,GAGnEX,OAAOsB,YACPtB,OAAOsB,WAAWC,uBAMtCC,aAAU,WACW,IAAIC,qBAAqBpC,GACjCqC,QAAQxC,EAAUuB,UAGxB,CACHvB,UAAAA,EACAE,UAAAA,SClFHD,IAAI,iEAATwC,2BAAAC,kBACIC,wCAAgBC"}
1
+ {"version":3,"file":"Viewed.js","sources":["../../../../src/components/shop/viewed/Viewed.vue","../../../../src/components/shop/viewed/Viewed.vue?vue&type=template&id=461b9c41&lang.js"],"sourcesContent":["<template>\n <div ref=\"container\">\n <component :is=\"component\"></component>\n </div>\n</template>\n<script>\nimport { ref, onMounted, nextTick, defineComponent } from 'vue';\nimport Swiper, { Navigation, Mousewheel } from 'swiper';\n\nexport default defineComponent({\n name: 'viewed',\n props: {\n slider: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n let inited = false;\n\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.viewed'), {\n action: 'list',\n account: window.location.href.indexOf('/account/viewed') !== -1\n })\n .then((response) => {\n window.app.component('viewed-container', {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = 'viewed-container';\n\n nextTick(() => {\n if (props.slider) {\n const options = window.viewedSwiperOptions\n ? window.viewedSwiperOptions\n : {\n slidesPerView: 5,\n spaceBetween: 24,\n freeMode: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n mousewheel: {\n forceToAxis: true\n }\n };\n\n options.modules = [Navigation, Mousewheel];\n\n new Swiper(container.value.querySelector('.swiper'), options);\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n onMounted(() => {\n const observer = new IntersectionObserver(callback);\n observer.observe(container.value);\n });\n\n return {\n container,\n component\n };\n }\n});\n</script>\n","<template>\n <div ref=\"container\">\n <component :is=\"component\"></component>\n </div>\n</template>\n<script>\nimport { ref, onMounted, nextTick, defineComponent } from 'vue';\nimport Swiper, { Navigation, Mousewheel } from 'swiper';\n\nexport default defineComponent({\n name: 'viewed',\n props: {\n slider: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n let inited = false;\n\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.viewed'), {\n action: 'list',\n account: window.location.href.indexOf('/account/viewed') !== -1\n })\n .then((response) => {\n window.app.component('viewed-container', {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = 'viewed-container';\n\n nextTick(() => {\n if (props.slider) {\n const options = window.viewedSwiperOptions\n ? window.viewedSwiperOptions\n : {\n slidesPerView: 5,\n spaceBetween: 24,\n freeMode: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n mousewheel: {\n forceToAxis: true\n }\n };\n\n options.modules = [Navigation, Mousewheel];\n\n new Swiper(container.value.querySelector('.swiper'), options);\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n onMounted(() => {\n const observer = new IntersectionObserver(callback);\n observer.observe(container.value);\n });\n\n return {\n container,\n component\n };\n }\n});\n</script>\n"],"names":["defineComponent","name","props","slider","type","Boolean","setup","inited","container","ref","component","callback","entries","forEach","entry","isIntersecting","load","$http","post","$ziggy","action","account","window","location","href","indexOf","then","response","app","template","data","value","nextTick","options","viewedSwiperOptions","slidesPerView","spaceBetween","freeMode","navigation","nextEl","prevEl","mousewheel","forceToAxis","modules","Navigation","Mousewheel","Swiper","querySelector","lazyImages","update","onMounted","IntersectionObserver","observe","_createElementBlock","_hoisted_1","_createBlock","_ctx"],"mappings":"2IASeA,kBAAgB,CAC3BC,KAAM,SACNC,MAAO,CACHC,OAAQ,CACJC,KAAMC,iBACG,IAGjBC,eAAMJ,OACEK,GAAS,EAEPC,EAAYC,MAAI,MAChBC,EAAYD,MAAI,MAEhBE,EAAW,SAACC,GACdA,EAAQC,SAAQ,SAACC,GACTA,EAAMC,iBACDR,IACDA,GAAS,EACTS,UAMVA,EAAO,WACTC,MACKC,KAAKC,OAAO,cAAe,CACxBC,OAAQ,OACRC,SAA8D,IAArDC,OAAOC,SAASC,KAAKC,QAAQ,qBAEzCC,MAAK,SAACC,GACHL,OAAOM,IAAIlB,UAAU,mBAAoB,CACrCmB,SAAUF,EAASG,KAAOH,EAASG,KAAO,YAG9CpB,EAAUqB,MAAQ,mBAElBC,YAAS,cACD9B,EAAMC,OAAQ,KACR8B,EAAUX,OAAOY,oBACjBZ,OAAOY,oBACP,CACEC,cAAe,EACfC,aAAc,GACdC,UAAU,EACVC,WAAY,CACRC,OAAQ,sBACRC,OAAQ,uBAEZC,WAAY,CACRC,aAAa,IAIzBT,EAAQU,QAAU,CAACC,aAAYC,kBAE3BC,UAAOtC,EAAUuB,MAAMgB,cAAc,WAAYd,GAGrDX,OAAO0B,YACP1B,OAAO0B,WAAWC,uBAMtCC,aAAU,WACW,IAAIC,qBAAqBxC,GACjCyC,QAAQ5C,EAAUuB,UAGxB,CACHvB,UAAAA,EACAE,UAAAA,SClFHD,IAAI,iEAAT4C,2BAAAC,kBACIC,wCAAgBC"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("vue"),t=require("vuex"),s=require("vue-toastification"),i={props:{last:null},setup:function(){return{translate:window.__}}},n={class:"shop-wishlist-success-message"},o=["href"];i.render=function(t,s,i,r,l,a){return e.openBlock(),e.createElementBlock("div",n,[e.createElementVNode("div",null,e.toDisplayString(r.translate("shop.wishlist.product_added_named",{product:i.last.name})),1),e.createElementVNode("a",{href:i.last.url,class:"mt-2 is-size-7",style:{color:"#fff","border-bottom":"1px solid #fff"}},e.toDisplayString(r.translate("shop.wishlist.goto")),9,o)])};var r=s.useToast(),l=e.defineComponent({props:{id:Number},setup:function(s){var n=e.ref(!1),o=t.useStore(),l=e.computed((function(){return o.getters["wishlist/item"](s.id)})),a=e.computed((function(){return o.getters["auth/is"]})),u=e.computed((function(){return o.getters["wishlist/last"]}));return{item:l,action:function(){n.value||(a.value?(n.value=!0,o.dispatch("wishlist/toggle",{id:s.id,finally:function(){if(l.value){var e={component:i,props:{last:{name:u,url:$ziggy("account.wish")}}};r(e,{type:"success"})}else r(__("shop.wishlist.product_deleted"),{type:"warning"});n.value=!1}})):o.commit("auth/modal","login"))},loading:n}}}),a=["title"],u=e.createElementVNode("svg",{class:"icon wishlist"},[e.createElementVNode("use",{"xlink:href":"#wishlist"})],-1);l.render=function(t,s,i,n,o,r){return e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["button wishlist",{"is-loading":t.loading,"is-transparent":!t.item}]),onClick:s[0]||(s[0]=function(){return t.action&&t.action.apply(t,arguments)}),title:t.__("shop.wishlist.add")},[e.renderSlot(t.$slots,"default",{product:t.item},(function(){return[u]}))],10,a)},module.exports=l;
1
+ "use strict";var e=require("vue"),t=require("vuex"),s=require("vue-toastification"),i={props:{last:null},setup:function(){return{translate:window.__}}},n={class:"shop-wishlist-success-message"},o=["href"];i.render=function(t,s,i,r,l,a){return e.openBlock(),e.createElementBlock("div",n,[e.createElementVNode("div",null,e.toDisplayString(r.translate("shop.wishlist.product_added_named",{product:i.last.name})),1),e.createElementVNode("a",{href:i.last.url,class:"mt-2 is-size-7",style:{color:"#fff","border-bottom":"1px solid #fff"}},e.toDisplayString(r.translate("shop.wishlist.goto")),9,o)])};var r=e.defineComponent({props:{id:Number},setup:function(n){var o=e.ref(!1),r=s.useToast(),l=t.useStore(),a=e.computed((function(){return l.getters["wishlist/item"](n.id)})),u=e.computed((function(){return l.getters["auth/is"]})),c=e.computed((function(){return l.getters["wishlist/last"]}));return{item:a,action:function(){o.value||(u.value?(o.value=!0,l.dispatch("wishlist/toggle",{id:n.id,finally:function(){if(a.value){var e={component:i,props:{last:{name:c,url:$ziggy("account.wish")}}};r(e,{type:"success"})}else r(__("shop.wishlist.product_deleted"),{type:"warning"});o.value=!1}})):l.commit("auth/modal","login"))},loading:o}}}),l=["title"],a=e.createElementVNode("svg",{class:"icon wishlist"},[e.createElementVNode("use",{"xlink:href":"#wishlist"})],-1);r.render=function(t,s,i,n,o,r){return e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["button wishlist",{"is-loading":t.loading,"is-transparent":!t.item}]),onClick:s[0]||(s[0]=function(){return t.action&&t.action.apply(t,arguments)}),title:t.__("shop.wishlist.add")},[e.renderSlot(t.$slots,"default",{product:t.item},(function(){return[a]}))],10,l)},module.exports=r;
2
2
  //# sourceMappingURL=WishlistAdd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WishlistAdd.js","sources":["../../../../src/components/shop/wishlist/SuccessMessage.vue","../../../../src/components/shop/wishlist/SuccessMessage.vue?vue&type=template&id=2780632f&lang.js","../../../../src/components/shop/wishlist/WishlistAdd.vue","../../../../src/components/shop/wishlist/WishlistAdd.vue?vue&type=template&id=b6ac529c&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-wishlist-success-message\">\n <div>\n {{\n translate(\"shop.wishlist.product_added_named\", {\n product: last.name,\n })\n }}\n </div>\n <a\n :href=\"last.url\"\n class=\"mt-2 is-size-7\"\n style=\"color: #fff; border-bottom: 1px solid #fff\"\n >{{ translate(\"shop.wishlist.goto\") }}</a\n >\n </div>\n</template>\n<script>\nexport default {\n props: {\n last: null,\n },\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-wishlist-success-message\">\n <div>\n {{\n translate(\"shop.wishlist.product_added_named\", {\n product: last.name,\n })\n }}\n </div>\n <a\n :href=\"last.url\"\n class=\"mt-2 is-size-7\"\n style=\"color: #fff; border-bottom: 1px solid #fff\"\n >{{ translate(\"shop.wishlist.goto\") }}</a\n >\n </div>\n</template>\n<script>\nexport default {\n props: {\n last: null,\n },\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <button\n class=\"button wishlist\"\n @click=\"action\"\n v-bind:class=\"{ 'is-loading': loading, 'is-transparent': !item }\"\n :title=\"__('shop.wishlist.add')\"\n >\n <slot :product=\"item\">\n <svg class=\"icon wishlist\">\n <use xlink:href=\"#wishlist\" />\n </svg>\n </slot>\n </button>\n</template>\n<script>\nimport { ref, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useToast } from \"vue-toastification\";\nimport SuccessMessage from \"./SuccessMessage.vue\";\n\nconst toast = useToast();\n\nexport default /*#__PURE__*/ defineComponent({\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const item = computed(() => store.getters[\"wishlist/item\"](props.id));\n const auth = computed(() => store.getters[\"auth/is\"]);\n const last = computed(() => store.getters[\"wishlist/last\"]);\n\n const action = () => {\n if (!loading.value) {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n loading.value = true;\n\n store.dispatch(\"wishlist/toggle\", {\n id: props.id,\n finally: () => {\n if (item.value) {\n const component = {\n component: SuccessMessage,\n props: {\n last: {\n name: last,\n url: $ziggy(\"account.wish\"),\n },\n },\n };\n\n toast(component, {\n type: \"success\",\n });\n } else {\n toast(__(\"shop.wishlist.product_deleted\"), {\n type: \"warning\",\n });\n }\n\n loading.value = false;\n },\n });\n }\n }\n };\n\n return {\n item,\n action,\n loading,\n };\n },\n});\n</script>","<template>\n <button\n class=\"button wishlist\"\n @click=\"action\"\n v-bind:class=\"{ 'is-loading': loading, 'is-transparent': !item }\"\n :title=\"__('shop.wishlist.add')\"\n >\n <slot :product=\"item\">\n <svg class=\"icon wishlist\">\n <use xlink:href=\"#wishlist\" />\n </svg>\n </slot>\n </button>\n</template>\n<script>\nimport { ref, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useToast } from \"vue-toastification\";\nimport SuccessMessage from \"./SuccessMessage.vue\";\n\nconst toast = useToast();\n\nexport default /*#__PURE__*/ defineComponent({\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const item = computed(() => store.getters[\"wishlist/item\"](props.id));\n const auth = computed(() => store.getters[\"auth/is\"]);\n const last = computed(() => store.getters[\"wishlist/last\"]);\n\n const action = () => {\n if (!loading.value) {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n loading.value = true;\n\n store.dispatch(\"wishlist/toggle\", {\n id: props.id,\n finally: () => {\n if (item.value) {\n const component = {\n component: SuccessMessage,\n props: {\n last: {\n name: last,\n url: $ziggy(\"account.wish\"),\n },\n },\n };\n\n toast(component, {\n type: \"success\",\n });\n } else {\n toast(__(\"shop.wishlist.product_deleted\"), {\n type: \"warning\",\n });\n }\n\n loading.value = false;\n },\n });\n }\n }\n };\n\n return {\n item,\n action,\n loading,\n };\n },\n});\n</script>"],"names":["props","last","setup","translate","window","__","_createElementBlock","_hoisted_1","_createElementVNode","$setup","href","$props","url","style","toast","useToast","defineComponent","id","Number","loading","ref","store","useStore","item","computed","getters","auth","action","value","dispatch","component","SuccessMessage","name","$ziggy","type","commit","_ctx","onClick","title","_renderSlot","product","_hoisted_2"],"mappings":"sFAkBe,CACXA,MAAO,CACHC,KAAM,MAEVC,uBAGW,CACHC,UAHcC,OAAOC,eCtBlB,gGAAXC,2BAAAC,GACIC,kDAEQC,2EAKRD,0BACKE,KAAMC,OAAKC,UACN,iBACNC,MAAA,mEACIJ,2CCOhB,IAAMK,EAAQC,eAEeC,kBAAgB,CACzChB,MAAO,CACHiB,GAAIC,QAERhB,eAAMF,OACImB,EAAUC,OAAI,GACdC,EAAQC,aACRC,EAAOC,YAAS,kBAAMH,EAAMI,QAAQ,iBAAiBzB,EAAMiB,OAC3DS,EAAOF,YAAS,kBAAMH,EAAMI,QAAQ,cACpCxB,EAAOuB,YAAS,kBAAMH,EAAMI,QAAQ,0BAuCnC,CACHF,KAAAA,EACAI,OAvCW,WACNR,EAAQS,QACJF,EAAKE,OAGNT,EAAQS,OAAQ,EAEhBP,EAAMQ,SAAS,kBAAmB,CAC9BZ,GAAIjB,EAAMiB,WACD,cACDM,EAAKK,MAAO,KACNE,EAAY,CACdA,UAAWC,EACX/B,MAAO,CACHC,KAAM,CACF+B,KAAM/B,EACNW,IAAKqB,OAAO,mBAKxBnB,EAAMgB,EAAW,CACbI,KAAM,iBAGVpB,EAAMT,GAAG,iCAAkC,CACvC6B,KAAM,YAIdf,EAAQS,OAAQ,MA3BxBP,EAAMc,OAAO,aAAc,WAqCnChB,QAAAA,oBCjEAX,kCAAW,kBACPA,yCAAgB,uEAR5BF,uDACU,gCAEwB8B,4BAA4BA,UADzDC,sCAAOD,wCAEPE,MAAOF,4BAERG,iCAAOC,QAASJ,SAAhB,kBACIK"}
1
+ {"version":3,"file":"WishlistAdd.js","sources":["../../../../src/components/shop/wishlist/SuccessMessage.vue","../../../../src/components/shop/wishlist/SuccessMessage.vue?vue&type=template&id=2780632f&lang.js","../../../../src/components/shop/wishlist/WishlistAdd.vue","../../../../src/components/shop/wishlist/WishlistAdd.vue?vue&type=template&id=accf0bd8&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-wishlist-success-message\">\n <div>\n {{\n translate(\"shop.wishlist.product_added_named\", {\n product: last.name,\n })\n }}\n </div>\n <a\n :href=\"last.url\"\n class=\"mt-2 is-size-7\"\n style=\"color: #fff; border-bottom: 1px solid #fff\"\n >{{ translate(\"shop.wishlist.goto\") }}</a\n >\n </div>\n</template>\n<script>\nexport default {\n props: {\n last: null,\n },\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-wishlist-success-message\">\n <div>\n {{\n translate(\"shop.wishlist.product_added_named\", {\n product: last.name,\n })\n }}\n </div>\n <a\n :href=\"last.url\"\n class=\"mt-2 is-size-7\"\n style=\"color: #fff; border-bottom: 1px solid #fff\"\n >{{ translate(\"shop.wishlist.goto\") }}</a\n >\n </div>\n</template>\n<script>\nexport default {\n props: {\n last: null,\n },\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <button\n class=\"button wishlist\"\n @click=\"action\"\n v-bind:class=\"{ 'is-loading': loading, 'is-transparent': !item }\"\n :title=\"__('shop.wishlist.add')\"\n >\n <slot :product=\"item\">\n <svg class=\"icon wishlist\">\n <use xlink:href=\"#wishlist\" />\n </svg>\n </slot>\n </button>\n</template>\n<script>\nimport { ref, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useToast } from \"vue-toastification\";\nimport SuccessMessage from \"./SuccessMessage.vue\";\n\nexport default /*#__PURE__*/ defineComponent({\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const toast = useToast();\n const store = useStore();\n const item = computed(() => store.getters[\"wishlist/item\"](props.id));\n const auth = computed(() => store.getters[\"auth/is\"]);\n const last = computed(() => store.getters[\"wishlist/last\"]);\n\n const action = () => {\n if (!loading.value) {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n loading.value = true;\n\n store.dispatch(\"wishlist/toggle\", {\n id: props.id,\n finally: () => {\n if (item.value) {\n const component = {\n component: SuccessMessage,\n props: {\n last: {\n name: last,\n url: $ziggy(\"account.wish\"),\n },\n },\n };\n\n toast(component, {\n type: \"success\",\n });\n } else {\n toast(__(\"shop.wishlist.product_deleted\"), {\n type: \"warning\",\n });\n }\n\n loading.value = false;\n },\n });\n }\n }\n };\n\n return {\n item,\n action,\n loading,\n };\n },\n});\n</script>","<template>\n <button\n class=\"button wishlist\"\n @click=\"action\"\n v-bind:class=\"{ 'is-loading': loading, 'is-transparent': !item }\"\n :title=\"__('shop.wishlist.add')\"\n >\n <slot :product=\"item\">\n <svg class=\"icon wishlist\">\n <use xlink:href=\"#wishlist\" />\n </svg>\n </slot>\n </button>\n</template>\n<script>\nimport { ref, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useToast } from \"vue-toastification\";\nimport SuccessMessage from \"./SuccessMessage.vue\";\n\nexport default /*#__PURE__*/ defineComponent({\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const toast = useToast();\n const store = useStore();\n const item = computed(() => store.getters[\"wishlist/item\"](props.id));\n const auth = computed(() => store.getters[\"auth/is\"]);\n const last = computed(() => store.getters[\"wishlist/last\"]);\n\n const action = () => {\n if (!loading.value) {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n loading.value = true;\n\n store.dispatch(\"wishlist/toggle\", {\n id: props.id,\n finally: () => {\n if (item.value) {\n const component = {\n component: SuccessMessage,\n props: {\n last: {\n name: last,\n url: $ziggy(\"account.wish\"),\n },\n },\n };\n\n toast(component, {\n type: \"success\",\n });\n } else {\n toast(__(\"shop.wishlist.product_deleted\"), {\n type: \"warning\",\n });\n }\n\n loading.value = false;\n },\n });\n }\n }\n };\n\n return {\n item,\n action,\n loading,\n };\n },\n});\n</script>"],"names":["props","last","setup","translate","window","__","_createElementBlock","_hoisted_1","_createElementVNode","$setup","href","$props","url","style","defineComponent","id","Number","loading","ref","toast","useToast","store","useStore","item","computed","getters","auth","action","value","dispatch","component","SuccessMessage","name","$ziggy","type","commit","_ctx","onClick","title","_renderSlot","product","_hoisted_2"],"mappings":"sFAkBe,CACXA,MAAO,CACHC,KAAM,MAEVC,uBAGW,CACHC,UAHcC,OAAOC,eCtBlB,gGAAXC,2BAAAC,GACIC,kDAEQC,2EAKRD,0BACKE,KAAMC,OAAKC,UACN,iBACNC,MAAA,mEACIJ,2CCOhB,MAA6BK,kBAAgB,CACzCd,MAAO,CACHe,GAAIC,QAERd,eAAMF,OACIiB,EAAUC,OAAI,GACdC,EAAQC,aACRC,EAAQC,aACRC,EAAOC,YAAS,kBAAMH,EAAMI,QAAQ,iBAAiBzB,EAAMe,OAC3DW,EAAOF,YAAS,kBAAMH,EAAMI,QAAQ,cACpCxB,EAAOuB,YAAS,kBAAMH,EAAMI,QAAQ,0BAuCnC,CACHF,KAAAA,EACAI,OAvCW,WACNV,EAAQW,QACJF,EAAKE,OAGNX,EAAQW,OAAQ,EAEhBP,EAAMQ,SAAS,kBAAmB,CAC9Bd,GAAIf,EAAMe,WACD,cACDQ,EAAKK,MAAO,KACNE,EAAY,CACdA,UAAWC,EACX/B,MAAO,CACHC,KAAM,CACF+B,KAAM/B,EACNW,IAAKqB,OAAO,mBAKxBd,EAAMW,EAAW,CACbI,KAAM,iBAGVf,EAAMd,GAAG,iCAAkC,CACvC6B,KAAM,YAIdjB,EAAQW,OAAQ,MA3BxBP,EAAMc,OAAO,aAAc,WAqCnClB,QAAAA,oBChEAT,kCAAW,kBACPA,yCAAgB,uEAR5BF,uDACU,gCAEwB8B,4BAA4BA,UADzDC,sCAAOD,wCAEPE,MAAOF,4BAERG,iCAAOC,QAASJ,SAAhB,kBACIK"}
package/dist/global.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var n={price:function(e){var n=0==$env.format.price.decimals?Math.round(e):(e/1).toFixed(2).replace(".",$env.format.price.decPoint);return $env.format.price.symbol.replace("#",n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,$env.format.price.thousandsSep))}},r=e(require("axios")).default.create({withCredentials:!0});function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}exports.filters=n,exports.http=r,exports.logger=function(e,n){if(!e||"string"!=typeof e||e instanceof String)throw new Error("[logPostURL] is required param. It must be a String.");var r=e,o=n;function i(e,n){if(!r)throw new Error("[url] is not defined. You need to initialise logger first.");var t={},i=e+"\n\nClient info:\nURL: "+window.location+"\nCLN: "+window.navigator.userAgent+"\nX*Y: "+window.innerWidth+"x"+window.innerHeight;n?t=Object.assign({},o,{errlevel:n,message:i}):t.message=i,$http.post(r,t)}window.onerror=function(e,n,r,o,a){var s;"ResizeObserver loop limit exceeded"!==e&&(s=e&&n&&r&&o?"ERROR: \n: "+e+" \n\nat file: "+n+" \nat line:"+r+" \nat col: "+o:null!==e&&"object"===t(e)?"EventError: \n"+(e.message?e.message:" -- ")+" \n\nat file: "+(e.filename?e.filename:" -- ")+" \nat line: "+(e.lineno?e.lineno:" -- ")+" \nat col: "+(e.colno?e.colno:" -- ")+" \n\nstack: "+(e.error&&e.error.stack?e.error.stack:" -- "):e+" \n\nlocation: "+n+(o?" \nposition: "+o:"")+" \n\nerrorObj: "+(null!==e&&"object"===t(e)?JSON.stringify(a):a),a&&a.stack&&(s+=" \n\nStack: "+a.stack),s&&i(s,"error"))},window.addEventListener("unhandledrejection",(function(e){e&&e.reason&&i("Promise unhandled error \nmessage: "+e.reason.message+" \n\nstack: "+e.reason.stack,"error")}))};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r={filters:{price:function(e){var n=0==$env.format.price.decimals?Math.round(e):(e/1).toFixed(2).replace(".",$env.format.price.decPoint);return $env.format.price.symbol.replace("#",n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,$env.format.price.thousandsSep))}},http:e(require("axios")).default.create({withCredentials:!0}),logger:function(e,r){if(!e||"string"!=typeof e||e instanceof String)throw new Error("[logPostURL] is required param. It must be a String.");var t=e,o=r;function i(e,n){if(!t)throw new Error("[url] is not defined. You need to initialise logger first.");var r={},i=e+"\n\nClient info:\nURL: "+window.location+"\nCLN: "+window.navigator.userAgent+"\nX*Y: "+window.innerWidth+"x"+window.innerHeight;n?r=Object.assign({},o,{errlevel:n,message:i}):r.message=i,$http.post(t,r)}window.onerror=function(e,r,t,o,a){var s;"ResizeObserver loop limit exceeded"!==e&&(s=e&&r&&t&&o?"ERROR: \n: "+e+" \n\nat file: "+r+" \nat line:"+t+" \nat col: "+o:null!==e&&"object"===n(e)?"EventError: \n"+(e.message?e.message:" -- ")+" \n\nat file: "+(e.filename?e.filename:" -- ")+" \nat line: "+(e.lineno?e.lineno:" -- ")+" \nat col: "+(e.colno?e.colno:" -- ")+" \n\nstack: "+(e.error&&e.error.stack?e.error.stack:" -- "):e+" \n\nlocation: "+r+(o?" \nposition: "+o:"")+" \n\nerrorObj: "+(null!==e&&"object"===n(e)?JSON.stringify(a):a),a&&a.stack&&(s+=" \n\nStack: "+a.stack),s&&i(s,"error"))},window.addEventListener("unhandledrejection",(function(e){e&&e.reason&&i("Promise unhandled error \nmessage: "+e.reason.message+" \n\nstack: "+e.reason.stack,"error")}))}};module.exports=r;
2
2
  //# sourceMappingURL=global.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global.js","sources":["../src/global/modules/filters.js","../src/global/modules/http.js","../src/global/modules/logger.js"],"sourcesContent":["export default {\n price(value) {\n let val = $env.format.price.decimals == 0 ? Math.round(value) : (value / 1).toFixed(2).replace('.', $env.format.price.decPoint);\n\n return $env.format.price.symbol.replace('#', val.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, $env.format.price.thousandsSep))\n }\n}","import axios from 'axios';\n\nlet http = axios.create({\n withCredentials: true\n});\n\n// http.interceptors.response.use(response => response,\n// function (error) {\n// if (error.config.hasOwnProperty('errorHandle') && error.config.errorHandle === false) {\n// return Promise.reject(error);\n// }\n\n// if (error.response) {\n// console.error(error.response.data.message);\n// }\n// }\n// )\n\n// http.defaults.headers.common = {\n// 'X-Requested-With': 'XMLHttpRequest',\n// 'X-CSRF-TOKEN': document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content')\n// }\n\nexport default http;","export default function logger(logPostURL, logDefaults) {\n if (!logPostURL || typeof logPostURL !== 'string' || logPostURL instanceof String) {\n throw new Error('[logPostURL] is required param. It must be a String.');\n }\n\n let url = logPostURL;\n let defaults = logDefaults;\n\n function sendMessage(errorText, errLevel) {\n if (!url) {\n throw new Error('[url] is not defined. You need to initialise logger first.');\n }\n\n let requestData = {};\n let message = errorText + getClientInfo();\n\n if (errLevel) {\n requestData = Object.assign({}, defaults, {\n errlevel: errLevel,\n message: message\n });\n } else {\n requestData.message = message;\n }\n\n $http.post(url, requestData);\n }\n\n function getClientInfo() {\n return '\\n\\nClient info:' +\n '\\nURL: ' + window.location +\n '\\nCLN: ' + window.navigator.userAgent +\n '\\nX*Y: ' + window.innerWidth + 'x' + window.innerHeight;\n }\n\n window.onerror = function (type, location, line, position, errorObj) {\n let message;\n\n if (type === 'ResizeObserver loop limit exceeded') {\n return;\n }\n\n if (type && location && line && position) {\n message = 'ERROR:' +\n ' \\n: ' + type +\n ' \\n\\nat file: ' + location + ' ' +\n ' \\nat line:' + line +\n ' \\nat col: ' + position;\n } else if (type !== null && typeof type === 'object') {\n message = 'EventError:' +\n ' \\n' + ((type.message) ? type.message : ' -- ') +\n ' \\n\\nat file: ' + ((type.filename) ? type.filename : ' -- ') +\n ' \\nat line: ' + ((type.lineno) ? type.lineno : ' -- ') +\n ' \\nat col: ' + ((type.colno) ? type.colno : ' -- ') +\n ' \\n\\nstack: ' + ((type.error && type.error.stack) ? type.error.stack : ' -- ');\n } else {\n message = type +\n ' \\n\\nlocation: ' + location +\n (position ? ' \\nposition: ' + position : '') +\n ' \\n\\nerrorObj: ' + ((type !== null && typeof type === 'object') ? JSON.stringify(errorObj) : errorObj);\n }\n\n if (errorObj && errorObj.stack) {\n message += ' \\n\\nStack: ' + errorObj.stack;\n }\n\n if (message) {\n sendMessage(message, 'error');\n }\n };\n\n window.addEventListener(\"unhandledrejection\", function (err) {\n if (err && err.reason) {\n let message = 'Promise unhandled error' +\n ' \\nmessage: ' + err.reason.message +\n ' \\n\\nstack: ' + err.reason.stack;\n\n sendMessage(message, 'error');\n }\n });\n}"],"names":["price","value","val","$env","format","decimals","Math","round","toFixed","replace","decPoint","symbol","toString","thousandsSep","http","create","withCredentials","logPostURL","logDefaults","String","Error","url","defaults","sendMessage","errorText","errLevel","requestData","message","window","location","navigator","userAgent","innerWidth","innerHeight","Object","assign","errlevel","$http","post","onerror","type","line","position","errorObj","_typeof","filename","lineno","colno","error","stack","JSON","stringify","addEventListener","err","reason"],"mappings":"kJAAe,CACXA,eAAMC,OACEC,EAAoC,GAA9BC,KAAKC,OAAOJ,MAAMK,SAAgBC,KAAKC,MAAMN,IAAUA,EAAQ,GAAGO,QAAQ,GAAGC,QAAQ,IAAKN,KAAKC,OAAOJ,MAAMU,iBAE/GP,KAAKC,OAAOJ,MAAMW,OAAOF,QAAQ,IAAKP,EAAIU,WAAWH,QAAQ,wBAAyBN,KAAKC,OAAOJ,MAAMa,iBCFnHC,8BAAaC,OAAO,CACpBC,iBAAiB,yRCHN,SAAgBC,EAAYC,OAClCD,GAAoC,iBAAfA,GAA2BA,aAAsBE,aACjE,IAAIC,MAAM,4DAGhBC,EAAMJ,EACNK,EAAWJ,WAENK,EAAYC,EAAWC,OACvBJ,QACK,IAAID,MAAM,kEAGhBM,EAAc,GACdC,EAAUH,EAeP,0BACSI,OAAOC,SACnB,UAAYD,OAAOE,UAAUC,UAC7B,UAAYH,OAAOI,WAAa,IAAMJ,OAAOK,YAhB7CR,EACAC,EAAcQ,OAAOC,OAAO,GAAIb,EAAU,CACtCc,SAAUX,EACVE,QAASA,IAGbD,EAAYC,QAAUA,EAG1BU,MAAMC,KAAKjB,EAAKK,GAUpBE,OAAOW,QAAU,SAAUC,EAAMX,EAAUY,EAAMC,EAAUC,OACnDhB,EAES,uCAATa,IAKAb,EADAa,GAAQX,GAAYY,GAAQC,EAClB,cACIF,EACV,iBAAmBX,EAFb,eAGUY,EAChB,cAAgBC,EACJ,OAATF,GAAiC,WAAhBI,EAAOJ,GACrB,kBACIA,EAAKb,QAAWa,EAAKb,QAAU,QACzC,kBAAqBa,EAAKK,SAAYL,EAAKK,SAAW,QACtD,gBAAmBL,EAAKM,OAAUN,EAAKM,OAAS,QAChD,eAAkBN,EAAKO,MAASP,EAAKO,MAAQ,QAC7C,gBAAmBP,EAAKQ,OAASR,EAAKQ,MAAMC,MAAST,EAAKQ,MAAMC,MAAQ,QAElET,EACN,kBAAoBX,GACnBa,EAAW,gBAAkBA,EAAW,IACzC,mBAA+B,OAATF,GAAiC,WAAhBI,EAAOJ,GAAqBU,KAAKC,UAAUR,GAAYA,GAGlGA,GAAYA,EAASM,QACrBtB,GAAW,eAAiBgB,EAASM,OAGrCtB,GACAJ,EAAYI,EAAS,WAI7BC,OAAOwB,iBAAiB,sBAAsB,SAAUC,GAChDA,GAAOA,EAAIC,QAKX/B,EAJc,sCACO8B,EAAIC,OAAO3B,QAC5B,eAAiB0B,EAAIC,OAAOL,MAEX"}
1
+ {"version":3,"file":"global.js","sources":["../src/global/index.js","../src/global/modules/filters.js","../src/global/modules/http.js","../src/global/modules/logger.js"],"sourcesContent":["import filters from \"./modules/filters\";\nimport http from \"./modules/http\";\nimport logger from \"./modules/logger\";\n\nexport default {\n filters,\n http,\n logger,\n};","export default {\n price(value) {\n let val = $env.format.price.decimals == 0 ? Math.round(value) : (value / 1).toFixed(2).replace('.', $env.format.price.decPoint);\n\n return $env.format.price.symbol.replace('#', val.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, $env.format.price.thousandsSep))\n }\n}","import axios from 'axios';\n\nlet http = axios.create({\n withCredentials: true\n});\n\n// http.interceptors.response.use(response => response,\n// function (error) {\n// if (error.config.hasOwnProperty('errorHandle') && error.config.errorHandle === false) {\n// return Promise.reject(error);\n// }\n\n// if (error.response) {\n// console.error(error.response.data.message);\n// }\n// }\n// )\n\n// http.defaults.headers.common = {\n// 'X-Requested-With': 'XMLHttpRequest',\n// 'X-CSRF-TOKEN': document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content')\n// }\n\nexport default http;","export default function logger(logPostURL, logDefaults) {\n if (!logPostURL || typeof logPostURL !== 'string' || logPostURL instanceof String) {\n throw new Error('[logPostURL] is required param. It must be a String.');\n }\n\n let url = logPostURL;\n let defaults = logDefaults;\n\n function sendMessage(errorText, errLevel) {\n if (!url) {\n throw new Error('[url] is not defined. You need to initialise logger first.');\n }\n\n let requestData = {};\n let message = errorText + getClientInfo();\n\n if (errLevel) {\n requestData = Object.assign({}, defaults, {\n errlevel: errLevel,\n message: message\n });\n } else {\n requestData.message = message;\n }\n\n $http.post(url, requestData);\n }\n\n function getClientInfo() {\n return '\\n\\nClient info:' +\n '\\nURL: ' + window.location +\n '\\nCLN: ' + window.navigator.userAgent +\n '\\nX*Y: ' + window.innerWidth + 'x' + window.innerHeight;\n }\n\n window.onerror = function (type, location, line, position, errorObj) {\n let message;\n\n if (type === 'ResizeObserver loop limit exceeded') {\n return;\n }\n\n if (type && location && line && position) {\n message = 'ERROR:' +\n ' \\n: ' + type +\n ' \\n\\nat file: ' + location + ' ' +\n ' \\nat line:' + line +\n ' \\nat col: ' + position;\n } else if (type !== null && typeof type === 'object') {\n message = 'EventError:' +\n ' \\n' + ((type.message) ? type.message : ' -- ') +\n ' \\n\\nat file: ' + ((type.filename) ? type.filename : ' -- ') +\n ' \\nat line: ' + ((type.lineno) ? type.lineno : ' -- ') +\n ' \\nat col: ' + ((type.colno) ? type.colno : ' -- ') +\n ' \\n\\nstack: ' + ((type.error && type.error.stack) ? type.error.stack : ' -- ');\n } else {\n message = type +\n ' \\n\\nlocation: ' + location +\n (position ? ' \\nposition: ' + position : '') +\n ' \\n\\nerrorObj: ' + ((type !== null && typeof type === 'object') ? JSON.stringify(errorObj) : errorObj);\n }\n\n if (errorObj && errorObj.stack) {\n message += ' \\n\\nStack: ' + errorObj.stack;\n }\n\n if (message) {\n sendMessage(message, 'error');\n }\n };\n\n window.addEventListener(\"unhandledrejection\", function (err) {\n if (err && err.reason) {\n let message = 'Promise unhandled error' +\n ' \\nmessage: ' + err.reason.message +\n ' \\n\\nstack: ' + err.reason.stack;\n\n sendMessage(message, 'error');\n }\n });\n}"],"names":["filters","price","value","val","$env","format","decimals","Math","round","toFixed","replace","decPoint","symbol","toString","thousandsSep","http","create","withCredentials","logger","logPostURL","logDefaults","String","Error","url","defaults","sendMessage","errorText","errLevel","requestData","message","window","location","navigator","userAgent","innerWidth","innerHeight","Object","assign","errlevel","$http","post","onerror","type","line","position","errorObj","_typeof","filename","lineno","colno","error","stack","JSON","stringify","addEventListener","err","reason"],"mappings":"0TAIA,MAAe,CACXA,QCLW,CACXC,eAAMC,OACEC,EAAoC,GAA9BC,KAAKC,OAAOJ,MAAMK,SAAgBC,KAAKC,MAAMN,IAAUA,EAAQ,GAAGO,QAAQ,GAAGC,QAAQ,IAAKN,KAAKC,OAAOJ,MAAMU,iBAE/GP,KAAKC,OAAOJ,MAAMW,OAAOF,QAAQ,IAAKP,EAAIU,WAAWH,QAAQ,wBAAyBN,KAAKC,OAAOJ,MAAMa,iBDEnHC,iCEJaC,OAAO,CACpBC,iBAAiB,IFIjBC,OGPW,SAAgBC,EAAYC,OAClCD,GAAoC,iBAAfA,GAA2BA,aAAsBE,aACjE,IAAIC,MAAM,4DAGhBC,EAAMJ,EACNK,EAAWJ,WAENK,EAAYC,EAAWC,OACvBJ,QACK,IAAID,MAAM,kEAGhBM,EAAc,GACdC,EAAUH,EAeP,0BACSI,OAAOC,SACnB,UAAYD,OAAOE,UAAUC,UAC7B,UAAYH,OAAOI,WAAa,IAAMJ,OAAOK,YAhB7CR,EACAC,EAAcQ,OAAOC,OAAO,GAAIb,EAAU,CACtCc,SAAUX,EACVE,QAASA,IAGbD,EAAYC,QAAUA,EAG1BU,MAAMC,KAAKjB,EAAKK,GAUpBE,OAAOW,QAAU,SAAUC,EAAMX,EAAUY,EAAMC,EAAUC,OACnDhB,EAES,uCAATa,IAKAb,EADAa,GAAQX,GAAYY,GAAQC,EAClB,cACIF,EACV,iBAAmBX,EAFb,eAGUY,EAChB,cAAgBC,EACJ,OAATF,GAAiC,WAAhBI,EAAOJ,GACrB,kBACIA,EAAKb,QAAWa,EAAKb,QAAU,QACzC,kBAAqBa,EAAKK,SAAYL,EAAKK,SAAW,QACtD,gBAAmBL,EAAKM,OAAUN,EAAKM,OAAS,QAChD,eAAkBN,EAAKO,MAASP,EAAKO,MAAQ,QAC7C,gBAAmBP,EAAKQ,OAASR,EAAKQ,MAAMC,MAAST,EAAKQ,MAAMC,MAAQ,QAElET,EACN,kBAAoBX,GACnBa,EAAW,gBAAkBA,EAAW,IACzC,mBAA+B,OAATF,GAAiC,WAAhBI,EAAOJ,GAAqBU,KAAKC,UAAUR,GAAYA,GAGlGA,GAAYA,EAASM,QACrBtB,GAAW,eAAiBgB,EAASM,OAGrCtB,GACAJ,EAAYI,EAAS,WAI7BC,OAAOwB,iBAAiB,sBAAsB,SAAUC,GAChDA,GAAOA,EAAIC,QAKX/B,EAJc,sCACO8B,EAAIC,OAAO3B,QAC5B,eAAiB0B,EAAIC,OAAOL,MAEX"}
package/dist/helpers.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("vue"),e=require("yup"),t=require("@perevorot/shop/dist/forms/FormCheckbox"),o=require("@perevorot/shop/dist/forms/FormCheckboxes"),n=require("@perevorot/shop/dist/forms/FormPassword"),a=require("@perevorot/shop/dist/forms/FormRadio"),i=require("@perevorot/shop/dist/forms/FormRating"),u=require("@perevorot/shop/dist/forms/FormSection"),s=require("@perevorot/shop/dist/forms/FormSelect"),l=require("@perevorot/shop/dist/forms/FormSwitch"),f=require("@perevorot/shop/dist/forms/FormText"),c=require("@perevorot/shop/dist/forms/FormTextarea");function m(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}function d(r){if(r&&r.__esModule)return r;var e=Object.create(null);return r&&Object.keys(r).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,o.get?o:{enumerable:!0,get:function(){return r[t]}})}})),e.default=r,Object.freeze(e)}var p=d(e),h=m(t),v=m(o),y=m(n),b=m(a),F=m(i),g=m(u),S=m(s),q=m(l),x=m(f),w=m(c);function j(r,e){return function(r){if(Array.isArray(r))return r}(r)||function(r,e){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null==t)return;var o,n,a=[],i=!0,u=!1;try{for(t=t.call(r);!(i=(o=t.next()).done)&&(a.push(o.value),!e||a.length!==e);i=!0);}catch(r){u=!0,n=r}finally{try{i||null==t.return||t.return()}finally{if(u)throw n}}return a}(r,e)||k(r,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(r){return function(r){if(Array.isArray(r))return A(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||k(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(r,e){if(r){if("string"==typeof r)return A(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?A(r,e):void 0}}function A(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,o=new Array(e);t<e;t++)o[t]=r[t];return o}p.addMethod(p.string,"minOrEmpty",(function(r,e){return this.test({name:"minOrEmpty",exclusive:!0,message:e,params:{min:r},test:function(e){return""==e||e.length>=r}})})),exports.formParse=function(e){var t={FormCheckbox:h.default,FormCheckboxes:v.default,FormPassword:y.default,FormRadio:b.default,FormRating:F.default,FormSection:g.default,FormSelect:S.default,FormSwitch:q.default,FormText:x.default,FormTextarea:w.default},o={},n={},a={};if(e.form)for(var i=function(){var e=j(s[u],2),i=e[0],l=e[1];if("_"!=i.charAt(0)){var f;switch(l.component){case"FormCheckbox":case"FormSwitch":f=!1;break;case"FormCheckboxes":f=[];break;default:f=""}o[i]=f}var c=t[l.component];r.markRaw(c);var m={component:c,label:l.label,validations:{}};if(l.validation){var d=p;l.validation.forEach((function(r){var e=[],t=r;if(t.split(":").length>1){var o=r.split(":");t=o.shift(),e=JSON.parse(o)}if("required"==t&&(m.validations.required=!0),"phone"==t&&m.validations.required){t="matches",e=[/^\(\d{3}\) \d{3}\-\d{2}\-\d{2}$/,__("auth.validation.phone")]}"array"!=t&&e.push(__("auth.validation."+t));try{var n;d=(n=d)[t].apply(n,O(e))}catch(r){}})),["mask","placeholder","description","type","list","model","store"].forEach((function(r){l[r]&&(m[r]=l[r])})),a[i]=d}n[i]=m},u=0,s=Object.entries(e.form);u<s.length;u++)i();return{schema:n,model:o,validation:p.object().shape(a)}},exports.pluralize=function(r,e){return r+" "+e[r%100>4&&r%100<20?2:[2,0,1,1,1,2][Math.min(r%10,5)]]};
1
+ "use strict";var r=require("vue"),e=require("yup"),t=require("@perevorot/shop/dist/forms/FormCheckbox"),o=require("@perevorot/shop/dist/forms/FormCheckboxes"),n=require("@perevorot/shop/dist/forms/FormPassword"),a=require("@perevorot/shop/dist/forms/FormRadio"),i=require("@perevorot/shop/dist/forms/FormRating"),u=require("@perevorot/shop/dist/forms/FormSection"),s=require("@perevorot/shop/dist/forms/FormSelect"),l=require("@perevorot/shop/dist/forms/FormSwitch"),f=require("@perevorot/shop/dist/forms/FormText"),c=require("@perevorot/shop/dist/forms/FormTextarea");function m(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}function d(r){if(r&&r.__esModule)return r;var e=Object.create(null);return r&&Object.keys(r).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,o.get?o:{enumerable:!0,get:function(){return r[t]}})}})),e.default=r,Object.freeze(e)}var p=d(e),h=m(t),v=m(o),y=m(n),b=m(a),F=m(i),g=m(u),S=m(s),q=m(l),w=m(f),x=m(c);function j(r,e){return function(r){if(Array.isArray(r))return r}(r)||function(r,e){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null==t)return;var o,n,a=[],i=!0,u=!1;try{for(t=t.call(r);!(i=(o=t.next()).done)&&(a.push(o.value),!e||a.length!==e);i=!0);}catch(r){u=!0,n=r}finally{try{i||null==t.return||t.return()}finally{if(u)throw n}}return a}(r,e)||k(r,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(r){return function(r){if(Array.isArray(r))return A(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||k(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(r,e){if(r){if("string"==typeof r)return A(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?A(r,e):void 0}}function A(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,o=new Array(e);t<e;t++)o[t]=r[t];return o}p.addMethod(p.string,"minOrEmpty",(function(r,e){return this.test({name:"minOrEmpty",exclusive:!0,message:e,params:{min:r},test:function(e){return""==e||e.length>=r}})}));var C={pluralize:function(r,e){return r+" "+e[r%100>4&&r%100<20?2:[2,0,1,1,1,2][Math.min(r%10,5)]]},formParse:function(e){var t={FormCheckbox:h.default,FormCheckboxes:v.default,FormPassword:y.default,FormRadio:b.default,FormRating:F.default,FormSection:g.default,FormSelect:S.default,FormSwitch:q.default,FormText:w.default,FormTextarea:x.default},o={},n={},a={};if(e.form)for(var i=function(){var e=j(s[u],2),i=e[0],l=e[1];if("_"!=i.charAt(0)){var f;switch(l.component){case"FormCheckbox":case"FormSwitch":f=!1;break;case"FormCheckboxes":f=[];break;default:f=""}o[i]=f}var c=t[l.component];r.markRaw(c);var m={component:c,label:l.label,validations:{}};if(l.validation){var d=p;l.validation.forEach((function(r){var e=[],t=r;if(t.split(":").length>1){var o=r.split(":");t=o.shift(),e=JSON.parse(o)}if("required"==t&&(m.validations.required=!0),"phone"==t&&m.validations.required){t="matches",e=[/^\(\d{3}\) \d{3}\-\d{2}\-\d{2}$/,__("auth.validation.phone")]}"array"!=t&&e.push(__("auth.validation."+t));try{var n;d=(n=d)[t].apply(n,O(e))}catch(r){}})),["mask","placeholder","description","type","list","model","store"].forEach((function(r){l[r]&&(m[r]=l[r])})),a[i]=d}n[i]=m},u=0,s=Object.entries(e.form);u<s.length;u++)i();return{schema:n,model:o,validation:p.object().shape(a)}}};module.exports=C;
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../src/helpers/modules/formParse.js","../src/helpers/modules/pluralize.js"],"sourcesContent":["import {\n markRaw\n} from \"vue\";\nimport * as yup from \"yup\";\n\nimport FormCheckbox from '@perevorot/shop/dist/forms/FormCheckbox';\nimport FormCheckboxes from '@perevorot/shop/dist/forms/FormCheckboxes';\nimport FormPassword from '@perevorot/shop/dist/forms/FormPassword';\nimport FormRadio from '@perevorot/shop/dist/forms/FormRadio';\nimport FormRating from '@perevorot/shop/dist/forms/FormRating';\nimport FormSection from '@perevorot/shop/dist/forms/FormSection';\nimport FormSelect from '@perevorot/shop/dist/forms/FormSelect';\nimport FormSwitch from '@perevorot/shop/dist/forms/FormSwitch';\nimport FormText from '@perevorot/shop/dist/forms/FormText';\nimport FormTextarea from '@perevorot/shop/dist/forms/FormTextarea';\n\nyup.addMethod(yup.string, 'minOrEmpty', function (min, msg) {\n return this.test({\n name: 'minOrEmpty',\n exclusive: true,\n message: msg,\n params: {\n min: min\n },\n test: value => value == '' || value.length >= min\n });\n});\n\nexport default function formParse(json) {\n let components = {\n FormCheckbox: FormCheckbox,\n FormCheckboxes: FormCheckboxes,\n FormPassword: FormPassword,\n FormRadio: FormRadio,\n FormRating: FormRating,\n FormSection: FormSection,\n FormSelect: FormSelect,\n FormSwitch: FormSwitch,\n FormText: FormText,\n FormTextarea: FormTextarea\n };\n\n let model = {};\n let schema = {};\n let validation = {};\n\n if (json.form) {\n for (const [field, element] of Object.entries(json.form)) {\n if (field.charAt(0) != '_') {\n let value;\n\n switch (element.component) {\n case 'FormCheckbox':\n case 'FormSwitch':\n value = false;\n break;\n\n case 'FormCheckboxes':\n value = [];\n break;\n default:\n value = '';\n }\n\n model[field] = value;\n }\n\n const component = components[element.component];\n\n markRaw(component);\n\n let s = {\n component: component,\n label: element.label,\n validations: {}\n };\n\n if (element.validation) {\n let v = yup;\n\n const validations = element.validation;\n\n validations.forEach(rule => {\n let attributes = [];\n let method = rule;\n\n if (method.split(':').length > 1) {\n let ruleWithAttributes = rule.split(':')\n method = ruleWithAttributes.shift();\n\n attributes = JSON.parse(ruleWithAttributes);\n }\n\n if (method == 'required') {\n s.validations.required = true;\n }\n\n if (method == 'phone' && s.validations.required) {\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n method = 'matches';\n\n attributes = [\n phoneRegExp,\n __(\"auth.validation.phone\")\n ];\n }\n\n if (method != 'array') {\n attributes.push(__(\"auth.validation.\" + method));\n }\n\n try {\n v = v[method](...attributes);\n } catch (error) {\n\n }\n });\n\n ['mask', 'placeholder', 'description', 'type', 'list', 'model', 'store'].forEach((field) => {\n if (element[field]) {\n s[field] = element[field];\n }\n });\n\n validation[field] = v;\n }\n\n schema[field] = s;\n }\n }\n\n return {\n schema: schema,\n model: model,\n validation: yup.object().shape(validation)\n }\n}","export default function pluralize(count, words) {\n let cases = [2, 0, 1, 1, 1, 2];\n\n return count + ' ' + words[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n};"],"names":["yup","addMethod","string","min","msg","this","test","name","exclusive","message","params","value","length","json","components","FormCheckbox","FormCheckboxes","FormPassword","FormRadio","FormRating","FormSection","FormSelect","FormSwitch","FormText","FormTextarea","model","schema","validation","form","field","element","charAt","component","markRaw","s","label","validations","v","forEach","rule","attributes","method","split","ruleWithAttributes","shift","JSON","parse","required","__","push","error","Object","entries","object","shape","count","words","Math"],"mappings":"y1EAgBAA,EAAIC,UAAUD,EAAIE,OAAQ,cAAc,SAAUC,EAAKC,UAC5CC,KAAKC,KAAK,CACbC,KAAM,aACNC,WAAW,EACXC,QAASL,EACTM,OAAQ,CACJP,IAAKA,GAETG,KAAM,SAAAK,SAAkB,IAATA,GAAeA,EAAMC,QAAUT,0BAIvC,SAAmBU,OAC1BC,EAAa,CACbC,aAAcA,UACdC,eAAgBA,UAChBC,aAAcA,UACdC,UAAWA,UACXC,WAAYA,UACZC,YAAaA,UACbC,WAAYA,UACZC,WAAYA,UACZC,SAAUA,UACVC,aAAcA,WAGdC,EAAQ,GACRC,EAAS,GACTC,EAAa,MAEbd,EAAKe,0CACOC,OAAOC,UACQ,KAAnBD,EAAME,OAAO,GAAW,KACpBpB,SAEImB,EAAQE,eACP,mBACA,aACDrB,GAAQ,YAGP,iBACDA,EAAQ,iBAGRA,EAAQ,GAGhBc,EAAMI,GAASlB,MAGbqB,EAAYlB,EAAWgB,EAAQE,WAErCC,UAAQD,OAEJE,EAAI,CACJF,UAAWA,EACXG,MAAOL,EAAQK,MACfC,YAAa,OAGbN,EAAQH,WAAY,KAChBU,EAAIrC,EAEY8B,EAAQH,WAEhBW,SAAQ,SAAAC,OACZC,EAAa,GACbC,EAASF,KAETE,EAAOC,MAAM,KAAK9B,OAAS,EAAG,KAC1B+B,EAAqBJ,EAAKG,MAAM,KACpCD,EAASE,EAAmBC,QAE5BJ,EAAaK,KAAKC,MAAMH,MAGd,YAAVF,IACAP,EAAEE,YAAYW,UAAW,GAGf,SAAVN,GAAqBP,EAAEE,YAAYW,SAAU,CAG7CN,EAAS,UAETD,EAAa,CAJO,kCAMhBQ,GAAG,0BAIG,SAAVP,GACAD,EAAWS,KAAKD,GAAG,mBAAqBP,cAIxCJ,KAAIA,GAAEI,aAAWD,IACnB,MAAOU,SAKZ,OAAQ,cAAe,cAAe,OAAQ,OAAQ,QAAS,SAASZ,SAAQ,SAACT,GAC1EC,EAAQD,KACRK,EAAEL,GAASC,EAAQD,OAI3BF,EAAWE,GAASQ,EAGxBX,EAAOG,GAASK,SAjFWiB,OAAOC,QAAQvC,EAAKe,+BAqFhD,CACHF,OAAQA,EACRD,MAAOA,EACPE,WAAY3B,EAAIqD,SAASC,MAAM3B,uBCvIxB,SAAmB4B,EAAOC,UAG9BD,EAAQ,IAAMC,EAAMD,EAAQ,IAAM,GAAKA,EAAQ,IAAM,GAAK,EAFrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAE+CE,KAAKtD,IAAIoD,EAAQ,GAAI"}
1
+ {"version":3,"file":"helpers.js","sources":["../src/helpers/modules/formParse.js","../src/helpers/index.js","../src/helpers/modules/pluralize.js"],"sourcesContent":["import {\n markRaw\n} from \"vue\";\nimport * as yup from \"yup\";\n\nimport FormCheckbox from '@perevorot/shop/dist/forms/FormCheckbox';\nimport FormCheckboxes from '@perevorot/shop/dist/forms/FormCheckboxes';\nimport FormPassword from '@perevorot/shop/dist/forms/FormPassword';\nimport FormRadio from '@perevorot/shop/dist/forms/FormRadio';\nimport FormRating from '@perevorot/shop/dist/forms/FormRating';\nimport FormSection from '@perevorot/shop/dist/forms/FormSection';\nimport FormSelect from '@perevorot/shop/dist/forms/FormSelect';\nimport FormSwitch from '@perevorot/shop/dist/forms/FormSwitch';\nimport FormText from '@perevorot/shop/dist/forms/FormText';\nimport FormTextarea from '@perevorot/shop/dist/forms/FormTextarea';\n\nyup.addMethod(yup.string, 'minOrEmpty', function (min, msg) {\n return this.test({\n name: 'minOrEmpty',\n exclusive: true,\n message: msg,\n params: {\n min: min\n },\n test: value => value == '' || value.length >= min\n });\n});\n\nexport default function formParse(json) {\n let components = {\n FormCheckbox: FormCheckbox,\n FormCheckboxes: FormCheckboxes,\n FormPassword: FormPassword,\n FormRadio: FormRadio,\n FormRating: FormRating,\n FormSection: FormSection,\n FormSelect: FormSelect,\n FormSwitch: FormSwitch,\n FormText: FormText,\n FormTextarea: FormTextarea\n };\n\n let model = {};\n let schema = {};\n let validation = {};\n\n if (json.form) {\n for (const [field, element] of Object.entries(json.form)) {\n if (field.charAt(0) != '_') {\n let value;\n\n switch (element.component) {\n case 'FormCheckbox':\n case 'FormSwitch':\n value = false;\n break;\n\n case 'FormCheckboxes':\n value = [];\n break;\n default:\n value = '';\n }\n\n model[field] = value;\n }\n\n const component = components[element.component];\n\n markRaw(component);\n\n let s = {\n component: component,\n label: element.label,\n validations: {}\n };\n\n if (element.validation) {\n let v = yup;\n\n const validations = element.validation;\n\n validations.forEach(rule => {\n let attributes = [];\n let method = rule;\n\n if (method.split(':').length > 1) {\n let ruleWithAttributes = rule.split(':')\n method = ruleWithAttributes.shift();\n\n attributes = JSON.parse(ruleWithAttributes);\n }\n\n if (method == 'required') {\n s.validations.required = true;\n }\n\n if (method == 'phone' && s.validations.required) {\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n method = 'matches';\n\n attributes = [\n phoneRegExp,\n __(\"auth.validation.phone\")\n ];\n }\n\n if (method != 'array') {\n attributes.push(__(\"auth.validation.\" + method));\n }\n\n try {\n v = v[method](...attributes);\n } catch (error) {\n\n }\n });\n\n ['mask', 'placeholder', 'description', 'type', 'list', 'model', 'store'].forEach((field) => {\n if (element[field]) {\n s[field] = element[field];\n }\n });\n\n validation[field] = v;\n }\n\n schema[field] = s;\n }\n }\n\n return {\n schema: schema,\n model: model,\n validation: yup.object().shape(validation)\n }\n}","import pluralize from \"./modules/pluralize\";\nimport formParse from \"./modules/formParse\";\n\nexport default {\n pluralize,\n formParse,\n};","export default function pluralize(count, words) {\n let cases = [2, 0, 1, 1, 1, 2];\n\n return count + ' ' + words[count % 100 > 4 && count % 100 < 20 ? 2 : cases[Math.min(count % 10, 5)]];\n};"],"names":["yup","addMethod","string","min","msg","this","test","name","exclusive","message","params","value","length","pluralize","count","words","Math","formParse","json","components","FormCheckbox","FormCheckboxes","FormPassword","FormRadio","FormRating","FormSection","FormSelect","FormSwitch","FormText","FormTextarea","model","schema","validation","form","field","element","charAt","component","markRaw","s","label","validations","v","forEach","rule","attributes","method","split","ruleWithAttributes","shift","JSON","parse","required","__","push","error","Object","entries","object","shape"],"mappings":"kyEAgBAA,EAAIC,UAAUD,EAAIE,OAAQ,cAAc,SAAUC,EAAKC,UAC5CC,KAAKC,KAAK,CACbC,KAAM,aACNC,WAAW,EACXC,QAASL,EACTM,OAAQ,CACJP,IAAKA,GAETG,KAAM,SAAAK,SAAkB,IAATA,GAAeA,EAAMC,QAAUT,QCrBtD,MAAe,CACXU,UCJW,SAAmBC,EAAOC,UAG9BD,EAAQ,IAAMC,EAAMD,EAAQ,IAAM,GAAKA,EAAQ,IAAM,GAAK,EAFrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAE+CE,KAAKb,IAAIW,EAAQ,GAAI,MDEhGG,UDuBW,SAAmBC,OAC1BC,EAAa,CACbC,aAAcA,UACdC,eAAgBA,UAChBC,aAAcA,UACdC,UAAWA,UACXC,WAAYA,UACZC,YAAaA,UACbC,WAAYA,UACZC,WAAYA,UACZC,SAAUA,UACVC,aAAcA,WAGdC,EAAQ,GACRC,EAAS,GACTC,EAAa,MAEbd,EAAKe,0CACOC,OAAOC,UACQ,KAAnBD,EAAME,OAAO,GAAW,KACpBzB,SAEIwB,EAAQE,eACP,mBACA,aACD1B,GAAQ,YAGP,iBACDA,EAAQ,iBAGRA,EAAQ,GAGhBmB,EAAMI,GAASvB,MAGb0B,EAAYlB,EAAWgB,EAAQE,WAErCC,UAAQD,OAEJE,EAAI,CACJF,UAAWA,EACXG,MAAOL,EAAQK,MACfC,YAAa,OAGbN,EAAQH,WAAY,KAChBU,EAAI1C,EAEYmC,EAAQH,WAEhBW,SAAQ,SAAAC,OACZC,EAAa,GACbC,EAASF,KAETE,EAAOC,MAAM,KAAKnC,OAAS,EAAG,KAC1BoC,EAAqBJ,EAAKG,MAAM,KACpCD,EAASE,EAAmBC,QAE5BJ,EAAaK,KAAKC,MAAMH,MAGd,YAAVF,IACAP,EAAEE,YAAYW,UAAW,GAGf,SAAVN,GAAqBP,EAAEE,YAAYW,SAAU,CAG7CN,EAAS,UAETD,EAAa,CAJO,kCAMhBQ,GAAG,0BAIG,SAAVP,GACAD,EAAWS,KAAKD,GAAG,mBAAqBP,cAIxCJ,KAAIA,GAAEI,aAAWD,IACnB,MAAOU,SAKZ,OAAQ,cAAe,cAAe,OAAQ,OAAQ,QAAS,SAASZ,SAAQ,SAACT,GAC1EC,EAAQD,KACRK,EAAEL,GAASC,EAAQD,OAI3BF,EAAWE,GAASQ,EAGxBX,EAAOG,GAASK,SAjFWiB,OAAOC,QAAQvC,EAAKe,+BAqFhD,CACHF,OAAQA,EACRD,MAAOA,EACPE,WAAYhC,EAAI0D,SAASC,MAAM3B"}