@perevorot/shop 2.0.156 → 2.0.158

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.
Files changed (89) hide show
  1. package/dist/api.js.map +1 -1
  2. package/dist/app.js.map +1 -1
  3. package/dist/components/account/Account.js.map +1 -1
  4. package/dist/components/account/OrderItem.js.map +1 -1
  5. package/dist/components/account/Orders.js.map +1 -1
  6. package/dist/components/account/User.js +1 -1
  7. package/dist/components/account/User.js.map +1 -1
  8. package/dist/components/account/Viewed.js.map +1 -1
  9. package/dist/components/account/Wish.js.map +1 -1
  10. package/dist/components/auth/Confirm.js.map +1 -1
  11. package/dist/components/auth/Forget.js.map +1 -1
  12. package/dist/components/auth/Login.js +1 -1
  13. package/dist/components/auth/Login.js.map +1 -1
  14. package/dist/components/auth/Registration.js +1 -1
  15. package/dist/components/auth/Registration.js.map +1 -1
  16. package/dist/components/auth/Reset.js.map +1 -1
  17. package/dist/components/auth/User.js +1 -1
  18. package/dist/components/auth/User.js.map +1 -1
  19. package/dist/components/auth/UserTrigger.js.map +1 -1
  20. package/dist/components/shop/Catalog.js.map +1 -1
  21. package/dist/components/shop/CodeCopy.js +1 -1
  22. package/dist/components/shop/CodeCopy.js.map +1 -1
  23. package/dist/components/shop/Cross.js.map +1 -1
  24. package/dist/components/shop/FilterToggle.js +1 -1
  25. package/dist/components/shop/FilterToggle.js.map +1 -1
  26. package/dist/components/shop/Gallery.js.map +1 -1
  27. package/dist/components/shop/Notice.js.map +1 -1
  28. package/dist/components/shop/Pagination.js.map +1 -1
  29. package/dist/components/shop/PromoProducts.js.map +1 -1
  30. package/dist/components/shop/Search.js.map +1 -1
  31. package/dist/components/shop/bundle/Bundle.js +1 -1
  32. package/dist/components/shop/bundle/Bundle.js.map +1 -1
  33. package/dist/components/shop/bundle/BundleAdd.js.map +1 -1
  34. package/dist/components/shop/cart/Cart.js.map +1 -1
  35. package/dist/components/shop/cart/CartAdd.js.map +1 -1
  36. package/dist/components/shop/cart/CartItem.js.map +1 -1
  37. package/dist/components/shop/cart/CartTrigger.js.map +1 -1
  38. package/dist/components/shop/cart/SuccessMessage.js.map +1 -1
  39. package/dist/components/shop/compare/Compare.js.map +1 -1
  40. package/dist/components/shop/compare/CompareAdd.js.map +1 -1
  41. package/dist/components/shop/compare/CompareDelete.js.map +1 -1
  42. package/dist/components/shop/compare/CompareDeleteAll.js.map +1 -1
  43. package/dist/components/shop/compare/CompareList.js.map +1 -1
  44. package/dist/components/shop/compare/Comparsion.js.map +1 -1
  45. package/dist/components/shop/compare/ComparsionModal.js.map +1 -1
  46. package/dist/components/shop/compare/SuccessMessage.js.map +1 -1
  47. package/dist/components/shop/filters/FilterSearch.js.map +1 -1
  48. package/dist/components/shop/filters/Price.js.map +1 -1
  49. package/dist/components/shop/order/Checkout.js +1 -1
  50. package/dist/components/shop/order/Checkout.js.map +1 -1
  51. package/dist/components/shop/order/CheckoutItem.js.map +1 -1
  52. package/dist/components/shop/order/OneClick.js +1 -1
  53. package/dist/components/shop/order/OneClick.js.map +1 -1
  54. package/dist/components/shop/order/shipping/CheckoutShippingCourier.js.map +1 -1
  55. package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaAddress.js.map +1 -1
  56. package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaWarehouse.js +1 -1
  57. package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaWarehouse.js.map +1 -1
  58. package/dist/components/shop/order/shipping/CheckoutShippingPickup.js.map +1 -1
  59. package/dist/components/shop/order/shipping/CheckoutShippingUkrposhtaWarehouse.js +1 -1
  60. package/dist/components/shop/order/shipping/CheckoutShippingUkrposhtaWarehouse.js.map +1 -1
  61. package/dist/components/shop/order/shipping/OtherRecipient.js.map +1 -1
  62. package/dist/components/shop/reviews/Question.js +1 -1
  63. package/dist/components/shop/reviews/Question.js.map +1 -1
  64. package/dist/components/shop/reviews/Review.js +1 -1
  65. package/dist/components/shop/reviews/Review.js.map +1 -1
  66. package/dist/components/shop/viewed/Viewed.js.map +1 -1
  67. package/dist/components/shop/viewed/ViewedDelete.js.map +1 -1
  68. package/dist/components/shop/viewed/Viewer.js.map +1 -1
  69. package/dist/components/shop/wishlist/SuccessMessage.js.map +1 -1
  70. package/dist/components/shop/wishlist/Wishlist.js.map +1 -1
  71. package/dist/components/shop/wishlist/WishlistAdd.js.map +1 -1
  72. package/dist/components/shop/wishlist/WishlistDelete.js.map +1 -1
  73. package/dist/forms/FormCheckbox.js.map +1 -1
  74. package/dist/forms/FormCheckboxes.js.map +1 -1
  75. package/dist/forms/FormPassword.js.map +1 -1
  76. package/dist/forms/FormRadio.js.map +1 -1
  77. package/dist/forms/FormRating.js.map +1 -1
  78. package/dist/forms/FormSection.js.map +1 -1
  79. package/dist/forms/FormSelect.js.map +1 -1
  80. package/dist/forms/FormSwitch.js.map +1 -1
  81. package/dist/forms/FormText.js.map +1 -1
  82. package/dist/forms/FormTextarea.js.map +1 -1
  83. package/dist/global.js.map +1 -1
  84. package/dist/helpers.js +1 -1
  85. package/dist/helpers.js.map +1 -1
  86. package/dist/store.js +1 -1
  87. package/dist/store.js.map +1 -1
  88. package/dist/vuex.js.map +1 -1
  89. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"User.js","sources":["../../../src/components/auth/User.vue","../../../src/components/auth/User.vue?vue&type=template&id=5517ba48&lang.js"],"sourcesContent":["<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a href=\"#login\" class=\"button\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </slot>\n <div class=\"modal\" 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 <slot name=\"hero\"></slot>\n <div class=\"tabs\">\n <ul>\n <li v-bind:class=\"{\n 'is-active': modal == 'login' || modal == 'forget'\n }\">\n <a href=\"#login\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </li>\n <li v-bind:class=\"{\n 'is-active': modal == 'registration'\n }\" @click=\"register\">\n <a href=\"#register\">{{ __('auth.login.signup') }}</a>\n </li>\n </ul>\n </div>\n <keep-alive>\n <login v-if=\"modal == 'login' || modal == 'forget'\" :forget-type=\"forgetType\" :show-placeholders=\"showPlaceholders\"></login>\n </keep-alive>\n <keep-alive>\n <registration v-if=\"modal == 'registration'\"></registration>\n </keep-alive>\n <reset v-show=\"modal == 'reset'\" :show-placeholders=\"showPlaceholders\"></reset>\n </div>\n </div>\n </div>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <slot name=\"user\" :user=\"user.name ? user.name : user.email\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </slot>\n </a>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div v-for=\"(item, key) in routes\" v-bind:key=\"key\">\n <a :href=\"item.path\" v-if=\"item.text\" class=\"dropdown-item\">\n <svg class=\"icon\" v-if=\"item.icon\">\n <use :xlink:href=\"'#' + item.icon\" />\n </svg>\n <span>{{ item.text }}</span>\n <span class=\"badge\" v-if=\"item.badge\">{{ item.badge }}</span>\n </a>\n <hr class=\"dropdown-divider\" v-else />\n </div>\n <hr class=\"dropdown-divider\" />\n <a class=\"dropdown-item\" @click=\"logout\">\n <svg class=\"icon\">\n <use xlink:href=\"#icon-logout\" />\n </svg>\n <span>{{ __('auth.user.menu.logout') }}</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Cookies from 'js-cookie';\nimport { ref, computed, provide, isVNode } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user',\n props: {\n resetToken: {\n type: String,\n default: ''\n },\n resetEmail: {\n type: String,\n default: ''\n },\n tokenValid: {\n type: Boolean,\n default: false\n },\n forgetType: {\n type: String,\n default: 'email'\n },\n showPlaceholders: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n const presetedResetToken = ref('');\n const presetedResetEmail = ref('');\n\n provide('presetedResetToken', presetedResetToken);\n provide('presetedResetEmail', presetedResetEmail);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n const register = () => {\n store.commit('auth/modal', 'registration');\n };\n\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n\n if (logged.value) {\n if (!user.value.is_social_registration_tracked) {\n let object = {\n event: 'sign_up',\n user_id: user.value.id,\n method: user.value.social_provider\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n } else if (!user.value.is_login_tracked) {\n let object = {\n event: 'login',\n user_id: user.value.id,\n method: user.value.social_provider ? user.value.social_provider : 'site'\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n Cookies.set('user_id', user.value.id);\n }\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n if (props.resetToken) {\n store.commit('auth/modal', 'reset');\n }\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n register,\n logout,\n routes\n };\n }\n};\n</script>","<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a href=\"#login\" class=\"button\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </slot>\n <div class=\"modal\" 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 <slot name=\"hero\"></slot>\n <div class=\"tabs\">\n <ul>\n <li v-bind:class=\"{\n 'is-active': modal == 'login' || modal == 'forget'\n }\">\n <a href=\"#login\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </li>\n <li v-bind:class=\"{\n 'is-active': modal == 'registration'\n }\" @click=\"register\">\n <a href=\"#register\">{{ __('auth.login.signup') }}</a>\n </li>\n </ul>\n </div>\n <keep-alive>\n <login v-if=\"modal == 'login' || modal == 'forget'\" :forget-type=\"forgetType\" :show-placeholders=\"showPlaceholders\"></login>\n </keep-alive>\n <keep-alive>\n <registration v-if=\"modal == 'registration'\"></registration>\n </keep-alive>\n <reset v-show=\"modal == 'reset'\" :show-placeholders=\"showPlaceholders\"></reset>\n </div>\n </div>\n </div>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <slot name=\"user\" :user=\"user.name ? user.name : user.email\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </slot>\n </a>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div v-for=\"(item, key) in routes\" v-bind:key=\"key\">\n <a :href=\"item.path\" v-if=\"item.text\" class=\"dropdown-item\">\n <svg class=\"icon\" v-if=\"item.icon\">\n <use :xlink:href=\"'#' + item.icon\" />\n </svg>\n <span>{{ item.text }}</span>\n <span class=\"badge\" v-if=\"item.badge\">{{ item.badge }}</span>\n </a>\n <hr class=\"dropdown-divider\" v-else />\n </div>\n <hr class=\"dropdown-divider\" />\n <a class=\"dropdown-item\" @click=\"logout\">\n <svg class=\"icon\">\n <use xlink:href=\"#icon-logout\" />\n </svg>\n <span>{{ __('auth.user.menu.logout') }}</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Cookies from 'js-cookie';\nimport { ref, computed, provide, isVNode } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user',\n props: {\n resetToken: {\n type: String,\n default: ''\n },\n resetEmail: {\n type: String,\n default: ''\n },\n tokenValid: {\n type: Boolean,\n default: false\n },\n forgetType: {\n type: String,\n default: 'email'\n },\n showPlaceholders: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n const presetedResetToken = ref('');\n const presetedResetEmail = ref('');\n\n provide('presetedResetToken', presetedResetToken);\n provide('presetedResetEmail', presetedResetEmail);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n const register = () => {\n store.commit('auth/modal', 'registration');\n };\n\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n\n if (logged.value) {\n if (!user.value.is_social_registration_tracked) {\n let object = {\n event: 'sign_up',\n user_id: user.value.id,\n method: user.value.social_provider\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n } else if (!user.value.is_login_tracked) {\n let object = {\n event: 'login',\n user_id: user.value.id,\n method: user.value.social_provider ? user.value.social_provider : 'site'\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n Cookies.set('user_id', user.value.id);\n }\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n if (props.resetToken) {\n store.commit('auth/modal', 'reset');\n }\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n register,\n logout,\n routes\n };\n }\n};\n</script>"],"names":["name","props","resetToken","type","String","resetEmail","tokenValid","Boolean","forgetType","showPlaceholders","setup","store","useStore","user","computed","getters","modal","logged","Object","keys","value","length","mounted","ref","routes","presetedResetToken","presetedResetEmail","provide","close","commit","dispatch","is_social_registration_tracked","is_login_tracked","object","event","user_id","id","method","social_provider","$env","debug","ecommerce","console","log","window","dataLayer","push","Cookies","set","addEventListener","e","key","open","register","logout","authUserLogoutCallback","_createElementVNode","href","role","$setup","_createElementBlock","_hoisted_1","_renderSlot","label","_ctx","onClick","_hoisted_2","_hoisted_5","_hoisted_6","_hoisted_7","_createBlock","$props","_createVNode","_hoisted_8","_hoisted_9","_hoisted_10","path","email","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","item","text","icon","_hoisted_17","badge","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22"],"mappings":"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"}
