@instructure/platform-notebook 1.13.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/NoteCard.d.ts +3 -1
- package/dist/NoteCard.d.ts.map +1 -1
- package/dist/highlighter.d.ts.map +1 -1
- package/dist/hooks/useNotesData.d.ts +0 -1
- package/dist/hooks/useNotesData.d.ts.map +1 -1
- package/dist/index.js +1182 -1075
- package/dist/types.d.ts +0 -29
- package/dist/types.d.ts.map +1 -1
- package/locales/en.json +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,121 +1,120 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { ScreenReaderContent as
|
|
3
|
-
import { createContext as
|
|
4
|
-
import { createPortal as
|
|
5
|
-
import { z as
|
|
6
|
-
import
|
|
7
|
-
import { useQueryClient as
|
|
8
|
-
import { CloseButton as
|
|
9
|
-
import { Flex as
|
|
10
|
-
import { Heading as
|
|
11
|
-
import { Tray as
|
|
12
|
-
import { View as
|
|
13
|
-
import { IconQuestionLine as
|
|
14
|
-
import { Menu as
|
|
15
|
-
import { Text as
|
|
1
|
+
import { jsx as a, jsxs as E, Fragment as Me } from "react/jsx-runtime";
|
|
2
|
+
import { ScreenReaderContent as be } from "@instructure/ui-a11y-content";
|
|
3
|
+
import { createContext as nt, useContext as ot, useMemo as he, useReducer as rt, useRef as _, forwardRef as wt, useCallback as q, useEffect as V, useImperativeHandle as Rt, useState as z } from "react";
|
|
4
|
+
import { createPortal as Ot } from "react-dom";
|
|
5
|
+
import { z as f } from "zod";
|
|
6
|
+
import kt from "diff-match-patch";
|
|
7
|
+
import { useQueryClient as _e, useMutation as Fe, useQuery as Lt } from "@tanstack/react-query";
|
|
8
|
+
import { CloseButton as At, Button as ne, IconButton as Ne } from "@instructure/ui-buttons/v11_7";
|
|
9
|
+
import { Flex as x } from "@instructure/ui-flex/v11_7";
|
|
10
|
+
import { Heading as we } from "@instructure/ui-heading/v11_7";
|
|
11
|
+
import { Tray as Dt } from "@instructure/ui-tray/v11_7";
|
|
12
|
+
import { View as Y } from "@instructure/ui-view/v11_7";
|
|
13
|
+
import { IconQuestionLine as Ue, IconPinLine as $e, NotebookInstUIIcon as Pt, IconWarningLine as Mt, IconEditLine as De, IconTrashLine as xe, IconArrowStartLine as _t } from "@instructure/ui-icons";
|
|
14
|
+
import { Menu as me } from "@instructure/ui-menu/v11_7";
|
|
15
|
+
import { Text as Q } from "@instructure/ui-text/v11_7";
|
|
16
16
|
import { TruncateText as Ce } from "@instructure/ui-truncate-text/v11_7";
|
|
17
|
-
import { SimpleSelect as
|
|
18
|
-
import { Dialog as
|
|
19
|
-
import { TextArea as
|
|
20
|
-
import { Pill as
|
|
21
|
-
import { Pagination as
|
|
22
|
-
import { Spinner as
|
|
23
|
-
const
|
|
24
|
-
startContainer:
|
|
25
|
-
endContainer:
|
|
26
|
-
startOffset:
|
|
27
|
-
endOffset:
|
|
28
|
-
}),
|
|
29
|
-
start:
|
|
30
|
-
end:
|
|
31
|
-
}),
|
|
32
|
-
selectedText:
|
|
33
|
-
hasNoHighlightAnymore:
|
|
34
|
-
textPosition:
|
|
35
|
-
range:
|
|
36
|
-
pageLastModifiedAt:
|
|
17
|
+
import { SimpleSelect as Ke } from "@instructure/ui-simple-select/v11_7";
|
|
18
|
+
import { Dialog as Ft } from "@instructure/ui-dialog";
|
|
19
|
+
import { TextArea as it } from "@instructure/ui-text-area/v11_7";
|
|
20
|
+
import { Pill as ke } from "@instructure/ui-pill/v11_7";
|
|
21
|
+
import { Pagination as Ut } from "@instructure/ui-pagination/v11_7";
|
|
22
|
+
import { Spinner as $t } from "@instructure/ui-spinner/v11_7";
|
|
23
|
+
const Bt = f.object({
|
|
24
|
+
startContainer: f.string(),
|
|
25
|
+
endContainer: f.string(),
|
|
26
|
+
startOffset: f.number(),
|
|
27
|
+
endOffset: f.number()
|
|
28
|
+
}), Ht = f.object({
|
|
29
|
+
start: f.number(),
|
|
30
|
+
end: f.number()
|
|
31
|
+
}), Be = f.object({
|
|
32
|
+
selectedText: f.string(),
|
|
33
|
+
hasNoHighlightAnymore: f.boolean().optional(),
|
|
34
|
+
textPosition: Ht.nullable(),
|
|
35
|
+
range: Bt.nullable(),
|
|
36
|
+
pageLastModifiedAt: f.string()
|
|
37
37
|
});
|
|
38
|
-
var
|
|
39
|
-
const
|
|
38
|
+
var L = /* @__PURE__ */ ((t) => (t.IMPORTANT = "Important", t.CONFUSING = "Confusing", t))(L || {});
|
|
39
|
+
const He = f.enum([
|
|
40
40
|
"Important",
|
|
41
41
|
"Confusing"
|
|
42
42
|
/* CONFUSING */
|
|
43
|
-
]),
|
|
44
|
-
totalCount:
|
|
45
|
-
totalNrOfPages:
|
|
46
|
-
}),
|
|
47
|
-
id:
|
|
48
|
-
rootAccountUuid:
|
|
49
|
-
userId:
|
|
50
|
-
courseId:
|
|
51
|
-
objectId:
|
|
52
|
-
objectType:
|
|
53
|
-
userText:
|
|
54
|
-
reaction:
|
|
55
|
-
highlightData:
|
|
43
|
+
]), jt = f.object({
|
|
44
|
+
totalCount: f.number().nullish(),
|
|
45
|
+
totalNrOfPages: f.number().nullish()
|
|
46
|
+
}), Re = f.object({
|
|
47
|
+
id: f.string(),
|
|
48
|
+
rootAccountUuid: f.string(),
|
|
49
|
+
userId: f.string(),
|
|
50
|
+
courseId: f.string(),
|
|
51
|
+
objectId: f.string(),
|
|
52
|
+
objectType: f.string(),
|
|
53
|
+
userText: f.string().optional(),
|
|
54
|
+
reaction: f.array(He),
|
|
55
|
+
highlightData: Be,
|
|
56
56
|
// Set by the host when the note's highlight is gone specifically because its source
|
|
57
57
|
// (the page/assignment/quiz it was captured from) was unpublished or deleted, as opposed
|
|
58
58
|
// to the note never having had a highlight. Selects the HighlightError reason in NoteCard.
|
|
59
|
-
highlightSourceUnavailable:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
node: Ie
|
|
59
|
+
highlightSourceUnavailable: f.boolean().optional(),
|
|
60
|
+
updatedAt: f.string()
|
|
61
|
+
}), Gt = f.object({
|
|
62
|
+
cursor: f.string(),
|
|
63
|
+
node: Re
|
|
65
64
|
});
|
|
66
|
-
|
|
67
|
-
notes:
|
|
68
|
-
edges:
|
|
69
|
-
nodes:
|
|
70
|
-
pageInfo:
|
|
65
|
+
f.object({
|
|
66
|
+
notes: f.object({
|
|
67
|
+
edges: f.array(Gt),
|
|
68
|
+
nodes: f.array(Re),
|
|
69
|
+
pageInfo: jt
|
|
71
70
|
})
|
|
72
71
|
});
|
|
73
|
-
const
|
|
74
|
-
type:
|
|
75
|
-
id:
|
|
76
|
-
}),
|
|
77
|
-
courseId:
|
|
78
|
-
learningObject:
|
|
79
|
-
reactions:
|
|
72
|
+
const zt = f.object({
|
|
73
|
+
type: f.string(),
|
|
74
|
+
id: f.string()
|
|
75
|
+
}), Wt = f.object({
|
|
76
|
+
courseId: f.string().optional(),
|
|
77
|
+
learningObject: zt.optional(),
|
|
78
|
+
reactions: f.array(f.string()).optional()
|
|
80
79
|
}).optional();
|
|
81
|
-
|
|
82
|
-
courseId:
|
|
83
|
-
filter:
|
|
84
|
-
offset:
|
|
85
|
-
pageSize:
|
|
80
|
+
f.object({
|
|
81
|
+
courseId: f.string().optional(),
|
|
82
|
+
filter: Wt,
|
|
83
|
+
offset: f.number().optional(),
|
|
84
|
+
pageSize: f.number().optional()
|
|
86
85
|
});
|
|
87
|
-
|
|
88
|
-
courseId:
|
|
89
|
-
objectId:
|
|
90
|
-
objectType:
|
|
91
|
-
userText:
|
|
92
|
-
reaction:
|
|
93
|
-
highlightData:
|
|
86
|
+
f.object({
|
|
87
|
+
courseId: f.string(),
|
|
88
|
+
objectId: f.string(),
|
|
89
|
+
objectType: f.string(),
|
|
90
|
+
userText: f.string().optional(),
|
|
91
|
+
reaction: f.array(He),
|
|
92
|
+
highlightData: Be
|
|
94
93
|
});
|
|
95
|
-
|
|
96
|
-
createNote:
|
|
94
|
+
f.object({
|
|
95
|
+
createNote: Re
|
|
97
96
|
});
|
|
98
|
-
|
|
99
|
-
id:
|
|
100
|
-
userText:
|
|
101
|
-
reaction:
|
|
102
|
-
highlightData:
|
|
97
|
+
f.object({
|
|
98
|
+
id: f.string(),
|
|
99
|
+
userText: f.string().optional(),
|
|
100
|
+
reaction: f.array(He),
|
|
101
|
+
highlightData: Be
|
|
103
102
|
});
|
|
104
|
-
|
|
105
|
-
updateNote:
|
|
103
|
+
f.object({
|
|
104
|
+
updateNote: Re
|
|
106
105
|
});
|
|
107
|
-
|
|
108
|
-
deleteNote:
|
|
106
|
+
f.object({
|
|
107
|
+
deleteNote: f.string()
|
|
109
108
|
});
|
|
110
|
-
var
|
|
111
|
-
class
|
|
109
|
+
var st = /* @__PURE__ */ ((t) => (t[t.FORWARDS = 1] = "FORWARDS", t[t.BACKWARDS = 2] = "BACKWARDS", t))(st || {});
|
|
110
|
+
class oe {
|
|
112
111
|
constructor(e, n) {
|
|
113
112
|
this.start = e, this.end = n;
|
|
114
113
|
}
|
|
115
114
|
toRange() {
|
|
116
115
|
let e, n;
|
|
117
116
|
try {
|
|
118
|
-
this.start.element === this.end.element && this.start.offset <= this.end.offset ? [e, n] =
|
|
117
|
+
this.start.element === this.end.element && this.start.offset <= this.end.offset ? [e, n] = lt(this.start.element, this.start.offset, this.end.offset) : (e = this.start.resolve({
|
|
119
118
|
direction: 1
|
|
120
119
|
/* FORWARDS */
|
|
121
120
|
}), n = this.end.resolve({
|
|
@@ -131,23 +130,23 @@ class te {
|
|
|
131
130
|
return o.setStart(e.node, e.offset), o.setEnd(n.node, n.offset), o;
|
|
132
131
|
}
|
|
133
132
|
static fromRange(e) {
|
|
134
|
-
const n =
|
|
135
|
-
return !n || !o ? null : new
|
|
133
|
+
const n = Z.fromPoint(e.startContainer, e.startOffset), o = Z.fromPoint(e.endContainer, e.endOffset);
|
|
134
|
+
return !n || !o ? null : new oe(n, o);
|
|
136
135
|
}
|
|
137
136
|
static fromOffsets(e, n, o) {
|
|
138
|
-
return new
|
|
137
|
+
return new oe(new Z(e, n), new Z(e, o));
|
|
139
138
|
}
|
|
140
139
|
relativeTo(e) {
|
|
141
|
-
return new
|
|
140
|
+
return new oe(this.start.relativeTo(e), this.end.relativeTo(e));
|
|
142
141
|
}
|
|
143
142
|
}
|
|
144
|
-
class
|
|
143
|
+
class Z {
|
|
145
144
|
constructor(e, n) {
|
|
146
145
|
n < 0 && console.error("Offset is invalid"), this.element = e, this.offset = n;
|
|
147
146
|
}
|
|
148
147
|
resolve(e = {}) {
|
|
149
148
|
try {
|
|
150
|
-
const n =
|
|
149
|
+
const n = lt(this.element, this.offset)[0];
|
|
151
150
|
if (!n)
|
|
152
151
|
throw new Error("Could not resolve offset to a text node");
|
|
153
152
|
return n;
|
|
@@ -155,10 +154,10 @@ class q {
|
|
|
155
154
|
if (this.offset === 0 && e.direction !== void 0) {
|
|
156
155
|
const o = document.createTreeWalker(this.element.getRootNode(), NodeFilter.SHOW_TEXT);
|
|
157
156
|
o.currentNode = this.element;
|
|
158
|
-
const r = e.direction ===
|
|
159
|
-
if (!
|
|
157
|
+
const r = e.direction === st.FORWARDS, i = r ? o.nextNode() : o.previousNode();
|
|
158
|
+
if (!i)
|
|
160
159
|
throw n;
|
|
161
|
-
return { node:
|
|
160
|
+
return { node: i, offset: r ? 0 : i.data.length };
|
|
162
161
|
}
|
|
163
162
|
throw n;
|
|
164
163
|
}
|
|
@@ -166,9 +165,9 @@ class q {
|
|
|
166
165
|
static fromCharOffset(e, n) {
|
|
167
166
|
switch (e.nodeType) {
|
|
168
167
|
case Node.TEXT_NODE:
|
|
169
|
-
return
|
|
168
|
+
return Z.fromPoint(e, n);
|
|
170
169
|
case Node.ELEMENT_NODE:
|
|
171
|
-
return new
|
|
170
|
+
return new Z(e, n);
|
|
172
171
|
default:
|
|
173
172
|
return console.error("Node is not an element or text node"), null;
|
|
174
173
|
}
|
|
@@ -180,16 +179,16 @@ class q {
|
|
|
180
179
|
return console.error("Text node offset is out of range"), null;
|
|
181
180
|
if (!e.parentElement)
|
|
182
181
|
return console.error("Text node has no parent"), null;
|
|
183
|
-
const o =
|
|
184
|
-
return new
|
|
182
|
+
const o = Xe(e) + n;
|
|
183
|
+
return new Z(e.parentElement, o);
|
|
185
184
|
}
|
|
186
185
|
case Node.ELEMENT_NODE: {
|
|
187
186
|
if (n < 0 || n > e.childNodes.length)
|
|
188
187
|
return console.error("Child node offset is out of range"), null;
|
|
189
188
|
let o = 0;
|
|
190
189
|
for (let r = 0; r < n; r++)
|
|
191
|
-
o +=
|
|
192
|
-
return new
|
|
190
|
+
o += at(e.childNodes[r]);
|
|
191
|
+
return new Z(e, o);
|
|
193
192
|
}
|
|
194
193
|
default:
|
|
195
194
|
return console.error("Point is not in an element or text node"), null;
|
|
@@ -200,101 +199,101 @@ class q {
|
|
|
200
199
|
throw new Error("Parent is not an ancestor of current element");
|
|
201
200
|
let n = this.element, o = this.offset;
|
|
202
201
|
for (; n !== e; )
|
|
203
|
-
o +=
|
|
204
|
-
return new
|
|
202
|
+
o += Xe(n), n.parentElement && (n = n.parentElement);
|
|
203
|
+
return new Z(n, o);
|
|
205
204
|
}
|
|
206
205
|
}
|
|
207
|
-
const
|
|
206
|
+
const Kt = (t) => {
|
|
208
207
|
const e = t.nodeName.toLowerCase();
|
|
209
208
|
return e === "#text" ? "text()" : e;
|
|
210
209
|
};
|
|
211
|
-
function
|
|
210
|
+
function qt(t) {
|
|
212
211
|
let e = 0, n = t;
|
|
213
212
|
for (; n; )
|
|
214
213
|
n.nodeName === t.nodeName && (e += 1), n = n.previousSibling;
|
|
215
214
|
return e;
|
|
216
215
|
}
|
|
217
|
-
const
|
|
218
|
-
const e =
|
|
216
|
+
const Vt = (t) => {
|
|
217
|
+
const e = Kt(t), n = qt(t);
|
|
219
218
|
return `${e}[${n}]`;
|
|
220
|
-
},
|
|
219
|
+
}, qe = (t, e) => {
|
|
221
220
|
let n = "", o = t;
|
|
222
221
|
for (; o !== e; ) {
|
|
223
222
|
if (!o) {
|
|
224
223
|
console.error("Node is not a descendant of root");
|
|
225
224
|
return;
|
|
226
225
|
}
|
|
227
|
-
n = `${
|
|
226
|
+
n = `${Vt(o)}/${n}`, o = o.parentNode;
|
|
228
227
|
}
|
|
229
228
|
return n = `/${n}`, n = n.replace(/\/$/, ""), n;
|
|
230
|
-
},
|
|
229
|
+
}, Xt = (t, e, n) => {
|
|
231
230
|
const o = e.toUpperCase();
|
|
232
231
|
let r = -1;
|
|
233
|
-
for (let
|
|
234
|
-
const
|
|
235
|
-
if (
|
|
236
|
-
return
|
|
232
|
+
for (let i = 0; i < t.children.length; i++) {
|
|
233
|
+
const s = t.children[i];
|
|
234
|
+
if (s.nodeName.toUpperCase() === o && (++r, r === n))
|
|
235
|
+
return s;
|
|
237
236
|
}
|
|
238
237
|
return null;
|
|
239
|
-
},
|
|
238
|
+
}, Zt = (t, e) => {
|
|
240
239
|
if (!(t.match(/^(\/[A-Za-z0-9-]+(\[[0-9]+])?)+$/) !== null))
|
|
241
240
|
return console.error("Expression is not a simple XPath"), null;
|
|
242
241
|
const o = t.split("/");
|
|
243
242
|
let r = e;
|
|
244
243
|
o.shift();
|
|
245
|
-
for (const
|
|
246
|
-
let
|
|
247
|
-
const
|
|
248
|
-
if (
|
|
249
|
-
|
|
250
|
-
const
|
|
251
|
-
if (
|
|
244
|
+
for (const i of o) {
|
|
245
|
+
let s, l;
|
|
246
|
+
const d = i.indexOf("[");
|
|
247
|
+
if (d !== -1) {
|
|
248
|
+
s = i.slice(0, d);
|
|
249
|
+
const m = i.slice(d + 1, i.indexOf("]"));
|
|
250
|
+
if (l = Number.parseInt(m, 10) - 1, l < 0)
|
|
252
251
|
return null;
|
|
253
252
|
} else
|
|
254
|
-
|
|
255
|
-
const
|
|
256
|
-
if (!
|
|
253
|
+
s = i, l = 0;
|
|
254
|
+
const u = Xt(r, s, l);
|
|
255
|
+
if (!u)
|
|
257
256
|
return null;
|
|
258
|
-
r =
|
|
257
|
+
r = u;
|
|
259
258
|
}
|
|
260
259
|
return r;
|
|
261
|
-
},
|
|
260
|
+
}, Ve = (t, e = document.body) => {
|
|
262
261
|
if (t === "")
|
|
263
262
|
return e;
|
|
264
263
|
try {
|
|
265
|
-
return
|
|
264
|
+
return Zt(t, e);
|
|
266
265
|
} catch {
|
|
267
266
|
return document.evaluate(`.${t}`, e, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
|
|
268
267
|
}
|
|
269
268
|
};
|
|
270
|
-
class
|
|
269
|
+
class de {
|
|
271
270
|
constructor(e, n) {
|
|
272
271
|
this.root = e, this.range = n;
|
|
273
272
|
}
|
|
274
273
|
static fromRange(e, n) {
|
|
275
|
-
return new
|
|
274
|
+
return new de(e, n);
|
|
276
275
|
}
|
|
277
276
|
static fromSelector(e, n) {
|
|
278
277
|
if ((n == null ? void 0 : n.startContainer) == null || (n == null ? void 0 : n.endContainer) == null)
|
|
279
278
|
return console.error("No start or end container in selector"), null;
|
|
280
|
-
const o =
|
|
279
|
+
const o = Ve(n.startContainer, e);
|
|
281
280
|
if (!o)
|
|
282
281
|
return console.error("Failed to resolve startContainer XPath"), null;
|
|
283
|
-
const r =
|
|
282
|
+
const r = Ve(n.endContainer, e);
|
|
284
283
|
if (!r)
|
|
285
284
|
return console.error("Failed to resolve endContainer XPath"), null;
|
|
286
|
-
const
|
|
287
|
-
if (!
|
|
285
|
+
const i = Z.fromCharOffset(o, n.startOffset), s = Z.fromCharOffset(r, n.endOffset);
|
|
286
|
+
if (!i || !s)
|
|
288
287
|
return null;
|
|
289
|
-
const
|
|
290
|
-
return
|
|
288
|
+
const l = new oe(i, s).toRange();
|
|
289
|
+
return l ? !e.contains(l.startContainer) || !e.contains(l.endContainer) ? (console.error("Resolved range escapes root"), null) : new de(e, l) : null;
|
|
291
290
|
}
|
|
292
291
|
toRange() {
|
|
293
292
|
return this.range;
|
|
294
293
|
}
|
|
295
294
|
toSelector() {
|
|
296
|
-
var
|
|
297
|
-
const e = (
|
|
295
|
+
var i;
|
|
296
|
+
const e = (i = oe.fromRange(this.range)) == null ? void 0 : i.toRange(), n = e && oe.fromRange(e), o = n && qe(n.start.element, this.root), r = n && qe(n.end.element, this.root);
|
|
298
297
|
return !n || o == null || r == null ? null : {
|
|
299
298
|
startContainer: o,
|
|
300
299
|
startOffset: n.start.offset,
|
|
@@ -303,17 +302,17 @@ class ce {
|
|
|
303
302
|
};
|
|
304
303
|
}
|
|
305
304
|
}
|
|
306
|
-
class
|
|
305
|
+
class le {
|
|
307
306
|
constructor(e, n, o) {
|
|
308
307
|
this.root = e, this.start = n, this.end = o;
|
|
309
308
|
}
|
|
310
309
|
static fromRange(e, n) {
|
|
311
310
|
var r;
|
|
312
|
-
const o = (r =
|
|
313
|
-
return o ? new
|
|
311
|
+
const o = (r = oe.fromRange(n)) == null ? void 0 : r.relativeTo(e);
|
|
312
|
+
return o ? new le(e, o.start.offset, o.end.offset) : null;
|
|
314
313
|
}
|
|
315
314
|
static fromSelector(e, n) {
|
|
316
|
-
return new
|
|
315
|
+
return new le(e, n.start, n.end);
|
|
317
316
|
}
|
|
318
317
|
toSelector() {
|
|
319
318
|
return {
|
|
@@ -322,10 +321,10 @@ class re {
|
|
|
322
321
|
};
|
|
323
322
|
}
|
|
324
323
|
toRange() {
|
|
325
|
-
return
|
|
324
|
+
return oe.fromOffsets(this.root, this.start, this.end).toRange();
|
|
326
325
|
}
|
|
327
326
|
}
|
|
328
|
-
const
|
|
327
|
+
const at = (t) => {
|
|
329
328
|
var e;
|
|
330
329
|
switch (t.nodeType) {
|
|
331
330
|
case Node.ELEMENT_NODE:
|
|
@@ -334,153 +333,153 @@ const rt = (t) => {
|
|
|
334
333
|
default:
|
|
335
334
|
return 0;
|
|
336
335
|
}
|
|
337
|
-
},
|
|
336
|
+
}, Xe = (t) => {
|
|
338
337
|
let e = t.previousSibling, n = 0;
|
|
339
338
|
for (; e; )
|
|
340
|
-
n +=
|
|
339
|
+
n += at(e), e = e.previousSibling;
|
|
341
340
|
return n;
|
|
342
|
-
},
|
|
341
|
+
}, lt = (t, ...e) => {
|
|
343
342
|
let n = e.shift();
|
|
344
343
|
const o = t.ownerDocument.createNodeIterator(t, NodeFilter.SHOW_TEXT), r = [];
|
|
345
|
-
let
|
|
346
|
-
for (; n !== void 0 &&
|
|
347
|
-
|
|
348
|
-
for (; n !== void 0 &&
|
|
349
|
-
r.push({ node:
|
|
344
|
+
let i = o.nextNode(), s = null, l = 0;
|
|
345
|
+
for (; n !== void 0 && i; )
|
|
346
|
+
s = i, l + s.data.length > n ? (r.push({ node: s, offset: n - l }), n = e.shift()) : (i = o.nextNode(), l += s.data.length);
|
|
347
|
+
for (; n !== void 0 && s && l === n; )
|
|
348
|
+
r.push({ node: s, offset: s.data.length }), n = e.shift();
|
|
350
349
|
return n !== void 0 && console.error("Offset exceeds text length"), r;
|
|
351
|
-
},
|
|
350
|
+
}, Qt = (t, e, n, o) => {
|
|
352
351
|
const r = n - e;
|
|
353
|
-
return Math.abs(r - o) <= 5 ?
|
|
352
|
+
return Math.abs(r - o) <= 5 ? le.fromSelector(t, {
|
|
354
353
|
start: e,
|
|
355
354
|
end: n
|
|
356
355
|
}) : null;
|
|
357
|
-
},
|
|
358
|
-
const r = new
|
|
356
|
+
}, Yt = (t, e, n, o) => {
|
|
357
|
+
const r = new kt();
|
|
359
358
|
r.Match_Distance = 5e3;
|
|
360
|
-
const
|
|
361
|
-
if (!
|
|
359
|
+
const i = t.textContent;
|
|
360
|
+
if (!i)
|
|
362
361
|
return null;
|
|
363
362
|
if (e.length > 32) {
|
|
364
|
-
const
|
|
365
|
-
let
|
|
366
|
-
const
|
|
367
|
-
if (
|
|
363
|
+
const s = e.slice(0, 32), l = e.slice(-32), d = o - n;
|
|
364
|
+
let u = r.match_main(i, s, n);
|
|
365
|
+
const m = r.match_main(i, l, o), c = m + l.length;
|
|
366
|
+
if (u === -1 || m === -1)
|
|
368
367
|
return null;
|
|
369
|
-
const
|
|
370
|
-
if ((
|
|
371
|
-
return
|
|
372
|
-
if (
|
|
373
|
-
return
|
|
374
|
-
start:
|
|
368
|
+
const p = c - u, T = Math.abs(p - d);
|
|
369
|
+
if ((u > c || T > 5) && (r.Match_Distance = e.length + 100, u = r.match_main(i, s, c), u !== -1 && u < c))
|
|
370
|
+
return Qt(t, u, c, d);
|
|
371
|
+
if (u < c && T <= 5)
|
|
372
|
+
return le.fromSelector(t, {
|
|
373
|
+
start: u,
|
|
375
374
|
end: c
|
|
376
375
|
});
|
|
377
376
|
} else {
|
|
378
|
-
const
|
|
379
|
-
if (
|
|
380
|
-
return
|
|
381
|
-
start:
|
|
382
|
-
end:
|
|
377
|
+
const s = r.match_main(i, e, n);
|
|
378
|
+
if (s !== -1)
|
|
379
|
+
return le.fromSelector(t, {
|
|
380
|
+
start: s,
|
|
381
|
+
end: s + e.length
|
|
383
382
|
});
|
|
384
383
|
}
|
|
385
384
|
return null;
|
|
386
|
-
},
|
|
385
|
+
}, Jt = (t, e) => {
|
|
387
386
|
if (!e) return null;
|
|
388
387
|
const { highlightData: n } = t, { textPosition: o, selectedText: r } = n;
|
|
389
|
-
return
|
|
388
|
+
return Yt(
|
|
390
389
|
e,
|
|
391
390
|
r,
|
|
392
391
|
(o == null ? void 0 : o.start) ?? 0,
|
|
393
392
|
(o == null ? void 0 : o.end) ?? 0
|
|
394
393
|
);
|
|
395
|
-
},
|
|
394
|
+
}, en = (t, e, n) => {
|
|
396
395
|
const o = [], r = [];
|
|
397
|
-
for (const
|
|
398
|
-
const
|
|
399
|
-
if (
|
|
400
|
-
const
|
|
396
|
+
for (const i of e) {
|
|
397
|
+
const s = Jt(i, t);
|
|
398
|
+
if (s) {
|
|
399
|
+
const l = s.toRange(), d = l && de.fromRange(t, l), u = (l == null ? void 0 : l.toString().trim()) || i.highlightData.selectedText;
|
|
401
400
|
o.push({
|
|
402
|
-
id:
|
|
403
|
-
reaction:
|
|
404
|
-
userText:
|
|
401
|
+
id: i.id,
|
|
402
|
+
reaction: i.reaction,
|
|
403
|
+
userText: i.userText,
|
|
405
404
|
highlightData: {
|
|
406
|
-
...
|
|
407
|
-
selectedText:
|
|
405
|
+
...i.highlightData,
|
|
406
|
+
selectedText: u,
|
|
408
407
|
hasNoHighlightAnymore: !1,
|
|
409
|
-
range: (
|
|
410
|
-
textPosition:
|
|
408
|
+
range: (d == null ? void 0 : d.toSelector()) ?? null,
|
|
409
|
+
textPosition: s.toSelector(),
|
|
411
410
|
pageLastModifiedAt: n
|
|
412
411
|
}
|
|
413
412
|
});
|
|
414
413
|
} else
|
|
415
|
-
|
|
416
|
-
id:
|
|
417
|
-
reaction:
|
|
418
|
-
userText:
|
|
414
|
+
i.userText ? o.push({
|
|
415
|
+
id: i.id,
|
|
416
|
+
reaction: i.reaction,
|
|
417
|
+
userText: i.userText,
|
|
419
418
|
highlightData: {
|
|
420
|
-
...
|
|
419
|
+
...i.highlightData,
|
|
421
420
|
pageLastModifiedAt: n,
|
|
422
421
|
hasNoHighlightAnymore: !0
|
|
423
422
|
}
|
|
424
|
-
}) : r.push(
|
|
423
|
+
}) : r.push(i.id);
|
|
425
424
|
}
|
|
426
425
|
return { notesForUpdate: o, noteIdsForDelete: r };
|
|
427
|
-
},
|
|
428
|
-
var
|
|
426
|
+
}, Ze = (t, e) => {
|
|
427
|
+
var s;
|
|
429
428
|
if (!e) return;
|
|
430
429
|
const { highlightData: n, id: o } = t, { range: r } = n ?? {};
|
|
431
|
-
r && ((
|
|
432
|
-
},
|
|
430
|
+
r && ((s = de.fromSelector(e, r)) == null ? void 0 : s.toRange()) && gn({ id: o });
|
|
431
|
+
}, tn = (t) => {
|
|
433
432
|
const n = document.querySelector(
|
|
434
433
|
`[data-highlight-id="${CSS.escape(t)}"].highlight-content`
|
|
435
|
-
) ?? document.getElementById(
|
|
434
|
+
) ?? document.getElementById(Oe(t));
|
|
436
435
|
if (n) {
|
|
437
436
|
const o = n.getBoundingClientRect();
|
|
438
437
|
o.top >= 0 && o.bottom <= (window.innerHeight || document.documentElement.clientHeight) || n.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
439
438
|
}
|
|
440
|
-
},
|
|
439
|
+
}, Te = 90, Se = 172, nn = (t) => {
|
|
441
440
|
const e = t.getClientRects();
|
|
442
441
|
if (!e.length)
|
|
443
442
|
return null;
|
|
444
|
-
const n = e[0], o = e[e.length - 1], r = 4,
|
|
445
|
-
const
|
|
446
|
-
return
|
|
447
|
-
},
|
|
448
|
-
const
|
|
449
|
-
return
|
|
443
|
+
const n = e[0], o = e[e.length - 1], r = 4, i = 16, s = window.innerWidth || document.documentElement.clientWidth, l = window.innerHeight || document.documentElement.clientHeight, d = (b) => {
|
|
444
|
+
const w = b + Se;
|
|
445
|
+
return b >= i && w <= s - i;
|
|
446
|
+
}, u = (b) => {
|
|
447
|
+
const w = b + Te;
|
|
448
|
+
return b >= i && w <= l - i;
|
|
450
449
|
};
|
|
451
|
-
let
|
|
450
|
+
let m;
|
|
452
451
|
const c = n.right - Se;
|
|
453
|
-
if (
|
|
454
|
-
|
|
452
|
+
if (d(c))
|
|
453
|
+
m = c;
|
|
455
454
|
else {
|
|
456
|
-
const
|
|
457
|
-
if (
|
|
458
|
-
|
|
455
|
+
const b = n.left;
|
|
456
|
+
if (d(b))
|
|
457
|
+
m = b;
|
|
459
458
|
else {
|
|
460
|
-
const
|
|
461
|
-
|
|
459
|
+
const y = (n.left + n.right) / 2 - Se / 2;
|
|
460
|
+
d(y) ? m = y : c < i ? m = i : m = s - Se - i;
|
|
462
461
|
}
|
|
463
462
|
}
|
|
464
|
-
let
|
|
465
|
-
const
|
|
466
|
-
if (
|
|
467
|
-
|
|
463
|
+
let p;
|
|
464
|
+
const T = o.bottom + r;
|
|
465
|
+
if (u(T))
|
|
466
|
+
p = T;
|
|
468
467
|
else {
|
|
469
|
-
const
|
|
470
|
-
|
|
468
|
+
const b = n.top - Te - r;
|
|
469
|
+
u(b) ? p = b : T + Te > l - i ? p = l - Te - i : p = i;
|
|
471
470
|
}
|
|
472
|
-
return { top:
|
|
473
|
-
},
|
|
471
|
+
return { top: p, left: m };
|
|
472
|
+
}, on = (t, e) => {
|
|
474
473
|
for (const n of e)
|
|
475
474
|
if (t.start < n.end && t.end > n.start)
|
|
476
475
|
return !0;
|
|
477
476
|
return !1;
|
|
478
|
-
},
|
|
477
|
+
}, je = (t) => `highlight-wrapper-${t}`, Oe = (t) => `${je(t)}-start`, ct = (t) => `${je(t)}-end`, Ee = (t) => `[data-highlight-id="${CSS.escape(t)}"]`, rn = "2px", sn = "3px", an = "1px", dt = "3px", ln = "1px", ut = "Notebook note", Ge = (t, e) => {
|
|
479
478
|
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);
|
|
480
479
|
return `rgba(${n}, ${o}, ${r}, ${e})`;
|
|
481
|
-
},
|
|
482
|
-
t.style.backgroundColor = n, t.style.textDecorationColor = o, t.style.textDecorationStyle = r, e ? (t.dataset.selected = "true", t.style.outline = `${
|
|
483
|
-
},
|
|
480
|
+
}, ft = (t, e, n, o, r) => {
|
|
481
|
+
t.style.backgroundColor = n, t.style.textDecorationColor = o, t.style.textDecorationStyle = r, e ? (t.dataset.selected = "true", t.style.outline = `${an} ${r} ${o}`, t.style.outlineOffset = ln, t.style.borderRadius = dt, t.style.fontWeight = "bold", t.style.textDecorationLine = "none") : (t.removeAttribute("data-selected"), t.style.outline = "", t.style.outlineOffset = "", t.style.borderRadius = "", t.style.fontWeight = "", t.style.textDecorationLine = "underline");
|
|
482
|
+
}, cn = /* @__PURE__ */ new Set([
|
|
484
483
|
"AREA",
|
|
485
484
|
"BASE",
|
|
486
485
|
"BR",
|
|
@@ -499,11 +498,11 @@ const rt = (t) => {
|
|
|
499
498
|
const n = t.cloneRange();
|
|
500
499
|
n.collapse(e);
|
|
501
500
|
const o = n.startContainer;
|
|
502
|
-
if (!(o.nodeType === Node.ELEMENT_NODE &&
|
|
501
|
+
if (!(o.nodeType === Node.ELEMENT_NODE && cn.has(o.tagName)) || !o.parentNode)
|
|
503
502
|
return n;
|
|
504
|
-
const
|
|
505
|
-
return
|
|
506
|
-
},
|
|
503
|
+
const i = o.parentNode, s = Array.from(i.childNodes).indexOf(o), l = document.createRange();
|
|
504
|
+
return l.setStart(i, s), l.collapse(!0), l;
|
|
505
|
+
}, dn = (t, e) => {
|
|
507
506
|
var n;
|
|
508
507
|
try {
|
|
509
508
|
const o = ((n = e.nodeValue) == null ? void 0 : n.length) ?? e.childNodes.length;
|
|
@@ -511,151 +510,151 @@ const rt = (t) => {
|
|
|
511
510
|
} catch {
|
|
512
511
|
return !1;
|
|
513
512
|
}
|
|
514
|
-
},
|
|
515
|
-
var
|
|
513
|
+
}, un = (t) => {
|
|
514
|
+
var i;
|
|
516
515
|
if (t.collapsed)
|
|
517
516
|
return [];
|
|
518
517
|
let e = t.commonAncestorContainer;
|
|
519
518
|
if (e && e.nodeType !== Node.ELEMENT_NODE && (e = e.parentElement), !e)
|
|
520
519
|
return [];
|
|
521
|
-
const n = [], o = (
|
|
520
|
+
const n = [], o = (i = e == null ? void 0 : e.ownerDocument) == null ? void 0 : i.createNodeIterator(e, NodeFilter.SHOW_TEXT);
|
|
522
521
|
let r = (o == null ? void 0 : o.nextNode()) || null;
|
|
523
522
|
for (; r; ) {
|
|
524
|
-
if (!
|
|
523
|
+
if (!dn(t, r)) {
|
|
525
524
|
r = (o == null ? void 0 : o.nextNode()) || null;
|
|
526
525
|
continue;
|
|
527
526
|
}
|
|
528
|
-
const
|
|
529
|
-
if (
|
|
530
|
-
|
|
527
|
+
const s = r;
|
|
528
|
+
if (s === t.startContainer && t.startOffset > 0) {
|
|
529
|
+
s.splitText(t.startOffset), r = (o == null ? void 0 : o.nextNode()) || null;
|
|
531
530
|
continue;
|
|
532
531
|
}
|
|
533
|
-
|
|
532
|
+
s === t.endContainer && t.endOffset < s.data.length && s.splitText(t.endOffset), n.push(s), r = (o == null ? void 0 : o.nextNode()) || null;
|
|
534
533
|
}
|
|
535
534
|
return n;
|
|
536
|
-
},
|
|
535
|
+
}, fn = (t, e, n) => {
|
|
537
536
|
if (t.collapsed) return;
|
|
538
|
-
const o = e.id ?? "", r =
|
|
539
|
-
if (document.getElementById(
|
|
540
|
-
|
|
537
|
+
const o = e.id ?? "", r = je(o);
|
|
538
|
+
if (document.getElementById(Oe(o))) {
|
|
539
|
+
mn(e, n);
|
|
541
540
|
return;
|
|
542
541
|
}
|
|
543
|
-
const
|
|
542
|
+
const s = e.type === L.IMPORTANT ? n.colors.importantBackground : n.colors.confusingBackground, l = e.id === e.selectedNoteId, d = l ? s : Ge(s, 0.5), u = e.type === L.IMPORTANT ? n.colors.importantUnderline : n.colors.confusingUnderline, m = e.type === L.IMPORTANT ? "solid" : "dashed", c = document.createElement("span");
|
|
544
543
|
c.id = `${r}-start`, c.className = "highlight-marker-start", c.dataset.highlightId = o || "";
|
|
545
|
-
const
|
|
546
|
-
c.setAttribute("role", "button"), c.setAttribute("tabindex", "0"), c.setAttribute("aria-label",
|
|
547
|
-
const
|
|
548
|
-
|
|
549
|
-
const
|
|
550
|
-
|
|
551
|
-
const
|
|
552
|
-
|
|
553
|
-
var
|
|
554
|
-
const
|
|
555
|
-
if ((
|
|
556
|
-
const
|
|
557
|
-
let
|
|
558
|
-
|
|
559
|
-
const
|
|
560
|
-
|
|
561
|
-
var
|
|
562
|
-
|
|
563
|
-
}), (
|
|
564
|
-
}), c.addEventListener("click", (
|
|
565
|
-
var
|
|
566
|
-
|
|
567
|
-
}), c.addEventListener("keydown", (
|
|
568
|
-
var
|
|
569
|
-
if (
|
|
570
|
-
|
|
571
|
-
else if (
|
|
572
|
-
const
|
|
573
|
-
for (const
|
|
574
|
-
const
|
|
575
|
-
if (
|
|
576
|
-
|
|
544
|
+
const p = e.labelPrefix ?? ut;
|
|
545
|
+
c.setAttribute("role", "button"), c.setAttribute("tabindex", "0"), c.setAttribute("aria-label", p), c.setAttribute("aria-haspopup", "dialog"), c.setAttribute("aria-expanded", String(l && !!e.isTrayOpen)), l && c.setAttribute("aria-current", "true"), 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";
|
|
546
|
+
const T = document.createElement("span");
|
|
547
|
+
T.id = ct(o), T.className = "highlight-marker-end", T.dataset.highlightId = o || "", Qe(t, !1).insertNode(T), Qe(t, !0).insertNode(c);
|
|
548
|
+
const y = document.createRange();
|
|
549
|
+
y.setStartAfter(c), y.setEndBefore(T);
|
|
550
|
+
const v = un(y).filter((h) => h.textContent && h.textContent.length > 0);
|
|
551
|
+
v.forEach((h, I) => {
|
|
552
|
+
var B;
|
|
553
|
+
const P = h.parentElement;
|
|
554
|
+
if ((P == null ? void 0 : P.dataset.highlightId) === o) return;
|
|
555
|
+
const D = I === 0, W = I === v.length - 1, C = v.length === 1;
|
|
556
|
+
let R;
|
|
557
|
+
C ? R = "single" : D ? R = "first" : W ? R = "last" : R = "middle";
|
|
558
|
+
const S = document.createElement("span");
|
|
559
|
+
S.className = "highlight-content", S.dataset.highlightId = o || "", S.dataset.position = R, S.style.textDecorationLine = "underline", S.style.textDecorationThickness = n.borderWidthSmall, S.style.textUnderlineOffset = n.underlineOffset, S.style.cursor = "pointer", ft(S, l, d, u, m), S.addEventListener("click", (re) => {
|
|
560
|
+
var X;
|
|
561
|
+
re.target.tagName !== "A" && ((X = e.onClick) == null || X.call(e));
|
|
562
|
+
}), (B = h.parentNode) == null || B.insertBefore(S, h), S.appendChild(h);
|
|
563
|
+
}), c.addEventListener("click", (h) => {
|
|
564
|
+
var I;
|
|
565
|
+
h.target.tagName !== "A" && ((I = e.onClick) == null || I.call(e));
|
|
566
|
+
}), c.addEventListener("keydown", (h) => {
|
|
567
|
+
var I;
|
|
568
|
+
if (h.key === "Enter" || h.key === " ")
|
|
569
|
+
h.preventDefault(), (I = e.onClick) == null || I.call(e);
|
|
570
|
+
else if (h.key === "Tab" && !h.shiftKey) {
|
|
571
|
+
const P = document.querySelectorAll(Ee(o));
|
|
572
|
+
for (const D of P) {
|
|
573
|
+
const W = D.querySelector("a");
|
|
574
|
+
if (W) {
|
|
575
|
+
h.preventDefault(), W.focus();
|
|
577
576
|
break;
|
|
578
577
|
}
|
|
579
578
|
}
|
|
580
579
|
}
|
|
581
580
|
}), c.addEventListener("focus", () => {
|
|
582
581
|
document.querySelectorAll(
|
|
583
|
-
`.highlight-content${
|
|
584
|
-
).forEach((
|
|
585
|
-
|
|
582
|
+
`.highlight-content${Ee(o)}`
|
|
583
|
+
).forEach((I) => {
|
|
584
|
+
I.style.boxShadow = `0 0 0 ${rn} ${n.colors.focusOutline}`, I.style.borderRadius = sn;
|
|
586
585
|
});
|
|
587
586
|
}), c.addEventListener("blur", () => {
|
|
588
587
|
document.querySelectorAll(
|
|
589
|
-
`.highlight-content${
|
|
590
|
-
).forEach((
|
|
591
|
-
|
|
588
|
+
`.highlight-content${Ee(o)}`
|
|
589
|
+
).forEach((I) => {
|
|
590
|
+
I.style.boxShadow = "", I.style.borderRadius = I.dataset.selected ? dt : "";
|
|
592
591
|
});
|
|
593
592
|
});
|
|
594
593
|
};
|
|
595
|
-
function
|
|
596
|
-
const n = t.type ===
|
|
594
|
+
function mn(t, e) {
|
|
595
|
+
const n = t.type === L.IMPORTANT ? e.colors.importantBackground : e.colors.confusingBackground, o = t.id === t.selectedNoteId, r = o ? n : Ge(n, 0.5), i = t.type === L.IMPORTANT ? e.colors.importantUnderline : e.colors.confusingUnderline, s = t.type === L.IMPORTANT ? "solid" : "dashed";
|
|
597
596
|
document.querySelectorAll(
|
|
598
|
-
`.highlight-content${
|
|
599
|
-
).forEach((
|
|
600
|
-
|
|
597
|
+
`.highlight-content${Ee(t.id ?? "")}`
|
|
598
|
+
).forEach((u) => {
|
|
599
|
+
ft(u, o, r, i, s);
|
|
601
600
|
});
|
|
602
|
-
const
|
|
603
|
-
|
|
601
|
+
const d = document.getElementById(
|
|
602
|
+
Oe(t.id ?? "")
|
|
604
603
|
);
|
|
605
|
-
|
|
604
|
+
d && (d.setAttribute("aria-label", t.labelPrefix ?? ut), d.setAttribute("aria-expanded", String(o && !!t.isTrayOpen)), o ? d.setAttribute("aria-current", "true") : d.removeAttribute("aria-current"));
|
|
606
605
|
}
|
|
607
|
-
const
|
|
608
|
-
const e = t.id ?? "", n = document.getElementById(
|
|
606
|
+
const gn = (t) => {
|
|
607
|
+
const e = t.id ?? "", n = document.getElementById(Oe(e)), o = document.getElementById(ct(e));
|
|
609
608
|
document.querySelectorAll(
|
|
610
|
-
|
|
611
|
-
).forEach((
|
|
612
|
-
var
|
|
613
|
-
for (;
|
|
614
|
-
(
|
|
615
|
-
|
|
609
|
+
Ee(e)
|
|
610
|
+
).forEach((i) => {
|
|
611
|
+
var s;
|
|
612
|
+
for (; i.firstChild; )
|
|
613
|
+
(s = i.parentNode) == null || s.insertBefore(i.firstChild, i);
|
|
614
|
+
i.remove();
|
|
616
615
|
}), n == null || n.remove(), o == null || o.remove();
|
|
617
|
-
},
|
|
616
|
+
}, ge = {
|
|
618
617
|
all: ["notebook"],
|
|
619
618
|
notes: (t) => ["notebook", "notes", t]
|
|
620
619
|
};
|
|
621
|
-
function
|
|
622
|
-
const e =
|
|
623
|
-
return
|
|
620
|
+
function hn(t) {
|
|
621
|
+
const e = _e();
|
|
622
|
+
return Fe({
|
|
624
623
|
mutationFn: (n) => t.createNote(n),
|
|
625
624
|
onSuccess: () => {
|
|
626
|
-
e.invalidateQueries({ queryKey:
|
|
625
|
+
e.invalidateQueries({ queryKey: ge.all });
|
|
627
626
|
}
|
|
628
627
|
});
|
|
629
628
|
}
|
|
630
|
-
function
|
|
631
|
-
const e =
|
|
632
|
-
return
|
|
629
|
+
function pn(t) {
|
|
630
|
+
const e = _e();
|
|
631
|
+
return Fe({
|
|
633
632
|
mutationFn: (n) => t.deleteNote(n),
|
|
634
633
|
onSuccess: () => {
|
|
635
|
-
e.invalidateQueries({ queryKey:
|
|
634
|
+
e.invalidateQueries({ queryKey: ge.all });
|
|
636
635
|
}
|
|
637
636
|
});
|
|
638
637
|
}
|
|
639
|
-
function
|
|
638
|
+
function mt({
|
|
640
639
|
api: t,
|
|
641
640
|
enabled: e = !0,
|
|
642
641
|
...n
|
|
643
642
|
}) {
|
|
644
|
-
return
|
|
645
|
-
queryKey:
|
|
643
|
+
return Lt({
|
|
644
|
+
queryKey: ge.notes(n),
|
|
646
645
|
queryFn: () => t.getNotes(n),
|
|
647
646
|
enabled: e
|
|
648
647
|
});
|
|
649
648
|
}
|
|
650
|
-
const
|
|
651
|
-
function
|
|
649
|
+
const yn = 100;
|
|
650
|
+
function gt({
|
|
652
651
|
api: t,
|
|
653
652
|
courseId: e,
|
|
654
653
|
learningObject: n,
|
|
655
654
|
reactions: o,
|
|
656
655
|
enabled: r = !0
|
|
657
656
|
}) {
|
|
658
|
-
return
|
|
657
|
+
return mt({
|
|
659
658
|
api: t,
|
|
660
659
|
filter: {
|
|
661
660
|
...e ? { courseId: e } : {},
|
|
@@ -663,117 +662,118 @@ function ut({
|
|
|
663
662
|
...o != null && o.length ? { reactions: o } : {}
|
|
664
663
|
},
|
|
665
664
|
offset: 0,
|
|
666
|
-
pageSize:
|
|
665
|
+
pageSize: yn,
|
|
667
666
|
enabled: r
|
|
668
667
|
});
|
|
669
668
|
}
|
|
670
|
-
function
|
|
671
|
-
const e =
|
|
672
|
-
return
|
|
669
|
+
function bn(t) {
|
|
670
|
+
const e = _e();
|
|
671
|
+
return Fe({
|
|
673
672
|
mutationFn: ({ id: n, input: o }) => t.updateNote(n, o),
|
|
674
673
|
onMutate: async ({ id: n, input: o }) => {
|
|
675
|
-
await e.cancelQueries({ queryKey:
|
|
676
|
-
const
|
|
677
|
-
for (const
|
|
678
|
-
const
|
|
679
|
-
|
|
680
|
-
...
|
|
681
|
-
notes:
|
|
682
|
-
(
|
|
674
|
+
await e.cancelQueries({ queryKey: ge.all });
|
|
675
|
+
const i = e.getQueryCache().findAll({ queryKey: ge.all }), s = /* @__PURE__ */ new Map();
|
|
676
|
+
for (const l of i) {
|
|
677
|
+
const d = l.state.data;
|
|
678
|
+
d && (s.set(l.queryKey, d), e.setQueryData(l.queryKey, {
|
|
679
|
+
...d,
|
|
680
|
+
notes: d.notes.map(
|
|
681
|
+
(u) => u.id === n ? { ...u, ...o, updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : u
|
|
683
682
|
)
|
|
684
683
|
}));
|
|
685
684
|
}
|
|
686
|
-
return { previousData:
|
|
685
|
+
return { previousData: s };
|
|
687
686
|
},
|
|
688
687
|
onError: (n, o, r) => {
|
|
689
688
|
if (r != null && r.previousData)
|
|
690
|
-
for (const [
|
|
691
|
-
e.setQueryData(
|
|
689
|
+
for (const [i, s] of r.previousData)
|
|
690
|
+
e.setQueryData(i, s);
|
|
692
691
|
},
|
|
693
692
|
onSettled: () => {
|
|
694
|
-
e.invalidateQueries({ queryKey:
|
|
693
|
+
e.invalidateQueries({ queryKey: ge.all });
|
|
695
694
|
}
|
|
696
695
|
});
|
|
697
696
|
}
|
|
698
|
-
const
|
|
699
|
-
notebook:
|
|
700
|
-
notes:
|
|
701
|
-
important:
|
|
702
|
-
unclear:
|
|
703
|
-
sourceChanged:
|
|
704
|
-
back:
|
|
705
|
-
editNote:
|
|
706
|
-
save:
|
|
707
|
-
cancel:
|
|
708
|
-
deleteNote:
|
|
709
|
-
deleteNoteConfirmation:
|
|
710
|
-
note:
|
|
711
|
-
addNotePrompt:
|
|
712
|
-
removeFromNotebook:
|
|
713
|
-
addNoteOptional:
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
697
|
+
const Nn = "Notebook", En = "Notes", Tn = "Important", Sn = "Unclear", vn = "Source changed", Cn = "Back", xn = "Edit note", In = "Save", wn = "Cancel", Rn = "Delete note", On = "Delete note confirmation", kn = "note", Ln = "Add note (optional)", An = "Remove from Notebook", Dn = "Add a note (optional)", Pn = "Last saved", Mn = "Mark important", _n = "Mark unclear", Fn = "Press Ctrl+Shift+L (Windows/Linux) or Cmd+Shift+L (Mac) to mark this selection as unclear or important.", Un = "Saved to Notebook.", $n = "Note updated", Bn = "Note deleted", Hn = "Error saving to Notebook.", jn = "Error updating note", Gn = "Note deletion failed", zn = "Loading notes", Wn = "Failed to load notes", Kn = "Start capturing your notes", qn = "To use the Notebook feature, select text on a page to mark it as Important or Unclear, and add an optional note.", Vn = "Only you can see your Notebook. Instructors and classmates don't see your notes.", Xn = "Nothing here yet", Zn = "Adjust your filters or create a new note to get started.", Qn = "You have no notes for the selected filter", Yn = "Filter", Jn = "Previous page", eo = "Next page", to = "All courses", no = "All notes", oo = "Close Notebook panel", ro = "To use the Notebook feature, highlight an excerpt from your learning material to flag it as 'confusing' or 'important' and leave an optional note.", io = "This text was changed or removed.", so = "This source is no longer available.", ao = "Notebook note", lo = "Page/Object Title", co = "Label", uo = "Highlighted Text", fo = "Note", mo = "Last Modified", go = "Untitled", ze = {
|
|
698
|
+
notebook: Nn,
|
|
699
|
+
notes: En,
|
|
700
|
+
important: Tn,
|
|
701
|
+
unclear: Sn,
|
|
702
|
+
sourceChanged: vn,
|
|
703
|
+
back: Cn,
|
|
704
|
+
editNote: xn,
|
|
705
|
+
save: In,
|
|
706
|
+
cancel: wn,
|
|
707
|
+
deleteNote: Rn,
|
|
708
|
+
deleteNoteConfirmation: On,
|
|
709
|
+
note: kn,
|
|
710
|
+
addNotePrompt: Ln,
|
|
711
|
+
removeFromNotebook: An,
|
|
712
|
+
addNoteOptional: Dn,
|
|
713
|
+
lastSaved: Pn,
|
|
714
|
+
markImportant: Mn,
|
|
715
|
+
markUnclear: _n,
|
|
716
|
+
selectionMenuInstructions: Fn,
|
|
717
|
+
savedToNotebook: Un,
|
|
718
|
+
noteUpdated: $n,
|
|
719
|
+
noteDeleted: Bn,
|
|
720
|
+
errorSavingNote: Hn,
|
|
721
|
+
errorUpdatingNote: jn,
|
|
722
|
+
noteDeletionFailed: Gn,
|
|
723
|
+
loadingNotes: zn,
|
|
724
|
+
failedToLoadNotes: Wn,
|
|
725
|
+
emptyStateHeading: Kn,
|
|
726
|
+
emptyStateDescription: qn,
|
|
727
|
+
emptyStatePrecision: Vn,
|
|
728
|
+
nothingHereYet: Xn,
|
|
729
|
+
adjustFiltersOrCreate: Zn,
|
|
730
|
+
noNotesForFilter: Qn,
|
|
731
|
+
filter: Yn,
|
|
732
|
+
previousPage: Jn,
|
|
733
|
+
nextPage: eo,
|
|
734
|
+
allCourses: to,
|
|
735
|
+
allNotes: no,
|
|
736
|
+
closeNotebookPanel: oo,
|
|
737
|
+
featureDescription: ro,
|
|
738
|
+
highlightUnavailable: io,
|
|
739
|
+
highlightSourceUnavailable: so,
|
|
740
|
+
notebookNote: ao,
|
|
741
|
+
exportColumnPageTitle: lo,
|
|
742
|
+
exportColumnLabel: co,
|
|
743
|
+
exportColumnHighlightedText: uo,
|
|
744
|
+
exportColumnNote: fo,
|
|
745
|
+
exportColumnLastModified: mo,
|
|
746
|
+
exportUntitled: go
|
|
747
|
+
}, ht = nt(null);
|
|
748
|
+
function pt(t, e) {
|
|
749
|
+
const n = ze[t] ?? t;
|
|
750
750
|
return e ? n.replace(/%\{([^}]+)}/g, (o, r) => String(e[r] ?? `%{${r}}`)) : n;
|
|
751
751
|
}
|
|
752
|
-
function
|
|
752
|
+
function ho({
|
|
753
753
|
translations: t,
|
|
754
754
|
translate: e,
|
|
755
755
|
children: n
|
|
756
756
|
}) {
|
|
757
|
-
const o =
|
|
758
|
-
translations: new Proxy(
|
|
759
|
-
get(
|
|
760
|
-
return (t == null ? void 0 : t[
|
|
757
|
+
const o = he(() => ({
|
|
758
|
+
translations: new Proxy(ze, {
|
|
759
|
+
get(i, s) {
|
|
760
|
+
return (t == null ? void 0 : t[s]) ?? i[s];
|
|
761
761
|
}
|
|
762
762
|
}),
|
|
763
|
-
translate: e ??
|
|
763
|
+
translate: e ?? pt
|
|
764
764
|
}), [t, e]);
|
|
765
|
-
return /* @__PURE__ */
|
|
765
|
+
return /* @__PURE__ */ a(ht.Provider, { value: o, children: n });
|
|
766
766
|
}
|
|
767
|
-
function
|
|
768
|
-
const t =
|
|
769
|
-
return t || { translations:
|
|
767
|
+
function J() {
|
|
768
|
+
const t = ot(ht);
|
|
769
|
+
return t || { translations: ze, translate: pt };
|
|
770
770
|
}
|
|
771
|
-
const
|
|
771
|
+
const po = (t) => ({
|
|
772
772
|
selectedNoteId: t ?? null,
|
|
773
773
|
isNoteEditing: !1,
|
|
774
774
|
isTrayOpen: t != null
|
|
775
775
|
});
|
|
776
|
-
function
|
|
776
|
+
function yo(t, e) {
|
|
777
777
|
switch (e.type) {
|
|
778
778
|
case "SELECT_NOTE":
|
|
779
779
|
return {
|
|
@@ -793,64 +793,64 @@ function fo(t, e) {
|
|
|
793
793
|
return t;
|
|
794
794
|
}
|
|
795
795
|
}
|
|
796
|
-
const
|
|
797
|
-
function
|
|
796
|
+
const yt = nt(null);
|
|
797
|
+
function ar({
|
|
798
798
|
api: t,
|
|
799
799
|
currentUserId: e,
|
|
800
800
|
objectId: n,
|
|
801
801
|
objectType: o,
|
|
802
802
|
courseId: r,
|
|
803
|
-
pageLastModifiedAt:
|
|
804
|
-
onOpen:
|
|
805
|
-
initialNoteId:
|
|
806
|
-
translations:
|
|
807
|
-
translate:
|
|
808
|
-
children:
|
|
803
|
+
pageLastModifiedAt: i,
|
|
804
|
+
onOpen: s,
|
|
805
|
+
initialNoteId: l,
|
|
806
|
+
translations: d,
|
|
807
|
+
translate: u,
|
|
808
|
+
children: m
|
|
809
809
|
}) {
|
|
810
|
-
const [c,
|
|
810
|
+
const [c, p] = rt(yo, po(l)), T = _(l != null), b = he(
|
|
811
811
|
() => ({
|
|
812
812
|
api: t,
|
|
813
813
|
currentUserId: e,
|
|
814
814
|
objectId: n,
|
|
815
815
|
objectType: o,
|
|
816
816
|
courseId: r,
|
|
817
|
-
pageLastModifiedAt:
|
|
817
|
+
pageLastModifiedAt: i,
|
|
818
818
|
...c,
|
|
819
|
-
selectNote: (
|
|
820
|
-
clearSelectedNote: () =>
|
|
821
|
-
setEditing: (
|
|
819
|
+
selectNote: (w, y = !1) => p({ type: "SELECT_NOTE", payload: { id: w, isEditing: y } }),
|
|
820
|
+
clearSelectedNote: () => p({ type: "CLEAR_SELECTED_NOTE" }),
|
|
821
|
+
setEditing: (w) => p({ type: "SET_EDITING", payload: w }),
|
|
822
822
|
openTray: () => {
|
|
823
|
-
|
|
823
|
+
T.current || (T.current = !0, s == null || s()), p({ type: "OPEN_TRAY" });
|
|
824
824
|
},
|
|
825
825
|
closeTray: () => {
|
|
826
|
-
|
|
826
|
+
T.current = !1, p({ type: "CLOSE_TRAY" });
|
|
827
827
|
}
|
|
828
828
|
}),
|
|
829
|
-
[t, e, n, o, r,
|
|
829
|
+
[t, e, n, o, r, i, s, c]
|
|
830
830
|
);
|
|
831
|
-
return /* @__PURE__ */
|
|
831
|
+
return /* @__PURE__ */ a(yt.Provider, { value: b, children: /* @__PURE__ */ a(ho, { translations: d, translate: u, children: m }) });
|
|
832
832
|
}
|
|
833
|
-
function
|
|
834
|
-
const t =
|
|
833
|
+
function bt() {
|
|
834
|
+
const t = ot(yt);
|
|
835
835
|
if (!t)
|
|
836
836
|
throw new Error("useNotebook must be used within a NotebookProvider");
|
|
837
837
|
return t;
|
|
838
838
|
}
|
|
839
|
-
const
|
|
840
|
-
const { isTrayOpen: e, closeTray: n } =
|
|
841
|
-
return /* @__PURE__ */
|
|
842
|
-
|
|
839
|
+
const Nt = "notebook-tray-content", lr = ({ children: t }) => {
|
|
840
|
+
const { isTrayOpen: e, closeTray: n } = bt(), { translations: o } = J();
|
|
841
|
+
return /* @__PURE__ */ a(
|
|
842
|
+
Dt,
|
|
843
843
|
{
|
|
844
844
|
label: o.notebook,
|
|
845
845
|
open: e,
|
|
846
846
|
onDismiss: n,
|
|
847
847
|
placement: "end",
|
|
848
848
|
size: "regular",
|
|
849
|
-
children: /* @__PURE__ */
|
|
850
|
-
/* @__PURE__ */
|
|
851
|
-
/* @__PURE__ */
|
|
852
|
-
/* @__PURE__ */
|
|
853
|
-
|
|
849
|
+
children: /* @__PURE__ */ E(x, { direction: "column", height: "100vh", id: Nt, children: [
|
|
850
|
+
/* @__PURE__ */ a(x.Item, { children: /* @__PURE__ */ a(Y, { as: "div", padding: "small medium", borderWidth: "0 0 small 0", children: /* @__PURE__ */ E(x, { justifyItems: "space-between", alignItems: "center", children: [
|
|
851
|
+
/* @__PURE__ */ a(we, { level: "h3", children: o.notebook }),
|
|
852
|
+
/* @__PURE__ */ a(
|
|
853
|
+
At,
|
|
854
854
|
{
|
|
855
855
|
screenReaderLabel: o.closeNotebookPanel,
|
|
856
856
|
onClick: n,
|
|
@@ -859,19 +859,19 @@ const pt = "notebook-tray-content", Zo = ({ children: t }) => {
|
|
|
859
859
|
}
|
|
860
860
|
)
|
|
861
861
|
] }) }) }),
|
|
862
|
-
/* @__PURE__ */
|
|
862
|
+
/* @__PURE__ */ a(x.Item, { shouldGrow: !0, shouldShrink: !0, overflowY: "auto", overflowX: "hidden", children: t })
|
|
863
863
|
] })
|
|
864
864
|
}
|
|
865
865
|
);
|
|
866
|
-
},
|
|
866
|
+
}, Et = wt(
|
|
867
867
|
({ currentType: t, disabled: e = !1, autoFocus: n = !0, onSelectReaction: o }, r) => {
|
|
868
|
-
const { translations:
|
|
869
|
-
t ===
|
|
868
|
+
const { translations: i } = J(), s = _(null), l = _(null), d = q(() => {
|
|
869
|
+
t === L.CONFUSING && s.current ? s.current.focus() : t === L.IMPORTANT && l.current ? l.current.focus() : s.current && s.current.focus();
|
|
870
870
|
}, [t]);
|
|
871
|
-
return
|
|
872
|
-
n &&
|
|
873
|
-
}, [n,
|
|
874
|
-
|
|
871
|
+
return V(() => {
|
|
872
|
+
n && d();
|
|
873
|
+
}, [n, d]), Rt(r, () => ({ focus: d }), [d]), /* @__PURE__ */ a(
|
|
874
|
+
Y,
|
|
875
875
|
{
|
|
876
876
|
as: "div",
|
|
877
877
|
background: "primary",
|
|
@@ -879,28 +879,28 @@ const pt = "notebook-tray-content", Zo = ({ children: t }) => {
|
|
|
879
879
|
borderColor: "secondary",
|
|
880
880
|
borderRadius: "medium",
|
|
881
881
|
shadow: "resting",
|
|
882
|
-
children: /* @__PURE__ */
|
|
883
|
-
/* @__PURE__ */
|
|
884
|
-
|
|
882
|
+
children: /* @__PURE__ */ E(me, { children: [
|
|
883
|
+
/* @__PURE__ */ E(
|
|
884
|
+
me.Item,
|
|
885
885
|
{
|
|
886
|
-
ref:
|
|
886
|
+
ref: s,
|
|
887
887
|
disabled: e,
|
|
888
|
-
onClick: () => o(
|
|
888
|
+
onClick: () => o(L.CONFUSING),
|
|
889
889
|
children: [
|
|
890
|
-
/* @__PURE__ */
|
|
891
|
-
` ${
|
|
890
|
+
/* @__PURE__ */ a(Ue, { size: "x-small" }),
|
|
891
|
+
` ${i.markUnclear}`
|
|
892
892
|
]
|
|
893
893
|
}
|
|
894
894
|
),
|
|
895
|
-
/* @__PURE__ */
|
|
896
|
-
|
|
895
|
+
/* @__PURE__ */ E(
|
|
896
|
+
me.Item,
|
|
897
897
|
{
|
|
898
|
-
ref:
|
|
898
|
+
ref: l,
|
|
899
899
|
disabled: e,
|
|
900
|
-
onClick: () => o(
|
|
900
|
+
onClick: () => o(L.IMPORTANT),
|
|
901
901
|
children: [
|
|
902
|
-
/* @__PURE__ */
|
|
903
|
-
` ${
|
|
902
|
+
/* @__PURE__ */ a($e, { size: "x-small" }),
|
|
903
|
+
` ${i.markImportant}`
|
|
904
904
|
]
|
|
905
905
|
}
|
|
906
906
|
)
|
|
@@ -909,216 +909,216 @@ const pt = "notebook-tray-content", Zo = ({ children: t }) => {
|
|
|
909
909
|
);
|
|
910
910
|
}
|
|
911
911
|
);
|
|
912
|
-
|
|
913
|
-
const
|
|
914
|
-
function
|
|
912
|
+
Et.displayName = "NoteReactionMenu";
|
|
913
|
+
const Tt = "notebook-inline-reaction-menu";
|
|
914
|
+
function Le(t) {
|
|
915
915
|
var e;
|
|
916
|
-
return !!((e = document.getElementById(
|
|
916
|
+
return !!((e = document.getElementById(Tt)) != null && e.contains(t));
|
|
917
917
|
}
|
|
918
|
-
function
|
|
918
|
+
function cr({
|
|
919
919
|
containerRef: t,
|
|
920
920
|
highlightTheme: e,
|
|
921
921
|
debounceTime: n = 500,
|
|
922
922
|
onCreateError: o,
|
|
923
923
|
onUpdateError: r,
|
|
924
|
-
onDeleteError:
|
|
925
|
-
onNoteCreate:
|
|
924
|
+
onDeleteError: i,
|
|
925
|
+
onNoteCreate: s
|
|
926
926
|
}) {
|
|
927
927
|
const {
|
|
928
|
-
api:
|
|
929
|
-
objectId:
|
|
930
|
-
objectType:
|
|
931
|
-
courseId:
|
|
928
|
+
api: l,
|
|
929
|
+
objectId: d,
|
|
930
|
+
objectType: u,
|
|
931
|
+
courseId: m,
|
|
932
932
|
pageLastModifiedAt: c,
|
|
933
|
-
selectedNoteId:
|
|
934
|
-
isTrayOpen:
|
|
935
|
-
selectNote:
|
|
936
|
-
openTray:
|
|
937
|
-
} =
|
|
938
|
-
api:
|
|
939
|
-
courseId:
|
|
940
|
-
learningObject: { type:
|
|
941
|
-
}), { mutate:
|
|
942
|
-
|
|
943
|
-
const [
|
|
944
|
-
|
|
945
|
-
const
|
|
946
|
-
if (
|
|
947
|
-
const
|
|
948
|
-
if (
|
|
949
|
-
|
|
933
|
+
selectedNoteId: p,
|
|
934
|
+
isTrayOpen: T,
|
|
935
|
+
selectNote: b,
|
|
936
|
+
openTray: w
|
|
937
|
+
} = bt(), { translations: y } = J(), { data: O } = gt({
|
|
938
|
+
api: l,
|
|
939
|
+
courseId: m,
|
|
940
|
+
learningObject: { type: u, id: d }
|
|
941
|
+
}), { mutate: v, isPending: h } = hn(l), { mutateAsync: I } = bn(l), { mutate: P } = pn(l), D = _([]), [W, C] = z([]), [R, S] = z(null), [B, re] = z(""), [X, ue] = z(null), te = _(null);
|
|
942
|
+
te.current = X;
|
|
943
|
+
const [pe, ie] = z(""), ce = _(null), F = _(!1), [K, se] = z(!1);
|
|
944
|
+
V(() => {
|
|
945
|
+
const M = t.current;
|
|
946
|
+
if (!M) return;
|
|
947
|
+
const A = M.closest(".user_content") ?? M;
|
|
948
|
+
if (A.classList.contains("enhanced")) {
|
|
949
|
+
se(!0);
|
|
950
950
|
return;
|
|
951
951
|
}
|
|
952
|
-
const
|
|
953
|
-
for (const
|
|
954
|
-
if (
|
|
955
|
-
|
|
952
|
+
const U = new MutationObserver(($) => {
|
|
953
|
+
for (const H of $)
|
|
954
|
+
if (H.type === "attributes" && H.attributeName === "class" && H.target.classList.contains("enhanced")) {
|
|
955
|
+
se(!0), U.disconnect();
|
|
956
956
|
return;
|
|
957
957
|
}
|
|
958
958
|
});
|
|
959
|
-
return
|
|
959
|
+
return U.observe(A, { attributes: !0, attributeFilter: ["class"] }), () => U.disconnect();
|
|
960
960
|
}, [t]);
|
|
961
|
-
const
|
|
962
|
-
|
|
961
|
+
const ee = q(() => {
|
|
962
|
+
ue(null), S(null), re(""), ie("");
|
|
963
963
|
}, []);
|
|
964
|
-
|
|
965
|
-
if (!
|
|
966
|
-
let
|
|
967
|
-
const
|
|
968
|
-
|
|
964
|
+
V(() => {
|
|
965
|
+
if (!K || !t.current) return;
|
|
966
|
+
let A = null;
|
|
967
|
+
const U = () => {
|
|
968
|
+
A && clearTimeout(A), A = setTimeout(() => {
|
|
969
969
|
var We;
|
|
970
|
-
const
|
|
971
|
-
if (!
|
|
972
|
-
const
|
|
973
|
-
if (!
|
|
974
|
-
|
|
970
|
+
const N = window.getSelection(), j = t.current;
|
|
971
|
+
if (!j) return;
|
|
972
|
+
const g = N != null && N.rangeCount ? N.toString().trim() : "";
|
|
973
|
+
if (!N || g === "") {
|
|
974
|
+
te.current !== null && !Le(document.activeElement) && ee();
|
|
975
975
|
return;
|
|
976
976
|
}
|
|
977
|
-
const
|
|
978
|
-
if (!
|
|
979
|
-
const
|
|
980
|
-
|
|
977
|
+
const G = N.getRangeAt(0);
|
|
978
|
+
if (!j.contains(G.commonAncestorContainer)) return;
|
|
979
|
+
const ae = (We = le.fromRange(j, G)) == null ? void 0 : We.toSelector();
|
|
980
|
+
ae && !on(ae, W) && (S(G.cloneRange()), re(g), ue(nn(G)), ie(y.selectionMenuInstructions));
|
|
981
981
|
}, n);
|
|
982
|
-
},
|
|
983
|
-
|
|
984
|
-
},
|
|
985
|
-
|
|
986
|
-
},
|
|
987
|
-
var
|
|
988
|
-
if (
|
|
989
|
-
|
|
982
|
+
}, $ = (N) => {
|
|
983
|
+
N.target instanceof Node && (Le(N.target) ? (N.preventDefault(), N.stopImmediatePropagation()) : ee());
|
|
984
|
+
}, H = () => {
|
|
985
|
+
ee();
|
|
986
|
+
}, k = (N) => {
|
|
987
|
+
var j;
|
|
988
|
+
if (N.key === "Escape" && te.current !== null) {
|
|
989
|
+
ee(), N.stopImmediatePropagation();
|
|
990
990
|
return;
|
|
991
991
|
}
|
|
992
|
-
(
|
|
992
|
+
(N.ctrlKey || N.metaKey) && N.shiftKey && N.key.toLowerCase() === "l" && te.current !== null && (N.preventDefault(), (j = ce.current) == null || j.focus());
|
|
993
993
|
};
|
|
994
|
-
return document.addEventListener("selectionchange",
|
|
995
|
-
|
|
994
|
+
return document.addEventListener("selectionchange", U), document.addEventListener("mousedown", $), document.addEventListener("touchstart", $), document.addEventListener("keydown", k), window.addEventListener("scroll", H, !0), () => {
|
|
995
|
+
A && clearTimeout(A), document.removeEventListener("selectionchange", U), document.removeEventListener("mousedown", $), document.removeEventListener("touchstart", $), document.removeEventListener("keydown", k), window.removeEventListener("scroll", H, !0);
|
|
996
996
|
};
|
|
997
|
-
}, [
|
|
998
|
-
const
|
|
999
|
-
(
|
|
1000
|
-
var
|
|
1001
|
-
const
|
|
1002
|
-
if (!
|
|
1003
|
-
const { highlightData:
|
|
1004
|
-
if (
|
|
1005
|
-
const { range:
|
|
1006
|
-
if (
|
|
1007
|
-
const
|
|
1008
|
-
id:
|
|
1009
|
-
selectedNoteId:
|
|
1010
|
-
type:
|
|
1011
|
-
isTrayOpen:
|
|
1012
|
-
labelPrefix: `${
|
|
1013
|
-
popupId:
|
|
997
|
+
}, [K, W, n, t, ee, y]);
|
|
998
|
+
const ye = q(
|
|
999
|
+
(M) => {
|
|
1000
|
+
var j;
|
|
1001
|
+
const A = t.current;
|
|
1002
|
+
if (!A || !M.highlightData) return null;
|
|
1003
|
+
const { highlightData: U, reaction: $, id: H } = M;
|
|
1004
|
+
if (U.hasNoHighlightAnymore) return null;
|
|
1005
|
+
const { range: k } = U, N = k && ((j = de.fromSelector(A, k)) == null ? void 0 : j.toRange());
|
|
1006
|
+
if (N) {
|
|
1007
|
+
const g = $[0] === L.IMPORTANT ? y.important : y.unclear, G = {
|
|
1008
|
+
id: H,
|
|
1009
|
+
selectedNoteId: p,
|
|
1010
|
+
type: $[0],
|
|
1011
|
+
isTrayOpen: T,
|
|
1012
|
+
labelPrefix: `${y.notebookNote} (${g})`,
|
|
1013
|
+
popupId: Nt,
|
|
1014
1014
|
onClick: () => {
|
|
1015
|
-
|
|
1015
|
+
b(H), w();
|
|
1016
1016
|
}
|
|
1017
1017
|
};
|
|
1018
|
-
return
|
|
1018
|
+
return fn(N, G, e), U.textPosition;
|
|
1019
1019
|
}
|
|
1020
1020
|
return null;
|
|
1021
1021
|
},
|
|
1022
|
-
[t,
|
|
1022
|
+
[t, p, T, e, y, b, w]
|
|
1023
1023
|
);
|
|
1024
|
-
|
|
1025
|
-
if (!
|
|
1026
|
-
const
|
|
1027
|
-
if (
|
|
1028
|
-
if (
|
|
1029
|
-
for (const
|
|
1030
|
-
|
|
1031
|
-
|
|
1024
|
+
V(() => {
|
|
1025
|
+
if (!K || !O || !t.current) return;
|
|
1026
|
+
const M = t.current, A = O.notes, U = /* @__PURE__ */ new Set(), $ = [], H = [];
|
|
1027
|
+
if (A.length === 0) {
|
|
1028
|
+
if (D.current.length > 0) {
|
|
1029
|
+
for (const k of D.current)
|
|
1030
|
+
Ze(k, M);
|
|
1031
|
+
D.current = [], C([]);
|
|
1032
1032
|
}
|
|
1033
1033
|
return;
|
|
1034
1034
|
}
|
|
1035
|
-
if (c &&
|
|
1036
|
-
const { notesForUpdate:
|
|
1037
|
-
|
|
1038
|
-
|
|
1035
|
+
if (c && A[0].highlightData.pageLastModifiedAt !== c) {
|
|
1036
|
+
const { notesForUpdate: k, noteIdsForDelete: N } = en(
|
|
1037
|
+
M,
|
|
1038
|
+
A,
|
|
1039
1039
|
c
|
|
1040
1040
|
);
|
|
1041
|
-
for (const
|
|
1042
|
-
|
|
1043
|
-
for (const
|
|
1044
|
-
|
|
1041
|
+
for (const j of k)
|
|
1042
|
+
I({ id: j.id, input: j }).catch((g) => r == null ? void 0 : r(g));
|
|
1043
|
+
for (const j of N)
|
|
1044
|
+
P(j, { onError: i });
|
|
1045
1045
|
} else {
|
|
1046
|
-
for (const
|
|
1047
|
-
const
|
|
1048
|
-
|
|
1046
|
+
for (const k of A) {
|
|
1047
|
+
const N = ye(k);
|
|
1048
|
+
N && (U.add(k.id), $.push(k), H.push(N));
|
|
1049
1049
|
}
|
|
1050
|
-
for (const
|
|
1051
|
-
|
|
1052
|
-
|
|
1050
|
+
for (const k of D.current)
|
|
1051
|
+
U.has(k.id) || Ze(k, M);
|
|
1052
|
+
C(H), D.current = $, p && tn(p);
|
|
1053
1053
|
}
|
|
1054
1054
|
}, [
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1055
|
+
K,
|
|
1056
|
+
O,
|
|
1057
|
+
ye,
|
|
1058
1058
|
c,
|
|
1059
1059
|
t,
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1060
|
+
I,
|
|
1061
|
+
P,
|
|
1062
|
+
p
|
|
1063
1063
|
]);
|
|
1064
|
-
const
|
|
1065
|
-
const
|
|
1066
|
-
if (!
|
|
1067
|
-
|
|
1068
|
-
const
|
|
1069
|
-
|
|
1064
|
+
const fe = (M) => {
|
|
1065
|
+
const A = t.current;
|
|
1066
|
+
if (!R || !A || F.current) return;
|
|
1067
|
+
F.current = !0;
|
|
1068
|
+
const U = de.fromRange(A, R), $ = le.fromRange(A, R);
|
|
1069
|
+
v(
|
|
1070
1070
|
{
|
|
1071
|
-
courseId:
|
|
1072
|
-
objectId:
|
|
1073
|
-
objectType:
|
|
1071
|
+
courseId: m,
|
|
1072
|
+
objectId: d,
|
|
1073
|
+
objectType: u,
|
|
1074
1074
|
userText: "",
|
|
1075
|
-
reaction: [
|
|
1075
|
+
reaction: [M],
|
|
1076
1076
|
highlightData: {
|
|
1077
|
-
selectedText:
|
|
1078
|
-
textPosition: (
|
|
1079
|
-
range:
|
|
1077
|
+
selectedText: B,
|
|
1078
|
+
textPosition: ($ == null ? void 0 : $.toSelector()) ?? null,
|
|
1079
|
+
range: U.toSelector(),
|
|
1080
1080
|
pageLastModifiedAt: c ?? ""
|
|
1081
1081
|
}
|
|
1082
1082
|
},
|
|
1083
1083
|
{
|
|
1084
|
-
onSuccess: (
|
|
1085
|
-
var
|
|
1086
|
-
const
|
|
1087
|
-
|
|
1084
|
+
onSuccess: (H) => {
|
|
1085
|
+
var N;
|
|
1086
|
+
const k = H.id;
|
|
1087
|
+
ee(), (N = window.getSelection()) == null || N.removeAllRanges(), b(k), w(), s == null || s(H);
|
|
1088
1088
|
},
|
|
1089
1089
|
onError: o,
|
|
1090
1090
|
// Unlock on failure too, so the user can retry from the still-open menu
|
|
1091
1091
|
onSettled: () => {
|
|
1092
|
-
|
|
1092
|
+
F.current = !1;
|
|
1093
1093
|
}
|
|
1094
1094
|
}
|
|
1095
1095
|
);
|
|
1096
1096
|
};
|
|
1097
|
-
return /* @__PURE__ */
|
|
1098
|
-
/* @__PURE__ */
|
|
1099
|
-
|
|
1100
|
-
/* @__PURE__ */
|
|
1097
|
+
return /* @__PURE__ */ E(Me, { children: [
|
|
1098
|
+
/* @__PURE__ */ a(be, { "aria-live": "polite", "aria-atomic": "true", children: pe }),
|
|
1099
|
+
R && X && Ot(
|
|
1100
|
+
/* @__PURE__ */ a(
|
|
1101
1101
|
"div",
|
|
1102
1102
|
{
|
|
1103
|
-
id:
|
|
1103
|
+
id: Tt,
|
|
1104
1104
|
role: "toolbar",
|
|
1105
1105
|
style: {
|
|
1106
1106
|
position: "fixed",
|
|
1107
1107
|
zIndex: 100,
|
|
1108
|
-
top:
|
|
1109
|
-
left:
|
|
1108
|
+
top: X.top,
|
|
1109
|
+
left: X.left,
|
|
1110
1110
|
whiteSpace: "nowrap"
|
|
1111
1111
|
},
|
|
1112
|
-
onBlur: (
|
|
1113
|
-
|
|
1112
|
+
onBlur: (M) => {
|
|
1113
|
+
Le(M.relatedTarget) || ee();
|
|
1114
1114
|
},
|
|
1115
|
-
children: /* @__PURE__ */
|
|
1116
|
-
|
|
1115
|
+
children: /* @__PURE__ */ a(
|
|
1116
|
+
Et,
|
|
1117
1117
|
{
|
|
1118
|
-
ref:
|
|
1118
|
+
ref: ce,
|
|
1119
1119
|
autoFocus: !1,
|
|
1120
|
-
onSelectReaction:
|
|
1121
|
-
disabled:
|
|
1120
|
+
onSelectReaction: fe,
|
|
1121
|
+
disabled: h
|
|
1122
1122
|
}
|
|
1123
1123
|
)
|
|
1124
1124
|
}
|
|
@@ -1127,19 +1127,19 @@ function Jo({
|
|
|
1127
1127
|
)
|
|
1128
1128
|
] });
|
|
1129
1129
|
}
|
|
1130
|
-
const
|
|
1131
|
-
backgroundColor: t ===
|
|
1132
|
-
underlineColor: t ===
|
|
1133
|
-
underlineStyle: t ===
|
|
1134
|
-
}),
|
|
1130
|
+
const bo = (t, e) => ({
|
|
1131
|
+
backgroundColor: t === L.IMPORTANT ? e.colors.importantBackground : e.colors.confusingBackground,
|
|
1132
|
+
underlineColor: t === L.IMPORTANT ? e.colors.importantUnderline : e.colors.confusingUnderline,
|
|
1133
|
+
underlineStyle: t === L.IMPORTANT ? "solid" : "dashed"
|
|
1134
|
+
}), Pe = ({
|
|
1135
1135
|
children: t,
|
|
1136
|
-
type: e =
|
|
1136
|
+
type: e = L.IMPORTANT,
|
|
1137
1137
|
isCardActive: n = !0,
|
|
1138
1138
|
theme: o
|
|
1139
1139
|
}) => {
|
|
1140
|
-
const r =
|
|
1140
|
+
const r = bo(e, o), s = {
|
|
1141
1141
|
position: "relative",
|
|
1142
|
-
backgroundColor: n ? r.backgroundColor :
|
|
1142
|
+
backgroundColor: n ? r.backgroundColor : Ge(r.backgroundColor, 0.5),
|
|
1143
1143
|
textDecorationLine: "underline",
|
|
1144
1144
|
textDecorationStyle: r.underlineStyle,
|
|
1145
1145
|
textDecorationColor: r.underlineColor,
|
|
@@ -1147,138 +1147,138 @@ const mo = (t, e) => ({
|
|
|
1147
1147
|
textUnderlineOffset: o.underlineOffset,
|
|
1148
1148
|
lineHeight: "normal"
|
|
1149
1149
|
};
|
|
1150
|
-
return /* @__PURE__ */
|
|
1150
|
+
return /* @__PURE__ */ a("span", { "data-note-highlight": "true", style: s, children: t });
|
|
1151
1151
|
};
|
|
1152
|
-
function
|
|
1152
|
+
function St(t, e = "noHighlight") {
|
|
1153
1153
|
return e === "sourceUnavailable" ? t.highlightSourceUnavailable : t.highlightUnavailable;
|
|
1154
1154
|
}
|
|
1155
|
-
const
|
|
1156
|
-
const { translations: e } =
|
|
1157
|
-
return /* @__PURE__ */
|
|
1158
|
-
},
|
|
1155
|
+
const vt = ({ reason: t } = {}) => {
|
|
1156
|
+
const { translations: e } = J();
|
|
1157
|
+
return /* @__PURE__ */ a(x, { gap: "xx-small", alignItems: "start", as: "div", children: /* @__PURE__ */ a(x.Item, { padding: "xxx-small none", shouldShrink: !0, children: /* @__PURE__ */ a(Q, { as: "div", fontStyle: "italic", color: "secondary", children: /* @__PURE__ */ a(Ce, { maxLines: 3, children: St(e, t) }) }) }) });
|
|
1158
|
+
}, No = {
|
|
1159
1159
|
filter: null,
|
|
1160
1160
|
courseFilter: null,
|
|
1161
1161
|
currentPage: 1,
|
|
1162
1162
|
totalPages: void 0
|
|
1163
1163
|
};
|
|
1164
|
-
function
|
|
1164
|
+
function ve(t, e) {
|
|
1165
1165
|
const n = typeof e == "number" ? Math.min(e, t) : t;
|
|
1166
1166
|
return Math.max(1, n);
|
|
1167
1167
|
}
|
|
1168
|
-
function
|
|
1168
|
+
function Eo(t, e) {
|
|
1169
1169
|
switch (e.type) {
|
|
1170
1170
|
case "SET_FILTER":
|
|
1171
1171
|
return { ...t, filter: e.payload, currentPage: 1 };
|
|
1172
1172
|
case "SET_COURSE_FILTER":
|
|
1173
1173
|
return { ...t, courseFilter: e.payload, currentPage: 1 };
|
|
1174
1174
|
case "SET_PAGE":
|
|
1175
|
-
return { ...t, currentPage:
|
|
1175
|
+
return { ...t, currentPage: ve(e.payload, t.totalPages) };
|
|
1176
1176
|
case "FOCUS_PAGE":
|
|
1177
1177
|
return { ...t, currentPage: Math.max(1, e.payload) };
|
|
1178
1178
|
case "INCREMENT_PAGE":
|
|
1179
|
-
return { ...t, currentPage:
|
|
1179
|
+
return { ...t, currentPage: ve(t.currentPage + 1, t.totalPages) };
|
|
1180
1180
|
case "DECREMENT_PAGE":
|
|
1181
|
-
return { ...t, currentPage:
|
|
1181
|
+
return { ...t, currentPage: ve(t.currentPage - 1, t.totalPages) };
|
|
1182
1182
|
case "SET_TOTAL_PAGES":
|
|
1183
1183
|
return t.totalPages === e.payload ? t : {
|
|
1184
1184
|
...t,
|
|
1185
1185
|
totalPages: e.payload,
|
|
1186
|
-
currentPage:
|
|
1186
|
+
currentPage: ve(t.currentPage, e.payload)
|
|
1187
1187
|
};
|
|
1188
1188
|
default:
|
|
1189
1189
|
return t;
|
|
1190
1190
|
}
|
|
1191
1191
|
}
|
|
1192
|
-
function
|
|
1192
|
+
function dr({
|
|
1193
1193
|
api: t,
|
|
1194
1194
|
courseId: e,
|
|
1195
1195
|
enableCourseFilter: n = !1,
|
|
1196
1196
|
learningObject: o,
|
|
1197
1197
|
pageSize: r = 16,
|
|
1198
|
-
focusNoteId:
|
|
1198
|
+
focusNoteId: i
|
|
1199
1199
|
}) {
|
|
1200
|
-
var
|
|
1201
|
-
const [
|
|
1202
|
-
|
|
1203
|
-
|
|
1200
|
+
var ce;
|
|
1201
|
+
const [s, l] = rt(Eo, No), { filter: d, courseFilter: u, currentPage: m, totalPages: c } = s;
|
|
1202
|
+
V(() => {
|
|
1203
|
+
l({ type: "SET_PAGE", payload: 1 });
|
|
1204
1204
|
}, [r]);
|
|
1205
|
-
const
|
|
1206
|
-
...
|
|
1207
|
-
...
|
|
1205
|
+
const p = n ? u : e, T = (m - 1) * r, b = !!o, w = {
|
|
1206
|
+
...p ? { courseId: p } : {},
|
|
1207
|
+
...d ? { reactions: [d] } : {},
|
|
1208
1208
|
...o ? { learningObject: o } : {}
|
|
1209
1209
|
}, {
|
|
1210
|
-
data:
|
|
1211
|
-
isLoading:
|
|
1212
|
-
isError:
|
|
1213
|
-
} =
|
|
1210
|
+
data: y,
|
|
1211
|
+
isLoading: O,
|
|
1212
|
+
isError: v
|
|
1213
|
+
} = mt({
|
|
1214
1214
|
api: t,
|
|
1215
|
-
filter:
|
|
1216
|
-
offset:
|
|
1215
|
+
filter: w,
|
|
1216
|
+
offset: T,
|
|
1217
1217
|
pageSize: r,
|
|
1218
|
-
enabled: !
|
|
1218
|
+
enabled: !b
|
|
1219
1219
|
}), {
|
|
1220
|
-
data:
|
|
1221
|
-
isLoading:
|
|
1222
|
-
isError:
|
|
1223
|
-
} =
|
|
1220
|
+
data: h,
|
|
1221
|
+
isLoading: I,
|
|
1222
|
+
isError: P
|
|
1223
|
+
} = gt({
|
|
1224
1224
|
api: t,
|
|
1225
|
-
courseId:
|
|
1225
|
+
courseId: p ?? void 0,
|
|
1226
1226
|
learningObject: o,
|
|
1227
|
-
enabled:
|
|
1228
|
-
}),
|
|
1229
|
-
const
|
|
1230
|
-
return
|
|
1231
|
-
}, [
|
|
1232
|
-
|
|
1233
|
-
if (!
|
|
1234
|
-
|
|
1227
|
+
enabled: b
|
|
1228
|
+
}), D = he(() => {
|
|
1229
|
+
const F = (h == null ? void 0 : h.notes) ?? [];
|
|
1230
|
+
return d ? F.filter((K) => K.reaction.includes(d)) : F;
|
|
1231
|
+
}, [h, d]), W = _(null);
|
|
1232
|
+
V(() => {
|
|
1233
|
+
if (!i) {
|
|
1234
|
+
W.current = null;
|
|
1235
1235
|
return;
|
|
1236
1236
|
}
|
|
1237
|
-
if (
|
|
1238
|
-
const
|
|
1239
|
-
if (
|
|
1240
|
-
|
|
1241
|
-
const
|
|
1242
|
-
|
|
1243
|
-
}, [
|
|
1244
|
-
const
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
}, [
|
|
1248
|
-
const
|
|
1249
|
-
|
|
1250
|
-
}, []),
|
|
1251
|
-
|
|
1237
|
+
if (W.current === i) return;
|
|
1238
|
+
const F = D.findIndex((se) => se.id === i);
|
|
1239
|
+
if (F === -1) return;
|
|
1240
|
+
W.current = i;
|
|
1241
|
+
const K = Math.floor(F / r) + 1;
|
|
1242
|
+
K !== m && l({ type: "FOCUS_PAGE", payload: K });
|
|
1243
|
+
}, [i, D, r, m]);
|
|
1244
|
+
const C = b ? D.slice(T, T + r) : (y == null ? void 0 : y.notes) ?? [], R = b ? I : O, S = b ? P : v, B = b ? Math.max(1, Math.ceil(D.length / r)) : ((ce = y == null ? void 0 : y.pageInfo) == null ? void 0 : ce.totalNrOfPages) ?? void 0, re = b ? { totalCount: D.length, totalNrOfPages: B } : y == null ? void 0 : y.pageInfo;
|
|
1245
|
+
V(() => {
|
|
1246
|
+
l({ type: "SET_TOTAL_PAGES", payload: B });
|
|
1247
|
+
}, [B]);
|
|
1248
|
+
const X = q((F) => {
|
|
1249
|
+
l({ type: "SET_PAGE", payload: F });
|
|
1250
|
+
}, []), ue = q(() => {
|
|
1251
|
+
l({
|
|
1252
1252
|
type: "INCREMENT_PAGE"
|
|
1253
1253
|
/* IncrementPage */
|
|
1254
1254
|
});
|
|
1255
|
-
}, []),
|
|
1256
|
-
|
|
1255
|
+
}, []), te = q(() => {
|
|
1256
|
+
l({
|
|
1257
1257
|
type: "DECREMENT_PAGE"
|
|
1258
1258
|
/* DecrementPage */
|
|
1259
1259
|
});
|
|
1260
|
-
}, []),
|
|
1261
|
-
|
|
1262
|
-
}, []),
|
|
1263
|
-
|
|
1260
|
+
}, []), pe = q((F) => {
|
|
1261
|
+
l({ type: "SET_FILTER", payload: F });
|
|
1262
|
+
}, []), ie = q((F) => {
|
|
1263
|
+
l({ type: "SET_COURSE_FILTER", payload: F });
|
|
1264
1264
|
}, []);
|
|
1265
1265
|
return {
|
|
1266
|
-
notes:
|
|
1267
|
-
pageInfo:
|
|
1268
|
-
isLoading:
|
|
1269
|
-
isError:
|
|
1270
|
-
filter:
|
|
1271
|
-
courseFilter:
|
|
1272
|
-
currentPage:
|
|
1266
|
+
notes: C,
|
|
1267
|
+
pageInfo: re,
|
|
1268
|
+
isLoading: R,
|
|
1269
|
+
isError: S,
|
|
1270
|
+
filter: d,
|
|
1271
|
+
courseFilter: u,
|
|
1272
|
+
currentPage: m,
|
|
1273
1273
|
totalPages: c,
|
|
1274
|
-
setFilter:
|
|
1275
|
-
setCourseFilter:
|
|
1276
|
-
setPage:
|
|
1277
|
-
fetchNextPage:
|
|
1278
|
-
fetchPreviousPage:
|
|
1274
|
+
setFilter: pe,
|
|
1275
|
+
setCourseFilter: ie,
|
|
1276
|
+
setPage: X,
|
|
1277
|
+
fetchNextPage: ue,
|
|
1278
|
+
fetchPreviousPage: te
|
|
1279
1279
|
};
|
|
1280
1280
|
}
|
|
1281
|
-
function
|
|
1281
|
+
function Ie(t, e, n) {
|
|
1282
1282
|
try {
|
|
1283
1283
|
return t.toLocaleDateString(e, n);
|
|
1284
1284
|
} catch {
|
|
@@ -1290,14 +1290,120 @@ function po(t, e, n) {
|
|
|
1290
1290
|
}
|
|
1291
1291
|
}
|
|
1292
1292
|
}
|
|
1293
|
-
|
|
1293
|
+
function Ye(t, e, n) {
|
|
1294
|
+
try {
|
|
1295
|
+
return t.toLocaleTimeString(e, n);
|
|
1296
|
+
} catch {
|
|
1297
|
+
const { timeZone: o, ...r } = n;
|
|
1298
|
+
try {
|
|
1299
|
+
return t.toLocaleTimeString(e, r);
|
|
1300
|
+
} catch {
|
|
1301
|
+
return t.toLocaleTimeString(void 0, r);
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
const Je = /* @__PURE__ */ new Map(), et = /* @__PURE__ */ new Map();
|
|
1306
|
+
function To(t) {
|
|
1307
|
+
let e = Je.get(t);
|
|
1308
|
+
if (!e) {
|
|
1309
|
+
const n = {
|
|
1310
|
+
timeZone: t,
|
|
1311
|
+
year: "numeric",
|
|
1312
|
+
month: "2-digit",
|
|
1313
|
+
day: "2-digit"
|
|
1314
|
+
};
|
|
1315
|
+
try {
|
|
1316
|
+
e = new Intl.DateTimeFormat("en-US", n);
|
|
1317
|
+
} catch {
|
|
1318
|
+
console.warn(
|
|
1319
|
+
`[platform-datetime] invalid timezone "${t}" — falling back to runtime default`
|
|
1320
|
+
), e = new Intl.DateTimeFormat("en-US", { ...n, timeZone: void 0 });
|
|
1321
|
+
}
|
|
1322
|
+
Je.set(t, e);
|
|
1323
|
+
}
|
|
1324
|
+
return e;
|
|
1325
|
+
}
|
|
1326
|
+
function So(t, e) {
|
|
1327
|
+
const n = To(e), o = (s) => {
|
|
1328
|
+
const l = Object.fromEntries(n.formatToParts(s).map((d) => [d.type, d.value]));
|
|
1329
|
+
return new Date(Number(l.year), Number(l.month) - 1, Number(l.day));
|
|
1330
|
+
}, r = o(t), i = o(/* @__PURE__ */ new Date());
|
|
1331
|
+
return Math.round((r.getTime() - i.getTime()) / (1e3 * 60 * 60 * 24));
|
|
1332
|
+
}
|
|
1333
|
+
function vo(t, e, n, o, r) {
|
|
1334
|
+
if (e >= -1 && e <= 1) {
|
|
1335
|
+
let i = et.get(n);
|
|
1336
|
+
if (!i) {
|
|
1337
|
+
try {
|
|
1338
|
+
i = new Intl.RelativeTimeFormat(n, { numeric: "auto" });
|
|
1339
|
+
} catch {
|
|
1340
|
+
console.warn(
|
|
1341
|
+
`[platform-datetime] invalid locale "${n}" — falling back to runtime default`
|
|
1342
|
+
), i = new Intl.RelativeTimeFormat(void 0, { numeric: "auto" });
|
|
1343
|
+
}
|
|
1344
|
+
et.set(n, i);
|
|
1345
|
+
}
|
|
1346
|
+
const s = i.format(e, "day");
|
|
1347
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
1348
|
+
}
|
|
1349
|
+
return (r === "past" ? e >= -6 && e <= -2 : e >= 2 && e <= 6) ? Ie(t, n, {
|
|
1350
|
+
weekday: "long",
|
|
1351
|
+
timeZone: o
|
|
1352
|
+
}) : Ie(t, n, {
|
|
1353
|
+
month: "short",
|
|
1354
|
+
day: "numeric",
|
|
1355
|
+
year: "numeric",
|
|
1356
|
+
timeZone: o
|
|
1357
|
+
});
|
|
1358
|
+
}
|
|
1359
|
+
function Ct(t, e, n, o) {
|
|
1360
|
+
const r = t instanceof Date ? t : new Date(t);
|
|
1361
|
+
if (Number.isNaN(r.getTime())) return "";
|
|
1362
|
+
const i = So(r, n), s = (o == null ? void 0 : o.showTime) ?? !1, l = (o == null ? void 0 : o.perspective) ?? "past";
|
|
1363
|
+
if (i === 0)
|
|
1364
|
+
return Ye(r, e, {
|
|
1365
|
+
timeZone: n,
|
|
1366
|
+
hour: "numeric",
|
|
1367
|
+
minute: "2-digit"
|
|
1368
|
+
});
|
|
1369
|
+
const d = vo(r, i, e, n, l);
|
|
1370
|
+
if (s) {
|
|
1371
|
+
const u = Ye(r, e, {
|
|
1372
|
+
timeZone: n,
|
|
1373
|
+
hour: "numeric",
|
|
1374
|
+
minute: "2-digit"
|
|
1375
|
+
});
|
|
1376
|
+
return `${d}, ${u}`;
|
|
1377
|
+
}
|
|
1378
|
+
return d;
|
|
1379
|
+
}
|
|
1380
|
+
function Co({
|
|
1381
|
+
dateTime: t,
|
|
1382
|
+
showTime: e = !1,
|
|
1383
|
+
prefix: n,
|
|
1384
|
+
locale: o,
|
|
1385
|
+
timezone: r,
|
|
1386
|
+
format: i
|
|
1387
|
+
}) {
|
|
1388
|
+
const { isoString: s, formatted: l } = he(() => {
|
|
1389
|
+
if (!t) return { isoString: "", formatted: "" };
|
|
1390
|
+
const u = t instanceof Date ? t : new Date(t);
|
|
1391
|
+
if (Number.isNaN(u.getTime())) return { isoString: "", formatted: "" };
|
|
1392
|
+
const m = u.toISOString(), c = i ? Ie(u, o, { timeZone: r, ...i }) : Ct(u, o, r, { showTime: e });
|
|
1393
|
+
return { isoString: m, formatted: c };
|
|
1394
|
+
}, [t, o, r, i, e]);
|
|
1395
|
+
if (!l) return null;
|
|
1396
|
+
const d = n ? `${n} ${l}` : l;
|
|
1397
|
+
return /* @__PURE__ */ a("time", { dateTime: s, title: l, children: d });
|
|
1398
|
+
}
|
|
1399
|
+
const xo = 1e3, Io = ["=", "+", "-", "@", " ", "\r"], tt = (t) => {
|
|
1294
1400
|
if (!t) return "";
|
|
1295
1401
|
let e = t;
|
|
1296
|
-
return
|
|
1402
|
+
return Io.includes(e[0]) && (e = `'${e}`), e.includes(",") || e.includes('"') || e.includes(`
|
|
1297
1403
|
`) || e.includes("\r") ? `"${e.replace(/"/g, '""')}"` : e;
|
|
1298
|
-
},
|
|
1404
|
+
}, wo = (t, e, n) => {
|
|
1299
1405
|
const o = new Date(t);
|
|
1300
|
-
return Number.isNaN(o.getTime()) ? t :
|
|
1406
|
+
return Number.isNaN(o.getTime()) ? t : Ie(o, e, {
|
|
1301
1407
|
year: "numeric",
|
|
1302
1408
|
month: "numeric",
|
|
1303
1409
|
day: "numeric",
|
|
@@ -1306,66 +1412,66 @@ const yo = 1e3, bo = ["=", "+", "-", "@", " ", "\r"], Ye = (t) => {
|
|
|
1306
1412
|
second: "2-digit",
|
|
1307
1413
|
timeZone: n
|
|
1308
1414
|
});
|
|
1309
|
-
},
|
|
1415
|
+
}, Ro = (t, e, n, o) => {
|
|
1310
1416
|
const r = [
|
|
1311
1417
|
e.exportColumnPageTitle,
|
|
1312
1418
|
e.exportColumnLabel,
|
|
1313
1419
|
e.exportColumnHighlightedText,
|
|
1314
1420
|
e.exportColumnNote,
|
|
1315
1421
|
e.exportColumnLastModified
|
|
1316
|
-
],
|
|
1317
|
-
(
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1422
|
+
], i = t.flatMap(
|
|
1423
|
+
(s) => s.notes.map((l) => [
|
|
1424
|
+
s.learningObjectName || e.exportUntitled,
|
|
1425
|
+
l.label,
|
|
1426
|
+
l.highlightedText,
|
|
1427
|
+
l.noteText,
|
|
1428
|
+
wo(l.updatedAt, n, o)
|
|
1323
1429
|
])
|
|
1324
1430
|
);
|
|
1325
|
-
return [r.map(
|
|
1431
|
+
return [r.map(tt).join(","), ...i.map((s) => s.map(tt).join(","))].join(
|
|
1326
1432
|
`
|
|
1327
1433
|
`
|
|
1328
1434
|
);
|
|
1329
|
-
},
|
|
1435
|
+
}, Oo = (t) => t.replace(/[\\/:*?"<>|()]/g, "").trim(), ko = () => {
|
|
1330
1436
|
const t = /* @__PURE__ */ new Date(), e = (n) => String(n).padStart(2, "0");
|
|
1331
1437
|
return `${t.getFullYear()}-${e(t.getMonth() + 1)}-${e(t.getDate())}_${e(t.getHours())}-${e(t.getMinutes())}-${e(t.getSeconds())}`;
|
|
1332
1438
|
};
|
|
1333
|
-
function
|
|
1334
|
-
const { translations: n } =
|
|
1335
|
-
return { exportNotesAsCSV: (r,
|
|
1336
|
-
const
|
|
1439
|
+
function ur({ locale: t, timezone: e } = {}) {
|
|
1440
|
+
const { translations: n } = J();
|
|
1441
|
+
return { exportNotesAsCSV: (r, i) => {
|
|
1442
|
+
const s = Ro(
|
|
1337
1443
|
r,
|
|
1338
1444
|
n,
|
|
1339
1445
|
t ?? Intl.DateTimeFormat().resolvedOptions().locale,
|
|
1340
1446
|
e
|
|
1341
|
-
),
|
|
1342
|
-
|
|
1447
|
+
), l = new Blob([s], { type: "text/csv;charset=utf-8;" }), d = URL.createObjectURL(l), u = document.createElement("a"), m = Oo(i), c = `${n.notebook} ${m ? `${m} ` : ""}${ko()}.csv`;
|
|
1448
|
+
u.setAttribute("href", d), u.setAttribute("download", c), document.body.appendChild(u), u.click(), document.body.removeChild(u), setTimeout(() => URL.revokeObjectURL(d), xo);
|
|
1343
1449
|
} };
|
|
1344
1450
|
}
|
|
1345
|
-
const
|
|
1346
|
-
function
|
|
1347
|
-
const { translations: n } =
|
|
1451
|
+
const Ae = "all";
|
|
1452
|
+
function fr({ filter: t, setFilter: e }) {
|
|
1453
|
+
const { translations: n } = J(), o = he(
|
|
1348
1454
|
() => [
|
|
1349
|
-
{ label: n.allNotes, value:
|
|
1350
|
-
{ label: n.important, value:
|
|
1351
|
-
{ label: n.unclear, value:
|
|
1455
|
+
{ label: n.allNotes, value: Ae },
|
|
1456
|
+
{ label: n.important, value: L.IMPORTANT },
|
|
1457
|
+
{ label: n.unclear, value: L.CONFUSING }
|
|
1352
1458
|
],
|
|
1353
1459
|
[n]
|
|
1354
|
-
), r =
|
|
1355
|
-
(
|
|
1356
|
-
e(!
|
|
1460
|
+
), r = q(
|
|
1461
|
+
(s, { value: l }) => {
|
|
1462
|
+
e(!l || l === Ae ? null : l);
|
|
1357
1463
|
},
|
|
1358
1464
|
[e]
|
|
1359
1465
|
);
|
|
1360
1466
|
return {
|
|
1361
|
-
filterElement:
|
|
1362
|
-
() => /* @__PURE__ */
|
|
1363
|
-
|
|
1467
|
+
filterElement: he(
|
|
1468
|
+
() => /* @__PURE__ */ a(
|
|
1469
|
+
Ke,
|
|
1364
1470
|
{
|
|
1365
1471
|
renderLabel: n.filter,
|
|
1366
|
-
value: t ??
|
|
1472
|
+
value: t ?? Ae,
|
|
1367
1473
|
onChange: r,
|
|
1368
|
-
children: o.map((
|
|
1474
|
+
children: o.map((s) => /* @__PURE__ */ a(Ke.Option, { id: s.value, value: s.value, children: s.label }, s.value))
|
|
1369
1475
|
}
|
|
1370
1476
|
),
|
|
1371
1477
|
[t, o, r, n.filter]
|
|
@@ -1374,170 +1480,163 @@ function nr({ filter: t, setFilter: e }) {
|
|
|
1374
1480
|
handleReactionFilterChange: r
|
|
1375
1481
|
};
|
|
1376
1482
|
}
|
|
1377
|
-
const
|
|
1378
|
-
const { translations: e } =
|
|
1379
|
-
return /* @__PURE__ */
|
|
1380
|
-
!t && /* @__PURE__ */
|
|
1381
|
-
/* @__PURE__ */
|
|
1382
|
-
/* @__PURE__ */
|
|
1383
|
-
!t && /* @__PURE__ */
|
|
1483
|
+
const Lo = ({ hasActiveFilter: t = !1 }) => {
|
|
1484
|
+
const { translations: e } = J(), n = t ? e.nothingHereYet : e.emptyStateHeading, o = t ? e.adjustFiltersOrCreate : e.emptyStateDescription;
|
|
1485
|
+
return /* @__PURE__ */ a(Y, { as: "div", textAlign: "center", children: /* @__PURE__ */ E(x, { direction: "column", alignItems: "center", gap: "small", children: [
|
|
1486
|
+
!t && /* @__PURE__ */ a(Pt, { size: "medium" }),
|
|
1487
|
+
/* @__PURE__ */ a(we, { level: "h3", children: n }),
|
|
1488
|
+
/* @__PURE__ */ a(Q, { color: "secondary", children: o }),
|
|
1489
|
+
!t && /* @__PURE__ */ a(Q, { color: "secondary", children: e.emptyStatePrecision })
|
|
1384
1490
|
] }) });
|
|
1385
|
-
},
|
|
1386
|
-
[
|
|
1491
|
+
}, Ao = "#2871AF", Do = (t) => ({
|
|
1492
|
+
[L.IMPORTANT]: {
|
|
1387
1493
|
color: "success",
|
|
1388
1494
|
themeOverride: {
|
|
1389
1495
|
successTextColor: t,
|
|
1390
1496
|
successBorderColor: t
|
|
1391
1497
|
},
|
|
1392
1498
|
translationKey: "important",
|
|
1393
|
-
icon: /* @__PURE__ */
|
|
1499
|
+
icon: /* @__PURE__ */ a($e, { size: "x-small" })
|
|
1394
1500
|
},
|
|
1395
|
-
[
|
|
1501
|
+
[L.CONFUSING]: {
|
|
1396
1502
|
color: "error",
|
|
1397
1503
|
themeOverride: void 0,
|
|
1398
1504
|
translationKey: "unclear",
|
|
1399
|
-
icon: /* @__PURE__ */
|
|
1505
|
+
icon: /* @__PURE__ */ a(Ue, { size: "x-small" })
|
|
1400
1506
|
}
|
|
1401
|
-
}),
|
|
1507
|
+
}), xt = ({
|
|
1402
1508
|
type: t,
|
|
1403
1509
|
onTypeChange: e,
|
|
1404
1510
|
renderAsMenuTrigger: n = !1,
|
|
1405
1511
|
theme: o,
|
|
1406
1512
|
unavailable: r
|
|
1407
1513
|
}) => {
|
|
1408
|
-
const { translations:
|
|
1514
|
+
const { translations: i } = J(), l = Do((o == null ? void 0 : o.importantPill) ?? Ao)[t], d = {
|
|
1409
1515
|
color: "warning",
|
|
1410
1516
|
themeOverride: void 0,
|
|
1411
1517
|
translationKey: "sourceChanged",
|
|
1412
|
-
icon: /* @__PURE__ */
|
|
1413
|
-
},
|
|
1414
|
-
(
|
|
1415
|
-
e == null || e(
|
|
1518
|
+
icon: /* @__PURE__ */ a(Mt, { size: "x-small" })
|
|
1519
|
+
}, u = i[l.translationKey], [m, c] = z(!1), p = _(null), T = _(null), b = _(null), w = q(
|
|
1520
|
+
(O) => {
|
|
1521
|
+
e == null || e(O), c(!1);
|
|
1416
1522
|
},
|
|
1417
1523
|
[e]
|
|
1418
|
-
),
|
|
1419
|
-
|
|
1524
|
+
), y = r ? /* @__PURE__ */ a(
|
|
1525
|
+
ke,
|
|
1420
1526
|
{
|
|
1421
|
-
color:
|
|
1422
|
-
themeOverride:
|
|
1423
|
-
renderIcon:
|
|
1424
|
-
children:
|
|
1527
|
+
color: d.color,
|
|
1528
|
+
themeOverride: d.themeOverride,
|
|
1529
|
+
renderIcon: d.icon,
|
|
1530
|
+
children: i[d.translationKey]
|
|
1425
1531
|
}
|
|
1426
1532
|
) : null;
|
|
1427
|
-
return
|
|
1428
|
-
if (!
|
|
1429
|
-
const
|
|
1430
|
-
|
|
1431
|
-
},
|
|
1432
|
-
var
|
|
1433
|
-
|
|
1533
|
+
return V(() => {
|
|
1534
|
+
if (!m) return;
|
|
1535
|
+
const O = (h) => {
|
|
1536
|
+
h.key === "Escape" && h.stopPropagation();
|
|
1537
|
+
}, v = (h) => {
|
|
1538
|
+
var I;
|
|
1539
|
+
h.key === "Escape" && (h.stopPropagation(), c(!1), (I = b.current) == null || I.focus());
|
|
1434
1540
|
};
|
|
1435
|
-
return document.addEventListener("keydown",
|
|
1436
|
-
document.removeEventListener("keydown",
|
|
1541
|
+
return document.addEventListener("keydown", O, !0), document.addEventListener("keyup", v, !0), () => {
|
|
1542
|
+
document.removeEventListener("keydown", O, !0), document.removeEventListener("keyup", v, !0);
|
|
1437
1543
|
};
|
|
1438
|
-
}, [
|
|
1439
|
-
/* @__PURE__ */
|
|
1440
|
-
|
|
1544
|
+
}, [m]), n && e ? /* @__PURE__ */ E(x, { gap: "x-small", wrap: "wrap", direction: "column", alignItems: "start", children: [
|
|
1545
|
+
/* @__PURE__ */ E(
|
|
1546
|
+
me,
|
|
1441
1547
|
{
|
|
1442
1548
|
placement: "bottom start",
|
|
1443
|
-
show:
|
|
1444
|
-
onToggle: (
|
|
1549
|
+
show: m,
|
|
1550
|
+
onToggle: (O) => c(O),
|
|
1445
1551
|
shouldHideOnSelect: !0,
|
|
1446
1552
|
shouldFocusTriggerOnClose: !0,
|
|
1447
|
-
trigger: /* @__PURE__ */
|
|
1448
|
-
|
|
1553
|
+
trigger: /* @__PURE__ */ a(
|
|
1554
|
+
ke,
|
|
1449
1555
|
{
|
|
1450
|
-
color:
|
|
1451
|
-
themeOverride:
|
|
1452
|
-
renderIcon:
|
|
1453
|
-
elementRef: (
|
|
1454
|
-
|
|
1556
|
+
color: l.color,
|
|
1557
|
+
themeOverride: l.themeOverride,
|
|
1558
|
+
renderIcon: l.icon,
|
|
1559
|
+
elementRef: (O) => {
|
|
1560
|
+
b.current = O;
|
|
1455
1561
|
},
|
|
1456
|
-
children:
|
|
1562
|
+
children: u
|
|
1457
1563
|
}
|
|
1458
1564
|
),
|
|
1459
1565
|
children: [
|
|
1460
|
-
/* @__PURE__ */
|
|
1461
|
-
/* @__PURE__ */
|
|
1462
|
-
` ${
|
|
1566
|
+
/* @__PURE__ */ E(me.Item, { ref: p, onClick: () => w(L.CONFUSING), children: [
|
|
1567
|
+
/* @__PURE__ */ a(Ue, { size: "x-small" }),
|
|
1568
|
+
` ${i.markUnclear}`
|
|
1463
1569
|
] }),
|
|
1464
|
-
/* @__PURE__ */
|
|
1465
|
-
/* @__PURE__ */
|
|
1466
|
-
` ${
|
|
1570
|
+
/* @__PURE__ */ E(me.Item, { ref: T, onClick: () => w(L.IMPORTANT), children: [
|
|
1571
|
+
/* @__PURE__ */ a($e, { size: "x-small" }),
|
|
1572
|
+
` ${i.markImportant}`
|
|
1467
1573
|
] })
|
|
1468
1574
|
]
|
|
1469
1575
|
}
|
|
1470
1576
|
),
|
|
1471
|
-
|
|
1472
|
-
] }) : /* @__PURE__ */
|
|
1473
|
-
/* @__PURE__ */
|
|
1474
|
-
|
|
1577
|
+
y
|
|
1578
|
+
] }) : /* @__PURE__ */ E(x, { gap: "x-small", wrap: "wrap", direction: "column", alignItems: "start", children: [
|
|
1579
|
+
/* @__PURE__ */ a(ke, { color: l.color, themeOverride: l.themeOverride, renderIcon: l.icon, children: u }),
|
|
1580
|
+
y
|
|
1475
1581
|
] });
|
|
1476
|
-
}
|
|
1477
|
-
function Ze(t, e) {
|
|
1478
|
-
return (t instanceof Date ? t : new Date(t)).toLocaleString(e, {
|
|
1479
|
-
year: "numeric",
|
|
1480
|
-
month: "short",
|
|
1481
|
-
day: "numeric"
|
|
1482
|
-
});
|
|
1483
|
-
}
|
|
1484
|
-
const Io = ({
|
|
1582
|
+
}, Po = "en-US", Mo = Intl.DateTimeFormat().resolvedOptions().timeZone, _o = ({
|
|
1485
1583
|
noteId: t,
|
|
1486
1584
|
date: e,
|
|
1487
1585
|
highlight: n,
|
|
1488
1586
|
highlightUnavailableReason: o,
|
|
1489
1587
|
note: r,
|
|
1490
|
-
type:
|
|
1491
|
-
onClick:
|
|
1492
|
-
onDelete:
|
|
1493
|
-
onSaveNote:
|
|
1494
|
-
onTypeChange:
|
|
1495
|
-
isActive:
|
|
1588
|
+
type: i,
|
|
1589
|
+
onClick: s,
|
|
1590
|
+
onDelete: l,
|
|
1591
|
+
onSaveNote: d,
|
|
1592
|
+
onTypeChange: u,
|
|
1593
|
+
isActive: m,
|
|
1496
1594
|
isPanelView: c = !1,
|
|
1497
|
-
courseName:
|
|
1498
|
-
locale:
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1595
|
+
courseName: p,
|
|
1596
|
+
locale: T,
|
|
1597
|
+
timezone: b,
|
|
1598
|
+
highlightTheme: w,
|
|
1599
|
+
renderLink: y,
|
|
1600
|
+
href: O
|
|
1502
1601
|
}) => {
|
|
1503
|
-
const { translations:
|
|
1504
|
-
ie.current =
|
|
1505
|
-
}, []),
|
|
1506
|
-
|
|
1507
|
-
var
|
|
1508
|
-
|
|
1509
|
-
}, [
|
|
1510
|
-
var
|
|
1511
|
-
|
|
1512
|
-
}, [
|
|
1513
|
-
if (!
|
|
1514
|
-
|
|
1515
|
-
const
|
|
1516
|
-
|
|
1602
|
+
const { translations: v } = J(), [h, I] = z(!1), [P, D] = z(!1), [W, C] = z(r || ""), [R, S] = z(!1), [B, re] = z(!1), [X, ue] = z(!1), [te, pe] = z(!1), ie = _(null), ce = q((g) => {
|
|
1603
|
+
ie.current = g;
|
|
1604
|
+
}, []), F = _(null), K = _(null), se = _(!1), ee = _(null), ye = _(null), fe = _(!1);
|
|
1605
|
+
V(() => {
|
|
1606
|
+
var g, G;
|
|
1607
|
+
m ? ((g = ie.current) == null || g.scrollIntoView({ behavior: "smooth", block: "nearest" }), (G = ie.current) == null || G.focus()) : S(!1);
|
|
1608
|
+
}, [m]), V(() => {
|
|
1609
|
+
var g, G;
|
|
1610
|
+
P ? (se.current = !0, (g = F.current) == null || g.focus()) : se.current && (se.current = !1, (G = K.current) == null || G.focus());
|
|
1611
|
+
}, [P]), V(() => {
|
|
1612
|
+
if (!R && fe.current) {
|
|
1613
|
+
fe.current = !1;
|
|
1614
|
+
const g = ee.current;
|
|
1615
|
+
g != null && g.isConnected && g.focus();
|
|
1517
1616
|
}
|
|
1518
|
-
}, [
|
|
1519
|
-
const
|
|
1520
|
-
|
|
1617
|
+
}, [R]);
|
|
1618
|
+
const M = q((g, G) => {
|
|
1619
|
+
fe.current = !G, S(!1);
|
|
1521
1620
|
}, []);
|
|
1522
|
-
|
|
1523
|
-
if (!
|
|
1524
|
-
const
|
|
1525
|
-
|
|
1526
|
-
},
|
|
1527
|
-
|
|
1621
|
+
V(() => {
|
|
1622
|
+
if (!R) return;
|
|
1623
|
+
const g = (ae) => {
|
|
1624
|
+
ae.key === "Escape" && ae.stopPropagation();
|
|
1625
|
+
}, G = (ae) => {
|
|
1626
|
+
ae.key === "Escape" && (ae.stopPropagation(), M());
|
|
1528
1627
|
};
|
|
1529
|
-
return window.addEventListener("keydown",
|
|
1530
|
-
window.removeEventListener("keydown",
|
|
1628
|
+
return window.addEventListener("keydown", g, !0), window.addEventListener("keyup", G, !0), () => {
|
|
1629
|
+
window.removeEventListener("keydown", g, !0), window.removeEventListener("keyup", G, !0);
|
|
1531
1630
|
};
|
|
1532
|
-
}, [
|
|
1533
|
-
const $ =
|
|
1534
|
-
|
|
1535
|
-
},
|
|
1536
|
-
|
|
1537
|
-
n ||
|
|
1538
|
-
), r &&
|
|
1539
|
-
const
|
|
1540
|
-
|
|
1631
|
+
}, [R, M]);
|
|
1632
|
+
const A = T ?? Po, U = b ?? Mo, $ = i === L.IMPORTANT ? v.important : v.unclear, H = (g) => {
|
|
1633
|
+
g.key === "Enter" && (g.preventDefault(), s == null || s());
|
|
1634
|
+
}, k = [v.note, $];
|
|
1635
|
+
k.push(
|
|
1636
|
+
n || St(v, o)
|
|
1637
|
+
), r && k.push(r), e && k.push(Ct(e, A, U)), p && k.push(p);
|
|
1638
|
+
const N = k.join(", "), j = /* @__PURE__ */ E(
|
|
1639
|
+
Y,
|
|
1541
1640
|
{
|
|
1542
1641
|
as: "div",
|
|
1543
1642
|
height: "100%",
|
|
@@ -1545,38 +1644,38 @@ const Io = ({
|
|
|
1545
1644
|
borderRadius: "medium",
|
|
1546
1645
|
padding: "small",
|
|
1547
1646
|
position: "relative",
|
|
1548
|
-
role:
|
|
1549
|
-
"aria-label":
|
|
1550
|
-
"aria-pressed":
|
|
1551
|
-
tabIndex:
|
|
1647
|
+
role: O ? void 0 : m || P ? "group" : "button",
|
|
1648
|
+
"aria-label": O ? void 0 : N,
|
|
1649
|
+
"aria-pressed": O || m || P ? void 0 : m,
|
|
1650
|
+
tabIndex: O || m ? -1 : 0,
|
|
1552
1651
|
"data-testid": `note-card-${t}`,
|
|
1553
|
-
elementRef:
|
|
1554
|
-
onClick:
|
|
1555
|
-
onMouseEnter: () =>
|
|
1556
|
-
onMouseLeave: () =>
|
|
1557
|
-
onKeyDown:
|
|
1558
|
-
cursor:
|
|
1652
|
+
elementRef: ce,
|
|
1653
|
+
onClick: m ? void 0 : s,
|
|
1654
|
+
onMouseEnter: () => I(!0),
|
|
1655
|
+
onMouseLeave: () => I(!1),
|
|
1656
|
+
onKeyDown: m ? void 0 : H,
|
|
1657
|
+
cursor: P ? "default" : "pointer",
|
|
1559
1658
|
children: [
|
|
1560
|
-
/* @__PURE__ */
|
|
1659
|
+
/* @__PURE__ */ a(
|
|
1561
1660
|
"div",
|
|
1562
1661
|
{
|
|
1563
1662
|
"data-testid": `note-card-${t}-content`,
|
|
1564
1663
|
style: {
|
|
1565
1664
|
height: "100%",
|
|
1566
|
-
opacity:
|
|
1665
|
+
opacity: m && R && l ? 0.25 : void 0
|
|
1567
1666
|
},
|
|
1568
|
-
children: /* @__PURE__ */
|
|
1569
|
-
/* @__PURE__ */
|
|
1570
|
-
|
|
1667
|
+
children: /* @__PURE__ */ E(x, { direction: "column", gap: "small", height: "100%", children: [
|
|
1668
|
+
/* @__PURE__ */ a(
|
|
1669
|
+
xt,
|
|
1571
1670
|
{
|
|
1572
|
-
type:
|
|
1573
|
-
onTypeChange: c &&
|
|
1574
|
-
renderAsMenuTrigger: c && !!
|
|
1575
|
-
theme:
|
|
1671
|
+
type: i,
|
|
1672
|
+
onTypeChange: c && u ? (g) => u(t, g) : void 0,
|
|
1673
|
+
renderAsMenuTrigger: c && !!u && !!m,
|
|
1674
|
+
theme: w.colors,
|
|
1576
1675
|
unavailable: !n
|
|
1577
1676
|
}
|
|
1578
1677
|
),
|
|
1579
|
-
n ? /* @__PURE__ */
|
|
1678
|
+
n ? /* @__PURE__ */ a(
|
|
1580
1679
|
"div",
|
|
1581
1680
|
{
|
|
1582
1681
|
style: {
|
|
@@ -1584,70 +1683,70 @@ const Io = ({
|
|
|
1584
1683
|
overflowWrap: "break-word",
|
|
1585
1684
|
whiteSpace: "pre-wrap"
|
|
1586
1685
|
},
|
|
1587
|
-
children: /* @__PURE__ */
|
|
1588
|
-
|
|
1686
|
+
children: /* @__PURE__ */ a(Q, { children: m && c ? /* @__PURE__ */ a(
|
|
1687
|
+
Pe,
|
|
1589
1688
|
{
|
|
1590
|
-
type:
|
|
1591
|
-
isCardActive: !!
|
|
1592
|
-
theme:
|
|
1689
|
+
type: i,
|
|
1690
|
+
isCardActive: !!m || h,
|
|
1691
|
+
theme: w,
|
|
1593
1692
|
children: n
|
|
1594
1693
|
}
|
|
1595
|
-
) : /* @__PURE__ */
|
|
1596
|
-
|
|
1597
|
-
/* @__PURE__ */
|
|
1598
|
-
|
|
1694
|
+
) : /* @__PURE__ */ E(Me, { children: [
|
|
1695
|
+
B && /* @__PURE__ */ a(be, { children: n }),
|
|
1696
|
+
/* @__PURE__ */ a("span", { "aria-hidden": B, style: { display: "block" }, children: /* @__PURE__ */ a(Ce, { maxLines: 3, truncate: "word", onUpdate: re, children: /* @__PURE__ */ a(
|
|
1697
|
+
Pe,
|
|
1599
1698
|
{
|
|
1600
|
-
type:
|
|
1601
|
-
isCardActive: !!
|
|
1602
|
-
theme:
|
|
1699
|
+
type: i,
|
|
1700
|
+
isCardActive: !!m || h,
|
|
1701
|
+
theme: w,
|
|
1603
1702
|
children: n
|
|
1604
1703
|
}
|
|
1605
1704
|
) }) })
|
|
1606
1705
|
] }) })
|
|
1607
1706
|
}
|
|
1608
|
-
) : /* @__PURE__ */
|
|
1609
|
-
/* @__PURE__ */
|
|
1610
|
-
|
|
1611
|
-
/* @__PURE__ */
|
|
1612
|
-
|
|
1707
|
+
) : /* @__PURE__ */ a(vt, { reason: o }),
|
|
1708
|
+
/* @__PURE__ */ a(x.Item, { shouldGrow: !0, children: /* @__PURE__ */ E(x, { direction: "column", gap: "small", height: "100%", children: [
|
|
1709
|
+
P && c ? /* @__PURE__ */ E(x, { direction: "column", gap: "x-small", margin: "xx-small", children: [
|
|
1710
|
+
/* @__PURE__ */ a(
|
|
1711
|
+
it,
|
|
1613
1712
|
{
|
|
1614
|
-
label: /* @__PURE__ */
|
|
1615
|
-
value:
|
|
1616
|
-
onChange: (
|
|
1617
|
-
placeholder:
|
|
1618
|
-
textareaRef: (
|
|
1619
|
-
|
|
1713
|
+
label: /* @__PURE__ */ a(be, { children: v.editNote }),
|
|
1714
|
+
value: W,
|
|
1715
|
+
onChange: (g) => C(g.target.value),
|
|
1716
|
+
placeholder: v.addNoteOptional,
|
|
1717
|
+
textareaRef: (g) => {
|
|
1718
|
+
F.current = g;
|
|
1620
1719
|
}
|
|
1621
1720
|
}
|
|
1622
1721
|
),
|
|
1623
|
-
/* @__PURE__ */
|
|
1624
|
-
/* @__PURE__ */
|
|
1625
|
-
|
|
1722
|
+
/* @__PURE__ */ E(x, { gap: "xx-small", children: [
|
|
1723
|
+
/* @__PURE__ */ a(x.Item, { shouldGrow: !0, children: /* @__PURE__ */ a(
|
|
1724
|
+
ne,
|
|
1626
1725
|
{
|
|
1627
1726
|
display: "block",
|
|
1628
1727
|
size: "small",
|
|
1629
1728
|
"data-testid": `note-card-${t}-cancel`,
|
|
1630
1729
|
onClick: () => {
|
|
1631
|
-
|
|
1730
|
+
C(r || ""), D(!1);
|
|
1632
1731
|
},
|
|
1633
|
-
children:
|
|
1732
|
+
children: v.cancel
|
|
1634
1733
|
}
|
|
1635
1734
|
) }),
|
|
1636
|
-
/* @__PURE__ */
|
|
1637
|
-
|
|
1735
|
+
/* @__PURE__ */ a(x.Item, { shouldGrow: !0, children: /* @__PURE__ */ a(
|
|
1736
|
+
ne,
|
|
1638
1737
|
{
|
|
1639
1738
|
display: "block",
|
|
1640
1739
|
color: "primary",
|
|
1641
1740
|
size: "small",
|
|
1642
1741
|
"data-testid": `note-card-${t}-save`,
|
|
1643
1742
|
onClick: () => {
|
|
1644
|
-
|
|
1743
|
+
d == null || d(t, W.trim()), D(!1);
|
|
1645
1744
|
},
|
|
1646
|
-
children:
|
|
1745
|
+
children: v.save
|
|
1647
1746
|
}
|
|
1648
1747
|
) })
|
|
1649
1748
|
] })
|
|
1650
|
-
] }) : r ? /* @__PURE__ */
|
|
1749
|
+
] }) : r ? /* @__PURE__ */ a(
|
|
1651
1750
|
"div",
|
|
1652
1751
|
{
|
|
1653
1752
|
style: {
|
|
@@ -1655,86 +1754,94 @@ const Io = ({
|
|
|
1655
1754
|
overflowWrap: "break-word",
|
|
1656
1755
|
whiteSpace: "pre-wrap"
|
|
1657
1756
|
},
|
|
1658
|
-
children:
|
|
1757
|
+
children: m && c ? /* @__PURE__ */ E(Q, { children: [
|
|
1659
1758
|
r,
|
|
1660
1759
|
" ",
|
|
1661
|
-
/* @__PURE__ */
|
|
1662
|
-
|
|
1760
|
+
/* @__PURE__ */ a(
|
|
1761
|
+
Ne,
|
|
1663
1762
|
{
|
|
1664
1763
|
size: "small",
|
|
1665
1764
|
withBackground: !1,
|
|
1666
1765
|
withBorder: !1,
|
|
1667
1766
|
margin: "xx-small 0 0 xxx-small",
|
|
1668
|
-
screenReaderLabel:
|
|
1767
|
+
screenReaderLabel: v.editNote,
|
|
1669
1768
|
"data-testid": `note-card-${t}-edit`,
|
|
1670
|
-
elementRef: (
|
|
1671
|
-
|
|
1769
|
+
elementRef: (g) => {
|
|
1770
|
+
K.current = g;
|
|
1672
1771
|
},
|
|
1673
|
-
onClick: (
|
|
1674
|
-
|
|
1772
|
+
onClick: (g) => {
|
|
1773
|
+
g.stopPropagation(), D(!0);
|
|
1675
1774
|
},
|
|
1676
|
-
children: /* @__PURE__ */
|
|
1775
|
+
children: /* @__PURE__ */ a(De, {})
|
|
1677
1776
|
}
|
|
1678
1777
|
)
|
|
1679
|
-
] }) : /* @__PURE__ */
|
|
1680
|
-
|
|
1681
|
-
/* @__PURE__ */
|
|
1778
|
+
] }) : /* @__PURE__ */ E(Q, { children: [
|
|
1779
|
+
X && /* @__PURE__ */ a(be, { children: r }),
|
|
1780
|
+
/* @__PURE__ */ a("span", { "aria-hidden": X, style: { display: "block" }, children: /* @__PURE__ */ a(Ce, { maxLines: 3, truncate: "word", onUpdate: ue, children: r }) })
|
|
1682
1781
|
] })
|
|
1683
1782
|
}
|
|
1684
|
-
) : c &&
|
|
1685
|
-
|
|
1783
|
+
) : c && m ? /* @__PURE__ */ a("div", { children: /* @__PURE__ */ E(Q, { color: "secondary", children: [
|
|
1784
|
+
v.addNotePrompt,
|
|
1686
1785
|
" ",
|
|
1687
|
-
/* @__PURE__ */
|
|
1688
|
-
|
|
1786
|
+
/* @__PURE__ */ a(
|
|
1787
|
+
Ne,
|
|
1689
1788
|
{
|
|
1690
1789
|
size: "small",
|
|
1691
1790
|
withBackground: !1,
|
|
1692
1791
|
withBorder: !1,
|
|
1693
1792
|
margin: "xx-small 0 0 xxx-small",
|
|
1694
|
-
screenReaderLabel:
|
|
1793
|
+
screenReaderLabel: v.editNote,
|
|
1695
1794
|
"data-testid": `note-card-${t}-edit`,
|
|
1696
|
-
elementRef: (
|
|
1697
|
-
|
|
1795
|
+
elementRef: (g) => {
|
|
1796
|
+
K.current = g;
|
|
1698
1797
|
},
|
|
1699
|
-
onClick: (
|
|
1700
|
-
|
|
1798
|
+
onClick: (g) => {
|
|
1799
|
+
g.stopPropagation(), D(!0);
|
|
1701
1800
|
},
|
|
1702
|
-
children: /* @__PURE__ */
|
|
1801
|
+
children: /* @__PURE__ */ a(De, {})
|
|
1703
1802
|
}
|
|
1704
1803
|
)
|
|
1705
1804
|
] }) }) : null,
|
|
1706
|
-
/* @__PURE__ */
|
|
1707
|
-
/* @__PURE__ */
|
|
1708
|
-
|
|
1709
|
-
|
|
1805
|
+
m && /* @__PURE__ */ E(x, { direction: "column", gap: "xx-small", margin: "auto 0 0 0", children: [
|
|
1806
|
+
/* @__PURE__ */ a(Q, { as: "div", size: "x-small", color: "secondary", children: /* @__PURE__ */ a(
|
|
1807
|
+
Co,
|
|
1808
|
+
{
|
|
1809
|
+
dateTime: e,
|
|
1810
|
+
locale: A,
|
|
1811
|
+
timezone: U,
|
|
1812
|
+
prefix: v.lastSaved
|
|
1813
|
+
}
|
|
1814
|
+
) }),
|
|
1815
|
+
l && /* @__PURE__ */ a(x, { justifyItems: "end", children: /* @__PURE__ */ a(
|
|
1816
|
+
Ne,
|
|
1710
1817
|
{
|
|
1711
1818
|
size: "small",
|
|
1712
1819
|
withBackground: !1,
|
|
1713
1820
|
withBorder: !1,
|
|
1714
1821
|
color: "danger",
|
|
1715
1822
|
margin: "xx-small",
|
|
1716
|
-
screenReaderLabel:
|
|
1823
|
+
screenReaderLabel: v.deleteNote,
|
|
1717
1824
|
"data-testid": `note-card-${t}-delete`,
|
|
1718
|
-
elementRef: (
|
|
1719
|
-
|
|
1825
|
+
elementRef: (g) => {
|
|
1826
|
+
ee.current = g;
|
|
1720
1827
|
},
|
|
1721
|
-
onClick: (
|
|
1722
|
-
|
|
1828
|
+
onClick: (g) => {
|
|
1829
|
+
g.stopPropagation(), fe.current = !1, S(!0);
|
|
1723
1830
|
},
|
|
1724
|
-
children: /* @__PURE__ */
|
|
1831
|
+
children: /* @__PURE__ */ a(xe, {})
|
|
1725
1832
|
}
|
|
1726
|
-
)
|
|
1833
|
+
) })
|
|
1727
1834
|
] }),
|
|
1728
|
-
|
|
1729
|
-
|
|
1835
|
+
p && /* @__PURE__ */ E(
|
|
1836
|
+
Q,
|
|
1730
1837
|
{
|
|
1731
1838
|
as: "div",
|
|
1732
1839
|
size: "small",
|
|
1733
1840
|
color: "secondary",
|
|
1734
1841
|
"data-testid": `note-card-${t}-course`,
|
|
1735
1842
|
children: [
|
|
1736
|
-
|
|
1737
|
-
/* @__PURE__ */
|
|
1843
|
+
te && /* @__PURE__ */ a(be, { children: p }),
|
|
1844
|
+
/* @__PURE__ */ a("span", { "aria-hidden": te, style: { display: "block" }, children: /* @__PURE__ */ a(Ce, { maxLines: 1, onUpdate: pe, children: p }) })
|
|
1738
1845
|
]
|
|
1739
1846
|
}
|
|
1740
1847
|
)
|
|
@@ -1742,21 +1849,21 @@ const Io = ({
|
|
|
1742
1849
|
] })
|
|
1743
1850
|
}
|
|
1744
1851
|
),
|
|
1745
|
-
|
|
1746
|
-
|
|
1852
|
+
m && R && l && /* @__PURE__ */ a(
|
|
1853
|
+
Ft,
|
|
1747
1854
|
{
|
|
1748
1855
|
open: !0,
|
|
1749
1856
|
as: "div",
|
|
1750
|
-
label:
|
|
1857
|
+
label: v.deleteNoteConfirmation,
|
|
1751
1858
|
shouldContainFocus: !0,
|
|
1752
1859
|
shouldFocusOnOpen: !0,
|
|
1753
|
-
defaultFocusElement: () =>
|
|
1860
|
+
defaultFocusElement: () => ye.current,
|
|
1754
1861
|
shouldCloseOnDocumentClick: !0,
|
|
1755
1862
|
shouldCloseOnEscape: !1,
|
|
1756
1863
|
shouldReturnFocus: !1,
|
|
1757
|
-
onDismiss:
|
|
1758
|
-
children: /* @__PURE__ */
|
|
1759
|
-
|
|
1864
|
+
onDismiss: M,
|
|
1865
|
+
children: /* @__PURE__ */ a(
|
|
1866
|
+
Y,
|
|
1760
1867
|
{
|
|
1761
1868
|
as: "div",
|
|
1762
1869
|
background: "primary",
|
|
@@ -1768,8 +1875,8 @@ const Io = ({
|
|
|
1768
1875
|
insetInlineStart: "0",
|
|
1769
1876
|
insetInlineEnd: "0",
|
|
1770
1877
|
stacking: "above",
|
|
1771
|
-
children: /* @__PURE__ */
|
|
1772
|
-
|
|
1878
|
+
children: /* @__PURE__ */ E(
|
|
1879
|
+
x,
|
|
1773
1880
|
{
|
|
1774
1881
|
direction: "column",
|
|
1775
1882
|
justifyItems: "center",
|
|
@@ -1777,33 +1884,33 @@ const Io = ({
|
|
|
1777
1884
|
gap: "x-small",
|
|
1778
1885
|
height: "100%",
|
|
1779
1886
|
children: [
|
|
1780
|
-
/* @__PURE__ */
|
|
1781
|
-
|
|
1887
|
+
/* @__PURE__ */ a(
|
|
1888
|
+
ne,
|
|
1782
1889
|
{
|
|
1783
1890
|
display: "block",
|
|
1784
1891
|
color: "danger",
|
|
1785
1892
|
withBackground: !1,
|
|
1786
|
-
renderIcon: /* @__PURE__ */
|
|
1893
|
+
renderIcon: /* @__PURE__ */ a(xe, {}),
|
|
1787
1894
|
"data-testid": `note-card-${t}-confirm-delete`,
|
|
1788
|
-
onClick: (
|
|
1789
|
-
|
|
1895
|
+
onClick: (g) => {
|
|
1896
|
+
g.stopPropagation(), l(t), S(!1);
|
|
1790
1897
|
},
|
|
1791
|
-
children:
|
|
1898
|
+
children: v.deleteNote
|
|
1792
1899
|
}
|
|
1793
1900
|
),
|
|
1794
|
-
/* @__PURE__ */
|
|
1795
|
-
|
|
1901
|
+
/* @__PURE__ */ a(
|
|
1902
|
+
ne,
|
|
1796
1903
|
{
|
|
1797
1904
|
display: "block",
|
|
1798
1905
|
withBackground: !1,
|
|
1799
1906
|
"data-testid": `note-card-${t}-cancel-delete`,
|
|
1800
|
-
elementRef: (
|
|
1801
|
-
|
|
1907
|
+
elementRef: (g) => {
|
|
1908
|
+
ye.current = g;
|
|
1802
1909
|
},
|
|
1803
|
-
onClick: (
|
|
1804
|
-
|
|
1910
|
+
onClick: (g) => {
|
|
1911
|
+
g.stopPropagation(), M();
|
|
1805
1912
|
},
|
|
1806
|
-
children:
|
|
1913
|
+
children: v.cancel
|
|
1807
1914
|
}
|
|
1808
1915
|
)
|
|
1809
1916
|
]
|
|
@@ -1816,11 +1923,11 @@ const Io = ({
|
|
|
1816
1923
|
]
|
|
1817
1924
|
}
|
|
1818
1925
|
);
|
|
1819
|
-
return
|
|
1820
|
-
},
|
|
1926
|
+
return O && y ? y({ href: O, children: j, ariaLabel: N }) : j;
|
|
1927
|
+
}, It = (t) => {
|
|
1821
1928
|
var e;
|
|
1822
1929
|
return t.highlightSourceUnavailable ? "sourceUnavailable" : (e = t.highlightData) != null && e.hasNoHighlightAnymore ? "noHighlight" : void 0;
|
|
1823
|
-
},
|
|
1930
|
+
}, Fo = (t) => It(t) !== void 0, Uo = {
|
|
1824
1931
|
display: "grid",
|
|
1825
1932
|
gap: "1rem",
|
|
1826
1933
|
boxSizing: "border-box",
|
|
@@ -1828,230 +1935,230 @@ const Io = ({
|
|
|
1828
1935
|
margin: 0,
|
|
1829
1936
|
padding: 0,
|
|
1830
1937
|
listStyle: "none"
|
|
1831
|
-
},
|
|
1938
|
+
}, mr = ({
|
|
1832
1939
|
notes: t,
|
|
1833
1940
|
isLoading: e,
|
|
1834
1941
|
isError: n,
|
|
1835
1942
|
currentPage: o,
|
|
1836
1943
|
totalPages: r,
|
|
1837
|
-
onPageChange:
|
|
1838
|
-
onNoteSelect:
|
|
1839
|
-
onNoteDelete:
|
|
1840
|
-
onNoteSave:
|
|
1841
|
-
onNoteTypeChange:
|
|
1842
|
-
onNotesEmptied:
|
|
1944
|
+
onPageChange: i,
|
|
1945
|
+
onNoteSelect: s,
|
|
1946
|
+
onNoteDelete: l,
|
|
1947
|
+
onNoteSave: d,
|
|
1948
|
+
onNoteTypeChange: u,
|
|
1949
|
+
onNotesEmptied: m,
|
|
1843
1950
|
selectedNoteId: c,
|
|
1844
|
-
hasActiveFilter:
|
|
1845
|
-
columnCount:
|
|
1846
|
-
highlightTheme:
|
|
1847
|
-
locale:
|
|
1848
|
-
courseNames:
|
|
1849
|
-
renderNoteLink:
|
|
1850
|
-
noteHref:
|
|
1951
|
+
hasActiveFilter: p = !1,
|
|
1952
|
+
columnCount: T = 1,
|
|
1953
|
+
highlightTheme: b,
|
|
1954
|
+
locale: w,
|
|
1955
|
+
courseNames: y,
|
|
1956
|
+
renderNoteLink: O,
|
|
1957
|
+
noteHref: v
|
|
1851
1958
|
}) => {
|
|
1852
|
-
const { translations:
|
|
1853
|
-
(
|
|
1854
|
-
const
|
|
1855
|
-
let
|
|
1856
|
-
t.length > 1 && (
|
|
1959
|
+
const { translations: h } = J(), I = _(null), P = _(null), D = q(
|
|
1960
|
+
(C) => {
|
|
1961
|
+
const R = t.findIndex((B) => B.id === C);
|
|
1962
|
+
let S = null;
|
|
1963
|
+
t.length > 1 && (S = R > 0 ? t[R - 1].id : t[1].id), P.current = { targetId: S }, l == null || l(C);
|
|
1857
1964
|
},
|
|
1858
|
-
[t,
|
|
1965
|
+
[t, l]
|
|
1859
1966
|
);
|
|
1860
|
-
if (
|
|
1861
|
-
var
|
|
1862
|
-
const
|
|
1863
|
-
if (
|
|
1864
|
-
if (
|
|
1865
|
-
|
|
1967
|
+
if (V(() => {
|
|
1968
|
+
var R;
|
|
1969
|
+
const C = P.current;
|
|
1970
|
+
if (C)
|
|
1971
|
+
if (P.current = null, C.targetId === null)
|
|
1972
|
+
m == null || m();
|
|
1866
1973
|
else {
|
|
1867
|
-
const
|
|
1868
|
-
`[data-testid="note-card-${
|
|
1974
|
+
const S = (R = I.current) == null ? void 0 : R.querySelector(
|
|
1975
|
+
`[data-testid="note-card-${C.targetId}"]`
|
|
1869
1976
|
);
|
|
1870
|
-
|
|
1977
|
+
S == null || S.focus();
|
|
1871
1978
|
}
|
|
1872
|
-
}, [t,
|
|
1873
|
-
return /* @__PURE__ */
|
|
1979
|
+
}, [t, m]), e)
|
|
1980
|
+
return /* @__PURE__ */ a(Y, { as: "div", textAlign: "center", padding: "large", "data-testid": "notes-loading", children: /* @__PURE__ */ a($t, { renderTitle: h.loadingNotes }) });
|
|
1874
1981
|
if (n)
|
|
1875
|
-
return /* @__PURE__ */
|
|
1982
|
+
return /* @__PURE__ */ a(Y, { as: "div", textAlign: "center", padding: "large", "data-testid": "notes-error", children: /* @__PURE__ */ a(we, { level: "h4", children: h.failedToLoadNotes }) });
|
|
1876
1983
|
if (t.length === 0)
|
|
1877
|
-
return /* @__PURE__ */
|
|
1878
|
-
const
|
|
1879
|
-
return /* @__PURE__ */
|
|
1880
|
-
/* @__PURE__ */
|
|
1984
|
+
return /* @__PURE__ */ a(Y, { as: "div", padding: "large", "data-testid": "empty-notes", children: /* @__PURE__ */ a(Lo, { hasActiveFilter: p }) });
|
|
1985
|
+
const W = typeof o == "number" && typeof r == "number" && r > 1 && i !== void 0;
|
|
1986
|
+
return /* @__PURE__ */ E(Me, { children: [
|
|
1987
|
+
/* @__PURE__ */ a(
|
|
1881
1988
|
"ul",
|
|
1882
1989
|
{
|
|
1883
|
-
ref:
|
|
1884
|
-
style: { ...
|
|
1990
|
+
ref: I,
|
|
1991
|
+
style: { ...Uo, gridTemplateColumns: `repeat(${T}, minmax(0, 1fr))` },
|
|
1885
1992
|
role: "list",
|
|
1886
1993
|
"data-testid": "notes-grid",
|
|
1887
|
-
children: t.map((
|
|
1888
|
-
var
|
|
1889
|
-
return /* @__PURE__ */
|
|
1890
|
-
|
|
1994
|
+
children: t.map((C) => {
|
|
1995
|
+
var R;
|
|
1996
|
+
return /* @__PURE__ */ a("li", { children: /* @__PURE__ */ a(
|
|
1997
|
+
_o,
|
|
1891
1998
|
{
|
|
1892
|
-
noteId:
|
|
1893
|
-
date:
|
|
1894
|
-
type:
|
|
1895
|
-
highlight:
|
|
1896
|
-
highlightUnavailableReason:
|
|
1897
|
-
note:
|
|
1898
|
-
isActive: c ===
|
|
1999
|
+
noteId: C.id,
|
|
2000
|
+
date: C.updatedAt,
|
|
2001
|
+
type: C.reaction[0] ?? L.IMPORTANT,
|
|
2002
|
+
highlight: Fo(C) || (R = C.highlightData) == null ? void 0 : R.selectedText,
|
|
2003
|
+
highlightUnavailableReason: It(C),
|
|
2004
|
+
note: C.userText,
|
|
2005
|
+
isActive: c === C.id,
|
|
1899
2006
|
isPanelView: !!c,
|
|
1900
|
-
onClick:
|
|
1901
|
-
onDelete:
|
|
1902
|
-
onSaveNote:
|
|
1903
|
-
onTypeChange:
|
|
1904
|
-
highlightTheme:
|
|
1905
|
-
locale:
|
|
1906
|
-
courseName:
|
|
1907
|
-
renderLink:
|
|
1908
|
-
href:
|
|
2007
|
+
onClick: s ? () => s(C.id) : void 0,
|
|
2008
|
+
onDelete: l ? D : void 0,
|
|
2009
|
+
onSaveNote: d ? (S, B) => d(S, B) : void 0,
|
|
2010
|
+
onTypeChange: u ? (S, B) => u(S, B) : void 0,
|
|
2011
|
+
highlightTheme: b,
|
|
2012
|
+
locale: w,
|
|
2013
|
+
courseName: y == null ? void 0 : y.get(C.courseId),
|
|
2014
|
+
renderLink: O,
|
|
2015
|
+
href: v ? v(C.id, C) : void 0
|
|
1909
2016
|
}
|
|
1910
|
-
) },
|
|
2017
|
+
) }, C.id);
|
|
1911
2018
|
})
|
|
1912
2019
|
}
|
|
1913
2020
|
),
|
|
1914
|
-
|
|
1915
|
-
|
|
2021
|
+
W && /* @__PURE__ */ a(x, { justifyItems: "center", padding: "small", "data-testid": "notes-pagination", children: /* @__PURE__ */ a(x.Item, { children: /* @__PURE__ */ a(
|
|
2022
|
+
Ut,
|
|
1916
2023
|
{
|
|
1917
2024
|
as: "nav",
|
|
1918
2025
|
variant: "input",
|
|
1919
|
-
labelNext:
|
|
1920
|
-
labelPrev:
|
|
2026
|
+
labelNext: h.nextPage,
|
|
2027
|
+
labelPrev: h.previousPage,
|
|
1921
2028
|
currentPage: o,
|
|
1922
2029
|
totalPageNumber: r,
|
|
1923
|
-
onPageChange:
|
|
2030
|
+
onPageChange: i
|
|
1924
2031
|
}
|
|
1925
2032
|
) }) })
|
|
1926
2033
|
] });
|
|
1927
|
-
},
|
|
2034
|
+
}, gr = ({
|
|
1928
2035
|
noteText: t,
|
|
1929
2036
|
reaction: e,
|
|
1930
2037
|
highlightText: n,
|
|
1931
2038
|
highlightTheme: o,
|
|
1932
2039
|
onSave: r,
|
|
1933
|
-
onDelete:
|
|
1934
|
-
onTypeChange:
|
|
1935
|
-
onBack:
|
|
1936
|
-
editing:
|
|
2040
|
+
onDelete: i,
|
|
2041
|
+
onTypeChange: s,
|
|
2042
|
+
onBack: l,
|
|
2043
|
+
editing: d = !1
|
|
1937
2044
|
}) => {
|
|
1938
|
-
const { translations:
|
|
1939
|
-
return /* @__PURE__ */
|
|
1940
|
-
n != null ? /* @__PURE__ */
|
|
1941
|
-
/* @__PURE__ */
|
|
1942
|
-
|
|
2045
|
+
const { translations: u } = J(), [m, c] = z(d), [p, T] = z(t || ""), [b, w] = z(!1);
|
|
2046
|
+
return /* @__PURE__ */ E(x, { direction: "column", gap: "small", "data-testid": "single-note", children: [
|
|
2047
|
+
n != null ? /* @__PURE__ */ a(Y, { as: "div", children: /* @__PURE__ */ a(Q, { children: /* @__PURE__ */ a(Pe, { type: e, isCardActive: !0, theme: o, children: n }) }) }) : /* @__PURE__ */ a(vt, {}),
|
|
2048
|
+
/* @__PURE__ */ a(
|
|
2049
|
+
xt,
|
|
1943
2050
|
{
|
|
1944
2051
|
type: e,
|
|
1945
|
-
onTypeChange:
|
|
1946
|
-
renderAsMenuTrigger: !!
|
|
2052
|
+
onTypeChange: s,
|
|
2053
|
+
renderAsMenuTrigger: !!s,
|
|
1947
2054
|
theme: o.colors,
|
|
1948
2055
|
unavailable: n == null
|
|
1949
2056
|
}
|
|
1950
2057
|
),
|
|
1951
|
-
|
|
1952
|
-
/* @__PURE__ */
|
|
1953
|
-
|
|
2058
|
+
m ? /* @__PURE__ */ E(x, { direction: "column", gap: "x-small", children: [
|
|
2059
|
+
/* @__PURE__ */ a(
|
|
2060
|
+
it,
|
|
1954
2061
|
{
|
|
1955
|
-
label:
|
|
1956
|
-
value:
|
|
1957
|
-
onChange: (
|
|
2062
|
+
label: u.addNoteOptional,
|
|
2063
|
+
value: p,
|
|
2064
|
+
onChange: (y) => T(y.target.value),
|
|
1958
2065
|
resize: "vertical"
|
|
1959
2066
|
}
|
|
1960
2067
|
),
|
|
1961
|
-
/* @__PURE__ */
|
|
1962
|
-
/* @__PURE__ */
|
|
1963
|
-
|
|
2068
|
+
/* @__PURE__ */ E(x, { gap: "xx-small", children: [
|
|
2069
|
+
/* @__PURE__ */ a(x.Item, { shouldGrow: !0, children: /* @__PURE__ */ a(
|
|
2070
|
+
ne,
|
|
1964
2071
|
{
|
|
1965
2072
|
display: "block",
|
|
1966
2073
|
size: "small",
|
|
1967
2074
|
"data-testid": "single-note-cancel",
|
|
1968
2075
|
onClick: () => {
|
|
1969
|
-
|
|
2076
|
+
T(t || ""), c(!1);
|
|
1970
2077
|
},
|
|
1971
|
-
children:
|
|
2078
|
+
children: u.cancel
|
|
1972
2079
|
}
|
|
1973
2080
|
) }),
|
|
1974
|
-
/* @__PURE__ */
|
|
1975
|
-
|
|
2081
|
+
/* @__PURE__ */ a(x.Item, { shouldGrow: !0, children: /* @__PURE__ */ a(
|
|
2082
|
+
ne,
|
|
1976
2083
|
{
|
|
1977
2084
|
display: "block",
|
|
1978
2085
|
color: "primary",
|
|
1979
2086
|
size: "small",
|
|
1980
2087
|
"data-testid": "single-note-save",
|
|
1981
2088
|
onClick: () => {
|
|
1982
|
-
r(
|
|
2089
|
+
r(p), c(!1);
|
|
1983
2090
|
},
|
|
1984
|
-
children:
|
|
2091
|
+
children: u.save
|
|
1985
2092
|
}
|
|
1986
2093
|
) })
|
|
1987
2094
|
] })
|
|
1988
|
-
] }) : /* @__PURE__ */
|
|
1989
|
-
t && /* @__PURE__ */
|
|
1990
|
-
/* @__PURE__ */
|
|
1991
|
-
/* @__PURE__ */
|
|
2095
|
+
] }) : /* @__PURE__ */ E(x, { direction: "column", gap: "small", children: [
|
|
2096
|
+
t && /* @__PURE__ */ E(Y, { as: "div", children: [
|
|
2097
|
+
/* @__PURE__ */ a(we, { level: "h4", margin: "0 0 xx-small 0", children: u.note }),
|
|
2098
|
+
/* @__PURE__ */ a(Q, { children: t })
|
|
1992
2099
|
] }),
|
|
1993
|
-
/* @__PURE__ */
|
|
1994
|
-
/* @__PURE__ */
|
|
1995
|
-
|
|
2100
|
+
/* @__PURE__ */ E(x, { justifyItems: "space-between", children: [
|
|
2101
|
+
/* @__PURE__ */ a(
|
|
2102
|
+
ne,
|
|
1996
2103
|
{
|
|
1997
2104
|
size: "small",
|
|
1998
|
-
renderIcon: /* @__PURE__ */
|
|
2105
|
+
renderIcon: /* @__PURE__ */ a(_t, {}),
|
|
1999
2106
|
"data-testid": "single-note-back",
|
|
2000
|
-
onClick: () =>
|
|
2001
|
-
children:
|
|
2107
|
+
onClick: () => l == null ? void 0 : l(),
|
|
2108
|
+
children: u.back
|
|
2002
2109
|
}
|
|
2003
2110
|
),
|
|
2004
|
-
/* @__PURE__ */
|
|
2005
|
-
|
|
2006
|
-
|
|
2111
|
+
/* @__PURE__ */ E(x, { gap: "xx-small", children: [
|
|
2112
|
+
i && /* @__PURE__ */ a(
|
|
2113
|
+
Ne,
|
|
2007
2114
|
{
|
|
2008
2115
|
size: "small",
|
|
2009
2116
|
withBackground: !1,
|
|
2010
2117
|
withBorder: !1,
|
|
2011
2118
|
color: "danger",
|
|
2012
|
-
screenReaderLabel:
|
|
2119
|
+
screenReaderLabel: u.deleteNote,
|
|
2013
2120
|
"data-testid": "single-note-delete",
|
|
2014
|
-
onClick: () =>
|
|
2015
|
-
children: /* @__PURE__ */
|
|
2121
|
+
onClick: () => w(!0),
|
|
2122
|
+
children: /* @__PURE__ */ a(xe, {})
|
|
2016
2123
|
}
|
|
2017
2124
|
),
|
|
2018
|
-
/* @__PURE__ */
|
|
2019
|
-
|
|
2125
|
+
/* @__PURE__ */ a(
|
|
2126
|
+
Ne,
|
|
2020
2127
|
{
|
|
2021
2128
|
size: "small",
|
|
2022
2129
|
withBackground: !1,
|
|
2023
2130
|
withBorder: !1,
|
|
2024
|
-
screenReaderLabel:
|
|
2131
|
+
screenReaderLabel: u.editNote,
|
|
2025
2132
|
"data-testid": "single-note-edit",
|
|
2026
2133
|
onClick: () => c(!0),
|
|
2027
|
-
children: /* @__PURE__ */
|
|
2134
|
+
children: /* @__PURE__ */ a(De, {})
|
|
2028
2135
|
}
|
|
2029
2136
|
)
|
|
2030
2137
|
] })
|
|
2031
2138
|
] }),
|
|
2032
|
-
|
|
2033
|
-
/* @__PURE__ */
|
|
2034
|
-
|
|
2139
|
+
b && i && /* @__PURE__ */ a(Y, { as: "div", background: "primary", padding: "medium", borderRadius: "large", children: /* @__PURE__ */ E(x, { direction: "column", justifyItems: "center", alignItems: "center", gap: "x-small", children: [
|
|
2140
|
+
/* @__PURE__ */ a(
|
|
2141
|
+
ne,
|
|
2035
2142
|
{
|
|
2036
2143
|
display: "block",
|
|
2037
2144
|
color: "danger",
|
|
2038
2145
|
size: "small",
|
|
2039
|
-
renderIcon: /* @__PURE__ */
|
|
2146
|
+
renderIcon: /* @__PURE__ */ a(xe, {}),
|
|
2040
2147
|
"data-testid": "single-note-confirm-delete",
|
|
2041
2148
|
onClick: () => {
|
|
2042
|
-
|
|
2149
|
+
i(), w(!1);
|
|
2043
2150
|
},
|
|
2044
|
-
children:
|
|
2151
|
+
children: u.deleteNote
|
|
2045
2152
|
}
|
|
2046
2153
|
),
|
|
2047
|
-
/* @__PURE__ */
|
|
2048
|
-
|
|
2154
|
+
/* @__PURE__ */ a(
|
|
2155
|
+
ne,
|
|
2049
2156
|
{
|
|
2050
2157
|
display: "block",
|
|
2051
2158
|
size: "small",
|
|
2052
2159
|
"data-testid": "single-note-cancel-delete",
|
|
2053
|
-
onClick: () =>
|
|
2054
|
-
children:
|
|
2160
|
+
onClick: () => w(!1),
|
|
2161
|
+
children: u.cancel
|
|
2055
2162
|
}
|
|
2056
2163
|
)
|
|
2057
2164
|
] }) })
|
|
@@ -2059,28 +2166,28 @@ const Io = ({
|
|
|
2059
2166
|
] });
|
|
2060
2167
|
};
|
|
2061
2168
|
export {
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2169
|
+
cr as ContentWithNoteWrapper,
|
|
2170
|
+
Pe as Highlight,
|
|
2171
|
+
vt as HighlightError,
|
|
2172
|
+
_o as NoteCard,
|
|
2173
|
+
xt as NoteChip,
|
|
2174
|
+
Et as NoteReactionMenu,
|
|
2175
|
+
Lo as NotebookEmptyState,
|
|
2176
|
+
ar as NotebookProvider,
|
|
2177
|
+
ho as NotebookTranslationsProvider,
|
|
2178
|
+
lr as NotebookTray,
|
|
2179
|
+
mr as NotesListView,
|
|
2180
|
+
L as REACTION_TYPE,
|
|
2181
|
+
gr as SingleNote,
|
|
2182
|
+
Ge as createTransparentColor,
|
|
2183
|
+
St as getHighlightUnavailableMessage,
|
|
2184
|
+
hn as useCreateNote,
|
|
2185
|
+
pn as useDeleteNote,
|
|
2186
|
+
mt as useGetNotes,
|
|
2187
|
+
bt as useNotebook,
|
|
2188
|
+
J as useNotebookTranslations,
|
|
2189
|
+
dr as useNotesData,
|
|
2190
|
+
ur as useNotesExport,
|
|
2191
|
+
fr as useReactionFilter,
|
|
2192
|
+
bn as useUpdateNote
|
|
2086
2193
|
};
|