@ozdao/martyrs 0.2.603 → 0.2.604

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 (163) hide show
  1. package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +2 -2
  2. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
  3. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  4. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  5. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  6. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  7. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +1 -1
  8. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  9. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  10. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -0
  11. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  12. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  13. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  14. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  15. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  16. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +3 -3
  17. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  18. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  19. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  20. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  21. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  22. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  23. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +2 -2
  24. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
  25. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  26. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +1 -1
  27. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  28. package/dist/martyrs/src/modules/core/views/store/core.store.js +1 -1
  29. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  30. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  31. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  32. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  33. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  34. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +2 -2
  35. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +2 -2
  36. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +2 -2
  37. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +2 -2
  38. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js +2 -2
  39. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js +2 -2
  40. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js +2 -2
  41. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +2 -2
  42. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js +2 -2
  43. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js +2 -2
  44. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js +2 -2
  45. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js +2 -2
  46. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js +2 -2
  47. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js +2 -2
  48. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js +2 -2
  49. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js +2 -2
  50. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js +2 -2
  51. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  52. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  53. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  54. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  55. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  56. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  57. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  58. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  59. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +1 -1
  60. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  61. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  62. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  63. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  64. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  65. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  66. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  67. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  68. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  69. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  70. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
  71. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  72. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  73. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -2
  74. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  75. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  76. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  77. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  78. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  79. package/dist/martyrs.es101.js +39 -0
  80. package/dist/martyrs.es102.js +24 -32
  81. package/dist/martyrs.es104.js +27 -0
  82. package/dist/martyrs.es105.js +6 -25
  83. package/dist/martyrs.es106.js +6 -5
  84. package/dist/martyrs.es107.js +76 -6
  85. package/dist/martyrs.es108.js +5 -77
  86. package/dist/martyrs.es109.js +119 -5
  87. package/dist/martyrs.es112.js +2 -119
  88. package/dist/martyrs.es113.js +169 -0
  89. package/dist/martyrs.es114.js +460 -0
  90. package/dist/martyrs.es115.js +40 -2
  91. package/dist/martyrs.es116.js +9 -22
  92. package/dist/martyrs.es117.js +49 -4
  93. package/dist/martyrs.es118.js +12 -8
  94. package/dist/martyrs.es119.js +41 -163
  95. package/dist/martyrs.es120.js +4 -457
  96. package/dist/martyrs.es121.js +125 -36
  97. package/dist/martyrs.es122.js +100 -9
  98. package/dist/martyrs.es123.js +76 -39
  99. package/dist/martyrs.es124.js +36 -10
  100. package/dist/martyrs.es125.js +10 -43
  101. package/dist/martyrs.es126.js +39 -4
  102. package/dist/martyrs.es127.js +8 -128
  103. package/dist/martyrs.es128.js +22 -100
  104. package/dist/martyrs.es129.js +4 -86
  105. package/dist/martyrs.es130.js +8 -38
  106. package/dist/martyrs.es131.js +115 -10
  107. package/dist/martyrs.es132.js +16 -38
  108. package/dist/martyrs.es133.js +15 -8
  109. package/dist/martyrs.es135.js +28 -112
  110. package/dist/martyrs.es136.js +9 -17
  111. package/dist/martyrs.es137.js +19 -14
  112. package/dist/martyrs.es138.js +9 -32
  113. package/dist/martyrs.es139.js +8 -9
  114. package/dist/martyrs.es140.js +43 -19
  115. package/dist/martyrs.es141.js +480 -9
  116. package/dist/martyrs.es142.js +5 -8
  117. package/dist/martyrs.es143.js +2 -45
  118. package/dist/martyrs.es144.js +29 -479
  119. package/dist/martyrs.es145.js +11 -5
  120. package/dist/martyrs.es146.js +17 -2
  121. package/dist/martyrs.es147.js +19 -11
  122. package/dist/martyrs.es148.js +27 -29
  123. package/dist/martyrs.es149.js +20 -16
  124. package/dist/martyrs.es54.js +2 -2
  125. package/dist/martyrs.es71.js +2 -2
  126. package/dist/martyrs.es74.js +1 -1
  127. package/dist/martyrs.es75.js +1 -1
  128. package/dist/martyrs.es76.js +6 -6
  129. package/dist/martyrs.es77.js +1 -1
  130. package/dist/martyrs.es78.js +1 -1
  131. package/dist/martyrs.es91.js +1 -1
  132. package/dist/martyrs.es92.js +33 -5
  133. package/dist/martyrs.es94.js +41 -0
  134. package/dist/martyrs.es95.js +46 -28
  135. package/dist/martyrs.es96.js +116 -52
  136. package/dist/martyrs.es97.js +33 -113
  137. package/dist/martyrs.es98.js +76 -33
  138. package/dist/martyrs.es99.js +24 -77
  139. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  140. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +1 -1
  141. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  142. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  143. package/package.json +1 -1
  144. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  145. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  146. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js +0 -8
  147. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js.map +0 -1
  148. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js +0 -73
  149. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js.map +0 -1
  150. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  151. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  152. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  153. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  154. package/dist/martyrs.es100.js +0 -33
  155. package/dist/martyrs.es103.js +0 -31
  156. package/dist/martyrs.es110.js +0 -54
  157. package/dist/martyrs.es111.js +0 -327
  158. package/dist/martyrs.es150.js +0 -22
  159. package/dist/martyrs.es151.js +0 -31
  160. package/dist/martyrs.es152.js +0 -23
  161. package/dist/martyrs.es93.js +0 -35
  162. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  163. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
@@ -4,14 +4,14 @@ import { sprintsActions } from "../../store/sprints.js";
4
4
  import _sfc_main$1 from "../sections/FormSprintDetails.vue.js";
5
5
  /* empty css */
6
6
  /* empty css */
7
- /* empty css */
7
+ /* empty css */
8
8
  /* empty css */
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
- /* empty css */
14
+ /* empty css */
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
@@ -16,14 +16,14 @@ import _sfc_main$2 from "../../../../icons/navigation/IconCheckmark.vue.js";
16
16
  import _sfc_main$7 from "../../../../icons/navigation/IconCross.vue.js";
17
17
  import IconSend from "../../../../icons/navigation/IconSend.vue.js";
18
18
  /* empty css */
19
- /* empty css */
19
+ /* empty css */
20
20
  /* empty css */