1
+ {"version":3,"file":"User.js","sources":["../../../src/components/auth/User.vue","../../../src/components/auth/User.vue?vue&type=template&id=e5f8b380&lang.js"],"sourcesContent":["<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a href=\"#login\" class=\"button\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </slot>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\" v-if=\"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 <slot name=\"hero\"></slot>\n <div class=\"tabs\">\n <ul>\n <li v-bind:class=\"{\n 'is-active': modal == 'login' || modal == 'forget'\n }\">\n <a href=\"#login\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </li>\n <li v-bind:class=\"{\n 'is-active': modal == 'registration'\n }\" @click=\"register\">\n <a href=\"#register\">{{ __('auth.login.signup') }}</a>\n </li>\n </ul>\n </div>\n <keep-alive>\n <login v-if=\"modal == 'login' || modal == 'forget'\" :forget-type=\"forgetType\" :show-placeholders=\"showPlaceholders\"></login>\n </keep-alive>\n <keep-alive>\n <registration v-if=\"modal == 'registration'\"></registration>\n </keep-alive>\n <reset v-show=\"modal == 'reset'\" :show-placeholders=\"showPlaceholders\"></reset>\n </div>\n </div>\n </div>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <slot name=\"user\" :user=\"user.name ? user.name : user.email\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </slot>\n </a>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div v-for=\"(item, key) in routes\" v-bind:key=\"key\">\n <a :href=\"item.path\" v-if=\"item.text\" class=\"dropdown-item\">\n <svg class=\"icon\" v-if=\"item.icon\">\n <use :xlink:href=\"'#' + item.icon\" />\n </svg>\n <span>{{ item.text }}</span>\n <span class=\"badge\" v-if=\"item.badge\">{{ item.badge }}</span>\n </a>\n <hr class=\"dropdown-divider\" v-else />\n </div>\n <hr class=\"dropdown-divider\" />\n <a class=\"dropdown-item\" @click=\"logout\">\n <svg class=\"icon\">\n <use xlink:href=\"#icon-logout\" />\n </svg>\n <span>{{ __('auth.user.menu.logout') }}</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Cookies from 'js-cookie';\nimport { ref, computed, provide, isVNode } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user',\n props: {\n resetToken: {\n type: String,\n default: ''\n },\n resetEmail: {\n type: String,\n default: ''\n },\n tokenValid: {\n type: Boolean,\n default: false\n },\n forgetType: {\n type: String,\n default: 'email'\n },\n showPlaceholders: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n const presetedResetToken = ref('');\n const presetedResetEmail = ref('');\n\n provide('presetedResetToken', presetedResetToken);\n provide('presetedResetEmail', presetedResetEmail);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n const register = () => {\n store.commit('auth/modal', 'registration');\n };\n\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n\n if (logged.value) {\n if (!user.value.is_social_registration_tracked) {\n let object = {\n event: 'sign_up',\n user_id: user.value.id,\n method: user.value.social_provider\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n } else if (!user.value.is_login_tracked) {\n let object = {\n event: 'login',\n user_id: user.value.id,\n method: user.value.social_provider ? user.value.social_provider : 'site'\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n Cookies.set('user_id', user.value.id);\n }\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n if (props.resetToken) {\n store.commit('auth/modal', 'reset');\n }\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n register,\n logout,\n routes\n };\n }\n};\n</script>","<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a href=\"#login\" class=\"button\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </slot>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\" v-if=\"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 <slot name=\"hero\"></slot>\n <div class=\"tabs\">\n <ul>\n <li v-bind:class=\"{\n 'is-active': modal == 'login' || modal == 'forget'\n }\">\n <a href=\"#login\" @click=\"open\">{{ __('auth.login.login') }}</a>\n </li>\n <li v-bind:class=\"{\n 'is-active': modal == 'registration'\n }\" @click=\"register\">\n <a href=\"#register\">{{ __('auth.login.signup') }}</a>\n </li>\n </ul>\n </div>\n <keep-alive>\n <login v-if=\"modal == 'login' || modal == 'forget'\" :forget-type=\"forgetType\" :show-placeholders=\"showPlaceholders\"></login>\n </keep-alive>\n <keep-alive>\n <registration v-if=\"modal == 'registration'\"></registration>\n </keep-alive>\n <reset v-show=\"modal == 'reset'\" :show-placeholders=\"showPlaceholders\"></reset>\n </div>\n </div>\n </div>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <slot name=\"user\" :user=\"user.name ? user.name : user.email\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </slot>\n </a>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div v-for=\"(item, key) in routes\" v-bind:key=\"key\">\n <a :href=\"item.path\" v-if=\"item.text\" class=\"dropdown-item\">\n <svg class=\"icon\" v-if=\"item.icon\">\n <use :xlink:href=\"'#' + item.icon\" />\n </svg>\n <span>{{ item.text }}</span>\n <span class=\"badge\" v-if=\"item.badge\">{{ item.badge }}</span>\n </a>\n <hr class=\"dropdown-divider\" v-else />\n </div>\n <hr class=\"dropdown-divider\" />\n <a class=\"dropdown-item\" @click=\"logout\">\n <svg class=\"icon\">\n <use xlink:href=\"#icon-logout\" />\n </svg>\n <span>{{ __('auth.user.menu.logout') }}</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Cookies from 'js-cookie';\nimport { ref, computed, provide, isVNode } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user',\n props: {\n resetToken: {\n type: String,\n default: ''\n },\n resetEmail: {\n type: String,\n default: ''\n },\n tokenValid: {\n type: Boolean,\n default: false\n },\n forgetType: {\n type: String,\n default: 'email'\n },\n showPlaceholders: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n const presetedResetToken = ref('');\n const presetedResetEmail = ref('');\n\n provide('presetedResetToken', presetedResetToken);\n provide('presetedResetEmail', presetedResetEmail);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n const register = () => {\n store.commit('auth/modal', 'registration');\n };\n\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n\n if (logged.value) {\n if (!user.value.is_social_registration_tracked) {\n let object = {\n event: 'sign_up',\n user_id: user.value.id,\n method: user.value.social_provider\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n } else if (!user.value.is_login_tracked) {\n let object = {\n event: 'login',\n user_id: user.value.id,\n method: user.value.social_provider ? user.value.social_provider : 'site'\n };\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n Cookies.set('user_id', user.value.id);\n }\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n if (props.resetToken) {\n store.commit('auth/modal', 'reset');\n }\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n register,\n logout,\n routes\n };\n }\n};\n</script>"],"names":["script","name","props","resetToken","type","String","default","resetEmail","tokenValid","Boolean","forgetType","showPlaceholders","setup","store","useStore","user","computed","getters","modal","logged","Object","keys","value","length","mounted","ref","routes","presetedResetToken","presetedResetEmail","provide","close","commit","dispatch","finally","is_social_registration_tracked","is_login_tracked","object","event","user_id","id","method","social_provider","$env","debug","ecommerce","console","log","window","dataLayer","push","Cookies","set","addEventListener","e","key","open","register","logout","authUserLogoutCallback","class","_hoisted_2","_createElementVNode","createElementVNode","xlink:href","_hoisted_5","_hoisted_6","_hoisted_7","href","_hoisted_9","_hoisted_10","aria-hidden","role","_hoisted_15","$setup","_openBlock","_createElementBlock","createElementBlock","_hoisted_1","_renderSlot","_ctx","$slots","label","__","onClick","apply","arguments","_normalizeClass","is-active","renderSlot","_toDisplayString","_createBlock","_KeepAlive","_component_login","forget-type","$props","show-placeholders","createBlock","_component_registration","_createVNode","createVNode","_component_reset","openBlock","_hoisted_8","path","email","_hoisted_12","_hoisted_13","_hoisted_14","_Fragment","_renderList","renderList","item","text","icon","_hoisted_17","badge","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserTrigger.js","sources":["../../../src/components/auth/UserTrigger.vue","../../../src/components/auth/UserTrigger.vue?vue&type=template&id=d84c264c&lang.js"],"sourcesContent":["<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a class=\"button\" @click=\"open\">{{ label }}</a>\n </slot>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <slot name=\"user\" :user=\"user\" :routes=\"routes\" :logout=\"logout\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </a>\n </div>\n </div>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user-trigger',\n setup() {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n if (!user.value) {\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n }\n });\n } else {\n mounted.value = true;\n }\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n routes,\n logout,\n };\n }\n};\n</script>","<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a class=\"button\" @click=\"open\">{{ label }}</a>\n </slot>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <slot name=\"user\" :user=\"user\" :routes=\"routes\" :logout=\"logout\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </a>\n </div>\n </div>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user-trigger',\n setup() {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n if (!user.value) {\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n }\n });\n } else {\n mounted.value = true;\n }\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n routes,\n logout,\n };\n }\n};\n</script>"],"names":["name","setup","store","useStore","user","computed","getters","modal","logged","Object","keys","value","length","mounted","ref","routes","close","commit","dispatch","window","addEventListener","e","key","open","logout","authUserLogoutCallback","_createElementVNode","$setup","_createElementBlock","_hoisted_1","_renderSlot","label","_ctx","onClick","_hoisted_2","_hoisted_3","_hoisted_4","href","path","_hoisted_6","email","_hoisted_7"],"mappings":"sDA4Be,CACXA,KAAM,eACNC,qBACUC,EAAQC,aACRC,EAAOC,YAAS,kBAAMH,EAAMI,QAAQ,cACpCC,EAAQF,YAAS,kBAAMH,EAAMI,QAAQ,iBACrCE,EAASH,YAAS,kBAAMI,OAAOC,KAAKN,EAAKO,OAAOC,OAAS,KACzDC,EAAUC,OAAI,GACdC,EAASV,YAAS,kBAAMH,EAAMI,QAAQ,mBAMtCU,EAAQ,WACVd,EAAMe,OAAO,aAAc,MAC3Bf,EAAMgB,SAAS,YAGdd,EAAKO,MAONE,EAAQF,OAAQ,EANhBT,EAAMgB,SAAS,UAAW,SACb,WACLL,EAAQF,OAAQ,YAe5BQ,OAAOC,iBAAiB,SAAS,SAACC,GAC1Bd,EAAMI,OAAmB,WAAVU,EAAEC,KACjBN,OAID,CACHH,QAAAA,EACAT,KAAAA,EACAI,OAAAA,EACAD,MAAAA,EACAgB,KAtCS,WACTrB,EAAMe,OAAO,aAAc,UAsC3BD,MAAAA,EACAD,OAAAA,EACAS,OAtBW,WACXtB,EAAMgB,SAAS,eAEXC,OAAOM,wBACPN,OAAOM,4CC5DR,4BAKA,gCAEQ,2CACI,iCAGCC,gCAAS,0BAGbA,mCAAY,kBACRA,gCAAS,kCAAgC,oDAfpCC,YAAYA,wBAAzCC,2BAAAC,GACIC,+BAAoBP,KAAMI,OAAOI,MAAOC,2BAAxC,kBACIN,gCAAS,SAAUO,sCAAON,uDAASK,mBAGCL,yBAA5CC,2BAAAM,GACIJ,8BAAmB1B,KAAMuB,OAAOZ,OAAQY,SAASH,OAAQG,WAAzD,kBACID,2BAAAS,GACIT,2BAAAU,GACIV,gCAAS,SAAUW,KAAMV,YAAUW,OAC/BZ,kCACIa,0CACGZ,OAAK3B,KAAO2B,OAAK3B,KAAO2B,OAAKa,YAEpCC"}
1
+ {"version":3,"file":"UserTrigger.js","sources":["../../../src/components/auth/UserTrigger.vue","../../../src/components/auth/UserTrigger.vue?vue&type=template&id=d84c264c&lang.js"],"sourcesContent":["<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a class=\"button\" @click=\"open\">{{ label }}</a>\n </slot>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <slot name=\"user\" :user=\"user\" :routes=\"routes\" :logout=\"logout\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </a>\n </div>\n </div>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user-trigger',\n setup() {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n if (!user.value) {\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n }\n });\n } else {\n mounted.value = true;\n }\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n routes,\n logout,\n };\n }\n};\n</script>","<template>\n <div class=\"auth-user\" v-if=\"mounted && !logged\">\n <slot name=\"login\" :open=\"open\" :label=\"__('auth.login.login')\">\n <a class=\"button\" @click=\"open\">{{ label }}</a>\n </slot>\n </div>\n <div class=\"auth-user is-logged\" v-else-if=\"mounted\">\n <slot name=\"user\" :user=\"user\" :routes=\"routes\" :logout=\"logout\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <a class=\"button\" :href=\"routes[0].path\">\n <span>\n <i class=\"fas fa-user\"></i>\n {{ user.name ? user.name : user.email }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </a>\n </div>\n </div>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default {\n name: 'user-trigger',\n setup() {\n const store = useStore();\n const user = computed(() => store.getters['auth/me']);\n const modal = computed(() => store.getters['auth/modal']);\n const logged = computed(() => Object.keys(user.value).length > 0);\n const mounted = ref(false);\n const routes = computed(() => store.getters['auth/account']);\n\n const open = () => {\n store.commit('auth/modal', 'login');\n };\n\n const close = () => {\n store.commit('auth/modal', null);\n store.dispatch('auth/me');\n };\n\n if (!user.value) {\n store.dispatch('auth/me', {\n finally: () => {\n mounted.value = true;\n }\n });\n } else {\n mounted.value = true;\n }\n\n const logout = () => {\n store.dispatch('auth/logout');\n\n if (window.authUserLogoutCallback) {\n window.authUserLogoutCallback();\n }\n };\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n return {\n mounted,\n user,\n logged,\n modal,\n open,\n close,\n routes,\n logout,\n };\n }\n};\n</script>"],"names":["script","name","setup","store","useStore","user","computed","getters","modal","logged","Object","keys","value","length","mounted","ref","routes","close","commit","dispatch","finally","window","addEventListener","e","key","open","logout","authUserLogoutCallback","class","_hoisted_3","_hoisted_4","_createElementVNode","createElementVNode","aria-hidden","$setup","_openBlock","_createElementBlock","createElementBlock","_hoisted_1","_renderSlot","_ctx","$slots","label","__","onClick","apply","arguments","openBlock","_hoisted_2","href","path","_hoisted_6","_toDisplayString","toDisplayString","email","_hoisted_7"],"mappings":"oDA4BeA,EAAA,CACXC,KAAM,eACNC,MAAK,WACD,IAAMC,EAAQC,EAAAA,WACRC,EAAOC,EAAAA,UAAS,WAAA,OAAMH,EAAMI,QAAQ,cACpCC,EAAQF,EAAAA,UAAS,WAAA,OAAMH,EAAMI,QAAQ,iBACrCE,EAASH,EAAAA,UAAS,WAAA,OAAMI,OAAOC,KAAKN,EAAKO,OAAOC,OAAS,KACzDC,EAAUC,OAAI,GACdC,EAASV,EAAAA,UAAS,WAAA,OAAMH,EAAMI,QAAQ,mBAMtCU,EAAQ,WACVd,EAAMe,OAAO,aAAc,MAC3Bf,EAAMgB,SAAS,YAGdd,EAAKO,MAONE,EAAQF,OAAQ,EANhBT,EAAMgB,SAAS,UAAW,CACtBC,QAAS,WACLN,EAAQF,OAAQ,KAqB5B,OANAS,OAAOC,iBAAiB,SAAS,SAACC,GAC1Bf,EAAMI,OAAmB,WAAVW,EAAEC,KACjBP,OAID,CACHH,QAAAA,EACAT,KAAAA,EACAI,OAAAA,EACAD,MAAAA,EACAiB,KAtCS,WACTtB,EAAMe,OAAO,aAAc,UAsC3BD,MAAAA,EACAD,OAAAA,EACAU,OAtBW,WACXvB,EAAMgB,SAAS,eAEXE,OAAOM,wBACPN,OAAOM,sCC5DdC,MAAM,sBAKNA,MAAM,uBAEEC,EAAA,CAAAD,MAAM,kCACFE,EAAA,CAAAF,MAAM,iCAGCG,EAA0BC,mBAAA,IAAA,CAAvBJ,MAAM,eAAa,MAAA,KAG1BG,EAEMC,mBAAA,OAAA,CAFAJ,MAAM,iBAAe,CACvBG,EAAmDC,mBAAA,IAAA,CAAhDJ,MAAM,oBAAoBK,cAAY,6CAfpC,OAAAC,EAAApB,UAAYoB,EAAMzB,QAA/C0B,EAAAA,YAAAC,EAAAC,mBAIK,MAJLC,EAIK,CAHDC,EAAAA,WAEMC,EAAAC,OAAA,QAAA,CAFchB,KAAMS,EAAIT,KAAGiB,MAAOF,EAAEG,GAAA,sBAA1C,WAAA,MAEM,CADFZ,EAA8CC,mBAAA,IAAA,CAA3CJ,MAAM,SAAUgB,sCAAOV,EAAIT,MAAAS,EAAAT,KAAAoB,MAAAX,EAAAY,gCAAKN,EAAIE,OAAA,UAGHR,EAAOpB,SAAnDqB,EAAAY,YAAAX,EAAAA,mBAgBK,MAhBLY,EAgBK,CAfDT,EAAAA,WAcMC,EAAAC,OAAA,OAAA,CAdapC,KAAM6B,EAAI7B,KAAGW,OAAQkB,EAAMlB,OAAGU,OAAQQ,EAAMR,SAA/D,WAAA,MAcM,CAbFK,EAAAA,mBAYK,MAZLF,EAYK,CAXDE,qBAUK,MAVLD,EAUK,CATDC,EAQGC,mBAAA,IAAA,CARAJ,MAAM,SAAUqB,KAAMf,EAAMlB,OAAA,GAAIkC,OAC/BnB,EAAAA,mBAGM,OAAA,KAAA,CAFFoB,oBAA0B,IAC1BC,EAAAC,gBAAGnB,EAAI7B,KAACJ,KAAOiC,EAAI7B,KAACJ,KAAOiC,EAAI7B,KAACiD,YAEpCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.js","sources":["../../../src/components/shop/Catalog.vue","../../../src/components/shop/Catalog.vue?vue&type=template&id=e2a58212&lang.js"],"sourcesContent":["<template>\n <component :is=\"page\"></component>\n</template>\n<script>\nimport { ref, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n name: 'catalog',\n setup() {\n const page = ref(null);\n const pages = [];\n\n const getPageName = (href) => {\n return href.replace(/[^a-z0-9]/g, '');\n };\n\n const clearContainer = () => {\n document.querySelectorAll('#subcategory > div').forEach((element) => {\n element.remove();\n });\n };\n\n const after = () => {\n if (!window.disableScrollTopAfterCatalogLoad) {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n if (window.catalogFilterCallback) {\n window.catalogFilterCallback();\n }\n\n document.documentElement.classList.remove('is-catalog-loading');\n\n init();\n };\n\n const parseFilterHref = (a) => {\n const hash = a.hash ? a.hash.substring(1) : '';\n\n let pathname = a.pathname.replace(/\\/$/, '');\n\n pathname = hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname;\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&filter' : '?filter');\n\n return href;\n };\n\n const get = (a, ignoreHistory) => {\n const href = parseFilterHref(a);\n\n const componentName = getPageName(href);\n\n if (pages.indexOf(componentName) === -1) {\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n let html = document.createElement('html');\n\n html.innerHTML = response.data.page;\n\n window.app.component(componentName, {\n template: html.querySelector('#subcategory').innerHTML\n });\n\n clearContainer();\n\n pages.push(componentName);\n\n page.value = componentName;\n\n let object = {\n 'event': 'applied_filter',\n };\n\n if (window.custom_page_type) {\n object.custom_page_type = window.custom_page_type;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n clearContainer();\n\n page.value = componentName;\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n }\n };\n\n const init = () => {\n document.querySelectorAll('[shop-filter] a').forEach((a) => {\n a.addEventListener('click', (e) => {\n e.preventDefault();\n\n get(a);\n });\n });\n };\n\n const refresh = () => {\n const a = document.createElement('a');\n a.href = window.location.href;\n\n get(a, true);\n };\n\n window.onpageshow = function (event) {\n if (event.persisted) {\n window.location.reload();\n }\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n init();\n\n window.addEventListener('popstate', (e) => {\n if (e.state && e.state.source == 'catalog') {\n refresh();\n }\n });\n\n if (window.location.hash) {\n refresh();\n }\n });\n\n return {\n page\n };\n }\n});\n</script>","<template>\n <component :is=\"page\"></component>\n</template>\n<script>\nimport { ref, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n name: 'catalog',\n setup() {\n const page = ref(null);\n const pages = [];\n\n const getPageName = (href) => {\n return href.replace(/[^a-z0-9]/g, '');\n };\n\n const clearContainer = () => {\n document.querySelectorAll('#subcategory > div').forEach((element) => {\n element.remove();\n });\n };\n\n const after = () => {\n if (!window.disableScrollTopAfterCatalogLoad) {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n if (window.catalogFilterCallback) {\n window.catalogFilterCallback();\n }\n\n document.documentElement.classList.remove('is-catalog-loading');\n\n init();\n };\n\n const parseFilterHref = (a) => {\n const hash = a.hash ? a.hash.substring(1) : '';\n\n let pathname = a.pathname.replace(/\\/$/, '');\n\n pathname = hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname;\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&filter' : '?filter');\n\n return href;\n };\n\n const get = (a, ignoreHistory) => {\n const href = parseFilterHref(a);\n\n const componentName = getPageName(href);\n\n if (pages.indexOf(componentName) === -1) {\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n let html = document.createElement('html');\n\n html.innerHTML = response.data.page;\n\n window.app.component(componentName, {\n template: html.querySelector('#subcategory').innerHTML\n });\n\n clearContainer();\n\n pages.push(componentName);\n\n page.value = componentName;\n\n let object = {\n 'event': 'applied_filter',\n };\n\n if (window.custom_page_type) {\n object.custom_page_type = window.custom_page_type;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n clearContainer();\n\n page.value = componentName;\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n }\n };\n\n const init = () => {\n document.querySelectorAll('[shop-filter] a').forEach((a) => {\n a.addEventListener('click', (e) => {\n e.preventDefault();\n\n get(a);\n });\n });\n };\n\n const refresh = () => {\n const a = document.createElement('a');\n a.href = window.location.href;\n\n get(a, true);\n };\n\n window.onpageshow = function (event) {\n if (event.persisted) {\n window.location.reload();\n }\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n init();\n\n window.addEventListener('popstate', (e) => {\n if (e.state && e.state.source == 'catalog') {\n refresh();\n }\n });\n\n if (window.location.hash) {\n refresh();\n }\n });\n\n return {\n page\n };\n }\n});\n</script>"],"names":["defineComponent","name","setup","page","ref","pages","clearContainer","document","querySelectorAll","forEach","element","remove","after","window","disableScrollTopAfterCatalogLoad","scrollTo","top","left","behavior","lazyImages","update","catalogFilterCallback","documentElement","classList","init","get","a","ignoreHistory","href","hash","substring","pathname","replace","indexOf","$env","shop","isTrailingSlash","origin","search","parseFilterHref","componentName","getPageName","add","$http","then","response","html","createElement","innerHTML","data","app","component","template","querySelector","push","value","object","custom_page_type","debug","ecommerce","console","log","dataLayer","history","pushState","urlPath","source","title","nextTick","error","addEventListener","e","preventDefault","refresh","location","onpageshow","event","persisted","reload","state","_createBlock","_ctx"],"mappings":"oCAMeA,kBAAgB,CAC3BC,KAAM,UACNC,qBACUC,EAAOC,MAAI,MACXC,EAAQ,GAMRC,EAAiB,WACnBC,SAASC,iBAAiB,sBAAsBC,SAAQ,SAACC,GACrDA,EAAQC,aAIVC,EAAQ,WACLC,OAAOC,kCACRD,OAAOE,SAAS,CACZC,IAAK,EACLC,KAAM,EACNC,SAAU,WAIdL,OAAOM,YACPN,OAAOM,WAAWC,SAGlBP,OAAOQ,uBACPR,OAAOQ,wBAGXd,SAASe,gBAAgBC,UAAUZ,OAAO,sBAE1Ca,KAmBEC,EAAM,SAACC,EAAGC,OACNC,EAjBc,SAACF,OACfG,EAAOH,EAAEG,KAAOH,EAAEG,KAAKC,UAAU,GAAK,GAExCC,EAAWL,EAAEK,SAASC,QAAQ,MAAO,WAEzCD,EAAWF,GAAqC,IAA7BH,EAAEK,SAASE,QAAQ,KAAcF,EAAW,IAAMF,EAAOE,EAAW,IAAMF,EAAQE,EAEjGG,KAAKC,KAAKC,kBACVL,GAAsB,KAGbL,EAAEW,OAASN,GAAYL,EAAEY,OAASZ,EAAEY,OAAS,UAAY,WAMzDC,CAAgBb,GAEvBc,EAnDU,SAACZ,UACVA,EAAKI,QAAQ,aAAc,IAkDZS,CAAYb,IAEI,IAAlCvB,EAAM4B,QAAQO,IACdjC,SAASe,gBAAgBC,UAAUmB,IAAI,sBAEvCC,MACKlB,IAAIG,GACJgB,MAAK,SAACC,OACCC,EAAOvC,SAASwC,cAAc,QAElCD,EAAKE,UAAYH,EAASI,KAAK9C,KAE/BU,OAAOqC,IAAIC,UAAUX,EAAe,CAChCY,SAAUN,EAAKO,cAAc,gBAAgBL,YAGjD1C,IAEAD,EAAMiD,KAAKd,GAEXrC,EAAKoD,MAAQf,MAETgB,EAAS,OACA,kBAGT3C,OAAO4C,mBACPD,EAAOC,iBAAmB5C,OAAO4C,kBAGjCvB,KAAKwB,MAAMC,WACXC,QAAQC,IAAIL,IAGXtB,KAAKwB,MAAMC,WAAa9C,OAAOiD,YAChCjD,OAAOiD,UAAUR,KAAK,CAClBK,UAAW,OAGf9C,OAAOiD,UAAUR,KAAKE,IAGrB7B,GACDoC,QAAQC,UAAU,CAAEC,QAASvC,EAAEE,KAAMsC,OAAQ,WAAa3D,SAAS4D,MAAOzC,EAAEE,MAGhFwC,WAASxD,aAEN,SAACyD,GACJT,QAAQS,MAAMA,eAET,WACL9D,SAASe,gBAAgBC,UAAUZ,OAAO,2BAGlDL,IAEAH,EAAKoD,MAAQf,EAERb,GACDoC,QAAQC,UAAU,CAAEC,QAASvC,EAAEE,KAAMsC,OAAQ,WAAa3D,SAAS4D,MAAOzC,EAAEE,MAGhFwC,WAASxD,KAIXY,EAAO,WACTjB,SAASC,iBAAiB,mBAAmBC,SAAQ,SAACiB,GAClDA,EAAE4C,iBAAiB,SAAS,SAACC,GACzBA,EAAEC,iBAEF/C,EAAIC,UAKV+C,EAAU,eACN/C,EAAInB,SAASwC,cAAc,KACjCrB,EAAEE,KAAOf,OAAO6D,SAAS9C,KAEzBH,EAAIC,GAAG,WAGXb,OAAO8D,WAAa,SAAUC,GACtBA,EAAMC,WACNhE,OAAO6D,SAASI,UAIxBjE,OAAOyD,iBAAiB,oBAAoB,WACxC9C,IAEAX,OAAOyD,iBAAiB,YAAY,SAACC,GAC7BA,EAAEQ,OAA2B,WAAlBR,EAAEQ,MAAMb,QACnBO,OAIJ5D,OAAO6D,SAAS7C,MAChB4C,OAID,CACHtE,KAAAA,0DCvKR6E,wCAAgBC"}
1
+ {"version":3,"file":"Catalog.js","sources":["../../../src/components/shop/Catalog.vue","../../../src/components/shop/Catalog.vue?vue&type=template&id=e2a58212&lang.js"],"sourcesContent":["<template>\n <component :is=\"page\"></component>\n</template>\n<script>\nimport { ref, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n name: 'catalog',\n setup() {\n const page = ref(null);\n const pages = [];\n\n const getPageName = (href) => {\n return href.replace(/[^a-z0-9]/g, '');\n };\n\n const clearContainer = () => {\n document.querySelectorAll('#subcategory > div').forEach((element) => {\n element.remove();\n });\n };\n\n const after = () => {\n if (!window.disableScrollTopAfterCatalogLoad) {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n if (window.catalogFilterCallback) {\n window.catalogFilterCallback();\n }\n\n document.documentElement.classList.remove('is-catalog-loading');\n\n init();\n };\n\n const parseFilterHref = (a) => {\n const hash = a.hash ? a.hash.substring(1) : '';\n\n let pathname = a.pathname.replace(/\\/$/, '');\n\n pathname = hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname;\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&filter' : '?filter');\n\n return href;\n };\n\n const get = (a, ignoreHistory) => {\n const href = parseFilterHref(a);\n\n const componentName = getPageName(href);\n\n if (pages.indexOf(componentName) === -1) {\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n let html = document.createElement('html');\n\n html.innerHTML = response.data.page;\n\n window.app.component(componentName, {\n template: html.querySelector('#subcategory').innerHTML\n });\n\n clearContainer();\n\n pages.push(componentName);\n\n page.value = componentName;\n\n let object = {\n 'event': 'applied_filter',\n };\n\n if (window.custom_page_type) {\n object.custom_page_type = window.custom_page_type;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n clearContainer();\n\n page.value = componentName;\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n }\n };\n\n const init = () => {\n document.querySelectorAll('[shop-filter] a').forEach((a) => {\n a.addEventListener('click', (e) => {\n e.preventDefault();\n\n get(a);\n });\n });\n };\n\n const refresh = () => {\n const a = document.createElement('a');\n a.href = window.location.href;\n\n get(a, true);\n };\n\n window.onpageshow = function (event) {\n if (event.persisted) {\n window.location.reload();\n }\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n init();\n\n window.addEventListener('popstate', (e) => {\n if (e.state && e.state.source == 'catalog') {\n refresh();\n }\n });\n\n if (window.location.hash) {\n refresh();\n }\n });\n\n return {\n page\n };\n }\n});\n</script>","<template>\n <component :is=\"page\"></component>\n</template>\n<script>\nimport { ref, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n name: 'catalog',\n setup() {\n const page = ref(null);\n const pages = [];\n\n const getPageName = (href) => {\n return href.replace(/[^a-z0-9]/g, '');\n };\n\n const clearContainer = () => {\n document.querySelectorAll('#subcategory > div').forEach((element) => {\n element.remove();\n });\n };\n\n const after = () => {\n if (!window.disableScrollTopAfterCatalogLoad) {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n if (window.catalogFilterCallback) {\n window.catalogFilterCallback();\n }\n\n document.documentElement.classList.remove('is-catalog-loading');\n\n init();\n };\n\n const parseFilterHref = (a) => {\n const hash = a.hash ? a.hash.substring(1) : '';\n\n let pathname = a.pathname.replace(/\\/$/, '');\n\n pathname = hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname;\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&filter' : '?filter');\n\n return href;\n };\n\n const get = (a, ignoreHistory) => {\n const href = parseFilterHref(a);\n\n const componentName = getPageName(href);\n\n if (pages.indexOf(componentName) === -1) {\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n let html = document.createElement('html');\n\n html.innerHTML = response.data.page;\n\n window.app.component(componentName, {\n template: html.querySelector('#subcategory').innerHTML\n });\n\n clearContainer();\n\n pages.push(componentName);\n\n page.value = componentName;\n\n let object = {\n 'event': 'applied_filter',\n };\n\n if (window.custom_page_type) {\n object.custom_page_type = window.custom_page_type;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n clearContainer();\n\n page.value = componentName;\n\n if (!ignoreHistory) {\n history.pushState({ urlPath: a.href, source: 'catalog' }, document.title, a.href);\n }\n\n nextTick(after);\n }\n };\n\n const init = () => {\n document.querySelectorAll('[shop-filter] a').forEach((a) => {\n a.addEventListener('click', (e) => {\n e.preventDefault();\n\n get(a);\n });\n });\n };\n\n const refresh = () => {\n const a = document.createElement('a');\n a.href = window.location.href;\n\n get(a, true);\n };\n\n window.onpageshow = function (event) {\n if (event.persisted) {\n window.location.reload();\n }\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n init();\n\n window.addEventListener('popstate', (e) => {\n if (e.state && e.state.source == 'catalog') {\n refresh();\n }\n });\n\n if (window.location.hash) {\n refresh();\n }\n });\n\n return {\n page\n };\n }\n});\n</script>"],"names":["script","defineComponent","name","setup","page","ref","pages","clearContainer","document","querySelectorAll","forEach","element","remove","after","window","disableScrollTopAfterCatalogLoad","scrollTo","top","left","behavior","lazyImages","update","catalogFilterCallback","documentElement","classList","init","get","a","ignoreHistory","href","hash","substring","pathname","replace","indexOf","$env","shop","isTrailingSlash","origin","search","parseFilterHref","componentName","getPageName","add","$http","then","response","html","createElement","innerHTML","data","app","component","template","querySelector","push","value","object","event","custom_page_type","debug","ecommerce","console","log","dataLayer","history","pushState","urlPath","source","title","nextTick","error","addEventListener","e","preventDefault","refresh","location","onpageshow","persisted","reload","state","_openBlock","_createBlock","createBlock","_resolveDynamicComponent","_ctx"],"mappings":"kCAMAA,EAAeC,kBAAgB,CAC3BC,KAAM,UACNC,MAAK,WACD,IAAMC,EAAOC,MAAI,MACXC,EAAQ,GAMRC,EAAiB,WACnBC,SAASC,iBAAiB,sBAAsBC,SAAQ,SAACC,GACrDA,EAAQC,aAIVC,EAAQ,WACLC,OAAOC,kCACRD,OAAOE,SAAS,CACZC,IAAK,EACLC,KAAM,EACNC,SAAU,WAIdL,OAAOM,YACPN,OAAOM,WAAWC,SAGlBP,OAAOQ,uBACPR,OAAOQ,wBAGXd,SAASe,gBAAgBC,UAAUZ,OAAO,sBAE1Ca,KAmBEC,EAAM,SAACC,EAAGC,GACZ,IAAMC,EAjBc,SAACF,GACrB,IAAMG,EAAOH,EAAEG,KAAOH,EAAEG,KAAKC,UAAU,GAAK,GAExCC,EAAWL,EAAEK,SAASC,QAAQ,MAAO,IAUzC,OARAD,EAAWF,GAAqC,IAA7BH,EAAEK,SAASE,QAAQ,KAAcF,EAAW,IAAMF,EAAOE,EAAW,IAAMF,EAAQE,EAEjGG,KAAKC,KAAKC,kBACVL,GAAsB,KAGbL,EAAEW,OAASN,GAAYL,EAAEY,OAASZ,EAAEY,OAAS,UAAY,WAMzDC,CAAgBb,GAEvBc,EAnDU,SAACZ,GACjB,OAAOA,EAAKI,QAAQ,aAAc,IAkDZS,CAAYb,IAEI,IAAlCvB,EAAM4B,QAAQO,IACdjC,SAASe,gBAAgBC,UAAUmB,IAAI,sBAEvCC,MACKlB,IAAIG,GACJgB,MAAK,SAACC,GACH,IAAIC,EAAOvC,SAASwC,cAAc,QAElCD,EAAKE,UAAYH,EAASI,KAAK9C,KAE/BU,OAAOqC,IAAIC,UAAUX,EAAe,CAChCY,SAAUN,EAAKO,cAAc,gBAAgBL,YAGjD1C,IAEAD,EAAMiD,KAAKd,GAEXrC,EAAKoD,MAAQf,EAEb,IAAIgB,EAAS,CACTC,MAAS,kBAGT5C,OAAO6C,mBACPF,EAAOE,iBAAmB7C,OAAO6C,kBAGjCxB,KAAKyB,MAAMC,WACXC,QAAQC,IAAIN,IAGXtB,KAAKyB,MAAMC,WAAa/C,OAAOkD,YAChClD,OAAOkD,UAAUT,KAAK,CAClBM,UAAW,OAGf/C,OAAOkD,UAAUT,KAAKE,IAGrB7B,GACDqC,QAAQC,UAAU,CAAEC,QAASxC,EAAEE,KAAMuC,OAAQ,WAAa5D,SAAS6D,MAAO1C,EAAEE,MAGhFyC,EAAQA,SAACzD,MACZ,OACM,SAAC0D,GACJT,QAAQS,MAAMA,MAEV,SAAC,WACL/D,SAASe,gBAAgBC,UAAUZ,OAAO,2BAGlDL,IAEAH,EAAKoD,MAAQf,EAERb,GACDqC,QAAQC,UAAU,CAAEC,QAASxC,EAAEE,KAAMuC,OAAQ,WAAa5D,SAAS6D,MAAO1C,EAAEE,MAGhFyC,EAAQA,SAACzD,KAIXY,EAAO,WACTjB,SAASC,iBAAiB,mBAAmBC,SAAQ,SAACiB,GAClDA,EAAE6C,iBAAiB,SAAS,SAACC,GACzBA,EAAEC,iBAEFhD,EAAIC,UAKVgD,EAAU,WACZ,IAAMhD,EAAInB,SAASwC,cAAc,KACjCrB,EAAEE,KAAOf,OAAO8D,SAAS/C,KAEzBH,EAAIC,GAAG,IAuBX,OApBAb,OAAO+D,WAAa,SAAUnB,GACtBA,EAAMoB,WACNhE,OAAO8D,SAASG,UAIxBjE,OAAO0D,iBAAiB,oBAAoB,WACxC/C,IAEAX,OAAO0D,iBAAiB,YAAY,SAACC,GAC7BA,EAAEO,OAA2B,WAAlBP,EAAEO,MAAMZ,QACnBO,OAIJ7D,OAAO8D,SAAS9C,MAChB6C,OAID,CACHvE,KAAAA,qCCvKR,OAAA6E,EAAAA,YAAAC,EAAAC,YAAiCC,0BAAjBC,EAAIjF"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("vue"),o=require("vue-toastification");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(require("copy-to-clipboard"));function n(e,o,t){return o in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}var a=o.useToast(),l=e.defineComponent({name:"code-copy",props:{code:{type:String,default:""},className:{type:String,default:""}},setup:function(o){var t,l=o.code,c=o.className,u=e.ref(!1),i=__("shop.copy"),p=e.ref(!1),s=e.ref(null);return n(t={code:l,copyLabel:i,isHovered:u,className:c},"isHovered",u),n(t,"style",p),n(t,"enter",(function(){p.value={width:s.value.offsetWidth+"px"},u.value=!0})),n(t,"leave",(function(){u.value=!1})),n(t,"copyToClipboard",(function(){r.default(l),a(__("shop.copied",{code:l}),{type:"success"})})),n(t,"wrapper",s),t}}),c={key:0};l.render=function(o,t,r,n,a,l){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["shop-code",o.className]),onMouseenter:t[0]||(t[0]=function(){return o.enter&&o.enter.apply(o,arguments)}),onMouseleave:t[1]||(t[1]=function(){return o.leave&&o.leave.apply(o,arguments)}),onClick:t[2]||(t[2]=function(){return o.copyToClipboard&&o.copyToClipboard.apply(o,arguments)}),style:e.normalizeStyle(o.style),ref:"wrapper"},[o.isHovered?(e.openBlock(),e.createElementBlock("span",c,e.toDisplayString(o.copyLabel),1)):e.renderSlot(o.$slots,"default",{key:1,code:o.code},(function(){return[e.createTextVNode(e.toDisplayString(o.code),1)]}))],38)},module.exports=l;
1
+ "use strict";var e=require("vue"),t=require("vue-toastification");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(require("copy-to-clipboard"));function n(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var a=t.useToast(),i=e.defineComponent({name:"code-copy",props:{code:{type:String,default:""},className:{type:String,default:""}},setup:function(t){var r=t.code,i=t.className,l=e.ref(!1),u=__("shop.copy"),c=e.ref(!1),p=e.ref(null);return n(n(n(n(n(n({code:r,copyLabel:u,isHovered:l,className:i},"isHovered",l),"style",c),"enter",(function(){c.value={width:p.value.offsetWidth+"px"},l.value=!0})),"leave",(function(){l.value=!1})),"copyToClipboard",(function(){o.default(r),a(__("shop.copied",{code:r}),{type:"success"})})),"wrapper",p)}}),l={key:0};i.render=function(t,r,o,n,a,i){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["shop-code",t.className]),onMouseenter:r[0]||(r[0]=function(){return t.enter&&t.enter.apply(t,arguments)}),onMouseleave:r[1]||(r[1]=function(){return t.leave&&t.leave.apply(t,arguments)}),onClick:r[2]||(r[2]=function(){return t.copyToClipboard&&t.copyToClipboard.apply(t,arguments)}),style:e.normalizeStyle(t.style),ref:"wrapper"},[t.isHovered?(e.openBlock(),e.createElementBlock("span",l,e.toDisplayString(t.copyLabel),1)):e.renderSlot(t.$slots,"default",{key:1,code:t.code},(function(){return[e.createTextVNode(e.toDisplayString(t.code),1)]}))],38)},module.exports=i;
2
2
  //# sourceMappingURL=CodeCopy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeCopy.js","sources":["../../../src/components/shop/CodeCopy.vue","../../../src/components/shop/CodeCopy.vue?vue&type=template&id=b4125d18&lang.js"],"sourcesContent":["<template>\n <div\n class=\"shop-code\"\n v-bind:class=\"className\"\n v-on:mouseenter=\"enter\"\n v-on:mouseleave=\"leave\"\n v-on:click=\"copyToClipboard\"\n v-bind:style=\"style\"\n ref=\"wrapper\"\n >\n <span v-if=\"isHovered\">{{ copyLabel }}</span>\n <slot :code=\"code\" v-else>\n {{ code }}\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport { useToast } from \"vue-toastification\";\nimport copy from \"copy-to-clipboard\";\n\nconst toast = useToast();\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"code-copy\",\n props: {\n code: {\n type: String,\n default: \"\",\n },\n className: {\n type: String,\n default: \"\",\n },\n },\n setup(props) {\n const code = props.code;\n const className = props.className;\n const isHovered = ref(false);\n const copyLabel = __(\"shop.copy\");\n const style = ref(false);\n const wrapper = ref(null);\n\n const copyToClipboard = () => {\n copy(code);\n\n toast(__(\"shop.copied\", { code: code }), {\n type: \"success\",\n });\n };\n\n const enter = () => {\n style.value = {\n width: wrapper.value.offsetWidth + \"px\",\n };\n\n isHovered.value = true;\n };\n\n const leave = () => {\n isHovered.value = false;\n };\n\n return {\n code,\n copyLabel,\n isHovered,\n className,\n isHovered,\n style,\n enter,\n leave,\n copyToClipboard,\n wrapper,\n };\n },\n});\n</script>","<template>\n <div\n class=\"shop-code\"\n v-bind:class=\"className\"\n v-on:mouseenter=\"enter\"\n v-on:mouseleave=\"leave\"\n v-on:click=\"copyToClipboard\"\n v-bind:style=\"style\"\n ref=\"wrapper\"\n >\n <span v-if=\"isHovered\">{{ copyLabel }}</span>\n <slot :code=\"code\" v-else>\n {{ code }}\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport { useToast } from \"vue-toastification\";\nimport copy from \"copy-to-clipboard\";\n\nconst toast = useToast();\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"code-copy\",\n props: {\n code: {\n type: String,\n default: \"\",\n },\n className: {\n type: String,\n default: \"\",\n },\n },\n setup(props) {\n const code = props.code;\n const className = props.className;\n const isHovered = ref(false);\n const copyLabel = __(\"shop.copy\");\n const style = ref(false);\n const wrapper = ref(null);\n\n const copyToClipboard = () => {\n copy(code);\n\n toast(__(\"shop.copied\", { code: code }), {\n type: \"success\",\n });\n };\n\n const enter = () => {\n style.value = {\n width: wrapper.value.offsetWidth + \"px\",\n };\n\n isHovered.value = true;\n };\n\n const leave = () => {\n isHovered.value = false;\n };\n\n return {\n code,\n copyLabel,\n isHovered,\n className,\n isHovered,\n style,\n enter,\n leave,\n copyToClipboard,\n wrapper,\n };\n },\n});\n</script>"],"names":["toast","useToast","defineComponent","name","props","code","type","String","className","setup","isHovered","ref","copyLabel","__","style","wrapper","value","width","offsetWidth","copy","_createElementBlock","_ctx","onMouseenter","onMouseleave","onClick","_renderSlot"],"mappings":"wSAqBA,IAAMA,EAAQC,eAEeC,kBAAgB,CACzCC,KAAM,YACNC,MAAO,CACHC,KAAM,CACFC,KAAMC,eACG,IAEbC,UAAW,CACPF,KAAMC,eACG,KAGjBE,eAAML,SACIC,EAAOD,EAAMC,KACbG,EAAYJ,EAAMI,UAClBE,EAAYC,OAAI,GAChBC,EAAYC,GAAG,aACfC,EAAQH,OAAI,GACZI,EAAUJ,MAAI,kBAuBhBN,KAAAA,EACAO,UAAAA,EACAF,UAAAA,EACAF,UAAAA,eACAE,eACAI,gBAlBU,WACVA,EAAME,MAAQ,CACVC,MAAOF,EAAQC,MAAME,YAAc,MAGvCR,EAAUM,OAAQ,kBAGR,WACVN,EAAUM,OAAQ,4BAjBE,WACpBG,UAAKd,GAELL,EAAMa,GAAG,cAAe,CAAER,KAAMA,IAAS,CACrCC,KAAM,6BA0BVS,sECxERK,oDACU,YACQC,cACTC,2CAAYD,sCACZE,2CAAYF,sCACZG,sCAAOH,0DACLP,uBAAOO,SACdV,IAAI,YAEQU,2BAAZD,gDAA0BC,iBAC1BI,uCAAOpB,KAAMgB,SAAb,sDACOA"}
