@ozdao/martyrs 0.2.598 → 0.2.599

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 (92) hide show
  1. package/dist/builder.js +14 -15
  2. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  3. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
  4. package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +2 -2
  5. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
  6. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  7. package/dist/martyrs/src/components/Feed/Feed.vue.js +3 -3
  8. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
  9. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
  10. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  11. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  12. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  13. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  14. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  15. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  16. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  17. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.js.map +1 -0
  18. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  19. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  20. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  21. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  22. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  23. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  24. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  25. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  26. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  27. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +1 -1
  28. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +1 -1
  29. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +2 -2
  30. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
  31. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  32. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  33. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  34. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +3 -3
  35. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  36. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  37. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  38. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  39. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  40. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  41. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +2 -2
  42. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  43. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  44. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  45. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +1 -1
  46. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  47. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  48. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  49. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  50. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  51. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  52. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  53. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  54. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +1 -1
  55. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  56. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  57. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  58. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -3
  59. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  60. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  61. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
  62. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
  63. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
  64. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  65. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +4 -4
  66. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  67. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  68. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  69. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
  70. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  71. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -2
  72. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  73. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  74. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  75. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  76. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  77. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  78. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  79. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  80. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  81. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  82. package/package.json +1 -1
  83. package/src/builder/ssr/asset-resolver.js +14 -15
  84. package/src/modules/TASKS.MD +26 -0
  85. package/src/modules/core/views/classes/core.app.js +1 -1
  86. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
  87. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  88. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
  89. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  90. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  91. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  92. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
package/dist/builder.js CHANGED
@@ -304,28 +304,27 @@ function createAssetResolver(statsJson) {
304
304
  if (options.criticalCss) {
305
305
  const result2 = {
306
306
  head: [
307
- // Modulepreload для ВСЕХ initial chunks для параллельной загрузки
308
- ...initialJs.map((src) => `<link rel="modulepreload" href="${publicPath}${src}">`),
309
- // Module chunks as modulepreload
310
- ...moduleJs.map((src) => `<link rel="modulepreload" href="${publicPath}${src}">`),
311
- // CSS файлы будут обработаны Beasties, поэтому добавляем их как обычные link теги
312
- ...css.map((href) => `<link rel="stylesheet" href="${publicPath}${href}">`)
307
+ // 1. CSS первым
308
+ ...css.map((href) => `<link rel="stylesheet" href="${publicPath}${href}">`),
309
+ // 2. JS вторым - type="module" делает их defer автоматически
310
+ ...initialJs.map((src) => `<script type="module" src="${publicPath}${src}"></script>`),
311
+ // 3. Modulepreload для async chunks последним
312
+ ...moduleJs.map((src) => `<link rel="modulepreload" href="${publicPath}${src}">`)
313
313
  ].join("\n"),
314
- // Script tags в body для выполнения после загрузки
315
- body: initialJs.map((src) => `<script type="module" src="${publicPath}${src}"></script>`).join("\n")
314
+ body: ""
316
315
  };
317
316
  return result2;
318
317
  }
319
318
  const result = {
320
319
  head: [
321
- // Modulepreload для ВСЕХ initial chunks для параллельной загрузки
322
- ...initialJs.map((src) => `<link rel="modulepreload" href="${publicPath}${src}">`),
323
- // Module chunks as modulepreload
324
- ...moduleJs.map((src) => `<link rel="modulepreload" href="${publicPath}${src}">`),
325
- ...css.map((href) => `<link rel="stylesheet" href="${publicPath}${href}">`)
320
+ // 1. CSS первым
321
+ ...css.map((href) => `<link rel="stylesheet" href="${publicPath}${href}">`),
322
+ // 2. JS вторым - type="module" делает их defer автоматически
323
+ ...initialJs.map((src) => `<script type="module" src="${publicPath}${src}"></script>`),
324
+ // 3. Modulepreload для async chunks последним
325
+ ...moduleJs.map((src) => `<link rel="modulepreload" href="${publicPath}${src}">`)
326
326
  ].join("\n"),
327
- // Script tags в body для выполнения после загрузки
328
- body: initialJs.map((src) => `<script type="module" src="${publicPath}${src}"></script>`).join("\n")
327
+ body: ""
329
328
  };
330
329
  return result;
331
330
  }
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, withDirectives, createElementBlock, openBlock, withModifiers, renderSlot, createVNode, createBlock, resolveDynamicComponent, mergeProps, toDisplayString, Transition, withCtx, createCommentVNode, normalizeStyle, unref } from "vue";
2
2
  import clickOutside from "../FieldPhone/click-outside.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  const _hoisted_1 = {
5
5
  key: 0,
6
6
  class: "w-100 h-100 flex-center flex"
