@ozdao/martyrs 0.2.561 → 0.2.562

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 (179) hide show
  1. package/dist/{main-DQtUY5ma.js → main-TV4u6Jux.js} +2915 -2626
  2. package/dist/martyrs/src/components/Button/Button.vue.js +2 -2
  3. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -1
  4. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
  5. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  6. package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +2 -2
  7. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
  8. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  9. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  10. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  11. package/dist/martyrs/src/components/Field/Field.vue2.js.map +1 -0
  12. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  13. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
  14. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
  15. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  16. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  17. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  18. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  19. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
  20. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
  21. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  22. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.js.map +1 -0
  23. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  24. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -0
  25. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  26. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  27. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  28. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  29. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  30. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  31. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  32. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  33. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  34. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  35. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  36. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  37. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  38. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
  39. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  40. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  41. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  42. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  43. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  44. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  45. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  46. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -6
  47. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  48. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +1 -1
  49. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  50. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +1 -1
  51. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +60 -172
  52. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  53. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +1 -1
  54. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +64 -0
  55. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -0
  56. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +160 -0
  57. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -0
  58. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js +46 -0
  59. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js.map +1 -0
  60. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +105 -0
  61. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -0
  62. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js +168 -0
  63. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js.map +1 -0
  64. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +4 -0
  65. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  66. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  67. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  68. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +5 -3
  69. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  70. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  71. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
  72. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  73. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  74. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  75. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  76. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  77. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  78. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  79. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +159 -239
  80. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  81. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +5 -6
  82. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  84. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +65 -2
  85. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
  86. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  87. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  88. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  89. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  90. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  91. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  92. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  93. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  94. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  96. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  97. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  98. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  99. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  100. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  101. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  102. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +5 -3
  103. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  105. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +4 -4
  106. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  108. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  109. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
  110. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  111. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  112. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  113. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  114. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  115. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  116. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  117. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  118. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  119. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  120. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  121. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -3
  122. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  124. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  125. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  126. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +4 -4
  127. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  128. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  129. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  130. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  131. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  132. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  133. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  134. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  135. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  136. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  137. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  138. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  139. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  140. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  141. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  142. package/dist/martyrs.css +1 -1
  143. package/dist/martyrs.es.js +1 -1
  144. package/dist/organizations.server.js +7 -2
  145. package/dist/style.css +10 -1
  146. package/dist/{web-Cyc6i_pv.js → web-Cq5tyhkl.js} +1 -1
  147. package/package.json +1 -1
  148. package/src/components/Button/Button.vue +1 -1
  149. package/src/components/Checkbox/Checkbox.vue +1 -1
  150. package/src/modules/core/views/components/layouts/Client.vue +7 -11
  151. package/src/modules/core/views/components/partials/Header.vue +1 -1
  152. package/src/modules/core/views/components/sections/Filters.vue +47 -161
  153. package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +12 -31
  154. package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +15 -15
  155. package/src/modules/core/views/components/sections/filters/FilterOptions.vue +12 -43
  156. package/src/modules/core/views/components/sections/filters/FilterRange.vue +59 -36
  157. package/src/modules/core/views/components/sections/filters/FiltersGroup.vue +178 -0
  158. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  159. package/src/modules/marketplace/controllers/marketplace.controller.js +123 -0
  160. package/src/modules/marketplace/controllers/utils/lookupConfigs.js +130 -0
  161. package/src/modules/marketplace/controllers/utils/queryProcessorMarketplace.js +211 -0
  162. package/src/modules/marketplace/marketplace.server.js +22 -0
  163. package/src/modules/marketplace/routes/marketplace.routes.js +34 -0
  164. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +194 -275
  165. package/src/modules/marketplace/views/components/pages/Catalog.vue +6 -5
  166. package/src/modules/marketplace/views/router/marketplace.router.js +43 -28
  167. package/src/modules/marketplace/views/store/marketplace.js +74 -3
  168. package/src/modules/organizations/components/blocks/CardOrganization.vue +8 -8
  169. package/src/modules/organizations/controllers/organizations.controller.js +1 -1
  170. package/src/modules/organizations/controllers/utils/queryProcessorOrganizations.js +8 -1
  171. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  172. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  173. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
  174. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  175. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +0 -1
  176. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  177. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  178. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  179. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +0 -81
@@ -1,77 +1,46 @@
1
- import { ref, onMounted, watch, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, Fragment, renderList, withCtx, createBlock, normalizeClass, createTextVNode, resolveDynamicComponent } from "vue";
1
+ import { ref, watch, createElementBlock, openBlock, createElementVNode, unref, createCommentVNode, Fragment, createTextVNode, toDisplayString, createVNode, renderList, withCtx, createBlock } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useI18n } from "vue-i18n";
4
- import _sfc_main$1 from "../../../../../components/Spoiler/Spoiler.vue.js";
5
- import Field from "../../../../../components/Field/Field.vue.js";
6
- import _sfc_main$2 from "../../../../../components/Checkbox/Checkbox.vue.js";
7
- import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
4
+ import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
5
+ import Filters from "../../../../core/views/components/sections/Filters.vue2.js";
6
+ import _sfc_main$1 from "../../../../core/views/components/sections/filters/FiltersGroup.vue.js";
7
+ import Field from "../../../../../components/Field/Field.vue2.js";
8
+ import _sfc_main$3 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
8
9
  import { useStore } from "../../../../core/views/store/core.store.js";
