@ozdao/martyrs 0.2.469 → 0.2.470

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/{Media-DwVcRIAX.mjs → Media-C4Ges_Sd.mjs} +1 -1
  2. package/dist/{Media-DCGbUujy.js → Media-CR0V1zvB.js} +1 -1
  3. package/dist/chats.server.js +14 -13
  4. package/dist/chats.server.mjs +14 -13
  5. package/dist/globals.server.js +20 -12
  6. package/dist/globals.server.mjs +20 -12
  7. package/dist/{main-DEHjtgLs.mjs → main-CTcal9qN.mjs} +900 -884
  8. package/dist/{main-UVdexuMN.js → main-CsZAG5Wz.js} +5 -5
  9. package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +2 -2
  10. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
  11. package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +2 -2
  12. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
  13. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
  14. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
  15. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  16. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs.map → Dropdown.vue2.js.map} +1 -1
  17. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
  18. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  19. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  20. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  21. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  22. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  23. package/dist/martyrs/src/components/Popup/{Popup.vue2.cjs → Popup.vue.cjs} +2 -2
  24. package/dist/martyrs/src/components/Popup/{Popup.vue2.js.map → Popup.vue.cjs.map} +1 -1
  25. package/dist/martyrs/src/components/Popup/{Popup.vue2.js → Popup.vue.js} +2 -2
  26. package/dist/martyrs/src/components/Popup/Popup.vue.js.map +1 -0
  27. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
  28. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
  29. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  30. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
  31. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
  32. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  33. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  34. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  35. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  36. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  37. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  38. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  39. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  40. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  46. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  49. package/dist/martyrs/src/modules/chats/store/chat.store.cjs +47 -16
  50. package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
  51. package/dist/martyrs/src/modules/chats/store/chat.store.js +47 -16
  52. package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
  53. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +2 -2
  54. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  55. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +2 -2
  56. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  57. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs.map +1 -1
  59. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js +1 -1
  60. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +6 -3
  62. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
  63. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +6 -3
  64. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  65. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +4 -4
  66. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs.map +1 -1
  67. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +4 -4
  68. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  69. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +1 -1
  71. package/dist/martyrs/src/modules/constructor/components/elements/VideoPlayer.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/constructor/components/elements/VideoPlayer.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/constructor/components/elements/VideoPlayer.vue.js +1 -1
  74. package/dist/martyrs/src/modules/constructor/components/elements/VideoPlayer.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs +9 -9
  76. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs.map +1 -1
  77. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +9 -9
  78. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
  81. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  82. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs.map +1 -1
  83. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  84. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
  85. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  87. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
  88. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  90. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  91. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  93. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +1 -1
  95. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  98. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  99. package/dist/martyrs/src/modules/globals/globals.client.cjs +0 -9
  100. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/globals/globals.client.js +0 -9
  102. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  103. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs +40 -97
  104. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
  105. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js +40 -97
  106. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
  107. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  109. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  111. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  113. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  115. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  117. package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.js +1 -1
  119. package/dist/martyrs/src/modules/icons/skeletons/SkeletonBlogpost.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/icons/skeletons/SkeletonBlogpost.vue.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/icons/skeletons/SkeletonBlogpost.vue.js +1 -1
  122. package/dist/martyrs/src/modules/icons/skeletons/SkeletonBlogpost.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/notifications/notifications.client.cjs +35 -9
  124. package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
  125. package/dist/martyrs/src/modules/notifications/notifications.client.js +35 -9
  126. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  127. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  129. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
  130. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  131. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  133. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  135. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  137. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  138. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  139. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +3 -3
  140. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +3 -3
  141. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +2 -2
  142. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
  143. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  145. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  146. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  147. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  149. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
  150. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
  151. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  153. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  154. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  155. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  157. package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.js +1 -1
  159. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  160. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  161. package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js +1 -1
  163. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  165. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  166. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  167. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  168. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  169. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  170. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  171. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  173. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  174. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  175. package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.cjs +1 -1
  176. package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.js +1 -1
  177. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  178. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  179. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
  180. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  181. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  182. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  183. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
  184. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
  185. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  186. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  187. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  188. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  189. package/dist/martyrs.cjs.js +1 -1
  190. package/dist/martyrs.css +1 -1
  191. package/dist/martyrs.es.js +1 -1
  192. package/dist/notifications.server.js +69 -13
  193. package/dist/notifications.server.mjs +69 -13
  194. package/dist/orders.server.js +1 -0
  195. package/dist/orders.server.mjs +1 -0
  196. package/package.json +1 -1
  197. package/src/components/Shader/Shader.vue +44 -25
  198. package/src/modules/chats/routes/chats.routes.js +21 -17
  199. package/src/modules/chats/store/chat.store.js +55 -28
  200. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  201. package/src/modules/community/components/pages/Blog.vue +1 -1
  202. package/src/modules/community/components/pages/BlogPost.vue +1 -0
  203. package/src/modules/community/components/pages/CreateBlogPost.vue +3 -3
  204. package/src/modules/constructor/components/elements/VideoPlayer.vue +1 -1
  205. package/src/modules/constructor/components/sections/Constructor.vue +9 -9
  206. package/src/modules/events/components/pages/EditEvent.vue +1 -1
  207. package/src/modules/globals/controllers/classes/globals.websocket.js +29 -21
  208. package/src/modules/globals/globals.client.js +0 -12
  209. package/src/modules/globals/views/classes/globals.websocket.js +46 -146
  210. package/src/modules/icons/skeletons/SkeletonBlogpost.vue +2 -2
  211. package/src/modules/notifications/controllers/notifications.controller.js +2 -2
  212. package/src/modules/notifications/notifications.client.js +57 -19
  213. package/src/modules/notifications/notifications.server.js +3 -1
  214. package/src/modules/notifications/routes/notifications.routes.js +2 -2
  215. package/src/modules/notifications/services/notification.service.js +34 -15
  216. package/src/modules/notifications/services/web-push.service.js +7 -6
  217. package/src/modules/orders/controllers/orders.controller.js +2 -0
  218. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
  219. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
  220. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
  221. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  222. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  223. package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +0 -1
  224. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  225. package/src/modules/notifications/notifications2.client.js +0 -256
  226. package/src/modules/notifications/services/websocket.service.js +0 -100
@@ -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 h-100 pos-relative\"\n >\n <section \n style=\"min-height: 100%;\"\n class=\"w-100 bg-white pd-big radius-medium\"\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-thin 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 <a v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\">Delete</a>\n <a @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\">To Drafts</a>\n <a @click=\"openPulicationPopup()\" class=\"mn-l-thin bg-black t-white button\">Publish</a>\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-thin\">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-thin\">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 FieldTags from '@martyrs/src/components/FieldTags/FieldTags.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/globals/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'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations'\n \nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/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 <a v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\">Delete</a>\n <a @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\">To Drafts</a>\n <a @click=\"openPulicationPopup()\" class=\"mn-l-thin bg-black t-white button\">Publish</a>\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-thin\">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-thin\">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 FieldTags from '@martyrs/src/components/FieldTags/FieldTags.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/globals/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'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations'\n \nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/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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"}
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
5
5
  ;/* empty css */
6
- ;/* empty css */
6
+ ;/* empty css */
7
7
  ;/* empty css */
8
8
  ;/* empty css */
9
9
  const Slider_native = require("../../../../components/Slider/Slider.native.vue.cjs");
@@ -1,7 +1,7 @@
1
1
  import { createBlock, openBlock, withCtx } from "vue";
2
2
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
3
3
  /* empty css */
4
- /* empty css */
4
+ /* empty css */
5
5
  /* empty css */
6
6
  /* empty css */
7
7
  import SliderNative from "../../../../components/Slider/Slider.native.vue.js";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  require("axios");