1
+ {"version":3,"file":"CodeCopy.js","sources":["../../../src/components/shop/CodeCopy.vue","../../../src/components/shop/CodeCopy.vue?vue&type=template&id=b4125d18&lang.js"],"sourcesContent":["<template>\n <div\n class=\"shop-code\"\n v-bind:class=\"className\"\n v-on:mouseenter=\"enter\"\n v-on:mouseleave=\"leave\"\n v-on:click=\"copyToClipboard\"\n v-bind:style=\"style\"\n ref=\"wrapper\"\n >\n <span v-if=\"isHovered\">{{ copyLabel }}</span>\n <slot :code=\"code\" v-else>\n {{ code }}\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport { useToast } from \"vue-toastification\";\nimport copy from \"copy-to-clipboard\";\n\nconst toast = useToast();\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"code-copy\",\n props: {\n code: {\n type: String,\n default: \"\",\n },\n className: {\n type: String,\n default: \"\",\n },\n },\n setup(props) {\n const code = props.code;\n const className = props.className;\n const isHovered = ref(false);\n const copyLabel = __(\"shop.copy\");\n const style = ref(false);\n const wrapper = ref(null);\n\n const copyToClipboard = () => {\n copy(code);\n\n toast(__(\"shop.copied\", { code: code }), {\n type: \"success\",\n });\n };\n\n const enter = () => {\n style.value = {\n width: wrapper.value.offsetWidth + \"px\",\n };\n\n isHovered.value = true;\n };\n\n const leave = () => {\n isHovered.value = false;\n };\n\n return {\n code,\n copyLabel,\n isHovered,\n className,\n isHovered,\n style,\n enter,\n leave,\n copyToClipboard,\n wrapper,\n };\n },\n});\n</script>","<template>\n <div\n class=\"shop-code\"\n v-bind:class=\"className\"\n v-on:mouseenter=\"enter\"\n v-on:mouseleave=\"leave\"\n v-on:click=\"copyToClipboard\"\n v-bind:style=\"style\"\n ref=\"wrapper\"\n >\n <span v-if=\"isHovered\">{{ copyLabel }}</span>\n <slot :code=\"code\" v-else>\n {{ code }}\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport { useToast } from \"vue-toastification\";\nimport copy from \"copy-to-clipboard\";\n\nconst toast = useToast();\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"code-copy\",\n props: {\n code: {\n type: String,\n default: \"\",\n },\n className: {\n type: String,\n default: \"\",\n },\n },\n setup(props) {\n const code = props.code;\n const className = props.className;\n const isHovered = ref(false);\n const copyLabel = __(\"shop.copy\");\n const style = ref(false);\n const wrapper = ref(null);\n\n const copyToClipboard = () => {\n copy(code);\n\n toast(__(\"shop.copied\", { code: code }), {\n type: \"success\",\n });\n };\n\n const enter = () => {\n style.value = {\n width: wrapper.value.offsetWidth + \"px\",\n };\n\n isHovered.value = true;\n };\n\n const leave = () => {\n isHovered.value = false;\n };\n\n return {\n code,\n copyLabel,\n isHovered,\n className,\n isHovered,\n style,\n enter,\n leave,\n copyToClipboard,\n wrapper,\n };\n },\n});\n</script>"],"names":["toast","useToast","script","defineComponent","name","props","code","type","String","default","className","setup","isHovered","ref","copyLabel","__","style","wrapper","_defineProperty","enter","value","width","offsetWidth","copy","_createElementBlock","createElementBlock","class","_normalizeClass","_ctx","onMouseenter","apply","arguments","onMouseleave","leave","onClick","copyToClipboard","_openBlock","_renderSlot","renderSlot","$slots"],"mappings":"6mBAqBA,IAAMA,EAAQC,EAAQA,WAEPC,EAAcC,kBAAgB,CACzCC,KAAM,YACNC,MAAO,CACHC,KAAM,CACFC,KAAMC,OACNC,QAAS,IAEbC,UAAW,CACPH,KAAMC,OACNC,QAAS,KAGjBE,MAAK,SAACN,GACF,IAAMC,EAAOD,EAAMC,KACbI,EAAYL,EAAMK,UAClBE,EAAYC,OAAI,GAChBC,EAAYC,GAAG,aACfC,EAAQH,OAAI,GACZI,EAAUJ,MAAI,MAsBpB,OAAAK,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CACIZ,KAAAA,EACAQ,UAAAA,EACAF,UAAAA,EACAF,UAAAA,GACAE,YAAAA,GACAI,QAAAA,GACAG,SAnBU,WACVH,EAAMI,MAAQ,CACVC,MAAOJ,EAAQG,MAAME,YAAc,MAGvCV,EAAUQ,OAAQ,cAGR,WACVR,EAAUQ,OAAQ,KAWb,mBA5Be,WACpBG,EAAI,QAACjB,GAELN,EAAMe,GAAG,cAAe,CAAET,KAAMA,IAAS,CACrCC,KAAM,eAyBK,UACfU,oECxERO,EAaKC,mBAAA,MAAA,CAZDC,MAAKC,EAAAA,eAAA,CAAC,YACQC,EAASlB,YAClBmB,2CAAYD,EAAKT,OAAAS,EAAAT,MAAAW,MAAAF,EAAAG,aACjBC,2CAAYJ,EAAKK,OAAAL,EAAAK,MAAAH,MAAAF,EAAAG,aACjBG,sCAAON,EAAeO,iBAAAP,EAAAO,gBAAAL,MAAAF,EAAAG,aACpBf,uBAAOY,EAAKZ,OACnBH,IAAI,YAEQe,EAAShB,WAArBwB,EAAAA,YAAAZ,EAAAC,mBAA4C,2BAAlBG,EAAQd,WAAA,IAClCuB,EAEMC,WAAAV,EAAAW,OAAA,UAAA,OAFCjC,KAAMsB,EAAItB,OAAjB,WAAA,MAEM,qCADCsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Cross.js","sources":["../../../src/components/shop/Cross.vue"],"sourcesContent":["<template></template>\n<script>\nimport { defineComponent } from \"vue\";\nimport Swiper, { Navigation, Mousewheel, FreeMode } from \"swiper\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"cross\",\n setup() {\n window.addEventListener(\"DOMContentLoaded\", () => {\n const container = document.getElementById(\"cross-sale\");\n const sliders = container.querySelectorAll(\".swiper\");\n const tabs = container.querySelectorAll(\"li\");\n let inited = [];\n\n tabs.forEach((li, index) => {\n li.addEventListener(\"click\", () => {\n tabs.forEach((li) => {\n li.classList.remove(\"is-active\");\n });\n\n sliders.forEach((slider) => {\n slider.classList.add(\"is-hidden\");\n });\n\n sliders[index].classList.remove(\"is-hidden\");\n li.classList.add(\"is-active\");\n\n if (!inited[index]) {\n const options = window.crossSaleSwiperOptions\n ? window.crossSaleSwiperOptions\n : {\n slidesPerView: 5,\n spaceBetween: 24,\n freeMode: {\n enabled: true\n },\n mousewheel: {\n forceToAxis: true,\n },\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n },\n };\n\n options.modules = [Navigation, Mousewheel, FreeMode];\n\n inited[index] = new Swiper(sliders[index], options);\n }\n\n inited[index].slideTo(0);\n });\n });\n\n tabs[0].click();\n });\n },\n});\n</script>"],"names":["defineComponent","name","setup","window","addEventListener","container","document","getElementById","sliders","querySelectorAll","tabs","inited","forEach","li","index","classList","remove","slider","add","options","crossSaleSwiperOptions","slidesPerView","spaceBetween","freeMode","enabled","mousewheel","forceToAxis","navigation","nextEl","prevEl","modules","Navigation","Mousewheel","FreeMode","Swiper","slideTo","click"],"mappings":"2IAK6BA,kBAAgB,CACzCC,KAAM,QACNC,iBACIC,OAAOC,iBAAiB,oBAAoB,eAClCC,EAAYC,SAASC,eAAe,cACpCC,EAAUH,EAAUI,iBAAiB,WACrCC,EAAOL,EAAUI,iBAAiB,MACpCE,EAAS,GAEbD,EAAKE,SAAQ,SAACC,EAAIC,GACdD,EAAGT,iBAAiB,SAAS,cACzBM,EAAKE,SAAQ,SAACC,GACVA,EAAGE,UAAUC,OAAO,gBAGxBR,EAAQI,SAAQ,SAACK,GACbA,EAAOF,UAAUG,IAAI,gBAGzBV,EAAQM,GAAOC,UAAUC,OAAO,aAChCH,EAAGE,UAAUG,IAAI,cAEZP,EAAOG,GAAQ,KACVK,EAAUhB,OAAOiB,uBACjBjB,OAAOiB,uBACP,CACEC,cAAe,EACfC,aAAc,GACdC,SAAU,CACNC,SAAS,GAEbC,WAAY,CACRC,aAAa,GAEjBC,WAAY,CACRC,OAAQ,sBACRC,OAAQ,wBAIpBV,EAAQW,QAAU,CAACC,aAAYC,aAAYC,YAE3CtB,EAAOG,GAAS,IAAIoB,UAAO1B,EAAQM,GAAQK,GAG/CR,EAAOG,GAAOqB,QAAQ,SAI9BzB,EAAK,GAAG0B"}
1
+ {"version":3,"file":"Cross.js","sources":["../../../src/components/shop/Cross.vue"],"sourcesContent":["<template></template>\n<script>\nimport { defineComponent } from \"vue\";\nimport Swiper, { Navigation, Mousewheel, FreeMode } from \"swiper\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"cross\",\n setup() {\n window.addEventListener(\"DOMContentLoaded\", () => {\n const container = document.getElementById(\"cross-sale\");\n const sliders = container.querySelectorAll(\".swiper\");\n const tabs = container.querySelectorAll(\"li\");\n let inited = [];\n\n tabs.forEach((li, index) => {\n li.addEventListener(\"click\", () => {\n tabs.forEach((li) => {\n li.classList.remove(\"is-active\");\n });\n\n sliders.forEach((slider) => {\n slider.classList.add(\"is-hidden\");\n });\n\n sliders[index].classList.remove(\"is-hidden\");\n li.classList.add(\"is-active\");\n\n if (!inited[index]) {\n const options = window.crossSaleSwiperOptions\n ? window.crossSaleSwiperOptions\n : {\n slidesPerView: 5,\n spaceBetween: 24,\n freeMode: {\n enabled: true\n },\n mousewheel: {\n forceToAxis: true,\n },\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n },\n };\n\n options.modules = [Navigation, Mousewheel, FreeMode];\n\n inited[index] = new Swiper(sliders[index], options);\n }\n\n inited[index].slideTo(0);\n });\n });\n\n tabs[0].click();\n });\n },\n});\n</script>"],"names":["script","defineComponent","name","setup","window","addEventListener","container","document","getElementById","sliders","querySelectorAll","tabs","inited","forEach","li","index","classList","remove","slider","add","options","crossSaleSwiperOptions","slidesPerView","spaceBetween","freeMode","enabled","mousewheel","forceToAxis","navigation","nextEl","prevEl","modules","Navigation","Mousewheel","FreeMode","Swiper","slideTo","click"],"mappings":"yIAKeA,EAAcC,kBAAgB,CACzCC,KAAM,QACNC,MAAK,WACDC,OAAOC,iBAAiB,oBAAoB,WACxC,IAAMC,EAAYC,SAASC,eAAe,cACpCC,EAAUH,EAAUI,iBAAiB,WACrCC,EAAOL,EAAUI,iBAAiB,MACpCE,EAAS,GAEbD,EAAKE,SAAQ,SAACC,EAAIC,GACdD,EAAGT,iBAAiB,SAAS,WAYzB,GAXAM,EAAKE,SAAQ,SAACC,GACVA,EAAGE,UAAUC,OAAO,gBAGxBR,EAAQI,SAAQ,SAACK,GACbA,EAAOF,UAAUG,IAAI,gBAGzBV,EAAQM,GAAOC,UAAUC,OAAO,aAChCH,EAAGE,UAAUG,IAAI,cAEZP,EAAOG,GAAQ,CAChB,IAAMK,EAAUhB,OAAOiB,uBACjBjB,OAAOiB,uBACP,CACEC,cAAe,EACfC,aAAc,GACdC,SAAU,CACNC,SAAS,GAEbC,WAAY,CACRC,aAAa,GAEjBC,WAAY,CACRC,OAAQ,sBACRC,OAAQ,wBAIpBV,EAAQW,QAAU,CAACC,EAAUA,WAAEC,EAAUA,WAAEC,EAAQA,UAEnDtB,EAAOG,GAAS,IAAIoB,EAAAA,QAAO1B,EAAQM,GAAQK,GAG/CR,EAAOG,GAAOqB,QAAQ,SAI9BzB,EAAK,GAAG0B"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("secure-ls"),t=require("vue");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=r(e);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,l=[],i=!0,u=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(l.push(n.value),!t||l.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(u)throw o}}return l}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return l(e,t)}(e,t)||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 l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var i={name:"filter-toggle",setup:function(){t.onMounted((function(){var e=new n.default({isCompression:!1}),t=e.get("filter");t||(t={brand:!0,category:!0,price:!0},e.set("filter",t));for(var r=0,l=Object.entries(t);r<l.length;r++){var i=o(l[r],2),u=i[0];i[1];var a=document.querySelector('[shop-filter][data-code="'+u+'"]');a&&a.classList.remove("is-toggled")}document.querySelectorAll("[shop-filter-title]").forEach((function(r){r.addEventListener("click",(function(){var n=r.closest("[shop-filter]").dataset.code;t[n]?delete t[n]:t[n]=!0,r.closest("[shop-filter]").classList.toggle("is-toggled"),e.set("filter",t)}))}))}))}};i.render=function(e,t,r,n,o,l){return null},module.exports=i;
1
+ "use strict";var e=require("secure-ls"),t=require("vue");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=r(e);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,l,i,u=[],a=!0,c=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;a=!1}else for(;!(a=(n=l.call(r)).done)&&(u.push(n.value),u.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e,t)||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.")}()}var i={name:"filter-toggle",setup:function(){t.onMounted((function(){var e=new n.default({isCompression:!1}),t=e.get("filter");t||(t={brand:!0,category:!0,price:!0},e.set("filter",t));for(var r=0,o=Object.entries(t);r<o.length;r++){var i=l(o[r],2),u=i[0];i[1];var a=document.querySelector('[shop-filter][data-code="'+u+'"]');a&&a.classList.remove("is-toggled")}document.querySelectorAll("[shop-filter-title]").forEach((function(r){r.addEventListener("click",(function(){var n=r.closest("[shop-filter]").dataset.code;t[n]?delete t[n]:t[n]=!0,r.closest("[shop-filter]").classList.toggle("is-toggled"),e.set("filter",t)}))}))}))}};i.render=function(e,t,r,n,o,l){return null},module.exports=i;
2
2
  //# sourceMappingURL=FilterToggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterToggle.js","sources":["../../../src/components/shop/FilterToggle.vue"],"sourcesContent":["<template></template>\n<script>\nimport SecureLS from 'secure-ls';\nimport { onMounted } from 'vue';\n\nexport default {\n name: 'filter-toggle',\n setup() {\n onMounted(() => {\n let ls = new SecureLS({\n isCompression: false\n });\n\n let filter = ls.get('filter');\n\n if (!filter) {\n filter = {\n brand: true,\n category: true,\n price: true\n };\n\n ls.set('filter', filter);\n }\n\n for (const [code, value] of Object.entries(filter)) {\n const group = document.querySelector('[shop-filter][data-code=\"' + code + '\"]');\n\n if (group) {\n group.classList.remove('is-toggled');\n }\n }\n\n document.querySelectorAll('[shop-filter-title]').forEach((head) => {\n head.addEventListener('click', () => {\n const code = head.closest('[shop-filter]').dataset.code;\n\n if (!filter[code]) {\n filter[code] = true;\n } else {\n delete filter[code];\n }\n\n head.closest('[shop-filter]').classList.toggle('is-toggled');\n ls.set('filter', filter);\n });\n });\n });\n }\n};\n</script>"],"names":["name","setup","onMounted","ls","SecureLS","isCompression","filter","get","brand","category","price","set","Object","entries","code","group","document","querySelector","classList","remove","querySelectorAll","forEach","head","addEventListener","closest","dataset","toggle"],"mappings":"4lCAKA,MAAe,CACXA,KAAM,gBACNC,iBACIC,aAAU,eACFC,EAAK,IAAIC,UAAS,CAClBC,eAAe,IAGfC,EAASH,EAAGI,IAAI,UAEfD,IACDA,EAAS,CACLE,OAAO,EACPC,UAAU,EACVC,OAAO,GAGXP,EAAGQ,IAAI,SAAUL,kBAGOM,OAAOC,QAAQP,kBAAS,iBAAxCQ,gBACFC,EAAQC,SAASC,cAAc,4BAA8BH,EAAO,MAEtEC,GACAA,EAAMG,UAAUC,OAAO,cAI/BH,SAASI,iBAAiB,uBAAuBC,SAAQ,SAACC,GACtDA,EAAKC,iBAAiB,SAAS,eACrBT,EAAOQ,EAAKE,QAAQ,iBAAiBC,QAAQX,KAE9CR,EAAOQ,UAGDR,EAAOQ,GAFdR,EAAOQ,IAAQ,EAKnBQ,EAAKE,QAAQ,iBAAiBN,UAAUQ,OAAO,cAC/CvB,EAAGQ,IAAI,SAAUL"}
1
+ {"version":3,"file":"FilterToggle.js","sources":["../../../src/components/shop/FilterToggle.vue"],"sourcesContent":["<template></template>\n<script>\nimport SecureLS from 'secure-ls';\nimport { onMounted } from 'vue';\n\nexport default {\n name: 'filter-toggle',\n setup() {\n onMounted(() => {\n let ls = new SecureLS({\n isCompression: false\n });\n\n let filter = ls.get('filter');\n\n if (!filter) {\n filter = {\n brand: true,\n category: true,\n price: true\n };\n\n ls.set('filter', filter);\n }\n\n for (const [code, value] of Object.entries(filter)) {\n const group = document.querySelector('[shop-filter][data-code=\"' + code + '\"]');\n\n if (group) {\n group.classList.remove('is-toggled');\n }\n }\n\n document.querySelectorAll('[shop-filter-title]').forEach((head) => {\n head.addEventListener('click', () => {\n const code = head.closest('[shop-filter]').dataset.code;\n\n if (!filter[code]) {\n filter[code] = true;\n } else {\n delete filter[code];\n }\n\n head.closest('[shop-filter]').classList.toggle('is-toggled');\n ls.set('filter', filter);\n });\n });\n });\n }\n};\n</script>"],"names":["script","name","setup","onMounted","ls","SecureLS","isCompression","filter","get","brand","category","price","set","_i","_Object$entries","Object","entries","length","_Object$entries$_i","_slicedToArray","code","group","document","querySelector","classList","remove","querySelectorAll","forEach","head","addEventListener","closest","dataset","toggle"],"mappings":"4oCAKA,IAAeA,EAAA,CACXC,KAAM,gBACNC,MAAK,WACDC,EAAAA,WAAU,WACN,IAAIC,EAAK,IAAIC,UAAS,CAClBC,eAAe,IAGfC,EAASH,EAAGI,IAAI,UAEfD,IACDA,EAAS,CACLE,OAAO,EACPC,UAAU,EACVC,OAAO,GAGXP,EAAGQ,IAAI,SAAUL,IAGrB,IAAA,IAAAM,EAAAC,EAAAA,EAA4BC,OAAOC,QAAQT,GAAOM,EAAAC,EAAAG,OAAAJ,IAAE,CAA/C,IAAAK,EAAAC,EAAAL,EAAAD,GAAA,GAAOO,EAAIF,EAAA,GAAOA,EAAA,GACnB,IAAMG,EAAQC,SAASC,cAAc,4BAA8BH,EAAO,MAEtEC,GACAA,EAAMG,UAAUC,OAAO,cAI/BH,SAASI,iBAAiB,uBAAuBC,SAAQ,SAACC,GACtDA,EAAKC,iBAAiB,SAAS,WAC3B,IAAMT,EAAOQ,EAAKE,QAAQ,iBAAiBC,QAAQX,KAE9Cb,EAAOa,UAGDb,EAAOa,GAFdb,EAAOa,IAAQ,EAKnBQ,EAAKE,QAAQ,iBAAiBN,UAAUQ,OAAO,cAC/C5B,EAAGQ,IAAI,SAAUL"}
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.js","sources":["../../../src/components/shop/Gallery.vue","../../../src/components/shop/Gallery.vue?vue&type=template&id=7f4e9061&lang.js"],"sourcesContent":["<template>\n <button class=\"delete is-large\" @click=\"close\" v-if=\"fullscreen\" v-bind:class=\"{ 'is-hidden': !modal }\"></button>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport Swiper, { Navigation, Mousewheel, Thumbs, FreeMode } from \"swiper\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"gallery\",\n props: {\n thumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n fullscreenThumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n prev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n next: {\n type: String,\n default: \".swiper-button-next\",\n },\n thumbPrev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n thumbNext: {\n type: String,\n default: \".swiper-button-next\",\n },\n fullscreen: {\n type: Boolean,\n default: false,\n },\n isResizeThumbs: {\n type: Boolean,\n default: false,\n },\n thumbsSpaceBetween: {\n type: Number,\n default: 10,\n },\n },\n setup(props) {\n const modal = ref(false);\n let resizeTimeout;\n let thumbs;\n let slider;\n let thumbsSwiper;\n let sliderSwiper;\n\n const close = () => {\n document.body.classList.remove(\"product-gallery-modal-open\");\n modal.value = false;\n\n update(\"close\");\n\n if (props.isResizeThumbs) {\n resizeThumbsSwiper();\n }\n };\n\n const open = () => {\n document.body.classList.add(\"product-gallery-modal-open\");\n modal.value = true;\n\n update(\"open\");\n };\n\n const update = (action) => {\n if (thumbs) {\n if (props.thumbsDirection != props.fullscreenThumbsDirection) {\n thumbsSwiper.changeDirection(\n action == \"open\"\n ? props.fullscreenThumbsDirection\n : props.thumbsDirection\n );\n } else {\n thumbsSwiper.update();\n }\n }\n\n sliderSwiper.update();\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n close();\n }\n });\n\n const resizeThumbsSwiper = () => {\n thumbs.style.height = parseInt(slider.offsetHeight) + \"px\";\n thumbsSwiper.update();\n };\n\n const resizeBounced = () => {\n clearTimeout(resizeTimeout);\n\n resizeTimeout = setTimeout(() => {\n resizeThumbsSwiper();\n }, 500);\n };\n\n const init = () => {\n thumbs = document.getElementById(\"product-gallery-thumbs\");\n slider = document.getElementById(\"product-gallery\");\n\n if (thumbs) {\n thumbsSwiper = new Swiper(thumbs, {\n spaceBetween: props.thumbsSpaceBetween,\n slidesPerView: \"auto\",\n mousewheel: {\n forceToAxis: true,\n },\n freeMode: {\n enabled: true\n },\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n direction: props.thumbsDirection,\n navigation: {\n nextEl: props.thumbNext,\n prevEl: props.thumbPrev,\n },\n modules: [Navigation, Mousewheel, FreeMode, Thumbs]\n });\n\n if (props.isResizeThumbs) {\n window.addEventListener(\"resize\", resizeBounced, { passive: true });\n resizeThumbsSwiper();\n }\n\n thumbs.classList.remove(\"not-inited\");\n }\n\n if (props.fullscreen) {\n slider.addEventListener(\"click\", open);\n }\n\n if (slider) {\n let options = {\n spaceBetween: 10,\n mousewheel: {\n forceToAxis: true,\n },\n centeredSlides: true,\n navigation: {\n nextEl: props.next,\n prevEl: props.prev,\n },\n };\n\n if (thumbsSwiper) {\n options.thumbs = {\n swiper: thumbsSwiper,\n };\n }\n\n options.modules = [Navigation, Mousewheel, FreeMode, Thumbs];\n\n sliderSwiper = new Swiper(slider, options);\n }\n\n update(\"close\");\n };\n\n document.addEventListener(\"DOMContentLoaded\", init, false);\n\n return {\n modal,\n close,\n };\n },\n});\n</script>","<template>\n <button class=\"delete is-large\" @click=\"close\" v-if=\"fullscreen\" v-bind:class=\"{ 'is-hidden': !modal }\"></button>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport Swiper, { Navigation, Mousewheel, Thumbs, FreeMode } from \"swiper\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"gallery\",\n props: {\n thumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n fullscreenThumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n prev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n next: {\n type: String,\n default: \".swiper-button-next\",\n },\n thumbPrev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n thumbNext: {\n type: String,\n default: \".swiper-button-next\",\n },\n fullscreen: {\n type: Boolean,\n default: false,\n },\n isResizeThumbs: {\n type: Boolean,\n default: false,\n },\n thumbsSpaceBetween: {\n type: Number,\n default: 10,\n },\n },\n setup(props) {\n const modal = ref(false);\n let resizeTimeout;\n let thumbs;\n let slider;\n let thumbsSwiper;\n let sliderSwiper;\n\n const close = () => {\n document.body.classList.remove(\"product-gallery-modal-open\");\n modal.value = false;\n\n update(\"close\");\n\n if (props.isResizeThumbs) {\n resizeThumbsSwiper();\n }\n };\n\n const open = () => {\n document.body.classList.add(\"product-gallery-modal-open\");\n modal.value = true;\n\n update(\"open\");\n };\n\n const update = (action) => {\n if (thumbs) {\n if (props.thumbsDirection != props.fullscreenThumbsDirection) {\n thumbsSwiper.changeDirection(\n action == \"open\"\n ? props.fullscreenThumbsDirection\n : props.thumbsDirection\n );\n } else {\n thumbsSwiper.update();\n }\n }\n\n sliderSwiper.update();\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n close();\n }\n });\n\n const resizeThumbsSwiper = () => {\n thumbs.style.height = parseInt(slider.offsetHeight) + \"px\";\n thumbsSwiper.update();\n };\n\n const resizeBounced = () => {\n clearTimeout(resizeTimeout);\n\n resizeTimeout = setTimeout(() => {\n resizeThumbsSwiper();\n }, 500);\n };\n\n const init = () => {\n thumbs = document.getElementById(\"product-gallery-thumbs\");\n slider = document.getElementById(\"product-gallery\");\n\n if (thumbs) {\n thumbsSwiper = new Swiper(thumbs, {\n spaceBetween: props.thumbsSpaceBetween,\n slidesPerView: \"auto\",\n mousewheel: {\n forceToAxis: true,\n },\n freeMode: {\n enabled: true\n },\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n direction: props.thumbsDirection,\n navigation: {\n nextEl: props.thumbNext,\n prevEl: props.thumbPrev,\n },\n modules: [Navigation, Mousewheel, FreeMode, Thumbs]\n });\n\n if (props.isResizeThumbs) {\n window.addEventListener(\"resize\", resizeBounced, { passive: true });\n resizeThumbsSwiper();\n }\n\n thumbs.classList.remove(\"not-inited\");\n }\n\n if (props.fullscreen) {\n slider.addEventListener(\"click\", open);\n }\n\n if (slider) {\n let options = {\n spaceBetween: 10,\n mousewheel: {\n forceToAxis: true,\n },\n centeredSlides: true,\n navigation: {\n nextEl: props.next,\n prevEl: props.prev,\n },\n };\n\n if (thumbsSwiper) {\n options.thumbs = {\n swiper: thumbsSwiper,\n };\n }\n\n options.modules = [Navigation, Mousewheel, FreeMode, Thumbs];\n\n sliderSwiper = new Swiper(slider, options);\n }\n\n update(\"close\");\n };\n\n document.addEventListener(\"DOMContentLoaded\", init, false);\n\n return {\n modal,\n close,\n };\n },\n});\n</script>"],"names":["defineComponent","name","props","thumbsDirection","type","String","fullscreenThumbsDirection","prev","next","thumbPrev","thumbNext","fullscreen","Boolean","isResizeThumbs","thumbsSpaceBetween","Number","setup","resizeTimeout","thumbs","slider","thumbsSwiper","sliderSwiper","modal","ref","close","document","body","classList","remove","value","update","resizeThumbsSwiper","open","add","action","changeDirection","window","addEventListener","e","key","style","height","parseInt","offsetHeight","resizeBounced","clearTimeout","setTimeout","getElementById","Swiper","spaceBetween","slidesPerView","mousewheel","forceToAxis","freeMode","enabled","watchSlidesVisibility","watchSlidesProgress","direction","navigation","nextEl","prevEl","modules","Navigation","Mousewheel","FreeMode","Thumbs","passive","options","centeredSlides","swiper","_ctx","_createElementBlock","onClick"],"mappings":"2IAO6BA,kBAAgB,CACzCC,KAAM,UACNC,MAAO,CACHC,gBAAiB,CACbC,KAAMC,eACG,cAEbC,0BAA2B,CACvBF,KAAMC,eACG,cAEbE,KAAM,CACFH,KAAMC,eACG,uBAEbG,KAAM,CACFJ,KAAMC,eACG,uBAEbI,UAAW,CACPL,KAAMC,eACG,uBAEbK,UAAW,CACPN,KAAMC,eACG,uBAEbM,WAAY,CACRP,KAAMQ,iBACG,GAEbC,eAAgB,CACZT,KAAMQ,iBACG,GAEbE,mBAAoB,CAChBV,KAAMW,eACG,KAGjBC,eAAMd,OAEEe,EACAC,EACAC,EACAC,EACAC,EALEC,EAAQC,OAAI,GAOZC,EAAQ,WACVC,SAASC,KAAKC,UAAUC,OAAO,8BAC/BN,EAAMO,OAAQ,EAEdC,EAAO,SAEH5B,EAAMW,gBACNkB,KAIFC,EAAO,WACTP,SAASC,KAAKC,UAAUM,IAAI,8BAC5BX,EAAMO,OAAQ,EAEdC,EAAO,SAGLA,EAAS,SAACI,GACRhB,IACIhB,EAAMC,iBAAmBD,EAAMI,0BAC/Bc,EAAae,gBACC,QAAVD,EACMhC,EAAMI,0BACNJ,EAAMC,iBAGhBiB,EAAaU,UAIrBT,EAAaS,UAGjBM,OAAOC,iBAAiB,SAAS,SAACC,GAC1BhB,EAAMO,OAAmB,WAAVS,EAAEC,KACjBf,WAIFO,EAAqB,WACvBb,EAAOsB,MAAMC,OAASC,SAASvB,EAAOwB,cAAgB,KACtDvB,EAAaU,UAGXc,EAAgB,WAClBC,aAAa5B,GAEbA,EAAgB6B,YAAW,WACvBf,MACD,aAkEPN,SAASY,iBAAiB,oBA/Db,cACTnB,EAASO,SAASsB,eAAe,0BACjC5B,EAASM,SAASsB,eAAe,mBAE7B7B,IACAE,EAAe,IAAI4B,UAAO9B,EAAQ,CAC9B+B,aAAc/C,EAAMY,mBACpBoC,cAAe,OACfC,WAAY,CACRC,aAAa,GAEjBC,SAAU,CACNC,SAAS,GAEbC,uBAAuB,EACvBC,qBAAqB,EACrBC,UAAWvD,EAAMC,gBACjBuD,WAAY,CACRC,OAAQzD,EAAMQ,UACdkD,OAAQ1D,EAAMO,WAElBoD,QAAS,CAACC,aAAYC,aAAYC,WAAUC,YAG5C/D,EAAMW,iBACNuB,OAAOC,iBAAiB,SAAUO,EAAe,CAAEsB,SAAS,IAC5DnC,KAGJb,EAAOS,UAAUC,OAAO,eAGxB1B,EAAMS,YACNQ,EAAOkB,iBAAiB,QAASL,GAGjCb,EAAQ,KACJgD,EAAU,CACVlB,aAAc,GACdE,WAAY,CACRC,aAAa,GAEjBgB,gBAAgB,EAChBV,WAAY,CACRC,OAAQzD,EAAMM,KACdoD,OAAQ1D,EAAMK,OAIlBa,IACA+C,EAAQjD,OAAS,CACbmD,OAAQjD,IAIhB+C,EAAQN,QAAU,CAACC,aAAYC,aAAYC,WAAUC,UAErD5C,EAAe,IAAI2B,UAAO7B,EAAQgD,GAGtCrC,EAAO,YAGyC,GAE7C,CACHR,MAAAA,EACAE,MAAAA,4CC9K6C8C,4BAArDC,6DAAc,gCAAiFD,WAA9DE,sCAAOF"}
1
+ {"version":3,"file":"Gallery.js","sources":["../../../src/components/shop/Gallery.vue","../../../src/components/shop/Gallery.vue?vue&type=template&id=7f4e9061&lang.js"],"sourcesContent":["<template>\n <button class=\"delete is-large\" @click=\"close\" v-if=\"fullscreen\" v-bind:class=\"{ 'is-hidden': !modal }\"></button>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport Swiper, { Navigation, Mousewheel, Thumbs, FreeMode } from \"swiper\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"gallery\",\n props: {\n thumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n fullscreenThumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n prev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n next: {\n type: String,\n default: \".swiper-button-next\",\n },\n thumbPrev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n thumbNext: {\n type: String,\n default: \".swiper-button-next\",\n },\n fullscreen: {\n type: Boolean,\n default: false,\n },\n isResizeThumbs: {\n type: Boolean,\n default: false,\n },\n thumbsSpaceBetween: {\n type: Number,\n default: 10,\n },\n },\n setup(props) {\n const modal = ref(false);\n let resizeTimeout;\n let thumbs;\n let slider;\n let thumbsSwiper;\n let sliderSwiper;\n\n const close = () => {\n document.body.classList.remove(\"product-gallery-modal-open\");\n modal.value = false;\n\n update(\"close\");\n\n if (props.isResizeThumbs) {\n resizeThumbsSwiper();\n }\n };\n\n const open = () => {\n document.body.classList.add(\"product-gallery-modal-open\");\n modal.value = true;\n\n update(\"open\");\n };\n\n const update = (action) => {\n if (thumbs) {\n if (props.thumbsDirection != props.fullscreenThumbsDirection) {\n thumbsSwiper.changeDirection(\n action == \"open\"\n ? props.fullscreenThumbsDirection\n : props.thumbsDirection\n );\n } else {\n thumbsSwiper.update();\n }\n }\n\n sliderSwiper.update();\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n close();\n }\n });\n\n const resizeThumbsSwiper = () => {\n thumbs.style.height = parseInt(slider.offsetHeight) + \"px\";\n thumbsSwiper.update();\n };\n\n const resizeBounced = () => {\n clearTimeout(resizeTimeout);\n\n resizeTimeout = setTimeout(() => {\n resizeThumbsSwiper();\n }, 500);\n };\n\n const init = () => {\n thumbs = document.getElementById(\"product-gallery-thumbs\");\n slider = document.getElementById(\"product-gallery\");\n\n if (thumbs) {\n thumbsSwiper = new Swiper(thumbs, {\n spaceBetween: props.thumbsSpaceBetween,\n slidesPerView: \"auto\",\n mousewheel: {\n forceToAxis: true,\n },\n freeMode: {\n enabled: true\n },\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n direction: props.thumbsDirection,\n navigation: {\n nextEl: props.thumbNext,\n prevEl: props.thumbPrev,\n },\n modules: [Navigation, Mousewheel, FreeMode, Thumbs]\n });\n\n if (props.isResizeThumbs) {\n window.addEventListener(\"resize\", resizeBounced, { passive: true });\n resizeThumbsSwiper();\n }\n\n thumbs.classList.remove(\"not-inited\");\n }\n\n if (props.fullscreen) {\n slider.addEventListener(\"click\", open);\n }\n\n if (slider) {\n let options = {\n spaceBetween: 10,\n mousewheel: {\n forceToAxis: true,\n },\n centeredSlides: true,\n navigation: {\n nextEl: props.next,\n prevEl: props.prev,\n },\n };\n\n if (thumbsSwiper) {\n options.thumbs = {\n swiper: thumbsSwiper,\n };\n }\n\n options.modules = [Navigation, Mousewheel, FreeMode, Thumbs];\n\n sliderSwiper = new Swiper(slider, options);\n }\n\n update(\"close\");\n };\n\n document.addEventListener(\"DOMContentLoaded\", init, false);\n\n return {\n modal,\n close,\n };\n },\n});\n</script>","<template>\n <button class=\"delete is-large\" @click=\"close\" v-if=\"fullscreen\" v-bind:class=\"{ 'is-hidden': !modal }\"></button>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport Swiper, { Navigation, Mousewheel, Thumbs, FreeMode } from \"swiper\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"gallery\",\n props: {\n thumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n fullscreenThumbsDirection: {\n type: String,\n default: \"horizontal\",\n },\n prev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n next: {\n type: String,\n default: \".swiper-button-next\",\n },\n thumbPrev: {\n type: String,\n default: \".swiper-button-prev\",\n },\n thumbNext: {\n type: String,\n default: \".swiper-button-next\",\n },\n fullscreen: {\n type: Boolean,\n default: false,\n },\n isResizeThumbs: {\n type: Boolean,\n default: false,\n },\n thumbsSpaceBetween: {\n type: Number,\n default: 10,\n },\n },\n setup(props) {\n const modal = ref(false);\n let resizeTimeout;\n let thumbs;\n let slider;\n let thumbsSwiper;\n let sliderSwiper;\n\n const close = () => {\n document.body.classList.remove(\"product-gallery-modal-open\");\n modal.value = false;\n\n update(\"close\");\n\n if (props.isResizeThumbs) {\n resizeThumbsSwiper();\n }\n };\n\n const open = () => {\n document.body.classList.add(\"product-gallery-modal-open\");\n modal.value = true;\n\n update(\"open\");\n };\n\n const update = (action) => {\n if (thumbs) {\n if (props.thumbsDirection != props.fullscreenThumbsDirection) {\n thumbsSwiper.changeDirection(\n action == \"open\"\n ? props.fullscreenThumbsDirection\n : props.thumbsDirection\n );\n } else {\n thumbsSwiper.update();\n }\n }\n\n sliderSwiper.update();\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n close();\n }\n });\n\n const resizeThumbsSwiper = () => {\n thumbs.style.height = parseInt(slider.offsetHeight) + \"px\";\n thumbsSwiper.update();\n };\n\n const resizeBounced = () => {\n clearTimeout(resizeTimeout);\n\n resizeTimeout = setTimeout(() => {\n resizeThumbsSwiper();\n }, 500);\n };\n\n const init = () => {\n thumbs = document.getElementById(\"product-gallery-thumbs\");\n slider = document.getElementById(\"product-gallery\");\n\n if (thumbs) {\n thumbsSwiper = new Swiper(thumbs, {\n spaceBetween: props.thumbsSpaceBetween,\n slidesPerView: \"auto\",\n mousewheel: {\n forceToAxis: true,\n },\n freeMode: {\n enabled: true\n },\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n direction: props.thumbsDirection,\n navigation: {\n nextEl: props.thumbNext,\n prevEl: props.thumbPrev,\n },\n modules: [Navigation, Mousewheel, FreeMode, Thumbs]\n });\n\n if (props.isResizeThumbs) {\n window.addEventListener(\"resize\", resizeBounced, { passive: true });\n resizeThumbsSwiper();\n }\n\n thumbs.classList.remove(\"not-inited\");\n }\n\n if (props.fullscreen) {\n slider.addEventListener(\"click\", open);\n }\n\n if (slider) {\n let options = {\n spaceBetween: 10,\n mousewheel: {\n forceToAxis: true,\n },\n centeredSlides: true,\n navigation: {\n nextEl: props.next,\n prevEl: props.prev,\n },\n };\n\n if (thumbsSwiper) {\n options.thumbs = {\n swiper: thumbsSwiper,\n };\n }\n\n options.modules = [Navigation, Mousewheel, FreeMode, Thumbs];\n\n sliderSwiper = new Swiper(slider, options);\n }\n\n update(\"close\");\n };\n\n document.addEventListener(\"DOMContentLoaded\", init, false);\n\n return {\n modal,\n close,\n };\n },\n});\n</script>"],"names":["script","defineComponent","name","props","thumbsDirection","type","String","default","fullscreenThumbsDirection","prev","next","thumbPrev","thumbNext","fullscreen","Boolean","isResizeThumbs","thumbsSpaceBetween","Number","setup","resizeTimeout","thumbs","slider","thumbsSwiper","sliderSwiper","modal","ref","close","document","body","classList","remove","value","update","resizeThumbsSwiper","open","add","action","changeDirection","window","addEventListener","e","key","style","height","parseInt","offsetHeight","resizeBounced","clearTimeout","setTimeout","getElementById","Swiper","spaceBetween","slidesPerView","mousewheel","forceToAxis","freeMode","enabled","watchSlidesVisibility","watchSlidesProgress","direction","navigation","nextEl","prevEl","modules","Navigation","Mousewheel","FreeMode","Thumbs","passive","options","centeredSlides","swiper","_ctx","_createElementBlock","class","_normalizeClass","onClick","apply","arguments"],"mappings":"yIAOeA,EAAcC,kBAAgB,CACzCC,KAAM,UACNC,MAAO,CACHC,gBAAiB,CACbC,KAAMC,OACNC,QAAS,cAEbC,0BAA2B,CACvBH,KAAMC,OACNC,QAAS,cAEbE,KAAM,CACFJ,KAAMC,OACNC,QAAS,uBAEbG,KAAM,CACFL,KAAMC,OACNC,QAAS,uBAEbI,UAAW,CACPN,KAAMC,OACNC,QAAS,uBAEbK,UAAW,CACPP,KAAMC,OACNC,QAAS,uBAEbM,WAAY,CACRR,KAAMS,QACNP,SAAS,GAEbQ,eAAgB,CACZV,KAAMS,QACNP,SAAS,GAEbS,mBAAoB,CAChBX,KAAMY,OACNV,QAAS,KAGjBW,MAAK,SAACf,GACF,IACIgB,EACAC,EACAC,EACAC,EACAC,EALEC,EAAQC,OAAI,GAOZC,EAAQ,WACVC,SAASC,KAAKC,UAAUC,OAAO,8BAC/BN,EAAMO,OAAQ,EAEdC,EAAO,SAEH7B,EAAMY,gBACNkB,KAIFC,EAAO,WACTP,SAASC,KAAKC,UAAUM,IAAI,8BAC5BX,EAAMO,OAAQ,EAEdC,EAAO,SAGLA,EAAS,SAACI,GACRhB,IACIjB,EAAMC,iBAAmBD,EAAMK,0BAC/Bc,EAAae,gBACC,QAAVD,EACMjC,EAAMK,0BACNL,EAAMC,iBAGhBkB,EAAaU,UAIrBT,EAAaS,UAGjBM,OAAOC,iBAAiB,SAAS,SAACC,GAC1BhB,EAAMO,OAAmB,WAAVS,EAAEC,KACjBf,OAIR,IAAMO,EAAqB,WACvBb,EAAOsB,MAAMC,OAASC,SAASvB,EAAOwB,cAAgB,KACtDvB,EAAaU,UAGXc,EAAgB,WAClBC,aAAa5B,GAEbA,EAAgB6B,YAAW,WACvBf,MACD,MAoEP,OAFAN,SAASY,iBAAiB,oBA/Db,WAoCT,GAnCAnB,EAASO,SAASsB,eAAe,0BACjC5B,EAASM,SAASsB,eAAe,mBAE7B7B,IACAE,EAAe,IAAI4B,EAAM,QAAC9B,EAAQ,CAC9B+B,aAAchD,EAAMa,mBACpBoC,cAAe,OACfC,WAAY,CACRC,aAAa,GAEjBC,SAAU,CACNC,SAAS,GAEbC,uBAAuB,EACvBC,qBAAqB,EACrBC,UAAWxD,EAAMC,gBACjBwD,WAAY,CACRC,OAAQ1D,EAAMS,UACdkD,OAAQ3D,EAAMQ,WAElBoD,QAAS,CAACC,EAAUA,WAAEC,aAAYC,EAAAA,SAAUC,EAAAA,UAG5ChE,EAAMY,iBACNuB,OAAOC,iBAAiB,SAAUO,EAAe,CAAEsB,SAAS,IAC5DnC,KAGJb,EAAOS,UAAUC,OAAO,eAGxB3B,EAAMU,YACNQ,EAAOkB,iBAAiB,QAASL,GAGjCb,EAAQ,CACR,IAAIgD,EAAU,CACVlB,aAAc,GACdE,WAAY,CACRC,aAAa,GAEjBgB,gBAAgB,EAChBV,WAAY,CACRC,OAAQ1D,EAAMO,KACdoD,OAAQ3D,EAAMM,OAIlBa,IACA+C,EAAQjD,OAAS,CACbmD,OAAQjD,IAIhB+C,EAAQN,QAAU,CAACC,EAAAA,WAAYC,EAAAA,WAAYC,EAAAA,SAAUC,EAAAA,QAErD5C,EAAe,IAAI2B,EAAAA,QAAO7B,EAAQgD,GAGtCrC,EAAO,YAGyC,GAE7C,CACHR,MAAAA,EACAE,MAAAA,4CC9K6C8C,EAAU3D,0BAA/D4D,EAAAA,mBAAgH,SAAA,OAAxGC,MAAKC,EAAAA,eAAA,CAAC,gCAAiFH,EAAMhD,SAApEoD,sCAAOJ,EAAK9C,OAAA8C,EAAA9C,MAAAmD,MAAAL,EAAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"Notice.js","sources":["../../../src/components/shop/Notice.vue","../../../src/components/shop/Notice.vue?vue&type=template&id=65d632e0&lang.js"],"sourcesContent":["<template>\n <div class=\"container is-fluid extra-notice\" v-bind:class=\"{ 'is-light-text': isLight, 'is-visible': !hidden }\" v-bind:style=\"{ 'background-color': background }\">\n <slot :close=\"close\"></slot>\n <slot name=\"close\" :close=\"close\">\n <svg class=\"icon close\" @click=\"close\">\n <use xlink:href=\"#close\" />\n </svg>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport SecureLS from 'secure-ls';\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"notice\",\n props: {\n hash: String,\n isLight: Boolean,\n background: String\n },\n setup(props) {\n const ls = new SecureLS({\n isCompression: false\n });\n\n const hidden = ref(ls.get('notice') === props.hash);\n\n const close = () => {\n ls.set('notice', props.hash);\n hidden.value = true;\n };\n\n return {\n hidden,\n close,\n };\n }\n});\n</script>","<template>\n <div class=\"container is-fluid extra-notice\" v-bind:class=\"{ 'is-light-text': isLight, 'is-visible': !hidden }\" v-bind:style=\"{ 'background-color': background }\">\n <slot :close=\"close\"></slot>\n <slot name=\"close\" :close=\"close\">\n <svg class=\"icon close\" @click=\"close\">\n <use xlink:href=\"#close\" />\n </svg>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport SecureLS from 'secure-ls';\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"notice\",\n props: {\n hash: String,\n isLight: Boolean,\n background: String\n },\n setup(props) {\n const ls = new SecureLS({\n isCompression: false\n });\n\n const hidden = ref(ls.get('notice') === props.hash);\n\n const close = () => {\n ls.set('notice', props.hash);\n hidden.value = true;\n };\n\n return {\n hidden,\n close,\n };\n }\n});\n</script>"],"names":["defineComponent","name","props","hash","String","isLight","Boolean","background","setup","ls","SecureLS","isCompression","hidden","ref","get","close","set","value","_createElementVNode","_createElementBlock","_ctx","style","_renderSlot","onClick"],"mappings":"0IAc6BA,kBAAgB,CACzCC,KAAM,SACNC,MAAO,CACHC,KAAMC,OACNC,QAASC,QACTC,WAAYH,QAEhBI,eAAMN,OACIO,EAAK,IAAIC,UAAS,CACpBC,eAAe,IAGbC,EAASC,MAAIJ,EAAGK,IAAI,YAAcZ,EAAMC,YAOvC,CACHS,OAAAA,EACAG,MAPU,WACVN,EAAGO,IAAI,SAAUd,EAAMC,MACvBS,EAAOK,OAAQ,UCzBXC,yCAAgB,wEAJ5BC,oDAAW,mDAAmEC,wBAAwBA,YAAiBC,2CAA6BD,iBAChJE,iCAAOP,MAAOK,UACdE,+BAAoBP,MAAOK,UAA3B,iCACID,kCAAW,aAAcI,sCAAOH"}
1
+ {"version":3,"file":"Notice.js","sources":["../../../src/components/shop/Notice.vue","../../../src/components/shop/Notice.vue?vue&type=template&id=65d632e0&lang.js"],"sourcesContent":["<template>\n <div class=\"container is-fluid extra-notice\" v-bind:class=\"{ 'is-light-text': isLight, 'is-visible': !hidden }\" v-bind:style=\"{ 'background-color': background }\">\n <slot :close=\"close\"></slot>\n <slot name=\"close\" :close=\"close\">\n <svg class=\"icon close\" @click=\"close\">\n <use xlink:href=\"#close\" />\n </svg>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport SecureLS from 'secure-ls';\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"notice\",\n props: {\n hash: String,\n isLight: Boolean,\n background: String\n },\n setup(props) {\n const ls = new SecureLS({\n isCompression: false\n });\n\n const hidden = ref(ls.get('notice') === props.hash);\n\n const close = () => {\n ls.set('notice', props.hash);\n hidden.value = true;\n };\n\n return {\n hidden,\n close,\n };\n }\n});\n</script>","<template>\n <div class=\"container is-fluid extra-notice\" v-bind:class=\"{ 'is-light-text': isLight, 'is-visible': !hidden }\" v-bind:style=\"{ 'background-color': background }\">\n <slot :close=\"close\"></slot>\n <slot name=\"close\" :close=\"close\">\n <svg class=\"icon close\" @click=\"close\">\n <use xlink:href=\"#close\" />\n </svg>\n </slot>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport SecureLS from 'secure-ls';\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"notice\",\n props: {\n hash: String,\n isLight: Boolean,\n background: String\n },\n setup(props) {\n const ls = new SecureLS({\n isCompression: false\n });\n\n const hidden = ref(ls.get('notice') === props.hash);\n\n const close = () => {\n ls.set('notice', props.hash);\n hidden.value = true;\n };\n\n return {\n hidden,\n close,\n };\n }\n});\n</script>"],"names":["script","defineComponent","name","props","hash","String","isLight","Boolean","background","setup","ls","SecureLS","isCompression","hidden","ref","get","close","set","value","_createElementVNode","createElementVNode","xlink:href","_createElementBlock","createElementBlock","class","_normalizeClass","is-light-text","_ctx","style","_renderSlot","renderSlot","$slots","onClick","apply","arguments"],"mappings":"wIAceA,EAAcC,kBAAgB,CACzCC,KAAM,SACNC,MAAO,CACHC,KAAMC,OACNC,QAASC,QACTC,WAAYH,QAEhBI,MAAK,SAACN,GACF,IAAMO,EAAK,IAAIC,UAAS,CACpBC,eAAe,IAGbC,EAASC,EAAGA,IAACJ,EAAGK,IAAI,YAAcZ,EAAMC,MAO9C,MAAO,CACHS,OAAAA,EACAG,MAPU,WACVN,EAAGO,IAAI,SAAUd,EAAMC,MACvBS,EAAOK,OAAQ,UCzBXC,EAA0BC,mBAAA,MAAA,CAArBC,aAAW,UAAO,MAAA,wDAJnCC,EAOKC,mBAAA,MAAA,CAPAC,MAAMC,EAAAA,eAAA,CAAA,kCAAmE,CAAAC,gBAAAC,EAAArB,sBAAwBqB,EAAOd,UAAUe,2CAA6BD,EAASnB,eACzJqB,EAA2BC,WAAAH,EAAAI,OAAA,UAAA,CAApBf,MAAOW,EAAKX,QACnBa,EAAAC,WAIMH,EAJcI,OAAA,QAAA,CAAAf,MAAOW,EAAAX,QAA3B,WAAA,MAIM,gBAHFM,EAEKC,mBAAA,MAAA,CAFAC,MAAM,aAAcQ,sCAAOL,EAAKX,OAAAW,EAAAX,MAAAiB,MAAAN,EAAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../src/components/shop/Pagination.vue","../../../src/components/shop/Pagination.vue?vue&type=template&id=c6442098&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-pagination has-text-centered mb-3\">\n <component :is=\"component\"></component>\n <div class=\"shop-pagination-more\" v-if=\"hasMorePages\">\n <slot :more=\"more\">\n <button class=\"button is-small\" @click=\"more\">\n <span class=\"icon is-small\">\n <i class=\"fas fa-sync-alt\"></i>\n </span>\n <span>{{ __('shop.pagination.more') }}</span>\n </button>\n </slot>\n </div>\n </div>\n</template>\n<script>\nimport { ref, onMounted, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n setup() {\n const component = ref(false);\n const hasMorePages = ref(true);\n const visiblePages = ref([]);\n\n let pages = [];\n let paginators = {};\n let inited = false;\n let cleared = false;\n\n const getComponentName = (a) => {\n // console.log(a.href);\n // console.log(a.pathname);\n\n const href = a.pathname.replace(/\\/$/, '');\n const last = href.substring(href.lastIndexOf('/') + 1);\n\n return 'page-product-' + (last.match(/^page([0-9]+)$/) ? last : 'page1');\n };\n\n let nextPages = [getComponentName(window.location)];\n\n const get = (e) => {\n e.preventDefault();\n\n nextPages = [getComponentName(e.currentTarget)];\n\n load(e.currentTarget);\n };\n\n const parseHref = (a) => {\n let pathname = a.pathname.replace(/\\/$/, '');\n const page = pathname.substring(pathname.lastIndexOf('/') + 1);\n const isPage = page.match(/^page([0-9]+)$/);\n const pageUrl = isPage ? page : '';\n\n if (isPage) {\n pathname = pathname.substring(0, pathname.lastIndexOf('/'));\n }\n\n const hash = a.hash ? a.hash.substring(1) : '';\n\n pathname = (hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname) + (pageUrl ? '/' + pageUrl : '');\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&paginator' : '?paginator');\n\n return href;\n };\n\n const load = (button, isAppend) => {\n const href = parseHref(button);\n const componentName = getComponentName(button);\n\n if (!inited) {\n window.app.component('products-paginate', {\n data() {\n return {\n components: visiblePages\n };\n },\n template: '<teleport to=\"#products\"><component :is=\"component\" v-for=\"(component, key) in components\" v-bind:key=\"key\"></component></teleport>'\n });\n\n component.value = 'products-paginate';\n inited = true;\n }\n\n if (pages.indexOf(componentName) === -1) {\n button.classList.add('is-loading');\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n clearInitial(isAppend);\n\n let html = document.createElement('html');\n\n html.innerHTML = response.data.products;\n\n window.app.component(componentName, {\n template: html.querySelector('#products').innerHTML\n });\n\n pages.push(componentName);\n\n history.pushState({ urlPath: button.href }, document.title, button.href);\n\n html.innerHTML = response.data.paginator;\n\n paginators[componentName] = response.data.paginator;\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n nextTick(init);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n history.pushState({ urlPath: href }, document.title, href);\n\n let html = document.createElement('html');\n html.innerHTML = paginators[componentName];\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n nextTick(init);\n }\n };\n\n const setPaginatorCurrentPages = () => {\n const paginator = document.getElementById('pagination');\n\n nextPages.forEach((componentName) => {\n const link = paginator.querySelector('.' + componentName);\n\n if (link) {\n link.classList.add('is-current');\n }\n });\n };\n\n const clearInitial = (isAppend) => {\n if (!isAppend && !cleared) {\n let productsOld = document.querySelectorAll('#products > *');\n\n productsOld.forEach((product) => {\n product.remove();\n });\n\n cleared = true;\n }\n };\n\n const init = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n\n const links = document.querySelectorAll('#pagination a:not([disabled])');\n\n links.forEach((link) => {\n link.addEventListener('click', get);\n });\n\n hasMorePages.value = Boolean(next);\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n };\n\n const more = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n const href = parseHref(next);\n const componentName = getComponentName(next);\n\n nextPages.push(componentName);\n\n load(next, true);\n };\n\n onMounted(() => {\n init();\n });\n\n return {\n component,\n hasMorePages,\n more\n };\n }\n});\n</script>","<template>\n <div class=\"shop-pagination has-text-centered mb-3\">\n <component :is=\"component\"></component>\n <div class=\"shop-pagination-more\" v-if=\"hasMorePages\">\n <slot :more=\"more\">\n <button class=\"button is-small\" @click=\"more\">\n <span class=\"icon is-small\">\n <i class=\"fas fa-sync-alt\"></i>\n </span>\n <span>{{ __('shop.pagination.more') }}</span>\n </button>\n </slot>\n </div>\n </div>\n</template>\n<script>\nimport { ref, onMounted, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n setup() {\n const component = ref(false);\n const hasMorePages = ref(true);\n const visiblePages = ref([]);\n\n let pages = [];\n let paginators = {};\n let inited = false;\n let cleared = false;\n\n const getComponentName = (a) => {\n // console.log(a.href);\n // console.log(a.pathname);\n\n const href = a.pathname.replace(/\\/$/, '');\n const last = href.substring(href.lastIndexOf('/') + 1);\n\n return 'page-product-' + (last.match(/^page([0-9]+)$/) ? last : 'page1');\n };\n\n let nextPages = [getComponentName(window.location)];\n\n const get = (e) => {\n e.preventDefault();\n\n nextPages = [getComponentName(e.currentTarget)];\n\n load(e.currentTarget);\n };\n\n const parseHref = (a) => {\n let pathname = a.pathname.replace(/\\/$/, '');\n const page = pathname.substring(pathname.lastIndexOf('/') + 1);\n const isPage = page.match(/^page([0-9]+)$/);\n const pageUrl = isPage ? page : '';\n\n if (isPage) {\n pathname = pathname.substring(0, pathname.lastIndexOf('/'));\n }\n\n const hash = a.hash ? a.hash.substring(1) : '';\n\n pathname = (hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname) + (pageUrl ? '/' + pageUrl : '');\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&paginator' : '?paginator');\n\n return href;\n };\n\n const load = (button, isAppend) => {\n const href = parseHref(button);\n const componentName = getComponentName(button);\n\n if (!inited) {\n window.app.component('products-paginate', {\n data() {\n return {\n components: visiblePages\n };\n },\n template: '<teleport to=\"#products\"><component :is=\"component\" v-for=\"(component, key) in components\" v-bind:key=\"key\"></component></teleport>'\n });\n\n component.value = 'products-paginate';\n inited = true;\n }\n\n if (pages.indexOf(componentName) === -1) {\n button.classList.add('is-loading');\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n clearInitial(isAppend);\n\n let html = document.createElement('html');\n\n html.innerHTML = response.data.products;\n\n window.app.component(componentName, {\n template: html.querySelector('#products').innerHTML\n });\n\n pages.push(componentName);\n\n history.pushState({ urlPath: button.href }, document.title, button.href);\n\n html.innerHTML = response.data.paginator;\n\n paginators[componentName] = response.data.paginator;\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n nextTick(init);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n history.pushState({ urlPath: href }, document.title, href);\n\n let html = document.createElement('html');\n html.innerHTML = paginators[componentName];\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n nextTick(init);\n }\n };\n\n const setPaginatorCurrentPages = () => {\n const paginator = document.getElementById('pagination');\n\n nextPages.forEach((componentName) => {\n const link = paginator.querySelector('.' + componentName);\n\n if (link) {\n link.classList.add('is-current');\n }\n });\n };\n\n const clearInitial = (isAppend) => {\n if (!isAppend && !cleared) {\n let productsOld = document.querySelectorAll('#products > *');\n\n productsOld.forEach((product) => {\n product.remove();\n });\n\n cleared = true;\n }\n };\n\n const init = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n\n const links = document.querySelectorAll('#pagination a:not([disabled])');\n\n links.forEach((link) => {\n link.addEventListener('click', get);\n });\n\n hasMorePages.value = Boolean(next);\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n };\n\n const more = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n const href = parseHref(next);\n const componentName = getComponentName(next);\n\n nextPages.push(componentName);\n\n load(next, true);\n };\n\n onMounted(() => {\n init();\n });\n\n return {\n component,\n hasMorePages,\n more\n };\n }\n});\n</script>"],"names":["defineComponent","setup","component","ref","hasMorePages","visiblePages","pages","paginators","inited","cleared","getComponentName","a","href","pathname","replace","last","substring","lastIndexOf","match","nextPages","window","location","get","e","preventDefault","currentTarget","load","parseHref","page","isPage","pageUrl","hash","indexOf","$env","shop","isTrailingSlash","origin","search","button","isAppend","componentName","app","data","components","template","value","classList","add","document","documentElement","$http","then","response","clearInitial","html","createElement","innerHTML","products","querySelector","push","history","pushState","urlPath","title","paginator","getElementById","replaceWith","setPaginatorCurrentPages","scrollTo","top","left","behavior","lazyImages","update","nextTick","init","error","console","remove","forEach","link","querySelectorAll","product","next","addEventListener","Boolean","onMounted","more","_createElementVNode","_createElementBlock","_hoisted_1","_createBlock","_ctx","_hoisted_2","_renderSlot","onClick","_hoisted_3"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../src/components/shop/Pagination.vue","../../../src/components/shop/Pagination.vue?vue&type=template&id=c6442098&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-pagination has-text-centered mb-3\">\n <component :is=\"component\"></component>\n <div class=\"shop-pagination-more\" v-if=\"hasMorePages\">\n <slot :more=\"more\">\n <button class=\"button is-small\" @click=\"more\">\n <span class=\"icon is-small\">\n <i class=\"fas fa-sync-alt\"></i>\n </span>\n <span>{{ __('shop.pagination.more') }}</span>\n </button>\n </slot>\n </div>\n </div>\n</template>\n<script>\nimport { ref, onMounted, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n setup() {\n const component = ref(false);\n const hasMorePages = ref(true);\n const visiblePages = ref([]);\n\n let pages = [];\n let paginators = {};\n let inited = false;\n let cleared = false;\n\n const getComponentName = (a) => {\n // console.log(a.href);\n // console.log(a.pathname);\n\n const href = a.pathname.replace(/\\/$/, '');\n const last = href.substring(href.lastIndexOf('/') + 1);\n\n return 'page-product-' + (last.match(/^page([0-9]+)$/) ? last : 'page1');\n };\n\n let nextPages = [getComponentName(window.location)];\n\n const get = (e) => {\n e.preventDefault();\n\n nextPages = [getComponentName(e.currentTarget)];\n\n load(e.currentTarget);\n };\n\n const parseHref = (a) => {\n let pathname = a.pathname.replace(/\\/$/, '');\n const page = pathname.substring(pathname.lastIndexOf('/') + 1);\n const isPage = page.match(/^page([0-9]+)$/);\n const pageUrl = isPage ? page : '';\n\n if (isPage) {\n pathname = pathname.substring(0, pathname.lastIndexOf('/'));\n }\n\n const hash = a.hash ? a.hash.substring(1) : '';\n\n pathname = (hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname) + (pageUrl ? '/' + pageUrl : '');\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&paginator' : '?paginator');\n\n return href;\n };\n\n const load = (button, isAppend) => {\n const href = parseHref(button);\n const componentName = getComponentName(button);\n\n if (!inited) {\n window.app.component('products-paginate', {\n data() {\n return {\n components: visiblePages\n };\n },\n template: '<teleport to=\"#products\"><component :is=\"component\" v-for=\"(component, key) in components\" v-bind:key=\"key\"></component></teleport>'\n });\n\n component.value = 'products-paginate';\n inited = true;\n }\n\n if (pages.indexOf(componentName) === -1) {\n button.classList.add('is-loading');\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n clearInitial(isAppend);\n\n let html = document.createElement('html');\n\n html.innerHTML = response.data.products;\n\n window.app.component(componentName, {\n template: html.querySelector('#products').innerHTML\n });\n\n pages.push(componentName);\n\n history.pushState({ urlPath: button.href }, document.title, button.href);\n\n html.innerHTML = response.data.paginator;\n\n paginators[componentName] = response.data.paginator;\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n nextTick(init);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n history.pushState({ urlPath: href }, document.title, href);\n\n let html = document.createElement('html');\n html.innerHTML = paginators[componentName];\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n nextTick(init);\n }\n };\n\n const setPaginatorCurrentPages = () => {\n const paginator = document.getElementById('pagination');\n\n nextPages.forEach((componentName) => {\n const link = paginator.querySelector('.' + componentName);\n\n if (link) {\n link.classList.add('is-current');\n }\n });\n };\n\n const clearInitial = (isAppend) => {\n if (!isAppend && !cleared) {\n let productsOld = document.querySelectorAll('#products > *');\n\n productsOld.forEach((product) => {\n product.remove();\n });\n\n cleared = true;\n }\n };\n\n const init = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n\n const links = document.querySelectorAll('#pagination a:not([disabled])');\n\n links.forEach((link) => {\n link.addEventListener('click', get);\n });\n\n hasMorePages.value = Boolean(next);\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n };\n\n const more = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n const href = parseHref(next);\n const componentName = getComponentName(next);\n\n nextPages.push(componentName);\n\n load(next, true);\n };\n\n onMounted(() => {\n init();\n });\n\n return {\n component,\n hasMorePages,\n more\n };\n }\n});\n</script>","<template>\n <div class=\"shop-pagination has-text-centered mb-3\">\n <component :is=\"component\"></component>\n <div class=\"shop-pagination-more\" v-if=\"hasMorePages\">\n <slot :more=\"more\">\n <button class=\"button is-small\" @click=\"more\">\n <span class=\"icon is-small\">\n <i class=\"fas fa-sync-alt\"></i>\n </span>\n <span>{{ __('shop.pagination.more') }}</span>\n </button>\n </slot>\n </div>\n </div>\n</template>\n<script>\nimport { ref, onMounted, defineComponent, nextTick } from 'vue';\n\nexport default defineComponent({\n setup() {\n const component = ref(false);\n const hasMorePages = ref(true);\n const visiblePages = ref([]);\n\n let pages = [];\n let paginators = {};\n let inited = false;\n let cleared = false;\n\n const getComponentName = (a) => {\n // console.log(a.href);\n // console.log(a.pathname);\n\n const href = a.pathname.replace(/\\/$/, '');\n const last = href.substring(href.lastIndexOf('/') + 1);\n\n return 'page-product-' + (last.match(/^page([0-9]+)$/) ? last : 'page1');\n };\n\n let nextPages = [getComponentName(window.location)];\n\n const get = (e) => {\n e.preventDefault();\n\n nextPages = [getComponentName(e.currentTarget)];\n\n load(e.currentTarget);\n };\n\n const parseHref = (a) => {\n let pathname = a.pathname.replace(/\\/$/, '');\n const page = pathname.substring(pathname.lastIndexOf('/') + 1);\n const isPage = page.match(/^page([0-9]+)$/);\n const pageUrl = isPage ? page : '';\n\n if (isPage) {\n pathname = pathname.substring(0, pathname.lastIndexOf('/'));\n }\n\n const hash = a.hash ? a.hash.substring(1) : '';\n\n pathname = (hash ? (a.pathname.indexOf(':') !== -1 ? pathname + ';' + hash : pathname + '/' + hash) : pathname) + (pageUrl ? '/' + pageUrl : '');\n\n if ($env.shop.isTrailingSlash) {\n pathname = pathname + '/';\n }\n\n const href = a.origin + pathname + (a.search ? a.search + '&paginator' : '?paginator');\n\n return href;\n };\n\n const load = (button, isAppend) => {\n const href = parseHref(button);\n const componentName = getComponentName(button);\n\n if (!inited) {\n window.app.component('products-paginate', {\n data() {\n return {\n components: visiblePages\n };\n },\n template: '<teleport to=\"#products\"><component :is=\"component\" v-for=\"(component, key) in components\" v-bind:key=\"key\"></component></teleport>'\n });\n\n component.value = 'products-paginate';\n inited = true;\n }\n\n if (pages.indexOf(componentName) === -1) {\n button.classList.add('is-loading');\n document.documentElement.classList.add('is-catalog-loading');\n\n $http\n .get(href)\n .then((response) => {\n clearInitial(isAppend);\n\n let html = document.createElement('html');\n\n html.innerHTML = response.data.products;\n\n window.app.component(componentName, {\n template: html.querySelector('#products').innerHTML\n });\n\n pages.push(componentName);\n\n history.pushState({ urlPath: button.href }, document.title, button.href);\n\n html.innerHTML = response.data.paginator;\n\n paginators[componentName] = response.data.paginator;\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n\n nextTick(init);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n document.documentElement.classList.remove('is-catalog-loading');\n });\n } else {\n history.pushState({ urlPath: href }, document.title, href);\n\n let html = document.createElement('html');\n html.innerHTML = paginators[componentName];\n\n document.getElementById('pagination').replaceWith(html.querySelector('#pagination'));\n\n if (!isAppend) {\n visiblePages.value = [componentName];\n\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n } else {\n visiblePages.value.push(componentName);\n setPaginatorCurrentPages();\n }\n\n nextTick(init);\n }\n };\n\n const setPaginatorCurrentPages = () => {\n const paginator = document.getElementById('pagination');\n\n nextPages.forEach((componentName) => {\n const link = paginator.querySelector('.' + componentName);\n\n if (link) {\n link.classList.add('is-current');\n }\n });\n };\n\n const clearInitial = (isAppend) => {\n if (!isAppend && !cleared) {\n let productsOld = document.querySelectorAll('#products > *');\n\n productsOld.forEach((product) => {\n product.remove();\n });\n\n cleared = true;\n }\n };\n\n const init = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n\n const links = document.querySelectorAll('#pagination a:not([disabled])');\n\n links.forEach((link) => {\n link.addEventListener('click', get);\n });\n\n hasMorePages.value = Boolean(next);\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n };\n\n const more = () => {\n const next = document.querySelector('#pagination .pagination-next:not([disabled])');\n const href = parseHref(next);\n const componentName = getComponentName(next);\n\n nextPages.push(componentName);\n\n load(next, true);\n };\n\n onMounted(() => {\n init();\n });\n\n return {\n component,\n hasMorePages,\n more\n };\n }\n});\n</script>"],"names":["script","defineComponent","setup","component","ref","hasMorePages","visiblePages","pages","paginators","inited","cleared","getComponentName","a","href","pathname","replace","last","substring","lastIndexOf","match","nextPages","window","location","get","e","preventDefault","currentTarget","load","parseHref","page","isPage","pageUrl","hash","indexOf","$env","shop","isTrailingSlash","origin","search","button","isAppend","componentName","app","data","components","template","value","classList","add","document","documentElement","$http","then","response","clearInitial","html","createElement","innerHTML","products","querySelector","push","history","pushState","urlPath","title","paginator","getElementById","replaceWith","setPaginatorCurrentPages","scrollTo","top","left","behavior","lazyImages","update","nextTick","init","error","console","remove","forEach","link","querySelectorAll","product","next","addEventListener","Boolean","onMounted","more","_hoisted_1","class","_createElementVNode","createElementVNode","_openBlock","_createElementBlock","openBlock","_createBlock","createBlock","_resolveDynamicComponent","_ctx","_hoisted_2","_renderSlot","renderSlot","$slots","onClick","apply","arguments","_hoisted_3","__"],"mappings":"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"}