@logora/debate 0.4.75 → 0.4.77
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.
- package/dist/components/auth/signup_form/SignupForm.js +12 -12
- package/dist/components/auth/social_auth_form/SocialAuthForm.js +17 -17
- package/dist/components/auth/sso_form/SSOForm.js +14 -14
- package/dist/components/hooks/use_session_storage_state/useSessionStorageState.js +25 -0
- package/dist/components/input/argument_input/ArgumentInput.js +84 -84
- package/dist/components/input/text_editor/TextEditor.js +115 -114
- package/dist/components/input/text_editor/plugins/AutoSavePlugin.js +23 -25
- package/dist/components/input/text_editor/plugins/FocusPlugin.js +7 -7
- package/dist/components/input/text_editor/plugins/ResetPlugin.js +21 -19
- package/dist/components/intl/intl_provider/IntlProvider.js +10 -10
- package/dist/components/suggestion/suggestion_input/SuggestionInput.js +11 -11
- package/dist/components/vote/vote_box/VoteBox.js +1 -1
- package/dist/index.js +10 -8
- package/package.json +1 -3
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { jsx as e, Fragment as E, jsxs as G } from "react/jsx-runtime";
|
|
2
|
-
import P from "
|
|
3
|
-
import x from "classnames";
|
|
2
|
+
import P from "classnames";
|
|
4
3
|
import { useState as i } from "react";
|
|
5
|
-
import { useIntl as
|
|
4
|
+
import { useIntl as x } from "react-intl";
|
|
6
5
|
import r from "./SignupForm.module.scss.js";
|
|
7
|
-
import {
|
|
6
|
+
import { useSessionStorageState as F } from "../../hooks/use_session_storage_state/useSessionStorageState.js";
|
|
8
7
|
import { TextInput as m } from "../../input/text_input/TextInput.js";
|
|
9
|
-
import { Toggle as
|
|
10
|
-
import { Button as
|
|
8
|
+
import { Toggle as I } from "../../input/toggle/Toggle.js";
|
|
9
|
+
import { Button as k } from "../../action/button/Button.js";
|
|
10
|
+
import { EMAIL_CONSENT_STORAGE_KEY as q } from "../use_auth/useAuthActions.js";
|
|
11
11
|
const U = ({ onSubmit: n, providerName: f, error: t = !1 }) => {
|
|
12
|
-
const [p, g] = i(""), [c, _] = i(""), [h, M] = i(""), [d, w] = i(""), [u, b] = i(""), [l, v] =
|
|
13
|
-
|
|
12
|
+
const [p, g] = i(""), [c, _] = i(""), [h, M] = i(""), [d, w] = i(""), [u, b] = i(""), [l, v] = F(
|
|
13
|
+
q,
|
|
14
14
|
!1
|
|
15
|
-
), [o, N] = i(""), a =
|
|
15
|
+
), [o, N] = i(""), a = x(), C = (s) => {
|
|
16
16
|
s.preventDefault(), S(d, u) && n && n(
|
|
17
17
|
c,
|
|
18
18
|
h,
|
|
@@ -128,7 +128,7 @@ const U = ({ onSubmit: n, providerName: f, error: t = !1 }) => {
|
|
|
128
128
|
}
|
|
129
129
|
) }),
|
|
130
130
|
/* @__PURE__ */ e("div", { className: r.formGroup, children: /* @__PURE__ */ e(
|
|
131
|
-
|
|
131
|
+
I,
|
|
132
132
|
{
|
|
133
133
|
type: "checkbox",
|
|
134
134
|
name: "accepts_provider_email",
|
|
@@ -145,8 +145,8 @@ const U = ({ onSubmit: n, providerName: f, error: t = !1 }) => {
|
|
|
145
145
|
"data-testid": "accepts-email-input"
|
|
146
146
|
}
|
|
147
147
|
) }),
|
|
148
|
-
/* @__PURE__ */ e("div", { className:
|
|
149
|
-
|
|
148
|
+
/* @__PURE__ */ e("div", { className: P(r.formGroup, r.formSubmitGroup), children: /* @__PURE__ */ e(
|
|
149
|
+
k,
|
|
150
150
|
{
|
|
151
151
|
className: r.formSubmitButton,
|
|
152
152
|
role: "button",
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { jsx as e, jsxs as r, Fragment as c } from "react/jsx-runtime";
|
|
2
|
-
import B from "@rooks/use-sessionstorage-state";
|
|
3
2
|
import { useState as N } from "react";
|
|
4
|
-
import { useIntl as
|
|
3
|
+
import { useIntl as B, FormattedMessage as O } from "react-intl";
|
|
5
4
|
import a from "./SocialAuthForm.module.scss.js";
|
|
6
|
-
import {
|
|
7
|
-
import { FacebookLoginButton as
|
|
8
|
-
import { GoogleLoginButton as
|
|
5
|
+
import { useSessionStorageState as P } from "../../hooks/use_session_storage_state/useSessionStorageState.js";
|
|
6
|
+
import { FacebookLoginButton as E } from "../facebook_login_button/FacebookLoginButton.js";
|
|
7
|
+
import { GoogleLoginButton as j } from "../google_login_button/GoogleLoginButton.js";
|
|
9
8
|
import { Icon as y } from "../../icons/icon/Icon.js";
|
|
10
|
-
import { Toggle as
|
|
11
|
-
import { SignupForm as
|
|
12
|
-
import { LoginForm as
|
|
9
|
+
import { Toggle as z } from "../../input/toggle/Toggle.js";
|
|
10
|
+
import { SignupForm as D } from "../signup_form/SignupForm.js";
|
|
11
|
+
import { LoginForm as K } from "../login_form/LoginForm.js";
|
|
12
|
+
import { EMAIL_CONSENT_STORAGE_KEY as R } from "../use_auth/useAuthActions.js";
|
|
13
13
|
const te = ({
|
|
14
14
|
lastStep: s,
|
|
15
15
|
providerName: l,
|
|
@@ -25,10 +25,10 @@ const te = ({
|
|
|
25
25
|
}) => {
|
|
26
26
|
const [w, g] = N(
|
|
27
27
|
!(s === "LOGIN" || s === "SIGNUP")
|
|
28
|
-
), [t, I] = N(s !== "SIGNUP"), [f, F] =
|
|
29
|
-
|
|
28
|
+
), [t, I] = N(s !== "SIGNUP"), [f, F] = P(
|
|
29
|
+
R,
|
|
30
30
|
!1
|
|
31
|
-
), o =
|
|
31
|
+
), o = B(), G = (i, n, M, A, Y, v) => {
|
|
32
32
|
const T = {
|
|
33
33
|
uid: typeof crypto < "u" && crypto.randomUUID ? crypto.randomUUID() : "0000-0000-0000-0000",
|
|
34
34
|
first_name: i,
|
|
@@ -47,7 +47,7 @@ const te = ({
|
|
|
47
47
|
}, _ = (i, n) => {
|
|
48
48
|
d(i, n, "SOCIAL");
|
|
49
49
|
}, x = () => /* @__PURE__ */ e("div", { className: a.formFooterTerms, children: /* @__PURE__ */ e(
|
|
50
|
-
|
|
50
|
+
O,
|
|
51
51
|
{
|
|
52
52
|
id: "auth.social_auth_form.terms_text",
|
|
53
53
|
values: {
|
|
@@ -112,7 +112,7 @@ const te = ({
|
|
|
112
112
|
defaultMessage: "Create your account in one click to vote and start debating !"
|
|
113
113
|
}) }),
|
|
114
114
|
/* @__PURE__ */ e(
|
|
115
|
-
|
|
115
|
+
E,
|
|
116
116
|
{
|
|
117
117
|
text: o.formatMessage({
|
|
118
118
|
id: "auth.social_auth_form.facebook_login",
|
|
@@ -124,7 +124,7 @@ const te = ({
|
|
|
124
124
|
}
|
|
125
125
|
),
|
|
126
126
|
/* @__PURE__ */ e(
|
|
127
|
-
|
|
127
|
+
j,
|
|
128
128
|
{
|
|
129
129
|
text: o.formatMessage({
|
|
130
130
|
id: "auth.social_auth_form.google_login",
|
|
@@ -150,7 +150,7 @@ const te = ({
|
|
|
150
150
|
}
|
|
151
151
|
),
|
|
152
152
|
!t && /* @__PURE__ */ e("div", { className: a.checkboxContainer, children: /* @__PURE__ */ e(
|
|
153
|
-
|
|
153
|
+
z,
|
|
154
154
|
{
|
|
155
155
|
type: "checkbox",
|
|
156
156
|
name: "accepts_emails",
|
|
@@ -195,7 +195,7 @@ const te = ({
|
|
|
195
195
|
}) })
|
|
196
196
|
] }),
|
|
197
197
|
t ? /* @__PURE__ */ e("div", { className: a.loginFormContainer, children: /* @__PURE__ */ e(
|
|
198
|
-
|
|
198
|
+
K,
|
|
199
199
|
{
|
|
200
200
|
onSubmit: U,
|
|
201
201
|
error: m && s === "LOGIN",
|
|
@@ -210,7 +210,7 @@ const te = ({
|
|
|
210
210
|
{ provider: l }
|
|
211
211
|
) }),
|
|
212
212
|
/* @__PURE__ */ e(
|
|
213
|
-
|
|
213
|
+
D,
|
|
214
214
|
{
|
|
215
215
|
onSubmit: G,
|
|
216
216
|
providerName: l,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsxs as n, jsx as e, Fragment as m } from "react/jsx-runtime";
|
|
2
|
-
import G from "
|
|
3
|
-
import D from "classnames";
|
|
2
|
+
import G from "classnames";
|
|
4
3
|
import "react";
|
|
5
|
-
import { useIntl as
|
|
6
|
-
import { useLocation as
|
|
4
|
+
import { useIntl as D, FormattedMessage as w } from "react-intl";
|
|
5
|
+
import { useLocation as Y } from "react-router";
|
|
7
6
|
import a from "./SSOForm.module.scss.js";
|
|
8
|
-
import {
|
|
9
|
-
import { Icon as
|
|
10
|
-
import { Button as
|
|
11
|
-
import { Toggle as
|
|
7
|
+
import { useSessionStorageState as z } from "../../hooks/use_session_storage_state/useSessionStorageState.js";
|
|
8
|
+
import { Icon as H } from "../../icons/icon/Icon.js";
|
|
9
|
+
import { Button as K } from "../../action/button/Button.js";
|
|
10
|
+
import { Toggle as V } from "../../input/toggle/Toggle.js";
|
|
11
|
+
import { EMAIL_CONSENT_STORAGE_KEY as W } from "../use_auth/useAuthActions.js";
|
|
12
12
|
import { utf8ToBase64url as $ } from "../use_auth/base64.js";
|
|
13
13
|
const ie = ({
|
|
14
14
|
authType: v,
|
|
@@ -29,8 +29,8 @@ const ie = ({
|
|
|
29
29
|
hideBelowButton: x = !1,
|
|
30
30
|
error: R = !1
|
|
31
31
|
}) => {
|
|
32
|
-
const [h, T] = g ?
|
|
33
|
-
}], o =
|
|
32
|
+
const [h, T] = g ? z(W, !1) : [!1, () => {
|
|
33
|
+
}], o = D(), d = Y(), A = (t) => {
|
|
34
34
|
if (typeof window < "u") {
|
|
35
35
|
const s = t === "CURRENT_LOCATION" ? window.location : t, i = new URL(s, window.location.origin), l = i.searchParams, E = new URLSearchParams(d.search);
|
|
36
36
|
l.has("code") && l.delete("code"), f && l.append(f, window.location.toString());
|
|
@@ -73,7 +73,7 @@ const ie = ({
|
|
|
73
73
|
alt: `Logo ${c}`
|
|
74
74
|
}
|
|
75
75
|
) : /* @__PURE__ */ e(
|
|
76
|
-
|
|
76
|
+
H,
|
|
77
77
|
{
|
|
78
78
|
name: "next",
|
|
79
79
|
"aria-hidden": "true",
|
|
@@ -100,7 +100,7 @@ const ie = ({
|
|
|
100
100
|
] }),
|
|
101
101
|
U ? null : /* @__PURE__ */ n(m, { children: [
|
|
102
102
|
/* @__PURE__ */ e(
|
|
103
|
-
|
|
103
|
+
K,
|
|
104
104
|
{
|
|
105
105
|
"data-tid": "link_signup",
|
|
106
106
|
"data-testid": "signup-button",
|
|
@@ -135,8 +135,8 @@ const ie = ({
|
|
|
135
135
|
}
|
|
136
136
|
)
|
|
137
137
|
] }),
|
|
138
|
-
g ? /* @__PURE__ */ e("div", { className:
|
|
139
|
-
|
|
138
|
+
g ? /* @__PURE__ */ e("div", { className: G(a.switchBox), children: /* @__PURE__ */ e(
|
|
139
|
+
V,
|
|
140
140
|
{
|
|
141
141
|
type: "checkbox",
|
|
142
142
|
name: "accepts_provider_email",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useState as n, useEffect as a } from "react";
|
|
2
|
+
const c = (t, s) => {
|
|
3
|
+
try {
|
|
4
|
+
const e = JSON.parse(sessionStorage.getItem(t));
|
|
5
|
+
return e === null ? s : e;
|
|
6
|
+
} catch {
|
|
7
|
+
return s;
|
|
8
|
+
}
|
|
9
|
+
}, S = (t, s) => {
|
|
10
|
+
const [e, r] = n(() => c(t, s));
|
|
11
|
+
return a(() => {
|
|
12
|
+
try {
|
|
13
|
+
sessionStorage.setItem(t, JSON.stringify(e));
|
|
14
|
+
} catch {
|
|
15
|
+
}
|
|
16
|
+
}, [e]), [e, r, () => {
|
|
17
|
+
try {
|
|
18
|
+
sessionStorage.removeItem(t);
|
|
19
|
+
} catch {
|
|
20
|
+
}
|
|
21
|
+
}];
|
|
22
|
+
};
|
|
23
|
+
export {
|
|
24
|
+
S as useSessionStorageState
|
|
25
|
+
};
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
import { jsxs as C, jsx as s } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { useRef as Ye, useState as c, useEffect as p, Suspense as je, lazy as ze } from "react";
|
|
2
|
+
import { useRef as Ye, useState as u, useEffect as p, Suspense as je, lazy as ze } from "react";
|
|
4
3
|
import { useIntl as Oe, FormattedMessage as he } from "react-intl";
|
|
5
|
-
import { useLocation as
|
|
4
|
+
import { useLocation as Je } from "react-router";
|
|
6
5
|
import x from "classnames";
|
|
7
6
|
import n from "./ArgumentInput.module.scss.js";
|
|
8
|
-
import { useDataProvider as
|
|
9
|
-
import { useList as
|
|
7
|
+
import { useDataProvider as Ke } from "../../data/data_provider/useDataProvider.js";
|
|
8
|
+
import { useList as Re } from "../../list/list_provider/useList.js";
|
|
10
9
|
import { useConfig as Ge } from "../../data/config_provider/useConfig.js";
|
|
11
10
|
import { useInput as He } from "../input_provider/useInput.js";
|
|
12
11
|
import { useAuth as Qe } from "../../auth/use_auth/useAuth.js";
|
|
13
12
|
import { useFormValidation as Xe } from "../../forms/use_form_validation/useFormValidation.js";
|
|
14
13
|
import { useResponsive as Ze } from "../../hooks/use_responsive/useResponsive.js";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
|
|
14
|
+
import { useSessionStorageState as et } from "../../hooks/use_session_storage_state/useSessionStorageState.js";
|
|
15
|
+
import { useAuthRequired as tt } from "../../hooks/use_auth_required/useAuthRequired.js";
|
|
16
|
+
import { useModal as nt } from "../../dialog/modal/useModal.js";
|
|
17
|
+
import { useToast as at } from "../../dialog/toast_provider/useToast.js";
|
|
18
|
+
import { TogglePosition as st } from "../toggle_position/TogglePosition.js";
|
|
19
|
+
import { Avatar as it } from "../../user/avatar/Avatar.js";
|
|
20
|
+
import { AuthorBox as ot } from "../../user/author_box/AuthorBox.js";
|
|
21
|
+
import { TextEditor as rt } from "../text_editor/TextEditor.js";
|
|
22
|
+
import { Icon as ut } from "../../icons/icon/Icon.js";
|
|
23
|
+
const dt = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ default: N.SideModal }))), Pt = ({
|
|
24
24
|
argumentListId: N,
|
|
25
25
|
avatarSize: pe = 48,
|
|
26
|
-
disabled:
|
|
26
|
+
disabled: J = !1,
|
|
27
27
|
positions: a = [],
|
|
28
28
|
disabledPositions: T = [],
|
|
29
29
|
groupId: _,
|
|
30
30
|
groupName: _e,
|
|
31
|
-
groupType:
|
|
31
|
+
groupType: K,
|
|
32
32
|
hideSourceAction: Me = !1,
|
|
33
33
|
isReply: i = !1,
|
|
34
|
-
onSubmit:
|
|
34
|
+
onSubmit: R,
|
|
35
35
|
onUpdate: G,
|
|
36
36
|
parentId: M,
|
|
37
37
|
placeholder: ve,
|
|
@@ -44,62 +44,61 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
44
44
|
disableAutoActivate: we = !1,
|
|
45
45
|
autoFocus: Q = !1
|
|
46
46
|
}) => {
|
|
47
|
-
const r = Oe(), X =
|
|
47
|
+
const r = Oe(), X = Ke(), L = Re(), v = Ge(), {
|
|
48
48
|
focus: Z,
|
|
49
49
|
setFocus: ee,
|
|
50
|
-
setReset: Se,
|
|
51
50
|
inputContent: B,
|
|
52
51
|
setInputContent: te,
|
|
53
|
-
setInputRichContent:
|
|
54
|
-
} = He(), { isLoggedIn: S, currentUser:
|
|
52
|
+
setInputRichContent: Se
|
|
53
|
+
} = He(), { isLoggedIn: S, currentUser: d } = Qe(), { errors: E, validate: $ } = Xe(), { isMobile: m } = Ze(), Ie = Je(), ne = Ye(null), [V, k] = u([]), [q, D] = u(""), [ae, U] = u(null), [l, b] = u(null), [se, ie] = u(null), [oe, re] = u(!1), [I, ue] = u(!1), [A, de] = u({}), [xe, W] = u(!1), [Ne, Te] = u(0), [f, Le] = et(
|
|
55
54
|
"userSide",
|
|
56
55
|
{}
|
|
57
|
-
), [g, ye] =
|
|
56
|
+
), [g, ye] = u(
|
|
58
57
|
!S && v?.actions?.disableInputForVisitor
|
|
59
|
-
), Y =
|
|
60
|
-
typeof window < "u" ? window.location.search :
|
|
58
|
+
), Y = tt(), { showModal: Fe } = nt(), { toast: j } = at() || {}, le = new URLSearchParams(
|
|
59
|
+
typeof window < "u" ? window.location.search : Ie.search
|
|
61
60
|
);
|
|
62
61
|
p(() => {
|
|
63
62
|
ye(
|
|
64
63
|
!S && v?.actions?.disableInputForVisitor
|
|
65
64
|
);
|
|
66
65
|
}, [S, v]);
|
|
67
|
-
const z =
|
|
66
|
+
const z = d?.role === "editor" || d?.role === "moderator", ce = d?.moderation_status === "banned";
|
|
68
67
|
p(() => {
|
|
69
68
|
let e = null;
|
|
70
69
|
typeof window < "u" && (e = le.get("positionId")), w && w != a[2]?.id && a?.find((t) => t.id === w) ? b(w) : e && e != a[2]?.id ? b(e) : f && f.groupId == _ && f.positionId != a[2]?.id && b(f.positionId);
|
|
71
70
|
}, [w]), p(() => {
|
|
72
71
|
Q && W(!0);
|
|
73
72
|
}, [Q]), p(() => {
|
|
74
|
-
P && (O(), W(!0),
|
|
73
|
+
P && (O(), W(!0), y());
|
|
75
74
|
}, [P]), p(() => {
|
|
76
75
|
if (typeof window < "u") {
|
|
77
76
|
const e = be || le.get("initArgument");
|
|
78
|
-
(e === !0 || e === "true") && (W(!0),
|
|
77
|
+
(e === !0 || e === "true") && (W(!0), y(), De());
|
|
79
78
|
}
|
|
80
79
|
}, []), p(() => {
|
|
81
|
-
Z && (
|
|
80
|
+
Z && !i && (y(), ee(!1));
|
|
82
81
|
}, [Z]), p(() => {
|
|
83
|
-
B?.id && !i && (
|
|
82
|
+
B?.id && !i && (Pe(B), ee(!0));
|
|
84
83
|
}, [B]);
|
|
85
|
-
const
|
|
86
|
-
de(e), ue(!0), k(e.sources), D(e.content), U(e.rich_content), ie(e.id),
|
|
87
|
-
},
|
|
84
|
+
const Pe = (e) => {
|
|
85
|
+
de(e), ue(!0), k(e.sources), D(e.content), U(e.rich_content), ie(e.id), y(), b(e.position?.id), JSON.parse(e.rich_content).hasOwnProperty("root") ? Se(e.rich_content) : te(e.content);
|
|
86
|
+
}, y = () => {
|
|
88
87
|
ne.current.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
89
88
|
}, me = () => {
|
|
90
|
-
D(""), U(null), de({}), ie(null), k([]),
|
|
91
|
-
},
|
|
89
|
+
D(""), U(null), de({}), ie(null), k([]), Te((e) => e + 1), te(null);
|
|
90
|
+
}, Be = (e) => {
|
|
92
91
|
b(e), ge(e);
|
|
93
|
-
},
|
|
94
|
-
|
|
92
|
+
}, Ee = () => {
|
|
93
|
+
Fe(
|
|
95
94
|
/* @__PURE__ */ s(je, { fallback: null, children: /* @__PURE__ */ s(
|
|
96
|
-
|
|
95
|
+
dt,
|
|
97
96
|
{
|
|
98
97
|
modalTitle: r.formatMessage({
|
|
99
98
|
id: "modal.side_modal.modal_title",
|
|
100
99
|
defaultMessage: "Choose your side"
|
|
101
100
|
}),
|
|
102
|
-
onChooseSide:
|
|
101
|
+
onChooseSide: Be,
|
|
103
102
|
positions: a,
|
|
104
103
|
title: _e,
|
|
105
104
|
disabledPositions: !i && T,
|
|
@@ -107,11 +106,11 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
107
106
|
}
|
|
108
107
|
) })
|
|
109
108
|
);
|
|
110
|
-
},
|
|
111
|
-
S ? se ?
|
|
112
|
-
},
|
|
109
|
+
}, $e = () => {
|
|
110
|
+
S ? se ? qe() : !a || a?.length === 0 || !T?.find((e) => e?.id === l) && l || z && i ? ge(i && z && a[0]?.id) : Ee() : Y({ loginAction: "argument" });
|
|
111
|
+
}, Ve = (e, t) => {
|
|
113
112
|
g ? Y({ loginAction: "argument" }) : (D(e), U(t), $({ content: e }, [{ content: ["url", null] }]));
|
|
114
|
-
},
|
|
113
|
+
}, ke = (e) => {
|
|
115
114
|
k(e);
|
|
116
115
|
}, fe = [
|
|
117
116
|
{ content: ["length", 3] },
|
|
@@ -119,23 +118,23 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
119
118
|
{ content: ["url", null] },
|
|
120
119
|
...!a || a?.length === 0 ? [] : [{ position_id: ["required", null] }]
|
|
121
120
|
], ge = (e) => {
|
|
122
|
-
const t = e ||
|
|
121
|
+
const t = e || l, c = {
|
|
123
122
|
content: q,
|
|
124
123
|
rich_content: ae,
|
|
125
124
|
group_id: _,
|
|
126
|
-
...
|
|
125
|
+
...K && { group_type: K },
|
|
127
126
|
...t && { position_id: t },
|
|
128
127
|
is_reply: !!M,
|
|
129
128
|
message_id: M || null,
|
|
130
129
|
source_ids: V?.map((o) => o.id)
|
|
131
130
|
};
|
|
132
|
-
$(
|
|
131
|
+
$(c, fe) && (t && a && a.map((o) => o.id).includes(t) && Le({
|
|
133
132
|
groupId: _,
|
|
134
133
|
positionId: t
|
|
135
|
-
}), me(), X.create("messages",
|
|
134
|
+
}), me(), X.create("messages", c).then((o) => {
|
|
136
135
|
if (o.data.success) {
|
|
137
136
|
if (M)
|
|
138
|
-
|
|
137
|
+
R(o.data.data.resource), j(
|
|
139
138
|
r.formatMessage({
|
|
140
139
|
id: "alert.argument_create",
|
|
141
140
|
defaultMessage: "Your contribution has been sent !"
|
|
@@ -151,10 +150,10 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
151
150
|
else {
|
|
152
151
|
const h = o.data.data.resource;
|
|
153
152
|
let F = N;
|
|
154
|
-
t && !m && (F = `argumentList${h.position.id}`),
|
|
153
|
+
t && !m && (F = `argumentList${h.position.id}`), R?.(
|
|
155
154
|
q,
|
|
156
|
-
a.find((
|
|
157
|
-
),
|
|
155
|
+
a.find((We) => We.id === t) || null
|
|
156
|
+
), L.add(F, [h]), j(
|
|
158
157
|
r.formatMessage({
|
|
159
158
|
id: "alert.argument_create",
|
|
160
159
|
defaultMessage: "Your contribution has been sent !"
|
|
@@ -166,7 +165,7 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
166
165
|
defaultMessage: "Up to 10 eloquence points"
|
|
167
166
|
}),
|
|
168
167
|
category: "ARGUMENT",
|
|
169
|
-
contentKey:
|
|
168
|
+
contentKey: d.messages_count === 2 ? "alert.third_argument" : "alert.first_argument"
|
|
170
169
|
}
|
|
171
170
|
);
|
|
172
171
|
}
|
|
@@ -179,32 +178,32 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
179
178
|
);
|
|
180
179
|
}
|
|
181
180
|
}));
|
|
182
|
-
},
|
|
181
|
+
}, qe = () => {
|
|
183
182
|
const e = {
|
|
184
183
|
content: q,
|
|
185
184
|
rich_content: ae,
|
|
186
185
|
source_ids: V?.map((t) => t.id),
|
|
187
|
-
...
|
|
186
|
+
...l && { position_id: l }
|
|
188
187
|
};
|
|
189
188
|
$(e, fe) && X.update("messages", se, e).then((t) => {
|
|
190
189
|
if (t.data.success) {
|
|
191
|
-
const
|
|
190
|
+
const c = t.data.data.resource;
|
|
192
191
|
let o = N;
|
|
193
192
|
if (A?.is_reply || i) {
|
|
194
193
|
const h = A?.message_id || A?.reply_to_id || M;
|
|
195
194
|
h && (o = `argument_${h}_reply_list`);
|
|
196
|
-
} else
|
|
197
|
-
if (!A?.is_reply && A?.position?.id !=
|
|
198
|
-
const h = `argumentList${A.position.id}`, F = `argumentList${
|
|
199
|
-
|
|
195
|
+
} else l && !m && (o = `argumentList${c.position?.id}`);
|
|
196
|
+
if (!A?.is_reply && A?.position?.id != c.position?.id && !m) {
|
|
197
|
+
const h = `argumentList${A.position.id}`, F = `argumentList${c.position.id}`;
|
|
198
|
+
L.remove(h, [c]), L.add(F, [c]);
|
|
200
199
|
} else
|
|
201
|
-
|
|
202
|
-
G && G(
|
|
200
|
+
L.update(o, [c]);
|
|
201
|
+
G && G(c), j(r.formatMessage({ id: "alert.argument_modify" }), {
|
|
203
202
|
type: "success"
|
|
204
203
|
}), me();
|
|
205
204
|
}
|
|
206
205
|
});
|
|
207
|
-
},
|
|
206
|
+
}, De = () => {
|
|
208
207
|
if (!oe) {
|
|
209
208
|
re(!0);
|
|
210
209
|
const e = setTimeout(() => {
|
|
@@ -214,9 +213,9 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
214
213
|
}
|
|
215
214
|
}, O = () => {
|
|
216
215
|
g ? Y({ loginAction: "argument" }) : ue(!0);
|
|
217
|
-
},
|
|
216
|
+
}, Ue = () => {
|
|
218
217
|
const e = T.find(
|
|
219
|
-
(t) => t.id ===
|
|
218
|
+
(t) => t.id === l
|
|
220
219
|
);
|
|
221
220
|
if (e)
|
|
222
221
|
return r.formatMessage(
|
|
@@ -228,7 +227,7 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
228
227
|
);
|
|
229
228
|
};
|
|
230
229
|
return /* @__PURE__ */ C("div", { className: n.inputContainer, children: [
|
|
231
|
-
|
|
230
|
+
J && /* @__PURE__ */ s("div", { className: n.disabledInputMask, children: ce ? r.formatMessage({
|
|
232
231
|
id: "input.argument_input.user_banned",
|
|
233
232
|
defaultMessage: "You are banned from the debate space."
|
|
234
233
|
}) : r.formatMessage({
|
|
@@ -249,9 +248,9 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
249
248
|
defaultMessage: "Your position"
|
|
250
249
|
}) }),
|
|
251
250
|
/* @__PURE__ */ s(
|
|
252
|
-
|
|
251
|
+
st,
|
|
253
252
|
{
|
|
254
|
-
activeLabel:
|
|
253
|
+
activeLabel: l === a[0].id ? 0 : l === a[1].id ? 1 : null,
|
|
255
254
|
firstLabel: a[0],
|
|
256
255
|
secondLabel: a[1],
|
|
257
256
|
onChange: (e) => b(a[e].id)
|
|
@@ -274,19 +273,19 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
274
273
|
[n.argumentAuthorContainerActivated]: !m && I || i
|
|
275
274
|
}),
|
|
276
275
|
children: !m && I || i ? /* @__PURE__ */ s(
|
|
277
|
-
|
|
276
|
+
it,
|
|
278
277
|
{
|
|
279
|
-
avatarUrl:
|
|
280
|
-
userName:
|
|
278
|
+
avatarUrl: d.image_url,
|
|
279
|
+
userName: d.full_name,
|
|
281
280
|
size: pe
|
|
282
281
|
}
|
|
283
282
|
) : /* @__PURE__ */ s(
|
|
284
|
-
|
|
283
|
+
ot,
|
|
285
284
|
{
|
|
286
|
-
fullName:
|
|
287
|
-
avatarUrl:
|
|
288
|
-
points:
|
|
289
|
-
slug:
|
|
285
|
+
fullName: d?.full_name || r.formatMessage({ id: "default_author.full_name" }),
|
|
286
|
+
avatarUrl: d?.image_url,
|
|
287
|
+
points: d?.points || 0,
|
|
288
|
+
slug: d?.hash_id
|
|
290
289
|
}
|
|
291
290
|
)
|
|
292
291
|
}
|
|
@@ -301,41 +300,42 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
301
300
|
}),
|
|
302
301
|
children: [
|
|
303
302
|
/* @__PURE__ */ s(
|
|
304
|
-
|
|
303
|
+
rt,
|
|
305
304
|
{
|
|
306
305
|
handleChange: (e, t) => {
|
|
307
|
-
|
|
306
|
+
Ve(e, t);
|
|
308
307
|
},
|
|
309
308
|
handleSourcesChange: (e) => {
|
|
310
|
-
|
|
309
|
+
ke(e);
|
|
311
310
|
},
|
|
312
311
|
placeholder: ve,
|
|
313
312
|
"aria-label": r.formatMessage({
|
|
314
313
|
id: "input.argument_input.aria_label",
|
|
315
314
|
defaultMessage: "Message input field"
|
|
316
315
|
}),
|
|
317
|
-
onSubmit:
|
|
316
|
+
onSubmit: $e,
|
|
318
317
|
sources: V,
|
|
319
318
|
hideSourceAction: Me || g,
|
|
320
319
|
uid: M ? `Reply${_}_${M}` : `Argument${_}`,
|
|
321
320
|
onActivation: O,
|
|
322
321
|
showStylesControls: I,
|
|
323
|
-
disabled:
|
|
322
|
+
disabled: J || g || ce,
|
|
324
323
|
maxLength: g ? !1 : v?.actions?.argumentMaxLength,
|
|
325
324
|
disableRichText: v?.actions?.disableRichText || g,
|
|
326
325
|
shortBar: i,
|
|
327
326
|
isReply: i,
|
|
327
|
+
resetSignal: Ne,
|
|
328
328
|
hideSubmit: g,
|
|
329
329
|
allowedDomains: v?.allowed_sources,
|
|
330
330
|
active: P,
|
|
331
|
-
autoFocus:
|
|
331
|
+
autoFocus: xe,
|
|
332
332
|
hideCharCount: Ce,
|
|
333
333
|
disableAutoActivate: we
|
|
334
334
|
}
|
|
335
335
|
),
|
|
336
336
|
E?.content && /* @__PURE__ */ s("div", { className: n.argumentInputWarning, children: E && Object.values(E).map((e, t) => /* @__PURE__ */ s("div", { children: e }, t)) }),
|
|
337
337
|
I && T?.find(
|
|
338
|
-
(e) => e.id ===
|
|
338
|
+
(e) => e.id === l
|
|
339
339
|
) && /* @__PURE__ */ C(
|
|
340
340
|
"div",
|
|
341
341
|
{
|
|
@@ -345,7 +345,7 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
345
345
|
),
|
|
346
346
|
children: [
|
|
347
347
|
/* @__PURE__ */ s(
|
|
348
|
-
|
|
348
|
+
ut,
|
|
349
349
|
{
|
|
350
350
|
name: "announcement",
|
|
351
351
|
className: n.warningIcon,
|
|
@@ -353,7 +353,7 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
353
353
|
width: 20
|
|
354
354
|
}
|
|
355
355
|
),
|
|
356
|
-
/* @__PURE__ */ s("div", { className: n.argumentInputWarningText, children:
|
|
356
|
+
/* @__PURE__ */ s("div", { className: n.argumentInputWarningText, children: Ue() })
|
|
357
357
|
]
|
|
358
358
|
}
|
|
359
359
|
),
|
|
@@ -394,5 +394,5 @@ const ut = ze(() => import("../../modal/side_modal/index.js").then((N) => ({ def
|
|
|
394
394
|
] });
|
|
395
395
|
};
|
|
396
396
|
export {
|
|
397
|
-
|
|
397
|
+
Pt as ArgumentInput
|
|
398
398
|
};
|
|
@@ -1,188 +1,189 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { ListNode as
|
|
3
|
-
import { OverflowNode as
|
|
4
|
-
import { CharacterLimitPlugin as
|
|
5
|
-
import { LexicalComposer as
|
|
6
|
-
import { ContentEditable as
|
|
7
|
-
import { EditorRefPlugin as
|
|
8
|
-
import { LexicalErrorBoundary as
|
|
9
|
-
import { HistoryPlugin as
|
|
10
|
-
import { ListPlugin as
|
|
11
|
-
import { OnChangePlugin as
|
|
12
|
-
import { RichTextPlugin as
|
|
13
|
-
import { QuoteNode as
|
|
14
|
-
import
|
|
15
|
-
import { $getRoot as
|
|
16
|
-
import { useState as
|
|
17
|
-
import { useIntl as
|
|
18
|
-
import
|
|
1
|
+
import { jsxs as x, Fragment as it, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { ListNode as nt, ListItemNode as st } from "@lexical/list";
|
|
3
|
+
import { OverflowNode as ct } from "@lexical/overflow";
|
|
4
|
+
import { CharacterLimitPlugin as lt } from "@lexical/react/LexicalCharacterLimitPlugin";
|
|
5
|
+
import { LexicalComposer as mt } from "@lexical/react/LexicalComposer";
|
|
6
|
+
import { ContentEditable as at } from "@lexical/react/LexicalContentEditable";
|
|
7
|
+
import { EditorRefPlugin as dt } from "@lexical/react/LexicalEditorRefPlugin";
|
|
8
|
+
import { LexicalErrorBoundary as ut } from "@lexical/react/LexicalErrorBoundary";
|
|
9
|
+
import { HistoryPlugin as ft } from "@lexical/react/LexicalHistoryPlugin";
|
|
10
|
+
import { ListPlugin as pt } from "@lexical/react/LexicalListPlugin";
|
|
11
|
+
import { OnChangePlugin as ht } from "@lexical/react/LexicalOnChangePlugin";
|
|
12
|
+
import { RichTextPlugin as gt } from "@lexical/react/LexicalRichTextPlugin";
|
|
13
|
+
import { QuoteNode as St } from "@lexical/rich-text";
|
|
14
|
+
import R from "classnames";
|
|
15
|
+
import { $getRoot as xt } from "lexical";
|
|
16
|
+
import { useState as p, useId as Pt, useRef as Ct, useEffect as w } from "react";
|
|
17
|
+
import { useIntl as Tt } from "react-intl";
|
|
18
|
+
import It from "./EditorTheme.js";
|
|
19
19
|
import i from "./TextEditor.module.scss.js";
|
|
20
|
-
import { AutoSavePlugin as
|
|
21
|
-
import { FocusPlugin as
|
|
22
|
-
import { IOSInsertParagraphFallbackPlugin as
|
|
23
|
-
import { MaxLengthPlugin as
|
|
24
|
-
import { ResetPlugin as
|
|
25
|
-
import { SetContentPlugin as
|
|
26
|
-
import { SetRichContentPlugin as
|
|
27
|
-
import { ToolbarPlugin as
|
|
28
|
-
import { useModal as
|
|
29
|
-
import { SourceModal as
|
|
30
|
-
import { SourceListItem as
|
|
31
|
-
const
|
|
20
|
+
import { AutoSavePlugin as Nt } from "./plugins/AutoSavePlugin.js";
|
|
21
|
+
import { FocusPlugin as vt } from "./plugins/FocusPlugin.js";
|
|
22
|
+
import { IOSInsertParagraphFallbackPlugin as Et } from "./plugins/IOSInsertParagraphFallbackPlugin.js";
|
|
23
|
+
import { MaxLengthPlugin as bt } from "./plugins/MaxLengthPlugin.js";
|
|
24
|
+
import { ResetPlugin as Mt } from "./plugins/ResetPlugin.js";
|
|
25
|
+
import { SetContentPlugin as Rt } from "./plugins/SetContentPlugin.js";
|
|
26
|
+
import { SetRichContentPlugin as wt } from "./plugins/SetRichContentPlugin.js";
|
|
27
|
+
import { ToolbarPlugin as Lt } from "./plugins/ToolbarPlugin.js";
|
|
28
|
+
import { useModal as _t } from "../../dialog/modal/useModal.js";
|
|
29
|
+
import { SourceModal as yt } from "../../source/source_modal/SourceModal.js";
|
|
30
|
+
import { SourceListItem as At } from "../../source/source_list_item/SourceListItem.js";
|
|
31
|
+
const L = (l) => l?.replace(/ /g, " "), ae = ({
|
|
32
32
|
placeholder: l,
|
|
33
|
-
initialContent:
|
|
34
|
-
initialRichContent:
|
|
35
|
-
onSubmit:
|
|
36
|
-
sources:
|
|
33
|
+
initialContent: _,
|
|
34
|
+
initialRichContent: y,
|
|
35
|
+
onSubmit: P,
|
|
36
|
+
sources: h,
|
|
37
37
|
hideSubmit: A = !1,
|
|
38
38
|
hideSourceAction: O = !1,
|
|
39
39
|
onActivation: n,
|
|
40
40
|
disabled: k = !1,
|
|
41
|
-
handleChange:
|
|
42
|
-
handleSourcesChange:
|
|
41
|
+
handleChange: C,
|
|
42
|
+
handleSourcesChange: g,
|
|
43
43
|
shortBar: B = !1,
|
|
44
|
-
active:
|
|
44
|
+
active: S = !1,
|
|
45
45
|
maxLength: m,
|
|
46
46
|
disableRichText: U = !1,
|
|
47
47
|
editorRef: j,
|
|
48
|
-
uid:
|
|
49
|
-
allowedDomains:
|
|
48
|
+
uid: T,
|
|
49
|
+
allowedDomains: I = [],
|
|
50
50
|
hideCharCount: z = !1,
|
|
51
51
|
disableAutoActivate: F = !1,
|
|
52
52
|
autoFocus: a = !1,
|
|
53
|
-
isReply:
|
|
54
|
-
|
|
53
|
+
isReply: d = !1,
|
|
54
|
+
resetSignal: H,
|
|
55
|
+
...J
|
|
55
56
|
}) => {
|
|
56
|
-
const [s,
|
|
57
|
+
const [s, Q] = p(a || S), [W, $] = p(""), [q, D] = p(""), [u, f] = p([]), { showModal: G } = _t(), N = Tt(), v = Pt(), E = Ct(!1);
|
|
57
58
|
w(() => {
|
|
58
59
|
a && !E.current && n && (E.current = !0, n());
|
|
59
60
|
}, [a, n]), w(() => {
|
|
60
|
-
|
|
61
|
-
}, [
|
|
61
|
+
h && f(h);
|
|
62
|
+
}, [h]);
|
|
62
63
|
const b = () => {
|
|
63
|
-
s || (
|
|
64
|
-
},
|
|
64
|
+
s || (Q(!0), n && n());
|
|
65
|
+
}, K = {
|
|
65
66
|
editable: !k,
|
|
66
|
-
theme:
|
|
67
|
-
onError(
|
|
68
|
-
console.error("TextEditor error:",
|
|
67
|
+
theme: It,
|
|
68
|
+
onError(e) {
|
|
69
|
+
console.error("TextEditor error:", e);
|
|
69
70
|
},
|
|
70
|
-
nodes: [
|
|
71
|
-
},
|
|
71
|
+
nodes: [nt, st, St, ct]
|
|
72
|
+
}, V = () => {
|
|
72
73
|
b();
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
const o =
|
|
76
|
-
|
|
74
|
+
}, X = (e) => {
|
|
75
|
+
e.read(() => {
|
|
76
|
+
const o = xt().getTextContent(), r = L(o), c = JSON.stringify(e), M = L(c);
|
|
77
|
+
$(r), D(M), C && C(r, M);
|
|
77
78
|
});
|
|
78
|
-
},
|
|
79
|
-
const o =
|
|
80
|
-
|
|
81
|
-
},
|
|
82
|
-
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
-
|
|
79
|
+
}, Y = (e) => {
|
|
80
|
+
const o = W, r = q, c = u;
|
|
81
|
+
P && (e.preventDefault(), P(o, r, c)), f([]), g?.([]);
|
|
82
|
+
}, Z = () => {
|
|
83
|
+
G(
|
|
84
|
+
/* @__PURE__ */ t(
|
|
85
|
+
yt,
|
|
85
86
|
{
|
|
86
|
-
onAddSource:
|
|
87
|
-
allowedSources:
|
|
87
|
+
onAddSource: tt,
|
|
88
|
+
allowedSources: I
|
|
88
89
|
}
|
|
89
90
|
)
|
|
90
91
|
);
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
const r = [...o,
|
|
94
|
-
return
|
|
92
|
+
}, tt = (e) => {
|
|
93
|
+
f((o) => {
|
|
94
|
+
const r = [...o, e];
|
|
95
|
+
return g?.(r), r;
|
|
95
96
|
});
|
|
96
|
-
},
|
|
97
|
-
|
|
97
|
+
}, et = (e) => {
|
|
98
|
+
f((o) => {
|
|
98
99
|
const r = o.filter(
|
|
99
|
-
(c) => c.source_url !==
|
|
100
|
+
(c) => c.source_url !== e.source_url
|
|
100
101
|
);
|
|
101
|
-
return
|
|
102
|
+
return g?.(r), r;
|
|
102
103
|
});
|
|
103
|
-
},
|
|
104
|
-
|
|
104
|
+
}, ot = (e, o) => /* @__PURE__ */ t(
|
|
105
|
+
At,
|
|
105
106
|
{
|
|
106
|
-
publisher:
|
|
107
|
-
url:
|
|
108
|
-
title:
|
|
107
|
+
publisher: e.publisher,
|
|
108
|
+
url: e.source_url,
|
|
109
|
+
title: e.title,
|
|
109
110
|
index: o,
|
|
110
|
-
onRemove: () =>
|
|
111
|
+
onRemove: () => et(e)
|
|
111
112
|
},
|
|
112
113
|
o
|
|
113
|
-
),
|
|
114
|
-
return /* @__PURE__ */
|
|
115
|
-
/* @__PURE__ */
|
|
114
|
+
), rt = () => /* @__PURE__ */ t("div", { className: i.editorPlaceholder, children: l });
|
|
115
|
+
return /* @__PURE__ */ x(it, { children: [
|
|
116
|
+
/* @__PURE__ */ t(mt, { initialConfig: K, children: /* @__PURE__ */ t("div", { className: i.editorContainer, onClick: V, children: /* @__PURE__ */ x(
|
|
116
117
|
"div",
|
|
117
118
|
{
|
|
118
|
-
className:
|
|
119
|
-
[i.editorInnerInactive]: !s && !
|
|
119
|
+
className: R(i.editorInner, {
|
|
120
|
+
[i.editorInnerInactive]: !s && !S
|
|
120
121
|
}),
|
|
121
122
|
children: [
|
|
122
|
-
/* @__PURE__ */
|
|
123
|
-
|
|
123
|
+
/* @__PURE__ */ t(
|
|
124
|
+
gt,
|
|
124
125
|
{
|
|
125
|
-
contentEditable: /* @__PURE__ */
|
|
126
|
-
|
|
126
|
+
contentEditable: /* @__PURE__ */ t(
|
|
127
|
+
at,
|
|
127
128
|
{
|
|
128
|
-
className:
|
|
129
|
+
className: R(i.editorInput, {
|
|
129
130
|
[i.editorInputInactive]: !s
|
|
130
131
|
}),
|
|
131
|
-
...
|
|
132
|
+
...J
|
|
132
133
|
}
|
|
133
134
|
),
|
|
134
|
-
placeholder: l && /* @__PURE__ */
|
|
135
|
-
ErrorBoundary:
|
|
135
|
+
placeholder: l && /* @__PURE__ */ t(rt, {}),
|
|
136
|
+
ErrorBoundary: ut
|
|
136
137
|
}
|
|
137
138
|
),
|
|
138
|
-
/* @__PURE__ */
|
|
139
|
-
|
|
139
|
+
/* @__PURE__ */ t(
|
|
140
|
+
Lt,
|
|
140
141
|
{
|
|
141
142
|
hideSourceAction: O,
|
|
142
143
|
hideSubmit: A,
|
|
143
144
|
disableRichText: U,
|
|
144
145
|
shortBar: B,
|
|
145
|
-
onSubmit:
|
|
146
|
-
onAddSource:
|
|
147
|
-
isActive: s ||
|
|
148
|
-
sourceTooltip:
|
|
146
|
+
onSubmit: Y,
|
|
147
|
+
onAddSource: Z,
|
|
148
|
+
isActive: s || S,
|
|
149
|
+
sourceTooltip: I?.length > 0 && N.formatMessage({
|
|
149
150
|
id: "input.allowed_domains_tooltip",
|
|
150
151
|
defaultMessage: "With the new source function, you can add links to your article."
|
|
151
152
|
})
|
|
152
153
|
}
|
|
153
154
|
),
|
|
154
|
-
s && m && !z && /* @__PURE__ */
|
|
155
|
-
/* @__PURE__ */
|
|
155
|
+
s && m && !z && /* @__PURE__ */ x("div", { className: i.charactersCount, children: [
|
|
156
|
+
/* @__PURE__ */ t(lt, { maxLength: m }),
|
|
156
157
|
" ",
|
|
157
158
|
N.formatMessage({
|
|
158
159
|
id: "input.remaining_chars",
|
|
159
160
|
defaultMessage: "remaining characters"
|
|
160
161
|
})
|
|
161
162
|
] }),
|
|
162
|
-
/* @__PURE__ */
|
|
163
|
-
/* @__PURE__ */
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
-
/* @__PURE__ */
|
|
166
|
-
|
|
163
|
+
/* @__PURE__ */ t(pt, {}),
|
|
164
|
+
/* @__PURE__ */ t(ft, {}),
|
|
165
|
+
/* @__PURE__ */ t(ht, { onChange: X, ignoreSelectionChange: !0 }),
|
|
166
|
+
/* @__PURE__ */ t(
|
|
167
|
+
Nt,
|
|
167
168
|
{
|
|
168
169
|
onSetContent: F ? () => {
|
|
169
170
|
} : b,
|
|
170
|
-
storageUid:
|
|
171
|
+
storageUid: T || v
|
|
171
172
|
}
|
|
172
173
|
),
|
|
173
|
-
/* @__PURE__ */
|
|
174
|
-
/* @__PURE__ */
|
|
175
|
-
/* @__PURE__ */
|
|
176
|
-
/* @__PURE__ */
|
|
177
|
-
m && /* @__PURE__ */
|
|
178
|
-
/* @__PURE__ */
|
|
179
|
-
/* @__PURE__ */
|
|
174
|
+
/* @__PURE__ */ t(Rt, { content: _, isReply: d }),
|
|
175
|
+
/* @__PURE__ */ t(wt, { richContent: y, isReply: d }),
|
|
176
|
+
/* @__PURE__ */ t(vt, { autoFocus: a, isReply: d }),
|
|
177
|
+
/* @__PURE__ */ t(Et, {}),
|
|
178
|
+
m && /* @__PURE__ */ t(bt, { maxLength: m }),
|
|
179
|
+
/* @__PURE__ */ t(Mt, { storageUid: T || v, resetSignal: H, isReply: d }),
|
|
180
|
+
/* @__PURE__ */ t(dt, { editorRef: j })
|
|
180
181
|
]
|
|
181
182
|
}
|
|
182
183
|
) }) }),
|
|
183
|
-
|
|
184
|
+
u && u.length !== 0 ? /* @__PURE__ */ t("div", { className: i.sourcesBox, children: /* @__PURE__ */ t("div", { className: i.sourceList, children: u.map(ot) }) }) : null
|
|
184
185
|
] });
|
|
185
186
|
};
|
|
186
187
|
export {
|
|
187
|
-
|
|
188
|
+
ae as TextEditor
|
|
188
189
|
};
|
|
@@ -1,34 +1,32 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useLexicalComposerContext as
|
|
3
|
-
import { OnChangePlugin as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (t && Object.keys(t).length !== 0) {
|
|
14
|
-
const e = o.parseEditorState(t.editorState);
|
|
15
|
-
o.setEditorState(e), n?.();
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { useLexicalComposerContext as c } from "@lexical/react/LexicalComposerContext";
|
|
3
|
+
import { OnChangePlugin as s } from "@lexical/react/LexicalOnChangePlugin";
|
|
4
|
+
import { useEffect as m } from "react";
|
|
5
|
+
import { useDebouncedCallback as g } from "use-debounce";
|
|
6
|
+
const C = ({ storageUid: r, onSetContent: n }) => {
|
|
7
|
+
const [e] = c(), o = `TextEditor:content_${r}`;
|
|
8
|
+
m(() => {
|
|
9
|
+
try {
|
|
10
|
+
const t = JSON.parse(localStorage.getItem(o));
|
|
11
|
+
t?.editorState && (e.setEditorState(e.parseEditorState(t.editorState)), n?.());
|
|
12
|
+
} catch {
|
|
16
13
|
}
|
|
17
14
|
}, []);
|
|
18
|
-
const
|
|
19
|
-
(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
15
|
+
const a = g(
|
|
16
|
+
(t) => {
|
|
17
|
+
try {
|
|
18
|
+
localStorage.setItem(
|
|
19
|
+
o,
|
|
20
|
+
JSON.stringify({ editorState: JSON.stringify(t) })
|
|
21
|
+
);
|
|
22
|
+
} catch {
|
|
23
|
+
}
|
|
26
24
|
},
|
|
27
25
|
1e3,
|
|
28
26
|
!1
|
|
29
27
|
);
|
|
30
|
-
return /* @__PURE__ */
|
|
28
|
+
return /* @__PURE__ */ i(s, { onChange: a, ignoreSelectionChange: !0 });
|
|
31
29
|
};
|
|
32
30
|
export {
|
|
33
|
-
|
|
31
|
+
C as AutoSavePlugin
|
|
34
32
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { useLexicalComposerContext as
|
|
2
|
-
import { useRef as
|
|
3
|
-
import { useInput as
|
|
4
|
-
const
|
|
5
|
-
const [e] =
|
|
1
|
+
import { useLexicalComposerContext as c } from "@lexical/react/LexicalComposerContext";
|
|
2
|
+
import { useRef as l, useEffect as n } from "react";
|
|
3
|
+
import { useInput as f } from "../../input_provider/useInput.js";
|
|
4
|
+
const E = ({ autoFocus: o = !1, isReply: s = !1 }) => {
|
|
5
|
+
const [e] = c(), { focus: t } = f(), r = l(!1);
|
|
6
6
|
return n(() => {
|
|
7
|
-
t && e.focus(() => {
|
|
7
|
+
t && !s && e.focus(() => {
|
|
8
8
|
e.getRootElement().focus({ preventScroll: !0 });
|
|
9
9
|
});
|
|
10
10
|
}, [t, e]), n(() => {
|
|
@@ -14,5 +14,5 @@ const p = ({ autoFocus: o = !1 }) => {
|
|
|
14
14
|
}, [o, e]), null;
|
|
15
15
|
};
|
|
16
16
|
export {
|
|
17
|
-
|
|
17
|
+
E as FocusPlugin
|
|
18
18
|
};
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
import { useLexicalComposerContext as
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { useLexicalComposerContext as f } from "@lexical/react/LexicalComposerContext";
|
|
2
|
+
import { $addUpdateTag as l, $getRoot as u, $createParagraphNode as d } from "lexical";
|
|
3
|
+
import { useRef as R, useEffect as g } from "react";
|
|
4
|
+
import { useInput as h } from "../../input_provider/useInput.js";
|
|
5
|
+
const E = ({ storageUid: a, resetSignal: t, isReply: n = !1 }) => {
|
|
6
|
+
const [p] = f(), { reset: e, setReset: i } = h(), o = R(t);
|
|
7
|
+
return g(() => {
|
|
8
|
+
const m = t !== void 0 && t !== o.current;
|
|
9
|
+
o.current = t, (m || e && !n) && p.update(() => {
|
|
10
|
+
l("skip-dom-selection");
|
|
11
|
+
const r = u(), s = d();
|
|
12
|
+
r.clear(), r.append(s);
|
|
13
|
+
const c = s.selectStart();
|
|
14
|
+
c.format = 0, c.style = "";
|
|
15
|
+
try {
|
|
16
|
+
localStorage.removeItem(`TextEditor:content_${a}`);
|
|
17
|
+
} catch {
|
|
18
|
+
}
|
|
19
|
+
e && i(!1);
|
|
18
20
|
});
|
|
19
|
-
}, [t]), null;
|
|
21
|
+
}, [t, e]), null;
|
|
20
22
|
};
|
|
21
23
|
export {
|
|
22
|
-
|
|
24
|
+
E as ResetPlugin
|
|
23
25
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as f, Fragment as I } from "react/jsx-runtime";
|
|
2
|
-
import L from "
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { flatten as L } from "flat";
|
|
3
|
+
import { useState as u, useEffect as O } from "react";
|
|
4
|
+
import { IntlProvider as P } from "react-intl";
|
|
5
|
+
import { IntlContext as b } from "./IntlContext.js";
|
|
6
|
+
import { useSessionStorageState as y } from "../../hooks/use_session_storage_state/useSessionStorageState.js";
|
|
7
7
|
const R = ({
|
|
8
8
|
language: l,
|
|
9
9
|
locales: t,
|
|
@@ -12,7 +12,7 @@ const R = ({
|
|
|
12
12
|
children: g,
|
|
13
13
|
onError: p
|
|
14
14
|
}) => {
|
|
15
|
-
const [s, h] =
|
|
15
|
+
const [s, h] = y(
|
|
16
16
|
"logora:locale",
|
|
17
17
|
null
|
|
18
18
|
), v = () => {
|
|
@@ -21,7 +21,7 @@ const R = ({
|
|
|
21
21
|
if (l)
|
|
22
22
|
return l;
|
|
23
23
|
}, x = () => !o && e in t ? t[e] : {}, [e, S] = u(v()), [c, d] = u(x());
|
|
24
|
-
|
|
24
|
+
O(() => {
|
|
25
25
|
e && (o && e in t && t[e]().then((r) => {
|
|
26
26
|
d(r?.default || r);
|
|
27
27
|
}).catch(() => d({})), s !== e && h(e));
|
|
@@ -32,12 +32,12 @@ const R = ({
|
|
|
32
32
|
Object.keys(a).indexOf(i) > -1 && (n[i] = a[i]);
|
|
33
33
|
}), n;
|
|
34
34
|
}, m = () => /* @__PURE__ */ f(
|
|
35
|
-
|
|
35
|
+
P,
|
|
36
36
|
{
|
|
37
37
|
locale: e,
|
|
38
|
-
messages: j(
|
|
38
|
+
messages: j(L(c)),
|
|
39
39
|
onError: p,
|
|
40
|
-
children: /* @__PURE__ */ f(
|
|
40
|
+
children: /* @__PURE__ */ f(b.Provider, { value: { locale: e, setLocale: S }, children: g })
|
|
41
41
|
}
|
|
42
42
|
);
|
|
43
43
|
return /* @__PURE__ */ f(I, { children: o && typeof window < "u" ? Object.keys(c).length > 0 ? m() : null : m() });
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { jsx as e, jsxs as g, Fragment as P } from "react/jsx-runtime";
|
|
2
|
-
import z from "
|
|
3
|
-
import H from "classnames";
|
|
2
|
+
import z from "classnames";
|
|
4
3
|
import { useState as l, useRef as b, useEffect as c } from "react";
|
|
5
|
-
import { useIntl as
|
|
4
|
+
import { useIntl as H, FormattedMessage as n } from "react-intl";
|
|
6
5
|
import t from "./SuggestionInput.module.scss.js";
|
|
7
|
-
import { useDataProvider as
|
|
8
|
-
import { useList as
|
|
9
|
-
import { useToast as
|
|
10
|
-
import { useAuth as
|
|
11
|
-
import { useInput as
|
|
12
|
-
import { useFormValidation as
|
|
6
|
+
import { useDataProvider as K } from "../../data/data_provider/useDataProvider.js";
|
|
7
|
+
import { useList as Q } from "../../list/list_provider/useList.js";
|
|
8
|
+
import { useToast as W } from "../../dialog/toast_provider/useToast.js";
|
|
9
|
+
import { useAuth as X } from "../../auth/use_auth/useAuth.js";
|
|
10
|
+
import { useInput as Z } from "../../input/input_provider/useInput.js";
|
|
11
|
+
import { useFormValidation as $ } from "../../forms/use_form_validation/useFormValidation.js";
|
|
12
|
+
import { useSessionStorageState as G } from "../../hooks/use_session_storage_state/useSessionStorageState.js";
|
|
13
13
|
import { useAuthRequired as U } from "../../hooks/use_auth_required/useAuthRequired.js";
|
|
14
14
|
import { TextInput as ee } from "../../input/text_input/TextInput.js";
|
|
15
15
|
import { Button as se } from "../../action/button/Button.js";
|
|
@@ -21,7 +21,7 @@ const ve = ({
|
|
|
21
21
|
userGuideUrl: d,
|
|
22
22
|
hideUserGuideLink: N = !1
|
|
23
23
|
}) => {
|
|
24
|
-
const o =
|
|
24
|
+
const o = H(), C = K(), x = Q(), { toast: T } = W() || {}, { isLoggedIn: y } = X(), { focus: f, setFocus: q } = Z(), { errors: p, validate: F } = $(), [h, E] = l(!0), [Y, v] = l(!1), [i, a] = l(""), [S, k, A] = G("userSuggestion", {}), R = b(null), u = b(null), V = U();
|
|
25
25
|
c(() => {
|
|
26
26
|
S?.suggestion && a(S.suggestion);
|
|
27
27
|
}, []), c(() => {
|
|
@@ -88,7 +88,7 @@ const ve = ({
|
|
|
88
88
|
className: t.suggestionInputContainer,
|
|
89
89
|
ref: R,
|
|
90
90
|
children: /* @__PURE__ */ g(P, { children: [
|
|
91
|
-
/* @__PURE__ */ g("div", { className:
|
|
91
|
+
/* @__PURE__ */ g("div", { className: z(t.suggestionInputItem), children: [
|
|
92
92
|
/* @__PURE__ */ e("div", { className: t.suggestionInputTitle, children: /* @__PURE__ */ e(
|
|
93
93
|
n,
|
|
94
94
|
{
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as s, Fragment as pe, jsxs as c } from "react/jsx-runtime";
|
|
2
|
-
import P from "@rooks/use-sessionstorage-state";
|
|
3
2
|
import d from "classnames";
|
|
4
3
|
import { useState as N, useEffect as T } from "react";
|
|
5
4
|
import { useIntl as _e, FormattedMessage as f } from "react-intl";
|
|
6
5
|
import { useLocation as Ne } from "react-router";
|
|
7
6
|
import o from "./VoteBox.module.scss.js";
|
|
8
7
|
import { useTranslatedContent as j } from "../../translation/translated_content/useTranslatedContent.js";
|
|
8
|
+
import { useSessionStorageState as P } from "../../hooks/use_session_storage_state/useSessionStorageState.js";
|
|
9
9
|
import { useToast as be } from "../../dialog/toast_provider/useToast.js";
|
|
10
10
|
import { useAuthRequired as Se } from "../../hooks/use_auth_required/useAuthRequired.js";
|
|
11
11
|
import { useDataProvider as we } from "../../data/data_provider/useDataProvider.js";
|
package/dist/index.js
CHANGED
|
@@ -160,10 +160,11 @@ import { useReportContent as rm } from "./components/user_content/use_report_con
|
|
|
160
160
|
import { useResponsive as tm } from "./components/hooks/use_responsive/useResponsive.js";
|
|
161
161
|
import { useRichContent as mm } from "./components/argument/argument/useRichContent.js";
|
|
162
162
|
import { useRoutes as fm } from "./components/data/config_provider/useRoutes.js";
|
|
163
|
-
import {
|
|
164
|
-
import {
|
|
165
|
-
import {
|
|
166
|
-
import {
|
|
163
|
+
import { useSessionStorageState as am } from "./components/hooks/use_session_storage_state/useSessionStorageState.js";
|
|
164
|
+
import { useToast as sm } from "./components/dialog/toast_provider/useToast.js";
|
|
165
|
+
import { useVote as dm } from "./components/vote/use_vote/useVote.js";
|
|
166
|
+
import { utf8ToBase64url as gm } from "./components/auth/use_auth/base64.js";
|
|
167
|
+
import { withConfig as Bm } from "./components/data/config_provider/withConfig.js";
|
|
167
168
|
export {
|
|
168
169
|
a as ActionBar,
|
|
169
170
|
s as AdUnit,
|
|
@@ -338,10 +339,11 @@ export {
|
|
|
338
339
|
tm as useResponsive,
|
|
339
340
|
mm as useRichContent,
|
|
340
341
|
fm as useRoutes,
|
|
341
|
-
am as
|
|
342
|
+
am as useSessionStorageState,
|
|
343
|
+
sm as useToast,
|
|
342
344
|
mx as useTranslatedContent,
|
|
343
|
-
|
|
344
|
-
|
|
345
|
+
dm as useVote,
|
|
346
|
+
gm as utf8ToBase64url,
|
|
345
347
|
F as withAuth,
|
|
346
|
-
|
|
348
|
+
Bm as withConfig
|
|
347
349
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logora/debate",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.77",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"description": "Design system of @Logora made with React",
|
|
@@ -64,9 +64,7 @@
|
|
|
64
64
|
"@lexical/rich-text": "^0.45.0",
|
|
65
65
|
"@lexical/selection": "^0.45.0",
|
|
66
66
|
"@lexical/utils": "^0.45.0",
|
|
67
|
-
"@rooks/use-localstorage-state": "^4.11.2",
|
|
68
67
|
"@rooks/use-previous": "^4.11.2",
|
|
69
|
-
"@rooks/use-sessionstorage-state": "^4.11.2",
|
|
70
68
|
"axios": "^1.15.2",
|
|
71
69
|
"chart.js": "^4.5.1",
|
|
72
70
|
"chartjs-plugin-datalabels": "^2.2.0",
|