@pristy/pristy-libvue 2.18.3 → 2.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/{ActivityHistory-CQmJgU40.js → ActivityHistory-_0tW0rvq.js} +46 -36
  2. package/dist/ActivityHistory-_0tW0rvq.js.map +1 -0
  3. package/dist/{BookmarksComponent-BdiLg2Er.js → BookmarksComponent-Cho18tdw.js} +2 -2
  4. package/dist/{BookmarksComponent-BdiLg2Er.js.map → BookmarksComponent-Cho18tdw.js.map} +1 -1
  5. package/dist/{ChartWrapper-CgUrZaUH.js → ChartWrapper-SxW9ySdd.js} +2 -2
  6. package/dist/{ChartWrapper-CgUrZaUH.js.map → ChartWrapper-SxW9ySdd.js.map} +1 -1
  7. package/dist/{DisplayFileInDashboardComponent-BitxF6kA.js → DisplayFileInDashboardComponent-DybH5peP.js} +2 -2
  8. package/dist/{DisplayFileInDashboardComponent-BitxF6kA.js.map → DisplayFileInDashboardComponent-DybH5peP.js.map} +1 -1
  9. package/dist/{ExternalApps-1f9eHjBf.js → ExternalApps-CAgQ4Fj6.js} +2 -2
  10. package/dist/{ExternalApps-1f9eHjBf.js.map → ExternalApps-CAgQ4Fj6.js.map} +1 -1
  11. package/dist/{FavoriteList-B-ySLbc4.js → FavoriteList-CIvIXlWH.js} +2 -2
  12. package/dist/{FavoriteList-B-ySLbc4.js.map → FavoriteList-CIvIXlWH.js.map} +1 -1
  13. package/dist/{MarkdownComponent-CLjB6lw1.js → MarkdownComponent-ClspMFPD.js} +2 -2
  14. package/dist/{MarkdownComponent-CLjB6lw1.js.map → MarkdownComponent-ClspMFPD.js.map} +1 -1
  15. package/dist/{SearchInput-BJRzn58R.js → SearchInput-DqVul-dd.js} +2 -2
  16. package/dist/{SearchInput-BJRzn58R.js.map → SearchInput-DqVul-dd.js.map} +1 -1
  17. package/dist/{UnknownBlockType-w2yffn4Y.js → UnknownBlockType-GuPCc_3z.js} +2 -2
  18. package/dist/{UnknownBlockType-w2yffn4Y.js.map → UnknownBlockType-GuPCc_3z.js.map} +1 -1
  19. package/dist/{index-Dh35mLnd.js → index-Bat41R_Q.js} +10175 -9585
  20. package/dist/index-Bat41R_Q.js.map +1 -0
  21. package/dist/{jszip.min-BrmBkVmG.js → jszip.min-BNqdRFyY.js} +445 -443
  22. package/dist/jszip.min-BNqdRFyY.js.map +1 -0
  23. package/dist/pristy-libvue.css +1 -1
  24. package/dist/pristy-libvue.es.js +1 -1
  25. package/dist/pristy-libvue.umd.js +30 -22
  26. package/dist/pristy-libvue.umd.js.map +1 -1
  27. package/dist/src/components/classification/AdminClassificationPage.vue.d.ts +3 -0
  28. package/dist/src/components/classification/FieldForm.vue.d.ts +3 -0
  29. package/dist/src/components/classification/FieldForm.vue.d.ts.map +1 -1
  30. package/dist/src/components/dashboard/DashboardAdminPage.vue.d.ts +72 -0
  31. package/dist/src/components/dashboard/DashboardComponent.vue.d.ts +11 -0
  32. package/dist/src/components/dashboard/editor/BlockConfigEditor.vue.d.ts +61 -0
  33. package/dist/src/components/dashboard/editor/DashboardEditor.vue.d.ts +72 -0
  34. package/dist/src/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts +66 -0
  35. package/dist/src/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts.map +1 -0
  36. package/dist/src/components/dashboard/widgets/ActivityHistory.vue.d.ts +11 -0
  37. package/dist/src/components/navigation/DynamicContentView.vue.d.ts +29 -5
  38. package/dist/src/components/navigation/DynamicContentView.vue.d.ts.map +1 -1
  39. package/dist/src/components/navigation/PreviewPanel.vue.d.ts +10 -0
  40. package/dist/src/components/popup/SendMailPopup.vue.d.ts +31 -5
  41. package/dist/src/components/popup/SendMailPopup.vue.d.ts.map +1 -1
  42. package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts +1 -1
  43. package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts.map +1 -1
  44. package/dist/src/components/search/AdvancedViewPanel.vue.d.ts +1 -1
  45. package/dist/src/components/search/ExactSearch.vue.d.ts.map +1 -1
  46. package/dist/src/components/search/SaveViewPopup.vue.d.ts +1 -1
  47. package/dist/src/components/viewer/PDFComponent.vue.d.ts +10 -0
  48. package/dist/src/components/viewer/PDFComponent.vue.d.ts.map +1 -1
  49. package/dist/src/components/viewer/PdfSignaturePanel.vue.d.ts +9 -0
  50. package/dist/src/components/viewer/PdfSignaturePanel.vue.d.ts.map +1 -0
  51. package/dist/src/composables/useClassificationPlan.d.ts.map +1 -1
  52. package/dist/src/i18n/index.d.ts +74 -0
  53. package/dist/src/i18n/index.d.ts.map +1 -1
  54. package/dist/src/services/PdfSignatureService.d.ts +2 -0
  55. package/dist/src/services/PdfSignatureService.d.ts.map +1 -0
  56. package/dist/src/services/userSearchQuery.d.ts +31 -0
  57. package/dist/src/services/userSearchQuery.d.ts.map +1 -0
  58. package/dist/src/stores/search.d.ts +2 -0
  59. package/dist/src/stores/search.d.ts.map +1 -1
  60. package/dist/src/utils/classificationPlanUtils.d.ts +16 -0
  61. package/dist/src/utils/classificationPlanUtils.d.ts.map +1 -1
  62. package/package.json +11 -9
  63. package/dist/ActivityHistory-CQmJgU40.js.map +0 -1
  64. package/dist/index-Dh35mLnd.js.map +0 -1
  65. package/dist/jszip.min-BrmBkVmG.js.map +0 -1