21
21
  /* empty css */
22
22
  /* empty css */
23
23
  /* empty css */
24
24
  /* empty css */
25
25
  /* empty css */
26
- /* empty css */
26
+ /* empty css */
27
27
  /* empty css */
28
28
  /* empty css */
29
29
  /* empty css */
@@ -5,14 +5,14 @@ import _sfc_main$2 from "../sections/FormTaskDetails.vue.js";
5
5
  /* empty css */
6
6
  import _sfc_main$1 from "../../../../icons/navigation/IconArrow.vue.js";
7
7
  /* empty css */
8
- /* empty css */
8
+ /* empty css */
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
14
  /* empty css */
15
- /* empty css */
15
+ /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
18
  /* empty css */
@@ -10,14 +10,14 @@ import _sfc_main$4 from "../../../../icons/actions/IconShow.vue.js";
10
10
  import _sfc_main$1 from "../../../../icons/navigation/IconPlus.vue.js";
11
11
  import IconSend from "../../../../icons/navigation/IconSend.vue.js";
12
12
  /* empty css */
13
- /* empty css */
13
+ /* empty css */
14
14
  /* empty css */
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
18
  /* empty css */
19
19
  /* empty css */
20
- /* empty css */
20
+ /* empty css */
21
21
  /* empty css */
22
22
  /* empty css */
23
23
  /* empty css */
@@ -10,14 +10,14 @@ import { useGlobalMixins } from "../../../../core/views/mixins/mixins.js";
10
10
  import _sfc_main$3 from "../../../../icons/entities/IconCalendar.vue.js";
11
11
  import _sfc_main$1 from "../../../../icons/navigation/IconArrow.vue.js";
12
12
  /* empty css */
13
- /* empty css */
13
+ /* empty css */
14
14
  /* empty css */
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
18
  /* empty css */
19
19
  /* empty css */
20
- /* empty css */
20
+ /* empty css */
21
21
  /* empty css */
22
22
  /* empty css */
23
23
  /* empty css */
@@ -5,14 +5,14 @@ import _sfc_main$2 from "../sections/FormVotingDetails.vue.js";
5
5
  /* empty css */
6
6
  import _sfc_main$1 from "../../../../icons/navigation/IconArrow.vue.js";
7
7
  /* empty css */
8
- /* empty css */
8
+ /* empty css */
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
14
  /* empty css */
15
- /* empty css */
15
+ /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
18
  /* empty css */
@@ -4,14 +4,14 @@ import _sfc_main$1 from "./TaskStatusBadge.vue.js";
4
4
  /* empty css */
5
5
  import _sfc_main$2 from "../../../../icons/actions/IconOpenLink.vue.js";
6
6
  /* empty css */
7
- /* empty css */
7
+ /* empty css */
8
8
  /* empty css */
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
- /* empty css */
14
+ /* empty css */
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
@@ -6,14 +6,14 @@ import _sfc_main$2 from "../../../../icons/navigation/IconCross.vue.js";
6
6
  import IconSend from "../../../../icons/navigation/IconSend.vue.js";
7
7
  import "vue-router";
8
8
  /* empty css */
9
- /* empty css */
9
+ /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
14
  /* empty css */
15
15
  /* empty css */
16
- /* empty css */
16
+ /* empty css */
17
17
  /* empty css */
18
18
  /* empty css */
19
19
  /* empty css */
@@ -2,7 +2,7 @@ import { ref, watch, createElementBlock, openBlock, createElementVNode, unref, c
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useI18n } from "vue-i18n";
4
4
  import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
5
- import Filters from "../../../../core/views/components/sections/Filters.vue.js";
5
+ import Filters from "../../../../core/views/components/sections/Filters.vue2.js";
6
6
  import _sfc_main$1 from "../../../../core/views/components/sections/filters/FiltersGroup.vue.js";
7
7
  import Field from "../../../../../components/Field/Field.vue.js";
8
8
  import _sfc_main$3 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createTextVNode, Transition, withCtx, Fragment, renderList, createBlock, createCommentVNode, normalizeClass, toDisplayString } from "vue";
2
- import Loader from "../../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../../components/Loader/Loader.vue.js";
3
3
  import { useRouter } from "vue-router";
4
4
  import { useI18n } from "vue-i18n";
5
5
  import { actions as actions$1 } from "../../../../products/store/categories.js";
@@ -6,7 +6,7 @@ import Button from "../../../../components/Button/Button.vue2.js";
6
6
  import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
7
7
  import Select from "../../../../components/Select/Select.vue.js";
8
8
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
9
- /* empty css */
9
+ /* empty css */
10
10
  import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
11
11
  import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
12
12
  import { actions as actions$1 } from "../../store/artists.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createVNode, createElementVNode, toDisplayString, Fragment, renderList, createBlock, withCtx, createTextVNode } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  /* empty css */
4
- import Loader from "../../../../components/Loader/Loader.vue2.js";
4
+ import Loader from "../../../../components/Loader/Loader.vue.js";
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
6
  /* empty css */
7
7
  import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, onMounted, createElementBlock, openBlock, createCommentVNode, createElementVNode, createVNode, unref, withCtx, createTextVNode, normalizeStyle, normalizeClass, toDisplayString, Fragment, renderList, createBlock } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
3
  import Button from "../../../../components/Button/Button.vue2.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$1 from "../cards/TrackListCard.vue.js";
6
6
  import { state, actions } from "../../store/artists.js";
7
7
  import { state as state$1 } from "../../../auth/views/store/auth.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createVNode, createElementVNode, toDisplayString, Fragment, renderList, createBlock, withCtx, createTextVNode } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import Button from "../../../../components/Button/Button.vue2.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
6
  /* empty css */
7
7
  import _sfc_main$7 from "../../../../components/Feed/Feed.vue.js";
@@ -6,7 +6,7 @@ import AlbumCard from "../cards/AlbumCard.vue.js";
6
6
  import PlaylistCard from "../cards/PlaylistCard.vue.js";
7
7
  import ArtistCard from "../cards/ArtistCard.vue.js";
8
8
  import Button from "../../../../components/Button/Button.vue2.js";
9
- import Loader from "../../../../components/Loader/Loader.vue2.js";
9
+ import Loader from "../../../../components/Loader/Loader.vue.js";
10
10
  import { state, actions } from "../../store/search.js";