@@ -81,4 +81,4 @@ const _sfc_main = {
81
81
  export {
82
82
  _sfc_main as default
83
83
  };
84
- //# sourceMappingURL=Dropdown.vue.js.map
84
+ //# sourceMappingURL=Dropdown.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.vue2.js","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div\n class=\"dropdown pos-relative\"\n v-click-outside=\"clickedOutside\"\n @click.stop=\"trigger === 'click' ? (isOpen = !isOpen) : null\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <slot name=\"label\">\n <div v-if=\"isComponentLabel\" class=\"w-100 h-100 flex-center flex\">\n <component :is=\"label.component\" v-bind=\"label.props\" :class=\"label.class\"></component>\n </div>\n <div v-else>\n {{ label }}\n </div>\n </slot>\n <Transition name=\"dropdown\">\n <div\n v-if=\"isOpen\"\n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\"\n class=\"dropdown-content\"\n >\n <slot></slot>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport clickOutside from '../FieldPhone/click-outside.js';\n\nlet vClickOutside = clickOutside\n\nconst props = defineProps({\n label: {\n type: [String, Object],\n default: 'Open'\n },\n align: {\n type: String,\n default: 'left'\n },\n trigger: {\n type: String,\n default: 'click'\n }\n})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nlet closeTimeout = null;\n\nfunction handleMouseEnter() {\n if (props.trigger === 'hover') {\n clearTimeout(closeTimeout);\n isOpen.value = true;\n }\n}\n\nfunction handleMouseLeave() {\n if (props.trigger === 'hover') {\n closeTimeout = setTimeout(() => {\n isOpen.value = false;\n }, 100);\n }\n}\n\nfunction clickedOutside() {\n if (props.trigger === 'click') {\n isOpen.value = false;\n }\n}\n</script>\n\n<style>\n.dropdown-content {\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 100;\n border-radius: var(--small);\n transform-origin: top left;\n backdrop-filter: blur(var(--small));\n -webkit-backdrop-filter: blur(var(--small));\n background: rgba(var(--white), 0.5);\n}\n\n.dropdown-enter-active,\n.dropdown-leave-active {\n transition: transform 0.33s cubic-bezier(0.9, 0, 0.1, 1), opacity 0.15s ease;\n}\n\n.dropdown-enter-from,\n.dropdown-leave-to {\n opacity: 0.01;\n transform: translateY(-4px) scale(0.8);\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,QAAI,gBAAgB;AAEpB,UAAM,QAAQ;AAed,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,mBAAmB,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,QAAI,eAAe;AAEnB,aAAS,mBAAmB;AAC1B,UAAI,MAAM,YAAY,SAAS;AAC7B,qBAAa,YAAY;AACzB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;AAEA,aAAS,mBAAmB;AAC1B,UAAI,MAAM,YAAY,SAAS;AAC7B,uBAAe,WAAW,MAAM;AAC9B,iBAAO,QAAQ;AAAA,QACjB,GAAG,GAAG;AAAA,MACR;AAAA,IACF;AAEA,aAAS,iBAAiB;AACxB,UAAI,MAAM,YAAY,SAAS;AAC7B,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,7 +2,7 @@ import { ref, watchEffect, createElementBlock, openBlock, createBlock, createCom
2
2
  import { VueDraggableNext } from "../../../../node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js";
3
3
  import _sfc_main$2 from "../UploadImageMultiple/UploadImageMultiple.vue.js";
4
4
  import _sfc_main$1 from "../../modules/icons/navigation/IconCross.vue.js";
5
- /* empty css */
5
+ /* empty css */
6
6
  const _hoisted_1 = { class: "flex-nowrap flex gap-small" };
7
7
  const _hoisted_2 = { class: "pos-relative" };
8
8
  const _hoisted_3 = ["src"];
@@ -92,4 +92,4 @@ const _sfc_main = {
92
92
  export {
93
93
  _sfc_main as default
94
94
  };
95
- //# sourceMappingURL=EditImages.vue.js.map
95
+ //# sourceMappingURL=EditImages.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditImages.vue2.js","sources":["../../../../../src/components/EditImages/EditImages.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex gap-small\">\n <VueDraggableNext v-if=\"localImages.length > 0\" class=\"gap-small flex dragArea list-group w-full\" v-model=\"localImages\" @change=\"emitChanges\">\n\t\t\t<div v-for=\"(image, index) in localImages\" class=\"pos-relative\">\n\t\t\t\t<img loading=\"lazy\" class=\"i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden\" :src=\"(FILE_SERVER_URL || '') + image\" />\n\t\t\t\t\n <IconCross \n @click=\"deleteImage(index)\" \n class=\"cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro\"\n />\n\t\t\t</div>\n\t\t</VueDraggableNext>\n <div\n v-if=\"localImages.length > 0\" \n class=\"i-extra uppercase flex-center flex radius-small o-hidden br-main br-2px pd-small\"\n >\n <UploadImageMultiple \n @update:images=\"onImagesUpdate\"\n text=\"Add\"\n :options=\"{\n showText: false\n }\"\n :uploadPath=\"'photos'\"\n class=\"radius-big\"\n />\n </div>\n\n\n\t\t<UploadImageMultiple \t\n v-if=\"localImages.length < 1\" \n @update:images=\"onImagesUpdate\"\n :uploadPath=\"props.uploadPath\"\n :text=\"props.text\"\n :options=\"props.options\"\n class=\"w-100 pd-medium\"\n />\n\t</div>\t\n</template>\n\n<script setup>\nimport { ref, defineProps, watchEffect } from 'vue';\nimport { VueDraggableNext } from 'vue-draggable-next'\nimport UploadImageMultiple from \"@martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue\";\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n images: Array,\n text: Object,\n options: Object,\n uploadPath: {\n type: Object,\n default: 'unsorted'\n }\n});\n\nconst emit = defineEmits(['update:images'])\n\nconst localImages = ref([...props.images])\n\nwatchEffect(() => {\n localImages.value = [...props.images]; // Обновление localImages при изменении props.images\n});\n\nconst emitChanges = () => {\n emit('update:images', localImages.value)\n}\n\nconst onImagesUpdate = (newImages) => {\n localImages.value = [...localImages.value, ...newImages]\n emitChanges()\n}\n\nconst deleteImage = (index) => {\n localImages.value.splice(index, 1)\n emitChanges()\n}\n</script>\n\n<style lang=\"scss\">\n// Your styles here\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAEb,UAAM,cAAc,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;AAEzC,gBAAY,MAAM;AAChB,kBAAY,QAAQ,CAAC,GAAG,MAAM,MAAM;AAAA,IACtC,CAAC;AAED,UAAM,cAAc,MAAM;AACxB,WAAK,iBAAiB,YAAY,KAAK;AAAA,IACzC;AAEA,UAAM,iBAAiB,CAAC,cAAc;AACpC,kBAAY,QAAQ,CAAC,GAAG,YAAY,OAAO,GAAG,SAAS;AACvD,kBAAW;AAAA,IACb;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,kBAAY,MAAM,OAAO,OAAO,CAAC;AACjC,kBAAW;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createBlock, createVNode, normalizeClass, unref, withCtx, Fragment, renderList, Transition, renderSlot } from "vue";
2
2
  import { useI18n } from "vue-i18n";
3
3
  import { useGlobalMixins } from "../../modules/core/views/mixins/mixins.js";
4
- import Loader from "../Loader/Loader.vue.js";
4
+ import Loader from "../Loader/Loader.vue2.js";
5
5
  import _sfc_main$2 from "../Slider/Slider.vue.js";
6
6
  import _sfc_main$1 from "../EmptyState/EmptyState.vue.js";
7
7
  /* empty css */
@@ -1,13 +1,13 @@
1
1
  import { mergeModels, useModel, ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, Fragment, createCommentVNode, createBlock, normalizeClass, withCtx, createVNode, renderList, resolveDynamicComponent, unref, TransitionGroup, renderSlot } from "vue";
2
2
  import { useGlobalMixins } from "../../modules/core/views/mixins/mixins.js";
3
- import Loader from "../Loader/Loader.vue.js";
3
+ import Loader from "../Loader/Loader.vue2.js";
4
4
  import Skeleton from "../Skeleton/Skeleton.vue2.js";
5
5
  import _sfc_main$6 from "../EmptyState/EmptyState.vue.js";
6
- import _sfc_main$2 from "../Dropdown/Dropdown.vue.js";
6
+ import _sfc_main$2 from "../Dropdown/Dropdown.vue2.js";
7
7
  import Calendar from "../Calendar/Calendar.vue2.js";
8
8
  import _sfc_main$1 from "../../modules/core/views/components/blocks/BlockSearch.vue.js";
9
9
  import _sfc_main$5 from "../../modules/core/views/components/blocks/BlockSorting.vue.js";
10
- import Filters from "../../modules/core/views/components/sections/Filters.vue.js";
10
+ import Filters from "../../modules/core/views/components/sections/Filters.vue2.js";
11
11
  import _sfc_main$4 from "../../modules/core/views/components/elements/ButtonSort.vue.js";
12
12
  import _sfc_main$3 from "../../modules/core/views/components/elements/ButtonDate.vue.js";
13
13
  /* empty css */
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, toDisplayString } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
4
4
  const _sfc_main = {
5
5
  props: {
@@ -57,4 +57,4 @@ const Loader = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]])
57
57
  export {
58
58
  Loader as default
59
59
  };
60
- //# sourceMappingURL=Loader.vue.js.map
60
+ //# sourceMappingURL=Loader.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Loader.vue2.js","sources":["../../../../../src/components/Loader/Loader.vue"],"sourcesContent":["<template>\n <div class=\"circular-loader z-index-1 w-100 h-100 w-max-2r h-max-2r\" :class=\"{ 'circular-loader-centered': centered }\">\n <svg viewBox=\"25 25 50 50\">\n <circle class=\"circular-loader-fill\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n <circle class=\"circular-loader-circle\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n </svg>\n <div v-if=\"progress\" class=\"progress-text\">{{ progress }}</div>\n <div v-if=\"status\" class=\"uppercase fw-semi w-m-10r status-text\">{{ status }}</div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n progress: {\n type: Number,\n default: null,\n },\n status: {\n type: String,\n default: null,\n },\n centered: {\n type: Boolean,\n default: false\n },\n },\n};\n</script>\n\n<style>\n.circular-loader-centered {\n top: calc(50% - 1rem);\n left: calc(50% - 1rem);\n}\n\n.circular-loader svg {\n animation: rotate 2s linear infinite;\n}\n\n.circular-loader-circle {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n stroke-linecap: round;\n stroke: rgb(var(--main));\n animation: dash 1.5s ease-in-out infinite;\n}\n\n.circular-loader-fill {\n stroke-linecap: round;\n stroke: rgba(var(--black),0.2);\n}\n\n.progress-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 0.8rem;\n color: rgb(var(--main));;\n}\n\n.status-text {\n position: absolute;\n top: 120%;\n left: calc(50% - 5rem);\n font-size: 0.8rem;\n width: 10rem !important;\n text-align: center;\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: -124;\n }\n}\n</style>"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode"],"mappings":";;;AAYA,MAAK,YAAU;AAAA,EACb,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;AAGf;;EA3BA,KAAA;AAAA,EAMyB,OAAM;;;EAN/B,KAAA;AAAA,EAOuB,OAAM;;;sBAN3BA,mBAOM,OAAA;AAAA,IAPD,OADPC,eAAA,CACa,2DAAyD,EAAA,4BAAuC,OAAA,UAAQ,CAAA;AAAA;8BACjHC,mBAGM,OAAA,EAHD,SAAQ,iBAAa;AAAA,MACxBA,mBAAkH,UAAA;AAAA,QAA1G,OAAM;AAAA,QAAuB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;MAC3GA,mBAAoH,UAAA;AAAA,QAA5G,OAAM;AAAA,QAAyB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;;IAEpG,OAAA,yBAAXF,mBAA+D,OAA/D,YAA+DG,gBAAjB,OAAA,QAAQ,GAAA,CAAA,KAN1DC,mBAAA,IAAA,IAAA;AAAA,IAOe,OAAA,uBAAXJ,mBAAmF,OAAnF,YAAmFG,gBAAf,OAAA,MAAM,GAAA,CAAA,KAP9EC,mBAAA,IAAA,IAAA;AAAA;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, watchEffect, createElementBlock, openBlock, createElementVNode, createVNode, Transition, withCtx, createBlock } from "vue";
2
2
  import { Loader } from "../../../../node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js";
