@ozdao/prometheus-framework 0.2.221 → 0.2.222

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. package/dist/builder.js +7 -4
  2. package/dist/builder.mjs +7 -4
  3. package/dist/community.server.js +1 -1
  4. package/dist/community.server.mjs +1 -1
  5. package/dist/main.css +1 -1
  6. package/dist/organizations.server.js +39 -2
  7. package/dist/organizations.server.mjs +39 -2
  8. package/dist/prometheus-framework/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  9. package/dist/prometheus-framework/src/components/FieldBig/FieldBig.vue.js +1 -1
  10. package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.cjs +2 -2
  11. package/dist/prometheus-framework/src/modules/auth/views/components/layouts/Auth.vue.js +2 -2
  12. package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  13. package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  14. package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
  15. package/dist/prometheus-framework/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  16. package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
  17. package/dist/prometheus-framework/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  18. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +2 -2
  19. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  20. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.cjs +2 -2
  21. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  22. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.cjs +2 -2
  23. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  24. package/dist/prometheus-framework/src/modules/auth/views/middlewares/ownership.validation.cjs +33 -0
  25. package/dist/prometheus-framework/src/modules/auth/views/middlewares/ownership.validation.cjs.map +1 -0
  26. package/dist/prometheus-framework/src/modules/auth/views/middlewares/ownership.validation.js +33 -0
  27. package/dist/prometheus-framework/src/modules/auth/views/middlewares/ownership.validation.js.map +1 -0
  28. package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.cjs +3 -1
  29. package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  30. package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.js +3 -1
  31. package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  32. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs +8 -7
  33. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
  34. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js +9 -8
  35. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  36. package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.cjs +10 -12
  37. package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
  38. package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.js +10 -12
  39. package/dist/prometheus-framework/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  40. package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.cjs +1 -1
  41. package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.js +1 -1
  42. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  43. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  44. package/dist/prometheus-framework/src/modules/community/components/sections/HotPosts.vue.cjs +2 -2
  45. package/dist/prometheus-framework/src/modules/community/components/sections/HotPosts.vue.js +2 -2
  46. package/dist/prometheus-framework/src/modules/community/router/blogposts.cjs +11 -4
  47. package/dist/prometheus-framework/src/modules/community/router/blogposts.cjs.map +1 -1
  48. package/dist/prometheus-framework/src/modules/community/router/blogposts.js +11 -4
  49. package/dist/prometheus-framework/src/modules/community/router/blogposts.js.map +1 -1
  50. package/dist/prometheus-framework/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  51. package/dist/prometheus-framework/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  52. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  53. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  54. package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  55. package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  56. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  57. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  58. package/dist/prometheus-framework/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +1 -1
  59. package/dist/prometheus-framework/src/modules/globals/views/components/blocks/BlockFilter.vue.js +1 -1
  60. package/dist/prometheus-framework/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  61. package/dist/prometheus-framework/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  62. package/dist/prometheus-framework/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  63. package/dist/prometheus-framework/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  64. package/dist/prometheus-framework/src/modules/landing/components/sections/SectionGuide.vue.cjs +1 -1
  65. package/dist/prometheus-framework/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  66. package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.cjs +1 -1
  67. package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.js +1 -1
  68. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  69. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  70. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
  71. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  72. package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  73. package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.js +1 -1
  74. package/dist/prometheus-framework/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
  75. package/dist/prometheus-framework/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
  76. package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +1 -1
  77. package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.js +1 -1
  78. package/dist/prometheus-framework/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  79. package/dist/prometheus-framework/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  80. package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +1 -1
  81. package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  82. package/dist/prometheus-framework/src/modules/organizations/components/pages/Department.vue.cjs +1 -1
  83. package/dist/prometheus-framework/src/modules/organizations/components/pages/Department.vue.js +1 -1
  84. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  85. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  86. package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  87. package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.js +1 -1
  88. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
  89. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  90. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  91. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  92. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  93. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  94. package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  95. package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  96. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  97. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  98. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  99. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  100. package/dist/prometheus-framework/src/modules/pages/pages.client.cjs +759 -759
  101. package/dist/prometheus-framework/src/modules/pages/pages.client.js +759 -759
  102. package/dist/prometheus-framework/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  103. package/dist/prometheus-framework/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  104. package/dist/prometheus-framework/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  105. package/dist/prometheus-framework/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  106. package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
  107. package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  108. package/dist/prometheus-framework/src/modules/products/components/blocks/LeftoverPositions.vue.cjs +1 -1
  109. package/dist/prometheus-framework/src/modules/products/components/blocks/LeftoverPositions.vue.js +1 -1
  110. package/dist/prometheus-framework/src/modules/products/components/blocks/ListPositions.vue.cjs +1 -1
  111. package/dist/prometheus-framework/src/modules/products/components/blocks/ListPositions.vue.js +1 -1
  112. package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  113. package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  114. package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.cjs +1 -1
  115. package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.js +1 -1
  116. package/dist/prometheus-framework/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  117. package/dist/prometheus-framework/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  118. package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  119. package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  120. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.cjs +3 -3
  121. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.js +3 -3
  122. package/dist/prometheus-framework/src/modules/products/components/sections/EditModifications.vue.cjs +1 -1
  123. package/dist/prometheus-framework/src/modules/products/components/sections/EditModifications.vue.js +1 -1
  124. package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.cjs +1 -1
  125. package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.js +1 -1
  126. package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
  127. package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  128. package/dist/prometheus-framework/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  129. package/dist/prometheus-framework/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  130. package/dist/prometheus-framework/src/modules/spots/components/layouts/Spots.vue.cjs +2 -2
  131. package/dist/prometheus-framework/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  132. package/dist/prometheus-framework/src/modules/spots/components/pages/Spot.vue.cjs +1 -1
  133. package/dist/prometheus-framework/src/modules/spots/components/pages/Spot.vue.js +1 -1
  134. package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  135. package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  136. package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.cjs +1 -1
  137. package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.js +1 -1
  138. package/dist/prometheus-framework/src/modules/users/components/pages/ProfileBlogposts.vue.cjs +1 -1
  139. package/dist/prometheus-framework/src/modules/users/components/pages/ProfileBlogposts.vue.js +1 -1
  140. package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEdit.vue.cjs +2 -2
  141. package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEdit.vue.js +2 -2
  142. package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEvents.vue.cjs +1 -1
  143. package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEvents.vue.js +1 -1
  144. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  145. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  146. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  147. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  148. package/package.json +1 -1
  149. package/src/builder/webpack/webpack.config.client.js +7 -4
  150. package/src/modules/auth/views/middlewares/ownership.validation.js +45 -0
  151. package/src/modules/community/components/blocks/CardBlogpost.vue +3 -1
  152. package/src/modules/community/components/layouts/Community.vue +5 -7
  153. package/src/modules/community/components/pages/BlogPost.vue +7 -10
  154. package/src/modules/community/models/blogpost.model.js +1 -1
  155. package/src/modules/community/router/blogposts.js +10 -2
  156. package/src/modules/organizations/controllers/organizations.controller.js +26 -34
  157. package/src/modules/organizations/models/department.model.js +14 -0
  158. package/src/styles/base/all.scss +0 -2
  159. package/src/styles/config.scss +6 -0
@@ -1,4 +1,4 @@
1
- import { resolveComponent, openBlock, createElementBlock, createElementVNode, normalizeClass, unref, createVNode, createTextVNode, createCommentVNode, withCtx, Transition, createBlock, resolveDynamicComponent, Fragment, renderList } from "vue";
1
+ import { resolveComponent, openBlock, createElementBlock, createElementVNode, normalizeClass, unref, createVNode, createTextVNode, createCommentVNode, createBlock, withCtx, Transition, resolveDynamicComponent, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import Select from "../../../../components/Select/Select.vue.js";
4
4
  import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
@@ -13,11 +13,11 @@ import { actions, state as state$2 } from "../../../organizations/store/organiza
13
13
  import { mutations } from "../../../organizations/store/memberships.js";
14
14
  const _hoisted_1 = {
15
15
  style: { "grid-template-columns": "2fr 4fr 2fr" },
16
- class: "cols-3 gap-thin pd-thin"
16
+ class: "cols-3 gap-thin pd-t-zero pd-thin"
17
17
  };
18
- const _hoisted_2 = { class: "align-self-start pos-sticky pos-t-0 w-100 bg-light radius-big pd-medium p-medium gap-thin flex-column flex-nowrap flex" };
18
+ const _hoisted_2 = { class: "align-self-start pos-sticky pos-t-0 w-100 bg-light radius-big pd-medium p-medium gap-thin flex-column mobile:flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide" };
19
19
  const _hoisted_3 = { class: "pos-relative" };
20
- const _hoisted_4 = { class: "bg-main t-black radius-big pd-medium pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex" };
20
+ const _hoisted_4 = { class: "bg-light t-black radius-big pd-medium pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex" };
21
21
  const _hoisted_5 = { class: "pos-relative flex-v-center flex-nowrap flex" };
22
22
  const _hoisted_6 = /* @__PURE__ */ createElementVNode("span", { class: "mn-r-thin" }, "Topics for ", -1);
23
23
  const _hoisted_7 = { class: "align-self-start bg-light radius-big pd-medium" };
@@ -79,17 +79,18 @@ const _sfc_main = {
79
79
  createVNode(_sfc_main$4, { class: "i-medium mn-r-thin t-transp" }),
80
80
  createTextVNode(" Following ")
81
81
  ], 2)) : createCommentVNode("", true),