@@ -1,20 +1,25 @@
1
- import { _ as h, c as g, f as b, b as _ } from "./index-Dh35mLnd.js";
2
- import { mapState as H } from "pinia";
3
- import T from "primevue/dataview";
4
- import w from "primevue/tooltip";
5
- import { resolveComponent as I, resolveDirective as S, openBlock as u, createElementBlock as m, createVNode as A, withCtx as p, createElementVNode as d, Fragment as k, renderList as j, normalizeClass as N, withDirectives as O, createTextVNode as y, toDisplayString as v, createCommentVNode as E } from "vue";
1
+ import { _ as y, c as g, f as b, b as w } from "./index-Bat41R_Q.js";
2
+ import { mapState as _ } from "pinia";
3
+ import H from "primevue/dataview";
4
+ import T from "primevue/tooltip";
5
+ import { resolveComponent as I, resolveDirective as S, openBlock as u, createElementBlock as m, createVNode as A, withCtx as p, createElementVNode as d, Fragment as k, renderList as j, normalizeClass as N, withDirectives as O, createTextVNode as h, toDisplayString as v, createCommentVNode as E } from "vue";
6
6
  const P = {
7
7
  name: "ActivityHistory",
8
8
  components: {
9
- PrimeDataView: T
9
+ PrimeDataView: H
10
10
  },
11
11
  directives: {
12
- tooltip: w
12
+ tooltip: T
13
13
  },
14
14
  props: {
15
15
  urlResolver: {
16
16
  type: Function,
17
17
  default: null
18
+ },
19
+ who: {
20
+ type: String,
21
+ default: null,
22
+ validator: (e) => ["me", "others"].includes(e)
18
23
  }
19
24
  },
20
25
  data() {
@@ -25,7 +30,7 @@ const P = {
25
30
  };
26
31
  },
27
32
  computed: {
28
- ...H(_, ["ESPACES_HOST"]),
33
+ ..._(w, ["ESPACES_HOST"]),
29
34
  groupedActivities() {
30
35
  if (!this.activities)
31
36
  return [];
@@ -37,6 +42,11 @@ const P = {
37
42
  return e;
38
43
  }
39
44
  },
45
+ watch: {
46
+ who() {
47
+ this.getActivity();
48
+ }
49
+ },
40
50
  mounted() {
41
51
  this.getActivity(), this.resizeObserver = new ResizeObserver(() => this.computeVisibleRows()), this.resizeObserver.observe(this.$refs.container);
42
52
  },
@@ -51,8 +61,8 @@ const P = {
51
61
  const e = this.$refs.container;
52
62
  if (!e)
53
63
  return;
54
- const t = 52, r = e.clientHeight - 50, o = Math.max(3, Math.floor(r / t));
55
- this.visibleRows = o;
64
+ const t = 52, r = e.clientHeight - 50, n = Math.max(3, Math.floor(r / t));
65
+ this.visibleRows = n;
56
66
  },
57
67
  reloadData() {
58
68
  this.getActivity();
@@ -84,8 +94,8 @@ const P = {
84
94
  getUserDisplayName(e) {
85
95
  const t = e.activitySummary || {};
86
96
  if (e.activityType.includes("user-role-changed") || e.activityType.includes("user-joined") || e.activityType.includes("user-left")) {
87
- const o = t.memberFirstName || t.firstName || "", i = t.memberLastName || t.lastName || "";
88
- return (o + " " + i).trim() || e.postPersonId;
97
+ const n = t.memberFirstName || t.firstName || "", i = t.memberLastName || t.lastName || "";
98
+ return (n + " " + i).trim() || e.postPersonId;
89
99
  }
90
100
  const s = t.firstName || "", r = t.lastName || "";
91
101
  return (s + " " + r).trim() || e.postPersonId;
@@ -111,7 +121,7 @@ const P = {
111
121
  return {};
112
122
  },
113
123
  getActivityMessageHtml(e) {
114
- const t = e.activitySummary || {}, s = t.title || "", r = this.getActivitiesMessages(), o = {
124
+ const t = e.activitySummary || {}, s = t.title || "", r = this.getActivitiesMessages(), n = {
115
125
  title: s,
116
126
  firstName: t.firstName || "",
117
127
  siteName: t.siteName || "",
@@ -122,22 +132,22 @@ const P = {
122
132
  let i = r[e.activityType] || r.unknown;
123
133
  if (!i)
124
134
  return this.escapeHtml(e.activityType);
125
- if (Object.keys(o).forEach((c) => {
135
+ if (Object.keys(n).forEach((c) => {
126
136
  c !== "title" && (i = i.replace(
127
137
  new RegExp(`\\{${c}\\}`, "g"),
128
- this.escapeHtml(o[c])
138
+ this.escapeHtml(n[c])
129
139
  ));
130
140
  }), s) {
131
141
  const f = (e.activitySummary || {}).objectId, a = this.escapeHtml(s);
132
- let n;
142
+ let o;
133
143
  if (this.urlResolver && f) {
134
144
  const l = e.siteId || "";
135
- n = `<a href="javascript:void(0)" data-object-id="${this.escapeHtml(f)}" data-site-id="${this.escapeHtml(l)}" data-is-folder="${e.activityType.includes("folder")}" class="activity-link">${a}</a>`;
145
+ o = `<a href="javascript:void(0)" data-object-id="${this.escapeHtml(f)}" data-site-id="${this.escapeHtml(l)}" data-is-folder="${e.activityType.includes("folder")}" class="activity-link">${a}</a>`;
136
146
  } else {
137
147
  const l = this.getObjectUrl(e);
138
- n = l ? `<a href="${this.escapeHtml(l)}" target="_blank" rel="noopener noreferrer" class="activity-link">${a}</a>` : `<strong>${a}</strong>`;
148
+ o = l ? `<a href="${this.escapeHtml(l)}" target="_blank" rel="noopener noreferrer" class="activity-link">${a}</a>` : `<strong>${a}</strong>`;
139
149
  }
140
- i = i.split("{title}").map((l) => this.escapeHtml(l)).join(n);
150
+ i = i.split("{title}").map((l) => this.escapeHtml(l)).join(o);
141
151
  } else
142
152
  i = this.escapeHtml(i);
143
153
  return i;
@@ -147,16 +157,16 @@ const P = {
147
157
  if (!t || !this.urlResolver)
148
158
  return;
149
159
  e.preventDefault();
150
- const s = t.dataset.objectId, r = t.dataset.siteId || "", o = t.dataset.isFolder === "true";
160
+ const s = t.dataset.objectId, r = t.dataset.siteId || "", n = t.dataset.isFolder === "true";
151
161
  this.urlResolver({
152
162
  id: s,
153
163
  siteId: r,
154
- isFolder: o,
155
- forceOverview: o
164
+ isFolder: n,
165
+ forceOverview: n
156
166
  });
157
167
  },
158
168
  getActivity() {
159
- let e = {};
169
+ const e = this.who ? { who: this.who } : {};
160
170
  return g.listActivitiesForPerson("-me-", e).then((t) => {
161
171
  this.activities = t.list.entries;
162
172
  });
@@ -166,7 +176,7 @@ const P = {
166
176
  key: 0,
167
177
  class: "activity-count"
168
178
  }, V = { class: "activity-date" };
169
- function x(e, t, s, r, o, i) {
179
+ function x(e, t, s, r, n, i) {
170
180
  const c = I("PrimeDataView"), f = S("tooltip");
171
181
  return u(), m("div", {
172
182
  ref: "container",
@@ -176,40 +186,40 @@ function x(e, t, s, r, o, i) {
176
186
  A(c, {
177
187
  value: i.groupedActivities,
178
188
  paginator: "",
179
- rows: o.visibleRows,
189
+ rows: n.visibleRows,
180
190
  layout: "list"
181
191
  }, {
182
192
  empty: p(() => [
183
- y(v(e.$t("emptyActivityHistory")), 1)
193
+ h(v(e.$t("emptyActivityHistory")), 1)
184
194
  ]),
185
195
  list: p((a) => [
186
196
  d("div", null, [
187
- (u(!0), m(k, null, j(a.items, (n) => (u(), m("div", {
188
- key: n.entry.id,
197
+ (u(!0), m(k, null, j(a.items, (o) => (u(), m("div", {
198
+ key: o.entry.id,
189
199
  class: "activity-row"
190
200
  }, [
191
201
  d("i", {
192
- class: N([i.getIcon(n.entry.activityType), "activity-icon"]),
202
+ class: N([i.getIcon(o.entry.activityType), "activity-icon"]),
193
203
  "aria-hidden": "true"
194
204
  }, null, 2),
195
205
  d("div", C, [
196
206
  d("p", D, [
197
207
  O((u(), m("strong", R, [
198
- y(v(i.getUserDisplayName(n.entry)), 1)
208
+ h(v(i.getUserDisplayName(o.entry)), 1)
199
209
  ])), [
200
210
  [
201
211
  f,
202
- n.entry.postPersonId,
212
+ o.entry.postPersonId,
203
213
  void 0,
204
214
  { bottom: !0 }
205
215
  ]
206
216
  ]),
207
217
  d("span", {
208
- innerHTML: " " + i.getActivityMessageHtml(n.entry)
218
+ innerHTML: " " + i.getActivityMessageHtml(o.entry)
209
219
  }, null, 8, $),
210
- n.count > 1 ? (u(), m("span", M, " (+" + v(n.count - 1) + ") ", 1)) : E("", !0)
220
+ o.count > 1 ? (u(), m("span", M, " (+" + v(o.count - 1) + ") ", 1)) : E("", !0)
211
221
  ]),
212
- d("p", V, v(i.formatDateTime(n.entry.postedAt)), 1)
222
+ d("p", V, v(i.formatDateTime(o.entry.postedAt)), 1)
213
223
  ])
214
224
  ]))), 128))
215
225
  ])
@@ -218,8 +228,8 @@ function x(e, t, s, r, o, i) {
218
228
  }, 8, ["value", "rows"])
219
229
  ], 512);
220
230
  }
221
- const W = /* @__PURE__ */ h(P, [["render", x], ["__scopeId", "data-v-298133b0"]]);
231
+ const W = /* @__PURE__ */ y(P, [["render", x], ["__scopeId", "data-v-e1e68fbb"]]);
222
232
  export {
223
233
  W as default
224
234
  };
225
- //# sourceMappingURL=ActivityHistory-CQmJgU40.js.map
235
+ //# sourceMappingURL=ActivityHistory-_0tW0rvq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityHistory-_0tW0rvq.js","sources":["../src/components/dashboard/widgets/ActivityHistory.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n<template>\n <div ref=\"container\" class=\"activity-container\" @click=\"onActivityClick\">\n <PrimeDataView\n :value=\"groupedActivities\"\n paginator\n :rows=\"visibleRows\"\n layout=\"list\"\n >\n <template #empty>\n {{ $t(\"emptyActivityHistory\") }}\n </template>\n <template #list=\"slotProps\">\n <div>\n <div\n v-for=\"group in slotProps.items\"\n :key=\"group.entry.id\"\n class=\"activity-row\"\n >\n <i\n :class=\"getIcon(group.entry.activityType)\"\n class=\"activity-icon\"\n aria-hidden=\"true\"\n ></i>\n\n <div class=\"activity-content\">\n <p class=\"activity-text\">\n <strong\n v-tooltip.bottom=\"group.entry.postPersonId\"\n class=\"cursor-default\"\n >\n {{ getUserDisplayName(group.entry) }}\n </strong>\n <!-- eslint-disable-next-line vue/no-v-html -- Activity messages contain safe HTML with escaped user content -->\n <span v-html=\"' ' + getActivityMessageHtml(group.entry)\"></span>\n <span v-if=\"group.count > 1\" class=\"activity-count\">\n (+{{ group.count - 1 }})\n </span>\n </p>\n <p class=\"activity-date\">\n {{ formatDateTime(group.entry.postedAt) }}\n </p>\n </div>\n </div>\n </div>\n </template>\n </PrimeDataView>\n </div>\n</template>\n\n<script>\nimport { activitiesApi } from \"@/AlfrescoApi.js\";\nimport formatService from \"@/services/FormatService.js\";\nimport { useConfigStore } from \"@/stores/config\";\nimport { mapState } from \"pinia\";\nimport DataView from \"primevue/dataview\";\nimport Tooltip from \"primevue/tooltip\";\n\nexport default {\n name: \"ActivityHistory\",\n components: {\n PrimeDataView: DataView,\n },\n directives: {\n tooltip: Tooltip,\n },\n props: {\n urlResolver: {\n type: Function,\n default: null,\n },\n who: {\n type: String,\n default: null,\n validator: (value) => [\"me\", \"others\"].includes(value),\n },\n },\n data() {\n return {\n activities: null,\n visibleRows: 5,\n resizeObserver: null,\n };\n },\n computed: {\n ...mapState(useConfigStore, [\"ESPACES_HOST\"]),\n groupedActivities() {\n if (!this.activities) {\n return [];\n }\n const groups = [];\n for (const activity of this.activities) {\n const prev = groups[groups.length - 1];\n if (prev && this.isSameGroup(prev.entry, activity.entry)) {\n prev.count++;\n } else {\n groups.push({ entry: activity.entry, count: 1 });\n }\n }\n return groups;\n },\n },\n watch: {\n who() {\n this.getActivity();\n },\n },\n mounted() {\n this.getActivity();\n this.resizeObserver = new ResizeObserver(() => this.computeVisibleRows());\n this.resizeObserver.observe(this.$refs.container);\n },\n beforeUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n },\n methods: {\n isSameGroup(a, b) {\n return (\n a.postPersonId === b.postPersonId &&\n a.activitySummary?.objectId === b.activitySummary?.objectId &&\n a.activitySummary?.objectId !== undefined\n );\n },\n computeVisibleRows() {\n const container = this.$refs.container;\n if (!container) {\n return;\n }\n const ROW_HEIGHT = 52;\n const PAGINATOR_HEIGHT = 50;\n const available = container.clientHeight - PAGINATOR_HEIGHT;\n const rows = Math.max(3, Math.floor(available / ROW_HEIGHT));\n this.visibleRows = rows;\n },\n reloadData() {\n this.getActivity();\n },\n formatDateTime(date) {\n return formatService.formatDateTime(date);\n },\n getIcon(type) {\n if (!type) {\n return \"ri-information-line\";\n }\n\n const exactIconMap = {\n \"org.alfresco.documentlibrary.file-downloaded\": \"ri-download-line\",\n \"org.alfresco.documentlibrary.file-added\": \"ri-add-circle-line\",\n \"org.alfresco.site.user-joined\": \"ri-user-add-line\",\n \"org.alfresco.site.user-left\": \"ri-user-unfollow-line\",\n \"org.alfresco.site.user-role-changed\": \"ri-user-settings-line\",\n \"org.alfresco.calendar.event-created\": \"ri-calendar-check-line\",\n \"org.alfresco.calendar.event-updated\": \"ri-calendar-line\",\n \"org.alfresco.calendar.event-deleted\": \"ri-calendar-close-line\",\n \"org.alfresco.blog.post-created\": \"ri-article-line\",\n \"org.alfresco.blog.post-updated\": \"ri-article-line\",\n \"org.alfresco.blog.post-deleted\": \"ri-delete-bin-line\",\n \"org.alfresco.links.link-created\": \"ri-link\",\n \"org.alfresco.links.link-updated\": \"ri-link\",\n \"org.alfresco.links.link-deleted\": \"ri-delete-bin-line\",\n };\n\n if (exactIconMap[type]) {\n return exactIconMap[type];\n }\n\n if (type.includes(\"deleted\")) {\n return \"ri-delete-bin-line\";\n }\n if (type.includes(\"added\") || type.includes(\"created\")) {\n return \"ri-add-circle-line\";\n }\n if (type.includes(\"updated\") || type.includes(\"edited\")) {\n return \"ri-edit-line\";\n }\n if (type.includes(\"downloaded\")) {\n return \"ri-download-line\";\n }\n if (type.includes(\"comment\")) {\n return \"ri-chat-3-line\";\n }\n if (type.includes(\"discussion\") || type.includes(\"reply\")) {\n return \"ri-discuss-line\";\n }\n if (type.includes(\"user-joined\")) {\n return \"ri-user-add-line\";\n }\n if (type.includes(\"user-left\")) {\n return \"ri-user-unfollow-line\";\n }\n if (type.includes(\"role-changed\")) {\n return \"ri-user-settings-line\";\n }\n\n return \"ri-information-line\";\n },\n getUserDisplayName(entry) {\n const summary = entry.activitySummary || {};\n if (\n entry.activityType.includes(\"user-role-changed\") ||\n entry.activityType.includes(\"user-joined\") ||\n entry.activityType.includes(\"user-left\")\n ) {\n const first = summary.memberFirstName || summary.firstName || \"\";\n const last = summary.memberLastName || summary.lastName || \"\";\n return (first + \" \" + last).trim() || entry.postPersonId;\n }\n const first = summary.firstName || \"\";\n const last = summary.lastName || \"\";\n return (first + \" \" + last).trim() || entry.postPersonId;\n },\n getObjectUrl(entry) {\n const summary = entry.activitySummary || {};\n if (!summary.objectId || !this.ESPACES_HOST) {\n return null;\n }\n if (entry.activityType.includes(\"folder\")) {\n return `${this.ESPACES_HOST}/espaces/mes-espaces/dossier/${summary.objectId}`;\n }\n return `${this.ESPACES_HOST}/espaces/${summary.objectId}`;\n },\n escapeHtml(text) {\n const div = document.createElement(\"div\");\n div.textContent = text;\n return div.innerHTML;\n },\n getActivitiesMessages() {\n // Activity type keys contain dots (e.g. \"org.alfresco.documentlibrary.file-added\")\n // which $t() interprets as nested path separators.\n // Use $tm() to get the raw message object for the \"activities\" key.\n const raw = this.$tm(\"activities\");\n if (raw && typeof raw === \"object\") {\n // $tm() returns reactive message objects; convert values to plain strings\n const messages = {};\n for (const key of Object.keys(raw)) {\n const val = raw[key];\n messages[key] =\n typeof val === \"string\" ? val : val?.toString?.() || String(val);\n }\n return messages;\n }\n return {};\n },\n getActivityMessageHtml(entry) {\n const summary = entry.activitySummary || {};\n const title = summary.title || \"\";\n const activities = this.getActivitiesMessages();\n\n const params = {\n title: title,\n firstName: summary.firstName || \"\",\n siteName: summary.siteName || \"\",\n newTitle: summary.newTitle || \"\",\n role: this.$t(`role.${summary.role}`, summary.role || \"\"),\n type: entry.activityType,\n };\n\n let message = activities[entry.activityType] || activities[\"unknown\"];\n if (!message) {\n return this.escapeHtml(entry.activityType);\n }\n\n // Interpolate all params except title\n Object.keys(params).forEach((key) => {\n if (key === \"title\") {\n return;\n }\n message = message.replace(\n new RegExp(`\\\\{${key}\\\\}`, \"g\"),\n this.escapeHtml(params[key]),\n );\n });\n\n // Escape the rest of the message\n // Split around {title} placeholders, escape each part, then rejoin with the link\n if (title) {\n const summary = entry.activitySummary || {};\n const objectId = summary.objectId;\n const escapedTitle = this.escapeHtml(title);\n let titleHtml;\n if (this.urlResolver && objectId) {\n const siteId = entry.siteId || \"\";\n titleHtml = `<a href=\"javascript:void(0)\" data-object-id=\"${this.escapeHtml(objectId)}\" data-site-id=\"${this.escapeHtml(siteId)}\" data-is-folder=\"${entry.activityType.includes(\"folder\")}\" class=\"activity-link\">${escapedTitle}</a>`;\n } else {\n const url = this.getObjectUrl(entry);\n titleHtml = url\n ? `<a href=\"${this.escapeHtml(url)}\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"activity-link\">${escapedTitle}</a>`\n : `<strong>${escapedTitle}</strong>`;\n }\n const parts = message.split(\"{title}\");\n message = parts.map((p) => this.escapeHtml(p)).join(titleHtml);\n } else {\n message = this.escapeHtml(message);\n }\n\n return message;\n },\n onActivityClick(event) {\n const link = event.target.closest(\".activity-link[data-object-id]\");\n if (!link || !this.urlResolver) {\n return;\n }\n event.preventDefault();\n const objectId = link.dataset.objectId;\n const siteId = link.dataset.siteId || \"\";\n const isFolder = link.dataset.isFolder === \"true\";\n this.urlResolver({\n id: objectId,\n siteId,\n isFolder,\n forceOverview: isFolder,\n });\n },\n getActivity() {\n const opts = this.who ? { who: this.who } : {};\n return activitiesApi\n .listActivitiesForPerson(\"-me-\", opts)\n .then((data) => {\n this.activities = data.list.entries;\n });\n },\n },\n};\n</script>\n\n<style scoped>\n.activity-container {\n height: 100%;\n}\n\n.activity-row {\n display: flex;\n gap: 0.75rem;\n padding: 0.5rem 0;\n}\n\n.activity-icon {\n font-size: 1.25rem;\n color: var(--p-primary-color);\n margin-top: 0.25rem;\n}\n\n.activity-content {\n flex: 1;\n min-width: 0;\n}\n\n.activity-text {\n font-size: 0.875rem;\n margin: 0;\n}\n\n.activity-count {\n margin-left: 0.25rem;\n font-size: 0.75rem;\n color: var(--p-text-muted-color);\n}\n\n.activity-date {\n font-size: 0.75rem;\n color: var(--p-text-muted-color);\n margin: 0;\n margin-top: 0.25rem;\n}\n\n.cursor-default {\n cursor: default;\n}\n\n:deep(.activity-link) {\n color: var(--p-primary-color);\n text-decoration: none;\n font-weight: 600;\n}\n\n:deep(.activity-link:hover) {\n text-decoration: underline;\n}\n\n:deep(.activity-link:focus-visible) {\n outline: 2px solid var(--p-primary-color);\n outline-offset: 2px;\n border-radius: 2px;\n}\n</style>\n"],"names":["_sfc_main","DataView","Tooltip","value","mapState","useConfigStore","groups","activity","prev","a","b","container","ROW_HEIGHT","available","rows","date","formatService","type","exactIconMap","entry","summary","first","last","text","div","raw","messages","key","val","title","activities","params","message","objectId","escapedTitle","titleHtml","siteId","url","p","event","link","isFolder","opts","activitiesApi","data","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_6","_createElementBlock","$options","args","_createVNode","_component_PrimeDataView","$data","_ctx","_withCtx","slotProps","_createElementVNode","_openBlock","_Fragment","_renderList","group","_normalizeClass","_withDirectives","_hoisted_5","_toDisplayString"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { openBlock as o, createElementBlock as t, createElementVNode as s, Fragment as i, renderList as c, normalizeClass as m, toDisplayString as k } from "vue";
2
- import { _ } from "./index-Dh35mLnd.js";
2
+ import { _ } from "./index-Bat41R_Q.js";
3
3
  const d = {
4
4
  name: "BookmarksComponent",
5
5
  props: {
@@ -41,4 +41,4 @@ const R = /* @__PURE__ */ _(d, [["render", v], ["__scopeId", "data-v-48871645"]]
41
41
  export {
42
42
  R as default
43
43
  };
44
- //# sourceMappingURL=BookmarksComponent-BdiLg2Er.js.map
44
+ //# sourceMappingURL=BookmarksComponent-Cho18tdw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BookmarksComponent-BdiLg2Er.js","sources":["../src/components/dashboard/widgets/BookmarksComponent.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"bookmarks-container\">\n <ul class=\"bookmarks-list\">\n <li\n v-for=\"(bookmark, index) in bookmarks\"\n :key=\"index\"\n @click=\"navigateTo(bookmark)\"\n class=\"bookmark-item\"\n >\n <i\n :class=\"\n bookmark.type === 'folder' ? 'ri-folder-line' : 'ri-file-line'\n \"\n class=\"bookmark-icon\"\n ></i>\n <span class=\"bookmark-name\">\n {{ bookmark.name }}\n </span>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"BookmarksComponent\",\n props: {\n bookmarks: {\n type: Array,\n default: () => [],\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n methods: {\n navigateTo(bookmark) {\n if (this.urlResolver) {\n this.urlResolver(bookmark);\n }\n },\n },\n};\n</script>\n\n<style scoped>\n.bookmarks-container {\n width: 100%;\n}\n\n.bookmarks-list {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n.bookmark-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.5rem 0.75rem;\n border-radius: 0.5rem;\n cursor: pointer;\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.bookmark-item:hover {\n background: var(--p-highlight-background);\n color: var(--p-primary-color);\n}\n\n.bookmark-icon {\n font-size: 1.125rem;\n flex-shrink: 0;\n color: var(--p-primary-color);\n}\n\n.bookmark-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n}\n</style>\n"],"names":["_sfc_main","bookmark","_hoisted_1","_hoisted_2","_hoisted_4","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","$props","index","$event","$options","_normalizeClass","_toDisplayString"],"mappings":";;AAyCA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA;IAEjB,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,SAAS;AAAA,IACP,WAAWC,GAAU;AACnB,MAAI,KAAK,eACP,KAAK,YAAYA,CAAQ;AAAA,IAE7B;AAAA;AAEJ,GA1COC,IAAA,EAAA,OAAM,sBAAqB,GAC1BC,IAAA,EAAA,OAAM,iBAAgB,oBAahBC,IAAA,EAAA,OAAM,gBAAe;;AAdjC,SAAAC,EAAA,GAAAC,EAmBM,OAnBNJ,GAmBM;AAAA,IAlBJK,EAiBK,MAjBLJ,GAiBK;AAAA,OAhBHE,EAAA,EAAA,GAAAC,EAeKE,GAAA,MAAAC,EAdyBC,EAAA,WAAS,CAA7BT,GAAUU,YADpBL,EAeK,MAAA;AAAA,QAbF,KAAKK;AAAA,QACL,SAAK,CAAAC,MAAEC,EAAA,WAAWZ,CAAQ;AAAA,QAC3B,OAAM;AAAA;QAENM,EAKK,KAAA;AAAA,UAJF,OAAKO,EAAA;AAAA,YAAeb,EAAS,SAAI,WAAA,mBAAA;AAAA,YAG5B;AAAA,UAAe,CAAA;AAAA;QAEvBM,EAEO,QAFPH,GAEOW,EADFd,EAAS,IAAI,GAAA,CAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"BookmarksComponent-Cho18tdw.js","sources":["../src/components/dashboard/widgets/BookmarksComponent.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"bookmarks-container\">\n <ul class=\"bookmarks-list\">\n <li\n v-for=\"(bookmark, index) in bookmarks\"\n :key=\"index\"\n @click=\"navigateTo(bookmark)\"\n class=\"bookmark-item\"\n >\n <i\n :class=\"\n bookmark.type === 'folder' ? 'ri-folder-line' : 'ri-file-line'\n \"\n class=\"bookmark-icon\"\n ></i>\n <span class=\"bookmark-name\">\n {{ bookmark.name }}\n </span>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"BookmarksComponent\",\n props: {\n bookmarks: {\n type: Array,\n default: () => [],\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n methods: {\n navigateTo(bookmark) {\n if (this.urlResolver) {\n this.urlResolver(bookmark);\n }\n },\n },\n};\n</script>\n\n<style scoped>\n.bookmarks-container {\n width: 100%;\n}\n\n.bookmarks-list {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n.bookmark-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.5rem 0.75rem;\n border-radius: 0.5rem;\n cursor: pointer;\n transition:\n background-color 0.2s,\n color 0.2s;\n}\n\n.bookmark-item:hover {\n background: var(--p-highlight-background);\n color: var(--p-primary-color);\n}\n\n.bookmark-icon {\n font-size: 1.125rem;\n flex-shrink: 0;\n color: var(--p-primary-color);\n}\n\n.bookmark-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n}\n</style>\n"],"names":["_sfc_main","bookmark","_hoisted_1","_hoisted_2","_hoisted_4","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","$props","index","$event","$options","_normalizeClass","_toDisplayString"],"mappings":";;AAyCA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA;IAEjB,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,SAAS;AAAA,IACP,WAAWC,GAAU;AACnB,MAAI,KAAK,eACP,KAAK,YAAYA,CAAQ;AAAA,IAE7B;AAAA;AAEJ,GA1COC,IAAA,EAAA,OAAM,sBAAqB,GAC1BC,IAAA,EAAA,OAAM,iBAAgB,oBAahBC,IAAA,EAAA,OAAM,gBAAe;;AAdjC,SAAAC,EAAA,GAAAC,EAmBM,OAnBNJ,GAmBM;AAAA,IAlBJK,EAiBK,MAjBLJ,GAiBK;AAAA,OAhBHE,EAAA,EAAA,GAAAC,EAeKE,GAAA,MAAAC,EAdyBC,EAAA,WAAS,CAA7BT,GAAUU,YADpBL,EAeK,MAAA;AAAA,QAbF,KAAKK;AAAA,QACL,SAAK,CAAAC,MAAEC,EAAA,WAAWZ,CAAQ;AAAA,QAC3B,OAAM;AAAA;QAENM,EAKK,KAAA;AAAA,UAJF,OAAKO,EAAA;AAAA,YAAeb,EAAS,SAAI,WAAA,mBAAA;AAAA,YAG5B;AAAA,UAAe,CAAA;AAAA;QAEvBM,EAEO,QAFPH,GAEOW,EADFd,EAAS,IAAI,GAAA,CAAA;AAAA;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import r from "primevue/chart";
2
2
  import { resolveComponent as n, openBlock as p, createElementBlock as a, createVNode as s } from "vue";
3
- import { _ as i } from "./index-Dh35mLnd.js";
3
+ import { _ as i } from "./index-Bat41R_Q.js";
4
4
  const l = {
5
5
  name: "ChartWrapper",
6
6
  components: {
@@ -56,4 +56,4 @@ const y = /* @__PURE__ */ i(l, [["render", d], ["__scopeId", "data-v-e0f7b28a"]]
56
56
  export {
57
57
  y as default
58
58
  };
59
- //# sourceMappingURL=ChartWrapper-CgUrZaUH.js.map
59
+ //# sourceMappingURL=ChartWrapper-SxW9ySdd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartWrapper-CgUrZaUH.js","sources":["../src/components/dashboard/widgets/ChartWrapper.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n<template>\n <div class=\"chart-wrapper\">\n <PrimeChart\n class=\"chart-full-width\"\n :type=\"type\"\n :data=\"data\"\n :options=\"mergedOptions\"\n />\n </div>\n</template>\n\n<script>\nimport Chart from \"primevue/chart\";\n\nexport default {\n name: \"ChartWrapper\",\n components: {\n PrimeChart: Chart,\n },\n props: {\n type: {\n type: String,\n required: true,\n },\n data: {\n type: Object,\n required: true,\n },\n options: {\n type: Object,\n default: () => ({}),\n },\n },\n computed: {\n textColor() {\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--p-text-color\")\n .trim();\n },\n mergedOptions() {\n return {\n ...this.options,\n plugins: {\n ...this.options?.plugins,\n legend: {\n ...this.options?.plugins?.legend,\n labels: {\n ...this.options?.plugins?.legend?.labels,\n color: this.textColor,\n },\n },\n },\n };\n },\n },\n};\n</script>\n\n<style scoped>\n.chart-wrapper {\n display: flex;\n justify-content: center;\n}\n\n.chart-full-width {\n width: 100%;\n}\n</style>\n"],"names":["_sfc_main","Chart","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_PrimeChart","$props","$options"],"mappings":";;;AA8BA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY;AAAA,IACV,YAAYC;AAAA;EAEd,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA;;EAGpB,UAAU;AAAA,IACR,YAAY;AACV,aAAO,iBAAiB,SAAS,eAAe,EAC7C,iBAAiB,gBAAgB,EACjC,KAAI;AAAA,IACT;AAAA,IACA,gBAAgB;AACd,aAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,SAAS;AAAA,UACP,GAAG,KAAK,SAAS;AAAA,UACjB,QAAQ;AAAA,YACN,GAAG,KAAK,SAAS,SAAS;AAAA,YAC1B,QAAQ;AAAA,cACN,GAAG,KAAK,SAAS,SAAS,QAAQ;AAAA,cAClC,OAAO,KAAK;AAAA;;;;IAKtB;AAAA;AAEJ,GAtDOC,IAAA,EAAA,OAAM,gBAAe;;;AAA1B,SAAAC,EAAA,GAAAC,EAOM,OAPNF,GAOM;AAAA,IANJG,EAKEC,GAAA;AAAA,MAJA,OAAM;AAAA,MACL,MAAMC,EAAA;AAAA,MACN,MAAMA,EAAA;AAAA,MACN,SAASC,EAAA;AAAA;;;;"}
1
+ {"version":3,"file":"ChartWrapper-SxW9ySdd.js","sources":["../src/components/dashboard/widgets/ChartWrapper.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n<template>\n <div class=\"chart-wrapper\">\n <PrimeChart\n class=\"chart-full-width\"\n :type=\"type\"\n :data=\"data\"\n :options=\"mergedOptions\"\n />\n </div>\n</template>\n\n<script>\nimport Chart from \"primevue/chart\";\n\nexport default {\n name: \"ChartWrapper\",\n components: {\n PrimeChart: Chart,\n },\n props: {\n type: {\n type: String,\n required: true,\n },\n data: {\n type: Object,\n required: true,\n },\n options: {\n type: Object,\n default: () => ({}),\n },\n },\n computed: {\n textColor() {\n return getComputedStyle(document.documentElement)\n .getPropertyValue(\"--p-text-color\")\n .trim();\n },\n mergedOptions() {\n return {\n ...this.options,\n plugins: {\n ...this.options?.plugins,\n legend: {\n ...this.options?.plugins?.legend,\n labels: {\n ...this.options?.plugins?.legend?.labels,\n color: this.textColor,\n },\n },\n },\n };\n },\n },\n};\n</script>\n\n<style scoped>\n.chart-wrapper {\n display: flex;\n justify-content: center;\n}\n\n.chart-full-width {\n width: 100%;\n}\n</style>\n"],"names":["_sfc_main","Chart","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_PrimeChart","$props","$options"],"mappings":";;;AA8BA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY;AAAA,IACV,YAAYC;AAAA;EAEd,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA;;EAGpB,UAAU;AAAA,IACR,YAAY;AACV,aAAO,iBAAiB,SAAS,eAAe,EAC7C,iBAAiB,gBAAgB,EACjC,KAAI;AAAA,IACT;AAAA,IACA,gBAAgB;AACd,aAAO;AAAA,QACL,GAAG,KAAK;AAAA,QACR,SAAS;AAAA,UACP,GAAG,KAAK,SAAS;AAAA,UACjB,QAAQ;AAAA,YACN,GAAG,KAAK,SAAS,SAAS;AAAA,YAC1B,QAAQ;AAAA,cACN,GAAG,KAAK,SAAS,SAAS,QAAQ;AAAA,cAClC,OAAO,KAAK;AAAA;;;;IAKtB;AAAA;AAEJ,GAtDOC,IAAA,EAAA,OAAM,gBAAe;;;AAA1B,SAAAC,EAAA,GAAAC,EAOM,OAPNF,GAOM;AAAA,IANJG,EAKEC,GAAA;AAAA,MAJA,OAAM;AAAA,MACL,MAAMC,EAAA;AAAA,MACN,MAAMA,EAAA;AAAA,MACN,SAASC,EAAA;AAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { _ as p, e as m, g } from "./index-Dh35mLnd.js";
1
+ import { _ as p, e as m, g } from "./index-Bat41R_Q.js";
2
2
  import y from "primevue/image";
3
3
  import { resolveComponent as d, openBlock as t, createBlock as h, createCommentVNode as c, createElementBlock as s, createVNode as l, Fragment as D, renderList as I, createElementVNode as P, toDisplayString as F } from "vue";
4
4
  import { VuePDF as k, usePDF as v } from "@tato30/vue-pdf";
@@ -101,4 +101,4 @@ const q = /* @__PURE__ */ p(V, [["render", N], ["__scopeId", "data-v-f3488bc8"]]
101
101
  export {
102
102
  q as default
103
103
  };
104
- //# sourceMappingURL=DisplayFileInDashboardComponent-BitxF6kA.js.map
104
+ //# sourceMappingURL=DisplayFileInDashboardComponent-DybH5peP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayFileInDashboardComponent-BitxF6kA.js","sources":["../src/components/dashboard/widgets/OnlyImageDisplayed.vue","../src/components/dashboard/widgets/DisplayFileInDashboardComponent.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n<template>\n <PrimeImage v-if=\"id\" :src=\"contentUrl\" imageClass=\"image-displayed\" />\n</template>\n<script>\nimport Image from \"primevue/image\";\nimport alfrescoFileService from \"@/services/AlfrescoFileService.js\";\n\nexport default {\n name: \"OnlyImageDisplayed\",\n components: {\n PrimeImage: Image,\n },\n props: {\n id: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n contentUrl: null,\n };\n },\n mounted() {\n this.loadImage();\n },\n methods: {\n loadImage() {\n this.contentUrl = alfrescoFileService.getContentUrl(this.id);\n },\n },\n computed: {\n hasContentUrl() {\n return this.contentUrl !== \"\";\n },\n },\n};\n</script>\n<style scoped>\n:deep(.image-displayed) {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n display: block;\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n<template>\n <div v-if=\"type === 'image'\">\n <OnlyImageDisplayed :id=\"id\" />\n </div>\n <div v-else-if=\"type === 'pdf'\">\n <div v-if=\"pdf\" class=\"pdf-pages-container\">\n <div v-for=\"page in pages\" :key=\"page\">\n <VuePDF :pdf=\"pdf\" :page=\"page\" :rotation=\"rotation\" :scale=\"scale\" />\n <span class=\"pdf-pagination\">\n {{ $t(\"pdf.currentPagination\", { page: page, pages: pages }) }}</span\n >\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport alfrescoFileService from \"@/services/AlfrescoFileService.js\";\nimport OnlyImageDisplayed from \"@/components/dashboard/widgets/OnlyImageDisplayed.vue\";\nimport { usePDF, VuePDF } from \"@tato30/vue-pdf\";\nimport { buildPdfSource } from \"@/services/PdfConfigService.js\";\n\nexport default {\n name: \"DisplayFileInDashboardComponent\",\n components: { VuePDF, OnlyImageDisplayed },\n props: {\n type: {\n type: String,\n default: \"pdf\",\n },\n id: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n pdf: null,\n pages: 0,\n rotation: 0,\n scale: 1,\n };\n },\n mounted() {\n if (this.type === \"pdf\") {\n this.loadPDF();\n }\n },\n methods: {\n loadPDF() {\n let url = alfrescoFileService.getContentUrl(this.id);\n if (!url) {\n console.error(\"URL is not defined\");\n return;\n }\n const document = usePDF(buildPdfSource(url));\n this.pdf = document.pdf;\n this.pages = document.pages;\n },\n },\n};\n</script>\n\n<style scoped>\n.pdf-pages-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 1rem;\n}\n\n.pdf-pagination {\n display: flex;\n justify-content: center;\n padding: 1rem;\n}\n</style>\n"],"names":["_sfc_main","Image","alfrescoFileService","$props","_createBlock","_component_PrimeImage","$data","VuePDF","OnlyImageDisplayed","url","document","usePDF","buildPdfSource","_hoisted_4","_createElementBlock","_hoisted_1","_createVNode","_component_OnlyImageDisplayed","_hoisted_2","_openBlock","_hoisted_3","_Fragment","_renderList","page","_component_VuePDF","_createElementVNode","_toDisplayString","_ctx"],"mappings":";;;;AAuBA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY;AAAA,IACV,YAAYC;AAAA;EAEd,OAAO;AAAA,IACL,IAAI;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO;AACL,WAAO;AAAA,MACL,YAAY;AAAA;EAEhB;AAAA,EACA,UAAU;AACR,SAAK,UAAS;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AACV,WAAK,aAAaC,EAAoB,cAAc,KAAK,EAAE;AAAA,IAC7D;AAAA;EAEF,UAAU;AAAA,IACR,gBAAgB;AACd,aAAO,KAAK,eAAe;AAAA,IAC7B;AAAA;AAEJ;;;SAnCoBC,EAAA,WAAlBC,EAAuEC,GAAA;AAAA;IAAhD,KAAKC,EAAA;AAAA,IAAY,YAAW;AAAA;;mFCqBhDN,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY,EAAE,QAAAO,GAAQ,oBAAAC;EACtB,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,IAAI;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO;AACL,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA;EAEX;AAAA,EACA,UAAU;AACR,IAAI,KAAK,SAAS,SAChB,KAAK,QAAO;AAAA,EAEhB;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AACR,UAAIC,IAAMP,EAAoB,cAAc,KAAK,EAAE;AACnD,UAAI,CAACO,GAAK;AACR,gBAAQ,MAAM,oBAAoB;AAClC;AAAA,MACF;AACA,YAAMC,IAAWC,EAAOC,EAAeH,CAAG,CAAC;AAC3C,WAAK,MAAMC,EAAS,KACpB,KAAK,QAAQA,EAAS;AAAA,IACxB;AAAA;AAEJ;;EAvDoB,OAAM;GAGZG,IAAA,EAAA,OAAM,iBAAgB;;;SAPvBV,EAAA,SAAI,gBAAfW,EAEM,OAAAC,GAAA;AAAA,IADJC,EAA+BC,GAAA,EAAV,IAAId,EAAA,GAAE,GAAA,MAAA,GAAA,CAAA,IAAA,CAAA;AAAA,QAEbA,EAAA,SAAI,cAApBW,EASM,OAAAI,GAAA;AAAA,IAROZ,EAAA,OAAXa,KAAAL,EAOM,OAPNM,GAOM;AAAA,cANJN,EAKMO,GAAA,MAAAC,EALchB,EAAA,OAAK,CAAbiB,YAAZT,EAKM,OAAA,EALsB,KAAKS,KAAI;AAAA,QACnCP,EAAsEQ,GAAA;AAAA,UAA7D,KAAKlB,EAAA;AAAA,UAAM,MAAMiB;AAAA,UAAO,UAAUjB,EAAA;AAAA,UAAW,OAAOA,EAAA;AAAA;QAC7DmB,EAEC,QAFDZ,GAECa,EADIC,KAAE,yBAAA,EAAA,MAAkCJ,UAAajB,EAAA,MAAK,CAAA,CAAA,GAAA,CAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"DisplayFileInDashboardComponent-DybH5peP.js","sources":["../src/components/dashboard/widgets/OnlyImageDisplayed.vue","../src/components/dashboard/widgets/DisplayFileInDashboardComponent.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n<template>\n <PrimeImage v-if=\"id\" :src=\"contentUrl\" imageClass=\"image-displayed\" />\n</template>\n<script>\nimport Image from \"primevue/image\";\nimport alfrescoFileService from \"@/services/AlfrescoFileService.js\";\n\nexport default {\n name: \"OnlyImageDisplayed\",\n components: {\n PrimeImage: Image,\n },\n props: {\n id: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n contentUrl: null,\n };\n },\n mounted() {\n this.loadImage();\n },\n methods: {\n loadImage() {\n this.contentUrl = alfrescoFileService.getContentUrl(this.id);\n },\n },\n computed: {\n hasContentUrl() {\n return this.contentUrl !== \"\";\n },\n },\n};\n</script>\n<style scoped>\n:deep(.image-displayed) {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n display: block;\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n<template>\n <div v-if=\"type === 'image'\">\n <OnlyImageDisplayed :id=\"id\" />\n </div>\n <div v-else-if=\"type === 'pdf'\">\n <div v-if=\"pdf\" class=\"pdf-pages-container\">\n <div v-for=\"page in pages\" :key=\"page\">\n <VuePDF :pdf=\"pdf\" :page=\"page\" :rotation=\"rotation\" :scale=\"scale\" />\n <span class=\"pdf-pagination\">\n {{ $t(\"pdf.currentPagination\", { page: page, pages: pages }) }}</span\n >\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport alfrescoFileService from \"@/services/AlfrescoFileService.js\";\nimport OnlyImageDisplayed from \"@/components/dashboard/widgets/OnlyImageDisplayed.vue\";\nimport { usePDF, VuePDF } from \"@tato30/vue-pdf\";\nimport { buildPdfSource } from \"@/services/PdfConfigService.js\";\n\nexport default {\n name: \"DisplayFileInDashboardComponent\",\n components: { VuePDF, OnlyImageDisplayed },\n props: {\n type: {\n type: String,\n default: \"pdf\",\n },\n id: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n pdf: null,\n pages: 0,\n rotation: 0,\n scale: 1,\n };\n },\n mounted() {\n if (this.type === \"pdf\") {\n this.loadPDF();\n }\n },\n methods: {\n loadPDF() {\n let url = alfrescoFileService.getContentUrl(this.id);\n if (!url) {\n console.error(\"URL is not defined\");\n return;\n }\n const document = usePDF(buildPdfSource(url));\n this.pdf = document.pdf;\n this.pages = document.pages;\n },\n },\n};\n</script>\n\n<style scoped>\n.pdf-pages-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 1rem;\n}\n\n.pdf-pagination {\n display: flex;\n justify-content: center;\n padding: 1rem;\n}\n</style>\n"],"names":["_sfc_main","Image","alfrescoFileService","$props","_createBlock","_component_PrimeImage","$data","VuePDF","OnlyImageDisplayed","url","document","usePDF","buildPdfSource","_hoisted_4","_createElementBlock","_hoisted_1","_createVNode","_component_OnlyImageDisplayed","_hoisted_2","_openBlock","_hoisted_3","_Fragment","_renderList","page","_component_VuePDF","_createElementVNode","_toDisplayString","_ctx"],"mappings":";;;;AAuBA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY;AAAA,IACV,YAAYC;AAAA;EAEd,OAAO;AAAA,IACL,IAAI;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO;AACL,WAAO;AAAA,MACL,YAAY;AAAA;EAEhB;AAAA,EACA,UAAU;AACR,SAAK,UAAS;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AACV,WAAK,aAAaC,EAAoB,cAAc,KAAK,EAAE;AAAA,IAC7D;AAAA;EAEF,UAAU;AAAA,IACR,gBAAgB;AACd,aAAO,KAAK,eAAe;AAAA,IAC7B;AAAA;AAEJ;;;SAnCoBC,EAAA,WAAlBC,EAAuEC,GAAA;AAAA;IAAhD,KAAKC,EAAA;AAAA,IAAY,YAAW;AAAA;;mFCqBhDN,IAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY,EAAE,QAAAO,GAAQ,oBAAAC;EACtB,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,IAAI;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO;AACL,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA;EAEX;AAAA,EACA,UAAU;AACR,IAAI,KAAK,SAAS,SAChB,KAAK,QAAO;AAAA,EAEhB;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AACR,UAAIC,IAAMP,EAAoB,cAAc,KAAK,EAAE;AACnD,UAAI,CAACO,GAAK;AACR,gBAAQ,MAAM,oBAAoB;AAClC;AAAA,MACF;AACA,YAAMC,IAAWC,EAAOC,EAAeH,CAAG,CAAC;AAC3C,WAAK,MAAMC,EAAS,KACpB,KAAK,QAAQA,EAAS;AAAA,IACxB;AAAA;AAEJ;;EAvDoB,OAAM;GAGZG,IAAA,EAAA,OAAM,iBAAgB;;;SAPvBV,EAAA,SAAI,gBAAfW,EAEM,OAAAC,GAAA;AAAA,IADJC,EAA+BC,GAAA,EAAV,IAAId,EAAA,GAAE,GAAA,MAAA,GAAA,CAAA,IAAA,CAAA;AAAA,QAEbA,EAAA,SAAI,cAApBW,EASM,OAAAI,GAAA;AAAA,IAROZ,EAAA,OAAXa,KAAAL,EAOM,OAPNM,GAOM;AAAA,cANJN,EAKMO,GAAA,MAAAC,EALchB,EAAA,OAAK,CAAbiB,YAAZT,EAKM,OAAA,EALsB,KAAKS,KAAI;AAAA,QACnCP,EAAsEQ,GAAA;AAAA,UAA7D,KAAKlB,EAAA;AAAA,UAAM,MAAMiB;AAAA,UAAO,UAAUjB,EAAA;AAAA,UAAW,OAAOA,EAAA;AAAA;QAC7DmB,EAEC,QAFDZ,GAECa,EADIC,KAAE,yBAAA,EAAA,MAAkCJ,UAAajB,EAAA,MAAK,CAAA,CAAA,GAAA,CAAA;AAAA;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { openBlock as o, createElementBlock as a, Fragment as t, renderList as r, normalizeStyle as s, normalizeClass as p, createElementVNode as d, toDisplayString as u } from "vue";
2
- import { _ as h } from "./index-Dh35mLnd.js";
2
+ import { _ as h } from "./index-Bat41R_Q.js";
3
3
  const b = {
4
4
  name: "ExternalApps",
5
5
  props: {
@@ -87,4 +87,4 @@ const F = /* @__PURE__ */ h(b, [["render", m], ["__scopeId", "data-v-a950f8e4"]]
87
87
  export {
88
88
  F as default
89
89
  };
90
- //# sourceMappingURL=ExternalApps-1f9eHjBf.js.map
90
+ //# sourceMappingURL=ExternalApps-CAgQ4Fj6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalApps-1f9eHjBf.js","sources":["../src/components/dashboard/widgets/ExternalApps.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"external-apps-grid\">\n <div\n v-for=\"item in mappedItems\"\n :key=\"item.type\"\n class=\"external-app-card\"\n @click=\"handleClick(item)\"\n >\n <template v-if=\"useFavicon\">\n <img\n :src=\"getFaviconUrl(item.link)\"\n alt=\"favicon\"\n class=\"external-app-favicon\"\n width=\"32\"\n height=\"32\"\n />\n </template>\n <template v-else>\n <i\n :class=\"item.customIcon || item.icon\"\n class=\"external-app-icon\"\n :style=\"{\n color: item.color ? `#${item.color}` : 'var(--p-text-color)',\n }\"\n ></i>\n </template>\n <span class=\"external-app-label\">{{ item.label }}</span>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"ExternalApps\",\n props: {\n config: {\n type: Array,\n required: true,\n default: () => [],\n },\n useFavicon: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n mappedItems() {\n const typeMap = {\n calendar: { label: \"Calendar\", icon: \"ri-calendar-line\" },\n chat: { label: \"Chat\", icon: \"ri-chat-3-line\" },\n contacts: { label: \"Contacts\", icon: \"ri-contacts-line\" },\n docs: { label: \"Docs\", icon: \"ri-file-text-line\" },\n email: { label: \"Email\", icon: \"ri-mail-line\" },\n storage: { label: \"File storage\", icon: \"ri-folder-line\" },\n iam: { label: \"IAM\", icon: \"ri-home-5-line\" },\n notes: { label: \"Notes\", icon: \"ri-edit-line\" },\n projects: { label: \"Projects\", icon: \"ri-focus-2-line\" },\n tasks: { label: \"Tasks\", icon: \"ri-list-check-2\" },\n video: { label: \"Video calls\", icon: \"ri-video-chat-line\" },\n wiki: { label: \"Wiki\", icon: \"ri-lightbulb-line\" },\n other: { label: \"Other\", icon: \"ri-question-line\" },\n };\n\n return this.config.map((item) => {\n const mapping = typeMap[item.type] || {\n label: item.type,\n icon: \"ri-question-line\",\n };\n return {\n ...item,\n label: item.value || mapping.label,\n icon: mapping.icon,\n customIcon: item.icon, // User-selected icon\n color: item.color, // User-selected color\n };\n });\n },\n },\n methods: {\n handleClick(item) {\n window.open(item.link, \"_blank\");\n },\n getFaviconUrl(link) {\n const url = new URL(\n link.startsWith(\"http\") ? link : window.location.origin + link,\n );\n return `${url.origin}/favicon.ico`;\n },\n },\n};\n</script>\n\n<style scoped>\n.external-apps-grid {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 0.75rem;\n}\n\n.external-app-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 0.5rem;\n padding: 0.5rem;\n background: var(--p-content-background);\n border: 1px solid var(--p-content-border-color);\n cursor: pointer;\n transition: transform 0.2s;\n width: 7rem;\n height: 7rem;\n}\n\n.external-app-card:hover {\n background: var(--p-highlight-background);\n}\n\n.external-app-favicon {\n margin-bottom: 0.5rem;\n object-fit: contain;\n}\n\n.external-app-icon {\n font-size: 1.75rem;\n margin-bottom: 0.5rem;\n}\n\n.external-app-label {\n font-size: 1rem;\n text-align: center;\n}\n</style>\n"],"names":["_sfc_main","typeMap","item","mapping","link","_hoisted_1","_hoisted_4","_openBlock","_createElementBlock","_Fragment","_renderList","$options","$event","$props","_normalizeClass","_normalizeStyle","_createElementVNode","_toDisplayString"],"mappings":";;AAiDA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS,MAAM,CAAA;AAAA;IAEjB,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,UAAU;AAAA,IACR,cAAc;AACZ,YAAMC,IAAU;AAAA,QACd,UAAU,EAAE,OAAO,YAAY,MAAM,mBAAiB;AAAA,QACtD,MAAM,EAAE,OAAO,QAAQ,MAAM;QAC7B,UAAU,EAAE,OAAO,YAAY,MAAM,mBAAiB;AAAA,QACtD,MAAM,EAAE,OAAO,QAAQ,MAAM;QAC7B,OAAO,EAAE,OAAO,SAAS,MAAM;QAC/B,SAAS,EAAE,OAAO,gBAAgB,MAAM,iBAAe;AAAA,QACvD,KAAK,EAAE,OAAO,OAAO,MAAM;QAC3B,OAAO,EAAE,OAAO,SAAS,MAAM;QAC/B,UAAU,EAAE,OAAO,YAAY,MAAM,kBAAgB;AAAA,QACrD,OAAO,EAAE,OAAO,SAAS,MAAM;QAC/B,OAAO,EAAE,OAAO,eAAe,MAAM,qBAAmB;AAAA,QACxD,MAAM,EAAE,OAAO,QAAQ,MAAM;QAC7B,OAAO,EAAE,OAAO,SAAS,MAAM;;AAGjC,aAAO,KAAK,OAAO,IAAI,CAACC,MAAS;AAC/B,cAAMC,IAAUF,EAAQC,EAAK,IAAI,KAAK;AAAA,UACpC,OAAOA,EAAK;AAAA,UACZ,MAAM;AAAA;AAER,eAAO;AAAA,UACL,GAAGA;AAAA,UACH,OAAOA,EAAK,SAASC,EAAQ;AAAA,UAC7B,MAAMA,EAAQ;AAAA,UACd,YAAYD,EAAK;AAAA;AAAA,UACjB,OAAOA,EAAK;AAAA;AAAA;MAEhB,CAAC;AAAA,IACH;AAAA;EAEF,SAAS;AAAA,IACP,YAAYA,GAAM;AAChB,aAAO,KAAKA,EAAK,MAAM,QAAQ;AAAA,IACjC;AAAA,IACA,cAAcE,GAAM;AAIlB,aAAO,GAHK,IAAI;AAAA,QACdA,EAAK,WAAW,MAAM,IAAIA,IAAO,OAAO,SAAS,SAASA;AAAA,QAE9C,MAAM;AAAA,IACtB;AAAA;AAEJ,GAxFOC,IAAA,EAAA,OAAM,qBAAoB,iCAyBrBC,IAAA,EAAA,OAAM,qBAAoB;;AAzBpC,SAAAC,EAAA,GAAAC,EA2BM,OA3BNH,GA2BM;AAAA,YA1BJG,EAyBMC,GAAA,MAAAC,EAxBWC,EAAA,aAAW,CAAnBT,YADTM,EAyBM,OAAA;AAAA,MAvBH,KAAKN,EAAK;AAAA,MACX,OAAM;AAAA,MACL,SAAK,CAAAU,MAAED,EAAA,YAAYT,CAAI;AAAA;MAERW,EAAA,mBACdL,EAME,OAAA;AAAA;QALC,KAAKG,EAAA,cAAcT,EAAK,IAAI;AAAA,QAC7B,KAAI;AAAA,QACJ,OAAM;AAAA,QACN,OAAM;AAAA,QACN,QAAO;AAAA,8BAITM,EAMK,KAAA;AAAA;QALF,OAAKM,EAAA,CAAEZ,EAAK,cAAcA,EAAK,MAC1B,mBAAmB,CAAA;AAAA,QACxB,OAAKa,EAAA;AAAA,UAAuB,OAAAb,EAAK,QAAK,IAAOA,EAAK,KAAK,KAAA;AAAA;;MAK5Dc,EAAwD,QAAxDV,GAAwDW,EAApBf,EAAK,KAAK,GAAA,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"ExternalApps-CAgQ4Fj6.js","sources":["../src/components/dashboard/widgets/ExternalApps.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"external-apps-grid\">\n <div\n v-for=\"item in mappedItems\"\n :key=\"item.type\"\n class=\"external-app-card\"\n @click=\"handleClick(item)\"\n >\n <template v-if=\"useFavicon\">\n <img\n :src=\"getFaviconUrl(item.link)\"\n alt=\"favicon\"\n class=\"external-app-favicon\"\n width=\"32\"\n height=\"32\"\n />\n </template>\n <template v-else>\n <i\n :class=\"item.customIcon || item.icon\"\n class=\"external-app-icon\"\n :style=\"{\n color: item.color ? `#${item.color}` : 'var(--p-text-color)',\n }\"\n ></i>\n </template>\n <span class=\"external-app-label\">{{ item.label }}</span>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"ExternalApps\",\n props: {\n config: {\n type: Array,\n required: true,\n default: () => [],\n },\n useFavicon: {\n type: Boolean,\n default: false,\n },\n },\n computed: {\n mappedItems() {\n const typeMap = {\n calendar: { label: \"Calendar\", icon: \"ri-calendar-line\" },\n chat: { label: \"Chat\", icon: \"ri-chat-3-line\" },\n contacts: { label: \"Contacts\", icon: \"ri-contacts-line\" },\n docs: { label: \"Docs\", icon: \"ri-file-text-line\" },\n email: { label: \"Email\", icon: \"ri-mail-line\" },\n storage: { label: \"File storage\", icon: \"ri-folder-line\" },\n iam: { label: \"IAM\", icon: \"ri-home-5-line\" },\n notes: { label: \"Notes\", icon: \"ri-edit-line\" },\n projects: { label: \"Projects\", icon: \"ri-focus-2-line\" },\n tasks: { label: \"Tasks\", icon: \"ri-list-check-2\" },\n video: { label: \"Video calls\", icon: \"ri-video-chat-line\" },\n wiki: { label: \"Wiki\", icon: \"ri-lightbulb-line\" },\n other: { label: \"Other\", icon: \"ri-question-line\" },\n };\n\n return this.config.map((item) => {\n const mapping = typeMap[item.type] || {\n label: item.type,\n icon: \"ri-question-line\",\n };\n return {\n ...item,\n label: item.value || mapping.label,\n icon: mapping.icon,\n customIcon: item.icon, // User-selected icon\n color: item.color, // User-selected color\n };\n });\n },\n },\n methods: {\n handleClick(item) {\n window.open(item.link, \"_blank\");\n },\n getFaviconUrl(link) {\n const url = new URL(\n link.startsWith(\"http\") ? link : window.location.origin + link,\n );\n return `${url.origin}/favicon.ico`;\n },\n },\n};\n</script>\n\n<style scoped>\n.external-apps-grid {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 0.75rem;\n}\n\n.external-app-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 0.5rem;\n padding: 0.5rem;\n background: var(--p-content-background);\n border: 1px solid var(--p-content-border-color);\n cursor: pointer;\n transition: transform 0.2s;\n width: 7rem;\n height: 7rem;\n}\n\n.external-app-card:hover {\n background: var(--p-highlight-background);\n}\n\n.external-app-favicon {\n margin-bottom: 0.5rem;\n object-fit: contain;\n}\n\n.external-app-icon {\n font-size: 1.75rem;\n margin-bottom: 0.5rem;\n}\n\n.external-app-label {\n font-size: 1rem;\n text-align: center;\n}\n</style>\n"],"names":["_sfc_main","typeMap","item","mapping","link","_hoisted_1","_hoisted_4","_openBlock","_createElementBlock","_Fragment","_renderList","$options","$event","$props","_normalizeClass","_normalizeStyle","_createElementVNode","_toDisplayString"],"mappings":";;AAiDA,MAAKA,IAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS,MAAM,CAAA;AAAA;IAEjB,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,UAAU;AAAA,IACR,cAAc;AACZ,YAAMC,IAAU;AAAA,QACd,UAAU,EAAE,OAAO,YAAY,MAAM,mBAAiB;AAAA,QACtD,MAAM,EAAE,OAAO,QAAQ,MAAM;QAC7B,UAAU,EAAE,OAAO,YAAY,MAAM,mBAAiB;AAAA,QACtD,MAAM,EAAE,OAAO,QAAQ,MAAM;QAC7B,OAAO,EAAE,OAAO,SAAS,MAAM;QAC/B,SAAS,EAAE,OAAO,gBAAgB,MAAM,iBAAe;AAAA,QACvD,KAAK,EAAE,OAAO,OAAO,MAAM;QAC3B,OAAO,EAAE,OAAO,SAAS,MAAM;QAC/B,UAAU,EAAE,OAAO,YAAY,MAAM,kBAAgB;AAAA,QACrD,OAAO,EAAE,OAAO,SAAS,MAAM;QAC/B,OAAO,EAAE,OAAO,eAAe,MAAM,qBAAmB;AAAA,QACxD,MAAM,EAAE,OAAO,QAAQ,MAAM;QAC7B,OAAO,EAAE,OAAO,SAAS,MAAM;;AAGjC,aAAO,KAAK,OAAO,IAAI,CAACC,MAAS;AAC/B,cAAMC,IAAUF,EAAQC,EAAK,IAAI,KAAK;AAAA,UACpC,OAAOA,EAAK;AAAA,UACZ,MAAM;AAAA;AAER,eAAO;AAAA,UACL,GAAGA;AAAA,UACH,OAAOA,EAAK,SAASC,EAAQ;AAAA,UAC7B,MAAMA,EAAQ;AAAA,UACd,YAAYD,EAAK;AAAA;AAAA,UACjB,OAAOA,EAAK;AAAA;AAAA;MAEhB,CAAC;AAAA,IACH;AAAA;EAEF,SAAS;AAAA,IACP,YAAYA,GAAM;AAChB,aAAO,KAAKA,EAAK,MAAM,QAAQ;AAAA,IACjC;AAAA,IACA,cAAcE,GAAM;AAIlB,aAAO,GAHK,IAAI;AAAA,QACdA,EAAK,WAAW,MAAM,IAAIA,IAAO,OAAO,SAAS,SAASA;AAAA,QAE9C,MAAM;AAAA,IACtB;AAAA;AAEJ,GAxFOC,IAAA,EAAA,OAAM,qBAAoB,iCAyBrBC,IAAA,EAAA,OAAM,qBAAoB;;AAzBpC,SAAAC,EAAA,GAAAC,EA2BM,OA3BNH,GA2BM;AAAA,YA1BJG,EAyBMC,GAAA,MAAAC,EAxBWC,EAAA,aAAW,CAAnBT,YADTM,EAyBM,OAAA;AAAA,MAvBH,KAAKN,EAAK;AAAA,MACX,OAAM;AAAA,MACL,SAAK,CAAAU,MAAED,EAAA,YAAYT,CAAI;AAAA;MAERW,EAAA,mBACdL,EAME,OAAA;AAAA;QALC,KAAKG,EAAA,cAAcT,EAAK,IAAI;AAAA,QAC7B,KAAI;AAAA,QACJ,OAAM;AAAA,QACN,OAAM;AAAA,QACN,QAAO;AAAA,8BAITM,EAMK,KAAA;AAAA;QALF,OAAKM,EAAA,CAAEZ,EAAK,cAAcA,EAAK,MAC1B,mBAAmB,CAAA;AAAA,QACxB,OAAKa,EAAA;AAAA,UAAuB,OAAAb,EAAK,QAAK,IAAOA,EAAK,KAAK,KAAA;AAAA;;MAK5Dc,EAAwD,QAAxDV,GAAwDW,EAApBf,EAAK,KAAK,GAAA,CAAA;AAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { _ as f, u as C, a as S, b as g, w as T } from "./index-Dh35mLnd.js";
1
+ import { _ as f, u as C, a as S, b as g, w as T } from "./index-Bat41R_Q.js";
2
2
  import { mapState as F } from "pinia";
3
3
  import y from "primevue/tooltip";
4
4
  import { resolveDirective as b, openBlock as s, createElementBlock as o, Fragment as k, renderList as E, createElementVNode as a, normalizeClass as $, withDirectives as v, createTextVNode as w, toDisplayString as l, createCommentVNode as p, resolveComponent as h, createBlock as _ } from "vue";
@@ -358,4 +358,4 @@ const ce = /* @__PURE__ */ f(re, [["render", oe], ["__scopeId", "data-v-c02a615a
358
358
  export {
359
359
  ce as default
360
360
  };
361
- //# sourceMappingURL=FavoriteList-B-ySLbc4.js.map
361
+ //# sourceMappingURL=FavoriteList-CIvIXlWH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FavoriteList-B-ySLbc4.js","sources":["../src/components/dashboard/widgets/FavoriteFileList.vue","../src/components/dashboard/widgets/FavoriteFolderList.vue","../src/components/dashboard/widgets/FavoriteSiteList.vue","../src/components/dashboard/widgets/FavoriteList.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"file-grid-container\" v-if=\"favoriteFiles.length > 0\">\n <button\n v-for=\"file in favoriteFiles\"\n :key=\"file.id\"\n class=\"file-card\"\n @click=\"navigateTo(file)\"\n :aria-label=\"file.title || file.name\"\n >\n <div class=\"file-card-row\">\n <i\n :class=\"getIconClass(file.mimeType)\"\n class=\"file-icon\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"file-info\">\n <div\n class=\"file-name\"\n v-tooltip.bottom=\"file.description || file.title || file.name\"\n >\n {{ file.title || file.name }}\n </div>\n <div v-if=\"file.title\" class=\"file-secondary-name\">\n {{ file.name }}\n </div>\n </div>\n </div>\n </button>\n </div>\n <div v-else>{{ $t(\"emptyFavoriteFile\") }}</div>\n</template>\n\n<script>\nimport { useCollaboraStore } from \"@/stores/collabora\";\nimport { useConfigStore } from \"@/stores/config\";\nimport { useFavoritesStore } from \"@/stores/favorites\";\nimport { mapState } from \"pinia\";\nimport Tooltip from \"primevue/tooltip\";\n\nexport default {\n name: \"FavoriteFileList\",\n directives: {\n tooltip: Tooltip,\n },\n props: {\n siteId: {\n type: String,\n default: \"\",\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n favorites: [],\n };\n },\n computed: {\n ...mapState(useConfigStore, [\"ESPACES_HOST\"]),\n favoriteFiles() {\n return this.favorites\n .map((fav) => fav.target.file)\n .filter((file) => file !== undefined && file !== null)\n .filter((file) => this.matchesSite(file))\n .sort((a, b) => a.name.localeCompare(b.name));\n },\n },\n mounted() {\n const favoritesStore = useFavoritesStore();\n favoritesStore\n .loadFavorites()\n .then(() => {\n this.favorites = favoritesStore.fileFavorites;\n })\n .catch((err) => {\n console.error(\"Error loading favorites:\", err);\n });\n },\n methods: {\n matchesSite(node) {\n if (!this.siteId) {\n return true;\n }\n const siteElement = node.path?.elements?.find(\n (el) => el.nodeType === \"st:site\",\n );\n return siteElement?.name === this.siteId;\n },\n getIconClass(mimeType) {\n if (!mimeType) {\n return \"ri-file-line\";\n }\n if (mimeType === \"application/pdf\") {\n return \"ri-file-pdf-line\";\n }\n if (\n mimeType.includes(\"word\") ||\n mimeType.includes(\"opendocument.text\") ||\n mimeType === \"application/rtf\"\n ) {\n return \"ri-file-word-line\";\n }\n if (mimeType.includes(\"excel\") || mimeType.includes(\"spreadsheet\")) {\n return \"ri-file-excel-line\";\n }\n if (\n mimeType.includes(\"powerpoint\") ||\n mimeType.includes(\"presentation\")\n ) {\n return \"ri-file-ppt-line\";\n }\n if (mimeType.startsWith(\"image/\")) {\n return \"ri-image-line\";\n }\n if (mimeType.startsWith(\"video/\")) {\n return \"ri-video-line\";\n }\n if (mimeType.startsWith(\"audio/\")) {\n return \"ri-music-line\";\n }\n if (\n mimeType.includes(\"zip\") ||\n mimeType.includes(\"tar\") ||\n mimeType.includes(\"compressed\")\n ) {\n return \"ri-file-zip-line\";\n }\n if (\n mimeType.startsWith(\"text/\") ||\n mimeType === \"application/json\" ||\n mimeType === \"application/xml\"\n ) {\n return \"ri-file-text-line\";\n }\n if (mimeType === \"message/rfc822\") {\n return \"ri-mail-line\";\n }\n return \"ri-file-line\";\n },\n navigateTo(file) {\n const collaboraStore = useCollaboraStore();\n let destinationName = \"\";\n if (\n file.mimeType === \"image/vnd.dxf\" ||\n file.mimeType === \"image/vnd.dwg\" ||\n file.mimeType === \"message/rfc822\"\n ) {\n destinationName = \"pdf\";\n } else if (file.mimeType.startsWith(\"image/\")) {\n destinationName = \"image\";\n } else if (file.mimeType.startsWith(\"video/\")) {\n destinationName = \"video\";\n } else if (\n file.mimeType.startsWith(\"text/x-markdown\") ||\n file.mimeType.startsWith(\"text/x-web-markdown\")\n ) {\n destinationName = \"md\";\n } else if (file.mimeType.startsWith(\"text/html\")) {\n destinationName = \"html\";\n } else if (file.mimeType.startsWith(\"text/plain\")) {\n destinationName = \"text\";\n } else if (file.mimeType === \"application/pdf\") {\n destinationName = \"pdf\";\n } else {\n if (collaboraStore.checkIfExists(file.mimeType, \"edit\")) {\n destinationName = \"edit\";\n }\n if (collaboraStore.checkIfExists(file.mimeType, \"view\")) {\n destinationName = \"view\";\n }\n if (collaboraStore.checkIfExists(file.mimeType, \"view_comment\")) {\n destinationName = \"view_comment\";\n }\n }\n if (this.urlResolver) {\n this.urlResolver(file);\n } else {\n window.open(\n `${this.ESPACES_HOST}/espaces/${destinationName}/${file.id}`,\n \"_blank\",\n );\n }\n },\n },\n};\n</script>\n\n<style scoped>\n.file-grid-container {\n display: grid;\n gap: 1rem;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n}\n\n.file-card {\n background-color: var(--p-content-background);\n padding: 1rem;\n border-radius: 0.75rem;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n border: 1px solid var(--p-content-border-color);\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n transition:\n border-color 0.2s,\n box-shadow 0.2s;\n}\n\n.file-card:hover {\n border-color: var(--p-primary-color);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.file-card:focus-visible {\n outline: 2px solid var(--p-primary-color);\n outline-offset: 2px;\n}\n\n.file-card-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.file-icon {\n font-size: 1.5rem;\n color: var(--p-primary-color);\n flex-shrink: 0;\n}\n\n.file-info {\n min-width: 0;\n overflow: hidden;\n}\n\n.file-info > div {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.file-name {\n font-weight: 500;\n font-size: 0.875rem;\n}\n\n.file-secondary-name {\n font-size: 0.75rem;\n color: var(--p-text-muted-color);\n margin-top: 0.25rem;\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"folder-grid-container\" v-if=\"favoriteFolders.length > 0\">\n <button\n v-for=\"folder in favoriteFolders\"\n :key=\"folder.id\"\n class=\"folder-card\"\n @click=\"navigateTo(folder)\"\n :aria-label=\"folder.name\"\n >\n <div class=\"folder-card-row\">\n <i class=\"ri-folder-line folder-icon\" aria-hidden=\"true\"></i>\n <div class=\"folder-info\">\n <div class=\"folder-name\" v-tooltip.bottom=\"folder.name\">\n {{ folder.name }}\n </div>\n </div>\n </div>\n </button>\n </div>\n <div v-else>{{ $t(\"emptyFavoriteFolder\") }}</div>\n</template>\n\n<script>\nimport { useConfigStore } from \"@/stores/config\";\nimport { useFavoritesStore } from \"@/stores/favorites\";\nimport { mapState } from \"pinia\";\nimport Tooltip from \"primevue/tooltip\";\n\nexport default {\n name: \"FavoriteFolderList\",\n directives: {\n tooltip: Tooltip,\n },\n props: {\n siteId: {\n type: String,\n default: \"\",\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n favorites: [],\n };\n },\n computed: {\n ...mapState(useConfigStore, [\"ESPACES_HOST\"]),\n favoriteFolders() {\n return this.favorites\n .map((fav) => fav.target.folder)\n .filter((folder) => folder !== undefined && folder !== null)\n .filter((folder) => this.matchesSite(folder))\n .sort((a, b) => a.name.localeCompare(b.name));\n },\n },\n mounted() {\n const favoritesStore = useFavoritesStore();\n favoritesStore\n .loadFavorites()\n .then(() => {\n this.favorites = favoritesStore.folderFavorites;\n })\n .catch((err) => {\n console.error(\"Error loading favorites:\", err);\n });\n },\n methods: {\n matchesSite(node) {\n if (!this.siteId) {\n return true;\n }\n const siteElement = node.path?.elements?.find(\n (el) => el.nodeType === \"st:site\",\n );\n return siteElement?.name === this.siteId;\n },\n navigateTo(folder) {\n if (this.urlResolver) {\n this.urlResolver(folder);\n } else {\n window.open(\n `${this.ESPACES_HOST}/espaces/mes-espaces/dossier/${folder.id}`,\n \"_blank\",\n );\n }\n },\n },\n};\n</script>\n\n<style scoped>\n.folder-grid-container {\n display: grid;\n gap: 1rem;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n}\n\n.folder-card {\n background-color: var(--p-content-background);\n padding: 1rem;\n border-radius: 0.75rem;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n border: 1px solid var(--p-content-border-color);\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n transition:\n border-color 0.2s,\n box-shadow 0.2s;\n}\n\n.folder-card:hover {\n border-color: var(--p-primary-color);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.folder-card:focus-visible {\n outline: 2px solid var(--p-primary-color);\n outline-offset: 2px;\n}\n\n.folder-card-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.folder-icon {\n font-size: 1.5rem;\n color: var(--p-primary-color);\n flex-shrink: 0;\n}\n\n.folder-info {\n min-width: 0;\n overflow: hidden;\n}\n\n.folder-info > div {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.folder-name {\n font-weight: 500;\n font-size: 0.875rem;\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"site-grid-container\" v-if=\"favoriteSites.length > 0\">\n <div v-for=\"site in favoriteSites\" :key=\"site.id\" class=\"site-card\">\n <div class=\"site-card-row\">\n <span\n class=\"visibility-dot\"\n :class=\"'visibility-dot--' + getVisibilitySeverity(site.visibility)\"\n :aria-label=\"getVisibilityLabel(site.visibility)\"\n v-tooltip.bottom=\"getVisibilityLabel(site.visibility)\"\n ></span>\n <div>\n <div\n class=\"site-title\"\n @click=\"goToSite(site)\"\n v-tooltip.bottom=\"site.title\"\n >\n {{ site.title }}\n </div>\n <div class=\"site-description\">\n {{ site.description || \"Aucune description\" }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else>{{ $t(\"emptyFavoriteSite\") }}</div>\n</template>\n\n<script>\nimport { useConfigStore } from \"@/stores/config\";\nimport { useFavoritesStore } from \"@/stores/favorites\";\nimport { mapState } from \"pinia\";\nimport Tooltip from \"primevue/tooltip\";\n\nexport default {\n name: \"FavoriteSiteList\",\n directives: {\n tooltip: Tooltip,\n },\n props: {\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n favorites: [],\n };\n },\n methods: {\n getSite(fav) {\n return fav.target.site;\n },\n goToSite(site) {\n if (this.urlResolver) {\n this.urlResolver(site);\n } else {\n window.open(\n `${this.ESPACES_HOST}/espaces/mes-espaces/${site.id}`,\n \"_blank\",\n );\n }\n },\n getVisibilityLabel(visibility) {\n switch (visibility) {\n case \"PUBLIC\":\n return \"Public\";\n case \"PRIVATE\":\n return \"Privé\";\n case \"MODERATED\":\n return \"Modéré\";\n default:\n return \"Inconnu\";\n }\n },\n getVisibilitySeverity(visibility) {\n switch (visibility) {\n case \"PUBLIC\":\n return \"success\"; // vert\n case \"PRIVATE\":\n return \"danger\"; // rouge\n case \"MODERATED\":\n return \"warning\"; // orange\n default:\n return \"info\";\n }\n },\n },\n mounted() {\n const favoritesStore = useFavoritesStore();\n favoritesStore\n .loadFavorites()\n .then(() => {\n this.favorites = favoritesStore.siteFavorites;\n })\n .catch((err) => {\n console.error(\"Erreur lors du chargement des favoris:\", err);\n });\n },\n computed: {\n ...mapState(useConfigStore, [\"ESPACES_HOST\"]),\n favoriteSites() {\n // Parcours chaque favorite, récupère target.site si existant\n return this.favorites\n .map((fav) => this.getSite(fav))\n .filter((site) => site !== undefined && site !== null)\n .sort((a, b) => a.title.localeCompare(b.title));\n },\n },\n};\n</script>\n<style scoped>\n.site-grid-container {\n display: grid;\n gap: 0.5rem;\n grid-template-columns: 1fr;\n}\n\n.site-card {\n background-color: var(--p-content-background);\n padding: 0.5rem 0.75rem;\n border-radius: 0.75rem;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.site-card-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.site-title {\n display: flex;\n font-weight: 500;\n font-size: 0.875rem;\n cursor: pointer;\n}\n\n.site-description {\n display: flex;\n font-size: 0.75rem;\n color: var(--p-text-muted-color);\n margin-top: 0.25rem;\n}\n\n.visibility-dot {\n width: 0.75rem;\n height: 0.75rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.visibility-dot--success {\n background-color: var(--p-green-500);\n}\n\n.visibility-dot--danger {\n background-color: var(--p-red-500);\n}\n\n.visibility-dot--warning {\n background-color: var(--p-orange-500);\n}\n\n.visibility-dot--info {\n background-color: var(--p-blue-500);\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div>\n <p v-if=\"siteTitle\" class=\"site-title-label\">\n {{ siteTitle }}\n </p>\n <FavoriteFileList\n v-if=\"filter === 'file'\"\n :site-id=\"siteId\"\n :url-resolver=\"urlResolver\"\n />\n <FavoriteFolderList\n v-else-if=\"filter === 'folder'\"\n :site-id=\"siteId\"\n :url-resolver=\"urlResolver\"\n />\n <FavoriteSiteList\n v-else-if=\"filter === 'site'\"\n :url-resolver=\"urlResolver\"\n />\n </div>\n</template>\n\n<script>\nimport FavoriteFileList from \"@/components/dashboard/widgets/FavoriteFileList.vue\";\nimport FavoriteFolderList from \"@/components/dashboard/widgets/FavoriteFolderList.vue\";\nimport FavoriteSiteList from \"@/components/dashboard/widgets/FavoriteSiteList.vue\";\nimport workspaceService from \"@/services/WorkspaceService.js\";\n\nexport default {\n name: \"FavoriteList\",\n components: {\n FavoriteFileList,\n FavoriteFolderList,\n FavoriteSiteList,\n },\n props: {\n filter: {\n type: String,\n default: \"file\",\n validator: (value) => [\"file\", \"folder\", \"site\"].includes(value),\n },\n siteId: {\n type: String,\n default: \"\",\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n siteTitle: \"\",\n };\n },\n watch: {\n siteId: {\n immediate: true,\n handler(newSiteId) {\n this.resolveSiteTitle(newSiteId);\n },\n },\n },\n methods: {\n resolveSiteTitle(siteId) {\n if (!siteId) {\n this.siteTitle = \"\";\n return;\n }\n workspaceService\n .getWorkspace(siteId)\n .then((site) => {\n this.siteTitle = site.title || site.id;\n })\n .catch(() => {\n this.siteTitle = siteId;\n });\n },\n },\n};\n</script>\n\n<style scoped>\n.site-title-label {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n color: var(--p-text-muted-color);\n}\n</style>\n"],"names":["_sfc_main","Tooltip","mapState","useConfigStore","fav","file","a","b","favoritesStore","useFavoritesStore","err","node","el","mimeType","collaboraStore","useCollaboraStore","destinationName","_hoisted_3","_hoisted_4","_hoisted_5","$options","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","$event","_createElementVNode","_withDirectives","_createTextVNode","_toDisplayString","_hoisted_6","_ctx","folder","site","visibility","_hoisted_2","FavoriteFileList","FavoriteFolderList","FavoriteSiteList","value","newSiteId","siteId","workspaceService","$data","$props","_createBlock","_component_FavoriteFileList","_component_FavoriteFolderList","_component_FavoriteSiteList"],"mappings":"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"}
1
+ {"version":3,"file":"FavoriteList-CIvIXlWH.js","sources":["../src/components/dashboard/widgets/FavoriteFileList.vue","../src/components/dashboard/widgets/FavoriteFolderList.vue","../src/components/dashboard/widgets/FavoriteSiteList.vue","../src/components/dashboard/widgets/FavoriteList.vue"],"sourcesContent":["<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"file-grid-container\" v-if=\"favoriteFiles.length > 0\">\n <button\n v-for=\"file in favoriteFiles\"\n :key=\"file.id\"\n class=\"file-card\"\n @click=\"navigateTo(file)\"\n :aria-label=\"file.title || file.name\"\n >\n <div class=\"file-card-row\">\n <i\n :class=\"getIconClass(file.mimeType)\"\n class=\"file-icon\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"file-info\">\n <div\n class=\"file-name\"\n v-tooltip.bottom=\"file.description || file.title || file.name\"\n >\n {{ file.title || file.name }}\n </div>\n <div v-if=\"file.title\" class=\"file-secondary-name\">\n {{ file.name }}\n </div>\n </div>\n </div>\n </button>\n </div>\n <div v-else>{{ $t(\"emptyFavoriteFile\") }}</div>\n</template>\n\n<script>\nimport { useCollaboraStore } from \"@/stores/collabora\";\nimport { useConfigStore } from \"@/stores/config\";\nimport { useFavoritesStore } from \"@/stores/favorites\";\nimport { mapState } from \"pinia\";\nimport Tooltip from \"primevue/tooltip\";\n\nexport default {\n name: \"FavoriteFileList\",\n directives: {\n tooltip: Tooltip,\n },\n props: {\n siteId: {\n type: String,\n default: \"\",\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n favorites: [],\n };\n },\n computed: {\n ...mapState(useConfigStore, [\"ESPACES_HOST\"]),\n favoriteFiles() {\n return this.favorites\n .map((fav) => fav.target.file)\n .filter((file) => file !== undefined && file !== null)\n .filter((file) => this.matchesSite(file))\n .sort((a, b) => a.name.localeCompare(b.name));\n },\n },\n mounted() {\n const favoritesStore = useFavoritesStore();\n favoritesStore\n .loadFavorites()\n .then(() => {\n this.favorites = favoritesStore.fileFavorites;\n })\n .catch((err) => {\n console.error(\"Error loading favorites:\", err);\n });\n },\n methods: {\n matchesSite(node) {\n if (!this.siteId) {\n return true;\n }\n const siteElement = node.path?.elements?.find(\n (el) => el.nodeType === \"st:site\",\n );\n return siteElement?.name === this.siteId;\n },\n getIconClass(mimeType) {\n if (!mimeType) {\n return \"ri-file-line\";\n }\n if (mimeType === \"application/pdf\") {\n return \"ri-file-pdf-line\";\n }\n if (\n mimeType.includes(\"word\") ||\n mimeType.includes(\"opendocument.text\") ||\n mimeType === \"application/rtf\"\n ) {\n return \"ri-file-word-line\";\n }\n if (mimeType.includes(\"excel\") || mimeType.includes(\"spreadsheet\")) {\n return \"ri-file-excel-line\";\n }\n if (\n mimeType.includes(\"powerpoint\") ||\n mimeType.includes(\"presentation\")\n ) {\n return \"ri-file-ppt-line\";\n }\n if (mimeType.startsWith(\"image/\")) {\n return \"ri-image-line\";\n }\n if (mimeType.startsWith(\"video/\")) {\n return \"ri-video-line\";\n }\n if (mimeType.startsWith(\"audio/\")) {\n return \"ri-music-line\";\n }\n if (\n mimeType.includes(\"zip\") ||\n mimeType.includes(\"tar\") ||\n mimeType.includes(\"compressed\")\n ) {\n return \"ri-file-zip-line\";\n }\n if (\n mimeType.startsWith(\"text/\") ||\n mimeType === \"application/json\" ||\n mimeType === \"application/xml\"\n ) {\n return \"ri-file-text-line\";\n }\n if (mimeType === \"message/rfc822\") {\n return \"ri-mail-line\";\n }\n return \"ri-file-line\";\n },\n navigateTo(file) {\n const collaboraStore = useCollaboraStore();\n let destinationName = \"\";\n if (\n file.mimeType === \"image/vnd.dxf\" ||\n file.mimeType === \"image/vnd.dwg\" ||\n file.mimeType === \"message/rfc822\"\n ) {\n destinationName = \"pdf\";\n } else if (file.mimeType.startsWith(\"image/\")) {\n destinationName = \"image\";\n } else if (file.mimeType.startsWith(\"video/\")) {\n destinationName = \"video\";\n } else if (\n file.mimeType.startsWith(\"text/x-markdown\") ||\n file.mimeType.startsWith(\"text/x-web-markdown\")\n ) {\n destinationName = \"md\";\n } else if (file.mimeType.startsWith(\"text/html\")) {\n destinationName = \"html\";\n } else if (file.mimeType.startsWith(\"text/plain\")) {\n destinationName = \"text\";\n } else if (file.mimeType === \"application/pdf\") {\n destinationName = \"pdf\";\n } else {\n if (collaboraStore.checkIfExists(file.mimeType, \"edit\")) {\n destinationName = \"edit\";\n }\n if (collaboraStore.checkIfExists(file.mimeType, \"view\")) {\n destinationName = \"view\";\n }\n if (collaboraStore.checkIfExists(file.mimeType, \"view_comment\")) {\n destinationName = \"view_comment\";\n }\n }\n if (this.urlResolver) {\n this.urlResolver(file);\n } else {\n window.open(\n `${this.ESPACES_HOST}/espaces/${destinationName}/${file.id}`,\n \"_blank\",\n );\n }\n },\n },\n};\n</script>\n\n<style scoped>\n.file-grid-container {\n display: grid;\n gap: 1rem;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n}\n\n.file-card {\n background-color: var(--p-content-background);\n padding: 1rem;\n border-radius: 0.75rem;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n border: 1px solid var(--p-content-border-color);\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n transition:\n border-color 0.2s,\n box-shadow 0.2s;\n}\n\n.file-card:hover {\n border-color: var(--p-primary-color);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.file-card:focus-visible {\n outline: 2px solid var(--p-primary-color);\n outline-offset: 2px;\n}\n\n.file-card-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.file-icon {\n font-size: 1.5rem;\n color: var(--p-primary-color);\n flex-shrink: 0;\n}\n\n.file-info {\n min-width: 0;\n overflow: hidden;\n}\n\n.file-info > div {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.file-name {\n font-weight: 500;\n font-size: 0.875rem;\n}\n\n.file-secondary-name {\n font-size: 0.75rem;\n color: var(--p-text-muted-color);\n margin-top: 0.25rem;\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"folder-grid-container\" v-if=\"favoriteFolders.length > 0\">\n <button\n v-for=\"folder in favoriteFolders\"\n :key=\"folder.id\"\n class=\"folder-card\"\n @click=\"navigateTo(folder)\"\n :aria-label=\"folder.name\"\n >\n <div class=\"folder-card-row\">\n <i class=\"ri-folder-line folder-icon\" aria-hidden=\"true\"></i>\n <div class=\"folder-info\">\n <div class=\"folder-name\" v-tooltip.bottom=\"folder.name\">\n {{ folder.name }}\n </div>\n </div>\n </div>\n </button>\n </div>\n <div v-else>{{ $t(\"emptyFavoriteFolder\") }}</div>\n</template>\n\n<script>\nimport { useConfigStore } from \"@/stores/config\";\nimport { useFavoritesStore } from \"@/stores/favorites\";\nimport { mapState } from \"pinia\";\nimport Tooltip from \"primevue/tooltip\";\n\nexport default {\n name: \"FavoriteFolderList\",\n directives: {\n tooltip: Tooltip,\n },\n props: {\n siteId: {\n type: String,\n default: \"\",\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n favorites: [],\n };\n },\n computed: {\n ...mapState(useConfigStore, [\"ESPACES_HOST\"]),\n favoriteFolders() {\n return this.favorites\n .map((fav) => fav.target.folder)\n .filter((folder) => folder !== undefined && folder !== null)\n .filter((folder) => this.matchesSite(folder))\n .sort((a, b) => a.name.localeCompare(b.name));\n },\n },\n mounted() {\n const favoritesStore = useFavoritesStore();\n favoritesStore\n .loadFavorites()\n .then(() => {\n this.favorites = favoritesStore.folderFavorites;\n })\n .catch((err) => {\n console.error(\"Error loading favorites:\", err);\n });\n },\n methods: {\n matchesSite(node) {\n if (!this.siteId) {\n return true;\n }\n const siteElement = node.path?.elements?.find(\n (el) => el.nodeType === \"st:site\",\n );\n return siteElement?.name === this.siteId;\n },\n navigateTo(folder) {\n if (this.urlResolver) {\n this.urlResolver(folder);\n } else {\n window.open(\n `${this.ESPACES_HOST}/espaces/mes-espaces/dossier/${folder.id}`,\n \"_blank\",\n );\n }\n },\n },\n};\n</script>\n\n<style scoped>\n.folder-grid-container {\n display: grid;\n gap: 1rem;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n}\n\n.folder-card {\n background-color: var(--p-content-background);\n padding: 1rem;\n border-radius: 0.75rem;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n border: 1px solid var(--p-content-border-color);\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n transition:\n border-color 0.2s,\n box-shadow 0.2s;\n}\n\n.folder-card:hover {\n border-color: var(--p-primary-color);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.folder-card:focus-visible {\n outline: 2px solid var(--p-primary-color);\n outline-offset: 2px;\n}\n\n.folder-card-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.folder-icon {\n font-size: 1.5rem;\n color: var(--p-primary-color);\n flex-shrink: 0;\n}\n\n.folder-info {\n min-width: 0;\n overflow: hidden;\n}\n\n.folder-info > div {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.folder-name {\n font-weight: 500;\n font-size: 0.875rem;\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div class=\"site-grid-container\" v-if=\"favoriteSites.length > 0\">\n <div v-for=\"site in favoriteSites\" :key=\"site.id\" class=\"site-card\">\n <div class=\"site-card-row\">\n <span\n class=\"visibility-dot\"\n :class=\"'visibility-dot--' + getVisibilitySeverity(site.visibility)\"\n :aria-label=\"getVisibilityLabel(site.visibility)\"\n v-tooltip.bottom=\"getVisibilityLabel(site.visibility)\"\n ></span>\n <div>\n <div\n class=\"site-title\"\n @click=\"goToSite(site)\"\n v-tooltip.bottom=\"site.title\"\n >\n {{ site.title }}\n </div>\n <div class=\"site-description\">\n {{ site.description || \"Aucune description\" }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else>{{ $t(\"emptyFavoriteSite\") }}</div>\n</template>\n\n<script>\nimport { useConfigStore } from \"@/stores/config\";\nimport { useFavoritesStore } from \"@/stores/favorites\";\nimport { mapState } from \"pinia\";\nimport Tooltip from \"primevue/tooltip\";\n\nexport default {\n name: \"FavoriteSiteList\",\n directives: {\n tooltip: Tooltip,\n },\n props: {\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n favorites: [],\n };\n },\n methods: {\n getSite(fav) {\n return fav.target.site;\n },\n goToSite(site) {\n if (this.urlResolver) {\n this.urlResolver(site);\n } else {\n window.open(\n `${this.ESPACES_HOST}/espaces/mes-espaces/${site.id}`,\n \"_blank\",\n );\n }\n },\n getVisibilityLabel(visibility) {\n switch (visibility) {\n case \"PUBLIC\":\n return \"Public\";\n case \"PRIVATE\":\n return \"Privé\";\n case \"MODERATED\":\n return \"Modéré\";\n default:\n return \"Inconnu\";\n }\n },\n getVisibilitySeverity(visibility) {\n switch (visibility) {\n case \"PUBLIC\":\n return \"success\"; // vert\n case \"PRIVATE\":\n return \"danger\"; // rouge\n case \"MODERATED\":\n return \"warning\"; // orange\n default:\n return \"info\";\n }\n },\n },\n mounted() {\n const favoritesStore = useFavoritesStore();\n favoritesStore\n .loadFavorites()\n .then(() => {\n this.favorites = favoritesStore.siteFavorites;\n })\n .catch((err) => {\n console.error(\"Erreur lors du chargement des favoris:\", err);\n });\n },\n computed: {\n ...mapState(useConfigStore, [\"ESPACES_HOST\"]),\n favoriteSites() {\n // Parcours chaque favorite, récupère target.site si existant\n return this.favorites\n .map((fav) => this.getSite(fav))\n .filter((site) => site !== undefined && site !== null)\n .sort((a, b) => a.title.localeCompare(b.title));\n },\n },\n};\n</script>\n<style scoped>\n.site-grid-container {\n display: grid;\n gap: 0.5rem;\n grid-template-columns: 1fr;\n}\n\n.site-card {\n background-color: var(--p-content-background);\n padding: 0.5rem 0.75rem;\n border-radius: 0.75rem;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.site-card-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.site-title {\n display: flex;\n font-weight: 500;\n font-size: 0.875rem;\n cursor: pointer;\n}\n\n.site-description {\n display: flex;\n font-size: 0.75rem;\n color: var(--p-text-muted-color);\n margin-top: 0.25rem;\n}\n\n.visibility-dot {\n width: 0.75rem;\n height: 0.75rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.visibility-dot--success {\n background-color: var(--p-green-500);\n}\n\n.visibility-dot--danger {\n background-color: var(--p-red-500);\n}\n\n.visibility-dot--warning {\n background-color: var(--p-orange-500);\n}\n\n.visibility-dot--info {\n background-color: var(--p-blue-500);\n}\n</style>\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div>\n <p v-if=\"siteTitle\" class=\"site-title-label\">\n {{ siteTitle }}\n </p>\n <FavoriteFileList\n v-if=\"filter === 'file'\"\n :site-id=\"siteId\"\n :url-resolver=\"urlResolver\"\n />\n <FavoriteFolderList\n v-else-if=\"filter === 'folder'\"\n :site-id=\"siteId\"\n :url-resolver=\"urlResolver\"\n />\n <FavoriteSiteList\n v-else-if=\"filter === 'site'\"\n :url-resolver=\"urlResolver\"\n />\n </div>\n</template>\n\n<script>\nimport FavoriteFileList from \"@/components/dashboard/widgets/FavoriteFileList.vue\";\nimport FavoriteFolderList from \"@/components/dashboard/widgets/FavoriteFolderList.vue\";\nimport FavoriteSiteList from \"@/components/dashboard/widgets/FavoriteSiteList.vue\";\nimport workspaceService from \"@/services/WorkspaceService.js\";\n\nexport default {\n name: \"FavoriteList\",\n components: {\n FavoriteFileList,\n FavoriteFolderList,\n FavoriteSiteList,\n },\n props: {\n filter: {\n type: String,\n default: \"file\",\n validator: (value) => [\"file\", \"folder\", \"site\"].includes(value),\n },\n siteId: {\n type: String,\n default: \"\",\n },\n urlResolver: {\n type: Function,\n default: null,\n },\n },\n data() {\n return {\n siteTitle: \"\",\n };\n },\n watch: {\n siteId: {\n immediate: true,\n handler(newSiteId) {\n this.resolveSiteTitle(newSiteId);\n },\n },\n },\n methods: {\n resolveSiteTitle(siteId) {\n if (!siteId) {\n this.siteTitle = \"\";\n return;\n }\n workspaceService\n .getWorkspace(siteId)\n .then((site) => {\n this.siteTitle = site.title || site.id;\n })\n .catch(() => {\n this.siteTitle = siteId;\n });\n },\n },\n};\n</script>\n\n<style scoped>\n.site-title-label {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n color: var(--p-text-muted-color);\n}\n</style>\n"],"names":["_sfc_main","Tooltip","mapState","useConfigStore","fav","file","a","b","favoritesStore","useFavoritesStore","err","node","el","mimeType","collaboraStore","useCollaboraStore","destinationName","_hoisted_3","_hoisted_4","_hoisted_5","$options","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","$event","_createElementVNode","_withDirectives","_createTextVNode","_toDisplayString","_hoisted_6","_ctx","folder","site","visibility","_hoisted_2","FavoriteFileList","FavoriteFolderList","FavoriteSiteList","value","newSiteId","siteId","workspaceService","$data","$props","_createBlock","_component_FavoriteFileList","_component_FavoriteFolderList","_component_FavoriteSiteList"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { _ as i, d } from "./index-Dh35mLnd.js";
1
+ import { _ as i, d } from "./index-Bat41R_Q.js";
2
2
  import { marked as o } from "marked";
3
3
  import r from "dompurify";
4
4
  import { openBlock as s, createElementBlock as m } from "vue";
@@ -53,4 +53,4 @@ const _ = /* @__PURE__ */ i(l, [["render", u]]);
53
53
  export {
54
54
  _ as default
55
55
  };
56
- //# sourceMappingURL=MarkdownComponent-CLjB6lw1.js.map
56
+ //# sourceMappingURL=MarkdownComponent-ClspMFPD.js.map