3
- import Loader$1 from "../Loader/Loader.vue.js";
3
+ import Loader$1 from "../Loader/Loader.vue2.js";
4
4
  /* empty css */
5
5
  const _hoisted_1 = { class: "pos-relative" };
6
6
  const _hoisted_2 = {
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, onMounted, onUnmounted, createElementBlock, openBlock, createCommentVNode, mergeProps, createElementVNode, createVNode } from "vue";
2
- import Loader from "../Loader/Loader.vue.js";
2
+ import Loader from "../Loader/Loader.vue2.js";
3
3
  import _sfc_main$1 from "../../modules/icons/entities/IconGallery.vue.js";
4
4
  /* empty css */
5
5
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, renderSlot } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
4
4
  const _sfc_main = {
5
5
  __name: "Menu",
@@ -14,4 +14,4 @@ const _sfc_main = {
14
14
  export {
15
15
  _sfc_main as default
16
16
  };
17
- //# sourceMappingURL=Menu.vue.js.map
17
+ //# sourceMappingURL=Menu.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, watch, createElementBlock, openBlock, Fragment, withDirectives, createVNode, normalizeClass, withModifiers, createCommentVNode, createElementVNode, toDisplayString, Transition, withCtx, renderList, vShow, unref, nextTick } from "vue";
2
2
  import clickOutside from "../FieldPhone/click-outside.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = {
6
6
  key: 0,
@@ -131,4 +131,4 @@ const Select = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-af5
131
131
  export {
132
132
  Select as default
133
133
  };
134
- //# sourceMappingURL=Select.vue2.js.map
134
+ //# sourceMappingURL=Select.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.vue.js","sources":["../../../../../src/components/Select/Select.vue"],"sourcesContent":["<template>\n <!-- Input Wrapper -->\n <div \n ref=\"fieldWrapper\"\n tabindex=\"0\"\n @click.stop=\"toggleMenu\" \n v-click-outside=\"clickedOutside\" \n :class=\"$attrs.class\" \n class=\"cursor-pointer field-wrapper flex-v-center flex-nowrap flex pos-relative\"\n >\n <!-- Label -->\n <span v-if=\"label\" class=\"t-transp mn-r-small\">{{label}}</span>\n \n <!-- Input -->\n <span>\n {{ optionsSelected ? (optionsSelected.name || optionsSelected[props.value] || optionsSelected) : placeholder }}\n </span>\n <!-- Dropdown menu -->\n <transition mode=\"out-in\" name=\"TransitionTranslateY\">\n <ul \n v-show=\"showMenu\" \n class=\"bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100\"\n style=\"min-width: max-content;\"\n >\n <li @click.stop=\"selectOption(option)\" v-for=\"option in optionsListed\" class=\"radius-thin hover:bg-light pd-thin text-box-trim\">\n <span v-if=\"option\" class=\"w-100\">\n {{ option.name || option[props.value] || option }}\n </span>\n </li>\n </ul>\n </transition>\n </div>\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<script setup>\nimport { ref, computed, watch, nextTick } from 'vue'\nimport clickOutside from '../FieldPhone/click-outside.js';\nlet vClickOutside = clickOutside\nconst emit = defineEmits([\n 'update:select', \n 'focus', \n 'blur'\n])\nconst props = defineProps({\n label: String,\n placeholder: { type: String, default: 'Please select an item' },\n select: [String, Object],\n property: String,\n value: String,\n options: { type: Array, default: () => [] },\n validation: Boolean,\n})\nconst showMenu = ref(false)\nconst fieldWrapper = ref(null)\nconst optionsSelected = ref(\n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select\n)\nconst optionsListed = computed(() => {\n return props.select \n ? props.options.filter(option => option !== props.select) \n : props.options\n})\nwatch(() => props.select, (newSelect) => {\n optionsSelected.value = \n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select;\n});\nconst toggleMenu = async () => {\n showMenu.value = !showMenu.value\n \n if (showMenu.value) {\n await nextTick()\n fieldWrapper.value?.focus()\n emit('focus')\n } else {\n emit('blur')\n }\n}\nfunction clickedOutside () {\n showMenu.value = false\n}\nconst selectOption = option => {\n optionsSelected.value = option\n \n toggleMenu()\n if (props.property) { \n emit('update:select', optionsSelected.value[props.property])\n } else {\n emit('update:select', optionsSelected.value)\n }\n}\nfunction findObjectByValue (value, property, objects) {\n for (const object of objects) {\n if (object[property] === value || object === value) {\n return object;\n }\n }\n return null;\n}\n</script>\n<style lang=\"scss\" scoped>\n li {\n list-style-type: none;\n }\n ul li {\n line-height: 2;\n }\n .field-wrapper:focus {\n outline: none;\n }\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,QAAI,gBAAgB;AACpB,UAAM,OAAO;AAKb,UAAM,QAAQ;AASd,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,kBAAkB;AAAA,MACtB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV;AACA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,SACX,MAAM,QAAQ,OAAO,YAAU,WAAW,MAAM,MAAM,IACtD,MAAM;AAAA,IACV,CAAC;AACD,UAAM,MAAM,MAAM,QAAQ,CAAC,cAAc;AACvC,sBAAgB,QAChB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV,CAAC;AACD,UAAM,aAAa,YAAY;AAC7B,eAAS,QAAQ,CAAC,SAAS;AAE3B,UAAI,SAAS,OAAO;AAClB,cAAM,SAAQ;AACd,qBAAa,OAAO,MAAK;AACzB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,iBAAkB;AACzB,eAAS,QAAQ;AAAA,IACnB;AACA,UAAM,eAAe,YAAU;AAC7B,sBAAgB,QAAQ;AAExB,iBAAU;AACV,UAAI,MAAM,UAAU;AAClB,aAAK,iBAAiB,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7D,OAAO;AACL,aAAK,iBAAiB,gBAAgB,KAAK;AAAA,MAC7C;AAAA,IACF;AACA,aAAS,kBAAmB,OAAO,UAAU,SAAS;AACpD,iBAAW,UAAU,SAAS;AAC5B,YAAI,OAAO,QAAQ,MAAM,SAAS,WAAW,OAAO;AAClD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, renderSlot, Transition, withCtx, withDirectives, vShow } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _sfc_main = {
4
4
  __name: "Spoiler",
5
5
  props: {
@@ -70,4 +70,4 @@ const _sfc_main = {
70
70
  export {
71
71
  _sfc_main as default
72
72
  };
73
- //# sourceMappingURL=Spoiler.vue.js.map
73
+ //# sourceMappingURL=Spoiler.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spoiler.vue2.js","sources":["../../../../../src/components/Spoiler/Spoiler.vue"],"sourcesContent":["<template>\n <div>\n <div @click=\"toggleSpoiler\" class=\"flex-v-center flex-nowrap flex\">\n <slot name=\"header\" :isOpen=\"showSpoiler\"></slot>\n </div>\n <transition\n name=\"collapse\"\n @enter=\"onEnter\"\n @after-enter=\"onAfterEnter\"\n @leave=\"onLeave\"\n >\n <div v-show=\"showSpoiler\" class=\"spoiler\" ref=\"spoilerContent\">\n <slot name=\"content\"></slot>\n </div>\n </transition>\n </div>\n</template>\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nconst props = defineProps({\n status: {\n type: Boolean,\n default: false\n }\n});\n\nconst showSpoiler = ref(false);\nconst spoilerContent = ref(null);\n\nonMounted(() => {\n if (props.status) {\n showSpoiler.value = props.status;\n }\n});\n\nconst toggleSpoiler = () => {\n showSpoiler.value = !showSpoiler.value;\n};\n\n// Анимация открытия\nconst onEnter = (el) => {\n el.style.height = '0';\n void el.offsetHeight; // force reflow\n el.style.height = el.scrollHeight + 'px';\n};\n\nconst onAfterEnter = (el) => {\n el.style.height = 'auto';\n};\n\n// Анимация закрытия\nconst onLeave = (el) => {\n el.style.height = el.scrollHeight + 'px';\n void el.offsetHeight; // force reflow\n el.style.height = '0';\n};\n\ndefineExpose({\n showSpoiler\n});\n</script>\n<style lang=\"scss\">\n.spoiler {\n overflow: hidden;\n transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;AAoBA,UAAM,QAAQ;AAOd,UAAM,cAAc,IAAI,KAAK;AAC7B,UAAM,iBAAiB,IAAI,IAAI;AAE/B,cAAU,MAAM;AACd,UAAI,MAAM,QAAQ;AAChB,oBAAY,QAAQ,MAAM;AAAA,MAC5B;AAAA,IACF,CAAC;AAED,UAAM,gBAAgB,MAAM;AAC1B,kBAAY,QAAQ,CAAC,YAAY;AAAA,IACnC;AAGA,UAAM,UAAU,CAAC,OAAO;AACtB,SAAG,MAAM,SAAS;AAClB,WAAK,GAAG;AACR,SAAG,MAAM,SAAS,GAAG,eAAe;AAAA,IACtC;AAEA,UAAM,eAAe,CAAC,OAAO;AAC3B,SAAG,MAAM,SAAS;AAAA,IACpB;AAGA,UAAM,UAAU,CAAC,OAAO;AACtB,SAAG,MAAM,SAAS,GAAG,eAAe;AACpC,WAAK,GAAG;AACR,SAAG,MAAM,SAAS;AAAA,IACpB;AAEA,aAAa;AAAA,MACX;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, watch, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, withModifiers, createVNode, toDisplayString } from "vue";
2
2
  import axios from "axios";
3
- import Loader from "../Loader/Loader.vue.js";
3
+ import Loader from "../Loader/Loader.vue2.js";
4
4
  import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
5
5
  import _sfc_main$2 from "../../modules/icons/navigation/IconDelete.vue.js";
6
6
  /* empty css */
@@ -1,6 +1,6 @@
1
1
  import { ref, createElementBlock, openBlock, withModifiers, createVNode, createElementVNode, Transition, withCtx, createBlock, createCommentVNode, toDisplayString } from "vue";
2
2
  import axios from "axios";
3
- import Loader from "../Loader/Loader.vue.js";
3
+ import Loader from "../Loader/Loader.vue2.js";
4
4
  import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
5
5
  import { useStore } from "../../modules/core/views/store/core.store.js";
6
6
  const _hoisted_1 = {
@@ -1,8 +1,8 @@
1
1
  import { ref, onServerPrefetch, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, createCommentVNode, unref, withCtx, toDisplayString, Fragment, renderList, normalizeClass, resolveDynamicComponent } from "vue";
2
2
  /* empty css */
3
3
  /* empty css */
4
- import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue.js";
5
- import _sfc_main$7 from "../../../../../components/Menu/Menu.vue.js";
4
+ import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue2.js";
5
+ import _sfc_main$7 from "../../../../../components/Menu/Menu.vue2.js";
6
6
  import _sfc_main$c from "../../../../../components/Menu/MenuItem.vue.js";
7
7
  import _sfc_main$3 from "../../../../organizations/components/elements/ButtonToggleMembership.vue.js";
8
8
  import _sfc_main$2 from "../../../../reports/components/sections/FormReport.vue.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, provide, resolveComponent, createBlock, openBlock, withCtx, createElementBlock, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
3
- import Loader from "../../../../../components/Loader/Loader.vue.js";
3
+ import Loader from "../../../../../components/Loader/Loader.vue2.js";
4
4
  import _sfc_main$2 from "./ProfileEditSidebar.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
6
6
  import { state } from "../../store/auth.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, unref, createBlock, normalizeClass, createTextVNode, withCtx, Transition, resolveDynamicComponent, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import Select from "../../../../components/Select/Select.vue2.js";
3
+ import Select from "../../../../components/Select/Select.vue.js";
4
4
  import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
5
5
  import _sfc_main$6 from "../../../organizations/components/blocks/CardOrganization.vue.js";
6
6
  import _sfc_main$1 from "../../../icons/entities/IconFeatured.vue.js";
@@ -1,6 +1,6 @@
1
1
  import { computed, ref, onServerPrefetch, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, Fragment, renderList, Transition, createBlock } from "vue";
2
2
  import { u as useHead } from "../../../../../../node_modules/.pnpm/@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
5
5
  import _sfc_main$2 from "../blocks/CardBlogpost.vue.js";
6
6
  import SkeletonBlogpost from "../../../icons/skeletons/SkeletonBlogpost.vue.js";
@@ -1 +1 @@
1
- {"version":3,"file":"core.app.js","sources":["../../../../../../../src/modules/core/views/classes/core.app.js"],"sourcesContent":["// client-factory.js - фабрика для создания клиентского приложения\nimport { nextTick, createApp as createVueApp, createSSRApp as createVueSSRApp } from 'vue';\nimport { createHead } from '@unhead/vue';\n\nexport function createUniversalApp({\n getConfig,\n getRouter,\n getLocales,\n getStore,\n getHooks = {}\n}) {\n // Lazy imports to avoid circular dependencies\n const getLayoutApp = () => import('../components/layouts/App.vue').then(m => m.default);\n const getModuleRegistry = () => import('./module.manager.js').then(m => m.moduleManager);\n const getWebsockets = () => import('./ws.manager.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // [LOADING 14] Starting initializeApp\n performance.mark('loading-14-start');\n console.log('[LOADING 14] Starting application initialization...');\n\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n\n // [LOADING 15] Loading core dependencies\n performance.mark('loading-15-start');\n console.log('[LOADING 15] Loading core dependencies via Promise.all...');\n\n const [layoutApp, moduleManager, wsManager, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n\n performance.mark('loading-15-end');\n performance.measure('loading-15', 'loading-15-start', 'loading-15-end');\n const measure15 = performance.getEntriesByName('loading-15')[0];\n console.log(`[LOADING 15] Core dependencies loaded in ${measure15?.duration?.toFixed(2)}ms`);\n \n // Core module is always loaded - no need to register in moduleManager\n\n // [LOADING 16] Registering modules in registry\n performance.mark('loading-16-start');\n console.log('[LOADING 16] Registering modules in registry...');\n\n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleManager.register(name, {\n loader: module.loader,\n routes: module.routes || [],\n priority: module.priority || 'normal',\n critical: module.critical || false,\n dependencies: module.dependencies || [],\n preload: module.preload || false\n });\n }\n });\n\n performance.mark('loading-16-end');\n performance.measure('loading-16', 'loading-16-start', 'loading-16-end');\n const measure16 = performance.getEntriesByName('loading-16')[0];\n console.log(`[LOADING 16] Modules registered in ${measure16?.duration?.toFixed(2)}ms`);\n \n // Основная функция создания приложения\n function createApp() {\n const store = getStore();\n const app = process.env.MOBILE_APP \n ? createVueApp(layoutApp, config) \n : createVueSSRApp(layoutApp, config);\n \n const meta = createHead();\n const i18n = getLocales();\n \n const context = {\n app,\n store,\n router: null,\n config,\n };\n \n // Создаем роутер с контекстом\n const router = getRouter(context);\n context.router = router;\n\n // Регистрируем заглушки для роутов, которые требуют другие модули\n // Когда Organizations/Backoffice/Auth загрузятся, они заменят эти заглушки\n const stubComponent = { template: '<router-view />' };\n\n router.addRoute('Home', {\n path: 'backoffice',\n name: 'Backoffice Root',\n children: [],\n component: stubComponent,\n meta: {\n sidebar_width_hidden: 'w-0',\n }\n });\n\n router.addRoute('Home', {\n path: 'organizations/:_id',\n name: 'OrganizationRoot',\n children: [],\n component: stubComponent\n });\n\n router.addRoute('Home', {\n path: 'users/:_id',\n name: 'User Profile Root',\n children: [],\n component: stubComponent\n });\n \n // No critical modules - everything loads on demand\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleManager.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleManager.initialized.has(m.name));\n \n if (modulesToLoad.length > 0) {\n // Логируем если это редирект с 404 (для отладки)\n if (to.redirectedFrom) {\n console.log('[Router] Loading modules for redirected path:', target.path, 'modules:', modulesToLoad.map(m => m.name));\n }\n\n // [LOADING 18] Loading modules for route\n performance.mark('loading-18-start');\n console.log(`[LOADING 18] Loading ${modulesToLoad.length} modules for route...`);\n\n // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\n\n performance.mark('loading-18-end');\n performance.measure('loading-18', 'loading-18-start', 'loading-18-end');\n const measure18 = performance.getEntriesByName('loading-18')[0];\n console.log(`[LOADING 18] Modules loaded for route in ${measure18?.duration?.toFixed(2)}ms`);\n\n // После загрузки модулей и регистрации их роутов,\n // возвращаем объект с оригинальным путем и replace: true\n // Это заставит роутер заново резолвить маршрут с новыми роутами\n return { path: target.fullPath, replace: true };\n }\n });\n }\n\n router.beforeResolve(async (to, from) => {\n store.core.state.loading = false;\n })\n \n // Error handler для lazy loaded chunks\n if (typeof window !== 'undefined') {\n window.addEventListener('error', (e) => {\n if (e.message && e.message.includes('Loading chunk')) {\n console.error('Chunk loading failed:', e);\n // Можно показать уведомление пользователю\n // или попытаться перезагрузить\n }\n });\n }\n \n // Инициализация в правильном порядке\n const initialize = async () => {\n // Хук ДО инициализации\n if (hooks.beforeInitialize) {\n await hooks.beforeInitialize(context);\n }\n // [LOADING 17] Initializing Core module\n performance.mark('loading-17-start');\n console.log('[LOADING 17] Initializing Core module...');\n\n // Core module must ALWAYS be initialized\n const ModuleCore = await import('../../core.client.js');\n await ModuleCore.default.initialize(app, store, router, config);\n\n performance.mark('loading-17-end');\n performance.measure('loading-17', 'loading-17-start', 'loading-17-end');\n const measure17 = performance.getEntriesByName('loading-17')[0];\n console.log(`[LOADING 17] Core module initialized in ${measure17?.duration?.toFixed(2)}ms`);\n\n // 2. WebSocket (отложим после гидратации, только если включен)\n const useWebsocket = config.globals?.websocket !== false; // по умолчанию false\n\n if (useWebsocket && typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n wsManager.initialize({\n wsUrl: process.env.WSS_URL || undefined,\n maxReconnectAttempts: 5,\n reconnectDelay: 3000,\n pingInterval: 30000,\n });\n });\n }\n\n // 3. Предзагрузка важных модулей в фоне\n if (typeof window !== 'undefined') {\n requestIdleCallback(() => {\n moduleManager.preloadModules(context);\n });\n }\n \n // 5. Подключаем Vue плагины\n app.use(router).use(i18n).use(meta);\n \n // 6. Монтируем приложение\n if (process.env.MOBILE_APP) {\n app.mount('#app');\n }\n\n // Хук ПОСЛЕ инициализации\n if (hooks.afterInitialize) {\n await hooks.afterInitialize(context);\n }\n\n // [LOADING 19] Application initialization completed\n performance.mark('loading-19-end');\n performance.measure('loading-19', 'loading-14-start', 'loading-19-end');\n const measure19 = performance.getEntriesByName('loading-19')[0];\n console.log(`[LOADING 19] Application initialization completed in ${measure19?.duration?.toFixed(2)}ms`);\n\n return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleManager,\n config,\n };\n };\n \n // Возвращаем промис для SSR\n if (!process.env.MOBILE_APP) {\n return initialize();\n }\n \n // Для SPA инициализируем сразу\n initialize();\n }\n \n // FOR SSR / SERVER ENTRY\n async function renderApp({ url, cookies, headers, languages, ssrContext }) {\n const { app, router, store, i18n, meta, moduleManager } = await createApp();\n\n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('../store/core.store.js');\n await setSSRStore(store);\n }\n\n\n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n\n // [LOADING 20] SSR renderApp starting and loading modules\n performance.mark('loading-20-start');\n console.log('[SSR-404] renderApp starting, url:', url);\n\n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleManager.getModulesForRoute(url);\n console.log('[SSR-404] required modules:', requiredModules.map(m => m.name));\n\n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n\n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\n\n performance.mark('loading-20-end');\n performance.measure('loading-20', 'loading-20-start', 'loading-20-end');\n const measure20 = performance.getEntriesByName('loading-20')[0];\n console.log(`[LOADING 20] SSR modules loaded in ${measure20?.duration?.toFixed(2)}ms`);\n \n // После загрузки модулей и регистрации роутов, выполняем навигацию\n console.log('[SSR-404] modules loaded, pushing url:', url);\n console.log('[SSR-404] available routes:', router.getRoutes().map(r => r.path));\n await router.push(url);\n await router.isReady();\n console.log('[SSR-404] router ready, currentRoute:', router.currentRoute.value.name, router.currentRoute.value.path);\n \n const result = await appRenderer.render({\n url,\n cookies,\n headers,\n createApp: () => ({ app, router, store, i18n, meta }),\n ssrContext\n });\n \n if (ssrContext?.modules) {\n result.usedModules = Array.from(ssrContext.modules);\n }\n \n // Передаем только модули текущего роута (без критических)\n result.loadedModules = currentRouteModules;\n\n // [LOADING 21] SSR render completed\n performance.mark('loading-21-end');\n performance.measure('loading-21', 'loading-20-start', 'loading-21-end');\n const measure21 = performance.getEntriesByName('loading-21')[0];\n console.log(`[LOADING 21] SSR render completed in ${measure21?.duration?.toFixed(2)}ms`);\n\n // Clean up for next SSR request\n if (typeof window === 'undefined') {\n moduleManager.initialized.clear();\n moduleManager.modules.clear();\n moduleManager.loadingPromises.clear();\n\n const { clearSSRStore } = await import('../store/core.store.js');\n await clearSSRStore();\n }\n\n return result;\n }\n \n // FOR SPA\n if (typeof window !== 'undefined' && process.env.MOBILE_APP) {\n createApp();\n }\n \n // FOR SSR / CLIENT ENTRY\n if (typeof window !== 'undefined' && !process.env.MOBILE_APP) {\n // Используем renderAndMountApp для правильной гидратации со state\n appRenderer.renderAndMountApp({ createApp, hooks }).then(({ app, router, store, moduleManager }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleManager });\n }\n \n // Модули уже загружены в renderAndMountApp, просто ставим маркер\n if (typeof window !== 'undefined') {\n window.performance.mark('client-ready');\n }\n }).catch(error => {\n console.error('Hydration failed:', error);\n });\n }\n \n return { createApp, renderApp };\n }\n \n // Возвращаем промис, который резолвится с функциями\n return initializeApp();\n}"],"names":["createApp","createVueApp","createVueSSRApp","moduleManager"],"mappings":"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"}
1
+ {"version":3,"file":"core.app.js","sources":["../../../../../../../src/modules/core/views/classes/core.app.js"],"sourcesContent":["// client-factory.js - фабрика для создания клиентского приложения\nimport { nextTick, createApp as createVueApp, createSSRApp as createVueSSRApp } from 'vue';\nimport { createHead } from '@unhead/vue';\n\nexport function createUniversalApp({\n getConfig,\n getRouter,\n getLocales,\n getStore,\n getHooks = {}\n}) {\n // Lazy imports to avoid circular dependencies\n const getLayoutApp = () => import('../components/layouts/App.vue').then(m => m.default);\n const getModuleRegistry = () => import('./module.manager.js').then(m => m.moduleManager);\n const getWebsockets = () => import('./ws.manager.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // [LOADING 14] Starting initializeApp\n performance.mark('loading-14-start');\n console.log('[LOADING 14] Starting application initialization...');\n\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n\n // [LOADING 15] Loading core dependencies\n performance.mark('loading-15-start');\n console.log('[LOADING 15] Loading core dependencies via Promise.all...');\n\n const [layoutApp, moduleManager, wsManager, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n\n performance.mark('loading-15-end');\n performance.measure('loading-15', 'loading-15-start', 'loading-15-end');\n const measure15 = performance.getEntriesByName('loading-15')[0];\n console.log(`[LOADING 15] Core dependencies loaded in ${measure15?.duration?.toFixed(2)}ms`);\n \n // Core module is always loaded - no need to register in moduleManager\n\n // [LOADING 16] Registering modules in registry\n performance.mark('loading-16-start');\n console.log('[LOADING 16] Registering modules in registry...');\n\n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleManager.register(name, {\n loader: module.loader,\n routes: module.routes || [],\n priority: module.priority || 'normal',\n critical: module.critical || false,\n dependencies: module.dependencies || [],\n preload: module.preload || false\n });\n }\n });\n\n performance.mark('loading-16-end');\n performance.measure('loading-16', 'loading-16-start', 'loading-16-end');\n const measure16 = performance.getEntriesByName('loading-16')[0];\n console.log(`[LOADING 16] Modules registered in ${measure16?.duration?.toFixed(2)}ms`);\n \n // Основная функция создания приложения\n function createApp() {\n const store = getStore();\n const app = process.env.MOBILE_APP \n ? createVueApp(layoutApp, config) \n : createVueSSRApp(layoutApp, config);\n \n const meta = createHead();\n const i18n = getLocales();\n \n const context = {\n app,\n store,\n router: null,\n config,\n };\n \n // Создаем роутер с контекстом\n const router = getRouter(context);\n context.router = router;\n\n // Регистрируем заглушки для роутов, которые требуют другие модули\n // Когда Organizations/Backoffice/Auth загрузятся, они заменят эти заглушки\n const stubComponent = { template: '<router-view />' };\n\n router.addRoute('Home', {\n path: 'backoffice',\n name: 'Backoffice Root',\n children: [],\n component: stubComponent,\n meta: {\n sidebar_width_hidden: 'w-0',\n }\n });\n\n router.addRoute('Home', {\n path: 'organizations/:_id',\n name: 'OrganizationRoot',\n children: [],\n component: stubComponent\n });\n\n router.addRoute('Home', {\n path: 'users/:_id',\n name: 'User Profile Root',\n children: [],\n component: stubComponent\n });\n \n // No critical modules - everything loads on demand\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleManager.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleManager.initialized.has(m.name));\n \n if (modulesToLoad.length > 0) {\n // Логируем если это редирект с 404 (для отладки)\n if (to.redirectedFrom) {\n console.log('[Router] Loading modules for redirected path:', target.path, 'modules:', modulesToLoad.map(m => m.name));\n }\n\n // [LOADING 18] Loading modules for route\n performance.mark('loading-18-start');\n console.log(`[LOADING 18] Loading ${modulesToLoad.length} modules for route...`);\n\n // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\n\n performance.mark('loading-18-end');\n performance.measure('loading-18', 'loading-18-start', 'loading-18-end');\n const measure18 = performance.getEntriesByName('loading-18')[0];\n console.log(`[LOADING 18] Modules loaded for route in ${measure18?.duration?.toFixed(2)}ms`);\n\n // После загрузки модулей и регистрации их роутов,\n // возвращаем объект с оригинальным путем и replace: true\n // Это заставит роутер заново резолвить маршрут с новыми роутами\n return { path: target.fullPath, replace: true };\n }\n });\n }\n\n router.beforeResolve(async (to, from) => {\n store.core.state.loading = false;\n })\n \n // Error handler для lazy loaded chunks\n if (typeof window !== 'undefined') {\n window.addEventListener('error', (e) => {\n if (e.message && e.message.includes('Loading chunk')) {\n console.error('Chunk loading failed:', e);\n // Можно показать уведомление пользователю\n // или попытаться перезагрузить\n }\n });\n }\n \n // Инициализация в правильном порядке\n const initialize = async () => {\n // Хук ДО инициализации\n if (hooks.beforeInitialize) {\n await hooks.beforeInitialize(context);\n }\n // [LOADING 17] Initializing Core module\n performance.mark('loading-17-start');\n console.log('[LOADING 17] Initializing Core module...');\n\n // Core module must ALWAYS be initialized\n const ModuleCore = await import('../../core.client.js');\n await ModuleCore.default.initialize(app, store, router, config);\n\n performance.mark('loading-17-end');\n performance.measure('loading-17', 'loading-17-start', 'loading-17-end');\n const measure17 = performance.getEntriesByName('loading-17')[0];\n console.log(`[LOADING 17] Core module initialized in ${measure17?.duration?.toFixed(2)}ms`);\n\n // 2. WebSocket (отложим после гидратации, только если включен)\n const useWebsocket = config.globals?.websocket !== false; // по умолчанию false\n\n if (useWebsocket && typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n wsManager.initialize({\n wsUrl: process.env.WSS_URL || undefined,\n maxReconnectAttempts: 5,\n reconnectDelay: 3000,\n pingInterval: 30000,\n });\n });\n }\n\n // 3. Предзагрузка важных модулей в фоне\n if (typeof window !== 'undefined') {\n requestIdleCallback(() => {\n moduleManager.preloadModules(context);\n });\n }\n \n // 5. Подключаем Vue плагины\n app.use(router).use(i18n).use(meta);\n \n // 6. Монтируем приложение\n if (process.env.MOBILE_APP) {\n app.mount('#app');\n }\n\n // Хук ПОСЛЕ инициализации\n if (hooks.afterInitialize) {\n await hooks.afterInitialize(context);\n }\n\n // [LOADING 19] Application initialization completed\n performance.mark('loading-19-end');\n performance.measure('loading-19', 'loading-14-start', 'loading-19-end');\n const measure19 = performance.getEntriesByName('loading-19')[0];\n console.log(`[LOADING 19] Application initialization completed in ${measure19?.duration?.toFixed(2)}ms`);\n\n return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleManager,\n config,\n };\n };\n \n // Возвращаем промис для SSR\n if (!process.env.MOBILE_APP) {\n return initialize();\n }\n \n // Для SPA инициализируем сразу\n initialize();\n }\n \n // FOR SSR / SERVER ENTRY\n async function renderApp({ url, cookies, headers, languages, ssrContext }) {\n const { app, router, store, i18n, meta, moduleManager } = await createApp();\n\n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('../store/core.store.js');\n await setSSRStore(store);\n }\n\n\n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n\n // [LOADING 20] SSR renderApp starting and loading modules\n performance.mark('loading-20-start');\n console.log('[SSR-404] renderApp starting, url:', url);\n\n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleManager.getModulesForRoute(url);\n console.log('[SSR-404] required modules:', requiredModules.map(m => m.name));\n\n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n\n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\n\n performance.mark('loading-20-end');\n performance.measure('loading-20', 'loading-20-start', 'loading-20-end');\n const measure20 = performance.getEntriesByName('loading-20')[0];\n console.log(`[LOADING 20] SSR modules loaded in ${measure20?.duration?.toFixed(2)}ms`);\n \n // После загрузки модулей и регистрации роутов, выполняем навигацию\n console.log('[SSR-404] modules loaded, pushing url:', url);\n console.log('[SSR-404] available routes:', router.getRoutes().map(r => r.path));\n await router.push(url);\n await router.isReady();\n console.log('[SSR-404] router ready, currentRoute:', router.currentRoute.value.name, router.currentRoute.value.path);\n \n const result = await appRenderer.render({\n url,\n cookies,\n headers,\n createApp: () => ({ app, router, store, i18n, meta }),\n ssrContext\n });\n \n if (ssrContext?.modules) {\n result.usedModules = Array.from(ssrContext.modules);\n }\n \n // Передаем только модули текущего роута (без критических)\n result.loadedModules = currentRouteModules;\n\n // [LOADING 21] SSR render completed\n performance.mark('loading-21-end');\n performance.measure('loading-21', 'loading-20-start', 'loading-21-end');\n const measure21 = performance.getEntriesByName('loading-21')[0];\n console.log(`[LOADING 21] SSR render completed in ${measure21?.duration?.toFixed(2)}ms`);\n\n // Clean up for next SSR request\n if (typeof window === 'undefined') {\n moduleManager.initialized.clear();\n moduleManager.modules.clear();\n moduleManager.loadingPromises.clear();\n\n const { clearSSRStore } = await import('../store/core.store.js');\n await clearSSRStore();\n }\n\n return result;\n }\n \n // FOR SPA\n if (typeof window !== 'undefined' && process.env.MOBILE_APP) {\n createApp();\n }\n \n // FOR SSR / CLIENT ENTRY\n if (typeof window !== 'undefined' && !process.env.MOBILE_APP) {\n // Используем renderAndMountApp для правильной гидратации со state\n appRenderer.renderAndMountApp({ createApp, hooks }).then(({ app, router, store, moduleManager }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleManager });\n }\n \n // Модули уже загружены в renderAndMountApp, просто ставим маркер\n if (typeof window !== 'undefined') {\n window.performance.mark('client-ready');\n }\n }).catch(error => {\n console.error('Hydration failed:', error);\n });\n }\n \n return { createApp, renderApp };\n }\n \n // Возвращаем промис, который резолвится с функциями\n return initializeApp();\n}"],"names":["createApp","createVueApp","createVueSSRApp","moduleManager"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createBlock, withModifiers, resolveDynamicComponent, toDisplayString, withCtx, createTextVNode, Fragment, renderList, normalizeClass } from "vue";
2
2
  import { useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../../components/Tooltip/Tooltip.vue2.js";
4
- import _sfc_main$3 from "../../../../../components/Dropdown/Dropdown.vue.js";
4
+ import _sfc_main$3 from "../../../../../components/Dropdown/Dropdown.vue2.js";
5
5
  import PlaceholderUserpic from "../../../../icons/placeholders/PlaceholderUserpic.vue.js";
6
6
  import PlaceholderOrganizationPic from "../../../../icons/placeholders/PlaceholderOrganizationPic.vue.js";
7
7
  import _sfc_main$4 from "../../../../icons/navigation/IconEllipsis.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, watch, onMounted, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode, toDisplayString, unref } from "vue";
2
2
  import { useI18n } from "vue-i18n";
3
3
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
4
- import Loader from "../../../../../components/Loader/Loader.vue.js";
4
+ import Loader from "../../../../../components/Loader/Loader.vue2.js";
5
5
  import Calendar from "../../../../../components/Calendar/Calendar.vue2.js";
6
6
  import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
7
7
  import _sfc_main$4 from "../../../../icons/actions/IconShopcartAdd.vue.js";
@@ -7,7 +7,7 @@ import _sfc_main$2 from "../../../../../components/Status/Snack.vue.js";
7
7
  import _sfc_main$3 from "../../../../../components/Popup/Popup.vue.js";
8
8
  import "vue-i18n";
9
9
  /* empty css */
10
- import Loader from "../../../../../components/Loader/Loader.vue.js";
10
+ import Loader from "../../../../../components/Loader/Loader.vue2.js";
11
11
  /* empty css */
12
12
  /* empty css */
13
13
  import _sfc_main$4 from "../partials/LocationSelection.vue.js";
@@ -6,7 +6,7 @@ import { actions, getters } from "../../../../orders/store/shopcart.js";
6
6
  import { state } from "../../../../auth/views/store/auth.js";
7
7
  import NotificationBadge from "../../../../notifications/components/elements/NotificationBadge.vue.js";
8
8
  import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
9
- import Select from "../../../../../components/Select/Select.vue2.js";
9
+ import Select from "../../../../../components/Select/Select.vue.js";
10
10
  import _sfc_main$4 from "../../../../icons/entities/IconShopcart.vue.js";
11
11
  import _sfc_main$5 from "../../../../icons/entities/IconProfile.vue.js";
12
12
  import _sfc_main$3 from "../../../../icons/navigation/IconSearch.vue.js";
@@ -3,8 +3,8 @@ import { useRouter, useRoute } from "vue-router";
3
3
  import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
4
4
  import { useStore } from "../../store/core.store.js";
5
5
  import { state } from "../../../../auth/views/store/auth.js";
6
- import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue.js";
7
- /* empty css */
6
+ import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue2.js";
7
+ /* empty css */
8
8
  /* empty css */
9
9
  import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
10
10
  const _hoisted_1 = ["onClick"];
@@ -10,7 +10,7 @@ import _sfc_main$2 from "../../../../icons/entities/IconCalendar.vue.js";
10
10
  import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
11
11
  import _sfc_main$6 from "./filters/FilterOptions.vue.js";
12
12
  import _sfc_main$1 from "../../../../icons/navigation/IconFilter.vue.js";
13
- /* empty css */
13
+ /* empty css */
14
14
  const _hoisted_1 = { class: "flex o-x-scroll scroll-hide ws-nowrap gap-thin" };
15
15
  const _hoisted_2 = { key: 0 };
16
16
  const _hoisted_3 = ["onClick"];
@@ -270,4 +270,4 @@ const Filters = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-02
270
270
  export {
271
271
  Filters as default
272
272
  };
273
- //# sourceMappingURL=Filters.vue.js.map
273
+ //# sourceMappingURL=Filters.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.vue2.js","sources":["../../../../../../../../src/modules/core/views/components/sections/Filters.vue"],"sourcesContent":["<template>\n <div class=\"flex o-x-scroll scroll-hide ws-nowrap gap-thin\">\n <!-- All Filters Button -->\n <button\n @click=\"showAllFilters = true\"\n class=\"pd-small radius-medium bg-light flex-v-center flex gap-micro cursor-pointer\"\n :class=\"{ 'bg-main': activeFiltersCount > 0 }\"\n >\n <IconFilter class=\"i-regular\" />\n <span class=\"h-1r\"></span>\n <span v-if=\"activeFiltersCount\">{{ activeFiltersCount }}</span>\n </button>\n\n <!-- Individual Filter Buttons -->\n <button\n v-for=\"filter in filters\"\n :key=\"filter.value\"\n @click=\"openFilter(filter.value)\"\n class=\"pd-small radius-medium bg-light cursor-pointer flex-v-center flex gap-micro\"\n :class=\"{ 'selected bg-main': isFilterActive(filter) }\"\n >\n <IconCalendar v-if=\"filter.type === 'date'\" class=\"mn-r-micro i-regular\" />\n <span class=\"ws-nowrap\">{{ filter.type === 'date' && getFilterValue(filter) ? formatFilterValue(filter) : filter.title }}</span>\n <span v-if=\"getFilterValue(filter) && filter.type !== 'date'\" class=\"mn-l-micro\">\n {{ formatFilterValue(filter) }}\n </span>\n </button>\n\n <!-- All Filters Popup -->\n <Popup\n :isPopupOpen=\"showAllFilters\"\n @close-popup=\"closeAllFilters\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"w-min-20r bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <FiltersGroup\n :filters=\"filters\"\n v-model:selected=\"tempSelected\"\n :immediate=\"false\"\n :showHeader=\"true\"\n :showApplyButton=\"true\"\n :showResetButton=\"true\"\n @update:selected=\"applyAllFilters\"\n />\n </Popup>\n\n <!-- Individual Filter Popups -->\n <Popup\n v-for=\"filter in filters\"\n :key=\"`popup-${filter.value}`\"\n :isPopupOpen=\"individualPopups[filter.value]\"\n @close-popup=\"cancelFilter(filter.value)\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <h4 class=\"mn-b-medium\">{{ filter.title }}</h4>\n\n <!-- Checkbox Filter -->\n <FilterCheckbox\n v-if=\"filter.type === 'checkbox'\"\n v-model=\"tempSelected[filter.value]\"\n :options=\"filter.options\"\n />\n\n <!-- Range Filter -->\n <FilterRange\n v-else-if=\"filter.type === 'range'\"\n v-model=\"tempSelected[filter.value]\"\n :minPlaceholder=\"filter.minPlaceholder || 'Min'\"\n :maxPlaceholder=\"filter.maxPlaceholder || 'Max'\"\n :label=\"filter.label\"\n />\n\n <!-- Date Filter -->\n <div v-else-if=\"filter.type === 'date'\">\n <div class=\"mn-t-small\">\n <Calendar\n v-model:date=\"tempSelected[filter.value]\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"bg-light radius-small\"\n />\n </div>\n </div>\n\n <!-- Radio/Options Filter -->\n <FilterOptions\n v-else-if=\"filter.type === 'radio'\"\n v-model=\"tempSelected[filter.value]\"\n :options=\"filter.options\"\n />\n\n <div class=\"flex gap-thin mn-t-medium\">\n <button\n @click=\"cancelFilter(filter.value)\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button\n @click=\"applyFilter(filter.value)\"\n class=\"bg-main w-100 button flex-child-full\"\n >\n Apply\n </button>\n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, reactive, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport FiltersGroup from './filters/FiltersGroup.vue'\nimport FilterCheckbox from './filters/FilterCheckbox.vue'\nimport FilterRange from './filters/FilterRange.vue'\nimport FilterDateRange from './filters/FilterDateRange.vue'\nimport FilterOptions from './filters/FilterOptions.vue'\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue'\nimport IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\nconst filters = defineModel('filters', {\n type: Array,\n required: true\n})\n\nconst selected = defineModel('selected', {\n type: Object,\n default: () => ({})\n})\n\nconst emit = defineEmits(['select'])\n\nconst { formatDate, returnCurrency } = useGlobalMixins()\n\n// State\nconst showAllFilters = ref(false)\nconst individualPopups = reactive({})\nconst tempSelected = reactive({})\nconst tempDateRange = ref(null)\n\n// Initialize popups and temp values\nwatch(filters, (newFilters) => {\n newFilters.forEach(filter => {\n individualPopups[filter.value] = false\n \n if (!tempSelected[filter.value]) {\n if (filter.type === 'checkbox') {\n tempSelected[filter.value] = [...(selected.value[filter.value] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filter.value] = { ...(selected.value[filter.value] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filter.value] = selected.value[filter.value] || null\n } else {\n tempSelected[filter.value] = selected.value[filter.value] || null\n }\n }\n })\n}, { immediate: true, deep: true })\n\n// Sync selected to tempSelected\nwatch(selected, (newSelected) => {\n Object.keys(newSelected).forEach(key => {\n const filter = filters.value.find(f => f.value === key)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[key] = [...(newSelected[key] || [])]\n } else if (filter.type === 'range') {\n tempSelected[key] = { ...(newSelected[key] || { min: '', max: '' }) }\n } else {\n tempSelected[key] = newSelected[key]\n }\n }\n })\n}, { deep: true })\n\n// Computed\nconst activeFiltersCount = computed(() => {\n return Object.entries(selected.value).filter(([key, value]) => {\n if (Array.isArray(value)) return value.length > 0\n if (typeof value === 'object' && value !== null) {\n return value.min || value.max\n }\n return value !== null && value !== undefined\n }).length\n})\n\n// Methods\nconst openFilter = (filterValue) => {\n individualPopups[filterValue] = true\n}\n\nconst isFilterActive = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return false\n if (Array.isArray(value)) return value.length > 0\n if (filter.type === 'range') return value.min || value.max\n return true\n}\n\nconst getFilterValue = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return false\n \n if (filter.type === 'range') {\n return value.min || value.max\n }\n \n if (filter.type === 'date') {\n return value && value.start && value.end\n }\n \n if (Array.isArray(value)) {\n return value.length > 0\n }\n \n return value\n}\n\nconst formatFilterValue = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return ''\n \n if (Array.isArray(value)) {\n return `(${value.length})`\n }\n \n if (filter.type === 'range') {\n if (!value.min && !value.max) return ''\n return `${value.min || '0'}-${value.max || '∞'}`\n }\n \n if (filter.type === 'date') {\n if (!value || !value.start || !value.end) return ''\n return `${formatDate(value.start, { dayMonth: true, language: 'en' })} - ${formatDate(value.end, { dayMonth: true, language: 'en' })}`\n }\n \n if (filter.type === 'radio') {\n const option = filter.options.find(o => o.value === value)\n return option ? `(${option.label})` : ''\n }\n \n return ''\n}\n\nconst applyFilter = (filterValue) => {\n selected.value[filterValue] = tempSelected[filterValue]\n individualPopups[filterValue] = false\n emit('select', { filter: filterValue, value: tempSelected[filterValue] })\n}\n\nconst cancelFilter = (filterValue) => {\n const filter = filters.value.find(f => f.value === filterValue)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[filterValue] = [...(selected.value[filterValue] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filterValue] = { ...(selected.value[filterValue] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filterValue] = selected.value[filterValue] || null\n } else {\n tempSelected[filterValue] = selected.value[filterValue] || null\n }\n }\n individualPopups[filterValue] = false\n}\n\nconst applyAllFilters = (newValues) => {\n Object.entries(newValues).forEach(([key, value]) => {\n if (selected.value[key] !== value) {\n selected.value[key] = value\n emit('select', { filter: key, value })\n }\n })\n showAllFilters.value = false\n}\n\nconst closeAllFilters = () => {\n showAllFilters.value = false\n}\n</script>\n\n<style scoped>\n.filters-content {\n max-height: 60vh;\n overflow-y: auto;\n}\n</style>"],"names":["_useModel"],"mappings":"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"}
@@ -12,8 +12,8 @@ import _sfc_main$9 from "../../../../components/Checkbox/Checkbox.vue.js";
12
12
  import "axios";
13
13
  /* empty css */
14
14
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
15
- /* empty css */
16
- /* empty css */
15
+ /* empty css */
16
+ /* empty css */
17
17
  import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
18
18
  import _sfc_main$a from "../../../../components/Button/Button.vue.js";
19
19
  import _sfc_main$7 from "../../../core/views/components/blocks/Card.vue.js";
@@ -4,7 +4,7 @@ import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
4
4
  import _sfc_main$3 from "../../../../components/Popup/Popup.vue.js";
5
5
  import Field from "../../../../components/Field/Field.vue.js";
6
6
  import _sfc_main$6 from "../../../../components/Button/Button.vue.js";
7
- import _sfc_main$8 from "../../../../components/Dropdown/Dropdown.vue.js";
7
+ import _sfc_main$8 from "../../../../components/Dropdown/Dropdown.vue2.js";
8
8
  import _sfc_main$1 from "../elements/ButtonCheck.vue.js";
9
9
  import _sfc_main$5 from "../../../icons/navigation/IconDelete.vue.js";
10
10
  import _sfc_main$4 from "../../../icons/navigation/IconAdd.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, createBlock, Fragment, renderList, unref, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _sfc_main$2 from "../../../constructor/components/sections/Viewer.vue.js";
4
4
  import _sfc_main$4 from "../../../../components/Countdown/Countdown.vue.js";
5
5
  import HeroEvent from "../sections/HeroEvent.vue.js";
@@ -11,12 +11,12 @@ import { useRoute } from "vue-router";
11
11
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
12
12
  import SkeletonEvent from "../../../icons/skeletons/SkeletonEvent.vue.js";
13
13
  /* empty css */
14
- /* empty css */
14
+ /* empty css */
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
18
  /* empty css */
19
- /* empty css */
19
+ /* empty css */
20
20
  /* empty css */
21
21
  /* empty css */
22
22
  /* empty css */
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, createCommentVNode, Transition, Fragment, renderList } from "vue";
2
- import Loader from "../../../../components/Loader/Loader.vue.js";
2
+ import Loader from "../../../../components/Loader/Loader.vue2.js";
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEvent.vue.js";
5
5
  import { read } from "../../store/events.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, Fragment, renderList, normalizeClass } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEventShort.vue.js";
5
5
  import SkeletonEventShort from "../../../icons/skeletons/SkeletonEventShort.vue.js";