11
11
  /* empty css */
12
12
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
@@ -1,7 +1,7 @@
1
1
  import { computed, ref, onMounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createBlock, createVNode, createElementVNode, withCtx, toDisplayString, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import Button from "../../../../components/Button/Button.vue2.js";
4
- import Loader from "../../../../components/Loader/Loader.vue2.js";
4
+ import Loader from "../../../../components/Loader/Loader.vue.js";
5
5
  import Media from "../../../../components/Media/Media.vue.js";
6
6
  /* empty css */
7
7
  import _sfc_main$b from "../../../../components/Popup/Popup.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { inject, reactive, ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, normalizeClass, toDisplayString, Fragment, unref, renderList, createBlock, withCtx, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Checkbox/Checkbox.vue.js";
3
3
  import Button from "../../../../components/Button/Button.vue2.js";
4
- import Loader from "../../../../components/Loader/Loader.vue2.js";
4
+ import Loader from "../../../../components/Loader/Loader.vue.js";
5
5
  const _hoisted_1 = { class: "bg-light radius-small pd-small mn-b-small" };
6
6
  const _hoisted_2 = { class: "flex flex-v-center flex-between" };
7
7
  const _hoisted_3 = { class: "flex flex-v-center gap-small" };
@@ -3,7 +3,7 @@ import addRoutes from "../core/views/router/addRoutes.js";
3
3
  import { getRoutes } from "./router/notifications.router.js";
4
4
  import * as notifications_store from "./store/notifications.store.js";
5
5
  import { wsManager } from "../core/views/classes/ws.manager.js";
6
- import { Preferences } from "../../../node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js";
6
+ import { Preferences } from "@capacitor/preferences";
7
7
  import _sfc_main from "./components/layouts/NotificationsLayout.vue.js";
8
8
  import _sfc_main$2 from "./components/sections/NotificationPreferences.vue.js";
9
9
  import _sfc_main$3 from "./components/sections/NotificationsList.vue.js";
@@ -30,7 +30,7 @@ class CapacitorPushHandler {
30
30
  return false;
31
31
  }
32
32
  try {
33
- const { Capacitor } = await import("../../../node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js");
33
+ const { Capacitor } = await import("@capacitor/core");
34
34
  const { PushNotifications } = await import("@capacitor/push-notifications");
35
35
  const { Device } = await import("@capacitor/device");
36
36
  this.capacitor = Capacitor;
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.client.js","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["// [LOADING 37] Notifications module import started\nperformance.mark('loading-37-start');\nconsole.log('[LOADING 37] Notifications module import started...');\n\nimport { toRefs, watch } from 'vue';\n// Router import\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './router/notifications.router.js';\n// Store\nimport * as storeNotifications from './store/notifications.store.js';\n// Global WebSocket import\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n// Capacitor Preferences\nimport { Preferences } from '@capacitor/preferences';\n// Layouts\nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue';\n// Sections\nimport NotificationPreferences from './components/sections/NotificationPreferences.vue';\nimport NotificationsList from './components/sections/NotificationsList.vue';\n// Pages\nimport Notifications from './components/pages/Notifications.vue';\n// Components\nimport NotificationItem from './components/blocks/NotificationItem.vue';\nimport NotificationBadge from './components/elements/NotificationBadge.vue';\n\nperformance.mark('loading-37-imports-end');\nconst importsTime = performance.measure('loading-37-imports', 'loading-37-start', 'loading-37-imports-end');\nconsole.log(`[LOADING 37] All imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n/**\n * Capacitor Push Notification handler\n */\nclass CapacitorPushHandler {\n constructor(store) {\n this.store = store;\n this.pushNotifications = null;\n this.device = null;\n this.isInitialized = false;\n }\n\n /**\n * Initialize Capacitor plugins\n */\n async initialize() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n try {\n // Dynamic imports to prevent errors in web environment\n const { Capacitor } = await import('@capacitor/core');\n const { PushNotifications } = await import('@capacitor/push-notifications');\n const { Device } = await import('@capacitor/device');\n\n this.capacitor = Capacitor;\n this.pushNotifications = PushNotifications;\n this.device = Device;\n\n // Only proceed if running on a native platform\n if (!this.capacitor.isNativePlatform()) {\n return false;\n }\n\n this.isInitialized = true;\n return true;\n } catch (error) {\n console.error('Error importing Capacitor plugins:', error);\n return false;\n }\n }\n\n /**\n * Request permission and register for push notifications\n */\n async requestPermissions() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!this.isInitialized) {\n const initialized = await this.initialize();\n if (!initialized) return false;\n }\n\n try {\n // Request permission\n const permissionResult = await this.pushNotifications.requestPermissions();\n if (permissionResult.receive !== 'granted') {\n console.log('Push notification permission denied');\n return false;\n }\n\n // Set up event listeners\n this._setupListeners();\n\n // Register with Apple/Google\n await this.pushNotifications.register();\n return true;\n } catch (error) {\n console.error('Error requesting push notification permissions:', error);\n return false;\n }\n }\n\n /**\n * Setup push notification event listeners\n */\n _setupListeners() {\n // Registration event\n this.pushNotifications.addListener('registration', this._handleRegistration.bind(this));\n\n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived', this._handleNotificationReceived.bind(this));\n\n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed', this._handleNotificationAction.bind(this));\n }\n\n /**\n * Handle registration token received\n */\n async _handleRegistration(token) {\n try {\n // Get device info\n const deviceInfo = await this.device.getInfo();\n const deviceId = await this.device.getId();\n\n // Prepare device data\n const deviceData = {\n deviceId: deviceId.uuid,\n deviceType: deviceInfo.platform.toLowerCase(),\n deviceToken: token.value,\n };\n\n // Store device info for re-registration after login\n try {\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId.uuid\n });\n await Preferences.set({\n key: 'notifications_device_token',\n value: token.value\n });\n await Preferences.set({\n key: 'notifications_device_type',\n value: deviceInfo.platform.toLowerCase()\n });\n } catch (error) {\n console.warn('Could not save device info to preferences:', error);\n }\n\n // For anonymous users, add anonymousId\n if (!this.store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('Could not get anonymous ID from preferences:', error);\n }\n \n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({\n key: 'notifications_anonymous_id',\n value: anonymousId\n });\n } catch (error) {\n console.warn('Could not save anonymous ID to preferences:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device with backend\n await this.store.notifications.actions.registerDevice(deviceData);\n } catch (error) {\n console.error('Error handling push registration:', error);\n }\n }\n\n /**\n * Handle received notification\n */\n _handleNotificationReceived(notification) {\n // Add notification to store\n this.store.notifications.actions.addLocalNotification({\n title: notification.title,\n body: notification.body,\n data: notification.data || {},\n });\n }\n\n /**\n * Handle notification action (when user taps on notification)\n */\n _handleNotificationAction(actionData) {\n if (actionData.notification && actionData.notification.data) {\n this.store.notifications.actions.handleNotificationAction(actionData.notification.data);\n }\n }\n\n /**\n * Remove push notification listeners\n */\n removeListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (this.pushNotifications) {\n this.pushNotifications.removeAllListeners();\n }\n }\n}\n\n/**\n * Notification Manager for coordinating WebSocket and Push notifications\n */\n\nclass NotificationManager {\n constructor(store, options = {}) {\n this.store = store;\n this.options = options;\n this.pushHandler = new CapacitorPushHandler(store);\n this.initialized = false;\n this.isServer = typeof window === 'undefined';\n }\n\n async registerWebPush(store) {\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('[WebPush] PushManager not supported');\n return;\n }\n\n // Skip permission request if already granted (component handles the prompt)\n if ('Notification' in window && Notification.permission !== 'granted') {\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('[WebPush] Permission not granted:', permission);\n return;\n }\n }\n\n console.log('[WebPush] Subscribing to push manager...');\n const registration = await navigator.serviceWorker.ready;\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg',\n });\n\n console.log('[WebPush] Subscription:', JSON.stringify(subscription));\n\n const deviceToken = JSON.stringify(subscription);\n const deviceId = await this.generateDeviceId();\n\n // Store device data for re-registration after login\n try {\n await Preferences.set({ key: 'notifications_device_id', value: deviceId });\n await Preferences.set({ key: 'notifications_device_token', value: deviceToken });\n await Preferences.set({ key: 'notifications_device_type', value: 'web' });\n } catch (error) {\n console.warn('[WebPush] Could not save device info to preferences:', error);\n }\n\n const deviceData = {\n deviceToken,\n deviceType: 'web',\n deviceId\n };\n\n // For anonymous users, get or generate anonymousId\n if (!store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('[WebPush] Could not get anonymous ID:', error);\n }\n\n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({ key: 'notifications_anonymous_id', value: anonymousId });\n } catch (error) {\n console.warn('[WebPush] Could not save anonymous ID:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device\n console.log('[WebPush] Registering device:', deviceData);\n await store.notifications.actions.registerDevice(deviceData);\n console.log('[WebPush] Device registered successfully');\n }\n\n async generateDeviceId() {\n // Try to get or generate a persistent device ID\n try {\n const result = await Preferences.get({ key: 'notifications_device_id' });\n let deviceId = result.value;\n \n if (!deviceId) {\n deviceId = 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId\n });\n }\n return deviceId;\n } catch (error) {\n console.warn('Could not access preferences for device ID:', error);\n return 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n }\n }\n\n async initialize() {\n console.log('[NOTIF DEBUG] NotificationManager.initialize() called, initialized:', this.initialized, 'isServer:', this.isServer);\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.core.state.session.userId;\n console.log('[NOTIF DEBUG] userId:', userId);\n\n // Connect WebSocket only for authenticated users\n if (userId) {\n try {\n console.log('[NOTIF DEBUG] Connecting to websockets, WSS_URL:', process.env.WSS_URL);\n wsManager.initialize({\n wsUrl: process.env.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n await wsManager.connect(userId);\n console.log('[NOTIF DEBUG] wsManager.connect() resolved successfully');\n\n wsManager.removeModuleListeners('notification');\n\n await wsManager.subscribeModule('notification');\n console.log('[NOTIF DEBUG] Subscribed to notification module');\n\n wsManager.addEventListener(\n 'notification',\n data => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n } catch (error) {\n console.error('[NOTIF DEBUG] WebSocket init FAILED:', error);\n }\n\n // Load notifications regardless of WS status\n try {\n await this.store.notifications.actions.getNotifications(userId);\n } catch (error) {\n console.error('[NOTIF DEBUG] Failed to load notifications:', error);\n }\n } else {\n console.log('[NOTIF DEBUG] No userId, skipping WS');\n }\n\n // Push registration in background — don't block initialization\n // Skip auto-init for mobile apps - will be triggered manually from Walkthrough\n if (this.options.enablePush !== false && !process.env.MOBILE_APP) {\n this.pushHandler.requestPermissions().catch(() => {});\n // Only register web push if permission already granted (no popup without user gesture)\n if ('Notification' in window && Notification.permission === 'granted') {\n this.registerWebPush(this.store).catch(err => console.error('[Notifications] WebPush registration error:', err));\n }\n }\n\n this.initialized = true;\n console.log('[NOTIF DEBUG] NotificationManager initialized successfully');\n }\n\n disconnect() {\n if (this.isServer) return;\n\n wsManager.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\n\n/**\n * Server-side utility for pre-fetching notification data\n */\nconst SSRUtils = {\n /**\n * Pre-fetch notifications for SSR\n * @param {Object} store - Store instance\n * @param {Object} context - SSR context\n */\n async prefetchNotifications(store, context) {\n try {\n const userId = store.core.state.session.userId;\n if (userId) {\n // Fetch notifications without WebSocket or push setup\n await store.notifications.actions.getNotifications(userId);\n }\n } catch (error) {\n console.error('Error pre-fetching notifications for SSR:', error);\n }\n },\n};\n\n/**\n * Function to initialize the notifications module\n * @param {Object} app - Vue app instance\n * @param {Object} store - Vuex/Pinia store\n * @param {Object} router - Vue Router instance\n * @param {Object} options - Configuration options\n */\nfunction initializeNotifications(app, store, router, options = {}) {\n // Add routes and store\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n store.addStore('notifications', storeNotifications);\n\n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n wsManager.initialize({ wsUrl: process.env.WSS_URL });\n }\n\n // Create notification manager\n const notificationManager = new NotificationManager(store, {\n enablePush: options.enablePush !== false,\n maxReconnectAttempts: options.maxReconnectAttempts || 5,\n reconnectDelay: options.reconnectDelay || 3000,\n pingInterval: options.pingInterval || 30000,\n });\n\n // Attach notification manager to store for access in components\n store.notificationManager = notificationManager;\n\n // Don't auto-initialize on server\n const isServer = typeof window === 'undefined';\n const autoInit = !isServer && options.autoInit !== false;\n\n if (autoInit) {\n // Watch for user login/logout using store.core.state.session.userId\n // immediate: true — сработает сразу после применения initialState (гидратация)\n watch(\n () => store.core.state.session.userId,\n async (userId, oldUserId) => {\n console.log('[NOTIF DEBUG] Watch triggered, userId:', userId, 'oldUserId:', oldUserId);\n if (userId && !oldUserId) {\n // Пользователь залогинен (либо при гидратации, либо при логине)\n console.log('[NOTIF DEBUG] User authenticated branch, calling reregisterDeviceAfterLogin...');\n try {\n await store.notifications.actions.reregisterDeviceAfterLogin();\n console.log('[NOTIF DEBUG] reregister done, calling disconnect...');\n } catch (err) {\n console.error('[NOTIF DEBUG] reregister failed:', err);\n }\n notificationManager.disconnect();\n console.log('[NOTIF DEBUG] disconnect done, calling initialize...');\n try {\n await notificationManager.initialize();\n console.log('[NOTIF DEBUG] initialize done');\n } catch (err) {\n console.error('[NOTIF DEBUG] initialize FAILED:', err);\n }\n } else if (!userId && oldUserId) {\n // Пользователь разлогинился\n console.log('[Notifications] User logged out, resetting notifications...');\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n } else if (!userId && !oldUserId) {\n // Анонимный пользователь — инициализируем без WebSocket\n console.log('[Notifications] Anonymous user, initializing without WebSocket...');\n await notificationManager.initialize();\n }\n },\n { immediate: true }\n );\n }\n\n // Provide composable for components to access notification functionality\n app.provide('useNotifications', () => {\n return {\n ...toRefs(store.notifications.state),\n ...store.notifications.actions,\n ...store.notifications.mutations,\n init: notificationManager.initialize.bind(notificationManager),\n disconnect: notificationManager.disconnect.bind(notificationManager),\n registerWebPush: () => notificationManager.registerWebPush(store),\n isServer,\n };\n });\n\n return notificationManager;\n}\n\n// Module export\nconst ModuleNotifications = {\n initialize: initializeNotifications,\n SSR: SSRUtils, // Export SSR utilities\n views: {\n store: {\n storeNotifications,\n },\n router: {\n getRoutes,\n },\n components: {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n },\n },\n};\n\n// Component exports\nexport {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // Sections\n NotificationsList,\n // SSR Utilities\n SSRUtils,\n};\n\n// [LOADING 37] Notifications module import completed\nperformance.mark('loading-37-end');\nperformance.measure('loading-37-total', 'loading-37-start', 'loading-37-end');\nconst totalTime = performance.getEntriesByName('loading-37-total')[0];\nconsole.log(`[LOADING 37] Notifications module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleNotifications;\n"],"names":["storeNotifications","NotificationsList","NotificationPreferences","Notifications","NotificationsLayout"],"mappings":"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"}
1
+ {"version":3,"file":"notifications.client.js","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["// [LOADING 37] Notifications module import started\nperformance.mark('loading-37-start');\nconsole.log('[LOADING 37] Notifications module import started...');\n\nimport { toRefs, watch } from 'vue';\n// Router import\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './router/notifications.router.js';\n// Store\nimport * as storeNotifications from './store/notifications.store.js';\n// Global WebSocket import\nimport wsManager from '@martyrs/src/modules/core/views/classes/ws.manager.js';\n// Capacitor Preferences\nimport { Preferences } from '@capacitor/preferences';\n// Layouts\nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue';\n// Sections\nimport NotificationPreferences from './components/sections/NotificationPreferences.vue';\nimport NotificationsList from './components/sections/NotificationsList.vue';\n// Pages\nimport Notifications from './components/pages/Notifications.vue';\n// Components\nimport NotificationItem from './components/blocks/NotificationItem.vue';\nimport NotificationBadge from './components/elements/NotificationBadge.vue';\n\nperformance.mark('loading-37-imports-end');\nconst importsTime = performance.measure('loading-37-imports', 'loading-37-start', 'loading-37-imports-end');\nconsole.log(`[LOADING 37] All imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n/**\n * Capacitor Push Notification handler\n */\nclass CapacitorPushHandler {\n constructor(store) {\n this.store = store;\n this.pushNotifications = null;\n this.device = null;\n this.isInitialized = false;\n }\n\n /**\n * Initialize Capacitor plugins\n */\n async initialize() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n try {\n // Dynamic imports to prevent errors in web environment\n const { Capacitor } = await import('@capacitor/core');\n const { PushNotifications } = await import('@capacitor/push-notifications');\n const { Device } = await import('@capacitor/device');\n\n this.capacitor = Capacitor;\n this.pushNotifications = PushNotifications;\n this.device = Device;\n\n // Only proceed if running on a native platform\n if (!this.capacitor.isNativePlatform()) {\n return false;\n }\n\n this.isInitialized = true;\n return true;\n } catch (error) {\n console.error('Error importing Capacitor plugins:', error);\n return false;\n }\n }\n\n /**\n * Request permission and register for push notifications\n */\n async requestPermissions() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!this.isInitialized) {\n const initialized = await this.initialize();\n if (!initialized) return false;\n }\n\n try {\n // Request permission\n const permissionResult = await this.pushNotifications.requestPermissions();\n if (permissionResult.receive !== 'granted') {\n console.log('Push notification permission denied');\n return false;\n }\n\n // Set up event listeners\n this._setupListeners();\n\n // Register with Apple/Google\n await this.pushNotifications.register();\n return true;\n } catch (error) {\n console.error('Error requesting push notification permissions:', error);\n return false;\n }\n }\n\n /**\n * Setup push notification event listeners\n */\n _setupListeners() {\n // Registration event\n this.pushNotifications.addListener('registration', this._handleRegistration.bind(this));\n\n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived', this._handleNotificationReceived.bind(this));\n\n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed', this._handleNotificationAction.bind(this));\n }\n\n /**\n * Handle registration token received\n */\n async _handleRegistration(token) {\n try {\n // Get device info\n const deviceInfo = await this.device.getInfo();\n const deviceId = await this.device.getId();\n\n // Prepare device data\n const deviceData = {\n deviceId: deviceId.uuid,\n deviceType: deviceInfo.platform.toLowerCase(),\n deviceToken: token.value,\n };\n\n // Store device info for re-registration after login\n try {\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId.uuid\n });\n await Preferences.set({\n key: 'notifications_device_token',\n value: token.value\n });\n await Preferences.set({\n key: 'notifications_device_type',\n value: deviceInfo.platform.toLowerCase()\n });\n } catch (error) {\n console.warn('Could not save device info to preferences:', error);\n }\n\n // For anonymous users, add anonymousId\n if (!this.store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('Could not get anonymous ID from preferences:', error);\n }\n \n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({\n key: 'notifications_anonymous_id',\n value: anonymousId\n });\n } catch (error) {\n console.warn('Could not save anonymous ID to preferences:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device with backend\n await this.store.notifications.actions.registerDevice(deviceData);\n } catch (error) {\n console.error('Error handling push registration:', error);\n }\n }\n\n /**\n * Handle received notification\n */\n _handleNotificationReceived(notification) {\n // Add notification to store\n this.store.notifications.actions.addLocalNotification({\n title: notification.title,\n body: notification.body,\n data: notification.data || {},\n });\n }\n\n /**\n * Handle notification action (when user taps on notification)\n */\n _handleNotificationAction(actionData) {\n if (actionData.notification && actionData.notification.data) {\n this.store.notifications.actions.handleNotificationAction(actionData.notification.data);\n }\n }\n\n /**\n * Remove push notification listeners\n */\n removeListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (this.pushNotifications) {\n this.pushNotifications.removeAllListeners();\n }\n }\n}\n\n/**\n * Notification Manager for coordinating WebSocket and Push notifications\n */\n\nclass NotificationManager {\n constructor(store, options = {}) {\n this.store = store;\n this.options = options;\n this.pushHandler = new CapacitorPushHandler(store);\n this.initialized = false;\n this.isServer = typeof window === 'undefined';\n }\n\n async registerWebPush(store) {\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('[WebPush] PushManager not supported');\n return;\n }\n\n // Skip permission request if already granted (component handles the prompt)\n if ('Notification' in window && Notification.permission !== 'granted') {\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('[WebPush] Permission not granted:', permission);\n return;\n }\n }\n\n console.log('[WebPush] Subscribing to push manager...');\n const registration = await navigator.serviceWorker.ready;\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg',\n });\n\n console.log('[WebPush] Subscription:', JSON.stringify(subscription));\n\n const deviceToken = JSON.stringify(subscription);\n const deviceId = await this.generateDeviceId();\n\n // Store device data for re-registration after login\n try {\n await Preferences.set({ key: 'notifications_device_id', value: deviceId });\n await Preferences.set({ key: 'notifications_device_token', value: deviceToken });\n await Preferences.set({ key: 'notifications_device_type', value: 'web' });\n } catch (error) {\n console.warn('[WebPush] Could not save device info to preferences:', error);\n }\n\n const deviceData = {\n deviceToken,\n deviceType: 'web',\n deviceId\n };\n\n // For anonymous users, get or generate anonymousId\n if (!store.core.state.session.userId) {\n let anonymousId = null;\n try {\n const result = await Preferences.get({ key: 'notifications_anonymous_id' });\n anonymousId = result.value;\n } catch (error) {\n console.warn('[WebPush] Could not get anonymous ID:', error);\n }\n\n if (!anonymousId) {\n anonymousId = 'anon_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n try {\n await Preferences.set({ key: 'notifications_anonymous_id', value: anonymousId });\n } catch (error) {\n console.warn('[WebPush] Could not save anonymous ID:', error);\n }\n }\n deviceData.anonymousId = anonymousId;\n }\n\n // Register device\n console.log('[WebPush] Registering device:', deviceData);\n await store.notifications.actions.registerDevice(deviceData);\n console.log('[WebPush] Device registered successfully');\n }\n\n async generateDeviceId() {\n // Try to get or generate a persistent device ID\n try {\n const result = await Preferences.get({ key: 'notifications_device_id' });\n let deviceId = result.value;\n \n if (!deviceId) {\n deviceId = 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n await Preferences.set({\n key: 'notifications_device_id',\n value: deviceId\n });\n }\n return deviceId;\n } catch (error) {\n console.warn('Could not access preferences for device ID:', error);\n return 'web_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n }\n }\n\n async initialize() {\n console.log('[NOTIF DEBUG] NotificationManager.initialize() called, initialized:', this.initialized, 'isServer:', this.isServer);\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.core.state.session.userId;\n console.log('[NOTIF DEBUG] userId:', userId);\n\n // Connect WebSocket only for authenticated users\n if (userId) {\n try {\n console.log('[NOTIF DEBUG] Connecting to websockets, WSS_URL:', process.env.WSS_URL);\n wsManager.initialize({\n wsUrl: process.env.WSS_URL,\n maxReconnectAttempts: 10,\n reconnectDelay: 2000,\n });\n\n await wsManager.connect(userId);\n console.log('[NOTIF DEBUG] wsManager.connect() resolved successfully');\n\n wsManager.removeModuleListeners('notification');\n\n await wsManager.subscribeModule('notification');\n console.log('[NOTIF DEBUG] Subscribed to notification module');\n\n wsManager.addEventListener(\n 'notification',\n data => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n } catch (error) {\n console.error('[NOTIF DEBUG] WebSocket init FAILED:', error);\n }\n\n // Load notifications regardless of WS status\n try {\n await this.store.notifications.actions.getNotifications(userId);\n } catch (error) {\n console.error('[NOTIF DEBUG] Failed to load notifications:', error);\n }\n } else {\n console.log('[NOTIF DEBUG] No userId, skipping WS');\n }\n\n // Push registration in background — don't block initialization\n // Skip auto-init for mobile apps - will be triggered manually from Walkthrough\n if (this.options.enablePush !== false && !process.env.MOBILE_APP) {\n this.pushHandler.requestPermissions().catch(() => {});\n // Only register web push if permission already granted (no popup without user gesture)\n if ('Notification' in window && Notification.permission === 'granted') {\n this.registerWebPush(this.store).catch(err => console.error('[Notifications] WebPush registration error:', err));\n }\n }\n\n this.initialized = true;\n console.log('[NOTIF DEBUG] NotificationManager initialized successfully');\n }\n\n disconnect() {\n if (this.isServer) return;\n\n wsManager.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\n\n/**\n * Server-side utility for pre-fetching notification data\n */\nconst SSRUtils = {\n /**\n * Pre-fetch notifications for SSR\n * @param {Object} store - Store instance\n * @param {Object} context - SSR context\n */\n async prefetchNotifications(store, context) {\n try {\n const userId = store.core.state.session.userId;\n if (userId) {\n // Fetch notifications without WebSocket or push setup\n await store.notifications.actions.getNotifications(userId);\n }\n } catch (error) {\n console.error('Error pre-fetching notifications for SSR:', error);\n }\n },\n};\n\n/**\n * Function to initialize the notifications module\n * @param {Object} app - Vue app instance\n * @param {Object} store - Vuex/Pinia store\n * @param {Object} router - Vue Router instance\n * @param {Object} options - Configuration options\n */\nfunction initializeNotifications(app, store, router, options = {}) {\n // Add routes and store\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n store.addStore('notifications', storeNotifications);\n\n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n wsManager.initialize({ wsUrl: process.env.WSS_URL });\n }\n\n // Create notification manager\n const notificationManager = new NotificationManager(store, {\n enablePush: options.enablePush !== false,\n maxReconnectAttempts: options.maxReconnectAttempts || 5,\n reconnectDelay: options.reconnectDelay || 3000,\n pingInterval: options.pingInterval || 30000,\n });\n\n // Attach notification manager to store for access in components\n store.notificationManager = notificationManager;\n\n // Don't auto-initialize on server\n const isServer = typeof window === 'undefined';\n const autoInit = !isServer && options.autoInit !== false;\n\n if (autoInit) {\n // Watch for user login/logout using store.core.state.session.userId\n // immediate: true — сработает сразу после применения initialState (гидратация)\n watch(\n () => store.core.state.session.userId,\n async (userId, oldUserId) => {\n console.log('[NOTIF DEBUG] Watch triggered, userId:', userId, 'oldUserId:', oldUserId);\n if (userId && !oldUserId) {\n // Пользователь залогинен (либо при гидратации, либо при логине)\n console.log('[NOTIF DEBUG] User authenticated branch, calling reregisterDeviceAfterLogin...');\n try {\n await store.notifications.actions.reregisterDeviceAfterLogin();\n console.log('[NOTIF DEBUG] reregister done, calling disconnect...');\n } catch (err) {\n console.error('[NOTIF DEBUG] reregister failed:', err);\n }\n notificationManager.disconnect();\n console.log('[NOTIF DEBUG] disconnect done, calling initialize...');\n try {\n await notificationManager.initialize();\n console.log('[NOTIF DEBUG] initialize done');\n } catch (err) {\n console.error('[NOTIF DEBUG] initialize FAILED:', err);\n }\n } else if (!userId && oldUserId) {\n // Пользователь разлогинился\n console.log('[Notifications] User logged out, resetting notifications...');\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n } else if (!userId && !oldUserId) {\n // Анонимный пользователь — инициализируем без WebSocket\n console.log('[Notifications] Anonymous user, initializing without WebSocket...');\n await notificationManager.initialize();\n }\n },\n { immediate: true }\n );\n }\n\n // Provide composable for components to access notification functionality\n app.provide('useNotifications', () => {\n return {\n ...toRefs(store.notifications.state),\n ...store.notifications.actions,\n ...store.notifications.mutations,\n init: notificationManager.initialize.bind(notificationManager),\n disconnect: notificationManager.disconnect.bind(notificationManager),\n registerWebPush: () => notificationManager.registerWebPush(store),\n isServer,\n };\n });\n\n return notificationManager;\n}\n\n// Module export\nconst ModuleNotifications = {\n initialize: initializeNotifications,\n SSR: SSRUtils, // Export SSR utilities\n views: {\n store: {\n storeNotifications,\n },\n router: {\n getRoutes,\n },\n components: {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n },\n },\n};\n\n// Component exports\nexport {\n // Elements\n NotificationBadge,\n // Blocks\n NotificationItem,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // Sections\n NotificationsList,\n // SSR Utilities\n SSRUtils,\n};\n\n// [LOADING 37] Notifications module import completed\nperformance.mark('loading-37-end');\nperformance.measure('loading-37-total', 'loading-37-start', 'loading-37-end');\nconst totalTime = performance.getEntriesByName('loading-37-total')[0];\nconsole.log(`[LOADING 37] Notifications module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleNotifications;\n"],"names":["storeNotifications","NotificationsList","NotificationPreferences","Notifications","NotificationsLayout"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { computed, reactive, watch } from "vue";
2
2
  import $axios from "../../core/views/utils/axios-instance.js";
3
3
  import { setError } from "../../core/views/store/core.store.js";
4
4
  import { state as state$1 } from "../../auth/views/store/auth.js";
5
- import { Preferences } from "../../../../node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js";
5
+ import { Preferences } from "@capacitor/preferences";
6
6
  const notificationInitState = {
7
7
  _id: null,
8
8
  title: "",
@@ -2,7 +2,7 @@ import { getCurrentInstance, computed, ref, onMounted, createElementBlock, openB
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  /* empty css */
4
4
  import Button from "../../../../components/Button/Button.vue2.js";
5
- import _sfc_main$2 from "../../../../components/Tab/Tab.vue.js";
5
+ import _sfc_main$2 from "../../../../components/Tab/Tab.vue2.js";
6
6
  import _sfc_main$3 from "../../../../components/Popup/Popup.vue.js";
7
7
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
8
8
  import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createVNode, unref, withCtx, createElementVNode, toDisplayString, normalizeClass, Fragment, renderList } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- import _sfc_main$3 from "../../../../components/Tab/Tab.vue.js";
3
+ import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
4
4
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
5
5
  import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
6
6
  import { state, actions, getters } from "../../store/orders.js";
@@ -1,6 +1,6 @@
1
1
  import { watch, onMounted, computed, createBlock, openBlock, withCtx, createElementVNode, createElementBlock, createCommentVNode, createVNode, Fragment, renderList } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- /* empty css */
3
+ /* empty css */
4
4
  /* empty css */
5
5
  /* empty css */
6
6
  /* empty css */
@@ -10,7 +10,7 @@ import _sfc_main$2 from "../../../../components/Radio/Radio.vue.js";
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
- /* empty css */
13
+ /* empty css */
14
14
  /* empty css */
15
15
  import CardSpot from "../../../spots/components/blocks/CardSpot.vue.js";
16
16
  import { useStore } from "../../../core/views/store/core.store.js";
@@ -1,6 +1,6 @@
1
1
  import { computed, reactive, watch } from "vue";
2
2
  import { setSnack } from "../../core/views/store/core.store.js";
3
- import { Preferences } from "../../../../node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js";
3
+ import { Preferences } from "@capacitor/preferences";
4
4
  const state = reactive({
5
5
  organization: null,
6
6
  positions: [],
@@ -5,14 +5,14 @@ import _sfc_main$1 from "../../../icons/entities/IconGroups.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/entities/IconLock.vue.js";
6
6
  import _sfc_main$3 from "../../../icons/actions/IconShow.vue.js";
7
7
  /* empty css */
8
- /* empty css */
8
+ /* empty css */
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  import Field from "../../../../components/Field/Field.vue.js";
13
13
  /* empty css */
14
14
  /* empty css */
15
- /* empty css */
15
+ /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
18
  /* empty css */
@@ -21,7 +21,7 @@ import Field from "../../../../components/Field/Field.vue.js";
21
21
  import "vue-i18n";
22
22
  /* empty css */
23
23
  import _sfc_main$4 from "../../../../components/FieldTags/BlockTags.vue.js";
24
- /* empty css */
24
+ /* empty css */
25
25
  /* empty css */
26
26
  /* empty css */
27
27
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, withAsyncContext, watch, createElementBlock, openBlock, createElementVNode, createBlock, Fragment, renderList, normalizeClass } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
3
  import "../../../../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  /* empty css */
6
6
  /* empty css */
7
7
  /* empty css */
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, createStaticVNode, createVNode, Transition, withCtx, createCommentVNode, withModifiers, createBlock } from "vue";
2
- import Loader from "../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../components/Loader/Loader.vue.js";
3
3
  /* empty css */
4
4
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = { class: "product-360-viewer" };
@@ -6,7 +6,7 @@ import Select from "../../../../components/Select/Select.vue.js";
6
6
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
7
7
  import Field from "../../../../components/Field/Field.vue.js";
8
8
  import FieldTags from "../../../../components/FieldTags/FieldTags.vue.js";
9
- /* empty css */
9
+ /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
@@ -15,7 +15,7 @@ import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
- /* empty css */
18
+ /* empty css */
19
19
  /* empty css */
20
20
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
21
21
  import { useStore } from "../../../core/views/store/core.store.js";
@@ -7,7 +7,7 @@ import { state, actions } from "../../store/products.js";
7
7
  import { state as state$2, actions as actions$1 } from "../../../orders/store/shopcart.js";
8
8
  /* empty css */
9
9
  /* empty css */
10
- /* empty css */
10
+ /* empty css */
11
11
  /* empty css */
12
12
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
13
13
  import _sfc_main$4 from "../../../icons/navigation/IconInfo.vue.js";
@@ -1,11 +1,11 @@
1
1
  import { ref, onMounted, createElementBlock, createCommentVNode, unref, openBlock, createBlock, createElementVNode, withCtx, createVNode, toDisplayString, createTextVNode, isRef, withModifiers, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
4
- import _sfc_main$2 from "../../../../components/Tab/Tab.vue.js";
4
+ import _sfc_main$2 from "../../../../components/Tab/Tab.vue2.js";
5
5
  import Field from "../../../../components/Field/Field.vue.js";
6
6
  import Select from "../../../../components/Select/Select.vue.js";
7
7
  import Button from "../../../../components/Button/Button.vue2.js";
8
- import _sfc_main$3 from "../../../../components/EditImages/EditImages.vue.js";
8
+ import _sfc_main$3 from "../../../../components/EditImages/EditImages.vue2.js";
9
9
  import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
10
10
  import _sfc_main$4 from "../../../icons/navigation/IconCross.vue.js";
11
11
  import _sfc_main$9 from "../../../icons/navigation/IconDelete.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, onMounted, onUnmounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createElementVNode, createVNode, unref, toDisplayString, Fragment, renderList, createTextVNode, createBlock, withCtx, normalizeClass, renderSlot } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
6
6
  import _sfc_main$2 from "../../../../components/Spoiler/Spoiler.vue2.js";
7
7
  import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
@@ -9,7 +9,7 @@ import "vue-i18n";
9
9
  import { actions as actions$1 } from "../../store/categories.js";
10
10
  /* empty css */
11
11
  import Field from "../../../../components/Field/Field.vue.js";
12
- import Filters from "../../../core/views/components/sections/Filters.vue.js";
12
+ import Filters from "../../../core/views/components/sections/Filters.vue2.js";
13
13
  import Calendar from "../../../../components/Calendar/Calendar.vue2.js";
14
14
  import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
15
15
  import _sfc_main$6 from "../blocks/CardProduct.vue.js";
@@ -9,7 +9,7 @@ import Button from "../../../../components/Button/Button.vue2.js";
9
9
  import _sfc_main$6 from "../../../../components/Popup/Popup.vue.js";
10
10
  import Select from "../../../../components/Select/Select.vue.js";
11
11
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
12
- import _sfc_main$8 from "../../../../components/EditImages/EditImages.vue.js";
12
+ import _sfc_main$8 from "../../../../components/EditImages/EditImages.vue2.js";
13
13
  import _sfc_main$7 from "./EditIngredients.vue.js";
14
14
  import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
15
15
  import _sfc_main$4 from "../../../icons/navigation/IconEdit.vue.js";
@@ -1,6 +1,6 @@
1
1
  import { computed, ref, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createVNode, unref, toDisplayString, Transition, withCtx, Fragment, renderList, createTextVNode } from "vue";
2
2
  import Button from "../../../../components/Button/Button.vue2.js";
3
- import _sfc_main$3 from "../../../../components/Tab/Tab.vue.js";
3
+ import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
4
4
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
5
5
  import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
6
6
  import Image360 from "../elements/Image360.vue.js";