@ozdao/martyrs 0.2.562 → 0.2.564

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 (42) hide show
  1. package/dist/{abac-DC2x92Pa.js → abac-DYoheWuc.js} +2 -1
  2. package/dist/{core.logger-VRHh-WUW.js → core.cache-DALYFDdy.js} +10 -59
  3. package/dist/core.logger-C3q8A9dl.js +51 -0
  4. package/dist/core.server.js +1 -1
  5. package/dist/{crud-DFFgLl09.js → crud-C7FSTUes.js} +2 -1
  6. package/dist/inventory.server.js +4 -3
  7. package/dist/{main-TV4u6Jux.js → main-CmjWiDVF.js} +402 -402
  8. package/dist/marketplace.server.js +389 -0
  9. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js +1 -3
  10. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js.map +1 -1
  11. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js +1 -1
  12. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js.map +1 -1
  13. package/dist/martyrs/src/modules/marketplace/marketplace.client.js +5 -9
  14. package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
  15. package/dist/martyrs/src/modules/marketplace/views/components/{layouts → pages}/Marketplace.vue.js +14 -18
  16. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -0
  17. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js +39 -0
  18. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js.map +1 -0
  19. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +0 -16
  20. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
  21. package/dist/martyrs.es.js +1 -1
  22. package/dist/music.server.js +4 -3
  23. package/dist/orders.server.js +2 -2
  24. package/dist/organizations.server.js +9 -219
  25. package/dist/products.server.js +4 -3
  26. package/dist/queryProcessorOrganizations-BB11WFpc.js +221 -0
  27. package/dist/rents.server.js +2 -1
  28. package/dist/{web-Cq5tyhkl.js → web-cNKIl_cL.js} +1 -1
  29. package/package.json +1 -1
  30. package/src/modules/core/views/components/sections/filters/FiltersGroup.vue +3 -4
  31. package/src/modules/landing/components/sections/SectionFeatures.vue +1 -1
  32. package/src/modules/marketplace/marketplace.client.js +3 -10
  33. package/src/modules/marketplace/views/components/{layouts → pages}/Marketplace.vue +7 -16
  34. package/src/modules/marketplace/views/router/marketplace.router.js +37 -45
  35. package/src/modules/marketplace/views/store/marketplace.js +0 -16
  36. package/dist/martyrs/src/modules/marketplace/marketplace.router.js +0 -63
  37. package/dist/martyrs/src/modules/marketplace/marketplace.router.js.map +0 -1
  38. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +0 -1
  39. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +0 -73
  40. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +0 -1
  41. package/src/modules/marketplace/marketplace.router.js +0 -66
  42. package/src/modules/marketplace/views/components/pages/Catalog.vue +0 -74
@@ -1,19 +1,16 @@
1
1
  // Router
2
2
  import addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';
3
- import { getRoutes } from './marketplace.router.js';
3
+ import { getRoutes } from './views/router/marketplace.router.js';
4
4
 
5
5
  //Store
6
6
  import * as storeMarketplace from './views/store/marketplace.js';
7
7
 
8
- // Layouts
9
- import Marketplace from './views/components/layouts/Marketplace.vue';
8
+ // Pages
9
+ import Marketplace from './views/components/pages/Marketplace.vue';
10
10
 
11
11
  // Sections
12
12
  import SectionMenu from './views/components/sections/SectionMenu.vue';
13
13
 
14
- // Pages
15
- import Catalog from './views/components/pages/Catalog.vue';
16
-
17
14
  // Пример функции инициализации для модуля маркетплейса
18
15
  function initializeMarketplace(app, store, router, options = {}) {
19
16
  const routes = getRoutes(options);
@@ -39,8 +36,6 @@ const ModuleMarketplace = {
39
36
  // Sections
40
37
  SectionMenu,
41
38
  // Pages
42
- Catalog,
43
- // Layouts
44
39
  Marketplace,
45
40
  },
46
41
  },
