@ozdao/prometheus-framework 0.1.13 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,439 @@
1
+ import { reactive as z, watch as B, openBlock as o, createElementBlock as i, toDisplayString as d, createCommentVNode as c, createElementVNode as b, ref as g, createTextVNode as I, computed as L, createBlock as w, withModifiers as T, createVNode as k, normalizeClass as N, unref as m, renderSlot as O, onMounted as U, Transition as $, withCtx as j, Fragment as A, renderList as M } from "vue";
2
+ import { _ as F } from "./EmptyState-34d85f10.mjs";
3
+ import { _ as V } from "./_plugin-vue_export-helper-dad06003.mjs";
4
+ import { _ as q, a as D } from "./Chips-03ff0c34.mjs";
5
+ import { useRouter as G } from "vue-router";
6
+ import { a as E } from "./auth-962e3b73.mjs";
7
+ import { s as p } from "./globals-96ba60e4.mjs";
8
+ import { I as H } from "./IconEdit-eacf3856.mjs";
9
+ const _ = E.create({ baseURL: process.env.API_URL, withCredentials: !0 });
10
+ _.defaults.withCredentials = !0;
11
+ const f = z({
12
+ all: [],
13
+ filter: {
14
+ // query
15
+ tags: [],
16
+ period: ""
17
+ // pagination
18
+ },
19
+ pagination: {
20
+ page: 1,
21
+ perPage: 18
22
+ },
23
+ // Sort
24
+ sort: {
25
+ current: "popularity",
26
+ ascending: !1
27
+ },
28
+ current: {
29
+ _id: "",
30
+ url: "",
31
+ status: "",
32
+ name: "",
33
+ tags: [],
34
+ owner: {},
35
+ date: "",
36
+ views: 0,
37
+ content: []
38
+ }
39
+ });
40
+ async function R(e = {}) {
41
+ e.params = e.params || {}, e.params.skip = e.skip || 0, e.params.limit = e.limit || 9, e.params.tags = e.tags || [], e.period && (e.params.period = e.period), e.url && (e.params = { url: e.url }), e.category && (e.params.category = e.category), e.organization && (e.params.organization = e.organization), e.owner && (e.params.owner = e.owner), e.creator && (e.params.creator = e.creator), e.status && (e.params.status = e.status), e.user && (e.params.user = e.user), e.params.skip = e.skip || 0, e.params.limit = e.limit || 10;
42
+ try {
43
+ console.log("Request params:" + e.params);
44
+ const t = await _.get("/api/blog/read", { params: e.params });
45
+ return e.url ? P(t.data, "current") : P(t.data, "all"), Promise.resolve(t.data);
46
+ } catch (t) {
47
+ return p(t), Promise.reject(t);
48
+ }
49
+ }
50
+ async function J(e) {
51
+ return _.post("/api/blog/create", e).then(
52
+ (t) => (P(t.data, "current"), Promise.resolve(t.data)),
53
+ (t) => (p(t), Promise.reject(t))
54
+ );
55
+ }
56
+ async function K(e) {
57
+ return _.post("/api/blog/update", e).then(
58
+ (t) => (P(t.data, "current"), Promise.resolve(t.data)),
59
+ (t) => (p(t), Promise.reject(t))
60
+ );
61
+ }
62
+ async function Q(e) {
63
+ return await _.delete(`/api/blog/delete/${e}`).then(
64
+ (t) => {
65
+ const a = f.all.findIndex((r) => r._id === e);
66
+ return a !== -1 && f.all.splice(a, 1), Promise.resolve(t.data);
67
+ },
68
+ (t) => (p(t), Promise.reject(t))
69
+ );
70
+ }
71
+ function P(e, t) {
72
+ f[t] = e;
73
+ }
74
+ function W() {
75
+ f.current = {
76
+ _id: "",
77
+ url: "",
78
+ status: "",
79
+ name: "",
80
+ tags: [],
81
+ author: "",
82
+ owner: "",
83
+ date: "",
84
+ views: 0,
85
+ content: []
86
+ };
87
+ }
88
+ function X(e) {
89
+ const t = {
90
+ order: f.project.content.length + 1,
91
+ type: e.type,
92
+ data: e.data,
93
+ class: e.class,
94
+ content: e.content
95
+ };
96
+ f.project.content.push(t);
97
+ }
98
+ B(f, (e, t) => {
99
+ });
100
+ const Ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
101
+ __proto__: null,
102
+ blockAdd: X,
103
+ clean: W,
104
+ create: J,
105
+ read: R,
106
+ remove: Q,
107
+ set: P,
108
+ state: f,
109
+ update: K
110
+ }, Symbol.toStringTag, { value: "Module" })), Y = {
111
+ props: {
112
+ progress: {
113
+ type: Number,
114
+ default: null
115
+ },
116
+ status: {
117
+ type: String,
118
+ default: null
119
+ }
120
+ }
121
+ }, Z = { class: "circular-loader" }, ee = /* @__PURE__ */ b("svg", { viewBox: "25 25 50 50" }, [
122
+ /* @__PURE__ */ b("circle", {
123
+ cx: "50",
124
+ cy: "50",
125
+ r: "20",
126
+ fill: "none",
127
+ "stroke-width": "4",
128
+ "stroke-miterlimit": "10"
129
+ })
130
+ ], -1), te = {
131
+ key: 0,
132
+ class: "progress-text"
133
+ }, re = {
134
+ key: 1,
135
+ class: "uppercase t-semi w-m-10r status-text"
136
+ };
137
+ function ae(e, t, a, r, s, l) {
138
+ return o(), i("div", Z, [
139
+ ee,
140
+ a.progress ? (o(), i("div", te, d(a.progress), 1)) : c("", !0),
141
+ a.status ? (o(), i("div", re, d(a.status), 1)) : c("", !0)
142
+ ]);
143
+ }
144
+ const se = /* @__PURE__ */ V(Y, [["render", ae]]), x = E.create({
145
+ baseURL: process.env.API_URL,
146
+ withCredentials: !0
147
+ }), y = z({
148
+ reactions: [],
149
+ error: null
150
+ }), S = {
151
+ async read({ user: e, type: t, target: a, role: r }) {
152
+ try {
153
+ const s = await x.get("/api/reactions", { params: { user: e, type: t, target: a, role: r } });
154
+ return y.error = null, y.reactions = s.data, Promise.resolve(s.data);
155
+ } catch (s) {
156
+ return p(s), Promise.reject(s);
157
+ }
158
+ },
159
+ async create(e) {
160
+ try {
161
+ const t = await x.post("/api/reactions/create", e);
162
+ return y.error = null, Promise.resolve(t.data);
163
+ } catch (t) {
164
+ return console.log(t), p(t), Promise.reject(t);
165
+ }
166
+ },
167
+ async update(e) {
168
+ try {
169
+ const t = await x.post("/api/reactions/update", e);
170
+ return y.error = null, Promise.resolve(t.data);
171
+ } catch (t) {
172
+ return p(t), Promise.reject(t);
173
+ }
174
+ },
175
+ async delete(e) {
176
+ try {
177
+ const t = await x.post("/api/reactions/delete", e);
178
+ return y.error = null, Promise.resolve(t.data);
179
+ } catch (t) {
180
+ return p(t), Promise.reject(t);
181
+ }
182
+ }
183
+ }, oe = {
184
+ handleReactionUpdate(e, t, a) {
185
+ let r;
186
+ if (Array.isArray(e) ? r = e.find((s) => s._id === t.target) : typeof e == "object" && e._id === t.target && (r = e), r)
187
+ if (r.hasReaction = a, a)
188
+ r.reactions.push(t), r.numberOfReactions += 1;
189
+ else {
190
+ const s = r.reactions.findIndex((l) => l._id === t._id);
191
+ s !== -1 && (r.reactions.splice(s, 1), r.numberOfReactions -= 1);
192
+ }
193
+ }
194
+ };
195
+ B(y, (e) => {
196
+ });
197
+ const Ie = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
198
+ __proto__: null,
199
+ actions: S,
200
+ mutations: oe,
201
+ state: y
202
+ }, Symbol.toStringTag, { value: "Module" })), ne = { class: "t-semi br-top-dark flex-nowrap flex-nojustify flex" }, le = /* @__PURE__ */ b("span", { class: "mn-r-small mn-l-small d-block" }, "·", -1), ie = { class: "cursor-pointer" }, ce = /* @__PURE__ */ b("span", { class: "mn-r-small mn-l-small d-block" }, "·", -1), ue = {
203
+ __name: "FooterBlogpost",
204
+ props: ["blogpost", "owner", "user"],
205
+ setup(e) {
206
+ const t = e, a = g(t.blogpost.numberOfReactions), r = g(t.blogpost.isReacted), s = g(t.blogpost.reactionId);
207
+ async function l(v) {
208
+ if (!t.user) {
209
+ alert("Please login to add a reaction");
210
+ return;
211
+ }
212
+ try {
213
+ const n = {
214
+ target: t.blogpost._id,
215
+ type: "blogpost",
216
+ user: t.user,
217
+ class: "like"
218
+ }, h = await S.create(n);
219
+ h.reaction.class === "like" && (a.value += 1, r.value = !0, s.value = h.reaction._id);
220
+ } catch (n) {
221
+ console.error(n), alert("Error adding reaction. Please try again later.");
222
+ }
223
+ }
224
+ async function u(v) {
225
+ if (!t.user) {
226
+ alert("Please login to add a reaction");
227
+ return;
228
+ }
229
+ try {
230
+ const n = { _id: s.value };
231
+ await S.delete(n), a.value -= 1, r.value = !1, s.value = null;
232
+ } catch {
233
+ alert("Error adding reaction. Please try again later.");
234
+ }
235
+ }
236
+ return (v, n) => (o(), i("footer", ne, [
237
+ I(" 👁️ " + d(e.blogpost.views) + " ", 1),
238
+ le,
239
+ b("div", ie, [
240
+ r.value ? c("", !0) : (o(), i("div", {
241
+ key: 0,
242
+ class: "cursor-pointer",
243
+ onClick: n[0] || (n[0] = (h) => l())
244
+ }, " 👍 " + d(a.value), 1)),
245
+ r.value ? (o(), i("div", {
246
+ key: 1,
247
+ class: "cursor-pointer",
248
+ onClick: n[1] || (n[1] = (h) => u())
249
+ }, " 👍 " + d(a.value), 1)) : c("", !0)
250
+ ]),
251
+ ce,
252
+ I(" 💬 " + d(e.blogpost.numberOfComments), 1)
253
+ ]));
254
+ }
255
+ }, de = { class: "pos-relative bg-grey radius-big" }, me = ["src"], ge = { class: "pd-t-zero pd-medium" }, pe = {
256
+ key: 0,
257
+ class: "cursor-pointer mn-thin flex-nowrap flex w-100"
258
+ }, fe = {
259
+ key: 0,
260
+ class: "pd-micro t-white uppercase t-semi p-small flex-center flex pd-r-small pd-l-small mn-l-thin w-min bg-second radius-extra"
261
+ }, ye = {
262
+ key: 1,
263
+ class: "mn-small t-transp p-big"
264
+ }, be = {
265
+ key: 2,
266
+ class: "mn-small h2"
267
+ }, ve = {
268
+ __name: "CardBlogpost",
269
+ props: ["blogpost", "user", "type"],
270
+ setup(e) {
271
+ const t = e, a = G(), r = L(() => t.blogpost.content.find((l) => l.type === "ImageUpload")), s = L(() => t.blogpost.content.find((l) => l.type === "Textarea"));
272
+ return (l, u) => (o(), i("article", de, [
273
+ e.user === e.blogpost.creator.target._id ? (o(), w(H, {
274
+ key: 0,
275
+ onClick: u[0] || (u[0] = T((v) => l.$router.push({
276
+ name: "Edit BlogPost",
277
+ params: {
278
+ url: e.blogpost.url
279
+ }
280
+ }), ["stop"])),
281
+ class: "z-index-2 pos-absolute pos-t-regular pos-r-regular i-regular t-transp"
282
+ })) : c("", !0),
283
+ k(q, {
284
+ class: N({
285
+ "mn-small pd-medium": e.type !== "short",
286
+ "flex-child-order-last flex-child mn-l-small": e.type === "short"
287
+ }),
288
+ owner: e.blogpost.owner,
289
+ creator: e.blogpost.creator,
290
+ date: e.blogpost.createdAt
291
+ }, null, 8, ["class", "owner", "creator", "date"]),
292
+ m(r) && m(r).content && e.type !== "blogpostPage" ? (o(), i("img", {
293
+ key: 1,
294
+ src: (l.FILE_SERVER_URL || "") + m(r).content,
295
+ alt: "Blog post image",
296
+ class: "mn-medium object-fit-cover w-100 h-20r"
297
+ }, null, 8, me)) : c("", !0),
298
+ b("section", ge, [
299
+ e.type !== "blogpostPage" ? (o(), i("div", pe, [
300
+ b("h3", {
301
+ onClick: u[1] || (u[1] = (v) => m(a).push({
302
+ name: "BlogPost",
303
+ params: {
304
+ url: e.blogpost.url
305
+ }
306
+ })),
307
+ class: ""
308
+ }, d(e.blogpost.name), 1),
309
+ e.blogpost.status === "draft" ? (o(), i("div", fe, d(e.blogpost.status), 1)) : c("", !0)
310
+ ])) : c("", !0),
311
+ m(s) && m(s).content && e.type !== "blogpostPage" ? (o(), i("p", ye, d(m(s).content.slice(0, 120)) + "... ", 1)) : c("", !0),
312
+ e.type === "blogpostPage" ? (o(), i("h3", be, d(e.blogpost.name), 1)) : c("", !0),
313
+ O(l.$slots, "default"),
314
+ e.type !== "short" && e.blogpost.tags.length > 0 ? (o(), w(D, {
315
+ key: 3,
316
+ chips: e.blogpost.tags
317
+ }, null, 8, ["chips"])) : c("", !0)
318
+ ]),
319
+ k(ue, {
320
+ class: "pd-t-zero pd-medium",
321
+ blogpost: e.blogpost,
322
+ user: e.user
323
+ }, null, 8, ["blogpost", "user"])
324
+ ]));
325
+ }
326
+ }, he = { class: "feed" }, we = { key: 1 }, Le = {
327
+ __name: "Feed",
328
+ props: {
329
+ category: {
330
+ type: String,
331
+ default: null
332
+ },
333
+ owner: {
334
+ type: String,
335
+ default: null
336
+ },
337
+ creator: {
338
+ type: String,
339
+ default: null
340
+ },
341
+ status: {
342
+ type: String,
343
+ default: "published"
344
+ },
345
+ user: {
346
+ type: [String, Number],
347
+ default: null
348
+ },
349
+ period: {
350
+ type: String,
351
+ default: null
352
+ }
353
+ },
354
+ setup(e) {
355
+ const t = e, a = g([]), r = g(!0);
356
+ let s = g(!0), l = g(0), u = g(7);
357
+ const v = async () => {
358
+ if (r.value) {
359
+ l.value += u.value;
360
+ const n = await R({
361
+ skip: l.value,
362
+ limit: u.value,
363
+ category: t.category,
364
+ user: t.user,
365
+ owner: t.owner,
366
+ status: t.status,
367
+ creator: t.creator,
368
+ period: t.period
369
+ });
370
+ n.length === 0 && (r.value = !1), a.value = [...a.value, ...n];
371
+ }
372
+ };
373
+ return U(async () => {
374
+ const n = await R({
375
+ skip: l.value,
376
+ limit: u.value,
377
+ category: t.category,
378
+ user: t.user,
379
+ owner: t.owner,
380
+ status: t.status,
381
+ creator: t.creator,
382
+ period: t.period
383
+ });
384
+ n.length === 0 ? r.value = !1 : r.value = !0, a.value = n, s.value = !1;
385
+ }), (n, h) => (o(), i("section", he, [
386
+ k($, { name: "scaleTransition" }, {
387
+ default: j(() => [
388
+ m(s) ? (o(), w(se, {
389
+ key: 0,
390
+ class: "z-index-5 pos-t-50 left-t-50 pos-absolute"
391
+ })) : c("", !0)
392
+ ]),
393
+ _: 1
394
+ }),
395
+ k($, { name: "scaleTransition" }, {
396
+ default: j(() => [
397
+ !m(s) && a.value.length < 1 ? (o(), w(F, {
398
+ key: 0,
399
+ title: "No Blog Posts Found",
400
+ description: "Currently, there are no posts available in this blog. Please check back later.",
401
+ class: "pd-medium mn-thin bg-grey radius-big"
402
+ })) : (o(), i("div", we, [
403
+ (o(!0), i(A, null, M(a.value, (C) => (o(), w(ve, {
404
+ key: C._id,
405
+ blogpost: C,
406
+ user: e.user,
407
+ class: "mn-medium"
408
+ }, null, 8, ["blogpost", "user"]))), 128)),
409
+ k($, { name: "scaleTransition" }, {
410
+ default: j(() => [
411
+ r.value && a.value.length > 0 ? (o(), i("button", {
412
+ key: 0,
413
+ onClick: v,
414
+ class: "w-100 bg-main button"
415
+ }, " Load more ")) : c("", !0)
416
+ ]),
417
+ _: 1
418
+ })
419
+ ]))
420
+ ]),
421
+ _: 1
422
+ })
423
+ ]));
424
+ }
425
+ };
426
+ export {
427
+ se as L,
428
+ Le as _,
429
+ J as a,
430
+ Q as b,
431
+ W as c,
432
+ ve as d,
433
+ ue as e,
434
+ Ce as f,
435
+ Ie as g,
436
+ R as r,
437
+ f as s,
438
+ K as u
439
+ };