@logora/debate 0.3.55 → 0.3.56

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.
@@ -1,76 +1,77 @@
1
1
  import { jsx as o, jsxs as l, Fragment as h } from "react/jsx-runtime";
2
- import $ from "classnames";
3
- import { useState as f, useEffect as ie, useCallback as ae, Suspense as le, lazy as ne } from "react";
4
- import { useIntl as de } from "react-intl";
2
+ import B from "classnames";
3
+ import { useState as f, useEffect as ae, useCallback as le, Suspense as ne, lazy as de } from "react";
4
+ import { useIntl as ce } from "react-intl";
5
5
  import s from "./Argument.module.scss.js";
6
- import { ReplyFooter as ce } from "./ReplyFooter.js";
7
- import { useRichContent as pe } from "./useRichContent.js";
8
- import { useAuth as me } from "../../auth/use_auth/useAuth.js";
9
- import { useConfig as ue } from "../../data/config_provider/useConfig.js";
10
- import { useTranslatedContent as B } from "../../translation/translated_content/useTranslatedContent.js";
11
- import { SourceListItem as he } from "../../source/source_list_item/SourceListItem.js";
12
- import { HashScroll as fe } from "../../tools/hash_scroll/HashScroll.js";
13
- import { ContentHeader as ye } from "../../user_content/content_header/ContentHeader.js";
14
- import { Icon as D } from "../../icons/icon/Icon.js";
15
- import { ReadMore as _e } from "../../text/read_more/ReadMore.js";
16
- import { TranslationButton as ge } from "../../translation/translation_button/TranslationButton.js";
17
- import { ContentFooter as be } from "../../user_content/content_footer/ContentFooter.js";
18
- import { VoteButton as Me } from "../../vote/vote_button/VoteButton.js";
19
- import { VotePaginatedList as ve } from "../../list/paginated_list/VotePaginatedList.js";
20
- import { UserContentSkeleton as Ie } from "../../skeleton/user_content_skeleton/UserContentSkeleton.js";
21
- import { Button as Ce } from "../../action/button/Button.js";
22
- const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({ default: e.ArgumentInput }))), E = (e) => e?.replace(/ /g, " "), Re = ({
6
+ import { ReplyFooter as pe } from "./ReplyFooter.js";
7
+ import { useRichContent as me } from "./useRichContent.js";
8
+ import { useAuth as ue } from "../../auth/use_auth/useAuth.js";
9
+ import { useConfig as he } from "../../data/config_provider/useConfig.js";
10
+ import { useTranslatedContent as D } from "../../translation/translated_content/useTranslatedContent.js";
11
+ import { SourceListItem as fe } from "../../source/source_list_item/SourceListItem.js";
12
+ import { HashScroll as ye } from "../../tools/hash_scroll/HashScroll.js";
13
+ import { ContentHeader as _e } from "../../user_content/content_header/ContentHeader.js";
14
+ import { Icon as E } from "../../icons/icon/Icon.js";
15
+ import { ReadMore as ge } from "../../text/read_more/ReadMore.js";
16
+ import { TranslationButton as be } from "../../translation/translation_button/TranslationButton.js";
17
+ import { ContentFooter as Me } from "../../user_content/content_footer/ContentFooter.js";
18
+ import { VoteButton as ve } from "../../vote/vote_button/VoteButton.js";
19
+ import { VotePaginatedList as Ie } from "../../list/paginated_list/VotePaginatedList.js";
20
+ import { UserContentSkeleton as Ce } from "../../skeleton/user_content_skeleton/UserContentSkeleton.js";
21
+ import { Button as Se } from "../../action/button/Button.js";
22
+ const Re = de(() => import("../../input/argument_input/index.js").then((e) => ({ default: e.ArgumentInput }))), P = (e) => e?.replace(/ /g, " "), Te = ({
23
23
  argument: e,
24
24
  argumentReplies: n,
25
25
  nestingLevel: y = 0,
26
- groupType: C,
27
- groupName: S,
26
+ maxNestingLevel: C = 2,
27
+ groupType: S,
28
+ groupName: R,
28
29
  positions: _ = [],
29
- disableLinks: P = !1,
30
+ disableLinks: F = !1,
30
31
  parentArgument: d,
31
- flashParent: F,
32
- expandable: j,
32
+ flashParent: j,
33
+ expandable: G,
33
34
  disabled: g = !1,
34
- hideFooter: R = !1,
35
- hideReplies: T,
36
- vote: G,
37
- fixedContentHeight: H = !1,
38
- enableEdition: V = !0,
39
- enableDeletion: z = !0,
40
- deleteListId: O,
41
- showModerationFeedback: Y,
42
- lineCount: q = 5,
43
- replyRedirectUrl: J,
44
- hideContent: K = !1
35
+ hideFooter: T = !1,
36
+ hideReplies: N,
37
+ vote: H,
38
+ fixedContentHeight: V = !1,
39
+ enableEdition: z = !0,
40
+ enableDeletion: O = !0,
41
+ deleteListId: Y,
42
+ showModerationFeedback: q,
43
+ lineCount: J = 5,
44
+ replyRedirectUrl: K,
45
+ hideContent: Q = !1
45
46
  }) => {
46
- const i = de(), { isLoggedIn: Q, currentUser: c } = me(), N = c?.moderation_status === "banned", r = ue(), [p, b] = f(!1), [W, w] = f(!1), [X, Z] = f(!1), x = pe(e), [m, M] = f(), u = B(
47
+ const i = ce(), { isLoggedIn: W, currentUser: c } = ue(), w = c?.moderation_status === "banned", r = he(), [p, b] = f(!1), [X, A] = f(!1), [Z, ee] = f(!1), x = me(e), [m, M] = f(), u = D(
47
48
  e.content,
48
49
  e.language,
49
50
  "content",
50
51
  e.translation_entries
51
- ), ee = B(
52
+ ), te = D(
52
53
  e.position?.name,
53
54
  e.position?.language,
54
55
  "name",
55
56
  e.position?.translation_entries
56
57
  ), v = `argument_${e.id}`, I = e.position && _?.map((t) => t.id).indexOf(e.position.id) + 1;
57
- ie(() => {
58
- n !== void 0 && re();
58
+ ae(() => {
59
+ n !== void 0 && ie();
59
60
  }, [n]);
60
- const te = (t) => {
61
+ const oe = (t) => {
61
62
  if (v === t) {
62
- const U = document.getElementById(t);
63
- U && U.scrollIntoView({ behavior: "smooth" }), w(!0);
63
+ const $ = document.getElementById(t);
64
+ $ && $.scrollIntoView({ behavior: "smooth" }), A(!0);
64
65
  }
65
- }, A = () => {
66
- Z((t) => !t);
67
66
  }, L = () => {
67
+ ee((t) => !t);
68
+ }, k = () => {
68
69
  b((t) => !t), M([]);
69
- }, oe = (t) => {
70
+ }, se = (t) => {
70
71
  if (!m?.find((a) => a.id === t.id))
71
72
  return t;
72
- }, se = ae((t, a) => /* @__PURE__ */ o(
73
- he,
73
+ }, re = le((t, a) => /* @__PURE__ */ o(
74
+ fe,
74
75
  {
75
76
  publisher: t.publisher,
76
77
  url: t.source_url,
@@ -78,35 +79,36 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
78
79
  index: a
79
80
  },
80
81
  a
81
- ), []), re = () => {
82
+ ), []), ie = () => {
82
83
  if (n && Array.isArray(n)) {
83
84
  const t = n.filter(
84
85
  (a) => a.reply_to_id === e.id
85
86
  );
86
87
  t.length > 0 && (M(t), b(!0));
87
88
  }
88
- }, k = (t = null) => /* @__PURE__ */ o(
89
- Te,
89
+ }, U = (t = null) => /* @__PURE__ */ o(
90
+ Ne,
90
91
  {
91
92
  ...t ? { argument: t } : {},
92
93
  nestingLevel: y + 1,
94
+ maxNestingLevel: C,
93
95
  disabled: g,
94
- groupName: S,
95
- groupType: C,
96
+ groupName: R,
97
+ groupType: S,
96
98
  positions: _,
97
99
  argumentReplies: n,
98
100
  parentArgument: e,
99
- flashParent: (a) => te(`argument_${a}`)
101
+ flashParent: (a) => oe(`argument_${a}`)
100
102
  }
101
103
  );
102
- return /* @__PURE__ */ l(fe, { elementId: v, onScroll: () => w(!0), children: [
104
+ return /* @__PURE__ */ l(ye, { elementId: v, onScroll: () => A(!0), children: [
103
105
  /* @__PURE__ */ l(
104
106
  "div",
105
107
  {
106
- className: $(
108
+ className: B(
107
109
  s.argument,
108
110
  {
109
- [s.flash]: W,
111
+ [s.flash]: X,
110
112
  [s.argumentReply]: e.is_reply === !0
111
113
  },
112
114
  s[`level-${y}`],
@@ -115,16 +117,16 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
115
117
  id: v,
116
118
  children: [
117
119
  /* @__PURE__ */ o(
118
- ye,
120
+ _e,
119
121
  {
120
122
  selectedContent: e.is_selected,
121
123
  author: e.author,
122
- tag: (e.author.role === "editor" || e.author.role === "moderator") && e.is_reply ? null : ee.translatedContent,
124
+ tag: (e.author.role === "editor" || e.author.role === "moderator") && e.is_reply ? null : te.translatedContent,
123
125
  date: e.created_at,
124
126
  tagClassName: s[`headerPosition-${I}`],
125
- disableLinks: P,
127
+ disableLinks: F,
126
128
  isDeleted: e.is_deleted,
127
- showModerationFeedback: Y ?? (e.status === "rejected" && r.moderation?.showFeedback === !0),
129
+ showModerationFeedback: q ?? (e.status === "rejected" && r.moderation?.showFeedback === !0),
128
130
  moderationReason: e.moderation_entry?.moderation_reason,
129
131
  moderationNotes: e.moderation_entry?.moderator_notes,
130
132
  moderationPolicyUrl: r.provider?.userGuideUrl
@@ -133,22 +135,22 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
133
135
  e.is_deleted ? /* @__PURE__ */ o("div", { className: s.argumentDeletedBody, children: i.formatMessage({
134
136
  id: "info.deleted_by_user",
135
137
  defaultMessage: "Content deleted by the user"
136
- }) }) : K ? /* @__PURE__ */ o("div", { className: s.argumentDeletedBody, children: i.formatMessage({
138
+ }) }) : Q ? /* @__PURE__ */ o("div", { className: s.argumentDeletedBody, children: i.formatMessage({
137
139
  id: "argument.argument.content_deleted",
138
140
  defaultMessage: "This content has been removed."
139
141
  }) }) : /* @__PURE__ */ l(h, { children: [
140
142
  /* @__PURE__ */ l(
141
143
  "div",
142
144
  {
143
- className: $(s.argumentBody, {
144
- [s.fixedHeight]: r?.layout?.showAllArgumentInEmbed !== !0 ? H : !1
145
+ className: B(s.argumentBody, {
146
+ [s.fixedHeight]: r?.layout?.showAllArgumentInEmbed !== !0 ? V : !1
145
147
  }),
146
148
  children: [
147
149
  e.is_reply && d && /* @__PURE__ */ l(
148
150
  "div",
149
151
  {
150
152
  className: s.replyTo,
151
- onClick: () => F(d.id),
153
+ onClick: () => j(d.id),
152
154
  children: [
153
155
  i.formatMessage({
154
156
  id: "info.replying_to",
@@ -159,13 +161,13 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
159
161
  id: "info.deleted",
160
162
  defaultMessage: "Deleted"
161
163
  }) : d.author.full_name,
162
- /* @__PURE__ */ o(D, { name: "chat", height: 16 })
164
+ /* @__PURE__ */ o(E, { name: "chat", height: 16 })
163
165
  ] })
164
166
  ]
165
167
  }
166
168
  ),
167
169
  /* @__PURE__ */ o(
168
- _e,
170
+ ge,
169
171
  {
170
172
  content: /* @__PURE__ */ l(h, { children: [
171
173
  e.is_edited && /* @__PURE__ */ o("div", { className: s.edited, children: i.formatMessage({
@@ -176,18 +178,18 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
176
178
  "div",
177
179
  {
178
180
  className: s.argumentContent,
179
- dangerouslySetInnerHTML: { __html: E(x) }
181
+ dangerouslySetInnerHTML: { __html: P(x) }
180
182
  }
181
- ) : /* @__PURE__ */ o("div", { className: s.argumentContent, children: E(u.translatedContent) }),
183
+ ) : /* @__PURE__ */ o("div", { className: s.argumentContent, children: P(u.translatedContent) }),
182
184
  u.isTranslated && /* @__PURE__ */ o(
183
- ge,
185
+ be,
184
186
  {
185
187
  language: e.language,
186
188
  callback: () => u.toggleContent()
187
189
  }
188
190
  )
189
191
  ] }),
190
- lineCount: r?.layout?.showAllArgumentInEmbed !== !0 ? q : void 0,
192
+ lineCount: r?.layout?.showAllArgumentInEmbed !== !0 ? J : void 0,
191
193
  readMoreText: i.formatMessage({
192
194
  id: "action.read_more",
193
195
  defaultMessage: "Read more"
@@ -196,27 +198,27 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
196
198
  id: "action.read_less",
197
199
  defaultMessage: "Read less"
198
200
  }),
199
- expandable: r?.layout?.showAllArgumentInEmbed !== !0 ? j : !1,
201
+ expandable: r?.layout?.showAllArgumentInEmbed !== !0 ? G : !1,
200
202
  readMoreClassName: e.is_reply ? s.replyStyle : s.argumentStyle
201
203
  }
202
204
  )
203
205
  ]
204
206
  }
205
207
  ),
206
- e.sources?.length > 0 && /* @__PURE__ */ o("div", { className: s.argumentSourcesList, children: e.sources.map(se) })
208
+ e.sources?.length > 0 && /* @__PURE__ */ o("div", { className: s.argumentSourcesList, children: e.sources.map(re) })
207
209
  ] }),
208
- !R && !e.is_deleted && /* @__PURE__ */ o(
209
- be,
210
+ !T && !e.is_deleted && /* @__PURE__ */ o(
211
+ Me,
210
212
  {
211
213
  resource: e,
212
- disabled: g || e.status === "rejected" || !Q && r?.actions?.disableInputForVisitor === !0 || N,
214
+ disabled: g || e.status === "rejected" || !W && r?.actions?.disableInputForVisitor === !0 || w,
213
215
  reportType: "Message",
214
216
  softDelete: r.actions?.softDelete,
215
217
  deleteType: "messages",
216
- deleteListId: O,
217
- enableReply: y <= 2 || c.role === "editor" || c.role === "moderator",
218
- handleReplyTo: A,
219
- replyRedirectUrl: J,
218
+ deleteListId: Y,
219
+ enableReply: y <= C || c.role === "editor" || c.role === "moderator",
220
+ handleReplyTo: L,
221
+ replyRedirectUrl: K,
220
222
  shareUrl: `https://app.logora.fr/share/a/${e.id}`,
221
223
  shareTitle: i.formatMessage({
222
224
  id: "share.argument.title",
@@ -231,49 +233,49 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
231
233
  showShareText: !0,
232
234
  showShareButton: r?.actions?.hideShareButton !== !0,
233
235
  enableReport: !(e.score === 100 && e.manual_score),
234
- enableEdition: V,
235
- enableDeletion: z,
236
+ enableEdition: z,
237
+ enableDeletion: O,
236
238
  children: /* @__PURE__ */ o(
237
- Me,
239
+ ve,
238
240
  {
239
241
  voteableType: "Message",
240
242
  voteableId: e.id,
241
243
  totalUpvote: e.upvotes,
242
244
  totalDownvote: 0,
243
245
  activeClassName: s[`voteButtonPosition-${I}`],
244
- disabled: e.status === "rejected" || c?.id === e?.author?.id || N
246
+ disabled: e.status === "rejected" || c?.id === e?.author?.id || w
245
247
  }
246
248
  )
247
249
  }
248
250
  ),
249
- !R && !T && /* @__PURE__ */ o(
250
- ce,
251
+ !T && !N && /* @__PURE__ */ o(
252
+ pe,
251
253
  {
252
254
  numberReplies: e.number_replies,
253
255
  repliesAuthors: e.replies_authors,
254
256
  expandReplies: p,
255
- onToggleReplies: L,
257
+ onToggleReplies: k,
256
258
  isReply: e.is_reply
257
259
  }
258
260
  )
259
261
  ]
260
262
  }
261
263
  ),
262
- !T && /* @__PURE__ */ l(h, { children: [
263
- X && /* @__PURE__ */ o(le, { fallback: null, children: /* @__PURE__ */ o(
264
- Se,
264
+ !N && /* @__PURE__ */ l(h, { children: [
265
+ Z && /* @__PURE__ */ o(ne, { fallback: null, children: /* @__PURE__ */ o(
266
+ Re,
265
267
  {
266
268
  groupId: e.group_id,
267
- groupType: C,
268
- groupName: S,
269
+ groupType: S,
270
+ groupName: R,
269
271
  positions: _,
270
272
  parentId: e.id,
271
- positionId: G?.position_id,
273
+ positionId: H?.position_id,
272
274
  disabled: g,
273
275
  hideSourceAction: r?.actions?.disableUserSources || !1,
274
276
  argumentListId: `argument_${e.id}_reply_list`,
275
277
  onSubmit: (t) => {
276
- A(), M([t]), b(!0);
278
+ L(), M([t]), b(!0);
277
279
  },
278
280
  isReply: !0,
279
281
  avatarSize: 40,
@@ -286,13 +288,13 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
286
288
  },
287
289
  `Reply${e.id}`
288
290
  ) }),
289
- m?.length > 0 && p && /* @__PURE__ */ o("div", { className: s.repliesList, children: m.map((t) => k(t)) }),
291
+ m?.length > 0 && p && /* @__PURE__ */ o("div", { className: s.repliesList, children: m.map((t) => U(t)) }),
290
292
  p && /* @__PURE__ */ o("div", { className: s.repliesList, children: /* @__PURE__ */ o(
291
- ve,
293
+ Ie,
292
294
  {
293
295
  voteableType: "Message",
294
296
  currentListId: `argument_${e.id}_reply_list`,
295
- loadingComponent: /* @__PURE__ */ o(Ie, {}),
297
+ loadingComponent: /* @__PURE__ */ o(Ce, {}),
296
298
  resource: "messages",
297
299
  sort: "+created_at",
298
300
  filters: {
@@ -304,16 +306,16 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
304
306
  display: "column",
305
307
  resourcePropName: "argument",
306
308
  emptyListComponent: /* @__PURE__ */ o(h, {}),
307
- transformData: (t) => oe(t),
308
- children: k(e)
309
+ transformData: (t) => se(t),
310
+ children: U(e)
309
311
  }
310
312
  ) }),
311
313
  m?.length > 0 && !p && /* @__PURE__ */ o("div", { className: s.repliesList, children: e.number_replies > 1 && /* @__PURE__ */ o("div", { className: s.readMoreLink, children: /* @__PURE__ */ o(
312
- Ce,
314
+ Se,
313
315
  {
314
316
  role: "link",
315
- rightIcon: /* @__PURE__ */ o(D, { name: "lightArrow", height: 10, width: 10 }),
316
- handleClick: L,
317
+ rightIcon: /* @__PURE__ */ o(E, { name: "lightArrow", height: 10, width: 10 }),
318
+ handleClick: k,
317
319
  children: i.formatMessage({
318
320
  id: "argument.argument.see_more",
319
321
  defaultMessage: "See more"
@@ -322,8 +324,8 @@ const Se = ne(() => import("../../input/argument_input/index.js").then((e) => ({
322
324
  ) }) })
323
325
  ] })
324
326
  ] });
325
- }, Te = Re;
327
+ }, Ne = Te;
326
328
  export {
327
- Re as Argument,
328
- Te as ArgumentContainer
329
+ Te as Argument,
330
+ Ne as ArgumentContainer
329
331
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logora/debate",
3
- "version": "0.3.55",
3
+ "version": "0.3.56",
4
4
  "type": "module",
5
5
  "license": "AGPL-3.0",
6
6
  "description": "Design system of @Logora made with React",