@ozdao/martyrs 0.2.471 → 0.2.472

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 (376) hide show
  1. package/dist/{Media-CR0V1zvB.js → Media-DW8RLbfM.js} +1 -1
  2. package/dist/{Media-C4Ges_Sd.mjs → Media-y_TX6us_.mjs} +1 -1
  3. package/dist/auth.server.js +1 -1
  4. package/dist/auth.server.mjs +1 -1
  5. package/dist/chats.server.js +1 -1
  6. package/dist/chats.server.mjs +1 -1
  7. package/dist/community.server.js +1 -1
  8. package/dist/community.server.mjs +1 -1
  9. package/dist/events.server.js +1 -1
  10. package/dist/events.server.mjs +1 -1
  11. package/dist/files.server.js +1 -1
  12. package/dist/files.server.mjs +1 -1
  13. package/dist/gallery.server.js +1 -1
  14. package/dist/gallery.server.mjs +1 -1
  15. package/dist/{index-DxIIUtHr.js → index-CVXl1rB5.js} +0 -4
  16. package/dist/{index-CgMJYdNI.mjs → index-Df8vtZx7.mjs} +0 -4
  17. package/dist/{main-CsZAG5Wz.js → main-CCfQH-Dd.js} +2 -2
  18. package/dist/{main-CTcal9qN.mjs → main-CgmHzhq5.mjs} +74 -74
  19. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.2.0/node_modules/@capacitor/core/dist/index.cjs.map +1 -0
  20. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.2.0/node_modules/@capacitor/core/dist/index.js.map +1 -0
  21. package/dist/martyrs/node_modules/{@capacitor → .pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor}/preferences/dist/esm/index.cjs +1 -1
  22. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor/preferences/dist/esm/index.cjs.map +1 -0
  23. package/dist/martyrs/node_modules/{@capacitor → .pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor}/preferences/dist/esm/index.js +1 -1
  24. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor/preferences/dist/esm/index.js.map +1 -0
  25. package/dist/martyrs/node_modules/{@capacitor → .pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor}/preferences/dist/esm/web.cjs +1 -1
  26. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor/preferences/dist/esm/web.cjs.map +1 -0
  27. package/dist/martyrs/node_modules/{@capacitor → .pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor}/preferences/dist/esm/web.js +1 -1
  28. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor/preferences/dist/esm/web.js.map +1 -0
  29. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.cjs.map +1 -0
  30. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.js.map +1 -0
  31. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.cjs.map +1 -0
  32. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.js.map +1 -0
  33. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/constants.cjs.map +1 -0
  34. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/constants.js.map +1 -0
  35. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/format.cjs.map +1 -0
  36. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/format.js.map +1 -0
  37. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/RFC3966.cjs.map +1 -0
  38. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/RFC3966.js.map +1 -0
  39. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.cjs.map +1 -0
  40. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js.map +1 -0
  41. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.cjs.map +1 -0
  42. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js.map +1 -0
  43. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.cjs.map +1 -0
  44. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js.map +1 -0
  45. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.cjs.map +1 -0
  46. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js.map +1 -0
  47. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.cjs.map +1 -0
  48. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js.map +1 -0
  49. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.cjs.map +1 -0
  50. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map +1 -0
  51. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.cjs.map +1 -0
  52. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js.map +1 -0
  53. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.cjs.map +1 -0
  54. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js.map +1 -0
  55. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.cjs.map +1 -0
  56. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map +1 -0
  57. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.cjs.map +1 -0
  58. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js.map +1 -0
  59. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.cjs.map +1 -0
  60. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js.map +1 -0
  61. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.cjs.map +1 -0
  62. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js.map +1 -0
  63. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.cjs.map +1 -0
  64. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js.map +1 -0
  65. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.cjs.map +1 -0
  66. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js.map +1 -0
  67. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getNumberType.cjs.map +1 -0
  68. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getNumberType.js.map +1 -0
  69. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.cjs.map +1 -0
  70. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js.map +1 -0
  71. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/isObject.cjs.map +1 -0
  72. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/isObject.js.map +1 -0
  73. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.cjs.map +1 -0
  74. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js.map +1 -0
  75. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.cjs.map +1 -0
  76. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js.map +1 -0
  77. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/parseDigits.cjs.map +1 -0
  78. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/parseDigits.js.map +1 -0
  79. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.cjs.map +1 -0
  80. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js.map +1 -0
  81. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/isPossible.cjs.map +1 -0
  82. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/isPossible.js.map +1 -0
  83. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/isValid.cjs.map +1 -0
  84. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/isValid.js.map +1 -0
  85. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.cjs.map +1 -0
  86. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.js.map +1 -0
  87. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/normalizeArguments.cjs.map +1 -0
  88. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/normalizeArguments.js.map +1 -0
  89. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parse.cjs.map +1 -0
  90. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parse.js.map +1 -0
  91. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.cjs.map +1 -0
  92. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js.map +1 -0
  93. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parsePhoneNumber.cjs.map +1 -0
  94. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parsePhoneNumber.js.map +1 -0
  95. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.cjs.map +1 -0
  96. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js.map +1 -0
  97. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parsePhoneNumber_.cjs.map +1 -0
  98. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js.map +1 -0
  99. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/tools/semver-compare.cjs.map +1 -0
  100. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/tools/semver-compare.js.map +1 -0
  101. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/metadata.min.json.cjs.map +1 -0
  102. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/metadata.min.json.js.map +1 -0
  103. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/min/exports/parsePhoneNumber.cjs.map +1 -0
  104. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js.map +1 -0
  105. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/min/exports/withMetadataArgument.cjs.map +1 -0
  106. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js.map +1 -0
  107. package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
  108. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  109. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
  110. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  111. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  112. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  113. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +1 -1
  114. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  115. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +5 -5
  116. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
  117. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +5 -5
  118. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
  119. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs → Tooltip.vue2.cjs} +2 -2
  120. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -0
  121. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.js → Tooltip.vue2.js} +2 -2
  122. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs.map → Tooltip.vue2.js.map} +1 -1
  123. package/dist/martyrs/src/components/Tree/Tree.vue.cjs +3 -1
  124. package/dist/martyrs/src/components/Tree/Tree.vue.cjs.map +1 -1
  125. package/dist/martyrs/src/components/Tree/Tree.vue.js +3 -1
  126. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/auth/views/store/auth.cjs +2 -1
  128. package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
  129. package/dist/martyrs/src/modules/auth/views/store/auth.js +2 -1
  130. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  131. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  133. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js +1 -1
  135. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  137. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +10 -14
  138. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
  139. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +12 -16
  140. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/globals/views/store/globals.cjs +1 -1
  142. package/dist/martyrs/src/modules/globals/views/store/globals.js +1 -1
  143. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +6 -12
  144. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  145. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +6 -12
  146. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  147. package/dist/martyrs/src/modules/notifications/notifications.client.cjs +1 -1
  148. package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/notifications.client.js +1 -1
  150. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  151. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
  153. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  154. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  155. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +6 -7
  156. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  157. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +7 -8
  158. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  159. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  160. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  161. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  163. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
  164. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
  166. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +34 -13
  168. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +35 -14
  170. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +20 -9
  172. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  173. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +21 -10
  174. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  175. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -0
  176. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  177. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -0
  178. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  179. package/dist/martyrs.cjs.js +1 -1
  180. package/dist/martyrs.css +1 -1
  181. package/dist/martyrs.es.js +1 -1
  182. package/dist/notifications.server.js +35 -2
  183. package/dist/notifications.server.mjs +35 -2
  184. package/dist/orders.server.js +1 -1
  185. package/dist/orders.server.mjs +1 -1
  186. package/dist/organizations.server.js +1 -1
  187. package/dist/organizations.server.mjs +1 -1
  188. package/dist/products.server.js +78 -53
  189. package/dist/products.server.mjs +78 -53
  190. package/dist/rents.server.js +1 -1
  191. package/dist/rents.server.mjs +1 -1
  192. package/dist/style.css +37 -38
  193. package/dist/wallet.server.js +1 -1
  194. package/dist/wallet.server.mjs +1 -1
  195. package/package.json +2 -1
  196. package/src/components/Feed/Feed.vue +2 -7
  197. package/src/components/Skeleton/Skeleton.vue +4 -5
  198. package/src/components/Tree/Tree.vue +5 -2
  199. package/src/modules/auth/controllers/middlewares/authJwt.js +0 -4
  200. package/src/modules/auth/views/store/auth.js +2 -1
  201. package/src/modules/globals/views/components/partials/Navigation.vue +11 -10
  202. package/src/modules/globals/views/utils/vue-app-renderer.js +7 -16
  203. package/src/modules/notifications/controllers/notifications.controller.js +44 -1
  204. package/src/modules/notifications/notifications.server.js +0 -1
  205. package/src/modules/notifications/routes/notifications.routes.js +3 -0
  206. package/src/modules/orders/components/pages/OrderCreate.vue +0 -2
  207. package/src/modules/products/components/blocks/CardCategory.vue +5 -4
  208. package/src/modules/products/components/pages/Categories.vue +38 -20
  209. package/src/modules/products/components/pages/CategoryEdit.vue +16 -7
  210. package/src/modules/products/components/pages/ProductEdit.vue +1 -0
  211. package/src/modules/products/controllers/categories.controller.js +155 -103
  212. package/dist/martyrs/node_modules/@capacitor/core/dist/index.cjs.map +0 -1
  213. package/dist/martyrs/node_modules/@capacitor/core/dist/index.js.map +0 -1
  214. package/dist/martyrs/node_modules/@capacitor/preferences/dist/esm/index.cjs.map +0 -1
  215. package/dist/martyrs/node_modules/@capacitor/preferences/dist/esm/index.js.map +0 -1
  216. package/dist/martyrs/node_modules/@capacitor/preferences/dist/esm/web.cjs.map +0 -1
  217. package/dist/martyrs/node_modules/@capacitor/preferences/dist/esm/web.js.map +0 -1
  218. package/dist/martyrs/node_modules/libphonenumber-js/es6/ParseError.cjs.map +0 -1
  219. package/dist/martyrs/node_modules/libphonenumber-js/es6/ParseError.js.map +0 -1
  220. package/dist/martyrs/node_modules/libphonenumber-js/es6/PhoneNumber.cjs.map +0 -1
  221. package/dist/martyrs/node_modules/libphonenumber-js/es6/PhoneNumber.js.map +0 -1
  222. package/dist/martyrs/node_modules/libphonenumber-js/es6/constants.cjs.map +0 -1
  223. package/dist/martyrs/node_modules/libphonenumber-js/es6/constants.js.map +0 -1
  224. package/dist/martyrs/node_modules/libphonenumber-js/es6/format.cjs.map +0 -1
  225. package/dist/martyrs/node_modules/libphonenumber-js/es6/format.js.map +0 -1
  226. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/RFC3966.cjs.map +0 -1
  227. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/RFC3966.js.map +0 -1
  228. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.cjs.map +0 -1
  229. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js.map +0 -1
  230. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.cjs.map +0 -1
  231. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js.map +0 -1
  232. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.cjs.map +0 -1
  233. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js.map +0 -1
  234. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.cjs.map +0 -1
  235. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js.map +0 -1
  236. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.cjs.map +0 -1
  237. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js.map +0 -1
  238. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.cjs.map +0 -1
  239. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map +0 -1
  240. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.cjs.map +0 -1
  241. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js.map +0 -1
  242. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.cjs.map +0 -1
  243. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js.map +0 -1
  244. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.cjs.map +0 -1
  245. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js.map +0 -1
  246. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.cjs.map +0 -1
  247. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js.map +0 -1
  248. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.cjs.map +0 -1
  249. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js.map +0 -1
  250. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.cjs.map +0 -1
  251. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js.map +0 -1
  252. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.cjs.map +0 -1
  253. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js.map +0 -1
  254. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.cjs.map +0 -1
  255. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js.map +0 -1
  256. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getNumberType.cjs.map +0 -1
  257. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getNumberType.js.map +0 -1
  258. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.cjs.map +0 -1
  259. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js.map +0 -1
  260. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/isObject.cjs.map +0 -1
  261. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/isObject.js.map +0 -1
  262. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.cjs.map +0 -1
  263. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js.map +0 -1
  264. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.cjs.map +0 -1
  265. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js.map +0 -1
  266. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/parseDigits.cjs.map +0 -1
  267. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/parseDigits.js.map +0 -1
  268. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.cjs.map +0 -1
  269. package/dist/martyrs/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js.map +0 -1
  270. package/dist/martyrs/node_modules/libphonenumber-js/es6/isPossible.cjs.map +0 -1
  271. package/dist/martyrs/node_modules/libphonenumber-js/es6/isPossible.js.map +0 -1
  272. package/dist/martyrs/node_modules/libphonenumber-js/es6/isValid.cjs.map +0 -1
  273. package/dist/martyrs/node_modules/libphonenumber-js/es6/isValid.js.map +0 -1
  274. package/dist/martyrs/node_modules/libphonenumber-js/es6/metadata.cjs.map +0 -1
  275. package/dist/martyrs/node_modules/libphonenumber-js/es6/metadata.js.map +0 -1
  276. package/dist/martyrs/node_modules/libphonenumber-js/es6/normalizeArguments.cjs.map +0 -1
  277. package/dist/martyrs/node_modules/libphonenumber-js/es6/normalizeArguments.js.map +0 -1
  278. package/dist/martyrs/node_modules/libphonenumber-js/es6/parse.cjs.map +0 -1
  279. package/dist/martyrs/node_modules/libphonenumber-js/es6/parse.js.map +0 -1
  280. package/dist/martyrs/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.cjs.map +0 -1
  281. package/dist/martyrs/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js.map +0 -1
  282. package/dist/martyrs/node_modules/libphonenumber-js/es6/parsePhoneNumber.cjs.map +0 -1
  283. package/dist/martyrs/node_modules/libphonenumber-js/es6/parsePhoneNumber.js.map +0 -1
  284. package/dist/martyrs/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.cjs.map +0 -1
  285. package/dist/martyrs/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js.map +0 -1
  286. package/dist/martyrs/node_modules/libphonenumber-js/es6/parsePhoneNumber_.cjs.map +0 -1
  287. package/dist/martyrs/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js.map +0 -1
  288. package/dist/martyrs/node_modules/libphonenumber-js/es6/tools/semver-compare.cjs.map +0 -1
  289. package/dist/martyrs/node_modules/libphonenumber-js/es6/tools/semver-compare.js.map +0 -1
  290. package/dist/martyrs/node_modules/libphonenumber-js/metadata.min.json.cjs.map +0 -1
  291. package/dist/martyrs/node_modules/libphonenumber-js/metadata.min.json.js.map +0 -1
  292. package/dist/martyrs/node_modules/libphonenumber-js/min/exports/parsePhoneNumber.cjs.map +0 -1
  293. package/dist/martyrs/node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js.map +0 -1
  294. package/dist/martyrs/node_modules/libphonenumber-js/min/exports/withMetadataArgument.cjs.map +0 -1
  295. package/dist/martyrs/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js.map +0 -1
  296. package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +0 -1
  297. /package/dist/martyrs/node_modules/{@capacitor → .pnpm/@capacitor_core@7.2.0/node_modules/@capacitor}/core/dist/index.cjs +0 -0
  298. /package/dist/martyrs/node_modules/{@capacitor → .pnpm/@capacitor_core@7.2.0/node_modules/@capacitor}/core/dist/index.js +0 -0
  299. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/ParseError.cjs +0 -0
  300. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/ParseError.js +0 -0
  301. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/PhoneNumber.cjs +0 -0
  302. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/PhoneNumber.js +0 -0
  303. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/constants.cjs +0 -0
  304. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/constants.js +0 -0
  305. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/format.cjs +0 -0
  306. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/format.js +0 -0
  307. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/RFC3966.cjs +0 -0
  308. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/RFC3966.js +0 -0
  309. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/applyInternationalSeparatorStyle.cjs +0 -0
  310. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/applyInternationalSeparatorStyle.js +0 -0
  311. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/checkNumberLength.cjs +0 -0
  312. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/checkNumberLength.js +0 -0
  313. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extension/createExtensionPattern.cjs +0 -0
  314. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extension/createExtensionPattern.js +0 -0
  315. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extension/extractExtension.cjs +0 -0
  316. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extension/extractExtension.js +0 -0
  317. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractCountryCallingCode.cjs +0 -0
  318. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractCountryCallingCode.js +0 -0
  319. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.cjs +0 -0
  320. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js +0 -0
  321. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.cjs +0 -0
  322. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js +0 -0
  323. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractNationalNumber.cjs +0 -0
  324. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractNationalNumber.js +0 -0
  325. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.cjs +0 -0
  326. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js +0 -0
  327. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractPhoneContext.cjs +0 -0
  328. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/extractPhoneContext.js +0 -0
  329. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/formatNationalNumberUsingFormat.cjs +0 -0
  330. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/formatNationalNumberUsingFormat.js +0 -0
  331. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getCountryByCallingCode.cjs +0 -0
  332. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getCountryByCallingCode.js +0 -0
  333. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getCountryByNationalNumber.cjs +0 -0
  334. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getCountryByNationalNumber.js +0 -0
  335. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getIddPrefix.cjs +0 -0
  336. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getIddPrefix.js +0 -0
  337. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getNumberType.cjs +0 -0
  338. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getNumberType.js +0 -0
  339. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getPossibleCountriesForNumber.cjs +0 -0
  340. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/getPossibleCountriesForNumber.js +0 -0
  341. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/isObject.cjs +0 -0
  342. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/isObject.js +0 -0
  343. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/isViablePhoneNumber.cjs +0 -0
  344. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/isViablePhoneNumber.js +0 -0
  345. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/matchesEntirely.cjs +0 -0
  346. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/matchesEntirely.js +0 -0
  347. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/parseDigits.cjs +0 -0
  348. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/parseDigits.js +0 -0
  349. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/stripIddPrefix.cjs +0 -0
  350. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/helpers/stripIddPrefix.js +0 -0
  351. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/isPossible.cjs +0 -0
  352. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/isPossible.js +0 -0
  353. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/isValid.cjs +0 -0
  354. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/isValid.js +0 -0
  355. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/metadata.cjs +0 -0
  356. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/metadata.js +0 -0
  357. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/normalizeArguments.cjs +0 -0
  358. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/normalizeArguments.js +0 -0
  359. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parse.cjs +0 -0
  360. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parse.js +0 -0
  361. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parseIncompletePhoneNumber.cjs +0 -0
  362. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parseIncompletePhoneNumber.js +0 -0
  363. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parsePhoneNumber.cjs +0 -0
  364. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parsePhoneNumber.js +0 -0
  365. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parsePhoneNumberWithError_.cjs +0 -0
  366. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parsePhoneNumberWithError_.js +0 -0
  367. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parsePhoneNumber_.cjs +0 -0
  368. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/parsePhoneNumber_.js +0 -0
  369. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/tools/semver-compare.cjs +0 -0
  370. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/es6/tools/semver-compare.js +0 -0
  371. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/metadata.min.json.cjs +0 -0
  372. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/metadata.min.json.js +0 -0
  373. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/min/exports/parsePhoneNumber.cjs +0 -0
  374. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/min/exports/parsePhoneNumber.js +0 -0
  375. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/min/exports/withMetadataArgument.cjs +0 -0
  376. /package/dist/martyrs/node_modules/{libphonenumber-js → .pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js}/min/exports/withMetadataArgument.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.client.cjs","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["import { watch, toRefs } from \"vue\";\n// Router import \nimport routerNotifications from './router/notifications.router.js'; \n// Store \nimport * as storeNotifications from './store/notifications.store.js'; \n// Auth store import\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\n// Global WebSocket import\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n// Layouts \nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue'; \n// Sections \nimport NotificationsList from './components/sections/NotificationsList.vue'; \nimport NotificationPreferences from './components/sections/NotificationPreferences.vue'; \n// Pages \nimport Notifications from './components/pages/Notifications.vue'; \n// Components \nimport NotificationBadge from './components/elements/NotificationBadge.vue'; \nimport NotificationItem from './components/blocks/NotificationItem.vue'; \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', \n this._handleRegistration.bind(this)\n );\n \n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived',\n this._handleNotificationReceived.bind(this)\n );\n \n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed',\n this._handleNotificationAction.bind(this)\n );\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 // 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(\n actionData.notification.data\n );\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 (!('Notification' in window) || !('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('Web Push не поддерживается в браузере');\n return;\n }\n\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('Разрешение на уведомления не получено');\n return;\n }\n\n const registration = await navigator.serviceWorker.register('/sw.js');\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg'\n });\n\n console.log('New subscription:', JSON.stringify(subscription));\n\n // Отправь подписку на сервер\n await store.notifications.actions.registerDevice({\n deviceToken: JSON.stringify(subscription),\n deviceType: 'web'\n });\n }\n\n async initialize() {\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.auth.state.user?._id;\n if (!userId) {\n console.warn('Cannot initialize notifications: No user ID found in auth store');\n return;\n }\n\n console.log('Connecting to websockets via notifications')\n await globalWebSocket.connect(userId);\n\n globalWebSocket.removeModuleListeners('notification');\n\n await globalWebSocket.subscribeModule('notification');\n\n globalWebSocket.addEventListener(\n 'notification',\n (data) => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n\n\n\n // 🎯 Опционально включаем push\n if (this.options.enablePush !== false) {\n await this.pushHandler.requestPermissions();\n await this.registerWebPush(this.store)\n }\n\n this.initialized = true;\n\n // ✅ Загружаем список уведомлений из API\n await this.store.notifications.actions.getNotifications(userId);\n }\n\n disconnect() {\n if (this.isServer) return;\n\n globalWebSocket.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\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.auth.state.user?._id;\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 route = options.route || 'User Profile Root';\n router.addRoute(route, routerNotifications);\n store.addStore('notifications', storeNotifications);\n \n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n globalWebSocket.initialize({ wsUrl: options.wsUrl });\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 // Initialize after auth is confirmed\n const isAuthenticated = store.auth.state.access.status;\n const userId = store.auth.state.user?._id;\n \n if (isAuthenticated && userId) {\n notificationManager.initialize();\n }\n \n // Watch for user login/logout using auth store\n watch(() => store.auth.state.access.status, (isAuthenticated) => {\n if (isAuthenticated) {\n notificationManager.initialize();\n } else {\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n }\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 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 routerNotifications\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 // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // SSR Utilities\n SSRUtils\n};\n\nexport default ModuleNotifications;\n"],"names":["globalWebSocket","routerNotifications","storeNotifications","watch","isAuthenticated","toRefs","NotificationBadge","NotificationItem","NotificationsList","NotificationPreferences","Notifications","NotificationsLayout"],"mappings":";;;;;;;;;;;;;AAuBA,MAAM,qBAAqB;AAAA,EACzB,YAAY,OAAO;AACjB,SAAK,QAAQ;AACb,SAAK,oBAAoB;AACzB,SAAK,SAAS;AACd,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKE,MAAM,aAAa;AAEjB,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO;AAAA,IACb;AAEI,QAAI;AAEF,YAAM,EAAE,UAAS,IAAK,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sDAAiB,CAAC;AACrD,YAAM,EAAE,kBAAiB,IAAK,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,wJAA+B,CAAC;AAC3E,YAAM,EAAE,OAAM,IAAK,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,gIAAmB,CAAC;AAEpD,WAAK,YAAY;AACjB,WAAK,oBAAoB;AACzB,WAAK,SAAS;AAGd,UAAI,CAAC,KAAK,UAAU,oBAAoB;AACtC,eAAO;AAAA,MACf;AAEM,WAAK,gBAAgB;AACrB,aAAO;AAAA,IACR,SAAQ,OAAO;AACd,cAAQ,MAAM,sCAAsC,KAAK;AACzD,aAAO;AAAA,IACb;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKE,MAAM,qBAAqB;AAEzB,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO;AAAA,IACb;AAEI,QAAI,CAAC,KAAK,eAAe;AACvB,YAAM,cAAc,MAAM,KAAK,WAAY;AAC3C,UAAI,CAAC,YAAa,QAAO;AAAA,IAC/B;AAEI,QAAI;AAEF,YAAM,mBAAmB,MAAM,KAAK,kBAAkB,mBAAoB;AAC1E,UAAI,iBAAiB,YAAY,WAAW;AAC1C,gBAAQ,IAAI,qCAAqC;AACjD,eAAO;AAAA,MACf;AAGM,WAAK,gBAAiB;AAGtB,YAAM,KAAK,kBAAkB,SAAU;AACvC,aAAO;AAAA,IACR,SAAQ,OAAO;AACd,cAAQ,MAAM,mDAAmD,KAAK;AACtE,aAAO;AAAA,IACb;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKE,kBAAkB;AAEhB,SAAK,kBAAkB;AAAA,MAAY;AAAA,MACjC,KAAK,oBAAoB,KAAK,IAAI;AAAA,IACnC;AAGD,SAAK,kBAAkB;AAAA,MAAY;AAAA,MACjC,KAAK,4BAA4B,KAAK,IAAI;AAAA,IAC3C;AAGD,SAAK,kBAAkB;AAAA,MAAY;AAAA,MACjC,KAAK,0BAA0B,KAAK,IAAI;AAAA,IACzC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,MAAM,oBAAoB,OAAO;AAC/B,QAAI;AAEF,YAAM,aAAa,MAAM,KAAK,OAAO,QAAS;AAC9C,YAAM,WAAW,MAAM,KAAK,OAAO,MAAO;AAG1C,YAAM,aAAa;AAAA,QACjB,UAAU,SAAS;AAAA,QACnB,YAAY,WAAW,SAAS,YAAa;AAAA,QAC7C,aAAa,MAAM;AAAA,MACpB;AAGD,YAAM,KAAK,MAAM,cAAc,QAAQ,eAAe,UAAU;AAAA,IACjE,SAAQ,OAAO;AACd,cAAQ,MAAM,qCAAqC,KAAK;AAAA,IAC9D;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKE,4BAA4B,cAAc;AAExC,SAAK,MAAM,cAAc,QAAQ,qBAAqB;AAAA,MACpD,OAAO,aAAa;AAAA,MACpB,MAAM,aAAa;AAAA,MACnB,MAAM,aAAa,QAAQ,CAAA;AAAA,IACjC,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKE,0BAA0B,YAAY;AACpC,QAAI,WAAW,gBAAgB,WAAW,aAAa,MAAM;AAC3D,WAAK,MAAM,cAAc,QAAQ;AAAA,QAC/B,WAAW,aAAa;AAAA,MACzB;AAAA,IACP;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKE,kBAAkB;AAChB,QAAI,OAAO,WAAW,aAAa;AACjC;AAAA,IACN;AAEI,QAAI,KAAK,mBAAmB;AAC1B,WAAK,kBAAkB,mBAAoB;AAAA,IACjD;AAAA,EACA;AACA;AAMA,MAAM,oBAAoB;AAAA,EACxB,YAAY,OAAO,UAAU,IAAI;AAC/B,SAAK,QAAQ;AACb,SAAK,UAAU;AACf,SAAK,cAAc,IAAI,qBAAqB,KAAK;AACjD,SAAK,cAAc;AACnB,SAAK,WAAW,OAAO,WAAW;AAAA,EACtC;AAAA,EAEE,MAAM,gBAAgB,OAAO;AAC3B,QAAI,EAAE,kBAAkB,WAAW,EAAE,mBAAmB,cAAc,EAAE,iBAAiB,SAAS;AAChG,cAAQ,KAAK,uCAAuC;AACpD;AAAA,IACN;AAEI,UAAM,aAAa,MAAM,aAAa,kBAAmB;AACzD,QAAI,eAAe,WAAW;AAC5B,cAAQ,KAAK,uCAAuC;AACpD;AAAA,IACN;AAEI,UAAM,eAAe,MAAM,UAAU,cAAc,SAAS,QAAQ;AACpE,UAAM,eAAe,MAAM,aAAa,YAAY,UAAU;AAAA,MAC5D,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,IAC5B,CAAK;AAED,YAAQ,IAAI,qBAAqB,KAAK,UAAU,YAAY,CAAC;AAG7D,UAAM,MAAM,cAAc,QAAQ,eAAe;AAAA,MAC/C,aAAa,KAAK,UAAU,YAAY;AAAA,MACxC,YAAY;AAAA,IAClB,CAAK;AAAA,EACL;AAAA,EAEE,MAAM,aAAa;;AACjB,QAAI,KAAK,eAAe,KAAK,SAAU;AAEvC,UAAM,UAAS,UAAK,MAAM,KAAK,MAAM,SAAtB,mBAA4B;AAC3C,QAAI,CAAC,QAAQ;AACX,cAAQ,KAAK,iEAAiE;AAC9E;AAAA,IACN;AAEI,YAAQ,IAAI,4CAA4C;AACxD,UAAMA,kBAAe,QAAC,QAAQ,MAAM;AAEpCA,sBAAe,QAAC,sBAAsB,cAAc;AAEpD,UAAMA,kBAAe,QAAC,gBAAgB,cAAc;AAEpDA,sBAAAA,QAAgB;AAAA,MACd;AAAA,MACA,CAAC,SAAS;AACR,aAAK,MAAM,cAAc,QAAQ,qBAAqB,KAAK,IAAI;AAAA,MAChE;AAAA,MACD,EAAE,QAAQ,eAAc;AAAA,IACzB;AAKD,QAAI,KAAK,QAAQ,eAAe,OAAO;AACrC,YAAM,KAAK,YAAY,mBAAoB;AAC3C,YAAM,KAAK,gBAAgB,KAAK,KAAK;AAAA,IAC3C;AAEI,SAAK,cAAc;AAGnB,UAAM,KAAK,MAAM,cAAc,QAAQ,iBAAiB,MAAM;AAAA,EAClE;AAAA,EAEE,aAAa;AACX,QAAI,KAAK,SAAU;AAEnBA,sBAAe,QAAC,sBAAsB,cAAc;AACpD,SAAK,YAAY,gBAAiB;AAClC,SAAK,cAAc;AAAA,EACvB;AACA;AAOK,MAAC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMf,MAAM,sBAAsB,OAAO,SAAS;;AAC1C,QAAI;AACF,YAAM,UAAS,WAAM,KAAK,MAAM,SAAjB,mBAAuB;AACtC,UAAI,QAAQ;AAEV,cAAM,MAAM,cAAc,QAAQ,iBAAiB,MAAM;AAAA,MACjE;AAAA,IACK,SAAQ,OAAO;AACd,cAAQ,MAAM,6CAA6C,KAAK;AAAA,IACtE;AAAA,EACA;AACA;AASA,SAAS,wBAAwB,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;;AAEjE,QAAM,QAAQ,QAAQ,SAAS;AAC/B,SAAO,SAAS,OAAOC,4BAAmB;AAC1C,QAAM,SAAS,iBAAiBC,mBAAkB;AAGlD,MAAI,QAAQ,OAAO;AACjBF,sBAAAA,QAAgB,WAAW,EAAE,OAAO,QAAQ,MAAK,CAAE;AAAA,EACvD;AAGE,QAAM,sBAAsB,IAAI,oBAAoB,OAAO;AAAA,IACzD,YAAY,QAAQ,eAAe;AAAA,IACnC,sBAAsB,QAAQ,wBAAwB;AAAA,IACtD,gBAAgB,QAAQ,kBAAkB;AAAA,IAC1C,cAAc,QAAQ,gBAAgB;AAAA,EAC1C,CAAG;AAGD,QAAM,sBAAsB;AAG5B,QAAM,WAAW,OAAO,WAAW;AACnC,QAAM,WAAW,CAAC,YAAY,QAAQ,aAAa;AAEnD,MAAI,UAAU;AAEZ,UAAM,kBAAkB,MAAM,KAAK,MAAM,OAAO;AAChD,UAAM,UAAS,WAAM,KAAK,MAAM,SAAjB,mBAAuB;AAEtC,QAAI,mBAAmB,QAAQ;AAC7B,0BAAoB,WAAY;AAAA,IACtC;AAGIG,QAAK,MAAC,MAAM,MAAM,KAAK,MAAM,OAAO,QAAQ,CAACC,qBAAoB;AAC/D,UAAIA,kBAAiB;AACnB,4BAAoB,WAAY;AAAA,MACxC,OAAa;AACL,4BAAoB,WAAY;AAChC,cAAM,cAAc,UAAU,mBAAoB;AAAA,MAC1D;AAAA,IACA,CAAK;AAAA,EACL;AAGE,MAAI,QAAQ,oBAAoB,MAAM;AACpC,WAAO;AAAA,MACL,GAAGC,WAAO,MAAM,cAAc,KAAK;AAAA,MACnC,GAAG,MAAM,cAAc;AAAA,MACvB,GAAG,MAAM,cAAc;AAAA,MACvB,MAAM,oBAAoB,WAAW,KAAK,mBAAmB;AAAA,MAC7D,YAAY,oBAAoB,WAAW,KAAK,mBAAmB;AAAA,MACnE;AAAA,IACD;AAAA,EACL,CAAG;AAED,SAAO;AACT;AAGK,MAAC,sBAAsB;AAAA,EAC1B,YAAY;AAAA,EACZ,KAAK;AAAA;AAAA,EACL,OAAO;AAAA,IACL,OAAO;AAAA,MACX,oBAAMH;AAAAA,IACD;AAAA,IACD,QAAQ;AAAA,MACND,qBAAAA,qBAAAA;AAAAA,IACD;AAAA,IACD,YAAY;AAAA;AAAA,MAEhB,mBAAMK,kBAAiB;AAAA;AAAA,MAEvB,kBAAMC,iBAAgB;AAAA;AAAA,MAEtB,mBAAMC,kBAAiB;AAAA,MACvB,yBAAMC,wBAAuB;AAAA;AAAA,MAE7B,eAAMC,cAAa;AAAA;AAAA,MAEbC,qBAAAA,oBAAAA;AAAAA,IACN;AAAA,EACA;AACA;;;;;;;;;"}