82
- createVNode(_component_router_link, {
82
+ state$1.user._id ? (openBlock(), createBlock(_component_router_link, {
83
+ key: 1,
83
84
  to: {
84
85
  name: "Create BlogPost"
85
86
  },
86
- class: "button t-medium mn-t-small bg-main w-100"
87
+ class: "button t-medium bg-main w-100"
87
88
  }, {
88
89
  default: withCtx(() => [
89
90
  createTextVNode(" Create Post ")
90
91
  ]),
91
92
  _: 1
92
- })
93
+ })) : createCommentVNode("", true)
93
94
  ]),
94
95
  createElementVNode("section", _hoisted_3, [
95
96
  createElementVNode("header", _hoisted_4, [
@@ -100,7 +101,7 @@ const _sfc_main = {
100
101
  select: state.filter.period,
101
102
  "onUpdate:select": _cache[4] || (_cache[4] = ($event) => state.filter.period = $event),
102
103
  placeholder: "all time",
103
- class: "t-semi pos-relative w-max bg-main t-black pd-thin radius-medium h3 t-center br-solid br-2px br-black-transp-10"
104
+ class: "t-semi pos-relative w-max bg-main t-black pd-thin radius-medium h3 t-center"
104
105
  }, null, 8, ["select"])
105
106
  ])
106
107
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["<template>\n\t<div style=\"grid-template-columns: 2fr 4fr 2fr;\" class=\"cols-3 gap-thin pd-thin\">\n\n\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-big pd-medium p-medium gap-thin flex-column flex-nowrap flex\">\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tFeatured\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\t\n\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tPopular\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tRecent\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tFollowing\n\t\t\t</li>\n\n\t\t\t<router-link \n\t\t\t\t:to=\"{\n\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t}\" \n\t\t\t\tclass=\"button t-medium mn-t-small bg-main w-100\"\n\t\t\t>\n\t\t\t\tCreate Post\n\t\t\t</router-link>\n\t\t</ul>\n\n\t\t<section class=\"pos-relative\">\n\n\t\t\t<header class=\"bg-main t-black radius-big pd-medium pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t \t<h3 class=\"pos-relative flex-v-center flex-nowrap flex\">\n\t \t\t<span class=\"mn-r-thin\">Topics for </span>\n\n\t \t\t<Select \n\t\t :options=\"['today','week','month','year','all time']\"\n\t\t v-model:select=\"blog.state.filter.period\" \n\t\t placeholder=\"all time\"\n\t\t class=\"\n\t\t \tt-semi\n\t\t \tpos-relative \n\t\t \tw-max\n\t\t \tbg-main t-black\n\t\t \tpd-thin\n\t\t \tradius-medium\n\t\t h3\n\t\t \tt-center\n\t\t \tbr-solid\n\t\t \tbr-2px\n\t\t \tbr-black-transp-10\n\t\t \"\n\t\t />\n\t \t</h3>\n\t\t\t</header>\n\n\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t</transition>\n\t\t\t</router-view>\n\n\t\t</section>\n\n\t\t<div class=\"align-self-start bg-light radius-big pd-medium\">\n\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t<p class=\"t-medium mn-b-small\">Popular Communities</p>\n\t\t\t\t\n\t\t\t\t<router-link \n\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t:to=\"{\n\t\t\t\t\t\tname: 'Create Organization'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t>\n\t\t\t\t\t+\n\t\t\t\t</router-link>\n\t\t\t</div>\n\n\n\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t<Feed\n\t\t :states=\"{\n\t\t empty: {\n\t\t title: 'No Organization Found',\n\t\t description: 'Currently, there are no organization available.'\n\t\t }\n\t\t }\"\n\t\t :store=\"{\n\t\t read: (options) => organizations.actions.read(options),\n\t\t state: organizations.state\n\t\t }\"\n\t\t :options=\"{\n\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\tlimit: 10\n\t\t }\"\n\t\t v-slot=\"{ \n\t\t items \n\t\t }\"\n\t\t >\n\t\t \t<CardOrganization \n\t \t\t\tv-for=\"organization in items\"\n\t \t:key=\"organization._id\" \n\t\t \t:organization=\"organization\"\n\t\t \t:user=\"auth.state.user\"\n\t\t \t:showProducts=\"false\"\n\t\t \t:showRating=\"false\"\n\t\t \t:showFeatured=\"false\"\n\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\tclass=\"mn-b-thin w-100 pd-0 bg-white radius-big o-hidden\"\n\t\t\t />\n\t\t </Feed>\n\t\t\t</transition>\n\t\t</div>\n</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@pf/src/components/Select/Select.vue'\n\timport Feed from '@pf/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@pf/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@pf/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@pf/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@pf/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@pf/src/modules/icons/entities/IconFollowing.vue'\n\n \t// Import state\n\timport * as blog from '@pf/src/modules/community/store/blogposts.js';\n\timport * as auth from '@pf/src/modules/auth/views/store/auth'\n\timport * as organizations from '@pf/src/modules/organizations/store/organizations'\n\timport * as memberships from '@pf/src/modules/organizations/store/memberships'\n\n\t// State\n\tconst route = useRoute();\n\tconst router = useRouter();\n\n\tif (route.params.category === 'popular') blog.state.sort.param = 'views'; \n\tif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\n\tconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n\t memberships.mutations.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n\t};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","memberships.mutations","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+JC,UAAM,QAAQ;AACd,UAAM,SAAS;AAEf,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAQ,GAAE,YAAY,iBAAiB;AAC3FC,gBAAsB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACjI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["<template>\n\t<div style=\"grid-template-columns: 2fr 4fr 2fr;\" class=\"cols-3 gap-thin pd-t-zero pd-thin\">\n\n\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-big pd-medium p-medium gap-thin flex-column mobile:flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tFeatured\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\t\n\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tPopular\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tRecent\n\t\t\t</li>\n\t\t\t<li \t\n\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-extra\"\n\t\t\t>\n\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\tFollowing\n\t\t\t</li>\n\n\t\t\t<router-link \n\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t:to=\"{\n\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t}\" \n\t\t\t\tclass=\"button t-medium bg-main w-100\"\n\t\t\t>\n\t\t\t\tCreate Post\n\t\t\t</router-link>\n\t\t</ul>\n\n\t\t<section class=\"pos-relative\">\n\n\t\t\t<header class=\"bg-light t-black radius-big pd-medium pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t \t<h3 class=\"pos-relative flex-v-center flex-nowrap flex\">\n\t \t\t<span class=\"mn-r-thin\">Topics for </span>\n\n\t \t\t<Select \n\t\t :options=\"['today','week','month','year','all time']\"\n\t\t v-model:select=\"blog.state.filter.period\" \n\t\t placeholder=\"all time\"\n\t\t class=\"\n\t\t \tt-semi\n\t\t \tpos-relative \n\t\t \tw-max\n\t\t \tbg-main t-black\n\t\t \tpd-thin\n\t\t \tradius-medium\n\t\t h3\n\t\t \tt-center\n\t\t \"\n\t\t />\n\t \t</h3>\n\t\t\t</header>\n\n\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t</transition>\n\t\t\t</router-view>\n\n\t\t</section>\n\n\t\t<div class=\"align-self-start bg-light radius-big pd-medium\">\n\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t<p class=\"t-medium mn-b-small\">Popular Communities</p>\n\t\t\t\t\n\t\t\t\t<router-link \n\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t:to=\"{\n\t\t\t\t\t\tname: 'Create Organization'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t>\n\t\t\t\t\t+\n\t\t\t\t</router-link>\n\t\t\t</div>\n\n\n\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t<Feed\n\t\t :states=\"{\n\t\t empty: {\n\t\t title: 'No Organization Found',\n\t\t description: 'Currently, there are no organization available.'\n\t\t }\n\t\t }\"\n\t\t :store=\"{\n\t\t read: (options) => organizations.actions.read(options),\n\t\t state: organizations.state\n\t\t }\"\n\t\t :options=\"{\n\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\tlimit: 10\n\t\t }\"\n\t\t v-slot=\"{ \n\t\t items \n\t\t }\"\n\t\t >\n\t\t \t<CardOrganization \n\t \t\t\tv-for=\"organization in items\"\n\t \t:key=\"organization._id\" \n\t\t \t:organization=\"organization\"\n\t\t \t:user=\"auth.state.user\"\n\t\t \t:showProducts=\"false\"\n\t\t \t:showRating=\"false\"\n\t\t \t:showFeatured=\"false\"\n\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\tclass=\"mn-b-thin w-100 pd-0 bg-white radius-big o-hidden\"\n\t\t\t />\n\t\t </Feed>\n\t\t\t</transition>\n\t\t</div>\n</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@pf/src/components/Select/Select.vue'\n\timport Feed from '@pf/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@pf/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@pf/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@pf/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@pf/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@pf/src/modules/icons/entities/IconFollowing.vue'\n\n \t// Import state\n\timport * as blog from '@pf/src/modules/community/store/blogposts.js';\n\timport * as auth from '@pf/src/modules/auth/views/store/auth'\n\timport * as organizations from '@pf/src/modules/organizations/store/organizations'\n\timport * as memberships from '@pf/src/modules/organizations/store/memberships'\n\n\t// State\n\tconst route = useRoute();\n\tconst router = useRouter();\n\n\tif (route.params.category === 'popular') blog.state.sort.param = 'views'; \n\tif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\n\tconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n\t memberships.mutations.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n\t};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","memberships.mutations","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6JC,UAAM,QAAQ;AACd,UAAM,SAAS;AAEf,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAQ,GAAE,YAAY,iBAAiB;AAC3FC,gBAAsB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACjI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -30,20 +30,18 @@ const _sfc_main = {
30
30
  const data = ([__temp, __restore] = vue.withAsyncContext(() => blogposts.read({ user: auth.state.user._id, url: route.params.url })), __temp = await __temp, __restore(), __temp);
31
31
  blogpost.value = data[0];
32
32
  isLoading.value = false;
33
- vue.computed(() => {
33
+ const firstImage = vue.computed(() => {
34
34
  var _a;
35
35
  return (_a = blogpost.value) == null ? void 0 : _a.content.find((block) => block.type === "ImageUpload");
36
36
  });
37
- vue.computed(() => {
38
- var _a;
39
- return (_a = blogpost.value) == null ? void 0 : _a.content.find((block) => block.type === "Video");
40
- });
41
37
  const firstText = vue.computed(() => {
42
38
  var _a;
43
- return (_a = blogpost.value) == null ? void 0 : _a.content[2];
39
+ return (_a = blogpost.value) == null ? void 0 : _a.content.find(
40
+ (block) => block.type === "Textarea" && block.class !== "h2"
41
+ );
44
42
  });
45
43
  const metadata = vue.computed(() => {
46
- var _a, _b, _c, _d, _e, _f;
44
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
47
45
  return {
48
46
  title: (_a = blogpost.value) == null ? void 0 : _a.name,
49
47
  description: (_b = firstText.value) == null ? void 0 : _b.content.slice(0, 120),
@@ -52,12 +50,12 @@ const _sfc_main = {
52
50
  // { hid: 'keywords', name: 'keywords', content: t('meta.keywords') },
53
51
  { hid: "og:title", property: "og:title", content: (_d = blogpost.value) == null ? void 0 : _d.name },
54
52
  { hid: "og:description", property: "og:description", content: (_e = firstText.value) == null ? void 0 : _e.content.slice(0, 120) },
55
- // { hid: 'og:image', property: 'og:image', content: base_url + '/favicon/cover.jpg' },
53
+ { hid: "og:image", property: "og:image", content: ((_f = firstImage.value) == null ? void 0 : _f.content) ? process.env.FILE_SERVER_URL + ((_g = firstImage.value) == null ? void 0 : _g.content) : process.env.FILE_SERVER_URL + "/favicon/cover.jpg" },
56
54
  // { hid: 'og:url', property: 'og:url', content: current_url.value },
57
- { hid: "twitter:title", name: "twitter:title", content: (_f = blogpost.value) == null ? void 0 : _f.name },
58
- { hid: "twitter:description", name: "twitter:description", content: firstText.value }
59
- // { hid: 'twitter:image', name: 'twitter:image', content: base_url + '/favicon/cover.jpg' },
60
- // { hid: 'twitter:card', name: 'twitter:card', content: t('meta.twitter.card') },
55
+ { hid: "twitter:title", name: "twitter:title", content: (_h = blogpost.value) == null ? void 0 : _h.name },
56
+ { hid: "twitter:description", name: "twitter:description", content: (_i = firstText.value) == null ? void 0 : _i.content.slice(0, 120) },
57
+ { hid: "twitter:image", name: "twitter:image", content: ((_j = firstImage.value) == null ? void 0 : _j.content) ? process.env.FILE_SERVER_URL + ((_k = firstImage.value) == null ? void 0 : _k.content) : process.env.FILE_SERVER_URL + "/favicon/cover.jpg" },
58
+ { hid: "twitter:card", name: "twitter:card", content: process.env.FILE_SERVER_URL + "/favicon/cover.jpg" }
61
59
  ]
62
60
  };
63
61
  });
@@ -1 +1 @@
1
- {"version":3,"file":"BlogPost.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section class=\"pd-thin\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-light radius-big\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n </TransitionGroup>\n\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n\n\t\t \n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'Blogpost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-medium\"\n >\n\n\t <Viewer\n\t v-if=\"blogpost && blogpost.content\"\n\t :content=\"blogpost.content\"\n\t />\n\n\t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n\t\t\t\t\tCheck Source 🔗\n\t\t\t\t</a>\n\t\t\t\n </CardBlogpost>\n\n \t<h3 class=\"mn-b-small\">Recommended Communities</h3>\n\t\t<Publics \n\t\t\tclass=\"mn-b-small\"\n\t\t/>\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\n\timport { ref, onMounted, computed } from 'vue';\n\timport { useHead } from '@unhead/vue'\n\n\n\timport Loader from '@pf/src/components/Loader/Loader.vue';\n\timport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\n\n\timport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\timport SkeletonBlogpost from '@pf/src/modules/icons/skeletons/SkeletonBlogpost.vue'\n\timport Publics \t\tfrom '@pf/src/modules/organizations/components/sections/Publics.vue'\n\timport Comments from '@pf/src/modules/community/components/sections/Comments.vue';\n\n\timport Viewer from '@pf/src/modules/constructor/components/sections/Viewer.vue';\n\n\timport * as blog from '@pf/src/modules/community/store/blogposts.js';\n\timport * as auth from '@pf/src/modules/auth/views/store/auth';\n\t \n\timport { useRoute } from 'vue-router';\n\n\tconst route = useRoute();\n\n\tconst blogpost = ref(null);\n\tconst isLoading = ref(true);\n\n\tconst canShare = ref(false);\n\n\tonMounted(() => {\n\t canShare.value = !!navigator.share;\n\t});\n\n\tconst share = async () => {\n\t if (!canShare.value) return;\n\n\t console.log('share')\n\t try {\n\t await navigator.share({\n\t title: 'Заголовок вашего контента',\n\t text: 'Описание вашего контента',\n\t // url: window.location.href,\n\t });\n\t console.log('Контент успешно отправлен');\n\t } catch (error) {\n\t console.error('Ошибка при отправке:', error);\n\t }\n\t};\n\n\t// onMounted(async () => {\n\t\tisLoading.value = true;\n\n\t\t// NOTE: You might need to change the method here to fetch blogposts\n\t\tconst data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n\n\t\tblogpost.value = data[0];\n\t\tisLoading.value = false;\n\t// });\n\n\t const firstImage = computed(() => {\n\t return blogpost.value?.content.find(block => block.type === 'ImageUpload');\n\t});\n\n\tconst firstVideo = computed(() => {\n\t return blogpost.value?.content.find(block => block.type === 'Video');\n\t});\n\n\tconst firstText = computed(() => {\n\t return blogpost.value?.content[2]\n\t});\n\n\t const metadata = computed(() => {return {\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0,120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0,120) },\n // { hid: 'keywords', name: 'keywords', content: t('meta.keywords') },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0,120) },\n // { hid: 'og:image', property: 'og:image', content: base_url + '/favicon/cover.jpg' },\n // { hid: 'og:url', property: 'og:url', content: current_url.value },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value },\n // { hid: 'twitter:image', name: 'twitter:image', content: base_url + '/favicon/cover.jpg' },\n // { hid: 'twitter:card', name: 'twitter:card', content: t('meta.twitter.card') },\n ],\n }});\nuseHead(metadata.value)\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["useRoute","ref","onMounted","_withAsyncContext","blog.read","auth.state","computed","useHead"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsFC,UAAM,QAAQA,UAAAA;AAEd,UAAM,WAAWC,QAAI,IAAI;AACzB,UAAM,YAAYA,QAAI,IAAI;AAE1B,UAAM,WAAWA,QAAI,KAAK;AAE1BC,QAAAA,UAAU,MAAM;AACd,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAChC,CAAE;AAmBA,cAAU,QAAQ;AAGlB,UAAM,QAAO,CAAA,QAAA,SAAA,IAAAC,IAAAA,iBAAA,MAAMC,UAAS,KAAC,EAAE,MAAMC,KAAU,MAAC,KAAK,KAAK,KAAK,MAAM,OAAO,IAAG,CAAE,CAAA;AAEjF,aAAS,QAAQ,KAAK,CAAC;AACvB,cAAU,QAAQ;AAGCC,QAAAA,SAAS,MAAM;;AACjC,cAAO,cAAS,UAAT,mBAAgB,QAAQ,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAE;AAEkBA,QAAAA,SAAS,MAAM;;AAChC,cAAO,cAAS,UAAT,mBAAgB,QAAQ,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAE;AAED,UAAM,YAAYA,IAAAA,SAAS,MAAM;;AAC/B,cAAO,cAAS,UAAT,mBAAgB,QAAQ;AAAA,IAClC,CAAE;AAEA,UAAM,WAAWA,aAAS,MAAM;;AAAC,aAAO;AAAA,QACpC,QAAO,cAAS,UAAT,mBAAgB;AAAA,QACvB,cAAa,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE;AAAA,QAC9C,MAAM;AAAA,UACJ,EAAE,KAAK,eAAe,MAAM,eAAe,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA;AAAA,UAE3F,EAAE,KAAK,YAAY,UAAU,YAAY,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UACxE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA;AAAA;AAAA,UAGrG,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,UAAU,cAAS,UAAT,mBAAgB,KAAM;AAAA,UAC/E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,SAAS,UAAU,MAAO;AAAA;AAAA;AAAA,QAGtF;AAAA,MACF;AAAA,IAAA,CAAC;AACNC,iBAAAA,EAAQ,SAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlogPost.vue.cjs","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section class=\"pd-thin\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-light radius-big\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n </TransitionGroup>\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n\n\t\t \n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'Blogpost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-medium\"\n >\n\n\t <Viewer\n\t v-if=\"blogpost && blogpost.content\"\n\t :content=\"blogpost.content\"\n\t />\n\n\t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n\t\t\t\t\tCheck Source 🔗\n\t\t\t\t</a>\n\t\t\t\n </CardBlogpost>\n\n \t<h3 class=\"mn-b-small\">Recommended Communities</h3>\n\t\t<Publics \n\t\t\tclass=\"mn-b-small\"\n\t\t/>\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\n\timport { ref, onMounted, computed } from 'vue';\n\timport { useHead } from '@unhead/vue'\n\n\n\timport Loader from '@pf/src/components/Loader/Loader.vue';\n\timport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\n\n\timport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\timport SkeletonBlogpost from '@pf/src/modules/icons/skeletons/SkeletonBlogpost.vue'\n\timport Publics \t\tfrom '@pf/src/modules/organizations/components/sections/Publics.vue'\n\timport Comments from '@pf/src/modules/community/components/sections/Comments.vue';\n\n\timport Viewer from '@pf/src/modules/constructor/components/sections/Viewer.vue';\n\n\timport * as blog from '@pf/src/modules/community/store/blogposts.js';\n\timport * as auth from '@pf/src/modules/auth/views/store/auth';\n\t \n\timport { useRoute } from 'vue-router';\n\n\tconst route = useRoute();\n\n\tconst blogpost = ref(null);\n\tconst isLoading = ref(true);\n\n\tconst canShare = ref(false);\n\n\tonMounted(() => {\n\t canShare.value = !!navigator.share;\n\t});\n\n\tconst share = async () => {\n\t if (!canShare.value) return;\n\n\t console.log('share')\n\t try {\n\t await navigator.share({\n\t title: 'Заголовок вашего контента',\n\t text: 'Описание вашего контента',\n\t // url: window.location.href,\n\t });\n\t console.log('Контент успешно отправлен');\n\t } catch (error) {\n\t console.error('Ошибка при отправке:', error);\n\t }\n\t};\n\n\t// onMounted(async () => {\n\t\tisLoading.value = true;\n\n\t\t// NOTE: You might need to change the method here to fetch blogposts\n\t\tconst data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n\n\t\tblogpost.value = data[0];\n\t\tisLoading.value = false;\n\t// });\n\n\t const firstImage = computed(() => {\n\t return blogpost.value?.content.find(block => block.type === 'ImageUpload');\n\t});\n\n\tconst firstText = computed(() => {\n\t return blogpost.value?.content.find(block => \n\t block.type === 'Textarea' && block.class !== 'h2'\n\t );\n\t});\n\n\t const metadata = computed(() => {return {\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0,120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0,120) },\n // { hid: 'keywords', name: 'keywords', content: t('meta.keywords') },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0,120) },\n { hid: 'og:image', property: 'og:image', content: firstImage.value?.content ? process.env.FILE_SERVER_URL + firstImage.value?.content : process.env.FILE_SERVER_URL + '/favicon/cover.jpg' },\n // { hid: 'og:url', property: 'og:url', content: current_url.value },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value?.content.slice(0,120) },\n { hid: 'twitter:image', name: 'twitter:image', content: firstImage.value?.content ? process.env.FILE_SERVER_URL + firstImage.value?.content : process.env.FILE_SERVER_URL + '/favicon/cover.jpg' },\n { hid: 'twitter:card', name: 'twitter:card', content: process.env.FILE_SERVER_URL + '/favicon/cover.jpg' },\n ],\n }});\nuseHead(metadata.value)\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["useRoute","ref","onMounted","_withAsyncContext","blog.read","auth.state","computed","useHead"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqFC,UAAM,QAAQA,UAAAA;AAEd,UAAM,WAAWC,QAAI,IAAI;AACzB,UAAM,YAAYA,QAAI,IAAI;AAE1B,UAAM,WAAWA,QAAI,KAAK;AAE1BC,QAAAA,UAAU,MAAM;AACd,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAChC,CAAE;AAmBA,cAAU,QAAQ;AAGlB,UAAM,QAAO,CAAA,QAAA,SAAA,IAAAC,IAAAA,iBAAA,MAAMC,UAAS,KAAC,EAAE,MAAMC,KAAU,MAAC,KAAK,KAAK,KAAK,MAAM,OAAO,IAAG,CAAE,CAAA;AAEjF,aAAS,QAAQ,KAAK,CAAC;AACvB,cAAU,QAAQ;AAGlB,UAAM,aAAaC,IAAAA,SAAS,MAAM;;AACjC,cAAO,cAAS,UAAT,mBAAgB,QAAQ,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAE;AAED,UAAM,YAAYA,IAAAA,SAAS,MAAM;;AAC/B,cAAO,cAAS,UAAT,mBAAgB,QAAQ;AAAA,QAAK,WAClC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA;AAAA,IAElD,CAAE;AAEA,UAAM,WAAWA,aAAS,MAAM;;AAAC,aAAO;AAAA,QACpC,QAAO,cAAS,UAAT,mBAAgB;AAAA,QACvB,cAAa,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE;AAAA,QAC9C,MAAM;AAAA,UACJ,EAAE,KAAK,eAAe,MAAM,eAAe,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA;AAAA,UAE3F,EAAE,KAAK,YAAY,UAAU,YAAY,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UACxE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA,UACrG,EAAE,KAAK,YAAY,UAAU,YAAY,WAAS,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,oBAAkB,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,kBAAkB,qBAAsB;AAAA;AAAA,UAE5L,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,UAAU,cAAS,UAAT,mBAAgB,KAAM;AAAA,UAC/E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA,UAC3G,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,WAAS,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,oBAAkB,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,kBAAkB,qBAAsB;AAAA,UAClM,EAAE,KAAK,gBAAgB,MAAM,gBAAgB,SAAS,QAAQ,IAAI,kBAAkB,qBAAsB;AAAA,QAC3G;AAAA,MACF;AAAA,IAAA,CAAC;AACNC,iBAAAA,EAAQ,SAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -28,20 +28,18 @@ const _sfc_main = {
28
28
  const data = ([__temp, __restore] = withAsyncContext(() => read({ user: state.user._id, url: route.params.url })), __temp = await __temp, __restore(), __temp);
29
29
  blogpost.value = data[0];
30
30
  isLoading.value = false;
31
- computed(() => {
31
+ const firstImage = computed(() => {
32
32
  var _a;
33
33
  return (_a = blogpost.value) == null ? void 0 : _a.content.find((block) => block.type === "ImageUpload");
34
34
  });
35
- computed(() => {
36
- var _a;
37
- return (_a = blogpost.value) == null ? void 0 : _a.content.find((block) => block.type === "Video");
38
- });
39
35
  const firstText = computed(() => {
40
36
  var _a;
41
- return (_a = blogpost.value) == null ? void 0 : _a.content[2];
37
+ return (_a = blogpost.value) == null ? void 0 : _a.content.find(
38
+ (block) => block.type === "Textarea" && block.class !== "h2"
39
+ );
42
40
  });
43
41
  const metadata = computed(() => {
44
- var _a, _b, _c, _d, _e, _f;
42
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
45
43
  return {
46
44
  title: (_a = blogpost.value) == null ? void 0 : _a.name,
47
45
  description: (_b = firstText.value) == null ? void 0 : _b.content.slice(0, 120),
@@ -50,12 +48,12 @@ const _sfc_main = {
50
48
  // { hid: 'keywords', name: 'keywords', content: t('meta.keywords') },
51
49
  { hid: "og:title", property: "og:title", content: (_d = blogpost.value) == null ? void 0 : _d.name },
52
50
  { hid: "og:description", property: "og:description", content: (_e = firstText.value) == null ? void 0 : _e.content.slice(0, 120) },
53
- // { hid: 'og:image', property: 'og:image', content: base_url + '/favicon/cover.jpg' },
51
+ { hid: "og:image", property: "og:image", content: ((_f = firstImage.value) == null ? void 0 : _f.content) ? process.env.FILE_SERVER_URL + ((_g = firstImage.value) == null ? void 0 : _g.content) : process.env.FILE_SERVER_URL + "/favicon/cover.jpg" },
54
52
  // { hid: 'og:url', property: 'og:url', content: current_url.value },
55
- { hid: "twitter:title", name: "twitter:title", content: (_f = blogpost.value) == null ? void 0 : _f.name },
56
- { hid: "twitter:description", name: "twitter:description", content: firstText.value }
57
- // { hid: 'twitter:image', name: 'twitter:image', content: base_url + '/favicon/cover.jpg' },
58
- // { hid: 'twitter:card', name: 'twitter:card', content: t('meta.twitter.card') },
53
+ { hid: "twitter:title", name: "twitter:title", content: (_h = blogpost.value) == null ? void 0 : _h.name },
54
+ { hid: "twitter:description", name: "twitter:description", content: (_i = firstText.value) == null ? void 0 : _i.content.slice(0, 120) },
55
+ { hid: "twitter:image", name: "twitter:image", content: ((_j = firstImage.value) == null ? void 0 : _j.content) ? process.env.FILE_SERVER_URL + ((_k = firstImage.value) == null ? void 0 : _k.content) : process.env.FILE_SERVER_URL + "/favicon/cover.jpg" },
56
+ { hid: "twitter:card", name: "twitter:card", content: process.env.FILE_SERVER_URL + "/favicon/cover.jpg" }
59
57
  ]
60
58
  };
61
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"BlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section class=\"pd-thin\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-light radius-big\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n </TransitionGroup>\n\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n\n\t\t \n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'Blogpost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-medium\"\n >\n\n\t <Viewer\n\t v-if=\"blogpost && blogpost.content\"\n\t :content=\"blogpost.content\"\n\t />\n\n\t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n\t\t\t\t\tCheck Source 🔗\n\t\t\t\t</a>\n\t\t\t\n </CardBlogpost>\n\n \t<h3 class=\"mn-b-small\">Recommended Communities</h3>\n\t\t<Publics \n\t\t\tclass=\"mn-b-small\"\n\t\t/>\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\n\timport { ref, onMounted, computed } from 'vue';\n\timport { useHead } from '@unhead/vue'\n\n\n\timport Loader from '@pf/src/components/Loader/Loader.vue';\n\timport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\n\n\timport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\timport SkeletonBlogpost from '@pf/src/modules/icons/skeletons/SkeletonBlogpost.vue'\n\timport Publics \t\tfrom '@pf/src/modules/organizations/components/sections/Publics.vue'\n\timport Comments from '@pf/src/modules/community/components/sections/Comments.vue';\n\n\timport Viewer from '@pf/src/modules/constructor/components/sections/Viewer.vue';\n\n\timport * as blog from '@pf/src/modules/community/store/blogposts.js';\n\timport * as auth from '@pf/src/modules/auth/views/store/auth';\n\t \n\timport { useRoute } from 'vue-router';\n\n\tconst route = useRoute();\n\n\tconst blogpost = ref(null);\n\tconst isLoading = ref(true);\n\n\tconst canShare = ref(false);\n\n\tonMounted(() => {\n\t canShare.value = !!navigator.share;\n\t});\n\n\tconst share = async () => {\n\t if (!canShare.value) return;\n\n\t console.log('share')\n\t try {\n\t await navigator.share({\n\t title: 'Заголовок вашего контента',\n\t text: 'Описание вашего контента',\n\t // url: window.location.href,\n\t });\n\t console.log('Контент успешно отправлен');\n\t } catch (error) {\n\t console.error('Ошибка при отправке:', error);\n\t }\n\t};\n\n\t// onMounted(async () => {\n\t\tisLoading.value = true;\n\n\t\t// NOTE: You might need to change the method here to fetch blogposts\n\t\tconst data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n\n\t\tblogpost.value = data[0];\n\t\tisLoading.value = false;\n\t// });\n\n\t const firstImage = computed(() => {\n\t return blogpost.value?.content.find(block => block.type === 'ImageUpload');\n\t});\n\n\tconst firstVideo = computed(() => {\n\t return blogpost.value?.content.find(block => block.type === 'Video');\n\t});\n\n\tconst firstText = computed(() => {\n\t return blogpost.value?.content[2]\n\t});\n\n\t const metadata = computed(() => {return {\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0,120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0,120) },\n // { hid: 'keywords', name: 'keywords', content: t('meta.keywords') },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0,120) },\n // { hid: 'og:image', property: 'og:image', content: base_url + '/favicon/cover.jpg' },\n // { hid: 'og:url', property: 'og:url', content: current_url.value },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value },\n // { hid: 'twitter:image', name: 'twitter:image', content: base_url + '/favicon/cover.jpg' },\n // { hid: 'twitter:card', name: 'twitter:card', content: t('meta.twitter.card') },\n ],\n }});\nuseHead(metadata.value)\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["_withAsyncContext","blog.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;AAsFC,UAAM,QAAQ;AAEd,UAAM,WAAW,IAAI,IAAI;AACzB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,WAAW,IAAI,KAAK;AAE1B,cAAU,MAAM;AACd,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAChC,CAAE;AAmBA,cAAU,QAAQ;AAGlB,UAAM,QAAO,CAAA,QAAA,SAAA,IAAAA,iBAAA,MAAMC,KAAU,EAAE,MAAMC,MAAW,KAAK,KAAK,KAAK,MAAM,OAAO,IAAG,CAAE,CAAA;AAEjF,aAAS,QAAQ,KAAK,CAAC;AACvB,cAAU,QAAQ;AAGC,aAAS,MAAM;;AACjC,cAAO,cAAS,UAAT,mBAAgB,QAAQ,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAE;AAEkB,aAAS,MAAM;;AAChC,cAAO,cAAS,UAAT,mBAAgB,QAAQ,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAE;AAED,UAAM,YAAY,SAAS,MAAM;;AAC/B,cAAO,cAAS,UAAT,mBAAgB,QAAQ;AAAA,IAClC,CAAE;AAEA,UAAM,WAAW,SAAS,MAAM;;AAAC,aAAO;AAAA,QACpC,QAAO,cAAS,UAAT,mBAAgB;AAAA,QACvB,cAAa,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE;AAAA,QAC9C,MAAM;AAAA,UACJ,EAAE,KAAK,eAAe,MAAM,eAAe,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA;AAAA,UAE3F,EAAE,KAAK,YAAY,UAAU,YAAY,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UACxE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA;AAAA;AAAA,UAGrG,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,UAAU,cAAS,UAAT,mBAAgB,KAAM;AAAA,UAC/E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,SAAS,UAAU,MAAO;AAAA;AAAA;AAAA,QAGtF;AAAA,MACF;AAAA,IAAA,CAAC;AACN,YAAQ,SAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/BlogPost.vue"],"sourcesContent":["<template>\n <section class=\"pd-thin\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"o-hidden bg-light radius-big\">\n <SkeletonBlogpost\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n </TransitionGroup>\n <transition \n name=\"fade\"\n >\n <EmptyState \n v-if=\"!isLoading && !blogpost\"\n title=\"No Blogpost Found\"\n description=\"Currently, there are no blogposts available. Please check back later.\"\n class=\"pd-medium mn-b-thin bg-light radius-big\"\n />\n </transition>\n\n\n\t\t \n\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"container\">\n \t <!-- <button @click=\"share\" >\n\t\t\t Поделиться\n\t\t\t </button>\n\t\t\t -->\n \t<CardBlogpost \n v-if=\"!isLoading && blogpost\"\n @click=\"$router.push({name: 'Blogpost', params: {url: blogpost.url}})\" \n :blogpost=\"blogpost\" \n :user=\"auth.state.user._id\"\n :type=\"'blogpostPage'\"\n :hideTitle=\"true\"\n class=\"mn-b-medium\"\n >\n\n\t <Viewer\n\t v-if=\"blogpost && blogpost.content\"\n\t :content=\"blogpost.content\"\n\t />\n\n\t\t\t\t<a v-if=\"blogpost.source\" :href=\"blogpost.source\" target=\"_blank\" class=\"mn-b-semi d-block w-max radius-big pd-thin bg-black t-white\">\n\t\t\t\t\tCheck Source 🔗\n\t\t\t\t</a>\n\t\t\t\n </CardBlogpost>\n\n \t<h3 class=\"mn-b-small\">Recommended Communities</h3>\n\t\t<Publics \n\t\t\tclass=\"mn-b-small\"\n\t\t/>\n\n <Comments \n v-if=\"!isLoading && blogpost\" \n :type=\"'blogpost'\" \n :target=\"blogpost._id\" \n :owner=\"auth.state.user._id\"\n />\n \n </TransitionGroup> \n \n </section>\n</template>\n\n<script setup>\n\timport { ref, onMounted, computed } from 'vue';\n\timport { useHead } from '@unhead/vue'\n\n\n\timport Loader from '@pf/src/components/Loader/Loader.vue';\n\timport EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';\n\n\timport CardBlogpost from '@pf/src/modules/community/components/blocks/CardBlogpost.vue';\n\timport SkeletonBlogpost from '@pf/src/modules/icons/skeletons/SkeletonBlogpost.vue'\n\timport Publics \t\tfrom '@pf/src/modules/organizations/components/sections/Publics.vue'\n\timport Comments from '@pf/src/modules/community/components/sections/Comments.vue';\n\n\timport Viewer from '@pf/src/modules/constructor/components/sections/Viewer.vue';\n\n\timport * as blog from '@pf/src/modules/community/store/blogposts.js';\n\timport * as auth from '@pf/src/modules/auth/views/store/auth';\n\t \n\timport { useRoute } from 'vue-router';\n\n\tconst route = useRoute();\n\n\tconst blogpost = ref(null);\n\tconst isLoading = ref(true);\n\n\tconst canShare = ref(false);\n\n\tonMounted(() => {\n\t canShare.value = !!navigator.share;\n\t});\n\n\tconst share = async () => {\n\t if (!canShare.value) return;\n\n\t console.log('share')\n\t try {\n\t await navigator.share({\n\t title: 'Заголовок вашего контента',\n\t text: 'Описание вашего контента',\n\t // url: window.location.href,\n\t });\n\t console.log('Контент успешно отправлен');\n\t } catch (error) {\n\t console.error('Ошибка при отправке:', error);\n\t }\n\t};\n\n\t// onMounted(async () => {\n\t\tisLoading.value = true;\n\n\t\t// NOTE: You might need to change the method here to fetch blogposts\n\t\tconst data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n\n\t\tblogpost.value = data[0];\n\t\tisLoading.value = false;\n\t// });\n\n\t const firstImage = computed(() => {\n\t return blogpost.value?.content.find(block => block.type === 'ImageUpload');\n\t});\n\n\tconst firstText = computed(() => {\n\t return blogpost.value?.content.find(block => \n\t block.type === 'Textarea' && block.class !== 'h2'\n\t );\n\t});\n\n\t const metadata = computed(() => {return {\n title: blogpost.value?.name,\n description: firstText.value?.content.slice(0,120),\n meta: [\n { hid: 'description', name: 'description', content: firstText.value?.content.slice(0,120) },\n // { hid: 'keywords', name: 'keywords', content: t('meta.keywords') },\n { hid: 'og:title', property: 'og:title', content: blogpost.value?.name },\n { hid: 'og:description', property: 'og:description', content: firstText.value?.content.slice(0,120) },\n { hid: 'og:image', property: 'og:image', content: firstImage.value?.content ? process.env.FILE_SERVER_URL + firstImage.value?.content : process.env.FILE_SERVER_URL + '/favicon/cover.jpg' },\n // { hid: 'og:url', property: 'og:url', content: current_url.value },\n { hid: 'twitter:title', name: 'twitter:title', content: blogpost.value?.name },\n { hid: 'twitter:description', name: 'twitter:description', content: firstText.value?.content.slice(0,120) },\n { hid: 'twitter:image', name: 'twitter:image', content: firstImage.value?.content ? process.env.FILE_SERVER_URL + firstImage.value?.content : process.env.FILE_SERVER_URL + '/favicon/cover.jpg' },\n { hid: 'twitter:card', name: 'twitter:card', content: process.env.FILE_SERVER_URL + '/favicon/cover.jpg' },\n ],\n }});\nuseHead(metadata.value)\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["_withAsyncContext","blog.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;AAqFC,UAAM,QAAQ;AAEd,UAAM,WAAW,IAAI,IAAI;AACzB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,WAAW,IAAI,KAAK;AAE1B,cAAU,MAAM;AACd,eAAS,QAAQ,CAAC,CAAC,UAAU;AAAA,IAChC,CAAE;AAmBA,cAAU,QAAQ;AAGlB,UAAM,QAAO,CAAA,QAAA,SAAA,IAAAA,iBAAA,MAAMC,KAAU,EAAE,MAAMC,MAAW,KAAK,KAAK,KAAK,MAAM,OAAO,IAAG,CAAE,CAAA;AAEjF,aAAS,QAAQ,KAAK,CAAC;AACvB,cAAU,QAAQ;AAGlB,UAAM,aAAa,SAAS,MAAM;;AACjC,cAAO,cAAS,UAAT,mBAAgB,QAAQ,KAAK,WAAS,MAAM,SAAS;AAAA,IAC/D,CAAE;AAED,UAAM,YAAY,SAAS,MAAM;;AAC/B,cAAO,cAAS,UAAT,mBAAgB,QAAQ;AAAA,QAAK,WAClC,MAAM,SAAS,cAAc,MAAM,UAAU;AAAA;AAAA,IAElD,CAAE;AAEA,UAAM,WAAW,SAAS,MAAM;;AAAC,aAAO;AAAA,QACpC,QAAO,cAAS,UAAT,mBAAgB;AAAA,QACvB,cAAa,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE;AAAA,QAC9C,MAAM;AAAA,UACJ,EAAE,KAAK,eAAe,MAAM,eAAe,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA;AAAA,UAE3F,EAAE,KAAK,YAAY,UAAU,YAAY,UAAS,cAAS,UAAT,mBAAgB,KAAM;AAAA,UACxE,EAAE,KAAK,kBAAkB,UAAU,kBAAkB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA,UACrG,EAAE,KAAK,YAAY,UAAU,YAAY,WAAS,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,oBAAkB,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,kBAAkB,qBAAsB;AAAA;AAAA,UAE5L,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,UAAU,cAAS,UAAT,mBAAgB,KAAM;AAAA,UAC/E,EAAE,KAAK,uBAAuB,MAAM,uBAAuB,UAAS,eAAU,UAAV,mBAAiB,QAAQ,MAAM,GAAE,KAAM;AAAA,UAC3G,EAAE,KAAK,iBAAiB,MAAM,iBAAiB,WAAS,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,oBAAkB,gBAAW,UAAX,mBAAkB,WAAU,QAAQ,IAAI,kBAAkB,qBAAsB;AAAA,UAClM,EAAE,KAAK,gBAAgB,MAAM,gBAAgB,SAAS,QAAQ,IAAI,kBAAkB,qBAAsB;AAAA,QAC3G;AAAA,MACF;AAAA,IAAA,CAAC;AACN,YAAQ,SAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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 _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
6
6
  ;/* empty css */
7
7
  ;/* empty css */
@@ -1,5 +1,5 @@
1
1
  import { withAsyncContext, ref, computed, openBlock, createElementBlock, createElementVNode, unref, Fragment, renderList, createBlock, withCtx, pushScopeId, popScopeId } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
4
4
  /* empty css */
5
5
  /* empty css */
@@ -9,7 +9,7 @@ const Popup = require("../../../../components/Popup/Popup.vue.cjs");
9
9
  ;/* empty css */
10
10
  const BlockTags = require("../../../../components/FieldTags/BlockTags.vue.cjs");
11
11
  const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
12
- const Field = require("../../../../components/Field/Field.vue2.cjs");
12
+ const Field = require("../../../../components/Field/Field.vue.cjs");
13
13
  const SelectMulti = require("../../../../components/SelectMulti/SelectMulti.vue.cjs");
14
14
  const Button = require("../../../../components/Button/Button.vue.cjs");
15
15
  const vueRouter = require("vue-router");
@@ -7,7 +7,7 @@ import _sfc_main$2 from "../../../../components/Popup/Popup.vue.js";
7
7
  /* empty css */
8
8
  import _sfc_main$3 from "../../../../components/FieldTags/BlockTags.vue.js";
9
9
  import _sfc_main$4 from "../../../../components/Checkbox/Checkbox.vue.js";
10
- import Field from "../../../../components/Field/Field.vue2.js";
10
+ import Field from "../../../../components/Field/Field.vue.js";
11
11
  import SelectMulti from "../../../../components/SelectMulti/SelectMulti.vue.js";
12
12
  import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
13
13
  import { useRoute, useRouter } from "vue-router";
@@ -4,8 +4,8 @@ const vue = require("vue");
4
4
  ;/* empty css */
5
5
  ;/* empty css */
6
6
  ;/* empty css */
7
- ;/* empty css */
8
- ;/* empty css */
7
+ ;/* empty css */
8
+ ;/* empty css */
9
9
  ;/* empty css */
10
10
  const Slider = require("../../../../components/Slider/Slider.vue.cjs");
11
11
  const CardBlogpost = require("../blocks/CardBlogpost.vue.cjs");
@@ -2,8 +2,8 @@ import { resolveComponent, openBlock, createElementBlock, createElementVNode, cr
2
2
  /* empty css */
3
3
  /* empty css */
4
4
  /* empty css */
5
- /* empty css */
6
- /* empty css */
5
+ /* empty css */
6
+ /* empty css */
7
7
  /* empty css */
8
8
  import _sfc_main$1 from "../../../../components/Slider/Slider.vue.js";
9
9
  import _sfc_main$2 from "../blocks/CardBlogpost.vue.js";
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const Community = require("../components/layouts/Community.vue.cjs");
4
+ const auth_validation = require("../../auth/views/middlewares/auth.validation.cjs");
5
+ const ownership_validation = require("../../auth/views/middlewares/ownership.validation.cjs");
4
6
  const community = [
5
7
  {
6
8
  path: "community",
@@ -38,9 +40,11 @@ const community = [
38
40
  title: {
39
41
  en: "Create Post",
40
42
  ru: "Создать Пост"
41
- },
42
- authorize: []
43
+ }
43
44
  },
45
+ beforeEnter: [
46
+ auth_validation.requiresAuth
47
+ ],
44
48
  component: () => Promise.resolve().then(() => require(
45
49
  /* webpackChunkName: 'CreateBlogPost' */
46
50
  "../components/pages/CreateBlogPost.vue.cjs"
@@ -67,9 +71,12 @@ const community = [
67
71
  title: {
68
72
  en: "Edit Post",
69
73
  ru: "Редактировать пост"
70
- },
71
- authorize: []
74
+ }
72
75
  },
76
+ beforeEnter: [
77
+ auth_validation.requiresAuth,
78
+ ownership_validation.requiresEditAccess
79
+ ],
73
80
  component: () => Promise.resolve().then(() => require(
74
81
  /* webpackChunkName: 'CreateBlogPost' */
75
82
  "../components/pages/CreateBlogPost.vue.cjs"
@@ -1 +1 @@
1
- {"version":3,"file":"blogposts.cjs","sources":["../../../../../../src/modules/community/router/blogposts.js"],"sourcesContent":["import layoutCommunity from '../components/layouts/Community.vue'\n\nconst community = [\n {\n path: 'community',\n component: layoutCommunity,\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n breadcrumbs: {\n hidden: true\n },\n title_hide: true\n\n },\n children: [{\n path: ':category?',\n name: 'Blog',\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n title_hide: true\n },\n component: () => import(/* webpackChunkName: 'Blog' */ '../components/pages/Blog.vue')\n }]\n },{\n path: 'community/posts/create',\n name: 'Create BlogPost',\n meta: {\n title: {\n en: 'Create Post',\n ru: 'Создать Пост'\n },\n authorize: []\n },\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n },{\n path: 'community/posts/:url',\n name: 'BlogPost',\n meta: {\n title: {\n en: 'Post',\n ru: 'Пост'\n }\n },\n component: () => import(/* webpackChunkName: 'BlogPost' */ '../components/pages/BlogPost.vue')\n },{\n path: 'community/posts/:url/edit',\n name: 'Edit BlogPost',\n meta: {\n title: {\n en: 'Edit Post',\n ru: 'Редактировать пост'\n },\n authorize: []\n },\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n }\n\n];\n\nexport default community;"],"names":["layoutCommunity"],"mappings":";;;AAEK,MAAC,YAAY;AAAA,EAChB;AAAA,IACE,MAAM;AAAA,IACN,WAAWA,UAAe;AAAA,IAC1B,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,aAAa;AAAA,QACX,QAAQ;AAAA,MACT;AAAA,MACD,YAAY;AAAA,IAEb;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACL;AAAA,QACD,YAAY;AAAA,MACb;AAAA,MACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,QAA+B;AAAA,MAA8B,CAAC;AAAA,IAC5F,CAAK;AAAA,EACL;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,WAAW,CAAE;AAAA,IACd;AAAA,IACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,MAAyC;AAAA,IAAwC,CAAC;AAAA,EAC9G;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,MAAmC;AAAA,IAAkC,CAAC;AAAA,EAClG;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACL,MAAM;AAAA,MACL,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,WAAW,CAAE;AAAA,IACd;AAAA,IACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,MAAyC;AAAA,IAAwC,CAAC;AAAA,EAC3G;AAEH;;"}
1
+ {"version":3,"file":"blogposts.cjs","sources":["../../../../../../src/modules/community/router/blogposts.js"],"sourcesContent":["import layoutCommunity from '../components/layouts/Community.vue'\nimport * as validationAuth from '@pf/src/modules/auth/views/middlewares/auth.validation';\nimport * as validationOwnership from '@pf/src/modules/auth/views/middlewares/ownership.validation';\n\n\nconst community = [\n {\n path: 'community',\n component: layoutCommunity,\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n breadcrumbs: {\n hidden: true\n },\n title_hide: true\n\n },\n children: [{\n path: ':category?',\n name: 'Blog',\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n title_hide: true\n },\n component: () => import(/* webpackChunkName: 'Blog' */ '../components/pages/Blog.vue')\n }]\n },{\n path: 'community/posts/create',\n name: 'Create BlogPost',\n meta: {\n title: {\n en: 'Create Post',\n ru: 'Создать Пост'\n },\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n ],\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n },{\n path: 'community/posts/:url',\n name: 'BlogPost',\n meta: {\n title: {\n en: 'Post',\n ru: 'Пост'\n }\n },\n component: () => import(/* webpackChunkName: 'BlogPost' */ '../components/pages/BlogPost.vue')\n },{\n path: 'community/posts/:url/edit',\n name: 'Edit BlogPost',\n meta: {\n title: {\n en: 'Edit Post',\n ru: 'Редактировать пост'\n },\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n validationOwnership.requiresEditAccess\n ],\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n }\n\n];\n\nexport default community;"],"names":["layoutCommunity","validationAuth.requiresAuth","validationOwnership.requiresEditAccess"],"mappings":";;;;;AAKK,MAAC,YAAY;AAAA,EAChB;AAAA,IACE,MAAM;AAAA,IACN,WAAWA,UAAe;AAAA,IAC1B,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,aAAa;AAAA,QACX,QAAQ;AAAA,MACT;AAAA,MACD,YAAY;AAAA,IAEb;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACL;AAAA,QACD,YAAY;AAAA,MACb;AAAA,MACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,QAA+B;AAAA,MAA8B,CAAC;AAAA,IAC5F,CAAK;AAAA,EACL;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,aAAa;AAAA,MACXC,gBAA2B;AAAA,IAC5B;AAAA,IACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,MAAyC;AAAA,IAAwC,CAAC;AAAA,EAC9G;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,MAAmC;AAAA,IAAkC,CAAC;AAAA,EAClG;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACL,MAAM;AAAA,MACL,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,aAAa;AAAA,MACXA,gBAA2B;AAAA,MAC3BC,qBAAsC;AAAA,IACvC;AAAA,IACD,WAAW,MAAM,QAAO,QAAA,EAAA,KAAA,MAAA;AAAA;AAAA,MAAyC;AAAA,IAAwC,CAAC;AAAA,EAC3G;AAEH;;"}
@@ -1,4 +1,6 @@
1
1
  import _sfc_main from "../components/layouts/Community.vue.js";
2
+ import { requiresAuth } from "../../auth/views/middlewares/auth.validation.js";
3
+ import { requiresEditAccess } from "../../auth/views/middlewares/ownership.validation.js";
2
4
  const community = [
3
5
  {
4
6
  path: "community",
@@ -36,9 +38,11 @@ const community = [
36
38
  title: {
37
39
  en: "Create Post",
38
40
  ru: "Создать Пост"
39
- },
40
- authorize: []
41
+ }
41
42
  },
43
+ beforeEnter: [
44
+ requiresAuth
45
+ ],
42
46
  component: () => import(
43
47
  /* webpackChunkName: 'CreateBlogPost' */
44
48
  "../components/pages/CreateBlogPost.vue.js"
@@ -65,9 +69,12 @@ const community = [
65
69
  title: {
66
70
  en: "Edit Post",
67
71
  ru: "Редактировать пост"
68
- },
69
- authorize: []
72
+ }
70
73
  },
74
+ beforeEnter: [
75
+ requiresAuth,
76
+ requiresEditAccess
77
+ ],
71
78
  component: () => import(
72
79
  /* webpackChunkName: 'CreateBlogPost' */
73
80
  "../components/pages/CreateBlogPost.vue.js"
@@ -1 +1 @@
1
- {"version":3,"file":"blogposts.js","sources":["../../../../../../src/modules/community/router/blogposts.js"],"sourcesContent":["import layoutCommunity from '../components/layouts/Community.vue'\n\nconst community = [\n {\n path: 'community',\n component: layoutCommunity,\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n breadcrumbs: {\n hidden: true\n },\n title_hide: true\n\n },\n children: [{\n path: ':category?',\n name: 'Blog',\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n title_hide: true\n },\n component: () => import(/* webpackChunkName: 'Blog' */ '../components/pages/Blog.vue')\n }]\n },{\n path: 'community/posts/create',\n name: 'Create BlogPost',\n meta: {\n title: {\n en: 'Create Post',\n ru: 'Создать Пост'\n },\n authorize: []\n },\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n },{\n path: 'community/posts/:url',\n name: 'BlogPost',\n meta: {\n title: {\n en: 'Post',\n ru: 'Пост'\n }\n },\n component: () => import(/* webpackChunkName: 'BlogPost' */ '../components/pages/BlogPost.vue')\n },{\n path: 'community/posts/:url/edit',\n name: 'Edit BlogPost',\n meta: {\n title: {\n en: 'Edit Post',\n ru: 'Редактировать пост'\n },\n authorize: []\n },\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n }\n\n];\n\nexport default community;"],"names":["layoutCommunity"],"mappings":";AAEK,MAAC,YAAY;AAAA,EAChB;AAAA,IACE,MAAM;AAAA,IACN,WAAWA;AAAAA,IACX,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,aAAa;AAAA,QACX,QAAQ;AAAA,MACT;AAAA,MACD,YAAY;AAAA,IAEb;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACL;AAAA,QACD,YAAY;AAAA,MACb;AAAA,MACD,WAAW,MAAM;AAAA;AAAA,QAAsC;AAAA,MAA8B;AAAA,IAC3F,CAAK;AAAA,EACL;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,WAAW,CAAE;AAAA,IACd;AAAA,IACD,WAAW,MAAM;AAAA;AAAA,MAAgD;AAAA,IAAwC;AAAA,EAC7G;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,WAAW,MAAM;AAAA;AAAA,MAA0C;AAAA,IAAkC;AAAA,EACjG;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACL,MAAM;AAAA,MACL,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,WAAW,CAAE;AAAA,IACd;AAAA,IACD,WAAW,MAAM;AAAA;AAAA,MAAgD;AAAA,IAAwC;AAAA,EAC1G;AAEH;"}
1
+ {"version":3,"file":"blogposts.js","sources":["../../../../../../src/modules/community/router/blogposts.js"],"sourcesContent":["import layoutCommunity from '../components/layouts/Community.vue'\nimport * as validationAuth from '@pf/src/modules/auth/views/middlewares/auth.validation';\nimport * as validationOwnership from '@pf/src/modules/auth/views/middlewares/ownership.validation';\n\n\nconst community = [\n {\n path: 'community',\n component: layoutCommunity,\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n breadcrumbs: {\n hidden: true\n },\n title_hide: true\n\n },\n children: [{\n path: ':category?',\n name: 'Blog',\n meta: {\n title: {\n en: 'Community',\n ru: 'Коммьюнити'\n },\n title_hide: true\n },\n component: () => import(/* webpackChunkName: 'Blog' */ '../components/pages/Blog.vue')\n }]\n },{\n path: 'community/posts/create',\n name: 'Create BlogPost',\n meta: {\n title: {\n en: 'Create Post',\n ru: 'Создать Пост'\n },\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n ],\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n },{\n path: 'community/posts/:url',\n name: 'BlogPost',\n meta: {\n title: {\n en: 'Post',\n ru: 'Пост'\n }\n },\n component: () => import(/* webpackChunkName: 'BlogPost' */ '../components/pages/BlogPost.vue')\n },{\n path: 'community/posts/:url/edit',\n name: 'Edit BlogPost',\n meta: {\n title: {\n en: 'Edit Post',\n ru: 'Редактировать пост'\n },\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n validationOwnership.requiresEditAccess\n ],\n component: () => import(/* webpackChunkName: 'CreateBlogPost' */ '../components/pages/CreateBlogPost.vue')\n }\n\n];\n\nexport default community;"],"names":["layoutCommunity","validationAuth.requiresAuth","validationOwnership.requiresEditAccess"],"mappings":";;;AAKK,MAAC,YAAY;AAAA,EAChB;AAAA,IACE,MAAM;AAAA,IACN,WAAWA;AAAAA,IACX,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACD,aAAa;AAAA,QACX,QAAQ;AAAA,MACT;AAAA,MACD,YAAY;AAAA,IAEb;AAAA,IACD,UAAU,CAAC;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACL;AAAA,QACD,YAAY;AAAA,MACb;AAAA,MACD,WAAW,MAAM;AAAA;AAAA,QAAsC;AAAA,MAA8B;AAAA,IAC3F,CAAK;AAAA,EACL;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,aAAa;AAAA,MACXC;AAAAA,IACD;AAAA,IACD,WAAW,MAAM;AAAA;AAAA,MAAgD;AAAA,IAAwC;AAAA,EAC7G;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,WAAW,MAAM;AAAA;AAAA,MAA0C;AAAA,IAAkC;AAAA,EACjG;AAAA,EAAI;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACL,MAAM;AAAA,MACL,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,IACF;AAAA,IACD,aAAa;AAAA,MACXA;AAAAA,MACAC;AAAAA,IACD;AAAA,IACD,WAAW,MAAM;AAAA;AAAA,MAAgD;AAAA,IAAwC;AAAA,EAC1G;AAEH;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Field = require("../../../../components/Field/Field.vue2.cjs");
4
+ const Field = require("../../../../components/Field/Field.vue.cjs");
5
5
  const _hoisted_1 = { class: "mn-b-thin w-100 pd-medium bg-white radius-medium" };
6
6
  const _hoisted_2 = ["innerHTML"];
7
7
  const _hoisted_3 = {
@@ -1,5 +1,5 @@
1
1
  import { ref, openBlock, createElementBlock, createVNode, createElementVNode } from "vue";
2
- import Field from "../../../../components/Field/Field.vue2.js";
2
+ import Field from "../../../../components/Field/Field.vue.js";
3
3
  const _hoisted_1 = { class: "mn-b-thin w-100 pd-medium bg-white radius-medium" };
4
4
  const _hoisted_2 = ["innerHTML"];
5
5
  const _hoisted_3 = {
@@ -9,7 +9,7 @@ const vueDatepicker = require("../../../../../../node_modules/@vuepic/vue-datepi
9
9
  ;/* empty css */
10
10
  const Block = require("../../../../components/Block/Block.vue.cjs");
11
11
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
12
- const Field = require("../../../../components/Field/Field.vue2.cjs");
12
+ const Field = require("../../../../components/Field/Field.vue.cjs");
13
13
  const BlockTags = require("../../../../components/FieldTags/BlockTags.vue.cjs");
14
14
  const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
15
15
  const SelectMulti = require("../../../../components/SelectMulti/SelectMulti.vue.cjs");
@@ -7,7 +7,7 @@ import Vn from "../../../../../../node_modules/@vuepic/vue-datepicker/dist/vue-d
7
7
  /* empty css */
8
8
  import _sfc_main$4 from "../../../../components/Block/Block.vue.js";
9
9
  import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
10
- import Field from "../../../../components/Field/Field.vue2.js";
10
+ import Field from "../../../../components/Field/Field.vue.js";
11
11
  import _sfc_main$8 from "../../../../components/FieldTags/BlockTags.vue.js";
12
12
  import _sfc_main$2 from "../../../../components/Checkbox/Checkbox.vue.js";
13
13
  import SelectMulti from "../../../../components/SelectMulti/SelectMulti.vue.js";
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
5
5
  const Block = require("../../../../components/Block/Block.vue.cjs");
6
6
  const Popup = require("../../../../components/Popup/Popup.vue.cjs");
7
- const Field = require("../../../../components/Field/Field.vue2.cjs");
7
+ const Field = require("../../../../components/Field/Field.vue.cjs");
8
8
  const Button = require("../../../../components/Button/Button.vue.cjs");
9
9
  const ButtonCheck = require("../elements/ButtonCheck.vue.cjs");
10
10
  const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
@@ -2,7 +2,7 @@ import { ref, onMounted, unref, openBlock, createElementBlock, createElementVNod
2
2
  import _sfc_main$6 from "../../../../components/Feed/Feed.vue.js";
3
3
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
4
4
  import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
5
- import Field from "../../../../components/Field/Field.vue2.js";
5
+ import Field from "../../../../components/Field/Field.vue.js";
6
6
  import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
7
7
  import ButtonCheck from "../elements/ButtonCheck.vue.js";
8
8
  import _sfc_main$4 from "../../../icons/navigation/IconDelete.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
  const vueRouter = require("vue-router");
5
- ;/* empty css */
5
+ ;/* empty css */
6
6
  const Button = require("../../../../components/Button/Button.vue.cjs");
7
7
  ;/* empty css */
8
8
  const Chips = require("../../../../components/Chips/Chips.vue.cjs");
@@ -1,6 +1,6 @@
1
1
  import { ref, openBlock, createElementBlock, createVNode, unref, isRef, withCtx, Fragment, renderList, createElementVNode, toDisplayString, createBlock, createCommentVNode, createTextVNode } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _sfc_main$9 from "../../../../components/Button/Button.vue.js";
5
5
  /* empty css */
6
6
  import _sfc_main$4 from "../../../../components/Chips/Chips.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
  const Checkbox = require("../../../../../components/Checkbox/Checkbox.vue.cjs");
5
- const Spoiler = require("../../../../../components/Spoiler/Spoiler.vue.cjs");
5
+ const Spoiler = require("../../../../../components/Spoiler/Spoiler.vue2.cjs");
6
6
  const IconChevronBottom = require("../../../../icons/navigation/IconChevronBottom.vue.cjs");
7
7
  const _hoisted_1 = { class: "w-100 o-scroll" };
8
8
  const _hoisted_2 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
@@ -1,6 +1,6 @@
1
1
  import { mergeModels, useModel, openBlock, createElementBlock, Fragment, renderList, createBlock, withCtx, createElementVNode, toDisplayString, createVNode, normalizeClass } from "vue";
2
2
  import _sfc_main$2 from "../../../../../components/Checkbox/Checkbox.vue.js";
3
- import _sfc_main$1 from "../../../../../components/Spoiler/Spoiler.vue.js";
3
+ import _sfc_main$1 from "../../../../../components/Spoiler/Spoiler.vue2.js";
4
4
  import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
5
5
  const _hoisted_1 = { class: "w-100 o-scroll" };
6
6
  const _hoisted_2 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const IconSearch = require("../../../../icons/navigation/IconSearch.vue.cjs");
5
- const Field = require("../../../../../components/Field/Field.vue2.cjs");
5
+ const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const _hoisted_1 = { class: "flex-v-center flex-nowrap flex pd-small bg-light w-100 radius-big" };
7
7
  const _sfc_main = {
8
8
  __name: "BlockSearch",
@@ -1,6 +1,6 @@
1
1
  import { ref, openBlock, createElementBlock, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../icons/navigation/IconSearch.vue.js";
3
- import Field from "../../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../../components/Field/Field.vue.js";
4
4
  const _hoisted_1 = { class: "flex-v-center flex-nowrap flex pd-small bg-light w-100 radius-big" };
5
5
  const _sfc_main = {
6
6
  __name: "BlockSearch",
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
5
5
  const _hoisted_1 = { class: "pd-medium flex-v-center flex-nowrap flex" };
6
6
  const _hoisted_2 = { class: "mn-r-auto" };
7
7
  const _hoisted_3 = ["onClick"];
@@ -1,5 +1,5 @@
1
1
  import { resolveComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, Fragment, renderList, createBlock, normalizeClass, withCtx, createTextVNode, createCommentVNode } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
3
3
  const _hoisted_1 = { class: "pd-medium flex-v-center flex-nowrap flex" };
4
4
  const _hoisted_2 = { class: "mn-r-auto" };
5
5
  const _hoisted_3 = ["onClick"];