@@ -49,8 +44,6 @@ const ModuleMarketplace = {
49
44
  export {
50
45
  // Elements
51
46
  // Pages
52
- Catalog,
53
- // Layouts
54
47
  Marketplace,
55
48
  // Blocks
56
49
  // Sections
@@ -23,7 +23,7 @@
23
23
  <div class="o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative">
24
24
  <div class="w-100 o-y-scroll h-100">
25
25
  <!-- Location Filter -->
26
- <div class="mn-b-medium">
26
+ <div v-if="!route.params.country && !route.params.state && !route.params.city" class="mn-b-medium">
27
27
  <h4 class="mn-b-small">Location</h4>
28
28
  <Field
29
29
  v-model="searchLocation"
@@ -46,7 +46,7 @@
46
46
  <!-- Filters Group -->
47
47
  <FiltersGroup
48
48
  :filters="marketplace.state.filter.options"
49
- v-model:selected="selectedFilters"
49
+ v-model:selected="marketplace.state.filter.selected"
50
50
  :immediate="true"
51
51
  :showHeader="false"
52
52
  :showApplyButton="false"
@@ -76,10 +76,10 @@
76
76
  location: localLocation?.location,
77
77
  lookup: ['products','spots'],
78
78
  contain: ['products'],
79
- priceMin: selectedFilters.price?.min,
80
- priceMax: selectedFilters.price?.max,
81
- delivery: selectedFilters.delivery?.length > 0 ? selectedFilters.delivery.join(',') : undefined,
82
- payment: selectedFilters.payment?.length > 0 ? selectedFilters.payment.join(',') : undefined
79
+ priceMin: marketplace.state.filter.selected.price?.min,
80
+ priceMax: marketplace.state.filter.selected.price?.max,
81
+ delivery: marketplace.state.filter.selected.delivery?.length > 0 ? marketplace.state.filter.selected.delivery.join(',') : undefined,
82
+ payment: marketplace.state.filter.selected.payment?.length > 0 ? marketplace.state.filter.selected.payment.join(',') : undefined
83
83
  }"
84
84
  v-slot="{
85
85
  items
@@ -89,7 +89,7 @@
89
89
  <div class="mn-b-thin mobile-only">
90
90
  <Filters
91
91
  v-model:filters="marketplace.state.filter.options"
92
- v-model:selected="selectedFilters"
92
+ v-model:selected="marketplace.state.filter.selected"
93
93
  class=""
94
94
  />
95
95
  </div>
@@ -146,15 +146,6 @@
146
146
  // Location filter
147
147
  const searchLocation = ref('');
148
148
 
149
- const selectedFilters = ref({
150
- price: { min: null, max: null },
151
- delivery: [],
152
- payment: [],
153
- availabilityDate: null,
154
- rating: null
155
- })
156
-
157
-
158
149
  if (route.params) {
159
150
  // Загружаем новые значения из параметров маршрута в состояние
160
151
  let newState = {
@@ -1,50 +1,42 @@
1
- import layoutMarketplace from '../components/layouts/Marketplace.vue';
1
+ function buildMarketplaceTree(options = {}) {
2
+ const marketplaceComponent = options.marketplaceComponent || (() => import(
3
+ /* webpackChunkName: 'marketplace-page' */
4
+ '../components/pages/Marketplace.vue'
5
+ ));
2
6
 
3
- const marketplace = [
4
- {
5
- path: 'marketplace',
6
- name: 'Marketplace',
7
- component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
8
- meta: {
9
- title: {
10
- en: 'Marketplace',
11
- ru: 'Маркетплейс',
12
- },
13
- },
14
- },
15
- {
16
- path: 'marketplace/:country',
17
- name: 'MarketplaceCountry',
18
- component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
19
- meta: {
20
- title: {
21
- en: 'Marketplace',
22
- ru: 'Маркетплейс',
23
- },
24
- },
25
- },
26
- {
27
- path: 'marketplace/:country/:state',
28
- name: 'MarketplaceState',
29
- component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
30
- meta: {
31
- title: {
32
- en: 'Marketplace',
33
- ru: 'Маркетплейс',
7
+ const buildName = (suffix) => {
8
+ const prefix = options.routeNamePrefix || '';
9
+ return suffix ? `${prefix}${suffix}` : prefix || undefined;
10
+ };
11
+
12
+ return [
13
+ {
14
+ path: ':country?/:state?/:city?',
15
+ name: buildName('Marketplace') || 'Marketplace',
16
+ component: marketplaceComponent,
17
+ meta: {
18
+ title: {
19
+ en: 'Marketplace',
20
+ ru: 'Маркетплейс',
21
+ },
34
22
  },
35
23
  },
36
- },
37
- {
38
- path: 'marketplace/:country/:state/:city',
39
- name: 'MarketplaceCity',
40
- component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
41
- meta: {
42
- title: {
43
- en: 'Marketplace',
44
- ru: 'Маркетплейс',
45
- },
24
+ ];
25
+ }
26
+
27
+ export function getRoutes(options = {}) {
28
+ const route = options.route || 'Home';
29
+ const routes = [];
30
+
31
+ routes.push({
32
+ parentName: route,
33
+ config: {
34
+ basePath: options.basePath || 'marketplace',
35
+ routes: buildMarketplaceTree(options),
46
36
  },
47
- },
48
- ];
37
+ });
38
+
39
+ return routes;
40
+ }
49
41
 
50
- export default marketplace;
42
+ export default { getRoutes };
@@ -58,22 +58,6 @@ const state = reactive({
58
58
  { label: 'Bank Transfer', value: 'bank' },
59
59
  ],
60
60
  },
61
- {
62
- title: 'Availability Date',
63
- value: 'availabilityDate',
64
- type: 'date'
65
- },
66
- {
67
- title: 'Rating',
68
- value: 'rating',
69
- type: 'radio',
70
- options: [
71
- { label: '5 stars', value: '5' },
72
- { label: '4+ stars', value: '4' },
73
- { label: '3+ stars', value: '3' },
74
- { label: 'Any rating', value: 'any' }
75
- ]
76
- },
77
61
  ],
78
62
  },
79
63
  sort: {
@@ -1,63 +0,0 @@
1
- function buildMarketplaceTree(options = {}) {
2
- const layoutComponent = options.layoutComponent || (() => import(
3
- /* webpackChunkName: 'marketplace-layout' */
4
- "./views/components/layouts/Marketplace.vue.js"
5
- ));
6
- const catalogComponent = options.catalogComponent || (() => import(
7
- /* webpackChunkName: 'marketplace-catalog' */
8
- "./views/components/pages/Catalog.vue.js"
9
- ));
10
- const buildName = (suffix) => {
11
- const prefix = options.routeNamePrefix || "";
12
- return suffix ? `${prefix}${suffix}` : prefix || void 0;
13
- };
14
- return [
15
- {
16
- path: "",
17
- name: buildName("Marketplace") || "Marketplace",
18
- component: layoutComponent,
19
- meta: {
20
- title: {
21
- en: "Marketplace",
22
- ru: "Маркетплейс"
23
- }
24
- },
25
- children: [
26
- {
27
- path: ":country?",
28
- component: catalogComponent,
29
- children: [
30
- {
31
- path: ":state?",
32
- name: buildName("State") || "State",
33
- component: catalogComponent,
34
- children: [
35
- {
36
- path: ":city?",
37
- name: buildName("City") || "City",
38
- component: catalogComponent
39
- }
40
- ]
41
- }
42
- ]
43
- }
44
- ]
45
- }
46
- ];
47
- }
48
- function getRoutes(options = {}) {
49
- const route = options.route || "Home";
50
- const routes = [];
51
- routes.push({
52
- parentName: route,
53
- config: {
54
- basePath: options.basePath || "marketplace",
55
- routes: buildMarketplaceTree(options)
56
- }
57
- });
58
- return routes;
59
- }
60
- export {
61
- getRoutes
62
- };
63
- //# sourceMappingURL=marketplace.router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketplace.router.js","sources":["../../../../../src/modules/marketplace/marketplace.router.js"],"sourcesContent":["function buildMarketplaceTree(options = {}) {\n const layoutComponent = options.layoutComponent || (() => import(\n /* webpackChunkName: 'marketplace-layout' */\n './views/components/layouts/Marketplace.vue'\n ));\n const catalogComponent = options.catalogComponent || (() => import(\n /* webpackChunkName: 'marketplace-catalog' */\n './views/components/pages/Catalog.vue'\n ));\n\n const buildName = (suffix) => {\n const prefix = options.routeNamePrefix || '';\n return suffix ? `${prefix}${suffix}` : prefix || undefined;\n };\n\n return [\n {\n path: '',\n name: buildName('Marketplace') || 'Marketplace',\n component: layoutComponent,\n meta: {\n title: {\n en: 'Marketplace',\n ru: 'Маркетплейс',\n },\n },\n children: [\n {\n path: ':country?',\n component: catalogComponent,\n children: [\n {\n path: ':state?',\n name: buildName('State') || 'State',\n component: catalogComponent,\n children: [\n {\n path: ':city?',\n name: buildName('City') || 'City',\n component: catalogComponent,\n },\n ],\n },\n ],\n },\n ],\n },\n ];\n}\n\nexport function getRoutes(options = {}) {\n const route = options.route || 'Home';\n const routes = [];\n\n routes.push({\n parentName: route,\n config: {\n basePath: options.basePath || 'marketplace',\n routes: buildMarketplaceTree(options),\n },\n });\n\n return routes;\n}\n\nexport default { getRoutes };\n"],"names":[],"mappings":"AAAA,SAAS,qBAAqB,UAAU,IAAI;AAC1C,QAAM,kBAAkB,QAAQ,oBAAoB,MAAM;AAAA;AAAA,IAExD;AAAA,EACJ;AACE,QAAM,mBAAmB,QAAQ,qBAAqB,MAAM;AAAA;AAAA,IAE1D;AAAA,EACJ;AAEE,QAAM,YAAY,CAAC,WAAW;AAC5B,UAAM,SAAS,QAAQ,mBAAmB;AAC1C,WAAO,SAAS,GAAG,MAAM,GAAG,MAAM,KAAK,UAAU;AAAA,EACnD;AAEA,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM,UAAU,aAAa,KAAK;AAAA,MAClC,WAAW;AAAA,MACX,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACd;AAAA,MACA;AAAA,MACM,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,MAAM,UAAU,OAAO,KAAK;AAAA,cAC5B,WAAW;AAAA,cACX,UAAU;AAAA,gBACR;AAAA,kBACE,MAAM;AAAA,kBACN,MAAM,UAAU,MAAM,KAAK;AAAA,kBAC3B,WAAW;AAAA,gBAC7B;AAAA,cACA;AAAA,YACA;AAAA,UACA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA;AAEO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,SAAS,CAAA;AAEf,SAAO,KAAK;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,UAAU,QAAQ,YAAY;AAAA,MAC9B,QAAQ,qBAAqB,OAAO;AAAA,IAC1C;AAAA,EACA,CAAG;AAED,SAAO;AACT;"}
@@ -1 +0,0 @@
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,73 +0,0 @@
1
- import { onMounted, createBlock, openBlock, unref, withCtx, createElementBlock, Fragment, renderList } from "vue";
2
- import { useRoute } from "vue-router";
3
- import _sfc_main$1 from "../../../../../components/Feed/Feed.vue.js";
4
- import { useStore } from "../../../../core/views/store/core.store.js";
5
- import _sfc_main$2 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
6
- import { state, marketplaceStore } from "../../store/marketplace.js";
7
- const _sfc_main = {
8
- __name: "Catalog",
9
- setup(__props) {
10
- const store = useStore();
11
- const route = useRoute();
12
- onMounted(() => {
13
- if (typeof gtag === "function") {
14
- gtag("event", "view_marketplace", {
15
- location: store.core.state.position?.location || "unknown",
16
- page_path: window.location.pathname,
17
- marketplace_id: route.params.id || "main"
18
- });
19
- }
20
- });
21
- return (_ctx, _cache) => {
22
- return openBlock(), createBlock(_sfc_main$1, {
23
- sort: state.sort,
24
- "onUpdate:sort": _cache[0] || (_cache[0] = ($event) => state.sort = $event),
25
- filter: state.filter,
26
- "onUpdate:filter": _cache[1] || (_cache[1] = ($event) => state.filter = $event),
27
- search: true,
28
- showLoadMore: false,
29
- states: {
30
- empty: {
31
- title: "No Shops Found",
32
- description: "Currently, there are no shops."
33
- }
34
- },
35
- store: {
36
- read: (options) => unref(marketplaceStore).readCatalog(options)
37
- },
38
- options: {
39
- country: unref(route).params.country,
40
- state: unref(route).params.state,
41
- city: unref(route).params.city,
42
- categories: unref(route).query.categories,
43
- prices: unref(route).query.prices,
44
- delivery: unref(route).query.delivery,
45
- location: unref(store).core.state.position?.location,
46
- lookup: ["products", "spots"],
47
- contain: ["products"]
48
- },
49
- class: "rows-1 gap-thin"
50
- }, {
51
- default: withCtx(({
52
- items
53
- }) => [
54
- (openBlock(true), createElementBlock(Fragment, null, renderList(items, (organization) => {
55
- return openBlock(), createBlock(_sfc_main$2, {
56
- key: organization._id,
57
- organization,
58
- showRating: true,
59
- showFollowers: false,
60
- showProducts: true,
61
- class: "bg-light w-100 o-hidden radius-medium pd-small"
62
- }, null, 8, ["organization"]);
63
- }), 128))
64
- ]),
65
- _: 1
66
- }, 8, ["sort", "filter", "store", "options"]);
67
- };
68
- }
69
- };
70
- export {
71
- _sfc_main as default
72
- };
73
- //# sourceMappingURL=Catalog.vue.js.map
@@ -1 +0,0 @@
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,66 +0,0 @@
1
- function buildMarketplaceTree(options = {}) {
2
- const layoutComponent = options.layoutComponent || (() => import(
3
- /* webpackChunkName: 'marketplace-layout' */
4
- './views/components/layouts/Marketplace.vue'
5
- ));
6
- const catalogComponent = options.catalogComponent || (() => import(
7
- /* webpackChunkName: 'marketplace-catalog' */
8
- './views/components/pages/Catalog.vue'
9
- ));
10
-
11
- const buildName = (suffix) => {
12
- const prefix = options.routeNamePrefix || '';
13
- return suffix ? `${prefix}${suffix}` : prefix || undefined;
14
- };
15
-
16
- return [
17
- {
18
- path: '',
19
- name: buildName('Marketplace') || 'Marketplace',
20
- component: layoutComponent,
21
- meta: {
22
- title: {
23
- en: 'Marketplace',
24
- ru: 'Маркетплейс',
25
- },
26
- },
27
- children: [
28
- {
29
- path: ':country?',
30
- component: catalogComponent,
31
- children: [
32
- {
33
- path: ':state?',
34
- name: buildName('State') || 'State',
35
- component: catalogComponent,
36
- children: [
37
- {
38
- path: ':city?',
39
- name: buildName('City') || 'City',
40
- component: catalogComponent,
41
- },
42
- ],
43
- },
44
- ],
45
- },
46
- ],
47
- },
48
- ];
49
- }
50
-
51
- export function getRoutes(options = {}) {
52
- const route = options.route || 'Home';
53
- const routes = [];
54
-
55
- routes.push({
56
- parentName: route,
57
- config: {
58
- basePath: options.basePath || 'marketplace',
59
- routes: buildMarketplaceTree(options),
60
- },
61
- });
62
-
63
- return routes;
64
- }
65
-
66
- export default { getRoutes };
@@ -1,74 +0,0 @@
1
- <template>
2
- <Feed
3
- v-model:sort="marketplace.state.sort"
4
- v-model:filter="marketplace.state.filter"
5
- :search="true"
6
- :showLoadMore="false"
7
- :states="{
8
- empty: {
9
- title: 'No Shops Found',
10
- description: 'Currently, there are no shops.'
11
- },
12
- }"
13
- :store="{
14
- read: (options) => marketplaceStore.readCatalog(options)
15
- }"
16
- :options="{
17
- country: route.params.country,
18
- state: route.params.state,
19
- city: route.params.city,
20
- categories: route.query.categories,
21
- prices: route.query.prices,
22
- delivery: route.query.delivery,
23
- location: store.core.state.position?.location,
24
- lookup: ['products','spots'],
25
- contain: ['products'],
26
- }"
27
- v-slot="{
28
- items
29
- }"
30
- class="rows-1 gap-thin"
31
- >
32
- <CardOrganization
33
- v-for="organization in items"
34
- :key="organization._id"
35
- :organization="organization"
36
- :showRating="true"
37
- :showFollowers="false"
38
- :showProducts="true"
39
- class="bg-light w-100 o-hidden radius-medium pd-small "
40
- />
41
- </Feed>
42
- </template>
43
-
44
- <script setup>
45
- import { computed,reactive,ref, onMounted,watch } from 'vue'
46
- import { useRoute } from 'vue-router'
47
-
48
- import Feed from '@martyrs/src/components/Feed/Feed.vue'
49
-
50
- import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'
51
- import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
52
- const store = useStore()
53
-
54
- import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'
55
-
56
- import * as marketplace from '../../store/marketplace';
57
- import marketplaceStore from '../../store/marketplace';
58
-
59
- const route = useRoute()
60
-
61
- onMounted(() => {
62
- // Добавление Google Analytics event на открытие маркетплейса
63
- if (typeof gtag === 'function') {
64
- gtag('event', 'view_marketplace', {
65
- location: store.core.state.position?.location || 'unknown',
66
- page_path: window.location.pathname,
67
- marketplace_id: route.params.id || 'main',
68
- });
69
- }
70
- })
71
- </script>
72
-
73
- <style lang="scss">
74
- </style>