1
+ {"version":3,"file":"notifications.client.cjs","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["import { watch, toRefs } from \"vue\";\n// Router import \nimport routerNotifications from './router/notifications.router.js'; \n// Store \nimport * as storeNotifications from './store/notifications.store.js'; \n// Auth store import\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\n// Global WebSocket import\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n// Layouts \nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue'; \n// Sections \nimport NotificationsList from './components/sections/NotificationsList.vue'; \nimport NotificationPreferences from './components/sections/NotificationPreferences.vue'; \n// Pages \nimport Notifications from './components/pages/Notifications.vue'; \n// Components \nimport NotificationBadge from './components/elements/NotificationBadge.vue'; \nimport NotificationItem from './components/blocks/NotificationItem.vue'; \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', \n this._handleRegistration.bind(this)\n );\n \n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived',\n this._handleNotificationReceived.bind(this)\n );\n \n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed',\n this._handleNotificationAction.bind(this)\n );\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 // 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(\n actionData.notification.data\n );\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 (!('Notification' in window) || !('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('Web Push не поддерживается в браузере');\n return;\n }\n\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('Разрешение на уведомления не получено');\n return;\n }\n\n const registration = await navigator.serviceWorker.register('/sw.js');\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg'\n });\n\n console.log('New subscription:', JSON.stringify(subscription));\n\n // Отправь подписку на сервер\n await store.notifications.actions.registerDevice({\n deviceToken: JSON.stringify(subscription),\n deviceType: 'web'\n });\n }\n\n async initialize() {\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.auth.state.user?._id;\n if (!userId) {\n console.warn('Cannot initialize notifications: No user ID found in auth store');\n return;\n }\n\n console.log('Connecting to websockets via notifications')\n await globalWebSocket.connect(userId);\n\n globalWebSocket.removeModuleListeners('notification');\n\n await globalWebSocket.subscribeModule('notification');\n\n globalWebSocket.addEventListener(\n 'notification',\n (data) => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n\n\n\n // 🎯 Опционально включаем push\n if (this.options.enablePush !== false) {\n await this.pushHandler.requestPermissions();\n await this.registerWebPush(this.store)\n }\n\n this.initialized = true;\n\n // ✅ Загружаем список уведомлений из API\n await this.store.notifications.actions.getNotifications(userId);\n }\n\n disconnect() {\n if (this.isServer) return;\n\n globalWebSocket.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\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.auth.state.user?._id;\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 route = options.route || 'User Profile Root';\n router.addRoute(route, routerNotifications);\n store.addStore('notifications', storeNotifications);\n \n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n globalWebSocket.initialize({ wsUrl: options.wsUrl });\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 // Initialize after auth is confirmed\n const isAuthenticated = store.auth.state.access.status;\n const userId = store.auth.state.user?._id;\n \n if (isAuthenticated && userId) {\n notificationManager.initialize();\n }\n \n // Watch for user login/logout using auth store\n watch(() => store.auth.state.access.status, (isAuthenticated) => {\n if (isAuthenticated) {\n notificationManager.initialize();\n } else {\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n }\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 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 routerNotifications\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 // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // SSR Utilities\n SSRUtils\n};\n\nexport default ModuleNotifications;\n"],"names":["globalWebSocket","routerNotifications","storeNotifications","watch","isAuthenticated","toRefs","NotificationBadge","NotificationItem","NotificationsList","NotificationPreferences","Notifications","NotificationsLayout"],"mappings":"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"}
@@ -24,7 +24,7 @@ class CapacitorPushHandler {
24
24
  return false;
25
25
  }