5
- const _hoisted_1 = { class: "mn-b-thin w-100 pd-medium bg-black radius-medium" };
5
+ const _hoisted_1 = { class: "mn-b-thin w-100 o-hidden bg-black radius-medium" };
6
6
  const _hoisted_2 = {
7
7
  key: 0,
8
8
  class: "flex-center flex"
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.vue.cjs","sources":["../../../../../../../src/modules/constructor/components/elements/VideoPlayer.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 pd-medium bg-black radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <video 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 </video>\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 imageUrl = 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 isValidEmbedCode(code) {\n const allowedSources = [/youtube\\.com/, /soundcloud\\.com/, /vimeo\\.com/];\n return allowedSources.some(pattern => pattern.test(code));\n}\n\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 console.log(imageUrl.value )\n\n imageUrl.value = url\n\n if (imageUrl.value ) {\n emit('input', imageUrl.value);\n emit('updateBlock', props.prop, { content: imageUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>\n\n"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmBiBA,QAAAA,IAAI,IAAI;AACPA,QAAAA,IAAI,IAAI;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"VideoPlayer.vue.cjs","sources":["../../../../../../../src/modules/constructor/components/elements/VideoPlayer.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 o-hidden bg-black radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <video 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 </video>\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 imageUrl = 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 isValidEmbedCode(code) {\n const allowedSources = [/youtube\\.com/, /soundcloud\\.com/, /vimeo\\.com/];\n return allowedSources.some(pattern => pattern.test(code));\n}\n\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 console.log(imageUrl.value )\n\n imageUrl.value = url\n\n if (imageUrl.value ) {\n emit('input', imageUrl.value);\n emit('updateBlock', props.prop, { content: imageUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>\n\n"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAmBiBA,QAAAA,IAAI,IAAI;AACPA,QAAAA,IAAI,IAAI;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, createElementBlock, openBlock, createCommentVNode, createElementVNode, createTextVNode } from "vue";
2
2
  import "axios";
3
- const _hoisted_1 = { class: "mn-b-thin w-100 pd-medium bg-black radius-medium" };
3
+ const _hoisted_1 = { class: "mn-b-thin w-100 o-hidden bg-black radius-medium" };
4
4
  const _hoisted_2 = {
5
5
  key: 0,
6
6
  class: "flex-center flex"
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/VideoPlayer.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 pd-medium bg-black radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <video 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 </video>\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 imageUrl = 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 isValidEmbedCode(code) {\n const allowedSources = [/youtube\\.com/, /soundcloud\\.com/, /vimeo\\.com/];\n return allowedSources.some(pattern => pattern.test(code));\n}\n\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 console.log(imageUrl.value )\n\n imageUrl.value = url\n\n if (imageUrl.value ) {\n emit('input', imageUrl.value);\n emit('updateBlock', props.prop, { content: imageUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmBiB,QAAI,IAAI;AACP,QAAI,IAAI;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"VideoPlayer.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/VideoPlayer.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 o-hidden bg-black radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <video 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 </video>\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 imageUrl = 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 isValidEmbedCode(code) {\n const allowedSources = [/youtube\\.com/, /soundcloud\\.com/, /vimeo\\.com/];\n return allowedSources.some(pattern => pattern.test(code));\n}\n\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 console.log(imageUrl.value )\n\n imageUrl.value = url\n\n if (imageUrl.value ) {\n emit('input', imageUrl.value);\n emit('updateBlock', props.prop, { content: imageUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmBiB,QAAI,IAAI;AACP,QAAI,IAAI;;;;;;;;;;;;;;;;"}
@@ -18,7 +18,7 @@ const _hoisted_3 = {
18
18
  };
19
19
  const _hoisted_4 = {
20
20
  key: 0,
21
- class: "z-index-5 radius-thin pd-thin bg-light w-max mn-b-small flex-nowrap flex-column flex"
21
+ class: "z-index-5 radius-thin pd-thin bg-white w-max mn-b-small flex-nowrap flex-column flex"
22
22
  };
23
23
  const _hoisted_5 = ["onClick"];
24
24
  const _hoisted_6 = ["onClick"];
@@ -147,37 +147,37 @@ const _sfc_main = {
147
147
  showControls.value === index ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
148
148
  vue.createElementVNode("button", {
149
149
  onClick: _cache[0] || (_cache[0] = ($event) => showMenu.value = !showMenu.value),
150
- class: "mn-b-small cursor-pointer w-100 i-semi bg-light radius-thin"
150
+ class: "mn-b-small cursor-pointer w-100 i-semi bg-white radius-thin"
151
151
  }, vue.toDisplayString(block.content ? "⋯" : "+"), 1),
152
152
  showMenu.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
153
153
  index !== 0 ? (vue.openBlock(), vue.createElementBlock("span", {
154
154
  key: 0,
155
155
  onClick: ($event) => handleDeleteBlock(block),
156
- class: "mn-b-thin w-max t-red bg-light button-small button"
156
+ class: "mn-b-thin w-max t-red bg-white button-small button"
157
157
  }, " Remove ", 8, _hoisted_5)) : vue.createCommentVNode("", true),
158
158
  vue.createElementVNode("span", {
159
159
  onClick: ($event) => handleAddBlock("ImageUpload", "", index),
160
- class: "mn-b-thin w-max t-black bg-light button-small button"
160
+ class: "mn-b-thin w-max t-black bg-white button-small button"
161
161
  }, " Add Image ", 8, _hoisted_6),
162
162
  vue.createElementVNode("span", {
163
163
  onClick: ($event) => handleAddBlock("H2", "", index),
164
- class: "w-max button-small t-black bg-light button"
164
+ class: "w-max button-small t-black bg-white button"
165
165
  }, " Add Title ", 8, _hoisted_7),
166
166
  vue.createElementVNode("span", {
167
167
  onClick: ($event) => handleAddBlock("Card", { photo: "", title: "", subtitle: "" }, index),
168
- class: "w-max button-small t-black bg-light button"
168
+ class: "w-max button-small t-black bg-white button"
169
169
  }, " Add Card ", 8, _hoisted_8),
170
170
  vue.createElementVNode("span", {
171
171
  onClick: ($event) => handleAddBlock("Embed", "", index),
172
- class: "w-max button-small t-black bg-light button"
172
+ class: "w-max button-small t-black bg-white button"
173
173
  }, " Add Embed ", 8, _hoisted_9),
174
174
  vue.createElementVNode("span", {
175
175
  onClick: ($event) => handleAddBlock("Audio", "", index),
176
- class: "w-max button-small t-black bg-light button"
176
+ class: "w-max button-small t-black bg-white button"
177
177
  }, " Add Audio ", 8, _hoisted_10),
178
178
  vue.createElementVNode("span", {
179
179
  onClick: ($event) => handleAddBlock("Video", "", index),
180
- class: "w-max button-small t-black bg-light button"
180
+ class: "w-max button-small t-black bg-white button"
181
181
  }, " Add Video ", 8, _hoisted_11)
182
182
  ])) : vue.createCommentVNode("", true)
183
183
  ])) : vue.createCommentVNode("", true)
@@ -1 +1 @@
1
- {"version":3,"file":"Constructor.vue.cjs","sources":["../../../../../../../src/modules/constructor/components/sections/Constructor.vue"],"sourcesContent":["<template>\n <!-- Content -->\n <section>\n <Draggable \n :list=\"post.content\" \n @update:list=\"updateContent\" \n @start=\"handleDragStart\" \n @end=\"handleDragEnd\" \n disabledClass=\"no-drag\"\n >\n <div\n v-for=\"(block, index) in post.content\"\n :key=\"block.id\" \n :data-index=\"index\"\n draggable=\"true\"\n class=\"draggable-item pos-relative\"\n >\n <div \n @mouseover=\"showControls = index, showMenu = false\"\n class=\"pos-relative w-full h-full\"\n >\n <component\n v-model=\"block.content\"\n :is=\"ComponentMap[block.type]\"\n :index=\"index\"\n :component=\"block\"\n :prop=\"block\"\n :placeholder=\"block.placeholder\"\n :class=\"block.class\"\n :setFocus=\"block.setFocus\"\n @deleteBlock=\"handleDeleteBlock\"\n @addBlock=\"handleAddBlock\"\n @updateBlock=\"handleUpdateBlock\"\n />\n </div>\n\n <transition name=\"fade\">\n <div \n v-if=\"showControls === index\" \n class=\"pos-absolute z-index-4 i-semi\" \n style=\"right: calc(100% + 0.5rem); top: calc(50% - 1.125rem);\"\n >\n <button \n @click=\"showMenu = !showMenu\" \n class=\"mn-b-small cursor-pointer w-100 i-semi bg-light radius-thin\"\n >\n {{ block.content ? '⋯' : '+' }}\n </button>\n \n <div \n v-if=\"showMenu\" \n class=\"z-index-5 radius-thin pd-thin bg-light w-max mn-b-small flex-nowrap flex-column flex\"\n >\n <span \n v-if=\"index !== 0\"\n @click=\"handleDeleteBlock(block)\" \n class=\"mn-b-thin w-max t-red bg-light button-small button\"\n >\n Remove\n </span>\n <span \n @click=\"handleAddBlock('ImageUpload', '', index)\" \n class=\"mn-b-thin w-max t-black bg-light button-small button\"\n >\n Add Image\n </span>\n <span \n @click=\"handleAddBlock('H2', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Title\n </span>\n <span \n @click=\"handleAddBlock('Card', { photo: '', title: '', subtitle: '', }, index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Card\n </span>\n <span \n @click=\"handleAddBlock('Embed', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Embed\n </span>\n <span \n @click=\"handleAddBlock('Audio', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Audio\n </span>\n <span \n @click=\"handleAddBlock('Video', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Video\n </span>\n </div>\n </div>\n </transition>\n </div>\n </Draggable>\n </section>\n</template>\n\n\n<script setup>\nimport Textarea from '../elements/Textarea.vue';\nimport ImageUpload from '../elements/ImageUpload.vue';\nimport Embed from '../elements/Embed.vue';\nimport Card from '../elements/Card.vue';\nimport Audio from '../elements/Audio.vue';\nimport Video from '../elements/Video.vue';\n\nimport Draggable from '@martyrs/src/components/Draggable/Draggable.vue';\n\nimport { ref, onMounted, watchEffect, computed } from 'vue';\nimport { v4 as uuidv4 } from 'uuid'\n\nconst props = defineProps({\n content: {\n type: Array\n },\n notitle: {\n type: Boolean\n }\n});\n\nconst emits = defineEmits(['update'])\n\nlet publics = ref(null);\nlet post = ref(null); \n\nconst showControls = ref(null)\nconst showMenu = ref(false)\n\nconst ComponentMap = {\n 'Textarea': Textarea,\n 'H2': Textarea,\n 'Card': Card,\n 'ImageUpload': ImageUpload,\n 'Embed': Embed,\n 'Audio': Audio,\n 'Video': Video,\n};\n\npost.value = { content: props.content }; \n\nonMounted(() => {\n if (post.value && post.value.content.length === 0) {\n handleAddBlock('Textarea', '', 0, null, 'h2', 'Enter title');\n }\n})\n\nconst updateContent = (newContent) => {\n post.value.content = newContent;\n};\n\nconst handleDragStart = (startIndex) => {\n console.log('Drag started from index:', startIndex);\n};\n\nconst handleDragEnd = (startIndex, endIndex) => {\n console.log('Drag ended. Start index:', startIndex, 'End index:', endIndex);\n};\n\nfunction handleAddBlock(type = 'Textarea', content = '', index, data, classBlock = '', placeholder = '', id = uuidv4()) {\n let blockNew = {\n id: id,\n type: type,\n style: '',\n class: classBlock,\n placeholder: placeholder,\n content: content,\n blocks: [],\n setFocus: true,\n };\n \n if (index !== undefined) {\n post.value.content.splice(index + 1, 0, blockNew);\n } else {\n post.value.content.push(blockNew);\n }\n \n showControls.value = null\n emits('update', post.value.content);\n}\n\nfunction handleUpdateBlock(block, update) {\n const index = post.value.content.findIndex(item => item === block);\n\n if (index !== -1) {\n post.value.content[index] = { ...post.value.content[index], ...update };\n }\n emits('update', post.value.content);\n}\n\nfunction handleDeleteBlock(blockToDelete, options = {}) {\n const index = post.value.content.findIndex(block => block.id === blockToDelete.id)\n\n if (index !== -1 && index !== 0) {\n post.value.content.splice(index, 1)\n \n if (index > 0) {\n const previousBlock = post.value.content[index - 1]\n previousBlock.setFocus = true\n previousBlock.setCaretToEnd = true\n }\n }\n \n emits('update', post.value.content)\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["ref","Textarea","Card","ImageUpload","Embed","Audio","Video","onMounted","uuidv4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsHA,UAAM,QAAQ;AASd,UAAM,QAAQ;AAEAA,QAAAA,IAAI,IAAI;AACtB,QAAI,OAAOA,IAAAA,IAAI,IAAI;AAEnB,UAAM,eAAeA,IAAG,IAAC,IAAI;AAC7B,UAAM,WAAWA,IAAG,IAAC,KAAK;AAE1B,UAAM,eAAe;AAAA,MACnB,YAAYC,SAAQ;AAAA,MACpB,MAAMA,SAAQ;AAAA,MACd,QAAQC,KAAI;AAAA,MACZ,eAAeC,YAAW;AAAA,MAC1B,SAASC,MAAK;AAAA,MACd,SAASC,MAAK;AAAA,MACd,SAASC,MAAK;AAAA,IAChB;AAEA,SAAK,QAAQ,EAAE,SAAS,MAAM,QAAO;AAErCC,QAAAA,UAAU,MAAM;AACd,UAAI,KAAK,SAAS,KAAK,MAAM,QAAQ,WAAW,GAAG;AACjD,uBAAe,YAAY,IAAI,GAAG,MAAM,MAAM,aAAa;AAAA,MAC/D;AAAA,IACA,CAAC;AAED,UAAM,gBAAgB,CAAC,eAAe;AACpC,WAAK,MAAM,UAAU;AAAA,IACvB;AAEA,UAAM,kBAAkB,CAAC,eAAe;AACtC,cAAQ,IAAI,4BAA4B,UAAU;AAAA,IACpD;AAEA,UAAM,gBAAgB,CAAC,YAAY,aAAa;AAC9C,cAAQ,IAAI,4BAA4B,YAAY,cAAc,QAAQ;AAAA,IAC5E;AAEA,aAAS,eAAe,OAAO,YAAY,UAAU,IAAI,OAAO,MAAM,aAAa,IAAI,cAAc,IAAI,KAAKC,GAAM,QAAA,GAAI;AACtH,UAAI,WAAW;AAAA,QACb;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,QAAQ,CAAE;AAAA,QACV,UAAU;AAAA,MACX;AAED,UAAI,UAAU,QAAW;AACvB,aAAK,MAAM,QAAQ,OAAO,QAAQ,GAAG,GAAG,QAAQ;AAAA,MACpD,OAAS;AACL,aAAK,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACpC;AAEE,mBAAa,QAAQ;AACrB,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,OAAO,QAAQ;AACxC,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,UAAQ,SAAS,KAAK;AAEjE,UAAI,UAAU,IAAI;AAChB,aAAK,MAAM,QAAQ,KAAK,IAAI,EAAE,GAAG,KAAK,MAAM,QAAQ,KAAK,GAAG,GAAG,OAAQ;AAAA,MAC3E;AACE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,eAAe,UAAU,IAAI;AACtD,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,WAAS,MAAM,OAAO,cAAc,EAAE;AAEjF,UAAI,UAAU,MAAM,UAAU,GAAG;AAC/B,aAAK,MAAM,QAAQ,OAAO,OAAO,CAAC;AAElC,YAAI,QAAQ,GAAG;AACb,gBAAM,gBAAgB,KAAK,MAAM,QAAQ,QAAQ,CAAC;AAClD,wBAAc,WAAW;AACzB,wBAAc,gBAAgB;AAAA,QACpC;AAAA,MACA;AAEE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Constructor.vue.cjs","sources":["../../../../../../../src/modules/constructor/components/sections/Constructor.vue"],"sourcesContent":["<template>\n <!-- Content -->\n <section>\n <Draggable \n :list=\"post.content\" \n @update:list=\"updateContent\" \n @start=\"handleDragStart\" \n @end=\"handleDragEnd\" \n disabledClass=\"no-drag\"\n >\n <div\n v-for=\"(block, index) in post.content\"\n :key=\"block.id\" \n :data-index=\"index\"\n draggable=\"true\"\n class=\"draggable-item pos-relative\"\n >\n <div \n @mouseover=\"showControls = index, showMenu = false\"\n class=\"pos-relative w-full h-full\"\n >\n <component\n v-model=\"block.content\"\n :is=\"ComponentMap[block.type]\"\n :index=\"index\"\n :component=\"block\"\n :prop=\"block\"\n :placeholder=\"block.placeholder\"\n :class=\"block.class\"\n :setFocus=\"block.setFocus\"\n @deleteBlock=\"handleDeleteBlock\"\n @addBlock=\"handleAddBlock\"\n @updateBlock=\"handleUpdateBlock\"\n />\n </div>\n\n <transition name=\"fade\">\n <div \n v-if=\"showControls === index\" \n class=\"pos-absolute z-index-4 i-semi\" \n style=\"right: calc(100% + 0.5rem); top: calc(50% - 1.125rem);\"\n >\n <button \n @click=\"showMenu = !showMenu\" \n class=\"mn-b-small cursor-pointer w-100 i-semi bg-white radius-thin\"\n >\n {{ block.content ? '⋯' : '+' }}\n </button>\n \n <div \n v-if=\"showMenu\" \n class=\"z-index-5 radius-thin pd-thin bg-white w-max mn-b-small flex-nowrap flex-column flex\"\n >\n <span \n v-if=\"index !== 0\"\n @click=\"handleDeleteBlock(block)\" \n class=\"mn-b-thin w-max t-red bg-white button-small button\"\n >\n Remove\n </span>\n <span \n @click=\"handleAddBlock('ImageUpload', '', index)\" \n class=\"mn-b-thin w-max t-black bg-white button-small button\"\n >\n Add Image\n </span>\n <span \n @click=\"handleAddBlock('H2', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Title\n </span>\n <span \n @click=\"handleAddBlock('Card', { photo: '', title: '', subtitle: '', }, index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Card\n </span>\n <span \n @click=\"handleAddBlock('Embed', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Embed\n </span>\n <span \n @click=\"handleAddBlock('Audio', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Audio\n </span>\n <span \n @click=\"handleAddBlock('Video', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Video\n </span>\n </div>\n </div>\n </transition>\n </div>\n </Draggable>\n </section>\n</template>\n\n\n<script setup>\nimport Textarea from '../elements/Textarea.vue';\nimport ImageUpload from '../elements/ImageUpload.vue';\nimport Embed from '../elements/Embed.vue';\nimport Card from '../elements/Card.vue';\nimport Audio from '../elements/Audio.vue';\nimport Video from '../elements/Video.vue';\n\nimport Draggable from '@martyrs/src/components/Draggable/Draggable.vue';\n\nimport { ref, onMounted, watchEffect, computed } from 'vue';\nimport { v4 as uuidv4 } from 'uuid'\n\nconst props = defineProps({\n content: {\n type: Array\n },\n notitle: {\n type: Boolean\n }\n});\n\nconst emits = defineEmits(['update'])\n\nlet publics = ref(null);\nlet post = ref(null); \n\nconst showControls = ref(null)\nconst showMenu = ref(false)\n\nconst ComponentMap = {\n 'Textarea': Textarea,\n 'H2': Textarea,\n 'Card': Card,\n 'ImageUpload': ImageUpload,\n 'Embed': Embed,\n 'Audio': Audio,\n 'Video': Video,\n};\n\npost.value = { content: props.content }; \n\nonMounted(() => {\n if (post.value && post.value.content.length === 0) {\n handleAddBlock('Textarea', '', 0, null, 'h2', 'Enter title');\n }\n})\n\nconst updateContent = (newContent) => {\n post.value.content = newContent;\n};\n\nconst handleDragStart = (startIndex) => {\n console.log('Drag started from index:', startIndex);\n};\n\nconst handleDragEnd = (startIndex, endIndex) => {\n console.log('Drag ended. Start index:', startIndex, 'End index:', endIndex);\n};\n\nfunction handleAddBlock(type = 'Textarea', content = '', index, data, classBlock = '', placeholder = '', id = uuidv4()) {\n let blockNew = {\n id: id,\n type: type,\n style: '',\n class: classBlock,\n placeholder: placeholder,\n content: content,\n blocks: [],\n setFocus: true,\n };\n \n if (index !== undefined) {\n post.value.content.splice(index + 1, 0, blockNew);\n } else {\n post.value.content.push(blockNew);\n }\n \n showControls.value = null\n emits('update', post.value.content);\n}\n\nfunction handleUpdateBlock(block, update) {\n const index = post.value.content.findIndex(item => item === block);\n\n if (index !== -1) {\n post.value.content[index] = { ...post.value.content[index], ...update };\n }\n emits('update', post.value.content);\n}\n\nfunction handleDeleteBlock(blockToDelete, options = {}) {\n const index = post.value.content.findIndex(block => block.id === blockToDelete.id)\n\n if (index !== -1 && index !== 0) {\n post.value.content.splice(index, 1)\n \n if (index > 0) {\n const previousBlock = post.value.content[index - 1]\n previousBlock.setFocus = true\n previousBlock.setCaretToEnd = true\n }\n }\n \n emits('update', post.value.content)\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["ref","Textarea","Card","ImageUpload","Embed","Audio","Video","onMounted","uuidv4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsHA,UAAM,QAAQ;AASd,UAAM,QAAQ;AAEAA,QAAAA,IAAI,IAAI;AACtB,QAAI,OAAOA,IAAAA,IAAI,IAAI;AAEnB,UAAM,eAAeA,IAAG,IAAC,IAAI;AAC7B,UAAM,WAAWA,IAAG,IAAC,KAAK;AAE1B,UAAM,eAAe;AAAA,MACnB,YAAYC,SAAQ;AAAA,MACpB,MAAMA,SAAQ;AAAA,MACd,QAAQC,KAAI;AAAA,MACZ,eAAeC,YAAW;AAAA,MAC1B,SAASC,MAAK;AAAA,MACd,SAASC,MAAK;AAAA,MACd,SAASC,MAAK;AAAA,IAChB;AAEA,SAAK,QAAQ,EAAE,SAAS,MAAM,QAAO;AAErCC,QAAAA,UAAU,MAAM;AACd,UAAI,KAAK,SAAS,KAAK,MAAM,QAAQ,WAAW,GAAG;AACjD,uBAAe,YAAY,IAAI,GAAG,MAAM,MAAM,aAAa;AAAA,MAC/D;AAAA,IACA,CAAC;AAED,UAAM,gBAAgB,CAAC,eAAe;AACpC,WAAK,MAAM,UAAU;AAAA,IACvB;AAEA,UAAM,kBAAkB,CAAC,eAAe;AACtC,cAAQ,IAAI,4BAA4B,UAAU;AAAA,IACpD;AAEA,UAAM,gBAAgB,CAAC,YAAY,aAAa;AAC9C,cAAQ,IAAI,4BAA4B,YAAY,cAAc,QAAQ;AAAA,IAC5E;AAEA,aAAS,eAAe,OAAO,YAAY,UAAU,IAAI,OAAO,MAAM,aAAa,IAAI,cAAc,IAAI,KAAKC,GAAM,QAAA,GAAI;AACtH,UAAI,WAAW;AAAA,QACb;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,QAAQ,CAAE;AAAA,QACV,UAAU;AAAA,MACX;AAED,UAAI,UAAU,QAAW;AACvB,aAAK,MAAM,QAAQ,OAAO,QAAQ,GAAG,GAAG,QAAQ;AAAA,MACpD,OAAS;AACL,aAAK,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACpC;AAEE,mBAAa,QAAQ;AACrB,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,OAAO,QAAQ;AACxC,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,UAAQ,SAAS,KAAK;AAEjE,UAAI,UAAU,IAAI;AAChB,aAAK,MAAM,QAAQ,KAAK,IAAI,EAAE,GAAG,KAAK,MAAM,QAAQ,KAAK,GAAG,GAAG,OAAQ;AAAA,MAC3E;AACE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,eAAe,UAAU,IAAI;AACtD,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,WAAS,MAAM,OAAO,cAAc,EAAE;AAEjF,UAAI,UAAU,MAAM,UAAU,GAAG;AAC/B,aAAK,MAAM,QAAQ,OAAO,OAAO,CAAC;AAElC,YAAI,QAAQ,GAAG;AACb,gBAAM,gBAAgB,KAAK,MAAM,QAAQ,QAAQ,CAAC;AAClD,wBAAc,WAAW;AACzB,wBAAc,gBAAgB;AAAA,QACpC;AAAA,MACA;AAEE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -16,7 +16,7 @@ const _hoisted_3 = {
16
16
  };
17
17
  const _hoisted_4 = {
18
18
  key: 0,
19
- class: "z-index-5 radius-thin pd-thin bg-light w-max mn-b-small flex-nowrap flex-column flex"
19
+ class: "z-index-5 radius-thin pd-thin bg-white w-max mn-b-small flex-nowrap flex-column flex"
20
20
  };
21
21
  const _hoisted_5 = ["onClick"];
22
22
  const _hoisted_6 = ["onClick"];
@@ -145,37 +145,37 @@ const _sfc_main = {
145
145
  showControls.value === index ? (openBlock(), createElementBlock("div", _hoisted_3, [
146
146
  createElementVNode("button", {
147
147
  onClick: _cache[0] || (_cache[0] = ($event) => showMenu.value = !showMenu.value),
148
- class: "mn-b-small cursor-pointer w-100 i-semi bg-light radius-thin"
148
+ class: "mn-b-small cursor-pointer w-100 i-semi bg-white radius-thin"
149
149
  }, toDisplayString(block.content ? "⋯" : "+"), 1),
150
150
  showMenu.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
151
151
  index !== 0 ? (openBlock(), createElementBlock("span", {
152
152
  key: 0,
153
153
  onClick: ($event) => handleDeleteBlock(block),
154
- class: "mn-b-thin w-max t-red bg-light button-small button"
154
+ class: "mn-b-thin w-max t-red bg-white button-small button"
155
155
  }, " Remove ", 8, _hoisted_5)) : createCommentVNode("", true),
156
156
  createElementVNode("span", {
157
157
  onClick: ($event) => handleAddBlock("ImageUpload", "", index),
158
- class: "mn-b-thin w-max t-black bg-light button-small button"
158
+ class: "mn-b-thin w-max t-black bg-white button-small button"
159
159
  }, " Add Image ", 8, _hoisted_6),
160
160
  createElementVNode("span", {
161
161
  onClick: ($event) => handleAddBlock("H2", "", index),
162
- class: "w-max button-small t-black bg-light button"
162
+ class: "w-max button-small t-black bg-white button"
163
163
  }, " Add Title ", 8, _hoisted_7),
164
164
  createElementVNode("span", {
165
165
  onClick: ($event) => handleAddBlock("Card", { photo: "", title: "", subtitle: "" }, index),
166
- class: "w-max button-small t-black bg-light button"
166
+ class: "w-max button-small t-black bg-white button"
167
167
  }, " Add Card ", 8, _hoisted_8),
168
168
  createElementVNode("span", {
169
169
  onClick: ($event) => handleAddBlock("Embed", "", index),
170
- class: "w-max button-small t-black bg-light button"
170
+ class: "w-max button-small t-black bg-white button"
171
171
  }, " Add Embed ", 8, _hoisted_9),
172
172
  createElementVNode("span", {
173
173
  onClick: ($event) => handleAddBlock("Audio", "", index),
174
- class: "w-max button-small t-black bg-light button"
174
+ class: "w-max button-small t-black bg-white button"
175
175
  }, " Add Audio ", 8, _hoisted_10),
176
176
  createElementVNode("span", {
177
177
  onClick: ($event) => handleAddBlock("Video", "", index),
178
- class: "w-max button-small t-black bg-light button"
178
+ class: "w-max button-small t-black bg-white button"
179
179
  }, " Add Video ", 8, _hoisted_11)
180
180
  ])) : createCommentVNode("", true)
181
181
  ])) : createCommentVNode("", true)
@@ -1 +1 @@
1
- {"version":3,"file":"Constructor.vue.js","sources":["../../../../../../../src/modules/constructor/components/sections/Constructor.vue"],"sourcesContent":["<template>\n <!-- Content -->\n <section>\n <Draggable \n :list=\"post.content\" \n @update:list=\"updateContent\" \n @start=\"handleDragStart\" \n @end=\"handleDragEnd\" \n disabledClass=\"no-drag\"\n >\n <div\n v-for=\"(block, index) in post.content\"\n :key=\"block.id\" \n :data-index=\"index\"\n draggable=\"true\"\n class=\"draggable-item pos-relative\"\n >\n <div \n @mouseover=\"showControls = index, showMenu = false\"\n class=\"pos-relative w-full h-full\"\n >\n <component\n v-model=\"block.content\"\n :is=\"ComponentMap[block.type]\"\n :index=\"index\"\n :component=\"block\"\n :prop=\"block\"\n :placeholder=\"block.placeholder\"\n :class=\"block.class\"\n :setFocus=\"block.setFocus\"\n @deleteBlock=\"handleDeleteBlock\"\n @addBlock=\"handleAddBlock\"\n @updateBlock=\"handleUpdateBlock\"\n />\n </div>\n\n <transition name=\"fade\">\n <div \n v-if=\"showControls === index\" \n class=\"pos-absolute z-index-4 i-semi\" \n style=\"right: calc(100% + 0.5rem); top: calc(50% - 1.125rem);\"\n >\n <button \n @click=\"showMenu = !showMenu\" \n class=\"mn-b-small cursor-pointer w-100 i-semi bg-light radius-thin\"\n >\n {{ block.content ? '⋯' : '+' }}\n </button>\n \n <div \n v-if=\"showMenu\" \n class=\"z-index-5 radius-thin pd-thin bg-light w-max mn-b-small flex-nowrap flex-column flex\"\n >\n <span \n v-if=\"index !== 0\"\n @click=\"handleDeleteBlock(block)\" \n class=\"mn-b-thin w-max t-red bg-light button-small button\"\n >\n Remove\n </span>\n <span \n @click=\"handleAddBlock('ImageUpload', '', index)\" \n class=\"mn-b-thin w-max t-black bg-light button-small button\"\n >\n Add Image\n </span>\n <span \n @click=\"handleAddBlock('H2', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Title\n </span>\n <span \n @click=\"handleAddBlock('Card', { photo: '', title: '', subtitle: '', }, index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Card\n </span>\n <span \n @click=\"handleAddBlock('Embed', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Embed\n </span>\n <span \n @click=\"handleAddBlock('Audio', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Audio\n </span>\n <span \n @click=\"handleAddBlock('Video', '', index)\"\n class=\"w-max button-small t-black bg-light button\"\n >\n Add Video\n </span>\n </div>\n </div>\n </transition>\n </div>\n </Draggable>\n </section>\n</template>\n\n\n<script setup>\nimport Textarea from '../elements/Textarea.vue';\nimport ImageUpload from '../elements/ImageUpload.vue';\nimport Embed from '../elements/Embed.vue';\nimport Card from '../elements/Card.vue';\nimport Audio from '../elements/Audio.vue';\nimport Video from '../elements/Video.vue';\n\nimport Draggable from '@martyrs/src/components/Draggable/Draggable.vue';\n\nimport { ref, onMounted, watchEffect, computed } from 'vue';\nimport { v4 as uuidv4 } from 'uuid'\n\nconst props = defineProps({\n content: {\n type: Array\n },\n notitle: {\n type: Boolean\n }\n});\n\nconst emits = defineEmits(['update'])\n\nlet publics = ref(null);\nlet post = ref(null); \n\nconst showControls = ref(null)\nconst showMenu = ref(false)\n\nconst ComponentMap = {\n 'Textarea': Textarea,\n 'H2': Textarea,\n 'Card': Card,\n 'ImageUpload': ImageUpload,\n 'Embed': Embed,\n 'Audio': Audio,\n 'Video': Video,\n};\n\npost.value = { content: props.content }; \n\nonMounted(() => {\n if (post.value && post.value.content.length === 0) {\n handleAddBlock('Textarea', '', 0, null, 'h2', 'Enter title');\n }\n})\n\nconst updateContent = (newContent) => {\n post.value.content = newContent;\n};\n\nconst handleDragStart = (startIndex) => {\n console.log('Drag started from index:', startIndex);\n};\n\nconst handleDragEnd = (startIndex, endIndex) => {\n console.log('Drag ended. Start index:', startIndex, 'End index:', endIndex);\n};\n\nfunction handleAddBlock(type = 'Textarea', content = '', index, data, classBlock = '', placeholder = '', id = uuidv4()) {\n let blockNew = {\n id: id,\n type: type,\n style: '',\n class: classBlock,\n placeholder: placeholder,\n content: content,\n blocks: [],\n setFocus: true,\n };\n \n if (index !== undefined) {\n post.value.content.splice(index + 1, 0, blockNew);\n } else {\n post.value.content.push(blockNew);\n }\n \n showControls.value = null\n emits('update', post.value.content);\n}\n\nfunction handleUpdateBlock(block, update) {\n const index = post.value.content.findIndex(item => item === block);\n\n if (index !== -1) {\n post.value.content[index] = { ...post.value.content[index], ...update };\n }\n emits('update', post.value.content);\n}\n\nfunction handleDeleteBlock(blockToDelete, options = {}) {\n const index = post.value.content.findIndex(block => block.id === blockToDelete.id)\n\n if (index !== -1 && index !== 0) {\n post.value.content.splice(index, 1)\n \n if (index > 0) {\n const previousBlock = post.value.content[index - 1]\n previousBlock.setFocus = true\n previousBlock.setCaretToEnd = true\n }\n }\n \n emits('update', post.value.content)\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["Textarea","Card","ImageUpload","Embed","Audio","Video","uuidv4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsHA,UAAM,QAAQ;AASd,UAAM,QAAQ;AAEA,QAAI,IAAI;AACtB,QAAI,OAAO,IAAI,IAAI;AAEnB,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,WAAW,IAAI,KAAK;AAE1B,UAAM,eAAe;AAAA,MACnB,YAAYA;AAAAA,MACZ,MAAMA;AAAAA,MACN,QAAQC;AAAAA,MACR,eAAeC;AAAAA,MACf,SAASC;AAAAA,MACT,SAASC;AAAAA,MACT,SAASC;AAAAA,IACX;AAEA,SAAK,QAAQ,EAAE,SAAS,MAAM,QAAO;AAErC,cAAU,MAAM;AACd,UAAI,KAAK,SAAS,KAAK,MAAM,QAAQ,WAAW,GAAG;AACjD,uBAAe,YAAY,IAAI,GAAG,MAAM,MAAM,aAAa;AAAA,MAC/D;AAAA,IACA,CAAC;AAED,UAAM,gBAAgB,CAAC,eAAe;AACpC,WAAK,MAAM,UAAU;AAAA,IACvB;AAEA,UAAM,kBAAkB,CAAC,eAAe;AACtC,cAAQ,IAAI,4BAA4B,UAAU;AAAA,IACpD;AAEA,UAAM,gBAAgB,CAAC,YAAY,aAAa;AAC9C,cAAQ,IAAI,4BAA4B,YAAY,cAAc,QAAQ;AAAA,IAC5E;AAEA,aAAS,eAAe,OAAO,YAAY,UAAU,IAAI,OAAO,MAAM,aAAa,IAAI,cAAc,IAAI,KAAKC,GAAM,GAAI;AACtH,UAAI,WAAW;AAAA,QACb;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,QAAQ,CAAE;AAAA,QACV,UAAU;AAAA,MACX;AAED,UAAI,UAAU,QAAW;AACvB,aAAK,MAAM,QAAQ,OAAO,QAAQ,GAAG,GAAG,QAAQ;AAAA,MACpD,OAAS;AACL,aAAK,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACpC;AAEE,mBAAa,QAAQ;AACrB,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,OAAO,QAAQ;AACxC,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,UAAQ,SAAS,KAAK;AAEjE,UAAI,UAAU,IAAI;AAChB,aAAK,MAAM,QAAQ,KAAK,IAAI,EAAE,GAAG,KAAK,MAAM,QAAQ,KAAK,GAAG,GAAG,OAAQ;AAAA,MAC3E;AACE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,eAAe,UAAU,IAAI;AACtD,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,WAAS,MAAM,OAAO,cAAc,EAAE;AAEjF,UAAI,UAAU,MAAM,UAAU,GAAG;AAC/B,aAAK,MAAM,QAAQ,OAAO,OAAO,CAAC;AAElC,YAAI,QAAQ,GAAG;AACb,gBAAM,gBAAgB,KAAK,MAAM,QAAQ,QAAQ,CAAC;AAClD,wBAAc,WAAW;AACzB,wBAAc,gBAAgB;AAAA,QACpC;AAAA,MACA;AAEE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Constructor.vue.js","sources":["../../../../../../../src/modules/constructor/components/sections/Constructor.vue"],"sourcesContent":["<template>\n <!-- Content -->\n <section>\n <Draggable \n :list=\"post.content\" \n @update:list=\"updateContent\" \n @start=\"handleDragStart\" \n @end=\"handleDragEnd\" \n disabledClass=\"no-drag\"\n >\n <div\n v-for=\"(block, index) in post.content\"\n :key=\"block.id\" \n :data-index=\"index\"\n draggable=\"true\"\n class=\"draggable-item pos-relative\"\n >\n <div \n @mouseover=\"showControls = index, showMenu = false\"\n class=\"pos-relative w-full h-full\"\n >\n <component\n v-model=\"block.content\"\n :is=\"ComponentMap[block.type]\"\n :index=\"index\"\n :component=\"block\"\n :prop=\"block\"\n :placeholder=\"block.placeholder\"\n :class=\"block.class\"\n :setFocus=\"block.setFocus\"\n @deleteBlock=\"handleDeleteBlock\"\n @addBlock=\"handleAddBlock\"\n @updateBlock=\"handleUpdateBlock\"\n />\n </div>\n\n <transition name=\"fade\">\n <div \n v-if=\"showControls === index\" \n class=\"pos-absolute z-index-4 i-semi\" \n style=\"right: calc(100% + 0.5rem); top: calc(50% - 1.125rem);\"\n >\n <button \n @click=\"showMenu = !showMenu\" \n class=\"mn-b-small cursor-pointer w-100 i-semi bg-white radius-thin\"\n >\n {{ block.content ? '⋯' : '+' }}\n </button>\n \n <div \n v-if=\"showMenu\" \n class=\"z-index-5 radius-thin pd-thin bg-white w-max mn-b-small flex-nowrap flex-column flex\"\n >\n <span \n v-if=\"index !== 0\"\n @click=\"handleDeleteBlock(block)\" \n class=\"mn-b-thin w-max t-red bg-white button-small button\"\n >\n Remove\n </span>\n <span \n @click=\"handleAddBlock('ImageUpload', '', index)\" \n class=\"mn-b-thin w-max t-black bg-white button-small button\"\n >\n Add Image\n </span>\n <span \n @click=\"handleAddBlock('H2', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Title\n </span>\n <span \n @click=\"handleAddBlock('Card', { photo: '', title: '', subtitle: '', }, index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Card\n </span>\n <span \n @click=\"handleAddBlock('Embed', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Embed\n </span>\n <span \n @click=\"handleAddBlock('Audio', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Audio\n </span>\n <span \n @click=\"handleAddBlock('Video', '', index)\"\n class=\"w-max button-small t-black bg-white button\"\n >\n Add Video\n </span>\n </div>\n </div>\n </transition>\n </div>\n </Draggable>\n </section>\n</template>\n\n\n<script setup>\nimport Textarea from '../elements/Textarea.vue';\nimport ImageUpload from '../elements/ImageUpload.vue';\nimport Embed from '../elements/Embed.vue';\nimport Card from '../elements/Card.vue';\nimport Audio from '../elements/Audio.vue';\nimport Video from '../elements/Video.vue';\n\nimport Draggable from '@martyrs/src/components/Draggable/Draggable.vue';\n\nimport { ref, onMounted, watchEffect, computed } from 'vue';\nimport { v4 as uuidv4 } from 'uuid'\n\nconst props = defineProps({\n content: {\n type: Array\n },\n notitle: {\n type: Boolean\n }\n});\n\nconst emits = defineEmits(['update'])\n\nlet publics = ref(null);\nlet post = ref(null); \n\nconst showControls = ref(null)\nconst showMenu = ref(false)\n\nconst ComponentMap = {\n 'Textarea': Textarea,\n 'H2': Textarea,\n 'Card': Card,\n 'ImageUpload': ImageUpload,\n 'Embed': Embed,\n 'Audio': Audio,\n 'Video': Video,\n};\n\npost.value = { content: props.content }; \n\nonMounted(() => {\n if (post.value && post.value.content.length === 0) {\n handleAddBlock('Textarea', '', 0, null, 'h2', 'Enter title');\n }\n})\n\nconst updateContent = (newContent) => {\n post.value.content = newContent;\n};\n\nconst handleDragStart = (startIndex) => {\n console.log('Drag started from index:', startIndex);\n};\n\nconst handleDragEnd = (startIndex, endIndex) => {\n console.log('Drag ended. Start index:', startIndex, 'End index:', endIndex);\n};\n\nfunction handleAddBlock(type = 'Textarea', content = '', index, data, classBlock = '', placeholder = '', id = uuidv4()) {\n let blockNew = {\n id: id,\n type: type,\n style: '',\n class: classBlock,\n placeholder: placeholder,\n content: content,\n blocks: [],\n setFocus: true,\n };\n \n if (index !== undefined) {\n post.value.content.splice(index + 1, 0, blockNew);\n } else {\n post.value.content.push(blockNew);\n }\n \n showControls.value = null\n emits('update', post.value.content);\n}\n\nfunction handleUpdateBlock(block, update) {\n const index = post.value.content.findIndex(item => item === block);\n\n if (index !== -1) {\n post.value.content[index] = { ...post.value.content[index], ...update };\n }\n emits('update', post.value.content);\n}\n\nfunction handleDeleteBlock(blockToDelete, options = {}) {\n const index = post.value.content.findIndex(block => block.id === blockToDelete.id)\n\n if (index !== -1 && index !== 0) {\n post.value.content.splice(index, 1)\n \n if (index > 0) {\n const previousBlock = post.value.content[index - 1]\n previousBlock.setFocus = true\n previousBlock.setCaretToEnd = true\n }\n }\n \n emits('update', post.value.content)\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["Textarea","Card","ImageUpload","Embed","Audio","Video","uuidv4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsHA,UAAM,QAAQ;AASd,UAAM,QAAQ;AAEA,QAAI,IAAI;AACtB,QAAI,OAAO,IAAI,IAAI;AAEnB,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,WAAW,IAAI,KAAK;AAE1B,UAAM,eAAe;AAAA,MACnB,YAAYA;AAAAA,MACZ,MAAMA;AAAAA,MACN,QAAQC;AAAAA,MACR,eAAeC;AAAAA,MACf,SAASC;AAAAA,MACT,SAASC;AAAAA,MACT,SAASC;AAAAA,IACX;AAEA,SAAK,QAAQ,EAAE,SAAS,MAAM,QAAO;AAErC,cAAU,MAAM;AACd,UAAI,KAAK,SAAS,KAAK,MAAM,QAAQ,WAAW,GAAG;AACjD,uBAAe,YAAY,IAAI,GAAG,MAAM,MAAM,aAAa;AAAA,MAC/D;AAAA,IACA,CAAC;AAED,UAAM,gBAAgB,CAAC,eAAe;AACpC,WAAK,MAAM,UAAU;AAAA,IACvB;AAEA,UAAM,kBAAkB,CAAC,eAAe;AACtC,cAAQ,IAAI,4BAA4B,UAAU;AAAA,IACpD;AAEA,UAAM,gBAAgB,CAAC,YAAY,aAAa;AAC9C,cAAQ,IAAI,4BAA4B,YAAY,cAAc,QAAQ;AAAA,IAC5E;AAEA,aAAS,eAAe,OAAO,YAAY,UAAU,IAAI,OAAO,MAAM,aAAa,IAAI,cAAc,IAAI,KAAKC,GAAM,GAAI;AACtH,UAAI,WAAW;AAAA,QACb;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,QAAQ,CAAE;AAAA,QACV,UAAU;AAAA,MACX;AAED,UAAI,UAAU,QAAW;AACvB,aAAK,MAAM,QAAQ,OAAO,QAAQ,GAAG,GAAG,QAAQ;AAAA,MACpD,OAAS;AACL,aAAK,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACpC;AAEE,mBAAa,QAAQ;AACrB,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,OAAO,QAAQ;AACxC,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,UAAQ,SAAS,KAAK;AAEjE,UAAI,UAAU,IAAI;AAChB,aAAK,MAAM,QAAQ,KAAK,IAAI,EAAE,GAAG,KAAK,MAAM,QAAQ,KAAK,GAAG,GAAG,OAAQ;AAAA,MAC3E;AACE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;AAEA,aAAS,kBAAkB,eAAe,UAAU,IAAI;AACtD,YAAM,QAAQ,KAAK,MAAM,QAAQ,UAAU,WAAS,MAAM,OAAO,cAAc,EAAE;AAEjF,UAAI,UAAU,MAAM,UAAU,GAAG;AAC/B,aAAK,MAAM,QAAQ,OAAO,OAAO,CAAC;AAElC,YAAI,QAAQ,GAAG;AACb,gBAAM,gBAAgB,KAAK,MAAM,QAAQ,QAAQ,CAAC;AAClD,wBAAc,WAAW;AACzB,wBAAc,gBAAgB;AAAA,QACpC;AAAA,MACA;AAEE,YAAM,UAAU,KAAK,MAAM,OAAO;AAAA,IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
6
6
  const CardHeader = require("../../../globals/views/components/blocks/CardHeader.vue.cjs");
7
7
  require("../../../community/store/reactions.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, createElementBlock, openBlock, normalizeClass, createVNode, createCommentVNode, createElementVNode, createBlock, renderSlot, withModifiers, toDisplayString, Fragment, renderList } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
4
4
  import _sfc_main$1 from "../../../globals/views/components/blocks/CardHeader.vue.js";
5
5
  import "../../../community/store/reactions.js";
@@ -7,7 +7,7 @@ const Constructor = require("../../../constructor/components/sections/Constructo
7
7
  const vueDatepicker = require("../../../../../../node_modules/.pnpm/@vuepic_vue-datepicker@11.0.2_vue@3.5.13_typescript@5.8.3_/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.cjs");
8
8
  ;/* empty css */
9
9
  const Block = require("../../../../components/Block/Block.vue.cjs");
10
- const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
10
+ const Popup = require("../../../../components/Popup/Popup.vue.cjs");
11
11
  const Field = require("../../../../components/Field/Field.vue.cjs");
12
12
  const BlockTags = require("../../../../components/FieldTags/BlockTags.vue.cjs");
13
13
  const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
@@ -35,7 +35,7 @@ const _hoisted_3 = { class: "mn-b-thin radius-small w-100 h-10r bg-white flex-ce
35
35
  const _hoisted_4 = ["onClick"];
36
36
  const _hoisted_5 = {
37
37
  key: 0,
38
- class: "pd-b-extra w-100 bg-light pd-big radius-big"
38
+ class: "pd-b-extra w-100 bg-light pd-big radius-medium"
39
39
  };
40
40
  const _hoisted_6 = {
41
41
  key: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"EditEvent.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/EditEvent.vue"],"sourcesContent":["<template>\n <article v-if=\"event\" class=\"h-min-100 pd-thin\">\n <div class=\"pd-medium radius-semi mn-b-thin bg-light\">\n <h4 class=\"mn-b-small\">Basic Info</h4>\n \t<div class=\"mn-b-thin radius-small w-100 h-10r bg-white flex-center flex-column flex\">\n \t<UploadImage \n v-model:photo=\"event.cover\"\n :uploadPath=\"'specials'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload Event Cover</h4>\n </div>\n\n \t<Field \n v-model:field=\"event.name\" \n label=\"Name\"\n placeholder=\"Event name\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.description\" \n type=\"textarea\" \n placeholder=\"Enter short description\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.location\" \n label=\"Location\"\n placeholder=\"Event location\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <VueDatePicker v-model=\"date\" range class=\"z-index-3 radius-small mn-b-semi bg-white\" />\n </div>\n\n <!-- <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"false\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n /> -->\n\n <Block\n title=\"Tickets\"\n placeholder=\"No line ups added yet\"\n :actions=\"[{\n label: '+',\n function: () => event.ticketsTypes.push({name: null, description: null, photo: null, main: false})\n }]\"\n class=\"cols-1 mn-b-thin t-black gap-thin\"\n >\n <div \n class=\"mn-b-thin gap-small flex-nowrap flex\" \n v-for=\"(item, index) in event.ticketsTypes\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.price\"\n placeholder=\"Price\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div @click=\"() => event.ticketsTypes.splice(index, 1)\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\">\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n </Block>\n\n\t\t<section v-if=\"event\" class=\"pd-b-extra w-100 bg-light pd-big radius-big\">\n <Constructor \n :content=\"event.content\"\n @update=\"update => event.content = update\"\n />\n </section>\n\n <section v-if=\"event\" class=\"pd-thin 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 <a v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\">Delete</a>\n <a @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\">To Drafts</a>\n <a @click=\"openPublicationPopup()\" class=\"mn-l-thin bg-black t-white button\">Publish</a>\n </div>\n </section>\n\n <Popup \n title=\"Final Touches\" \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n > \n <BlockTags\n @tags-changed=\"newTags => event.tags = newTags\"\n :tags=\"event.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-thin\">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 \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=\"event.creator.hidden\"\n @update:radio=\"updateEvent => event.creator.hidden = updateEvent\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n </article>\n\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 VueDatePicker from '@vuepic/vue-datepicker';\nimport '@vuepic/vue-datepicker/dist/main.css'\n\n\n\nimport Calendar from '@martyrs/src/components/DatePicker/Calendar.vue'\n\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue';\nimport Upload from '@martyrs/src/components/Upload/Upload.vue';\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \n\nimport Card from '@martyrs/src/modules/globals/views/components/blocks/Card.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { ref, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst { hasAccess } = useGlobalMixins()\n\nlet event = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nconst date = ref(new Date);\nconst customPosition = () => ({ top: 0, left: 0 });\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await events.read({ user: auth.state.user._id, url: route.params.url });\n\n event.value = data.pop();\n\n if (!event.value) {\n router.push({name: 'notfound'})\n }\n\n if (event.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(event.value.owner.target._id, 'events', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (event.value.owner.type === 'user' && event.value.creator.target._id !== auth.state.user._id) {\n console.log(event.value.creator.target)\n console.log(auth.state.user._id)\n router.push({name: 'unauthorized'})\n }\n\n const startDate = event.value.date.start;\n const endDate = event.value.date.end;\n\n date.value = [startDate, endDate];\n\n } else {\n events.clean();\n event.value = events.state.current;\n\n const startDate = new Date();\n const endDate = new Date();\n date.value = [startDate, endDate];\n }\n\n if (!event.value.owner) event.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!event.value.creator) event.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n if (event.value.owner.type === 'organization') selectedOrganization.value = {\n _id: event.value.owner.target._id,\n profile: {\n name: event.value.owner.target.profile.name,\n photo: event.value.owner.target.profile.photo\n }\n }\n})\n\nconst isPublicationPopup = ref(false)\n\nfunction openPublicationPopup() {\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 event.value.status = \"draft\"\n \n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n if (route.params.url) {\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) event.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) event.value.creator.hidden = false\n if (!selectedOrganization.value) event.value.organization = event.value.creator\n\n event.value.status = \"published\"\n\n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n console.log(date.value)\n if (route.params.url) {\n console.log(event.value)\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this event?')) {\n events.remove(event.value._id)\n .then(response => {\n router.push({ name: 'User Events', params: { user: event.value.creator.target._id } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n</script>\n\n<style lang=\"scss\">\n .dp__input {\n border: 0;\n padding: var(--medium);\n padding-left: 3rem;\n background: rgb(var(--white)) !important;\n border-radius: var(--small);\n }\n</style>"],"names":["useRoute","useRouter","useGlobalMixins","ref","onMounted","events.read","auth.state","events.clean","events.state","events.update","events.create","events.remove"],"mappings":"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"}
1
+ {"version":3,"file":"EditEvent.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/EditEvent.vue"],"sourcesContent":["<template>\n <article v-if=\"event\" class=\"h-min-100 pd-thin\">\n <div class=\"pd-medium radius-semi mn-b-thin bg-light\">\n <h4 class=\"mn-b-small\">Basic Info</h4>\n \t<div class=\"mn-b-thin radius-small w-100 h-10r bg-white flex-center flex-column flex\">\n \t<UploadImage \n v-model:photo=\"event.cover\"\n :uploadPath=\"'specials'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload Event Cover</h4>\n </div>\n\n \t<Field \n v-model:field=\"event.name\" \n label=\"Name\"\n placeholder=\"Event name\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.description\" \n type=\"textarea\" \n placeholder=\"Enter short description\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.location\" \n label=\"Location\"\n placeholder=\"Event location\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <VueDatePicker v-model=\"date\" range class=\"z-index-3 radius-small mn-b-semi bg-white\" />\n </div>\n\n <!-- <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"false\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n /> -->\n\n <Block\n title=\"Tickets\"\n placeholder=\"No line ups added yet\"\n :actions=\"[{\n label: '+',\n function: () => event.ticketsTypes.push({name: null, description: null, photo: null, main: false})\n }]\"\n class=\"cols-1 mn-b-thin t-black gap-thin\"\n >\n <div \n class=\"mn-b-thin gap-small flex-nowrap flex\" \n v-for=\"(item, index) in event.ticketsTypes\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.price\"\n placeholder=\"Price\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div @click=\"() => event.ticketsTypes.splice(index, 1)\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\">\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n </Block>\n\n\t\t<section v-if=\"event\" class=\"pd-b-extra w-100 bg-light pd-big radius-medium\">\n <Constructor \n :content=\"event.content\"\n @update=\"update => event.content = update\"\n />\n </section>\n\n <section v-if=\"event\" class=\"pd-thin 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 <a v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\">Delete</a>\n <a @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\">To Drafts</a>\n <a @click=\"openPublicationPopup()\" class=\"mn-l-thin bg-black t-white button\">Publish</a>\n </div>\n </section>\n\n <Popup \n title=\"Final Touches\" \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n > \n <BlockTags\n @tags-changed=\"newTags => event.tags = newTags\"\n :tags=\"event.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-thin\">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 \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=\"event.creator.hidden\"\n @update:radio=\"updateEvent => event.creator.hidden = updateEvent\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n </article>\n\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 VueDatePicker from '@vuepic/vue-datepicker';\nimport '@vuepic/vue-datepicker/dist/main.css'\n\n\n\nimport Calendar from '@martyrs/src/components/DatePicker/Calendar.vue'\n\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue';\nimport Upload from '@martyrs/src/components/Upload/Upload.vue';\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \n\nimport Card from '@martyrs/src/modules/globals/views/components/blocks/Card.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { ref, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst { hasAccess } = useGlobalMixins()\n\nlet event = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nconst date = ref(new Date);\nconst customPosition = () => ({ top: 0, left: 0 });\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await events.read({ user: auth.state.user._id, url: route.params.url });\n\n event.value = data.pop();\n\n if (!event.value) {\n router.push({name: 'notfound'})\n }\n\n if (event.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(event.value.owner.target._id, 'events', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (event.value.owner.type === 'user' && event.value.creator.target._id !== auth.state.user._id) {\n console.log(event.value.creator.target)\n console.log(auth.state.user._id)\n router.push({name: 'unauthorized'})\n }\n\n const startDate = event.value.date.start;\n const endDate = event.value.date.end;\n\n date.value = [startDate, endDate];\n\n } else {\n events.clean();\n event.value = events.state.current;\n\n const startDate = new Date();\n const endDate = new Date();\n date.value = [startDate, endDate];\n }\n\n if (!event.value.owner) event.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!event.value.creator) event.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n if (event.value.owner.type === 'organization') selectedOrganization.value = {\n _id: event.value.owner.target._id,\n profile: {\n name: event.value.owner.target.profile.name,\n photo: event.value.owner.target.profile.photo\n }\n }\n})\n\nconst isPublicationPopup = ref(false)\n\nfunction openPublicationPopup() {\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 event.value.status = \"draft\"\n \n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n if (route.params.url) {\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) event.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) event.value.creator.hidden = false\n if (!selectedOrganization.value) event.value.organization = event.value.creator\n\n event.value.status = \"published\"\n\n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n console.log(date.value)\n if (route.params.url) {\n console.log(event.value)\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this event?')) {\n events.remove(event.value._id)\n .then(response => {\n router.push({ name: 'User Events', params: { user: event.value.creator.target._id } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n</script>\n\n<style lang=\"scss\">\n .dp__input {\n border: 0;\n padding: var(--medium);\n padding-left: 3rem;\n background: rgb(var(--white)) !important;\n border-radius: var(--small);\n }\n</style>"],"names":["useRoute","useRouter","useGlobalMixins","ref","onMounted","events.read","auth.state","events.clean","events.state","events.update","events.create","events.remove"],"mappings":"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"}
@@ -5,7 +5,7 @@ import _sfc_main$4 from "../../../constructor/components/sections/Constructor.vu
5
5
  import Qn from "../../../../../../node_modules/.pnpm/@vuepic_vue-datepicker@11.0.2_vue@3.5.13_typescript@5.8.3_/node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js";
6
6
  /* empty css */
7
7
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
8
- import _sfc_main$5 from "../../../../components/Popup/Popup.vue2.js";
8
+ import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
9
9
  import Field from "../../../../components/Field/Field.vue.js";
10
10
  import _sfc_main$6 from "../../../../components/FieldTags/BlockTags.vue.js";
11
11
  import _sfc_main$9 from "../../../../components/Checkbox/Checkbox.vue.js";
@@ -33,7 +33,7 @@ const _hoisted_3 = { class: "mn-b-thin radius-small w-100 h-10r bg-white flex-ce
33
33
  const _hoisted_4 = ["onClick"];
34
34
  const _hoisted_5 = {
35
35
  key: 0,
36
- class: "pd-b-extra w-100 bg-light pd-big radius-big"
36
+ class: "pd-b-extra w-100 bg-light pd-big radius-medium"
37
37
  };
38
38
  const _hoisted_6 = {
39
39
  key: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"EditEvent.vue.js","sources":["../../../../../../../src/modules/events/components/pages/EditEvent.vue"],"sourcesContent":["<template>\n <article v-if=\"event\" class=\"h-min-100 pd-thin\">\n <div class=\"pd-medium radius-semi mn-b-thin bg-light\">\n <h4 class=\"mn-b-small\">Basic Info</h4>\n \t<div class=\"mn-b-thin radius-small w-100 h-10r bg-white flex-center flex-column flex\">\n \t<UploadImage \n v-model:photo=\"event.cover\"\n :uploadPath=\"'specials'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload Event Cover</h4>\n </div>\n\n \t<Field \n v-model:field=\"event.name\" \n label=\"Name\"\n placeholder=\"Event name\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.description\" \n type=\"textarea\" \n placeholder=\"Enter short description\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.location\" \n label=\"Location\"\n placeholder=\"Event location\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <VueDatePicker v-model=\"date\" range class=\"z-index-3 radius-small mn-b-semi bg-white\" />\n </div>\n\n <!-- <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"false\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n /> -->\n\n <Block\n title=\"Tickets\"\n placeholder=\"No line ups added yet\"\n :actions=\"[{\n label: '+',\n function: () => event.ticketsTypes.push({name: null, description: null, photo: null, main: false})\n }]\"\n class=\"cols-1 mn-b-thin t-black gap-thin\"\n >\n <div \n class=\"mn-b-thin gap-small flex-nowrap flex\" \n v-for=\"(item, index) in event.ticketsTypes\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.price\"\n placeholder=\"Price\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div @click=\"() => event.ticketsTypes.splice(index, 1)\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\">\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n </Block>\n\n\t\t<section v-if=\"event\" class=\"pd-b-extra w-100 bg-light pd-big radius-big\">\n <Constructor \n :content=\"event.content\"\n @update=\"update => event.content = update\"\n />\n </section>\n\n <section v-if=\"event\" class=\"pd-thin 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 <a v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\">Delete</a>\n <a @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\">To Drafts</a>\n <a @click=\"openPublicationPopup()\" class=\"mn-l-thin bg-black t-white button\">Publish</a>\n </div>\n </section>\n\n <Popup \n title=\"Final Touches\" \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n > \n <BlockTags\n @tags-changed=\"newTags => event.tags = newTags\"\n :tags=\"event.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-thin\">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 \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=\"event.creator.hidden\"\n @update:radio=\"updateEvent => event.creator.hidden = updateEvent\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n </article>\n\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 VueDatePicker from '@vuepic/vue-datepicker';\nimport '@vuepic/vue-datepicker/dist/main.css'\n\n\n\nimport Calendar from '@martyrs/src/components/DatePicker/Calendar.vue'\n\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue';\nimport Upload from '@martyrs/src/components/Upload/Upload.vue';\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \n\nimport Card from '@martyrs/src/modules/globals/views/components/blocks/Card.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { ref, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst { hasAccess } = useGlobalMixins()\n\nlet event = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nconst date = ref(new Date);\nconst customPosition = () => ({ top: 0, left: 0 });\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await events.read({ user: auth.state.user._id, url: route.params.url });\n\n event.value = data.pop();\n\n if (!event.value) {\n router.push({name: 'notfound'})\n }\n\n if (event.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(event.value.owner.target._id, 'events', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (event.value.owner.type === 'user' && event.value.creator.target._id !== auth.state.user._id) {\n console.log(event.value.creator.target)\n console.log(auth.state.user._id)\n router.push({name: 'unauthorized'})\n }\n\n const startDate = event.value.date.start;\n const endDate = event.value.date.end;\n\n date.value = [startDate, endDate];\n\n } else {\n events.clean();\n event.value = events.state.current;\n\n const startDate = new Date();\n const endDate = new Date();\n date.value = [startDate, endDate];\n }\n\n if (!event.value.owner) event.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!event.value.creator) event.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n if (event.value.owner.type === 'organization') selectedOrganization.value = {\n _id: event.value.owner.target._id,\n profile: {\n name: event.value.owner.target.profile.name,\n photo: event.value.owner.target.profile.photo\n }\n }\n})\n\nconst isPublicationPopup = ref(false)\n\nfunction openPublicationPopup() {\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 event.value.status = \"draft\"\n \n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n if (route.params.url) {\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) event.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) event.value.creator.hidden = false\n if (!selectedOrganization.value) event.value.organization = event.value.creator\n\n event.value.status = \"published\"\n\n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n console.log(date.value)\n if (route.params.url) {\n console.log(event.value)\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this event?')) {\n events.remove(event.value._id)\n .then(response => {\n router.push({ name: 'User Events', params: { user: event.value.creator.target._id } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n</script>\n\n<style lang=\"scss\">\n .dp__input {\n border: 0;\n padding: var(--medium);\n padding-left: 3rem;\n background: rgb(var(--white)) !important;\n border-radius: var(--small);\n }\n</style>"],"names":["events.read","auth.state","events.clean","events.state","events.update","events.create","events.remove"],"mappings":"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"}
1
+ {"version":3,"file":"EditEvent.vue.js","sources":["../../../../../../../src/modules/events/components/pages/EditEvent.vue"],"sourcesContent":["<template>\n <article v-if=\"event\" class=\"h-min-100 pd-thin\">\n <div class=\"pd-medium radius-semi mn-b-thin bg-light\">\n <h4 class=\"mn-b-small\">Basic Info</h4>\n \t<div class=\"mn-b-thin radius-small w-100 h-10r bg-white flex-center flex-column flex\">\n \t<UploadImage \n v-model:photo=\"event.cover\"\n :uploadPath=\"'specials'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload Event Cover</h4>\n </div>\n\n \t<Field \n v-model:field=\"event.name\" \n label=\"Name\"\n placeholder=\"Event name\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.description\" \n type=\"textarea\" \n placeholder=\"Enter short description\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <Field \n v-model:field=\"event.location\" \n label=\"Location\"\n placeholder=\"Event location\" \n class=\"mn-b-thin w-100 bg-white pd-medium radius-small\" \n />\n <VueDatePicker v-model=\"date\" range class=\"z-index-3 radius-small mn-b-semi bg-white\" />\n </div>\n\n <!-- <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"false\"\n class=\"radius-semi w-100 o-hidden bg-light\"\n /> -->\n\n <Block\n title=\"Tickets\"\n placeholder=\"No line ups added yet\"\n :actions=\"[{\n label: '+',\n function: () => event.ticketsTypes.push({name: null, description: null, photo: null, main: false})\n }]\"\n class=\"cols-1 mn-b-thin t-black gap-thin\"\n >\n <div \n class=\"mn-b-thin gap-small flex-nowrap flex\" \n v-for=\"(item, index) in event.ticketsTypes\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.price\"\n placeholder=\"Price\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div @click=\"() => event.ticketsTypes.splice(index, 1)\" class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\">\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n </Block>\n\n\t\t<section v-if=\"event\" class=\"pd-b-extra w-100 bg-light pd-big radius-medium\">\n <Constructor \n :content=\"event.content\"\n @update=\"update => event.content = update\"\n />\n </section>\n\n <section v-if=\"event\" class=\"pd-thin 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 <a v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\">Delete</a>\n <a @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\">To Drafts</a>\n <a @click=\"openPublicationPopup()\" class=\"mn-l-thin bg-black t-white button\">Publish</a>\n </div>\n </section>\n\n <Popup \n title=\"Final Touches\" \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n > \n <BlockTags\n @tags-changed=\"newTags => event.tags = newTags\"\n :tags=\"event.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-thin\">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 \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=\"event.creator.hidden\"\n @update:radio=\"updateEvent => event.creator.hidden = updateEvent\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n </article>\n\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 VueDatePicker from '@vuepic/vue-datepicker';\nimport '@vuepic/vue-datepicker/dist/main.css'\n\n\n\nimport Calendar from '@martyrs/src/components/DatePicker/Calendar.vue'\n\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue';\nimport Upload from '@martyrs/src/components/Upload/Upload.vue';\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport EditImages from '@martyrs/src/components/EditImages/EditImages.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \n\nimport Card from '@martyrs/src/modules/globals/views/components/blocks/Card.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { ref, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst { hasAccess } = useGlobalMixins()\n\nlet event = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nconst date = ref(new Date);\nconst customPosition = () => ({ top: 0, left: 0 });\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await events.read({ user: auth.state.user._id, url: route.params.url });\n\n event.value = data.pop();\n\n if (!event.value) {\n router.push({name: 'notfound'})\n }\n\n if (event.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(event.value.owner.target._id, 'events', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (event.value.owner.type === 'user' && event.value.creator.target._id !== auth.state.user._id) {\n console.log(event.value.creator.target)\n console.log(auth.state.user._id)\n router.push({name: 'unauthorized'})\n }\n\n const startDate = event.value.date.start;\n const endDate = event.value.date.end;\n\n date.value = [startDate, endDate];\n\n } else {\n events.clean();\n event.value = events.state.current;\n\n const startDate = new Date();\n const endDate = new Date();\n date.value = [startDate, endDate];\n }\n\n if (!event.value.owner) event.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!event.value.creator) event.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n if (event.value.owner.type === 'organization') selectedOrganization.value = {\n _id: event.value.owner.target._id,\n profile: {\n name: event.value.owner.target.profile.name,\n photo: event.value.owner.target.profile.photo\n }\n }\n})\n\nconst isPublicationPopup = ref(false)\n\nfunction openPublicationPopup() {\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 event.value.status = \"draft\"\n \n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n if (route.params.url) {\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) event.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) event.value.creator.hidden = false\n if (!selectedOrganization.value) event.value.organization = event.value.creator\n\n event.value.status = \"published\"\n\n event.value.date = {\n start: date.value[0],\n end: date.value[1]\n }\n\n console.log(date.value)\n if (route.params.url) {\n console.log(event.value)\n events.update(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n events.create(event.value)\n .then(response => {\n router.push({ name: 'Event', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this event?')) {\n events.remove(event.value._id)\n .then(response => {\n router.push({ name: 'User Events', params: { user: event.value.creator.target._id } });\n })\n .catch(error => {\n console.error(error);\n })\n }\n}\n</script>\n\n<style lang=\"scss\">\n .dp__input {\n border: 0;\n padding: var(--medium);\n padding-left: 3rem;\n background: rgb(var(--white)) !important;\n border-radius: var(--small);\n }\n</style>"],"names":["events.read","auth.state","events.clean","events.state","events.update","events.create","events.remove"],"mappings":"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"}