@instructure/platform-assignment-review 0.4.16 → 0.4.18
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 +818 -719
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { createContext as
|
|
1
|
+
import { jsx as a, jsxs as S } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as Hn, useContext as $n, useMemo as Ve, useState as Ee, useRef as Bn, useEffect as yt, useCallback as Gn } from "react";
|
|
3
3
|
import { Flex as b } from "@instructure/ui-flex";
|
|
4
|
-
import { Heading as
|
|
4
|
+
import { Heading as _t } from "@instructure/ui-heading";
|
|
5
5
|
import { Spinner as Ye } from "@instructure/ui-spinner";
|
|
6
6
|
import { Text as _ } from "@instructure/ui-text";
|
|
7
|
-
import { View as
|
|
8
|
-
import { useQuery as
|
|
9
|
-
import
|
|
10
|
-
import { z as
|
|
11
|
-
import { Pill as
|
|
12
|
-
import { IconDownloadLine as
|
|
13
|
-
import { ScreenReaderContent as
|
|
14
|
-
import { Link as
|
|
15
|
-
import { TruncateText as
|
|
16
|
-
import { Button as $, IconButton as
|
|
17
|
-
import { TextArea as
|
|
18
|
-
import { Badge as
|
|
19
|
-
import { Tooltip as
|
|
20
|
-
const
|
|
21
|
-
function
|
|
7
|
+
import { View as Z } from "@instructure/ui-view";
|
|
8
|
+
import { useQuery as Xe, useQueryClient as gn, useMutation as hn } from "@tanstack/react-query";
|
|
9
|
+
import se from "graphql-tag";
|
|
10
|
+
import { z as r } from "zod";
|
|
11
|
+
import { Pill as Et } from "@instructure/ui-pill";
|
|
12
|
+
import { IconDownloadLine as Wn, IconCheckMarkSolid as qn, IconArrowStartLine as Vn, IconArrowEndLine as Yn, IconTrashLine as Xn, IconArrowOpenStartLine as bn, IconArrowOpenEndLine as Tn, IconXLine as Kn, IconLockLine as yn, IconDocumentLine as Zt, IconLinkLine as Zn, IconDiscussionLine as Qn, IconQuizLine as Jn, IconAssignmentLine as ei } from "@instructure/ui-icons";
|
|
13
|
+
import { ScreenReaderContent as It } from "@instructure/ui-a11y-content";
|
|
14
|
+
import { Link as ti } from "@instructure/ui-link";
|
|
15
|
+
import { TruncateText as An } from "@instructure/ui-truncate-text";
|
|
16
|
+
import { Button as $, IconButton as ni } from "@instructure/ui-buttons";
|
|
17
|
+
import { TextArea as Sn } from "@instructure/ui-text-area";
|
|
18
|
+
import { Badge as _n } from "@instructure/ui-badge";
|
|
19
|
+
import { Tooltip as ii } from "@instructure/ui-tooltip";
|
|
20
|
+
const En = Hn(void 0);
|
|
21
|
+
function Wr({
|
|
22
22
|
translations: t,
|
|
23
23
|
children: n
|
|
24
24
|
}) {
|
|
25
|
-
return /* @__PURE__ */
|
|
25
|
+
return /* @__PURE__ */ a(En.Provider, { value: t, children: n });
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
const t =
|
|
27
|
+
function V() {
|
|
28
|
+
const t = $n(En);
|
|
29
29
|
if (!t)
|
|
30
30
|
throw new Error("useTranslations must be used within TranslationsProvider");
|
|
31
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
|
|
34
|
+
function Qt(t, n) {
|
|
35
35
|
(n == null || n > t.length) && (n = t.length);
|
|
36
|
-
for (var i = 0,
|
|
37
|
-
return
|
|
36
|
+
for (var i = 0, o = Array(n); i < n; i++) o[i] = t[i];
|
|
37
|
+
return o;
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function ri(t) {
|
|
40
40
|
if (Array.isArray(t)) return t;
|
|
41
41
|
}
|
|
42
|
-
function
|
|
42
|
+
function oi(t, n) {
|
|
43
43
|
var i = t == null ? null : typeof Symbol < "u" && t[Symbol.iterator] || t["@@iterator"];
|
|
44
44
|
if (i != null) {
|
|
45
|
-
var
|
|
45
|
+
var o, l, c, d, p = [], m = !0, f = !1;
|
|
46
46
|
try {
|
|
47
|
-
if (c = (i = i.call(t)).next, n !== 0) for (; !(m = (
|
|
47
|
+
if (c = (i = i.call(t)).next, n !== 0) for (; !(m = (o = c.call(i)).done) && (p.push(o.value), p.length !== n); m = !0) ;
|
|
48
48
|
} catch (h) {
|
|
49
49
|
f = !0, l = h;
|
|
50
50
|
} finally {
|
|
@@ -57,157 +57,157 @@ function ti(t, n) {
|
|
|
57
57
|
return p;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
function
|
|
60
|
+
function ai() {
|
|
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
|
|
65
|
-
return
|
|
64
|
+
function si(t, n) {
|
|
65
|
+
return ri(t) || oi(t, n) || li(t, n) || ai();
|
|
66
66
|
}
|
|
67
|
-
function
|
|
67
|
+
function li(t, n) {
|
|
68
68
|
if (t) {
|
|
69
|
-
if (typeof t == "string") return
|
|
69
|
+
if (typeof t == "string") return Qt(t, n);
|
|
70
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) ?
|
|
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) ? Qt(t, n) : void 0;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
const
|
|
75
|
-
let B = Object.freeze, Y = Object.seal, _e = Object.create,
|
|
74
|
+
const In = Object.entries, Jt = Object.setPrototypeOf, ci = Object.isFrozen, mi = Object.getPrototypeOf, ui = Object.getOwnPropertyDescriptor;
|
|
75
|
+
let B = Object.freeze, Y = Object.seal, _e = Object.create, wn = typeof Reflect < "u" && Reflect, At = wn.apply, St = wn.construct;
|
|
76
76
|
B || (B = function(n) {
|
|
77
77
|
return n;
|
|
78
78
|
});
|
|
79
79
|
Y || (Y = function(n) {
|
|
80
80
|
return n;
|
|
81
81
|
});
|
|
82
|
-
|
|
83
|
-
for (var
|
|
82
|
+
At || (At = function(n, i) {
|
|
83
|
+
for (var o = arguments.length, l = new Array(o > 2 ? o - 2 : 0), c = 2; c < o; c++)
|
|
84
84
|
l[c - 2] = arguments[c];
|
|
85
85
|
return n.apply(i, l);
|
|
86
86
|
});
|
|
87
|
-
|
|
88
|
-
for (var i = arguments.length,
|
|
89
|
-
|
|
90
|
-
return new n(...
|
|
87
|
+
St || (St = function(n) {
|
|
88
|
+
for (var i = arguments.length, o = new Array(i > 1 ? i - 1 : 0), l = 1; l < i; l++)
|
|
89
|
+
o[l - 1] = arguments[l];
|
|
90
|
+
return new n(...o);
|
|
91
91
|
});
|
|
92
|
-
const Te = x(Array.prototype.forEach),
|
|
92
|
+
const Te = x(Array.prototype.forEach), di = x(Array.prototype.lastIndexOf), en = x(Array.prototype.pop), ye = x(Array.prototype.push), fi = x(Array.prototype.splice), H = Array.isArray, ve = x(String.prototype.toLowerCase), ft = x(String.prototype.toString), tn = x(String.prototype.match), Ae = x(String.prototype.replace), nn = x(String.prototype.indexOf), pi = x(String.prototype.trim), gi = x(Number.prototype.toString), hi = x(Boolean.prototype.toString), rn = typeof BigInt > "u" ? null : x(BigInt.prototype.toString), on = typeof Symbol > "u" ? null : x(Symbol.prototype.toString), D = x(Object.prototype.hasOwnProperty), Ne = x(Object.prototype.toString), U = x(RegExp.prototype.test), Ge = bi(TypeError);
|
|
93
93
|
function x(t) {
|
|
94
94
|
return function(n) {
|
|
95
95
|
n instanceof RegExp && (n.lastIndex = 0);
|
|
96
|
-
for (var i = arguments.length,
|
|
97
|
-
|
|
98
|
-
return
|
|
96
|
+
for (var i = arguments.length, o = new Array(i > 1 ? i - 1 : 0), l = 1; l < i; l++)
|
|
97
|
+
o[l - 1] = arguments[l];
|
|
98
|
+
return At(t, n, o);
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
function
|
|
101
|
+
function bi(t) {
|
|
102
102
|
return function() {
|
|
103
|
-
for (var n = arguments.length, i = new Array(n),
|
|
104
|
-
i[
|
|
105
|
-
return
|
|
103
|
+
for (var n = arguments.length, i = new Array(n), o = 0; o < n; o++)
|
|
104
|
+
i[o] = arguments[o];
|
|
105
|
+
return St(t, i);
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
108
|
function T(t, n) {
|
|
109
|
-
let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] :
|
|
110
|
-
if (
|
|
109
|
+
let i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ve;
|
|
110
|
+
if (Jt && Jt(t, null), !H(n))
|
|
111
111
|
return t;
|
|
112
|
-
let
|
|
113
|
-
for (;
|
|
114
|
-
let l = n[
|
|
112
|
+
let o = n.length;
|
|
113
|
+
for (; o--; ) {
|
|
114
|
+
let l = n[o];
|
|
115
115
|
if (typeof l == "string") {
|
|
116
116
|
const c = i(l);
|
|
117
|
-
c !== l && (
|
|
117
|
+
c !== l && (ci(n) || (n[o] = c), l = c);
|
|
118
118
|
}
|
|
119
119
|
t[l] = !0;
|
|
120
120
|
}
|
|
121
121
|
return t;
|
|
122
122
|
}
|
|
123
|
-
function
|
|
123
|
+
function Ti(t) {
|
|
124
124
|
for (let n = 0; n < t.length; n++)
|
|
125
125
|
D(t, n) || (t[n] = null);
|
|
126
126
|
return t;
|
|
127
127
|
}
|
|
128
128
|
function W(t) {
|
|
129
129
|
const n = _e(null);
|
|
130
|
-
for (const
|
|
131
|
-
var i =
|
|
130
|
+
for (const o of In(t)) {
|
|
131
|
+
var i = si(o, 2);
|
|
132
132
|
const l = i[0], c = i[1];
|
|
133
|
-
D(t, l) && (H(c) ? n[l] =
|
|
133
|
+
D(t, l) && (H(c) ? n[l] = Ti(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
|
|
137
|
+
function yi(t) {
|
|
138
138
|
switch (typeof t) {
|
|
139
139
|
case "string":
|
|
140
140
|
return t;
|
|
141
141
|
case "number":
|
|
142
|
-
return
|
|
142
|
+
return gi(t);
|
|
143
143
|
case "boolean":
|
|
144
|
-
return
|
|
144
|
+
return hi(t);
|
|
145
145
|
case "bigint":
|
|
146
|
-
return
|
|
146
|
+
return rn ? rn(t) : "0";
|
|
147
147
|
case "symbol":
|
|
148
148
|
return on ? on(t) : "Symbol()";
|
|
149
149
|
case "undefined":
|
|
150
|
-
return
|
|
150
|
+
return Ne(t);
|
|
151
151
|
case "function":
|
|
152
152
|
case "object": {
|
|
153
153
|
if (t === null)
|
|
154
|
-
return
|
|
154
|
+
return Ne(t);
|
|
155
155
|
const n = t, i = de(n, "toString");
|
|
156
156
|
if (typeof i == "function") {
|
|
157
|
-
const
|
|
158
|
-
return typeof
|
|
157
|
+
const o = i(n);
|
|
158
|
+
return typeof o == "string" ? o : Ne(o);
|
|
159
159
|
}
|
|
160
|
-
return
|
|
160
|
+
return Ne(t);
|
|
161
161
|
}
|
|
162
162
|
default:
|
|
163
|
-
return
|
|
163
|
+
return Ne(t);
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
function de(t, n) {
|
|
167
167
|
for (; t !== null; ) {
|
|
168
|
-
const
|
|
169
|
-
if (
|
|
170
|
-
if (
|
|
171
|
-
return x(
|
|
172
|
-
if (typeof
|
|
173
|
-
return x(
|
|
168
|
+
const o = ui(t, n);
|
|
169
|
+
if (o) {
|
|
170
|
+
if (o.get)
|
|
171
|
+
return x(o.get);
|
|
172
|
+
if (typeof o.value == "function")
|
|
173
|
+
return x(o.value);
|
|
174
174
|
}
|
|
175
|
-
t =
|
|
175
|
+
t = mi(t);
|
|
176
176
|
}
|
|
177
177
|
function i() {
|
|
178
178
|
return null;
|
|
179
179
|
}
|
|
180
180
|
return i;
|
|
181
181
|
}
|
|
182
|
-
function
|
|
182
|
+
function Ai(t) {
|
|
183
183
|
try {
|
|
184
|
-
return
|
|
184
|
+
return U(t, ""), !0;
|
|
185
185
|
} catch {
|
|
186
186
|
return !1;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
-
const
|
|
189
|
+
const an = B(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "search", "section", "select", "shadow", "slot", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]), pt = B(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "enterkeyhint", "exportparts", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "inputmode", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "part", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]), gt = B(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]), Si = B(["animate", "color-profile", "cursor", "discard", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]), ht = B(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover", "mprescripts"]), _i = B(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]), sn = B(["#text"]), ln = B(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "command", "commandfor", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "exportparts", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inert", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "part", "pattern", "placeholder", "playsinline", "popover", "popovertarget", "popovertargetaction", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "slot", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "wrap", "xmlns"]), bt = B(["accent-height", "accumulate", "additive", "alignment-baseline", "amplitude", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "exponent", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "intercept", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "mask-type", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "slope", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "tablevalues", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]), cn = B(["accent", "accentunder", "align", "bevelled", "close", "columnalign", "columnlines", "columnspacing", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lquote", "lspace", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]), We = B(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]), Ei = Y(/{{[\w\W]*|^[\w\W]*}}/g), Ii = Y(/<%[\w\W]*|^[\w\W]*%>/g), wi = Y(/\${[\w\W]*/g), Ci = Y(/^data-[\-\w.\u00B7-\uFFFF]+$/), Di = Y(/^aria-[\-\w]+$/), mn = Y(
|
|
190
190
|
/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
|
|
191
191
|
// eslint-disable-line no-useless-escape
|
|
192
|
-
),
|
|
192
|
+
), Ri = Y(/^(?:\w+script|data):/i), Ni = Y(
|
|
193
193
|
/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
|
|
194
194
|
// eslint-disable-line no-control-regex
|
|
195
|
-
),
|
|
195
|
+
), vi = Y(/^html$/i), Oi = Y(/^[a-z][.\w]*(-[.\w]+)+$/i), Se = {
|
|
196
196
|
element: 1,
|
|
197
197
|
text: 3,
|
|
198
198
|
// Deprecated
|
|
199
199
|
progressingInstruction: 7,
|
|
200
200
|
comment: 8,
|
|
201
201
|
document: 9
|
|
202
|
-
},
|
|
202
|
+
}, Li = function() {
|
|
203
203
|
return typeof window > "u" ? null : window;
|
|
204
|
-
},
|
|
204
|
+
}, xi = function(n, i) {
|
|
205
205
|
if (typeof n != "object" || typeof n.createPolicy != "function")
|
|
206
206
|
return null;
|
|
207
|
-
let
|
|
207
|
+
let o = null;
|
|
208
208
|
const l = "data-tt-policy-suffix";
|
|
209
|
-
i && i.hasAttribute(l) && (
|
|
210
|
-
const c = "dompurify" + (
|
|
209
|
+
i && i.hasAttribute(l) && (o = i.getAttribute(l));
|
|
210
|
+
const c = "dompurify" + (o ? "#" + o : "");
|
|
211
211
|
try {
|
|
212
212
|
return n.createPolicy(c, {
|
|
213
213
|
createHTML(d) {
|
|
@@ -220,7 +220,7 @@ const rn = B(["a", "abbr", "acronym", "address", "area", "article", "aside", "au
|
|
|
220
220
|
} catch {
|
|
221
221
|
return console.warn("TrustedTypes policy " + c + " could not be created."), null;
|
|
222
222
|
}
|
|
223
|
-
},
|
|
223
|
+
}, un = function() {
|
|
224
224
|
return {
|
|
225
225
|
afterSanitizeAttributes: [],
|
|
226
226
|
afterSanitizeElements: [],
|
|
@@ -233,26 +233,26 @@ const rn = B(["a", "abbr", "acronym", "address", "area", "article", "aside", "au
|
|
|
233
233
|
uponSanitizeShadowNode: []
|
|
234
234
|
};
|
|
235
235
|
};
|
|
236
|
-
function
|
|
237
|
-
let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] :
|
|
238
|
-
const n = (g) =>
|
|
236
|
+
function Cn() {
|
|
237
|
+
let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Li();
|
|
238
|
+
const n = (g) => Cn(g);
|
|
239
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
241
|
let i = t.document;
|
|
242
|
-
const
|
|
242
|
+
const o = i, l = o.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, X = m.prototype, fe = de(X, "cloneNode"), le = de(X, "remove"), M = de(X, "nextSibling"), ie = de(X, "childNodes"), N = de(X, "parentNode"), ce = p && p.prototype ? de(p.prototype, "nodeType") : null;
|
|
243
243
|
if (typeof d == "function") {
|
|
244
244
|
const g = i.createElement("template");
|
|
245
245
|
g.content && g.content.ownerDocument && (i = g.content.ownerDocument);
|
|
246
246
|
}
|
|
247
|
-
let E,
|
|
248
|
-
const ee = i, Ie = ee.implementation, xe = ee.createNodeIterator,
|
|
249
|
-
let j =
|
|
250
|
-
n.isSupported = typeof
|
|
251
|
-
const ke =
|
|
252
|
-
let
|
|
253
|
-
const
|
|
254
|
-
let
|
|
255
|
-
const
|
|
247
|
+
let E, v = "";
|
|
248
|
+
const ee = i, Ie = ee.implementation, xe = ee.createNodeIterator, Ke = ee.createDocumentFragment, Ze = ee.getElementsByTagName, Qe = o.importNode;
|
|
249
|
+
let j = un();
|
|
250
|
+
n.isSupported = typeof In == "function" && typeof N == "function" && Ie && Ie.createHTMLDocument !== void 0;
|
|
251
|
+
const ke = Ei, Me = Ii, Pe = wi, vn = Ci, On = Di, Ln = Ri, Ct = Ni, xn = Oi;
|
|
252
|
+
let Dt = mn, P = null;
|
|
253
|
+
const Rt = T({}, [...an, ...pt, ...gt, ...ht, ...sn]);
|
|
254
|
+
let z = null;
|
|
255
|
+
const Nt = T({}, [...ln, ...bt, ...cn, ...We]);
|
|
256
256
|
let R = Object.seal(_e(null, {
|
|
257
257
|
tagNameCheck: {
|
|
258
258
|
writable: !0,
|
|
@@ -273,7 +273,7 @@ function _n() {
|
|
|
273
273
|
value: !1
|
|
274
274
|
}
|
|
275
275
|
})), we = null, Fe = null;
|
|
276
|
-
const
|
|
276
|
+
const re = Object.seal(_e(null, {
|
|
277
277
|
tagCheck: {
|
|
278
278
|
writable: !0,
|
|
279
279
|
configurable: !1,
|
|
@@ -287,104 +287,104 @@ function _n() {
|
|
|
287
287
|
value: null
|
|
288
288
|
}
|
|
289
289
|
}));
|
|
290
|
-
let
|
|
291
|
-
const
|
|
292
|
-
let
|
|
293
|
-
const
|
|
294
|
-
let
|
|
295
|
-
const
|
|
296
|
-
let
|
|
297
|
-
const
|
|
298
|
-
let he =
|
|
299
|
-
const
|
|
300
|
-
let st = T({}, ["mi", "mo", "mn", "ms", "mtext"]),
|
|
301
|
-
const
|
|
290
|
+
let vt = !0, Je = !0, Ot = !1, Lt = !0, oe = !1, Ce = !0, me = !1, et = !1, tt = !1, pe = !1, ze = !1, Ue = !1, xt = !0, kt = !1;
|
|
291
|
+
const Mt = "user-content-";
|
|
292
|
+
let nt = !0, De = !1, ge = {}, Q = null;
|
|
293
|
+
const it = 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"]);
|
|
294
|
+
let Pt = null;
|
|
295
|
+
const Ft = T({}, ["audio", "video", "img", "source", "image", "track"]);
|
|
296
|
+
let rt = null;
|
|
297
|
+
const zt = T({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]), je = "http://www.w3.org/1998/Math/MathML", He = "http://www.w3.org/2000/svg", J = "http://www.w3.org/1999/xhtml";
|
|
298
|
+
let he = J, ot = !1, at = null;
|
|
299
|
+
const kn = T({}, [je, He, J], ft);
|
|
300
|
+
let st = T({}, ["mi", "mo", "mn", "ms", "mtext"]), lt = T({}, ["annotation-xml"]);
|
|
301
|
+
const Mn = T({}, ["title", "style", "font", "a", "script"]);
|
|
302
302
|
let Re = null;
|
|
303
|
-
const
|
|
303
|
+
const Pn = ["application/xhtml+xml", "text/html"], Fn = "text/html";
|
|
304
304
|
let k = null, be = null;
|
|
305
|
-
const
|
|
305
|
+
const zn = i.createElement("form"), Ut = function(e) {
|
|
306
306
|
return e instanceof RegExp || e instanceof Function;
|
|
307
|
-
},
|
|
307
|
+
}, ct = function() {
|
|
308
308
|
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
309
309
|
if (be && be === e)
|
|
310
310
|
return;
|
|
311
311
|
(!e || typeof e != "object") && (e = {}), e = W(e), Re = // eslint-disable-next-line unicorn/prefer-includes
|
|
312
|
-
|
|
313
|
-
const
|
|
314
|
-
if (R = _e(null), D(
|
|
312
|
+
Pn.indexOf(e.PARSER_MEDIA_TYPE) === -1 ? Fn : e.PARSER_MEDIA_TYPE, k = Re === "application/xhtml+xml" ? ft : ve, P = D(e, "ALLOWED_TAGS") && H(e.ALLOWED_TAGS) ? T({}, e.ALLOWED_TAGS, k) : Rt, z = D(e, "ALLOWED_ATTR") && H(e.ALLOWED_ATTR) ? T({}, e.ALLOWED_ATTR, k) : Nt, at = D(e, "ALLOWED_NAMESPACES") && H(e.ALLOWED_NAMESPACES) ? T({}, e.ALLOWED_NAMESPACES, ft) : kn, rt = D(e, "ADD_URI_SAFE_ATTR") && H(e.ADD_URI_SAFE_ATTR) ? T(W(zt), e.ADD_URI_SAFE_ATTR, k) : zt, Pt = D(e, "ADD_DATA_URI_TAGS") && H(e.ADD_DATA_URI_TAGS) ? T(W(Ft), e.ADD_DATA_URI_TAGS, k) : Ft, Q = D(e, "FORBID_CONTENTS") && H(e.FORBID_CONTENTS) ? T({}, e.FORBID_CONTENTS, k) : it, 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, vt = e.ALLOW_ARIA_ATTR !== !1, Je = e.ALLOW_DATA_ATTR !== !1, Ot = e.ALLOW_UNKNOWN_PROTOCOLS || !1, Lt = e.ALLOW_SELF_CLOSE_IN_ATTR !== !1, oe = e.SAFE_FOR_TEMPLATES || !1, Ce = e.SAFE_FOR_XML !== !1, me = e.WHOLE_DOCUMENT || !1, pe = e.RETURN_DOM || !1, ze = e.RETURN_DOM_FRAGMENT || !1, Ue = e.RETURN_TRUSTED_TYPE || !1, tt = e.FORCE_BODY || !1, xt = e.SANITIZE_DOM !== !1, kt = e.SANITIZE_NAMED_PROPS || !1, nt = e.KEEP_CONTENT !== !1, De = e.IN_PLACE || !1, Dt = Ai(e.ALLOWED_URI_REGEXP) ? e.ALLOWED_URI_REGEXP : mn, he = typeof e.NAMESPACE == "string" ? e.NAMESPACE : J, 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"]), lt = 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 s = 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(s, "tagNameCheck") && Ut(s.tagNameCheck) && (R.tagNameCheck = s.tagNameCheck), D(s, "attributeNameCheck") && Ut(s.attributeNameCheck) && (R.attributeNameCheck = s.attributeNameCheck), D(s, "allowCustomizedBuiltInElements") && typeof s.allowCustomizedBuiltInElements == "boolean" && (R.allowCustomizedBuiltInElements = s.allowCustomizedBuiltInElements), oe && (Je = !1), ze && (pe = !0), ge && (P = T({}, sn), z = _e(null), ge.html === !0 && (T(P, an), T(z, ln)), ge.svg === !0 && (T(P, pt), T(z, bt), T(z, We)), ge.svgFilters === !0 && (T(P, gt), T(z, bt), T(z, We)), ge.mathMl === !0 && (T(P, ht), T(z, cn), T(z, We))), re.tagCheck = null, re.attributeCheck = null, D(e, "ADD_TAGS") && (typeof e.ADD_TAGS == "function" ? re.tagCheck = e.ADD_TAGS : H(e.ADD_TAGS) && (P === Rt && (P = W(P)), T(P, e.ADD_TAGS, k))), D(e, "ADD_ATTR") && (typeof e.ADD_ATTR == "function" ? re.attributeCheck = e.ADD_ATTR : H(e.ADD_ATTR) && (z === Nt && (z = W(z)), T(z, e.ADD_ATTR, k))), D(e, "ADD_URI_SAFE_ATTR") && H(e.ADD_URI_SAFE_ATTR) && T(rt, e.ADD_URI_SAFE_ATTR, k), D(e, "FORBID_CONTENTS") && H(e.FORBID_CONTENTS) && (Q === it && (Q = W(Q)), T(Q, e.FORBID_CONTENTS, k)), D(e, "ADD_FORBID_CONTENTS") && H(e.ADD_FORBID_CONTENTS) && (Q === it && (Q = W(Q)), T(Q, e.ADD_FORBID_CONTENTS, k)), nt && (P["#text"] = !0), me && T(P, ["html", "head", "body"]), P.table && (T(P, ["tbody"]), delete we.tbody), e.TRUSTED_TYPES_POLICY) {
|
|
315
315
|
if (typeof e.TRUSTED_TYPES_POLICY.createHTML != "function")
|
|
316
316
|
throw Ge('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
|
|
317
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 = e.TRUSTED_TYPES_POLICY,
|
|
319
|
+
E = e.TRUSTED_TYPES_POLICY, v = E.createHTML("");
|
|
320
320
|
} else
|
|
321
|
-
E === void 0 && (E =
|
|
321
|
+
E === void 0 && (E = xi(y, l)), E !== null && typeof v == "string" && (v = E.createHTML(""));
|
|
322
322
|
B && B(e), be = e;
|
|
323
|
-
},
|
|
324
|
-
let
|
|
325
|
-
(!
|
|
323
|
+
}, jt = T({}, [...pt, ...gt, ...Si]), Ht = T({}, [...ht, ..._i]), Un = function(e) {
|
|
324
|
+
let s = N(e);
|
|
325
|
+
(!s || !s.tagName) && (s = {
|
|
326
326
|
namespaceURI: he,
|
|
327
327
|
tagName: "template"
|
|
328
328
|
});
|
|
329
|
-
const u =
|
|
330
|
-
return
|
|
331
|
-
},
|
|
329
|
+
const u = ve(e.tagName), A = ve(s.tagName);
|
|
330
|
+
return at[e.namespaceURI] ? e.namespaceURI === He ? s.namespaceURI === J ? u === "svg" : s.namespaceURI === je ? u === "svg" && (A === "annotation-xml" || st[A]) : !!jt[u] : e.namespaceURI === je ? s.namespaceURI === J ? u === "math" : s.namespaceURI === He ? u === "math" && lt[A] : !!Ht[u] : e.namespaceURI === J ? s.namespaceURI === He && !lt[A] || s.namespaceURI === je && !st[A] ? !1 : !Ht[u] && (Mn[u] || !jt[u]) : !!(Re === "application/xhtml+xml" && at[e.namespaceURI]) : !1;
|
|
331
|
+
}, K = function(e) {
|
|
332
332
|
ye(n.removed, {
|
|
333
333
|
element: e
|
|
334
334
|
});
|
|
335
335
|
try {
|
|
336
|
-
|
|
336
|
+
N(e).removeChild(e);
|
|
337
337
|
} catch {
|
|
338
338
|
le(e);
|
|
339
339
|
}
|
|
340
|
-
}, ue = function(e,
|
|
340
|
+
}, ue = function(e, s) {
|
|
341
341
|
try {
|
|
342
342
|
ye(n.removed, {
|
|
343
|
-
attribute:
|
|
344
|
-
from:
|
|
343
|
+
attribute: s.getAttributeNode(e),
|
|
344
|
+
from: s
|
|
345
345
|
});
|
|
346
346
|
} catch {
|
|
347
347
|
ye(n.removed, {
|
|
348
348
|
attribute: null,
|
|
349
|
-
from:
|
|
349
|
+
from: s
|
|
350
350
|
});
|
|
351
351
|
}
|
|
352
|
-
if (
|
|
353
|
-
if (pe ||
|
|
352
|
+
if (s.removeAttribute(e), e === "is")
|
|
353
|
+
if (pe || ze)
|
|
354
354
|
try {
|
|
355
|
-
|
|
355
|
+
K(s);
|
|
356
356
|
} catch {
|
|
357
357
|
}
|
|
358
358
|
else
|
|
359
359
|
try {
|
|
360
|
-
|
|
360
|
+
s.setAttribute(e, "");
|
|
361
361
|
} catch {
|
|
362
362
|
}
|
|
363
|
-
},
|
|
364
|
-
let
|
|
365
|
-
if (
|
|
363
|
+
}, $t = function(e) {
|
|
364
|
+
let s = null, u = null;
|
|
365
|
+
if (tt)
|
|
366
366
|
e = "<remove></remove>" + e;
|
|
367
367
|
else {
|
|
368
|
-
const L =
|
|
368
|
+
const L = tn(e, /^[\r\n\t ]+/);
|
|
369
369
|
u = L && L[0];
|
|
370
370
|
}
|
|
371
|
-
Re === "application/xhtml+xml" && he ===
|
|
371
|
+
Re === "application/xhtml+xml" && he === J && (e = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + e + "</body></html>");
|
|
372
372
|
const A = E ? E.createHTML(e) : e;
|
|
373
|
-
if (he ===
|
|
373
|
+
if (he === J)
|
|
374
374
|
try {
|
|
375
|
-
|
|
375
|
+
s = new w().parseFromString(A, Re);
|
|
376
376
|
} catch {
|
|
377
377
|
}
|
|
378
|
-
if (!
|
|
379
|
-
|
|
378
|
+
if (!s || !s.documentElement) {
|
|
379
|
+
s = Ie.createDocument(he, "template", null);
|
|
380
380
|
try {
|
|
381
|
-
|
|
381
|
+
s.documentElement.innerHTML = ot ? v : A;
|
|
382
382
|
} catch {
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
|
-
const
|
|
386
|
-
return e && u &&
|
|
387
|
-
},
|
|
385
|
+
const O = s.body || s.documentElement;
|
|
386
|
+
return e && u && O.insertBefore(i.createTextNode(u), O.childNodes[0] || null), he === J ? Ze.call(s, me ? "html" : "body")[0] : me ? s.documentElement : O;
|
|
387
|
+
}, Bt = function(e) {
|
|
388
388
|
return xe.call(
|
|
389
389
|
e.ownerDocument || e,
|
|
390
390
|
e,
|
|
@@ -392,23 +392,23 @@ function _n() {
|
|
|
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
|
-
},
|
|
395
|
+
}, Gt = function(e) {
|
|
396
396
|
e.normalize();
|
|
397
|
-
const
|
|
397
|
+
const s = xe.call(
|
|
398
398
|
e.ownerDocument || e,
|
|
399
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 = s.nextNode();
|
|
405
405
|
for (; u; ) {
|
|
406
406
|
let A = u.data;
|
|
407
|
-
Te([ke, Me, Pe], (
|
|
408
|
-
A = Ae(A,
|
|
409
|
-
}), u.data = A, u =
|
|
407
|
+
Te([ke, Me, Pe], (O) => {
|
|
408
|
+
A = Ae(A, O, " ");
|
|
409
|
+
}), u.data = A, u = s.nextNode();
|
|
410
410
|
}
|
|
411
|
-
},
|
|
411
|
+
}, mt = function(e) {
|
|
412
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
413
|
}, $e = function(e) {
|
|
414
414
|
if (!ce || typeof e != "object" || e === null)
|
|
@@ -419,60 +419,60 @@ function _n() {
|
|
|
419
419
|
return !1;
|
|
420
420
|
}
|
|
421
421
|
};
|
|
422
|
-
function te(g, e,
|
|
422
|
+
function te(g, e, s) {
|
|
423
423
|
Te(g, (u) => {
|
|
424
|
-
u.call(n, e,
|
|
424
|
+
u.call(n, e, s, be);
|
|
425
425
|
});
|
|
426
426
|
}
|
|
427
|
-
const
|
|
428
|
-
let
|
|
429
|
-
if (te(j.beforeSanitizeElements, e, null),
|
|
430
|
-
return
|
|
427
|
+
const Wt = function(e) {
|
|
428
|
+
let s = null;
|
|
429
|
+
if (te(j.beforeSanitizeElements, e, null), mt(e))
|
|
430
|
+
return K(e), !0;
|
|
431
431
|
const u = k(e.nodeName);
|
|
432
432
|
if (te(j.uponSanitizeElement, e, {
|
|
433
433
|
tagName: u,
|
|
434
434
|
allowedTags: P
|
|
435
|
-
}), Ce && e.hasChildNodes() && !$e(e.firstElementChild) &&
|
|
436
|
-
return
|
|
437
|
-
if (we[u] || !(
|
|
438
|
-
if (!we[u] &&
|
|
435
|
+
}), Ce && e.hasChildNodes() && !$e(e.firstElementChild) && U(/<[/\w!]/g, e.innerHTML) && U(/<[/\w!]/g, e.textContent) || Ce && e.namespaceURI === J && u === "style" && $e(e.firstElementChild) || e.nodeType === Se.progressingInstruction || Ce && e.nodeType === Se.comment && U(/<[/\w]/g, e.data))
|
|
436
|
+
return K(e), !0;
|
|
437
|
+
if (we[u] || !(re.tagCheck instanceof Function && re.tagCheck(u)) && !P[u]) {
|
|
438
|
+
if (!we[u] && Vt(u) && (R.tagNameCheck instanceof RegExp && U(R.tagNameCheck, u) || R.tagNameCheck instanceof Function && R.tagNameCheck(u)))
|
|
439
439
|
return !1;
|
|
440
|
-
if (
|
|
441
|
-
const A =
|
|
442
|
-
if (
|
|
443
|
-
const L =
|
|
440
|
+
if (nt && !Q[u]) {
|
|
441
|
+
const A = N(e) || e.parentNode, O = ie(e) || e.childNodes;
|
|
442
|
+
if (O && A) {
|
|
443
|
+
const L = O.length;
|
|
444
444
|
for (let G = L - 1; G >= 0; --G) {
|
|
445
|
-
const
|
|
446
|
-
A.insertBefore(
|
|
445
|
+
const ae = fe(O[G], !0);
|
|
446
|
+
A.insertBefore(ae, M(e));
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
}
|
|
450
|
-
return
|
|
450
|
+
return K(e), !0;
|
|
451
451
|
}
|
|
452
|
-
return e instanceof m && !
|
|
453
|
-
|
|
454
|
-
}), e.textContent !==
|
|
452
|
+
return e instanceof m && !Un(e) || (u === "noscript" || u === "noembed" || u === "noframes") && U(/<\/no(script|embed|frames)/i, e.innerHTML) ? (K(e), !0) : (oe && e.nodeType === Se.text && (s = e.textContent, Te([ke, Me, Pe], (A) => {
|
|
453
|
+
s = Ae(s, A, " ");
|
|
454
|
+
}), e.textContent !== s && (ye(n.removed, {
|
|
455
455
|
element: e.cloneNode()
|
|
456
|
-
}), e.textContent =
|
|
457
|
-
},
|
|
458
|
-
if (Fe[
|
|
456
|
+
}), e.textContent = s)), te(j.afterSanitizeElements, e, null), !1);
|
|
457
|
+
}, qt = function(e, s, u) {
|
|
458
|
+
if (Fe[s] || xt && (s === "id" || s === "name") && (u in i || u in zn))
|
|
459
459
|
return !1;
|
|
460
|
-
const A =
|
|
461
|
-
if (!(
|
|
462
|
-
if (!(
|
|
463
|
-
if (!A || Fe[
|
|
460
|
+
const A = z[s] || re.attributeCheck instanceof Function && re.attributeCheck(s, e);
|
|
461
|
+
if (!(Je && !Fe[s] && U(vn, s))) {
|
|
462
|
+
if (!(vt && U(On, s))) {
|
|
463
|
+
if (!A || Fe[s]) {
|
|
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
|
-
!(
|
|
468
|
+
!(Vt(e) && (R.tagNameCheck instanceof RegExp && U(R.tagNameCheck, e) || R.tagNameCheck instanceof Function && R.tagNameCheck(e)) && (R.attributeNameCheck instanceof RegExp && U(R.attributeNameCheck, s) || R.attributeNameCheck instanceof Function && R.attributeNameCheck(s, 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
|
+
s === "is" && R.allowCustomizedBuiltInElements && (R.tagNameCheck instanceof RegExp && U(R.tagNameCheck, u) || R.tagNameCheck instanceof Function && R.tagNameCheck(u)))
|
|
471
471
|
) return !1;
|
|
472
|
-
} else if (!
|
|
473
|
-
if (!
|
|
474
|
-
if (!((
|
|
475
|
-
if (!(
|
|
472
|
+
} else if (!rt[s]) {
|
|
473
|
+
if (!U(Dt, Ae(u, Ct, ""))) {
|
|
474
|
+
if (!((s === "src" || s === "xlink:href" || s === "href") && e !== "script" && nn(u, "data:") === 0 && Pt[e])) {
|
|
475
|
+
if (!(Ot && !U(Ln, Ae(u, Ct, "")))) {
|
|
476
476
|
if (u)
|
|
477
477
|
return !1;
|
|
478
478
|
}
|
|
@@ -482,29 +482,29 @@ function _n() {
|
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
return !0;
|
|
485
|
-
},
|
|
486
|
-
return !
|
|
485
|
+
}, jn = T({}, ["annotation-xml", "color-profile", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "missing-glyph"]), Vt = function(e) {
|
|
486
|
+
return !jn[ve(e)] && U(xn, e);
|
|
487
487
|
}, Yt = function(e) {
|
|
488
488
|
te(j.beforeSanitizeAttributes, e, null);
|
|
489
|
-
const
|
|
490
|
-
if (!
|
|
489
|
+
const s = e.attributes;
|
|
490
|
+
if (!s || mt(e))
|
|
491
491
|
return;
|
|
492
492
|
const u = {
|
|
493
493
|
attrName: "",
|
|
494
494
|
attrValue: "",
|
|
495
495
|
keepAttr: !0,
|
|
496
|
-
allowedAttributes:
|
|
496
|
+
allowedAttributes: z,
|
|
497
497
|
forceKeepAttr: void 0
|
|
498
498
|
};
|
|
499
|
-
let A =
|
|
499
|
+
let A = s.length;
|
|
500
500
|
for (; A--; ) {
|
|
501
|
-
const
|
|
502
|
-
let F = L === "value" ?
|
|
503
|
-
if (u.attrName = ne, u.attrValue = F, u.keepAttr = !0, u.forceKeepAttr = void 0, te(j.uponSanitizeAttribute, e, u), F = u.attrValue,
|
|
501
|
+
const O = s[A], L = O.name, G = O.namespaceURI, ae = O.value, ne = k(L), dt = ae;
|
|
502
|
+
let F = L === "value" ? dt : pi(dt);
|
|
503
|
+
if (u.attrName = ne, u.attrValue = F, u.keepAttr = !0, u.forceKeepAttr = void 0, te(j.uponSanitizeAttribute, e, u), F = u.attrValue, kt && (ne === "id" || ne === "name") && nn(F, Mt) !== 0 && (ue(L, e), F = Mt + F), Ce && U(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, F)) {
|
|
504
504
|
ue(L, e);
|
|
505
505
|
continue;
|
|
506
506
|
}
|
|
507
|
-
if (ne === "attributename" &&
|
|
507
|
+
if (ne === "attributename" && tn(F, "href")) {
|
|
508
508
|
ue(L, e);
|
|
509
509
|
continue;
|
|
510
510
|
}
|
|
@@ -514,20 +514,20 @@ function _n() {
|
|
|
514
514
|
ue(L, e);
|
|
515
515
|
continue;
|
|
516
516
|
}
|
|
517
|
-
if (!
|
|
517
|
+
if (!Lt && U(/\/>/i, F)) {
|
|
518
518
|
ue(L, e);
|
|
519
519
|
continue;
|
|
520
520
|
}
|
|
521
|
-
|
|
522
|
-
F = Ae(F,
|
|
521
|
+
oe && Te([ke, Me, Pe], (Kt) => {
|
|
522
|
+
F = Ae(F, Kt, " ");
|
|
523
523
|
});
|
|
524
|
-
const
|
|
525
|
-
if (!
|
|
524
|
+
const Xt = k(e.nodeName);
|
|
525
|
+
if (!qt(Xt, ne, F)) {
|
|
526
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(
|
|
530
|
+
switch (y.getAttributeType(Xt, ne)) {
|
|
531
531
|
case "TrustedHTML": {
|
|
532
532
|
F = E.createHTML(F);
|
|
533
533
|
break;
|
|
@@ -537,102 +537,160 @@ function _n() {
|
|
|
537
537
|
break;
|
|
538
538
|
}
|
|
539
539
|
}
|
|
540
|
-
if (F !==
|
|
540
|
+
if (F !== dt)
|
|
541
541
|
try {
|
|
542
|
-
G ? e.setAttributeNS(G, L, F) : e.setAttribute(L, F),
|
|
542
|
+
G ? e.setAttributeNS(G, L, F) : e.setAttribute(L, F), mt(e) ? K(e) : en(n.removed);
|
|
543
543
|
} catch {
|
|
544
544
|
ue(L, e);
|
|
545
545
|
}
|
|
546
546
|
}
|
|
547
547
|
te(j.afterSanitizeAttributes, e, null);
|
|
548
|
-
},
|
|
549
|
-
let
|
|
550
|
-
const u =
|
|
551
|
-
for (te(j.beforeSanitizeShadowDOM, e, null);
|
|
552
|
-
te(j.uponSanitizeShadowNode,
|
|
548
|
+
}, ut = function(e) {
|
|
549
|
+
let s = null;
|
|
550
|
+
const u = Bt(e);
|
|
551
|
+
for (te(j.beforeSanitizeShadowDOM, e, null); s = u.nextNode(); )
|
|
552
|
+
te(j.uponSanitizeShadowNode, s, null), Wt(s), Yt(s), s.content instanceof c && ut(s.content);
|
|
553
553
|
te(j.afterSanitizeShadowDOM, e, null);
|
|
554
554
|
}, Be = function(e) {
|
|
555
555
|
if (e.nodeType === Se.element && e.shadowRoot instanceof c) {
|
|
556
556
|
const A = e.shadowRoot;
|
|
557
|
-
Be(A),
|
|
557
|
+
Be(A), ut(A);
|
|
558
558
|
}
|
|
559
|
-
const
|
|
560
|
-
if (!
|
|
559
|
+
const s = e.childNodes;
|
|
560
|
+
if (!s)
|
|
561
561
|
return;
|
|
562
562
|
const u = [];
|
|
563
|
-
Te(
|
|
563
|
+
Te(s, (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 e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {},
|
|
571
|
-
if (ot = !g, ot && (g = "<!-->"), typeof g != "string" && !$e(g) && (g =
|
|
570
|
+
let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, s = null, u = null, A = null, O = null;
|
|
571
|
+
if (ot = !g, ot && (g = "<!-->"), typeof g != "string" && !$e(g) && (g = yi(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 (
|
|
576
|
-
const
|
|
577
|
-
if (typeof
|
|
578
|
-
const ne = k(
|
|
575
|
+
if (et || ct(e), n.removed = [], typeof g == "string" && (De = !1), De) {
|
|
576
|
+
const ae = g.nodeName;
|
|
577
|
+
if (typeof ae == "string") {
|
|
578
|
+
const ne = k(ae);
|
|
579
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
|
+
s = $t("<!---->"), u = s.ownerDocument.importNode(g, !0), u.nodeType === Se.element && u.nodeName === "BODY" || u.nodeName === "HTML" ? s = u : s.appendChild(u), Be(u);
|
|
585
585
|
else {
|
|
586
|
-
if (!pe && !
|
|
586
|
+
if (!pe && !oe && !me && // eslint-disable-next-line unicorn/prefer-includes
|
|
587
587
|
g.indexOf("<") === -1)
|
|
588
|
-
return E &&
|
|
589
|
-
if (
|
|
590
|
-
return pe ? null :
|
|
588
|
+
return E && Ue ? E.createHTML(g) : g;
|
|
589
|
+
if (s = $t(g), !s)
|
|
590
|
+
return pe ? null : Ue ? v : "";
|
|
591
591
|
}
|
|
592
|
-
|
|
593
|
-
const L =
|
|
592
|
+
s && tt && K(s.firstChild);
|
|
593
|
+
const L = Bt(De ? g : s);
|
|
594
594
|
for (; A = L.nextNode(); )
|
|
595
|
-
|
|
595
|
+
Wt(A), Yt(A), A.content instanceof c && ut(A.content);
|
|
596
596
|
if (De)
|
|
597
|
-
return
|
|
597
|
+
return oe && Gt(g), g;
|
|
598
598
|
if (pe) {
|
|
599
|
-
if (
|
|
600
|
-
for (
|
|
601
|
-
|
|
599
|
+
if (oe && Gt(s), ze)
|
|
600
|
+
for (O = Ke.call(s.ownerDocument); s.firstChild; )
|
|
601
|
+
O.appendChild(s.firstChild);
|
|
602
602
|
else
|
|
603
|
-
|
|
604
|
-
return (
|
|
603
|
+
O = s;
|
|
604
|
+
return (z.shadowroot || z.shadowrootmode) && (O = Qe.call(o, O, !0)), O;
|
|
605
605
|
}
|
|
606
|
-
let G = me ?
|
|
607
|
-
return me && P["!doctype"] &&
|
|
608
|
-
` + G),
|
|
609
|
-
G = Ae(G,
|
|
610
|
-
}), E &&
|
|
606
|
+
let G = me ? s.outerHTML : s.innerHTML;
|
|
607
|
+
return me && P["!doctype"] && s.ownerDocument && s.ownerDocument.doctype && s.ownerDocument.doctype.name && U(vi, s.ownerDocument.doctype.name) && (G = "<!DOCTYPE " + s.ownerDocument.doctype.name + `>
|
|
608
|
+
` + G), oe && Te([ke, Me, Pe], (ae) => {
|
|
609
|
+
G = Ae(G, ae, " ");
|
|
610
|
+
}), E && Ue ? E.createHTML(G) : G;
|
|
611
611
|
}, n.setConfig = function() {
|
|
612
612
|
let g = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
613
|
-
|
|
613
|
+
ct(g), et = !0;
|
|
614
614
|
}, n.clearConfig = function() {
|
|
615
|
-
be = null,
|
|
616
|
-
}, n.isValidAttribute = function(g, e,
|
|
617
|
-
be ||
|
|
615
|
+
be = null, et = !1;
|
|
616
|
+
}, n.isValidAttribute = function(g, e, s) {
|
|
617
|
+
be || ct({});
|
|
618
618
|
const u = k(g), A = k(e);
|
|
619
|
-
return
|
|
619
|
+
return qt(u, A, s);
|
|
620
620
|
}, n.addHook = function(g, e) {
|
|
621
621
|
typeof e == "function" && ye(j[g], e);
|
|
622
622
|
}, n.removeHook = function(g, e) {
|
|
623
623
|
if (e !== void 0) {
|
|
624
|
-
const
|
|
625
|
-
return
|
|
624
|
+
const s = di(j[g], e);
|
|
625
|
+
return s === -1 ? void 0 : fi(j[g], s, 1)[0];
|
|
626
626
|
}
|
|
627
|
-
return
|
|
627
|
+
return en(j[g]);
|
|
628
628
|
}, n.removeHooks = function(g) {
|
|
629
629
|
j[g] = [];
|
|
630
630
|
}, n.removeAllHooks = function() {
|
|
631
|
-
j =
|
|
631
|
+
j = un();
|
|
632
632
|
}, n;
|
|
633
633
|
}
|
|
634
|
-
var
|
|
635
|
-
const
|
|
634
|
+
var Tt = Cn();
|
|
635
|
+
const dn = /* @__PURE__ */ new Set(["http:", "https:", "mailto:", "tel:"]), qe = "http://platform-sanitize.invalid/", fn = /^\s*\/\//, pn = (
|
|
636
|
+
// oxlint-disable-next-line no-control-regex -- intentional security guard
|
|
637
|
+
/^[\u0000-\u0020\u007F-\u00A0\u2000-\u200F\u2028\u2029\u202F\u205F\u2060\u3000\uFEFF]*(?:javascript|data|vbscript|file):/i
|
|
638
|
+
), ki = {
|
|
639
|
+
colon: ":",
|
|
640
|
+
// javascript:alert(1) → javascript:alert(1)
|
|
641
|
+
sol: "/",
|
|
642
|
+
// //evil.com → //evil.com (protocol-relative)
|
|
643
|
+
bsol: "\\",
|
|
644
|
+
// \\evil.com → \\evil.com
|
|
645
|
+
Tab: " ",
|
|
646
|
+
// java	script: — WHATWG strips mid-scheme tabs
|
|
647
|
+
NewLine: `
|
|
648
|
+
`
|
|
649
|
+
// java
script:
|
|
650
|
+
};
|
|
651
|
+
function Mi(t) {
|
|
652
|
+
return t.replace(/&#(\d+);/g, (n, i) => {
|
|
653
|
+
const o = Number(i);
|
|
654
|
+
if (!Number.isFinite(o) || o < 0 || o > 1114111) return "";
|
|
655
|
+
try {
|
|
656
|
+
return String.fromCodePoint(o);
|
|
657
|
+
} catch {
|
|
658
|
+
return "";
|
|
659
|
+
}
|
|
660
|
+
}).replace(/&#x([\da-f]+);/gi, (n, i) => {
|
|
661
|
+
const o = parseInt(i, 16);
|
|
662
|
+
if (!Number.isFinite(o) || o < 0 || o > 1114111) return "";
|
|
663
|
+
try {
|
|
664
|
+
return String.fromCodePoint(o);
|
|
665
|
+
} catch {
|
|
666
|
+
return "";
|
|
667
|
+
}
|
|
668
|
+
}).replace(/&([A-Za-z][A-Za-z0-9]*);/g, (n, i) => ki[i] ?? n);
|
|
669
|
+
}
|
|
670
|
+
function Pi(t) {
|
|
671
|
+
if (!t || !t.trim()) return "about:blank";
|
|
672
|
+
const n = t.replace(/\\/g, "/");
|
|
673
|
+
if (fn.test(n) || pn.test(n)) return "about:blank";
|
|
674
|
+
if (/&[#A-Za-z]/.test(n)) {
|
|
675
|
+
const i = Mi(n);
|
|
676
|
+
if (fn.test(i) || pn.test(i))
|
|
677
|
+
return "about:blank";
|
|
678
|
+
try {
|
|
679
|
+
const o = new URL(i, qe);
|
|
680
|
+
if (!o.href.startsWith(qe) && !dn.has(o.protocol))
|
|
681
|
+
return "about:blank";
|
|
682
|
+
} catch {
|
|
683
|
+
return "about:blank";
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
try {
|
|
687
|
+
const i = new URL(n, qe);
|
|
688
|
+
return !dn.has(i.protocol) || (i.protocol === "http:" || i.protocol === "https:") && (i.username || i.password) ? "about:blank" : i.href.startsWith(qe) ? t : n.replace(/[\x00-\x1F\u2028\u2029]/g, "").replace(/%250[9ad]/gi, "").replace(/%0[9ad]/gi, "");
|
|
689
|
+
} catch {
|
|
690
|
+
return "about:blank";
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
const Fi = /* @__PURE__ */ new Set([
|
|
636
694
|
// layout
|
|
637
695
|
"display",
|
|
638
696
|
"float",
|
|
@@ -874,7 +932,7 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
874
932
|
"caret-color",
|
|
875
933
|
"accent-color",
|
|
876
934
|
"appearance"
|
|
877
|
-
]),
|
|
935
|
+
]), zi = /* @__PURE__ */ new Set([
|
|
878
936
|
"src",
|
|
879
937
|
"href",
|
|
880
938
|
"action",
|
|
@@ -885,7 +943,7 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
885
943
|
"cite",
|
|
886
944
|
"longdesc",
|
|
887
945
|
"xlink:href"
|
|
888
|
-
]),
|
|
946
|
+
]), Ui = ["content"], ji = /url\s*\(\s*['"]?(?:[a-z][a-z0-9+\-.]*:|\/\/)/i, Hi = /* @__PURE__ */ new Set([
|
|
889
947
|
"allow-downloads",
|
|
890
948
|
"allow-forms",
|
|
891
949
|
"allow-modals",
|
|
@@ -898,7 +956,14 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
898
956
|
"allow-scripts",
|
|
899
957
|
"allow-storage-access-by-user-activation",
|
|
900
958
|
"allow-top-navigation-by-user-activation"
|
|
901
|
-
]),
|
|
959
|
+
]), $i = {
|
|
960
|
+
"data-url": "data-custom-url",
|
|
961
|
+
"data-method": "data-custom-method",
|
|
962
|
+
"data-remote": "data-custom-remote",
|
|
963
|
+
"data-remove": "data-custom-remove",
|
|
964
|
+
"data-confirm": "data-custom-confirm",
|
|
965
|
+
"data-disable-with": "data-custom-disable-with"
|
|
966
|
+
}, Bi = /* @__PURE__ */ new Set(["data-item-href"]), Gi = {
|
|
902
967
|
// semantics and annotation are re-allowed because DOMPurify blocks all of
|
|
903
968
|
// mathMlDisallowed by default. semantics is a safe structural wrapper;
|
|
904
969
|
// annotation carries LaTeX source text (e.g. \frac{1}{2}); Canvas emits
|
|
@@ -913,7 +978,26 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
913
978
|
// application/x-tex, …) are not integration points and are preserved, so this
|
|
914
979
|
// layer no longer strips the benign annotation-xml the backend and TinyMCE
|
|
915
980
|
// already allow.
|
|
916
|
-
|
|
981
|
+
// object/embed/param re-enable PDF/SVG/media embedding in course content
|
|
982
|
+
// (e.g. <object data="file.pdf" type="application/pdf">). Their Flash/ActiveX
|
|
983
|
+
// attributes (classid, codebase, pluginspage, wmode, allowscriptaccess) are
|
|
984
|
+
// intentionally NOT added — dead tech, and ADD_ATTR is global in DOMPurify so
|
|
985
|
+
// re-allowing them would also reopen that surface on iframe. DOMPurify's URI
|
|
986
|
+
// filter blocks javascript:/data: on data/src, matching Canvas's
|
|
987
|
+
// http/https/relative protocol rule for these tags.
|
|
988
|
+
//
|
|
989
|
+
// SECURITY ASSUMPTION (same one iframe already relies on): object/embed load
|
|
990
|
+
// their resource as a *document*, not an image — a same-origin SVG/HTML file
|
|
991
|
+
// (e.g. <object data="/files/123/download" type="image/svg+xml">) executes any
|
|
992
|
+
// <script> it contains in the embedding page's origin. The javascript:/data:
|
|
993
|
+
// filter does not help here because the URL is a benign same-origin path; the
|
|
994
|
+
// payload lives in the fetched file. This is NOT new attack surface: <iframe>
|
|
995
|
+
// is already allowed and has the identical capability (its srcdoc is stripped —
|
|
996
|
+
// see test). The defense for all three is that Canvas serves user-uploaded
|
|
997
|
+
// files from a separate sandboxed origin. object/embed also have no usable
|
|
998
|
+
// sandbox attribute, so the sandbox-token hook cannot constrain them — again,
|
|
999
|
+
// parity with an unsandboxed iframe, which is already permitted.
|
|
1000
|
+
ADD_TAGS: ["iframe", "semantics", "annotation", "annotation-xml", "object", "embed", "param"],
|
|
917
1001
|
ADD_ATTR: [
|
|
918
1002
|
"allowfullscreen",
|
|
919
1003
|
"allow",
|
|
@@ -921,6 +1005,12 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
921
1005
|
"sandbox",
|
|
922
1006
|
"data-media-id",
|
|
923
1007
|
"data-media-type",
|
|
1008
|
+
// <object>'s resource URL attribute — not in DOMPurify's defaults. src/type/
|
|
1009
|
+
// name/value/width/height (used by object/embed/param) already are. Added
|
|
1010
|
+
// globally (DOMPurify has no per-tag attr scoping), which is harmless: `data`
|
|
1011
|
+
// is in URL_ATTRS so it is protocol-filtered, and it is not a DOM-clobbering
|
|
1012
|
+
// or URI-safe attribute name.
|
|
1013
|
+
"data",
|
|
924
1014
|
// RCE produces target="_blank" for external links. Modern browsers treat
|
|
925
1015
|
// target="_blank" as implicit rel="noopener", and the backend allowlist
|
|
926
1016
|
// already includes target.
|
|
@@ -938,10 +1028,6 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
938
1028
|
"intent",
|
|
939
1029
|
"arg"
|
|
940
1030
|
],
|
|
941
|
-
// Rails UJS turns data-method/data-remote/etc. on clickable elements into
|
|
942
|
-
// state-changing requests carrying the victim's CSRF token. Strip them so
|
|
943
|
-
// user-authored HTML cannot become a CSRF gadget when UJS is on the page.
|
|
944
|
-
FORBID_ATTR: ["data-method", "data-remote", "data-url", "data-confirm", "data-disable-with"],
|
|
945
1031
|
// In browsers that support the Trusted Types API (Chromium, Firefox),
|
|
946
1032
|
// DOMPurify returns a TrustedHTML object rather than a plain string. The
|
|
947
1033
|
// exported sanitizeHtml signature declares string — a deliberate lie that
|
|
@@ -957,17 +1043,17 @@ const Ni = /* @__PURE__ */ new Set([
|
|
|
957
1043
|
// confusion attacks where fragments like <svg> could influence parse context.
|
|
958
1044
|
FORCE_BODY: !0
|
|
959
1045
|
};
|
|
960
|
-
let
|
|
961
|
-
function
|
|
962
|
-
if (
|
|
963
|
-
|
|
1046
|
+
let q = null;
|
|
1047
|
+
function Wi() {
|
|
1048
|
+
if (q) return q;
|
|
1049
|
+
q = typeof Tt == "function" ? Tt(window) : Tt, q.addHook("afterSanitizeAttributes", (n) => {
|
|
964
1050
|
if (!(n instanceof Element) || !n.hasAttribute("style")) return;
|
|
965
|
-
const i = n.style,
|
|
1051
|
+
const i = n.style, o = [];
|
|
966
1052
|
for (let m = 0; m < i.length; m++) {
|
|
967
1053
|
const f = i.item(m);
|
|
968
|
-
|
|
1054
|
+
Fi.has(f) || o.push(f);
|
|
969
1055
|
}
|
|
970
|
-
for (const m of
|
|
1056
|
+
for (const m of o) i.removeProperty(m);
|
|
971
1057
|
const l = /* @__PURE__ */ new Set([
|
|
972
1058
|
"static",
|
|
973
1059
|
"relative",
|
|
@@ -981,55 +1067,68 @@ function Pi() {
|
|
|
981
1067
|
c && !l.has(c) && i.removeProperty("position");
|
|
982
1068
|
const d = /* @__PURE__ */ new Set(["initial", "inherit", "unset", "revert", "revert-layer"]), p = i.getPropertyValue("opacity").trim().toLowerCase();
|
|
983
1069
|
p && !d.has(p) && (p.endsWith("%") ? parseFloat(p) / 100 : parseFloat(p)) < 0.05 && i.removeProperty("opacity");
|
|
984
|
-
for (const m of
|
|
1070
|
+
for (const m of Ui) {
|
|
985
1071
|
const f = i.getPropertyValue(m);
|
|
986
|
-
f &&
|
|
1072
|
+
f && ji.test(f) && i.removeProperty(m);
|
|
987
1073
|
}
|
|
988
1074
|
i.length === 0 && n.removeAttribute("style");
|
|
989
|
-
}),
|
|
990
|
-
if (!
|
|
991
|
-
const
|
|
992
|
-
/^\s*\/\//.test(
|
|
993
|
-
}),
|
|
1075
|
+
}), q.addHook("uponSanitizeAttribute", (n, i) => {
|
|
1076
|
+
if (!zi.has(i.attrName)) return;
|
|
1077
|
+
const o = i.attrValue;
|
|
1078
|
+
/^\s*\/\//.test(o) ? (i.attrValue = o.trimStart().replace(/^\/\//, "https://"), i.keepAttr = !0) : /^\s*\\/.test(o) && (i.keepAttr = !1);
|
|
1079
|
+
}), q.addHook("uponSanitizeAttribute", (n, i) => {
|
|
1080
|
+
if (!Bi.has(i.attrName)) return;
|
|
1081
|
+
const o = i.attrValue;
|
|
1082
|
+
if (!o.trim()) return;
|
|
1083
|
+
const l = /^\s*\/\//.test(o) ? o.trimStart().replace(/^\/\//, "https://") : o;
|
|
1084
|
+
i.attrValue = Pi(l);
|
|
1085
|
+
}), q.addHook("uponSanitizeAttribute", (n, i) => {
|
|
1086
|
+
const o = $i[i.attrName];
|
|
1087
|
+
!o || !(n instanceof Element) || (n.hasAttribute(o) || n.setAttribute(o, i.attrValue), i.keepAttr = !1);
|
|
1088
|
+
}), q.addHook("afterSanitizeAttributes", (n) => {
|
|
994
1089
|
if (!(n instanceof Element) || !n.hasAttribute("srcset")) return;
|
|
995
|
-
const i = (n.getAttribute("srcset") ?? "").split(","),
|
|
996
|
-
if (i.some((d) => /^\s*\\/.test(
|
|
1090
|
+
const i = (n.getAttribute("srcset") ?? "").split(","), o = (d) => d.trim().split(/\s+/)[0];
|
|
1091
|
+
if (i.some((d) => /^\s*\\/.test(o(d)))) {
|
|
997
1092
|
n.removeAttribute("srcset");
|
|
998
1093
|
return;
|
|
999
1094
|
}
|
|
1000
1095
|
let l = !1;
|
|
1001
1096
|
const c = i.map((d) => {
|
|
1002
|
-
const p =
|
|
1097
|
+
const p = o(d);
|
|
1003
1098
|
if (!p.startsWith("//")) return d;
|
|
1004
1099
|
l = !0;
|
|
1005
1100
|
const m = d.indexOf(p);
|
|
1006
1101
|
return d.slice(0, m) + "https://" + p.slice(2) + d.slice(m + p.length);
|
|
1007
1102
|
});
|
|
1008
1103
|
l && n.setAttribute("srcset", c.join(","));
|
|
1009
|
-
}),
|
|
1104
|
+
}), q.addHook("afterSanitizeAttributes", (n) => {
|
|
1010
1105
|
var i;
|
|
1011
1106
|
if (!(n instanceof Element) || n.tagName !== "A" && n.tagName !== "AREA" || ((i = n.getAttribute("target")) == null ? void 0 : i.toLowerCase()) !== "_blank") return;
|
|
1012
|
-
const
|
|
1107
|
+
const o = n.getAttribute("rel") ?? "", l = new Set(o.split(/\s+/).filter(Boolean));
|
|
1013
1108
|
l.add("noopener"), n.setAttribute("rel", [...l].join(" "));
|
|
1014
|
-
}),
|
|
1109
|
+
}), q.addHook("afterSanitizeAttributes", (n) => {
|
|
1015
1110
|
if (!(n instanceof Element) || n.tagName !== "IFRAME" || !n.hasAttribute("sandbox")) return;
|
|
1016
|
-
const i = (n.getAttribute("sandbox") ?? "").toLowerCase().split(/\s+/).filter(Boolean),
|
|
1017
|
-
|
|
1111
|
+
const i = (n.getAttribute("sandbox") ?? "").toLowerCase().split(/\s+/).filter(Boolean), o = i.filter((l) => Hi.has(l));
|
|
1112
|
+
o.length !== i.length && n.setAttribute("sandbox", o.join(" "));
|
|
1113
|
+
}), q.addHook("afterSanitizeAttributes", (n) => {
|
|
1114
|
+
if (!(n instanceof Element) || n.tagName !== "PARAM") return;
|
|
1115
|
+
const i = n.getAttribute("value");
|
|
1116
|
+
i && /^\s*(?:javascript|vbscript):/i.test(i) && n.removeAttribute("value");
|
|
1018
1117
|
});
|
|
1019
1118
|
const t = /* @__PURE__ */ new Set(["text/html", "application/xhtml+xml"]);
|
|
1020
|
-
return
|
|
1119
|
+
return q.addHook("afterSanitizeElements", (n) => {
|
|
1021
1120
|
if (!(n instanceof Element) || n.tagName.toLowerCase() !== "annotation-xml") return;
|
|
1022
1121
|
const i = (n.getAttribute("encoding") ?? "").toLowerCase().trim();
|
|
1023
1122
|
t.has(i) && n.remove();
|
|
1024
|
-
}),
|
|
1123
|
+
}), q;
|
|
1025
1124
|
}
|
|
1026
|
-
function
|
|
1125
|
+
function wt(t, n) {
|
|
1027
1126
|
if (typeof window > "u")
|
|
1028
1127
|
throw new Error("sanitizeHtml requires a DOM environment (window is not defined)");
|
|
1029
|
-
const i =
|
|
1030
|
-
return
|
|
1128
|
+
const i = Gi;
|
|
1129
|
+
return Wi().sanitize(t ?? "", i);
|
|
1031
1130
|
}
|
|
1032
|
-
const
|
|
1131
|
+
const qi = se`
|
|
1033
1132
|
query GetAssignment($courseId: ID!, $assignmentId: ID!, $userId: ID!) {
|
|
1034
1133
|
legacyNode(_id: $assignmentId, type: Assignment) {
|
|
1035
1134
|
... on Assignment {
|
|
@@ -1088,7 +1187,7 @@ const Fi = ae`
|
|
|
1088
1187
|
contentType
|
|
1089
1188
|
submissionPreviewUrl
|
|
1090
1189
|
}
|
|
1091
|
-
`,
|
|
1190
|
+
`, Vi = se`
|
|
1092
1191
|
query GetSubmissionComments(
|
|
1093
1192
|
$submissionId: ID!
|
|
1094
1193
|
$courseId: String
|
|
@@ -1137,7 +1236,7 @@ const Fi = ae`
|
|
|
1137
1236
|
}
|
|
1138
1237
|
}
|
|
1139
1238
|
}
|
|
1140
|
-
`,
|
|
1239
|
+
`, Yi = se`
|
|
1141
1240
|
query getSubmissions($submissionId: ID!) {
|
|
1142
1241
|
node(id: $submissionId) {
|
|
1143
1242
|
... on Submission {
|
|
@@ -1171,197 +1270,197 @@ const Fi = ae`
|
|
|
1171
1270
|
contentType
|
|
1172
1271
|
submissionPreviewUrl
|
|
1173
1272
|
}
|
|
1174
|
-
`,
|
|
1175
|
-
_id:
|
|
1176
|
-
displayName:
|
|
1177
|
-
id:
|
|
1178
|
-
mimeClass:
|
|
1179
|
-
url:
|
|
1180
|
-
contentType:
|
|
1181
|
-
submissionPreviewUrl:
|
|
1182
|
-
}),
|
|
1183
|
-
_id:
|
|
1184
|
-
activeSubmissionType:
|
|
1185
|
-
body:
|
|
1186
|
-
attachments:
|
|
1187
|
-
}),
|
|
1188
|
-
id:
|
|
1189
|
-
submittedAt:
|
|
1190
|
-
body:
|
|
1191
|
-
grade:
|
|
1192
|
-
score:
|
|
1193
|
-
submissionType:
|
|
1194
|
-
attempt:
|
|
1195
|
-
unreadCommentCount:
|
|
1196
|
-
attachment:
|
|
1197
|
-
attachments:
|
|
1198
|
-
submissionDraft:
|
|
1199
|
-
}),
|
|
1200
|
-
_id:
|
|
1201
|
-
name:
|
|
1202
|
-
description:
|
|
1203
|
-
allowedExtensions:
|
|
1204
|
-
allowedAttempts:
|
|
1205
|
-
dueAt:
|
|
1206
|
-
pointsPossible:
|
|
1207
|
-
submissionTypes:
|
|
1208
|
-
gradingType:
|
|
1209
|
-
published:
|
|
1210
|
-
submissionsConnection:
|
|
1211
|
-
nodes:
|
|
1273
|
+
`, Oe = r.object({
|
|
1274
|
+
_id: r.string(),
|
|
1275
|
+
displayName: r.string(),
|
|
1276
|
+
id: r.string(),
|
|
1277
|
+
mimeClass: r.string(),
|
|
1278
|
+
url: r.string(),
|
|
1279
|
+
contentType: r.string(),
|
|
1280
|
+
submissionPreviewUrl: r.string().nullable()
|
|
1281
|
+
}), Xi = r.object({
|
|
1282
|
+
_id: r.string(),
|
|
1283
|
+
activeSubmissionType: r.string(),
|
|
1284
|
+
body: r.string().nullable(),
|
|
1285
|
+
attachments: r.array(Oe).nullable()
|
|
1286
|
+
}), Ki = r.object({
|
|
1287
|
+
id: r.string(),
|
|
1288
|
+
submittedAt: r.string(),
|
|
1289
|
+
body: r.string().nullable(),
|
|
1290
|
+
grade: r.string().nullable(),
|
|
1291
|
+
score: r.number().nullable(),
|
|
1292
|
+
submissionType: r.string(),
|
|
1293
|
+
attempt: r.number(),
|
|
1294
|
+
unreadCommentCount: r.number(),
|
|
1295
|
+
attachment: Oe.nullable(),
|
|
1296
|
+
attachments: r.array(Oe).nullable(),
|
|
1297
|
+
submissionDraft: Xi.nullable()
|
|
1298
|
+
}), Zi = r.object({
|
|
1299
|
+
_id: r.string(),
|
|
1300
|
+
name: r.string(),
|
|
1301
|
+
description: r.string().nullable(),
|
|
1302
|
+
allowedExtensions: r.array(r.string()).nullable(),
|
|
1303
|
+
allowedAttempts: r.number().nullable(),
|
|
1304
|
+
dueAt: r.string().nullable(),
|
|
1305
|
+
pointsPossible: r.number().nullable(),
|
|
1306
|
+
submissionTypes: r.array(r.string()),
|
|
1307
|
+
gradingType: r.string(),
|
|
1308
|
+
published: r.boolean().nullable().optional(),
|
|
1309
|
+
submissionsConnection: r.object({
|
|
1310
|
+
nodes: r.array(Ki)
|
|
1212
1311
|
})
|
|
1213
|
-
}),
|
|
1214
|
-
legacyNode:
|
|
1215
|
-
course:
|
|
1216
|
-
name:
|
|
1312
|
+
}), Qi = r.object({
|
|
1313
|
+
legacyNode: Zi,
|
|
1314
|
+
course: r.object({
|
|
1315
|
+
name: r.string()
|
|
1217
1316
|
})
|
|
1218
|
-
}),
|
|
1219
|
-
startCursor:
|
|
1220
|
-
endCursor:
|
|
1221
|
-
hasPreviousPage:
|
|
1222
|
-
hasNextPage:
|
|
1223
|
-
}),
|
|
1224
|
-
_id:
|
|
1225
|
-
attempt:
|
|
1226
|
-
author:
|
|
1227
|
-
avatarUrl:
|
|
1228
|
-
shortName:
|
|
1229
|
-
courseRoles:
|
|
1317
|
+
}), Dn = r.object({
|
|
1318
|
+
startCursor: r.string(),
|
|
1319
|
+
endCursor: r.string(),
|
|
1320
|
+
hasPreviousPage: r.boolean(),
|
|
1321
|
+
hasNextPage: r.boolean()
|
|
1322
|
+
}), Rn = r.object({
|
|
1323
|
+
_id: r.string(),
|
|
1324
|
+
attempt: r.number(),
|
|
1325
|
+
author: r.object({
|
|
1326
|
+
avatarUrl: r.string().nullable(),
|
|
1327
|
+
shortName: r.string(),
|
|
1328
|
+
courseRoles: r.string().nullable()
|
|
1230
1329
|
}),
|
|
1231
|
-
htmlComment:
|
|
1232
|
-
read:
|
|
1233
|
-
updatedAt:
|
|
1234
|
-
createdAt:
|
|
1235
|
-
attachments:
|
|
1236
|
-
|
|
1237
|
-
url:
|
|
1238
|
-
mimeClass:
|
|
1239
|
-
displayName:
|
|
1240
|
-
contentType:
|
|
1241
|
-
id:
|
|
1330
|
+
htmlComment: r.string(),
|
|
1331
|
+
read: r.boolean(),
|
|
1332
|
+
updatedAt: r.string(),
|
|
1333
|
+
createdAt: r.string(),
|
|
1334
|
+
attachments: r.array(
|
|
1335
|
+
r.object({
|
|
1336
|
+
url: r.string(),
|
|
1337
|
+
mimeClass: r.string(),
|
|
1338
|
+
displayName: r.string(),
|
|
1339
|
+
contentType: r.string(),
|
|
1340
|
+
id: r.string()
|
|
1242
1341
|
})
|
|
1243
1342
|
).nullable()
|
|
1244
|
-
}),
|
|
1245
|
-
submissionComments:
|
|
1246
|
-
commentsConnection:
|
|
1247
|
-
pageInfo:
|
|
1248
|
-
nodes:
|
|
1343
|
+
}), Ji = r.object({
|
|
1344
|
+
submissionComments: r.object({
|
|
1345
|
+
commentsConnection: r.object({
|
|
1346
|
+
pageInfo: Dn,
|
|
1347
|
+
nodes: r.array(Rn)
|
|
1249
1348
|
})
|
|
1250
1349
|
})
|
|
1251
|
-
}),
|
|
1252
|
-
comments:
|
|
1253
|
-
pageInfo:
|
|
1254
|
-
}),
|
|
1255
|
-
submittedAt:
|
|
1256
|
-
body:
|
|
1257
|
-
grade:
|
|
1258
|
-
score:
|
|
1259
|
-
submissionType:
|
|
1260
|
-
state:
|
|
1261
|
-
attempt:
|
|
1262
|
-
attachment:
|
|
1263
|
-
attachments:
|
|
1264
|
-
}),
|
|
1265
|
-
node:
|
|
1266
|
-
submissionHistoriesConnection:
|
|
1267
|
-
nodes:
|
|
1350
|
+
}), qr = r.object({
|
|
1351
|
+
comments: r.array(Rn),
|
|
1352
|
+
pageInfo: Dn
|
|
1353
|
+
}), er = r.object({
|
|
1354
|
+
submittedAt: r.string(),
|
|
1355
|
+
body: r.string().nullable(),
|
|
1356
|
+
grade: r.string().nullable(),
|
|
1357
|
+
score: r.number().nullable(),
|
|
1358
|
+
submissionType: r.string(),
|
|
1359
|
+
state: r.string(),
|
|
1360
|
+
attempt: r.number(),
|
|
1361
|
+
attachment: Oe.nullable(),
|
|
1362
|
+
attachments: r.array(Oe).nullable()
|
|
1363
|
+
}), tr = r.object({
|
|
1364
|
+
node: r.object({
|
|
1365
|
+
submissionHistoriesConnection: r.object({
|
|
1366
|
+
nodes: r.array(er)
|
|
1268
1367
|
})
|
|
1269
1368
|
})
|
|
1270
|
-
}), Le =
|
|
1271
|
-
attribute:
|
|
1272
|
-
message:
|
|
1273
|
-
}),
|
|
1274
|
-
createSubmissionComment:
|
|
1275
|
-
submissionComment:
|
|
1276
|
-
_id:
|
|
1277
|
-
attachments:
|
|
1278
|
-
|
|
1279
|
-
_id:
|
|
1280
|
-
displayName:
|
|
1281
|
-
id:
|
|
1282
|
-
mimeClass:
|
|
1283
|
-
url:
|
|
1369
|
+
}), Le = r.object({
|
|
1370
|
+
attribute: r.string(),
|
|
1371
|
+
message: r.string()
|
|
1372
|
+
}), nr = r.object({
|
|
1373
|
+
createSubmissionComment: r.object({
|
|
1374
|
+
submissionComment: r.object({
|
|
1375
|
+
_id: r.string(),
|
|
1376
|
+
attachments: r.array(
|
|
1377
|
+
r.object({
|
|
1378
|
+
_id: r.string(),
|
|
1379
|
+
displayName: r.string(),
|
|
1380
|
+
id: r.string(),
|
|
1381
|
+
mimeClass: r.string(),
|
|
1382
|
+
url: r.string()
|
|
1284
1383
|
})
|
|
1285
1384
|
).nullable(),
|
|
1286
|
-
author:
|
|
1287
|
-
avatarUrl:
|
|
1288
|
-
shortName:
|
|
1385
|
+
author: r.object({
|
|
1386
|
+
avatarUrl: r.string().nullable(),
|
|
1387
|
+
shortName: r.string()
|
|
1289
1388
|
}),
|
|
1290
|
-
htmlComment:
|
|
1291
|
-
mediaObject:
|
|
1292
|
-
id:
|
|
1293
|
-
_id:
|
|
1294
|
-
mediaSources:
|
|
1295
|
-
|
|
1296
|
-
height:
|
|
1297
|
-
src:
|
|
1298
|
-
type:
|
|
1299
|
-
width:
|
|
1389
|
+
htmlComment: r.string(),
|
|
1390
|
+
mediaObject: r.object({
|
|
1391
|
+
id: r.string(),
|
|
1392
|
+
_id: r.string(),
|
|
1393
|
+
mediaSources: r.array(
|
|
1394
|
+
r.object({
|
|
1395
|
+
height: r.string(),
|
|
1396
|
+
src: r.string(),
|
|
1397
|
+
type: r.string(),
|
|
1398
|
+
width: r.string()
|
|
1300
1399
|
})
|
|
1301
1400
|
),
|
|
1302
|
-
mediaTracks:
|
|
1303
|
-
|
|
1304
|
-
_id:
|
|
1305
|
-
locale:
|
|
1306
|
-
content:
|
|
1307
|
-
kind:
|
|
1401
|
+
mediaTracks: r.array(
|
|
1402
|
+
r.object({
|
|
1403
|
+
_id: r.string(),
|
|
1404
|
+
locale: r.string(),
|
|
1405
|
+
content: r.string(),
|
|
1406
|
+
kind: r.string()
|
|
1308
1407
|
})
|
|
1309
1408
|
),
|
|
1310
|
-
mediaType:
|
|
1311
|
-
title:
|
|
1409
|
+
mediaType: r.string(),
|
|
1410
|
+
title: r.string()
|
|
1312
1411
|
}).nullable(),
|
|
1313
|
-
read:
|
|
1314
|
-
updatedAt:
|
|
1412
|
+
read: r.boolean(),
|
|
1413
|
+
updatedAt: r.string()
|
|
1315
1414
|
}).nullable(),
|
|
1316
|
-
errors:
|
|
1415
|
+
errors: r.array(Le).nullable()
|
|
1317
1416
|
})
|
|
1318
|
-
}),
|
|
1319
|
-
markSubmissionCommentsRead:
|
|
1320
|
-
errors:
|
|
1417
|
+
}), ir = r.object({
|
|
1418
|
+
markSubmissionCommentsRead: r.object({
|
|
1419
|
+
errors: r.array(Le).nullable()
|
|
1321
1420
|
})
|
|
1322
|
-
}),
|
|
1323
|
-
createSubmission:
|
|
1324
|
-
submission:
|
|
1325
|
-
_id:
|
|
1326
|
-
createdAt:
|
|
1327
|
-
attempt:
|
|
1328
|
-
submittedAt:
|
|
1329
|
-
score:
|
|
1421
|
+
}), Vr = r.object({
|
|
1422
|
+
createSubmission: r.object({
|
|
1423
|
+
submission: r.object({
|
|
1424
|
+
_id: r.string(),
|
|
1425
|
+
createdAt: r.string(),
|
|
1426
|
+
attempt: r.number(),
|
|
1427
|
+
submittedAt: r.string().nullable(),
|
|
1428
|
+
score: r.number().nullable()
|
|
1330
1429
|
}).nullable(),
|
|
1331
|
-
errors:
|
|
1430
|
+
errors: r.array(Le).nullable()
|
|
1332
1431
|
})
|
|
1333
|
-
}),
|
|
1432
|
+
}), Yr = r.object(
|
|
1334
1433
|
{
|
|
1335
|
-
createSubmissionDraft:
|
|
1336
|
-
submissionDraft:
|
|
1337
|
-
_id:
|
|
1434
|
+
createSubmissionDraft: r.object({
|
|
1435
|
+
submissionDraft: r.object({
|
|
1436
|
+
_id: r.string()
|
|
1338
1437
|
}).nullable(),
|
|
1339
|
-
errors:
|
|
1438
|
+
errors: r.array(Le).nullable()
|
|
1340
1439
|
})
|
|
1341
1440
|
}
|
|
1342
|
-
),
|
|
1441
|
+
), Xr = r.object(
|
|
1343
1442
|
{
|
|
1344
|
-
deleteSubmissionDraft:
|
|
1345
|
-
submissionDraftIds:
|
|
1346
|
-
errors:
|
|
1443
|
+
deleteSubmissionDraft: r.object({
|
|
1444
|
+
submissionDraftIds: r.array(r.string()).nullable(),
|
|
1445
|
+
errors: r.array(Le).nullable()
|
|
1347
1446
|
})
|
|
1348
1447
|
}
|
|
1349
1448
|
);
|
|
1350
|
-
function
|
|
1449
|
+
function rr({
|
|
1351
1450
|
courseId: t,
|
|
1352
1451
|
assignmentId: n,
|
|
1353
1452
|
userId: i,
|
|
1354
|
-
executeQuery:
|
|
1453
|
+
executeQuery: o,
|
|
1355
1454
|
enabled: l = !0
|
|
1356
1455
|
}) {
|
|
1357
|
-
return
|
|
1456
|
+
return Xe({
|
|
1358
1457
|
queryKey: ["assignment-review", "assignment", t, n, i],
|
|
1359
1458
|
queryFn: async () => {
|
|
1360
|
-
const c = await
|
|
1459
|
+
const c = await o(qi, {
|
|
1361
1460
|
courseId: t,
|
|
1362
1461
|
assignmentId: n,
|
|
1363
1462
|
userId: i
|
|
1364
|
-
}), d =
|
|
1463
|
+
}), d = Qi.parse(c);
|
|
1365
1464
|
return {
|
|
1366
1465
|
...d.legacyNode,
|
|
1367
1466
|
courseName: d.course.name
|
|
@@ -1370,37 +1469,37 @@ function Xi({
|
|
|
1370
1469
|
enabled: l
|
|
1371
1470
|
});
|
|
1372
1471
|
}
|
|
1373
|
-
function
|
|
1472
|
+
function or({
|
|
1374
1473
|
submissionId: t,
|
|
1375
1474
|
executeQuery: n,
|
|
1376
1475
|
enabled: i = !0
|
|
1377
1476
|
}) {
|
|
1378
|
-
return
|
|
1477
|
+
return Xe({
|
|
1379
1478
|
queryKey: ["assignment-review", "submissions", t],
|
|
1380
1479
|
queryFn: async () => {
|
|
1381
|
-
const
|
|
1382
|
-
return
|
|
1480
|
+
const o = await n(Yi, { submissionId: t });
|
|
1481
|
+
return tr.parse(o).node.submissionHistoriesConnection.nodes.slice().sort(
|
|
1383
1482
|
(c, d) => new Date(d.submittedAt).getTime() - new Date(c.submittedAt).getTime()
|
|
1384
1483
|
);
|
|
1385
1484
|
},
|
|
1386
1485
|
enabled: i
|
|
1387
1486
|
});
|
|
1388
1487
|
}
|
|
1389
|
-
function
|
|
1488
|
+
function ar(t) {
|
|
1390
1489
|
if (!t) return "";
|
|
1391
1490
|
const n = new Date(t);
|
|
1392
1491
|
return Number.isNaN(n.getTime()) ? "" : n.toLocaleDateString();
|
|
1393
1492
|
}
|
|
1394
|
-
function
|
|
1493
|
+
function sr({
|
|
1395
1494
|
submission: t,
|
|
1396
1495
|
isSelected: n,
|
|
1397
1496
|
isDraft: i = !1,
|
|
1398
|
-
pointsPossible:
|
|
1497
|
+
pointsPossible: o,
|
|
1399
1498
|
onClick: l
|
|
1400
1499
|
}) {
|
|
1401
|
-
const c =
|
|
1402
|
-
return /* @__PURE__ */
|
|
1403
|
-
|
|
1500
|
+
const c = V(), d = i ? c.submissionCurrentAttempt() : c.commentsAttempt({ number: t.attempt }), p = t.score != null && o != null ? `${t.score}/${o}` : null;
|
|
1501
|
+
return /* @__PURE__ */ a(
|
|
1502
|
+
Z,
|
|
1404
1503
|
{
|
|
1405
1504
|
as: "div",
|
|
1406
1505
|
padding: "small medium",
|
|
@@ -1418,49 +1517,49 @@ function Qi({
|
|
|
1418
1517
|
children: /* @__PURE__ */ S(b, { justifyItems: "space-between", alignItems: "center", children: [
|
|
1419
1518
|
/* @__PURE__ */ S(b, { direction: "column", gap: "xx-small", children: [
|
|
1420
1519
|
/* @__PURE__ */ S(b, { gap: "small", alignItems: "center", children: [
|
|
1421
|
-
/* @__PURE__ */
|
|
1422
|
-
i && /* @__PURE__ */
|
|
1520
|
+
/* @__PURE__ */ a(_, { weight: "bold", children: d }),
|
|
1521
|
+
i && /* @__PURE__ */ a(Et, { color: "info", children: c.submissionDraft() })
|
|
1423
1522
|
] }),
|
|
1424
|
-
!i && t.submittedAt && /* @__PURE__ */
|
|
1523
|
+
!i && t.submittedAt && /* @__PURE__ */ a(_, { size: "small", color: "secondary", children: ar(t.submittedAt) })
|
|
1425
1524
|
] }),
|
|
1426
|
-
p && /* @__PURE__ */
|
|
1525
|
+
p && /* @__PURE__ */ a(_, { weight: "bold", children: p })
|
|
1427
1526
|
] })
|
|
1428
1527
|
}
|
|
1429
1528
|
);
|
|
1430
1529
|
}
|
|
1431
|
-
function
|
|
1530
|
+
function lr({
|
|
1432
1531
|
submissionId: t,
|
|
1433
1532
|
selectedAttempt: n,
|
|
1434
1533
|
onAttemptSelect: i,
|
|
1435
|
-
pointsPossible:
|
|
1534
|
+
pointsPossible: o,
|
|
1436
1535
|
executeQuery: l
|
|
1437
1536
|
}) {
|
|
1438
|
-
const c =
|
|
1537
|
+
const c = V(), { data: d, isLoading: p, isError: m } = or({
|
|
1439
1538
|
submissionId: t,
|
|
1440
1539
|
executeQuery: l
|
|
1441
1540
|
});
|
|
1442
1541
|
if (p)
|
|
1443
|
-
return /* @__PURE__ */
|
|
1542
|
+
return /* @__PURE__ */ a(b, { justifyItems: "center", padding: "medium", children: /* @__PURE__ */ a(Ye, { renderTitle: c.navigationAttempts(), size: "small" }) });
|
|
1444
1543
|
if (m)
|
|
1445
|
-
return /* @__PURE__ */
|
|
1544
|
+
return /* @__PURE__ */ a(b, { justifyItems: "center", padding: "medium", children: /* @__PURE__ */ a(_, { color: "danger", children: c.submissionLoadAttemptsError() }) });
|
|
1446
1545
|
const f = (d == null ? void 0 : d.filter((h) => h.attempt > 0)) ?? [];
|
|
1447
|
-
return f.length === 0 ? /* @__PURE__ */
|
|
1448
|
-
|
|
1546
|
+
return f.length === 0 ? /* @__PURE__ */ a(b, { padding: "medium", children: /* @__PURE__ */ a(_, { color: "secondary", children: c.submissionNoAttempts() }) }) : /* @__PURE__ */ a(b, { direction: "column", gap: "x-small", padding: "none none medium none", children: f.map((h) => /* @__PURE__ */ a(
|
|
1547
|
+
sr,
|
|
1449
1548
|
{
|
|
1450
1549
|
submission: h,
|
|
1451
1550
|
isSelected: n === h.attempt,
|
|
1452
|
-
pointsPossible:
|
|
1551
|
+
pointsPossible: o,
|
|
1453
1552
|
onClick: () => i(h)
|
|
1454
1553
|
},
|
|
1455
1554
|
h.attempt
|
|
1456
1555
|
)) });
|
|
1457
1556
|
}
|
|
1458
|
-
function
|
|
1557
|
+
function Nn({
|
|
1459
1558
|
attachments: t,
|
|
1460
1559
|
size: n = "medium"
|
|
1461
1560
|
}) {
|
|
1462
|
-
return t.length === 0 ? null : /* @__PURE__ */
|
|
1463
|
-
|
|
1561
|
+
return t.length === 0 ? null : /* @__PURE__ */ a(b, { direction: "column", gap: "x-small", children: t.map((i) => /* @__PURE__ */ a(
|
|
1562
|
+
Z,
|
|
1464
1563
|
{
|
|
1465
1564
|
as: "div",
|
|
1466
1565
|
padding: n === "small" ? "x-small" : "small medium",
|
|
@@ -1468,85 +1567,85 @@ function wn({
|
|
|
1468
1567
|
borderWidth: "small",
|
|
1469
1568
|
borderRadius: "medium",
|
|
1470
1569
|
children: /* @__PURE__ */ S(b, { as: "div", gap: "small", width: "100%", justifyItems: "space-between", alignItems: "center", children: [
|
|
1471
|
-
/* @__PURE__ */
|
|
1472
|
-
/* @__PURE__ */
|
|
1570
|
+
/* @__PURE__ */ a(b.Item, { shouldShrink: !0, children: /* @__PURE__ */ a(An, { children: i.displayName }) }),
|
|
1571
|
+
/* @__PURE__ */ a(ti, { href: i.url, isWithinText: !1, renderIcon: /* @__PURE__ */ a(Wn, {}), children: /* @__PURE__ */ a(It, { children: `Download ${i.displayName}` }) })
|
|
1473
1572
|
] })
|
|
1474
1573
|
},
|
|
1475
1574
|
i.id
|
|
1476
1575
|
)) });
|
|
1477
1576
|
}
|
|
1478
|
-
function
|
|
1479
|
-
return /* @__PURE__ */
|
|
1577
|
+
function cr(t) {
|
|
1578
|
+
return /* @__PURE__ */ a("span", { dangerouslySetInnerHTML: { __html: wt(t) } });
|
|
1480
1579
|
}
|
|
1481
|
-
function
|
|
1580
|
+
function mr({
|
|
1482
1581
|
submission: t,
|
|
1483
1582
|
isLastAttempt: n = !0,
|
|
1484
1583
|
showAttemptLabel: i = !0,
|
|
1485
|
-
renderHTML:
|
|
1584
|
+
renderHTML: o
|
|
1486
1585
|
}) {
|
|
1487
|
-
const l =
|
|
1586
|
+
const l = V(), c = o ?? cr, 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 = Ve(() => {
|
|
1488
1587
|
if (!t) return [];
|
|
1489
1588
|
const C = [];
|
|
1490
1589
|
if (t.attachment && C.push(t.attachment), t.attachments)
|
|
1491
1590
|
for (const I of t.attachments)
|
|
1492
1591
|
C.some((w) => w.id === I.id) || C.push(I);
|
|
1493
1592
|
return C;
|
|
1494
|
-
}, [t]), h =
|
|
1495
|
-
return t ? /* @__PURE__ */
|
|
1496
|
-
i && !n && t.attempt != null && /* @__PURE__ */
|
|
1593
|
+
}, [t]), h = Ve(() => c((t == null ? void 0 : t.body) ?? ""), [t == null ? void 0 : t.body, c]);
|
|
1594
|
+
return t ? /* @__PURE__ */ a(Z, { as: "div", children: /* @__PURE__ */ S(b, { direction: "column", gap: "small", children: [
|
|
1595
|
+
i && !n && t.attempt != null && /* @__PURE__ */ a(_, { size: "small", weight: "bold", color: "secondary", children: l.submissionViewingAttempt({ number: t.attempt }) }),
|
|
1497
1596
|
/* @__PURE__ */ S(b, { gap: "x-small", alignItems: "center", children: [
|
|
1498
|
-
/* @__PURE__ */
|
|
1499
|
-
/* @__PURE__ */
|
|
1597
|
+
/* @__PURE__ */ a(qn, { color: "success" }),
|
|
1598
|
+
/* @__PURE__ */ a(_t, { level: "h3", children: m })
|
|
1500
1599
|
] }),
|
|
1501
1600
|
d && t.body && /* @__PURE__ */ S(b, { alignItems: "stretch", gap: "small", children: [
|
|
1502
|
-
/* @__PURE__ */
|
|
1503
|
-
/* @__PURE__ */
|
|
1601
|
+
/* @__PURE__ */ a(Z, { as: "div", width: "4px", background: "primary", borderRadius: "small" }),
|
|
1602
|
+
/* @__PURE__ */ a(Z, { as: "div", children: /* @__PURE__ */ a(_, { children: h }) })
|
|
1504
1603
|
] }),
|
|
1505
|
-
p && f.length > 0 && /* @__PURE__ */
|
|
1604
|
+
p && f.length > 0 && /* @__PURE__ */ a(Nn, { attachments: f })
|
|
1506
1605
|
] }) }) : null;
|
|
1507
1606
|
}
|
|
1508
|
-
function
|
|
1607
|
+
function ur(t) {
|
|
1509
1608
|
const n = new Date(t);
|
|
1510
1609
|
return Number.isNaN(n.getTime()) ? "" : n.toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" });
|
|
1511
1610
|
}
|
|
1512
|
-
function
|
|
1513
|
-
return /* @__PURE__ */
|
|
1611
|
+
function dr() {
|
|
1612
|
+
return /* @__PURE__ */ a(_, { color: "secondary", size: "small", children: "|" });
|
|
1514
1613
|
}
|
|
1515
|
-
function
|
|
1614
|
+
function fr({
|
|
1516
1615
|
score: t,
|
|
1517
1616
|
pointsPossible: n,
|
|
1518
1617
|
gradingType: i,
|
|
1519
|
-
dueAt:
|
|
1618
|
+
dueAt: o,
|
|
1520
1619
|
allowedAttempts: l,
|
|
1521
1620
|
currentAttempt: c,
|
|
1522
1621
|
isOverdue: d,
|
|
1523
1622
|
estimatedDuration: p,
|
|
1524
1623
|
labels: m
|
|
1525
1624
|
}) {
|
|
1526
|
-
const f =
|
|
1625
|
+
const f = V(), h = [];
|
|
1527
1626
|
return p && h.push(
|
|
1528
|
-
/* @__PURE__ */
|
|
1627
|
+
/* @__PURE__ */ a(_, { size: "small", children: (m == null ? void 0 : m.duration) ?? f.headerDuration({ minutes: p }) }, "duration")
|
|
1529
1628
|
), t != null && n != null ? h.push(
|
|
1530
|
-
/* @__PURE__ */
|
|
1629
|
+
/* @__PURE__ */ a(_, { size: "small", children: (m == null ? void 0 : m.score) ?? f.headerScore({ score: t, total: n }) }, "score")
|
|
1531
1630
|
) : n != null && i !== "not_graded" && h.push(
|
|
1532
|
-
/* @__PURE__ */
|
|
1631
|
+
/* @__PURE__ */ a(_, { size: "small", children: (m == null ? void 0 : m.pointsPossible) ?? f.headerPointsPossible({ points: n }) }, "points")
|
|
1533
1632
|
), l != null && (l === -1 ? h.push(
|
|
1534
|
-
/* @__PURE__ */
|
|
1633
|
+
/* @__PURE__ */ a(_, { size: "small", children: (m == null ? void 0 : m.attempts) ?? f.headerAttemptsUnlimited() }, "attempts")
|
|
1535
1634
|
) : c != null ? h.push(
|
|
1536
|
-
/* @__PURE__ */
|
|
1635
|
+
/* @__PURE__ */ a(_, { size: "small", children: (m == null ? void 0 : m.attempts) ?? f.headerAttemptOf({ current: c, total: l }) }, "attempts")
|
|
1537
1636
|
) : h.push(
|
|
1538
|
-
/* @__PURE__ */
|
|
1539
|
-
)),
|
|
1540
|
-
/* @__PURE__ */
|
|
1637
|
+
/* @__PURE__ */ a(_, { size: "small", children: (m == null ? void 0 : m.attempts) ?? f.headerAttemptsAllowed({ count: l }) }, "attempts")
|
|
1638
|
+
)), o && h.push(
|
|
1639
|
+
/* @__PURE__ */ a(_, { size: "small", children: (m == null ? void 0 : m.dueDate) ?? f.headerDueDate({ date: ur(o) }) }, "due")
|
|
1541
1640
|
), /* @__PURE__ */ S(b, { as: "div", direction: "row", alignItems: "center", gap: "small", children: [
|
|
1542
1641
|
h.map((C, I) => /* @__PURE__ */ S(b, { gap: "small", alignItems: "center", children: [
|
|
1543
|
-
I > 0 && /* @__PURE__ */
|
|
1642
|
+
I > 0 && /* @__PURE__ */ a(dr, {}),
|
|
1544
1643
|
C
|
|
1545
1644
|
] }, `item-${String(I)}`)),
|
|
1546
|
-
d && /* @__PURE__ */
|
|
1645
|
+
d && /* @__PURE__ */ a(Et, { color: "danger", children: (m == null ? void 0 : m.overdue) ?? f.headerOverdue() })
|
|
1547
1646
|
] });
|
|
1548
1647
|
}
|
|
1549
|
-
const
|
|
1648
|
+
const pr = se`
|
|
1550
1649
|
mutation CreateSubmissionComment(
|
|
1551
1650
|
$id: ID!
|
|
1552
1651
|
$submissionAttempt: Int!
|
|
@@ -1636,7 +1735,7 @@ const ro = ae`
|
|
|
1636
1735
|
mimeClass
|
|
1637
1736
|
url
|
|
1638
1737
|
}
|
|
1639
|
-
`,
|
|
1738
|
+
`, gr = se`
|
|
1640
1739
|
mutation MarkSubmissionCommentsRead(
|
|
1641
1740
|
$submissionId: ID!
|
|
1642
1741
|
$submissionCommentIds: [ID!]!
|
|
@@ -1653,7 +1752,7 @@ const ro = ae`
|
|
|
1653
1752
|
}
|
|
1654
1753
|
}
|
|
1655
1754
|
}
|
|
1656
|
-
`,
|
|
1755
|
+
`, Kr = se`
|
|
1657
1756
|
mutation CreateSubmission(
|
|
1658
1757
|
$assignmentLid: ID!
|
|
1659
1758
|
$submissionType: OnlineSubmissionType!
|
|
@@ -1681,7 +1780,7 @@ const ro = ae`
|
|
|
1681
1780
|
}
|
|
1682
1781
|
}
|
|
1683
1782
|
}
|
|
1684
|
-
`,
|
|
1783
|
+
`, Zr = se`
|
|
1685
1784
|
mutation CreateSubmissionDraft(
|
|
1686
1785
|
$submissionId: ID!
|
|
1687
1786
|
$submissionType: DraftableSubmissionType!
|
|
@@ -1707,7 +1806,7 @@ const ro = ae`
|
|
|
1707
1806
|
}
|
|
1708
1807
|
}
|
|
1709
1808
|
}
|
|
1710
|
-
`,
|
|
1809
|
+
`, Qr = se`
|
|
1711
1810
|
mutation DeleteSubmissionDraft($submissionId: ID!) {
|
|
1712
1811
|
deleteSubmissionDraft(input: { submissionId: $submissionId }) {
|
|
1713
1812
|
submissionDraftIds
|
|
@@ -1718,36 +1817,36 @@ const ro = ae`
|
|
|
1718
1817
|
}
|
|
1719
1818
|
}
|
|
1720
1819
|
`;
|
|
1721
|
-
function
|
|
1820
|
+
function hr({
|
|
1722
1821
|
executeQuery: t
|
|
1723
1822
|
}) {
|
|
1724
|
-
const n =
|
|
1725
|
-
return
|
|
1726
|
-
mutationFn: async ({ submissionId: i, attempt:
|
|
1727
|
-
const d = await t(
|
|
1823
|
+
const n = gn();
|
|
1824
|
+
return hn({
|
|
1825
|
+
mutationFn: async ({ submissionId: i, attempt: o, comment: l, fileIds: c }) => {
|
|
1826
|
+
const d = await t(pr, {
|
|
1728
1827
|
id: i,
|
|
1729
|
-
submissionAttempt:
|
|
1828
|
+
submissionAttempt: o,
|
|
1730
1829
|
comment: l,
|
|
1731
1830
|
fileIds: c
|
|
1732
1831
|
});
|
|
1733
|
-
return
|
|
1832
|
+
return nr.parse(d), d;
|
|
1734
1833
|
},
|
|
1735
|
-
onSuccess: (i,
|
|
1834
|
+
onSuccess: (i, o) => {
|
|
1736
1835
|
n.invalidateQueries({
|
|
1737
|
-
queryKey: ["assignment-review", "submission-comments",
|
|
1836
|
+
queryKey: ["assignment-review", "submission-comments", o.submissionId]
|
|
1738
1837
|
});
|
|
1739
1838
|
}
|
|
1740
1839
|
});
|
|
1741
1840
|
}
|
|
1742
|
-
function
|
|
1841
|
+
function br({
|
|
1743
1842
|
submissionId: t,
|
|
1744
1843
|
courseId: n,
|
|
1745
1844
|
pageParams: i,
|
|
1746
|
-
direction:
|
|
1845
|
+
direction: o,
|
|
1747
1846
|
executeQuery: l,
|
|
1748
1847
|
enabled: c
|
|
1749
1848
|
}) {
|
|
1750
|
-
return
|
|
1849
|
+
return Xe({
|
|
1751
1850
|
queryKey: [
|
|
1752
1851
|
"assignment-review",
|
|
1753
1852
|
"submission-comments",
|
|
@@ -1755,17 +1854,17 @@ function lo({
|
|
|
1755
1854
|
n,
|
|
1756
1855
|
i == null ? void 0 : i.startCursor,
|
|
1757
1856
|
i == null ? void 0 : i.endCursor,
|
|
1758
|
-
|
|
1857
|
+
o
|
|
1759
1858
|
],
|
|
1760
1859
|
queryFn: async () => {
|
|
1761
|
-
const d = await l(
|
|
1860
|
+
const d = await l(Vi, {
|
|
1762
1861
|
submissionId: t,
|
|
1763
1862
|
courseId: n,
|
|
1764
|
-
beforeCursor:
|
|
1765
|
-
afterCursor:
|
|
1766
|
-
first:
|
|
1767
|
-
last:
|
|
1768
|
-
}), p =
|
|
1863
|
+
beforeCursor: o === "prev" ? (i == null ? void 0 : i.startCursor) ?? null : null,
|
|
1864
|
+
afterCursor: o === "next" ? (i == null ? void 0 : i.endCursor) ?? null : null,
|
|
1865
|
+
first: o === "next" ? 5 : null,
|
|
1866
|
+
last: o === "prev" || !o ? 5 : null
|
|
1867
|
+
}), p = Ji.parse(d);
|
|
1769
1868
|
return {
|
|
1770
1869
|
comments: [...p.submissionComments.commentsConnection.nodes].sort(
|
|
1771
1870
|
(f, h) => new Date(f.createdAt).getTime() - new Date(h.createdAt).getTime()
|
|
@@ -1776,42 +1875,42 @@ function lo({
|
|
|
1776
1875
|
enabled: c ?? !!t
|
|
1777
1876
|
});
|
|
1778
1877
|
}
|
|
1779
|
-
function
|
|
1878
|
+
function Tr({
|
|
1780
1879
|
executeQuery: t
|
|
1781
1880
|
}) {
|
|
1782
|
-
const n =
|
|
1783
|
-
return
|
|
1784
|
-
mutationFn: async ({ submissionId: i, submissionCommentIds:
|
|
1881
|
+
const n = gn();
|
|
1882
|
+
return hn({
|
|
1883
|
+
mutationFn: async ({ submissionId: i, submissionCommentIds: o }) => {
|
|
1785
1884
|
const l = await t(
|
|
1786
|
-
|
|
1787
|
-
{ submissionId: i, submissionCommentIds:
|
|
1885
|
+
gr,
|
|
1886
|
+
{ submissionId: i, submissionCommentIds: o }
|
|
1788
1887
|
);
|
|
1789
|
-
return
|
|
1888
|
+
return ir.parse(l), l;
|
|
1790
1889
|
},
|
|
1791
|
-
onSuccess: (i,
|
|
1890
|
+
onSuccess: (i, o) => {
|
|
1792
1891
|
n.invalidateQueries({
|
|
1793
1892
|
queryKey: ["assignment-review", "assignment"],
|
|
1794
|
-
predicate: (l) => l.queryKey.includes(
|
|
1893
|
+
predicate: (l) => l.queryKey.includes(o.assignmentId)
|
|
1795
1894
|
});
|
|
1796
1895
|
}
|
|
1797
1896
|
});
|
|
1798
1897
|
}
|
|
1799
|
-
function
|
|
1800
|
-
return /* @__PURE__ */
|
|
1898
|
+
function yr(t) {
|
|
1899
|
+
return /* @__PURE__ */ a("span", { dangerouslySetInnerHTML: { __html: wt(t) } });
|
|
1801
1900
|
}
|
|
1802
|
-
function
|
|
1901
|
+
function Ar(t) {
|
|
1803
1902
|
const n = new Date(t);
|
|
1804
1903
|
return Number.isNaN(n.getTime()) ? "" : n.toLocaleString();
|
|
1805
1904
|
}
|
|
1806
|
-
function
|
|
1905
|
+
function Sr({
|
|
1807
1906
|
comment: t,
|
|
1808
1907
|
isFullWidth: n,
|
|
1809
1908
|
renderHTML: i
|
|
1810
1909
|
}) {
|
|
1811
1910
|
var m;
|
|
1812
|
-
const
|
|
1813
|
-
return /* @__PURE__ */
|
|
1814
|
-
|
|
1911
|
+
const o = V(), l = i ?? yr, c = ((m = t.author.courseRoles) == null ? void 0 : m.includes("StudentEnrollment")) ?? !1, d = Ve(() => l(t.htmlComment), [t.htmlComment, l]);
|
|
1912
|
+
return /* @__PURE__ */ a(
|
|
1913
|
+
Z,
|
|
1815
1914
|
{
|
|
1816
1915
|
as: "div",
|
|
1817
1916
|
padding: "small medium",
|
|
@@ -1822,15 +1921,15 @@ function fo({
|
|
|
1822
1921
|
children: /* @__PURE__ */ S(b, { as: "div", direction: "column", gap: "small", children: [
|
|
1823
1922
|
/* @__PURE__ */ S(b, { as: "div", direction: "column", gap: "xx-small", children: [
|
|
1824
1923
|
/* @__PURE__ */ S(b, { as: "div", justifyItems: "space-between", alignItems: "center", children: [
|
|
1825
|
-
/* @__PURE__ */
|
|
1826
|
-
!t.read && /* @__PURE__ */
|
|
1924
|
+
/* @__PURE__ */ a(b.Item, { shouldShrink: !0, children: /* @__PURE__ */ a(_, { weight: "bold", size: "medium", children: /* @__PURE__ */ a(An, { children: t.author.shortName }) }) }),
|
|
1925
|
+
!t.read && /* @__PURE__ */ a(_n, { type: "notification", standalone: !0, children: /* @__PURE__ */ a(It, { children: o.commentsUnreadSingle() }) })
|
|
1827
1926
|
] }),
|
|
1828
|
-
/* @__PURE__ */
|
|
1829
|
-
t.attempt > 0 && /* @__PURE__ */
|
|
1927
|
+
/* @__PURE__ */ a(_, { size: "small", color: "secondary", children: Ar(t.createdAt) }),
|
|
1928
|
+
t.attempt > 0 && /* @__PURE__ */ a(_, { size: "small", color: "secondary", children: o.commentsAttempt({ number: t.attempt }) })
|
|
1830
1929
|
] }),
|
|
1831
|
-
/* @__PURE__ */
|
|
1832
|
-
t.attachments && t.attachments.length > 0 && /* @__PURE__ */
|
|
1833
|
-
|
|
1930
|
+
/* @__PURE__ */ a(_, { size: "medium", children: d }),
|
|
1931
|
+
t.attachments && t.attachments.length > 0 && /* @__PURE__ */ a(
|
|
1932
|
+
Nn,
|
|
1834
1933
|
{
|
|
1835
1934
|
attachments: t.attachments.map((f) => ({
|
|
1836
1935
|
...f,
|
|
@@ -1844,43 +1943,43 @@ function fo({
|
|
|
1844
1943
|
}
|
|
1845
1944
|
);
|
|
1846
1945
|
}
|
|
1847
|
-
function
|
|
1946
|
+
function _r({
|
|
1848
1947
|
submissionId: t,
|
|
1849
1948
|
courseId: n,
|
|
1850
1949
|
assignmentId: i,
|
|
1851
|
-
attempt:
|
|
1950
|
+
attempt: o,
|
|
1852
1951
|
canPostComment: l,
|
|
1853
1952
|
onCommentPosted: c,
|
|
1854
1953
|
renderHTML: d,
|
|
1855
1954
|
executeQuery: p
|
|
1856
1955
|
}) {
|
|
1857
|
-
const m =
|
|
1956
|
+
const m = V(), [f, h] = Ee(""), [C, I] = Ee({}), w = Bn(/* @__PURE__ */ new Set()), { data: y, isLoading: X, isError: fe } = br({
|
|
1858
1957
|
submissionId: t,
|
|
1859
1958
|
courseId: n,
|
|
1860
1959
|
pageParams: C.pageParams,
|
|
1861
1960
|
direction: C.direction,
|
|
1862
1961
|
executeQuery: p
|
|
1863
|
-
}), le =
|
|
1864
|
-
|
|
1962
|
+
}), le = hr({ executeQuery: p }), M = Tr({ executeQuery: p });
|
|
1963
|
+
yt(() => {
|
|
1865
1964
|
if (!(y != null && y.comments) || y.comments.length === 0) return;
|
|
1866
|
-
const E = y.comments.filter((
|
|
1965
|
+
const E = y.comments.filter((v) => !v.read && !w.current.has(v._id)).filter((v) => {
|
|
1867
1966
|
var ee;
|
|
1868
|
-
return !((ee =
|
|
1869
|
-
}).map((
|
|
1967
|
+
return !((ee = v.author.courseRoles) != null && ee.includes("StudentEnrollment"));
|
|
1968
|
+
}).map((v) => v._id);
|
|
1870
1969
|
if (E.length > 0) {
|
|
1871
|
-
for (const
|
|
1872
|
-
w.current.add(
|
|
1970
|
+
for (const v of E)
|
|
1971
|
+
w.current.add(v);
|
|
1873
1972
|
M.mutate({ submissionId: t, assignmentId: i, submissionCommentIds: E });
|
|
1874
1973
|
}
|
|
1875
1974
|
}, [y == null ? void 0 : y.comments, t, i, M]);
|
|
1876
1975
|
const ie = y == null ? void 0 : y.comments.some(
|
|
1877
1976
|
(E) => {
|
|
1878
|
-
var
|
|
1879
|
-
return !((
|
|
1977
|
+
var v;
|
|
1978
|
+
return !((v = E.author.courseRoles) != null && v.includes("StudentEnrollment"));
|
|
1880
1979
|
}
|
|
1881
|
-
),
|
|
1980
|
+
), N = () => {
|
|
1882
1981
|
f.trim() && le.mutate(
|
|
1883
|
-
{ submissionId: t, attempt:
|
|
1982
|
+
{ submissionId: t, attempt: o, comment: f },
|
|
1884
1983
|
{
|
|
1885
1984
|
onSuccess: () => {
|
|
1886
1985
|
h(""), c == null || c();
|
|
@@ -1888,10 +1987,10 @@ function po({
|
|
|
1888
1987
|
}
|
|
1889
1988
|
);
|
|
1890
1989
|
}, ce = (y == null ? void 0 : y.pageInfo.hasNextPage) || (y == null ? void 0 : y.pageInfo.hasPreviousPage);
|
|
1891
|
-
return
|
|
1990
|
+
return X || !y && !fe ? /* @__PURE__ */ a(b, { justifyItems: "center", padding: "medium", children: /* @__PURE__ */ a(Ye, { renderTitle: m.commentsPanelTitle(), size: "small" }) }) : fe ? /* @__PURE__ */ a(b, { justifyItems: "center", padding: "medium", children: /* @__PURE__ */ a(_, { color: "danger", children: m.commentsLoadError() }) }) : /* @__PURE__ */ S(b, { as: "div", direction: "column", justifyItems: "space-between", height: "100%", children: [
|
|
1892
1991
|
/* @__PURE__ */ S(b, { as: "div", direction: "column", children: [
|
|
1893
|
-
y.comments.length === 0 ? /* @__PURE__ */
|
|
1894
|
-
|
|
1992
|
+
y.comments.length === 0 ? /* @__PURE__ */ a(b, { justifyItems: "center", padding: "medium", children: /* @__PURE__ */ a(_, { color: "secondary", children: m.commentsEmpty() }) }) : /* @__PURE__ */ a(b, { direction: "column", gap: "x-small", children: y.comments.map((E) => /* @__PURE__ */ a(
|
|
1993
|
+
Sr,
|
|
1895
1994
|
{
|
|
1896
1995
|
comment: E,
|
|
1897
1996
|
isFullWidth: !ie,
|
|
@@ -1900,20 +1999,20 @@ function po({
|
|
|
1900
1999
|
E._id
|
|
1901
2000
|
)) }),
|
|
1902
2001
|
ce && /* @__PURE__ */ S(b, { justifyItems: "space-between", padding: "small none", children: [
|
|
1903
|
-
/* @__PURE__ */
|
|
2002
|
+
/* @__PURE__ */ a(
|
|
1904
2003
|
$,
|
|
1905
2004
|
{
|
|
1906
|
-
renderIcon: () => /* @__PURE__ */
|
|
2005
|
+
renderIcon: () => /* @__PURE__ */ a(Vn, {}),
|
|
1907
2006
|
size: "small",
|
|
1908
2007
|
interaction: y.pageInfo.hasPreviousPage ? "enabled" : "disabled",
|
|
1909
2008
|
onClick: () => I({ pageParams: y.pageInfo, direction: "prev" }),
|
|
1910
2009
|
children: m.commentsPreviousComments()
|
|
1911
2010
|
}
|
|
1912
2011
|
),
|
|
1913
|
-
/* @__PURE__ */
|
|
2012
|
+
/* @__PURE__ */ a(
|
|
1914
2013
|
$,
|
|
1915
2014
|
{
|
|
1916
|
-
renderIcon: () => /* @__PURE__ */
|
|
2015
|
+
renderIcon: () => /* @__PURE__ */ a(Yn, {}),
|
|
1917
2016
|
size: "small",
|
|
1918
2017
|
interaction: y.pageInfo.hasNextPage ? "enabled" : "disabled",
|
|
1919
2018
|
onClick: () => I({ pageParams: y.pageInfo, direction: "next" }),
|
|
@@ -1923,20 +2022,20 @@ function po({
|
|
|
1923
2022
|
] })
|
|
1924
2023
|
] }),
|
|
1925
2024
|
l && /* @__PURE__ */ S(b, { as: "div", direction: "column", gap: "small", padding: "small none medium", children: [
|
|
1926
|
-
/* @__PURE__ */
|
|
1927
|
-
|
|
2025
|
+
/* @__PURE__ */ a(
|
|
2026
|
+
Sn,
|
|
1928
2027
|
{
|
|
1929
2028
|
resize: "vertical",
|
|
1930
|
-
label: /* @__PURE__ */
|
|
2029
|
+
label: /* @__PURE__ */ a(_, { weight: "bold", size: "medium", children: m.commentsPlaceholder() }),
|
|
1931
2030
|
value: f,
|
|
1932
2031
|
onChange: (E) => h(E.target.value)
|
|
1933
2032
|
}
|
|
1934
2033
|
),
|
|
1935
|
-
/* @__PURE__ */
|
|
2034
|
+
/* @__PURE__ */ a(
|
|
1936
2035
|
$,
|
|
1937
2036
|
{
|
|
1938
2037
|
color: "primary",
|
|
1939
|
-
onClick:
|
|
2038
|
+
onClick: N,
|
|
1940
2039
|
interaction: f.trim().length > 0 && !le.isPending ? "enabled" : "disabled",
|
|
1941
2040
|
children: m.commentsPost()
|
|
1942
2041
|
}
|
|
@@ -1944,113 +2043,113 @@ function po({
|
|
|
1944
2043
|
] })
|
|
1945
2044
|
] });
|
|
1946
2045
|
}
|
|
1947
|
-
function
|
|
1948
|
-
return /* @__PURE__ */
|
|
2046
|
+
function Er(t) {
|
|
2047
|
+
return /* @__PURE__ */ a("span", { dangerouslySetInnerHTML: { __html: wt(t) } });
|
|
1949
2048
|
}
|
|
1950
|
-
function
|
|
2049
|
+
function Jr({
|
|
1951
2050
|
courseId: t,
|
|
1952
2051
|
assignmentId: n,
|
|
1953
2052
|
userId: i,
|
|
1954
|
-
feedbackMode:
|
|
2053
|
+
feedbackMode: o = !1,
|
|
1955
2054
|
onError: l,
|
|
1956
2055
|
renderHTML: c,
|
|
1957
2056
|
renderPanels: d,
|
|
1958
2057
|
executeQuery: p
|
|
1959
2058
|
}) {
|
|
1960
|
-
const m =
|
|
2059
|
+
const m = V(), f = c ?? Er, {
|
|
1961
2060
|
data: h,
|
|
1962
2061
|
isLoading: C,
|
|
1963
2062
|
isError: I,
|
|
1964
2063
|
error: w
|
|
1965
|
-
} =
|
|
1966
|
-
|
|
1967
|
-
), M =
|
|
2064
|
+
} = rr({ courseId: t, assignmentId: n, userId: i, executeQuery: p }), [y, X] = Ee(null), [fe, le] = Ee(
|
|
2065
|
+
o ? "comments" : null
|
|
2066
|
+
), M = Ve(
|
|
1968
2067
|
() => (h == null ? void 0 : h.submissionsConnection.nodes[0]) ?? null,
|
|
1969
2068
|
[h]
|
|
1970
|
-
), ie = M != null && M.attempt > 0,
|
|
1971
|
-
|
|
2069
|
+
), ie = M != null && M.attempt > 0, N = y ?? M, ce = y == null || y.attempt === (M == null ? void 0 : M.attempt), E = ie && ce, v = ((h == null ? void 0 : h.allowedAttempts) ?? 0) !== 1, ee = Gn((Qe) => {
|
|
2070
|
+
X(Qe);
|
|
1972
2071
|
}, []);
|
|
1973
|
-
if (
|
|
2072
|
+
if (yt(() => {
|
|
1974
2073
|
I && w && l && l(w);
|
|
1975
|
-
}, [I, w, l]),
|
|
1976
|
-
|
|
1977
|
-
}, [
|
|
1978
|
-
return /* @__PURE__ */
|
|
2074
|
+
}, [I, w, l]), yt(() => {
|
|
2075
|
+
o && ie && le("comments");
|
|
2076
|
+
}, [o, ie]), C)
|
|
2077
|
+
return /* @__PURE__ */ a(b, { justifyItems: "center", padding: "large", children: /* @__PURE__ */ a(Ye, { renderTitle: m.progressLoading() }) });
|
|
1979
2078
|
if (I || !h)
|
|
1980
|
-
return /* @__PURE__ */
|
|
1981
|
-
const Ie = !!h.dueAt && new Date(h.dueAt) < /* @__PURE__ */ new Date() && !ie, xe = M ? /* @__PURE__ */
|
|
1982
|
-
|
|
2079
|
+
return /* @__PURE__ */ a(b, { justifyItems: "center", padding: "large", children: /* @__PURE__ */ a(_, { color: "danger", children: m.assignmentLoadError() }) });
|
|
2080
|
+
const Ie = !!h.dueAt && new Date(h.dueAt) < /* @__PURE__ */ new Date() && !ie, xe = M ? /* @__PURE__ */ a(
|
|
2081
|
+
_r,
|
|
1983
2082
|
{
|
|
1984
2083
|
submissionId: M.id,
|
|
1985
2084
|
courseId: t,
|
|
1986
2085
|
assignmentId: n,
|
|
1987
|
-
attempt: (
|
|
2086
|
+
attempt: (N == null ? void 0 : N.attempt) ?? 0,
|
|
1988
2087
|
canPostComment: E,
|
|
1989
2088
|
renderHTML: f,
|
|
1990
2089
|
executeQuery: p
|
|
1991
2090
|
}
|
|
1992
|
-
) : null,
|
|
1993
|
-
|
|
2091
|
+
) : null, Ke = v && M ? /* @__PURE__ */ a(
|
|
2092
|
+
lr,
|
|
1994
2093
|
{
|
|
1995
2094
|
submissionId: M.id,
|
|
1996
|
-
selectedAttempt:
|
|
2095
|
+
selectedAttempt: N == null ? void 0 : N.attempt,
|
|
1997
2096
|
onAttemptSelect: ee,
|
|
1998
2097
|
pointsPossible: h.pointsPossible,
|
|
1999
2098
|
executeQuery: p
|
|
2000
2099
|
}
|
|
2001
|
-
) : null,
|
|
2100
|
+
) : null, Ze = {
|
|
2002
2101
|
commentsPanel: xe,
|
|
2003
|
-
attemptsPanel:
|
|
2102
|
+
attemptsPanel: Ke,
|
|
2004
2103
|
activePanel: fe,
|
|
2005
2104
|
setActivePanel: le,
|
|
2006
2105
|
unreadCommentCount: (M == null ? void 0 : M.unreadCommentCount) ?? 0,
|
|
2007
|
-
hasMultipleAttempts:
|
|
2106
|
+
hasMultipleAttempts: v
|
|
2008
2107
|
};
|
|
2009
2108
|
return /* @__PURE__ */ S(b, { direction: "column", gap: "medium", children: [
|
|
2010
|
-
/* @__PURE__ */
|
|
2011
|
-
|
|
2109
|
+
/* @__PURE__ */ a(
|
|
2110
|
+
fr,
|
|
2012
2111
|
{
|
|
2013
|
-
score:
|
|
2112
|
+
score: N == null ? void 0 : N.score,
|
|
2014
2113
|
pointsPossible: h.pointsPossible,
|
|
2015
2114
|
gradingType: h.gradingType,
|
|
2016
2115
|
dueAt: h.dueAt,
|
|
2017
2116
|
allowedAttempts: h.allowedAttempts,
|
|
2018
|
-
currentAttempt:
|
|
2117
|
+
currentAttempt: N == null ? void 0 : N.attempt,
|
|
2019
2118
|
isOverdue: Ie
|
|
2020
2119
|
}
|
|
2021
2120
|
),
|
|
2022
|
-
h.description && /* @__PURE__ */ S(
|
|
2023
|
-
/* @__PURE__ */
|
|
2024
|
-
/* @__PURE__ */
|
|
2121
|
+
h.description && /* @__PURE__ */ S(Z, { as: "div", children: [
|
|
2122
|
+
/* @__PURE__ */ a(_t, { level: "h3", children: m.assignmentInstructions() }),
|
|
2123
|
+
/* @__PURE__ */ a(Z, { as: "div", margin: "small none large none", children: f(h.description) })
|
|
2025
2124
|
] }),
|
|
2026
|
-
/* @__PURE__ */
|
|
2027
|
-
|
|
2125
|
+
/* @__PURE__ */ a(
|
|
2126
|
+
mr,
|
|
2028
2127
|
{
|
|
2029
|
-
submission:
|
|
2128
|
+
submission: N,
|
|
2030
2129
|
isLastAttempt: ce,
|
|
2031
2130
|
renderHTML: f
|
|
2032
2131
|
}
|
|
2033
2132
|
),
|
|
2034
|
-
d ? d(
|
|
2133
|
+
d ? d(Ze) : null
|
|
2035
2134
|
] });
|
|
2036
2135
|
}
|
|
2037
|
-
function
|
|
2136
|
+
function eo({
|
|
2038
2137
|
existingFiles: t,
|
|
2039
2138
|
onSubmit: n,
|
|
2040
2139
|
onSaveDraft: i,
|
|
2041
|
-
onDiscardDraft:
|
|
2140
|
+
onDiscardDraft: o,
|
|
2042
2141
|
onSelectFiles: l,
|
|
2043
2142
|
isSubmitting: c = !1
|
|
2044
2143
|
}) {
|
|
2045
|
-
const d =
|
|
2144
|
+
const d = V(), [p, m] = Ee(t ?? []), f = async () => {
|
|
2046
2145
|
const w = await l();
|
|
2047
2146
|
m((y) => [...y, ...w]);
|
|
2048
2147
|
}, h = (w) => {
|
|
2049
|
-
m((y) => y.filter((
|
|
2148
|
+
m((y) => y.filter((X) => X.id !== w));
|
|
2050
2149
|
}, C = p.map((w) => w.id), I = p.length > 0 && !c;
|
|
2051
2150
|
return /* @__PURE__ */ S(b, { direction: "column", gap: "medium", children: [
|
|
2052
|
-
p.length > 0 && /* @__PURE__ */
|
|
2053
|
-
|
|
2151
|
+
p.length > 0 && /* @__PURE__ */ a(b, { direction: "column", gap: "x-small", children: p.map((w) => /* @__PURE__ */ a(
|
|
2152
|
+
Z,
|
|
2054
2153
|
{
|
|
2055
2154
|
as: "div",
|
|
2056
2155
|
padding: "small",
|
|
@@ -2058,12 +2157,12 @@ function qo({
|
|
|
2058
2157
|
borderColor: "primary",
|
|
2059
2158
|
borderRadius: "medium",
|
|
2060
2159
|
children: /* @__PURE__ */ S(b, { justifyItems: "space-between", alignItems: "center", children: [
|
|
2061
|
-
/* @__PURE__ */
|
|
2062
|
-
/* @__PURE__ */
|
|
2160
|
+
/* @__PURE__ */ a(_, { children: w.name }),
|
|
2161
|
+
/* @__PURE__ */ a(
|
|
2063
2162
|
$,
|
|
2064
2163
|
{
|
|
2065
2164
|
size: "small",
|
|
2066
|
-
renderIcon: () => /* @__PURE__ */
|
|
2165
|
+
renderIcon: () => /* @__PURE__ */ a(Xn, {}),
|
|
2067
2166
|
onClick: () => h(w.id),
|
|
2068
2167
|
children: /* @__PURE__ */ S("span", { className: "screenreader-only", children: [
|
|
2069
2168
|
"Remove ",
|
|
@@ -2075,9 +2174,9 @@ function qo({
|
|
|
2075
2174
|
},
|
|
2076
2175
|
w.id
|
|
2077
2176
|
)) }),
|
|
2078
|
-
/* @__PURE__ */
|
|
2177
|
+
/* @__PURE__ */ a($, { onClick: f, children: d.submissionFormAddFiles() }),
|
|
2079
2178
|
/* @__PURE__ */ S(b, { gap: "small", children: [
|
|
2080
|
-
/* @__PURE__ */
|
|
2179
|
+
/* @__PURE__ */ a(
|
|
2081
2180
|
$,
|
|
2082
2181
|
{
|
|
2083
2182
|
color: "primary",
|
|
@@ -2086,7 +2185,7 @@ function qo({
|
|
|
2086
2185
|
children: d.submissionFormSubmit()
|
|
2087
2186
|
}
|
|
2088
2187
|
),
|
|
2089
|
-
i && /* @__PURE__ */
|
|
2188
|
+
i && /* @__PURE__ */ a(
|
|
2090
2189
|
$,
|
|
2091
2190
|
{
|
|
2092
2191
|
onClick: () => i(C),
|
|
@@ -2094,101 +2193,101 @@ function qo({
|
|
|
2094
2193
|
children: d.submissionFormSaveDraft()
|
|
2095
2194
|
}
|
|
2096
2195
|
),
|
|
2097
|
-
|
|
2196
|
+
o && t && t.length > 0 && /* @__PURE__ */ a($, { color: "primary-inverse", onClick: o, children: d.submissionFormDiscardDraft() })
|
|
2098
2197
|
] })
|
|
2099
2198
|
] });
|
|
2100
2199
|
}
|
|
2101
|
-
function
|
|
2200
|
+
function to({
|
|
2102
2201
|
prevItem: t,
|
|
2103
2202
|
nextItem: n,
|
|
2104
2203
|
onNavigatePrev: i,
|
|
2105
|
-
onNavigateNext:
|
|
2204
|
+
onNavigateNext: o,
|
|
2106
2205
|
labels: l
|
|
2107
2206
|
}) {
|
|
2108
|
-
const c =
|
|
2207
|
+
const c = V();
|
|
2109
2208
|
if (!t && !n)
|
|
2110
2209
|
return null;
|
|
2111
2210
|
const d = (l == null ? void 0 : l.previous) ?? c.navigationPrevious(), p = (l == null ? void 0 : l.next) ?? c.navigationNext();
|
|
2112
2211
|
return /* @__PURE__ */ S(b, { justifyItems: "space-between", padding: "small none", children: [
|
|
2113
|
-
t ? /* @__PURE__ */
|
|
2212
|
+
t ? /* @__PURE__ */ a(
|
|
2114
2213
|
$,
|
|
2115
2214
|
{
|
|
2116
|
-
renderIcon: () => /* @__PURE__ */
|
|
2215
|
+
renderIcon: () => /* @__PURE__ */ a(bn, {}),
|
|
2117
2216
|
onClick: i,
|
|
2118
2217
|
"aria-label": `${d}: ${t.title}`,
|
|
2119
2218
|
children: d
|
|
2120
2219
|
}
|
|
2121
|
-
) : /* @__PURE__ */
|
|
2122
|
-
n ? /* @__PURE__ */
|
|
2220
|
+
) : /* @__PURE__ */ a("div", {}),
|
|
2221
|
+
n ? /* @__PURE__ */ a(
|
|
2123
2222
|
$,
|
|
2124
2223
|
{
|
|
2125
|
-
renderIcon: () => /* @__PURE__ */
|
|
2126
|
-
onClick:
|
|
2224
|
+
renderIcon: () => /* @__PURE__ */ a(Tn, {}),
|
|
2225
|
+
onClick: o,
|
|
2127
2226
|
"aria-label": `${p}: ${n.title}`,
|
|
2128
2227
|
children: p
|
|
2129
2228
|
}
|
|
2130
|
-
) : /* @__PURE__ */
|
|
2229
|
+
) : /* @__PURE__ */ a("div", {})
|
|
2131
2230
|
] });
|
|
2132
2231
|
}
|
|
2133
|
-
function
|
|
2232
|
+
function Ir(t) {
|
|
2134
2233
|
switch (t) {
|
|
2135
2234
|
case "Assignment":
|
|
2136
|
-
return /* @__PURE__ */
|
|
2235
|
+
return /* @__PURE__ */ a(ei, {});
|
|
2137
2236
|
case "Quiz":
|
|
2138
|
-
return /* @__PURE__ */
|
|
2237
|
+
return /* @__PURE__ */ a(Jn, {});
|
|
2139
2238
|
case "Discussion":
|
|
2140
|
-
return /* @__PURE__ */
|
|
2239
|
+
return /* @__PURE__ */ a(Qn, {});
|
|
2141
2240
|
case "Page":
|
|
2142
|
-
return /* @__PURE__ */
|
|
2241
|
+
return /* @__PURE__ */ a(Zt, {});
|
|
2143
2242
|
case "ExternalUrl":
|
|
2144
2243
|
case "ExternalTool":
|
|
2145
|
-
return /* @__PURE__ */
|
|
2244
|
+
return /* @__PURE__ */ a(Zn, {});
|
|
2146
2245
|
default:
|
|
2147
|
-
return /* @__PURE__ */
|
|
2246
|
+
return /* @__PURE__ */ a(Zt, {});
|
|
2148
2247
|
}
|
|
2149
2248
|
}
|
|
2150
|
-
function
|
|
2249
|
+
function wr({
|
|
2151
2250
|
item: t,
|
|
2152
2251
|
isSelected: n,
|
|
2153
2252
|
isLoadingItem: i,
|
|
2154
|
-
onClick:
|
|
2253
|
+
onClick: o
|
|
2155
2254
|
}) {
|
|
2156
2255
|
var m, f, h, C, I;
|
|
2157
|
-
const l =
|
|
2158
|
-
|
|
2256
|
+
const l = V(), 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__ */ a(
|
|
2257
|
+
Z,
|
|
2159
2258
|
{
|
|
2160
2259
|
as: "div",
|
|
2161
2260
|
padding: "small",
|
|
2162
2261
|
background: n ? "secondary" : "primary",
|
|
2163
2262
|
borderRadius: "small",
|
|
2164
2263
|
cursor: c ? "not-allowed" : "pointer",
|
|
2165
|
-
onClick: c ? void 0 :
|
|
2264
|
+
onClick: c ? void 0 : o,
|
|
2166
2265
|
role: c ? void 0 : "button",
|
|
2167
2266
|
tabIndex: c ? void 0 : 0,
|
|
2168
2267
|
onKeyDown: c ? void 0 : (w) => {
|
|
2169
|
-
(w.key === "Enter" || w.key === " ") && (w.preventDefault(),
|
|
2268
|
+
(w.key === "Enter" || w.key === " ") && (w.preventDefault(), o());
|
|
2170
2269
|
},
|
|
2171
2270
|
children: /* @__PURE__ */ S(b, { gap: "small", alignItems: "center", children: [
|
|
2172
|
-
/* @__PURE__ */
|
|
2173
|
-
/* @__PURE__ */
|
|
2174
|
-
/* @__PURE__ */
|
|
2175
|
-
((h = t.content_details) == null ? void 0 : h.due_at) && /* @__PURE__ */
|
|
2271
|
+
/* @__PURE__ */ a(b.Item, { children: c ? /* @__PURE__ */ a(yn, {}) : Ir(t.type) }),
|
|
2272
|
+
/* @__PURE__ */ a(b.Item, { shouldGrow: !0, shouldShrink: !0, children: /* @__PURE__ */ S(b, { direction: "column", gap: "xx-small", children: [
|
|
2273
|
+
/* @__PURE__ */ a(_, { weight: n ? "bold" : "normal", size: "small", children: t.title }),
|
|
2274
|
+
((h = t.content_details) == null ? void 0 : h.due_at) && /* @__PURE__ */ a(_, { size: "x-small", color: "secondary", children: l.progressDueDate({
|
|
2176
2275
|
date: new Date(t.content_details.due_at).toLocaleDateString()
|
|
2177
2276
|
}) }),
|
|
2178
|
-
((C = t.content_details) == null ? void 0 : C.points_possible) != null && /* @__PURE__ */
|
|
2277
|
+
((C = t.content_details) == null ? void 0 : C.points_possible) != null && /* @__PURE__ */ a(_, { size: "x-small", color: "secondary", children: l.progressPoints({ points: t.content_details.points_possible }) })
|
|
2179
2278
|
] }) }),
|
|
2180
|
-
i && /* @__PURE__ */
|
|
2181
|
-
((I = t.completion_requirement) == null ? void 0 : I.completed) && /* @__PURE__ */
|
|
2279
|
+
i && /* @__PURE__ */ a(Ye, { size: "x-small", renderTitle: l.progressLoading() }),
|
|
2280
|
+
((I = t.completion_requirement) == null ? void 0 : I.completed) && /* @__PURE__ */ a(_, { color: "success", size: "small", children: "✓" })
|
|
2182
2281
|
] })
|
|
2183
2282
|
}
|
|
2184
2283
|
);
|
|
2185
|
-
return c && d ? /* @__PURE__ */
|
|
2284
|
+
return c && d ? /* @__PURE__ */ a(ii, { renderTip: d, placement: "end", children: p }) : p;
|
|
2186
2285
|
}
|
|
2187
|
-
function
|
|
2286
|
+
function no({
|
|
2188
2287
|
module: t,
|
|
2189
2288
|
currentItemId: n,
|
|
2190
2289
|
onItemClick: i,
|
|
2191
|
-
onClose:
|
|
2290
|
+
onClose: o,
|
|
2192
2291
|
onNavigateModule: l,
|
|
2193
2292
|
hasPrevModule: c = !1,
|
|
2194
2293
|
hasNextModule: d = !1,
|
|
@@ -2196,21 +2295,21 @@ function Vo({
|
|
|
2196
2295
|
title: m
|
|
2197
2296
|
}) {
|
|
2198
2297
|
var C;
|
|
2199
|
-
const f =
|
|
2298
|
+
const f = V(), h = m ?? f.navigationMyProgress();
|
|
2200
2299
|
return /* @__PURE__ */ S(b, { direction: "column", height: "100%", children: [
|
|
2201
2300
|
/* @__PURE__ */ S(b, { justifyItems: "space-between", alignItems: "center", padding: "small", children: [
|
|
2202
|
-
/* @__PURE__ */
|
|
2203
|
-
/* @__PURE__ */
|
|
2301
|
+
/* @__PURE__ */ a(_t, { level: "h3", children: h }),
|
|
2302
|
+
/* @__PURE__ */ a(ni, { screenReaderLabel: f.navigationClosePanel(), onClick: o, size: "small", children: /* @__PURE__ */ a(Kn, {}) })
|
|
2204
2303
|
] }),
|
|
2205
|
-
/* @__PURE__ */ S(
|
|
2206
|
-
t.state === "locked" && /* @__PURE__ */
|
|
2207
|
-
/* @__PURE__ */
|
|
2304
|
+
/* @__PURE__ */ S(Z, { as: "div", padding: "none small", overflowY: "auto", children: [
|
|
2305
|
+
t.state === "locked" && /* @__PURE__ */ a(b, { padding: "none none small", children: /* @__PURE__ */ S(Et, { color: "warning", children: [
|
|
2306
|
+
/* @__PURE__ */ a(yn, {}),
|
|
2208
2307
|
" ",
|
|
2209
2308
|
f.progressLocked()
|
|
2210
2309
|
] }) }),
|
|
2211
|
-
/* @__PURE__ */
|
|
2212
|
-
/* @__PURE__ */
|
|
2213
|
-
|
|
2310
|
+
/* @__PURE__ */ a(_, { weight: "bold", size: "medium", children: t.name }),
|
|
2311
|
+
/* @__PURE__ */ a(b, { direction: "column", gap: "xx-small", padding: "small none", children: (C = t.items) == null ? void 0 : C.map((I) => /* @__PURE__ */ a(
|
|
2312
|
+
wr,
|
|
2214
2313
|
{
|
|
2215
2314
|
item: I,
|
|
2216
2315
|
isSelected: I.id === n,
|
|
@@ -2221,10 +2320,10 @@ function Vo({
|
|
|
2221
2320
|
)) })
|
|
2222
2321
|
] }),
|
|
2223
2322
|
l && /* @__PURE__ */ S(b, { justifyItems: "space-between", padding: "small", children: [
|
|
2224
|
-
/* @__PURE__ */
|
|
2323
|
+
/* @__PURE__ */ a(
|
|
2225
2324
|
$,
|
|
2226
2325
|
{
|
|
2227
|
-
renderIcon: () => /* @__PURE__ */
|
|
2326
|
+
renderIcon: () => /* @__PURE__ */ a(bn, {}),
|
|
2228
2327
|
size: "small",
|
|
2229
2328
|
interaction: c ? "enabled" : "disabled",
|
|
2230
2329
|
onClick: () => l("prev"),
|
|
@@ -2232,10 +2331,10 @@ function Vo({
|
|
|
2232
2331
|
children: f.navigationPrevious()
|
|
2233
2332
|
}
|
|
2234
2333
|
),
|
|
2235
|
-
/* @__PURE__ */
|
|
2334
|
+
/* @__PURE__ */ a(
|
|
2236
2335
|
$,
|
|
2237
2336
|
{
|
|
2238
|
-
renderIcon: () => /* @__PURE__ */
|
|
2337
|
+
renderIcon: () => /* @__PURE__ */ a(Tn, {}),
|
|
2239
2338
|
size: "small",
|
|
2240
2339
|
interaction: d ? "enabled" : "disabled",
|
|
2241
2340
|
onClick: () => l("next"),
|
|
@@ -2246,17 +2345,17 @@ function Vo({
|
|
|
2246
2345
|
] })
|
|
2247
2346
|
] });
|
|
2248
2347
|
}
|
|
2249
|
-
function
|
|
2348
|
+
function io({
|
|
2250
2349
|
existingDraft: t,
|
|
2251
2350
|
onSubmit: n,
|
|
2252
2351
|
onSaveDraft: i,
|
|
2253
|
-
onDiscardDraft:
|
|
2352
|
+
onDiscardDraft: o,
|
|
2254
2353
|
isSubmitting: l = !1
|
|
2255
2354
|
}) {
|
|
2256
|
-
const c =
|
|
2355
|
+
const c = V(), [d, p] = Ee(t ?? ""), m = d.trim().length > 0 && !l;
|
|
2257
2356
|
return /* @__PURE__ */ S(b, { direction: "column", gap: "medium", children: [
|
|
2258
|
-
/* @__PURE__ */
|
|
2259
|
-
|
|
2357
|
+
/* @__PURE__ */ a(
|
|
2358
|
+
Sn,
|
|
2260
2359
|
{
|
|
2261
2360
|
label: c.submissionTextHeading(),
|
|
2262
2361
|
value: d,
|
|
@@ -2266,7 +2365,7 @@ function Xo({
|
|
|
2266
2365
|
}
|
|
2267
2366
|
),
|
|
2268
2367
|
/* @__PURE__ */ S(b, { gap: "small", children: [
|
|
2269
|
-
/* @__PURE__ */
|
|
2368
|
+
/* @__PURE__ */ a(
|
|
2270
2369
|
$,
|
|
2271
2370
|
{
|
|
2272
2371
|
color: "primary",
|
|
@@ -2275,7 +2374,7 @@ function Xo({
|
|
|
2275
2374
|
children: c.submissionFormSubmit()
|
|
2276
2375
|
}
|
|
2277
2376
|
),
|
|
2278
|
-
i && /* @__PURE__ */
|
|
2377
|
+
i && /* @__PURE__ */ a(
|
|
2279
2378
|
$,
|
|
2280
2379
|
{
|
|
2281
2380
|
onClick: () => i(d),
|
|
@@ -2283,68 +2382,68 @@ function Xo({
|
|
|
2283
2382
|
children: c.submissionFormSaveDraft()
|
|
2284
2383
|
}
|
|
2285
2384
|
),
|
|
2286
|
-
|
|
2385
|
+
o && t && /* @__PURE__ */ a($, { color: "primary-inverse", onClick: o, children: c.submissionFormDiscardDraft() })
|
|
2287
2386
|
] })
|
|
2288
2387
|
] });
|
|
2289
2388
|
}
|
|
2290
|
-
function
|
|
2389
|
+
function ro({
|
|
2291
2390
|
unreadCount: t
|
|
2292
2391
|
}) {
|
|
2293
|
-
const n =
|
|
2392
|
+
const n = V();
|
|
2294
2393
|
if (t === 0)
|
|
2295
2394
|
return null;
|
|
2296
2395
|
const i = t === 1 ? n.commentsUnreadSingle() : n.commentsUnread({ count: t });
|
|
2297
|
-
return /* @__PURE__ */
|
|
2396
|
+
return /* @__PURE__ */ a(_n, { count: t, standalone: !0, children: /* @__PURE__ */ a(It, { children: i }) });
|
|
2298
2397
|
}
|
|
2299
|
-
function
|
|
2398
|
+
function oo({
|
|
2300
2399
|
courseId: t,
|
|
2301
2400
|
moduleItemId: n,
|
|
2302
2401
|
fetchSequence: i,
|
|
2303
|
-
enabled:
|
|
2402
|
+
enabled: o = !0
|
|
2304
2403
|
}) {
|
|
2305
|
-
return
|
|
2404
|
+
return Xe({
|
|
2306
2405
|
queryKey: ["assignment-review", "module-item-sequence", t, n],
|
|
2307
2406
|
queryFn: () => i(t, n),
|
|
2308
|
-
enabled:
|
|
2407
|
+
enabled: o && !!n
|
|
2309
2408
|
});
|
|
2310
2409
|
}
|
|
2311
2410
|
export {
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2411
|
+
Qi as AssignmentResponseSchema,
|
|
2412
|
+
Jr as AssignmentReview,
|
|
2413
|
+
sr as AttemptCard,
|
|
2414
|
+
mr as AttemptView,
|
|
2415
|
+
lr as AttemptsHistory,
|
|
2416
|
+
Kr as CREATE_SUBMISSION,
|
|
2417
|
+
pr as CREATE_SUBMISSION_COMMENT,
|
|
2418
|
+
Zr as CREATE_SUBMISSION_DRAFT,
|
|
2419
|
+
Sr as CommentCard,
|
|
2420
|
+
nr as CreateSubmissionCommentResponseSchema,
|
|
2421
|
+
Yr as CreateSubmissionDraftResponseSchema,
|
|
2422
|
+
Vr as CreateSubmissionResponseSchema,
|
|
2423
|
+
Qr as DELETE_SUBMISSION_DRAFT,
|
|
2424
|
+
Xr as DeleteSubmissionDraftResponseSchema,
|
|
2425
|
+
Nn as DownloadButtons,
|
|
2426
|
+
eo as FileUploadSubmissionForm,
|
|
2427
|
+
qi as GET_ASSIGNMENT,
|
|
2428
|
+
Yi as GET_SUBMISSIONS,
|
|
2429
|
+
Vi as GET_SUBMISSION_COMMENTS,
|
|
2430
|
+
fr as LearningContentHeader,
|
|
2431
|
+
gr as MARK_SUBMISSION_COMMENTS_READ,
|
|
2432
|
+
ir as MarkSubmissionCommentsReadResponseSchema,
|
|
2433
|
+
to as ModuleNavigation,
|
|
2434
|
+
no as MyProgressPanel,
|
|
2435
|
+
_r as SubmissionComments,
|
|
2436
|
+
qr as SubmissionCommentsDataSchema,
|
|
2437
|
+
Ji as SubmissionCommentsQueryResponseSchema,
|
|
2438
|
+
tr as SubmissionsQueryResponseSchema,
|
|
2439
|
+
io as TextEntrySubmissionForm,
|
|
2440
|
+
Wr as TranslationsProvider,
|
|
2441
|
+
ro as UnreadCommentsBadge,
|
|
2442
|
+
hr as useCreateSubmissionComment,
|
|
2443
|
+
rr as useGetAssignment,
|
|
2444
|
+
br as useGetSubmissionComments,
|
|
2445
|
+
or as useGetSubmissions,
|
|
2446
|
+
Tr as useMarkSubmissionCommentsRead,
|
|
2447
|
+
oo as useModuleItemSequence,
|
|
2448
|
+
V as useTranslations
|
|
2350
2449
|
};
|