26
26
  try {
27
- const { Capacitor } = await import("../../../node_modules/@capacitor/core/dist/index.js");
27
+ const { Capacitor } = await import("../../../node_modules/.pnpm/@capacitor_core@7.2.0/node_modules/@capacitor/core/dist/index.js");
28
28
  const { PushNotifications } = await import("../../../../node_modules/.pnpm/@capacitor_push-notifications@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor/push-notifications/dist/esm/index.js");
29
29
  const { Device } = await import("../../../../node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.2.0/node_modules/@capacitor/device/dist/esm/index.js");
30
30
  this.capacitor = Capacitor;
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.client.js","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["import { watch, toRefs } from \"vue\";\n// Router import \nimport routerNotifications from './router/notifications.router.js'; \n// Store \nimport * as storeNotifications from './store/notifications.store.js'; \n// Auth store import\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\n// Global WebSocket import\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n// Layouts \nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue'; \n// Sections \nimport NotificationsList from './components/sections/NotificationsList.vue'; \nimport NotificationPreferences from './components/sections/NotificationPreferences.vue'; \n// Pages \nimport Notifications from './components/pages/Notifications.vue'; \n// Components \nimport NotificationBadge from './components/elements/NotificationBadge.vue'; \nimport NotificationItem from './components/blocks/NotificationItem.vue'; \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', \n this._handleRegistration.bind(this)\n );\n \n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived',\n this._handleNotificationReceived.bind(this)\n );\n \n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed',\n this._handleNotificationAction.bind(this)\n );\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 // 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(\n actionData.notification.data\n );\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 (!('Notification' in window) || !('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('Web Push не поддерживается в браузере');\n return;\n }\n\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('Разрешение на уведомления не получено');\n return;\n }\n\n const registration = await navigator.serviceWorker.register('/sw.js');\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg'\n });\n\n console.log('New subscription:', JSON.stringify(subscription));\n\n // Отправь подписку на сервер\n await store.notifications.actions.registerDevice({\n deviceToken: JSON.stringify(subscription),\n deviceType: 'web'\n });\n }\n\n async initialize() {\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.auth.state.user?._id;\n if (!userId) {\n console.warn('Cannot initialize notifications: No user ID found in auth store');\n return;\n }\n\n console.log('Connecting to websockets via notifications')\n await globalWebSocket.connect(userId);\n\n globalWebSocket.removeModuleListeners('notification');\n\n await globalWebSocket.subscribeModule('notification');\n\n globalWebSocket.addEventListener(\n 'notification',\n (data) => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n\n\n\n // 🎯 Опционально включаем push\n if (this.options.enablePush !== false) {\n await this.pushHandler.requestPermissions();\n await this.registerWebPush(this.store)\n }\n\n this.initialized = true;\n\n // ✅ Загружаем список уведомлений из API\n await this.store.notifications.actions.getNotifications(userId);\n }\n\n disconnect() {\n if (this.isServer) return;\n\n globalWebSocket.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\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.auth.state.user?._id;\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 route = options.route || 'User Profile Root';\n router.addRoute(route, routerNotifications);\n store.addStore('notifications', storeNotifications);\n \n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n globalWebSocket.initialize({ wsUrl: options.wsUrl });\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 // Initialize after auth is confirmed\n const isAuthenticated = store.auth.state.access.status;\n const userId = store.auth.state.user?._id;\n \n if (isAuthenticated && userId) {\n notificationManager.initialize();\n }\n \n // Watch for user login/logout using auth store\n watch(() => store.auth.state.access.status, (isAuthenticated) => {\n if (isAuthenticated) {\n notificationManager.initialize();\n } else {\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n }\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 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 routerNotifications\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 // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // SSR Utilities\n SSRUtils\n};\n\nexport default ModuleNotifications;\n"],"names":["routerNotifications","storeNotifications","isAuthenticated"],"mappings":"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"}
1
+ {"version":3,"file":"notifications.client.js","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["import { watch, toRefs } from \"vue\";\n// Router import \nimport routerNotifications from './router/notifications.router.js'; \n// Store \nimport * as storeNotifications from './store/notifications.store.js'; \n// Auth store import\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\n// Global WebSocket import\nimport globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\n// Layouts \nimport NotificationsLayout from './components/layouts/NotificationsLayout.vue'; \n// Sections \nimport NotificationsList from './components/sections/NotificationsList.vue'; \nimport NotificationPreferences from './components/sections/NotificationPreferences.vue'; \n// Pages \nimport Notifications from './components/pages/Notifications.vue'; \n// Components \nimport NotificationBadge from './components/elements/NotificationBadge.vue'; \nimport NotificationItem from './components/blocks/NotificationItem.vue'; \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', \n this._handleRegistration.bind(this)\n );\n \n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived',\n this._handleNotificationReceived.bind(this)\n );\n \n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed',\n this._handleNotificationAction.bind(this)\n );\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 // 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(\n actionData.notification.data\n );\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 (!('Notification' in window) || !('serviceWorker' in navigator) || !('PushManager' in window)) {\n console.warn('Web Push не поддерживается в браузере');\n return;\n }\n\n const permission = await Notification.requestPermission();\n if (permission !== 'granted') {\n console.warn('Разрешение на уведомления не получено');\n return;\n }\n\n const registration = await navigator.serviceWorker.register('/sw.js');\n const subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: 'BJtNnRrx05VQS0abnkHC-8gHJWpnmoqC_iQveENCmZOZIs-adWzqAiqFCdGVVd7CbiaLW-Q5iuIBDRgM9G-VnKg'\n });\n\n console.log('New subscription:', JSON.stringify(subscription));\n\n // Отправь подписку на сервер\n await store.notifications.actions.registerDevice({\n deviceToken: JSON.stringify(subscription),\n deviceType: 'web'\n });\n }\n\n async initialize() {\n if (this.initialized || this.isServer) return;\n\n const userId = this.store.auth.state.user?._id;\n if (!userId) {\n console.warn('Cannot initialize notifications: No user ID found in auth store');\n return;\n }\n\n console.log('Connecting to websockets via notifications')\n await globalWebSocket.connect(userId);\n\n globalWebSocket.removeModuleListeners('notification');\n\n await globalWebSocket.subscribeModule('notification');\n\n globalWebSocket.addEventListener(\n 'notification',\n (data) => {\n this.store.notifications.actions.addLocalNotification(data.data);\n },\n { module: 'notification' }\n );\n\n\n\n // 🎯 Опционально включаем push\n if (this.options.enablePush !== false) {\n await this.pushHandler.requestPermissions();\n await this.registerWebPush(this.store)\n }\n\n this.initialized = true;\n\n // ✅ Загружаем список уведомлений из API\n await this.store.notifications.actions.getNotifications(userId);\n }\n\n disconnect() {\n if (this.isServer) return;\n\n globalWebSocket.removeModuleListeners('notification');\n this.pushHandler.removeListeners();\n this.initialized = false;\n }\n}\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.auth.state.user?._id;\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 route = options.route || 'User Profile Root';\n router.addRoute(route, routerNotifications);\n store.addStore('notifications', storeNotifications);\n \n // Initialize global WebSocket if needed\n if (options.wsUrl) {\n globalWebSocket.initialize({ wsUrl: options.wsUrl });\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 // Initialize after auth is confirmed\n const isAuthenticated = store.auth.state.access.status;\n const userId = store.auth.state.user?._id;\n \n if (isAuthenticated && userId) {\n notificationManager.initialize();\n }\n \n // Watch for user login/logout using auth store\n watch(() => store.auth.state.access.status, (isAuthenticated) => {\n if (isAuthenticated) {\n notificationManager.initialize();\n } else {\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n }\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 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 routerNotifications\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 // Sections\n NotificationsList,\n NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // SSR Utilities\n SSRUtils\n};\n\nexport default ModuleNotifications;\n"],"names":["routerNotifications","storeNotifications","isAuthenticated"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tooltip = require("../../../../components/Tooltip/Tooltip.vue.cjs");
4
+ const Tooltip = require("../../../../components/Tooltip/Tooltip.vue2.cjs");
5
5
  const IconStatusCreated = require("../icons/IconStatusCreated.vue.cjs");
6
6
  const IconStatusConfirmed = require("../icons/IconStatusConfirmed.vue.cjs");
7
7
  const IconStatusInUse = require("../icons/IconStatusInUse.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { computed, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, Fragment, renderList, toDisplayString, createVNode, withCtx, createBlock, resolveDynamicComponent } from "vue";
2
- import _sfc_main$7 from "../../../../components/Tooltip/Tooltip.vue.js";
2
+ import _sfc_main$7 from "../../../../components/Tooltip/Tooltip.vue2.js";
3
3
  import _sfc_main$6 from "../icons/IconStatusCreated.vue.js";
4
4
  import _sfc_main$5 from "../icons/IconStatusConfirmed.vue.js";
5
5
  import _sfc_main$2 from "../icons/IconStatusInUse.vue.js";
@@ -10,7 +10,7 @@ const CardOrderItem = require("../blocks/CardOrderItem.vue.cjs");
10
10
  const CardOrganization = require("../../../organizations/components/blocks/CardOrganization.vue.cjs");
11
11
  const ChatPage = require("../../../chats/components/pages/ChatPage.vue.cjs");
12
12
  const PriceTotal = require("../elements/PriceTotal.vue.cjs");
13
- ;/* empty css */
13
+ ;/* empty css */
14
14
  const globals = require("../../../globals/views/store/globals.cjs");
15
15
  const auth = require("../../../auth/views/store/auth.cjs");
16
16
  const orders = require("../../store/orders.cjs");
@@ -8,7 +8,7 @@ import _sfc_main$3 from "../blocks/CardOrderItem.vue.js";
8
8
  import _sfc_main$5 from "../../../organizations/components/blocks/CardOrganization.vue.js";
9
9
  import _sfc_main$6 from "../../../chats/components/pages/ChatPage.vue.js";
10
10
  import _sfc_main$4 from "../elements/PriceTotal.vue.js";
11
- /* empty css */
11
+ /* empty css */
12
12
  import { state } from "../../../globals/views/store/globals.js";
13
13
  import { state as state$1 } from "../../../auth/views/store/auth.js";
14
14
  import { actions, state as state$2, getters, mutations } from "../../store/orders.js";
@@ -213,13 +213,12 @@ const _sfc_main = {
213
213
  }
214
214
  }
215
215
  return (_ctx, _cache) => {
216
- var _a, _b, _c, _d, _e, _f;
216
+ var _a, _b, _c, _d, _e;
217
217
  return vue.openBlock(), vue.createElementBlock("section", _hoisted_1, [
218
218
  auth.state.access.status === false ? (vue.openBlock(), vue.createBlock(AskToLogin.default, {
219
219
  key: 0,
220
220
  class: "mn-b-thin"
221
221
  })) : vue.createCommentVNode("", true),
222
- vue.createTextVNode(" " + vue.toDisplayString(shopcart.state.organization) + " " + vue.toDisplayString((_a = orderOrganization.value.value) == null ? void 0 : _a._id) + " ", 1),
223
222
  vue.createElementVNode("div", _hoisted_2, [
224
223
  shopcart.state.positions < 1 ? (vue.openBlock(), vue.createBlock(EmptyState.default, { key: 0 })) : vue.createCommentVNode("", true),
225
224
  order.value.status === true && shopcart.state.positions.length > 0 ? (vue.openBlock(), vue.createBlock(Succes.default, {
@@ -262,11 +261,11 @@ const _sfc_main = {
262
261
  totalPrice: vue.unref(cartTotalPrice),
263
262
  deliveryRate: deliveryCost.value,
264
263
  currency: vue.unref(returnCurrency)(),
265
- showFees: (_b = globals.state.options) == null ? void 0 : _b.orders.showFees,
266
- feesRate: ((_c = globals.state.options) == null ? void 0 : _c.orders.feesRate) || 0,
267
- showVat: (_d = globals.state.options) == null ? void 0 : _d.orders.showVat,
268
- vatRate: ((_e = globals.state.options) == null ? void 0 : _e.orders.vatRate) || 0,
269
- showDeliveryFee: (_f = globals.state.options) == null ? void 0 : _f.orders.showDeliveryFee
264
+ showFees: (_a = globals.state.options) == null ? void 0 : _a.orders.showFees,
265
+ feesRate: ((_b = globals.state.options) == null ? void 0 : _b.orders.feesRate) || 0,
266
+ showVat: (_c = globals.state.options) == null ? void 0 : _c.orders.showVat,
267
+ vatRate: ((_d = globals.state.options) == null ? void 0 : _d.orders.vatRate) || 0,
268
+ showDeliveryFee: (_e = globals.state.options) == null ? void 0 : _e.orders.showDeliveryFee
270
269
  }, null, 8, ["totalPrice", "deliveryRate", "currency", "showFees", "feesRate", "showVat", "vatRate", "showDeliveryFee"])
271
270
  ]),
272
271
  orders.state.current.status !== true && shopcart.state.positions.length > 0 ? (vue.openBlock(), vue.createBlock(Button.default, {
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCreate.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\t{{shopcart.state.organization}}\n\t{{orderOrganization.value?._id}}\n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Empty State -->\n\t\t<EmptyState \n\t\t\tv-if=\"shopcart.state.positions < 1\" \n\t\t/>\t\n\n\t\t<Succes \n\t\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t\t:order=\"order\" \n\t\t/>\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\t:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"product in shopcart.state.positions\" \n\t\t\t\t\t:key=\"product._id\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:product=\"product\" \n\t :increase=\"product => shopcart.actions.incrementItemQuantity(product._id)\"\n\t :decrease=\"product => shopcart.actions.decrementItemQuantity(product._id)\"\n\t :remove=\"product => shopcart.actions.removeProduct(product._id)\"\n\t\t\t\t\t@updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ productId: product._id, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\nimport * as orders from '@martyrs/src/modules/orders/store/orders';\nimport * as users from '@martyrs/src/modules/auth/views/store/users';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n\n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["ref","useRoute","useRouter","useGlobalMixins","computed","orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","onMounted","users.actions","organizations.actions","shopcart.state","_a","_b","_c","watch","order","orders.actions","shopcart.actions"],"mappings":"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"}
1
+ {"version":3,"file":"OrderCreate.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Empty State -->\n\t\t<EmptyState \n\t\t\tv-if=\"shopcart.state.positions < 1\" \n\t\t/>\t\n\n\t\t<Succes \n\t\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t\t:order=\"order\" \n\t\t/>\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\t:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"product in shopcart.state.positions\" \n\t\t\t\t\t:key=\"product._id\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:product=\"product\" \n\t :increase=\"product => shopcart.actions.incrementItemQuantity(product._id)\"\n\t :decrease=\"product => shopcart.actions.decrementItemQuantity(product._id)\"\n\t :remove=\"product => shopcart.actions.removeProduct(product._id)\"\n\t\t\t\t\t@updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ productId: product._id, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\nimport * as orders from '@martyrs/src/modules/orders/store/orders';\nimport * as users from '@martyrs/src/modules/auth/views/store/users';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n\n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["ref","useRoute","useRouter","useGlobalMixins","computed","orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","onMounted","users.actions","organizations.actions","shopcart.state","_a","_b","_c","watch","order","orders.actions","shopcart.actions"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ref, computed, onMounted, watch, createElementBlock, openBlock, createBlock, createCommentVNode, createTextVNode, createElementVNode, toDisplayString, createVNode, Fragment, renderList, unref, withCtx } from "vue";
1
+ import { ref, computed, onMounted, watch, createElementBlock, openBlock, createBlock, createCommentVNode, createElementVNode, createVNode, Fragment, renderList, unref, withCtx, createTextVNode } from "vue";
2
2
  import _sfc_main$9 from "../../../../components/Button/Button.vue.js";
3
3
  import _sfc_main$7 from "../blocks/CardOrderItem.vue.js";
4
4
  import _sfc_main$1 from "../sections/AskToLogin.vue.js";
@@ -211,13 +211,12 @@ const _sfc_main = {
211
211
  }
212
212
  }
213
213
  return (_ctx, _cache) => {
214
- var _a, _b, _c, _d, _e, _f;
214
+ var _a, _b, _c, _d, _e;
215
215
  return openBlock(), createElementBlock("section", _hoisted_1, [
216
216
  state$3.access.status === false ? (openBlock(), createBlock(_sfc_main$1, {
217
217
  key: 0,
218
218
  class: "mn-b-thin"
219
219
  })) : createCommentVNode("", true),
220
- createTextVNode(" " + toDisplayString(state$4.organization) + " " + toDisplayString((_a = orderOrganization.value.value) == null ? void 0 : _a._id) + " ", 1),
221
220
  createElementVNode("div", _hoisted_2, [
222
221
  state$4.positions < 1 ? (openBlock(), createBlock(_sfc_main$2, { key: 0 })) : createCommentVNode("", true),
223
222
  order.value.status === true && state$4.positions.length > 0 ? (openBlock(), createBlock(_sfc_main$3, {
@@ -260,11 +259,11 @@ const _sfc_main = {
260
259
  totalPrice: unref(cartTotalPrice),
261
260
  deliveryRate: deliveryCost.value,
262
261
  currency: unref(returnCurrency)(),
263
- showFees: (_b = state$2.options) == null ? void 0 : _b.orders.showFees,
264
- feesRate: ((_c = state$2.options) == null ? void 0 : _c.orders.feesRate) || 0,
265
- showVat: (_d = state$2.options) == null ? void 0 : _d.orders.showVat,
266
- vatRate: ((_e = state$2.options) == null ? void 0 : _e.orders.vatRate) || 0,
267
- showDeliveryFee: (_f = state$2.options) == null ? void 0 : _f.orders.showDeliveryFee
262
+ showFees: (_a = state$2.options) == null ? void 0 : _a.orders.showFees,
263
+ feesRate: ((_b = state$2.options) == null ? void 0 : _b.orders.feesRate) || 0,
264
+ showVat: (_c = state$2.options) == null ? void 0 : _c.orders.showVat,
265
+ vatRate: ((_d = state$2.options) == null ? void 0 : _d.orders.vatRate) || 0,
266
+ showDeliveryFee: (_e = state$2.options) == null ? void 0 : _e.orders.showDeliveryFee
268
267
  }, null, 8, ["totalPrice", "deliveryRate", "currency", "showFees", "feesRate", "showVat", "vatRate", "showDeliveryFee"])
269
268
  ]),
270
269
  state.current.status !== true && state$4.positions.length > 0 ? (openBlock(), createBlock(_sfc_main$9, {
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCreate.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\t{{shopcart.state.organization}}\n\t{{orderOrganization.value?._id}}\n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Empty State -->\n\t\t<EmptyState \n\t\t\tv-if=\"shopcart.state.positions < 1\" \n\t\t/>\t\n\n\t\t<Succes \n\t\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t\t:order=\"order\" \n\t\t/>\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\t:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"product in shopcart.state.positions\" \n\t\t\t\t\t:key=\"product._id\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:product=\"product\" \n\t :increase=\"product => shopcart.actions.incrementItemQuantity(product._id)\"\n\t :decrease=\"product => shopcart.actions.decrementItemQuantity(product._id)\"\n\t :remove=\"product => shopcart.actions.removeProduct(product._id)\"\n\t\t\t\t\t@updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ productId: product._id, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\nimport * as orders from '@martyrs/src/modules/orders/store/orders';\nimport * as users from '@martyrs/src/modules/auth/views/store/users';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n\n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","users.actions","organizations.actions","shopcart.state","_a","_b","_c","order","orders.actions","shopcart.actions"],"mappings":"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"}
1
+ {"version":3,"file":"OrderCreate.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Empty State -->\n\t\t<EmptyState \n\t\t\tv-if=\"shopcart.state.positions < 1\" \n\t\t/>\t\n\n\t\t<Succes \n\t\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t\t:order=\"order\" \n\t\t/>\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\t:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"product in shopcart.state.positions\" \n\t\t\t\t\t:key=\"product._id\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:product=\"product\" \n\t :increase=\"product => shopcart.actions.incrementItemQuantity(product._id)\"\n\t :decrease=\"product => shopcart.actions.decrementItemQuantity(product._id)\"\n\t :remove=\"product => shopcart.actions.removeProduct(product._id)\"\n\t\t\t\t\t@updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ productId: product._id, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\nimport * as orders from '@martyrs/src/modules/orders/store/orders';\nimport * as users from '@martyrs/src/modules/auth/views/store/users';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n\n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","users.actions","organizations.actions","shopcart.state","_a","_b","_c","order","orders.actions","shopcart.actions"],"mappings":"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"}
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
6
6
  ;/* empty css */
7
- ;/* empty css */
7
+ ;/* empty css */
8
8
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
9
9
  const SectionPageTitle = require("../../../globals/views/components/sections/SectionPageTitle.vue.cjs");
10
10
  const MembersAdd = require("../sections/MembersAdd.vue.cjs");
@@ -2,7 +2,7 @@ import { ref, onMounted, computed, resolveComponent, createElementBlock, openBlo
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
4
4
  /* empty css */
5
- /* empty css */
5
+ /* empty css */
6
6
  import _sfc_main$2 from "../../../../components/Popup/Popup.vue.js";
7
7
  import _sfc_main$1 from "../../../globals/views/components/sections/SectionPageTitle.vue.js";
8
8
  import _sfc_main$3 from "../sections/MembersAdd.vue.js";
@@ -6,7 +6,7 @@ const mixins = require("../../../../globals/views/mixins/mixins.cjs");
6
6
  const pages = require("../../store/pages.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
8
8
  ;/* empty css */
9
- ;/* empty css */
9
+ ;/* empty css */
10
10
  const Constructor = require("../../../../constructor/components/sections/Constructor.vue.cjs");
11
11
  const _hoisted_1 = { key: 0 };
12
12
  const _hoisted_2 = {
@@ -4,7 +4,7 @@ import { useGlobalMixins } from "../../../../globals/views/mixins/mixins.js";
4
4
  import { actions, state } from "../../store/pages.js";
5
5
  import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
6
6
  /* empty css */
7
- /* empty css */
7
+ /* empty css */
8
8
  import _sfc_main$1 from "../../../../constructor/components/sections/Constructor.vue.js";
9
9
  const _hoisted_1 = { key: 0 };
10
10
  const _hoisted_2 = {