@ozdao/martyrs 0.2.570 → 0.2.572
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/dist/_virtual/dayjs.min.js +1 -1
- package/dist/_virtual/weekOfYear.js +1 -1
- package/dist/builder.js +1248 -106
- package/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +1173 -1191
- package/dist/martyrs/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +94 -112
- package/dist/martyrs/dist/main-BfEQkhXS.js.map +1 -0
- package/dist/martyrs/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +3 -3
- package/dist/martyrs/dist/{web-CH5wzMHy.js.map → web-BqTV9va1.js.map} +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
- package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js.map +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js +1 -1
- package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js.map +1 -1
- package/dist/{node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → martyrs}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js +1 -1
- package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
- package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/dayjs.min.js +1 -1
- package/dist/martyrs/node_modules/dayjs/dayjs.min.js.map +1 -0
- package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
- package/dist/martyrs/node_modules/dayjs/plugin/weekOfYear.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
- package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +1 -1
- package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -1
- package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
- package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +6 -6
- package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +2 -2
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js +2 -2
- package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
- package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +4 -4
- package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
- 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/EditImages/EditImages.vue2.js +1 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
- package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
- package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +1 -1
- package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
- package/dist/martyrs/src/components/Loader/Loader.vue2.js +1 -1
- package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -1
- 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/Menu/MenuItem.vue.js +2 -2
- package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
- package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
- package/dist/martyrs/src/components/Radio/Radio.vue.js +1 -1
- package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
- package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +4 -4
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Table/Table.vue.js +3 -3
- package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
- package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
- package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +3 -3
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +3 -3
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js +4 -4
- package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +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.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +4 -4
- 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.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +9 -9
- 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.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +3 -3
- 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.js +5 -5
- 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.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +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.js +9 -9
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +4 -4
- package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +6 -6
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +2 -2
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/Activity.vue.js +7 -7
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +4 -4
- package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +11 -11
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +2 -2
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/classes/core.app.js +2 -1
- package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +9 -9
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/elements/PhotoStack.vue.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +25 -5
- package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +4 -4
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +11 -11
- package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +16 -16
- package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +9 -9
- package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +24 -24
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +4 -4
- package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +7 -7
- package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +3 -3
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/store/core.store.js +29 -47
- package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +21 -2
- package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +5 -5
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js +3 -3
- package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +21 -21
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +7 -7
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +7 -7
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +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.js +5 -5
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +4 -4
- package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
- package/dist/martyrs/src/modules/icons/navigation/IconSort.vue.js +4 -4
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +7 -7
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +6 -6
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +3 -3
- package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +4 -4
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +11 -11
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +9 -9
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +5 -5
- package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
- package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +2 -2
- package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +3 -3
- package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/marketplace.client.js +3 -3
- package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +6 -6
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +5 -3
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +4 -4
- package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -6
- package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +4 -4
- package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +4 -4
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +6 -6
- package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +6 -6
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +11 -11
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +7 -7
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +9 -9
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +3 -3
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +16 -16
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +24 -24
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +8 -8
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +10 -13
- package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +10 -10
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +27 -27
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +17 -17
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +27 -27
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +8 -8
- package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +1 -1
- package/dist/martyrs/src/modules/music/music.client.js +6 -6
- package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
- package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.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/notifications.client.js +2 -2
- package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +5 -5
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +9 -9
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +4 -4
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +5 -5
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +6 -6
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +18 -18
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +6 -6
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +4 -4
- package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +4 -4
- package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js +8 -8
- package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +6 -6
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +5 -5
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +4 -4
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +5 -5
- 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.js +2 -2
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +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.js +5 -5
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +7 -7
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +10 -10
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +12 -12
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +6 -6
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +9 -9
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +11 -11
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +3 -3
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +7 -7
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/DateLabel.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +8 -8
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +8 -8
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
- package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +3 -3
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +4 -4
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +4 -4
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +6 -6
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +5 -5
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +3 -3
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +8 -8
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +5 -5
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +6 -6
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +2 -2
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +6 -6
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +12 -12
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +4 -4
- package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +25 -25
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/style.css +194 -202
- package/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +1 -1
- package/package.json +6 -8
- package/src/builder/modes/ssr.prod.js +1 -0
- package/src/builder/modes/ssr.rspack.dev.js +82 -84
- package/src/builder/rspack/rspack.config.base.js +7 -0
- package/src/builder/rspack/rspack.config.ssr.client.js +19 -44
- package/src/builder/templates/page.js +21 -0
- package/src/components/Block/Block.vue +1 -1
- package/src/components/BottomSheet/BottomSheet.vue +1 -1
- package/src/components/Calendar/Calendar.vue +5 -5
- package/src/components/Checkbox/Checkbox.vue +2 -2
- package/src/components/Chips/Chips.vue +2 -2
- package/src/components/Completion/Completion.vue +2 -2
- package/src/components/Countdown/Countdown.vue +5 -5
- package/src/components/DatePicker/DatePicker.vue +4 -4
- package/src/components/EditImages/EditImages.vue +1 -1
- package/src/components/Feed/Feed.old.vue +1 -1
- package/src/components/Feed/Feed.vue +1 -1
- package/src/components/FieldBig/FieldBig.vue +2 -2
- package/src/components/FieldPhone/FieldPhone.vue +1 -1
- package/src/components/FieldTags/BlockTags.vue +1 -1
- package/src/components/Loader/Loader.vue +1 -1
- package/src/components/Menu/MenuItem.vue +2 -2
- package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
- package/src/components/Radio/Radio.vue +1 -1
- package/src/components/Select/Select.vue +1 -1
- package/src/components/Table/Table.vue +2 -2
- package/src/components/Text/Text.vue +1 -1
- package/src/components/UploadImage/UploadImage.vue +2 -2
- package/src/components/UploadImageMultiple/UploadImageMultiple.vue +3 -3
- package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
- package/src/configurator/components/pages/Styles.vue +2 -2
- package/src/jit/.claude/settings.local.json +10 -0
- package/src/jit/CLAUDE.md +387 -0
- package/src/jit/core.js +274 -0
- package/src/jit/extractor.js +140 -0
- package/src/jit/index.js +19 -0
- package/src/jit/loader.js +46 -0
- package/src/jit/plugin.js +209 -0
- package/src/jit/rules.js +474 -0
- package/src/jit/variants.js +128 -0
- package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
- package/src/modules/auth/views/components/blocks/ProfileCard.vue +4 -4
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/pages/EnterPassword.vue +2 -2
- package/src/modules/auth/views/components/pages/Profile.vue +5 -5
- package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +1 -1
- package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +2 -2
- package/src/modules/auth/views/components/pages/ResetPassword.vue +1 -1
- package/src/modules/auth/views/components/pages/SignIn.vue +3 -3
- package/src/modules/auth/views/components/pages/SignUp.vue +1 -1
- package/src/modules/auth/views/components/pages/UserDashboard.vue +3 -3
- package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
- package/src/modules/auth/views/components/sections/ProfileCompletion.vue +2 -2
- package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +7 -7
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
- package/src/modules/backoffice/components/admin/Backcalls.vue +1 -1
- package/src/modules/backoffice/components/admin/FastOrders.vue +1 -1
- package/src/modules/backoffice/components/admin/ProductEdit.vue +2 -2
- package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
- package/src/modules/backoffice/components/admin/Users.vue +2 -2
- package/src/modules/backoffice/components/pages/Dashboard.vue +4 -4
- package/src/modules/backoffice/components/partials/Sidebar.vue +5 -5
- package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
- package/src/modules/chats/components/sections/ChatWindow.vue +2 -2
- package/src/modules/community/components/blocks/Activity.vue +7 -7
- package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
- package/src/modules/community/components/blocks/FooterBlogpost.vue +4 -4
- package/src/modules/community/components/layouts/Community.vue +10 -10
- package/src/modules/community/components/pages/CreateBlogPost.vue +1 -1
- package/src/modules/community/components/pages/Posts.vue +2 -2
- package/src/modules/community/components/sections/Comment.vue +2 -2
- package/src/modules/constructor/components/elements/Audio.vue +1 -1
- package/src/modules/constructor/components/elements/Caption.vue +1 -1
- package/src/modules/constructor/components/elements/Embed.vue +1 -1
- package/src/modules/constructor/components/elements/Textarea.vue +1 -1
- package/src/modules/constructor/components/elements/Video.vue +1 -1
- package/src/modules/core/views/classes/core.app.js +2 -1
- package/src/modules/core/views/components/blocks/BlockSorting.vue +2 -2
- package/src/modules/core/views/components/blocks/CardFooter.vue +4 -4
- package/src/modules/core/views/components/blocks/CardHeader.vue +7 -7
- package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
- package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
- package/src/modules/core/views/components/elements/ButtonDate.vue +1 -1
- package/src/modules/core/views/components/elements/PhotoStack.vue +3 -3
- package/src/modules/core/views/components/layouts/App.vue +28 -4
- package/src/modules/core/views/components/layouts/Client.vue +4 -4
- package/src/modules/core/views/components/partials/BottomNavigationBar.vue +15 -15
- package/src/modules/core/views/components/partials/CitySelection.vue +1 -1
- package/src/modules/core/views/components/partials/Footer.centered.vue +17 -17
- package/src/modules/core/views/components/partials/Footer.vue +18 -18
- package/src/modules/core/views/components/partials/Header.vue +10 -11
- package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
- package/src/modules/core/views/components/partials/Navigation.vue +20 -19
- package/src/modules/core/views/components/partials/NavigationBar.vue +3 -3
- package/src/modules/core/views/components/partials/Sidebar.vue +6 -6
- package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
- package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +1 -1
- package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +2 -2
- package/src/modules/core/views/components/sections/filters/FilterPrice.vue +2 -2
- package/src/modules/core/views/components/sections/filters/FilterRange.vue +2 -2
- package/src/modules/core/views/store/core.store.js +36 -60
- package/src/modules/core/views/utils/vue-app-renderer.js +31 -1
- package/src/modules/events/components/blocks/CardEvent.vue +6 -6
- package/src/modules/events/components/blocks/CardEventShort.vue +3 -3
- package/src/modules/events/components/pages/EditEvent.vue +1 -1
- package/src/modules/events/components/pages/EditEventTickets.vue +18 -18
- package/src/modules/events/components/pages/Event.vue +5 -5
- package/src/modules/events/components/pages/Events.vue +2 -2
- package/src/modules/events/components/pages/EventsBackoffice.vue +2 -2
- package/src/modules/events/components/sections/EditTickets.vue +5 -5
- package/src/modules/events/components/sections/EventsHot.vue +2 -2
- package/src/modules/events/components/sections/List.vue +1 -1
- package/src/modules/events/components/sections/SelectDate.vue +1 -1
- package/src/modules/gallery/components/pages/Gallery.vue +1 -1
- package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
- package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +14 -14
- package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +13 -13
- package/src/modules/governance/reactcode/src/components/EmptyState.tsx +2 -2
- package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +2 -2
- package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +6 -6
- package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +18 -18
- package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +7 -7
- package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +9 -9
- package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +4 -4
- package/src/modules/governance/reactcode/src/components/TaskCard.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
- package/src/modules/governance/reactcode/src/components/VoteForm.tsx +6 -6
- package/src/modules/governance/reactcode/src/components/VotingCard.tsx +2 -2
- package/src/modules/governance/reactcode/src/components/VotingResults.tsx +15 -15
- package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +41 -41
- package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +8 -8
- package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +6 -6
- package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +9 -9
- package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +14 -14
- package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +44 -44
- package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +8 -8
- package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +3 -3
- package/src/modules/governance/reactcode-2/App.tsx +28 -0
- package/src/modules/governance/reactcode-2/README.md +20 -0
- package/src/modules/governance/reactcode-2/components/Charts.tsx +58 -0
- package/src/modules/governance/reactcode-2/components/Layout.tsx +457 -0
- package/src/modules/governance/reactcode-2/components/TaskPage.tsx +325 -0
- package/src/modules/governance/reactcode-2/components/VoteBadge.tsx +27 -0
- package/src/modules/governance/reactcode-2/components/VotingsFeedPage.tsx +328 -0
- package/src/modules/governance/reactcode-2/constants.ts +154 -0
- package/src/modules/governance/reactcode-2/index.html +70 -0
- package/src/modules/governance/reactcode-2/index.tsx +15 -0
- package/src/modules/governance/reactcode-2/metadata.json +5 -0
- package/src/modules/governance/reactcode-2/package.json +23 -0
- package/src/modules/governance/reactcode-2/pnpm-lock.yaml +1410 -0
- package/src/modules/governance/reactcode-2/tsconfig.json +29 -0
- package/src/modules/governance/reactcode-2/types.ts +48 -0
- package/src/modules/governance/reactcode-2/vite.config.ts +23 -0
- package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +10 -10
- package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +15 -15
- package/src/modules/governance/views/components/blocks/CardTaskItem.vue +9 -9
- package/src/modules/governance/views/components/blocks/CardVotingItem.vue +11 -11
- package/src/modules/governance/views/components/layouts/Governance.vue +1 -1
- package/src/modules/governance/views/components/pages/Governance.vue +3 -3
- package/src/modules/governance/views/components/pages/Initiative.vue +112 -112
- package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +31 -31
- package/src/modules/governance/views/components/pages/Initiatives.vue +20 -22
- package/src/modules/governance/views/components/pages/Milestone.vue +25 -25
- package/src/modules/governance/views/components/pages/Roadmap.vue +47 -47
- package/src/modules/governance/views/components/pages/Task.vue +106 -106
- package/src/modules/governance/views/components/pages/Tasks.vue +16 -16
- package/src/modules/governance/views/components/pages/Voting.vue +23 -23
- package/src/modules/governance/views/components/pages/Votings.vue +7 -7
- package/src/modules/governance/views/components/partials/EmptyState.vue +3 -3
- package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +11 -11
- package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +4 -4
- package/src/modules/governance/views/components/partials/VoteForm.vue +14 -14
- package/src/modules/governance/views/components/partials/VotingResults.vue +22 -22
- package/src/modules/icons/components/IconSearchPopup.vue +3 -3
- package/src/modules/icons/entities/IconCash.vue +23 -0
- package/src/modules/icons/navigation/IconSort.vue +4 -4
- package/src/modules/icons/pages/IconsPage.vue +7 -7
- package/src/modules/inventory/components/forms/AdjustmentForm.vue +3 -3
- package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
- package/src/modules/inventory/components/forms/StockAlertsForm.vue +1 -1
- package/src/modules/inventory/components/pages/Inventory.vue +10 -10
- package/src/modules/inventory/components/pages/InventoryEdit.vue +6 -6
- package/src/modules/landing/components/blocks/MapBlock.vue +2 -2
- package/src/modules/landing/components/sections/Examples.vue +1 -1
- package/src/modules/landing/components/sections/InstagramSection.vue +1 -1
- package/src/modules/landing/components/sections/SectionEarn.vue +4 -4
- package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
- package/src/modules/landing/components/sections/SectionFocus.vue +2 -2
- package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
- package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
- package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
- package/src/modules/landing/components/sections/SectionJoinUs.vue +2 -2
- package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
- package/src/modules/landing/components/sections/SectionOverview.vue +2 -2
- package/src/modules/landing/components/sections/SectionRoadmap.vue +2 -2
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +8 -8
- package/src/modules/marketplace/views/components/pages/Marketplace.vue +5 -5
- package/src/modules/marketplace/views/components/sections/SectionMenu.vue +3 -3
- package/src/modules/music/components/SidebarMusic.vue +11 -11
- package/src/modules/music/components/blocks/ActionButtons.vue +2 -2
- package/src/modules/music/components/cards/AlbumCard.vue +4 -4
- package/src/modules/music/components/cards/ArtistCard.vue +3 -8
- package/src/modules/music/components/cards/ArtistCardSmall.vue +2 -2
- package/src/modules/music/components/cards/PlaylistCard.vue +4 -4
- package/src/modules/music/components/cards/TrackListCard.vue +5 -5
- package/src/modules/music/components/forms/AlbumForm.vue +8 -8
- package/src/modules/music/components/forms/ArtistForm.vue +4 -4
- package/src/modules/music/components/forms/PlaylistForm.vue +7 -7
- package/src/modules/music/components/forms/SearchForm.vue +1 -1
- package/src/modules/music/components/forms/TrackForm.vue +13 -13
- package/src/modules/music/components/pages/Album.vue +22 -22
- package/src/modules/music/components/pages/Artist.vue +7 -7
- package/src/modules/music/components/pages/MusicHome.vue +13 -18
- package/src/modules/music/components/pages/MusicLibrary.vue +9 -9
- package/src/modules/music/components/pages/Playlist.vue +25 -25
- package/src/modules/music/components/pages/SearchResults.vue +15 -15
- package/src/modules/music/components/pages/Track.vue +25 -25
- package/src/modules/music/components/player/FullscreenPlayer.vue +5 -5
- package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
- package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
- package/src/modules/orders/components/blocks/CardApplication.vue +1 -1
- package/src/modules/orders/components/blocks/CardCustomer.vue +1 -1
- package/src/modules/orders/components/blocks/CardOrder.vue +9 -9
- package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +5 -5
- package/src/modules/orders/components/blocks/CardOrderItem.vue +9 -9
- package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
- package/src/modules/orders/components/blocks/CardOrderVar1.vue +4 -4
- package/src/modules/orders/components/blocks/StatusHistory.vue +3 -3
- package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
- package/src/modules/orders/components/elements/PriceTotal.vue +3 -3
- package/src/modules/orders/components/forms/FormApplicationDetails.vue +2 -2
- package/src/modules/orders/components/forms/FormCustomerDetails.vue +3 -3
- package/src/modules/orders/components/pages/Favorites.vue +1 -1
- package/src/modules/orders/components/pages/OrderBackoffice.vue +15 -15
- package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
- package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -4
- package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
- package/src/modules/orders/components/partials/ShopCart.vue +2 -2
- package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
- package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
- package/src/modules/orders/components/sections/CustomerDetails.vue +2 -2
- package/src/modules/orders/components/sections/Succes.vue +4 -4
- package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
- package/src/modules/organizations/components/blocks/CardOrganization.vue +4 -4
- package/src/modules/organizations/components/blocks/Contacts.vue +8 -8
- package/src/modules/organizations/components/blocks/Rating.vue +1 -1
- package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
- package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
- package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
- package/src/modules/organizations/components/pages/Department.vue +2 -2
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
- package/src/modules/organizations/components/pages/Members.vue +1 -1
- package/src/modules/organizations/components/pages/Organization.new.vue +8 -8
- package/src/modules/organizations/components/pages/Organization.vue +6 -6
- package/src/modules/organizations/components/pages/OrganizationDocuments.vue +2 -2
- package/src/modules/organizations/components/pages/Organizations.vue +3 -3
- package/src/modules/organizations/components/sections/Documents.vue +2 -2
- package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
- package/src/modules/organizations/components/sections/Unit.vue +1 -1
- package/src/modules/pages/views/components/blocks/CardPage.vue +2 -2
- package/src/modules/pages/views/components/pages/Page.vue +5 -5
- package/src/modules/products/components/blocks/CardCategory.vue +1 -1
- package/src/modules/products/components/blocks/CardPosition.vue +4 -4
- package/src/modules/products/components/blocks/CardProduct.vue +3 -3
- package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -3
- package/src/modules/products/components/blocks/ProductImages.vue +2 -2
- package/src/modules/products/components/blocks/ProductVariants.vue +2 -2
- package/src/modules/products/components/elements/Image360.vue +2 -2
- package/src/modules/products/components/elements/Price.vue +2 -2
- package/src/modules/products/components/elements/QuantitySelector.vue +3 -3
- package/src/modules/products/components/elements/THC.vue +1 -1
- package/src/modules/products/components/forms/ReorderSettingsForm.vue +1 -1
- package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
- package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
- package/src/modules/products/components/pages/Categories.vue +1 -1
- package/src/modules/products/components/pages/CategoryEdit.vue +2 -2
- package/src/modules/products/components/pages/Product.vue +6 -6
- package/src/modules/products/components/pages/ProductEdit.vue +6 -6
- package/src/modules/products/components/pages/Products.vue +11 -11
- package/src/modules/products/components/sections/EditAttributes.vue +4 -4
- package/src/modules/products/components/sections/EditCategories.vue +1 -1
- package/src/modules/products/components/sections/EditDiscounts.vue +6 -6
- package/src/modules/products/components/sections/EditRecommended.vue +1 -1
- package/src/modules/products/components/sections/EditVariants.vue +8 -8
- package/src/modules/products/components/sections/FilterProducts.vue +3 -3
- package/src/modules/products/components/sections/ProductConfigurator.vue +2 -2
- package/src/modules/products/components/sections/ProductInformationSection.vue +10 -10
- package/src/modules/products/components/sections/ProductsRecommended.vue +2 -2
- package/src/modules/products/components/sections/SectionProduct.vue +7 -7
- package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +3 -3
- package/src/modules/rents/views/components/blocks/CardRent.vue +1 -1
- package/src/modules/rents/views/components/pages/Gant/DateLabel.vue +1 -1
- package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +2 -2
- package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +8 -8
- package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +1 -1
- package/src/modules/rents/views/components/pages/Rents.vue +1 -1
- package/src/modules/rents/views/components/pages/RentsEdit.vue +6 -6
- package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
- package/src/modules/reports/components/sections/FormReport.vue +1 -1
- package/src/modules/spots/components/blocks/CardSpot.vue +4 -4
- package/src/modules/spots/components/blocks/SpotMemberModify.vue +1 -1
- package/src/modules/spots/components/layouts/Spots.vue +2 -2
- package/src/modules/spots/components/pages/Spot.vue +5 -5
- package/src/modules/spots/components/pages/SpotEdit.vue +2 -2
- package/src/modules/spots/components/pages/Spots.vue +3 -3
- package/src/modules/spots/components/sections/MapSection.vue +1 -1
- package/src/modules/spots/components/sections/WorktimeEdit.vue +4 -4
- package/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue +5 -5
- package/src/modules/wallet/views/components/blocks/CardDeposit.vue +5 -5
- package/src/modules/wallet/views/components/blocks/CashDeposit.vue +2 -2
- package/src/modules/wallet/views/components/blocks/CryptoDeposit.vue +4 -4
- package/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue +11 -11
- package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +4 -4
- package/src/modules/wallet/views/components/pages/Wallet.vue +22 -22
- package/src/styles/config.scss +193 -507
- package/src/styles/layout.scss +81 -1
- package/src/styles/reset.scss +2 -0
- package/src/styles/theme.scss +1 -8
- package/dist/martyrs/dist/main-BFvlam0J.js.map +0 -1
- package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
- package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
- package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
- package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +0 -1
- package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
- package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/weekOfYear.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -20
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
- package/src/modules/LAYOUT.MD +0 -767
- package/src/modules/STYLES.MD +0 -298
- package/src/modules/inventory/inventory.router.js +0 -72
- package/src/modules/products/products.router.js +0 -299
- package/src/styles/base/all.scss +0 -233
- package/src/styles/base/backgrounds.scss +0 -70
- package/src/styles/base/borders.scss +0 -407
- package/src/styles/base/scrolling.scss +0 -137
- package/src/styles/base/shadow_transitions_hover_refactor.scss +0 -158
- package/src/styles/base/transitions.scss +0 -109
- package/src/styles/responsive.scss +0 -152
- package/src/styles/typography.scss +0 -161
- /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tt-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-regular \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-regular gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button t-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-b-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"t-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end t-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\tto=\"/organizations/create\"\n\t\t\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 pd-0 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tfw-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-regular \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-regular gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex fw-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button fw-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-b-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"fw-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end fw-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\tto=\"/organizations/create\"\n\t\t\t\t\t\t\tclass=\"fw-medium cursor-pointer hover:scale-[1.05] radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,7 +7,7 @@ import SkeletonBlogpost from "../../../icons/skeletons/SkeletonBlogpost.vue.js";
|
|
|
7
7
|
import { useRoute } from "vue-router";
|
|
8
8
|
import "vue-i18n";
|
|
9
9
|
/* empty css */
|
|
10
|
-
/* empty css
|
|
10
|
+
/* empty css */
|
|
11
11
|
import { state as state$1 } from "../../../auth/views/store/auth.js";
|
|
12
12
|
/* empty css */
|
|
13
13
|
/* empty css */
|
|
@@ -5,8 +5,8 @@ import _sfc_main$1 from "../../../constructor/components/sections/Constructor.vu
|
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Popup/Popup.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../../components/FieldTags/BlockTags.vue.js";
|
|
7
7
|
import _sfc_main$6 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
8
|
-
import Field from "../../../../components/Field/Field.
|
|
9
|
-
import _sfc_main$7 from "../../../../components/Button/Button.
|
|
8
|
+
import Field from "../../../../components/Field/Field.vue.js";
|
|
9
|
+
import _sfc_main$7 from "../../../../components/Button/Button.vue2.js";
|
|
10
10
|
import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
|
|
11
11
|
import _sfc_main$4 from "../../../core/views/components/blocks/Card.vue.js";
|
|
12
12
|
import { useRoute, useRouter } from "vue-router";
|
|
@@ -34,7 +34,7 @@ const _hoisted_6 = {
|
|
|
34
34
|
};
|
|
35
35
|
const _hoisted_7 = {
|
|
36
36
|
key: 3,
|
|
37
|
-
class: "mn-b-medium br-grey-transp-25 br-2px
|
|
37
|
+
class: "mn-b-medium br-grey-transp-25 br-2px pd-small radius-big"
|
|
38
38
|
};
|
|
39
39
|
const _sfc_main = {
|
|
40
40
|
__name: "CreateBlogPost",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateBlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/CreateBlogPost.vue"],"sourcesContent":["<template>\n <article \n class=\"w-100 bg-light radius-medium pos-relative\"\n >\n <section \n style=\"min-height: 100%;\"\n class=\"w-100 pd-big\"\n >\n <!-- Title -->\n <div \n class=\"w-full h-full\"\n >\n <!-- <Textarea \n v-if=\"post\" \n :prop=\"post\" \n :setFocus=\"true\"\n content=\"name\" \n placeholder=\"Enter post title\" \n class=\"h2\"\n /> -->\n </div>\n\n <Constructor \n v-if=\"post\" \n :content=\"post.content\"\n @update=\"update => post.content = update\"\n />\n\n </section>\n\n <transition name=\"scaleIn\" >\n <section v-if=\"post\" class=\"pd-small pos-sticky pos-l-0 pos-b-0 w-100 \">\n <div class=\"pd-thin radius-big bg-main w-100 flex-nowrap flex\">\n <button v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\"><span>Delete</span></button>\n <button @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\"><span>To Drafts</span></button>\n <button @click=\"openPulicationPopup()\" class=\"mn-l-thin bg-black t-white button\"><span>Publish</span></button>\n </div>\n </section>\n </transition>\n\n <Popup \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n >\n <h3 class=\"mn-b-small\">Final Touches</h3>\n \n <BlockTags\n @tags-changed=\"newTags => post.tags = newTags\"\n :tags=\"post.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-small\">Add source:</h5>\n <Field \n v-model:field=\"post.source\" \n placeholder=\"Add full link to the source\" \n class=\"mn-b-medium bg-light radius-medium pd-small\" \n />\n\n <h5 class=\"mn-b-small\">Add to public</h5>\n <Card\n v-if=\"selectedOrganization\"\n :photo=\"selectedOrganization.profile?.photo\"\n :title=\"selectedOrganization.profile?.name\"\n @click=\"() => { \n selectedOrganization = null\n }\"\n class=\"h-4r w-100 bg-light pd-thin radius-medium mn-b-thin\"\n />\n\n <section v-else class=\"mn-b-thin h-25r o-x-hidden o-y-scroll bg-light radius-big pd-small \">\n <Feed\n :showLoadMore=\"false\" \n :search=\"{\n placeholder: 'Search organization...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No organizations Found',\n description: 'Currently, there are no such organizations available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: null\n }\"\n :options=\"{\n user: auth.state.user._id,\n postable: auth.state.user._id,\n lookup: ['memberships']\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <Card\n v-for=\"(organization, index) in items\" \n v-memo=\"[organization._id, organization.profile.name]\"\n :photo=\"organization.profile?.photo\"\n :title=\"organization.profile?.name\"\n @click=\"() => { \n selectedOrganization = organization\n }\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </section>\n\n <h5 v-if=\"selectedOrganization\" class=\"mn-b-thin\">Options:</h5>\n <div v-if=\"selectedOrganization\" class=\"mn-b-medium br-grey-transp-25 br-2px br-solid pd-small radius-big\">\n <Checkbox \n :label=\"'Hide Author'\"\n :radio=\"post.creator.hidden\"\n @update:radio=\"event => post.creator.hidden = event\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n \n </article>\n</template>\n\n<script setup>\nimport Textarea from '@martyrs/src/modules/constructor/components/elements/Textarea.vue';\nimport Constructor from '@martyrs/src/modules/constructor/components/sections/Constructor.vue';\n\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport Card from '@martyrs/src/modules/core/views/components/blocks/Card.vue';\n\nimport { ref, onMounted, watchEffect, nextTick, computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { VueDraggableNext } from 'vue-draggable-next';\n// Store & Router\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n \nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\n\nconst { hasAccess } = useGlobalMixins()\n\nconst route = useRoute();\nconst router = useRouter();\n\nlet post = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n \n post.value = data.pop();\n\n if (!post.value) {\n router.push({name: 'notfound'})\n }\n\n if (post.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(post.value.owner.target._id, 'posts', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (post.value.owner.type === 'user' && post.value.creator.target._id !== auth.state.user._id) {\n router.push({name: 'unauthorized'})\n }\n } else {\n blog.clean();\n post.value = blog.state.current;\n }\n\n if (!post.value.owner) post.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!post.value.creator) post.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n\n if (post.value.owner.type === 'organization') selectedOrganization.value = {\n _id: post.value.owner.target._id,\n name: post.value.owner.target.profile.name,\n photo: post.value.owner.target.profile.photo\n }\n})\n// /////////////////////////////////////////\n// Publication Form\n// /////////////////////////////////////////\nconst tag = ref('');\nconst autocompleteItems = ref([\n { text: 'story' },\n { text: 'news' },\n { text: 'guide' },\n { text: 'discussion' },\n { text: 'photos' },\n]);\n\nconst filteredItems = computed(() => {\n return autocompleteItems.value.filter(i => {\n return i.text.toLowerCase().includes(tag.value.toLowerCase());\n });\n});\n\nconst filteredSuggestedItems = computed(() => {\n return autocompleteItems.value.filter(item => {\n return !selectedTags.value.some(tag => tag.text === item.text);\n });\n })\n\nfunction addTag (tag) {\n selectedTags.value.push(tag)\n}\n// /////////////////////////////////////////\n// Publication Popup\n// /////////////////////////////////////////\nconst isPublicationPopup = ref(false)\n\nfunction openPulicationPopup() {\n isPublicationPopup.value = true;\n}\nfunction closePublicationPopup() {\n isPublicationPopup.value = false;\n}\n\nfunction onDrafts() {\n\n if (selectedTags.value.length > 0) selectedTags.value.map(tag => (tag.text))\n\n post.value.status = \"draft\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) post.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) post.value.creator.hidden = false\n if (!selectedOrganization.value) post.value.organization = post.value.creator\n\n post.value.status = \"published\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n console.log(post.value)\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this post?')) {\n blog.remove(post.value._id)\n .then(response => {\n router.push({ name: 'User Posts', params: { _id: post.value.creator.target._id } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.read","auth.state","blog.clean","blog.state","tag","blog.update","blog.create","blog.remove"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreateBlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/CreateBlogPost.vue"],"sourcesContent":["<template>\n <article \n class=\"w-100 bg-light radius-medium pos-relative\"\n >\n <section \n style=\"min-height: 100%;\"\n class=\"w-100 pd-big\"\n >\n <!-- Title -->\n <div \n class=\"w-full h-full\"\n >\n <!-- <Textarea \n v-if=\"post\" \n :prop=\"post\" \n :setFocus=\"true\"\n content=\"name\" \n placeholder=\"Enter post title\" \n class=\"h2\"\n /> -->\n </div>\n\n <Constructor \n v-if=\"post\" \n :content=\"post.content\"\n @update=\"update => post.content = update\"\n />\n\n </section>\n\n <transition name=\"scaleIn\" >\n <section v-if=\"post\" class=\"pd-small pos-sticky pos-l-0 pos-b-0 w-100 \">\n <div class=\"pd-thin radius-big bg-main w-100 flex-nowrap flex\">\n <button v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\"><span>Delete</span></button>\n <button @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\"><span>To Drafts</span></button>\n <button @click=\"openPulicationPopup()\" class=\"mn-l-thin bg-black t-white button\"><span>Publish</span></button>\n </div>\n </section>\n </transition>\n\n <Popup \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n >\n <h3 class=\"mn-b-small\">Final Touches</h3>\n \n <BlockTags\n @tags-changed=\"newTags => post.tags = newTags\"\n :tags=\"post.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-small\">Add source:</h5>\n <Field \n v-model:field=\"post.source\" \n placeholder=\"Add full link to the source\" \n class=\"mn-b-medium bg-light radius-medium pd-small\" \n />\n\n <h5 class=\"mn-b-small\">Add to public</h5>\n <Card\n v-if=\"selectedOrganization\"\n :photo=\"selectedOrganization.profile?.photo\"\n :title=\"selectedOrganization.profile?.name\"\n @click=\"() => { \n selectedOrganization = null\n }\"\n class=\"h-4r w-100 bg-light pd-thin radius-medium mn-b-thin\"\n />\n\n <section v-else class=\"mn-b-thin h-25r o-x-hidden o-y-scroll bg-light radius-big pd-small \">\n <Feed\n :showLoadMore=\"false\" \n :search=\"{\n placeholder: 'Search organization...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No organizations Found',\n description: 'Currently, there are no such organizations available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: null\n }\"\n :options=\"{\n user: auth.state.user._id,\n postable: auth.state.user._id,\n lookup: ['memberships']\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <Card\n v-for=\"(organization, index) in items\" \n v-memo=\"[organization._id, organization.profile.name]\"\n :photo=\"organization.profile?.photo\"\n :title=\"organization.profile?.name\"\n @click=\"() => { \n selectedOrganization = organization\n }\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </section>\n\n <h5 v-if=\"selectedOrganization\" class=\"mn-b-thin\">Options:</h5>\n <div v-if=\"selectedOrganization\" class=\"mn-b-medium br-grey-transp-25 br-2px pd-small radius-big\">\n <Checkbox \n :label=\"'Hide Author'\"\n :radio=\"post.creator.hidden\"\n @update:radio=\"event => post.creator.hidden = event\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n \n </article>\n</template>\n\n<script setup>\nimport Textarea from '@martyrs/src/modules/constructor/components/elements/Textarea.vue';\nimport Constructor from '@martyrs/src/modules/constructor/components/sections/Constructor.vue';\n\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport Card from '@martyrs/src/modules/core/views/components/blocks/Card.vue';\n\nimport { ref, onMounted, watchEffect, nextTick, computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { VueDraggableNext } from 'vue-draggable-next';\n// Store & Router\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n \nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\n\nconst { hasAccess } = useGlobalMixins()\n\nconst route = useRoute();\nconst router = useRouter();\n\nlet post = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n \n post.value = data.pop();\n\n if (!post.value) {\n router.push({name: 'notfound'})\n }\n\n if (post.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(post.value.owner.target._id, 'posts', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (post.value.owner.type === 'user' && post.value.creator.target._id !== auth.state.user._id) {\n router.push({name: 'unauthorized'})\n }\n } else {\n blog.clean();\n post.value = blog.state.current;\n }\n\n if (!post.value.owner) post.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!post.value.creator) post.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n\n if (post.value.owner.type === 'organization') selectedOrganization.value = {\n _id: post.value.owner.target._id,\n name: post.value.owner.target.profile.name,\n photo: post.value.owner.target.profile.photo\n }\n})\n// /////////////////////////////////////////\n// Publication Form\n// /////////////////////////////////////////\nconst tag = ref('');\nconst autocompleteItems = ref([\n { text: 'story' },\n { text: 'news' },\n { text: 'guide' },\n { text: 'discussion' },\n { text: 'photos' },\n]);\n\nconst filteredItems = computed(() => {\n return autocompleteItems.value.filter(i => {\n return i.text.toLowerCase().includes(tag.value.toLowerCase());\n });\n});\n\nconst filteredSuggestedItems = computed(() => {\n return autocompleteItems.value.filter(item => {\n return !selectedTags.value.some(tag => tag.text === item.text);\n });\n })\n\nfunction addTag (tag) {\n selectedTags.value.push(tag)\n}\n// /////////////////////////////////////////\n// Publication Popup\n// /////////////////////////////////////////\nconst isPublicationPopup = ref(false)\n\nfunction openPulicationPopup() {\n isPublicationPopup.value = true;\n}\nfunction closePublicationPopup() {\n isPublicationPopup.value = false;\n}\n\nfunction onDrafts() {\n\n if (selectedTags.value.length > 0) selectedTags.value.map(tag => (tag.text))\n\n post.value.status = \"draft\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) post.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) post.value.creator.hidden = false\n if (!selectedOrganization.value) post.value.organization = post.value.creator\n\n post.value.status = \"published\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n console.log(post.value)\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this post?')) {\n blog.remove(post.value._id)\n .then(response => {\n router.push({ name: 'User Posts', params: { _id: post.value.creator.target._id } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.read","auth.state","blog.clean","blog.state","tag","blog.update","blog.create","blog.remove"],"mappings":"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"}
|
|
@@ -52,7 +52,7 @@ const _sfc_main = {
|
|
|
52
52
|
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({
|
|
53
53
|
name: unref(route).params?._id ? "Organization_PostAdd" : "CreateBlogPost"
|
|
54
54
|
})),
|
|
55
|
-
class: "radius-
|
|
55
|
+
class: "radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second"
|
|
56
56
|
}, " + ")) : createCommentVNode("", true)
|
|
57
57
|
])) : createCommentVNode("", true),
|
|
58
58
|
createElementVNode("div", _hoisted_3, [
|
|
@@ -90,7 +90,7 @@ const _sfc_main = {
|
|
|
90
90
|
key: item._id,
|
|
91
91
|
blogpost: item,
|
|
92
92
|
user: state.user._id,
|
|
93
|
-
class: "h-max-40r bg-light radius-medium cursor-pointer hover
|
|
93
|
+
class: "h-max-40r bg-light radius-medium cursor-pointer hover:scale-[1.05] ease",
|
|
94
94
|
onClick: ($event) => _ctx.$router.push({
|
|
95
95
|
name: unref(route).params._id ? "Organization_BlogPost" : "BlogPost",
|
|
96
96
|
params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Posts.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Posts.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Posts</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'posts', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_PostAdd' : 'CreateBlogPost'\n })\" \n class=\"radius-
|
|
1
|
+
{"version":3,"file":"Posts.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Posts.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Posts</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'posts', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_PostAdd' : 'CreateBlogPost'\n })\" \n class=\"radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Feed\n :search=\"true\"\n v-model:filter=\"blog.state.filter\"\n v-model:sort=\"blog.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Blog Posts Found',\n description: 'Currently, there are no posts available in this blog.'\n }\n }\"\n :store=\"{\n read: (options) => blog.read(options),\n state: blog.state\n }\"\n :options=\"{\n limit: 12,\n status: 'published',\n user: auth.state.user._id,\n owner: route.params._id || null,\n search: route.query.search\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-1 pos-relative w-100 rows-1 gap-thin\"\n >\n <CardBlogpost \n v-for=\"item in items\" \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n class=\"h-max-40r bg-light radius-medium cursor-pointer hover:scale-[1.05] ease\"\n @click=\"$router.push({ \n name: route.params._id ? 'Organization_BlogPost' : 'BlogPost', \n params: { \n _id: route.params._id,\n url: item.url \n } \n })\"\n />\n </Feed>\n\n </div>\n </div>\n</template>\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import CardBlogpost from '@martyrs/src/modules/community/components/blocks/CardBlogpost.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as blog from '@martyrs/src/modules/community/store/blogposts.js';\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n const core = useStore();\n\n const route = useRoute()\n const router = useRouter()\n const { hasAccess } = useGlobalMixins()\n\n // Props\n const props = defineProps({\n organization: {\n type: Object,\n default: null\n }\n })\n\n\n core.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_PostAdd', params: { _id: route.params._id} }) : router.push({ name: 'CreateBlogPost' })\n }]\n\n onMounted(async () => {\n if (route.params._id) {\n await organizations.actions.read({ _id: route.params._id });\n }\n })\n\n onUnmounted(() => {\n core.state.navigation_bar.actions = [];\n });\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["IconPlus","auth.state","organizations.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmFE,UAAM,OAAO,SAAQ;AAErB,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,UAAS,IAAK,gBAAe;AAWrC,SAAK,MAAM,eAAe,UAAU,CAAC;AAAA,MACnC,WAAWA;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,MAAW,QAAQA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,wBAAwB,QAAQ,EAAE,KAAK,MAAM,OAAO,IAAG,EAAC,CAAE,IAAI,OAAO,KAAK,EAAE,MAAM,iBAAgB,CAAE;AAAA,IAC7J,CAAG;AAED,cAAU,YAAY;AACpB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMC,QAAsB,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,MAC5D;AAAA,IACF,CAAC;AAED,gBAAY,MAAM;AAChB,WAAK,MAAM,eAAe,UAAU,CAAA;AAAA,IACtC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -91,11 +91,11 @@ const _sfc_main = {
|
|
|
91
91
|
totalReplies.value > 0 ? (openBlock(), createElementBlock("button", {
|
|
92
92
|
key: 0,
|
|
93
93
|
onClick: toggleChildren,
|
|
94
|
-
class: "t-
|
|
94
|
+
class: "t-grey cursor-pointer fw-medium font-second"
|
|
95
95
|
}, toDisplayString(isExpanded.value ? "Hide" : totalReplies.value + (totalReplies.value === 1 ? " reply" : " replies")), 1)) : createCommentVNode("", true),
|
|
96
96
|
__props.owner ? (openBlock(), createElementBlock("button", {
|
|
97
97
|
key: 1,
|
|
98
|
-
class: "font-second cursor-pointer t-transp
|
|
98
|
+
class: "font-second cursor-pointer t-transp fw-medium",
|
|
99
99
|
onClick: _cache[0] || (_cache[0] = ($event) => showReplyForm.value = true)
|
|
100
100
|
}, " Reply ")) : createCommentVNode("", true)
|
|
101
101
|
]),
|
|
@@ -150,7 +150,7 @@ const _sfc_main = {
|
|
|
150
150
|
};
|
|
151
151
|
}
|
|
152
152
|
};
|
|
153
|
-
const Comment = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
153
|
+
const Comment = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d265fc89"]]);
|
|
154
154
|
export {
|
|
155
155
|
Comment as default
|
|
156
156
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Comment.vue.js","sources":["../../../../../../../src/modules/community/components/sections/Comment.vue"],"sourcesContent":["<template>\n <div class=\"comment-wrapper\">\n <div class=\"comment-content \">\n <CardHeader \n class=\"mn-b-thin mn-b-thin w-100\"\n :entity=\"comment\"\n :entityType=\"'comment'\"\n :user=\"owner\"\n :owner=\"{target: comment.owner, type: 'user'}\" \n :creator=\"{target: comment.owner, type: 'user'}\"\n :date=\"comment.createdAt\"\n />\n <div class=\"pd-t-zero\">\n <p class=\"p-regular\">{{ comment.content }}</p>\n </div>\n <div class=\"mn-t-thin flex-v-center flex-nowrap flex gap-small\">\n <button \n v-if=\"totalReplies > 0\" \n @click=\"toggleChildren\"\n class=\"t-
|
|
1
|
+
{"version":3,"file":"Comment.vue.js","sources":["../../../../../../../src/modules/community/components/sections/Comment.vue"],"sourcesContent":["<template>\n <div class=\"comment-wrapper\">\n <div class=\"comment-content \">\n <CardHeader \n class=\"mn-b-thin mn-b-thin w-100\"\n :entity=\"comment\"\n :entityType=\"'comment'\"\n :user=\"owner\"\n :owner=\"{target: comment.owner, type: 'user'}\" \n :creator=\"{target: comment.owner, type: 'user'}\"\n :date=\"comment.createdAt\"\n />\n <div class=\"pd-t-zero\">\n <p class=\"p-regular\">{{ comment.content }}</p>\n </div>\n <div class=\"mn-t-thin flex-v-center flex-nowrap flex gap-small\">\n <button \n v-if=\"totalReplies > 0\" \n @click=\"toggleChildren\"\n class=\"t-grey cursor-pointer fw-medium font-second\"\n >\n {{ isExpanded ? 'Hide' : totalReplies + (totalReplies === 1 ? ' reply' : ' replies') }} \n </button>\n <button \n v-if=\"owner\" \n class=\"font-second cursor-pointer t-transp fw-medium\" \n @click=\"showReplyForm = true\"\n > \n Reply\n </button>\n </div>\n <div v-if=\"showReplyForm\" class=\"mn-t-small bg-white pd-thin radius-regular\">\n <textarea class=\"w-100\" v-model=\"replyContent\"></textarea>\n <div class=\"mn-l-auto gap-thin flex-nowrap flex\">\n <button class=\"bg-grey-transp-25 pd-r-regular pd-l-regular pd-thin button\" @click=\"showReplyForm = false\">Cancel</button>\n <button class=\"bg-main pd-r-regular pd-l-regular pd-thin button\" @click=\"submitReply\">Send</button>\n </div>\n </div>\n </div>\n\n <transition name=\"collapse\">\n <div v-if=\"isExpanded && comment.children && comment.children.length\" class=\"mn-t-regular comment-children\">\n <div\n v-for=\"(childComment, index) in comment.children\"\n :key=\"childComment._id\"\n class=\"child-wrapper\"\n >\n <!-- Кликабельная область с линией -->\n <div \n @click=\"toggleChildren\" \n @mouseenter=\"highlightLevel($event, true)\"\n @mouseleave=\"highlightLevel($event, false)\"\n class=\"tree-line cursor-pointer\"\n :class=\"{ 'last-child': index === comment.children.length - 1 }\"\n ></div>\n \n <Comment\n :comment=\"childComment\"\n :target=\"target\"\n :owner=\"owner\"\n @reply=\"handleReply\"\n @load-more=\"handleLoadMore\"\n class=\"child-comment mn-b-regular\"\n />\n </div>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport Comment from './Comment.vue';\nimport CardHeader from '@martyrs/src/modules/core/views/components/blocks/CardHeader.vue'\n\nconst props = defineProps({\n comment: {\n type: Object,\n required: true\n },\n target: {\n type: String,\n required: true\n },\n owner: {\n type: String,\n required: true\n }\n});\n\nconst emit = defineEmits(['reply', 'load-more']);\n\nconst showReplyForm = ref(false);\nconst replyContent = ref('');\nconst isExpanded = ref(shouldBeExpanded(props.comment.depth))\n\n\nconst childrenContainer = ref(null)\n\nfunction highlightLevel(event, state) {\n const wrapper = event.currentTarget?.parentElement?.parentElement;\n if (!wrapper) return;\n\n const lines = wrapper.querySelectorAll(':scope > .child-wrapper > .tree-line');\n lines.forEach(line => line.classList.toggle('hovered', state));\n} \n\nfunction shouldBeExpanded(depth) {\n return depth % 3 < 2\n}\n\nconst totalReplies = computed(() => {\n function countReplies(comment) {\n if (!comment.children || comment.children.length === 0) {\n return 0\n }\n return comment.children.length + comment.children.reduce((sum, child) => sum + countReplies(child), 0)\n }\n return countReplies(props.comment)\n})\n\nconst toggleChildren = () => {\n isExpanded.value = !isExpanded.value\n}\n\nconst submitReply = () => {\n emit('reply', props.comment._id, replyContent.value);\n replyContent.value = '';\n showReplyForm.value = false;\n};\n\nconst handleReply = (parentId, content) => {\n emit('reply', parentId, content);\n};\n\nconst handleLoadMore = (commentId, depth) => {\n emit('load-more', commentId, depth);\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.comment-children {\n margin-top: 1rem;\n}\n\n.child-wrapper {\n position: relative;\n}\n\n.child-comment {\n padding-left: 1.5rem;\n}\n\n.tree-line {\n position: absolute;\n left: calc(-1rem + 2px);\n top: -1rem;\n width: 2rem;\n height: calc(100% + 2rem);\n}\n\n.tree-line::before {\n content: '';\n position: absolute;\n left: 1rem;\n top: 0;\n width: 2px;\n height: 100%;\n border-left: 1px solid rgba(var(--grey), 1);\n transition: background 0.2s ease;\n}\n\n.tree-line::after {\n content: '';\n position: absolute;\n left: 1rem;\n top: 2rem;\n width: 1rem;\n height: 2px;\n border-bottom: 1px solid rgba(var(--grey), 1);\n transition: background 0.2s ease;\n\n}\n\n.child-wrapper {\n &:last-child {\n .tree-line::after {\n display: none;\n }\n }\n}\n\n.tree-line.last-child::before {\n height: 2rem;\n border-bottom-left-radius: 0.5rem;\n border-left: 1px solid rgba(var(--grey), 1);\n border-bottom: 1px solid rgba(var(--grey), 1);\n background: none;\n width: 1rem;\n}\n\n\n.tree-line.hovered::before,\n.tree-line.hovered::after {\n border-color: rgba(var(--second), 1);\n}\n\n.tree-line.last-child.hovered::before {\n border-color: rgba(var(--second), 1);\n}\n\n/* Анимация */\n.collapse-enter-active,\n.collapse-leave-active {\n transition: all 0.3s ease;\n}\n\n.collapse-enter-from {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.collapse-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA,UAAM,QAAQ;AAed,UAAM,OAAO;AAEb,UAAM,gBAAgB,IAAI,KAAK;AAC/B,UAAM,eAAe,IAAI,EAAE;AAC3B,UAAM,aAAa,IAAI,iBAAiB,MAAM,QAAQ,KAAK,CAAC;AAGlC,QAAI,IAAI;AAElC,aAAS,eAAe,OAAO,OAAO;AACpC,YAAM,UAAU,MAAM,eAAe,eAAe;AACpD,UAAI,CAAC,QAAS;AAEd,YAAM,QAAQ,QAAQ,iBAAiB,sCAAsC;AAC7E,YAAM,QAAQ,UAAQ,KAAK,UAAU,OAAO,WAAW,KAAK,CAAC;AAAA,IAC/D;AAEA,aAAS,iBAAiB,OAAO;AAC/B,aAAO,QAAQ,IAAI;AAAA,IACrB;AAEA,UAAM,eAAe,SAAS,MAAM;AAClC,eAAS,aAAa,SAAS;AAC7B,YAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,GAAG;AACtD,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,SAAS,SAAS,QAAQ,SAAS,OAAO,CAAC,KAAK,UAAU,MAAM,aAAa,KAAK,GAAG,CAAC;AAAA,MACvG;AACA,aAAO,aAAa,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,iBAAiB,MAAM;AAC3B,iBAAW,QAAQ,CAAC,WAAW;AAAA,IACjC;AAEA,UAAM,cAAc,MAAM;AACxB,WAAK,SAAS,MAAM,QAAQ,KAAK,aAAa,KAAK;AACnD,mBAAa,QAAQ;AACrB,oBAAc,QAAQ;AAAA,IACxB;AAEA,UAAM,cAAc,CAAC,UAAU,YAAY;AACzC,WAAK,SAAS,UAAU,OAAO;AAAA,IACjC;AAEA,UAAM,iBAAiB,CAAC,WAAW,UAAU;AAC3C,WAAK,aAAa,WAAW,KAAK;AAAA,IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getCurrentInstance, ref, onMounted, createElementBlock, openBlock, createElementVNode, toDisplayString, withModifiers, withDirectives, vModelText, Fragment, renderList, createBlock } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
|
-
import { Preferences } from "../../../../../node_modules/.pnpm/@capacitor_preferences@7.0.
|
|
3
|
+
import { Preferences } from "../../../../../node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js";
|
|
4
4
|
import Comment from "./Comment.vue.js";
|
|
5
5
|
import $axios from "../../../core/views/utils/axios-instance.js";
|
|
6
6
|
const _hoisted_1 = { id: "comments" };
|
|
@@ -50,7 +50,7 @@ const _sfc_main = {
|
|
|
50
50
|
onFileChange: onComponentSave,
|
|
51
51
|
type: "audio",
|
|
52
52
|
placeholder: "Upload video",
|
|
53
|
-
class: "w-100 br-
|
|
53
|
+
class: "w-100 br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
|
|
54
54
|
}, null, 8, ["field"])
|
|
55
55
|
]))
|
|
56
56
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Audio.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Audio.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"video/mp4\">\n Your browser does not support the video tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"audioUrl\"\n @file-change=\"onComponentSave\"\n type=\"audio\" \n :placeholder=\"'Upload video'\" \n class=\"\n w-100\n
|
|
1
|
+
{"version":3,"file":"Audio.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Audio.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"video/mp4\">\n Your browser does not support the video tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"audioUrl\"\n @file-change=\"onComponentSave\"\n type=\"audio\" \n :placeholder=\"'Upload video'\" \n class=\"\n w-100\n \n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Upload from '@martyrs/src/components/Upload/Upload.vue'\n\nconst audioUrl = ref(null);\nconst fileInput = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction updateBlock(updatedBlock) {\n const index = post.value.content.findIndex(block => block === updatedBlock);\n if (index !== -1) {\n post.value.content.splice(index, 1, updatedBlock);\n }\n}\n\n\nfunction onComponentSave(url) {\n audioUrl.value = url\n\n if (audioUrl.value ) {\n emit('input', audioUrl.value);\n emit('updateBlock', props.prop, { content: audioUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,WAAW,IAAI,IAAI;AACP,QAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAUb,aAAS,gBAAgB,KAAK;AAC5B,eAAS,QAAQ;AAEjB,UAAI,SAAS,OAAQ;AACnB,aAAK,SAAS,SAAS,KAAK;AAC5B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,SAAS,OAAO;AAAA,MAC7D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, createElementBlock, openBlock, createElementVNode, createCommentVNode, createBlock, Fragment, createVNode, toDisplayString } from "vue";
|
|
2
|
-
import Field from "../../../../components/Field/Field.
|
|
2
|
+
import Field from "../../../../components/Field/Field.vue.js";
|
|
3
3
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
4
4
|
const _hoisted_1 = { class: "w-100 pd-medium bg-white radius-medium pos-relative" };
|
|
5
5
|
const _hoisted_2 = { class: "flex flex-v-center gap-thin" };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createVNode, createElementVNode } from "vue";
|
|
2
|
-
import Field from "../../../../components/Field/Field.
|
|
2
|
+
import Field from "../../../../components/Field/Field.vue.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
const _hoisted_1 = { class: "w-100 h-max-40r pd-medium bg-white radius-medium pos-relative" };
|
|
5
5
|
const _hoisted_2 = ["innerHTML"];
|
|
@@ -60,7 +60,7 @@ const _sfc_main = {
|
|
|
60
60
|
"onUpdate:field": _cache[0] || (_cache[0] = ($event) => embedCode.value = $event),
|
|
61
61
|
type: "textarea",
|
|
62
62
|
placeholder: "Paste your embed code here",
|
|
63
|
-
class: "w-100 br-
|
|
63
|
+
class: "w-100 br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
|
|
64
64
|
}, null, 8, ["field"]),
|
|
65
65
|
createElementVNode("div", { class: "flex-v-center flex-nowrap flex gap-small" }, [
|
|
66
66
|
_cache[2] || (_cache[2] = createElementVNode("p", { class: "p-small t-left" }, "Embeds from Youtube, Facebook, Instagram, Twitter, Tiktok, Soundcloud, Vimeo, Reddit, Linkedin, Medium, Spotify and Soundcloud are allowed.", -1)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Embed.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Embed.vue"],"sourcesContent":["<template>\n <div \n class=\"w-100 h-max-40r pd-medium bg-white radius-medium pos-relative\">\n \n <div \n v-if=\"prop.content\" \n v-html=\"prop.content\" \n class=\"flex-center constructor-iframe flex pos-relative\"\n />\n \n <div\n class=\"\" \n v-else\n >\n <Field \n v-model:field=\"embedCode\"\n type=\"textarea\" \n :placeholder=\"'Paste your embed code here'\" \n class=\"\n w-100\n
|
|
1
|
+
{"version":3,"file":"Embed.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Embed.vue"],"sourcesContent":["<template>\n <div \n class=\"w-100 h-max-40r pd-medium bg-white radius-medium pos-relative\">\n \n <div \n v-if=\"prop.content\" \n v-html=\"prop.content\" \n class=\"flex-center constructor-iframe flex pos-relative\"\n />\n \n <div\n class=\"\" \n v-else\n >\n <Field \n v-model:field=\"embedCode\"\n type=\"textarea\" \n :placeholder=\"'Paste your embed code here'\" \n class=\"\n w-100\n \n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n <div class=\"flex-v-center flex-nowrap flex gap-small\">\n \n <p class=\"p-small t-left\">Embeds from Youtube, Facebook, Instagram, Twitter, Tiktok, Soundcloud, Vimeo, Reddit, Linkedin, Medium, Spotify and Soundcloud are allowed.</p>\n <button \n @click=\"onComponentClick\"\n class=\"button-small bg-second t-white button\"\n >\n <span>Save</span>\n </button>\n </div>\n </div>\n <!-- <button v-if=\"prop.content\" @click=\"editEmbedCode\">Edit Embed Code</button> -->\n </div>\n</template>\n\n<style lang=\"scss\">\n.constructor-iframe {\n iframe { \n width: 100% !important;\n height: 100% !important;\n position: relative !important;\n }\n}\n</style>\n\n\n<script setup>\nimport { ref,onMounted } from 'vue';\n\nimport Field from '@martyrs/src/components/Field/Field.vue'\n\nconst embedCode = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction isValidEmbedCode(code) {\n const allowedSources = [\n /youtube\\.com/,\n /facebook\\.com/,\n /instagram\\.com/,\n /twitter\\.com/,\n /tiktok\\.com/,\n /soundcloud\\.com/,\n /vimeo\\.com/,\n /reddit\\.com/,\n /linkedin\\.com/,\n /medium\\.com/,\n /spotify\\.com/,\n ];\n return allowedSources.some(pattern => pattern.test(code));\n}\n\nonMounted(() => {\n if (props.prop.content?.includes('instagram.com') && window.instgrm) {\n window.instgrm.Embeds.process();\n }\n});\n\n\nfunction onComponentClick() {\n\n if (embedCode.value && isValidEmbedCode(embedCode.value)) {\n emit('input', embedCode.value);\n emit('updateBlock', props.prop, { content: embedCode.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\nfunction editEmbedCode() {\n let embedInput = prompt('Edit embed code:', prop.content);\n if (embedInput && isValidEmbedCode(embedInput)) {\n embedCode.value = embedInput;\n emit('input', embedCode.value);\n emit('updateBlock', props.prop, { content: embedCode.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA2DA,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAEb,aAAS,iBAAiB,MAAM;AAC9B,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACE,aAAO,eAAe,KAAK,aAAW,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC1D;AAEA,cAAU,MAAM;AACd,UAAI,MAAM,KAAK,SAAS,SAAS,eAAe,KAAK,OAAO,SAAS;AACnE,eAAO,QAAQ,OAAO,QAAO;AAAA,MAC/B;AAAA,IACF,CAAC;AAGD,aAAS,mBAAmB;AAE1B,UAAI,UAAU,SAAS,iBAAiB,UAAU,KAAK,GAAG;AACxD,aAAK,SAAS,UAAU,KAAK;AAC7B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,UAAU,OAAO;AAAA,MAC9D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -245,7 +245,7 @@ const _sfc_main = {
|
|
|
245
245
|
onKeydown: handleKeyDown,
|
|
246
246
|
tabindex: "0",
|
|
247
247
|
class: normalizeClass(["editable-div mn-b-thin", {
|
|
248
|
-
"t-main
|
|
248
|
+
"t-main fw-semi": __props.prop.type === "Link",
|
|
249
249
|
"h3": __props.prop.type === "H2"
|
|
250
250
|
}])
|
|
251
251
|
}, null, 34),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.vue2.js","sources":["../../../../../../../src/modules/constructor/components/elements/Textarea.vue"],"sourcesContent":["<template>\n <div>\n <div \n ref=\"editableDiv\"\n :contenteditable=\"true\"\n @input=\"handleInput\"\n @paste=\"handlePaste\"\n @keydown=\"handleKeyDown\"\n tabindex=\"0\"\n class=\"editable-div mn-b-thin\"\n :class=\"{\n 't-main t-semi': prop.type === 'Link',\n 'h3': prop.type === 'H2'\n }\"\n />\n <div v-if=\"isTextSelected\" class=\"formatting-bar\">\n <button @click=\"applyFormat('bold')\" title=\"Bold\"><b>B</b></button>\n <button @click=\"applyFormat('italic')\" title=\"Italic\"><i>I</i></button>\n <button @click=\"applyFormat('underline')\" title=\"Underline\"><u>U</u></button>\n <button @click=\"applyFormat('strikeThrough')\" title=\"Strikethrough\"><s>S</s></button>\n <button @click=\"createLink\" title=\"Insert Link\">🔗</button>\n <button @click=\"applyFormat('unlink')\" title=\"Remove Link\">⛓️💥</button>\n <button @click=\"applyFormat('justifyLeft')\" title=\"Align Left\">↲</button>\n <button @click=\"applyFormat('justifyCenter')\" title=\"Align Center\">↔</button>\n <button @click=\"applyFormat('justifyRight')\" title=\"Align Right\">↳</button>\n <button @click=\"applyFormat('insertUnorderedList')\" title=\"Bulleted List\">•</button>\n <button @click=\"applyFormat('insertOrderedList')\" title=\"Numbered List\">1.</button>\n <button @click=\"clearFormatting\" title=\"Clear Formatting\">🧹</button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, nextTick, onUpdated, onUnmounted, watch } from 'vue'\nimport DOMPurify from 'isomorphic-dompurify'\n\nconst sanitizeConfig = {\n ALLOWED_TAGS: ['b', 'i', 'u', 's', 'a', 'ul', 'ol', 'li', 'img', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'table', 'thead','tr','th'],\n ALLOWED_ATTR: ['href', 'target', 'src', 'alt'],\n ALLOWED_STYLES: ['text-align']\n}\n\nconst props = defineProps({\n modelValue: {\n type: String,\n default: ''\n },\n prop: {\n type: Object,\n required: true\n },\n component: Object,\n placeholder: String,\n index: Number,\n setFocus: Boolean\n})\n\nconst emit = defineEmits([\n 'update:modelValue', \n 'deleteBlock', \n 'updateBlock', \n 'addBlock'\n])\n\nconst editableDiv = ref(null)\nconst isTextSelected = ref(false)\nconst currentContent = ref('')\n\n// Обновляем содержимое при монтировании\nonMounted(() => {\n if (editableDiv.value) {\n if (props.modelValue) {\n editableDiv.value.innerHTML = props.modelValue\n currentContent.value = props.modelValue\n }\n }\n\n document.addEventListener('selectionchange', handleSelectionChange)\n \n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\n// // Отслеживаем изменения в modelValue и обновляем DOM, если они есть\n// watch(() => props.modelValue, (newValue) => {\n// if (editableDiv.value && newValue !== currentContent.value) {\n// editableDiv.value.innerHTML = newValue || ''\n// currentContent.value = newValue\n// }\n// }, { immediate: true })\n\nconst handleInput = (event) => {\n const sanitizedContent = sanitizeHTML(event.target.innerHTML)\n currentContent.value = sanitizedContent\n emit('update:modelValue', sanitizedContent)\n}\n// Улучшенная функция для извлечения нужных элементов из DOM-структуры\nconst extractUsefulContent = (node) => {\n const result = [];\n \n // Функция для определения, содержит ли узел только один из нужных нам тегов\n const containsOnlySingleImportantTag = (node) => {\n const importantElements = node.querySelectorAll('p, h1, h2, h3, h4, h5, h6, img');\n \n // Если найден только один важный элемент и нет текста непосредственно в узле\n if (importantElements.length === 1 && !Array.from(node.childNodes).some(child => \n child.nodeType === Node.TEXT_NODE && child.textContent.trim()\n )) {\n // Убедимся, что этот элемент не содержит других важных элементов\n return !importantElements[0].querySelector('p, h1, h2, h3, h4, h5, h6, img');\n }\n \n return false;\n };\n \n // Рекурсивно просматривает дерево и извлекает только нужные элементы\n const processNode = (node) => {\n // Если это текстовый узел с непустым содержимым\n if (node.nodeType === Node.TEXT_NODE) {\n if (node.textContent.trim()) {\n // Создаем p-элемент для текста без родителя\n const p = document.createElement('p');\n p.textContent = node.textContent;\n result.push(p);\n }\n return;\n }\n \n // Если это не элемент, пропускаем\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n \n // Проверяем, что это один из нужных тегов\n const tagName = node.nodeName.toLowerCase();\n \n if (['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img'].includes(tagName)) {\n // Если это нужный тег - добавляем в результат\n result.push(node.cloneNode(true));\n } else if (containsOnlySingleImportantTag(node)) {\n // Если div содержит только один важный элемент, добавляем этот элемент\n const importantElement = node.querySelector('p, h1, h2, h3, h4, h5, h6, img');\n result.push(importantElement.cloneNode(true));\n } else {\n // Если это div или другой контейнер - проходим по его дочерним узлам\n Array.from(node.childNodes).forEach(child => {\n processNode(child);\n });\n }\n };\n \n processNode(node);\n return result;\n};\n\nconst handlePaste = (event) => {\n event.preventDefault();\n const clipboardData = event.clipboardData || window.clipboardData;\n let pastedData = clipboardData.getData('text/html') || clipboardData.getData('text/plain');\n \n console.log('Raw pasted data:', pastedData);\n \n // Предварительная очистка через функцию sanitizeHTML\n const sanitizedContent = sanitizeHTML(pastedData);\n \n console.log('Sanitized content:', sanitizedContent);\n \n // Парсим очищенный HTML\n const parser = new DOMParser();\n const doc = parser.parseFromString(sanitizedContent, 'text/html');\n \n // Извлекаем полезное содержимое\n const extractedElements = extractUsefulContent(doc.body);\n \n console.log('Extracted elements:', extractedElements.map(el => el.outerHTML));\n \n if (extractedElements.length > 0) {\n // Вставляем каждый элемент как отдельный блок\n extractedElements.forEach((element, idx) => {\n const tagName = element.nodeName.toLowerCase();\n \n // Определяем тип блока в зависимости от тега\n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n // Для изображений сохраняем только src атрибут\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = 'H2'; // Используем H2 для всех заголовков, или можно настроить по-разному\n blockContent = element.innerHTML;\n } else {\n // Для p и других текстовых элементов\n blockContent = element.innerHTML;\n }\n \n if (idx === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.innerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + idx);\n }\n });\n } else {\n // Если после очистки ничего не осталось, вставляем как обычный текст\n const plainText = clipboardData.getData('text/plain');\n if (plainText.trim()) {\n // document.execCommand('insertText', false, plainText);\n handleInput({ target: editableDiv.value });\n }\n }\n};\n\n\n// Обновленная функция для обработки вставки и создания блоков\nconst handleBlockCreation = (element, index) => {\n const tagName = element.nodeName.toLowerCase();\n \n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = tagName.toUpperCase(); // H2, H3, etc.\n blockContent = element.innerHTML;\n } else {\n blockContent = element.innerHTML;\n }\n \n if (index === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.outerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + index);\n }\n};\n\nconst handleKeyDown = (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n const newBlockContent = extractContentAfterCursor(range)\n \n const sanitizedContent = sanitizeHTML(editableDiv.value.innerHTML)\n currentContent.value = sanitizedContent\n \n emit('update:modelValue', sanitizedContent)\n emit('addBlock', 'Textarea', newBlockContent, props.index + 1)\n } else if (event.key === 'Backspace' && editableDiv.value.innerHTML.trim() === \"\") {\n event.preventDefault()\n emit('deleteBlock', props.prop, { setCaretToEnd: true })\n }\n}\n\nconst extractContentAfterCursor = (range) => {\n const container = range.startContainer\n const cursorOffset = range.startOffset\n\n if (container.nodeType === Node.TEXT_NODE) {\n const textAfterCursor = container.textContent.slice(cursorOffset)\n container.textContent = container.textContent.slice(0, cursorOffset)\n return textAfterCursor\n } else if (container.nodeType === Node.ELEMENT_NODE) {\n const tempDiv = document.createElement('div')\n const childNodes = Array.from(container.childNodes)\n let foundCursor = false\n \n childNodes.forEach((node, index) => {\n if (index === cursorOffset) foundCursor = true\n if (foundCursor) tempDiv.appendChild(node.cloneNode(true))\n })\n \n while (container.childNodes[cursorOffset]) {\n container.removeChild(container.childNodes[cursorOffset])\n }\n \n return tempDiv.innerHTML\n }\n return ''\n}\n\nconst handleSelectionChange = () => {\n if (document.activeElement === editableDiv.value) {\n const selection = window.getSelection()\n isTextSelected.value = selection.rangeCount > 0 && selection.toString().length > 0\n } else {\n isTextSelected.value = false\n }\n}\n\nconst focus = (options = {}) => {\n nextTick(() => {\n editableDiv.value.focus()\n \n const shouldSetCaretToEnd = options.setCaretToEnd || (props.prop && props.prop.setCaretToEnd)\n if (props.setFocus === true && !shouldSetCaretToEnd) {\n const range = document.createRange()\n range.setStart(editableDiv.value, 0)\n range.collapse(true)\n const selection = window.getSelection()\n selection.removeAllRanges()\n selection.addRange(range)\n } else {\n setCaretToEnd(editableDiv.value)\n }\n \n emit('updateBlock', props.prop, { setFocus: false, setCaretToEnd: false })\n })\n}\n\nconst sanitizeHTML = (html) => {\n return DOMPurify.sanitize(html, sanitizeConfig)\n}\n\nconst setCaretToEnd = (element) => {\n const range = document.createRange()\n const selection = window.getSelection()\n range.selectNodeContents(element)\n range.collapse(false)\n selection.removeAllRanges()\n selection.addRange(range)\n}\n\nconst applyFormat = (format) => {\n document.execCommand(format, false, null)\n handleInput({ target: editableDiv.value })\n}\n\nconst createLink = () => {\n const url = prompt('Enter the URL:')\n if (url) {\n document.execCommand('createLink', false, url)\n handleInput({ target: editableDiv.value })\n }\n}\n\nconst clearFormatting = () => {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const selectedContent = range.cloneContents()\n const div = document.createElement('div')\n div.appendChild(selectedContent)\n const plainText = div.innerText\n document.execCommand('insertText', false, plainText)\n handleInput({ target: editableDiv.value })\n }\n}\n\nonUpdated(() => {\n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('selectionchange', handleSelectionChange)\n})\n</script>\n\n<style lang=\"scss\">\n.editable-div {\n width: 100%;\n min-height: 1rem;\n background-color: transparent;\n outline: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n \n &:empty::before {\n content: attr(placeholder);\n color: #999;\n }\n \n &:focus {\n border: 0;\n }\n}\n\n.formatting-bar {\n display: flex;\n gap: 5px;\n margin-top: 5px;\n padding: 5px;\n background-color: #f5f5f5;\n border-radius: 4px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n \n button {\n padding: 4px 8px;\n background-color: white;\n border: 1px solid #ddd;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n min-width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n \n &:hover {\n background-color: #e0e0e0;\n }\n \n &:active {\n background-color: #d0d0d0;\n }\n }\n}\n</style>"],"names":["node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Textarea.vue2.js","sources":["../../../../../../../src/modules/constructor/components/elements/Textarea.vue"],"sourcesContent":["<template>\n <div>\n <div \n ref=\"editableDiv\"\n :contenteditable=\"true\"\n @input=\"handleInput\"\n @paste=\"handlePaste\"\n @keydown=\"handleKeyDown\"\n tabindex=\"0\"\n class=\"editable-div mn-b-thin\"\n :class=\"{\n 't-main fw-semi': prop.type === 'Link',\n 'h3': prop.type === 'H2'\n }\"\n />\n <div v-if=\"isTextSelected\" class=\"formatting-bar\">\n <button @click=\"applyFormat('bold')\" title=\"Bold\"><b>B</b></button>\n <button @click=\"applyFormat('italic')\" title=\"Italic\"><i>I</i></button>\n <button @click=\"applyFormat('underline')\" title=\"Underline\"><u>U</u></button>\n <button @click=\"applyFormat('strikeThrough')\" title=\"Strikethrough\"><s>S</s></button>\n <button @click=\"createLink\" title=\"Insert Link\">🔗</button>\n <button @click=\"applyFormat('unlink')\" title=\"Remove Link\">⛓️💥</button>\n <button @click=\"applyFormat('justifyLeft')\" title=\"Align Left\">↲</button>\n <button @click=\"applyFormat('justifyCenter')\" title=\"Align Center\">↔</button>\n <button @click=\"applyFormat('justifyRight')\" title=\"Align Right\">↳</button>\n <button @click=\"applyFormat('insertUnorderedList')\" title=\"Bulleted List\">•</button>\n <button @click=\"applyFormat('insertOrderedList')\" title=\"Numbered List\">1.</button>\n <button @click=\"clearFormatting\" title=\"Clear Formatting\">🧹</button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, nextTick, onUpdated, onUnmounted, watch } from 'vue'\nimport DOMPurify from 'isomorphic-dompurify'\n\nconst sanitizeConfig = {\n ALLOWED_TAGS: ['b', 'i', 'u', 's', 'a', 'ul', 'ol', 'li', 'img', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'table', 'thead','tr','th'],\n ALLOWED_ATTR: ['href', 'target', 'src', 'alt'],\n ALLOWED_STYLES: ['text-align']\n}\n\nconst props = defineProps({\n modelValue: {\n type: String,\n default: ''\n },\n prop: {\n type: Object,\n required: true\n },\n component: Object,\n placeholder: String,\n index: Number,\n setFocus: Boolean\n})\n\nconst emit = defineEmits([\n 'update:modelValue', \n 'deleteBlock', \n 'updateBlock', \n 'addBlock'\n])\n\nconst editableDiv = ref(null)\nconst isTextSelected = ref(false)\nconst currentContent = ref('')\n\n// Обновляем содержимое при монтировании\nonMounted(() => {\n if (editableDiv.value) {\n if (props.modelValue) {\n editableDiv.value.innerHTML = props.modelValue\n currentContent.value = props.modelValue\n }\n }\n\n document.addEventListener('selectionchange', handleSelectionChange)\n \n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\n// // Отслеживаем изменения в modelValue и обновляем DOM, если они есть\n// watch(() => props.modelValue, (newValue) => {\n// if (editableDiv.value && newValue !== currentContent.value) {\n// editableDiv.value.innerHTML = newValue || ''\n// currentContent.value = newValue\n// }\n// }, { immediate: true })\n\nconst handleInput = (event) => {\n const sanitizedContent = sanitizeHTML(event.target.innerHTML)\n currentContent.value = sanitizedContent\n emit('update:modelValue', sanitizedContent)\n}\n// Улучшенная функция для извлечения нужных элементов из DOM-структуры\nconst extractUsefulContent = (node) => {\n const result = [];\n \n // Функция для определения, содержит ли узел только один из нужных нам тегов\n const containsOnlySingleImportantTag = (node) => {\n const importantElements = node.querySelectorAll('p, h1, h2, h3, h4, h5, h6, img');\n \n // Если найден только один важный элемент и нет текста непосредственно в узле\n if (importantElements.length === 1 && !Array.from(node.childNodes).some(child => \n child.nodeType === Node.TEXT_NODE && child.textContent.trim()\n )) {\n // Убедимся, что этот элемент не содержит других важных элементов\n return !importantElements[0].querySelector('p, h1, h2, h3, h4, h5, h6, img');\n }\n \n return false;\n };\n \n // Рекурсивно просматривает дерево и извлекает только нужные элементы\n const processNode = (node) => {\n // Если это текстовый узел с непустым содержимым\n if (node.nodeType === Node.TEXT_NODE) {\n if (node.textContent.trim()) {\n // Создаем p-элемент для текста без родителя\n const p = document.createElement('p');\n p.textContent = node.textContent;\n result.push(p);\n }\n return;\n }\n \n // Если это не элемент, пропускаем\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n \n // Проверяем, что это один из нужных тегов\n const tagName = node.nodeName.toLowerCase();\n \n if (['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img'].includes(tagName)) {\n // Если это нужный тег - добавляем в результат\n result.push(node.cloneNode(true));\n } else if (containsOnlySingleImportantTag(node)) {\n // Если div содержит только один важный элемент, добавляем этот элемент\n const importantElement = node.querySelector('p, h1, h2, h3, h4, h5, h6, img');\n result.push(importantElement.cloneNode(true));\n } else {\n // Если это div или другой контейнер - проходим по его дочерним узлам\n Array.from(node.childNodes).forEach(child => {\n processNode(child);\n });\n }\n };\n \n processNode(node);\n return result;\n};\n\nconst handlePaste = (event) => {\n event.preventDefault();\n const clipboardData = event.clipboardData || window.clipboardData;\n let pastedData = clipboardData.getData('text/html') || clipboardData.getData('text/plain');\n \n console.log('Raw pasted data:', pastedData);\n \n // Предварительная очистка через функцию sanitizeHTML\n const sanitizedContent = sanitizeHTML(pastedData);\n \n console.log('Sanitized content:', sanitizedContent);\n \n // Парсим очищенный HTML\n const parser = new DOMParser();\n const doc = parser.parseFromString(sanitizedContent, 'text/html');\n \n // Извлекаем полезное содержимое\n const extractedElements = extractUsefulContent(doc.body);\n \n console.log('Extracted elements:', extractedElements.map(el => el.outerHTML));\n \n if (extractedElements.length > 0) {\n // Вставляем каждый элемент как отдельный блок\n extractedElements.forEach((element, idx) => {\n const tagName = element.nodeName.toLowerCase();\n \n // Определяем тип блока в зависимости от тега\n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n // Для изображений сохраняем только src атрибут\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = 'H2'; // Используем H2 для всех заголовков, или можно настроить по-разному\n blockContent = element.innerHTML;\n } else {\n // Для p и других текстовых элементов\n blockContent = element.innerHTML;\n }\n \n if (idx === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.innerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + idx);\n }\n });\n } else {\n // Если после очистки ничего не осталось, вставляем как обычный текст\n const plainText = clipboardData.getData('text/plain');\n if (plainText.trim()) {\n // document.execCommand('insertText', false, plainText);\n handleInput({ target: editableDiv.value });\n }\n }\n};\n\n\n// Обновленная функция для обработки вставки и создания блоков\nconst handleBlockCreation = (element, index) => {\n const tagName = element.nodeName.toLowerCase();\n \n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = tagName.toUpperCase(); // H2, H3, etc.\n blockContent = element.innerHTML;\n } else {\n blockContent = element.innerHTML;\n }\n \n if (index === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.outerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + index);\n }\n};\n\nconst handleKeyDown = (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n const newBlockContent = extractContentAfterCursor(range)\n \n const sanitizedContent = sanitizeHTML(editableDiv.value.innerHTML)\n currentContent.value = sanitizedContent\n \n emit('update:modelValue', sanitizedContent)\n emit('addBlock', 'Textarea', newBlockContent, props.index + 1)\n } else if (event.key === 'Backspace' && editableDiv.value.innerHTML.trim() === \"\") {\n event.preventDefault()\n emit('deleteBlock', props.prop, { setCaretToEnd: true })\n }\n}\n\nconst extractContentAfterCursor = (range) => {\n const container = range.startContainer\n const cursorOffset = range.startOffset\n\n if (container.nodeType === Node.TEXT_NODE) {\n const textAfterCursor = container.textContent.slice(cursorOffset)\n container.textContent = container.textContent.slice(0, cursorOffset)\n return textAfterCursor\n } else if (container.nodeType === Node.ELEMENT_NODE) {\n const tempDiv = document.createElement('div')\n const childNodes = Array.from(container.childNodes)\n let foundCursor = false\n \n childNodes.forEach((node, index) => {\n if (index === cursorOffset) foundCursor = true\n if (foundCursor) tempDiv.appendChild(node.cloneNode(true))\n })\n \n while (container.childNodes[cursorOffset]) {\n container.removeChild(container.childNodes[cursorOffset])\n }\n \n return tempDiv.innerHTML\n }\n return ''\n}\n\nconst handleSelectionChange = () => {\n if (document.activeElement === editableDiv.value) {\n const selection = window.getSelection()\n isTextSelected.value = selection.rangeCount > 0 && selection.toString().length > 0\n } else {\n isTextSelected.value = false\n }\n}\n\nconst focus = (options = {}) => {\n nextTick(() => {\n editableDiv.value.focus()\n \n const shouldSetCaretToEnd = options.setCaretToEnd || (props.prop && props.prop.setCaretToEnd)\n if (props.setFocus === true && !shouldSetCaretToEnd) {\n const range = document.createRange()\n range.setStart(editableDiv.value, 0)\n range.collapse(true)\n const selection = window.getSelection()\n selection.removeAllRanges()\n selection.addRange(range)\n } else {\n setCaretToEnd(editableDiv.value)\n }\n \n emit('updateBlock', props.prop, { setFocus: false, setCaretToEnd: false })\n })\n}\n\nconst sanitizeHTML = (html) => {\n return DOMPurify.sanitize(html, sanitizeConfig)\n}\n\nconst setCaretToEnd = (element) => {\n const range = document.createRange()\n const selection = window.getSelection()\n range.selectNodeContents(element)\n range.collapse(false)\n selection.removeAllRanges()\n selection.addRange(range)\n}\n\nconst applyFormat = (format) => {\n document.execCommand(format, false, null)\n handleInput({ target: editableDiv.value })\n}\n\nconst createLink = () => {\n const url = prompt('Enter the URL:')\n if (url) {\n document.execCommand('createLink', false, url)\n handleInput({ target: editableDiv.value })\n }\n}\n\nconst clearFormatting = () => {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const selectedContent = range.cloneContents()\n const div = document.createElement('div')\n div.appendChild(selectedContent)\n const plainText = div.innerText\n document.execCommand('insertText', false, plainText)\n handleInput({ target: editableDiv.value })\n }\n}\n\nonUpdated(() => {\n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('selectionchange', handleSelectionChange)\n})\n</script>\n\n<style lang=\"scss\">\n.editable-div {\n width: 100%;\n min-height: 1rem;\n background-color: transparent;\n outline: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n \n &:empty::before {\n content: attr(placeholder);\n color: #999;\n }\n \n &:focus {\n border: 0;\n }\n}\n\n.formatting-bar {\n display: flex;\n gap: 5px;\n margin-top: 5px;\n padding: 5px;\n background-color: #f5f5f5;\n border-radius: 4px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n \n button {\n padding: 4px 8px;\n background-color: white;\n border: 1px solid #ddd;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n min-width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n \n &:hover {\n background-color: #e0e0e0;\n }\n \n &:active {\n background-color: #d0d0d0;\n }\n }\n}\n</style>"],"names":["node"],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@ const _sfc_main = {
|
|
|
50
50
|
onFileChange: onComponentSave,
|
|
51
51
|
type: "file",
|
|
52
52
|
placeholder: "Enter embed code",
|
|
53
|
-
class: "w-100 br-
|
|
53
|
+
class: "w-100 br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
|
|
54
54
|
}, null, 8, ["field"])
|
|
55
55
|
]))
|
|
56
56
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Video.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Video.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 pd-medium bg-black t-white radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"audio/mp3\">\n Your browser does not support the audio tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"videoUrl\"\n @file-change=\"onComponentSave\"\n type=\"file\" \n :placeholder=\"'Enter embed code'\" \n class=\"\n w-100\n
|
|
1
|
+
{"version":3,"file":"Video.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Video.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 pd-medium bg-black t-white radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"audio/mp3\">\n Your browser does not support the audio tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"videoUrl\"\n @file-change=\"onComponentSave\"\n type=\"file\" \n :placeholder=\"'Enter embed code'\" \n class=\"\n w-100\n \n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Upload from '@martyrs/src/components/Upload/Upload.vue'\n\nconst videoUrl = ref(null);\nconst fileInput = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction updateBlock(updatedBlock) {\n const index = post.value.content.findIndex(block => block === updatedBlock);\n if (index !== -1) {\n post.value.content.splice(index, 1, updatedBlock);\n }\n}\n\n\nfunction onComponentSave(url) {\n videoUrl.value = url\n\n if (videoUrl.value ) {\n emit('input', videoUrl.value);\n emit('updateBlock', props.prop, { content: videoUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,WAAW,IAAI,IAAI;AACP,QAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAUb,aAAS,gBAAgB,KAAK;AAC5B,eAAS,QAAQ;AAEjB,UAAI,SAAS,OAAQ;AACnB,aAAK,SAAS,SAAS,KAAK;AAC5B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,SAAS,OAAO;AAAA,MAC7D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -6,7 +6,7 @@ import _sfc_main$6 from "../elements/Card.vue.js";
|
|
|
6
6
|
import _sfc_main$3 from "../elements/Audio.vue.js";
|
|
7
7
|
import _sfc_main$2 from "../elements/Video.vue.js";
|
|
8
8
|
import _sfc_main$1 from "../../../../components/Draggable/Draggable.vue.js";
|
|
9
|
-
import v4 from "
|
|
9
|
+
import v4 from "../../../../../node_modules/uuid/dist/esm-browser/v4.js";
|
|
10
10
|
const _hoisted_1 = ["data-index"];
|
|
11
11
|
const _hoisted_2 = ["onMouseover"];
|
|
12
12
|
const _hoisted_3 = {
|
|
@@ -172,7 +172,7 @@ function createUniversalApp({
|
|
|
172
172
|
}
|
|
173
173
|
initialize();
|
|
174
174
|
}
|
|
175
|
-
async function renderApp({ url, cookies, languages, ssrContext }) {
|
|
175
|
+
async function renderApp({ url, cookies, headers, languages, ssrContext }) {
|
|
176
176
|
const { app, router, store, i18n, meta, moduleManager: moduleManager2 } = await createApp$1();
|
|
177
177
|
if (typeof window === "undefined") {
|
|
178
178
|
const { setSSRStore } = await import("../store/core.store.js");
|
|
@@ -203,6 +203,7 @@ function createUniversalApp({
|
|
|
203
203
|
const result = await appRenderer.render({
|
|
204
204
|
url,
|
|
205
205
|
cookies,
|
|
206
|
+
headers,
|
|
206
207
|
createApp: () => ({ app, router, store, i18n, meta }),
|
|
207
208
|
ssrContext
|
|
208
209
|
});
|