@instructure/platform-assignment-review 0.4.14 → 0.4.16
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 +692 -680
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { Text as _ } from "@instructure/ui-text";
|
|
|
7
7
|
import { View as K } from "@instructure/ui-view";
|
|
8
8
|
import { useQuery as Ve, useQueryClient as un, useMutation as dn } from "@tanstack/react-query";
|
|
9
9
|
import ae from "graphql-tag";
|
|
10
|
-
import { z as
|
|
10
|
+
import { z as o } from "zod";
|
|
11
11
|
import { Pill as _t } from "@instructure/ui-pill";
|
|
12
12
|
import { IconDownloadLine as Hn, IconCheckMarkSolid as $n, IconArrowStartLine as Bn, IconArrowEndLine as Gn, IconTrashLine as Wn, IconArrowOpenStartLine as fn, IconArrowOpenEndLine as pn, IconXLine as qn, IconLockLine as gn, IconDocumentLine as Kt, IconLinkLine as Yn, IconDiscussionLine as Vn, IconQuizLine as Xn, IconAssignmentLine as Kn } from "@instructure/ui-icons";
|
|
13
13
|
import { ScreenReaderContent as Et } from "@instructure/ui-a11y-content";
|
|
@@ -19,56 +19,56 @@ import { Badge as Tn } from "@instructure/ui-badge";
|
|
|
19
19
|
import { Tooltip as Jn } from "@instructure/ui-tooltip";
|
|
20
20
|
const yn = Fn(void 0);
|
|
21
21
|
function Fo({
|
|
22
|
-
translations:
|
|
22
|
+
translations: t,
|
|
23
23
|
children: n
|
|
24
24
|
}) {
|
|
25
|
-
return /* @__PURE__ */ r(yn.Provider, { value:
|
|
25
|
+
return /* @__PURE__ */ r(yn.Provider, { value: t, children: n });
|
|
26
26
|
}
|
|
27
27
|
function q() {
|
|
28
|
-
const
|
|
29
|
-
if (!
|
|
28
|
+
const t = Un(yn);
|
|
29
|
+
if (!t)
|
|
30
30
|
throw new Error("useTranslations must be used within TranslationsProvider");
|
|
31
|
-
return
|
|
31
|
+
return t;
|
|
32
32
|
}
|
|
33
33
|
/*! @license DOMPurify 3.4.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.5/LICENSE */
|
|
34
|
-
function Zt(
|
|
35
|
-
(n == null || n >
|
|
36
|
-
for (var
|
|
37
|
-
return
|
|
34
|
+
function Zt(t, n) {
|
|
35
|
+
(n == null || n > t.length) && (n = t.length);
|
|
36
|
+
for (var i = 0, s = Array(n); i < n; i++) s[i] = t[i];
|
|
37
|
+
return s;
|
|
38
38
|
}
|
|
39
|
-
function ei(
|
|
40
|
-
if (Array.isArray(
|
|
39
|
+
function ei(t) {
|
|
40
|
+
if (Array.isArray(t)) return t;
|
|
41
41
|
}
|
|
42
|
-
function ti(
|
|
43
|
-
var
|
|
44
|
-
if (
|
|
45
|
-
var
|
|
42
|
+
function ti(t, n) {
|
|
43
|
+
var i = t == null ? null : typeof Symbol < "u" && t[Symbol.iterator] || t["@@iterator"];
|
|
44
|
+
if (i != null) {
|
|
45
|
+
var s, l, c, d, p = [], m = !0, f = !1;
|
|
46
46
|
try {
|
|
47
|
-
if (c = (
|
|
47
|
+
if (c = (i = i.call(t)).next, n !== 0) for (; !(m = (s = c.call(i)).done) && (p.push(s.value), p.length !== n); m = !0) ;
|
|
48
48
|
} catch (h) {
|
|
49
|
-
|
|
49
|
+
f = !0, l = h;
|
|
50
50
|
} finally {
|
|
51
51
|
try {
|
|
52
|
-
if (!m &&
|
|
52
|
+
if (!m && i.return != null && (d = i.return(), Object(d) !== d)) return;
|
|
53
53
|
} finally {
|
|
54
|
-
if (
|
|
54
|
+
if (f) throw l;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
return
|
|
57
|
+
return p;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
function ni() {
|
|
61
61
|
throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
62
62
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
|
|
63
63
|
}
|
|
64
|
-
function ii(
|
|
65
|
-
return ei(
|
|
64
|
+
function ii(t, n) {
|
|
65
|
+
return ei(t) || ti(t, n) || oi(t, n) || ni();
|
|
66
66
|
}
|
|
67
|
-
function oi(
|
|
68
|
-
if (
|
|
69
|
-
if (typeof
|
|
70
|
-
var
|
|
71
|
-
return
|
|
67
|
+
function oi(t, n) {
|
|
68
|
+
if (t) {
|
|
69
|
+
if (typeof t == "string") return Zt(t, n);
|
|
70
|
+
var i = {}.toString.call(t).slice(8, -1);
|
|
71
|
+
return i === "Object" && t.constructor && (i = t.constructor.name), i === "Map" || i === "Set" ? Array.from(t) : i === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? Zt(t, n) : void 0;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
const An = Object.entries, Qt = Object.setPrototypeOf, ri = Object.isFrozen, si = Object.getPrototypeOf, ai = Object.getOwnPropertyDescriptor;
|
|
@@ -79,109 +79,109 @@ B || (B = function(n) {
|
|
|
79
79
|
Y || (Y = function(n) {
|
|
80
80
|
return n;
|
|
81
81
|
});
|
|
82
|
-
yt || (yt = function(n,
|
|
83
|
-
for (var
|
|
82
|
+
yt || (yt = function(n, i) {
|
|
83
|
+
for (var s = arguments.length, l = new Array(s > 2 ? s - 2 : 0), c = 2; c < s; c++)
|
|
84
84
|
l[c - 2] = arguments[c];
|
|
85
|
-
return n.apply(
|
|
85
|
+
return n.apply(i, l);
|
|
86
86
|
});
|
|
87
87
|
At || (At = function(n) {
|
|
88
|
-
for (var
|
|
89
|
-
|
|
90
|
-
return new n(...
|
|
88
|
+
for (var i = arguments.length, s = new Array(i > 1 ? i - 1 : 0), l = 1; l < i; l++)
|
|
89
|
+
s[l - 1] = arguments[l];
|
|
90
|
+
return new n(...s);
|
|
91
91
|
});
|
|
92
92
|
const Te = x(Array.prototype.forEach), li = x(Array.prototype.lastIndexOf), Jt = x(Array.prototype.pop), ye = x(Array.prototype.push), ci = x(Array.prototype.splice), H = Array.isArray, Ne = x(String.prototype.toLowerCase), dt = x(String.prototype.toString), en = x(String.prototype.match), Ae = x(String.prototype.replace), tn = x(String.prototype.indexOf), mi = x(String.prototype.trim), ui = x(Number.prototype.toString), di = x(Boolean.prototype.toString), nn = typeof BigInt > "u" ? null : x(BigInt.prototype.toString), on = typeof Symbol > "u" ? null : x(Symbol.prototype.toString), D = x(Object.prototype.hasOwnProperty), Oe = x(Object.prototype.toString), z = x(RegExp.prototype.test), Ge = fi(TypeError);
|
|
93
|
-
function x(
|
|
93
|
+
function x(t) {
|
|
94
94
|
return function(n) {
|
|
95
95
|
n instanceof RegExp && (n.lastIndex = 0);
|
|
96
|
-
for (var
|
|
97
|
-
|
|
98
|
-
return yt(
|
|
96
|
+
for (var i = arguments.length, s = new Array(i > 1 ? i - 1 : 0), l = 1; l < i; l++)
|
|
97
|
+
s[l - 1] = arguments[l];
|
|
98
|
+
return yt(t, n, s);
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
function fi(
|
|
101
|
+
function fi(t) {
|
|
102
102
|
return function() {
|
|
103
|
-
for (var n = arguments.length,
|
|
104
|
-
|
|
105
|
-
return At(
|
|
103
|
+
for (var n = arguments.length, i = new Array(n), s = 0; s < n; s++)
|
|
104
|
+
i[s] = arguments[s];
|
|
105
|
+
return At(t, i);
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
|
-
function T(
|
|
109
|
-
let
|
|
110
|
-
if (Qt && Qt(
|
|
111
|
-
return
|
|
112
|
-
let
|
|
113
|
-
for (;
|
|
114
|
-
let l = n[
|
|
108
|
+
function T(t, n) {
|
|
109
|
+
let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Ne;
|
|
110
|
+
if (Qt && Qt(t, null), !H(n))
|
|
111
|
+
return t;
|
|
112
|
+
let s = n.length;
|
|
113
|
+
for (; s--; ) {
|
|
114
|
+
let l = n[s];
|
|
115
115
|
if (typeof l == "string") {
|
|
116
|
-
const c =
|
|
117
|
-
c !== l && (ri(n) || (n[
|
|
116
|
+
const c = i(l);
|
|
117
|
+
c !== l && (ri(n) || (n[s] = c), l = c);
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
t[l] = !0;
|
|
120
120
|
}
|
|
121
|
-
return
|
|
121
|
+
return t;
|
|
122
122
|
}
|
|
123
|
-
function pi(
|
|
124
|
-
for (let n = 0; n <
|
|
125
|
-
D(
|
|
126
|
-
return
|
|
123
|
+
function pi(t) {
|
|
124
|
+
for (let n = 0; n < t.length; n++)
|
|
125
|
+
D(t, n) || (t[n] = null);
|
|
126
|
+
return t;
|
|
127
127
|
}
|
|
128
|
-
function W(
|
|
128
|
+
function W(t) {
|
|
129
129
|
const n = _e(null);
|
|
130
|
-
for (const
|
|
131
|
-
var
|
|
132
|
-
const l =
|
|
133
|
-
D(
|
|
130
|
+
for (const s of An(t)) {
|
|
131
|
+
var i = ii(s, 2);
|
|
132
|
+
const l = i[0], c = i[1];
|
|
133
|
+
D(t, l) && (H(c) ? n[l] = pi(c) : c && typeof c == "object" && c.constructor === Object ? n[l] = W(c) : n[l] = c);
|
|
134
134
|
}
|
|
135
135
|
return n;
|
|
136
136
|
}
|
|
137
|
-
function gi(
|
|
138
|
-
switch (typeof
|
|
137
|
+
function gi(t) {
|
|
138
|
+
switch (typeof t) {
|
|
139
139
|
case "string":
|
|
140
|
-
return
|
|
140
|
+
return t;
|
|
141
141
|
case "number":
|
|
142
|
-
return ui(
|
|
142
|
+
return ui(t);
|
|
143
143
|
case "boolean":
|
|
144
|
-
return di(
|
|
144
|
+
return di(t);
|
|
145
145
|
case "bigint":
|
|
146
|
-
return nn ? nn(
|
|
146
|
+
return nn ? nn(t) : "0";
|
|
147
147
|
case "symbol":
|
|
148
|
-
return on ? on(
|
|
148
|
+
return on ? on(t) : "Symbol()";
|
|
149
149
|
case "undefined":
|
|
150
|
-
return Oe(
|
|
150
|
+
return Oe(t);
|
|
151
151
|
case "function":
|
|
152
152
|
case "object": {
|
|
153
|
-
if (
|
|
154
|
-
return Oe(
|
|
155
|
-
const n =
|
|
156
|
-
if (typeof
|
|
157
|
-
const
|
|
158
|
-
return typeof
|
|
153
|
+
if (t === null)
|
|
154
|
+
return Oe(t);
|
|
155
|
+
const n = t, i = de(n, "toString");
|
|
156
|
+
if (typeof i == "function") {
|
|
157
|
+
const s = i(n);
|
|
158
|
+
return typeof s == "string" ? s : Oe(s);
|
|
159
159
|
}
|
|
160
|
-
return Oe(
|
|
160
|
+
return Oe(t);
|
|
161
161
|
}
|
|
162
162
|
default:
|
|
163
|
-
return Oe(
|
|
163
|
+
return Oe(t);
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
|
-
function de(
|
|
167
|
-
for (;
|
|
168
|
-
const
|
|
169
|
-
if (
|
|
170
|
-
if (
|
|
171
|
-
return x(
|
|
172
|
-
if (typeof
|
|
173
|
-
return x(
|
|
166
|
+
function de(t, n) {
|
|
167
|
+
for (; t !== null; ) {
|
|
168
|
+
const s = ai(t, n);
|
|
169
|
+
if (s) {
|
|
170
|
+
if (s.get)
|
|
171
|
+
return x(s.get);
|
|
172
|
+
if (typeof s.value == "function")
|
|
173
|
+
return x(s.value);
|
|
174
174
|
}
|
|
175
|
-
|
|
175
|
+
t = si(t);
|
|
176
176
|
}
|
|
177
|
-
function
|
|
177
|
+
function i() {
|
|
178
178
|
return null;
|
|
179
179
|
}
|
|
180
|
-
return
|
|
180
|
+
return i;
|
|
181
181
|
}
|
|
182
|
-
function hi(
|
|
182
|
+
function hi(t) {
|
|
183
183
|
try {
|
|
184
|
-
return z(
|
|
184
|
+
return z(t, ""), !0;
|
|
185
185
|
} catch {
|
|
186
186
|
return !1;
|
|
187
187
|
}
|
|
@@ -201,13 +201,13 @@ const rn = B(["a", "abbr", "acronym", "address", "area", "article", "aside", "au
|
|
|
201
201
|
document: 9
|
|
202
202
|
}, Ri = function() {
|
|
203
203
|
return typeof window > "u" ? null : window;
|
|
204
|
-
}, Oi = function(n,
|
|
204
|
+
}, Oi = function(n, i) {
|
|
205
205
|
if (typeof n != "object" || typeof n.createPolicy != "function")
|
|
206
206
|
return null;
|
|
207
|
-
let
|
|
207
|
+
let s = null;
|
|
208
208
|
const l = "data-tt-policy-suffix";
|
|
209
|
-
|
|
210
|
-
const c = "dompurify" + (
|
|
209
|
+
i && i.hasAttribute(l) && (s = i.getAttribute(l));
|
|
210
|
+
const c = "dompurify" + (s ? "#" + s : "");
|
|
211
211
|
try {
|
|
212
212
|
return n.createPolicy(c, {
|
|
213
213
|
createHTML(d) {
|
|
@@ -234,18 +234,18 @@ const rn = B(["a", "abbr", "acronym", "address", "area", "article", "aside", "au
|
|
|
234
234
|
};
|
|
235
235
|
};
|
|
236
236
|
function _n() {
|
|
237
|
-
let
|
|
237
|
+
let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Ri();
|
|
238
238
|
const n = (g) => _n(g);
|
|
239
|
-
if (n.version = "3.4.5", n.removed = [], !
|
|
239
|
+
if (n.version = "3.4.5", n.removed = [], !t || !t.document || t.document.nodeType !== Se.document || !t.Element)
|
|
240
240
|
return n.isSupported = !1, n;
|
|
241
|
-
let
|
|
242
|
-
const
|
|
241
|
+
let i = t.document;
|
|
242
|
+
const s = i, l = s.currentScript, c = t.DocumentFragment, d = t.HTMLTemplateElement, p = t.Node, m = t.Element, f = t.NodeFilter, h = t.NamedNodeMap, C = h === void 0 ? t.NamedNodeMap || t.MozNamedAttrMap : h, I = t.HTMLFormElement, w = t.DOMParser, y = t.trustedTypes, V = m.prototype, fe = de(V, "cloneNode"), le = de(V, "remove"), M = de(V, "nextSibling"), ie = de(V, "childNodes"), O = de(V, "parentNode"), ce = p && p.prototype ? de(p.prototype, "nodeType") : null;
|
|
243
243
|
if (typeof d == "function") {
|
|
244
|
-
const g =
|
|
245
|
-
g.content && g.content.ownerDocument && (
|
|
244
|
+
const g = i.createElement("template");
|
|
245
|
+
g.content && g.content.ownerDocument && (i = g.content.ownerDocument);
|
|
246
246
|
}
|
|
247
247
|
let E, N = "";
|
|
248
|
-
const
|
|
248
|
+
const ee = i, Ie = ee.implementation, xe = ee.createNodeIterator, Xe = ee.createDocumentFragment, Ke = ee.getElementsByTagName, Ze = s.importNode;
|
|
249
249
|
let j = mn();
|
|
250
250
|
n.isSupported = typeof An == "function" && typeof O == "function" && Ie && Ie.createHTMLDocument !== void 0;
|
|
251
251
|
const ke = yi, Me = Ai, Pe = Si, Cn = _i, Dn = Ei, Rn = Ii, wt = wi, On = Di;
|
|
@@ -273,7 +273,7 @@ function _n() {
|
|
|
273
273
|
value: !1
|
|
274
274
|
}
|
|
275
275
|
})), we = null, Fe = null;
|
|
276
|
-
const
|
|
276
|
+
const oe = Object.seal(_e(null, {
|
|
277
277
|
tagCheck: {
|
|
278
278
|
writable: !0,
|
|
279
279
|
configurable: !1,
|
|
@@ -287,7 +287,7 @@ function _n() {
|
|
|
287
287
|
value: null
|
|
288
288
|
}
|
|
289
289
|
}));
|
|
290
|
-
let Ot = !0, Qe = !0, Nt = !1, vt = !0,
|
|
290
|
+
let Ot = !0, Qe = !0, Nt = !1, vt = !0, re = !1, Ce = !0, me = !1, Je = !1, et = !1, pe = !1, Ue = !1, ze = !1, Lt = !0, xt = !1;
|
|
291
291
|
const kt = "user-content-";
|
|
292
292
|
let tt = !0, De = !1, ge = {}, Z = null;
|
|
293
293
|
const nt = T({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]);
|
|
@@ -302,176 +302,176 @@ function _n() {
|
|
|
302
302
|
let Re = null;
|
|
303
303
|
const Ln = ["application/xhtml+xml", "text/html"], xn = "text/html";
|
|
304
304
|
let k = null, be = null;
|
|
305
|
-
const kn =
|
|
306
|
-
return
|
|
305
|
+
const kn = i.createElement("form"), Ut = function(e) {
|
|
306
|
+
return e instanceof RegExp || e instanceof Function;
|
|
307
307
|
}, lt = function() {
|
|
308
|
-
let
|
|
309
|
-
if (be && be ===
|
|
308
|
+
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
309
|
+
if (be && be === e)
|
|
310
310
|
return;
|
|
311
|
-
(!
|
|
312
|
-
Ln.indexOf(
|
|
313
|
-
const
|
|
314
|
-
if (R = _e(null), D(
|
|
315
|
-
if (typeof
|
|
311
|
+
(!e || typeof e != "object") && (e = {}), e = W(e), Re = // eslint-disable-next-line unicorn/prefer-includes
|
|
312
|
+
Ln.indexOf(e.PARSER_MEDIA_TYPE) === -1 ? xn : e.PARSER_MEDIA_TYPE, k = Re === "application/xhtml+xml" ? dt : Ne, P = D(e, "ALLOWED_TAGS") && H(e.ALLOWED_TAGS) ? T({}, e.ALLOWED_TAGS, k) : Dt, U = D(e, "ALLOWED_ATTR") && H(e.ALLOWED_ATTR) ? T({}, e.ALLOWED_ATTR, k) : Rt, rt = D(e, "ALLOWED_NAMESPACES") && H(e.ALLOWED_NAMESPACES) ? T({}, e.ALLOWED_NAMESPACES, dt) : Nn, it = D(e, "ADD_URI_SAFE_ATTR") && H(e.ADD_URI_SAFE_ATTR) ? T(W(Ft), e.ADD_URI_SAFE_ATTR, k) : Ft, Mt = D(e, "ADD_DATA_URI_TAGS") && H(e.ADD_DATA_URI_TAGS) ? T(W(Pt), e.ADD_DATA_URI_TAGS, k) : Pt, Z = D(e, "FORBID_CONTENTS") && H(e.FORBID_CONTENTS) ? T({}, e.FORBID_CONTENTS, k) : nt, we = D(e, "FORBID_TAGS") && H(e.FORBID_TAGS) ? T({}, e.FORBID_TAGS, k) : W({}), Fe = D(e, "FORBID_ATTR") && H(e.FORBID_ATTR) ? T({}, e.FORBID_ATTR, k) : W({}), ge = D(e, "USE_PROFILES") ? e.USE_PROFILES && typeof e.USE_PROFILES == "object" ? W(e.USE_PROFILES) : e.USE_PROFILES : !1, Ot = e.ALLOW_ARIA_ATTR !== !1, Qe = e.ALLOW_DATA_ATTR !== !1, Nt = e.ALLOW_UNKNOWN_PROTOCOLS || !1, vt = e.ALLOW_SELF_CLOSE_IN_ATTR !== !1, re = e.SAFE_FOR_TEMPLATES || !1, Ce = e.SAFE_FOR_XML !== !1, me = e.WHOLE_DOCUMENT || !1, pe = e.RETURN_DOM || !1, Ue = e.RETURN_DOM_FRAGMENT || !1, ze = e.RETURN_TRUSTED_TYPE || !1, et = e.FORCE_BODY || !1, Lt = e.SANITIZE_DOM !== !1, xt = e.SANITIZE_NAMED_PROPS || !1, tt = e.KEEP_CONTENT !== !1, De = e.IN_PLACE || !1, Ct = hi(e.ALLOWED_URI_REGEXP) ? e.ALLOWED_URI_REGEXP : cn, he = typeof e.NAMESPACE == "string" ? e.NAMESPACE : Q, st = D(e, "MATHML_TEXT_INTEGRATION_POINTS") && e.MATHML_TEXT_INTEGRATION_POINTS && typeof e.MATHML_TEXT_INTEGRATION_POINTS == "object" ? W(e.MATHML_TEXT_INTEGRATION_POINTS) : T({}, ["mi", "mo", "mn", "ms", "mtext"]), at = D(e, "HTML_INTEGRATION_POINTS") && e.HTML_INTEGRATION_POINTS && typeof e.HTML_INTEGRATION_POINTS == "object" ? W(e.HTML_INTEGRATION_POINTS) : T({}, ["annotation-xml"]);
|
|
313
|
+
const a = D(e, "CUSTOM_ELEMENT_HANDLING") && e.CUSTOM_ELEMENT_HANDLING && typeof e.CUSTOM_ELEMENT_HANDLING == "object" ? W(e.CUSTOM_ELEMENT_HANDLING) : _e(null);
|
|
314
|
+
if (R = _e(null), D(a, "tagNameCheck") && Ut(a.tagNameCheck) && (R.tagNameCheck = a.tagNameCheck), D(a, "attributeNameCheck") && Ut(a.attributeNameCheck) && (R.attributeNameCheck = a.attributeNameCheck), D(a, "allowCustomizedBuiltInElements") && typeof a.allowCustomizedBuiltInElements == "boolean" && (R.allowCustomizedBuiltInElements = a.allowCustomizedBuiltInElements), re && (Qe = !1), Ue && (pe = !0), ge && (P = T({}, sn), U = _e(null), ge.html === !0 && (T(P, rn), T(U, an)), ge.svg === !0 && (T(P, ft), T(U, ht), T(U, We)), ge.svgFilters === !0 && (T(P, pt), T(U, ht), T(U, We)), ge.mathMl === !0 && (T(P, gt), T(U, ln), T(U, We))), oe.tagCheck = null, oe.attributeCheck = null, D(e, "ADD_TAGS") && (typeof e.ADD_TAGS == "function" ? oe.tagCheck = e.ADD_TAGS : H(e.ADD_TAGS) && (P === Dt && (P = W(P)), T(P, e.ADD_TAGS, k))), D(e, "ADD_ATTR") && (typeof e.ADD_ATTR == "function" ? oe.attributeCheck = e.ADD_ATTR : H(e.ADD_ATTR) && (U === Rt && (U = W(U)), T(U, e.ADD_ATTR, k))), D(e, "ADD_URI_SAFE_ATTR") && H(e.ADD_URI_SAFE_ATTR) && T(it, e.ADD_URI_SAFE_ATTR, k), D(e, "FORBID_CONTENTS") && H(e.FORBID_CONTENTS) && (Z === nt && (Z = W(Z)), T(Z, e.FORBID_CONTENTS, k)), D(e, "ADD_FORBID_CONTENTS") && H(e.ADD_FORBID_CONTENTS) && (Z === nt && (Z = W(Z)), T(Z, e.ADD_FORBID_CONTENTS, k)), tt && (P["#text"] = !0), me && T(P, ["html", "head", "body"]), P.table && (T(P, ["tbody"]), delete we.tbody), e.TRUSTED_TYPES_POLICY) {
|
|
315
|
+
if (typeof e.TRUSTED_TYPES_POLICY.createHTML != "function")
|
|
316
316
|
throw Ge('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
|
|
317
|
-
if (typeof
|
|
317
|
+
if (typeof e.TRUSTED_TYPES_POLICY.createScriptURL != "function")
|
|
318
318
|
throw Ge('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
|
|
319
|
-
E =
|
|
319
|
+
E = e.TRUSTED_TYPES_POLICY, N = E.createHTML("");
|
|
320
320
|
} else
|
|
321
321
|
E === void 0 && (E = Oi(y, l)), E !== null && typeof N == "string" && (N = E.createHTML(""));
|
|
322
|
-
B && B(
|
|
323
|
-
}, zt = T({}, [...ft, ...pt, ...bi]), jt = T({}, [...gt, ...Ti]), Mn = function(
|
|
324
|
-
let
|
|
325
|
-
(!
|
|
322
|
+
B && B(e), be = e;
|
|
323
|
+
}, zt = T({}, [...ft, ...pt, ...bi]), jt = T({}, [...gt, ...Ti]), Mn = function(e) {
|
|
324
|
+
let a = O(e);
|
|
325
|
+
(!a || !a.tagName) && (a = {
|
|
326
326
|
namespaceURI: he,
|
|
327
327
|
tagName: "template"
|
|
328
328
|
});
|
|
329
|
-
const u = Ne(
|
|
330
|
-
return rt[
|
|
331
|
-
}, X = function(
|
|
329
|
+
const u = Ne(e.tagName), A = Ne(a.tagName);
|
|
330
|
+
return rt[e.namespaceURI] ? e.namespaceURI === He ? a.namespaceURI === Q ? u === "svg" : a.namespaceURI === je ? u === "svg" && (A === "annotation-xml" || st[A]) : !!zt[u] : e.namespaceURI === je ? a.namespaceURI === Q ? u === "math" : a.namespaceURI === He ? u === "math" && at[A] : !!jt[u] : e.namespaceURI === Q ? a.namespaceURI === He && !at[A] || a.namespaceURI === je && !st[A] ? !1 : !jt[u] && (vn[u] || !zt[u]) : !!(Re === "application/xhtml+xml" && rt[e.namespaceURI]) : !1;
|
|
331
|
+
}, X = function(e) {
|
|
332
332
|
ye(n.removed, {
|
|
333
|
-
element:
|
|
333
|
+
element: e
|
|
334
334
|
});
|
|
335
335
|
try {
|
|
336
|
-
O(
|
|
336
|
+
O(e).removeChild(e);
|
|
337
337
|
} catch {
|
|
338
|
-
le(
|
|
338
|
+
le(e);
|
|
339
339
|
}
|
|
340
|
-
}, ue = function(
|
|
340
|
+
}, ue = function(e, a) {
|
|
341
341
|
try {
|
|
342
342
|
ye(n.removed, {
|
|
343
|
-
attribute:
|
|
344
|
-
from:
|
|
343
|
+
attribute: a.getAttributeNode(e),
|
|
344
|
+
from: a
|
|
345
345
|
});
|
|
346
346
|
} catch {
|
|
347
347
|
ye(n.removed, {
|
|
348
348
|
attribute: null,
|
|
349
|
-
from:
|
|
349
|
+
from: a
|
|
350
350
|
});
|
|
351
351
|
}
|
|
352
|
-
if (
|
|
352
|
+
if (a.removeAttribute(e), e === "is")
|
|
353
353
|
if (pe || Ue)
|
|
354
354
|
try {
|
|
355
|
-
X(
|
|
355
|
+
X(a);
|
|
356
356
|
} catch {
|
|
357
357
|
}
|
|
358
358
|
else
|
|
359
359
|
try {
|
|
360
|
-
|
|
360
|
+
a.setAttribute(e, "");
|
|
361
361
|
} catch {
|
|
362
362
|
}
|
|
363
|
-
}, Ht = function(
|
|
364
|
-
let
|
|
363
|
+
}, Ht = function(e) {
|
|
364
|
+
let a = null, u = null;
|
|
365
365
|
if (et)
|
|
366
|
-
|
|
366
|
+
e = "<remove></remove>" + e;
|
|
367
367
|
else {
|
|
368
|
-
const L = en(
|
|
368
|
+
const L = en(e, /^[\r\n\t ]+/);
|
|
369
369
|
u = L && L[0];
|
|
370
370
|
}
|
|
371
|
-
Re === "application/xhtml+xml" && he === Q && (
|
|
372
|
-
const A = E ? E.createHTML(
|
|
371
|
+
Re === "application/xhtml+xml" && he === Q && (e = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + e + "</body></html>");
|
|
372
|
+
const A = E ? E.createHTML(e) : e;
|
|
373
373
|
if (he === Q)
|
|
374
374
|
try {
|
|
375
|
-
|
|
375
|
+
a = new w().parseFromString(A, Re);
|
|
376
376
|
} catch {
|
|
377
377
|
}
|
|
378
|
-
if (!
|
|
379
|
-
|
|
378
|
+
if (!a || !a.documentElement) {
|
|
379
|
+
a = Ie.createDocument(he, "template", null);
|
|
380
380
|
try {
|
|
381
|
-
|
|
381
|
+
a.documentElement.innerHTML = ot ? N : A;
|
|
382
382
|
} catch {
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
|
-
const v =
|
|
386
|
-
return
|
|
387
|
-
}, $t = function(
|
|
385
|
+
const v = a.body || a.documentElement;
|
|
386
|
+
return e && u && v.insertBefore(i.createTextNode(u), v.childNodes[0] || null), he === Q ? Ke.call(a, me ? "html" : "body")[0] : me ? a.documentElement : v;
|
|
387
|
+
}, $t = function(e) {
|
|
388
388
|
return xe.call(
|
|
389
|
-
|
|
390
|
-
|
|
389
|
+
e.ownerDocument || e,
|
|
390
|
+
e,
|
|
391
391
|
// eslint-disable-next-line no-bitwise
|
|
392
|
-
|
|
392
|
+
f.SHOW_ELEMENT | f.SHOW_COMMENT | f.SHOW_TEXT | f.SHOW_PROCESSING_INSTRUCTION | f.SHOW_CDATA_SECTION,
|
|
393
393
|
null
|
|
394
394
|
);
|
|
395
|
-
}, Bt = function(
|
|
396
|
-
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
|
|
395
|
+
}, Bt = function(e) {
|
|
396
|
+
e.normalize();
|
|
397
|
+
const a = xe.call(
|
|
398
|
+
e.ownerDocument || e,
|
|
399
|
+
e,
|
|
400
400
|
// eslint-disable-next-line no-bitwise
|
|
401
|
-
|
|
401
|
+
f.SHOW_TEXT | f.SHOW_COMMENT | f.SHOW_CDATA_SECTION | f.SHOW_PROCESSING_INSTRUCTION,
|
|
402
402
|
null
|
|
403
403
|
);
|
|
404
|
-
let u =
|
|
404
|
+
let u = a.nextNode();
|
|
405
405
|
for (; u; ) {
|
|
406
406
|
let A = u.data;
|
|
407
407
|
Te([ke, Me, Pe], (v) => {
|
|
408
408
|
A = Ae(A, v, " ");
|
|
409
|
-
}), u.data = A, u =
|
|
409
|
+
}), u.data = A, u = a.nextNode();
|
|
410
410
|
}
|
|
411
|
-
}, ct = function(
|
|
412
|
-
return
|
|
413
|
-
}, $e = function(
|
|
414
|
-
if (!ce || typeof
|
|
411
|
+
}, ct = function(e) {
|
|
412
|
+
return e instanceof I && (typeof e.nodeName != "string" || typeof e.textContent != "string" || typeof e.removeChild != "function" || !(e.attributes instanceof C) || typeof e.removeAttribute != "function" || typeof e.setAttribute != "function" || typeof e.namespaceURI != "string" || typeof e.insertBefore != "function" || typeof e.hasChildNodes != "function");
|
|
413
|
+
}, $e = function(e) {
|
|
414
|
+
if (!ce || typeof e != "object" || e === null)
|
|
415
415
|
return !1;
|
|
416
416
|
try {
|
|
417
|
-
return typeof ce(
|
|
417
|
+
return typeof ce(e) == "number";
|
|
418
418
|
} catch {
|
|
419
419
|
return !1;
|
|
420
420
|
}
|
|
421
421
|
};
|
|
422
|
-
function
|
|
422
|
+
function te(g, e, a) {
|
|
423
423
|
Te(g, (u) => {
|
|
424
|
-
u.call(n,
|
|
424
|
+
u.call(n, e, a, be);
|
|
425
425
|
});
|
|
426
426
|
}
|
|
427
|
-
const Gt = function(
|
|
428
|
-
let
|
|
429
|
-
if (
|
|
430
|
-
return X(
|
|
431
|
-
const u = k(
|
|
432
|
-
if (
|
|
427
|
+
const Gt = function(e) {
|
|
428
|
+
let a = null;
|
|
429
|
+
if (te(j.beforeSanitizeElements, e, null), ct(e))
|
|
430
|
+
return X(e), !0;
|
|
431
|
+
const u = k(e.nodeName);
|
|
432
|
+
if (te(j.uponSanitizeElement, e, {
|
|
433
433
|
tagName: u,
|
|
434
434
|
allowedTags: P
|
|
435
|
-
}), Ce &&
|
|
436
|
-
return X(
|
|
437
|
-
if (we[u] || !(
|
|
435
|
+
}), Ce && e.hasChildNodes() && !$e(e.firstElementChild) && z(/<[/\w!]/g, e.innerHTML) && z(/<[/\w!]/g, e.textContent) || Ce && e.namespaceURI === Q && u === "style" && $e(e.firstElementChild) || e.nodeType === Se.progressingInstruction || Ce && e.nodeType === Se.comment && z(/<[/\w]/g, e.data))
|
|
436
|
+
return X(e), !0;
|
|
437
|
+
if (we[u] || !(oe.tagCheck instanceof Function && oe.tagCheck(u)) && !P[u]) {
|
|
438
438
|
if (!we[u] && qt(u) && (R.tagNameCheck instanceof RegExp && z(R.tagNameCheck, u) || R.tagNameCheck instanceof Function && R.tagNameCheck(u)))
|
|
439
439
|
return !1;
|
|
440
440
|
if (tt && !Z[u]) {
|
|
441
|
-
const A = O(
|
|
441
|
+
const A = O(e) || e.parentNode, v = ie(e) || e.childNodes;
|
|
442
442
|
if (v && A) {
|
|
443
443
|
const L = v.length;
|
|
444
444
|
for (let G = L - 1; G >= 0; --G) {
|
|
445
|
-
const
|
|
446
|
-
A.insertBefore(
|
|
445
|
+
const se = fe(v[G], !0);
|
|
446
|
+
A.insertBefore(se, M(e));
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
}
|
|
450
|
-
return X(
|
|
450
|
+
return X(e), !0;
|
|
451
451
|
}
|
|
452
|
-
return
|
|
453
|
-
|
|
454
|
-
}),
|
|
455
|
-
element:
|
|
456
|
-
}),
|
|
457
|
-
}, Wt = function(
|
|
458
|
-
if (Fe[
|
|
452
|
+
return e instanceof m && !Mn(e) || (u === "noscript" || u === "noembed" || u === "noframes") && z(/<\/no(script|embed|frames)/i, e.innerHTML) ? (X(e), !0) : (re && e.nodeType === Se.text && (a = e.textContent, Te([ke, Me, Pe], (A) => {
|
|
453
|
+
a = Ae(a, A, " ");
|
|
454
|
+
}), e.textContent !== a && (ye(n.removed, {
|
|
455
|
+
element: e.cloneNode()
|
|
456
|
+
}), e.textContent = a)), te(j.afterSanitizeElements, e, null), !1);
|
|
457
|
+
}, Wt = function(e, a, u) {
|
|
458
|
+
if (Fe[a] || Lt && (a === "id" || a === "name") && (u in i || u in kn))
|
|
459
459
|
return !1;
|
|
460
|
-
const A = U[
|
|
461
|
-
if (!(Qe && !Fe[
|
|
462
|
-
if (!(Ot && z(Dn,
|
|
463
|
-
if (!A || Fe[
|
|
460
|
+
const A = U[a] || oe.attributeCheck instanceof Function && oe.attributeCheck(a, e);
|
|
461
|
+
if (!(Qe && !Fe[a] && z(Cn, a))) {
|
|
462
|
+
if (!(Ot && z(Dn, a))) {
|
|
463
|
+
if (!A || Fe[a]) {
|
|
464
464
|
if (
|
|
465
465
|
// First condition does a very basic check if a) it's basically a valid custom element tagname AND
|
|
466
466
|
// b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
|
|
467
467
|
// and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
|
|
468
|
-
!(qt(
|
|
468
|
+
!(qt(e) && (R.tagNameCheck instanceof RegExp && z(R.tagNameCheck, e) || R.tagNameCheck instanceof Function && R.tagNameCheck(e)) && (R.attributeNameCheck instanceof RegExp && z(R.attributeNameCheck, a) || R.attributeNameCheck instanceof Function && R.attributeNameCheck(a, e)) || // Alternative, second condition checks if it's an `is`-attribute, AND
|
|
469
469
|
// the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
|
|
470
|
-
|
|
470
|
+
a === "is" && R.allowCustomizedBuiltInElements && (R.tagNameCheck instanceof RegExp && z(R.tagNameCheck, u) || R.tagNameCheck instanceof Function && R.tagNameCheck(u)))
|
|
471
471
|
) return !1;
|
|
472
|
-
} else if (!it[
|
|
472
|
+
} else if (!it[a]) {
|
|
473
473
|
if (!z(Ct, Ae(u, wt, ""))) {
|
|
474
|
-
if (!((
|
|
474
|
+
if (!((a === "src" || a === "xlink:href" || a === "href") && e !== "script" && tn(u, "data:") === 0 && Mt[e])) {
|
|
475
475
|
if (!(Nt && !z(Rn, Ae(u, wt, "")))) {
|
|
476
476
|
if (u)
|
|
477
477
|
return !1;
|
|
@@ -482,12 +482,12 @@ function _n() {
|
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
return !0;
|
|
485
|
-
}, Pn = T({}, ["annotation-xml", "color-profile", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "missing-glyph"]), qt = function(
|
|
486
|
-
return !Pn[Ne(
|
|
487
|
-
}, Yt = function(
|
|
488
|
-
|
|
489
|
-
const
|
|
490
|
-
if (!
|
|
485
|
+
}, Pn = T({}, ["annotation-xml", "color-profile", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "missing-glyph"]), qt = function(e) {
|
|
486
|
+
return !Pn[Ne(e)] && z(On, e);
|
|
487
|
+
}, Yt = function(e) {
|
|
488
|
+
te(j.beforeSanitizeAttributes, e, null);
|
|
489
|
+
const a = e.attributes;
|
|
490
|
+
if (!a || ct(e))
|
|
491
491
|
return;
|
|
492
492
|
const u = {
|
|
493
493
|
attrName: "",
|
|
@@ -496,38 +496,38 @@ function _n() {
|
|
|
496
496
|
allowedAttributes: U,
|
|
497
497
|
forceKeepAttr: void 0
|
|
498
498
|
};
|
|
499
|
-
let A =
|
|
499
|
+
let A = a.length;
|
|
500
500
|
for (; A--; ) {
|
|
501
|
-
const v =
|
|
501
|
+
const v = a[A], L = v.name, G = v.namespaceURI, se = v.value, ne = k(L), ut = se;
|
|
502
502
|
let F = L === "value" ? ut : mi(ut);
|
|
503
|
-
if (u.attrName =
|
|
504
|
-
ue(L,
|
|
503
|
+
if (u.attrName = ne, u.attrValue = F, u.keepAttr = !0, u.forceKeepAttr = void 0, te(j.uponSanitizeAttribute, e, u), F = u.attrValue, xt && (ne === "id" || ne === "name") && tn(F, kt) !== 0 && (ue(L, e), F = kt + F), Ce && z(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, F)) {
|
|
504
|
+
ue(L, e);
|
|
505
505
|
continue;
|
|
506
506
|
}
|
|
507
|
-
if (
|
|
508
|
-
ue(L,
|
|
507
|
+
if (ne === "attributename" && en(F, "href")) {
|
|
508
|
+
ue(L, e);
|
|
509
509
|
continue;
|
|
510
510
|
}
|
|
511
511
|
if (u.forceKeepAttr)
|
|
512
512
|
continue;
|
|
513
513
|
if (!u.keepAttr) {
|
|
514
|
-
ue(L,
|
|
514
|
+
ue(L, e);
|
|
515
515
|
continue;
|
|
516
516
|
}
|
|
517
517
|
if (!vt && z(/\/>/i, F)) {
|
|
518
|
-
ue(L,
|
|
518
|
+
ue(L, e);
|
|
519
519
|
continue;
|
|
520
520
|
}
|
|
521
|
-
|
|
521
|
+
re && Te([ke, Me, Pe], (Xt) => {
|
|
522
522
|
F = Ae(F, Xt, " ");
|
|
523
523
|
});
|
|
524
|
-
const Vt = k(
|
|
525
|
-
if (!Wt(Vt,
|
|
526
|
-
ue(L,
|
|
524
|
+
const Vt = k(e.nodeName);
|
|
525
|
+
if (!Wt(Vt, ne, F)) {
|
|
526
|
+
ue(L, e);
|
|
527
527
|
continue;
|
|
528
528
|
}
|
|
529
529
|
if (E && typeof y == "object" && typeof y.getAttributeType == "function" && !G)
|
|
530
|
-
switch (y.getAttributeType(Vt,
|
|
530
|
+
switch (y.getAttributeType(Vt, ne)) {
|
|
531
531
|
case "TrustedHTML": {
|
|
532
532
|
F = E.createHTML(F);
|
|
533
533
|
break;
|
|
@@ -539,90 +539,90 @@ function _n() {
|
|
|
539
539
|
}
|
|
540
540
|
if (F !== ut)
|
|
541
541
|
try {
|
|
542
|
-
G ?
|
|
542
|
+
G ? e.setAttributeNS(G, L, F) : e.setAttribute(L, F), ct(e) ? X(e) : Jt(n.removed);
|
|
543
543
|
} catch {
|
|
544
|
-
ue(L,
|
|
544
|
+
ue(L, e);
|
|
545
545
|
}
|
|
546
546
|
}
|
|
547
|
-
|
|
548
|
-
}, mt = function(
|
|
549
|
-
let
|
|
550
|
-
const u = $t(
|
|
551
|
-
for (
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
}, Be = function(
|
|
555
|
-
if (
|
|
556
|
-
const A =
|
|
547
|
+
te(j.afterSanitizeAttributes, e, null);
|
|
548
|
+
}, mt = function(e) {
|
|
549
|
+
let a = null;
|
|
550
|
+
const u = $t(e);
|
|
551
|
+
for (te(j.beforeSanitizeShadowDOM, e, null); a = u.nextNode(); )
|
|
552
|
+
te(j.uponSanitizeShadowNode, a, null), Gt(a), Yt(a), a.content instanceof c && mt(a.content);
|
|
553
|
+
te(j.afterSanitizeShadowDOM, e, null);
|
|
554
|
+
}, Be = function(e) {
|
|
555
|
+
if (e.nodeType === Se.element && e.shadowRoot instanceof c) {
|
|
556
|
+
const A = e.shadowRoot;
|
|
557
557
|
Be(A), mt(A);
|
|
558
558
|
}
|
|
559
|
-
const
|
|
560
|
-
if (!
|
|
559
|
+
const a = e.childNodes;
|
|
560
|
+
if (!a)
|
|
561
561
|
return;
|
|
562
562
|
const u = [];
|
|
563
|
-
Te(
|
|
563
|
+
Te(a, (A) => {
|
|
564
564
|
ye(u, A);
|
|
565
565
|
});
|
|
566
566
|
for (const A of u)
|
|
567
567
|
Be(A);
|
|
568
568
|
};
|
|
569
569
|
return n.sanitize = function(g) {
|
|
570
|
-
let
|
|
570
|
+
let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, a = null, u = null, A = null, v = null;
|
|
571
571
|
if (ot = !g, ot && (g = "<!-->"), typeof g != "string" && !$e(g) && (g = gi(g), typeof g != "string"))
|
|
572
572
|
throw Ge("dirty is not a string, aborting");
|
|
573
573
|
if (!n.isSupported)
|
|
574
574
|
return g;
|
|
575
|
-
if (Je || lt(
|
|
576
|
-
const
|
|
577
|
-
if (typeof
|
|
578
|
-
const
|
|
579
|
-
if (!P[
|
|
575
|
+
if (Je || lt(e), n.removed = [], typeof g == "string" && (De = !1), De) {
|
|
576
|
+
const se = g.nodeName;
|
|
577
|
+
if (typeof se == "string") {
|
|
578
|
+
const ne = k(se);
|
|
579
|
+
if (!P[ne] || we[ne])
|
|
580
580
|
throw Ge("root node is forbidden and cannot be sanitized in-place");
|
|
581
581
|
}
|
|
582
582
|
Be(g);
|
|
583
583
|
} else if ($e(g))
|
|
584
|
-
|
|
584
|
+
a = Ht("<!---->"), u = a.ownerDocument.importNode(g, !0), u.nodeType === Se.element && u.nodeName === "BODY" || u.nodeName === "HTML" ? a = u : a.appendChild(u), Be(u);
|
|
585
585
|
else {
|
|
586
|
-
if (!pe && !
|
|
586
|
+
if (!pe && !re && !me && // eslint-disable-next-line unicorn/prefer-includes
|
|
587
587
|
g.indexOf("<") === -1)
|
|
588
588
|
return E && ze ? E.createHTML(g) : g;
|
|
589
|
-
if (
|
|
589
|
+
if (a = Ht(g), !a)
|
|
590
590
|
return pe ? null : ze ? N : "";
|
|
591
591
|
}
|
|
592
|
-
|
|
593
|
-
const L = $t(De ? g :
|
|
592
|
+
a && et && X(a.firstChild);
|
|
593
|
+
const L = $t(De ? g : a);
|
|
594
594
|
for (; A = L.nextNode(); )
|
|
595
595
|
Gt(A), Yt(A), A.content instanceof c && mt(A.content);
|
|
596
596
|
if (De)
|
|
597
|
-
return
|
|
597
|
+
return re && Bt(g), g;
|
|
598
598
|
if (pe) {
|
|
599
|
-
if (
|
|
600
|
-
for (v = Xe.call(
|
|
601
|
-
v.appendChild(
|
|
599
|
+
if (re && Bt(a), Ue)
|
|
600
|
+
for (v = Xe.call(a.ownerDocument); a.firstChild; )
|
|
601
|
+
v.appendChild(a.firstChild);
|
|
602
602
|
else
|
|
603
|
-
v =
|
|
604
|
-
return (U.shadowroot || U.shadowrootmode) && (v = Ze.call(
|
|
603
|
+
v = a;
|
|
604
|
+
return (U.shadowroot || U.shadowrootmode) && (v = Ze.call(s, v, !0)), v;
|
|
605
605
|
}
|
|
606
|
-
let G = me ?
|
|
607
|
-
return me && P["!doctype"] &&
|
|
608
|
-
` + G),
|
|
609
|
-
G = Ae(G,
|
|
606
|
+
let G = me ? a.outerHTML : a.innerHTML;
|
|
607
|
+
return me && P["!doctype"] && a.ownerDocument && a.ownerDocument.doctype && a.ownerDocument.doctype.name && z(Ci, a.ownerDocument.doctype.name) && (G = "<!DOCTYPE " + a.ownerDocument.doctype.name + `>
|
|
608
|
+
` + G), re && Te([ke, Me, Pe], (se) => {
|
|
609
|
+
G = Ae(G, se, " ");
|
|
610
610
|
}), E && ze ? E.createHTML(G) : G;
|
|
611
611
|
}, n.setConfig = function() {
|
|
612
612
|
let g = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
613
613
|
lt(g), Je = !0;
|
|
614
614
|
}, n.clearConfig = function() {
|
|
615
615
|
be = null, Je = !1;
|
|
616
|
-
}, n.isValidAttribute = function(g,
|
|
616
|
+
}, n.isValidAttribute = function(g, e, a) {
|
|
617
617
|
be || lt({});
|
|
618
|
-
const u = k(g), A = k(
|
|
619
|
-
return Wt(u, A,
|
|
620
|
-
}, n.addHook = function(g,
|
|
621
|
-
typeof
|
|
622
|
-
}, n.removeHook = function(g,
|
|
623
|
-
if (
|
|
624
|
-
const
|
|
625
|
-
return
|
|
618
|
+
const u = k(g), A = k(e);
|
|
619
|
+
return Wt(u, A, a);
|
|
620
|
+
}, n.addHook = function(g, e) {
|
|
621
|
+
typeof e == "function" && ye(j[g], e);
|
|
622
|
+
}, n.removeHook = function(g, e) {
|
|
623
|
+
if (e !== void 0) {
|
|
624
|
+
const a = li(j[g], e);
|
|
625
|
+
return a === -1 ? void 0 : ci(j[g], a, 1)[0];
|
|
626
626
|
}
|
|
627
627
|
return Jt(j[g]);
|
|
628
628
|
}, n.removeHooks = function(g) {
|
|
@@ -885,16 +885,7 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
885
885
|
"cite",
|
|
886
886
|
"longdesc",
|
|
887
887
|
"xlink:href"
|
|
888
|
-
]), Li = [
|
|
889
|
-
"background",
|
|
890
|
-
"background-image",
|
|
891
|
-
"list-style",
|
|
892
|
-
"list-style-image",
|
|
893
|
-
"cursor",
|
|
894
|
-
// content: url(...) triggers an HTTP GET even on non-pseudo elements in some
|
|
895
|
-
// browsers; strip it as defense-in-depth against tracking-pixel exfiltration.
|
|
896
|
-
"content"
|
|
897
|
-
], xi = /url\s*\(\s*['"]?(?:[a-z][a-z0-9+\-.]*:|\/\/)/i, ki = /* @__PURE__ */ new Set([
|
|
888
|
+
]), Li = ["content"], xi = /url\s*\(\s*['"]?(?:[a-z][a-z0-9+\-.]*:|\/\/)/i, ki = /* @__PURE__ */ new Set([
|
|
898
889
|
"allow-downloads",
|
|
899
890
|
"allow-forms",
|
|
900
891
|
"allow-modals",
|
|
@@ -908,7 +899,21 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
908
899
|
"allow-storage-access-by-user-activation",
|
|
909
900
|
"allow-top-navigation-by-user-activation"
|
|
910
901
|
]), Mi = {
|
|
911
|
-
|
|
902
|
+
// semantics and annotation are re-allowed because DOMPurify blocks all of
|
|
903
|
+
// mathMlDisallowed by default. semantics is a safe structural wrapper;
|
|
904
|
+
// annotation carries LaTeX source text (e.g. \frac{1}{2}); Canvas emits
|
|
905
|
+
// text-only content here, and any child elements would be hoisted out of
|
|
906
|
+
// the MathML context and sanitized as ordinary HTML.
|
|
907
|
+
//
|
|
908
|
+
// annotation-xml is re-added here and filtered by an afterSanitizeElements
|
|
909
|
+
// hook below: it is stripped when its encoding makes it an HTML integration
|
|
910
|
+
// point ("text/html" or "application/xhtml+xml" per the WHATWG spec), which
|
|
911
|
+
// is the mXSS namespace-confusion vector. Semantic encodings used by external
|
|
912
|
+
// tools (MathML-Content, MathML-Presentation from MathType/Wolfram Alpha,
|
|
913
|
+
// application/x-tex, …) are not integration points and are preserved, so this
|
|
914
|
+
// layer no longer strips the benign annotation-xml the backend and TinyMCE
|
|
915
|
+
// already allow.
|
|
916
|
+
ADD_TAGS: ["iframe", "semantics", "annotation", "annotation-xml"],
|
|
912
917
|
ADD_ATTR: [
|
|
913
918
|
"allowfullscreen",
|
|
914
919
|
"allow",
|
|
@@ -952,17 +957,18 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
952
957
|
// confusion attacks where fragments like <svg> could influence parse context.
|
|
953
958
|
FORCE_BODY: !0
|
|
954
959
|
};
|
|
955
|
-
let
|
|
960
|
+
let J = null;
|
|
956
961
|
function Pi() {
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
962
|
+
if (J) return J;
|
|
963
|
+
J = typeof bt == "function" ? bt(window) : bt, J.addHook("afterSanitizeAttributes", (n) => {
|
|
964
|
+
if (!(n instanceof Element) || !n.hasAttribute("style")) return;
|
|
965
|
+
const i = n.style, s = [];
|
|
966
|
+
for (let m = 0; m < i.length; m++) {
|
|
967
|
+
const f = i.item(m);
|
|
968
|
+
Ni.has(f) || s.push(f);
|
|
963
969
|
}
|
|
964
|
-
for (const
|
|
965
|
-
const
|
|
970
|
+
for (const m of s) i.removeProperty(m);
|
|
971
|
+
const l = /* @__PURE__ */ new Set([
|
|
966
972
|
"static",
|
|
967
973
|
"relative",
|
|
968
974
|
"absolute",
|
|
@@ -971,51 +977,57 @@ function Pi() {
|
|
|
971
977
|
"unset",
|
|
972
978
|
"revert",
|
|
973
979
|
"revert-layer"
|
|
974
|
-
]),
|
|
975
|
-
|
|
976
|
-
const
|
|
977
|
-
|
|
978
|
-
for (const
|
|
979
|
-
const
|
|
980
|
-
|
|
980
|
+
]), c = i.getPropertyValue("position").trim().toLowerCase();
|
|
981
|
+
c && !l.has(c) && i.removeProperty("position");
|
|
982
|
+
const d = /* @__PURE__ */ new Set(["initial", "inherit", "unset", "revert", "revert-layer"]), p = i.getPropertyValue("opacity").trim().toLowerCase();
|
|
983
|
+
p && !d.has(p) && (p.endsWith("%") ? parseFloat(p) / 100 : parseFloat(p)) < 0.05 && i.removeProperty("opacity");
|
|
984
|
+
for (const m of Li) {
|
|
985
|
+
const f = i.getPropertyValue(m);
|
|
986
|
+
f && xi.test(f) && i.removeProperty(m);
|
|
981
987
|
}
|
|
982
|
-
|
|
983
|
-
}),
|
|
984
|
-
if (!vi.has(
|
|
985
|
-
const
|
|
986
|
-
/^\s*\/\//.test(
|
|
987
|
-
}),
|
|
988
|
-
if (!(
|
|
989
|
-
const
|
|
990
|
-
if (
|
|
991
|
-
|
|
988
|
+
i.length === 0 && n.removeAttribute("style");
|
|
989
|
+
}), J.addHook("uponSanitizeAttribute", (n, i) => {
|
|
990
|
+
if (!vi.has(i.attrName)) return;
|
|
991
|
+
const s = i.attrValue;
|
|
992
|
+
/^\s*\/\//.test(s) ? (i.attrValue = s.trimStart().replace(/^\/\//, "https://"), i.keepAttr = !0) : /^\s*\\/.test(s) && (i.keepAttr = !1);
|
|
993
|
+
}), J.addHook("afterSanitizeAttributes", (n) => {
|
|
994
|
+
if (!(n instanceof Element) || !n.hasAttribute("srcset")) return;
|
|
995
|
+
const i = (n.getAttribute("srcset") ?? "").split(","), s = (d) => d.trim().split(/\s+/)[0];
|
|
996
|
+
if (i.some((d) => /^\s*\\/.test(s(d)))) {
|
|
997
|
+
n.removeAttribute("srcset");
|
|
992
998
|
return;
|
|
993
999
|
}
|
|
994
|
-
let
|
|
995
|
-
const
|
|
996
|
-
const
|
|
997
|
-
if (!
|
|
998
|
-
|
|
999
|
-
const
|
|
1000
|
-
return
|
|
1000
|
+
let l = !1;
|
|
1001
|
+
const c = i.map((d) => {
|
|
1002
|
+
const p = s(d);
|
|
1003
|
+
if (!p.startsWith("//")) return d;
|
|
1004
|
+
l = !0;
|
|
1005
|
+
const m = d.indexOf(p);
|
|
1006
|
+
return d.slice(0, m) + "https://" + p.slice(2) + d.slice(m + p.length);
|
|
1001
1007
|
});
|
|
1002
|
-
|
|
1003
|
-
}),
|
|
1004
|
-
var
|
|
1005
|
-
if (!(
|
|
1006
|
-
const
|
|
1007
|
-
|
|
1008
|
-
}),
|
|
1009
|
-
if (!(
|
|
1010
|
-
const
|
|
1011
|
-
|
|
1012
|
-
})
|
|
1008
|
+
l && n.setAttribute("srcset", c.join(","));
|
|
1009
|
+
}), J.addHook("afterSanitizeAttributes", (n) => {
|
|
1010
|
+
var i;
|
|
1011
|
+
if (!(n instanceof Element) || n.tagName !== "A" && n.tagName !== "AREA" || ((i = n.getAttribute("target")) == null ? void 0 : i.toLowerCase()) !== "_blank") return;
|
|
1012
|
+
const s = n.getAttribute("rel") ?? "", l = new Set(s.split(/\s+/).filter(Boolean));
|
|
1013
|
+
l.add("noopener"), n.setAttribute("rel", [...l].join(" "));
|
|
1014
|
+
}), J.addHook("afterSanitizeAttributes", (n) => {
|
|
1015
|
+
if (!(n instanceof Element) || n.tagName !== "IFRAME" || !n.hasAttribute("sandbox")) return;
|
|
1016
|
+
const i = (n.getAttribute("sandbox") ?? "").toLowerCase().split(/\s+/).filter(Boolean), s = i.filter((l) => ki.has(l));
|
|
1017
|
+
s.length !== i.length && n.setAttribute("sandbox", s.join(" "));
|
|
1018
|
+
});
|
|
1019
|
+
const t = /* @__PURE__ */ new Set(["text/html", "application/xhtml+xml"]);
|
|
1020
|
+
return J.addHook("afterSanitizeElements", (n) => {
|
|
1021
|
+
if (!(n instanceof Element) || n.tagName.toLowerCase() !== "annotation-xml") return;
|
|
1022
|
+
const i = (n.getAttribute("encoding") ?? "").toLowerCase().trim();
|
|
1023
|
+
t.has(i) && n.remove();
|
|
1024
|
+
}), J;
|
|
1013
1025
|
}
|
|
1014
|
-
function It(
|
|
1026
|
+
function It(t, n) {
|
|
1015
1027
|
if (typeof window > "u")
|
|
1016
1028
|
throw new Error("sanitizeHtml requires a DOM environment (window is not defined)");
|
|
1017
|
-
const
|
|
1018
|
-
return Pi().sanitize(
|
|
1029
|
+
const i = Mi;
|
|
1030
|
+
return Pi().sanitize(t ?? "", i);
|
|
1019
1031
|
}
|
|
1020
1032
|
const Fi = ae`
|
|
1021
1033
|
query GetAssignment($courseId: ID!, $assignmentId: ID!, $userId: ID!) {
|
|
@@ -1159,196 +1171,196 @@ const Fi = ae`
|
|
|
1159
1171
|
contentType
|
|
1160
1172
|
submissionPreviewUrl
|
|
1161
1173
|
}
|
|
1162
|
-
`, ve =
|
|
1163
|
-
_id:
|
|
1164
|
-
displayName:
|
|
1165
|
-
id:
|
|
1166
|
-
mimeClass:
|
|
1167
|
-
url:
|
|
1168
|
-
contentType:
|
|
1169
|
-
submissionPreviewUrl:
|
|
1170
|
-
}), ji =
|
|
1171
|
-
_id:
|
|
1172
|
-
activeSubmissionType:
|
|
1173
|
-
body:
|
|
1174
|
-
attachments:
|
|
1175
|
-
}), Hi =
|
|
1176
|
-
id:
|
|
1177
|
-
submittedAt:
|
|
1178
|
-
body:
|
|
1179
|
-
grade:
|
|
1180
|
-
score:
|
|
1181
|
-
submissionType:
|
|
1182
|
-
attempt:
|
|
1183
|
-
unreadCommentCount:
|
|
1174
|
+
`, ve = o.object({
|
|
1175
|
+
_id: o.string(),
|
|
1176
|
+
displayName: o.string(),
|
|
1177
|
+
id: o.string(),
|
|
1178
|
+
mimeClass: o.string(),
|
|
1179
|
+
url: o.string(),
|
|
1180
|
+
contentType: o.string(),
|
|
1181
|
+
submissionPreviewUrl: o.string().nullable()
|
|
1182
|
+
}), ji = o.object({
|
|
1183
|
+
_id: o.string(),
|
|
1184
|
+
activeSubmissionType: o.string(),
|
|
1185
|
+
body: o.string().nullable(),
|
|
1186
|
+
attachments: o.array(ve).nullable()
|
|
1187
|
+
}), Hi = o.object({
|
|
1188
|
+
id: o.string(),
|
|
1189
|
+
submittedAt: o.string(),
|
|
1190
|
+
body: o.string().nullable(),
|
|
1191
|
+
grade: o.string().nullable(),
|
|
1192
|
+
score: o.number().nullable(),
|
|
1193
|
+
submissionType: o.string(),
|
|
1194
|
+
attempt: o.number(),
|
|
1195
|
+
unreadCommentCount: o.number(),
|
|
1184
1196
|
attachment: ve.nullable(),
|
|
1185
|
-
attachments:
|
|
1197
|
+
attachments: o.array(ve).nullable(),
|
|
1186
1198
|
submissionDraft: ji.nullable()
|
|
1187
|
-
}), $i =
|
|
1188
|
-
_id:
|
|
1189
|
-
name:
|
|
1190
|
-
description:
|
|
1191
|
-
allowedExtensions:
|
|
1192
|
-
allowedAttempts:
|
|
1193
|
-
dueAt:
|
|
1194
|
-
pointsPossible:
|
|
1195
|
-
submissionTypes:
|
|
1196
|
-
gradingType:
|
|
1197
|
-
published:
|
|
1198
|
-
submissionsConnection:
|
|
1199
|
-
nodes:
|
|
1199
|
+
}), $i = o.object({
|
|
1200
|
+
_id: o.string(),
|
|
1201
|
+
name: o.string(),
|
|
1202
|
+
description: o.string().nullable(),
|
|
1203
|
+
allowedExtensions: o.array(o.string()).nullable(),
|
|
1204
|
+
allowedAttempts: o.number().nullable(),
|
|
1205
|
+
dueAt: o.string().nullable(),
|
|
1206
|
+
pointsPossible: o.number().nullable(),
|
|
1207
|
+
submissionTypes: o.array(o.string()),
|
|
1208
|
+
gradingType: o.string(),
|
|
1209
|
+
published: o.boolean().nullable().optional(),
|
|
1210
|
+
submissionsConnection: o.object({
|
|
1211
|
+
nodes: o.array(Hi)
|
|
1200
1212
|
})
|
|
1201
|
-
}), Bi =
|
|
1213
|
+
}), Bi = o.object({
|
|
1202
1214
|
legacyNode: $i,
|
|
1203
|
-
course:
|
|
1204
|
-
name:
|
|
1215
|
+
course: o.object({
|
|
1216
|
+
name: o.string()
|
|
1205
1217
|
})
|
|
1206
|
-
}), En =
|
|
1207
|
-
startCursor:
|
|
1208
|
-
endCursor:
|
|
1209
|
-
hasPreviousPage:
|
|
1210
|
-
hasNextPage:
|
|
1211
|
-
}), In =
|
|
1212
|
-
_id:
|
|
1213
|
-
attempt:
|
|
1214
|
-
author:
|
|
1215
|
-
avatarUrl:
|
|
1216
|
-
shortName:
|
|
1217
|
-
courseRoles:
|
|
1218
|
+
}), En = o.object({
|
|
1219
|
+
startCursor: o.string(),
|
|
1220
|
+
endCursor: o.string(),
|
|
1221
|
+
hasPreviousPage: o.boolean(),
|
|
1222
|
+
hasNextPage: o.boolean()
|
|
1223
|
+
}), In = o.object({
|
|
1224
|
+
_id: o.string(),
|
|
1225
|
+
attempt: o.number(),
|
|
1226
|
+
author: o.object({
|
|
1227
|
+
avatarUrl: o.string().nullable(),
|
|
1228
|
+
shortName: o.string(),
|
|
1229
|
+
courseRoles: o.string().nullable()
|
|
1218
1230
|
}),
|
|
1219
|
-
htmlComment:
|
|
1220
|
-
read:
|
|
1221
|
-
updatedAt:
|
|
1222
|
-
createdAt:
|
|
1223
|
-
attachments:
|
|
1224
|
-
|
|
1225
|
-
url:
|
|
1226
|
-
mimeClass:
|
|
1227
|
-
displayName:
|
|
1228
|
-
contentType:
|
|
1229
|
-
id:
|
|
1231
|
+
htmlComment: o.string(),
|
|
1232
|
+
read: o.boolean(),
|
|
1233
|
+
updatedAt: o.string(),
|
|
1234
|
+
createdAt: o.string(),
|
|
1235
|
+
attachments: o.array(
|
|
1236
|
+
o.object({
|
|
1237
|
+
url: o.string(),
|
|
1238
|
+
mimeClass: o.string(),
|
|
1239
|
+
displayName: o.string(),
|
|
1240
|
+
contentType: o.string(),
|
|
1241
|
+
id: o.string()
|
|
1230
1242
|
})
|
|
1231
1243
|
).nullable()
|
|
1232
|
-
}), Gi =
|
|
1233
|
-
submissionComments:
|
|
1234
|
-
commentsConnection:
|
|
1244
|
+
}), Gi = o.object({
|
|
1245
|
+
submissionComments: o.object({
|
|
1246
|
+
commentsConnection: o.object({
|
|
1235
1247
|
pageInfo: En,
|
|
1236
|
-
nodes:
|
|
1248
|
+
nodes: o.array(In)
|
|
1237
1249
|
})
|
|
1238
1250
|
})
|
|
1239
|
-
}), Uo =
|
|
1240
|
-
comments:
|
|
1251
|
+
}), Uo = o.object({
|
|
1252
|
+
comments: o.array(In),
|
|
1241
1253
|
pageInfo: En
|
|
1242
|
-
}), Wi =
|
|
1243
|
-
submittedAt:
|
|
1244
|
-
body:
|
|
1245
|
-
grade:
|
|
1246
|
-
score:
|
|
1247
|
-
submissionType:
|
|
1248
|
-
state:
|
|
1249
|
-
attempt:
|
|
1254
|
+
}), Wi = o.object({
|
|
1255
|
+
submittedAt: o.string(),
|
|
1256
|
+
body: o.string().nullable(),
|
|
1257
|
+
grade: o.string().nullable(),
|
|
1258
|
+
score: o.number().nullable(),
|
|
1259
|
+
submissionType: o.string(),
|
|
1260
|
+
state: o.string(),
|
|
1261
|
+
attempt: o.number(),
|
|
1250
1262
|
attachment: ve.nullable(),
|
|
1251
|
-
attachments:
|
|
1252
|
-
}), qi =
|
|
1253
|
-
node:
|
|
1254
|
-
submissionHistoriesConnection:
|
|
1255
|
-
nodes:
|
|
1263
|
+
attachments: o.array(ve).nullable()
|
|
1264
|
+
}), qi = o.object({
|
|
1265
|
+
node: o.object({
|
|
1266
|
+
submissionHistoriesConnection: o.object({
|
|
1267
|
+
nodes: o.array(Wi)
|
|
1256
1268
|
})
|
|
1257
1269
|
})
|
|
1258
|
-
}), Le =
|
|
1259
|
-
attribute:
|
|
1260
|
-
message:
|
|
1261
|
-
}), Yi =
|
|
1262
|
-
createSubmissionComment:
|
|
1263
|
-
submissionComment:
|
|
1264
|
-
_id:
|
|
1265
|
-
attachments:
|
|
1266
|
-
|
|
1267
|
-
_id:
|
|
1268
|
-
displayName:
|
|
1269
|
-
id:
|
|
1270
|
-
mimeClass:
|
|
1271
|
-
url:
|
|
1270
|
+
}), Le = o.object({
|
|
1271
|
+
attribute: o.string(),
|
|
1272
|
+
message: o.string()
|
|
1273
|
+
}), Yi = o.object({
|
|
1274
|
+
createSubmissionComment: o.object({
|
|
1275
|
+
submissionComment: o.object({
|
|
1276
|
+
_id: o.string(),
|
|
1277
|
+
attachments: o.array(
|
|
1278
|
+
o.object({
|
|
1279
|
+
_id: o.string(),
|
|
1280
|
+
displayName: o.string(),
|
|
1281
|
+
id: o.string(),
|
|
1282
|
+
mimeClass: o.string(),
|
|
1283
|
+
url: o.string()
|
|
1272
1284
|
})
|
|
1273
1285
|
).nullable(),
|
|
1274
|
-
author:
|
|
1275
|
-
avatarUrl:
|
|
1276
|
-
shortName:
|
|
1286
|
+
author: o.object({
|
|
1287
|
+
avatarUrl: o.string().nullable(),
|
|
1288
|
+
shortName: o.string()
|
|
1277
1289
|
}),
|
|
1278
|
-
htmlComment:
|
|
1279
|
-
mediaObject:
|
|
1280
|
-
id:
|
|
1281
|
-
_id:
|
|
1282
|
-
mediaSources:
|
|
1283
|
-
|
|
1284
|
-
height:
|
|
1285
|
-
src:
|
|
1286
|
-
type:
|
|
1287
|
-
width:
|
|
1290
|
+
htmlComment: o.string(),
|
|
1291
|
+
mediaObject: o.object({
|
|
1292
|
+
id: o.string(),
|
|
1293
|
+
_id: o.string(),
|
|
1294
|
+
mediaSources: o.array(
|
|
1295
|
+
o.object({
|
|
1296
|
+
height: o.string(),
|
|
1297
|
+
src: o.string(),
|
|
1298
|
+
type: o.string(),
|
|
1299
|
+
width: o.string()
|
|
1288
1300
|
})
|
|
1289
1301
|
),
|
|
1290
|
-
mediaTracks:
|
|
1291
|
-
|
|
1292
|
-
_id:
|
|
1293
|
-
locale:
|
|
1294
|
-
content:
|
|
1295
|
-
kind:
|
|
1302
|
+
mediaTracks: o.array(
|
|
1303
|
+
o.object({
|
|
1304
|
+
_id: o.string(),
|
|
1305
|
+
locale: o.string(),
|
|
1306
|
+
content: o.string(),
|
|
1307
|
+
kind: o.string()
|
|
1296
1308
|
})
|
|
1297
1309
|
),
|
|
1298
|
-
mediaType:
|
|
1299
|
-
title:
|
|
1310
|
+
mediaType: o.string(),
|
|
1311
|
+
title: o.string()
|
|
1300
1312
|
}).nullable(),
|
|
1301
|
-
read:
|
|
1302
|
-
updatedAt:
|
|
1313
|
+
read: o.boolean(),
|
|
1314
|
+
updatedAt: o.string()
|
|
1303
1315
|
}).nullable(),
|
|
1304
|
-
errors:
|
|
1316
|
+
errors: o.array(Le).nullable()
|
|
1305
1317
|
})
|
|
1306
|
-
}), Vi =
|
|
1307
|
-
markSubmissionCommentsRead:
|
|
1308
|
-
errors:
|
|
1318
|
+
}), Vi = o.object({
|
|
1319
|
+
markSubmissionCommentsRead: o.object({
|
|
1320
|
+
errors: o.array(Le).nullable()
|
|
1309
1321
|
})
|
|
1310
|
-
}), zo =
|
|
1311
|
-
createSubmission:
|
|
1312
|
-
submission:
|
|
1313
|
-
_id:
|
|
1314
|
-
createdAt:
|
|
1315
|
-
attempt:
|
|
1316
|
-
submittedAt:
|
|
1317
|
-
score:
|
|
1322
|
+
}), zo = o.object({
|
|
1323
|
+
createSubmission: o.object({
|
|
1324
|
+
submission: o.object({
|
|
1325
|
+
_id: o.string(),
|
|
1326
|
+
createdAt: o.string(),
|
|
1327
|
+
attempt: o.number(),
|
|
1328
|
+
submittedAt: o.string().nullable(),
|
|
1329
|
+
score: o.number().nullable()
|
|
1318
1330
|
}).nullable(),
|
|
1319
|
-
errors:
|
|
1331
|
+
errors: o.array(Le).nullable()
|
|
1320
1332
|
})
|
|
1321
|
-
}), jo =
|
|
1333
|
+
}), jo = o.object(
|
|
1322
1334
|
{
|
|
1323
|
-
createSubmissionDraft:
|
|
1324
|
-
submissionDraft:
|
|
1325
|
-
_id:
|
|
1335
|
+
createSubmissionDraft: o.object({
|
|
1336
|
+
submissionDraft: o.object({
|
|
1337
|
+
_id: o.string()
|
|
1326
1338
|
}).nullable(),
|
|
1327
|
-
errors:
|
|
1339
|
+
errors: o.array(Le).nullable()
|
|
1328
1340
|
})
|
|
1329
1341
|
}
|
|
1330
|
-
), Ho =
|
|
1342
|
+
), Ho = o.object(
|
|
1331
1343
|
{
|
|
1332
|
-
deleteSubmissionDraft:
|
|
1333
|
-
submissionDraftIds:
|
|
1334
|
-
errors:
|
|
1344
|
+
deleteSubmissionDraft: o.object({
|
|
1345
|
+
submissionDraftIds: o.array(o.string()).nullable(),
|
|
1346
|
+
errors: o.array(Le).nullable()
|
|
1335
1347
|
})
|
|
1336
1348
|
}
|
|
1337
1349
|
);
|
|
1338
1350
|
function Xi({
|
|
1339
|
-
courseId:
|
|
1351
|
+
courseId: t,
|
|
1340
1352
|
assignmentId: n,
|
|
1341
|
-
userId:
|
|
1342
|
-
executeQuery:
|
|
1353
|
+
userId: i,
|
|
1354
|
+
executeQuery: s,
|
|
1343
1355
|
enabled: l = !0
|
|
1344
1356
|
}) {
|
|
1345
1357
|
return Ve({
|
|
1346
|
-
queryKey: ["assignment-review", "assignment",
|
|
1358
|
+
queryKey: ["assignment-review", "assignment", t, n, i],
|
|
1347
1359
|
queryFn: async () => {
|
|
1348
|
-
const c = await
|
|
1349
|
-
courseId:
|
|
1360
|
+
const c = await s(Fi, {
|
|
1361
|
+
courseId: t,
|
|
1350
1362
|
assignmentId: n,
|
|
1351
|
-
userId:
|
|
1363
|
+
userId: i
|
|
1352
1364
|
}), d = Bi.parse(c);
|
|
1353
1365
|
return {
|
|
1354
1366
|
...d.legacyNode,
|
|
@@ -1359,34 +1371,34 @@ function Xi({
|
|
|
1359
1371
|
});
|
|
1360
1372
|
}
|
|
1361
1373
|
function Ki({
|
|
1362
|
-
submissionId:
|
|
1374
|
+
submissionId: t,
|
|
1363
1375
|
executeQuery: n,
|
|
1364
|
-
enabled:
|
|
1376
|
+
enabled: i = !0
|
|
1365
1377
|
}) {
|
|
1366
1378
|
return Ve({
|
|
1367
|
-
queryKey: ["assignment-review", "submissions",
|
|
1379
|
+
queryKey: ["assignment-review", "submissions", t],
|
|
1368
1380
|
queryFn: async () => {
|
|
1369
|
-
const
|
|
1370
|
-
return qi.parse(
|
|
1381
|
+
const s = await n(zi, { submissionId: t });
|
|
1382
|
+
return qi.parse(s).node.submissionHistoriesConnection.nodes.slice().sort(
|
|
1371
1383
|
(c, d) => new Date(d.submittedAt).getTime() - new Date(c.submittedAt).getTime()
|
|
1372
1384
|
);
|
|
1373
1385
|
},
|
|
1374
|
-
enabled:
|
|
1386
|
+
enabled: i
|
|
1375
1387
|
});
|
|
1376
1388
|
}
|
|
1377
|
-
function Zi(
|
|
1378
|
-
if (!
|
|
1379
|
-
const n = new Date(
|
|
1389
|
+
function Zi(t) {
|
|
1390
|
+
if (!t) return "";
|
|
1391
|
+
const n = new Date(t);
|
|
1380
1392
|
return Number.isNaN(n.getTime()) ? "" : n.toLocaleDateString();
|
|
1381
1393
|
}
|
|
1382
1394
|
function Qi({
|
|
1383
|
-
submission:
|
|
1395
|
+
submission: t,
|
|
1384
1396
|
isSelected: n,
|
|
1385
|
-
isDraft:
|
|
1386
|
-
pointsPossible:
|
|
1397
|
+
isDraft: i = !1,
|
|
1398
|
+
pointsPossible: s,
|
|
1387
1399
|
onClick: l
|
|
1388
1400
|
}) {
|
|
1389
|
-
const c = q(), d =
|
|
1401
|
+
const c = q(), d = i ? c.submissionCurrentAttempt() : c.commentsAttempt({ number: t.attempt }), p = t.score != null && s != null ? `${t.score}/${s}` : null;
|
|
1390
1402
|
return /* @__PURE__ */ r(
|
|
1391
1403
|
K,
|
|
1392
1404
|
{
|
|
@@ -1407,47 +1419,47 @@ function Qi({
|
|
|
1407
1419
|
/* @__PURE__ */ S(b, { direction: "column", gap: "xx-small", children: [
|
|
1408
1420
|
/* @__PURE__ */ S(b, { gap: "small", alignItems: "center", children: [
|
|
1409
1421
|
/* @__PURE__ */ r(_, { weight: "bold", children: d }),
|
|
1410
|
-
|
|
1422
|
+
i && /* @__PURE__ */ r(_t, { color: "info", children: c.submissionDraft() })
|
|
1411
1423
|
] }),
|
|
1412
|
-
!
|
|
1424
|
+
!i && t.submittedAt && /* @__PURE__ */ r(_, { size: "small", color: "secondary", children: Zi(t.submittedAt) })
|
|
1413
1425
|
] }),
|
|
1414
|
-
|
|
1426
|
+
p && /* @__PURE__ */ r(_, { weight: "bold", children: p })
|
|
1415
1427
|
] })
|
|
1416
1428
|
}
|
|
1417
1429
|
);
|
|
1418
1430
|
}
|
|
1419
1431
|
function Ji({
|
|
1420
|
-
submissionId:
|
|
1432
|
+
submissionId: t,
|
|
1421
1433
|
selectedAttempt: n,
|
|
1422
|
-
onAttemptSelect:
|
|
1423
|
-
pointsPossible:
|
|
1434
|
+
onAttemptSelect: i,
|
|
1435
|
+
pointsPossible: s,
|
|
1424
1436
|
executeQuery: l
|
|
1425
1437
|
}) {
|
|
1426
|
-
const c = q(), { data: d, isLoading:
|
|
1427
|
-
submissionId:
|
|
1438
|
+
const c = q(), { data: d, isLoading: p, isError: m } = Ki({
|
|
1439
|
+
submissionId: t,
|
|
1428
1440
|
executeQuery: l
|
|
1429
1441
|
});
|
|
1430
|
-
if (
|
|
1442
|
+
if (p)
|
|
1431
1443
|
return /* @__PURE__ */ r(b, { justifyItems: "center", padding: "medium", children: /* @__PURE__ */ r(Ye, { renderTitle: c.navigationAttempts(), size: "small" }) });
|
|
1432
1444
|
if (m)
|
|
1433
1445
|
return /* @__PURE__ */ r(b, { justifyItems: "center", padding: "medium", children: /* @__PURE__ */ r(_, { color: "danger", children: c.submissionLoadAttemptsError() }) });
|
|
1434
|
-
const
|
|
1435
|
-
return
|
|
1446
|
+
const f = (d == null ? void 0 : d.filter((h) => h.attempt > 0)) ?? [];
|
|
1447
|
+
return f.length === 0 ? /* @__PURE__ */ r(b, { padding: "medium", children: /* @__PURE__ */ r(_, { color: "secondary", children: c.submissionNoAttempts() }) }) : /* @__PURE__ */ r(b, { direction: "column", gap: "x-small", padding: "none none medium none", children: f.map((h) => /* @__PURE__ */ r(
|
|
1436
1448
|
Qi,
|
|
1437
1449
|
{
|
|
1438
1450
|
submission: h,
|
|
1439
1451
|
isSelected: n === h.attempt,
|
|
1440
|
-
pointsPossible:
|
|
1441
|
-
onClick: () =>
|
|
1452
|
+
pointsPossible: s,
|
|
1453
|
+
onClick: () => i(h)
|
|
1442
1454
|
},
|
|
1443
1455
|
h.attempt
|
|
1444
1456
|
)) });
|
|
1445
1457
|
}
|
|
1446
1458
|
function wn({
|
|
1447
|
-
attachments:
|
|
1459
|
+
attachments: t,
|
|
1448
1460
|
size: n = "medium"
|
|
1449
1461
|
}) {
|
|
1450
|
-
return
|
|
1462
|
+
return t.length === 0 ? null : /* @__PURE__ */ r(b, { direction: "column", gap: "x-small", children: t.map((i) => /* @__PURE__ */ r(
|
|
1451
1463
|
K,
|
|
1452
1464
|
{
|
|
1453
1465
|
as: "div",
|
|
@@ -1456,82 +1468,82 @@ function wn({
|
|
|
1456
1468
|
borderWidth: "small",
|
|
1457
1469
|
borderRadius: "medium",
|
|
1458
1470
|
children: /* @__PURE__ */ S(b, { as: "div", gap: "small", width: "100%", justifyItems: "space-between", alignItems: "center", children: [
|
|
1459
|
-
/* @__PURE__ */ r(b.Item, { shouldShrink: !0, children: /* @__PURE__ */ r(hn, { children:
|
|
1460
|
-
/* @__PURE__ */ r(Zn, { href:
|
|
1471
|
+
/* @__PURE__ */ r(b.Item, { shouldShrink: !0, children: /* @__PURE__ */ r(hn, { children: i.displayName }) }),
|
|
1472
|
+
/* @__PURE__ */ r(Zn, { href: i.url, isWithinText: !1, renderIcon: /* @__PURE__ */ r(Hn, {}), children: /* @__PURE__ */ r(Et, { children: `Download ${i.displayName}` }) })
|
|
1461
1473
|
] })
|
|
1462
1474
|
},
|
|
1463
|
-
|
|
1475
|
+
i.id
|
|
1464
1476
|
)) });
|
|
1465
1477
|
}
|
|
1466
|
-
function eo(
|
|
1467
|
-
return /* @__PURE__ */ r("span", { dangerouslySetInnerHTML: { __html: It(
|
|
1478
|
+
function eo(t) {
|
|
1479
|
+
return /* @__PURE__ */ r("span", { dangerouslySetInnerHTML: { __html: It(t) } });
|
|
1468
1480
|
}
|
|
1469
1481
|
function to({
|
|
1470
|
-
submission:
|
|
1482
|
+
submission: t,
|
|
1471
1483
|
isLastAttempt: n = !0,
|
|
1472
|
-
showAttemptLabel:
|
|
1473
|
-
renderHTML:
|
|
1484
|
+
showAttemptLabel: i = !0,
|
|
1485
|
+
renderHTML: s
|
|
1474
1486
|
}) {
|
|
1475
|
-
const l = q(), c =
|
|
1476
|
-
if (!
|
|
1487
|
+
const l = q(), c = s ?? eo, d = (t == null ? void 0 : t.submissionType) === "online_text_entry", p = (t == null ? void 0 : t.submissionType) === "online_upload", m = d ? l.submissionTextHeading() : l.submissionUploadHeading(), f = qe(() => {
|
|
1488
|
+
if (!t) return [];
|
|
1477
1489
|
const C = [];
|
|
1478
|
-
if (
|
|
1479
|
-
for (const I of
|
|
1490
|
+
if (t.attachment && C.push(t.attachment), t.attachments)
|
|
1491
|
+
for (const I of t.attachments)
|
|
1480
1492
|
C.some((w) => w.id === I.id) || C.push(I);
|
|
1481
1493
|
return C;
|
|
1482
|
-
}, [
|
|
1483
|
-
return
|
|
1484
|
-
|
|
1494
|
+
}, [t]), h = qe(() => c((t == null ? void 0 : t.body) ?? ""), [t == null ? void 0 : t.body, c]);
|
|
1495
|
+
return t ? /* @__PURE__ */ r(K, { as: "div", children: /* @__PURE__ */ S(b, { direction: "column", gap: "small", children: [
|
|
1496
|
+
i && !n && t.attempt != null && /* @__PURE__ */ r(_, { size: "small", weight: "bold", color: "secondary", children: l.submissionViewingAttempt({ number: t.attempt }) }),
|
|
1485
1497
|
/* @__PURE__ */ S(b, { gap: "x-small", alignItems: "center", children: [
|
|
1486
1498
|
/* @__PURE__ */ r($n, { color: "success" }),
|
|
1487
1499
|
/* @__PURE__ */ r(St, { level: "h3", children: m })
|
|
1488
1500
|
] }),
|
|
1489
|
-
d &&
|
|
1501
|
+
d && t.body && /* @__PURE__ */ S(b, { alignItems: "stretch", gap: "small", children: [
|
|
1490
1502
|
/* @__PURE__ */ r(K, { as: "div", width: "4px", background: "primary", borderRadius: "small" }),
|
|
1491
1503
|
/* @__PURE__ */ r(K, { as: "div", children: /* @__PURE__ */ r(_, { children: h }) })
|
|
1492
1504
|
] }),
|
|
1493
|
-
|
|
1505
|
+
p && f.length > 0 && /* @__PURE__ */ r(wn, { attachments: f })
|
|
1494
1506
|
] }) }) : null;
|
|
1495
1507
|
}
|
|
1496
|
-
function no(
|
|
1497
|
-
const n = new Date(
|
|
1508
|
+
function no(t) {
|
|
1509
|
+
const n = new Date(t);
|
|
1498
1510
|
return Number.isNaN(n.getTime()) ? "" : n.toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" });
|
|
1499
1511
|
}
|
|
1500
1512
|
function io() {
|
|
1501
1513
|
return /* @__PURE__ */ r(_, { color: "secondary", size: "small", children: "|" });
|
|
1502
1514
|
}
|
|
1503
1515
|
function oo({
|
|
1504
|
-
score:
|
|
1516
|
+
score: t,
|
|
1505
1517
|
pointsPossible: n,
|
|
1506
|
-
gradingType:
|
|
1507
|
-
dueAt:
|
|
1518
|
+
gradingType: i,
|
|
1519
|
+
dueAt: s,
|
|
1508
1520
|
allowedAttempts: l,
|
|
1509
1521
|
currentAttempt: c,
|
|
1510
1522
|
isOverdue: d,
|
|
1511
|
-
estimatedDuration:
|
|
1523
|
+
estimatedDuration: p,
|
|
1512
1524
|
labels: m
|
|
1513
1525
|
}) {
|
|
1514
|
-
const
|
|
1515
|
-
return
|
|
1516
|
-
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.duration) ??
|
|
1517
|
-
),
|
|
1518
|
-
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.score) ??
|
|
1519
|
-
) : n != null &&
|
|
1520
|
-
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.pointsPossible) ??
|
|
1526
|
+
const f = q(), h = [];
|
|
1527
|
+
return p && h.push(
|
|
1528
|
+
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.duration) ?? f.headerDuration({ minutes: p }) }, "duration")
|
|
1529
|
+
), t != null && n != null ? h.push(
|
|
1530
|
+
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.score) ?? f.headerScore({ score: t, total: n }) }, "score")
|
|
1531
|
+
) : n != null && i !== "not_graded" && h.push(
|
|
1532
|
+
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.pointsPossible) ?? f.headerPointsPossible({ points: n }) }, "points")
|
|
1521
1533
|
), l != null && (l === -1 ? h.push(
|
|
1522
|
-
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.attempts) ??
|
|
1534
|
+
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.attempts) ?? f.headerAttemptsUnlimited() }, "attempts")
|
|
1523
1535
|
) : c != null ? h.push(
|
|
1524
|
-
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.attempts) ??
|
|
1536
|
+
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.attempts) ?? f.headerAttemptOf({ current: c, total: l }) }, "attempts")
|
|
1525
1537
|
) : h.push(
|
|
1526
|
-
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.attempts) ??
|
|
1527
|
-
)),
|
|
1528
|
-
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.dueDate) ??
|
|
1538
|
+
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.attempts) ?? f.headerAttemptsAllowed({ count: l }) }, "attempts")
|
|
1539
|
+
)), s && h.push(
|
|
1540
|
+
/* @__PURE__ */ r(_, { size: "small", children: (m == null ? void 0 : m.dueDate) ?? f.headerDueDate({ date: no(s) }) }, "due")
|
|
1529
1541
|
), /* @__PURE__ */ S(b, { as: "div", direction: "row", alignItems: "center", gap: "small", children: [
|
|
1530
1542
|
h.map((C, I) => /* @__PURE__ */ S(b, { gap: "small", alignItems: "center", children: [
|
|
1531
1543
|
I > 0 && /* @__PURE__ */ r(io, {}),
|
|
1532
1544
|
C
|
|
1533
1545
|
] }, `item-${String(I)}`)),
|
|
1534
|
-
d && /* @__PURE__ */ r(_t, { color: "danger", children: (m == null ? void 0 : m.overdue) ??
|
|
1546
|
+
d && /* @__PURE__ */ r(_t, { color: "danger", children: (m == null ? void 0 : m.overdue) ?? f.headerOverdue() })
|
|
1535
1547
|
] });
|
|
1536
1548
|
}
|
|
1537
1549
|
const ro = ae`
|
|
@@ -1707,31 +1719,31 @@ const ro = ae`
|
|
|
1707
1719
|
}
|
|
1708
1720
|
`;
|
|
1709
1721
|
function ao({
|
|
1710
|
-
executeQuery:
|
|
1722
|
+
executeQuery: t
|
|
1711
1723
|
}) {
|
|
1712
1724
|
const n = un();
|
|
1713
1725
|
return dn({
|
|
1714
|
-
mutationFn: async ({ submissionId:
|
|
1715
|
-
const d = await
|
|
1716
|
-
id:
|
|
1717
|
-
submissionAttempt:
|
|
1726
|
+
mutationFn: async ({ submissionId: i, attempt: s, comment: l, fileIds: c }) => {
|
|
1727
|
+
const d = await t(ro, {
|
|
1728
|
+
id: i,
|
|
1729
|
+
submissionAttempt: s,
|
|
1718
1730
|
comment: l,
|
|
1719
1731
|
fileIds: c
|
|
1720
1732
|
});
|
|
1721
1733
|
return Yi.parse(d), d;
|
|
1722
1734
|
},
|
|
1723
|
-
onSuccess: (
|
|
1735
|
+
onSuccess: (i, s) => {
|
|
1724
1736
|
n.invalidateQueries({
|
|
1725
|
-
queryKey: ["assignment-review", "submission-comments",
|
|
1737
|
+
queryKey: ["assignment-review", "submission-comments", s.submissionId]
|
|
1726
1738
|
});
|
|
1727
1739
|
}
|
|
1728
1740
|
});
|
|
1729
1741
|
}
|
|
1730
1742
|
function lo({
|
|
1731
|
-
submissionId:
|
|
1743
|
+
submissionId: t,
|
|
1732
1744
|
courseId: n,
|
|
1733
|
-
pageParams:
|
|
1734
|
-
direction:
|
|
1745
|
+
pageParams: i,
|
|
1746
|
+
direction: s,
|
|
1735
1747
|
executeQuery: l,
|
|
1736
1748
|
enabled: c
|
|
1737
1749
|
}) {
|
|
@@ -1739,65 +1751,65 @@ function lo({
|
|
|
1739
1751
|
queryKey: [
|
|
1740
1752
|
"assignment-review",
|
|
1741
1753
|
"submission-comments",
|
|
1742
|
-
|
|
1754
|
+
t,
|
|
1743
1755
|
n,
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1756
|
+
i == null ? void 0 : i.startCursor,
|
|
1757
|
+
i == null ? void 0 : i.endCursor,
|
|
1758
|
+
s
|
|
1747
1759
|
],
|
|
1748
1760
|
queryFn: async () => {
|
|
1749
1761
|
const d = await l(Ui, {
|
|
1750
|
-
submissionId:
|
|
1762
|
+
submissionId: t,
|
|
1751
1763
|
courseId: n,
|
|
1752
|
-
beforeCursor:
|
|
1753
|
-
afterCursor:
|
|
1754
|
-
first:
|
|
1755
|
-
last:
|
|
1756
|
-
}),
|
|
1764
|
+
beforeCursor: s === "prev" ? (i == null ? void 0 : i.startCursor) ?? null : null,
|
|
1765
|
+
afterCursor: s === "next" ? (i == null ? void 0 : i.endCursor) ?? null : null,
|
|
1766
|
+
first: s === "next" ? 5 : null,
|
|
1767
|
+
last: s === "prev" || !s ? 5 : null
|
|
1768
|
+
}), p = Gi.parse(d);
|
|
1757
1769
|
return {
|
|
1758
|
-
comments: [...
|
|
1759
|
-
(
|
|
1770
|
+
comments: [...p.submissionComments.commentsConnection.nodes].sort(
|
|
1771
|
+
(f, h) => new Date(f.createdAt).getTime() - new Date(h.createdAt).getTime()
|
|
1760
1772
|
),
|
|
1761
|
-
pageInfo:
|
|
1773
|
+
pageInfo: p.submissionComments.commentsConnection.pageInfo
|
|
1762
1774
|
};
|
|
1763
1775
|
},
|
|
1764
|
-
enabled: c ?? !!
|
|
1776
|
+
enabled: c ?? !!t
|
|
1765
1777
|
});
|
|
1766
1778
|
}
|
|
1767
1779
|
function co({
|
|
1768
|
-
executeQuery:
|
|
1780
|
+
executeQuery: t
|
|
1769
1781
|
}) {
|
|
1770
1782
|
const n = un();
|
|
1771
1783
|
return dn({
|
|
1772
|
-
mutationFn: async ({ submissionId:
|
|
1773
|
-
const l = await
|
|
1784
|
+
mutationFn: async ({ submissionId: i, submissionCommentIds: s }) => {
|
|
1785
|
+
const l = await t(
|
|
1774
1786
|
so,
|
|
1775
|
-
{ submissionId:
|
|
1787
|
+
{ submissionId: i, submissionCommentIds: s }
|
|
1776
1788
|
);
|
|
1777
1789
|
return Vi.parse(l), l;
|
|
1778
1790
|
},
|
|
1779
|
-
onSuccess: (
|
|
1791
|
+
onSuccess: (i, s) => {
|
|
1780
1792
|
n.invalidateQueries({
|
|
1781
1793
|
queryKey: ["assignment-review", "assignment"],
|
|
1782
|
-
predicate: (l) => l.queryKey.includes(
|
|
1794
|
+
predicate: (l) => l.queryKey.includes(s.assignmentId)
|
|
1783
1795
|
});
|
|
1784
1796
|
}
|
|
1785
1797
|
});
|
|
1786
1798
|
}
|
|
1787
|
-
function mo(
|
|
1788
|
-
return /* @__PURE__ */ r("span", { dangerouslySetInnerHTML: { __html: It(
|
|
1799
|
+
function mo(t) {
|
|
1800
|
+
return /* @__PURE__ */ r("span", { dangerouslySetInnerHTML: { __html: It(t) } });
|
|
1789
1801
|
}
|
|
1790
|
-
function uo(
|
|
1791
|
-
const n = new Date(
|
|
1802
|
+
function uo(t) {
|
|
1803
|
+
const n = new Date(t);
|
|
1792
1804
|
return Number.isNaN(n.getTime()) ? "" : n.toLocaleString();
|
|
1793
1805
|
}
|
|
1794
1806
|
function fo({
|
|
1795
|
-
comment:
|
|
1807
|
+
comment: t,
|
|
1796
1808
|
isFullWidth: n,
|
|
1797
|
-
renderHTML:
|
|
1809
|
+
renderHTML: i
|
|
1798
1810
|
}) {
|
|
1799
1811
|
var m;
|
|
1800
|
-
const
|
|
1812
|
+
const s = q(), l = i ?? mo, c = ((m = t.author.courseRoles) == null ? void 0 : m.includes("StudentEnrollment")) ?? !1, d = qe(() => l(t.htmlComment), [t.htmlComment, l]);
|
|
1801
1813
|
return /* @__PURE__ */ r(
|
|
1802
1814
|
K,
|
|
1803
1815
|
{
|
|
@@ -1810,19 +1822,19 @@ function fo({
|
|
|
1810
1822
|
children: /* @__PURE__ */ S(b, { as: "div", direction: "column", gap: "small", children: [
|
|
1811
1823
|
/* @__PURE__ */ S(b, { as: "div", direction: "column", gap: "xx-small", children: [
|
|
1812
1824
|
/* @__PURE__ */ S(b, { as: "div", justifyItems: "space-between", alignItems: "center", children: [
|
|
1813
|
-
/* @__PURE__ */ r(b.Item, { shouldShrink: !0, children: /* @__PURE__ */ r(_, { weight: "bold", size: "medium", children: /* @__PURE__ */ r(hn, { children:
|
|
1814
|
-
!
|
|
1825
|
+
/* @__PURE__ */ r(b.Item, { shouldShrink: !0, children: /* @__PURE__ */ r(_, { weight: "bold", size: "medium", children: /* @__PURE__ */ r(hn, { children: t.author.shortName }) }) }),
|
|
1826
|
+
!t.read && /* @__PURE__ */ r(Tn, { type: "notification", standalone: !0, children: /* @__PURE__ */ r(Et, { children: s.commentsUnreadSingle() }) })
|
|
1815
1827
|
] }),
|
|
1816
|
-
/* @__PURE__ */ r(_, { size: "small", color: "secondary", children: uo(
|
|
1817
|
-
|
|
1828
|
+
/* @__PURE__ */ r(_, { size: "small", color: "secondary", children: uo(t.createdAt) }),
|
|
1829
|
+
t.attempt > 0 && /* @__PURE__ */ r(_, { size: "small", color: "secondary", children: s.commentsAttempt({ number: t.attempt }) })
|
|
1818
1830
|
] }),
|
|
1819
1831
|
/* @__PURE__ */ r(_, { size: "medium", children: d }),
|
|
1820
|
-
|
|
1832
|
+
t.attachments && t.attachments.length > 0 && /* @__PURE__ */ r(
|
|
1821
1833
|
wn,
|
|
1822
1834
|
{
|
|
1823
|
-
attachments:
|
|
1824
|
-
...
|
|
1825
|
-
_id:
|
|
1835
|
+
attachments: t.attachments.map((f) => ({
|
|
1836
|
+
...f,
|
|
1837
|
+
_id: f._id ?? f.id,
|
|
1826
1838
|
submissionPreviewUrl: null
|
|
1827
1839
|
})),
|
|
1828
1840
|
size: "small"
|
|
@@ -1833,42 +1845,42 @@ function fo({
|
|
|
1833
1845
|
);
|
|
1834
1846
|
}
|
|
1835
1847
|
function po({
|
|
1836
|
-
submissionId:
|
|
1848
|
+
submissionId: t,
|
|
1837
1849
|
courseId: n,
|
|
1838
|
-
assignmentId:
|
|
1839
|
-
attempt:
|
|
1850
|
+
assignmentId: i,
|
|
1851
|
+
attempt: s,
|
|
1840
1852
|
canPostComment: l,
|
|
1841
1853
|
onCommentPosted: c,
|
|
1842
1854
|
renderHTML: d,
|
|
1843
|
-
executeQuery:
|
|
1855
|
+
executeQuery: p
|
|
1844
1856
|
}) {
|
|
1845
|
-
const m = q(), [
|
|
1846
|
-
submissionId:
|
|
1857
|
+
const m = q(), [f, h] = Ee(""), [C, I] = Ee({}), w = zn(/* @__PURE__ */ new Set()), { data: y, isLoading: V, isError: fe } = lo({
|
|
1858
|
+
submissionId: t,
|
|
1847
1859
|
courseId: n,
|
|
1848
1860
|
pageParams: C.pageParams,
|
|
1849
1861
|
direction: C.direction,
|
|
1850
|
-
executeQuery:
|
|
1851
|
-
}), le = ao({ executeQuery:
|
|
1862
|
+
executeQuery: p
|
|
1863
|
+
}), le = ao({ executeQuery: p }), M = co({ executeQuery: p });
|
|
1852
1864
|
Tt(() => {
|
|
1853
1865
|
if (!(y != null && y.comments) || y.comments.length === 0) return;
|
|
1854
1866
|
const E = y.comments.filter((N) => !N.read && !w.current.has(N._id)).filter((N) => {
|
|
1855
|
-
var
|
|
1856
|
-
return !((
|
|
1867
|
+
var ee;
|
|
1868
|
+
return !((ee = N.author.courseRoles) != null && ee.includes("StudentEnrollment"));
|
|
1857
1869
|
}).map((N) => N._id);
|
|
1858
1870
|
if (E.length > 0) {
|
|
1859
1871
|
for (const N of E)
|
|
1860
1872
|
w.current.add(N);
|
|
1861
|
-
M.mutate({ submissionId:
|
|
1873
|
+
M.mutate({ submissionId: t, assignmentId: i, submissionCommentIds: E });
|
|
1862
1874
|
}
|
|
1863
|
-
}, [y == null ? void 0 : y.comments,
|
|
1864
|
-
const
|
|
1875
|
+
}, [y == null ? void 0 : y.comments, t, i, M]);
|
|
1876
|
+
const ie = y == null ? void 0 : y.comments.some(
|
|
1865
1877
|
(E) => {
|
|
1866
1878
|
var N;
|
|
1867
1879
|
return !((N = E.author.courseRoles) != null && N.includes("StudentEnrollment"));
|
|
1868
1880
|
}
|
|
1869
1881
|
), O = () => {
|
|
1870
|
-
|
|
1871
|
-
{ submissionId:
|
|
1882
|
+
f.trim() && le.mutate(
|
|
1883
|
+
{ submissionId: t, attempt: s, comment: f },
|
|
1872
1884
|
{
|
|
1873
1885
|
onSuccess: () => {
|
|
1874
1886
|
h(""), c == null || c();
|
|
@@ -1882,7 +1894,7 @@ function po({
|
|
|
1882
1894
|
fo,
|
|
1883
1895
|
{
|
|
1884
1896
|
comment: E,
|
|
1885
|
-
isFullWidth: !
|
|
1897
|
+
isFullWidth: !ie,
|
|
1886
1898
|
renderHTML: d
|
|
1887
1899
|
},
|
|
1888
1900
|
E._id
|
|
@@ -1916,7 +1928,7 @@ function po({
|
|
|
1916
1928
|
{
|
|
1917
1929
|
resize: "vertical",
|
|
1918
1930
|
label: /* @__PURE__ */ r(_, { weight: "bold", size: "medium", children: m.commentsPlaceholder() }),
|
|
1919
|
-
value:
|
|
1931
|
+
value: f,
|
|
1920
1932
|
onChange: (E) => h(E.target.value)
|
|
1921
1933
|
}
|
|
1922
1934
|
),
|
|
@@ -1925,66 +1937,66 @@ function po({
|
|
|
1925
1937
|
{
|
|
1926
1938
|
color: "primary",
|
|
1927
1939
|
onClick: O,
|
|
1928
|
-
interaction:
|
|
1940
|
+
interaction: f.trim().length > 0 && !le.isPending ? "enabled" : "disabled",
|
|
1929
1941
|
children: m.commentsPost()
|
|
1930
1942
|
}
|
|
1931
1943
|
)
|
|
1932
1944
|
] })
|
|
1933
1945
|
] });
|
|
1934
1946
|
}
|
|
1935
|
-
function go(
|
|
1936
|
-
return /* @__PURE__ */ r("span", { dangerouslySetInnerHTML: { __html: It(
|
|
1947
|
+
function go(t) {
|
|
1948
|
+
return /* @__PURE__ */ r("span", { dangerouslySetInnerHTML: { __html: It(t) } });
|
|
1937
1949
|
}
|
|
1938
1950
|
function Wo({
|
|
1939
|
-
courseId:
|
|
1951
|
+
courseId: t,
|
|
1940
1952
|
assignmentId: n,
|
|
1941
|
-
userId:
|
|
1942
|
-
feedbackMode:
|
|
1953
|
+
userId: i,
|
|
1954
|
+
feedbackMode: s = !1,
|
|
1943
1955
|
onError: l,
|
|
1944
1956
|
renderHTML: c,
|
|
1945
1957
|
renderPanels: d,
|
|
1946
|
-
executeQuery:
|
|
1958
|
+
executeQuery: p
|
|
1947
1959
|
}) {
|
|
1948
|
-
const m = q(),
|
|
1960
|
+
const m = q(), f = c ?? go, {
|
|
1949
1961
|
data: h,
|
|
1950
1962
|
isLoading: C,
|
|
1951
1963
|
isError: I,
|
|
1952
1964
|
error: w
|
|
1953
|
-
} = Xi({ courseId:
|
|
1954
|
-
|
|
1965
|
+
} = Xi({ courseId: t, assignmentId: n, userId: i, executeQuery: p }), [y, V] = Ee(null), [fe, le] = Ee(
|
|
1966
|
+
s ? "comments" : null
|
|
1955
1967
|
), M = qe(
|
|
1956
1968
|
() => (h == null ? void 0 : h.submissionsConnection.nodes[0]) ?? null,
|
|
1957
1969
|
[h]
|
|
1958
|
-
),
|
|
1970
|
+
), ie = M != null && M.attempt > 0, O = y ?? M, ce = y == null || y.attempt === (M == null ? void 0 : M.attempt), E = ie && ce, N = ((h == null ? void 0 : h.allowedAttempts) ?? 0) !== 1, ee = jn((Ze) => {
|
|
1959
1971
|
V(Ze);
|
|
1960
1972
|
}, []);
|
|
1961
1973
|
if (Tt(() => {
|
|
1962
1974
|
I && w && l && l(w);
|
|
1963
1975
|
}, [I, w, l]), Tt(() => {
|
|
1964
|
-
|
|
1965
|
-
}, [
|
|
1976
|
+
s && ie && le("comments");
|
|
1977
|
+
}, [s, ie]), C)
|
|
1966
1978
|
return /* @__PURE__ */ r(b, { justifyItems: "center", padding: "large", children: /* @__PURE__ */ r(Ye, { renderTitle: m.progressLoading() }) });
|
|
1967
1979
|
if (I || !h)
|
|
1968
1980
|
return /* @__PURE__ */ r(b, { justifyItems: "center", padding: "large", children: /* @__PURE__ */ r(_, { color: "danger", children: m.assignmentLoadError() }) });
|
|
1969
|
-
const Ie = !!h.dueAt && new Date(h.dueAt) < /* @__PURE__ */ new Date() && !
|
|
1981
|
+
const Ie = !!h.dueAt && new Date(h.dueAt) < /* @__PURE__ */ new Date() && !ie, xe = M ? /* @__PURE__ */ r(
|
|
1970
1982
|
po,
|
|
1971
1983
|
{
|
|
1972
1984
|
submissionId: M.id,
|
|
1973
|
-
courseId:
|
|
1985
|
+
courseId: t,
|
|
1974
1986
|
assignmentId: n,
|
|
1975
1987
|
attempt: (O == null ? void 0 : O.attempt) ?? 0,
|
|
1976
1988
|
canPostComment: E,
|
|
1977
|
-
renderHTML:
|
|
1978
|
-
executeQuery:
|
|
1989
|
+
renderHTML: f,
|
|
1990
|
+
executeQuery: p
|
|
1979
1991
|
}
|
|
1980
1992
|
) : null, Xe = N && M ? /* @__PURE__ */ r(
|
|
1981
1993
|
Ji,
|
|
1982
1994
|
{
|
|
1983
1995
|
submissionId: M.id,
|
|
1984
1996
|
selectedAttempt: O == null ? void 0 : O.attempt,
|
|
1985
|
-
onAttemptSelect:
|
|
1997
|
+
onAttemptSelect: ee,
|
|
1986
1998
|
pointsPossible: h.pointsPossible,
|
|
1987
|
-
executeQuery:
|
|
1999
|
+
executeQuery: p
|
|
1988
2000
|
}
|
|
1989
2001
|
) : null, Ke = {
|
|
1990
2002
|
commentsPanel: xe,
|
|
@@ -2009,35 +2021,35 @@ function Wo({
|
|
|
2009
2021
|
),
|
|
2010
2022
|
h.description && /* @__PURE__ */ S(K, { as: "div", children: [
|
|
2011
2023
|
/* @__PURE__ */ r(St, { level: "h3", children: m.assignmentInstructions() }),
|
|
2012
|
-
/* @__PURE__ */ r(K, { as: "div", margin: "small none large none", children:
|
|
2024
|
+
/* @__PURE__ */ r(K, { as: "div", margin: "small none large none", children: f(h.description) })
|
|
2013
2025
|
] }),
|
|
2014
2026
|
/* @__PURE__ */ r(
|
|
2015
2027
|
to,
|
|
2016
2028
|
{
|
|
2017
2029
|
submission: O,
|
|
2018
2030
|
isLastAttempt: ce,
|
|
2019
|
-
renderHTML:
|
|
2031
|
+
renderHTML: f
|
|
2020
2032
|
}
|
|
2021
2033
|
),
|
|
2022
2034
|
d ? d(Ke) : null
|
|
2023
2035
|
] });
|
|
2024
2036
|
}
|
|
2025
2037
|
function qo({
|
|
2026
|
-
existingFiles:
|
|
2038
|
+
existingFiles: t,
|
|
2027
2039
|
onSubmit: n,
|
|
2028
|
-
onSaveDraft:
|
|
2029
|
-
onDiscardDraft:
|
|
2040
|
+
onSaveDraft: i,
|
|
2041
|
+
onDiscardDraft: s,
|
|
2030
2042
|
onSelectFiles: l,
|
|
2031
2043
|
isSubmitting: c = !1
|
|
2032
2044
|
}) {
|
|
2033
|
-
const d = q(), [
|
|
2045
|
+
const d = q(), [p, m] = Ee(t ?? []), f = async () => {
|
|
2034
2046
|
const w = await l();
|
|
2035
2047
|
m((y) => [...y, ...w]);
|
|
2036
2048
|
}, h = (w) => {
|
|
2037
2049
|
m((y) => y.filter((V) => V.id !== w));
|
|
2038
|
-
}, C =
|
|
2050
|
+
}, C = p.map((w) => w.id), I = p.length > 0 && !c;
|
|
2039
2051
|
return /* @__PURE__ */ S(b, { direction: "column", gap: "medium", children: [
|
|
2040
|
-
|
|
2052
|
+
p.length > 0 && /* @__PURE__ */ r(b, { direction: "column", gap: "x-small", children: p.map((w) => /* @__PURE__ */ r(
|
|
2041
2053
|
K,
|
|
2042
2054
|
{
|
|
2043
2055
|
as: "div",
|
|
@@ -2063,7 +2075,7 @@ function qo({
|
|
|
2063
2075
|
},
|
|
2064
2076
|
w.id
|
|
2065
2077
|
)) }),
|
|
2066
|
-
/* @__PURE__ */ r($, { onClick:
|
|
2078
|
+
/* @__PURE__ */ r($, { onClick: f, children: d.submissionFormAddFiles() }),
|
|
2067
2079
|
/* @__PURE__ */ S(b, { gap: "small", children: [
|
|
2068
2080
|
/* @__PURE__ */ r(
|
|
2069
2081
|
$,
|
|
@@ -2074,36 +2086,36 @@ function qo({
|
|
|
2074
2086
|
children: d.submissionFormSubmit()
|
|
2075
2087
|
}
|
|
2076
2088
|
),
|
|
2077
|
-
|
|
2089
|
+
i && /* @__PURE__ */ r(
|
|
2078
2090
|
$,
|
|
2079
2091
|
{
|
|
2080
|
-
onClick: () =>
|
|
2081
|
-
interaction:
|
|
2092
|
+
onClick: () => i(C),
|
|
2093
|
+
interaction: p.length > 0 ? "enabled" : "disabled",
|
|
2082
2094
|
children: d.submissionFormSaveDraft()
|
|
2083
2095
|
}
|
|
2084
2096
|
),
|
|
2085
|
-
|
|
2097
|
+
s && t && t.length > 0 && /* @__PURE__ */ r($, { color: "primary-inverse", onClick: s, children: d.submissionFormDiscardDraft() })
|
|
2086
2098
|
] })
|
|
2087
2099
|
] });
|
|
2088
2100
|
}
|
|
2089
2101
|
function Yo({
|
|
2090
|
-
prevItem:
|
|
2102
|
+
prevItem: t,
|
|
2091
2103
|
nextItem: n,
|
|
2092
|
-
onNavigatePrev:
|
|
2093
|
-
onNavigateNext:
|
|
2104
|
+
onNavigatePrev: i,
|
|
2105
|
+
onNavigateNext: s,
|
|
2094
2106
|
labels: l
|
|
2095
2107
|
}) {
|
|
2096
2108
|
const c = q();
|
|
2097
|
-
if (!
|
|
2109
|
+
if (!t && !n)
|
|
2098
2110
|
return null;
|
|
2099
|
-
const d = (l == null ? void 0 : l.previous) ?? c.navigationPrevious(),
|
|
2111
|
+
const d = (l == null ? void 0 : l.previous) ?? c.navigationPrevious(), p = (l == null ? void 0 : l.next) ?? c.navigationNext();
|
|
2100
2112
|
return /* @__PURE__ */ S(b, { justifyItems: "space-between", padding: "small none", children: [
|
|
2101
|
-
|
|
2113
|
+
t ? /* @__PURE__ */ r(
|
|
2102
2114
|
$,
|
|
2103
2115
|
{
|
|
2104
2116
|
renderIcon: () => /* @__PURE__ */ r(fn, {}),
|
|
2105
|
-
onClick:
|
|
2106
|
-
"aria-label": `${d}: ${
|
|
2117
|
+
onClick: i,
|
|
2118
|
+
"aria-label": `${d}: ${t.title}`,
|
|
2107
2119
|
children: d
|
|
2108
2120
|
}
|
|
2109
2121
|
) : /* @__PURE__ */ r("div", {}),
|
|
@@ -2111,15 +2123,15 @@ function Yo({
|
|
|
2111
2123
|
$,
|
|
2112
2124
|
{
|
|
2113
2125
|
renderIcon: () => /* @__PURE__ */ r(pn, {}),
|
|
2114
|
-
onClick:
|
|
2115
|
-
"aria-label": `${
|
|
2116
|
-
children:
|
|
2126
|
+
onClick: s,
|
|
2127
|
+
"aria-label": `${p}: ${n.title}`,
|
|
2128
|
+
children: p
|
|
2117
2129
|
}
|
|
2118
2130
|
) : /* @__PURE__ */ r("div", {})
|
|
2119
2131
|
] });
|
|
2120
2132
|
}
|
|
2121
|
-
function ho(
|
|
2122
|
-
switch (
|
|
2133
|
+
function ho(t) {
|
|
2134
|
+
switch (t) {
|
|
2123
2135
|
case "Assignment":
|
|
2124
2136
|
return /* @__PURE__ */ r(Kn, {});
|
|
2125
2137
|
case "Quiz":
|
|
@@ -2136,13 +2148,13 @@ function ho(e) {
|
|
|
2136
2148
|
}
|
|
2137
2149
|
}
|
|
2138
2150
|
function bo({
|
|
2139
|
-
item:
|
|
2151
|
+
item: t,
|
|
2140
2152
|
isSelected: n,
|
|
2141
|
-
isLoadingItem:
|
|
2142
|
-
onClick:
|
|
2153
|
+
isLoadingItem: i,
|
|
2154
|
+
onClick: s
|
|
2143
2155
|
}) {
|
|
2144
|
-
var m,
|
|
2145
|
-
const l = q(), c = ((m =
|
|
2156
|
+
var m, f, h, C, I;
|
|
2157
|
+
const l = q(), c = ((m = t.content_details) == null ? void 0 : m.locked_for_user) ?? !1, d = (f = t.content_details) == null ? void 0 : f.lock_explanation, p = /* @__PURE__ */ r(
|
|
2146
2158
|
K,
|
|
2147
2159
|
{
|
|
2148
2160
|
as: "div",
|
|
@@ -2150,60 +2162,60 @@ function bo({
|
|
|
2150
2162
|
background: n ? "secondary" : "primary",
|
|
2151
2163
|
borderRadius: "small",
|
|
2152
2164
|
cursor: c ? "not-allowed" : "pointer",
|
|
2153
|
-
onClick: c ? void 0 :
|
|
2165
|
+
onClick: c ? void 0 : s,
|
|
2154
2166
|
role: c ? void 0 : "button",
|
|
2155
2167
|
tabIndex: c ? void 0 : 0,
|
|
2156
2168
|
onKeyDown: c ? void 0 : (w) => {
|
|
2157
|
-
(w.key === "Enter" || w.key === " ") && (w.preventDefault(),
|
|
2169
|
+
(w.key === "Enter" || w.key === " ") && (w.preventDefault(), s());
|
|
2158
2170
|
},
|
|
2159
2171
|
children: /* @__PURE__ */ S(b, { gap: "small", alignItems: "center", children: [
|
|
2160
|
-
/* @__PURE__ */ r(b.Item, { children: c ? /* @__PURE__ */ r(gn, {}) : ho(
|
|
2172
|
+
/* @__PURE__ */ r(b.Item, { children: c ? /* @__PURE__ */ r(gn, {}) : ho(t.type) }),
|
|
2161
2173
|
/* @__PURE__ */ r(b.Item, { shouldGrow: !0, shouldShrink: !0, children: /* @__PURE__ */ S(b, { direction: "column", gap: "xx-small", children: [
|
|
2162
|
-
/* @__PURE__ */ r(_, { weight: n ? "bold" : "normal", size: "small", children:
|
|
2163
|
-
((h =
|
|
2164
|
-
date: new Date(
|
|
2174
|
+
/* @__PURE__ */ r(_, { weight: n ? "bold" : "normal", size: "small", children: t.title }),
|
|
2175
|
+
((h = t.content_details) == null ? void 0 : h.due_at) && /* @__PURE__ */ r(_, { size: "x-small", color: "secondary", children: l.progressDueDate({
|
|
2176
|
+
date: new Date(t.content_details.due_at).toLocaleDateString()
|
|
2165
2177
|
}) }),
|
|
2166
|
-
((C =
|
|
2178
|
+
((C = t.content_details) == null ? void 0 : C.points_possible) != null && /* @__PURE__ */ r(_, { size: "x-small", color: "secondary", children: l.progressPoints({ points: t.content_details.points_possible }) })
|
|
2167
2179
|
] }) }),
|
|
2168
|
-
|
|
2169
|
-
((I =
|
|
2180
|
+
i && /* @__PURE__ */ r(Ye, { size: "x-small", renderTitle: l.progressLoading() }),
|
|
2181
|
+
((I = t.completion_requirement) == null ? void 0 : I.completed) && /* @__PURE__ */ r(_, { color: "success", size: "small", children: "✓" })
|
|
2170
2182
|
] })
|
|
2171
2183
|
}
|
|
2172
2184
|
);
|
|
2173
|
-
return c && d ? /* @__PURE__ */ r(Jn, { renderTip: d, placement: "end", children:
|
|
2185
|
+
return c && d ? /* @__PURE__ */ r(Jn, { renderTip: d, placement: "end", children: p }) : p;
|
|
2174
2186
|
}
|
|
2175
2187
|
function Vo({
|
|
2176
|
-
module:
|
|
2188
|
+
module: t,
|
|
2177
2189
|
currentItemId: n,
|
|
2178
|
-
onItemClick:
|
|
2179
|
-
onClose:
|
|
2190
|
+
onItemClick: i,
|
|
2191
|
+
onClose: s,
|
|
2180
2192
|
onNavigateModule: l,
|
|
2181
2193
|
hasPrevModule: c = !1,
|
|
2182
2194
|
hasNextModule: d = !1,
|
|
2183
|
-
isLoading:
|
|
2195
|
+
isLoading: p = !1,
|
|
2184
2196
|
title: m
|
|
2185
2197
|
}) {
|
|
2186
2198
|
var C;
|
|
2187
|
-
const
|
|
2199
|
+
const f = q(), h = m ?? f.navigationMyProgress();
|
|
2188
2200
|
return /* @__PURE__ */ S(b, { direction: "column", height: "100%", children: [
|
|
2189
2201
|
/* @__PURE__ */ S(b, { justifyItems: "space-between", alignItems: "center", padding: "small", children: [
|
|
2190
2202
|
/* @__PURE__ */ r(St, { level: "h3", children: h }),
|
|
2191
|
-
/* @__PURE__ */ r(Qn, { screenReaderLabel:
|
|
2203
|
+
/* @__PURE__ */ r(Qn, { screenReaderLabel: f.navigationClosePanel(), onClick: s, size: "small", children: /* @__PURE__ */ r(qn, {}) })
|
|
2192
2204
|
] }),
|
|
2193
2205
|
/* @__PURE__ */ S(K, { as: "div", padding: "none small", overflowY: "auto", children: [
|
|
2194
|
-
|
|
2206
|
+
t.state === "locked" && /* @__PURE__ */ r(b, { padding: "none none small", children: /* @__PURE__ */ S(_t, { color: "warning", children: [
|
|
2195
2207
|
/* @__PURE__ */ r(gn, {}),
|
|
2196
2208
|
" ",
|
|
2197
|
-
|
|
2209
|
+
f.progressLocked()
|
|
2198
2210
|
] }) }),
|
|
2199
|
-
/* @__PURE__ */ r(_, { weight: "bold", size: "medium", children:
|
|
2200
|
-
/* @__PURE__ */ r(b, { direction: "column", gap: "xx-small", padding: "small none", children: (C =
|
|
2211
|
+
/* @__PURE__ */ r(_, { weight: "bold", size: "medium", children: t.name }),
|
|
2212
|
+
/* @__PURE__ */ r(b, { direction: "column", gap: "xx-small", padding: "small none", children: (C = t.items) == null ? void 0 : C.map((I) => /* @__PURE__ */ r(
|
|
2201
2213
|
bo,
|
|
2202
2214
|
{
|
|
2203
2215
|
item: I,
|
|
2204
2216
|
isSelected: I.id === n,
|
|
2205
|
-
isLoadingItem:
|
|
2206
|
-
onClick: () =>
|
|
2217
|
+
isLoadingItem: p && I.id === n,
|
|
2218
|
+
onClick: () => i(I)
|
|
2207
2219
|
},
|
|
2208
2220
|
I.id
|
|
2209
2221
|
)) })
|
|
@@ -2216,8 +2228,8 @@ function Vo({
|
|
|
2216
2228
|
size: "small",
|
|
2217
2229
|
interaction: c ? "enabled" : "disabled",
|
|
2218
2230
|
onClick: () => l("prev"),
|
|
2219
|
-
"aria-label":
|
|
2220
|
-
children:
|
|
2231
|
+
"aria-label": f.navigationPreviousModule(),
|
|
2232
|
+
children: f.navigationPrevious()
|
|
2221
2233
|
}
|
|
2222
2234
|
),
|
|
2223
2235
|
/* @__PURE__ */ r(
|
|
@@ -2227,28 +2239,28 @@ function Vo({
|
|
|
2227
2239
|
size: "small",
|
|
2228
2240
|
interaction: d ? "enabled" : "disabled",
|
|
2229
2241
|
onClick: () => l("next"),
|
|
2230
|
-
"aria-label":
|
|
2231
|
-
children:
|
|
2242
|
+
"aria-label": f.navigationNextModule(),
|
|
2243
|
+
children: f.navigationNext()
|
|
2232
2244
|
}
|
|
2233
2245
|
)
|
|
2234
2246
|
] })
|
|
2235
2247
|
] });
|
|
2236
2248
|
}
|
|
2237
2249
|
function Xo({
|
|
2238
|
-
existingDraft:
|
|
2250
|
+
existingDraft: t,
|
|
2239
2251
|
onSubmit: n,
|
|
2240
|
-
onSaveDraft:
|
|
2241
|
-
onDiscardDraft:
|
|
2252
|
+
onSaveDraft: i,
|
|
2253
|
+
onDiscardDraft: s,
|
|
2242
2254
|
isSubmitting: l = !1
|
|
2243
2255
|
}) {
|
|
2244
|
-
const c = q(), [d,
|
|
2256
|
+
const c = q(), [d, p] = Ee(t ?? ""), m = d.trim().length > 0 && !l;
|
|
2245
2257
|
return /* @__PURE__ */ S(b, { direction: "column", gap: "medium", children: [
|
|
2246
2258
|
/* @__PURE__ */ r(
|
|
2247
2259
|
bn,
|
|
2248
2260
|
{
|
|
2249
2261
|
label: c.submissionTextHeading(),
|
|
2250
2262
|
value: d,
|
|
2251
|
-
onChange: (
|
|
2263
|
+
onChange: (f) => p(f.target.value),
|
|
2252
2264
|
resize: "vertical",
|
|
2253
2265
|
height: "200px"
|
|
2254
2266
|
}
|
|
@@ -2263,37 +2275,37 @@ function Xo({
|
|
|
2263
2275
|
children: c.submissionFormSubmit()
|
|
2264
2276
|
}
|
|
2265
2277
|
),
|
|
2266
|
-
|
|
2278
|
+
i && /* @__PURE__ */ r(
|
|
2267
2279
|
$,
|
|
2268
2280
|
{
|
|
2269
|
-
onClick: () =>
|
|
2281
|
+
onClick: () => i(d),
|
|
2270
2282
|
interaction: d.trim().length > 0 ? "enabled" : "disabled",
|
|
2271
2283
|
children: c.submissionFormSaveDraft()
|
|
2272
2284
|
}
|
|
2273
2285
|
),
|
|
2274
|
-
|
|
2286
|
+
s && t && /* @__PURE__ */ r($, { color: "primary-inverse", onClick: s, children: c.submissionFormDiscardDraft() })
|
|
2275
2287
|
] })
|
|
2276
2288
|
] });
|
|
2277
2289
|
}
|
|
2278
2290
|
function Ko({
|
|
2279
|
-
unreadCount:
|
|
2291
|
+
unreadCount: t
|
|
2280
2292
|
}) {
|
|
2281
2293
|
const n = q();
|
|
2282
|
-
if (
|
|
2294
|
+
if (t === 0)
|
|
2283
2295
|
return null;
|
|
2284
|
-
const
|
|
2285
|
-
return /* @__PURE__ */ r(Tn, { count:
|
|
2296
|
+
const i = t === 1 ? n.commentsUnreadSingle() : n.commentsUnread({ count: t });
|
|
2297
|
+
return /* @__PURE__ */ r(Tn, { count: t, standalone: !0, children: /* @__PURE__ */ r(Et, { children: i }) });
|
|
2286
2298
|
}
|
|
2287
2299
|
function Zo({
|
|
2288
|
-
courseId:
|
|
2300
|
+
courseId: t,
|
|
2289
2301
|
moduleItemId: n,
|
|
2290
|
-
fetchSequence:
|
|
2291
|
-
enabled:
|
|
2302
|
+
fetchSequence: i,
|
|
2303
|
+
enabled: s = !0
|
|
2292
2304
|
}) {
|
|
2293
2305
|
return Ve({
|
|
2294
|
-
queryKey: ["assignment-review", "module-item-sequence",
|
|
2295
|
-
queryFn: () =>
|
|
2296
|
-
enabled:
|
|
2306
|
+
queryKey: ["assignment-review", "module-item-sequence", t, n],
|
|
2307
|
+
queryFn: () => i(t, n),
|
|
2308
|
+
enabled: s && !!n
|
|
2297
2309
|
});
|
|
2298
2310
|
}
|
|
2299
2311
|
export {
|