9
- import { actions } from "../../../../products/store/categories.js";
10
- import { state } from "../../store/marketplace.js";
11
- const _hoisted_1 = { class: "cols-2-1_3 z-index-3 pos-relative radius-big" };
12
- const _hoisted_2 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
13
- const _hoisted_3 = { class: "w-100 o-y-scroll h-100" };
14
- const _hoisted_4 = {
15
- key: 0,
16
- class: "mn-b-medium"
17
- };
18
- const _hoisted_5 = { class: "mn-b-small" };
19
- const _hoisted_6 = { class: "gap-micro" };
20
- const _hoisted_7 = ["onClick"];
21
- const _hoisted_8 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
22
- const _hoisted_9 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
23
- const _hoisted_10 = { class: "mn-t-small" };
24
- const _hoisted_11 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
25
- const _hoisted_12 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
26
- const _hoisted_13 = { class: "mn-t-small" };
27
- const _hoisted_14 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
28
- const _hoisted_15 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
29
- const _hoisted_16 = { class: "mn-t-small" };
30
- const _hoisted_17 = { class: "pd-thin" };
31
- const _hoisted_18 = { class: "pd-medium radius-medium bg-light mn-b-thin" };
32
- const _hoisted_19 = { class: "" };
33
- const _hoisted_20 = { class: "rows-1" };
10
+ import { state, marketplaceStore } from "../../store/marketplace.js";
11
+ import { useGlobalMixins } from "../../../../core/views/mixins/mixins.js";
12
+ const _hoisted_1 = { class: "pos-relative" };
13
+ const _hoisted_2 = { class: "pd-medium mn-b-thin" };
14
+ const _hoisted_3 = { class: "" };
15
+ const _hoisted_4 = { class: "cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative" };
16
+ const _hoisted_5 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
17
+ const _hoisted_6 = { class: "w-100 o-y-scroll h-100" };
18
+ const _hoisted_7 = { class: "mn-b-medium" };
19
+ const _hoisted_8 = { class: "gap-micro" };
20
+ const _hoisted_9 = ["onClick"];
21
+ const _hoisted_10 = { class: "w-100 rows-1 pd-thin pos-relative o-hidden" };
22
+ const _hoisted_11 = { class: "mn-b-thin mobile-only" };
34
23
  const _sfc_main = {
35
24
  __name: "Marketplace",
36
25
  setup(__props) {
37
- const core = useStore();
38
26
  const route = useRoute();
39
27
  const router = useRouter();
28
+ const store = useStore();
29
+ const { returnCurrency } = useGlobalMixins();
40
30
  const localPosition = ref({
41
31
  city: null,
42
32
  state: null,
43
33
  country: null
44
34
  });
45
- ref(null);
46
- const currentCategories = ref([]);
35
+ const localLocation = ref(null);
47
36
  const searchLocation = ref("");
48
- const selectedLocation = ref("All");
49
- const locationOptions = ref(["All", "Phuket", "Bangkok", "Chiang Mai", "Pattaya"]);
50
- const deliveryOptions = ref([
51
- { label: "Pickup", value: "pickup" },
52
- { label: "Delivery", value: "delivery" },
53
- { label: "Dine-in", value: "dinein" }
54
- ]);
55
- const selectedDeliveryOptions = ref([]);
56
- const paymentOptions = ref([
57
- { label: "Cash", value: "cash" },
58
- { label: "Card", value: "card" },
59
- { label: "Crypto", value: "crypto" },
60
- { label: "Bank Transfer", value: "transfer" }
61
- ]);
62
- const selectedPaymentOptions = ref([]);
63
- const selectCategory = (category) => {
64
- console.log("Category selected:", category);
65
- };
66
- const clearFilters = () => {
67
- selectedLocation.value = "All";
68
- selectedDeliveryOptions.value = [];
69
- selectedPaymentOptions.value = [];
70
- searchLocation.value = "";
71
- };
72
- function denormalizeUrlParam(param) {
73
- return param.replace(/-/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
74
- }
37
+ const selectedFilters = ref({
38
+ price: { min: null, max: null },
39
+ delivery: [],
40
+ payment: [],
41
+ availabilityDate: null,
42
+ rating: null
43
+ });
75
44
  if (route.params) {
76
45
  let newState = {
77
46
  country: denormalizeUrlParam(route.params.country),
@@ -88,35 +57,19 @@ const _sfc_main = {
88
57
  }
89
58
  if (route.query.sortParam) state.sort.param = route.query.sortParam;
90
59
  if (route.query.sortOrder) state.sort.order = route.query.sortOrder;
91
- onMounted(async () => {
92
- let options = {
93
- status: "published",
94
- rootOnly: true
95
- };
96
- let categoriesFilter = await actions.read(options);
97
- categoriesFilter = categoriesFilter.map((category) => ({
98
- value: category._id,
99
- label: category.name
100
- }));
101
- const index = state.filter.options.findIndex((option) => option.value === "categories");
102
- const categoryOption = {
103
- title: "Categories",
104
- value: "categories",
105
- options: categoriesFilter
106
- };
107
- if (index !== -1) {
108
- state.filter.options[index] = categoryOption;
109
- } else {
110
- state.filter.options.unshift(categoryOption);
111
- }
112
- });
60
+ function denormalizeUrlParam(param) {
61
+ return param.replace(/-/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
62
+ }
63
+ function normalizeUrlParam(param) {
64
+ return param.toLowerCase().replace(/ /g, "-").replace(/[^a-z0-9-]/g, "");
65
+ }
113
66
  watch(() => state.sort, (newSortValue, oldSortValue) => {
114
67
  let query = { ...route.query };
115
68
  query.sortParam = newSortValue.param;
116
69
  query.sortOrder = newSortValue.order;
117
70
  router.replace({ query });
118
71
  }, { deep: true });
119
- watch(() => state.filter.selected, (newFilterValue, oldFilterValue) => {
72
+ watch(() => state.filter.selectedFilters, (newFilterValue, oldFilterValue) => {
120
73
  const query = { ...route.query };
121
74
  Object.keys(oldFilterValue).forEach((key) => {
122
75
  if (query[key]) {
@@ -130,6 +83,22 @@ const _sfc_main = {
130
83
  Object.assign(query, newQueryValues);
131
84
  router.replace({ query });
132
85
  }, { deep: true });
86
+ watch(() => store.core.state.position, (newPosition) => {
87
+ const currentRoute = { ...router.currentRoute.value };
88
+ let newParams = {
89
+ country: normalizeUrlParam(newPosition.country),
90
+ state: normalizeUrlParam(newPosition.state),
91
+ city: normalizeUrlParam(newPosition.city)
92
+ };
93
+ let newState = {
94
+ country: denormalizeUrlParam(newPosition.country),
95
+ state: denormalizeUrlParam(newPosition.state),
96
+ city: denormalizeUrlParam(newPosition.city)
97
+ };
98
+ localPosition.value = newState;
99
+ currentRoute.params = newParams;
100
+ router.replace(currentRoute);
101
+ }, { deep: true });
133
102
  const text = {
134
103
  locale: "en",
135
104
  messages: {
@@ -149,171 +118,122 @@ const _sfc_main = {
149
118
  };
150
119
  const { t } = useI18n(text);
151
120
  return (_ctx, _cache) => {
152
- const _component_router_view = resolveComponent("router-view");
153
121
  return openBlock(), createElementBlock("div", _hoisted_1, [
154
- createElementVNode("div", _hoisted_2, [
155
- createElementVNode("div", _hoisted_3, [
156
- currentCategories.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
157
- createElementVNode("h4", _hoisted_5, toDisplayString(unref(route).params.categoryPath ? "Subcategories" : "Categories"), 1),
158
- createElementVNode("div", _hoisted_6, [
159
- (openBlock(true), createElementBlock(Fragment, null, renderList(currentCategories.value, (category) => {
160
- return openBlock(), createElementBlock("div", {
161
- key: category._id,
162
- onClick: ($event) => selectCategory(category),
163
- class: "pd-small radius-small cursor-pointer hover-bg-light transition-all"
164
- }, toDisplayString(category.name), 9, _hoisted_7);
165
- }), 128))
166
- ])
167
- ])) : createCommentVNode("", true),
168
- createVNode(_sfc_main$1, {
169
- class: "o-hidden mn-b-medium",
170
- status: true
171
- }, {
172
- header: withCtx(({ isOpen }) => [
122
+ createElementVNode("header", _hoisted_2, [
123
+ createElementVNode("h2", _hoisted_3, [
124
+ _cache[7] || (_cache[7] = createElementVNode("span", { class: "" }, "Weed Deliveries in ", -1)),
125
+ localPosition.value.city || localPosition.value.state || localPosition.value.country ? (openBlock(), createElementBlock("span", {
126
+ key: 0,
127
+ onClick: _cache[0] || (_cache[0] = (a) => {
128
+ unref(store).core.state.isOpenLocationPopup = true;
129
+ }),
130
+ class: "t-main t-semi cursor-pointer"
131
+ }, [
132
+ localPosition.value.city ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
133
+ createTextVNode(toDisplayString(localPosition.value.city) + ", ", 1)
134
+ ], 64)) : createCommentVNode("", true),
135
+ localPosition.value.state ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
136
+ createTextVNode(toDisplayString(localPosition.value.state) + ", ", 1)
137
+ ], 64)) : createCommentVNode("", true),
138
+ localPosition.value.country ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
139
+ createTextVNode(toDisplayString(localPosition.value.country), 1)
140
+ ], 64)) : createCommentVNode("", true)
141
+ ])) : (openBlock(), createElementBlock("span", {
142
+ key: 1,
143
+ onClick: _cache[1] || (_cache[1] = (a) => {
144
+ unref(store).core.state.isOpenLocationPopup = true;
145
+ }),
146
+ class: "t-main t-semi cursor-pointer"
147
+ }, "The World"))
148
+ ])
149
+ ]),
150
+ createElementVNode("div", _hoisted_4, [
151
+ createElementVNode("div", _hoisted_5, [
152
+ createElementVNode("div", _hoisted_6, [
153
+ createElementVNode("div", _hoisted_7, [
154
+ _cache[8] || (_cache[8] = createElementVNode("h4", { class: "mn-b-small" }, "Location", -1)),
155
+ createVNode(Field, {
156
+ modelValue: searchLocation.value,
157
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => searchLocation.value = $event),
158
+ placeholder: "Search location...",
159
+ type: "text",
160
+ class: "w-100 bg-light pd-small radius-small mn-b-small"
161
+ }, null, 8, ["modelValue"]),
173
162
  createElementVNode("div", _hoisted_8, [
174
- _cache[6] || (_cache[6] = createElementVNode("h4", { class: "w-100" }, "Location", -1)),
175
- createElementVNode("div", _hoisted_9, [
176
- createVNode(IconChevronBottom, {
177
- class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-medium"]),
178
- fill: "rgb(var(--black))"
179
- }, null, 8, ["class"])
180
- ])
181
- ])
182
- ]),
183
- content: withCtx(() => [
184
- createElementVNode("div", _hoisted_10, [
185
- createVNode(Field, {
186
- modelValue: searchLocation.value,
187
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchLocation.value = $event),
188
- placeholder: "Search location...",
189
- type: "text",
190
- class: "w-100 bg-light pd-small radius-small mn-b-small"
191
- }, null, 8, ["modelValue"]),
192
- (openBlock(true), createElementBlock(Fragment, null, renderList(locationOptions.value, (location) => {
193
- return openBlock(), createBlock(_sfc_main$2, {
194
- key: location,
195
- radio: selectedLocation.value,
196
- "onUpdate:radio": _cache[1] || (_cache[1] = ($event) => selectedLocation.value = $event),
197
- label: location,
198
- value: location,
199
- mode: "radio",
200
- class: "mn-b-micro"
201
- }, null, 8, ["radio", "label", "value"]);
202
- }), 128))
203
- ])
204
- ]),
205
- _: 1
206
- }),
207
- createVNode(_sfc_main$1, {
208
- class: "o-hidden mn-b-medium",
209
- status: true
210
- }, {
211
- header: withCtx(({ isOpen }) => [
212
- createElementVNode("div", _hoisted_11, [
213
- _cache[7] || (_cache[7] = createElementVNode("h4", { class: "w-100" }, "Delivery Options", -1)),
214
- createElementVNode("div", _hoisted_12, [
215
- createVNode(IconChevronBottom, {
216
- class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-medium"]),
217
- fill: "rgb(var(--black))"
218
- }, null, 8, ["class"])
219
- ])
220
- ])
221
- ]),
222
- content: withCtx(() => [
223
- createElementVNode("div", _hoisted_13, [
224
- (openBlock(true), createElementBlock(Fragment, null, renderList(deliveryOptions.value, (option) => {
225
- return openBlock(), createBlock(_sfc_main$2, {
226
- key: option.value,
227
- checkbox: selectedDeliveryOptions.value,
228
- "onUpdate:checkbox": _cache[2] || (_cache[2] = ($event) => selectedDeliveryOptions.value = $event),
229
- label: option.label,
230
- value: option.value,
231
- mode: "checkbox",
232
- class: "mn-b-micro"
233
- }, null, 8, ["checkbox", "label", "value"]);
163
+ (openBlock(true), createElementBlock(Fragment, null, renderList(state.locationOptions, (location) => {
164
+ return openBlock(), createElementBlock("div", {
165
+ key: location.label,
166
+ onClick: ($event) => unref(router).push(location.path),
167
+ class: "cursor-pointer hover-t-underline mn-b-regular transition-all"
168
+ }, toDisplayString(location.label), 9, _hoisted_9);
234
169
  }), 128))
235
170
  ])
236
171
  ]),
237
- _: 1
238
- }),
239
- createVNode(_sfc_main$1, {
240
- class: "o-hidden mn-b-medium",
241
- status: true
242
- }, {
243
- header: withCtx(({ isOpen }) => [
244
- createElementVNode("div", _hoisted_14, [
245
- _cache[8] || (_cache[8] = createElementVNode("h4", { class: "w-100" }, "Payment Options", -1)),
246
- createElementVNode("div", _hoisted_15, [
247
- createVNode(IconChevronBottom, {
248
- class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-medium"]),
249
- fill: "rgb(var(--black))"
250
- }, null, 8, ["class"])
251
- ])
252
- ])
253
- ]),
254
- content: withCtx(() => [
255
- createElementVNode("div", _hoisted_16, [
256
- (openBlock(true), createElementBlock(Fragment, null, renderList(paymentOptions.value, (option) => {
257
- return openBlock(), createBlock(_sfc_main$2, {
258
- key: option.value,
259
- checkbox: selectedPaymentOptions.value,
260
- "onUpdate:checkbox": _cache[3] || (_cache[3] = ($event) => selectedPaymentOptions.value = $event),
261
- label: option.label,
262
- value: option.value,
263
- mode: "checkbox",
264
- class: "mn-b-micro"
265
- }, null, 8, ["checkbox", "label", "value"]);
266
- }), 128))
267
- ])
268
- ]),
269
- _: 1
270
- }),
271
- createElementVNode("button", {
272
- onClick: clearFilters,
273
- class: "bg-main w-100 button mn-t-medium"
274
- }, " Clear Filters ")
275
- ])
276
- ]),
277
- createElementVNode("div", _hoisted_17, [
278
- createElementVNode("header", _hoisted_18, [
279
- createElementVNode("h2", _hoisted_19, [
280
- _cache[9] || (_cache[9] = createElementVNode("span", { class: "" }, "Weed Deliveries in ", -1)),
281
- localPosition.value.city || localPosition.value.state || localPosition.value.country ? (openBlock(), createElementBlock("span", {
282
- key: 0,
283
- onClick: _cache[4] || (_cache[4] = (a) => {
284
- unref(core).state.isOpenLocationPopup = true;
285
- }),
286
- class: "t-main t-semi cursor-pointer"
287
- }, [
288
- localPosition.value.city ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
289
- createTextVNode(toDisplayString(localPosition.value.city) + ", ", 1)
290
- ], 64)) : createCommentVNode("", true),
291
- localPosition.value.state ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
292
- createTextVNode(toDisplayString(localPosition.value.state) + ", ", 1)
293
- ], 64)) : createCommentVNode("", true),
294
- localPosition.value.country ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
295
- createTextVNode(toDisplayString(localPosition.value.country), 1)
296
- ], 64)) : createCommentVNode("", true)
297
- ])) : (openBlock(), createElementBlock("span", {
298
- key: 1,
299
- onClick: _cache[5] || (_cache[5] = (a) => {
300
- unref(core).state.isOpenLocationPopup = true;
301
- }),
302
- class: "t-main t-semi cursor-pointer"
303
- }, "The World"))
172
+ createVNode(_sfc_main$1, {
173
+ filters: state.filter.options,
174
+ selected: selectedFilters.value,
175
+ "onUpdate:selected": _cache[3] || (_cache[3] = ($event) => selectedFilters.value = $event),
176
+ immediate: true,
177
+ showHeader: false,
178
+ showApplyButton: false,
179
+ showResetButton: true
180
+ }, null, 8, ["filters", "selected"])
304
181
  ])
305
182
  ]),
306
- createElementVNode("div", _hoisted_20, [
307
- createVNode(_component_router_view, null, {
308
- default: withCtx(({ Component, route: route2 }) => [
309
- (openBlock(), createBlock(resolveDynamicComponent(Component), {
310
- ref: "page",
311
- key: route2,
312
- localPosition: localPosition.value
313
- }, null, 8, ["localPosition"]))
183
+ createElementVNode("div", _hoisted_10, [
184
+ createVNode(_sfc_main$2, {
185
+ search: true,
186
+ sort: state.sort,
187
+ "onUpdate:sort": _cache[6] || (_cache[6] = ($event) => state.sort = $event),
188
+ showLoadMore: false,
189
+ states: {
190
+ empty: {
191
+ title: "No Shops Found",
192
+ description: "Currently, there are no shops."
193
+ }
194
+ },
195
+ store: {
196
+ read: (options) => unref(marketplaceStore).readCatalog(options)
197
+ },
198
+ options: {
199
+ country: localPosition.value.country,
200
+ state: localPosition.value.state,
201
+ city: localPosition.value.city,
202
+ location: localLocation.value?.location,
203
+ lookup: ["products", "spots"],
204
+ contain: ["products"],
205
+ priceMin: selectedFilters.value.price?.min,
206
+ priceMax: selectedFilters.value.price?.max,
207
+ delivery: selectedFilters.value.delivery?.length > 0 ? selectedFilters.value.delivery.join(",") : void 0,
208
+ payment: selectedFilters.value.payment?.length > 0 ? selectedFilters.value.payment.join(",") : void 0
209
+ },
210
+ class: "rows-1 gap-thin"
211
+ }, {
212
+ default: withCtx(({
213
+ items
214
+ }) => [
215
+ createElementVNode("div", _hoisted_11, [
216
+ createVNode(Filters, {
217
+ filters: state.filter.options,
218
+ "onUpdate:filters": _cache[4] || (_cache[4] = ($event) => state.filter.options = $event),
219
+ selected: selectedFilters.value,
220
+ "onUpdate:selected": _cache[5] || (_cache[5] = ($event) => selectedFilters.value = $event),
221
+ class: ""
222
+ }, null, 8, ["filters", "selected"])
223
+ ]),
224
+ (openBlock(true), createElementBlock(Fragment, null, renderList(items, (organization) => {
225
+ return openBlock(), createBlock(_sfc_main$3, {
226
+ key: organization._id,
227
+ organization,
228
+ showRating: true,
229
+ showFollowers: false,
230
+ showProducts: true,
231
+ class: "bg-light w-100 o-hidden radius-medium pd-small"
232
+ }, null, 8, ["organization"]);
233
+ }), 128))
314
234
  ]),
315
235
  _: 1
316
- })
236
+ }, 8, ["sort", "store", "options"])
317
237
  ])
318
238
  ])
319
239
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Marketplace.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/layouts/Marketplace.vue"],"sourcesContent":["<template>\n\t <div class=\"cols-2-1_3 z-index-3 pos-relative radius-big\">\n\n\t\t<div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n\t\t\t<div class=\"w-100 o-y-scroll h-100\">\n\t\t\t\t<!-- Categories -->\n\t\t\t\t<div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n\t\t\t\t\t<h4 class=\"mn-b-small\">\n\t\t\t\t\t\t{{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"gap-micro\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"category in currentCategories\"\n\t\t\t\t\t\t\t:key=\"category._id\"\n\t\t\t\t\t\t\t@click=\"selectCategory(category)\"\n\t\t\t\t\t\t\tclass=\"pd-small radius-small cursor-pointer hover-bg-light transition-all\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ category.name }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Location Filter -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Location</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Field\n\t\t\t\t\t\t\t\tv-model=\"searchLocation\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search location...\"\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"w-100 bg-light pd-small radius-small mn-b-small\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"location in locationOptions\"\n\t\t\t\t\t\t\t\t:key=\"location\"\n\t\t\t\t\t\t\t\tv-model:radio=\"selectedLocation\"\n\t\t\t\t\t\t\t\t:label=\"location\"\n\t\t\t\t\t\t\t\t:value=\"location\"\n\t\t\t\t\t\t\t\tmode=\"radio\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Delivery Options -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Delivery Options</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"option in deliveryOptions\"\n\t\t\t\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t\t\t\tv-model:checkbox=\"selectedDeliveryOptions\"\n\t\t\t\t\t\t\t\t:label=\"option.label\"\n\t\t\t\t\t\t\t\t:value=\"option.value\"\n\t\t\t\t\t\t\t\tmode=\"checkbox\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Payment Options -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Payment Options</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"option in paymentOptions\"\n\t\t\t\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t\t\t\tv-model:checkbox=\"selectedPaymentOptions\"\n\t\t\t\t\t\t\t\t:label=\"option.label\"\n\t\t\t\t\t\t\t\t:value=\"option.value\"\n\t\t\t\t\t\t\t\tmode=\"checkbox\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Clear Filters Button -->\n\t\t\t\t<button \n\t\t\t\t\t@click=\"clearFilters\"\n\t\t\t\t\tclass=\"bg-main w-100 button mn-t-medium\"\n\t\t\t\t>\n\t\t\t\t\tClear Filters\n\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Catalog wrapper -->\n\t\t<div class=\"pd-thin\">\n\t\t\t<header class=\"pd-medium radius-medium bg-light mn-b-thin\">\n\t \t<h2 class=\"\">\n\t \t\t<span class=\"\">Weed Deliveries in </span>\n\n\t \t\t<span \n\t \t\t\tv-if=\"localPosition.city || localPosition.state || localPosition.country\"\n\t \t\t\t@click=\"a => { core.state.isOpenLocationPopup = true }\" \n\t \t\t\tclass=\"t-main t-semi cursor-pointer \"\n\t \t\t>\n\t \t\t\t\t<template v-if=\"localPosition.city\">{{localPosition.city}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.state\">{{localPosition.state}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.country\">{{localPosition.country}}</template>\n\t \t\t</span>\n\n\t \t\t<span v-else @click=\"a => { core.state.isOpenLocationPopup = true }\" class=\"t-main t-semi cursor-pointer\">The World</span>\n\t \t</h2>\n\t\t\t</header>\n\n\t\t\t<div class=\"rows-1\">\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<component ref=\"page\" :key=\"route\" :localPosition=\"localPosition\" :is=\"Component\" />\n\t\t\t\t</router-view>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\t// Import libs\n\timport { computed, onMounted, watch, ref } from 'vue'\n\timport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n\timport Field from \"@martyrs/src/components/Field/Field.vue\"\n\timport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\timport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\tconst core = useStore()\n\n\n\timport * as marketplace from '../../store/marketplace';\n\n\t// Accessing router and store\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n\tconst localPosition = ref({\n\t\tcity: null,\n\t\tstate: null,\n\t\tcountry: null\n\t});\n\n\tconst desktopFilters = ref(null)\n\n\t// Categories\n\tconst currentCategories = ref([]);\n\tconst searchLocation = ref('');\n\tconst selectedLocation = ref('All');\n\tconst locationOptions = ref(['All', 'Phuket', 'Bangkok', 'Chiang Mai', 'Pattaya']);\n\n\t// Delivery options\n\tconst deliveryOptions = ref([\n\t\t{ label: 'Pickup', value: 'pickup' },\n\t\t{ label: 'Delivery', value: 'delivery' },\n\t\t{ label: 'Dine-in', value: 'dinein' }\n\t]);\n\tconst selectedDeliveryOptions = ref([]);\n\n\t// Payment options\n\tconst paymentOptions = ref([\n\t\t{ label: 'Cash', value: 'cash' },\n\t\t{ label: 'Card', value: 'card' },\n\t\t{ label: 'Crypto', value: 'crypto' },\n\t\t{ label: 'Bank Transfer', value: 'transfer' }\n\t]);\n\tconst selectedPaymentOptions = ref([]);\n\n\tconst selectCategory = (category) => {\n\t\t// Implementation for category selection\n\t\tconsole.log('Category selected:', category);\n\t};\n\n\tconst clearFilters = () => {\n\t\tselectedLocation.value = 'All';\n\t\tselectedDeliveryOptions.value = [];\n\t\tselectedPaymentOptions.value = [];\n\t\tsearchLocation.value = '';\n\t};\n\n\tfunction denormalizeUrlParam(param) {\n\t return param\n\t .replace(/-/g, ' ') // Замена дефисов на пробелы\n\t .replace(/\\b\\w/g, l => l.toUpperCase()); // Преобразование первой буквы каждого слова в заглавную\n\t}\n\n\tfunction normalizeUrlParam(param) {\n\t return param\n\t .toLowerCase()\n\t .replace(/ /g, '-')\n\t .replace(/[^a-z0-9-]/g, '');\n\t}\n\n\tif (route.params) {\n // Загружаем новые значения из параметров маршрута в состояние\n let newState = {\n country: denormalizeUrlParam(route.params.country),\n state: denormalizeUrlParam(route.params.state),\n city: denormalizeUrlParam(route.params.city),\n };\n\n\t // Обновляем глобальное состояние\n\t localPosition.value = newState;\n\t}\n\n\tif (route.query) {\n\t \tconst query = route.query;\n\n\t\tmarketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n\t\tmarketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n\t\tmarketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n\t}\n\n\tif (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam\n\tif (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder\n\n\tonMounted(async () => {\n\t let options = {\n status: 'published',\n rootOnly: true\n }\n\n let categoriesFilter = await categories.actions.read(options);\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category._id,\n label: category.name\n }));\n\n const index = marketplace.state.filter.options.findIndex(option => option.value === 'categories');\n\n const categoryOption = {\n title: 'Categories',\n value: 'categories',\n options: categoriesFilter\n };\n\n if (index !== -1) {\n marketplace.state.filter.options[index] = categoryOption;\n } else {\n marketplace.state.filter.options.unshift(categoryOption);\n }\n\t})\n\n\twatch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n\t\tlet query = { ...route.query}\n\t\t\n\t\tquery.sortParam = newSortValue.param\n\t\tquery.sortOrder = newSortValue.order\n\t \n\t // replace the current route\n\t router.replace({ query });\n\t}, { deep: true });\n\n\n\twatch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {\n\t // Переводим фильтр в формат query\n\t const query = { ...route.query };\n\n\t // Удаляем старые значения фильтра из query\n\t Object.keys(oldFilterValue).forEach(key => {\n\t if (query[key]) {\n\t delete query[key];\n\t }\n\t });\n\n\t // Добавляем новые значения фильтра в query\n\t const newQueryValues = Object.fromEntries(\n\t Object.entries(newFilterValue)\n\t .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n\t .map(([key, value]) => [key, value.join(',')])\n\t );\n\n\t delete query.options;\n\t Object.assign(query, newQueryValues);\n\n\t // Обновляем маршрут с новым query\n\t router.replace({ query });\n\t}, { deep: true })\n\n\t// watch(() => core.state.position, (newPosition) => {\n\t// // get the current route\n\t// const currentRoute = { ...router.currentRoute.value };\n\t \n\t// // create new parameters based on globals state position\n\t// let newParams = {\n\t// country: normalizeUrlParam(newPosition.country),\n\t// state: normalizeUrlParam(newPosition.state),\n\t// city: normalizeUrlParam(newPosition.city),\n\t// };\n\t \n\t// // update route params\n\t// currentRoute.params = newParams;\n\t \n\t// // replace the current route\n\t// router.replace(currentRoute);\n\t// }, { deep: true });\n\n const text = {\n locale: 'en',\n messages: {\n en: {\n\t \tmeta: {\n title: \"Marketplace – Shop Our Wide Selection of Quality Weed for Delivery\",\n description: \"Browse our marketplace of top-grade weed strains and choose from a variety of delivery options. Order now and have your favorite strains delivered straight to your door. Safe, fast, and reliable.\",\n }\n },\n ru: {\n\t meta: {\n title: \"Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки\",\n description: \"Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.\",\n }\n }\n }\n }\n\n \tconst { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["marketplace.state","categories.actions"],"mappings":"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"}
1
+ {"version":3,"file":"Marketplace.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/layouts/Marketplace.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header class=\"pd-medium mn-b-thin\">\n <h2 class=\"\">\n <span class=\"\">Weed Deliveries in </span>\n\n <span\n v-if=\"localPosition.city || localPosition.state || localPosition.country\"\n @click=\"a => { store.core.state.isOpenLocationPopup = true }\"\n class=\"t-main t-semi cursor-pointer \"\n >\n <template v-if=\"localPosition.city\">{{localPosition.city}}, </template>\n <template v-if=\"localPosition.state\">{{localPosition.state}}, </template>\n <template v-if=\"localPosition.country\">{{localPosition.country}}</template>\n </span>\n\n <span v-else @click=\"a => { store.core.state.isOpenLocationPopup = true }\" class=\"t-main t-semi cursor-pointer\">The World</span>\n </h2>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Location Filter -->\n <div class=\"mn-b-medium\">\n <h4 class=\"mn-b-small\">Location</h4>\n <Field\n v-model=\"searchLocation\"\n placeholder=\"Search location...\"\n type=\"text\"\n class=\"w-100 bg-light pd-small radius-small mn-b-small\"\n />\n <div class=\"gap-micro\">\n <div\n v-for=\"location in marketplace.state.locationOptions\"\n :key=\"location.label\"\n @click=\"router.push(location.path)\"\n class=\"cursor-pointer hover-t-underline mn-b-regular transition-all\"\n >\n {{ location.label }}\n </div>\n </div>\n </div>\n\n <!-- Filters Group -->\n <FiltersGroup\n :filters=\"marketplace.state.filter.options\"\n v-model:selected=\"selectedFilters\"\n :immediate=\"true\"\n :showHeader=\"false\"\n :showApplyButton=\"false\"\n :showResetButton=\"true\"\n />\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Feed\n :search=\"true\"\n v-model:sort=\"marketplace.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n }\n }\"\n :store=\"{\n read: (options) => marketplaceStore.readCatalog(options)\n }\"\n :options=\"{\n country: localPosition.country,\n state: localPosition.state,\n city: localPosition.city,\n location: localLocation?.location,\n lookup: ['products','spots'],\n contain: ['products'],\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n delivery: selectedFilters.delivery?.length > 0 ? selectedFilters.delivery.join(',') : undefined,\n payment: selectedFilters.payment?.length > 0 ? selectedFilters.payment.join(',') : undefined\n }\"\n v-slot=\"{\n items\n }\"\n class=\"rows-1 gap-thin\"\n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"marketplace.state.filter.options\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n\n <CardOrganization\n v-for=\"organization in items\"\n :key=\"organization._id\"\n :organization=\"organization\"\n :showRating=\"true\"\n :showFollowers=\"false\"\n :showProducts=\"true\"\n class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n />\n </Feed>\n\n </div>\n </div>\n </div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { onMounted, watch, ref } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n import { useI18n } from 'vue-i18n'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Filters from '@martyrs/src/modules/core/views/components/sections/Filters.vue'\n import FiltersGroup from '@martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue'\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n\n import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'\n import * as marketplace from '../../store/marketplace'\n import marketplaceStore from '../../store/marketplace'\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n const { returnCurrency } = useGlobalMixins()\n\n const localPosition = ref({\n city: null,\n state: null,\n country: null\n });\n\n const localLocation = ref(null);\n // Location filter\n const searchLocation = ref('');\n\n const selectedFilters = ref({\n price: { min: null, max: null },\n delivery: [],\n payment: [],\n availabilityDate: null,\n rating: null\n })\n\n\n if (route.params) {\n // Загружаем новые значения из параметров маршрута в состояние\n let newState = {\n country: denormalizeUrlParam(route.params.country),\n state: denormalizeUrlParam(route.params.state),\n city: denormalizeUrlParam(route.params.city),\n };\n\n\t // Обновляем глобальное состояние\n\t localPosition.value = newState;\n\t}\n\n\tif (route.query) {\n\t \tconst query = route.query;\n\n\t\tmarketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n\t\tmarketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n\t\tmarketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n\t}\n\n\tif (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam\n\tif (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder\n\n function denormalizeUrlParam(param) {\n return param\n .replace(/-/g, ' ')\n .replace(/\\b\\w/g, l => l.toUpperCase());\n }\n\n function normalizeUrlParam(param) {\n return param\n .toLowerCase()\n .replace(/ /g, '-')\n .replace(/[^a-z0-9-]/g, '');\n }\n\n\twatch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n\t\tlet query = { ...route.query}\n\t\t\n\t\tquery.sortParam = newSortValue.param\n\t\tquery.sortOrder = newSortValue.order\n\t \n\t // replace the current route\n\t router.replace({ query });\n\t}, { deep: true });\n\n\n\twatch(() => marketplace.state.filter.selectedFilters, (newFilterValue, oldFilterValue) => {\n\t // Переводим фильтр в формат query\n\t const query = { ...route.query };\n\n\t // Удаляем старые значения фильтра из query\n\t Object.keys(oldFilterValue).forEach(key => {\n\t if (query[key]) {\n\t delete query[key];\n\t }\n\t });\n\n\t // Добавляем новые значения фильтра в query\n\t const newQueryValues = Object.fromEntries(\n\t Object.entries(newFilterValue)\n\t .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n\t .map(([key, value]) => [key, value.join(',')])\n\t );\n\n\t delete query.options;\n\t Object.assign(query, newQueryValues);\n\n\t // Обновляем маршрут с новым query\n\t router.replace({ query });\n\t}, { deep: true })\n\n\twatch(() => store.core.state.position, (newPosition) => {\n // get the current route\n const currentRoute = { ...router.currentRoute.value };\n\t \n // create new parameters based on globals state position\n let newParams = {\n country: normalizeUrlParam(newPosition.country),\n state: normalizeUrlParam(newPosition.state),\n city: normalizeUrlParam(newPosition.city),\n };\n\n let newState = {\n country: denormalizeUrlParam(newPosition.country),\n state: denormalizeUrlParam(newPosition.state),\n city: denormalizeUrlParam(newPosition.city),\n };\n \n // update route params\n localPosition.value = newState;\n currentRoute.params = newParams;\n\n \n // replace the current route\n router.replace(currentRoute);\n\t}, { deep: true });\n\n const text = {\n locale: 'en',\n messages: {\n en: {\n meta: {\n title: \"Marketplace – Shop Our Wide Selection of Quality Weed for Delivery\",\n description: \"Browse our marketplace of top-grade weed strains and choose from a variety of delivery options. Order now and have your favorite strains delivered straight to your door. Safe, fast, and reliable.\",\n }\n },\n ru: {\n meta: {\n title: \"Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки\",\n description: \"Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.\",\n }\n }\n }\n }\n\n const { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n\n\n"],"names":["marketplace.state"],"mappings":"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"}
@@ -1,19 +1,18 @@
1
1
  import { onMounted, createBlock, openBlock, unref, withCtx, createElementBlock, Fragment, renderList } from "vue";
2
2
  import { useRoute } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../../components/Feed/Feed.vue.js";
4
- import { actions } from "../../../../organizations/store/organizations.js";
5
4
  import { useStore } from "../../../../core/views/store/core.store.js";
6
5
  import _sfc_main$2 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
7
- import { state } from "../../store/marketplace.js";
6
+ import { state, marketplaceStore } from "../../store/marketplace.js";
8
7
  const _sfc_main = {
9
8
  __name: "Catalog",
10
9
  setup(__props) {
11
- const core = useStore();
10
+ const store = useStore();
12
11
  const route = useRoute();
13
12
  onMounted(() => {
14
13
  if (typeof gtag === "function") {
15
14
  gtag("event", "view_marketplace", {
16
- location: core.state.position?.location || "unknown",
15
+ location: store.core.state.position?.location || "unknown",
17
16
  page_path: window.location.pathname,
18
17
  marketplace_id: route.params.id || "main"
19
18
  });
@@ -34,7 +33,7 @@ const _sfc_main = {
34
33
  }
35
34
  },
36
35
  store: {
37
- read: (options) => actions.read(options)
36
+ read: (options) => unref(marketplaceStore).readCatalog(options)
38
37
  },
39
38
  options: {
40
39
  country: unref(route).params.country,
@@ -43,7 +42,7 @@ const _sfc_main = {
43
42
  categories: unref(route).query.categories,
44
43
  prices: unref(route).query.prices,
45
44
  delivery: unref(route).query.delivery,
46
- location: unref(core).state.position?.location,
45
+ location: unref(store).core.state.position?.location,
47
46
  lookup: ["products", "spots"],
48
47
  contain: ["products"]
49
48
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/pages/Catalog.vue"],"sourcesContent":["<template>\n\t<Feed\n\t\tv-model:sort=\"marketplace.state.sort\"\n\t\tv-model:filter=\"marketplace.state.filter\"\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n },\n }\"\n :store=\"{\n read: (options) => organization.actions.read(options)\n }\"\n :options=\"{\n country: route.params.country,\n\t state: route.params.state,\n\t city: route.params.city,\n\t categories: route.query.categories,\n\t prices: route.query.prices,\n\t delivery: route.query.delivery,\n\t location: core.state.position?.location,\n\t lookup: ['products','spots'],\n\t contain: ['products'],\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <CardOrganization \n\t v-for=\"organization in items\" \n\t :key=\"organization._id\"\n\t :organization=\"organization\"\n\t :showRating=\"true\"\n\t :showFollowers=\"false\"\n\t :showProducts=\"true\"\n\t class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n\t />\n </Feed>\n</template>\n\n<script setup>\n\timport { computed,reactive,ref, onMounted,watch } from 'vue'\n\timport { useRoute } from 'vue-router'\n\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\t\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js'\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\tconst core = useStore()\n\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport * as marketplace from '../../store/marketplace';\n\t\n\tconst route = useRoute()\n\n\tonMounted(() => {\n\t\t// Добавление Google Analytics event на открытие маркетплейса\n\t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_marketplace', {\n\t\t\t\tlocation: core.state.position?.location || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tmarketplace_id: route.params.id || 'main',\n\t\t\t});\n\t\t}\n\t})\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":[],"mappings":";;;;;;;;;;AAmDC,UAAM,OAAO,SAAQ;AAMrB,UAAM,QAAQ,SAAQ;AAEtB,cAAU,MAAM;AAEf,UAAI,OAAO,SAAS,YAAY;AAC/B,aAAK,SAAS,oBAAoB;AAAA,UACjC,UAAU,KAAK,MAAM,UAAU,YAAY;AAAA,UAC3C,WAAW,OAAO,SAAS;AAAA,UAC3B,gBAAgB,MAAM,OAAO,MAAM;AAAA,QACvC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Catalog.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/pages/Catalog.vue"],"sourcesContent":["<template>\n\t<Feed\n\t\tv-model:sort=\"marketplace.state.sort\"\n\t\tv-model:filter=\"marketplace.state.filter\"\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n },\n }\"\n :store=\"{\n read: (options) => marketplaceStore.readCatalog(options)\n }\"\n :options=\"{\n country: route.params.country,\n\t state: route.params.state,\n\t city: route.params.city,\n\t categories: route.query.categories,\n\t prices: route.query.prices,\n\t delivery: route.query.delivery,\n\t location: store.core.state.position?.location,\n\t lookup: ['products','spots'],\n\t contain: ['products'],\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <CardOrganization \n\t v-for=\"organization in items\" \n\t :key=\"organization._id\"\n\t :organization=\"organization\"\n\t :showRating=\"true\"\n\t :showFollowers=\"false\"\n\t :showProducts=\"true\"\n\t class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n\t />\n </Feed>\n</template>\n\n<script setup>\n\timport { computed,reactive,ref, onMounted,watch } from 'vue'\n\timport { useRoute } from 'vue-router'\n\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\t\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js'\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\tconst store = useStore()\n\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport * as marketplace from '../../store/marketplace';\n\timport marketplaceStore from '../../store/marketplace';\n\n\tconst route = useRoute()\n\n\tonMounted(() => {\n\t\t// Добавление Google Analytics event на открытие маркетплейса\n\t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_marketplace', {\n\t\t\t\tlocation: store.core.state.position?.location || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tmarketplace_id: route.params.id || 'main',\n\t\t\t});\n\t\t}\n\t})\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":[],"mappings":";;;;;;;;;AAmDC,UAAM,QAAQ,SAAQ;AAOtB,UAAM,QAAQ,SAAQ;AAEtB,cAAU,MAAM;AAEf,UAAI,OAAO,SAAS,YAAY;AAC/B,aAAK,SAAS,oBAAoB;AAAA,UACjC,UAAU,MAAM,KAAK,MAAM,UAAU,YAAY;AAAA,UACjD,WAAW,OAAO,SAAS;AAAA,UAC3B,gBAAgB,MAAM,OAAO,MAAM;AAAA,QACvC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createTextVNode, Transition, withCtx, Fragment, renderList, createBlock, createCommentVNode, normalizeClass, toDisplayString } from "vue";
2
- import Loader from "../../../../../components/Loader/Loader.vue.js";
2
+ import Loader from "../../../../../components/Loader/Loader.vue2.js";
3
3
  import { useRouter } from "vue-router";
4
4
  import { useI18n } from "vue-i18n";
5
5
  import { actions as actions$1 } from "../../../../products/store/categories.js";