@ozdao/martyrs 0.2.477 → 0.2.479
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.
- package/README.md +17 -10
- package/dist/Media-B1ZP3D7B.cjs +1 -0
- package/dist/{Media-CecrG6g6.mjs → Media-CKk33U4A.js} +1 -1
- package/dist/abac-BuL5pUZ4.js +949 -0
- package/dist/abac-XF1JVCLI.cjs +948 -0
- package/dist/addUserStatusFields-B8g3DAuZ.js +88 -0
- package/dist/addUserStatusFields-DP_0f12s.cjs +104 -0
- package/dist/auth.server.cjs +600 -0
- package/dist/auth.server.js +546 -709
- package/dist/authJwt-DBB51Iql.cjs +73 -0
- package/dist/authJwt-DcYNNwcr.js +74 -0
- package/dist/builder.cjs +1356 -0
- package/dist/builder.js +1193 -1377
- package/dist/chats.server.cjs +106 -0
- package/dist/chats.server.js +99 -129
- package/dist/common.schema-Bw1O5_2Q.js +13 -0
- package/dist/common.schema-BzFEVNn3.cjs +12 -0
- package/dist/community.server.cjs +840 -0
- package/dist/community.server.js +722 -949
- package/dist/credentials.schema-C9FB2EyY.js +10 -0
- package/dist/credentials.schema-DwhGdrwC.cjs +9 -0
- package/dist/engagement.schema-Dh1adRsn.js +24 -0
- package/dist/engagement.schema-JADHu8pj.cjs +23 -0
- package/dist/events.server.cjs +856 -0
- package/dist/events.server.js +713 -916
- package/dist/files.server.cjs +275 -0
- package/dist/files.server.js +233 -315
- package/dist/gallery.server.cjs +270 -0
- package/dist/gallery.server.js +245 -311
- package/dist/globals.abac-Cm9e8Jdk.cjs +297 -0
- package/dist/globals.abac-DBV_kaOq.js +298 -0
- package/dist/globals.logger-Bf6rRU7j.js +156 -0
- package/dist/globals.logger-CZMgIMlM.cjs +155 -0
- package/dist/globals.observer-CDqUjVU5.js +44 -0
- package/dist/globals.observer-CV2wCzzh.cjs +43 -0
- package/dist/globals.server.cjs +446 -0
- package/dist/globals.server.js +376 -399
- package/dist/globals.verifier-CWFz5Gh2.js +614 -0
- package/dist/globals.verifier-D68mHEBl.cjs +613 -0
- package/dist/index-CsJwdsBW.js +170 -0
- package/dist/index-YNOkL1mu.cjs +186 -0
- package/dist/mailing-C11EYWm-.js +85 -0
- package/dist/mailing-q7sR8gCV.cjs +101 -0
- package/dist/{main-DmznvhMM.mjs → main-BhAiwmnI.js} +4270 -4674
- package/dist/main-C75EcBpE.cjs +11 -0
- package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.cjs +0 -1
- package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js +0 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +3 -3
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +3 -3
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +127 -74
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +136 -83
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.cjs +20 -22
- package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Field/Field.vue.js +21 -23
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.cjs +245 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.js +245 -1
- package/dist/martyrs/src/components/FieldPhone/all-countries.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/click-outside.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/click-outside.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +2 -2
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +451 -176
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +451 -176
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/create-tags.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldTags/create-tags.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs +1 -4
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js +1 -4
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js.map +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs +27 -5
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -1
- package/dist/martyrs/src/components/Popup/Popup.vue2.js +28 -6
- package/dist/martyrs/src/components/Popup/Popup.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.cjs +2 -4
- package/dist/martyrs/src/components/Select/Select.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.js +2 -4
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs +639 -0
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js +639 -0
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Table/Table.vue.cjs +23 -38
- package/dist/martyrs/src/components/Table/Table.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Table/Table.vue.js +24 -39
- package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs → Tooltip.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.js → Tooltip.vue2.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs.map → Tooltip.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +4 -4
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +4 -4
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/auth.client.cjs +5 -5
- package/dist/martyrs/src/modules/auth/auth.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/auth.client.js +5 -5
- package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/auth.cjs +87 -98
- package/dist/martyrs/src/modules/auth/views/router/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/auth.js +87 -98
- package/dist/martyrs/src/modules/auth/views/router/auth.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.cjs +105 -106
- package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/router/users.js +105 -106
- package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs +7 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +7 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/twofa.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/twofa.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.js +1 -1
- package/dist/martyrs/src/modules/auth/views/store/users.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/validations/inputs.validation.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/validations/inputs.validation.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/backoffice.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/backoffice.client.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/router/backoffice.cjs +1 -4
- package/dist/martyrs/src/modules/backoffice/router/backoffice.cjs.map +1 -1
- package/dist/martyrs/src/modules/backoffice/router/backoffice.js +1 -4
- package/dist/martyrs/src/modules/backoffice/router/backoffice.js.map +1 -1
- package/dist/martyrs/src/modules/chats/chats.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/chats.client.js.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs +10 -6
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.js +10 -6
- package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
- package/dist/martyrs/src/modules/community/community.client.cjs +14 -14
- package/dist/martyrs/src/modules/community/community.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/community.client.js +3 -3
- package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +16 -10
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +16 -10
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +1 -1
- package/dist/martyrs/src/modules/community/router/blogposts.cjs +61 -59
- package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/router/blogposts.js +61 -59
- package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
- package/dist/martyrs/src/modules/community/store/blogposts.cjs +14 -10
- package/dist/martyrs/src/modules/community/store/blogposts.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/store/blogposts.js +14 -10
- package/dist/martyrs/src/modules/community/store/blogposts.js.map +1 -1
- package/dist/martyrs/src/modules/community/store/reactions.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/store/reactions.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +5 -3
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +5 -3
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +12 -6
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +12 -6
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +3 -4
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +3 -4
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/events.client.cjs +17 -17
- package/dist/martyrs/src/modules/events/events.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/events.client.js +4 -4
- package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
- package/dist/martyrs/src/modules/events/router/events.cjs +11 -21
- package/dist/martyrs/src/modules/events/router/events.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/router/events.js +11 -21
- package/dist/martyrs/src/modules/events/router/events.js.map +1 -1
- package/dist/martyrs/src/modules/events/store/events.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/store/events.js.map +1 -1
- package/dist/martyrs/src/modules/events/store/tickets.cjs +3 -1
- package/dist/martyrs/src/modules/events/store/tickets.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/store/tickets.js +3 -1
- package/dist/martyrs/src/modules/events/store/tickets.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/gallery.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/gallery.client.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.cjs +17 -17
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.js +17 -17
- package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/router/gallery.router.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/store/gallery.cjs.map +1 -1
- package/dist/martyrs/src/modules/gallery/store/gallery.js.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs +24 -8
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +22 -6
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs +9 -7
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.js +9 -7
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/store.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/classes/store.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/store.js +2 -2
- package/dist/martyrs/src/modules/globals/views/classes/store.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +308 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +308 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +61 -49
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +62 -50
- package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +9 -10
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +9 -10
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/localization/get-browser-locale.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/localization/get-browser-locale.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +24 -5
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +24 -5
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs +74 -0
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js +74 -0
- package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs +200 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js +200 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.cjs +21 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.cjs.map +1 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js +21 -0
- package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js.map +1 -0
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.cjs +1 -4
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.js +1 -4
- package/dist/martyrs/src/modules/globals/views/router/addRoutes.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/store/globals.cjs +4 -14
- package/dist/martyrs/src/modules/globals/views/store/globals.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/store/globals.js +4 -14
- package/dist/martyrs/src/modules/globals/views/store/globals.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/axios-instance.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/axios-instance.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +2 -2
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.cjs +57 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.js +57 -0
- package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.cjs +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.js +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconFile.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.cjs +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.js +33 -0
- package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.cjs +35 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.js +35 -0
- package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/icons.client.cjs +97 -79
- package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/icons/icons.client.js +140 -122
- package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs +25 -0
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js +25 -0
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.cjs +35 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.js +35 -0
- package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +34 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +34 -0
- package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.cjs +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.js +31 -0
- package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +39 -0
- package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +278 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +278 -0
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.cjs +33 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.cjs.map +1 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.js +33 -0
- package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
- package/dist/martyrs/src/modules/icons/socials/dribbble.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/dribbble.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/facebook.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/facebook.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/instagram.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/instagram.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/line.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/line.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/linkedin.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/linkedin.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/reddit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/reddit.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/telegram.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/telegram.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/twitter.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/twitter.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/vk.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/vk.vue.js +2 -2
- package/dist/martyrs/src/modules/icons/socials/youtube.vue.cjs +2 -2
- package/dist/martyrs/src/modules/icons/socials/youtube.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/landing.client.cjs +12 -12
- package/dist/martyrs/src/modules/landing/landing.client.js +22 -22
- package/dist/martyrs/src/modules/marketplace/marketplace.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.cjs +0 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js +0 -1
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.cjs +25 -19
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +25 -19
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
- package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js +1 -1
- package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs +18 -27
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +16 -25
- package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.js +1 -1
- package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.cjs +5 -5
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +5 -5
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/router/orders.router.cjs +2 -3
- package/dist/martyrs/src/modules/orders/router/orders.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/router/orders.router.js +2 -3
- package/dist/martyrs/src/modules/orders/router/orders.router.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/customers.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/customers.store.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/order.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/order.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/orders.cjs +23 -26
- package/dist/martyrs/src/modules/orders/store/orders.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/orders.js +23 -26
- package/dist/martyrs/src/modules/orders/store/orders.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs +94 -47
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.js +94 -47
- package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/testimonials.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/testimonials.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +16 -16
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +5 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +5 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +8 -8
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +5 -5
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +225 -0
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +225 -0
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs +28 -28
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/organizations.client.js +10 -10
- package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.cjs +26 -23
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.js +26 -23
- package/dist/martyrs/src/modules/organizations/router/backoffice.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs +27 -23
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.js +27 -23
- package/dist/martyrs/src/modules/organizations/router/departments.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/members.router.cjs +17 -15
- package/dist/martyrs/src/modules/organizations/router/members.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/members.router.js +17 -15
- package/dist/martyrs/src/modules/organizations/router/members.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +73 -60
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +73 -60
- package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/departments.cjs +3 -1
- package/dist/martyrs/src/modules/organizations/store/departments.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/departments.js +3 -1
- package/dist/martyrs/src/modules/organizations/store/departments.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/invites.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/invites.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/organizations.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/organizations.js.map +1 -1
- package/dist/martyrs/src/modules/pages/pages.client.cjs +2 -2
- package/dist/martyrs/src/modules/pages/pages.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/pages.client.js +2 -2
- package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs +35 -31
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js +35 -31
- package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs +16 -14
- package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/router/pages.router.js +16 -14
- package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/store/pages.cjs +5 -2
- package/dist/martyrs/src/modules/pages/views/store/pages.cjs.map +1 -1
- package/dist/martyrs/src/modules/pages/views/store/pages.js +5 -2
- package/dist/martyrs/src/modules/pages/views/store/pages.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +76 -135
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +77 -136
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +128 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +128 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/{ImagesThumbnails.vue.cjs → ProductImages.vue.cjs} +7 -7
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/{ImagesThumbnails.vue.js → ProductImages.vue.js} +7 -7
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs +141 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +141 -0
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.cjs → elements/Image360.vue.cjs} +5 -5
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.cjs.map → elements/Image360.vue.cjs.map} +1 -1
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.js → elements/Image360.vue.js} +5 -5
- package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.js.map → elements/Image360.vue.js.map} +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +19 -20
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +20 -21
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +71 -0
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +71 -0
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs +6 -6
- package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +6 -6
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.cjs +73 -0
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.js +73 -0
- package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.cjs +101 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.js +101 -0
- package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.cjs +135 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.js +135 -0
- package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.cjs +148 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.js +148 -0
- package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +6 -6
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +6 -6
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +345 -0
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +345 -0
- package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +279 -55
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +282 -58
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +107 -116
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +116 -125
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +257 -312
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +262 -317
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +168 -0
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +168 -0
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +319 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +319 -0
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +140 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +140 -0
- package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +468 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +468 -0
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +134 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +134 -0
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +13 -13
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +13 -13
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/products.client.cjs +20 -29
- package/dist/martyrs/src/modules/products/products.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/products.client.js +37 -46
- package/dist/martyrs/src/modules/products/products.client.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/categories.router.cjs +34 -30
- package/dist/martyrs/src/modules/products/router/categories.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/router/categories.router.js +34 -30
- package/dist/martyrs/src/modules/products/router/categories.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/leftovers.router.cjs +42 -39
- package/dist/martyrs/src/modules/products/router/leftovers.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/router/leftovers.router.js +42 -39
- package/dist/martyrs/src/modules/products/router/leftovers.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/router/products.router.cjs +0 -1
- package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/router/products.router.js +0 -1
- package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.cjs +7 -3
- package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.js +7 -3
- package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/leftovers.cjs +42 -3
- package/dist/martyrs/src/modules/products/store/leftovers.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/leftovers.js +42 -3
- package/dist/martyrs/src/modules/products/store/leftovers.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/products.cjs +32 -60
- package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/products.js +32 -60
- package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/variants.store.cjs +6 -0
- package/dist/martyrs/src/modules/products/store/variants.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/products/store/variants.store.js +6 -0
- package/dist/martyrs/src/modules/products/store/variants.store.js.map +1 -0
- package/dist/martyrs/src/modules/rents/rents.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/router/rents.router.cjs +3 -11
- package/dist/martyrs/src/modules/rents/views/router/rents.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/router/rents.router.js +3 -11
- package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/store/rents.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/rents/views/store/rents.store.js.map +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
- package/dist/martyrs/src/modules/reports/reports.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.cjs +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.cjs.map +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.js +1 -1
- package/dist/martyrs/src/modules/reports/store/reports.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +74 -51
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +75 -52
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/router/spots.cjs +3 -9
- package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/router/spots.js +3 -9
- package/dist/martyrs/src/modules/spots/router/spots.js.map +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.cjs +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.js +1 -1
- package/dist/martyrs/src/modules/spots/spots.client.js.map +1 -1
- package/dist/martyrs/src/modules/spots/store/spots.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/store/spots.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.cjs +26 -23
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.js +26 -23
- package/dist/martyrs/src/modules/wallet/views/router/payments.router.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.cjs +2 -2
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +2 -2
- package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.cjs +11 -12
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js +11 -12
- package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js.map +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/metadata.schema-CWmcDJN7.js +268 -0
- package/dist/metadata.schema-RlxNv46L.cjs +267 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.cjs +9 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +9 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.cjs +8 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.js +8 -0
- package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.cjs +653 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.js +653 -0
- package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.cjs +63 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +63 -0
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.cjs +59 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js +59 -0
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.cjs +21 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +21 -0
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.cjs +12 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.js +12 -0
- package/dist/node_modules/date-fns/_lib/normalizeDates.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.cjs +24 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.cjs.map +1 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.js +24 -0
- package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +1 -0
- package/dist/node_modules/date-fns/constants.cjs +9 -0
- package/dist/node_modules/date-fns/constants.cjs.map +1 -0
- package/dist/node_modules/date-fns/constants.js +9 -0
- package/dist/node_modules/date-fns/constants.js.map +1 -0
- package/dist/node_modules/date-fns/constructFrom.cjs +13 -0
- package/dist/node_modules/date-fns/constructFrom.cjs.map +1 -0
- package/dist/node_modules/date-fns/constructFrom.js +13 -0
- package/dist/node_modules/date-fns/constructFrom.js.map +1 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.cjs +21 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.cjs.map +1 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.js +21 -0
- package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +1 -0
- package/dist/node_modules/date-fns/format.cjs +80 -0
- package/dist/node_modules/date-fns/format.cjs.map +1 -0
- package/dist/node_modules/date-fns/format.js +80 -0
- package/dist/node_modules/date-fns/format.js.map +1 -0
- package/dist/node_modules/date-fns/getDayOfYear.cjs +14 -0
- package/dist/node_modules/date-fns/getDayOfYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/getDayOfYear.js +14 -0
- package/dist/node_modules/date-fns/getDayOfYear.js.map +1 -0
- package/dist/node_modules/date-fns/getISOWeek.cjs +14 -0
- package/dist/node_modules/date-fns/getISOWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/getISOWeek.js +14 -0
- package/dist/node_modules/date-fns/getISOWeek.js.map +1 -0
- package/dist/node_modules/date-fns/getISOWeekYear.cjs +27 -0
- package/dist/node_modules/date-fns/getISOWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/getISOWeekYear.js +27 -0
- package/dist/node_modules/date-fns/getISOWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/getWeek.cjs +14 -0
- package/dist/node_modules/date-fns/getWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/getWeek.js +14 -0
- package/dist/node_modules/date-fns/getWeek.js.map +1 -0
- package/dist/node_modules/date-fns/getWeekYear.cjs +31 -0
- package/dist/node_modules/date-fns/getWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/getWeekYear.js +31 -0
- package/dist/node_modules/date-fns/getWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/isDate.cjs +8 -0
- package/dist/node_modules/date-fns/isDate.cjs.map +1 -0
- package/dist/node_modules/date-fns/isDate.js +8 -0
- package/dist/node_modules/date-fns/isDate.js.map +1 -0
- package/dist/node_modules/date-fns/isValid.cjs +10 -0
- package/dist/node_modules/date-fns/isValid.cjs.map +1 -0
- package/dist/node_modules/date-fns/isValid.js +10 -0
- package/dist/node_modules/date-fns/isValid.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.cjs +11 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +11 -0
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.cjs +21 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +21 -0
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.cjs +44 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +44 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.cjs +17 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +17 -0
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.cjs +86 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +86 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.cjs +37 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +37 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.cjs +13 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +13 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.cjs +165 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +165 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.cjs +123 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +123 -0
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US.cjs +22 -0
- package/dist/node_modules/date-fns/locale/en-US.cjs.map +1 -0
- package/dist/node_modules/date-fns/locale/en-US.js +22 -0
- package/dist/node_modules/date-fns/locale/en-US.js.map +1 -0
- package/dist/node_modules/date-fns/startOfDay.cjs +11 -0
- package/dist/node_modules/date-fns/startOfDay.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfDay.js +11 -0
- package/dist/node_modules/date-fns/startOfDay.js.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeek.cjs +9 -0
- package/dist/node_modules/date-fns/startOfISOWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeek.js +9 -0
- package/dist/node_modules/date-fns/startOfISOWeek.js.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.cjs +15 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.js +15 -0
- package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/startOfWeek.cjs +18 -0
- package/dist/node_modules/date-fns/startOfWeek.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfWeek.js +18 -0
- package/dist/node_modules/date-fns/startOfWeek.js.map +1 -0
- package/dist/node_modules/date-fns/startOfWeekYear.cjs +20 -0
- package/dist/node_modules/date-fns/startOfWeekYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfWeekYear.js +20 -0
- package/dist/node_modules/date-fns/startOfWeekYear.js.map +1 -0
- package/dist/node_modules/date-fns/startOfYear.cjs +12 -0
- package/dist/node_modules/date-fns/startOfYear.cjs.map +1 -0
- package/dist/node_modules/date-fns/startOfYear.js +12 -0
- package/dist/node_modules/date-fns/startOfYear.js.map +1 -0
- package/dist/node_modules/date-fns/toDate.cjs +9 -0
- package/dist/node_modules/date-fns/toDate.cjs.map +1 -0
- package/dist/node_modules/date-fns/toDate.js +9 -0
- package/dist/node_modules/date-fns/toDate.js.map +1 -0
- package/dist/notifications.server.cjs +552 -0
- package/dist/notifications.server.js +511 -621
- package/dist/orders.server.cjs +820 -0
- package/dist/orders.server.js +733 -838
- package/dist/organizations.server.cjs +1493 -0
- package/dist/organizations.server.js +1301 -1414
- package/dist/ownership.schema-CCZX5vfw.js +43 -0
- package/dist/ownership.schema-DCosqOc1.cjs +42 -0
- package/dist/pages.server.cjs +142 -0
- package/dist/pages.server.js +125 -160
- package/dist/products.server.cjs +2635 -0
- package/dist/products.server.js +2528 -1273
- package/dist/profile.schema-DchVS-Jr.js +21 -0
- package/dist/profile.schema-yQuIzngl.cjs +20 -0
- package/dist/queryProcessor-B_X680wC.cjs +332 -0
- package/dist/queryProcessor-CVcLPEnv.js +333 -0
- package/dist/rents.server.cjs +487 -0
- package/dist/rents.server.js +462 -480
- package/dist/reports.server.cjs +133 -0
- package/dist/reports.server.js +97 -150
- package/dist/spots.server.cjs +331 -0
- package/dist/spots.server.js +301 -349
- package/dist/style.css +854 -724
- package/dist/{tickets.controller-zEHIAe_B.js → tickets.controller-D0V0gJCA.cjs} +239 -263
- package/dist/{tickets.controller-BIhfgjNb.mjs → tickets.controller-DQQcjyui.js} +222 -263
- package/dist/wallet.server.cjs +528 -0
- package/dist/wallet.server.js +473 -666
- package/package.json +7 -6
- package/src/builder/builder.js +19 -14
- package/src/builder/modes/spa.dev.js +16 -39
- package/src/builder/modes/spa.prod.js +15 -26
- package/src/builder/modes/ssr.dev.js +123 -107
- package/src/builder/modes/ssr.prod.js +19 -38
- package/src/builder/modes/ssr.rspack.dev.js +70 -66
- package/src/builder/modes/ssr.vite.dev.js +45 -71
- package/src/builder/rspack/index.js +10 -8
- package/src/builder/rspack/rspack.config.api.js +59 -0
- package/src/builder/rspack/rspack.config.base.js +28 -11
- package/src/builder/rspack/{rspack.config.spa.js → rspack.config.spa.client.js} +21 -26
- package/src/builder/rspack/{rspack.config.client.js → rspack.config.ssr.client.js} +9 -13
- package/src/builder/rspack/{rspack.config.ssr.js → rspack.config.ssr.server.js} +22 -10
- package/src/builder/ssr/ssr-render-html.js +13 -12
- package/src/builder/ssr/ssr-transform-webpack-stats.js +37 -25
- package/src/builder/ssr/utils.js +7 -14
- package/src/builder/templates/page.js +2 -2
- package/src/builder/templates/screen.js +2 -2
- package/src/builder/utils/hot-reload.js +1 -1
- package/src/builder/vite/index.js +8 -8
- package/src/builder/vite/vite.config.base.js +37 -47
- package/src/builder/vite/vite.config.client.js +42 -64
- package/src/builder/vite/vite.config.server.js +14 -24
- package/src/builder/vite/vite.config.spa.js +37 -46
- package/src/builder/vite/vite.config.ssr.js +44 -60
- package/src/builder/webpack/index.js +7 -7
- package/src/builder/webpack/webpack.config.base.js +54 -39
- package/src/builder/webpack/webpack.config.client.js +36 -47
- package/src/builder/webpack/webpack.config.server.js +23 -17
- package/src/builder/webpack/webpack.config.spa.js +22 -28
- package/src/builder/webpack/webpack.config.ssr.js +33 -30
- package/src/components/Button/Button.vue +8 -3
- package/src/components/Chips/Chips.vue +1 -1
- package/src/components/Dropdown/Dropdown.vue +1 -1
- package/src/components/Feed/Feed.vue +156 -63
- package/src/components/Field/Field.vue +82 -75
- package/src/components/FieldPhone/FieldPhone.vue +2 -2
- package/src/components/FieldPhone/all-countries.js +247 -3
- package/src/components/FieldPhone/click-outside.js +1 -1
- package/src/components/FieldPhone/utils.js +263 -262
- package/src/components/FieldTags/FieldTags.vue +375 -25
- package/src/components/FieldTags/create-tags.js +15 -15
- package/src/components/FieldTags/vue-tags-input.props.js +2 -9
- package/src/components/Map/LoaderGMaps.js +4 -4
- package/src/components/Popup/Popup.vue +142 -89
- package/src/components/Select/Select.vue +2 -4
- package/src/components/SelectMulti/SelectMulti.vue +911 -656
- package/src/components/Table/Table.vue +21 -64
- package/src/components/UploadImageMultiple/UploadImageMultiple.vue +4 -4
- package/src/components/index.js +10 -10
- package/src/configurator/router/configurator.router.js +10 -8
- package/src/main.js +79 -80
- package/src/modules/auth/auth.client.js +17 -18
- package/src/modules/auth/auth.server.js +32 -42
- package/src/modules/auth/controllers/middlewares/authJwt.js +16 -34
- package/src/modules/auth/controllers/middlewares/authSecret.js +2 -8
- package/src/modules/auth/controllers/middlewares/index.js +15 -10
- package/src/modules/auth/controllers/middlewares/verifyInvites.js +13 -21
- package/src/modules/auth/controllers/middlewares/verifySignUp.js +7 -16
- package/src/modules/auth/controllers/middlewares/verifyUser.js +20 -31
- package/src/modules/auth/controllers/middlewares/visitor.logger.js +10 -23
- package/src/modules/auth/controllers/routes/auth.routes.js +9 -29
- package/src/modules/auth/controllers/routes/twofa.routes.js +6 -23
- package/src/modules/auth/controllers/routes/users.routes.js +8 -39
- package/src/modules/auth/controllers/services/auth.service.js +49 -82
- package/src/modules/auth/controllers/services/twofa.service.js +6 -13
- package/src/modules/auth/controllers/services/users.service.js +31 -70
- package/src/modules/auth/controllers/utils/verifyAppleIdToken.js +47 -54
- package/src/modules/auth/models/request.model.js +5 -9
- package/src/modules/auth/models/role.model.js +3 -7
- package/src/modules/auth/models/user.model.js +39 -41
- package/src/modules/auth/models/visitor.model.js +3 -6
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/pages/EnterCode.vue +3 -3
- package/src/modules/auth/views/components/pages/EnterPassword.vue +1 -1
- package/src/modules/auth/views/components/pages/Invite.vue +2 -2
- package/src/modules/auth/views/components/pages/Profile.vue +3 -3
- package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +3 -3
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +3 -3
- package/src/modules/auth/views/components/pages/ResetPassword.vue +3 -3
- package/src/modules/auth/views/components/pages/SignIn.vue +2 -2
- package/src/modules/auth/views/components/pages/SignUp.vue +3 -3
- package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
- package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +2 -2
- package/src/modules/auth/views/localization/EnterCode.json +1 -1
- package/src/modules/auth/views/localization/EnterPassword.json +1 -1
- package/src/modules/auth/views/localization/ResetPassword.json +1 -1
- package/src/modules/auth/views/localization/SignUp.json +1 -1
- package/src/modules/auth/views/middlewares/auth.validation.js +16 -29
- package/src/modules/auth/views/middlewares/ownership.validation.js +9 -14
- package/src/modules/auth/views/router/auth.js +66 -77
- package/src/modules/auth/views/router/users.js +87 -89
- package/src/modules/auth/views/store/auth.js +41 -39
- package/src/modules/auth/views/store/twofa.js +44 -42
- package/src/modules/auth/views/store/users.js +22 -26
- package/src/modules/auth/views/validations/inputs.validation.js +53 -59
- package/src/modules/backoffice/backoffice.client.js +8 -8
- package/src/modules/backoffice/components/pages/Dashboard.vue +3 -3
- package/src/modules/backoffice/components/partials/Sidebar.vue +2 -2
- package/src/modules/backoffice/router/backoffice.js +49 -49
- package/src/modules/chats/chats.client.js +9 -9
- package/src/modules/chats/chats.server.js +18 -23
- package/src/modules/chats/controllers/chats.controller.js +8 -15
- package/src/modules/chats/models/chat.model.js +6 -9
- package/src/modules/chats/routes/chats.routes.js +12 -20
- package/src/modules/chats/store/chat.store.js +14 -11
- package/src/modules/community/community.client.js +13 -26
- package/src/modules/community/community.server.js +30 -35
- package/src/modules/community/components/blocks/FooterBlogpost.vue +1 -1
- package/src/modules/community/components/layouts/Community.vue +6 -4
- package/src/modules/community/components/pages/Blog.vue +1 -1
- package/src/modules/community/components/pages/BlogPost.vue +1 -1
- package/src/modules/community/components/pages/CreateBlogPost.vue +5 -5
- package/src/modules/community/components/sections/Comment.vue +2 -2
- package/src/modules/community/components/sections/HotPosts.vue +1 -1
- package/src/modules/community/controllers/blog.controller.js +103 -139
- package/src/modules/community/controllers/comments.controller.js +79 -124
- package/src/modules/community/controllers/reactions.controller.js +32 -59
- package/src/modules/community/controllers/utils/queryProcessor.js +13 -17
- package/src/modules/community/controllers/utils/queryProcessorReactions.js +28 -34
- package/src/modules/community/middlewares/server/index.js +7 -5
- package/src/modules/community/middlewares/server/verifyBlogpost.js +9 -14
- package/src/modules/community/models/blogpost.model.js +33 -34
- package/src/modules/community/models/comment.model.js +48 -50
- package/src/modules/community/models/reaction.model.js +48 -46
- package/src/modules/community/router/blogposts.js +52 -50
- package/src/modules/community/routes/blog.routes.js +15 -49
- package/src/modules/community/routes/comments.routes.js +14 -44
- package/src/modules/community/routes/reactions.routes.js +10 -43
- package/src/modules/community/store/blogposts.js +54 -59
- package/src/modules/community/store/reactions.js +9 -13
- package/src/modules/constructor/components/elements/Embed.vue +3 -3
- package/src/modules/constructor/components/elements/ImageUpload.vue +3 -3
- package/src/modules/core/classes/event.js +48 -0
- package/src/modules/core/classes/memory-tracker.js +1063 -0
- package/src/modules/{globals/views/core → core/classes}/module-manager.js +43 -46
- package/src/modules/{globals/views/core → core/classes}/module.js +52 -53
- package/src/modules/core/model/Adapter.js +17 -0
- package/src/modules/core/model/Adapter.mogodb.js +65 -0
- package/src/modules/core/model/Adapter.postgre.js +127 -0
- package/src/modules/core/model/Model.js +99 -0
- package/src/modules/core/model/Schema.js +70 -0
- package/src/modules/core/model/Validation.js +97 -0
- package/src/modules/events/components/elements/ButtonCheck.vue +1 -1
- package/src/modules/events/components/elements/ButtonJoin.vue +2 -2
- package/src/modules/events/components/pages/EditEvent.vue +5 -5
- package/src/modules/events/components/pages/EditEventTickets.vue +3 -3
- package/src/modules/events/components/pages/Event.vue +1 -2
- package/src/modules/events/components/pages/Events.vue +3 -3
- package/src/modules/events/components/pages/EventsBackoffice.vue +1 -1
- package/src/modules/events/components/pages/EventsSearch.vue +1 -1
- package/src/modules/events/components/sections/EventsHot.vue +1 -1
- package/src/modules/events/components/sections/FeaturedEvents.vue +1 -1
- package/src/modules/events/controllers/events.controller.js +90 -155
- package/src/modules/events/controllers/tickets.controller.js +157 -220
- package/src/modules/events/controllers/utils/queryProcessor.js +117 -123
- package/src/modules/events/controllers/utils/templateEmail.js +6 -7
- package/src/modules/events/controllers/utils/templateTicket.js +6 -7
- package/src/modules/events/events.client.js +22 -28
- package/src/modules/events/events.server.js +25 -32
- package/src/modules/events/middlewares/server/index.js +6 -5
- package/src/modules/events/middlewares/server/verifyEvent.js +29 -31
- package/src/modules/events/models/event.model.js +68 -70
- package/src/modules/events/models/ticket.model.js +55 -55
- package/src/modules/events/router/events.js +28 -38
- package/src/modules/events/routes/events.routes.js +15 -49
- package/src/modules/events/routes/tickets.routes.js +7 -21
- package/src/modules/events/store/events.js +41 -50
- package/src/modules/events/store/tickets.js +11 -14
- package/src/modules/files/controllers/files.controller.js +5 -17
- package/src/modules/files/files.server.js +13 -16
- package/src/modules/files/middlewares/server/index.js +7 -5
- package/src/modules/files/middlewares/server/middlewareBusboy.js +62 -123
- package/src/modules/files/routes/files.routes.js +11 -40
- package/src/modules/gallery/components/pages/Gallery.vue +1 -1
- package/src/modules/gallery/components/sections/BackofficeGallery.vue +3 -3
- package/src/modules/gallery/controllers/gallery.controller.js +27 -58
- package/src/modules/gallery/gallery.client.js +11 -11
- package/src/modules/gallery/gallery.server.js +18 -23
- package/src/modules/gallery/models/photo.model.js +27 -29
- package/src/modules/gallery/router/gallery.backoffice.router.js +14 -14
- package/src/modules/gallery/router/gallery.router.js +2 -2
- package/src/modules/gallery/routes/gallery.routes.js +12 -44
- package/src/modules/gallery/store/gallery.js +3 -3
- package/src/modules/globals/controllers/classes/abac/abac.adapter.express.js +194 -0
- package/src/modules/globals/controllers/classes/abac/abac.adapter.ws.js +84 -0
- package/src/modules/globals/controllers/classes/abac/abac.core.js +220 -0
- package/src/modules/globals/controllers/classes/abac/abac.fields.js +376 -0
- package/src/modules/globals/controllers/classes/abac/abac.js +104 -0
- package/src/modules/globals/controllers/classes/abac/abac.policies.js +226 -0
- package/src/modules/globals/controllers/classes/crud/crud.controller.js +314 -0
- package/src/modules/globals/controllers/classes/crud/crud.core.js +230 -0
- package/src/modules/globals/controllers/classes/crud/crud.events.js +209 -0
- package/src/modules/globals/controllers/classes/crud/crud.js +169 -0
- package/src/modules/globals/controllers/classes/crud/crud.policies.js +256 -0
- package/src/modules/globals/controllers/classes/crud/crud.service.js +285 -0
- package/src/modules/globals/controllers/classes/globals.abac.js +69 -120
- package/src/modules/globals/controllers/classes/globals.cache.js +2 -15
- package/src/modules/globals/controllers/classes/globals.crud.js +15 -43
- package/src/modules/globals/controllers/classes/globals.logger.js +2 -6
- package/src/modules/globals/controllers/classes/globals.observer.js +36 -43
- package/src/modules/globals/controllers/classes/globals.validator.js +62 -88
- package/src/modules/globals/controllers/classes/globals.verifier.js +144 -128
- package/src/modules/globals/controllers/classes/globals.webhook.js +1 -3
- package/src/modules/globals/controllers/classes/globals.websocket.js +29 -89
- package/src/modules/globals/controllers/classes/globals.websocket.ws.js +6 -28
- package/src/modules/globals/controllers/policies/globals.policies.js +33 -50
- package/src/modules/globals/controllers/utils/mailing.js +26 -34
- package/src/modules/globals/controllers/utils/parseCookie.js +2 -5
- package/src/modules/globals/controllers/utils/queryProcessor.js +188 -127
- package/src/modules/globals/controllers/utils/seo-friendly-url.js +195 -48
- package/src/modules/globals/controllers/utils/sitemap.js +14 -20
- package/src/modules/globals/globals.client.js +55 -53
- package/src/modules/globals/globals.server.js +22 -14
- package/src/modules/globals/models/schemas/common.schema.js +4 -4
- package/src/modules/globals/models/schemas/credentials.schema.js +3 -3
- package/src/modules/globals/models/schemas/engagement.schema.js +6 -16
- package/src/modules/globals/models/schemas/metadata.schema.js +16 -20
- package/src/modules/globals/models/schemas/ownership.schema.js +16 -13
- package/src/modules/globals/models/schemas/profile.schema.js +6 -7
- package/src/modules/globals/models/schemas/socials.schema.js +9 -9
- package/src/modules/globals/views/classes/globals.store.js +25 -22
- package/src/modules/globals/views/classes/globals.websocket.js +16 -16
- package/src/modules/globals/views/classes/globals.websocket.ws.js +1 -1
- package/src/modules/globals/views/classes/store.js +18 -19
- package/src/modules/globals/views/components/blocks/BlockMultiselect.vue +364 -0
- package/src/modules/globals/views/components/blocks/Card.vue +75 -46
- package/src/modules/globals/views/components/blocks/CardFooter.vue +1 -1
- package/src/modules/globals/views/components/blocks/CardHeader.vue +0 -1
- package/src/modules/globals/views/components/elements/ButtonDate.vue +2 -2
- package/src/modules/globals/views/components/layouts/App.vue +2 -2
- package/src/modules/globals/views/components/layouts/Client.vue +2 -2
- package/src/modules/globals/views/components/partials/BottomNavigationBar.vue +1 -1
- package/src/modules/globals/views/components/partials/Footer.vue +1 -1
- package/src/modules/globals/views/components/partials/Header.vue +3 -3
- package/src/modules/globals/views/components/partials/LocationSelection.vue +1 -1
- package/src/modules/globals/views/components/partials/Navigation.vue +11 -19
- package/src/modules/globals/views/components/partials/NavigationBar.vue +3 -3
- package/src/modules/globals/views/components/partials/Sidebar.vue +1 -1
- package/src/modules/globals/views/localization/get-browser-locale.js +7 -12
- package/src/modules/globals/views/middlewares/localization.js +3 -6
- package/src/modules/globals/views/mixins/mixins.js +152 -134
- package/src/modules/globals/views/plugins/alert.plugin.js +28 -28
- package/src/modules/globals/views/plugins/date-picker.plugin.js +85 -0
- package/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue +284 -0
- package/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js +24 -0
- package/src/modules/globals/views/router/addRoutes.js +15 -17
- package/src/modules/globals/views/router/scrollBehavior.js +17 -13
- package/src/modules/globals/views/store/globals.js +64 -78
- package/src/modules/globals/views/utils/axios-instance.js +1 -1
- package/src/modules/globals/views/utils/vue-app-renderer.js +23 -26
- package/src/modules/governance/controllers/factories/initiatives.controller.js +23 -29
- package/src/modules/governance/controllers/factories/tasks.controller.js +21 -27
- package/src/modules/governance/controllers/factories/votes.controller.js +17 -21
- package/src/modules/governance/controllers/factories/votings.controller.js +25 -32
- package/src/modules/governance/controllers/routes/initiatives.routes.js +10 -12
- package/src/modules/governance/controllers/routes/tasks.routes.js +10 -12
- package/src/modules/governance/controllers/routes/votes.routes.js +8 -10
- package/src/modules/governance/controllers/routes/votings.routes.js +11 -13
- package/src/modules/governance/governance.client.js +7 -7
- package/src/modules/governance/governance.server.js +36 -39
- package/src/modules/governance/models/initiative.model.js +26 -22
- package/src/modules/governance/models/milestone.model.js +86 -82
- package/src/modules/governance/models/task.model.js +48 -45
- package/src/modules/governance/models/vote.model.js +18 -16
- package/src/modules/governance/models/voting.model.js +23 -19
- package/src/modules/governance/views/router/goverance.router.js +56 -80
- package/src/modules/governance/views/store/initiatives.js +8 -11
- package/src/modules/governance/views/store/projects.js +57 -66
- package/src/modules/governance/views/store/tasks.js +9 -14
- package/src/modules/governance/views/store/votes.js +8 -13
- package/src/modules/governance/views/store/votings.js +7 -11
- package/src/modules/icons/actions/IconDuplicate.vue +17 -0
- package/src/modules/icons/entities/IconDiscount.vue +23 -0
- package/src/modules/icons/entities/IconSettings.vue +32 -0
- package/src/modules/icons/icons.client.js +118 -96
- package/src/modules/icons/pages/IconsPage.vue +300 -0
- package/src/modules/icons/router/icons.router.js +34 -0
- package/src/modules/integrations/integrations.service.js +34 -91
- package/src/modules/integrations/openai/openai.globals.js +116 -0
- package/src/modules/integrations/paypal/controllers/webhooks/paypal.webhook.js +15 -19
- package/src/modules/integrations/stripe/controllers/services/stripe.service.js +241 -285
- package/src/modules/integrations/stripe/controllers/webhooks/stripe.webhook.js +8 -17
- package/src/modules/integrations/tinkoff/controllers/services/tinkoff.service.js +111 -119
- package/src/modules/integrations/tinkoff/models/tinkoff.payment.model.js +12 -13
- package/src/modules/inventory/inventory.server.js +23 -0
- package/src/modules/inventory/models/stock.adjustment.model.js +63 -0
- package/src/modules/inventory/models/stock.availability.model.js +56 -0
- package/src/modules/inventory/models/stock.balance.model.js +43 -0
- package/src/modules/inventory/models/stock.inventory.model.js +38 -0
- package/src/modules/inventory/policies/inventory.policies.js +47 -0
- package/src/modules/inventory/routes/inventory.routes.js +61 -0
- package/src/modules/inventory/services/inventory.crud.js +527 -0
- package/src/modules/inventory/services/inventory.verifier.js +81 -0
- package/src/modules/inventory/store/ inventory.store.js +131 -0
- package/src/modules/inventory/workers/inventory.availability.worker.js +300 -0
- package/src/modules/landing/landing.client.js +16 -16
- package/src/modules/marketplace/marketplace.client.js +12 -13
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +2 -2
- package/src/modules/marketplace/views/components/pages/Catalog.vue +2 -2
- package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
- package/src/modules/marketplace/views/router/marketplace.router.js +9 -11
- package/src/modules/marketplace/views/store/marketplace.js +33 -29
- package/src/modules/music/components/cards/ArtistCard.vue +62 -15
- package/src/modules/music/components/lists/ArtistList.vue +267 -12
- package/src/modules/music/components/pages/ArtistDetail.vue +375 -189
- package/src/modules/music/components/pages/ArtistForm.vue +426 -0
- package/src/modules/music/components/pages/ArtistManager.vue +277 -0
- package/src/modules/music/components/pages/MusicLibrary.vue +5 -8
- package/src/modules/music/controllers/album.controller.js +15 -31
- package/src/modules/music/controllers/artist.controller.js +29 -41
- package/src/modules/music/controllers/genre.controller.js +23 -31
- package/src/modules/music/controllers/music.controller.js +28 -57
- package/src/modules/music/controllers/playlist.controller.js +20 -56
- package/src/modules/music/controllers/search.controller.js +37 -62
- package/src/modules/music/controllers/stream.controller.js +16 -32
- package/src/modules/music/models/album.model.js +54 -51
- package/src/modules/music/models/artist.model.js +50 -52
- package/src/modules/music/models/genre.model.js +27 -31
- package/src/modules/music/models/play-history.model.js +41 -42
- package/src/modules/music/models/playlist.model.js +54 -54
- package/src/modules/music/models/track.model.js +65 -69
- package/src/modules/music/music.client.js +55 -52
- package/src/modules/music/music.server.js +62 -77
- package/src/modules/music/policies/music.policies.js +9 -29
- package/src/modules/music/router/music.js +38 -19
- package/src/modules/music/routes/album.routes.js +21 -55
- package/src/modules/music/routes/artist.routes.js +22 -59
- package/src/modules/music/routes/genre.routes.js +21 -53
- package/src/modules/music/routes/music.routes.js +74 -113
- package/src/modules/music/routes/playlist.routes.js +36 -88
- package/src/modules/music/routes/search.routes.js +5 -9
- package/src/modules/music/routes/stream.routes.js +23 -34
- package/src/modules/music/store/albums.js +34 -34
- package/src/modules/music/store/artists.js +31 -28
- package/src/modules/music/store/player.js +71 -73
- package/src/modules/music/store/playlists.js +37 -37
- package/src/modules/music/store/search.js +25 -25
- package/src/modules/music/store/tracks.js +40 -45
- package/src/modules/music/websocket/streaming.handler.js +58 -76
- package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
- package/src/modules/notifications/components/sections/NotificationsList.vue +1 -1
- package/src/modules/notifications/controllers/notifications.controller.js +32 -62
- package/src/modules/notifications/middlewares/notifications.abac.js +1 -5
- package/src/modules/notifications/models/notification-log.model.js +8 -5
- package/src/modules/notifications/models/notification-preference.model.js +8 -6
- package/src/modules/notifications/models/notification.model.js +2 -3
- package/src/modules/notifications/models/user-device.model.js +3 -5
- package/src/modules/notifications/notifications.client.js +65 -75
- package/src/modules/notifications/notifications.server.js +31 -44
- package/src/modules/notifications/router/notifications.router.js +8 -8
- package/src/modules/notifications/routes/notifications.routes.js +4 -11
- package/src/modules/notifications/services/apns.service.js +4 -13
- package/src/modules/notifications/services/email.service.js +4 -8
- package/src/modules/notifications/services/fcm.service.js +4 -11
- package/src/modules/notifications/services/notification.service.js +49 -84
- package/src/modules/notifications/services/sms.service.js +4 -7
- package/src/modules/notifications/services/telegram.service.js +4 -7
- package/src/modules/notifications/services/web-push.service.js +14 -23
- package/src/modules/notifications/services/whatsapp.service.js +4 -11
- package/src/modules/notifications/store/notifications.store.js +50 -55
- package/src/modules/orders/components/pages/OrderBackoffice.vue +5 -5
- package/src/modules/orders/components/pages/OrderCreate.vue +6 -6
- package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +5 -5
- package/src/modules/orders/components/pages/Orders.vue +2 -2
- package/src/modules/orders/components/partials/ShopCart.vue +3 -3
- package/src/modules/orders/components/sections/FormAddCustomer.vue +5 -5
- package/src/modules/orders/components/sections/FormDelivery.vue +2 -2
- package/src/modules/orders/controllers/applications.controller.js +37 -67
- package/src/modules/orders/controllers/orders.controller.js +96 -155
- package/src/modules/orders/controllers/testimonials.controller.js +22 -31
- package/src/modules/orders/models/application.model.js +25 -24
- package/src/modules/orders/models/customer.model.js +61 -55
- package/src/modules/orders/models/order.model.js +80 -81
- package/src/modules/orders/models/testimonial.model.js +7 -9
- package/src/modules/orders/orders.client.js +24 -26
- package/src/modules/orders/orders.server.js +27 -32
- package/src/modules/orders/router/orders.router.js +21 -22
- package/src/modules/orders/routes/applications.routes.js +10 -40
- package/src/modules/orders/routes/orders.routes.js +8 -19
- package/src/modules/orders/routes/testimonials.routes.js +9 -29
- package/src/modules/orders/store/applications.js +34 -39
- package/src/modules/orders/store/customers.store.js +3 -3
- package/src/modules/orders/store/models/customer.js +5 -5
- package/src/modules/orders/store/models/order.js +4 -4
- package/src/modules/orders/store/orders.js +61 -76
- package/src/modules/orders/store/shopcart.js +150 -98
- package/src/modules/orders/store/testimonials.js +7 -10
- package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +2 -2
- package/src/modules/organizations/components/pages/Department.vue +1 -1
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +3 -3
- package/src/modules/organizations/components/pages/Members.vue +6 -6
- package/src/modules/organizations/components/pages/Organization.vue +9 -9
- package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +2 -2
- package/src/modules/organizations/components/pages/OrganizationCreate.vue +2 -2
- package/src/modules/organizations/components/pages/OrganizationDetails.vue +2 -2
- package/src/modules/organizations/components/pages/OrganizationEdit.vue +3 -3
- package/src/modules/organizations/components/pages/OrganizationPeople.vue +1 -1
- package/src/modules/organizations/components/pages/Organizations.vue +2 -2
- package/src/modules/organizations/components/sections/DetailsTabSection.vue +2 -2
- package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
- package/src/modules/organizations/components/sections/Organizations.vue +3 -3
- package/src/modules/organizations/components/sections/Publics.vue +3 -3
- package/src/modules/organizations/configs/navigation.organization.config.js +227 -0
- package/src/modules/organizations/controllers/departments.controller.js +11 -22
- package/src/modules/organizations/controllers/invites.controller.js +14 -30
- package/src/modules/organizations/controllers/memberships.controller.js +21 -54
- package/src/modules/organizations/controllers/organizations.controller.js +32 -83
- package/src/modules/organizations/controllers/utils/addMembersQuantity.js +11 -12
- package/src/modules/organizations/controllers/utils/addUserStatusFields.js +31 -41
- package/src/modules/organizations/controllers/utils/lookupConfigs.js +31 -31
- package/src/modules/organizations/controllers/utils/queryProcessor.js +40 -51
- package/src/modules/organizations/controllers/utils/queryProcessorOrganizations.js +124 -147
- package/src/modules/organizations/middlewares/verifyAccesses.js +7 -25
- package/src/modules/organizations/middlewares/verifyAccessesRefactored.js +26 -51
- package/src/modules/organizations/models/department.model.js +58 -59
- package/src/modules/organizations/models/invite.model.js +45 -42
- package/src/modules/organizations/models/membership.model.js +35 -35
- package/src/modules/organizations/models/organization.model.js +65 -80
- package/src/modules/organizations/models/schemas/accesses.schema.js +1 -2
- package/src/modules/organizations/organizations.client.js +45 -46
- package/src/modules/organizations/organizations.server.js +40 -41
- package/src/modules/organizations/policies/organizations.policies.js +193 -85
- package/src/modules/organizations/router/backoffice.router.js +22 -20
- package/src/modules/organizations/router/departments.router.js +27 -23
- package/src/modules/organizations/router/members.router.js +18 -18
- package/src/modules/organizations/router/organizations.js +74 -66
- package/src/modules/organizations/routes/departments.routes.js +9 -20
- package/src/modules/organizations/routes/invites.routes.js +9 -31
- package/src/modules/organizations/routes/memberships.routes.js +7 -23
- package/src/modules/organizations/routes/organizations.routes.js +15 -40
- package/src/modules/organizations/store/departments.js +13 -14
- package/src/modules/organizations/store/invites.js +38 -41
- package/src/modules/organizations/store/memberships.js +21 -26
- package/src/modules/organizations/store/organizations.js +40 -46
- package/src/modules/pages/controllers/factories/pages.factory.js +6 -27
- package/src/modules/pages/controllers/routes/pages.routes.js +7 -23
- package/src/modules/pages/models/page.model.js +22 -20
- package/src/modules/pages/pages.client.js +12 -12
- package/src/modules/pages/pages.server.js +18 -21
- package/src/modules/pages/views/components/pages/Page.vue +1 -1
- package/src/modules/pages/views/components/pages/Pages.vue +1 -1
- package/src/modules/pages/views/components/partials/SidebarPages.vue +1 -1
- package/src/modules/pages/views/router/pages.backoffice.router.js +29 -29
- package/src/modules/pages/views/router/pages.router.js +16 -14
- package/src/modules/pages/views/store/pages.js +12 -11
- package/src/modules/pages/views/store/pages.store.js +3 -3
- package/src/modules/products/components/blocks/CardLeftover.vue +1 -1
- package/src/modules/products/components/blocks/CardPosition.vue +94 -157
- package/src/modules/products/components/blocks/CardProduct.vue +5 -5
- package/src/modules/products/components/blocks/ProductDiscounts.vue +141 -0
- package/src/modules/products/components/blocks/{ImagesThumbnails.vue → ProductImages.vue} +3 -4
- package/src/modules/products/components/blocks/ProductVariants.vue +125 -0
- package/src/modules/products/components/elements/Price.vue +34 -37
- package/src/modules/products/components/elements/QuantitySelector.vue +52 -0
- package/src/modules/products/components/elements/THC.vue +6 -6
- package/src/modules/products/components/forms/ColumnSettingsMenu.vue +80 -0
- package/src/modules/products/components/forms/ReorderSettingsForm.vue +107 -0
- package/src/modules/products/components/forms/StockAuditForm.vue +154 -0
- package/src/modules/products/components/forms/StockHistoryView.vue +134 -0
- package/src/modules/products/components/pages/Categories.vue +5 -5
- package/src/modules/products/components/pages/CategoryEdit.vue +8 -44
- package/src/modules/products/components/pages/LeftoverEdit.vue +360 -0
- package/src/modules/products/components/pages/Leftovers.vue +288 -131
- package/src/modules/products/components/pages/Product.vue +171 -100
- package/src/modules/products/components/pages/ProductEdit.vue +329 -461
- package/src/modules/products/components/pages/ProductRecommmendation.vue +2 -2
- package/src/modules/products/components/pages/Products.vue +7 -7
- package/src/modules/products/components/sections/EditAttributes.vue +154 -0
- package/src/modules/products/components/sections/EditCategories.vue +149 -0
- package/src/modules/products/components/sections/EditDiscounts.vue +308 -0
- package/src/modules/products/components/sections/EditIngredients.vue +130 -0
- package/src/modules/products/components/sections/EditVariants.vue +453 -0
- package/src/modules/products/components/sections/FilterProducts.vue +4 -4
- package/src/modules/products/components/sections/HeroRecommendation.vue +1 -1
- package/src/modules/products/components/sections/PopularProducts.vue +2 -2
- package/src/modules/products/components/sections/ProductConfigurator.vue +131 -0
- package/src/modules/products/components/sections/SectionProduct.vue +17 -17
- package/src/modules/products/controllers/categories.controller.js +45 -143
- package/src/modules/products/controllers/configs/products.lookup.config.js +135 -0
- package/src/modules/products/controllers/leftovers.controller.js +38 -62
- package/src/modules/products/controllers/products.controller.js +103 -364
- package/src/modules/products/controllers/queries/products.queries.js +112 -0
- package/src/modules/products/middlewares/categories.verifier.js +94 -72
- package/src/modules/products/middlewares/variants.verifier.js +226 -0
- package/src/modules/products/models/category.model.js +26 -22
- package/src/modules/products/models/leftover.model.js +61 -44
- package/src/modules/products/models/product.model.js +54 -119
- package/src/modules/products/models/schemas/discount.schema.js +33 -0
- package/src/modules/products/models/schemas/ingredient.schema.js +46 -0
- package/src/modules/products/models/variant.model.js +66 -0
- package/src/modules/products/products.client.js +31 -41
- package/src/modules/products/products.server.js +34 -35
- package/src/modules/products/router/categories.router.js +34 -30
- package/src/modules/products/router/leftovers.router.js +32 -30
- package/src/modules/products/router/products.router.js +18 -21
- package/src/modules/products/routes/categories.routes.js +13 -52
- package/src/modules/products/routes/leftovers.routes.js +9 -27
- package/src/modules/products/routes/products.routes.js +8 -27
- package/src/modules/products/routes/variants.routes.js +102 -0
- package/src/modules/products/store/categories.js +24 -23
- package/src/modules/products/store/leftovers.js +53 -17
- package/src/modules/products/store/products.js +73 -125
- package/src/modules/products/store/variants.store.js +5 -0
- package/src/modules/rents/controllers/routes/rents.routes.js +12 -21
- package/src/modules/rents/controllers/services/rents.services.js +183 -239
- package/src/modules/rents/models/rent.model.js +27 -17
- package/src/modules/rents/rents.client.js +5 -10
- package/src/modules/rents/rents.server.js +15 -21
- package/src/modules/rents/views/components/pages/RentsEdit.vue +2 -2
- package/src/modules/rents/views/router/rents.router.js +11 -20
- package/src/modules/rents/views/store/rents.store.js +33 -33
- package/src/modules/reports/components/sections/FormReport.vue +1 -1
- package/src/modules/reports/controllers/reports.controller.js +17 -26
- package/src/modules/reports/models/report.model.js +39 -56
- package/src/modules/reports/reports.client.js +8 -8
- package/src/modules/reports/reports.server.js +17 -22
- package/src/modules/reports/routes/reports.routes.js +7 -28
- package/src/modules/reports/store/reports.js +15 -17
- package/src/modules/spots/components/blocks/CardSpot.vue +73 -58
- package/src/modules/spots/components/layouts/Spots.vue +3 -3
- package/src/modules/spots/components/pages/Map.vue +3 -3
- package/src/modules/spots/components/pages/SpotEdit.vue +1 -1
- package/src/modules/spots/controllers/queries/getIsOpenNowStage.js +49 -65
- package/src/modules/spots/controllers/spots.controller.js +25 -43
- package/src/modules/spots/models/spot.model.js +45 -52
- package/src/modules/spots/router/spots.js +22 -26
- package/src/modules/spots/routes/spots.routes.js +8 -16
- package/src/modules/spots/spots.client.js +6 -6
- package/src/modules/spots/spots.server.js +17 -20
- package/src/modules/spots/store/spots.js +11 -14
- package/src/modules/wallet/controllers/factories/payments.factory.js +15 -42
- package/src/modules/wallet/controllers/factories/rewards.factory.js +56 -134
- package/src/modules/wallet/controllers/routes/payments.routes.js +45 -80
- package/src/modules/wallet/controllers/routes/rewards.routes.js +10 -50
- package/src/modules/wallet/models/payment.model.js +26 -27
- package/src/modules/wallet/models/reward.model.js +3 -4
- package/src/modules/wallet/models/wallet.model.js +10 -9
- package/src/modules/wallet/views/router/payments.router.js +24 -23
- package/src/modules/wallet/views/store/payments.store.js +6 -6
- package/src/modules/wallet/views/store/wallet.store.js +28 -35
- package/src/modules/wallet/wallet.server.js +25 -27
- package/src/styles/typography.scss +24 -0
- package/dist/Media-DmnrxIEI.js +0 -1
- package/dist/_commonjsHelpers-CUmg6egw.mjs +0 -6
- package/dist/_commonjsHelpers-DHfMLFPC.js +0 -5
- package/dist/addMembersQuantity-DBfuUEx_.mjs +0 -113
- package/dist/addMembersQuantity-DxWjHK1K.js +0 -112
- package/dist/auth.server.mjs +0 -764
- package/dist/authJwt-CELQKF2s.js +0 -82
- package/dist/authJwt-DnXu3BFq.mjs +0 -83
- package/dist/builder.mjs +0 -1502
- package/dist/chats.server.mjs +0 -137
- package/dist/common.schema-C2m3O1XY.mjs +0 -20
- package/dist/common.schema-O0w_rDyC.js +0 -19
- package/dist/community.server.mjs +0 -1068
- package/dist/credentials.schema-BmOPv6FD.js +0 -16
- package/dist/credentials.schema-oOC8B5KL.mjs +0 -17
- package/dist/engagement.schema-DAiXsvh1.js +0 -33
- package/dist/engagement.schema-DnDD7Bn3.mjs +0 -34
- package/dist/events.server.mjs +0 -1060
- package/dist/files.server.mjs +0 -339
- package/dist/gallery.server.mjs +0 -337
- package/dist/globals.abac-Bn-4tbX8.js +0 -303
- package/dist/globals.abac-DZpTRxKR.mjs +0 -304
- package/dist/globals.cache-BT6q3vOf.mjs +0 -140
- package/dist/globals.cache-CwWvNGFQ.js +0 -139
- package/dist/globals.logger-BdjooLaD.js +0 -34
- package/dist/globals.logger-DusiFsxN.mjs +0 -35
- package/dist/globals.server.mjs +0 -453
- package/dist/globals.verifier-BdJxc8-8.mjs +0 -609
- package/dist/globals.verifier-CKYpYfQl.js +0 -608
- package/dist/index-BOmxJQ5W.js +0 -205
- package/dist/index-C_Fw0Umg.mjs +0 -206
- package/dist/mailing-D4kWlk3_.js +0 -93
- package/dist/mailing-DvCT5ijo.mjs +0 -94
- package/dist/main-DxWqDgs1.js +0 -11
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.cjs +0 -292
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.cjs.map +0 -1
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.js +0 -292
- package/dist/martyrs/src/components/FieldTags/vue-tags-input.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.cjs +0 -450
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js +0 -450
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.cjs +0 -633
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.cjs.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.js +0 -633
- package/dist/martyrs/src/components/SelectMulti/multiselectMixin.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.cjs +0 -117
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.cjs.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.js +0 -117
- package/dist/martyrs/src/components/SelectMulti/pointerMixin.js.map +0 -1
- package/dist/martyrs/src/components/Table/TableCell.vue.cjs +0 -59
- package/dist/martyrs/src/components/Table/TableCell.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Table/TableCell.vue.js +0 -59
- package/dist/martyrs/src/components/Table/TableCell.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +0 -1
- package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.cjs +0 -65
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.js +0 -65
- package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.cjs +0 -49
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.js +0 -49
- package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs +0 -237
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js +0 -237
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.cjs +0 -152
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.js +0 -152
- package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.js.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs +0 -120
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js +0 -120
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js.map +0 -1
- package/dist/metadata.schema--tle-GU8.mjs +0 -282
- package/dist/metadata.schema-CUkLXZ2f.js +0 -281
- package/dist/notifications.server.mjs +0 -663
- package/dist/orders.server.mjs +0 -926
- package/dist/organizations.server.mjs +0 -1590
- package/dist/ownership.schema-CNCotD3D.mjs +0 -50
- package/dist/ownership.schema-MxfJlPtq.js +0 -49
- package/dist/pages.server.mjs +0 -178
- package/dist/products.server.mjs +0 -1381
- package/dist/profile.schema-BLSuV_VC.js +0 -27
- package/dist/profile.schema-BRuvQ7QV.mjs +0 -28
- package/dist/queryProcessor-CVKI651_.mjs +0 -314
- package/dist/queryProcessor-DSUqSk3I.js +0 -313
- package/dist/rents.server.mjs +0 -506
- package/dist/reports.server.mjs +0 -187
- package/dist/spots.server.mjs +0 -380
- package/dist/wallet.server.mjs +0 -705
- package/src/builder/rspack/rspack.config.server.js +0 -30
- package/src/components/FieldTags/vue-tags-input.js +0 -424
- package/src/components/SelectMulti/index.js +0 -7
- package/src/components/SelectMulti/multiselectMixin.js +0 -725
- package/src/components/SelectMulti/pointerMixin.js +0 -143
- package/src/modules/globals/views/core/event.js +0 -48
- package/src/modules/icons/logos/LogotypeNunito.vue +0 -12
- package/src/modules/integrations/openai/controllers/openai.controller.js +0 -89
- package/src/modules/products/components/blocks/EditFilters.vue +0 -56
- package/src/modules/products/components/blocks/LeftoverPositions.vue +0 -99
- package/src/modules/products/components/blocks/ListPositions.vue +0 -74
- package/src/modules/products/components/pages/EditLeftover.vue +0 -288
- package/src/modules/products/components/pages/Product.old.vue +0 -201
- package/src/modules/products/components/sections/EditModifications.vue +0 -92
- package/src/modules/products/components/sections/EditProductInfo.vue +0 -106
- package/src/modules/products/controllers/modifications.controller.js +0 -66
- /package/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue +0 -0
- /package/src/modules/products/components/{blocks/Images360.vue → elements/Image360.vue} +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":"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"}
|
|
1
|
+
{"version":3,"file":"notifications.client.cjs","sources":["../../../../../src/modules/notifications/notifications.client.js"],"sourcesContent":["import { toRefs, watch } 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\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 NotificationPreferences from './components/sections/NotificationPreferences.vue';\nimport NotificationsList from './components/sections/NotificationsList.vue';\n// Pages\nimport Notifications from './components/pages/Notifications.vue';\n// Components\nimport NotificationItem from './components/blocks/NotificationItem.vue';\nimport NotificationBadge from './components/elements/NotificationBadge.vue';\n\n/**\n * Capacitor Push Notification handler\n */\nclass CapacitorPushHandler {\n constructor(store) {\n this.store = store;\n this.pushNotifications = null;\n this.device = null;\n this.isInitialized = false;\n }\n\n /**\n * Initialize Capacitor plugins\n */\n async initialize() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n try {\n // Dynamic imports to prevent errors in web environment\n const { Capacitor } = await import('@capacitor/core');\n const { PushNotifications } = await import('@capacitor/push-notifications');\n const { Device } = await import('@capacitor/device');\n\n this.capacitor = Capacitor;\n this.pushNotifications = PushNotifications;\n this.device = Device;\n\n // Only proceed if running on a native platform\n if (!this.capacitor.isNativePlatform()) {\n return false;\n }\n\n this.isInitialized = true;\n return true;\n } catch (error) {\n console.error('Error importing Capacitor plugins:', error);\n return false;\n }\n }\n\n /**\n * Request permission and register for push notifications\n */\n async requestPermissions() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!this.isInitialized) {\n const initialized = await this.initialize();\n if (!initialized) return false;\n }\n\n try {\n // Request permission\n const permissionResult = await this.pushNotifications.requestPermissions();\n if (permissionResult.receive !== 'granted') {\n console.log('Push notification permission denied');\n return false;\n }\n\n // Set up event listeners\n this._setupListeners();\n\n // Register with Apple/Google\n await this.pushNotifications.register();\n return true;\n } catch (error) {\n console.error('Error requesting push notification permissions:', error);\n return false;\n }\n }\n\n /**\n * Setup push notification event listeners\n */\n _setupListeners() {\n // Registration event\n this.pushNotifications.addListener('registration', this._handleRegistration.bind(this));\n\n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived', this._handleNotificationReceived.bind(this));\n\n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed', this._handleNotificationAction.bind(this));\n }\n\n /**\n * Handle registration token received\n */\n async _handleRegistration(token) {\n try {\n // Get device info\n const deviceInfo = await this.device.getInfo();\n const deviceId = await this.device.getId();\n\n // Prepare device data\n const deviceData = {\n deviceId: deviceId.uuid,\n deviceType: deviceInfo.platform.toLowerCase(),\n deviceToken: token.value,\n };\n\n // Register device with backend\n await this.store.notifications.actions.registerDevice(deviceData);\n } catch (error) {\n console.error('Error handling push registration:', error);\n }\n }\n\n /**\n * Handle received notification\n */\n _handleNotificationReceived(notification) {\n // Add notification to store\n this.store.notifications.actions.addLocalNotification({\n title: notification.title,\n body: notification.body,\n data: notification.data || {},\n });\n }\n\n /**\n * Handle notification action (when user taps on notification)\n */\n _handleNotificationAction(actionData) {\n if (actionData.notification && actionData.notification.data) {\n this.store.notifications.actions.handleNotificationAction(actionData.notification.data);\n }\n }\n\n /**\n * Remove push notification listeners\n */\n removeListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (this.pushNotifications) {\n this.pushNotifications.removeAllListeners();\n }\n }\n}\n\n/**\n * Notification Manager for coordinating WebSocket and Push notifications\n */\n\nclass NotificationManager {\n constructor(store, options = {}) {\n this.store = store;\n this.options = options;\n this.pushHandler = new CapacitorPushHandler(store);\n this.initialized = false;\n this.isServer = typeof window === 'undefined';\n }\n\n async registerWebPush(store) {\n if (!('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 // 🎯 Опционально включаем 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 * 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(\n () => store.auth.state.access.status,\n isAuthenticated => {\n if (isAuthenticated) {\n notificationManager.initialize();\n } else {\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n }\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 NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // Sections\n NotificationsList,\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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"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { watch, toRefs } from "vue";
|
|
2
2
|
import nofitications from "./router/notifications.router.js";
|
|
3
3
|
import * as notifications_store from "./store/notifications.store.js";
|
|
4
|
-
import "../auth/views/store/auth.js";
|
|
5
4
|
import globalWebSocket from "../globals/views/classes/globals.websocket.js";
|
|
6
5
|
import NotificationsLayout from "./components/layouts/NotificationsLayout.vue.js";
|
|
7
|
-
import NotificationsList from "./components/sections/NotificationsList.vue.js";
|
|
8
6
|
import NotificationPreferences from "./components/sections/NotificationPreferences.vue.js";
|
|
7
|
+
import NotificationsList from "./components/sections/NotificationsList.vue.js";
|
|
9
8
|
import Notifications from "./components/pages/Notifications.vue.js";
|
|
10
|
-
import NotificationBadge from "./components/elements/NotificationBadge.vue.js";
|
|
11
9
|
import NotificationItem from "./components/blocks/NotificationItem.vue.js";
|
|
10
|
+
import NotificationBadge from "./components/elements/NotificationBadge.vue.js";
|
|
12
11
|
class CapacitorPushHandler {
|
|
13
12
|
constructor(store) {
|
|
14
13
|
this.store = store;
|
|
@@ -69,18 +68,9 @@ class CapacitorPushHandler {
|
|
|
69
68
|
* Setup push notification event listeners
|
|
70
69
|
*/
|
|
71
70
|
_setupListeners() {
|
|
72
|
-
this.pushNotifications.addListener(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
);
|
|
76
|
-
this.pushNotifications.addListener(
|
|
77
|
-
"pushNotificationReceived",
|
|
78
|
-
this._handleNotificationReceived.bind(this)
|
|
79
|
-
);
|
|
80
|
-
this.pushNotifications.addListener(
|
|
81
|
-
"pushNotificationActionPerformed",
|
|
82
|
-
this._handleNotificationAction.bind(this)
|
|
83
|
-
);
|
|
71
|
+
this.pushNotifications.addListener("registration", this._handleRegistration.bind(this));
|
|
72
|
+
this.pushNotifications.addListener("pushNotificationReceived", this._handleNotificationReceived.bind(this));
|
|
73
|
+
this.pushNotifications.addListener("pushNotificationActionPerformed", this._handleNotificationAction.bind(this));
|
|
84
74
|
}
|
|
85
75
|
/**
|
|
86
76
|
* Handle registration token received
|
|
@@ -114,9 +104,7 @@ class CapacitorPushHandler {
|
|
|
114
104
|
*/
|
|
115
105
|
_handleNotificationAction(actionData) {
|
|
116
106
|
if (actionData.notification && actionData.notification.data) {
|
|
117
|
-
this.store.notifications.actions.handleNotificationAction(
|
|
118
|
-
actionData.notification.data
|
|
119
|
-
);
|
|
107
|
+
this.store.notifications.actions.handleNotificationAction(actionData.notification.data);
|
|
120
108
|
}
|
|
121
109
|
}
|
|
122
110
|
/**
|
|
@@ -234,14 +222,17 @@ function initializeNotifications(app, store, router, options = {}) {
|
|
|
234
222
|
if (isAuthenticated && userId) {
|
|
235
223
|
notificationManager.initialize();
|
|
236
224
|
}
|
|
237
|
-
watch(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
225
|
+
watch(
|
|
226
|
+
() => store.auth.state.access.status,
|
|
227
|
+
(isAuthenticated2) => {
|
|
228
|
+
if (isAuthenticated2) {
|
|
229
|
+
notificationManager.initialize();
|
|
230
|
+
} else {
|
|
231
|
+
notificationManager.disconnect();
|
|
232
|
+
store.notifications.mutations.resetNotifications();
|
|
233
|
+
}
|
|
243
234
|
}
|
|
244
|
-
|
|
235
|
+
);
|
|
245
236
|
}
|
|
246
237
|
app.provide("useNotifications", () => {
|
|
247
238
|
return {
|
|
@@ -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 { toRefs, watch } 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\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 NotificationPreferences from './components/sections/NotificationPreferences.vue';\nimport NotificationsList from './components/sections/NotificationsList.vue';\n// Pages\nimport Notifications from './components/pages/Notifications.vue';\n// Components\nimport NotificationItem from './components/blocks/NotificationItem.vue';\nimport NotificationBadge from './components/elements/NotificationBadge.vue';\n\n/**\n * Capacitor Push Notification handler\n */\nclass CapacitorPushHandler {\n constructor(store) {\n this.store = store;\n this.pushNotifications = null;\n this.device = null;\n this.isInitialized = false;\n }\n\n /**\n * Initialize Capacitor plugins\n */\n async initialize() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n try {\n // Dynamic imports to prevent errors in web environment\n const { Capacitor } = await import('@capacitor/core');\n const { PushNotifications } = await import('@capacitor/push-notifications');\n const { Device } = await import('@capacitor/device');\n\n this.capacitor = Capacitor;\n this.pushNotifications = PushNotifications;\n this.device = Device;\n\n // Only proceed if running on a native platform\n if (!this.capacitor.isNativePlatform()) {\n return false;\n }\n\n this.isInitialized = true;\n return true;\n } catch (error) {\n console.error('Error importing Capacitor plugins:', error);\n return false;\n }\n }\n\n /**\n * Request permission and register for push notifications\n */\n async requestPermissions() {\n // Skip if running in SSR\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!this.isInitialized) {\n const initialized = await this.initialize();\n if (!initialized) return false;\n }\n\n try {\n // Request permission\n const permissionResult = await this.pushNotifications.requestPermissions();\n if (permissionResult.receive !== 'granted') {\n console.log('Push notification permission denied');\n return false;\n }\n\n // Set up event listeners\n this._setupListeners();\n\n // Register with Apple/Google\n await this.pushNotifications.register();\n return true;\n } catch (error) {\n console.error('Error requesting push notification permissions:', error);\n return false;\n }\n }\n\n /**\n * Setup push notification event listeners\n */\n _setupListeners() {\n // Registration event\n this.pushNotifications.addListener('registration', this._handleRegistration.bind(this));\n\n // Notification received event\n this.pushNotifications.addListener('pushNotificationReceived', this._handleNotificationReceived.bind(this));\n\n // Notification action performed event\n this.pushNotifications.addListener('pushNotificationActionPerformed', this._handleNotificationAction.bind(this));\n }\n\n /**\n * Handle registration token received\n */\n async _handleRegistration(token) {\n try {\n // Get device info\n const deviceInfo = await this.device.getInfo();\n const deviceId = await this.device.getId();\n\n // Prepare device data\n const deviceData = {\n deviceId: deviceId.uuid,\n deviceType: deviceInfo.platform.toLowerCase(),\n deviceToken: token.value,\n };\n\n // Register device with backend\n await this.store.notifications.actions.registerDevice(deviceData);\n } catch (error) {\n console.error('Error handling push registration:', error);\n }\n }\n\n /**\n * Handle received notification\n */\n _handleNotificationReceived(notification) {\n // Add notification to store\n this.store.notifications.actions.addLocalNotification({\n title: notification.title,\n body: notification.body,\n data: notification.data || {},\n });\n }\n\n /**\n * Handle notification action (when user taps on notification)\n */\n _handleNotificationAction(actionData) {\n if (actionData.notification && actionData.notification.data) {\n this.store.notifications.actions.handleNotificationAction(actionData.notification.data);\n }\n }\n\n /**\n * Remove push notification listeners\n */\n removeListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (this.pushNotifications) {\n this.pushNotifications.removeAllListeners();\n }\n }\n}\n\n/**\n * Notification Manager for coordinating WebSocket and Push notifications\n */\n\nclass NotificationManager {\n constructor(store, options = {}) {\n this.store = store;\n this.options = options;\n this.pushHandler = new CapacitorPushHandler(store);\n this.initialized = false;\n this.isServer = typeof window === 'undefined';\n }\n\n async registerWebPush(store) {\n if (!('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 // 🎯 Опционально включаем 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 * 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(\n () => store.auth.state.access.status,\n isAuthenticated => {\n if (isAuthenticated) {\n notificationManager.initialize();\n } else {\n notificationManager.disconnect();\n store.notifications.mutations.resetNotifications();\n }\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 NotificationPreferences,\n // Pages\n Notifications,\n // Layouts\n NotificationsLayout,\n // Sections\n NotificationsList,\n // SSR Utilities\n SSRUtils,\n};\n\nexport default ModuleNotifications;\n"],"names":["routerNotifications","storeNotifications","isAuthenticated"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const NotificationsLayout = require("../components/layouts/NotificationsLayout.vue.cjs");
|
|
3
4
|
const Notifications = require("../components/pages/Notifications.vue.cjs");
|
|
4
5
|
const NotificationPreferences = require("../components/sections/NotificationPreferences.vue.cjs");
|
|
5
|
-
const NotificationsLayout = require("../components/layouts/NotificationsLayout.vue.cjs");
|
|
6
6
|
const nofitications = {
|
|
7
7
|
path: "/notifications",
|
|
8
8
|
component: NotificationsLayout.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.router.cjs","sources":["../../../../../../src/modules/notifications/router/notifications.router.js"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"notifications.router.cjs","sources":["../../../../../../src/modules/notifications/router/notifications.router.js"],"sourcesContent":["import NotificationsLayout from '../components/layouts/NotificationsLayout.vue';\nimport Notifications from '../components/pages/Notifications.vue';\nimport NotificationPreferences from '../components/sections/NotificationPreferences.vue';\n\nconst nofitications = {\n path: '/notifications',\n component: NotificationsLayout,\n children: [\n {\n path: '',\n name: 'Notifications',\n component: Notifications,\n meta: {\n // requiresAuth: true,\n title: 'Notifications',\n },\n },\n {\n path: 'preferences',\n name: 'NotificationPreferences',\n component: NotificationPreferences,\n meta: {\n // requiresAuth: true,\n title: 'Notification Preferences',\n },\n },\n ],\n};\n\nexport default nofitications;\n"],"names":["NotificationsLayout","Notifications","NotificationPreferences"],"mappings":";;;;;AAIK,MAAC,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,WAAWA,oBAAmB;AAAA,EAC9B,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAWC,cAAa;AAAA,MACxB,MAAM;AAAA;AAAA,QAEJ,OAAO;AAAA,MACR;AAAA,IACF;AAAA,IACD;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAWC,wBAAuB;AAAA,MAClC,MAAM;AAAA;AAAA,QAEJ,OAAO;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACH;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import NotificationsLayout from "../components/layouts/NotificationsLayout.vue.js";
|
|
1
2
|
import Notifications from "../components/pages/Notifications.vue.js";
|
|
2
3
|
import NotificationPreferences from "../components/sections/NotificationPreferences.vue.js";
|
|
3
|
-
import NotificationsLayout from "../components/layouts/NotificationsLayout.vue.js";
|
|
4
4
|
const nofitications = {
|
|
5
5
|
path: "/notifications",
|
|
6
6
|
component: NotificationsLayout,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.router.js","sources":["../../../../../../src/modules/notifications/router/notifications.router.js"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"notifications.router.js","sources":["../../../../../../src/modules/notifications/router/notifications.router.js"],"sourcesContent":["import NotificationsLayout from '../components/layouts/NotificationsLayout.vue';\nimport Notifications from '../components/pages/Notifications.vue';\nimport NotificationPreferences from '../components/sections/NotificationPreferences.vue';\n\nconst nofitications = {\n path: '/notifications',\n component: NotificationsLayout,\n children: [\n {\n path: '',\n name: 'Notifications',\n component: Notifications,\n meta: {\n // requiresAuth: true,\n title: 'Notifications',\n },\n },\n {\n path: 'preferences',\n name: 'NotificationPreferences',\n component: NotificationPreferences,\n meta: {\n // requiresAuth: true,\n title: 'Notification Preferences',\n },\n },\n ],\n};\n\nexport default nofitications;\n"],"names":[],"mappings":";;;AAIK,MAAC,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA;AAAA,QAEJ,OAAO;AAAA,MACR;AAAA,IACF;AAAA,IACD;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA;AAAA,QAEJ,OAAO;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.store.cjs","sources":["../../../../../../src/modules/notifications/store/notifications.store.js"],"sourcesContent":["// Dependencies\nimport { reactive, ref, computed, toRefs, watch } from \"vue\";\n// Setup Axios\nimport $axios from '@martyrs/src/modules/globals/views/utils/axios-instance.js';\n// Globals\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals';\n// Auth\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\n\n// Initial state for a notification\nconst notificationInitState = {\n _id: null,\n title: '',\n body: '',\n type: 'info',\n metadata: {},\n userId: null,\n status: 'pending',\n createdAt: null,\n updatedAt: null\n};\n\n// Initial state for notification preferences\nconst preferencesInitState = {\n web: true,\n push: true,\n email: true,\n sms: true,\n telegram: false,\n whatsapp: false\n};\n\n// State declaration\nconst state = reactive({\n notifications: [],\n unreadCount: 0,\n current: {...notificationInitState},\n preferences: {...preferencesInitState},\n deviceRegistered: false,\n loading: false,\n lastSync: null\n});\n\nconst actions = {\n /**\n * Get user notifications from server\n */\n async getNotifications(userId = null) {\n try {\n // Use provided userId or get from auth store\n const userIdToUse = userId || auth.state.user._id;\n \n if (!userIdToUse) {\n console.warn('Cannot get notifications: No user ID found');\n return [];\n }\n \n state.loading = true;\n const response = await $axios.get(`/api/notifications/user/${userIdToUse}`);\n state.notifications = response.data;\n state.lastSync = new Date().toISOString();\n updateUnreadCount();\n state.loading = false;\n return response.data;\n } catch (error) {\n state.loading = false;\n setError(error);\n throw error;\n }\n },\n\n /**\n * Mark a notification as read\n */\n async markAsRead(notificationId) {\n try {\n const response = await $axios.put(`/api/notifications/${notificationId}/read`);\n \n // Update the notification in the local state\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index] = response.data;\n updateUnreadCount();\n }\n \n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Synchronize notification status without API call\n * (For use with WebSocket updates)\n */\n syncNotificationStatus(notificationId, status) {\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index].status = status;\n state.notifications[index].updatedAt = new Date().toISOString();\n updateUnreadCount();\n }\n },\n\n /**\n * Register a device for push notifications\n */\n async registerDevice(deviceData) {\n try {\n // Add the current user ID to the device data\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot register device: No user ID found');\n return;\n }\n \n deviceData.userId = userId;\n \n const response = await $axios.post('/api/notifications/devices/register', deviceData);\n state.deviceRegistered = true;\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Update notification preferences\n */\n async updatePreferences(preferences) {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot update preferences: No user ID found');\n return;\n }\n \n // Transform preferences object to array format expected by the API\n const preferencesArray = Object.entries(preferences).map(([channelType, isEnabled]) => {\n return {\n channelType,\n notificationType: 'all', // Default type, can be made more specific\n isEnabled\n };\n });\n \n const response = await $axios.put('/api/notifications/preferences', {\n userId,\n preferences: preferencesArray\n });\n \n // Update state with new preferences\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n \n state.preferences = {...preferencesInitState, ...newPreferences};\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Get notification preferences\n */\n async getPreferences() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot get preferences: No user ID found');\n return;\n }\n \n // Assuming an endpoint exists to fetch preferences\n const response = await $axios.get(`/api/notifications/preferences/${userId}`);\n \n // Transform API response to our state format\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n \n state.preferences = {...preferencesInitState, ...newPreferences};\n return response.data;\n } catch (error) {\n setError(error);\n // If API fails, use default preferences\n state.preferences = {...preferencesInitState};\n throw error;\n }\n },\n\n /**\n * Add a local notification (for handling push notifications or WebSocket notifications)\n */\n addLocalNotification(notification) {\n // Check if notification already exists by ID to prevent duplicates\n if (notification._id) {\n const existingIndex = state.notifications.findIndex(n => n._id === notification._id);\n if (existingIndex !== -1) {\n // Update existing notification\n state.notifications[existingIndex] = {\n ...state.notifications[existingIndex],\n ...notification,\n updatedAt: new Date().toISOString()\n };\n updateUnreadCount();\n return;\n }\n }\n \n // Create a notification object that matches our expected format\n const newNotification = {\n _id: notification._id || Date.now().toString(), // Use provided ID or generate temporary one\n title: notification.title,\n body: notification.body,\n type: notification.type || notification.data?.type || 'info',\n metadata: notification.data || notification.metadata || {},\n status: notification.status || 'unread',\n createdAt: notification.createdAt || new Date().toISOString(),\n updatedAt: notification.updatedAt || new Date().toISOString()\n };\n \n // Add to local state\n state.notifications.unshift(newNotification);\n updateUnreadCount();\n },\n\n /**\n * Handle notification action (e.g., when user taps on push notification)\n */\n handleNotificationAction(data) {\n // Mark notification as read if ID is provided\n if (data.notificationId) {\n this.markAsRead(data.notificationId);\n }\n \n // Navigate based on notification type and metadata\n if (data.route) {\n // router.push(data.route);\n alert('1')\n } else if (data.type === 'order') {\n // router.push(`/orders/${data.orderId}`);\n alert('2')\n } else if (data.type === 'message') {\n // router.push('/messages');\n alert('3')\n } else {\n // Default to notifications page\n // router.push('/notifications');\n alert('4')\n }\n },\n \n /**\n * Mark all notifications as read\n */\n async markAllAsRead() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot mark all as read: No user ID found');\n return;\n }\n \n const response = await $axios.put(`/api/notifications/user/${userId}/read-all`);\n \n // Update all notifications in local state\n state.notifications.forEach(notification => {\n notification.status = 'read';\n notification.updatedAt = new Date().toISOString();\n });\n \n updateUnreadCount();\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n }\n};\n\nconst mutations = {\n resetNotifications() {\n state.notifications = [];\n state.unreadCount = 0;\n state.lastSync = null;\n },\n \n resetCurrent() {\n state.current = {...notificationInitState};\n },\n \n resetPreferences() {\n state.preferences = {...preferencesInitState};\n }\n};\n\n// Helper functions\nfunction updateUnreadCount() {\n state.unreadCount = state.notifications.filter(n => n.status !== 'read').length;\n}\n\n// Track state changes\nconst history = [];\nhistory.push(state);\n\nwatch(state, (newState) => {\n history.push(newState);\n});\n\n// Computed properties\nconst getters = {\n unreadNotifications: computed(() => {\n return state.notifications.filter(n => n.status !== 'read');\n }),\n \n readNotifications: computed(() => {\n return state.notifications.filter(n => n.status === 'read');\n }),\n \n notificationsByType: computed(() => {\n const result = {};\n state.notifications.forEach(notification => {\n if (!result[notification.type]) {\n result[notification.type] = [];\n }\n result[notification.type].push(notification);\n });\n return result;\n })\n};\n\nexport {\n state,\n actions,\n mutations,\n getters\n};"],"names":["reactive","auth.state","$axios","setError","watch","computed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notifications.store.cjs","sources":["../../../../../../src/modules/notifications/store/notifications.store.js"],"sourcesContent":["// Dependencies\nimport { computed, reactive, watch } from 'vue';\n// Setup Axios\nimport $axios from '@martyrs/src/modules/globals/views/utils/axios-instance.js';\n// Globals\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals.js';\n// Auth\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n// Initial state for a notification\nconst notificationInitState = {\n _id: null,\n title: '',\n body: '',\n type: 'info',\n metadata: {},\n userId: null,\n status: 'pending',\n createdAt: null,\n updatedAt: null,\n};\n\n// Initial state for notification preferences\nconst preferencesInitState = {\n web: true,\n push: true,\n email: true,\n sms: true,\n telegram: false,\n whatsapp: false,\n};\n\n// State declaration\nconst state = reactive({\n notifications: [],\n unreadCount: 0,\n current: { ...notificationInitState },\n preferences: { ...preferencesInitState },\n deviceRegistered: false,\n loading: false,\n lastSync: null,\n});\n\nconst actions = {\n /**\n * Get user notifications from server\n */\n async getNotifications(userId = null) {\n try {\n // Use provided userId or get from auth store\n const userIdToUse = userId || auth.state.user._id;\n\n if (!userIdToUse) {\n console.warn('Cannot get notifications: No user ID found');\n return [];\n }\n\n state.loading = true;\n const response = await $axios.get(`/api/notifications/user/${userIdToUse}`);\n state.notifications = response.data;\n state.lastSync = new Date().toISOString();\n updateUnreadCount();\n state.loading = false;\n return response.data;\n } catch (error) {\n state.loading = false;\n setError(error);\n throw error;\n }\n },\n\n /**\n * Mark a notification as read\n */\n async markAsRead(notificationId) {\n try {\n const response = await $axios.put(`/api/notifications/${notificationId}/read`);\n\n // Update the notification in the local state\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index] = response.data;\n updateUnreadCount();\n }\n\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Synchronize notification status without API call\n * (For use with WebSocket updates)\n */\n syncNotificationStatus(notificationId, status) {\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index].status = status;\n state.notifications[index].updatedAt = new Date().toISOString();\n updateUnreadCount();\n }\n },\n\n /**\n * Register a device for push notifications\n */\n async registerDevice(deviceData) {\n try {\n // Add the current user ID to the device data\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot register device: No user ID found');\n return;\n }\n\n deviceData.userId = userId;\n\n const response = await $axios.post('/api/notifications/devices/register', deviceData);\n state.deviceRegistered = true;\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Update notification preferences\n */\n async updatePreferences(preferences) {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot update preferences: No user ID found');\n return;\n }\n\n // Transform preferences object to array format expected by the API\n const preferencesArray = Object.entries(preferences).map(([channelType, isEnabled]) => {\n return {\n channelType,\n notificationType: 'all', // Default type, can be made more specific\n isEnabled,\n };\n });\n\n const response = await $axios.put('/api/notifications/preferences', {\n userId,\n preferences: preferencesArray,\n });\n\n // Update state with new preferences\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n\n state.preferences = { ...preferencesInitState, ...newPreferences };\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Get notification preferences\n */\n async getPreferences() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot get preferences: No user ID found');\n return;\n }\n\n // Assuming an endpoint exists to fetch preferences\n const response = await $axios.get(`/api/notifications/preferences/${userId}`);\n\n // Transform API response to our state format\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n\n state.preferences = { ...preferencesInitState, ...newPreferences };\n return response.data;\n } catch (error) {\n setError(error);\n // If API fails, use default preferences\n state.preferences = { ...preferencesInitState };\n throw error;\n }\n },\n\n /**\n * Add a local notification (for handling push notifications or WebSocket notifications)\n */\n addLocalNotification(notification) {\n // Check if notification already exists by ID to prevent duplicates\n if (notification._id) {\n const existingIndex = state.notifications.findIndex(n => n._id === notification._id);\n if (existingIndex !== -1) {\n // Update existing notification\n state.notifications[existingIndex] = {\n ...state.notifications[existingIndex],\n ...notification,\n updatedAt: new Date().toISOString(),\n };\n updateUnreadCount();\n return;\n }\n }\n\n // Create a notification object that matches our expected format\n const newNotification = {\n _id: notification._id || Date.now().toString(), // Use provided ID or generate temporary one\n title: notification.title,\n body: notification.body,\n type: notification.type || notification.data?.type || 'info',\n metadata: notification.data || notification.metadata || {},\n status: notification.status || 'unread',\n createdAt: notification.createdAt || new Date().toISOString(),\n updatedAt: notification.updatedAt || new Date().toISOString(),\n };\n\n // Add to local state\n state.notifications.unshift(newNotification);\n updateUnreadCount();\n },\n\n /**\n * Handle notification action (e.g., when user taps on push notification)\n */\n handleNotificationAction(data) {\n // Mark notification as read if ID is provided\n if (data.notificationId) {\n this.markAsRead(data.notificationId);\n }\n\n // Navigate based on notification type and metadata\n if (data.route) {\n // router.push(data.route);\n alert('1');\n } else if (data.type === 'order') {\n // router.push(`/orders/${data.orderId}`);\n alert('2');\n } else if (data.type === 'message') {\n // router.push('/messages');\n alert('3');\n } else {\n // Default to notifications page\n // router.push('/notifications');\n alert('4');\n }\n },\n\n /**\n * Mark all notifications as read\n */\n async markAllAsRead() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot mark all as read: No user ID found');\n return;\n }\n\n const response = await $axios.put(`/api/notifications/user/${userId}/read-all`);\n\n // Update all notifications in local state\n state.notifications.forEach(notification => {\n notification.status = 'read';\n notification.updatedAt = new Date().toISOString();\n });\n\n updateUnreadCount();\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n};\n\nconst mutations = {\n resetNotifications() {\n state.notifications = [];\n state.unreadCount = 0;\n state.lastSync = null;\n },\n\n resetCurrent() {\n state.current = { ...notificationInitState };\n },\n\n resetPreferences() {\n state.preferences = { ...preferencesInitState };\n },\n};\n\n// Helper functions\nfunction updateUnreadCount() {\n state.unreadCount = state.notifications.filter(n => n.status !== 'read').length;\n}\n\n// Track state changes\nconst history = [];\nhistory.push(state);\n\nwatch(state, newState => {\n history.push(newState);\n});\n\n// Computed properties\nconst getters = {\n unreadNotifications: computed(() => {\n return state.notifications.filter(n => n.status !== 'read');\n }),\n\n readNotifications: computed(() => {\n return state.notifications.filter(n => n.status === 'read');\n }),\n\n notificationsByType: computed(() => {\n const result = {};\n state.notifications.forEach(notification => {\n if (!result[notification.type]) {\n result[notification.type] = [];\n }\n result[notification.type].push(notification);\n });\n return result;\n }),\n};\n\nexport { actions, getters, mutations, state };\n"],"names":["reactive","auth.state","$axios","setError","watch","computed"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.store.js","sources":["../../../../../../src/modules/notifications/store/notifications.store.js"],"sourcesContent":["// Dependencies\nimport { reactive, ref, computed, toRefs, watch } from \"vue\";\n// Setup Axios\nimport $axios from '@martyrs/src/modules/globals/views/utils/axios-instance.js';\n// Globals\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals';\n// Auth\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\n\n// Initial state for a notification\nconst notificationInitState = {\n _id: null,\n title: '',\n body: '',\n type: 'info',\n metadata: {},\n userId: null,\n status: 'pending',\n createdAt: null,\n updatedAt: null\n};\n\n// Initial state for notification preferences\nconst preferencesInitState = {\n web: true,\n push: true,\n email: true,\n sms: true,\n telegram: false,\n whatsapp: false\n};\n\n// State declaration\nconst state = reactive({\n notifications: [],\n unreadCount: 0,\n current: {...notificationInitState},\n preferences: {...preferencesInitState},\n deviceRegistered: false,\n loading: false,\n lastSync: null\n});\n\nconst actions = {\n /**\n * Get user notifications from server\n */\n async getNotifications(userId = null) {\n try {\n // Use provided userId or get from auth store\n const userIdToUse = userId || auth.state.user._id;\n \n if (!userIdToUse) {\n console.warn('Cannot get notifications: No user ID found');\n return [];\n }\n \n state.loading = true;\n const response = await $axios.get(`/api/notifications/user/${userIdToUse}`);\n state.notifications = response.data;\n state.lastSync = new Date().toISOString();\n updateUnreadCount();\n state.loading = false;\n return response.data;\n } catch (error) {\n state.loading = false;\n setError(error);\n throw error;\n }\n },\n\n /**\n * Mark a notification as read\n */\n async markAsRead(notificationId) {\n try {\n const response = await $axios.put(`/api/notifications/${notificationId}/read`);\n \n // Update the notification in the local state\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index] = response.data;\n updateUnreadCount();\n }\n \n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Synchronize notification status without API call\n * (For use with WebSocket updates)\n */\n syncNotificationStatus(notificationId, status) {\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index].status = status;\n state.notifications[index].updatedAt = new Date().toISOString();\n updateUnreadCount();\n }\n },\n\n /**\n * Register a device for push notifications\n */\n async registerDevice(deviceData) {\n try {\n // Add the current user ID to the device data\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot register device: No user ID found');\n return;\n }\n \n deviceData.userId = userId;\n \n const response = await $axios.post('/api/notifications/devices/register', deviceData);\n state.deviceRegistered = true;\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Update notification preferences\n */\n async updatePreferences(preferences) {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot update preferences: No user ID found');\n return;\n }\n \n // Transform preferences object to array format expected by the API\n const preferencesArray = Object.entries(preferences).map(([channelType, isEnabled]) => {\n return {\n channelType,\n notificationType: 'all', // Default type, can be made more specific\n isEnabled\n };\n });\n \n const response = await $axios.put('/api/notifications/preferences', {\n userId,\n preferences: preferencesArray\n });\n \n // Update state with new preferences\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n \n state.preferences = {...preferencesInitState, ...newPreferences};\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Get notification preferences\n */\n async getPreferences() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot get preferences: No user ID found');\n return;\n }\n \n // Assuming an endpoint exists to fetch preferences\n const response = await $axios.get(`/api/notifications/preferences/${userId}`);\n \n // Transform API response to our state format\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n \n state.preferences = {...preferencesInitState, ...newPreferences};\n return response.data;\n } catch (error) {\n setError(error);\n // If API fails, use default preferences\n state.preferences = {...preferencesInitState};\n throw error;\n }\n },\n\n /**\n * Add a local notification (for handling push notifications or WebSocket notifications)\n */\n addLocalNotification(notification) {\n // Check if notification already exists by ID to prevent duplicates\n if (notification._id) {\n const existingIndex = state.notifications.findIndex(n => n._id === notification._id);\n if (existingIndex !== -1) {\n // Update existing notification\n state.notifications[existingIndex] = {\n ...state.notifications[existingIndex],\n ...notification,\n updatedAt: new Date().toISOString()\n };\n updateUnreadCount();\n return;\n }\n }\n \n // Create a notification object that matches our expected format\n const newNotification = {\n _id: notification._id || Date.now().toString(), // Use provided ID or generate temporary one\n title: notification.title,\n body: notification.body,\n type: notification.type || notification.data?.type || 'info',\n metadata: notification.data || notification.metadata || {},\n status: notification.status || 'unread',\n createdAt: notification.createdAt || new Date().toISOString(),\n updatedAt: notification.updatedAt || new Date().toISOString()\n };\n \n // Add to local state\n state.notifications.unshift(newNotification);\n updateUnreadCount();\n },\n\n /**\n * Handle notification action (e.g., when user taps on push notification)\n */\n handleNotificationAction(data) {\n // Mark notification as read if ID is provided\n if (data.notificationId) {\n this.markAsRead(data.notificationId);\n }\n \n // Navigate based on notification type and metadata\n if (data.route) {\n // router.push(data.route);\n alert('1')\n } else if (data.type === 'order') {\n // router.push(`/orders/${data.orderId}`);\n alert('2')\n } else if (data.type === 'message') {\n // router.push('/messages');\n alert('3')\n } else {\n // Default to notifications page\n // router.push('/notifications');\n alert('4')\n }\n },\n \n /**\n * Mark all notifications as read\n */\n async markAllAsRead() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot mark all as read: No user ID found');\n return;\n }\n \n const response = await $axios.put(`/api/notifications/user/${userId}/read-all`);\n \n // Update all notifications in local state\n state.notifications.forEach(notification => {\n notification.status = 'read';\n notification.updatedAt = new Date().toISOString();\n });\n \n updateUnreadCount();\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n }\n};\n\nconst mutations = {\n resetNotifications() {\n state.notifications = [];\n state.unreadCount = 0;\n state.lastSync = null;\n },\n \n resetCurrent() {\n state.current = {...notificationInitState};\n },\n \n resetPreferences() {\n state.preferences = {...preferencesInitState};\n }\n};\n\n// Helper functions\nfunction updateUnreadCount() {\n state.unreadCount = state.notifications.filter(n => n.status !== 'read').length;\n}\n\n// Track state changes\nconst history = [];\nhistory.push(state);\n\nwatch(state, (newState) => {\n history.push(newState);\n});\n\n// Computed properties\nconst getters = {\n unreadNotifications: computed(() => {\n return state.notifications.filter(n => n.status !== 'read');\n }),\n \n readNotifications: computed(() => {\n return state.notifications.filter(n => n.status === 'read');\n }),\n \n notificationsByType: computed(() => {\n const result = {};\n state.notifications.forEach(notification => {\n if (!result[notification.type]) {\n result[notification.type] = [];\n }\n result[notification.type].push(notification);\n });\n return result;\n })\n};\n\nexport {\n state,\n actions,\n mutations,\n getters\n};"],"names":["auth.state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notifications.store.js","sources":["../../../../../../src/modules/notifications/store/notifications.store.js"],"sourcesContent":["// Dependencies\nimport { computed, reactive, watch } from 'vue';\n// Setup Axios\nimport $axios from '@martyrs/src/modules/globals/views/utils/axios-instance.js';\n// Globals\nimport { setError } from '@martyrs/src/modules/globals/views/store/globals.js';\n// Auth\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n// Initial state for a notification\nconst notificationInitState = {\n _id: null,\n title: '',\n body: '',\n type: 'info',\n metadata: {},\n userId: null,\n status: 'pending',\n createdAt: null,\n updatedAt: null,\n};\n\n// Initial state for notification preferences\nconst preferencesInitState = {\n web: true,\n push: true,\n email: true,\n sms: true,\n telegram: false,\n whatsapp: false,\n};\n\n// State declaration\nconst state = reactive({\n notifications: [],\n unreadCount: 0,\n current: { ...notificationInitState },\n preferences: { ...preferencesInitState },\n deviceRegistered: false,\n loading: false,\n lastSync: null,\n});\n\nconst actions = {\n /**\n * Get user notifications from server\n */\n async getNotifications(userId = null) {\n try {\n // Use provided userId or get from auth store\n const userIdToUse = userId || auth.state.user._id;\n\n if (!userIdToUse) {\n console.warn('Cannot get notifications: No user ID found');\n return [];\n }\n\n state.loading = true;\n const response = await $axios.get(`/api/notifications/user/${userIdToUse}`);\n state.notifications = response.data;\n state.lastSync = new Date().toISOString();\n updateUnreadCount();\n state.loading = false;\n return response.data;\n } catch (error) {\n state.loading = false;\n setError(error);\n throw error;\n }\n },\n\n /**\n * Mark a notification as read\n */\n async markAsRead(notificationId) {\n try {\n const response = await $axios.put(`/api/notifications/${notificationId}/read`);\n\n // Update the notification in the local state\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index] = response.data;\n updateUnreadCount();\n }\n\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Synchronize notification status without API call\n * (For use with WebSocket updates)\n */\n syncNotificationStatus(notificationId, status) {\n const index = state.notifications.findIndex(n => n._id === notificationId);\n if (index !== -1) {\n state.notifications[index].status = status;\n state.notifications[index].updatedAt = new Date().toISOString();\n updateUnreadCount();\n }\n },\n\n /**\n * Register a device for push notifications\n */\n async registerDevice(deviceData) {\n try {\n // Add the current user ID to the device data\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot register device: No user ID found');\n return;\n }\n\n deviceData.userId = userId;\n\n const response = await $axios.post('/api/notifications/devices/register', deviceData);\n state.deviceRegistered = true;\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Update notification preferences\n */\n async updatePreferences(preferences) {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot update preferences: No user ID found');\n return;\n }\n\n // Transform preferences object to array format expected by the API\n const preferencesArray = Object.entries(preferences).map(([channelType, isEnabled]) => {\n return {\n channelType,\n notificationType: 'all', // Default type, can be made more specific\n isEnabled,\n };\n });\n\n const response = await $axios.put('/api/notifications/preferences', {\n userId,\n preferences: preferencesArray,\n });\n\n // Update state with new preferences\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n\n state.preferences = { ...preferencesInitState, ...newPreferences };\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n\n /**\n * Get notification preferences\n */\n async getPreferences() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot get preferences: No user ID found');\n return;\n }\n\n // Assuming an endpoint exists to fetch preferences\n const response = await $axios.get(`/api/notifications/preferences/${userId}`);\n\n // Transform API response to our state format\n const newPreferences = {};\n response.data.forEach(pref => {\n newPreferences[pref.channelType] = pref.isEnabled;\n });\n\n state.preferences = { ...preferencesInitState, ...newPreferences };\n return response.data;\n } catch (error) {\n setError(error);\n // If API fails, use default preferences\n state.preferences = { ...preferencesInitState };\n throw error;\n }\n },\n\n /**\n * Add a local notification (for handling push notifications or WebSocket notifications)\n */\n addLocalNotification(notification) {\n // Check if notification already exists by ID to prevent duplicates\n if (notification._id) {\n const existingIndex = state.notifications.findIndex(n => n._id === notification._id);\n if (existingIndex !== -1) {\n // Update existing notification\n state.notifications[existingIndex] = {\n ...state.notifications[existingIndex],\n ...notification,\n updatedAt: new Date().toISOString(),\n };\n updateUnreadCount();\n return;\n }\n }\n\n // Create a notification object that matches our expected format\n const newNotification = {\n _id: notification._id || Date.now().toString(), // Use provided ID or generate temporary one\n title: notification.title,\n body: notification.body,\n type: notification.type || notification.data?.type || 'info',\n metadata: notification.data || notification.metadata || {},\n status: notification.status || 'unread',\n createdAt: notification.createdAt || new Date().toISOString(),\n updatedAt: notification.updatedAt || new Date().toISOString(),\n };\n\n // Add to local state\n state.notifications.unshift(newNotification);\n updateUnreadCount();\n },\n\n /**\n * Handle notification action (e.g., when user taps on push notification)\n */\n handleNotificationAction(data) {\n // Mark notification as read if ID is provided\n if (data.notificationId) {\n this.markAsRead(data.notificationId);\n }\n\n // Navigate based on notification type and metadata\n if (data.route) {\n // router.push(data.route);\n alert('1');\n } else if (data.type === 'order') {\n // router.push(`/orders/${data.orderId}`);\n alert('2');\n } else if (data.type === 'message') {\n // router.push('/messages');\n alert('3');\n } else {\n // Default to notifications page\n // router.push('/notifications');\n alert('4');\n }\n },\n\n /**\n * Mark all notifications as read\n */\n async markAllAsRead() {\n try {\n const userId = auth.state.user._id;\n if (!userId) {\n console.warn('Cannot mark all as read: No user ID found');\n return;\n }\n\n const response = await $axios.put(`/api/notifications/user/${userId}/read-all`);\n\n // Update all notifications in local state\n state.notifications.forEach(notification => {\n notification.status = 'read';\n notification.updatedAt = new Date().toISOString();\n });\n\n updateUnreadCount();\n return response.data;\n } catch (error) {\n setError(error);\n throw error;\n }\n },\n};\n\nconst mutations = {\n resetNotifications() {\n state.notifications = [];\n state.unreadCount = 0;\n state.lastSync = null;\n },\n\n resetCurrent() {\n state.current = { ...notificationInitState };\n },\n\n resetPreferences() {\n state.preferences = { ...preferencesInitState };\n },\n};\n\n// Helper functions\nfunction updateUnreadCount() {\n state.unreadCount = state.notifications.filter(n => n.status !== 'read').length;\n}\n\n// Track state changes\nconst history = [];\nhistory.push(state);\n\nwatch(state, newState => {\n history.push(newState);\n});\n\n// Computed properties\nconst getters = {\n unreadNotifications: computed(() => {\n return state.notifications.filter(n => n.status !== 'read');\n }),\n\n readNotifications: computed(() => {\n return state.notifications.filter(n => n.status === 'read');\n }),\n\n notificationsByType: computed(() => {\n const result = {};\n state.notifications.forEach(notification => {\n if (!result[notification.type]) {\n result[notification.type] = [];\n }\n result[notification.type].push(notification);\n });\n return result;\n }),\n};\n\nexport { actions, getters, mutations, state };\n"],"names":["auth.state"],"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.
|
|
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.
|
|
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");
|
|
@@ -385,6 +385,6 @@ const _sfc_main = {
|
|
|
385
385
|
};
|
|
386
386
|
}
|
|
387
387
|
};
|
|
388
|
-
const OrderBackoffice = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
388
|
+
const OrderBackoffice = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-3da4557c"]]);
|
|
389
389
|
exports.default = OrderBackoffice;
|
|
390
390
|
//# sourceMappingURL=OrderBackoffice.vue.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderBackoffice.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderBackoffice.vue"],"sourcesContent":["<template>\n\t<div v-if=\"order && orderOrganization\" class=\"pd-thin bg-white\"> \n\n\t <div v-if=\"order\" class=\"mn-b-thin pos-relative w-100 bg-main radius-medium pd-medium\">\n\t \t<div class=\"mn-b-small flex-nowrap flex\">\n\t\t \t<p class=\"t-medium p-medium\">\n\t\t \tOrder No: <span class=\"p-small t-transp\">#{{order._id}}</span>\n\t\t </p>\n\t\t\t</div>\n\n \t<div class=\"flex-nowrap flex gap-thin pos-relative \">\n\t <div v-for=\"(status, index) in globals.state.options.orders.statuses\" :key=\"index\" class=\"w-20\">\n\t <div\n\t \tclass=\"bg-white br-anim br-glow radius-extra h-1r w-100\"\n\t :class=\"\n\t\t\t\t { 'br-glow-anim': isActiveStatus(index) },\n\t\t\t\t { 't-transp': !isActiveStatus(index) },\n\t\t\t\t { 'blink': order.status === status.value && getNextStatus(order.status) }\n\t\t\t\t \"\n\t />\n\t <div \n\t \t:class=\"{ 't-transp': !isActiveStatus(index) }\"\n\t\t\t\t class=\"mn-t-thin p-small t-medium uppercase\">{{ status.value }}</div>\n\t \t</div>\n\t\t </div>\n\t </div>\n\n \t <Popup \n title=\"Change payment\" \n @close-popup=\"closePaymentPopup\" \n :isPopupOpen=\"isOpenPaymentPopup\"\n class=\"bg-light w-min-25r w-max-25r radius-medium pd-big\"\n >\n \t<Select \n v-model:select=\"selectedPayments.type\"\n :property=\"'value'\"\n label=\"Type\"\n :options=\"[\n {name: 'Cash', value: 'cash'}, \n {name: 'Card', value: 'card'}, \n {name: 'Bank Transfer', value: 'bank'},\n ]\"\n placeholder=\"Select type of payment\" \n size=\"small\"\n class=\"bg-white mn-b-thin pd-regular radius-small w-100\"\n />\n\n <Select \n v-model:select=\"selectedPayments.status\"\n :property=\"'value'\"\n label=\"Status\"\n :options=\"[\n {name: 'Unpaid', value: 'unpaid'}, \n {name: 'Paid', value: 'paid'}, \n {name: 'Refunded', value: 'refunded'},\n ]\"\n placeholder=\"Select status of payment\" \n size=\"small\"\n class=\"bg-white mn-b-small pd-regular radius-small w-100\"\n />\n\n\n <Button :submit=\"changePaymentStatus\" class=\"t-white w-100 bg-second\">\n\t\t\t\t<span>Change Status</span>\n\t\t\t</Button>\n\t \t</Popup>\n\n\t <Popup \n title=\"Change order status\" \n @close-popup=\"closeStatusPopup\" \n :isPopupOpen=\"isOpeStatusPopup\"\n class=\"bg-light w-min-30r w-max-30r radius-medium pd-big\"\n >\n\n\t\t\t<!-- Добавить выбор примерного времени -->\n\n \t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n \t\t\t<CardOrderItem\n \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n \t\t\t\t:editable=\"true\" \n \t\t\t\t:product=\"product\" \n \t\t\t\t:increase=\"product => orders.mutations.incrementItemQuantity(order, product._id)\"\n\t :decrease=\"product => orders.mutations.decrementItemQuantity(order, product._id)\"\n\t :remove=\"product => orders.mutations.removeProduct(order, product._id)\"\n\t @updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ positions: order.positions, productId: product._id, dates })\"\n \t\t\t\tclass=\"bg-white radius-small pd-small\"\n \t\t\t/>\n </ul>\n \n <PriceTotal \n :totalPrice=\"cartTotalPrice\"\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 />\n\n \t<Button :submit=\"setNextStatus\" class=\"t-white w-100 bg-second\">\n\t\t\t\t<span>{{'Confirm Changing to ' + (getNextStatus(order.status)).label}}</span>\n\t\t\t</Button>\n\t \t</Popup>\n\n\n\t \n\t <div v-if=\"order\" class=\"gap-thin cols-2\">\n\n\t <div class=\"w-100\">\n\n\n\t\t <CardOrganization \n\t\t \tv-if=\"orderOrganization[0]\"\n\t\t :organization=\"orderOrganization[0]\"\n\t\t :showRating=\"true\"\n\t\t :showFollowers=\"false\"\n\t\t :showProducts=\"false\"\n\t\t class=\"bg-light mn-b-thin w-100 o-hidden radius-medium pd-small \"\n\t\t />\n\n\n\t\t <div \n\t\t \tclass=\"mn-b-thin bg-light w-100 o-hidden radius-medium \"\n\t\t >\n\t\t \t<div class=\"pd-small flex-nowrap flex\">\n\t\t\t \t<div class=\"mn-r-auto\">\n\t\t\t\t \t<span class=\"d-block t-medium p-medium\">Order is</span>\n\t\t\t\t\t <span class=\" t-lh-075 h2 d-block mn-b-small\">{{order.status}}</span>\n\t\t\t\t\t <p class=\"pd-t-nano pd-b-nano pd-r-thin pd-l-thin radius-extra bg-black t-white w-max\">{{formatDate(order.updatedAt, {language: locale })}}</p>\n\t\t\t\t\t </div>\n\t\t\t\t\t <!-- <div class=\"t-right\">\n\t\t\t\t\t \tCancel order<br>\n\t\t\t\t\t \tExchange item\n\t\t\t\t\t \t<hr class=\"mn-b-thin mn-t-thin\">\n\t\t\t\t\t \tFor Delivery Queries Contact Us\n\t\t\t\t\t \t\n\t\t\t\t\t </div> -->\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"order.customer.target?.number\" class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"w-100 t-medium p-medium\">\n\t\t\t \tPhone\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t \t{{order.customer.target?.number || 'Not specified'}}\n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tAddress\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right\">\n\t\t\t {{order.delivery.address || (order.delivery.spot[0].profile.name + ', ' + order.delivery.spot[0].address) || 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tDelivery\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t {{order.delivery.type ? order.delivery.type : 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"mn-r-auto t-medium p-medium\">\n\t\t\t \tPayment\n\t\t\t </p>\n\n\n\t\t\t <p class=\"w-max t-right\">\n\t\t\t {{order.payment.type ? order.payment.type : 'Not specified'}} \n\t\t\t </p>\n\n\t\t\t <p @click=\"route.meta.context !== 'user' && route.meta.context !== 'root' ? openPaymentPopup : console.log('hello')\" class=\"w-max pd-thin radius-small bg-second t-white mn-l-thin cursor-pointer hover-bg-black t-right\">\n\t\t\t {{order.payment.status ? order.payment.status : 'Unpaid'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"route.meta.context !== 'user' && route.meta.context !== 'root'\" class=\"o-y-scroll bg-light pd-thin mn-b-thin pd-thin radius-medium flex-nowrap flex\">\n\t\t \t\t<div class=\"flex-child-default mn-r-small w-max flex-v-center gap-thin flex-nowrap flex pd-thin radius-small bg-light-transp-20\">\n\t\t \t\t\t<IconTime class=\"i-semi t-transp\" fill=\"rgb(var(--black)\" />\n\t\t <p class=\"t-medium mn-r-auto\"><span class=\"p-small t-transp\">Estimated Reaction</span><br>{{formatDate(order.deadline, { language: locale })}}</p>\n\t\t\t \t</div>\n\t\t\t \t<button v-if=\"getNextStatus(order.status)\" @click=\"openStatusPopup\" class=\"flex-child-default mn-l-auto bg-black t-white button\"> \n\t\t\t\t Mark as {{ (getNextStatus(order.status)).label }} \n\t\t\t\t </button>\n\t\t \t</div>\n\n\t\t\t<div class=\"bg-light radius-medium pd-medium mn-r-bold w-100\">\n\t\t <h3 class=\"mn-b-small\">Chat With Us</h3>\n\n\t\t <ChatPage\n\t\t \t:username=\"['Order', 'UserOrder'].includes(route.name) ? (order.user?.name || 'User') : 'Support'\"\n\t\t \t:user=\"auth.state.user._id\"\n\t\t \t:chatID=\"route.params.order\"\n\t\t \tclass=\"radius-semi bs-black bg-light o-hidden\"\n\t\t />\n\n\t </div>\n\t \t<!-- <StatusHistory \n\t \t\tv-if=\"orders.state.current.status_history\"\n\t \t\t:statuses=\"statuses\"\n\t \t\t:statusHistory=\"orders.state.current.status_history\"\n\t \t\t:statusCurrent=\"orders.state.current.status\"\n\t \t\t:edit=\"route.name === 'Order Edit'\"\n\t \t/> -->\n\n\t <!-- \t<button \n\t \t@click=\"requestPayment(order)\"\n\t \tv-if=\"\n\t \t\torder.status === 'Подтвержден' \n\t \t\t&& order.payment.type === 'Online'\n\t \t\t&& payment.Status !== 'CONFIRMED'\n\t \t\t&& payment.Status !== 'REFUNDED'\n\t \t\" \n\t \tclass='w-100 button'>Оплатить заказ</button> -->\n\t \t<span class=\"t-transp\" v-if=\"payment && payment.Status === 'CONFIRMED'\">Paid</span> \n\t </div> \n\n\t <div class=\"bg-light radius-medium pd-medium w-100\">\n\t \t\t<h3 class=\"mn-b-small\">Order Summary</h3>\n\n\t \t\t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n\t \t\t\t<CardOrderItem\n\t \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n\t \t\t\t\t:editable=\"false\" \n\t \t\t\t\t:product=\"product\" \n\t \t\t\t\tclass=\"bg-white radius-small pd-small\"\n\t \t\t\t/>\n\t </ul>\n\t \n\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\t\t\t\t :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n\n />\n \t</div>\n\n\t \n\t </div>\n\t</div>\t\t\n\n</template>\n\n\n<script setup=\"props\">\n\timport { computed, ref, onMounted } from 'vue'\n\timport { useRouter, useRoute } from 'vue-router'\n\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Popup from \"@martyrs/src/components/Popup/Popup.vue\";\n\n\timport IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n\t// Block\n\timport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport ChatPage from '@martyrs/src/modules/chats/components/pages/ChatPage.vue';\n\n\timport StatusHistory from '@martyrs/src/modules/orders/components/blocks/StatusHistory.vue'\n\timport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\timport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n\n\timport * as globals \tfrom '@martyrs/src/modules/globals/views/store/globals'\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth'\n\timport * as orders \tfrom '@martyrs/src/modules/orders/store/orders'\n\timport * as products \tfrom '@martyrs/src/modules/products/store/products'\n\timport * as organizations \tfrom '@martyrs/src/modules/organizations/store/organizations'\n\n\timport { useI18n } from 'vue-i18n';\n\t\n\tconst { locale } = useI18n();\n\n\tconst router = useRouter()\n\tconst route = useRoute()\n\n\tconst order = ref(null)\n\tconst productsOrganization = ref(null)\n\tconst orderOrganization = ref(null)\n\n\tconst statuses = globals.state.options.orders.statuses\n\tconst statusLabels = ['Created', 'Confirmed', 'Preparing', 'In use', 'Finished'];\n\n if (route.meta.context === 'user' && \n auth.state.user && \n route.params._id !== auth.state.user?._id && \n !auth.state.access?.roles?.includes('ROLE_MODERATOR') && \n !auth.state.access?.roles?.includes('ROLE_ADMIN')) {\n router.push('/401');\n }\n\n\tconst isOpeStatusPopup = ref(false);\n\tconst selectedMember = ref(null);\n\n\tfunction openStatusPopup(member) {\n\t isOpeStatusPopup.value = true;\n\t if (typeof member === \"number\") selectedMember.value = member;\n\t}\n\n\tfunction closeStatusPopup() {\n\t isOpeStatusPopup.value = false;\n\t selectedMember.value = null;\n\t}\n\n\tconst isOpenPaymentPopup = ref(false);\n\n\tconst selectedPayments = ref({\n\t\ttype: null,\n\t\tstatus: null\n\t});\n\n\tfunction openPaymentPopup() {\n\t selectedPayments.value.type = order.value.payment.type\n\t selectedPayments.value.status = order.value.payment.status\n\n\t isOpenPaymentPopup.value = true;\n\t}\n\n\tfunction closePaymentPopup() {\n\t isOpenPaymentPopup.value = false;\n\t}\n\n\tonMounted(async()=>{\n\t\torder.value = await orders.actions.read({_id: route.params.order})\n\t\torder.value = order.value[0]\n\n\t orderOrganization.value = await organizations.actions.read({\n\t _id: order.value?.owner.target._id,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t });\n\n\t})\n\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\tlet cartTotalPrice = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n })\n\n\n let cartTotalAmount = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n })\n\n // Функция установки нового статуса\n\tasync function setStatus (newStatus) {\n\t orders.state.current.status = newStatus\n\n\t await orders.actions.update(orders.state.current)\n\t} \n\n\n\tfunction getNextStatus(currentStatus) {\n\t const currentIndex = globals.state.options.orders.statuses.findIndex(status => status.value === currentStatus);\n\n\t if (currentIndex !== -1 && currentIndex + 1 < statuses.length) {\n\t return globals.state.options.orders.statuses[currentIndex + 1];\n\t }\n\t return null; // If next status doesn't exist\n\t}\n\n\tconst isActiveStatus = (index) => {\n\t return globals.state.options.orders.statuses.slice(index).some(status => status.value === order.value.status);\n\t};\n\n async function changePaymentStatus() {\n if (selectedPayments.value.status && selectedPayments.value.type) {\n orders.state.current.payment = selectedPayments.value;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Payment status is void. Must handle somehow.');\n }\n\n\t\tclosePaymentPopup()\n }\n\n async function setNextStatus() {\n const nextStatus = getNextStatus(orders.state.current.status);\n\n if (nextStatus) {\n orders.state.current.status = nextStatus.value;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Next status is void. Must handle somehow.');\n }\n\n\t\tcloseStatusPopup()\n }\n\n async function cancelOrder() {\n \talert()\n\n orders.state.current.status = 'canceled';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n async function confirmOrder() {\n \talert()\n\n orders.state.current.status = 'confirmed';\n\n await orders.actions.update(orders.state.current)\n\t}\n\n\tfunction calculateDeliveryTime(distance, date) {\n\t if (!distance) {\n\t return null;\n\t }\n\n\t const basePreparationTime = 10 * 60 * 1000; // Convert to milliseconds\n\t const travelTime = Math.ceil((15 + 5 + 3 * distance) / 5) * 5 * 60 * 1000;\n\n\t // Преобразование даты начала в миллисекунды и добавление времени подготовки и доставки\n\t const startTime = new Date(date).getTime();\n\t const estimatedDeliveryTime = new Date(startTime + basePreparationTime + travelTime);\n\n\t return estimatedDeliveryTime;\n\t}\n\n\n</script>\n\n<style lang=\"scss\" scoped>\n\t.blink {\n\t animation: blink-animation 1s ease infinite;\n\t}\n\n\t@keyframes blink-animation {\n\t 0%, 100% {\n\t opacity: 1;\n\t }\n\t 50% {\n\t opacity: 0.8;\n\t }\n\t}\n</style>"],"names":["useI18n","useRouter","useRoute","ref","globals.state","auth.state","onMounted","orders.actions","organizations.actions","_a","computed","orders.state","orders.getters"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+RC,UAAM,EAAE,OAAQ,IAAGA,gBAAS;AAE5B,UAAM,SAASC,UAAS,UAAA;AACxB,UAAM,QAAQC,UAAQ,SAAA;AAEtB,UAAM,QAAQC,IAAAA,IAAI,IAAI;AACOA,QAAAA,IAAI,IAAI;AACrC,UAAM,oBAAoBA,IAAAA,IAAI,IAAI;AAElC,UAAM,WAAWC,QAAAA,MAAc,QAAQ,OAAO;AAG7C,QAAI,MAAM,KAAK,YAAY,UACvBC,KAAAA,MAAW,QACX,MAAM,OAAO,UAAQA,UAAU,MAAC,SAAXA,mBAAiB,QACtC,GAACA,gBAAU,MAAC,WAAXA,mBAAmB,UAAnBA,mBAA0B,SAAS,sBACpC,GAACA,gBAAU,MAAC,WAAXA,mBAAmB,UAAnBA,mBAA0B,SAAS,gBAAe;AACrD,aAAO,KAAK,MAAM;AAAA,IACtB;AAEC,UAAM,mBAAmBF,IAAG,IAAC,KAAK;AAClC,UAAM,iBAAiBA,IAAG,IAAC,IAAI;AAE/B,aAAS,gBAAgB,QAAQ;AAC/B,uBAAiB,QAAQ;AACzB,UAAI,OAAO,WAAW,SAAU,gBAAe,QAAQ;AAAA,IAC1D;AAEC,aAAS,mBAAmB;AAC1B,uBAAiB,QAAQ;AACzB,qBAAe,QAAQ;AAAA,IAC1B;AAEC,UAAM,qBAAqBA,IAAG,IAAC,KAAK;AAEpC,UAAM,mBAAmBA,IAAAA,IAAI;AAAA,MAC5B,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAE;AAED,aAAS,mBAAmB;AAC1B,uBAAiB,MAAM,OAAO,MAAM,MAAM,QAAQ;AAClD,uBAAiB,MAAM,SAAS,MAAM,MAAM,QAAQ;AAEpD,yBAAmB,QAAQ;AAAA,IAC9B;AAEC,aAAS,oBAAoB;AAC3B,yBAAmB,QAAQ;AAAA,IAC9B;AAECG,QAAAA,UAAU,YAAS;;AAClB,YAAM,QAAQ,MAAMC,eAAe,KAAK,EAAC,KAAK,MAAM,OAAO,MAAK,CAAC;AACjE,YAAM,QAAQ,MAAM,MAAM,CAAC;AAE1B,wBAAkB,QAAQ,MAAMC,cAAqB,QAAC,KAAK;AAAA,QACzD,MAAKC,MAAA,MAAM,UAAN,gBAAAA,IAAa,MAAM,OAAO;AAAA,QAC/B,WAAUL,MAAAA,QAAAA,MAAc,aAAdA,gBAAAA,IAAwB;AAAA,QAClC,QAAQ,CAAC,OAAO;AAAA,MACrB,CAAI;AAAA,IAEF,CAAA;AAGF,UAAM,eAAeM,IAAQ,SAAC,MAAM;;AAClC,YAAM,OAAOC,OAAAA,MAAa,QAAQ,SAAS;AAC3C,YAAM,aAAWF,MAAA,kBAAkB,MAAM,CAAC,MAAzB,gBAAAA,IAA4B,aAAY;AACzD,YAAM,WAASL,OAAAA,MAAAA,QAAa,MAAC,YAAdA,gBAAAA,IAAuB,WAAvBA,gBAAAA,IAA+B,qBAAoB,CAAA;AAElE,aAAOQ,eAAe,iBAAiB,MAAM,UAAU,MAAM;AAAA,IAC/D,CAAC;AAEA,QAAI,iBAAiBF,IAAAA,SAAS,MAAM;;AAChC,aAAO,QAAOD,MAAA,MAAM,UAAN,gBAAAA,IAAa,UAAU,OAAO,CAAC,OAAO,YAAY;AAE/D,YAAI,QAAQ,YAAY,QAAQ;AAC9B,gBAAM,QAAQ,IAAI,KAAK,QAAQ,KAAK,KAAK;AACzC,gBAAM,MAAM,IAAI,KAAK,QAAQ,KAAK,GAAG;AACrC,gBAAM,WAAW,KAAK,IAAI,MAAM,KAAK;AACrC,iBAAO,QAAQ,QAAQ,SAAS,KAAK,KAAK,YAAY,MAAO,KAAK,KAAK,GAAG,IAAI;AAAA,QACtF,OAAa;AAEL,iBAAO,QAAQ,QAAQ,SAAS,QAAQ,YAAY;AAAA,QAC5D;AAAA,MACK,GAAE,EAAE;AAAA,IACN,CAAA;AAGqBC,QAAAA,SAAS,MAAM;;AACnC,aAAO,QAAOD,MAAA,MAAM,UAAN,gBAAAA,IAAa,UAAU,OAAO,CAAC,OAAO,YAAY;AAC9D,eAAO,QAAQ,QAAQ;AAAA,MACxB,GAAE,EAAE;AAAA,IACN,CAAA;AAUF,aAAS,cAAc,eAAe;AACpC,YAAM,eAAeL,QAAAA,MAAc,QAAQ,OAAO,SAAS,UAAU,YAAU,OAAO,UAAU,aAAa;AAE7G,UAAI,iBAAiB,MAAM,eAAe,IAAI,SAAS,QAAQ;AAC7D,eAAOA,QAAAA,MAAc,QAAQ,OAAO,SAAS,eAAe,CAAC;AAAA,MAClE;AACG,aAAO;AAAA,IACV;AAEC,UAAM,iBAAiB,CAAC,UAAU;AAChC,aAAOA,QAAa,MAAC,QAAQ,OAAO,SAAS,MAAM,KAAK,EAAE,KAAK,YAAU,OAAO,UAAU,MAAM,MAAM,MAAM;AAAA,IAC7G;AAEA,mBAAe,sBAAsB;AACnC,UAAI,iBAAiB,MAAM,UAAU,iBAAiB,MAAM,MAAM;AAChEO,eAAAA,MAAa,QAAQ,UAAU,iBAAiB;AAEhD,cAAMJ,OAAc,QAAC,OAAOI,OAAAA,MAAa,OAAO;AAAA,MACtD,OAAW;AACL,gBAAQ,MAAM,8CAA8C;AAAA,MAClE;AAEE,wBAAiB;AAAA,IACnB;AAEE,mBAAe,gBAAgB;AAC7B,YAAM,aAAa,cAAcA,aAAa,QAAQ,MAAM;AAE5D,UAAI,YAAY;AACdA,eAAAA,MAAa,QAAQ,SAAS,WAAW;AAEzC,cAAMJ,OAAc,QAAC,OAAOI,OAAAA,MAAa,OAAO;AAAA,MACtD,OAAW;AACL,gBAAQ,MAAM,2CAA2C;AAAA,MAC/D;AAEE,uBAAgB;AAAA,IAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"OrderBackoffice.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderBackoffice.vue"],"sourcesContent":["<template>\n\t<div v-if=\"order && orderOrganization\" class=\"pd-thin bg-white\"> \n\n\t <div v-if=\"order\" class=\"mn-b-thin pos-relative w-100 bg-main radius-medium pd-medium\">\n\t \t<div class=\"mn-b-small flex-nowrap flex\">\n\t\t \t<p class=\"t-medium p-medium\">\n\t\t \tOrder No: <span class=\"p-small t-transp\">#{{order._id}}</span>\n\t\t </p>\n\t\t\t</div>\n\n \t<div class=\"flex-nowrap flex gap-thin pos-relative \">\n\t <div v-for=\"(status, index) in globals.state.options.orders.statuses\" :key=\"index\" class=\"w-20\">\n\t <div\n\t \tclass=\"bg-white br-anim br-glow radius-extra h-1r w-100\"\n\t :class=\"\n\t\t\t\t { 'br-glow-anim': isActiveStatus(index) },\n\t\t\t\t { 't-transp': !isActiveStatus(index) },\n\t\t\t\t { 'blink': order.status === status.value && getNextStatus(order.status) }\n\t\t\t\t \"\n\t />\n\t <div \n\t \t:class=\"{ 't-transp': !isActiveStatus(index) }\"\n\t\t\t\t class=\"mn-t-thin p-small t-medium uppercase\">{{ status.value }}</div>\n\t \t</div>\n\t\t </div>\n\t </div>\n\n \t <Popup \n title=\"Change payment\" \n @close-popup=\"closePaymentPopup\" \n :isPopupOpen=\"isOpenPaymentPopup\"\n class=\"bg-light w-min-25r w-max-25r radius-medium pd-big\"\n >\n \t<Select \n v-model:select=\"selectedPayments.type\"\n :property=\"'value'\"\n label=\"Type\"\n :options=\"[\n {name: 'Cash', value: 'cash'}, \n {name: 'Card', value: 'card'}, \n {name: 'Bank Transfer', value: 'bank'},\n ]\"\n placeholder=\"Select type of payment\" \n size=\"small\"\n class=\"bg-white mn-b-thin pd-regular radius-small w-100\"\n />\n\n <Select \n v-model:select=\"selectedPayments.status\"\n :property=\"'value'\"\n label=\"Status\"\n :options=\"[\n {name: 'Unpaid', value: 'unpaid'}, \n {name: 'Paid', value: 'paid'}, \n {name: 'Refunded', value: 'refunded'},\n ]\"\n placeholder=\"Select status of payment\" \n size=\"small\"\n class=\"bg-white mn-b-small pd-regular radius-small w-100\"\n />\n\n\n <Button :submit=\"changePaymentStatus\" class=\"t-white w-100 bg-second\">\n\t\t\t\t<span>Change Status</span>\n\t\t\t</Button>\n\t \t</Popup>\n\n\t <Popup \n title=\"Change order status\" \n @close-popup=\"closeStatusPopup\" \n :isPopupOpen=\"isOpeStatusPopup\"\n class=\"bg-light w-min-30r w-max-30r radius-medium pd-big\"\n >\n\n\t\t\t<!-- Добавить выбор примерного времени -->\n\n \t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n \t\t\t<CardOrderItem\n \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n \t\t\t\t:editable=\"true\" \n \t\t\t\t:product=\"product\" \n \t\t\t\t:increase=\"product => orders.mutations.incrementItemQuantity(order, product._id)\"\n\t :decrease=\"product => orders.mutations.decrementItemQuantity(order, product._id)\"\n\t :remove=\"product => orders.mutations.removeProduct(order, product._id)\"\n\t @updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ positions: order.positions, productId: product._id, dates })\"\n \t\t\t\tclass=\"bg-white radius-small pd-small\"\n \t\t\t/>\n </ul>\n \n <PriceTotal \n :totalPrice=\"cartTotalPrice\"\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 />\n\n \t<Button :submit=\"setNextStatus\" class=\"t-white w-100 bg-second\">\n\t\t\t\t<span>{{'Confirm Changing to ' + (getNextStatus(order.status)).label}}</span>\n\t\t\t</Button>\n\t \t</Popup>\n\n\n\t \n\t <div v-if=\"order\" class=\"gap-thin cols-2\">\n\n\t <div class=\"w-100\">\n\n\n\t\t <CardOrganization \n\t\t \tv-if=\"orderOrganization[0]\"\n\t\t :organization=\"orderOrganization[0]\"\n\t\t :showRating=\"true\"\n\t\t :showFollowers=\"false\"\n\t\t :showProducts=\"false\"\n\t\t class=\"bg-light mn-b-thin w-100 o-hidden radius-medium pd-small \"\n\t\t />\n\n\n\t\t <div \n\t\t \tclass=\"mn-b-thin bg-light w-100 o-hidden radius-medium \"\n\t\t >\n\t\t \t<div class=\"pd-small flex-nowrap flex\">\n\t\t\t \t<div class=\"mn-r-auto\">\n\t\t\t\t \t<span class=\"d-block t-medium p-medium\">Order is</span>\n\t\t\t\t\t <span class=\" t-lh-075 h2 d-block mn-b-small\">{{order.status}}</span>\n\t\t\t\t\t <p class=\"pd-t-nano pd-b-nano pd-r-thin pd-l-thin radius-extra bg-black t-white w-max\">{{formatDate(order.updatedAt, {language: locale })}}</p>\n\t\t\t\t\t </div>\n\t\t\t\t\t <!-- <div class=\"t-right\">\n\t\t\t\t\t \tCancel order<br>\n\t\t\t\t\t \tExchange item\n\t\t\t\t\t \t<hr class=\"mn-b-thin mn-t-thin\">\n\t\t\t\t\t \tFor Delivery Queries Contact Us\n\t\t\t\t\t \t\n\t\t\t\t\t </div> -->\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-if=\"order.customer.target?.number\" class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"w-100 t-medium p-medium\">\n\t\t\t \tPhone\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t \t{{order.customer.target?.number || 'Not specified'}}\n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tAddress\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right\">\n\t\t\t {{order.delivery.address || (order.delivery.spot[0].profile.name + ', ' + order.delivery.spot[0].address) || 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"t-medium p-medium\">\n\t\t\t \tDelivery\n\t\t\t </p>\n\n\t\t\t <p class=\"w-100 t-right \">\n\t\t\t {{order.delivery.type ? order.delivery.type : 'Not specified'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\t\t\t <div class=\"pd-small flex flex-nowrap flex-v-center br-t br-black-transp-10 br-solid\">\n\t\t\t \t<p class=\"mn-r-auto t-medium p-medium\">\n\t\t\t \tPayment\n\t\t\t </p>\n\n\n\t\t\t <p class=\"w-max t-right\">\n\t\t\t {{order.payment.type ? order.payment.type : 'Not specified'}} \n\t\t\t </p>\n\n\t\t\t <p @click=\"route.meta.context !== 'user' && route.meta.context !== 'root' ? openPaymentPopup : console.log('hello')\" class=\"w-max pd-thin radius-small bg-second t-white mn-l-thin cursor-pointer hover-bg-black t-right\">\n\t\t\t {{order.payment.status ? order.payment.status : 'Unpaid'}} \n\t\t\t </p>\n\t\t\t </div>\n\n\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"route.meta.context !== 'user' && route.meta.context !== 'root'\" class=\"o-y-scroll bg-light pd-thin mn-b-thin pd-thin radius-medium flex-nowrap flex\">\n\t\t \t\t<div class=\"flex-child-default mn-r-small w-max flex-v-center gap-thin flex-nowrap flex pd-thin radius-small bg-light-transp-20\">\n\t\t \t\t\t<IconTime class=\"i-semi t-transp\" fill=\"rgb(var(--black)\" />\n\t\t <p class=\"t-medium mn-r-auto\"><span class=\"p-small t-transp\">Estimated Reaction</span><br>{{formatDate(order.deadline, { language: locale })}}</p>\n\t\t\t \t</div>\n\t\t\t \t<button v-if=\"getNextStatus(order.status)\" @click=\"openStatusPopup\" class=\"flex-child-default mn-l-auto bg-black t-white button\"> \n\t\t\t\t Mark as {{ (getNextStatus(order.status)).label }} \n\t\t\t\t </button>\n\t\t \t</div>\n\n\t\t\t<div class=\"bg-light radius-medium pd-medium mn-r-bold w-100\">\n\t\t <h3 class=\"mn-b-small\">Chat With Us</h3>\n\n\t\t <ChatPage\n\t\t \t:username=\"['Order', 'UserOrder'].includes(route.name) ? (order.user?.name || 'User') : 'Support'\"\n\t\t \t:user=\"auth.state.user._id\"\n\t\t \t:chatID=\"route.params.order\"\n\t\t \tclass=\"radius-semi bs-black bg-light o-hidden\"\n\t\t />\n\n\t </div>\n\t \t<!-- <StatusHistory \n\t \t\tv-if=\"orders.state.current.status_history\"\n\t \t\t:statuses=\"statuses\"\n\t \t\t:statusHistory=\"orders.state.current.status_history\"\n\t \t\t:statusCurrent=\"orders.state.current.status\"\n\t \t\t:edit=\"route.name === 'Order Edit'\"\n\t \t/> -->\n\n\t <!-- \t<button \n\t \t@click=\"requestPayment(order)\"\n\t \tv-if=\"\n\t \t\torder.status === 'Подтвержден' \n\t \t\t&& order.payment.type === 'Online'\n\t \t\t&& payment.Status !== 'CONFIRMED'\n\t \t\t&& payment.Status !== 'REFUNDED'\n\t \t\" \n\t \tclass='w-100 button'>Оплатить заказ</button> -->\n\t \t<span class=\"t-transp\" v-if=\"payment && payment.Status === 'CONFIRMED'\">Paid</span> \n\t </div> \n\n\t <div class=\"bg-light radius-medium pd-medium w-100\">\n\t \t\t<h3 class=\"mn-b-small\">Order Summary</h3>\n\n\t \t\t<ul class=\"flex gap-thin flex-column mn-b-thin\">\n\t \t\t\t<CardOrderItem\n\t \t\t\t\tv-for=\"(product, index) in order.positions\" :key=\"product._id\"\n\t \t\t\t\t:editable=\"false\" \n\t \t\t\t\t:product=\"product\" \n\t \t\t\t\tclass=\"bg-white radius-small pd-small\"\n\t \t\t\t/>\n\t </ul>\n\t \n\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\t\t\t\t :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n\n />\n \t</div>\n\n\t \n\t </div>\n\t</div>\t\t\n\n</template>\n\n\n<script setup=\"props\">\n\timport { computed, ref, onMounted } from 'vue'\n\timport { useRouter, useRoute } from 'vue-router'\n\n\timport Button from '@martyrs/src/components/Button/Button.vue'\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Popup from \"@martyrs/src/components/Popup/Popup.vue\";\n\n\timport IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n\t// Block\n\timport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport ChatPage from '@martyrs/src/modules/chats/components/pages/ChatPage.vue';\n\n\timport StatusHistory from '@martyrs/src/modules/orders/components/blocks/StatusHistory.vue'\n\timport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\timport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n\n\timport * as globals \tfrom '@martyrs/src/modules/globals/views/store/globals.js'\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\timport * as orders \tfrom '@martyrs/src/modules/orders/store/orders.js'\n\timport * as products \tfrom '@martyrs/src/modules/products/store/products.js'\n\timport * as organizations \tfrom '@martyrs/src/modules/organizations/store/organizations.js'\n\n\timport { useI18n } from 'vue-i18n';\n\t\n\tconst { locale } = useI18n();\n\n\tconst router = useRouter()\n\tconst route = useRoute()\n\n\tconst order = ref(null)\n\tconst productsOrganization = ref(null)\n\tconst orderOrganization = ref(null)\n\n\tconst statuses = globals.state.options.orders.statuses\n\tconst statusLabels = ['Created', 'Confirmed', 'Preparing', 'In use', 'Finished'];\n\n if (route.meta.context === 'user' && \n auth.state.user && \n route.params._id !== auth.state.user?._id && \n !auth.state.access?.roles?.includes('ROLE_MODERATOR') && \n !auth.state.access?.roles?.includes('ROLE_ADMIN')) {\n router.push('/401');\n }\n\n\tconst isOpeStatusPopup = ref(false);\n\tconst selectedMember = ref(null);\n\n\tfunction openStatusPopup(member) {\n\t isOpeStatusPopup.value = true;\n\t if (typeof member === \"number\") selectedMember.value = member;\n\t}\n\n\tfunction closeStatusPopup() {\n\t isOpeStatusPopup.value = false;\n\t selectedMember.value = null;\n\t}\n\n\tconst isOpenPaymentPopup = ref(false);\n\n\tconst selectedPayments = ref({\n\t\ttype: null,\n\t\tstatus: null\n\t});\n\n\tfunction openPaymentPopup() {\n\t selectedPayments.value.type = order.value.payment.type\n\t selectedPayments.value.status = order.value.payment.status\n\n\t isOpenPaymentPopup.value = true;\n\t}\n\n\tfunction closePaymentPopup() {\n\t isOpenPaymentPopup.value = false;\n\t}\n\n\tonMounted(async()=>{\n\t\torder.value = await orders.actions.read({_id: route.params.order})\n\t\torder.value = order.value[0]\n\n\t orderOrganization.value = await organizations.actions.read({\n\t _id: order.value?.owner.target._id,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t });\n\n\t})\n\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\tlet cartTotalPrice = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n })\n\n\n let cartTotalAmount = computed(() => {\n return Number(order.value?.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n })\n\n // Функция установки нового статуса\n\tasync function setStatus (newStatus) {\n\t orders.state.current.status = newStatus\n\n\t await orders.actions.update(orders.state.current)\n\t} \n\n\n\tfunction getNextStatus(currentStatus) {\n\t const currentIndex = globals.state.options.orders.statuses.findIndex(status => status.value === currentStatus);\n\n\t if (currentIndex !== -1 && currentIndex + 1 < statuses.length) {\n\t return globals.state.options.orders.statuses[currentIndex + 1];\n\t }\n\t return null; // If next status doesn't exist\n\t}\n\n\tconst isActiveStatus = (index) => {\n\t return globals.state.options.orders.statuses.slice(index).some(status => status.value === order.value.status);\n\t};\n\n async function changePaymentStatus() {\n if (selectedPayments.value.status && selectedPayments.value.type) {\n orders.state.current.payment = selectedPayments.value;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Payment status is void. Must handle somehow.');\n }\n\n\t\tclosePaymentPopup()\n }\n\n async function setNextStatus() {\n const nextStatus = getNextStatus(orders.state.current.status);\n\n if (nextStatus) {\n orders.state.current.status = nextStatus.value;\n\n await orders.actions.update(orders.state.current)\n } else {\n console.error('Next status is void. Must handle somehow.');\n }\n\n\t\tcloseStatusPopup()\n }\n\n async function cancelOrder() {\n \talert()\n\n orders.state.current.status = 'canceled';\n\n await orders.actions.update(orders.state.current)\n}\n\n\n async function confirmOrder() {\n \talert()\n\n orders.state.current.status = 'confirmed';\n\n await orders.actions.update(orders.state.current)\n\t}\n\n\tfunction calculateDeliveryTime(distance, date) {\n\t if (!distance) {\n\t return null;\n\t }\n\n\t const basePreparationTime = 10 * 60 * 1000; // Convert to milliseconds\n\t const travelTime = Math.ceil((15 + 5 + 3 * distance) / 5) * 5 * 60 * 1000;\n\n\t // Преобразование даты начала в миллисекунды и добавление времени подготовки и доставки\n\t const startTime = new Date(date).getTime();\n\t const estimatedDeliveryTime = new Date(startTime + basePreparationTime + travelTime);\n\n\t return estimatedDeliveryTime;\n\t}\n\n\n</script>\n\n<style lang=\"scss\" scoped>\n\t.blink {\n\t animation: blink-animation 1s ease infinite;\n\t}\n\n\t@keyframes blink-animation {\n\t 0%, 100% {\n\t opacity: 1;\n\t }\n\t 50% {\n\t opacity: 0.8;\n\t }\n\t}\n</style>"],"names":["useI18n","useRouter","useRoute","ref","globals.state","auth.state","onMounted","orders.actions","organizations.actions","_a","computed","orders.state","orders.getters"],"mappings":"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"}
|