@instructure/platform-notebook 1.3.0 → 1.3.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/ContentWithNoteWrapper.d.ts.map +1 -1
- package/dist/index.js +595 -589
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { jsx as i, jsxs as S, Fragment as
|
|
2
|
-
import { createContext as
|
|
3
|
-
import { createPortal as
|
|
1
|
+
import { jsx as i, jsxs as S, Fragment as nt } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as $e, useMemo as ae, useContext as ze, useReducer as Ue, useRef as J, useEffect as Z, useState as z, useCallback as q } from "react";
|
|
3
|
+
import { createPortal as ot } from "react-dom";
|
|
4
4
|
import { z as d } from "zod";
|
|
5
|
-
import
|
|
6
|
-
import { useQueryClient as
|
|
7
|
-
import { IconQuestionLine as
|
|
8
|
-
import { Menu as
|
|
9
|
-
import { View as
|
|
5
|
+
import rt from "diff-match-patch";
|
|
6
|
+
import { useQueryClient as ve, useMutation as Te, useQuery as st } from "@tanstack/react-query";
|
|
7
|
+
import { IconQuestionLine as Ce, IconPinLine as Ie, IconWarningLine as it, IconNoteLine as lt, IconEditLine as ye, IconTrashLine as me, IconArrowStartLine as at } from "@instructure/ui-icons";
|
|
8
|
+
import { Menu as re } from "@instructure/ui-menu";
|
|
9
|
+
import { View as G } from "@instructure/ui-view";
|
|
10
10
|
import { Flex as T } from "@instructure/ui-flex";
|
|
11
|
-
import { TruncateText as
|
|
12
|
-
import { ScreenReaderContent as
|
|
13
|
-
import { SimpleSelect as
|
|
14
|
-
import { Heading as
|
|
15
|
-
import { Text as
|
|
16
|
-
import { CloseButton as
|
|
17
|
-
import { Tray as
|
|
18
|
-
import { TextArea as
|
|
19
|
-
import { Pill as
|
|
20
|
-
import { Pagination as
|
|
21
|
-
import { Spinner as
|
|
22
|
-
const
|
|
11
|
+
import { TruncateText as be } from "@instructure/ui-truncate-text";
|
|
12
|
+
import { ScreenReaderContent as Ge } from "@instructure/ui-a11y-content";
|
|
13
|
+
import { SimpleSelect as Ae } from "@instructure/ui-simple-select";
|
|
14
|
+
import { Heading as ge } from "@instructure/ui-heading";
|
|
15
|
+
import { Text as K } from "@instructure/ui-text";
|
|
16
|
+
import { CloseButton as ct, Button as X, IconButton as ie } from "@instructure/ui-buttons";
|
|
17
|
+
import { Tray as dt } from "@instructure/ui-tray";
|
|
18
|
+
import { TextArea as We } from "@instructure/ui-text-area";
|
|
19
|
+
import { Pill as _e } from "@instructure/ui-pill";
|
|
20
|
+
import { Pagination as ut } from "@instructure/ui-pagination";
|
|
21
|
+
import { Spinner as ft } from "@instructure/ui-spinner";
|
|
22
|
+
const mt = d.object({
|
|
23
23
|
startContainer: d.string(),
|
|
24
24
|
endContainer: d.string(),
|
|
25
25
|
startOffset: d.number(),
|
|
26
26
|
endOffset: d.number()
|
|
27
|
-
}),
|
|
27
|
+
}), gt = d.object({
|
|
28
28
|
start: d.number(),
|
|
29
29
|
end: d.number()
|
|
30
|
-
}),
|
|
30
|
+
}), xe = d.object({
|
|
31
31
|
selectedText: d.string(),
|
|
32
32
|
hasNoHighlightAnymore: d.boolean().optional(),
|
|
33
|
-
textPosition:
|
|
34
|
-
range:
|
|
33
|
+
textPosition: gt.nullable(),
|
|
34
|
+
range: mt.nullable(),
|
|
35
35
|
pageLastModifiedAt: d.string()
|
|
36
36
|
});
|
|
37
|
-
var
|
|
38
|
-
const
|
|
37
|
+
var k = /* @__PURE__ */ ((t) => (t.IMPORTANT = "Important", t.CONFUSING = "Confusing", t))(k || {});
|
|
38
|
+
const we = d.enum([
|
|
39
39
|
"Important",
|
|
40
40
|
"Confusing"
|
|
41
41
|
/* CONFUSING */
|
|
42
|
-
]),
|
|
42
|
+
]), ht = d.object({
|
|
43
43
|
totalCount: d.number().nullish(),
|
|
44
44
|
totalNrOfPages: d.number().nullish()
|
|
45
|
-
}),
|
|
45
|
+
}), he = d.object({
|
|
46
46
|
id: d.string(),
|
|
47
47
|
rootAccountUuid: d.string(),
|
|
48
48
|
userId: d.string(),
|
|
@@ -50,32 +50,32 @@ const Ie = d.enum([
|
|
|
50
50
|
objectId: d.string(),
|
|
51
51
|
objectType: d.string(),
|
|
52
52
|
userText: d.string().optional(),
|
|
53
|
-
reaction: d.array(
|
|
54
|
-
highlightData:
|
|
53
|
+
reaction: d.array(we),
|
|
54
|
+
highlightData: xe,
|
|
55
55
|
createdAt: d.string(),
|
|
56
56
|
updatedAt: d.string()
|
|
57
|
-
}),
|
|
57
|
+
}), pt = d.object({
|
|
58
58
|
cursor: d.string(),
|
|
59
|
-
node:
|
|
59
|
+
node: he
|
|
60
60
|
});
|
|
61
61
|
d.object({
|
|
62
62
|
notes: d.object({
|
|
63
|
-
edges: d.array(
|
|
64
|
-
nodes: d.array(
|
|
65
|
-
pageInfo:
|
|
63
|
+
edges: d.array(pt),
|
|
64
|
+
nodes: d.array(he),
|
|
65
|
+
pageInfo: ht
|
|
66
66
|
})
|
|
67
67
|
});
|
|
68
|
-
const
|
|
68
|
+
const Nt = d.object({
|
|
69
69
|
type: d.string(),
|
|
70
70
|
id: d.string()
|
|
71
|
-
}),
|
|
71
|
+
}), yt = d.object({
|
|
72
72
|
courseId: d.string().optional(),
|
|
73
|
-
learningObject:
|
|
73
|
+
learningObject: Nt.optional(),
|
|
74
74
|
reactions: d.array(d.string()).optional()
|
|
75
75
|
}).optional();
|
|
76
76
|
d.object({
|
|
77
77
|
courseId: d.string().optional(),
|
|
78
|
-
filter:
|
|
78
|
+
filter: yt,
|
|
79
79
|
offset: d.number().optional(),
|
|
80
80
|
pageSize: d.number().optional()
|
|
81
81
|
});
|
|
@@ -84,32 +84,32 @@ d.object({
|
|
|
84
84
|
objectId: d.string(),
|
|
85
85
|
objectType: d.string(),
|
|
86
86
|
userText: d.string().optional(),
|
|
87
|
-
reaction: d.array(
|
|
88
|
-
highlightData:
|
|
87
|
+
reaction: d.array(we),
|
|
88
|
+
highlightData: xe
|
|
89
89
|
});
|
|
90
90
|
d.object({
|
|
91
|
-
createNote:
|
|
91
|
+
createNote: he
|
|
92
92
|
});
|
|
93
93
|
d.object({
|
|
94
94
|
id: d.string(),
|
|
95
95
|
userText: d.string().optional(),
|
|
96
|
-
reaction: d.array(
|
|
97
|
-
highlightData:
|
|
96
|
+
reaction: d.array(we),
|
|
97
|
+
highlightData: xe
|
|
98
98
|
});
|
|
99
99
|
d.object({
|
|
100
|
-
updateNote:
|
|
100
|
+
updateNote: he
|
|
101
101
|
});
|
|
102
102
|
d.object({
|
|
103
103
|
deleteNote: d.string()
|
|
104
104
|
});
|
|
105
|
-
var
|
|
105
|
+
var qe = /* @__PURE__ */ ((t) => (t[t.FORWARDS = 1] = "FORWARDS", t[t.BACKWARDS = 2] = "BACKWARDS", t))(qe || {});
|
|
106
106
|
class Q {
|
|
107
107
|
constructor(e, n) {
|
|
108
108
|
this.start = e, this.end = n;
|
|
109
109
|
}
|
|
110
110
|
toRange() {
|
|
111
111
|
let e, n;
|
|
112
|
-
if (this.start.element === this.end.element && this.start.offset <= this.end.offset ? [e, n] =
|
|
112
|
+
if (this.start.element === this.end.element && this.start.offset <= this.end.offset ? [e, n] = Xe(this.start.element, this.start.offset, this.end.offset) : (e = this.start.resolve({
|
|
113
113
|
direction: 1
|
|
114
114
|
/* FORWARDS */
|
|
115
115
|
}), n = this.end.resolve({
|
|
@@ -121,28 +121,28 @@ class Q {
|
|
|
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 = U.fromPoint(e.startContainer, e.startOffset), o = U.fromPoint(e.endContainer, e.endOffset);
|
|
125
125
|
return !n || !o ? null : new Q(n, o);
|
|
126
126
|
}
|
|
127
127
|
static fromOffsets(e, n, o) {
|
|
128
|
-
return new Q(new
|
|
128
|
+
return new Q(new U(e, n), new U(e, o));
|
|
129
129
|
}
|
|
130
130
|
relativeTo(e) {
|
|
131
131
|
return new Q(this.start.relativeTo(e), this.end.relativeTo(e));
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
class
|
|
134
|
+
class U {
|
|
135
135
|
constructor(e, n) {
|
|
136
136
|
n < 0 && console.error("Offset is invalid"), this.element = e, this.offset = n;
|
|
137
137
|
}
|
|
138
138
|
resolve(e = {}) {
|
|
139
139
|
try {
|
|
140
|
-
return
|
|
140
|
+
return Xe(this.element, this.offset)[0];
|
|
141
141
|
} catch (n) {
|
|
142
142
|
if (this.offset === 0 && e.direction !== void 0) {
|
|
143
143
|
const o = document.createTreeWalker(this.element.getRootNode(), NodeFilter.SHOW_TEXT);
|
|
144
144
|
o.currentNode = this.element;
|
|
145
|
-
const r = e.direction ===
|
|
145
|
+
const r = e.direction === qe.FORWARDS, s = r ? o.nextNode() : o.previousNode();
|
|
146
146
|
if (!s)
|
|
147
147
|
throw n;
|
|
148
148
|
return { node: s, offset: r ? 0 : s.data.length };
|
|
@@ -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 U.fromPoint(e, n);
|
|
157
157
|
case Node.ELEMENT_NODE:
|
|
158
|
-
return new
|
|
158
|
+
return new U(e, n);
|
|
159
159
|
default:
|
|
160
160
|
return console.error("Node is not an element or text node"), null;
|
|
161
161
|
}
|
|
@@ -167,16 +167,16 @@ 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 = Be(e) + n;
|
|
171
|
+
return new U(e.parentElement, o);
|
|
172
172
|
}
|
|
173
173
|
case Node.ELEMENT_NODE: {
|
|
174
174
|
if (n < 0 || n > e.childNodes.length)
|
|
175
175
|
return console.error("Child node offset is out of range"), null;
|
|
176
176
|
let o = 0;
|
|
177
177
|
for (let r = 0; r < n; r++)
|
|
178
|
-
o +=
|
|
179
|
-
return new
|
|
178
|
+
o += Ke(e.childNodes[r]);
|
|
179
|
+
return new U(e, o);
|
|
180
180
|
}
|
|
181
181
|
default:
|
|
182
182
|
return console.error("Point is not in an element or text node"), null;
|
|
@@ -187,34 +187,34 @@ 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 += Be(n), n.parentElement && (n = n.parentElement);
|
|
191
|
+
return new U(n, o);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
|
-
const
|
|
194
|
+
const bt = (t) => {
|
|
195
195
|
const e = t.nodeName.toLowerCase();
|
|
196
196
|
return e === "#text" ? "text()" : e;
|
|
197
197
|
};
|
|
198
|
-
function
|
|
198
|
+
function Et(t) {
|
|
199
199
|
let e = 0, n = t;
|
|
200
200
|
for (; n; )
|
|
201
201
|
n.nodeName === t.nodeName && (e += 1), n = n.previousSibling;
|
|
202
202
|
return e;
|
|
203
203
|
}
|
|
204
|
-
const
|
|
205
|
-
const e =
|
|
204
|
+
const St = (t) => {
|
|
205
|
+
const e = bt(t), n = Et(t);
|
|
206
206
|
return `${e}[${n}]`;
|
|
207
|
-
},
|
|
207
|
+
}, Fe = (t, e) => {
|
|
208
208
|
let n = "", o = t;
|
|
209
209
|
for (; o !== e; ) {
|
|
210
210
|
if (!o) {
|
|
211
211
|
console.error("Node is not a descendant of root");
|
|
212
212
|
return;
|
|
213
213
|
}
|
|
214
|
-
n = `${
|
|
214
|
+
n = `${St(o)}/${n}`, o = o.parentNode;
|
|
215
215
|
}
|
|
216
216
|
return n = `/${n}`, n = n.replace(/\/$/, ""), n;
|
|
217
|
-
},
|
|
217
|
+
}, vt = (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++) {
|
|
@@ -223,7 +223,7 @@ const bt = (t) => {
|
|
|
223
223
|
return l;
|
|
224
224
|
}
|
|
225
225
|
return null;
|
|
226
|
-
},
|
|
226
|
+
}, Tt = (t, e) => {
|
|
227
227
|
if (!(t.match(/^(\/[A-Za-z0-9-]+(\[[0-9]+])?)+$/) !== null))
|
|
228
228
|
return console.error("Expression is not a simple XPath"), null;
|
|
229
229
|
const o = t.split("/");
|
|
@@ -231,23 +231,23 @@ const bt = (t) => {
|
|
|
231
231
|
o.shift();
|
|
232
232
|
for (const s of o) {
|
|
233
233
|
let l, a;
|
|
234
|
-
const
|
|
235
|
-
if (
|
|
236
|
-
l = s.slice(0,
|
|
237
|
-
const
|
|
238
|
-
if (a = Number.parseInt(
|
|
234
|
+
const f = s.indexOf("[");
|
|
235
|
+
if (f !== -1) {
|
|
236
|
+
l = s.slice(0, f);
|
|
237
|
+
const m = s.slice(f + 1, s.indexOf("]"));
|
|
238
|
+
if (a = Number.parseInt(m, 10) - 1, a < 0)
|
|
239
239
|
return null;
|
|
240
240
|
} else
|
|
241
241
|
l = s, a = 0;
|
|
242
|
-
const c =
|
|
242
|
+
const c = vt(r, l, a);
|
|
243
243
|
if (!c)
|
|
244
244
|
return null;
|
|
245
245
|
r = c;
|
|
246
246
|
}
|
|
247
247
|
return r;
|
|
248
|
-
},
|
|
248
|
+
}, Me = (t, e = document.body) => {
|
|
249
249
|
try {
|
|
250
|
-
return
|
|
250
|
+
return Tt(t, e);
|
|
251
251
|
} catch {
|
|
252
252
|
return document.evaluate(`.${t}`, e, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
|
253
253
|
}
|
|
@@ -262,13 +262,13 @@ class ne {
|
|
|
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 = Me(n.startContainer, e);
|
|
266
266
|
if (!o)
|
|
267
267
|
return console.error("Failed to resolve startContainer XPath"), null;
|
|
268
|
-
const r =
|
|
268
|
+
const r = Me(n.endContainer, e);
|
|
269
269
|
if (!r)
|
|
270
270
|
return console.error("Failed to resolve endContainer XPath"), null;
|
|
271
|
-
const s =
|
|
271
|
+
const s = U.fromCharOffset(o, n.startOffset), l = U.fromCharOffset(r, n.endOffset);
|
|
272
272
|
if (!s || !l)
|
|
273
273
|
return null;
|
|
274
274
|
const a = new Q(s, l).toRange();
|
|
@@ -279,7 +279,7 @@ class ne {
|
|
|
279
279
|
}
|
|
280
280
|
toSelector() {
|
|
281
281
|
var s;
|
|
282
|
-
const e = (s = Q.fromRange(this.range)) == null ? void 0 : s.toRange(), n = e && Q.fromRange(e), o = n &&
|
|
282
|
+
const e = (s = Q.fromRange(this.range)) == null ? void 0 : s.toRange(), n = e && Q.fromRange(e), o = n && Fe(n.start.element, this.root), r = n && Fe(n.end.element, this.root);
|
|
283
283
|
return !o || !r ? null : {
|
|
284
284
|
startContainer: o,
|
|
285
285
|
startOffset: n.start.offset,
|
|
@@ -288,17 +288,17 @@ class ne {
|
|
|
288
288
|
};
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
|
-
class
|
|
291
|
+
class ee {
|
|
292
292
|
constructor(e, n, o) {
|
|
293
293
|
this.root = e, this.start = n, this.end = o;
|
|
294
294
|
}
|
|
295
295
|
static fromRange(e, n) {
|
|
296
296
|
var r;
|
|
297
297
|
const o = (r = Q.fromRange(n)) == null ? void 0 : r.relativeTo(e);
|
|
298
|
-
return o ? new
|
|
298
|
+
return o ? new ee(e, o.start.offset, o.end.offset) : null;
|
|
299
299
|
}
|
|
300
300
|
static fromSelector(e, n) {
|
|
301
|
-
return new
|
|
301
|
+
return new ee(e, n.start, n.end);
|
|
302
302
|
}
|
|
303
303
|
toSelector() {
|
|
304
304
|
return {
|
|
@@ -310,7 +310,7 @@ class te {
|
|
|
310
310
|
return Q.fromOffsets(this.root, this.start, this.end).toRange();
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
|
-
const
|
|
313
|
+
const Ke = (t) => {
|
|
314
314
|
var e;
|
|
315
315
|
switch (t.nodeType) {
|
|
316
316
|
case Node.ELEMENT_NODE:
|
|
@@ -319,12 +319,12 @@ const We = (t) => {
|
|
|
319
319
|
default:
|
|
320
320
|
return 0;
|
|
321
321
|
}
|
|
322
|
-
},
|
|
322
|
+
}, Be = (t) => {
|
|
323
323
|
let e = t.previousSibling, n = 0;
|
|
324
324
|
for (; e; )
|
|
325
|
-
n +=
|
|
325
|
+
n += Ke(e), e = e.previousSibling;
|
|
326
326
|
return n;
|
|
327
|
-
},
|
|
327
|
+
}, Xe = (t, ...e) => {
|
|
328
328
|
let n = e.shift();
|
|
329
329
|
const o = t.ownerDocument.createNodeIterator(t, NodeFilter.SHOW_TEXT), r = [];
|
|
330
330
|
let s = o.nextNode(), l = null, a = 0;
|
|
@@ -333,56 +333,56 @@ const We = (t) => {
|
|
|
333
333
|
for (; n !== void 0 && l && a === n; )
|
|
334
334
|
r.push({ node: l, offset: l.data.length }), n = e.shift();
|
|
335
335
|
return n !== void 0 && console.error("Offset exceeds text length"), r;
|
|
336
|
-
},
|
|
336
|
+
}, Ct = (t, e, n, o) => {
|
|
337
337
|
const r = n - e;
|
|
338
|
-
return Math.abs(r - o) <= 5 ?
|
|
338
|
+
return Math.abs(r - o) <= 5 ? ee.fromSelector(t, {
|
|
339
339
|
start: e,
|
|
340
340
|
end: n
|
|
341
341
|
}) : null;
|
|
342
|
-
},
|
|
343
|
-
const r = new
|
|
342
|
+
}, It = (t, e, n, o) => {
|
|
343
|
+
const r = new rt();
|
|
344
344
|
r.Match_Distance = 5e3;
|
|
345
345
|
const s = t.textContent;
|
|
346
346
|
if (!s)
|
|
347
347
|
return null;
|
|
348
348
|
if (e.length > 32) {
|
|
349
|
-
const l = e.slice(0, 32), a = e.slice(-32),
|
|
349
|
+
const l = e.slice(0, 32), a = e.slice(-32), f = o - n;
|
|
350
350
|
let c = r.match_main(s, l, n);
|
|
351
|
-
const
|
|
352
|
-
if (c === -1 ||
|
|
351
|
+
const m = r.match_main(s, a, o), h = m + a.length;
|
|
352
|
+
if (c === -1 || m === -1)
|
|
353
353
|
return null;
|
|
354
|
-
const
|
|
354
|
+
const u = h - c, N = Math.abs(u - f);
|
|
355
355
|
if ((c > h || N > 5) && (r.Match_Distance = e.length + 100, c = r.match_main(s, l, h), c !== -1 && c < h))
|
|
356
|
-
return
|
|
356
|
+
return Ct(t, c, h, f);
|
|
357
357
|
if (c < h && N <= 5)
|
|
358
|
-
return
|
|
358
|
+
return ee.fromSelector(t, {
|
|
359
359
|
start: c,
|
|
360
360
|
end: h
|
|
361
361
|
});
|
|
362
362
|
} else {
|
|
363
363
|
const l = r.match_main(s, e, n);
|
|
364
364
|
if (l !== -1)
|
|
365
|
-
return
|
|
365
|
+
return ee.fromSelector(t, {
|
|
366
366
|
start: l,
|
|
367
367
|
end: l + e.length
|
|
368
368
|
});
|
|
369
369
|
}
|
|
370
370
|
return null;
|
|
371
|
-
},
|
|
371
|
+
}, xt = (t, e) => {
|
|
372
372
|
if (!e) return null;
|
|
373
373
|
const { highlightData: n } = t, { textPosition: o, selectedText: r } = n;
|
|
374
|
-
return
|
|
374
|
+
return It(
|
|
375
375
|
e,
|
|
376
376
|
r,
|
|
377
377
|
(o == null ? void 0 : o.start) ?? 0,
|
|
378
378
|
(o == null ? void 0 : o.end) ?? 0
|
|
379
379
|
);
|
|
380
|
-
},
|
|
380
|
+
}, wt = (t, e, n) => {
|
|
381
381
|
const o = [], r = [];
|
|
382
382
|
for (const s of e) {
|
|
383
|
-
const l =
|
|
383
|
+
const l = xt(s, t);
|
|
384
384
|
if (l) {
|
|
385
|
-
const a = l.toRange(),
|
|
385
|
+
const a = l.toRange(), f = a && ne.fromRange(t, a), c = (a == null ? void 0 : a.toString().trim()) || s.highlightData.selectedText;
|
|
386
386
|
o.push({
|
|
387
387
|
id: s.id,
|
|
388
388
|
reaction: s.reaction,
|
|
@@ -391,7 +391,7 @@ const We = (t) => {
|
|
|
391
391
|
...s.highlightData,
|
|
392
392
|
selectedText: c,
|
|
393
393
|
hasNoHighlightAnymore: !1,
|
|
394
|
-
range: (
|
|
394
|
+
range: (f == null ? void 0 : f.toSelector()) ?? null,
|
|
395
395
|
textPosition: l.toSelector(),
|
|
396
396
|
pageLastModifiedAt: n
|
|
397
397
|
}
|
|
@@ -409,61 +409,61 @@ const We = (t) => {
|
|
|
409
409
|
}) : r.push(s.id);
|
|
410
410
|
}
|
|
411
411
|
return { notesForUpdate: o, noteIdsForDelete: r };
|
|
412
|
-
},
|
|
412
|
+
}, He = (t, e) => {
|
|
413
413
|
var l;
|
|
414
414
|
if (!e) return;
|
|
415
415
|
const { highlightData: n, id: o } = t, { range: r } = n ?? {};
|
|
416
|
-
r && ((l = ne.fromSelector(e, r)) == null ? void 0 : l.toRange()) &&
|
|
417
|
-
},
|
|
416
|
+
r && ((l = ne.fromSelector(e, r)) == null ? void 0 : l.toRange()) && _t({ id: o });
|
|
417
|
+
}, kt = (t) => {
|
|
418
418
|
const n = document.querySelector(
|
|
419
419
|
`[data-highlight-id="${CSS.escape(t)}"].highlight-content`
|
|
420
|
-
) ?? document.getElementById(
|
|
420
|
+
) ?? document.getElementById(Oe(t));
|
|
421
421
|
if (n) {
|
|
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
|
-
},
|
|
425
|
+
}, de = 90, ue = 172, Ot = (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, l = window.innerWidth || document.documentElement.clientWidth, a = window.innerHeight || document.documentElement.clientHeight,
|
|
430
|
-
const E = y +
|
|
429
|
+
const n = e[0], o = e[e.length - 1], r = 4, s = 16, l = window.innerWidth || document.documentElement.clientWidth, a = window.innerHeight || document.documentElement.clientHeight, f = (y) => {
|
|
430
|
+
const E = y + ue;
|
|
431
431
|
return y >= s && E <= l - s;
|
|
432
432
|
}, c = (y) => {
|
|
433
|
-
const E = y +
|
|
433
|
+
const E = y + de;
|
|
434
434
|
return y >= s && E <= a - s;
|
|
435
435
|
};
|
|
436
|
-
let
|
|
437
|
-
const h = n.right -
|
|
438
|
-
if (
|
|
439
|
-
|
|
436
|
+
let m;
|
|
437
|
+
const h = n.right - ue;
|
|
438
|
+
if (f(h))
|
|
439
|
+
m = h;
|
|
440
440
|
else {
|
|
441
441
|
const y = n.left;
|
|
442
|
-
if (
|
|
443
|
-
|
|
442
|
+
if (f(y))
|
|
443
|
+
m = y;
|
|
444
444
|
else {
|
|
445
|
-
const p = (n.left + n.right) / 2 -
|
|
446
|
-
|
|
445
|
+
const p = (n.left + n.right) / 2 - ue / 2;
|
|
446
|
+
f(p) ? m = p : h < s ? m = s : m = l - ue - s;
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
-
let
|
|
449
|
+
let u;
|
|
450
450
|
const N = o.bottom + r;
|
|
451
451
|
if (c(N))
|
|
452
|
-
|
|
452
|
+
u = N;
|
|
453
453
|
else {
|
|
454
|
-
const y = n.top -
|
|
455
|
-
c(y) ?
|
|
454
|
+
const y = n.top - de - r;
|
|
455
|
+
c(y) ? u = y : N + de > a - s ? u = a - de - s : u = s;
|
|
456
456
|
}
|
|
457
|
-
return { top:
|
|
458
|
-
},
|
|
457
|
+
return { top: u, left: m };
|
|
458
|
+
}, Rt = (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
|
-
},
|
|
463
|
+
}, ke = (t) => `highlight-wrapper-${t}`, Oe = (t) => `${ke(t)}-start`, Qe = (t) => `${ke(t)}-end`, le = (t) => `[data-highlight-id="${CSS.escape(t)}"]`, Re = (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
|
+
}, Pt = (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 We = (t) => {
|
|
|
471
471
|
} catch {
|
|
472
472
|
return !1;
|
|
473
473
|
}
|
|
474
|
-
},
|
|
474
|
+
}, Dt = (t) => {
|
|
475
475
|
var s;
|
|
476
476
|
if (t.collapsed)
|
|
477
477
|
return [];
|
|
@@ -481,7 +481,7 @@ const We = (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 (!Pt(t, r)) {
|
|
485
485
|
r = (o == null ? void 0 : o.nextNode()) || null;
|
|
486
486
|
continue;
|
|
487
487
|
}
|
|
@@ -493,130 +493,130 @@ const We = (t) => {
|
|
|
493
493
|
l === t.endContainer && t.endOffset < l.data.length && l.splitText(t.endOffset), n.push(l), r = (o == null ? void 0 : o.nextNode()) || null;
|
|
494
494
|
}
|
|
495
495
|
return n;
|
|
496
|
-
},
|
|
496
|
+
}, Lt = (t, e, n) => {
|
|
497
497
|
if (t.collapsed) return;
|
|
498
|
-
const o = e.id ?? "", r =
|
|
499
|
-
if (document.getElementById(
|
|
500
|
-
|
|
498
|
+
const o = e.id ?? "", r = ke(o);
|
|
499
|
+
if (document.getElementById(Oe(o))) {
|
|
500
|
+
At(e, n);
|
|
501
501
|
return;
|
|
502
502
|
}
|
|
503
|
-
const l = e.type ===
|
|
504
|
-
|
|
503
|
+
const l = e.type === k.IMPORTANT ? n.colors.importantBackground : n.colors.confusingBackground, f = e.id === e.selectedNoteId ? l : Re(l, 0.5), c = e.type === k.IMPORTANT ? n.colors.importantUnderline : n.colors.confusingUnderline, m = e.type === k.IMPORTANT ? "solid" : "dashed", h = t.toString(), u = document.createElement("span");
|
|
504
|
+
u.id = `${r}-start`, u.className = "highlight-marker-start", u.dataset.highlightId = o || "", u.setAttribute("role", "button"), u.setAttribute("tabindex", "0"), u.setAttribute("aria-label", h), u.style.position = "relative", u.style.fontSize = "0", u.style.lineHeight = "0", u.style.width = "0", u.style.height = "0", u.style.margin = "0", u.style.padding = "0", u.style.border = "0";
|
|
505
505
|
const N = document.createElement("span");
|
|
506
|
-
N.id =
|
|
506
|
+
N.id = Qe(o), N.className = "highlight-marker-end", N.dataset.highlightId = o || "";
|
|
507
507
|
const y = t.cloneRange();
|
|
508
508
|
y.collapse(!1), y.insertNode(N);
|
|
509
509
|
const E = t.cloneRange();
|
|
510
|
-
E.collapse(!0), E.insertNode(
|
|
510
|
+
E.collapse(!0), E.insertNode(u);
|
|
511
511
|
const p = document.createRange();
|
|
512
|
-
p.setStartAfter(
|
|
513
|
-
const w =
|
|
514
|
-
w.forEach((b,
|
|
515
|
-
var
|
|
516
|
-
const
|
|
517
|
-
if ((
|
|
518
|
-
const
|
|
519
|
-
let
|
|
520
|
-
|
|
521
|
-
const
|
|
522
|
-
|
|
523
|
-
var
|
|
524
|
-
Y.target.tagName !== "A" && ((
|
|
525
|
-
}), (
|
|
526
|
-
}),
|
|
527
|
-
var
|
|
528
|
-
b.target.tagName !== "A" && ((
|
|
529
|
-
}),
|
|
530
|
-
var
|
|
512
|
+
p.setStartAfter(u), p.setEndBefore(N);
|
|
513
|
+
const w = Dt(p).filter((b) => b.textContent && b.textContent.length > 0);
|
|
514
|
+
w.forEach((b, C) => {
|
|
515
|
+
var W;
|
|
516
|
+
const O = b.parentElement;
|
|
517
|
+
if ((O == null ? void 0 : O.dataset.highlightId) === o) return;
|
|
518
|
+
const I = C === 0, B = C === w.length - 1, L = w.length === 1;
|
|
519
|
+
let P;
|
|
520
|
+
L ? P = "single" : I ? P = "first" : B ? P = "last" : P = "middle";
|
|
521
|
+
const R = document.createElement("span");
|
|
522
|
+
R.className = "highlight-content", R.dataset.highlightId = o || "", R.dataset.position = P, R.style.backgroundColor = f, R.style.textDecorationLine = "underline", R.style.textDecorationColor = c, R.style.textDecorationStyle = m, R.style.textDecorationThickness = n.borderWidthSmall, R.style.textUnderlineOffset = n.underlineOffset, R.style.cursor = "pointer", R.addEventListener("click", (Y) => {
|
|
523
|
+
var A;
|
|
524
|
+
Y.target.tagName !== "A" && ((A = e.onClick) == null || A.call(e));
|
|
525
|
+
}), (W = b.parentNode) == null || W.insertBefore(R, b), R.appendChild(b);
|
|
526
|
+
}), u.addEventListener("click", (b) => {
|
|
527
|
+
var C;
|
|
528
|
+
b.target.tagName !== "A" && ((C = e.onClick) == null || C.call(e));
|
|
529
|
+
}), u.addEventListener("keydown", (b) => {
|
|
530
|
+
var C;
|
|
531
531
|
if (b.key === "Enter" || b.key === " ")
|
|
532
|
-
b.preventDefault(), (
|
|
532
|
+
b.preventDefault(), (C = e.onClick) == null || C.call(e);
|
|
533
533
|
else if (b.key === "Tab" && !b.shiftKey) {
|
|
534
|
-
const
|
|
535
|
-
for (const
|
|
536
|
-
const
|
|
537
|
-
if (
|
|
538
|
-
b.preventDefault(),
|
|
534
|
+
const O = document.querySelectorAll(le(o));
|
|
535
|
+
for (const I of O) {
|
|
536
|
+
const B = I.querySelector("a");
|
|
537
|
+
if (B) {
|
|
538
|
+
b.preventDefault(), B.focus();
|
|
539
539
|
break;
|
|
540
540
|
}
|
|
541
541
|
}
|
|
542
542
|
}
|
|
543
|
-
}),
|
|
543
|
+
}), u.addEventListener("focus", () => {
|
|
544
544
|
document.querySelectorAll(
|
|
545
|
-
|
|
546
|
-
).forEach((
|
|
547
|
-
|
|
545
|
+
le(o)
|
|
546
|
+
).forEach((C) => {
|
|
547
|
+
C.classList.add("highlight-focused");
|
|
548
548
|
});
|
|
549
|
-
}),
|
|
549
|
+
}), u.addEventListener("blur", () => {
|
|
550
550
|
document.querySelectorAll(
|
|
551
|
-
|
|
552
|
-
).forEach((
|
|
553
|
-
|
|
551
|
+
le(o)
|
|
552
|
+
).forEach((C) => {
|
|
553
|
+
C.classList.remove("highlight-focused");
|
|
554
554
|
});
|
|
555
555
|
});
|
|
556
556
|
};
|
|
557
|
-
function
|
|
558
|
-
const n = t.type ===
|
|
557
|
+
function At(t, e) {
|
|
558
|
+
const n = t.type === k.IMPORTANT ? e.colors.importantBackground : e.colors.confusingBackground, r = t.id === t.selectedNoteId ? n : Re(n, 0.5);
|
|
559
559
|
document.querySelectorAll(
|
|
560
|
-
|
|
560
|
+
le(t.id ?? "")
|
|
561
561
|
).forEach((l) => {
|
|
562
562
|
l.style.backgroundColor = r;
|
|
563
563
|
});
|
|
564
564
|
}
|
|
565
|
-
const
|
|
566
|
-
const e = t.id ?? "", n = document.getElementById(
|
|
565
|
+
const _t = (t) => {
|
|
566
|
+
const e = t.id ?? "", n = document.getElementById(Oe(e)), o = document.getElementById(Qe(e));
|
|
567
567
|
document.querySelectorAll(
|
|
568
|
-
|
|
568
|
+
le(e)
|
|
569
569
|
).forEach((s) => {
|
|
570
570
|
var l;
|
|
571
571
|
for (; s.firstChild; )
|
|
572
572
|
(l = s.parentNode) == null || l.insertBefore(s.firstChild, s);
|
|
573
573
|
s.remove();
|
|
574
574
|
}), n == null || n.remove(), o == null || o.remove();
|
|
575
|
-
},
|
|
575
|
+
}, se = {
|
|
576
576
|
all: ["notebook"],
|
|
577
577
|
notes: (t) => ["notebook", "notes", t]
|
|
578
578
|
};
|
|
579
|
-
function
|
|
580
|
-
const e =
|
|
581
|
-
return
|
|
579
|
+
function Ft(t) {
|
|
580
|
+
const e = ve();
|
|
581
|
+
return Te({
|
|
582
582
|
mutationFn: (n) => t.createNote(n),
|
|
583
583
|
onSuccess: () => {
|
|
584
|
-
e.invalidateQueries({ queryKey:
|
|
584
|
+
e.invalidateQueries({ queryKey: se.all });
|
|
585
585
|
}
|
|
586
586
|
});
|
|
587
587
|
}
|
|
588
|
-
function
|
|
589
|
-
const e =
|
|
590
|
-
return
|
|
588
|
+
function Mt(t) {
|
|
589
|
+
const e = ve();
|
|
590
|
+
return Te({
|
|
591
591
|
mutationFn: (n) => t.deleteNote(n),
|
|
592
592
|
onSuccess: () => {
|
|
593
|
-
e.invalidateQueries({ queryKey:
|
|
593
|
+
e.invalidateQueries({ queryKey: se.all });
|
|
594
594
|
}
|
|
595
595
|
});
|
|
596
596
|
}
|
|
597
|
-
function
|
|
597
|
+
function Ee({
|
|
598
598
|
api: t,
|
|
599
599
|
enabled: e = !0,
|
|
600
600
|
...n
|
|
601
601
|
}) {
|
|
602
|
-
return
|
|
603
|
-
queryKey:
|
|
602
|
+
return st({
|
|
603
|
+
queryKey: se.notes(n),
|
|
604
604
|
queryFn: () => t.getNotes(n),
|
|
605
605
|
enabled: e
|
|
606
606
|
});
|
|
607
607
|
}
|
|
608
|
-
function
|
|
609
|
-
const e =
|
|
610
|
-
return
|
|
608
|
+
function Bt(t) {
|
|
609
|
+
const e = ve();
|
|
610
|
+
return Te({
|
|
611
611
|
mutationFn: ({ id: n, input: o }) => t.updateNote(n, o),
|
|
612
612
|
onMutate: async ({ id: n, input: o }) => {
|
|
613
|
-
await e.cancelQueries({ queryKey:
|
|
614
|
-
const s = e.getQueryCache().findAll({ queryKey:
|
|
613
|
+
await e.cancelQueries({ queryKey: se.all });
|
|
614
|
+
const s = e.getQueryCache().findAll({ queryKey: se.all }), l = /* @__PURE__ */ new Map();
|
|
615
615
|
for (const a of s) {
|
|
616
|
-
const
|
|
617
|
-
|
|
618
|
-
...
|
|
619
|
-
notes:
|
|
616
|
+
const f = a.state.data;
|
|
617
|
+
f && (l.set(a.queryKey, f), e.setQueryData(a.queryKey, {
|
|
618
|
+
...f,
|
|
619
|
+
notes: f.notes.map(
|
|
620
620
|
(c) => c.id === n ? { ...c, ...o, updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : c
|
|
621
621
|
)
|
|
622
622
|
}));
|
|
@@ -629,75 +629,75 @@ function Ft(t) {
|
|
|
629
629
|
e.setQueryData(s, l);
|
|
630
630
|
},
|
|
631
631
|
onSettled: () => {
|
|
632
|
-
e.invalidateQueries({ queryKey:
|
|
632
|
+
e.invalidateQueries({ queryKey: se.all });
|
|
633
633
|
}
|
|
634
634
|
});
|
|
635
635
|
}
|
|
636
|
-
const
|
|
637
|
-
notebook:
|
|
638
|
-
notes:
|
|
639
|
-
important:
|
|
640
|
-
unclear:
|
|
641
|
-
back:
|
|
642
|
-
editNote:
|
|
643
|
-
save:
|
|
644
|
-
cancel:
|
|
645
|
-
deleteNote:
|
|
646
|
-
note:
|
|
647
|
-
addNotePrompt:
|
|
648
|
-
removeFromNotebook:
|
|
649
|
-
addNoteOptional:
|
|
650
|
-
markImportant:
|
|
651
|
-
markUnclear:
|
|
652
|
-
savedToNotebook:
|
|
653
|
-
noteUpdated:
|
|
654
|
-
noteDeleted:
|
|
655
|
-
errorSavingNote:
|
|
656
|
-
errorUpdatingNote:
|
|
657
|
-
noteDeletionFailed:
|
|
658
|
-
loadingNotes:
|
|
659
|
-
failedToLoadNotes:
|
|
660
|
-
emptyStateHeading:
|
|
661
|
-
emptyStateDescription:
|
|
662
|
-
nothingHereYet:
|
|
663
|
-
adjustFiltersOrCreate:
|
|
664
|
-
noNotesForFilter:
|
|
665
|
-
previousPage:
|
|
666
|
-
nextPage:
|
|
667
|
-
allCourses:
|
|
668
|
-
allNotes:
|
|
669
|
-
closeNotebookPanel:
|
|
670
|
-
featureDescription:
|
|
671
|
-
highlightUnavailable:
|
|
672
|
-
},
|
|
673
|
-
function
|
|
674
|
-
const n =
|
|
636
|
+
const Ht = "Notebook", jt = "Notes", $t = "Important", zt = "Unclear", Ut = "Back", Gt = "Edit note", Wt = "Save", qt = "Cancel", Kt = "Delete note", Xt = "note", Qt = "Add note (optional)", Vt = "Remove from Notebook", Yt = "Add a note (optional)", Zt = "Mark important", Jt = "Mark unclear", en = "Saved to Notebook.", tn = "Note updated", nn = "Note deleted", on = "Error saving to Notebook.", rn = "Error updating note", sn = "Note deletion failed", ln = "Loading notes", an = "Failed to load notes", cn = "Start capturing your notes", dn = "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.", un = "Nothing here yet", fn = "Adjust your filters or create a new note to get started.", mn = "You have no notes for the selected filter", gn = "Previous page", hn = "Next page", pn = "All courses", Nn = "All notes", yn = "Close Notebook panel", bn = "To use the Notebook feature, highlight an excerpt from your learning material to flag it as 'confusing' or 'important' and leave an optional note.", En = "The content you highlighted is no longer available.", Pe = {
|
|
637
|
+
notebook: Ht,
|
|
638
|
+
notes: jt,
|
|
639
|
+
important: $t,
|
|
640
|
+
unclear: zt,
|
|
641
|
+
back: Ut,
|
|
642
|
+
editNote: Gt,
|
|
643
|
+
save: Wt,
|
|
644
|
+
cancel: qt,
|
|
645
|
+
deleteNote: Kt,
|
|
646
|
+
note: Xt,
|
|
647
|
+
addNotePrompt: Qt,
|
|
648
|
+
removeFromNotebook: Vt,
|
|
649
|
+
addNoteOptional: Yt,
|
|
650
|
+
markImportant: Zt,
|
|
651
|
+
markUnclear: Jt,
|
|
652
|
+
savedToNotebook: en,
|
|
653
|
+
noteUpdated: tn,
|
|
654
|
+
noteDeleted: nn,
|
|
655
|
+
errorSavingNote: on,
|
|
656
|
+
errorUpdatingNote: rn,
|
|
657
|
+
noteDeletionFailed: sn,
|
|
658
|
+
loadingNotes: ln,
|
|
659
|
+
failedToLoadNotes: an,
|
|
660
|
+
emptyStateHeading: cn,
|
|
661
|
+
emptyStateDescription: dn,
|
|
662
|
+
nothingHereYet: un,
|
|
663
|
+
adjustFiltersOrCreate: fn,
|
|
664
|
+
noNotesForFilter: mn,
|
|
665
|
+
previousPage: gn,
|
|
666
|
+
nextPage: hn,
|
|
667
|
+
allCourses: pn,
|
|
668
|
+
allNotes: Nn,
|
|
669
|
+
closeNotebookPanel: yn,
|
|
670
|
+
featureDescription: bn,
|
|
671
|
+
highlightUnavailable: En
|
|
672
|
+
}, Ve = $e(null);
|
|
673
|
+
function Ye(t, e) {
|
|
674
|
+
const n = Pe[t] ?? t;
|
|
675
675
|
return e ? n.replace(/%\{([^}]+)}/g, (o, r) => String(e[r] ?? `%{${r}}`)) : n;
|
|
676
676
|
}
|
|
677
|
-
function
|
|
677
|
+
function Sn({
|
|
678
678
|
translations: t,
|
|
679
679
|
translate: e,
|
|
680
680
|
children: n
|
|
681
681
|
}) {
|
|
682
|
-
const o =
|
|
682
|
+
const o = ae(
|
|
683
683
|
() => ({
|
|
684
|
-
translations: { ...
|
|
685
|
-
translate: e ??
|
|
684
|
+
translations: { ...Pe, ...t },
|
|
685
|
+
translate: e ?? Ye
|
|
686
686
|
}),
|
|
687
687
|
[t, e]
|
|
688
688
|
);
|
|
689
|
-
return /* @__PURE__ */ i(
|
|
689
|
+
return /* @__PURE__ */ i(Ve.Provider, { value: o, children: n });
|
|
690
690
|
}
|
|
691
691
|
function V() {
|
|
692
|
-
const t =
|
|
693
|
-
return t || { translations:
|
|
692
|
+
const t = ze(Ve);
|
|
693
|
+
return t || { translations: Pe, translate: Ye };
|
|
694
694
|
}
|
|
695
|
-
const
|
|
695
|
+
const vn = (t) => ({
|
|
696
696
|
selectedNoteId: t ?? null,
|
|
697
697
|
isNoteEditing: !1,
|
|
698
698
|
isTrayOpen: t != null
|
|
699
699
|
});
|
|
700
|
-
function
|
|
700
|
+
function Tn(t, e) {
|
|
701
701
|
switch (e.type) {
|
|
702
702
|
case "SELECT_NOTE":
|
|
703
703
|
return {
|
|
@@ -717,8 +717,8 @@ function Sn(t, e) {
|
|
|
717
717
|
return t;
|
|
718
718
|
}
|
|
719
719
|
}
|
|
720
|
-
const
|
|
721
|
-
function
|
|
720
|
+
const Ze = $e(null);
|
|
721
|
+
function no({
|
|
722
722
|
api: t,
|
|
723
723
|
currentUserId: e,
|
|
724
724
|
objectId: n,
|
|
@@ -727,12 +727,12 @@ function eo({
|
|
|
727
727
|
pageLastModifiedAt: s,
|
|
728
728
|
onAnalyticsEvent: l,
|
|
729
729
|
onOpen: a,
|
|
730
|
-
initialNoteId:
|
|
730
|
+
initialNoteId: f,
|
|
731
731
|
translations: c,
|
|
732
|
-
translate:
|
|
732
|
+
translate: m,
|
|
733
733
|
children: h
|
|
734
734
|
}) {
|
|
735
|
-
const [
|
|
735
|
+
const [u, N] = Ue(Tn, vn(f)), y = J(f != null), E = ae(
|
|
736
736
|
() => ({
|
|
737
737
|
api: t,
|
|
738
738
|
currentUserId: e,
|
|
@@ -741,7 +741,7 @@ function eo({
|
|
|
741
741
|
courseId: r,
|
|
742
742
|
pageLastModifiedAt: s,
|
|
743
743
|
onAnalyticsEvent: l,
|
|
744
|
-
...
|
|
744
|
+
...u,
|
|
745
745
|
selectNote: (p, _ = !1) => N({ type: "SELECT_NOTE", payload: { id: p, isEditing: _ } }),
|
|
746
746
|
clearSelectedNote: () => N({ type: "CLEAR_SELECTED_NOTE" }),
|
|
747
747
|
setEditing: (p) => N({ type: "SET_EDITING", payload: p }),
|
|
@@ -761,23 +761,23 @@ function eo({
|
|
|
761
761
|
s,
|
|
762
762
|
l,
|
|
763
763
|
a,
|
|
764
|
-
|
|
764
|
+
u
|
|
765
765
|
]
|
|
766
766
|
);
|
|
767
|
-
return /* @__PURE__ */ i(
|
|
767
|
+
return /* @__PURE__ */ i(Ze.Provider, { value: E, children: /* @__PURE__ */ i(Sn, { translations: c, translate: m, children: h }) });
|
|
768
768
|
}
|
|
769
|
-
function
|
|
770
|
-
const t =
|
|
769
|
+
function Je() {
|
|
770
|
+
const t = ze(Ze);
|
|
771
771
|
if (!t)
|
|
772
772
|
throw new Error("useNotebook must be used within a NotebookProvider");
|
|
773
773
|
return t;
|
|
774
774
|
}
|
|
775
|
-
const
|
|
776
|
-
const { translations: n } = V(), o =
|
|
777
|
-
return
|
|
778
|
-
t ===
|
|
775
|
+
const Cn = ({ currentType: t, onSelectReaction: e }) => {
|
|
776
|
+
const { translations: n } = V(), o = J(null), r = J(null);
|
|
777
|
+
return Z(() => {
|
|
778
|
+
t === k.CONFUSING && o.current ? o.current.focus() : t === k.IMPORTANT && r.current ? r.current.focus() : o.current && o.current.focus();
|
|
779
779
|
}, [t]), /* @__PURE__ */ i(
|
|
780
|
-
|
|
780
|
+
G,
|
|
781
781
|
{
|
|
782
782
|
as: "div",
|
|
783
783
|
background: "primary",
|
|
@@ -785,25 +785,25 @@ const Tn = ({ currentType: t, onSelectReaction: e }) => {
|
|
|
785
785
|
borderColor: "secondary",
|
|
786
786
|
borderRadius: "medium",
|
|
787
787
|
shadow: "resting",
|
|
788
|
-
children: /* @__PURE__ */ S(
|
|
788
|
+
children: /* @__PURE__ */ S(re, { children: [
|
|
789
789
|
/* @__PURE__ */ S(
|
|
790
|
-
|
|
790
|
+
re.Item,
|
|
791
791
|
{
|
|
792
792
|
ref: o,
|
|
793
|
-
onClick: () => e(
|
|
793
|
+
onClick: () => e(k.CONFUSING),
|
|
794
794
|
children: [
|
|
795
|
-
/* @__PURE__ */ i(
|
|
795
|
+
/* @__PURE__ */ i(Ce, { size: "x-small" }),
|
|
796
796
|
` ${n.markUnclear}`
|
|
797
797
|
]
|
|
798
798
|
}
|
|
799
799
|
),
|
|
800
800
|
/* @__PURE__ */ S(
|
|
801
|
-
|
|
801
|
+
re.Item,
|
|
802
802
|
{
|
|
803
803
|
ref: r,
|
|
804
|
-
onClick: () => e(
|
|
804
|
+
onClick: () => e(k.IMPORTANT),
|
|
805
805
|
children: [
|
|
806
|
-
/* @__PURE__ */ i(
|
|
806
|
+
/* @__PURE__ */ i(Ie, { size: "x-small" }),
|
|
807
807
|
` ${n.markImportant}`
|
|
808
808
|
]
|
|
809
809
|
}
|
|
@@ -811,8 +811,8 @@ const Tn = ({ currentType: t, onSelectReaction: e }) => {
|
|
|
811
811
|
] })
|
|
812
812
|
}
|
|
813
813
|
);
|
|
814
|
-
},
|
|
815
|
-
function
|
|
814
|
+
}, pe = "notebook-inline-reaction-menu";
|
|
815
|
+
function oo({
|
|
816
816
|
containerRef: t,
|
|
817
817
|
highlightTheme: e,
|
|
818
818
|
debounceTime: n = 500,
|
|
@@ -823,187 +823,193 @@ function to({
|
|
|
823
823
|
const {
|
|
824
824
|
api: l,
|
|
825
825
|
objectId: a,
|
|
826
|
-
objectType:
|
|
826
|
+
objectType: f,
|
|
827
827
|
courseId: c,
|
|
828
|
-
pageLastModifiedAt:
|
|
828
|
+
pageLastModifiedAt: m,
|
|
829
829
|
selectedNoteId: h,
|
|
830
|
-
selectNote:
|
|
830
|
+
selectNote: u,
|
|
831
831
|
openTray: N
|
|
832
|
-
} =
|
|
832
|
+
} = Je(), { data: y } = Ee({
|
|
833
833
|
api: l,
|
|
834
834
|
filter: {
|
|
835
|
-
learningObject: { type:
|
|
835
|
+
learningObject: { type: f, id: a }
|
|
836
836
|
},
|
|
837
837
|
courseId: c,
|
|
838
838
|
pageSize: 100
|
|
839
|
-
}), { mutate: E } =
|
|
840
|
-
|
|
841
|
-
const
|
|
842
|
-
if (!
|
|
843
|
-
const
|
|
844
|
-
if (
|
|
839
|
+
}), { mutate: E } = Ft(l), { mutateAsync: p } = Bt(l), { mutate: _ } = Mt(l), w = J([]), [b, C] = z([]), [O, I] = z(null), [B, L] = z(""), [P, R] = z(null), [W, Y] = z(!1);
|
|
840
|
+
Z(() => {
|
|
841
|
+
const g = t.current;
|
|
842
|
+
if (!g) return;
|
|
843
|
+
const v = g.closest(".user_content") ?? g;
|
|
844
|
+
if (v.classList.contains("enhanced")) {
|
|
845
845
|
Y(!0);
|
|
846
846
|
return;
|
|
847
847
|
}
|
|
848
|
-
const
|
|
849
|
-
for (const
|
|
850
|
-
if (
|
|
851
|
-
Y(!0),
|
|
848
|
+
const j = new MutationObserver((F) => {
|
|
849
|
+
for (const $ of F)
|
|
850
|
+
if ($.type === "attributes" && $.attributeName === "class" && $.target.classList.contains("enhanced")) {
|
|
851
|
+
Y(!0), j.disconnect();
|
|
852
852
|
return;
|
|
853
853
|
}
|
|
854
854
|
});
|
|
855
|
-
return
|
|
856
|
-
}, [t])
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
const
|
|
867
|
-
if (!
|
|
868
|
-
const
|
|
869
|
-
|
|
855
|
+
return j.observe(v, { attributes: !0, attributeFilter: ["class"] }), () => j.disconnect();
|
|
856
|
+
}, [t]);
|
|
857
|
+
const A = q(() => {
|
|
858
|
+
R(null), I(null), L("");
|
|
859
|
+
}, []);
|
|
860
|
+
Z(() => {
|
|
861
|
+
if (!W || !t.current) return;
|
|
862
|
+
let v = null;
|
|
863
|
+
const j = () => {
|
|
864
|
+
v && clearTimeout(v), v = setTimeout(() => {
|
|
865
|
+
var Le;
|
|
866
|
+
const x = window.getSelection(), M = t.current;
|
|
867
|
+
if (!(x != null && x.rangeCount) || !M) return;
|
|
868
|
+
const oe = x.toString().trim();
|
|
869
|
+
if (oe === "") return;
|
|
870
|
+
const ce = x.getRangeAt(0);
|
|
871
|
+
if (!M.contains(ce.commonAncestorContainer)) return;
|
|
872
|
+
const De = (Le = ee.fromRange(M, ce)) == null ? void 0 : Le.toSelector();
|
|
873
|
+
De && !Rt(De, b) && (I(ce.cloneRange()), L(oe), R(Ot(ce)));
|
|
870
874
|
}, n);
|
|
871
|
-
}, F = (
|
|
872
|
-
if (!(
|
|
873
|
-
const
|
|
874
|
-
|
|
875
|
-
},
|
|
876
|
-
|
|
875
|
+
}, F = (x) => {
|
|
876
|
+
if (!(x.target instanceof Node)) return;
|
|
877
|
+
const M = document.getElementById(pe);
|
|
878
|
+
M != null && M.contains(x.target) ? (x.preventDefault(), x.stopImmediatePropagation()) : A();
|
|
879
|
+
}, $ = () => {
|
|
880
|
+
A();
|
|
881
|
+
}, D = (x) => {
|
|
882
|
+
x.key === "Escape" && A();
|
|
877
883
|
};
|
|
878
|
-
return document.addEventListener("selectionchange",
|
|
879
|
-
|
|
884
|
+
return document.addEventListener("selectionchange", j), document.addEventListener("mousedown", F), document.addEventListener("touchstart", F), document.addEventListener("keydown", D), window.addEventListener("scroll", $, !0), () => {
|
|
885
|
+
v && clearTimeout(v), document.removeEventListener("selectionchange", j), document.removeEventListener("mousedown", F), document.removeEventListener("touchstart", F), document.removeEventListener("keydown", D), window.removeEventListener("scroll", $, !0);
|
|
880
886
|
};
|
|
881
|
-
}, [
|
|
882
|
-
const H =
|
|
883
|
-
(
|
|
884
|
-
var
|
|
885
|
-
const
|
|
886
|
-
if (!
|
|
887
|
-
const { highlightData:
|
|
888
|
-
if (
|
|
889
|
-
const
|
|
890
|
-
id:
|
|
887
|
+
}, [W, b, n, t, A]);
|
|
888
|
+
const H = q(
|
|
889
|
+
(g) => {
|
|
890
|
+
var M;
|
|
891
|
+
const v = t.current;
|
|
892
|
+
if (!v || !g.highlightData) return null;
|
|
893
|
+
const { highlightData: j, reaction: F, id: $ } = g, { range: D } = j, x = D && ((M = ne.fromSelector(v, D)) == null ? void 0 : M.toRange());
|
|
894
|
+
if (x) {
|
|
895
|
+
const oe = {
|
|
896
|
+
id: $,
|
|
891
897
|
selectedNoteId: h,
|
|
892
898
|
type: F[0],
|
|
893
899
|
onClick: () => {
|
|
894
|
-
|
|
900
|
+
u($), N();
|
|
895
901
|
}
|
|
896
902
|
};
|
|
897
|
-
return
|
|
903
|
+
return Lt(x, oe, e), j.textPosition;
|
|
898
904
|
}
|
|
899
905
|
return null;
|
|
900
906
|
},
|
|
901
|
-
[t, h, e,
|
|
907
|
+
[t, h, e, u, N]
|
|
902
908
|
);
|
|
903
|
-
|
|
904
|
-
if (!
|
|
905
|
-
const
|
|
906
|
-
if (
|
|
909
|
+
Z(() => {
|
|
910
|
+
if (!W || !y || !t.current) return;
|
|
911
|
+
const g = t.current, v = y.notes, j = /* @__PURE__ */ new Set(), F = [], $ = [];
|
|
912
|
+
if (v.length === 0) {
|
|
907
913
|
if (w.current.length > 0) {
|
|
908
|
-
for (const
|
|
909
|
-
|
|
910
|
-
w.current = [],
|
|
914
|
+
for (const D of w.current)
|
|
915
|
+
He(D, g);
|
|
916
|
+
w.current = [], C([]);
|
|
911
917
|
}
|
|
912
918
|
return;
|
|
913
919
|
}
|
|
914
|
-
if (
|
|
915
|
-
const { notesForUpdate:
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
920
|
+
if (m && v[0].highlightData.pageLastModifiedAt !== m) {
|
|
921
|
+
const { notesForUpdate: D, noteIdsForDelete: x } = wt(
|
|
922
|
+
g,
|
|
923
|
+
v,
|
|
924
|
+
m
|
|
919
925
|
);
|
|
920
|
-
for (const
|
|
921
|
-
p({ id:
|
|
922
|
-
for (const
|
|
923
|
-
_(
|
|
926
|
+
for (const M of D)
|
|
927
|
+
p({ id: M.id, input: M }).catch((oe) => r == null ? void 0 : r(oe));
|
|
928
|
+
for (const M of x)
|
|
929
|
+
_(M, { onError: s });
|
|
924
930
|
} else {
|
|
925
|
-
for (const
|
|
926
|
-
const
|
|
927
|
-
|
|
931
|
+
for (const D of v) {
|
|
932
|
+
const x = H(D);
|
|
933
|
+
j.add(D.id), x && (F.push(D), $.push(x));
|
|
928
934
|
}
|
|
929
|
-
for (const
|
|
930
|
-
|
|
931
|
-
|
|
935
|
+
for (const D of w.current)
|
|
936
|
+
j.has(D.id) || He(D, g);
|
|
937
|
+
C($), w.current = F, h && kt(h);
|
|
932
938
|
}
|
|
933
939
|
}, [
|
|
934
|
-
|
|
940
|
+
W,
|
|
935
941
|
y,
|
|
936
942
|
H,
|
|
937
|
-
|
|
943
|
+
m,
|
|
938
944
|
t,
|
|
939
945
|
p,
|
|
940
946
|
_,
|
|
941
947
|
h
|
|
942
948
|
]);
|
|
943
|
-
const
|
|
944
|
-
const
|
|
945
|
-
if (!
|
|
946
|
-
const
|
|
949
|
+
const te = (g) => {
|
|
950
|
+
const v = t.current;
|
|
951
|
+
if (!O || !v) return;
|
|
952
|
+
const j = ne.fromRange(v, O), F = ee.fromRange(v, O);
|
|
947
953
|
E(
|
|
948
954
|
{
|
|
949
955
|
courseId: c,
|
|
950
956
|
objectId: a,
|
|
951
|
-
objectType:
|
|
957
|
+
objectType: f,
|
|
952
958
|
userText: "",
|
|
953
|
-
reaction: [
|
|
959
|
+
reaction: [g],
|
|
954
960
|
highlightData: {
|
|
955
|
-
selectedText:
|
|
961
|
+
selectedText: B,
|
|
956
962
|
textPosition: (F == null ? void 0 : F.toSelector()) ?? null,
|
|
957
|
-
range:
|
|
958
|
-
pageLastModifiedAt:
|
|
963
|
+
range: j.toSelector(),
|
|
964
|
+
pageLastModifiedAt: m ?? ""
|
|
959
965
|
}
|
|
960
966
|
},
|
|
961
967
|
{
|
|
962
|
-
onSuccess: (
|
|
963
|
-
var
|
|
964
|
-
const
|
|
965
|
-
|
|
968
|
+
onSuccess: ($) => {
|
|
969
|
+
var x;
|
|
970
|
+
const D = $.id;
|
|
971
|
+
A(), (x = window.getSelection()) == null || x.removeAllRanges(), u(D), N();
|
|
966
972
|
},
|
|
967
973
|
onError: o
|
|
968
974
|
}
|
|
969
975
|
);
|
|
970
976
|
};
|
|
971
|
-
return !
|
|
977
|
+
return !O || !P ? null : ot(
|
|
972
978
|
/* @__PURE__ */ i(
|
|
973
979
|
"div",
|
|
974
980
|
{
|
|
975
|
-
id:
|
|
981
|
+
id: pe,
|
|
976
982
|
role: "toolbar",
|
|
977
983
|
style: {
|
|
978
984
|
position: "fixed",
|
|
979
985
|
zIndex: 100,
|
|
980
|
-
top:
|
|
981
|
-
left:
|
|
986
|
+
top: P.top,
|
|
987
|
+
left: P.left,
|
|
982
988
|
whiteSpace: "nowrap"
|
|
983
989
|
},
|
|
984
|
-
onBlur: (
|
|
985
|
-
const
|
|
986
|
-
|
|
990
|
+
onBlur: (g) => {
|
|
991
|
+
const v = document.getElementById(pe);
|
|
992
|
+
v != null && v.contains(g.relatedTarget) || A();
|
|
987
993
|
},
|
|
988
|
-
children: /* @__PURE__ */ i(
|
|
994
|
+
children: /* @__PURE__ */ i(Cn, { onSelectReaction: te })
|
|
989
995
|
}
|
|
990
996
|
),
|
|
991
997
|
document.body
|
|
992
998
|
);
|
|
993
999
|
}
|
|
994
|
-
const
|
|
995
|
-
backgroundColor: t ===
|
|
996
|
-
underlineColor: t ===
|
|
997
|
-
underlineStyle: t ===
|
|
998
|
-
}),
|
|
1000
|
+
const In = (t, e) => ({
|
|
1001
|
+
backgroundColor: t === k.IMPORTANT ? e.colors.importantBackground : e.colors.confusingBackground,
|
|
1002
|
+
underlineColor: t === k.IMPORTANT ? e.colors.importantUnderline : e.colors.confusingUnderline,
|
|
1003
|
+
underlineStyle: t === k.IMPORTANT ? "solid" : "dashed"
|
|
1004
|
+
}), Se = ({
|
|
999
1005
|
children: t,
|
|
1000
|
-
type: e =
|
|
1006
|
+
type: e = k.IMPORTANT,
|
|
1001
1007
|
isCardActive: n = !0,
|
|
1002
1008
|
theme: o
|
|
1003
1009
|
}) => {
|
|
1004
|
-
const r =
|
|
1010
|
+
const r = In(e, o), l = {
|
|
1005
1011
|
position: "relative",
|
|
1006
|
-
backgroundColor: n ? r.backgroundColor :
|
|
1012
|
+
backgroundColor: n ? r.backgroundColor : Re(r.backgroundColor, 0.5),
|
|
1007
1013
|
textDecorationLine: "underline",
|
|
1008
1014
|
textDecorationStyle: r.underlineStyle,
|
|
1009
1015
|
textDecorationColor: r.underlineColor,
|
|
@@ -1012,47 +1018,47 @@ const vn = (t, e) => ({
|
|
|
1012
1018
|
lineHeight: "normal"
|
|
1013
1019
|
};
|
|
1014
1020
|
return /* @__PURE__ */ i("span", { "data-note-highlight": "true", style: l, children: t });
|
|
1015
|
-
},
|
|
1021
|
+
}, et = () => {
|
|
1016
1022
|
const { translations: t } = V();
|
|
1017
1023
|
return /* @__PURE__ */ S(T, { gap: "xx-small", alignItems: "start", as: "div", children: [
|
|
1018
|
-
/* @__PURE__ */ i(T.Item, { as: "div", children: /* @__PURE__ */ i(
|
|
1019
|
-
/* @__PURE__ */ i(T.Item, { padding: "xxx-small none", shouldShrink: !0, children: /* @__PURE__ */ i(
|
|
1024
|
+
/* @__PURE__ */ i(T.Item, { as: "div", children: /* @__PURE__ */ i(it, { color: "error" }) }),
|
|
1025
|
+
/* @__PURE__ */ i(T.Item, { padding: "xxx-small none", shouldShrink: !0, children: /* @__PURE__ */ i(be, { maxLines: 3, children: t.highlightUnavailable }) })
|
|
1020
1026
|
] });
|
|
1021
|
-
},
|
|
1027
|
+
}, xn = 100, wn = {
|
|
1022
1028
|
filter: null,
|
|
1023
1029
|
courseFilter: null,
|
|
1024
1030
|
currentPage: 1,
|
|
1025
1031
|
totalPages: void 0
|
|
1026
1032
|
};
|
|
1027
|
-
function
|
|
1033
|
+
function fe(t, e) {
|
|
1028
1034
|
const n = typeof e == "number" ? Math.min(e, t) : t;
|
|
1029
1035
|
return Math.max(1, n);
|
|
1030
1036
|
}
|
|
1031
|
-
function
|
|
1037
|
+
function kn(t, e) {
|
|
1032
1038
|
switch (e.type) {
|
|
1033
1039
|
case "SET_FILTER":
|
|
1034
1040
|
return { ...t, filter: e.payload, currentPage: 1 };
|
|
1035
1041
|
case "SET_COURSE_FILTER":
|
|
1036
1042
|
return { ...t, courseFilter: e.payload, currentPage: 1 };
|
|
1037
1043
|
case "SET_PAGE":
|
|
1038
|
-
return { ...t, currentPage:
|
|
1044
|
+
return { ...t, currentPage: fe(e.payload, t.totalPages) };
|
|
1039
1045
|
case "FOCUS_PAGE":
|
|
1040
1046
|
return { ...t, currentPage: Math.max(1, e.payload) };
|
|
1041
1047
|
case "INCREMENT_PAGE":
|
|
1042
|
-
return { ...t, currentPage:
|
|
1048
|
+
return { ...t, currentPage: fe(t.currentPage + 1, t.totalPages) };
|
|
1043
1049
|
case "DECREMENT_PAGE":
|
|
1044
|
-
return { ...t, currentPage:
|
|
1050
|
+
return { ...t, currentPage: fe(t.currentPage - 1, t.totalPages) };
|
|
1045
1051
|
case "SET_TOTAL_PAGES":
|
|
1046
1052
|
return t.totalPages === e.payload ? t : {
|
|
1047
1053
|
...t,
|
|
1048
1054
|
totalPages: e.payload,
|
|
1049
|
-
currentPage:
|
|
1055
|
+
currentPage: fe(t.currentPage, e.payload)
|
|
1050
1056
|
};
|
|
1051
1057
|
default:
|
|
1052
1058
|
return t;
|
|
1053
1059
|
}
|
|
1054
1060
|
}
|
|
1055
|
-
function
|
|
1061
|
+
function ro({
|
|
1056
1062
|
api: t,
|
|
1057
1063
|
courseId: e,
|
|
1058
1064
|
enableCourseFilter: n = !1,
|
|
@@ -1060,99 +1066,99 @@ function no({
|
|
|
1060
1066
|
pageSize: r = 16,
|
|
1061
1067
|
focusNoteId: s
|
|
1062
1068
|
}) {
|
|
1063
|
-
const [l, a] =
|
|
1064
|
-
|
|
1069
|
+
const [l, a] = Ue(kn, wn), { filter: f, courseFilter: c, currentPage: m, totalPages: h } = l;
|
|
1070
|
+
Z(() => {
|
|
1065
1071
|
a({ type: "SET_PAGE", payload: 1 });
|
|
1066
1072
|
}, [r]);
|
|
1067
|
-
const
|
|
1068
|
-
...
|
|
1069
|
-
...
|
|
1073
|
+
const u = n ? c : e, N = (m - 1) * r, y = {
|
|
1074
|
+
...u ? { courseId: u } : {},
|
|
1075
|
+
...f ? { reactions: [f] } : {},
|
|
1070
1076
|
...o ? { learningObject: o } : {}
|
|
1071
|
-
}, { data: E, isLoading: p, isError: _ } =
|
|
1077
|
+
}, { data: E, isLoading: p, isError: _ } = Ee({
|
|
1072
1078
|
api: t,
|
|
1073
1079
|
filter: y,
|
|
1074
1080
|
offset: N,
|
|
1075
1081
|
pageSize: r
|
|
1076
|
-
}), { data: w } =
|
|
1082
|
+
}), { data: w } = Ee({
|
|
1077
1083
|
api: t,
|
|
1078
1084
|
filter: y,
|
|
1079
1085
|
offset: 0,
|
|
1080
|
-
pageSize:
|
|
1086
|
+
pageSize: xn,
|
|
1081
1087
|
enabled: !!s
|
|
1082
|
-
}), b =
|
|
1083
|
-
|
|
1088
|
+
}), b = J(null);
|
|
1089
|
+
Z(() => {
|
|
1084
1090
|
if (!s) {
|
|
1085
1091
|
b.current = null;
|
|
1086
1092
|
return;
|
|
1087
1093
|
}
|
|
1088
1094
|
if (b.current === s) return;
|
|
1089
|
-
const
|
|
1090
|
-
if (
|
|
1095
|
+
const H = (w == null ? void 0 : w.notes.findIndex((g) => g.id === s)) ?? -1;
|
|
1096
|
+
if (H === -1) return;
|
|
1091
1097
|
b.current = s;
|
|
1092
|
-
const
|
|
1093
|
-
|
|
1094
|
-
}, [s, w, r,
|
|
1095
|
-
const
|
|
1096
|
-
|
|
1097
|
-
a({ type: "SET_TOTAL_PAGES", payload:
|
|
1098
|
-
}, [
|
|
1099
|
-
const
|
|
1100
|
-
a({ type: "SET_PAGE", payload:
|
|
1101
|
-
}, []),
|
|
1098
|
+
const te = Math.floor(H / r) + 1;
|
|
1099
|
+
te !== m && a({ type: "FOCUS_PAGE", payload: te });
|
|
1100
|
+
}, [s, w, r, m]);
|
|
1101
|
+
const C = (E == null ? void 0 : E.notes) ?? [], O = E == null ? void 0 : E.pageInfo, I = (O == null ? void 0 : O.totalNrOfPages) ?? void 0, B = s && w ? Math.ceil(w.notes.length / r) : void 0, L = I === void 0 && B === void 0 ? void 0 : Math.max(I ?? 0, B ?? 0);
|
|
1102
|
+
Z(() => {
|
|
1103
|
+
a({ type: "SET_TOTAL_PAGES", payload: L });
|
|
1104
|
+
}, [L]);
|
|
1105
|
+
const P = q((H) => {
|
|
1106
|
+
a({ type: "SET_PAGE", payload: H });
|
|
1107
|
+
}, []), R = q(() => {
|
|
1102
1108
|
a({
|
|
1103
1109
|
type: "INCREMENT_PAGE"
|
|
1104
1110
|
/* IncrementPage */
|
|
1105
1111
|
});
|
|
1106
|
-
}, []),
|
|
1112
|
+
}, []), W = q(() => {
|
|
1107
1113
|
a({
|
|
1108
1114
|
type: "DECREMENT_PAGE"
|
|
1109
1115
|
/* DecrementPage */
|
|
1110
1116
|
});
|
|
1111
|
-
}, []), Y =
|
|
1112
|
-
a({ type: "SET_FILTER", payload:
|
|
1113
|
-
}, []),
|
|
1114
|
-
a({ type: "SET_COURSE_FILTER", payload:
|
|
1117
|
+
}, []), Y = q((H) => {
|
|
1118
|
+
a({ type: "SET_FILTER", payload: H });
|
|
1119
|
+
}, []), A = q((H) => {
|
|
1120
|
+
a({ type: "SET_COURSE_FILTER", payload: H });
|
|
1115
1121
|
}, []);
|
|
1116
1122
|
return {
|
|
1117
|
-
notes:
|
|
1118
|
-
pageInfo:
|
|
1123
|
+
notes: C,
|
|
1124
|
+
pageInfo: O,
|
|
1119
1125
|
isLoading: p,
|
|
1120
1126
|
isError: _,
|
|
1121
|
-
filter:
|
|
1127
|
+
filter: f,
|
|
1122
1128
|
courseFilter: c,
|
|
1123
|
-
currentPage:
|
|
1129
|
+
currentPage: m,
|
|
1124
1130
|
totalPages: h,
|
|
1125
1131
|
setFilter: Y,
|
|
1126
|
-
setCourseFilter:
|
|
1127
|
-
setPage:
|
|
1128
|
-
fetchNextPage:
|
|
1129
|
-
fetchPreviousPage:
|
|
1132
|
+
setCourseFilter: A,
|
|
1133
|
+
setPage: P,
|
|
1134
|
+
fetchNextPage: R,
|
|
1135
|
+
fetchPreviousPage: W
|
|
1130
1136
|
};
|
|
1131
1137
|
}
|
|
1132
|
-
const
|
|
1133
|
-
function
|
|
1134
|
-
const { translations: n } = V(), o =
|
|
1138
|
+
const Ne = "all";
|
|
1139
|
+
function so({ filter: t, setFilter: e }) {
|
|
1140
|
+
const { translations: n } = V(), o = ae(
|
|
1135
1141
|
() => [
|
|
1136
|
-
{ label: n.allNotes, value:
|
|
1137
|
-
{ label: n.important, value:
|
|
1138
|
-
{ label: n.unclear, value:
|
|
1142
|
+
{ label: n.allNotes, value: Ne },
|
|
1143
|
+
{ label: n.important, value: k.IMPORTANT },
|
|
1144
|
+
{ label: n.unclear, value: k.CONFUSING }
|
|
1139
1145
|
],
|
|
1140
1146
|
[n]
|
|
1141
|
-
), r =
|
|
1147
|
+
), r = q(
|
|
1142
1148
|
(l, { value: a }) => {
|
|
1143
|
-
e(!a || a ===
|
|
1149
|
+
e(!a || a === Ne ? null : a);
|
|
1144
1150
|
},
|
|
1145
1151
|
[e]
|
|
1146
1152
|
);
|
|
1147
1153
|
return {
|
|
1148
|
-
filterElement:
|
|
1154
|
+
filterElement: ae(
|
|
1149
1155
|
() => /* @__PURE__ */ i(
|
|
1150
|
-
|
|
1156
|
+
Ae,
|
|
1151
1157
|
{
|
|
1152
|
-
renderLabel: /* @__PURE__ */ i(
|
|
1153
|
-
value: t ??
|
|
1158
|
+
renderLabel: /* @__PURE__ */ i(Ge, { children: n.notes }),
|
|
1159
|
+
value: t ?? Ne,
|
|
1154
1160
|
onChange: r,
|
|
1155
|
-
children: o.map((l) => /* @__PURE__ */ i(
|
|
1161
|
+
children: o.map((l) => /* @__PURE__ */ i(Ae.Option, { id: l.value, value: l.value, children: l.label }, l.value))
|
|
1156
1162
|
}
|
|
1157
1163
|
),
|
|
1158
1164
|
[t, o, r, n.notes]
|
|
@@ -1161,17 +1167,17 @@ function oo({ filter: t, setFilter: e }) {
|
|
|
1161
1167
|
handleReactionFilterChange: r
|
|
1162
1168
|
};
|
|
1163
1169
|
}
|
|
1164
|
-
const
|
|
1170
|
+
const On = ({ hasActiveFilter: t = !1 }) => {
|
|
1165
1171
|
const { translations: e } = V(), n = t ? e.nothingHereYet : e.emptyStateHeading, o = t ? e.adjustFiltersOrCreate : e.emptyStateDescription;
|
|
1166
|
-
return /* @__PURE__ */ i(
|
|
1167
|
-
!t && /* @__PURE__ */ i(
|
|
1168
|
-
/* @__PURE__ */ i(
|
|
1169
|
-
/* @__PURE__ */ i(
|
|
1172
|
+
return /* @__PURE__ */ i(G, { as: "div", textAlign: "center", children: /* @__PURE__ */ S(T, { direction: "column", alignItems: "center", gap: "small", children: [
|
|
1173
|
+
!t && /* @__PURE__ */ i(lt, { size: "medium" }),
|
|
1174
|
+
/* @__PURE__ */ i(ge, { level: "h3", children: n }),
|
|
1175
|
+
/* @__PURE__ */ i(K, { color: "secondary", children: o })
|
|
1170
1176
|
] }) });
|
|
1171
|
-
},
|
|
1172
|
-
const { isTrayOpen: e, closeTray: n } =
|
|
1177
|
+
}, io = ({ children: t }) => {
|
|
1178
|
+
const { isTrayOpen: e, closeTray: n } = Je(), { translations: o } = V();
|
|
1173
1179
|
return /* @__PURE__ */ i(
|
|
1174
|
-
|
|
1180
|
+
dt,
|
|
1175
1181
|
{
|
|
1176
1182
|
label: o.notebook,
|
|
1177
1183
|
open: e,
|
|
@@ -1179,10 +1185,10 @@ const wn = ({ hasActiveFilter: t = !1 }) => {
|
|
|
1179
1185
|
placement: "end",
|
|
1180
1186
|
size: "regular",
|
|
1181
1187
|
children: /* @__PURE__ */ S(T, { direction: "column", height: "100vh", children: [
|
|
1182
|
-
/* @__PURE__ */ i(T.Item, { children: /* @__PURE__ */ i(
|
|
1183
|
-
/* @__PURE__ */ i(
|
|
1188
|
+
/* @__PURE__ */ i(T.Item, { children: /* @__PURE__ */ i(G, { as: "div", padding: "small medium", borderWidth: "0 0 small 0", children: /* @__PURE__ */ S(T, { justifyItems: "space-between", alignItems: "center", children: [
|
|
1189
|
+
/* @__PURE__ */ i(ge, { level: "h3", children: o.notebook }),
|
|
1184
1190
|
/* @__PURE__ */ i(
|
|
1185
|
-
|
|
1191
|
+
ct,
|
|
1186
1192
|
{
|
|
1187
1193
|
screenReaderLabel: o.closeNotebookPanel,
|
|
1188
1194
|
onClick: n,
|
|
@@ -1195,54 +1201,54 @@ const wn = ({ hasActiveFilter: t = !1 }) => {
|
|
|
1195
1201
|
] })
|
|
1196
1202
|
}
|
|
1197
1203
|
);
|
|
1198
|
-
},
|
|
1199
|
-
[
|
|
1204
|
+
}, Rn = {
|
|
1205
|
+
[k.IMPORTANT]: {
|
|
1200
1206
|
color: "success",
|
|
1201
1207
|
translationKey: "important",
|
|
1202
|
-
icon: /* @__PURE__ */ i(
|
|
1208
|
+
icon: /* @__PURE__ */ i(Ie, { size: "x-small" })
|
|
1203
1209
|
},
|
|
1204
|
-
[
|
|
1210
|
+
[k.CONFUSING]: {
|
|
1205
1211
|
color: "danger",
|
|
1206
1212
|
translationKey: "unclear",
|
|
1207
|
-
icon: /* @__PURE__ */ i(
|
|
1213
|
+
icon: /* @__PURE__ */ i(Ce, { size: "x-small" })
|
|
1208
1214
|
}
|
|
1209
|
-
},
|
|
1210
|
-
const { translations: o } = V(), r =
|
|
1215
|
+
}, tt = ({ type: t, onTypeChange: e, renderAsMenuTrigger: n = !1 }) => {
|
|
1216
|
+
const { translations: o } = V(), r = Rn[t], s = o[r.translationKey], [l, a] = z(!1), f = J(null), c = J(null), m = q(
|
|
1211
1217
|
(h) => {
|
|
1212
1218
|
e == null || e(h), a(!1);
|
|
1213
1219
|
},
|
|
1214
1220
|
[e]
|
|
1215
1221
|
);
|
|
1216
1222
|
return n && e ? /* @__PURE__ */ S(
|
|
1217
|
-
|
|
1223
|
+
re,
|
|
1218
1224
|
{
|
|
1219
1225
|
placement: "bottom start",
|
|
1220
1226
|
show: l,
|
|
1221
1227
|
onToggle: (h) => a(h),
|
|
1222
1228
|
shouldHideOnSelect: !0,
|
|
1223
1229
|
shouldFocusTriggerOnClose: !0,
|
|
1224
|
-
trigger: /* @__PURE__ */ i(
|
|
1230
|
+
trigger: /* @__PURE__ */ i(_e, { color: r.color, renderIcon: r.icon, children: s }),
|
|
1225
1231
|
children: [
|
|
1226
|
-
/* @__PURE__ */ S(
|
|
1227
|
-
/* @__PURE__ */ i(
|
|
1232
|
+
/* @__PURE__ */ S(re.Item, { ref: f, onClick: () => m(k.CONFUSING), children: [
|
|
1233
|
+
/* @__PURE__ */ i(Ce, { size: "x-small" }),
|
|
1228
1234
|
` ${o.markUnclear}`
|
|
1229
1235
|
] }),
|
|
1230
|
-
/* @__PURE__ */ S(
|
|
1231
|
-
/* @__PURE__ */ i(
|
|
1236
|
+
/* @__PURE__ */ S(re.Item, { ref: c, onClick: () => m(k.IMPORTANT), children: [
|
|
1237
|
+
/* @__PURE__ */ i(Ie, { size: "x-small" }),
|
|
1232
1238
|
` ${o.markImportant}`
|
|
1233
1239
|
] })
|
|
1234
1240
|
]
|
|
1235
1241
|
}
|
|
1236
|
-
) : /* @__PURE__ */ i(
|
|
1242
|
+
) : /* @__PURE__ */ i(G, { display: "inline-flex", children: /* @__PURE__ */ i(_e, { color: r.color, renderIcon: r.icon, children: s }) });
|
|
1237
1243
|
};
|
|
1238
|
-
function
|
|
1244
|
+
function je(t, e) {
|
|
1239
1245
|
return (t instanceof Date ? t : new Date(t)).toLocaleString(e, {
|
|
1240
1246
|
year: "numeric",
|
|
1241
1247
|
month: "short",
|
|
1242
1248
|
day: "numeric"
|
|
1243
1249
|
});
|
|
1244
1250
|
}
|
|
1245
|
-
const
|
|
1251
|
+
const Pn = ({
|
|
1246
1252
|
noteId: t,
|
|
1247
1253
|
date: e,
|
|
1248
1254
|
highlight: n,
|
|
@@ -1251,28 +1257,28 @@ const On = ({
|
|
|
1251
1257
|
onClick: s,
|
|
1252
1258
|
onDelete: l,
|
|
1253
1259
|
onSaveNote: a,
|
|
1254
|
-
onTypeChange:
|
|
1260
|
+
onTypeChange: f,
|
|
1255
1261
|
isActive: c,
|
|
1256
|
-
isPanelView:
|
|
1262
|
+
isPanelView: m = !1,
|
|
1257
1263
|
courseName: h,
|
|
1258
|
-
locale:
|
|
1264
|
+
locale: u,
|
|
1259
1265
|
highlightTheme: N,
|
|
1260
1266
|
renderLink: y,
|
|
1261
1267
|
href: E
|
|
1262
1268
|
}) => {
|
|
1263
|
-
const { translations: p } = V(), [_, w] =
|
|
1264
|
-
|
|
1269
|
+
const { translations: p } = V(), [_, w] = z(!1), [b, C] = z(!1), [O, I] = z(o || ""), [B, L] = z(!1), P = J(null), R = q((g) => {
|
|
1270
|
+
P.current = g;
|
|
1265
1271
|
}, []);
|
|
1266
|
-
|
|
1267
|
-
var
|
|
1268
|
-
c && ((
|
|
1272
|
+
Z(() => {
|
|
1273
|
+
var g, v;
|
|
1274
|
+
c && ((g = P.current) == null || g.scrollIntoView({ behavior: "smooth", block: "nearest" }), (v = P.current) == null || v.focus());
|
|
1269
1275
|
}, [c]);
|
|
1270
|
-
const
|
|
1271
|
-
|
|
1272
|
-
},
|
|
1273
|
-
n &&
|
|
1274
|
-
const
|
|
1275
|
-
|
|
1276
|
+
const W = r === k.IMPORTANT ? p.important : p.unclear, Y = (g) => {
|
|
1277
|
+
g.key === "Enter" && (g.preventDefault(), s == null || s());
|
|
1278
|
+
}, A = [W, p.note];
|
|
1279
|
+
n && A.push(n), o && A.push(o), e && A.push(je(e, u)), h && A.push(h);
|
|
1280
|
+
const H = A.join(", "), te = /* @__PURE__ */ S(
|
|
1281
|
+
G,
|
|
1276
1282
|
{
|
|
1277
1283
|
as: "div",
|
|
1278
1284
|
borderWidth: "small",
|
|
@@ -1280,11 +1286,11 @@ const On = ({
|
|
|
1280
1286
|
padding: "small",
|
|
1281
1287
|
position: "relative",
|
|
1282
1288
|
role: E || b ? void 0 : "button",
|
|
1283
|
-
"aria-label": E ? void 0 :
|
|
1289
|
+
"aria-label": E ? void 0 : H,
|
|
1284
1290
|
"aria-pressed": E || b ? void 0 : c,
|
|
1285
1291
|
tabIndex: E || c ? -1 : 0,
|
|
1286
1292
|
"data-testid": `note-card-${t}`,
|
|
1287
|
-
elementRef:
|
|
1293
|
+
elementRef: R,
|
|
1288
1294
|
onClick: c ? void 0 : s,
|
|
1289
1295
|
onMouseEnter: () => w(!0),
|
|
1290
1296
|
onMouseLeave: () => w(!1),
|
|
@@ -1293,38 +1299,38 @@ const On = ({
|
|
|
1293
1299
|
children: [
|
|
1294
1300
|
/* @__PURE__ */ S(T, { direction: "column", gap: "small", children: [
|
|
1295
1301
|
/* @__PURE__ */ i(
|
|
1296
|
-
|
|
1302
|
+
tt,
|
|
1297
1303
|
{
|
|
1298
1304
|
type: r,
|
|
1299
|
-
onTypeChange:
|
|
1300
|
-
renderAsMenuTrigger:
|
|
1305
|
+
onTypeChange: m && f ? (g) => f(t, g) : void 0,
|
|
1306
|
+
renderAsMenuTrigger: m && !!f && !!c
|
|
1301
1307
|
}
|
|
1302
1308
|
),
|
|
1303
|
-
n ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children: /* @__PURE__ */ i(
|
|
1304
|
-
|
|
1309
|
+
n ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children: /* @__PURE__ */ i(K, { children: c && m ? /* @__PURE__ */ i(
|
|
1310
|
+
Se,
|
|
1305
1311
|
{
|
|
1306
1312
|
type: r,
|
|
1307
1313
|
isCardActive: !!c || _,
|
|
1308
1314
|
theme: N,
|
|
1309
1315
|
children: n
|
|
1310
1316
|
}
|
|
1311
|
-
) : /* @__PURE__ */ i(
|
|
1312
|
-
|
|
1317
|
+
) : /* @__PURE__ */ i(be, { maxLines: 3, truncate: "word", children: /* @__PURE__ */ i(
|
|
1318
|
+
Se,
|
|
1313
1319
|
{
|
|
1314
1320
|
type: r,
|
|
1315
1321
|
isCardActive: !!c || _,
|
|
1316
1322
|
theme: N,
|
|
1317
1323
|
children: n
|
|
1318
1324
|
}
|
|
1319
|
-
) }) }) }) : /* @__PURE__ */ i(
|
|
1325
|
+
) }) }) }) : /* @__PURE__ */ i(et, {}),
|
|
1320
1326
|
/* @__PURE__ */ S(T, { direction: "column", gap: "small", children: [
|
|
1321
|
-
b &&
|
|
1327
|
+
b && m ? /* @__PURE__ */ S(T, { direction: "column", gap: "x-small", children: [
|
|
1322
1328
|
/* @__PURE__ */ i(
|
|
1323
|
-
|
|
1329
|
+
We,
|
|
1324
1330
|
{
|
|
1325
|
-
label: /* @__PURE__ */ i(
|
|
1326
|
-
value:
|
|
1327
|
-
onChange: (
|
|
1331
|
+
label: /* @__PURE__ */ i(Ge, { children: p.editNote }),
|
|
1332
|
+
value: O,
|
|
1333
|
+
onChange: (g) => I(g.target.value),
|
|
1328
1334
|
placeholder: p.addNoteOptional
|
|
1329
1335
|
}
|
|
1330
1336
|
),
|
|
@@ -1336,7 +1342,7 @@ const On = ({
|
|
|
1336
1342
|
size: "small",
|
|
1337
1343
|
"data-testid": `note-card-${t}-cancel`,
|
|
1338
1344
|
onClick: () => {
|
|
1339
|
-
|
|
1345
|
+
I(o || ""), C(!1);
|
|
1340
1346
|
},
|
|
1341
1347
|
children: p.cancel
|
|
1342
1348
|
}
|
|
@@ -1349,51 +1355,51 @@ const On = ({
|
|
|
1349
1355
|
size: "small",
|
|
1350
1356
|
"data-testid": `note-card-${t}-save`,
|
|
1351
1357
|
onClick: () => {
|
|
1352
|
-
a == null || a(t,
|
|
1358
|
+
a == null || a(t, O.trim()), C(!1);
|
|
1353
1359
|
},
|
|
1354
1360
|
children: p.save
|
|
1355
1361
|
}
|
|
1356
1362
|
) })
|
|
1357
1363
|
] })
|
|
1358
|
-
] }) : o ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children: c &&
|
|
1364
|
+
] }) : o ? /* @__PURE__ */ i("div", { style: { wordBreak: "break-word", overflowWrap: "break-word" }, children: c && m ? /* @__PURE__ */ S(K, { children: [
|
|
1359
1365
|
o,
|
|
1360
1366
|
" ",
|
|
1361
1367
|
/* @__PURE__ */ i(
|
|
1362
|
-
|
|
1368
|
+
ie,
|
|
1363
1369
|
{
|
|
1364
1370
|
size: "small",
|
|
1365
1371
|
withBackground: !1,
|
|
1366
1372
|
withBorder: !1,
|
|
1367
1373
|
screenReaderLabel: p.editNote,
|
|
1368
1374
|
"data-testid": `note-card-${t}-edit`,
|
|
1369
|
-
onClick: (
|
|
1370
|
-
|
|
1375
|
+
onClick: (g) => {
|
|
1376
|
+
g.stopPropagation(), C(!0);
|
|
1371
1377
|
},
|
|
1372
|
-
children: /* @__PURE__ */ i(
|
|
1378
|
+
children: /* @__PURE__ */ i(ye, {})
|
|
1373
1379
|
}
|
|
1374
1380
|
)
|
|
1375
|
-
] }) : /* @__PURE__ */ i(
|
|
1381
|
+
] }) : /* @__PURE__ */ i(K, { children: /* @__PURE__ */ i(be, { maxLines: 3, truncate: "word", children: o }) }) }) : m && c ? /* @__PURE__ */ i("div", { children: /* @__PURE__ */ S(K, { color: "secondary", children: [
|
|
1376
1382
|
p.addNotePrompt,
|
|
1377
1383
|
" ",
|
|
1378
1384
|
/* @__PURE__ */ i(
|
|
1379
|
-
|
|
1385
|
+
ie,
|
|
1380
1386
|
{
|
|
1381
1387
|
size: "small",
|
|
1382
1388
|
withBackground: !1,
|
|
1383
1389
|
withBorder: !1,
|
|
1384
1390
|
screenReaderLabel: p.editNote,
|
|
1385
1391
|
"data-testid": `note-card-${t}-edit`,
|
|
1386
|
-
onClick: (
|
|
1387
|
-
|
|
1392
|
+
onClick: (g) => {
|
|
1393
|
+
g.stopPropagation(), C(!0);
|
|
1388
1394
|
},
|
|
1389
|
-
children: /* @__PURE__ */ i(
|
|
1395
|
+
children: /* @__PURE__ */ i(ye, {})
|
|
1390
1396
|
}
|
|
1391
1397
|
)
|
|
1392
1398
|
] }) }) : null,
|
|
1393
1399
|
/* @__PURE__ */ S(T, { justifyItems: "space-between", alignItems: "center", children: [
|
|
1394
|
-
/* @__PURE__ */ i(
|
|
1400
|
+
/* @__PURE__ */ i(K, { size: "small", color: "secondary", children: je(e, u) }),
|
|
1395
1401
|
c && l && /* @__PURE__ */ i(
|
|
1396
|
-
|
|
1402
|
+
ie,
|
|
1397
1403
|
{
|
|
1398
1404
|
size: "small",
|
|
1399
1405
|
withBackground: !1,
|
|
@@ -1401,18 +1407,18 @@ const On = ({
|
|
|
1401
1407
|
color: "danger",
|
|
1402
1408
|
screenReaderLabel: p.deleteNote,
|
|
1403
1409
|
"data-testid": `note-card-${t}-delete`,
|
|
1404
|
-
onClick: (
|
|
1405
|
-
|
|
1410
|
+
onClick: (g) => {
|
|
1411
|
+
g.stopPropagation(), L(!0);
|
|
1406
1412
|
},
|
|
1407
|
-
children: /* @__PURE__ */ i(
|
|
1413
|
+
children: /* @__PURE__ */ i(me, {})
|
|
1408
1414
|
}
|
|
1409
1415
|
)
|
|
1410
1416
|
] }),
|
|
1411
|
-
h && /* @__PURE__ */ i(
|
|
1417
|
+
h && /* @__PURE__ */ i(K, { size: "small", color: "secondary", children: h })
|
|
1412
1418
|
] })
|
|
1413
1419
|
] }),
|
|
1414
|
-
|
|
1415
|
-
|
|
1420
|
+
B && l && /* @__PURE__ */ i(
|
|
1421
|
+
G,
|
|
1416
1422
|
{
|
|
1417
1423
|
as: "div",
|
|
1418
1424
|
background: "primary",
|
|
@@ -1439,10 +1445,10 @@ const On = ({
|
|
|
1439
1445
|
display: "block",
|
|
1440
1446
|
color: "danger",
|
|
1441
1447
|
size: "small",
|
|
1442
|
-
renderIcon: /* @__PURE__ */ i(
|
|
1448
|
+
renderIcon: /* @__PURE__ */ i(me, {}),
|
|
1443
1449
|
"data-testid": `note-card-${t}-confirm-delete`,
|
|
1444
|
-
onClick: (
|
|
1445
|
-
|
|
1450
|
+
onClick: (g) => {
|
|
1451
|
+
g.stopPropagation(), l(t), L(!1);
|
|
1446
1452
|
},
|
|
1447
1453
|
children: p.deleteNote
|
|
1448
1454
|
}
|
|
@@ -1453,8 +1459,8 @@ const On = ({
|
|
|
1453
1459
|
display: "block",
|
|
1454
1460
|
size: "small",
|
|
1455
1461
|
"data-testid": `note-card-${t}-cancel-delete`,
|
|
1456
|
-
onClick: (
|
|
1457
|
-
|
|
1462
|
+
onClick: (g) => {
|
|
1463
|
+
g.stopPropagation(), L(!1);
|
|
1458
1464
|
},
|
|
1459
1465
|
children: p.cancel
|
|
1460
1466
|
}
|
|
@@ -1467,27 +1473,27 @@ const On = ({
|
|
|
1467
1473
|
]
|
|
1468
1474
|
}
|
|
1469
1475
|
);
|
|
1470
|
-
return E && y ? y({ href: E, children:
|
|
1476
|
+
return E && y ? y({ href: E, children: te, ariaLabel: H }) : te;
|
|
1471
1477
|
};
|
|
1472
|
-
function
|
|
1478
|
+
function Dn(t, e) {
|
|
1473
1479
|
const n = Array.from({ length: e }, () => []);
|
|
1474
1480
|
return t.forEach((o, r) => {
|
|
1475
1481
|
n[r % e].push(o);
|
|
1476
1482
|
}), n;
|
|
1477
1483
|
}
|
|
1478
|
-
const
|
|
1484
|
+
const Ln = {
|
|
1479
1485
|
display: "flex",
|
|
1480
1486
|
gap: "1rem",
|
|
1481
1487
|
boxSizing: "border-box",
|
|
1482
1488
|
width: "100%",
|
|
1483
1489
|
alignItems: "flex-start"
|
|
1484
|
-
},
|
|
1490
|
+
}, An = {
|
|
1485
1491
|
display: "flex",
|
|
1486
1492
|
flexDirection: "column",
|
|
1487
1493
|
gap: "1rem",
|
|
1488
1494
|
flex: 1,
|
|
1489
1495
|
minWidth: 0
|
|
1490
|
-
},
|
|
1496
|
+
}, lo = ({
|
|
1491
1497
|
notes: t,
|
|
1492
1498
|
isLoading: e,
|
|
1493
1499
|
isError: n,
|
|
@@ -1496,57 +1502,57 @@ const Pn = {
|
|
|
1496
1502
|
onPageChange: s,
|
|
1497
1503
|
onNoteSelect: l,
|
|
1498
1504
|
onNoteDelete: a,
|
|
1499
|
-
onNoteSave:
|
|
1505
|
+
onNoteSave: f,
|
|
1500
1506
|
onNoteTypeChange: c,
|
|
1501
|
-
selectedNoteId:
|
|
1507
|
+
selectedNoteId: m,
|
|
1502
1508
|
hasActiveFilter: h = !1,
|
|
1503
|
-
columnCount:
|
|
1509
|
+
columnCount: u = 1,
|
|
1504
1510
|
highlightTheme: N,
|
|
1505
1511
|
locale: y,
|
|
1506
1512
|
renderNoteLink: E,
|
|
1507
1513
|
noteHref: p
|
|
1508
1514
|
}) => {
|
|
1509
|
-
const { translations: _ } = V(), w =
|
|
1510
|
-
() =>
|
|
1511
|
-
[t,
|
|
1515
|
+
const { translations: _ } = V(), w = ae(
|
|
1516
|
+
() => Dn(t, u),
|
|
1517
|
+
[t, u]
|
|
1512
1518
|
);
|
|
1513
1519
|
if (e)
|
|
1514
|
-
return /* @__PURE__ */ i(
|
|
1520
|
+
return /* @__PURE__ */ i(G, { as: "div", textAlign: "center", padding: "large", "data-testid": "notes-loading", children: /* @__PURE__ */ i(ft, { renderTitle: _.loadingNotes }) });
|
|
1515
1521
|
if (n)
|
|
1516
|
-
return /* @__PURE__ */ i(
|
|
1522
|
+
return /* @__PURE__ */ i(G, { as: "div", textAlign: "center", padding: "large", "data-testid": "notes-error", children: /* @__PURE__ */ i(ge, { level: "h4", children: _.failedToLoadNotes }) });
|
|
1517
1523
|
if (t.length === 0)
|
|
1518
|
-
return /* @__PURE__ */ i(
|
|
1524
|
+
return /* @__PURE__ */ i(G, { as: "div", padding: "large", "data-testid": "empty-notes", children: /* @__PURE__ */ i(On, { hasActiveFilter: h }) });
|
|
1519
1525
|
const b = typeof o == "number" && typeof r == "number" && r > 1 && s !== void 0;
|
|
1520
|
-
return /* @__PURE__ */ S(
|
|
1521
|
-
/* @__PURE__ */ i("div", { style:
|
|
1526
|
+
return /* @__PURE__ */ S(nt, { children: [
|
|
1527
|
+
/* @__PURE__ */ i("div", { style: Ln, "data-testid": "notes-grid", children: w.map((C, O) => (
|
|
1522
1528
|
// oxlint-disable-next-line react/no-array-index-key -- columns are positional, index is stable
|
|
1523
|
-
/* @__PURE__ */ i("div", { style:
|
|
1524
|
-
var
|
|
1529
|
+
/* @__PURE__ */ i("div", { style: An, children: C.map((I) => {
|
|
1530
|
+
var B;
|
|
1525
1531
|
return /* @__PURE__ */ i(
|
|
1526
|
-
|
|
1532
|
+
Pn,
|
|
1527
1533
|
{
|
|
1528
|
-
noteId:
|
|
1529
|
-
date:
|
|
1530
|
-
type:
|
|
1531
|
-
highlight: (
|
|
1532
|
-
note:
|
|
1533
|
-
isActive:
|
|
1534
|
-
isPanelView: !!
|
|
1535
|
-
onClick: l ? () => l(
|
|
1536
|
-
onDelete: a ? (
|
|
1537
|
-
onSaveNote:
|
|
1538
|
-
onTypeChange: c ? (
|
|
1534
|
+
noteId: I.id,
|
|
1535
|
+
date: I.createdAt,
|
|
1536
|
+
type: I.reaction[0] ?? k.IMPORTANT,
|
|
1537
|
+
highlight: (B = I.highlightData) == null ? void 0 : B.selectedText,
|
|
1538
|
+
note: I.userText,
|
|
1539
|
+
isActive: m === I.id,
|
|
1540
|
+
isPanelView: !!m,
|
|
1541
|
+
onClick: l ? () => l(I.id) : void 0,
|
|
1542
|
+
onDelete: a ? (L) => a(L) : void 0,
|
|
1543
|
+
onSaveNote: f ? (L, P) => f(L, P) : void 0,
|
|
1544
|
+
onTypeChange: c ? (L, P) => c(L, P) : void 0,
|
|
1539
1545
|
highlightTheme: N,
|
|
1540
1546
|
locale: y,
|
|
1541
1547
|
renderLink: E,
|
|
1542
|
-
href: p ? p(
|
|
1548
|
+
href: p ? p(I.id, I) : void 0
|
|
1543
1549
|
},
|
|
1544
|
-
|
|
1550
|
+
I.id
|
|
1545
1551
|
);
|
|
1546
|
-
}) },
|
|
1552
|
+
}) }, O)
|
|
1547
1553
|
)) }),
|
|
1548
1554
|
b && /* @__PURE__ */ i(T, { justifyItems: "center", padding: "small", "data-testid": "notes-pagination", children: /* @__PURE__ */ i(T.Item, { children: /* @__PURE__ */ i(
|
|
1549
|
-
|
|
1555
|
+
ut,
|
|
1550
1556
|
{
|
|
1551
1557
|
as: "nav",
|
|
1552
1558
|
variant: "input",
|
|
@@ -1558,7 +1564,7 @@ const Pn = {
|
|
|
1558
1564
|
}
|
|
1559
1565
|
) }) })
|
|
1560
1566
|
] });
|
|
1561
|
-
},
|
|
1567
|
+
}, ao = ({
|
|
1562
1568
|
noteText: t,
|
|
1563
1569
|
reaction: e,
|
|
1564
1570
|
highlightText: n,
|
|
@@ -1567,18 +1573,18 @@ const Pn = {
|
|
|
1567
1573
|
onDelete: s,
|
|
1568
1574
|
onTypeChange: l,
|
|
1569
1575
|
onBack: a,
|
|
1570
|
-
editing:
|
|
1576
|
+
editing: f = !1
|
|
1571
1577
|
}) => {
|
|
1572
|
-
const { translations: c } = V(), [
|
|
1578
|
+
const { translations: c } = V(), [m, h] = z(f), [u, N] = z(t || ""), [y, E] = z(!1);
|
|
1573
1579
|
return /* @__PURE__ */ S(T, { direction: "column", gap: "small", "data-testid": "single-note", children: [
|
|
1574
|
-
n != null ? /* @__PURE__ */ i(
|
|
1575
|
-
/* @__PURE__ */ i(
|
|
1576
|
-
|
|
1580
|
+
n != null ? /* @__PURE__ */ i(G, { as: "div", children: /* @__PURE__ */ i(K, { children: /* @__PURE__ */ i(Se, { type: e, isCardActive: !0, theme: o, children: n }) }) }) : /* @__PURE__ */ i(et, {}),
|
|
1581
|
+
/* @__PURE__ */ i(tt, { type: e, onTypeChange: l, renderAsMenuTrigger: !!l }),
|
|
1582
|
+
m ? /* @__PURE__ */ S(T, { direction: "column", gap: "x-small", children: [
|
|
1577
1583
|
/* @__PURE__ */ i(
|
|
1578
|
-
|
|
1584
|
+
We,
|
|
1579
1585
|
{
|
|
1580
1586
|
label: c.addNoteOptional,
|
|
1581
|
-
value:
|
|
1587
|
+
value: u,
|
|
1582
1588
|
onChange: (p) => N(p.target.value),
|
|
1583
1589
|
resize: "vertical"
|
|
1584
1590
|
}
|
|
@@ -1604,23 +1610,23 @@ const Pn = {
|
|
|
1604
1610
|
size: "small",
|
|
1605
1611
|
"data-testid": "single-note-save",
|
|
1606
1612
|
onClick: () => {
|
|
1607
|
-
r(
|
|
1613
|
+
r(u), h(!1);
|
|
1608
1614
|
},
|
|
1609
1615
|
children: c.save
|
|
1610
1616
|
}
|
|
1611
1617
|
) })
|
|
1612
1618
|
] })
|
|
1613
1619
|
] }) : /* @__PURE__ */ S(T, { direction: "column", gap: "small", children: [
|
|
1614
|
-
t && /* @__PURE__ */ S(
|
|
1615
|
-
/* @__PURE__ */ i(
|
|
1616
|
-
/* @__PURE__ */ i(
|
|
1620
|
+
t && /* @__PURE__ */ S(G, { as: "div", children: [
|
|
1621
|
+
/* @__PURE__ */ i(ge, { level: "h4", margin: "0 0 xx-small 0", children: c.note }),
|
|
1622
|
+
/* @__PURE__ */ i(K, { children: t })
|
|
1617
1623
|
] }),
|
|
1618
1624
|
/* @__PURE__ */ S(T, { justifyItems: "space-between", children: [
|
|
1619
1625
|
/* @__PURE__ */ i(
|
|
1620
1626
|
X,
|
|
1621
1627
|
{
|
|
1622
1628
|
size: "small",
|
|
1623
|
-
renderIcon: /* @__PURE__ */ i(
|
|
1629
|
+
renderIcon: /* @__PURE__ */ i(at, {}),
|
|
1624
1630
|
"data-testid": "single-note-back",
|
|
1625
1631
|
onClick: () => a == null ? void 0 : a(),
|
|
1626
1632
|
children: c.back
|
|
@@ -1628,7 +1634,7 @@ const Pn = {
|
|
|
1628
1634
|
),
|
|
1629
1635
|
/* @__PURE__ */ S(T, { gap: "xx-small", children: [
|
|
1630
1636
|
s && /* @__PURE__ */ i(
|
|
1631
|
-
|
|
1637
|
+
ie,
|
|
1632
1638
|
{
|
|
1633
1639
|
size: "small",
|
|
1634
1640
|
withBackground: !1,
|
|
@@ -1637,11 +1643,11 @@ const Pn = {
|
|
|
1637
1643
|
screenReaderLabel: c.deleteNote,
|
|
1638
1644
|
"data-testid": "single-note-delete",
|
|
1639
1645
|
onClick: () => E(!0),
|
|
1640
|
-
children: /* @__PURE__ */ i(
|
|
1646
|
+
children: /* @__PURE__ */ i(me, {})
|
|
1641
1647
|
}
|
|
1642
1648
|
),
|
|
1643
1649
|
/* @__PURE__ */ i(
|
|
1644
|
-
|
|
1650
|
+
ie,
|
|
1645
1651
|
{
|
|
1646
1652
|
size: "small",
|
|
1647
1653
|
withBackground: !1,
|
|
@@ -1649,19 +1655,19 @@ const Pn = {
|
|
|
1649
1655
|
screenReaderLabel: c.editNote,
|
|
1650
1656
|
"data-testid": "single-note-edit",
|
|
1651
1657
|
onClick: () => h(!0),
|
|
1652
|
-
children: /* @__PURE__ */ i(
|
|
1658
|
+
children: /* @__PURE__ */ i(ye, {})
|
|
1653
1659
|
}
|
|
1654
1660
|
)
|
|
1655
1661
|
] })
|
|
1656
1662
|
] }),
|
|
1657
|
-
y && s && /* @__PURE__ */ i(
|
|
1663
|
+
y && s && /* @__PURE__ */ i(G, { as: "div", background: "primary", padding: "medium", borderRadius: "large", children: /* @__PURE__ */ S(T, { direction: "column", justifyItems: "center", alignItems: "center", gap: "x-small", children: [
|
|
1658
1664
|
/* @__PURE__ */ i(
|
|
1659
1665
|
X,
|
|
1660
1666
|
{
|
|
1661
1667
|
display: "block",
|
|
1662
1668
|
color: "danger",
|
|
1663
1669
|
size: "small",
|
|
1664
|
-
renderIcon: /* @__PURE__ */ i(
|
|
1670
|
+
renderIcon: /* @__PURE__ */ i(me, {}),
|
|
1665
1671
|
"data-testid": "single-note-confirm-delete",
|
|
1666
1672
|
onClick: () => {
|
|
1667
1673
|
s(), E(!1);
|
|
@@ -1684,26 +1690,26 @@ const Pn = {
|
|
|
1684
1690
|
] });
|
|
1685
1691
|
};
|
|
1686
1692
|
export {
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1693
|
+
oo as ContentWithNoteWrapper,
|
|
1694
|
+
Se as Highlight,
|
|
1695
|
+
et as HighlightError,
|
|
1696
|
+
Pn as NoteCard,
|
|
1697
|
+
tt as NoteChip,
|
|
1698
|
+
Cn as NoteReactionMenu,
|
|
1699
|
+
On as NotebookEmptyState,
|
|
1700
|
+
no as NotebookProvider,
|
|
1701
|
+
Sn as NotebookTranslationsProvider,
|
|
1702
|
+
io as NotebookTray,
|
|
1703
|
+
lo as NotesListView,
|
|
1704
|
+
k as REACTION_TYPE,
|
|
1705
|
+
ao as SingleNote,
|
|
1706
|
+
Re as createTransparentColor,
|
|
1707
|
+
Ft as useCreateNote,
|
|
1708
|
+
Mt as useDeleteNote,
|
|
1709
|
+
Ee as useGetNotes,
|
|
1710
|
+
Je as useNotebook,
|
|
1705
1711
|
V as useNotebookTranslations,
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1712
|
+
ro as useNotesData,
|
|
1713
|
+
so as useReactionFilter,
|
|
1714
|
+
Bt as useUpdateNote
|
|
1709
1715
|
};
|