@instructure/platform-notebook 1.5.0 → 1.5.1
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/highlighter.d.ts.map +1 -1
- package/dist/index.js +593 -593
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { jsx as i, jsxs as
|
|
2
|
-
import { createContext as Ge, useMemo as de, useContext as ze, useReducer as We, useRef as
|
|
1
|
+
import { jsx as i, jsxs as T, Fragment as rt } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as Ge, useMemo as de, useContext as ze, useReducer as We, useRef as K, useEffect as V, useState as j, useCallback as Y } from "react";
|
|
3
3
|
import { createPortal as st } from "react-dom";
|
|
4
|
-
import { z as
|
|
4
|
+
import { z as u } from "zod";
|
|
5
5
|
import it from "diff-match-patch";
|
|
6
|
-
import { useQueryClient as
|
|
6
|
+
import { useQueryClient as Ce, useMutation as xe, useQuery as at } from "@tanstack/react-query";
|
|
7
7
|
import { CloseButton as lt, Button as ee, IconButton as le } from "@instructure/ui-buttons";
|
|
8
8
|
import { Flex as v } from "@instructure/ui-flex";
|
|
9
9
|
import { Heading as pe } from "@instructure/ui-heading";
|
|
10
10
|
import { Tray as ct } from "@instructure/ui-tray";
|
|
11
|
-
import { View as
|
|
11
|
+
import { View as z } from "@instructure/ui-view";
|
|
12
12
|
import { IconQuestionLine as ke, IconPinLine as we, IconWarningLine as dt, IconNoteLine as ut, IconEditLine as Se, IconTrashLine as he, IconArrowStartLine as ft } from "@instructure/ui-icons";
|
|
13
13
|
import { Menu as ie } from "@instructure/ui-menu";
|
|
14
14
|
import { TruncateText as Te } from "@instructure/ui-truncate-text";
|
|
@@ -19,88 +19,88 @@ import { TextArea as qe } from "@instructure/ui-text-area";
|
|
|
19
19
|
import { Pill as Me } from "@instructure/ui-pill";
|
|
20
20
|
import { Pagination as gt } from "@instructure/ui-pagination";
|
|
21
21
|
import { Spinner as ht } from "@instructure/ui-spinner";
|
|
22
|
-
const pt =
|
|
23
|
-
startContainer:
|
|
24
|
-
endContainer:
|
|
25
|
-
startOffset:
|
|
26
|
-
endOffset:
|
|
27
|
-
}), Nt =
|
|
28
|
-
start:
|
|
29
|
-
end:
|
|
30
|
-
}), Oe =
|
|
31
|
-
selectedText:
|
|
32
|
-
hasNoHighlightAnymore:
|
|
22
|
+
const pt = u.object({
|
|
23
|
+
startContainer: u.string(),
|
|
24
|
+
endContainer: u.string(),
|
|
25
|
+
startOffset: u.number(),
|
|
26
|
+
endOffset: u.number()
|
|
27
|
+
}), Nt = u.object({
|
|
28
|
+
start: u.number(),
|
|
29
|
+
end: u.number()
|
|
30
|
+
}), Oe = u.object({
|
|
31
|
+
selectedText: u.string(),
|
|
32
|
+
hasNoHighlightAnymore: u.boolean().optional(),
|
|
33
33
|
textPosition: Nt.nullable(),
|
|
34
34
|
range: pt.nullable(),
|
|
35
|
-
pageLastModifiedAt:
|
|
35
|
+
pageLastModifiedAt: u.string()
|
|
36
36
|
});
|
|
37
|
-
var
|
|
38
|
-
const Re =
|
|
37
|
+
var x = /* @__PURE__ */ ((t) => (t.IMPORTANT = "Important", t.CONFUSING = "Confusing", t))(x || {});
|
|
38
|
+
const Re = u.enum([
|
|
39
39
|
"Important",
|
|
40
40
|
"Confusing"
|
|
41
41
|
/* CONFUSING */
|
|
42
|
-
]), yt =
|
|
43
|
-
totalCount:
|
|
44
|
-
totalNrOfPages:
|
|
45
|
-
}), Ne =
|
|
46
|
-
id:
|
|
47
|
-
rootAccountUuid:
|
|
48
|
-
userId:
|
|
49
|
-
courseId:
|
|
50
|
-
objectId:
|
|
51
|
-
objectType:
|
|
52
|
-
userText:
|
|
53
|
-
reaction:
|
|
42
|
+
]), yt = u.object({
|
|
43
|
+
totalCount: u.number().nullish(),
|
|
44
|
+
totalNrOfPages: u.number().nullish()
|
|
45
|
+
}), Ne = u.object({
|
|
46
|
+
id: u.string(),
|
|
47
|
+
rootAccountUuid: u.string(),
|
|
48
|
+
userId: u.string(),
|
|
49
|
+
courseId: u.string(),
|
|
50
|
+
objectId: u.string(),
|
|
51
|
+
objectType: u.string(),
|
|
52
|
+
userText: u.string().optional(),
|
|
53
|
+
reaction: u.array(Re),
|
|
54
54
|
highlightData: Oe,
|
|
55
|
-
createdAt:
|
|
56
|
-
updatedAt:
|
|
57
|
-
}), bt =
|
|
58
|
-
cursor:
|
|
55
|
+
createdAt: u.string(),
|
|
56
|
+
updatedAt: u.string()
|
|
57
|
+
}), bt = u.object({
|
|
58
|
+
cursor: u.string(),
|
|
59
59
|
node: Ne
|
|
60
60
|
});
|
|
61
|
-
|
|
62
|
-
notes:
|
|
63
|
-
edges:
|
|
64
|
-
nodes:
|
|
61
|
+
u.object({
|
|
62
|
+
notes: u.object({
|
|
63
|
+
edges: u.array(bt),
|
|
64
|
+
nodes: u.array(Ne),
|
|
65
65
|
pageInfo: yt
|
|
66
66
|
})
|
|
67
67
|
});
|
|
68
|
-
const Et =
|
|
69
|
-
type:
|
|
70
|
-
id:
|
|
71
|
-
}), St =
|
|
72
|
-
courseId:
|
|
68
|
+
const Et = u.object({
|
|
69
|
+
type: u.string(),
|
|
70
|
+
id: u.string()
|
|
71
|
+
}), St = u.object({
|
|
72
|
+
courseId: u.string().optional(),
|
|
73
73
|
learningObject: Et.optional(),
|
|
74
|
-
reactions:
|
|
74
|
+
reactions: u.array(u.string()).optional()
|
|
75
75
|
}).optional();
|
|
76
|
-
|
|
77
|
-
courseId:
|
|
76
|
+
u.object({
|
|
77
|
+
courseId: u.string().optional(),
|
|
78
78
|
filter: St,
|
|
79
|
-
offset:
|
|
80
|
-
pageSize:
|
|
79
|
+
offset: u.number().optional(),
|
|
80
|
+
pageSize: u.number().optional()
|
|
81
81
|
});
|
|
82
|
-
|
|
83
|
-
courseId:
|
|
84
|
-
objectId:
|
|
85
|
-
objectType:
|
|
86
|
-
userText:
|
|
87
|
-
reaction:
|
|
82
|
+
u.object({
|
|
83
|
+
courseId: u.string(),
|
|
84
|
+
objectId: u.string(),
|
|
85
|
+
objectType: u.string(),
|
|
86
|
+
userText: u.string().optional(),
|
|
87
|
+
reaction: u.array(Re),
|
|
88
88
|
highlightData: Oe
|
|
89
89
|
});
|
|
90
|
-
|
|
90
|
+
u.object({
|
|
91
91
|
createNote: Ne
|
|
92
92
|
});
|
|
93
|
-
|
|
94
|
-
id:
|
|
95
|
-
userText:
|
|
96
|
-
reaction:
|
|
93
|
+
u.object({
|
|
94
|
+
id: u.string(),
|
|
95
|
+
userText: u.string().optional(),
|
|
96
|
+
reaction: u.array(Re),
|
|
97
97
|
highlightData: Oe
|
|
98
98
|
});
|
|
99
|
-
|
|
99
|
+
u.object({
|
|
100
100
|
updateNote: Ne
|
|
101
101
|
});
|
|
102
|
-
|
|
103
|
-
deleteNote:
|
|
102
|
+
u.object({
|
|
103
|
+
deleteNote: u.string()
|
|
104
104
|
});
|
|
105
105
|
var Ke = /* @__PURE__ */ ((t) => (t[t.FORWARDS = 1] = "FORWARDS", t[t.BACKWARDS = 2] = "BACKWARDS", t))(Ke || {});
|
|
106
106
|
class te {
|
|
@@ -121,17 +121,17 @@ class te {
|
|
|
121
121
|
return o.setStart(e.node, e.offset), o.setEnd(n.node, n.offset), o;
|
|
122
122
|
}
|
|
123
123
|
static fromRange(e) {
|
|
124
|
-
const n =
|
|
124
|
+
const n = G.fromPoint(e.startContainer, e.startOffset), o = G.fromPoint(e.endContainer, e.endOffset);
|
|
125
125
|
return !n || !o ? null : new te(n, o);
|
|
126
126
|
}
|
|
127
127
|
static fromOffsets(e, n, o) {
|
|
128
|
-
return new te(new
|
|
128
|
+
return new te(new G(e, n), new G(e, o));
|
|
129
129
|
}
|
|
130
130
|
relativeTo(e) {
|
|
131
131
|
return new te(this.start.relativeTo(e), this.end.relativeTo(e));
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
class
|
|
134
|
+
class G {
|
|
135
135
|
constructor(e, n) {
|
|
136
136
|
n < 0 && console.error("Offset is invalid"), this.element = e, this.offset = n;
|
|
137
137
|
}
|
|
@@ -153,9 +153,9 @@ class z {
|
|
|
153
153
|
static fromCharOffset(e, n) {
|
|
154
154
|
switch (e.nodeType) {
|
|
155
155
|
case Node.TEXT_NODE:
|
|
156
|
-
return
|
|
156
|
+
return G.fromPoint(e, n);
|
|
157
157
|
case Node.ELEMENT_NODE:
|
|
158
|
-
return new
|
|
158
|
+
return new G(e, n);
|
|
159
159
|
default:
|
|
160
160
|
return console.error("Node is not an element or text node"), null;
|
|
161
161
|
}
|
|
@@ -167,8 +167,8 @@ class z {
|
|
|
167
167
|
return console.error("Text node offset is out of range"), null;
|
|
168
168
|
if (!e.parentElement)
|
|
169
169
|
return console.error("Text node has no parent"), null;
|
|
170
|
-
const o =
|
|
171
|
-
return new
|
|
170
|
+
const o = $e(e) + n;
|
|
171
|
+
return new G(e.parentElement, o);
|
|
172
172
|
}
|
|
173
173
|
case Node.ELEMENT_NODE: {
|
|
174
174
|
if (n < 0 || n > e.childNodes.length)
|
|
@@ -176,7 +176,7 @@ class z {
|
|
|
176
176
|
let o = 0;
|
|
177
177
|
for (let r = 0; r < n; r++)
|
|
178
178
|
o += Xe(e.childNodes[r]);
|
|
179
|
-
return new
|
|
179
|
+
return new G(e, o);
|
|
180
180
|
}
|
|
181
181
|
default:
|
|
182
182
|
return console.error("Point is not in an element or text node"), null;
|
|
@@ -187,8 +187,8 @@ class z {
|
|
|
187
187
|
throw new Error("Parent is not an ancestor of current element");
|
|
188
188
|
let n = this.element, o = this.offset;
|
|
189
189
|
for (; n !== e; )
|
|
190
|
-
o +=
|
|
191
|
-
return new
|
|
190
|
+
o += $e(n), n.parentElement && (n = n.parentElement);
|
|
191
|
+
return new G(n, o);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
const Tt = (t) => {
|
|
@@ -201,7 +201,7 @@ function vt(t) {
|
|
|
201
201
|
n.nodeName === t.nodeName && (e += 1), n = n.previousSibling;
|
|
202
202
|
return e;
|
|
203
203
|
}
|
|
204
|
-
const
|
|
204
|
+
const It = (t) => {
|
|
205
205
|
const e = Tt(t), n = vt(t);
|
|
206
206
|
return `${e}[${n}]`;
|
|
207
207
|
}, Be = (t, e) => {
|
|
@@ -211,10 +211,10 @@ const Ct = (t) => {
|
|
|
211
211
|
console.error("Node is not a descendant of root");
|
|
212
212
|
return;
|
|
213
213
|
}
|
|
214
|
-
n = `${
|
|
214
|
+
n = `${It(o)}/${n}`, o = o.parentNode;
|
|
215
215
|
}
|
|
216
216
|
return n = `/${n}`, n = n.replace(/\/$/, ""), n;
|
|
217
|
-
},
|
|
217
|
+
}, Ct = (t, e, n) => {
|
|
218
218
|
const o = e.toUpperCase();
|
|
219
219
|
let r = -1;
|
|
220
220
|
for (let s = 0; s < t.children.length; s++) {
|
|
@@ -234,18 +234,18 @@ const Ct = (t) => {
|
|
|
234
234
|
const m = s.indexOf("[");
|
|
235
235
|
if (m !== -1) {
|
|
236
236
|
a = s.slice(0, m);
|
|
237
|
-
const
|
|
238
|
-
if (l = Number.parseInt(
|
|
237
|
+
const g = s.slice(m + 1, s.indexOf("]"));
|
|
238
|
+
if (l = Number.parseInt(g, 10) - 1, l < 0)
|
|
239
239
|
return null;
|
|
240
240
|
} else
|
|
241
241
|
a = s, l = 0;
|
|
242
|
-
const
|
|
243
|
-
if (!
|
|
242
|
+
const d = Ct(r, a, l);
|
|
243
|
+
if (!d)
|
|
244
244
|
return null;
|
|
245
|
-
r =
|
|
245
|
+
r = d;
|
|
246
246
|
}
|
|
247
247
|
return r;
|
|
248
|
-
},
|
|
248
|
+
}, He = (t, e = document.body) => {
|
|
249
249
|
try {
|
|
250
250
|
return xt(t, e);
|
|
251
251
|
} catch {
|
|
@@ -262,13 +262,13 @@ class oe {
|
|
|
262
262
|
static fromSelector(e, n) {
|
|
263
263
|
if (!(n != null && n.startContainer) || !(n != null && n.endContainer))
|
|
264
264
|
return console.error("No start or end container in selector"), null;
|
|
265
|
-
const o =
|
|
265
|
+
const o = He(n.startContainer, e);
|
|
266
266
|
if (!o)
|
|
267
267
|
return console.error("Failed to resolve startContainer XPath"), null;
|
|
268
|
-
const r =
|
|
268
|
+
const r = He(n.endContainer, e);
|
|
269
269
|
if (!r)
|
|
270
270
|
return console.error("Failed to resolve endContainer XPath"), null;
|
|
271
|
-
const s =
|
|
271
|
+
const s = G.fromCharOffset(o, n.startOffset), a = G.fromCharOffset(r, n.endOffset);
|
|
272
272
|
if (!s || !a)
|
|
273
273
|
return null;
|
|
274
274
|
const l = new te(s, a).toRange();
|
|
@@ -319,7 +319,7 @@ const Xe = (t) => {
|
|
|
319
319
|
default:
|
|
320
320
|
return 0;
|
|
321
321
|
}
|
|
322
|
-
},
|
|
322
|
+
}, $e = (t) => {
|
|
323
323
|
let e = t.previousSibling, n = 0;
|
|
324
324
|
for (; e; )
|
|
325
325
|
n += Xe(e), e = e.previousSibling;
|
|
@@ -347,17 +347,17 @@ const Xe = (t) => {
|
|
|
347
347
|
return null;
|
|
348
348
|
if (e.length > 32) {
|
|
349
349
|
const a = e.slice(0, 32), l = e.slice(-32), m = o - n;
|
|
350
|
-
let
|
|
351
|
-
const
|
|
352
|
-
if (
|
|
350
|
+
let d = r.match_main(s, a, n);
|
|
351
|
+
const g = r.match_main(s, l, o), c = g + l.length;
|
|
352
|
+
if (d === -1 || g === -1)
|
|
353
353
|
return null;
|
|
354
|
-
const
|
|
355
|
-
if ((
|
|
356
|
-
return kt(t,
|
|
357
|
-
if (
|
|
354
|
+
const E = c - d, h = Math.abs(E - m);
|
|
355
|
+
if ((d > c || h > 5) && (r.Match_Distance = e.length + 100, d = r.match_main(s, a, c), d !== -1 && d < c))
|
|
356
|
+
return kt(t, d, c, m);
|
|
357
|
+
if (d < c && h <= 5)
|
|
358
358
|
return ne.fromSelector(t, {
|
|
359
|
-
start:
|
|
360
|
-
end:
|
|
359
|
+
start: d,
|
|
360
|
+
end: c
|
|
361
361
|
});
|
|
362
362
|
} else {
|
|
363
363
|
const a = r.match_main(s, e, n);
|
|
@@ -382,14 +382,14 @@ const Xe = (t) => {
|
|
|
382
382
|
for (const s of e) {
|
|
383
383
|
const a = Ot(s, t);
|
|
384
384
|
if (a) {
|
|
385
|
-
const l = a.toRange(), m = l && oe.fromRange(t, l),
|
|
385
|
+
const l = a.toRange(), m = l && oe.fromRange(t, l), d = (l == null ? void 0 : l.toString().trim()) || s.highlightData.selectedText;
|
|
386
386
|
o.push({
|
|
387
387
|
id: s.id,
|
|
388
388
|
reaction: s.reaction,
|
|
389
389
|
userText: s.userText,
|
|
390
390
|
highlightData: {
|
|
391
391
|
...s.highlightData,
|
|
392
|
-
selectedText:
|
|
392
|
+
selectedText: d,
|
|
393
393
|
hasNoHighlightAnymore: !1,
|
|
394
394
|
range: (m == null ? void 0 : m.toSelector()) ?? null,
|
|
395
395
|
textPosition: a.toSelector(),
|
|
@@ -413,7 +413,7 @@ const Xe = (t) => {
|
|
|
413
413
|
var a;
|
|
414
414
|
if (!e) return;
|
|
415
415
|
const { highlightData: n, id: o } = t, { range: r } = n ?? {};
|
|
416
|
-
r && ((a = oe.fromSelector(e, r)) == null ? void 0 : a.toRange()) &&
|
|
416
|
+
r && ((a = oe.fromSelector(e, r)) == null ? void 0 : a.toRange()) && Ut({ id: o });
|
|
417
417
|
}, At = (t) => {
|
|
418
418
|
const n = document.querySelector(
|
|
419
419
|
`[data-highlight-id="${CSS.escape(t)}"].highlight-content`
|
|
@@ -422,48 +422,48 @@ const Xe = (t) => {
|
|
|
422
422
|
const o = n.getBoundingClientRect();
|
|
423
423
|
o.top >= 0 && o.bottom <= (window.innerHeight || document.documentElement.clientHeight) || n.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
424
424
|
}
|
|
425
|
-
}, fe = 90, me = 172,
|
|
425
|
+
}, fe = 90, me = 172, Lt = (t) => {
|
|
426
426
|
const e = t.getClientRects();
|
|
427
427
|
if (!e.length)
|
|
428
428
|
return null;
|
|
429
|
-
const n = e[0], o = e[e.length - 1], r = 4, s = 16, a = window.innerWidth || document.documentElement.clientWidth, l = window.innerHeight || document.documentElement.clientHeight, m = (
|
|
430
|
-
const
|
|
431
|
-
return
|
|
432
|
-
},
|
|
433
|
-
const
|
|
434
|
-
return
|
|
429
|
+
const n = e[0], o = e[e.length - 1], r = 4, s = 16, a = window.innerWidth || document.documentElement.clientWidth, l = window.innerHeight || document.documentElement.clientHeight, m = (b) => {
|
|
430
|
+
const N = b + me;
|
|
431
|
+
return b >= s && N <= a - s;
|
|
432
|
+
}, d = (b) => {
|
|
433
|
+
const N = b + fe;
|
|
434
|
+
return b >= s && N <= l - s;
|
|
435
435
|
};
|
|
436
|
-
let
|
|
437
|
-
const
|
|
438
|
-
if (m(
|
|
439
|
-
|
|
436
|
+
let g;
|
|
437
|
+
const c = n.right - me;
|
|
438
|
+
if (m(c))
|
|
439
|
+
g = c;
|
|
440
440
|
else {
|
|
441
|
-
const
|
|
442
|
-
if (m(
|
|
443
|
-
|
|
441
|
+
const b = n.left;
|
|
442
|
+
if (m(b))
|
|
443
|
+
g = b;
|
|
444
444
|
else {
|
|
445
|
-
const
|
|
446
|
-
m(
|
|
445
|
+
const p = (n.left + n.right) / 2 - me / 2;
|
|
446
|
+
m(p) ? g = p : c < s ? g = s : g = a - me - s;
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
-
let
|
|
450
|
-
const
|
|
451
|
-
if (
|
|
452
|
-
|
|
449
|
+
let E;
|
|
450
|
+
const h = o.bottom + r;
|
|
451
|
+
if (d(h))
|
|
452
|
+
E = h;
|
|
453
453
|
else {
|
|
454
|
-
const
|
|
455
|
-
|
|
454
|
+
const b = n.top - fe - r;
|
|
455
|
+
d(b) ? E = b : h + fe > l - s ? E = l - fe - s : E = s;
|
|
456
456
|
}
|
|
457
|
-
return { top:
|
|
458
|
-
},
|
|
457
|
+
return { top: E, left: g };
|
|
458
|
+
}, Dt = (t, e) => {
|
|
459
459
|
for (const n of e)
|
|
460
460
|
if (t.start < n.end && t.end > n.start)
|
|
461
461
|
return !0;
|
|
462
462
|
return !1;
|
|
463
|
-
}, Ae = (t) => `highlight-wrapper-${t}`, ye = (t) => `${Ae(t)}-start`, Ye = (t) => `${Ae(t)}-end`, ce = (t) => `[data-highlight-id="${CSS.escape(t)}"]`,
|
|
463
|
+
}, Ae = (t) => `highlight-wrapper-${t}`, ye = (t) => `${Ae(t)}-start`, Ye = (t) => `${Ae(t)}-end`, ce = (t) => `[data-highlight-id="${CSS.escape(t)}"]`, Pt = "2px", _t = "3px", Ft = "Notebook note", Le = (t, e) => {
|
|
464
464
|
const n = Number.parseInt(t.slice(1, 3), 16), o = Number.parseInt(t.slice(3, 5), 16), r = Number.parseInt(t.slice(5, 7), 16);
|
|
465
465
|
return `rgba(${n}, ${o}, ${r}, ${e})`;
|
|
466
|
-
},
|
|
466
|
+
}, Mt = (t, e) => {
|
|
467
467
|
var n;
|
|
468
468
|
try {
|
|
469
469
|
const o = ((n = e.nodeValue) == null ? void 0 : n.length) ?? e.childNodes.length;
|
|
@@ -471,7 +471,7 @@ const Xe = (t) => {
|
|
|
471
471
|
} catch {
|
|
472
472
|
return !1;
|
|
473
473
|
}
|
|
474
|
-
},
|
|
474
|
+
}, Bt = (t) => {
|
|
475
475
|
var s;
|
|
476
476
|
if (t.collapsed)
|
|
477
477
|
return [];
|
|
@@ -481,7 +481,7 @@ const Xe = (t) => {
|
|
|
481
481
|
const n = [], o = (s = e == null ? void 0 : e.ownerDocument) == null ? void 0 : s.createNodeIterator(e, NodeFilter.SHOW_TEXT);
|
|
482
482
|
let r = (o == null ? void 0 : o.nextNode()) || null;
|
|
483
483
|
for (; r; ) {
|
|
484
|
-
if (!
|
|
484
|
+
if (!Mt(t, r)) {
|
|
485
485
|
r = (o == null ? void 0 : o.nextNode()) || null;
|
|
486
486
|
continue;
|
|
487
487
|
}
|
|
@@ -493,71 +493,71 @@ const Xe = (t) => {
|
|
|
493
493
|
a === t.endContainer && t.endOffset < a.data.length && a.splitText(t.endOffset), n.push(a), r = (o == null ? void 0 : o.nextNode()) || null;
|
|
494
494
|
}
|
|
495
495
|
return n;
|
|
496
|
-
},
|
|
496
|
+
}, Ht = (t, e, n) => {
|
|
497
497
|
if (t.collapsed) return;
|
|
498
498
|
const o = e.id ?? "", r = Ae(o);
|
|
499
499
|
if (document.getElementById(ye(o))) {
|
|
500
500
|
$t(e, n);
|
|
501
501
|
return;
|
|
502
502
|
}
|
|
503
|
-
const a = e.type ===
|
|
504
|
-
|
|
505
|
-
const
|
|
506
|
-
|
|
507
|
-
const
|
|
508
|
-
|
|
509
|
-
const y = t.cloneRange();
|
|
510
|
-
y.collapse(!1), y.insertNode(p);
|
|
503
|
+
const a = e.type === x.IMPORTANT ? n.colors.importantBackground : n.colors.confusingBackground, l = e.id === e.selectedNoteId, m = l ? a : Le(a, 0.5), d = e.type === x.IMPORTANT ? n.colors.importantUnderline : n.colors.confusingUnderline, g = e.type === x.IMPORTANT ? "solid" : "dashed", c = document.createElement("span");
|
|
504
|
+
c.id = `${r}-start`, c.className = "highlight-marker-start", c.dataset.highlightId = o || "";
|
|
505
|
+
const E = e.labelPrefix ?? Ft;
|
|
506
|
+
c.setAttribute("role", "button"), c.setAttribute("tabindex", "0"), c.setAttribute("aria-label", E), c.setAttribute("aria-haspopup", "dialog"), c.setAttribute("aria-expanded", String(l && !!e.isTrayOpen)), e.popupId && c.setAttribute("aria-controls", e.popupId), c.style.position = "relative", c.style.fontSize = "0", c.style.lineHeight = "0", c.style.width = "0", c.style.height = "0", c.style.margin = "0", c.style.padding = "0", c.style.border = "0", c.style.outline = "none";
|
|
507
|
+
const h = document.createElement("span");
|
|
508
|
+
h.id = Ye(o), h.className = "highlight-marker-end", h.dataset.highlightId = o || "";
|
|
511
509
|
const b = t.cloneRange();
|
|
512
|
-
b.collapse(!
|
|
513
|
-
const
|
|
514
|
-
|
|
515
|
-
const
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
const
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
510
|
+
b.collapse(!1), b.insertNode(h);
|
|
511
|
+
const N = t.cloneRange();
|
|
512
|
+
N.collapse(!0), N.insertNode(c);
|
|
513
|
+
const p = document.createRange();
|
|
514
|
+
p.setStartAfter(c), p.setEndBefore(h);
|
|
515
|
+
const O = Bt(p).filter((y) => y.textContent && y.textContent.length > 0);
|
|
516
|
+
O.forEach((y, S) => {
|
|
517
|
+
var W;
|
|
518
|
+
const R = y.parentElement;
|
|
519
|
+
if ((R == null ? void 0 : R.dataset.highlightId) === o) return;
|
|
520
|
+
const I = S === 0, D = S === O.length - 1, P = O.length === 1;
|
|
521
|
+
let _;
|
|
522
|
+
P ? _ = "single" : I ? _ = "first" : D ? _ = "last" : _ = "middle";
|
|
523
|
+
const k = document.createElement("span");
|
|
524
|
+
k.className = "highlight-content", k.dataset.highlightId = o || "", k.dataset.position = _, k.style.backgroundColor = m, k.style.textDecorationLine = "underline", k.style.textDecorationColor = d, k.style.textDecorationStyle = g, k.style.textDecorationThickness = n.borderWidthSmall, k.style.textUnderlineOffset = n.underlineOffset, k.style.cursor = "pointer", k.addEventListener("click", (X) => {
|
|
525
|
+
var $;
|
|
526
|
+
X.target.tagName !== "A" && (($ = e.onClick) == null || $.call(e));
|
|
527
|
+
}), (W = y.parentNode) == null || W.insertBefore(k, y), k.appendChild(y);
|
|
528
|
+
}), c.addEventListener("click", (y) => {
|
|
529
|
+
var S;
|
|
530
|
+
y.target.tagName !== "A" && ((S = e.onClick) == null || S.call(e));
|
|
531
|
+
}), c.addEventListener("keydown", (y) => {
|
|
532
|
+
var S;
|
|
533
|
+
if (y.key === "Enter" || y.key === " ")
|
|
534
|
+
y.preventDefault(), (S = e.onClick) == null || S.call(e);
|
|
535
|
+
else if (y.key === "Tab" && !y.shiftKey) {
|
|
536
|
+
const R = document.querySelectorAll(ce(o));
|
|
537
|
+
for (const I of R) {
|
|
538
|
+
const D = I.querySelector("a");
|
|
539
|
+
if (D) {
|
|
540
|
+
y.preventDefault(), D.focus();
|
|
541
541
|
break;
|
|
542
542
|
}
|
|
543
543
|
}
|
|
544
544
|
}
|
|
545
|
-
}),
|
|
545
|
+
}), c.addEventListener("focus", () => {
|
|
546
546
|
document.querySelectorAll(
|
|
547
547
|
`.highlight-content${ce(o)}`
|
|
548
|
-
).forEach((
|
|
549
|
-
|
|
548
|
+
).forEach((S) => {
|
|
549
|
+
S.style.boxShadow = `0 0 0 ${Pt} ${n.colors.focusOutline}`, S.style.borderRadius = _t;
|
|
550
550
|
});
|
|
551
|
-
}),
|
|
551
|
+
}), c.addEventListener("blur", () => {
|
|
552
552
|
document.querySelectorAll(
|
|
553
553
|
`.highlight-content${ce(o)}`
|
|
554
|
-
).forEach((
|
|
555
|
-
|
|
554
|
+
).forEach((S) => {
|
|
555
|
+
S.style.boxShadow = "", S.style.borderRadius = "";
|
|
556
556
|
});
|
|
557
557
|
});
|
|
558
558
|
};
|
|
559
559
|
function $t(t, e) {
|
|
560
|
-
const n = t.type ===
|
|
560
|
+
const n = t.type === x.IMPORTANT ? e.colors.importantBackground : e.colors.confusingBackground, o = t.id === t.selectedNoteId, r = o ? n : Le(n, 0.5);
|
|
561
561
|
document.querySelectorAll(
|
|
562
562
|
ce(t.id ?? "")
|
|
563
563
|
).forEach((l) => {
|
|
@@ -568,7 +568,7 @@ function $t(t, e) {
|
|
|
568
568
|
);
|
|
569
569
|
a && a.setAttribute("aria-expanded", String(o && !!t.isTrayOpen));
|
|
570
570
|
}
|
|
571
|
-
const
|
|
571
|
+
const Ut = (t) => {
|
|
572
572
|
const e = t.id ?? "", n = document.getElementById(ye(e)), o = document.getElementById(Ye(e));
|
|
573
573
|
document.querySelectorAll(
|
|
574
574
|
ce(e)
|
|
@@ -582,8 +582,8 @@ const Ht = (t) => {
|
|
|
582
582
|
all: ["notebook"],
|
|
583
583
|
notes: (t) => ["notebook", "notes", t]
|
|
584
584
|
};
|
|
585
|
-
function
|
|
586
|
-
const e =
|
|
585
|
+
function jt(t) {
|
|
586
|
+
const e = Ce();
|
|
587
587
|
return xe({
|
|
588
588
|
mutationFn: (n) => t.createNote(n),
|
|
589
589
|
onSuccess: () => {
|
|
@@ -591,8 +591,8 @@ function Ut(t) {
|
|
|
591
591
|
}
|
|
592
592
|
});
|
|
593
593
|
}
|
|
594
|
-
function
|
|
595
|
-
const e =
|
|
594
|
+
function Gt(t) {
|
|
595
|
+
const e = Ce();
|
|
596
596
|
return xe({
|
|
597
597
|
mutationFn: (n) => t.deleteNote(n),
|
|
598
598
|
onSuccess: () => {
|
|
@@ -611,8 +611,8 @@ function ve({
|
|
|
611
611
|
enabled: e
|
|
612
612
|
});
|
|
613
613
|
}
|
|
614
|
-
function
|
|
615
|
-
const e =
|
|
614
|
+
function zt(t) {
|
|
615
|
+
const e = Ce();
|
|
616
616
|
return xe({
|
|
617
617
|
mutationFn: ({ id: n, input: o }) => t.updateNote(n, o),
|
|
618
618
|
onMutate: async ({ id: n, input: o }) => {
|
|
@@ -623,7 +623,7 @@ function Gt(t) {
|
|
|
623
623
|
m && (a.set(l.queryKey, m), e.setQueryData(l.queryKey, {
|
|
624
624
|
...m,
|
|
625
625
|
notes: m.notes.map(
|
|
626
|
-
(
|
|
626
|
+
(d) => d.id === n ? { ...d, ...o, updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : d
|
|
627
627
|
)
|
|
628
628
|
}));
|
|
629
629
|
}
|
|
@@ -639,57 +639,57 @@ function Gt(t) {
|
|
|
639
639
|
}
|
|
640
640
|
});
|
|
641
641
|
}
|
|
642
|
-
const
|
|
643
|
-
notebook:
|
|
644
|
-
notes:
|
|
645
|
-
important:
|
|
646
|
-
unclear:
|
|
647
|
-
back:
|
|
648
|
-
editNote:
|
|
649
|
-
save:
|
|
650
|
-
cancel:
|
|
651
|
-
deleteNote:
|
|
652
|
-
note:
|
|
653
|
-
addNotePrompt:
|
|
654
|
-
removeFromNotebook:
|
|
655
|
-
addNoteOptional:
|
|
656
|
-
markImportant:
|
|
657
|
-
markUnclear:
|
|
658
|
-
savedToNotebook:
|
|
659
|
-
noteUpdated:
|
|
660
|
-
noteDeleted:
|
|
661
|
-
errorSavingNote:
|
|
662
|
-
errorUpdatingNote:
|
|
663
|
-
noteDeletionFailed:
|
|
664
|
-
loadingNotes:
|
|
665
|
-
failedToLoadNotes:
|
|
666
|
-
emptyStateHeading:
|
|
667
|
-
emptyStateDescription:
|
|
668
|
-
nothingHereYet:
|
|
669
|
-
adjustFiltersOrCreate:
|
|
670
|
-
noNotesForFilter:
|
|
671
|
-
filter:
|
|
672
|
-
previousPage:
|
|
673
|
-
nextPage:
|
|
674
|
-
allCourses:
|
|
675
|
-
allNotes:
|
|
642
|
+
const Wt = "Notebook", qt = "Notes", Kt = "Important", Xt = "Unclear", Qt = "Back", Yt = "Edit note", Vt = "Save", Zt = "Cancel", Jt = "Delete note", en = "note", tn = "Add note (optional)", nn = "Remove from Notebook", on = "Add a note (optional)", rn = "Mark important", sn = "Mark unclear", an = "Saved to Notebook.", ln = "Note updated", cn = "Note deleted", dn = "Error saving to Notebook.", un = "Error updating note", fn = "Note deletion failed", mn = "Loading notes", gn = "Failed to load notes", hn = "Start capturing your notes", pn = "Your notes from learning materials will appear here. Highlight key ideas, reflections, or questions as you learn—they'll all be saved in your Notebook for easy review later.", Nn = "Nothing here yet", yn = "Adjust your filters or create a new note to get started.", bn = "You have no notes for the selected filter", En = "Filter", Sn = "Previous page", Tn = "Next page", vn = "All courses", In = "All notes", Cn = "Close Notebook panel", xn = "To use the Notebook feature, highlight an excerpt from your learning material to flag it as 'confusing' or 'important' and leave an optional note.", kn = "The content you highlighted is no longer available.", wn = "Notebook note", De = {
|
|
643
|
+
notebook: Wt,
|
|
644
|
+
notes: qt,
|
|
645
|
+
important: Kt,
|
|
646
|
+
unclear: Xt,
|
|
647
|
+
back: Qt,
|
|
648
|
+
editNote: Yt,
|
|
649
|
+
save: Vt,
|
|
650
|
+
cancel: Zt,
|
|
651
|
+
deleteNote: Jt,
|
|
652
|
+
note: en,
|
|
653
|
+
addNotePrompt: tn,
|
|
654
|
+
removeFromNotebook: nn,
|
|
655
|
+
addNoteOptional: on,
|
|
656
|
+
markImportant: rn,
|
|
657
|
+
markUnclear: sn,
|
|
658
|
+
savedToNotebook: an,
|
|
659
|
+
noteUpdated: ln,
|
|
660
|
+
noteDeleted: cn,
|
|
661
|
+
errorSavingNote: dn,
|
|
662
|
+
errorUpdatingNote: un,
|
|
663
|
+
noteDeletionFailed: fn,
|
|
664
|
+
loadingNotes: mn,
|
|
665
|
+
failedToLoadNotes: gn,
|
|
666
|
+
emptyStateHeading: hn,
|
|
667
|
+
emptyStateDescription: pn,
|
|
668
|
+
nothingHereYet: Nn,
|
|
669
|
+
adjustFiltersOrCreate: yn,
|
|
670
|
+
noNotesForFilter: bn,
|
|
671
|
+
filter: En,
|
|
672
|
+
previousPage: Sn,
|
|
673
|
+
nextPage: Tn,
|
|
674
|
+
allCourses: vn,
|
|
675
|
+
allNotes: In,
|
|
676
676
|
closeNotebookPanel: Cn,
|
|
677
|
-
featureDescription:
|
|
678
|
-
highlightUnavailable:
|
|
679
|
-
notebookNote:
|
|
677
|
+
featureDescription: xn,
|
|
678
|
+
highlightUnavailable: kn,
|
|
679
|
+
notebookNote: wn
|
|
680
680
|
}, Ve = Ge(null);
|
|
681
681
|
function Ze(t, e) {
|
|
682
|
-
const n =
|
|
682
|
+
const n = De[t] ?? t;
|
|
683
683
|
return e ? n.replace(/%\{([^}]+)}/g, (o, r) => String(e[r] ?? `%{${r}}`)) : n;
|
|
684
684
|
}
|
|
685
|
-
function
|
|
685
|
+
function On({
|
|
686
686
|
translations: t,
|
|
687
687
|
translate: e,
|
|
688
688
|
children: n
|
|
689
689
|
}) {
|
|
690
690
|
const o = de(
|
|
691
691
|
() => ({
|
|
692
|
-
translations: { ...
|
|
692
|
+
translations: { ...De, ...t },
|
|
693
693
|
translate: e ?? Ze
|
|
694
694
|
}),
|
|
695
695
|
[t, e]
|
|
@@ -698,14 +698,14 @@ function wn({
|
|
|
698
698
|
}
|
|
699
699
|
function Z() {
|
|
700
700
|
const t = ze(Ve);
|
|
701
|
-
return t || { translations:
|
|
701
|
+
return t || { translations: De, translate: Ze };
|
|
702
702
|
}
|
|
703
|
-
const
|
|
703
|
+
const Rn = (t) => ({
|
|
704
704
|
selectedNoteId: t ?? null,
|
|
705
705
|
isNoteEditing: !1,
|
|
706
706
|
isTrayOpen: t != null
|
|
707
707
|
});
|
|
708
|
-
function
|
|
708
|
+
function An(t, e) {
|
|
709
709
|
switch (e.type) {
|
|
710
710
|
case "SELECT_NOTE":
|
|
711
711
|
return {
|
|
@@ -726,7 +726,7 @@ function Rn(t, e) {
|
|
|
726
726
|
}
|
|
727
727
|
}
|
|
728
728
|
const Je = Ge(null);
|
|
729
|
-
function
|
|
729
|
+
function uo({
|
|
730
730
|
api: t,
|
|
731
731
|
currentUserId: e,
|
|
732
732
|
objectId: n,
|
|
@@ -736,11 +736,11 @@ function co({
|
|
|
736
736
|
onAnalyticsEvent: a,
|
|
737
737
|
onOpen: l,
|
|
738
738
|
initialNoteId: m,
|
|
739
|
-
translations:
|
|
740
|
-
translate:
|
|
741
|
-
children:
|
|
739
|
+
translations: d,
|
|
740
|
+
translate: g,
|
|
741
|
+
children: c
|
|
742
742
|
}) {
|
|
743
|
-
const [
|
|
743
|
+
const [E, h] = We(An, Rn(m)), b = K(m != null), N = de(
|
|
744
744
|
() => ({
|
|
745
745
|
api: t,
|
|
746
746
|
currentUserId: e,
|
|
@@ -749,15 +749,15 @@ function co({
|
|
|
749
749
|
courseId: r,
|
|
750
750
|
pageLastModifiedAt: s,
|
|
751
751
|
onAnalyticsEvent: a,
|
|
752
|
-
...
|
|
753
|
-
selectNote: (
|
|
754
|
-
clearSelectedNote: () =>
|
|
755
|
-
setEditing: (
|
|
752
|
+
...E,
|
|
753
|
+
selectNote: (p, B = !1) => h({ type: "SELECT_NOTE", payload: { id: p, isEditing: B } }),
|
|
754
|
+
clearSelectedNote: () => h({ type: "CLEAR_SELECTED_NOTE" }),
|
|
755
|
+
setEditing: (p) => h({ type: "SET_EDITING", payload: p }),
|
|
756
756
|
openTray: () => {
|
|
757
|
-
|
|
757
|
+
b.current || (b.current = !0, l == null || l()), h({ type: "OPEN_TRAY" });
|
|
758
758
|
},
|
|
759
759
|
closeTray: () => {
|
|
760
|
-
|
|
760
|
+
b.current = !1, h({ type: "CLOSE_TRAY" });
|
|
761
761
|
}
|
|
762
762
|
}),
|
|
763
763
|
[
|
|
@@ -769,10 +769,10 @@ function co({
|
|
|
769
769
|
s,
|
|
770
770
|
a,
|
|
771
771
|
l,
|
|
772
|
-
|
|
772
|
+
E
|
|
773
773
|
]
|
|
774
774
|
);
|
|
775
|
-
return /* @__PURE__ */ i(Je.Provider, { value:
|
|
775
|
+
return /* @__PURE__ */ i(Je.Provider, { value: N, children: /* @__PURE__ */ i(On, { translations: d, translate: g, children: c }) });
|
|
776
776
|
}
|
|
777
777
|
function et() {
|
|
778
778
|
const t = ze(Je);
|
|
@@ -780,7 +780,7 @@ function et() {
|
|
|
780
780
|
throw new Error("useNotebook must be used within a NotebookProvider");
|
|
781
781
|
return t;
|
|
782
782
|
}
|
|
783
|
-
const tt = "notebook-tray-content",
|
|
783
|
+
const tt = "notebook-tray-content", fo = ({ children: t }) => {
|
|
784
784
|
const { isTrayOpen: e, closeTray: n } = et(), { translations: o } = Z();
|
|
785
785
|
return /* @__PURE__ */ i(
|
|
786
786
|
ct,
|
|
@@ -790,8 +790,8 @@ const tt = "notebook-tray-content", uo = ({ children: t }) => {
|
|
|
790
790
|
onDismiss: n,
|
|
791
791
|
placement: "end",
|
|
792
792
|
size: "regular",
|
|
793
|
-
children: /* @__PURE__ */
|
|
794
|
-
/* @__PURE__ */ i(v.Item, { children: /* @__PURE__ */ i(
|
|
793
|
+
children: /* @__PURE__ */ T(v, { direction: "column", height: "100vh", id: tt, children: [
|
|
794
|
+
/* @__PURE__ */ i(v.Item, { children: /* @__PURE__ */ i(z, { as: "div", padding: "small medium", borderWidth: "0 0 small 0", children: /* @__PURE__ */ T(v, { justifyItems: "space-between", alignItems: "center", children: [
|
|
795
795
|
/* @__PURE__ */ i(pe, { level: "h3", children: o.notebook }),
|
|
796
796
|
/* @__PURE__ */ i(
|
|
797
797
|
lt,
|
|
@@ -807,12 +807,12 @@ const tt = "notebook-tray-content", uo = ({ children: t }) => {
|
|
|
807
807
|
] })
|
|
808
808
|
}
|
|
809
809
|
);
|
|
810
|
-
},
|
|
811
|
-
const { translations: n } = Z(), o =
|
|
810
|
+
}, Ln = ({ currentType: t, onSelectReaction: e }) => {
|
|
811
|
+
const { translations: n } = Z(), o = K(null), r = K(null);
|
|
812
812
|
return V(() => {
|
|
813
|
-
t ===
|
|
813
|
+
t === x.CONFUSING && o.current ? o.current.focus() : t === x.IMPORTANT && r.current ? r.current.focus() : o.current && o.current.focus();
|
|
814
814
|
}, [t]), /* @__PURE__ */ i(
|
|
815
|
-
|
|
815
|
+
z,
|
|
816
816
|
{
|
|
817
817
|
as: "div",
|
|
818
818
|
background: "primary",
|
|
@@ -820,23 +820,23 @@ const tt = "notebook-tray-content", uo = ({ children: t }) => {
|
|
|
820
820
|
borderColor: "secondary",
|
|
821
821
|
borderRadius: "medium",
|
|
822
822
|
shadow: "resting",
|
|
823
|
-
children: /* @__PURE__ */
|
|
824
|
-
/* @__PURE__ */
|
|
823
|
+
children: /* @__PURE__ */ T(ie, { children: [
|
|
824
|
+
/* @__PURE__ */ T(
|
|
825
825
|
ie.Item,
|
|
826
826
|
{
|
|
827
827
|
ref: o,
|
|
828
|
-
onClick: () => e(
|
|
828
|
+
onClick: () => e(x.CONFUSING),
|
|
829
829
|
children: [
|
|
830
830
|
/* @__PURE__ */ i(ke, { size: "x-small" }),
|
|
831
831
|
` ${n.markUnclear}`
|
|
832
832
|
]
|
|
833
833
|
}
|
|
834
834
|
),
|
|
835
|
-
/* @__PURE__ */
|
|
835
|
+
/* @__PURE__ */ T(
|
|
836
836
|
ie.Item,
|
|
837
837
|
{
|
|
838
838
|
ref: r,
|
|
839
|
-
onClick: () => e(
|
|
839
|
+
onClick: () => e(x.IMPORTANT),
|
|
840
840
|
children: [
|
|
841
841
|
/* @__PURE__ */ i(we, { size: "x-small" }),
|
|
842
842
|
` ${n.markImportant}`
|
|
@@ -847,7 +847,7 @@ const tt = "notebook-tray-content", uo = ({ children: t }) => {
|
|
|
847
847
|
}
|
|
848
848
|
);
|
|
849
849
|
}, be = "notebook-inline-reaction-menu";
|
|
850
|
-
function
|
|
850
|
+
function mo({
|
|
851
851
|
containerRef: t,
|
|
852
852
|
highlightTheme: e,
|
|
853
853
|
debounceTime: n = 500,
|
|
@@ -859,161 +859,161 @@ function fo({
|
|
|
859
859
|
api: a,
|
|
860
860
|
objectId: l,
|
|
861
861
|
objectType: m,
|
|
862
|
-
courseId:
|
|
863
|
-
pageLastModifiedAt:
|
|
864
|
-
selectedNoteId:
|
|
865
|
-
isTrayOpen:
|
|
866
|
-
selectNote:
|
|
867
|
-
openTray:
|
|
868
|
-
} = et(), { translations:
|
|
862
|
+
courseId: d,
|
|
863
|
+
pageLastModifiedAt: g,
|
|
864
|
+
selectedNoteId: c,
|
|
865
|
+
isTrayOpen: E,
|
|
866
|
+
selectNote: h,
|
|
867
|
+
openTray: b
|
|
868
|
+
} = et(), { translations: N } = Z(), { data: p } = ve({
|
|
869
869
|
api: a,
|
|
870
870
|
filter: {
|
|
871
871
|
learningObject: { type: m, id: l }
|
|
872
872
|
},
|
|
873
|
-
courseId:
|
|
873
|
+
courseId: d,
|
|
874
874
|
pageSize: 100
|
|
875
|
-
}), { mutate:
|
|
875
|
+
}), { mutate: B } = jt(a), { mutateAsync: O } = zt(a), { mutate: y } = Gt(a), S = K([]), [R, I] = j([]), [D, P] = j(null), [_, k] = j(""), [W, X] = j(null), [$, U] = j(!1);
|
|
876
876
|
V(() => {
|
|
877
877
|
const A = t.current;
|
|
878
878
|
if (!A) return;
|
|
879
|
-
const
|
|
880
|
-
if (
|
|
881
|
-
|
|
879
|
+
const f = A.closest(".user_content") ?? A;
|
|
880
|
+
if (f.classList.contains("enhanced")) {
|
|
881
|
+
U(!0);
|
|
882
882
|
return;
|
|
883
883
|
}
|
|
884
|
-
const
|
|
885
|
-
for (const
|
|
886
|
-
if (
|
|
887
|
-
|
|
884
|
+
const w = new MutationObserver((F) => {
|
|
885
|
+
for (const H of F)
|
|
886
|
+
if (H.type === "attributes" && H.attributeName === "class" && H.target.classList.contains("enhanced")) {
|
|
887
|
+
U(!0), w.disconnect();
|
|
888
888
|
return;
|
|
889
889
|
}
|
|
890
890
|
});
|
|
891
|
-
return
|
|
891
|
+
return w.observe(f, { attributes: !0, attributeFilter: ["class"] }), () => w.disconnect();
|
|
892
892
|
}, [t]);
|
|
893
|
-
const
|
|
894
|
-
|
|
893
|
+
const q = Y(() => {
|
|
894
|
+
X(null), P(null), k("");
|
|
895
895
|
}, []);
|
|
896
896
|
V(() => {
|
|
897
|
-
if (
|
|
898
|
-
let
|
|
899
|
-
const
|
|
900
|
-
|
|
897
|
+
if (!$ || !t.current) return;
|
|
898
|
+
let f = null;
|
|
899
|
+
const w = () => {
|
|
900
|
+
f && clearTimeout(f), f = setTimeout(() => {
|
|
901
901
|
var _e;
|
|
902
|
-
const
|
|
903
|
-
if (!(
|
|
904
|
-
const re =
|
|
902
|
+
const C = window.getSelection(), M = t.current;
|
|
903
|
+
if (!(C != null && C.rangeCount) || !M) return;
|
|
904
|
+
const re = C.toString().trim();
|
|
905
905
|
if (re === "") return;
|
|
906
|
-
const se =
|
|
907
|
-
if (!
|
|
908
|
-
const
|
|
909
|
-
|
|
906
|
+
const se = C.getRangeAt(0);
|
|
907
|
+
if (!M.contains(se.commonAncestorContainer)) return;
|
|
908
|
+
const Pe = (_e = ne.fromRange(M, se)) == null ? void 0 : _e.toSelector();
|
|
909
|
+
Pe && !Dt(Pe, R) && (P(se.cloneRange()), k(re), X(Lt(se)));
|
|
910
910
|
}, n);
|
|
911
|
-
}, F = (
|
|
912
|
-
if (!(
|
|
913
|
-
const
|
|
914
|
-
|
|
915
|
-
},
|
|
916
|
-
|
|
917
|
-
},
|
|
918
|
-
|
|
911
|
+
}, F = (C) => {
|
|
912
|
+
if (!(C.target instanceof Node)) return;
|
|
913
|
+
const M = document.getElementById(be);
|
|
914
|
+
M != null && M.contains(C.target) ? (C.preventDefault(), C.stopImmediatePropagation()) : q();
|
|
915
|
+
}, H = () => {
|
|
916
|
+
q();
|
|
917
|
+
}, L = (C) => {
|
|
918
|
+
C.key === "Escape" && q();
|
|
919
919
|
};
|
|
920
|
-
return document.addEventListener("selectionchange",
|
|
921
|
-
|
|
920
|
+
return document.addEventListener("selectionchange", w), document.addEventListener("mousedown", F), document.addEventListener("touchstart", F), document.addEventListener("keydown", L), window.addEventListener("scroll", H, !0), () => {
|
|
921
|
+
f && clearTimeout(f), document.removeEventListener("selectionchange", w), document.removeEventListener("mousedown", F), document.removeEventListener("touchstart", F), document.removeEventListener("keydown", L), window.removeEventListener("scroll", H, !0);
|
|
922
922
|
};
|
|
923
|
-
}, [
|
|
923
|
+
}, [$, R, n, t, q]);
|
|
924
924
|
const Q = Y(
|
|
925
925
|
(A) => {
|
|
926
|
-
var
|
|
927
|
-
const
|
|
928
|
-
if (!
|
|
929
|
-
const { highlightData:
|
|
930
|
-
if (
|
|
931
|
-
const re = F[0] ===
|
|
932
|
-
id:
|
|
933
|
-
selectedNoteId:
|
|
926
|
+
var M;
|
|
927
|
+
const f = t.current;
|
|
928
|
+
if (!f || !A.highlightData) return null;
|
|
929
|
+
const { highlightData: w, reaction: F, id: H } = A, { range: L } = w, C = L && ((M = oe.fromSelector(f, L)) == null ? void 0 : M.toRange());
|
|
930
|
+
if (C) {
|
|
931
|
+
const re = F[0] === x.IMPORTANT ? N.important : N.unclear, se = {
|
|
932
|
+
id: H,
|
|
933
|
+
selectedNoteId: c,
|
|
934
934
|
type: F[0],
|
|
935
|
-
isTrayOpen:
|
|
936
|
-
labelPrefix: `${
|
|
935
|
+
isTrayOpen: E,
|
|
936
|
+
labelPrefix: `${N.notebookNote} (${re})`,
|
|
937
937
|
popupId: tt,
|
|
938
938
|
onClick: () => {
|
|
939
|
-
|
|
939
|
+
h(H), b();
|
|
940
940
|
}
|
|
941
941
|
};
|
|
942
|
-
return
|
|
942
|
+
return Ht(C, se, e), w.textPosition;
|
|
943
943
|
}
|
|
944
944
|
return null;
|
|
945
945
|
},
|
|
946
|
-
[t,
|
|
946
|
+
[t, c, E, e, N, h, b]
|
|
947
947
|
);
|
|
948
948
|
V(() => {
|
|
949
|
-
if (
|
|
950
|
-
const A = t.current,
|
|
951
|
-
if (
|
|
952
|
-
if (
|
|
953
|
-
for (const
|
|
954
|
-
Ue(
|
|
955
|
-
|
|
949
|
+
if (!$ || !p || !t.current) return;
|
|
950
|
+
const A = t.current, f = p.notes, w = /* @__PURE__ */ new Set(), F = [], H = [];
|
|
951
|
+
if (f.length === 0) {
|
|
952
|
+
if (S.current.length > 0) {
|
|
953
|
+
for (const L of S.current)
|
|
954
|
+
Ue(L, A);
|
|
955
|
+
S.current = [], I([]);
|
|
956
956
|
}
|
|
957
957
|
return;
|
|
958
958
|
}
|
|
959
|
-
if (
|
|
960
|
-
const { notesForUpdate:
|
|
959
|
+
if (g && f[0].highlightData.pageLastModifiedAt !== g) {
|
|
960
|
+
const { notesForUpdate: L, noteIdsForDelete: C } = Rt(
|
|
961
961
|
A,
|
|
962
|
-
|
|
963
|
-
|
|
962
|
+
f,
|
|
963
|
+
g
|
|
964
964
|
);
|
|
965
|
-
for (const
|
|
966
|
-
|
|
967
|
-
for (const
|
|
968
|
-
|
|
965
|
+
for (const M of L)
|
|
966
|
+
O({ id: M.id, input: M }).catch((re) => r == null ? void 0 : r(re));
|
|
967
|
+
for (const M of C)
|
|
968
|
+
y(M, { onError: s });
|
|
969
969
|
} else {
|
|
970
|
-
for (const
|
|
971
|
-
const
|
|
972
|
-
|
|
970
|
+
for (const L of f) {
|
|
971
|
+
const C = Q(L);
|
|
972
|
+
w.add(L.id), C && (F.push(L), H.push(C));
|
|
973
973
|
}
|
|
974
|
-
for (const
|
|
975
|
-
|
|
976
|
-
|
|
974
|
+
for (const L of S.current)
|
|
975
|
+
w.has(L.id) || Ue(L, A);
|
|
976
|
+
I(H), S.current = F, c && At(c);
|
|
977
977
|
}
|
|
978
978
|
}, [
|
|
979
|
-
|
|
980
|
-
|
|
979
|
+
$,
|
|
980
|
+
p,
|
|
981
981
|
Q,
|
|
982
|
-
|
|
982
|
+
g,
|
|
983
983
|
t,
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
984
|
+
O,
|
|
985
|
+
y,
|
|
986
|
+
c
|
|
987
987
|
]);
|
|
988
988
|
const ue = (A) => {
|
|
989
|
-
const
|
|
990
|
-
if (!
|
|
991
|
-
const
|
|
992
|
-
|
|
989
|
+
const f = t.current;
|
|
990
|
+
if (!D || !f) return;
|
|
991
|
+
const w = oe.fromRange(f, D), F = ne.fromRange(f, D);
|
|
992
|
+
B(
|
|
993
993
|
{
|
|
994
|
-
courseId:
|
|
994
|
+
courseId: d,
|
|
995
995
|
objectId: l,
|
|
996
996
|
objectType: m,
|
|
997
997
|
userText: "",
|
|
998
998
|
reaction: [A],
|
|
999
999
|
highlightData: {
|
|
1000
|
-
selectedText:
|
|
1000
|
+
selectedText: _,
|
|
1001
1001
|
textPosition: (F == null ? void 0 : F.toSelector()) ?? null,
|
|
1002
|
-
range:
|
|
1003
|
-
pageLastModifiedAt:
|
|
1002
|
+
range: w.toSelector(),
|
|
1003
|
+
pageLastModifiedAt: g ?? ""
|
|
1004
1004
|
}
|
|
1005
1005
|
},
|
|
1006
1006
|
{
|
|
1007
|
-
onSuccess: (
|
|
1008
|
-
var
|
|
1009
|
-
const
|
|
1010
|
-
|
|
1007
|
+
onSuccess: (H) => {
|
|
1008
|
+
var C;
|
|
1009
|
+
const L = H.id;
|
|
1010
|
+
q(), (C = window.getSelection()) == null || C.removeAllRanges(), h(L), b();
|
|
1011
1011
|
},
|
|
1012
1012
|
onError: o
|
|
1013
1013
|
}
|
|
1014
1014
|
);
|
|
1015
1015
|
};
|
|
1016
|
-
return !
|
|
1016
|
+
return !D || !W ? null : st(
|
|
1017
1017
|
/* @__PURE__ */ i(
|
|
1018
1018
|
"div",
|
|
1019
1019
|
{
|
|
@@ -1022,33 +1022,33 @@ function fo({
|
|
|
1022
1022
|
style: {
|
|
1023
1023
|
position: "fixed",
|
|
1024
1024
|
zIndex: 100,
|
|
1025
|
-
top:
|
|
1026
|
-
left:
|
|
1025
|
+
top: W.top,
|
|
1026
|
+
left: W.left,
|
|
1027
1027
|
whiteSpace: "nowrap"
|
|
1028
1028
|
},
|
|
1029
1029
|
onBlur: (A) => {
|
|
1030
|
-
const
|
|
1031
|
-
|
|
1030
|
+
const f = document.getElementById(be);
|
|
1031
|
+
f != null && f.contains(A.relatedTarget) || q();
|
|
1032
1032
|
},
|
|
1033
|
-
children: /* @__PURE__ */ i(
|
|
1033
|
+
children: /* @__PURE__ */ i(Ln, { onSelectReaction: ue })
|
|
1034
1034
|
}
|
|
1035
1035
|
),
|
|
1036
1036
|
document.body
|
|
1037
1037
|
);
|
|
1038
1038
|
}
|
|
1039
1039
|
const Dn = (t, e) => ({
|
|
1040
|
-
backgroundColor: t ===
|
|
1041
|
-
underlineColor: t ===
|
|
1042
|
-
underlineStyle: t ===
|
|
1043
|
-
}),
|
|
1040
|
+
backgroundColor: t === x.IMPORTANT ? e.colors.importantBackground : e.colors.confusingBackground,
|
|
1041
|
+
underlineColor: t === x.IMPORTANT ? e.colors.importantUnderline : e.colors.confusingUnderline,
|
|
1042
|
+
underlineStyle: t === x.IMPORTANT ? "solid" : "dashed"
|
|
1043
|
+
}), Ie = ({
|
|
1044
1044
|
children: t,
|
|
1045
|
-
type: e =
|
|
1045
|
+
type: e = x.IMPORTANT,
|
|
1046
1046
|
isCardActive: n = !0,
|
|
1047
1047
|
theme: o
|
|
1048
1048
|
}) => {
|
|
1049
1049
|
const r = Dn(e, o), a = {
|
|
1050
1050
|
position: "relative",
|
|
1051
|
-
backgroundColor: n ? r.backgroundColor :
|
|
1051
|
+
backgroundColor: n ? r.backgroundColor : Le(r.backgroundColor, 0.5),
|
|
1052
1052
|
textDecorationLine: "underline",
|
|
1053
1053
|
textDecorationStyle: r.underlineStyle,
|
|
1054
1054
|
textDecorationColor: r.underlineColor,
|
|
@@ -1059,11 +1059,11 @@ const Dn = (t, e) => ({
|
|
|
1059
1059
|
return /* @__PURE__ */ i("span", { "data-note-highlight": "true", style: a, children: t });
|
|
1060
1060
|
}, nt = () => {
|
|
1061
1061
|
const { translations: t } = Z();
|
|
1062
|
-
return /* @__PURE__ */
|
|
1062
|
+
return /* @__PURE__ */ T(v, { gap: "xx-small", alignItems: "start", as: "div", children: [
|
|
1063
1063
|
/* @__PURE__ */ i(v.Item, { as: "div", children: /* @__PURE__ */ i(dt, { color: "error" }) }),
|
|
1064
1064
|
/* @__PURE__ */ i(v.Item, { padding: "xxx-small none", shouldShrink: !0, children: /* @__PURE__ */ i(Te, { maxLines: 3, children: t.highlightUnavailable }) })
|
|
1065
1065
|
] });
|
|
1066
|
-
}, Pn = 100,
|
|
1066
|
+
}, Pn = 100, _n = {
|
|
1067
1067
|
filter: null,
|
|
1068
1068
|
courseFilter: null,
|
|
1069
1069
|
currentPage: 1,
|
|
@@ -1073,7 +1073,7 @@ function ge(t, e) {
|
|
|
1073
1073
|
const n = typeof e == "number" ? Math.min(e, t) : t;
|
|
1074
1074
|
return Math.max(1, n);
|
|
1075
1075
|
}
|
|
1076
|
-
function
|
|
1076
|
+
function Fn(t, e) {
|
|
1077
1077
|
switch (e.type) {
|
|
1078
1078
|
case "SET_FILTER":
|
|
1079
1079
|
return { ...t, filter: e.payload, currentPage: 1 };
|
|
@@ -1097,7 +1097,7 @@ function _n(t, e) {
|
|
|
1097
1097
|
return t;
|
|
1098
1098
|
}
|
|
1099
1099
|
}
|
|
1100
|
-
function
|
|
1100
|
+
function go({
|
|
1101
1101
|
api: t,
|
|
1102
1102
|
courseId: e,
|
|
1103
1103
|
enableCourseFilter: n = !1,
|
|
@@ -1105,82 +1105,82 @@ function mo({
|
|
|
1105
1105
|
pageSize: r = 16,
|
|
1106
1106
|
focusNoteId: s
|
|
1107
1107
|
}) {
|
|
1108
|
-
const [a, l] = We(
|
|
1108
|
+
const [a, l] = We(Fn, _n), { filter: m, courseFilter: d, currentPage: g, totalPages: c } = a;
|
|
1109
1109
|
V(() => {
|
|
1110
1110
|
l({ type: "SET_PAGE", payload: 1 });
|
|
1111
1111
|
}, [r]);
|
|
1112
|
-
const
|
|
1113
|
-
...
|
|
1112
|
+
const E = n ? d : e, h = (g - 1) * r, b = {
|
|
1113
|
+
...E ? { courseId: E } : {},
|
|
1114
1114
|
...m ? { reactions: [m] } : {},
|
|
1115
1115
|
...o ? { learningObject: o } : {}
|
|
1116
|
-
}, { data:
|
|
1116
|
+
}, { data: N, isLoading: p, isError: B } = ve({
|
|
1117
1117
|
api: t,
|
|
1118
|
-
filter:
|
|
1119
|
-
offset:
|
|
1118
|
+
filter: b,
|
|
1119
|
+
offset: h,
|
|
1120
1120
|
pageSize: r
|
|
1121
|
-
}), { data:
|
|
1121
|
+
}), { data: O } = ve({
|
|
1122
1122
|
api: t,
|
|
1123
|
-
filter:
|
|
1123
|
+
filter: b,
|
|
1124
1124
|
offset: 0,
|
|
1125
1125
|
pageSize: Pn,
|
|
1126
1126
|
enabled: !!s
|
|
1127
|
-
}),
|
|
1127
|
+
}), y = K(null);
|
|
1128
1128
|
V(() => {
|
|
1129
1129
|
if (!s) {
|
|
1130
|
-
|
|
1130
|
+
y.current = null;
|
|
1131
1131
|
return;
|
|
1132
1132
|
}
|
|
1133
|
-
if (
|
|
1134
|
-
const
|
|
1135
|
-
if (
|
|
1136
|
-
|
|
1137
|
-
const
|
|
1138
|
-
|
|
1139
|
-
}, [s,
|
|
1140
|
-
const
|
|
1133
|
+
if (y.current === s) return;
|
|
1134
|
+
const U = (O == null ? void 0 : O.notes.findIndex((Q) => Q.id === s)) ?? -1;
|
|
1135
|
+
if (U === -1) return;
|
|
1136
|
+
y.current = s;
|
|
1137
|
+
const q = Math.floor(U / r) + 1;
|
|
1138
|
+
q !== g && l({ type: "FOCUS_PAGE", payload: q });
|
|
1139
|
+
}, [s, O, r, g]);
|
|
1140
|
+
const S = (N == null ? void 0 : N.notes) ?? [], R = N == null ? void 0 : N.pageInfo, I = (R == null ? void 0 : R.totalNrOfPages) ?? void 0, D = s && O ? Math.ceil(O.notes.length / r) : void 0, P = I === void 0 && D === void 0 ? void 0 : Math.max(I ?? 0, D ?? 0);
|
|
1141
1141
|
V(() => {
|
|
1142
|
-
l({ type: "SET_TOTAL_PAGES", payload:
|
|
1143
|
-
}, [
|
|
1144
|
-
const
|
|
1145
|
-
l({ type: "SET_PAGE", payload:
|
|
1146
|
-
}, []),
|
|
1142
|
+
l({ type: "SET_TOTAL_PAGES", payload: P });
|
|
1143
|
+
}, [P]);
|
|
1144
|
+
const _ = Y((U) => {
|
|
1145
|
+
l({ type: "SET_PAGE", payload: U });
|
|
1146
|
+
}, []), k = Y(() => {
|
|
1147
1147
|
l({
|
|
1148
1148
|
type: "INCREMENT_PAGE"
|
|
1149
1149
|
/* IncrementPage */
|
|
1150
1150
|
});
|
|
1151
|
-
}, []),
|
|
1151
|
+
}, []), W = Y(() => {
|
|
1152
1152
|
l({
|
|
1153
1153
|
type: "DECREMENT_PAGE"
|
|
1154
1154
|
/* DecrementPage */
|
|
1155
1155
|
});
|
|
1156
|
-
}, []),
|
|
1157
|
-
l({ type: "SET_FILTER", payload:
|
|
1158
|
-
}, []),
|
|
1159
|
-
l({ type: "SET_COURSE_FILTER", payload:
|
|
1156
|
+
}, []), X = Y((U) => {
|
|
1157
|
+
l({ type: "SET_FILTER", payload: U });
|
|
1158
|
+
}, []), $ = Y((U) => {
|
|
1159
|
+
l({ type: "SET_COURSE_FILTER", payload: U });
|
|
1160
1160
|
}, []);
|
|
1161
1161
|
return {
|
|
1162
|
-
notes:
|
|
1163
|
-
pageInfo:
|
|
1164
|
-
isLoading:
|
|
1165
|
-
isError:
|
|
1162
|
+
notes: S,
|
|
1163
|
+
pageInfo: R,
|
|
1164
|
+
isLoading: p,
|
|
1165
|
+
isError: B,
|
|
1166
1166
|
filter: m,
|
|
1167
|
-
courseFilter:
|
|
1168
|
-
currentPage:
|
|
1169
|
-
totalPages:
|
|
1170
|
-
setFilter:
|
|
1171
|
-
setCourseFilter:
|
|
1172
|
-
setPage:
|
|
1173
|
-
fetchNextPage:
|
|
1174
|
-
fetchPreviousPage:
|
|
1167
|
+
courseFilter: d,
|
|
1168
|
+
currentPage: g,
|
|
1169
|
+
totalPages: c,
|
|
1170
|
+
setFilter: X,
|
|
1171
|
+
setCourseFilter: $,
|
|
1172
|
+
setPage: _,
|
|
1173
|
+
fetchNextPage: k,
|
|
1174
|
+
fetchPreviousPage: W
|
|
1175
1175
|
};
|
|
1176
1176
|
}
|
|
1177
1177
|
const Ee = "all";
|
|
1178
|
-
function
|
|
1178
|
+
function ho({ filter: t, setFilter: e }) {
|
|
1179
1179
|
const { translations: n } = Z(), o = de(
|
|
1180
1180
|
() => [
|
|
1181
1181
|
{ label: n.allNotes, value: Ee },
|
|
1182
|
-
{ label: n.important, value:
|
|
1183
|
-
{ label: n.unclear, value:
|
|
1182
|
+
{ label: n.important, value: x.IMPORTANT },
|
|
1183
|
+
{ label: n.unclear, value: x.CONFUSING }
|
|
1184
1184
|
],
|
|
1185
1185
|
[n]
|
|
1186
1186
|
), r = Y(
|
|
@@ -1206,62 +1206,62 @@ function go({ filter: t, setFilter: e }) {
|
|
|
1206
1206
|
handleReactionFilterChange: r
|
|
1207
1207
|
};
|
|
1208
1208
|
}
|
|
1209
|
-
const
|
|
1209
|
+
const Mn = ({ hasActiveFilter: t = !1 }) => {
|
|
1210
1210
|
const { translations: e } = Z(), n = t ? e.nothingHereYet : e.emptyStateHeading, o = t ? e.adjustFiltersOrCreate : e.emptyStateDescription;
|
|
1211
|
-
return /* @__PURE__ */ i(
|
|
1211
|
+
return /* @__PURE__ */ i(z, { as: "div", textAlign: "center", children: /* @__PURE__ */ T(v, { direction: "column", alignItems: "center", gap: "small", children: [
|
|
1212
1212
|
!t && /* @__PURE__ */ i(ut, { size: "medium" }),
|
|
1213
1213
|
/* @__PURE__ */ i(pe, { level: "h3", children: n }),
|
|
1214
1214
|
/* @__PURE__ */ i(J, { color: "secondary", children: o })
|
|
1215
1215
|
] }) });
|
|
1216
|
-
},
|
|
1217
|
-
[
|
|
1216
|
+
}, Bn = {
|
|
1217
|
+
[x.IMPORTANT]: {
|
|
1218
1218
|
color: "success",
|
|
1219
1219
|
translationKey: "important",
|
|
1220
1220
|
icon: /* @__PURE__ */ i(we, { size: "x-small" })
|
|
1221
1221
|
},
|
|
1222
|
-
[
|
|
1222
|
+
[x.CONFUSING]: {
|
|
1223
1223
|
color: "danger",
|
|
1224
1224
|
translationKey: "unclear",
|
|
1225
1225
|
icon: /* @__PURE__ */ i(ke, { size: "x-small" })
|
|
1226
1226
|
}
|
|
1227
1227
|
}, ot = ({ type: t, onTypeChange: e, renderAsMenuTrigger: n = !1 }) => {
|
|
1228
|
-
const { translations: o } = Z(), r =
|
|
1229
|
-
(
|
|
1230
|
-
e == null || e(
|
|
1228
|
+
const { translations: o } = Z(), r = Bn[t], s = o[r.translationKey], [a, l] = j(!1), m = K(null), d = K(null), g = Y(
|
|
1229
|
+
(c) => {
|
|
1230
|
+
e == null || e(c), l(!1);
|
|
1231
1231
|
},
|
|
1232
1232
|
[e]
|
|
1233
1233
|
);
|
|
1234
1234
|
return V(() => {
|
|
1235
1235
|
if (!a) return;
|
|
1236
|
-
const
|
|
1237
|
-
|
|
1238
|
-
},
|
|
1239
|
-
|
|
1236
|
+
const c = (h) => {
|
|
1237
|
+
h.key === "Escape" && h.stopPropagation();
|
|
1238
|
+
}, E = (h) => {
|
|
1239
|
+
h.key === "Escape" && (h.stopPropagation(), l(!1));
|
|
1240
1240
|
};
|
|
1241
|
-
return document.addEventListener("keydown",
|
|
1242
|
-
document.removeEventListener("keydown",
|
|
1241
|
+
return document.addEventListener("keydown", c, !0), document.addEventListener("keyup", E, !0), () => {
|
|
1242
|
+
document.removeEventListener("keydown", c, !0), document.removeEventListener("keyup", E, !0);
|
|
1243
1243
|
};
|
|
1244
|
-
}, [a]), n && e ? /* @__PURE__ */
|
|
1244
|
+
}, [a]), n && e ? /* @__PURE__ */ T(
|
|
1245
1245
|
ie,
|
|
1246
1246
|
{
|
|
1247
1247
|
placement: "bottom start",
|
|
1248
1248
|
show: a,
|
|
1249
|
-
onToggle: (
|
|
1249
|
+
onToggle: (c) => l(c),
|
|
1250
1250
|
shouldHideOnSelect: !0,
|
|
1251
1251
|
shouldFocusTriggerOnClose: !0,
|
|
1252
1252
|
trigger: /* @__PURE__ */ i(Me, { color: r.color, renderIcon: r.icon, children: s }),
|
|
1253
1253
|
children: [
|
|
1254
|
-
/* @__PURE__ */
|
|
1254
|
+
/* @__PURE__ */ T(ie.Item, { ref: m, onClick: () => g(x.CONFUSING), children: [
|
|
1255
1255
|
/* @__PURE__ */ i(ke, { size: "x-small" }),
|
|
1256
1256
|
` ${o.markUnclear}`
|
|
1257
1257
|
] }),
|
|
1258
|
-
/* @__PURE__ */
|
|
1258
|
+
/* @__PURE__ */ T(ie.Item, { ref: d, onClick: () => g(x.IMPORTANT), children: [
|
|
1259
1259
|
/* @__PURE__ */ i(we, { size: "x-small" }),
|
|
1260
1260
|
` ${o.markImportant}`
|
|
1261
1261
|
] })
|
|
1262
1262
|
]
|
|
1263
1263
|
}
|
|
1264
|
-
) : /* @__PURE__ */ i(
|
|
1264
|
+
) : /* @__PURE__ */ i(z, { display: "inline-flex", children: /* @__PURE__ */ i(Me, { color: r.color, renderIcon: r.icon, children: s }) });
|
|
1265
1265
|
};
|
|
1266
1266
|
function je(t, e) {
|
|
1267
1267
|
return (t instanceof Date ? t : new Date(t)).toLocaleString(e, {
|
|
@@ -1270,7 +1270,7 @@ function je(t, e) {
|
|
|
1270
1270
|
day: "numeric"
|
|
1271
1271
|
});
|
|
1272
1272
|
}
|
|
1273
|
-
const
|
|
1273
|
+
const Hn = ({
|
|
1274
1274
|
noteId: t,
|
|
1275
1275
|
date: e,
|
|
1276
1276
|
highlight: n,
|
|
@@ -1280,89 +1280,89 @@ const Bn = ({
|
|
|
1280
1280
|
onDelete: a,
|
|
1281
1281
|
onSaveNote: l,
|
|
1282
1282
|
onTypeChange: m,
|
|
1283
|
-
isActive:
|
|
1284
|
-
isPanelView:
|
|
1285
|
-
courseName:
|
|
1286
|
-
locale:
|
|
1287
|
-
highlightTheme:
|
|
1288
|
-
renderLink:
|
|
1289
|
-
href:
|
|
1283
|
+
isActive: d,
|
|
1284
|
+
isPanelView: g = !1,
|
|
1285
|
+
courseName: c,
|
|
1286
|
+
locale: E,
|
|
1287
|
+
highlightTheme: h,
|
|
1288
|
+
renderLink: b,
|
|
1289
|
+
href: N
|
|
1290
1290
|
}) => {
|
|
1291
|
-
const { translations:
|
|
1292
|
-
|
|
1293
|
-
}, []),
|
|
1291
|
+
const { translations: p } = Z(), [B, O] = j(!1), [y, S] = j(!1), [R, I] = j(o || ""), [D, P] = j(!1), _ = K(null), k = Y((f) => {
|
|
1292
|
+
_.current = f;
|
|
1293
|
+
}, []), W = K(null), X = K(null), $ = K(!1);
|
|
1294
1294
|
V(() => {
|
|
1295
|
-
var
|
|
1296
|
-
|
|
1297
|
-
}, [
|
|
1298
|
-
var
|
|
1299
|
-
|
|
1300
|
-
}, [
|
|
1301
|
-
const
|
|
1302
|
-
|
|
1303
|
-
}, Q = [
|
|
1304
|
-
n && Q.push(n), o && Q.push(o), e && Q.push(je(e,
|
|
1305
|
-
const ue = Q.join(", "), A = /* @__PURE__ */
|
|
1306
|
-
|
|
1295
|
+
var f, w;
|
|
1296
|
+
d && ((f = _.current) == null || f.scrollIntoView({ behavior: "smooth", block: "nearest" }), (w = _.current) == null || w.focus());
|
|
1297
|
+
}, [d]), V(() => {
|
|
1298
|
+
var f, w;
|
|
1299
|
+
y ? ($.current = !0, (f = W.current) == null || f.focus()) : $.current && ($.current = !1, (w = X.current) == null || w.focus());
|
|
1300
|
+
}, [y]);
|
|
1301
|
+
const U = r === x.IMPORTANT ? p.important : p.unclear, q = (f) => {
|
|
1302
|
+
f.key === "Enter" && (f.preventDefault(), s == null || s());
|
|
1303
|
+
}, Q = [U, p.note];
|
|
1304
|
+
n && Q.push(n), o && Q.push(o), e && Q.push(je(e, E)), c && Q.push(c);
|
|
1305
|
+
const ue = Q.join(", "), A = /* @__PURE__ */ T(
|
|
1306
|
+
z,
|
|
1307
1307
|
{
|
|
1308
1308
|
as: "div",
|
|
1309
1309
|
borderWidth: "small",
|
|
1310
1310
|
borderRadius: "medium",
|
|
1311
1311
|
padding: "small",
|
|
1312
1312
|
position: "relative",
|
|
1313
|
-
role:
|
|
1314
|
-
"aria-label":
|
|
1315
|
-
"aria-pressed":
|
|
1316
|
-
tabIndex:
|
|
1313
|
+
role: N || y ? void 0 : "button",
|
|
1314
|
+
"aria-label": N ? void 0 : ue,
|
|
1315
|
+
"aria-pressed": N || y ? void 0 : d,
|
|
1316
|
+
tabIndex: N || d ? -1 : 0,
|
|
1317
1317
|
"data-testid": `note-card-${t}`,
|
|
1318
|
-
elementRef:
|
|
1319
|
-
onClick:
|
|
1320
|
-
onMouseEnter: () =>
|
|
1321
|
-
onMouseLeave: () =>
|
|
1322
|
-
onKeyDown:
|
|
1323
|
-
cursor:
|
|
1318
|
+
elementRef: k,
|
|
1319
|
+
onClick: d ? void 0 : s,
|
|
1320
|
+
onMouseEnter: () => O(!0),
|
|
1321
|
+
onMouseLeave: () => O(!1),
|
|
1322
|
+
onKeyDown: d ? void 0 : q,
|
|
1323
|
+
cursor: y ? "default" : "pointer",
|
|
1324
1324
|
children: [
|
|
1325
|
-
/* @__PURE__ */
|
|
1325
|
+
/* @__PURE__ */ T(v, { direction: "column", gap: "small", children: [
|
|
1326
1326
|
/* @__PURE__ */ i(
|
|
1327
1327
|
ot,
|
|
1328
1328
|
{
|
|
1329
1329
|
type: r,
|
|
1330
|
-
onTypeChange:
|
|
1331
|
-
renderAsMenuTrigger:
|
|
1330
|
+
onTypeChange: g && m ? (f) => m(t, f) : void 0,
|
|
1331
|
+
renderAsMenuTrigger: g && !!m && !!d
|
|
1332
1332
|
}
|
|
1333
1333
|
),
|
|
1334
|
-
n ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children: /* @__PURE__ */ i(J, { children:
|
|
1335
|
-
|
|
1334
|
+
n ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children: /* @__PURE__ */ i(J, { children: d && g ? /* @__PURE__ */ i(
|
|
1335
|
+
Ie,
|
|
1336
1336
|
{
|
|
1337
1337
|
type: r,
|
|
1338
|
-
isCardActive: !!
|
|
1339
|
-
theme:
|
|
1338
|
+
isCardActive: !!d || B,
|
|
1339
|
+
theme: h,
|
|
1340
1340
|
children: n
|
|
1341
1341
|
}
|
|
1342
1342
|
) : /* @__PURE__ */ i(Te, { maxLines: 3, truncate: "word", children: /* @__PURE__ */ i(
|
|
1343
|
-
|
|
1343
|
+
Ie,
|
|
1344
1344
|
{
|
|
1345
1345
|
type: r,
|
|
1346
|
-
isCardActive: !!
|
|
1347
|
-
theme:
|
|
1346
|
+
isCardActive: !!d || B,
|
|
1347
|
+
theme: h,
|
|
1348
1348
|
children: n
|
|
1349
1349
|
}
|
|
1350
1350
|
) }) }) }) : /* @__PURE__ */ i(nt, {}),
|
|
1351
|
-
/* @__PURE__ */
|
|
1352
|
-
|
|
1351
|
+
/* @__PURE__ */ T(v, { direction: "column", gap: "small", children: [
|
|
1352
|
+
y && g ? /* @__PURE__ */ T(v, { direction: "column", gap: "x-small", children: [
|
|
1353
1353
|
/* @__PURE__ */ i(
|
|
1354
1354
|
qe,
|
|
1355
1355
|
{
|
|
1356
|
-
label: /* @__PURE__ */ i(mt, { children:
|
|
1357
|
-
value:
|
|
1358
|
-
onChange: (
|
|
1359
|
-
placeholder:
|
|
1360
|
-
textareaRef: (
|
|
1361
|
-
|
|
1356
|
+
label: /* @__PURE__ */ i(mt, { children: p.editNote }),
|
|
1357
|
+
value: R,
|
|
1358
|
+
onChange: (f) => I(f.target.value),
|
|
1359
|
+
placeholder: p.addNoteOptional,
|
|
1360
|
+
textareaRef: (f) => {
|
|
1361
|
+
W.current = f;
|
|
1362
1362
|
}
|
|
1363
1363
|
}
|
|
1364
1364
|
),
|
|
1365
|
-
/* @__PURE__ */
|
|
1365
|
+
/* @__PURE__ */ T(v, { gap: "xx-small", children: [
|
|
1366
1366
|
/* @__PURE__ */ i(v.Item, { shouldGrow: !0, children: /* @__PURE__ */ i(
|
|
1367
1367
|
ee,
|
|
1368
1368
|
{
|
|
@@ -1370,9 +1370,9 @@ const Bn = ({
|
|
|
1370
1370
|
size: "small",
|
|
1371
1371
|
"data-testid": `note-card-${t}-cancel`,
|
|
1372
1372
|
onClick: () => {
|
|
1373
|
-
|
|
1373
|
+
I(o || ""), S(!1);
|
|
1374
1374
|
},
|
|
1375
|
-
children:
|
|
1375
|
+
children: p.cancel
|
|
1376
1376
|
}
|
|
1377
1377
|
) }),
|
|
1378
1378
|
/* @__PURE__ */ i(v.Item, { shouldGrow: !0, children: /* @__PURE__ */ i(
|
|
@@ -1383,13 +1383,13 @@ const Bn = ({
|
|
|
1383
1383
|
size: "small",
|
|
1384
1384
|
"data-testid": `note-card-${t}-save`,
|
|
1385
1385
|
onClick: () => {
|
|
1386
|
-
l == null || l(t,
|
|
1386
|
+
l == null || l(t, R.trim()), S(!1);
|
|
1387
1387
|
},
|
|
1388
|
-
children:
|
|
1388
|
+
children: p.save
|
|
1389
1389
|
}
|
|
1390
1390
|
) })
|
|
1391
1391
|
] })
|
|
1392
|
-
] }) : o ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children:
|
|
1392
|
+
] }) : o ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children: d && g ? /* @__PURE__ */ T(J, { children: [
|
|
1393
1393
|
o,
|
|
1394
1394
|
" ",
|
|
1395
1395
|
/* @__PURE__ */ i(
|
|
@@ -1399,19 +1399,19 @@ const Bn = ({
|
|
|
1399
1399
|
withBackground: !1,
|
|
1400
1400
|
withBorder: !1,
|
|
1401
1401
|
margin: "0 0 0 xxx-small",
|
|
1402
|
-
screenReaderLabel:
|
|
1402
|
+
screenReaderLabel: p.editNote,
|
|
1403
1403
|
"data-testid": `note-card-${t}-edit`,
|
|
1404
|
-
elementRef: (
|
|
1405
|
-
|
|
1404
|
+
elementRef: (f) => {
|
|
1405
|
+
X.current = f;
|
|
1406
1406
|
},
|
|
1407
|
-
onClick: (
|
|
1408
|
-
|
|
1407
|
+
onClick: (f) => {
|
|
1408
|
+
f.stopPropagation(), S(!0);
|
|
1409
1409
|
},
|
|
1410
1410
|
children: /* @__PURE__ */ i(Se, {})
|
|
1411
1411
|
}
|
|
1412
1412
|
)
|
|
1413
|
-
] }) : /* @__PURE__ */ i(J, { children: /* @__PURE__ */ i(Te, { maxLines: 3, truncate: "word", children: o }) }) }) :
|
|
1414
|
-
|
|
1413
|
+
] }) : /* @__PURE__ */ i(J, { children: /* @__PURE__ */ i(Te, { maxLines: 3, truncate: "word", children: o }) }) }) : g && d ? /* @__PURE__ */ i("div", { children: /* @__PURE__ */ T(J, { color: "secondary", children: [
|
|
1414
|
+
p.addNotePrompt,
|
|
1415
1415
|
" ",
|
|
1416
1416
|
/* @__PURE__ */ i(
|
|
1417
1417
|
le,
|
|
@@ -1420,41 +1420,41 @@ const Bn = ({
|
|
|
1420
1420
|
withBackground: !1,
|
|
1421
1421
|
withBorder: !1,
|
|
1422
1422
|
margin: "0 0 0 xxx-small",
|
|
1423
|
-
screenReaderLabel:
|
|
1423
|
+
screenReaderLabel: p.editNote,
|
|
1424
1424
|
"data-testid": `note-card-${t}-edit`,
|
|
1425
|
-
elementRef: (
|
|
1426
|
-
|
|
1425
|
+
elementRef: (f) => {
|
|
1426
|
+
X.current = f;
|
|
1427
1427
|
},
|
|
1428
|
-
onClick: (
|
|
1429
|
-
|
|
1428
|
+
onClick: (f) => {
|
|
1429
|
+
f.stopPropagation(), S(!0);
|
|
1430
1430
|
},
|
|
1431
1431
|
children: /* @__PURE__ */ i(Se, {})
|
|
1432
1432
|
}
|
|
1433
1433
|
)
|
|
1434
1434
|
] }) }) : null,
|
|
1435
|
-
/* @__PURE__ */
|
|
1436
|
-
/* @__PURE__ */ i(J, { size: "small", color: "secondary", children: je(e,
|
|
1437
|
-
|
|
1435
|
+
/* @__PURE__ */ T(v, { justifyItems: "space-between", alignItems: "center", children: [
|
|
1436
|
+
/* @__PURE__ */ i(J, { size: "small", color: "secondary", children: je(e, E) }),
|
|
1437
|
+
d && a && /* @__PURE__ */ i(
|
|
1438
1438
|
le,
|
|
1439
1439
|
{
|
|
1440
1440
|
size: "small",
|
|
1441
1441
|
withBackground: !1,
|
|
1442
1442
|
withBorder: !1,
|
|
1443
1443
|
color: "danger",
|
|
1444
|
-
screenReaderLabel:
|
|
1444
|
+
screenReaderLabel: p.deleteNote,
|
|
1445
1445
|
"data-testid": `note-card-${t}-delete`,
|
|
1446
|
-
onClick: (
|
|
1447
|
-
|
|
1446
|
+
onClick: (f) => {
|
|
1447
|
+
f.stopPropagation(), P(!0);
|
|
1448
1448
|
},
|
|
1449
1449
|
children: /* @__PURE__ */ i(he, {})
|
|
1450
1450
|
}
|
|
1451
1451
|
)
|
|
1452
1452
|
] }),
|
|
1453
|
-
|
|
1453
|
+
c && /* @__PURE__ */ i(J, { size: "small", color: "secondary", children: c })
|
|
1454
1454
|
] })
|
|
1455
1455
|
] }),
|
|
1456
|
-
|
|
1457
|
-
|
|
1456
|
+
D && a && /* @__PURE__ */ i(
|
|
1457
|
+
z,
|
|
1458
1458
|
{
|
|
1459
1459
|
as: "div",
|
|
1460
1460
|
background: "primary",
|
|
@@ -1466,7 +1466,7 @@ const Bn = ({
|
|
|
1466
1466
|
insetInlineStart: "0",
|
|
1467
1467
|
insetInlineEnd: "0",
|
|
1468
1468
|
stacking: "above",
|
|
1469
|
-
children: /* @__PURE__ */
|
|
1469
|
+
children: /* @__PURE__ */ T(
|
|
1470
1470
|
v,
|
|
1471
1471
|
{
|
|
1472
1472
|
direction: "column",
|
|
@@ -1483,10 +1483,10 @@ const Bn = ({
|
|
|
1483
1483
|
size: "small",
|
|
1484
1484
|
renderIcon: /* @__PURE__ */ i(he, {}),
|
|
1485
1485
|
"data-testid": `note-card-${t}-confirm-delete`,
|
|
1486
|
-
onClick: (
|
|
1487
|
-
|
|
1486
|
+
onClick: (f) => {
|
|
1487
|
+
f.stopPropagation(), a(t), P(!1);
|
|
1488
1488
|
},
|
|
1489
|
-
children:
|
|
1489
|
+
children: p.deleteNote
|
|
1490
1490
|
}
|
|
1491
1491
|
),
|
|
1492
1492
|
/* @__PURE__ */ i(
|
|
@@ -1495,10 +1495,10 @@ const Bn = ({
|
|
|
1495
1495
|
display: "block",
|
|
1496
1496
|
size: "small",
|
|
1497
1497
|
"data-testid": `note-card-${t}-cancel-delete`,
|
|
1498
|
-
onClick: (
|
|
1499
|
-
|
|
1498
|
+
onClick: (f) => {
|
|
1499
|
+
f.stopPropagation(), P(!1);
|
|
1500
1500
|
},
|
|
1501
|
-
children:
|
|
1501
|
+
children: p.cancel
|
|
1502
1502
|
}
|
|
1503
1503
|
)
|
|
1504
1504
|
]
|
|
@@ -1509,7 +1509,7 @@ const Bn = ({
|
|
|
1509
1509
|
]
|
|
1510
1510
|
}
|
|
1511
1511
|
);
|
|
1512
|
-
return
|
|
1512
|
+
return N && b ? b({ href: N, children: A, ariaLabel: ue }) : A;
|
|
1513
1513
|
};
|
|
1514
1514
|
function $n(t, e) {
|
|
1515
1515
|
const n = Array.from({ length: e }, () => []);
|
|
@@ -1517,19 +1517,19 @@ function $n(t, e) {
|
|
|
1517
1517
|
n[r % e].push(o);
|
|
1518
1518
|
}), n;
|
|
1519
1519
|
}
|
|
1520
|
-
const
|
|
1520
|
+
const Un = {
|
|
1521
1521
|
display: "flex",
|
|
1522
1522
|
gap: "1rem",
|
|
1523
1523
|
boxSizing: "border-box",
|
|
1524
1524
|
width: "100%",
|
|
1525
1525
|
alignItems: "flex-start"
|
|
1526
|
-
},
|
|
1526
|
+
}, jn = {
|
|
1527
1527
|
display: "flex",
|
|
1528
1528
|
flexDirection: "column",
|
|
1529
1529
|
gap: "1rem",
|
|
1530
1530
|
flex: 1,
|
|
1531
1531
|
minWidth: 0
|
|
1532
|
-
},
|
|
1532
|
+
}, po = ({
|
|
1533
1533
|
notes: t,
|
|
1534
1534
|
isLoading: e,
|
|
1535
1535
|
isError: n,
|
|
@@ -1539,68 +1539,68 @@ const Hn = {
|
|
|
1539
1539
|
onNoteSelect: a,
|
|
1540
1540
|
onNoteDelete: l,
|
|
1541
1541
|
onNoteSave: m,
|
|
1542
|
-
onNoteTypeChange:
|
|
1543
|
-
selectedNoteId:
|
|
1544
|
-
hasActiveFilter:
|
|
1545
|
-
columnCount:
|
|
1546
|
-
highlightTheme:
|
|
1547
|
-
locale:
|
|
1548
|
-
renderNoteLink:
|
|
1549
|
-
noteHref:
|
|
1542
|
+
onNoteTypeChange: d,
|
|
1543
|
+
selectedNoteId: g,
|
|
1544
|
+
hasActiveFilter: c = !1,
|
|
1545
|
+
columnCount: E = 1,
|
|
1546
|
+
highlightTheme: h,
|
|
1547
|
+
locale: b,
|
|
1548
|
+
renderNoteLink: N,
|
|
1549
|
+
noteHref: p
|
|
1550
1550
|
}) => {
|
|
1551
|
-
const { translations:
|
|
1552
|
-
() => $n(t,
|
|
1553
|
-
[t,
|
|
1551
|
+
const { translations: B } = Z(), O = de(
|
|
1552
|
+
() => $n(t, E),
|
|
1553
|
+
[t, E]
|
|
1554
1554
|
);
|
|
1555
1555
|
if (e)
|
|
1556
|
-
return /* @__PURE__ */ i(
|
|
1556
|
+
return /* @__PURE__ */ i(z, { as: "div", textAlign: "center", padding: "large", "data-testid": "notes-loading", children: /* @__PURE__ */ i(ht, { renderTitle: B.loadingNotes }) });
|
|
1557
1557
|
if (n)
|
|
1558
|
-
return /* @__PURE__ */ i(
|
|
1558
|
+
return /* @__PURE__ */ i(z, { as: "div", textAlign: "center", padding: "large", "data-testid": "notes-error", children: /* @__PURE__ */ i(pe, { level: "h4", children: B.failedToLoadNotes }) });
|
|
1559
1559
|
if (t.length === 0)
|
|
1560
|
-
return /* @__PURE__ */ i(
|
|
1561
|
-
const
|
|
1562
|
-
return /* @__PURE__ */
|
|
1563
|
-
/* @__PURE__ */ i("div", { style:
|
|
1560
|
+
return /* @__PURE__ */ i(z, { as: "div", padding: "large", "data-testid": "empty-notes", children: /* @__PURE__ */ i(Mn, { hasActiveFilter: c }) });
|
|
1561
|
+
const y = typeof o == "number" && typeof r == "number" && r > 1 && s !== void 0;
|
|
1562
|
+
return /* @__PURE__ */ T(rt, { children: [
|
|
1563
|
+
/* @__PURE__ */ i("div", { style: Un, "data-testid": "notes-grid", children: O.map((S, R) => (
|
|
1564
1564
|
// oxlint-disable-next-line react/no-array-index-key -- columns are positional, index is stable
|
|
1565
|
-
/* @__PURE__ */ i("div", { style:
|
|
1566
|
-
var
|
|
1565
|
+
/* @__PURE__ */ i("div", { style: jn, children: S.map((I) => {
|
|
1566
|
+
var D;
|
|
1567
1567
|
return /* @__PURE__ */ i(
|
|
1568
|
-
|
|
1568
|
+
Hn,
|
|
1569
1569
|
{
|
|
1570
|
-
noteId:
|
|
1571
|
-
date:
|
|
1572
|
-
type:
|
|
1573
|
-
highlight: (
|
|
1574
|
-
note:
|
|
1575
|
-
isActive:
|
|
1576
|
-
isPanelView: !!
|
|
1577
|
-
onClick: a ? () => a(
|
|
1578
|
-
onDelete: l ? (
|
|
1579
|
-
onSaveNote: m ? (
|
|
1580
|
-
onTypeChange:
|
|
1581
|
-
highlightTheme:
|
|
1582
|
-
locale:
|
|
1583
|
-
renderLink:
|
|
1584
|
-
href:
|
|
1570
|
+
noteId: I.id,
|
|
1571
|
+
date: I.createdAt,
|
|
1572
|
+
type: I.reaction[0] ?? x.IMPORTANT,
|
|
1573
|
+
highlight: (D = I.highlightData) == null ? void 0 : D.selectedText,
|
|
1574
|
+
note: I.userText,
|
|
1575
|
+
isActive: g === I.id,
|
|
1576
|
+
isPanelView: !!g,
|
|
1577
|
+
onClick: a ? () => a(I.id) : void 0,
|
|
1578
|
+
onDelete: l ? (P) => l(P) : void 0,
|
|
1579
|
+
onSaveNote: m ? (P, _) => m(P, _) : void 0,
|
|
1580
|
+
onTypeChange: d ? (P, _) => d(P, _) : void 0,
|
|
1581
|
+
highlightTheme: h,
|
|
1582
|
+
locale: b,
|
|
1583
|
+
renderLink: N,
|
|
1584
|
+
href: p ? p(I.id, I) : void 0
|
|
1585
1585
|
},
|
|
1586
|
-
|
|
1586
|
+
I.id
|
|
1587
1587
|
);
|
|
1588
|
-
}) },
|
|
1588
|
+
}) }, R)
|
|
1589
1589
|
)) }),
|
|
1590
|
-
|
|
1590
|
+
y && /* @__PURE__ */ i(v, { justifyItems: "center", padding: "small", "data-testid": "notes-pagination", children: /* @__PURE__ */ i(v.Item, { children: /* @__PURE__ */ i(
|
|
1591
1591
|
gt,
|
|
1592
1592
|
{
|
|
1593
1593
|
as: "nav",
|
|
1594
1594
|
variant: "input",
|
|
1595
|
-
labelNext:
|
|
1596
|
-
labelPrev:
|
|
1595
|
+
labelNext: B.nextPage,
|
|
1596
|
+
labelPrev: B.previousPage,
|
|
1597
1597
|
currentPage: o,
|
|
1598
1598
|
totalPageNumber: r,
|
|
1599
1599
|
onPageChange: s
|
|
1600
1600
|
}
|
|
1601
1601
|
) }) })
|
|
1602
1602
|
] });
|
|
1603
|
-
},
|
|
1603
|
+
}, No = ({
|
|
1604
1604
|
noteText: t,
|
|
1605
1605
|
reaction: e,
|
|
1606
1606
|
highlightText: n,
|
|
@@ -1611,21 +1611,21 @@ const Hn = {
|
|
|
1611
1611
|
onBack: l,
|
|
1612
1612
|
editing: m = !1
|
|
1613
1613
|
}) => {
|
|
1614
|
-
const { translations:
|
|
1615
|
-
return /* @__PURE__ */
|
|
1616
|
-
n != null ? /* @__PURE__ */ i(
|
|
1614
|
+
const { translations: d } = Z(), [g, c] = j(m), [E, h] = j(t || ""), [b, N] = j(!1);
|
|
1615
|
+
return /* @__PURE__ */ T(v, { direction: "column", gap: "small", "data-testid": "single-note", children: [
|
|
1616
|
+
n != null ? /* @__PURE__ */ i(z, { as: "div", children: /* @__PURE__ */ i(J, { children: /* @__PURE__ */ i(Ie, { type: e, isCardActive: !0, theme: o, children: n }) }) }) : /* @__PURE__ */ i(nt, {}),
|
|
1617
1617
|
/* @__PURE__ */ i(ot, { type: e, onTypeChange: a, renderAsMenuTrigger: !!a }),
|
|
1618
|
-
|
|
1618
|
+
g ? /* @__PURE__ */ T(v, { direction: "column", gap: "x-small", children: [
|
|
1619
1619
|
/* @__PURE__ */ i(
|
|
1620
1620
|
qe,
|
|
1621
1621
|
{
|
|
1622
|
-
label:
|
|
1623
|
-
value:
|
|
1624
|
-
onChange: (
|
|
1622
|
+
label: d.addNoteOptional,
|
|
1623
|
+
value: E,
|
|
1624
|
+
onChange: (p) => h(p.target.value),
|
|
1625
1625
|
resize: "vertical"
|
|
1626
1626
|
}
|
|
1627
1627
|
),
|
|
1628
|
-
/* @__PURE__ */
|
|
1628
|
+
/* @__PURE__ */ T(v, { gap: "xx-small", children: [
|
|
1629
1629
|
/* @__PURE__ */ i(v.Item, { shouldGrow: !0, children: /* @__PURE__ */ i(
|
|
1630
1630
|
ee,
|
|
1631
1631
|
{
|
|
@@ -1633,9 +1633,9 @@ const Hn = {
|
|
|
1633
1633
|
size: "small",
|
|
1634
1634
|
"data-testid": "single-note-cancel",
|
|
1635
1635
|
onClick: () => {
|
|
1636
|
-
|
|
1636
|
+
h(t || ""), c(!1);
|
|
1637
1637
|
},
|
|
1638
|
-
children:
|
|
1638
|
+
children: d.cancel
|
|
1639
1639
|
}
|
|
1640
1640
|
) }),
|
|
1641
1641
|
/* @__PURE__ */ i(v.Item, { shouldGrow: !0, children: /* @__PURE__ */ i(
|
|
@@ -1646,18 +1646,18 @@ const Hn = {
|
|
|
1646
1646
|
size: "small",
|
|
1647
1647
|
"data-testid": "single-note-save",
|
|
1648
1648
|
onClick: () => {
|
|
1649
|
-
r(
|
|
1649
|
+
r(E), c(!1);
|
|
1650
1650
|
},
|
|
1651
|
-
children:
|
|
1651
|
+
children: d.save
|
|
1652
1652
|
}
|
|
1653
1653
|
) })
|
|
1654
1654
|
] })
|
|
1655
|
-
] }) : /* @__PURE__ */
|
|
1656
|
-
t && /* @__PURE__ */
|
|
1657
|
-
/* @__PURE__ */ i(pe, { level: "h4", margin: "0 0 xx-small 0", children:
|
|
1655
|
+
] }) : /* @__PURE__ */ T(v, { direction: "column", gap: "small", children: [
|
|
1656
|
+
t && /* @__PURE__ */ T(z, { as: "div", children: [
|
|
1657
|
+
/* @__PURE__ */ i(pe, { level: "h4", margin: "0 0 xx-small 0", children: d.note }),
|
|
1658
1658
|
/* @__PURE__ */ i(J, { children: t })
|
|
1659
1659
|
] }),
|
|
1660
|
-
/* @__PURE__ */
|
|
1660
|
+
/* @__PURE__ */ T(v, { justifyItems: "space-between", children: [
|
|
1661
1661
|
/* @__PURE__ */ i(
|
|
1662
1662
|
ee,
|
|
1663
1663
|
{
|
|
@@ -1665,10 +1665,10 @@ const Hn = {
|
|
|
1665
1665
|
renderIcon: /* @__PURE__ */ i(ft, {}),
|
|
1666
1666
|
"data-testid": "single-note-back",
|
|
1667
1667
|
onClick: () => l == null ? void 0 : l(),
|
|
1668
|
-
children:
|
|
1668
|
+
children: d.back
|
|
1669
1669
|
}
|
|
1670
1670
|
),
|
|
1671
|
-
/* @__PURE__ */
|
|
1671
|
+
/* @__PURE__ */ T(v, { gap: "xx-small", children: [
|
|
1672
1672
|
s && /* @__PURE__ */ i(
|
|
1673
1673
|
le,
|
|
1674
1674
|
{
|
|
@@ -1676,9 +1676,9 @@ const Hn = {
|
|
|
1676
1676
|
withBackground: !1,
|
|
1677
1677
|
withBorder: !1,
|
|
1678
1678
|
color: "danger",
|
|
1679
|
-
screenReaderLabel:
|
|
1679
|
+
screenReaderLabel: d.deleteNote,
|
|
1680
1680
|
"data-testid": "single-note-delete",
|
|
1681
|
-
onClick: () =>
|
|
1681
|
+
onClick: () => N(!0),
|
|
1682
1682
|
children: /* @__PURE__ */ i(he, {})
|
|
1683
1683
|
}
|
|
1684
1684
|
),
|
|
@@ -1688,15 +1688,15 @@ const Hn = {
|
|
|
1688
1688
|
size: "small",
|
|
1689
1689
|
withBackground: !1,
|
|
1690
1690
|
withBorder: !1,
|
|
1691
|
-
screenReaderLabel:
|
|
1691
|
+
screenReaderLabel: d.editNote,
|
|
1692
1692
|
"data-testid": "single-note-edit",
|
|
1693
|
-
onClick: () =>
|
|
1693
|
+
onClick: () => c(!0),
|
|
1694
1694
|
children: /* @__PURE__ */ i(Se, {})
|
|
1695
1695
|
}
|
|
1696
1696
|
)
|
|
1697
1697
|
] })
|
|
1698
1698
|
] }),
|
|
1699
|
-
|
|
1699
|
+
b && s && /* @__PURE__ */ i(z, { as: "div", background: "primary", padding: "medium", borderRadius: "large", children: /* @__PURE__ */ T(v, { direction: "column", justifyItems: "center", alignItems: "center", gap: "x-small", children: [
|
|
1700
1700
|
/* @__PURE__ */ i(
|
|
1701
1701
|
ee,
|
|
1702
1702
|
{
|
|
@@ -1706,9 +1706,9 @@ const Hn = {
|
|
|
1706
1706
|
renderIcon: /* @__PURE__ */ i(he, {}),
|
|
1707
1707
|
"data-testid": "single-note-confirm-delete",
|
|
1708
1708
|
onClick: () => {
|
|
1709
|
-
s(),
|
|
1709
|
+
s(), N(!1);
|
|
1710
1710
|
},
|
|
1711
|
-
children:
|
|
1711
|
+
children: d.deleteNote
|
|
1712
1712
|
}
|
|
1713
1713
|
),
|
|
1714
1714
|
/* @__PURE__ */ i(
|
|
@@ -1717,8 +1717,8 @@ const Hn = {
|
|
|
1717
1717
|
display: "block",
|
|
1718
1718
|
size: "small",
|
|
1719
1719
|
"data-testid": "single-note-cancel-delete",
|
|
1720
|
-
onClick: () =>
|
|
1721
|
-
children:
|
|
1720
|
+
onClick: () => N(!1),
|
|
1721
|
+
children: d.cancel
|
|
1722
1722
|
}
|
|
1723
1723
|
)
|
|
1724
1724
|
] }) })
|
|
@@ -1726,26 +1726,26 @@ const Hn = {
|
|
|
1726
1726
|
] });
|
|
1727
1727
|
};
|
|
1728
1728
|
export {
|
|
1729
|
-
|
|
1730
|
-
|
|
1729
|
+
mo as ContentWithNoteWrapper,
|
|
1730
|
+
Ie as Highlight,
|
|
1731
1731
|
nt as HighlightError,
|
|
1732
|
-
|
|
1732
|
+
Hn as NoteCard,
|
|
1733
1733
|
ot as NoteChip,
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1734
|
+
Ln as NoteReactionMenu,
|
|
1735
|
+
Mn as NotebookEmptyState,
|
|
1736
|
+
uo as NotebookProvider,
|
|
1737
|
+
On as NotebookTranslationsProvider,
|
|
1738
|
+
fo as NotebookTray,
|
|
1739
|
+
po as NotesListView,
|
|
1740
|
+
x as REACTION_TYPE,
|
|
1741
|
+
No as SingleNote,
|
|
1742
|
+
Le as createTransparentColor,
|
|
1743
|
+
jt as useCreateNote,
|
|
1744
|
+
Gt as useDeleteNote,
|
|
1745
1745
|
ve as useGetNotes,
|
|
1746
1746
|
et as useNotebook,
|
|
1747
1747
|
Z as useNotebookTranslations,
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1748
|
+
go as useNotesData,
|
|
1749
|
+
ho as useReactionFilter,
|
|
1750
|
+
zt as useUpdateNote
|
|
1751
1751
|
};
|