@instructure/platform-notebook 1.11.1 → 1.11.2

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