@vue-skuilder/common-ui 0.2.8 → 0.2.9

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.
@@ -1248,19 +1248,15 @@ var Q = /* @__PURE__ */ r(ct, [["render", _sfc_render$17], ["__scopeId", "data-v
1248
1248
  } },
1249
1249
  setup(e) {
1250
1250
  let t = R(0), n = null;
1251
- return I(() => {
1251
+ I(() => {
1252
1252
  n = setInterval(() => {
1253
1253
  t.value++;
1254
1254
  }, 500);
1255
1255
  }), ce(() => {
1256
1256
  n && clearInterval(n);
1257
- }), { debugInfo: T(() => (t.value, e.sessionController ? e.sessionController.getDebugInfo() : {
1258
- reviewQueue: {
1259
- length: 0,
1260
- dequeueCount: 0,
1261
- items: []
1262
- },
1263
- newQueue: {
1257
+ });
1258
+ let r = T(() => (t.value, e.sessionController ? e.sessionController.getDebugInfo() : {
1259
+ supplyQueue: {
1264
1260
  length: 0,
1265
1261
  dequeueCount: 0,
1266
1262
  items: []
@@ -1275,42 +1271,40 @@ var Q = /* @__PURE__ */ r(ct, [["render", _sfc_render$17], ["__scopeId", "data-v
1275
1271
  failedCacheSize: 0,
1276
1272
  items: []
1277
1273
  }
1278
- })) };
1274
+ })), fmtScore = (e) => e === void 0 ? "" : Number.isFinite(e) ? e.toFixed(2) : "REQ";
1275
+ return {
1276
+ debugInfo: r,
1277
+ fmtScore
1278
+ };
1279
1279
  }
1280
1280
  }), ut = { class: "debug-section" }, dt = { class: "debug-header" }, ft = { class: "debug-stats" }, pt = { class: "text-caption" }, mt = { class: "text-caption ml-2" }, ht = {
1281
1281
  key: 0,
1282
1282
  class: "debug-items"
1283
1283
  }, gt = { class: "text-caption" }, _t = { class: "text-caption text-grey ml-1" }, vt = {
1284
- key: 0,
1285
- class: "text-caption text-grey"
1284
+ class: "text-caption ml-1",
1285
+ style: { color: "#90caf9" }
1286
1286
  }, yt = {
1287
- key: 1,
1288
- class: "text-caption text-grey"
1289
- }, bt = { class: "debug-section" }, xt = { class: "debug-header" }, St = { class: "debug-stats" }, Ct = { class: "text-caption" }, wt = { class: "text-caption ml-2" }, Tt = {
1290
- key: 0,
1291
- class: "debug-items"
1292
- }, Et = { class: "text-caption" }, Dt = { class: "text-caption text-grey ml-1" }, Ot = {
1293
1287
  key: 0,
1294
1288
  class: "text-caption text-grey"
1295
- }, kt = {
1289
+ }, bt = {
1296
1290
  key: 1,
1297
1291
  class: "text-caption text-grey"
1298
- }, At = { class: "debug-section" }, jt = { class: "debug-header" }, Mt = { class: "debug-stats" }, Nt = { class: "text-caption" }, Pt = { class: "text-caption ml-2" }, Ft = {
1292
+ }, xt = { class: "debug-section" }, St = { class: "debug-header" }, Ct = { class: "debug-stats" }, wt = { class: "text-caption" }, Tt = { class: "text-caption ml-2" }, Et = {
1299
1293
  key: 0,
1300
1294
  class: "debug-items"
1301
- }, It = { class: "text-caption" }, Lt = { class: "text-caption text-grey ml-1" }, Rt = {
1295
+ }, Dt = { class: "text-caption" }, Ot = { class: "text-caption text-grey ml-1" }, kt = {
1302
1296
  key: 0,
1303
1297
  class: "text-caption text-grey"
1304
- }, zt = {
1298
+ }, At = {
1305
1299
  key: 1,
1306
1300
  class: "text-caption text-grey"
1307
- }, Bt = { class: "debug-section" }, Vt = { class: "debug-header" }, Ht = { class: "debug-stats" }, Ut = { class: "text-caption" }, Wt = { class: "text-caption ml-2" }, Gt = {
1301
+ }, jt = { class: "debug-section" }, Mt = { class: "debug-header" }, Nt = { class: "debug-stats" }, Pt = { class: "text-caption" }, Ft = { class: "text-caption ml-2" }, It = {
1308
1302
  key: 0,
1309
1303
  class: "debug-items"
1310
- }, Kt = { class: "text-caption" }, qt = {
1304
+ }, Lt = { class: "text-caption" }, Rt = {
1311
1305
  key: 0,
1312
1306
  class: "text-caption text-grey"
1313
- }, Jt = {
1307
+ }, zt = {
1314
1308
  key: 1,
1315
1309
  class: "text-caption text-grey"
1316
1310
  };
@@ -1333,84 +1327,65 @@ function _sfc_render$16(e, t, n, r, i, a) {
1333
1327
  _: 1
1334
1328
  }), j(f, { class: "pa-2" }, {
1335
1329
  default: W(() => [j(u, { dense: "" }, {
1336
- default: W(() => [
1337
- j(l, {
1338
- cols: "12",
1339
- md: "4"
1340
- }, {
1341
- default: W(() => [k("div", ut, [
1342
- k("div", dt, [j(s, {
1343
- size: "x-small",
1344
- class: "mr-1"
1345
- }, {
1346
- default: W(() => t[2] || (t[2] = [A("mdi-calendar-check")])),
1347
- _: 1
1348
- }), t[3] || (t[3] = k("strong", null, "Review Queue", -1))]),
1349
- k("div", ft, [k("span", pt, "Length: " + H(e.debugInfo.reviewQueue.length), 1), k("span", mt, "Dequeued: " + H(e.debugInfo.reviewQueue.dequeueCount), 1)]),
1350
- e.debugInfo.reviewQueue.items.length > 0 ? (L(), O("div", ht, [(L(!0), O(C, null, z(e.debugInfo.reviewQueue.items.slice(0, 5), (e, t) => (L(), O("div", {
1351
- key: t,
1352
- class: "debug-item"
1353
- }, [k("span", gt, H(t) + ": " + H(e.courseID) + "::" + H(e.cardID), 1), k("span", _t, "(" + H(e.status) + ")", 1)]))), 128)), e.debugInfo.reviewQueue.items.length > 5 ? (L(), O("div", vt, " ... +" + H(e.debugInfo.reviewQueue.items.length - 5) + " more ", 1)) : D("", !0)])) : (L(), O("div", yt, " (empty) "))
1354
- ])]),
1355
- _: 1
1356
- }),
1357
- j(l, {
1358
- cols: "12",
1359
- md: "4"
1360
- }, {
1361
- default: W(() => [k("div", bt, [
1362
- k("div", xt, [j(s, {
1363
- size: "x-small",
1364
- class: "mr-1"
1365
- }, {
1366
- default: W(() => t[4] || (t[4] = [A("mdi-file-document-plus")])),
1367
- _: 1
1368
- }), t[5] || (t[5] = k("strong", null, "New Cards Queue", -1))]),
1369
- k("div", St, [k("span", Ct, "Length: " + H(e.debugInfo.newQueue.length), 1), k("span", wt, "Dequeued: " + H(e.debugInfo.newQueue.dequeueCount), 1)]),
1370
- e.debugInfo.newQueue.items.length > 0 ? (L(), O("div", Tt, [(L(!0), O(C, null, z(e.debugInfo.newQueue.items.slice(0, 5), (e, t) => (L(), O("div", {
1371
- key: t,
1372
- class: "debug-item"
1373
- }, [k("span", Et, H(t) + ": " + H(e.courseID) + "::" + H(e.cardID), 1), k("span", Dt, "(" + H(e.status) + ")", 1)]))), 128)), e.debugInfo.newQueue.items.length > 5 ? (L(), O("div", Ot, " ... +" + H(e.debugInfo.newQueue.items.length - 5) + " more ", 1)) : D("", !0)])) : (L(), O("div", kt, " (empty) "))
1374
- ])]),
1375
- _: 1
1376
- }),
1377
- j(l, {
1378
- cols: "12",
1379
- md: "4"
1380
- }, {
1381
- default: W(() => [k("div", At, [
1382
- k("div", jt, [j(s, {
1383
- size: "x-small",
1384
- class: "mr-1"
1385
- }, {
1386
- default: W(() => t[6] || (t[6] = [A("mdi-alert-circle")])),
1387
- _: 1
1388
- }), t[7] || (t[7] = k("strong", null, "Failed Cards Queue", -1))]),
1389
- k("div", Mt, [k("span", Nt, "Length: " + H(e.debugInfo.failedQueue.length), 1), k("span", Pt, "Dequeued: " + H(e.debugInfo.failedQueue.dequeueCount), 1)]),
1390
- e.debugInfo.failedQueue.items.length > 0 ? (L(), O("div", Ft, [(L(!0), O(C, null, z(e.debugInfo.failedQueue.items.slice(0, 5), (e, t) => (L(), O("div", {
1391
- key: t,
1392
- class: "debug-item"
1393
- }, [k("span", It, H(t) + ": " + H(e.courseID) + "::" + H(e.cardID), 1), k("span", Lt, "(" + H(e.status) + ")", 1)]))), 128)), e.debugInfo.failedQueue.items.length > 5 ? (L(), O("div", Rt, " ... +" + H(e.debugInfo.failedQueue.items.length - 5) + " more ", 1)) : D("", !0)])) : (L(), O("div", zt, " (empty) "))
1394
- ])]),
1395
- _: 1
1396
- })
1397
- ]),
1330
+ default: W(() => [j(l, {
1331
+ cols: "12",
1332
+ md: "8"
1333
+ }, {
1334
+ default: W(() => [k("div", ut, [
1335
+ k("div", dt, [j(s, {
1336
+ size: "x-small",
1337
+ class: "mr-1"
1338
+ }, {
1339
+ default: W(() => t[2] || (t[2] = [A("mdi-sort")])),
1340
+ _: 1
1341
+ }), t[3] || (t[3] = k("strong", null, "Supply Queue", -1))]),
1342
+ k("div", ft, [k("span", pt, "Length: " + H(e.debugInfo.supplyQueue.length), 1), k("span", mt, "Dequeued: " + H(e.debugInfo.supplyQueue.dequeueCount), 1)]),
1343
+ e.debugInfo.supplyQueue.items.length > 0 ? (L(), O("div", ht, [(L(!0), O(C, null, z(e.debugInfo.supplyQueue.items.slice(0, 8), (t, n) => (L(), O("div", {
1344
+ key: n,
1345
+ class: "debug-item"
1346
+ }, [
1347
+ k("span", gt, H(n) + ": " + H(t.courseID) + "::" + H(t.cardID), 1),
1348
+ k("span", _t, "(" + H(t.status) + ")", 1),
1349
+ k("span", vt, H(e.fmtScore(t.score)), 1)
1350
+ ]))), 128)), e.debugInfo.supplyQueue.items.length > 8 ? (L(), O("div", yt, " ... +" + H(e.debugInfo.supplyQueue.items.length - 8) + " more ", 1)) : D("", !0)])) : (L(), O("div", bt, " (empty) "))
1351
+ ])]),
1352
+ _: 1
1353
+ }), j(l, {
1354
+ cols: "12",
1355
+ md: "4"
1356
+ }, {
1357
+ default: W(() => [k("div", xt, [
1358
+ k("div", St, [j(s, {
1359
+ size: "x-small",
1360
+ class: "mr-1"
1361
+ }, {
1362
+ default: W(() => t[4] || (t[4] = [A("mdi-alert-circle")])),
1363
+ _: 1
1364
+ }), t[5] || (t[5] = k("strong", null, "Failed Cards Queue", -1))]),
1365
+ k("div", Ct, [k("span", wt, "Length: " + H(e.debugInfo.failedQueue.length), 1), k("span", Tt, "Dequeued: " + H(e.debugInfo.failedQueue.dequeueCount), 1)]),
1366
+ e.debugInfo.failedQueue.items.length > 0 ? (L(), O("div", Et, [(L(!0), O(C, null, z(e.debugInfo.failedQueue.items.slice(0, 5), (e, t) => (L(), O("div", {
1367
+ key: t,
1368
+ class: "debug-item"
1369
+ }, [k("span", Dt, H(t) + ": " + H(e.courseID) + "::" + H(e.cardID), 1), k("span", Ot, "(" + H(e.status) + ")", 1)]))), 128)), e.debugInfo.failedQueue.items.length > 5 ? (L(), O("div", kt, " ... +" + H(e.debugInfo.failedQueue.items.length - 5) + " more ", 1)) : D("", !0)])) : (L(), O("div", At, " (empty) "))
1370
+ ])]),
1371
+ _: 1
1372
+ })]),
1398
1373
  _: 1
1399
1374
  }), j(u, { dense: "" }, {
1400
1375
  default: W(() => [j(l, { cols: "12" }, {
1401
- default: W(() => [j(d, { class: "my-2" }), k("div", Bt, [
1402
- k("div", Vt, [j(s, {
1376
+ default: W(() => [j(d, { class: "my-2" }), k("div", jt, [
1377
+ k("div", Mt, [j(s, {
1403
1378
  size: "x-small",
1404
1379
  class: "mr-1"
1405
1380
  }, {
1406
- default: W(() => t[8] || (t[8] = [A("mdi-database")])),
1381
+ default: W(() => t[6] || (t[6] = [A("mdi-database")])),
1407
1382
  _: 1
1408
- }), t[9] || (t[9] = k("strong", null, "Hydrated Cards Cache", -1))]),
1409
- k("div", Ht, [k("span", Ut, "Cached: " + H(e.debugInfo.hydratedCache.count), 1), k("span", Wt, "Failed Cache: " + H(e.debugInfo.hydratedCache.failedCacheSize), 1)]),
1410
- e.debugInfo.hydratedCache.items.length > 0 ? (L(), O("div", Gt, [(L(!0), O(C, null, z(e.debugInfo.hydratedCache.items.slice(0, 8), (e, t) => (L(), O("div", {
1383
+ }), t[7] || (t[7] = k("strong", null, "Hydrated Cards Cache", -1))]),
1384
+ k("div", Nt, [k("span", Pt, "Cached: " + H(e.debugInfo.hydratedCache.count), 1), k("span", Ft, "Failed Cache: " + H(e.debugInfo.hydratedCache.failedCacheSize), 1)]),
1385
+ e.debugInfo.hydratedCache.items.length > 0 ? (L(), O("div", It, [(L(!0), O(C, null, z(e.debugInfo.hydratedCache.items.slice(0, 8), (e, t) => (L(), O("div", {
1411
1386
  key: t,
1412
1387
  class: "debug-item d-inline-block mr-3"
1413
- }, [k("span", Kt, H(e.courseID) + "::" + H(e.cardID), 1)]))), 128)), e.debugInfo.hydratedCache.items.length > 8 ? (L(), O("div", qt, " ... +" + H(e.debugInfo.hydratedCache.items.length - 8) + " more ", 1)) : D("", !0)])) : (L(), O("div", Jt, " (empty) "))
1388
+ }, [k("span", Lt, H(e.courseID) + "::" + H(e.cardID), 1)]))), 128)), e.debugInfo.hydratedCache.items.length > 8 ? (L(), O("div", Rt, " ... +" + H(e.debugInfo.hydratedCache.items.length - 8) + " more ", 1)) : D("", !0)])) : (L(), O("div", zt, " (empty) "))
1414
1389
  ])]),
1415
1390
  _: 1
1416
1391
  })]),
@@ -1422,7 +1397,7 @@ function _sfc_render$16(e, t, n, r, i, a) {
1422
1397
  })) : D("", !0);
1423
1398
  }
1424
1399
  t(_sfc_render$16, "_sfc_render");
1425
- var Yt = /* @__PURE__ */ r(lt, [["render", _sfc_render$16], ["__scopeId", "data-v-1a6ac7a1"]]), Xt = {};
1400
+ var Bt = /* @__PURE__ */ r(lt, [["render", _sfc_render$16], ["__scopeId", "data-v-641ac170"]]), Vt = {};
1426
1401
  (function main(e, t, n, r) {
1427
1402
  var i = !!(e.Worker && e.Blob && e.Promise && e.OffscreenCanvas && e.OffscreenCanvasRenderingContext2D && e.HTMLCanvasElement && e.HTMLCanvasElement.prototype.transferControlToOffscreen && e.URL && e.URL.createObjectURL), a = typeof Path2D == "function" && typeof DOMMatrix == "function", o = (function() {
1428
1403
  if (!e.OffscreenCanvas) return !1;
@@ -1797,12 +1772,12 @@ var Yt = /* @__PURE__ */ r(lt, [["render", _sfc_render$16], ["__scopeId", "data-
1797
1772
  }, t.exports.create = confettiCannon, t.exports.shapeFromPath = shapeFromPath, t.exports.shapeFromText = shapeFromText;
1798
1773
  })((function() {
1799
1774
  return typeof window < "u" ? window : typeof self < "u" ? self : this || {};
1800
- })(), Xt, !1);
1801
- var Zt = Xt.exports;
1802
- Xt.exports.create;
1775
+ })(), Vt, !1);
1776
+ var Ht = Vt.exports;
1777
+ Vt.exports.create;
1803
1778
  //#endregion
1804
1779
  //#region src/components/StudySession.vue?vue&type=script&lang.ts
1805
- var Qt = M({
1780
+ var Ut = M({
1806
1781
  name: "StudySession",
1807
1782
  ref: {},
1808
1783
  components: {
@@ -1810,7 +1785,7 @@ var Qt = M({
1810
1785
  StudySessionTimer: st,
1811
1786
  SkMouseTrap: Ne,
1812
1787
  HeatMap: Ae,
1813
- SessionControllerDebug: Yt
1788
+ SessionControllerDebug: Bt
1814
1789
  },
1815
1790
  props: {
1816
1791
  sessionTimeLimit: {
@@ -1943,7 +1918,7 @@ var Qt = M({
1943
1918
  }
1944
1919
  }))).filter((e) => e !== null)), this.timeRemaining = this.sessionTimeLimit * 60, e = await Promise.all(this.contentSources.filter((e) => e.type === "classroom").map(async (e) => await this.dataLayer.getClassroomDB(e.id, "student"))), e.forEach((e) => {});
1945
1920
  let t = {};
1946
- this.sessionConfig?.defaultBatchLimit !== void 0 && (t.defaultBatchLimit = this.sessionConfig.defaultBatchLimit), this.sessionConfig?.initialReviewCap !== void 0 && (t.initialReviewCap = this.sessionConfig.initialReviewCap), this.sessionConfig?.outcomeObservers?.length && (t.outcomeObservers = this.sessionConfig.outcomeObservers), this.sessionController = N(new ve(this.sessionContentSources, 60 * this.sessionTimeLimit, this.dataLayer, this.getViewComponent, void 0, t)), this.sessionController.sessionRecord = this.sessionRecord, this.sessionConfig?.initHints && (this.sessionController.setSessionHints(this.sessionConfig.initHints), console.log("[StudySession] Applied init hints as session-durable hints")), await this.sessionController.prepareSession(), this.intervalHandler = setInterval(this.tick, 1e3), this.sessionPrepared = !0, console.log("[StudySession] Session preparation complete, emitting session-prepared event"), this.$emit("session-prepared"), console.log("[StudySession] Event emission completed");
1921
+ this.sessionConfig?.defaultBatchLimit !== void 0 && (t.defaultBatchLimit = this.sessionConfig.defaultBatchLimit), this.sessionConfig?.outcomeObservers?.length && (t.outcomeObservers = this.sessionConfig.outcomeObservers), this.sessionController = N(new ve(this.sessionContentSources, 60 * this.sessionTimeLimit, this.dataLayer, this.getViewComponent, void 0, t)), this.sessionController.sessionRecord = this.sessionRecord, this.sessionConfig?.initHints && (this.sessionController.setSessionHints(this.sessionConfig.initHints), console.log("[StudySession] Applied init hints as session-durable hints")), await this.sessionController.prepareSession(), this.intervalHandler = setInterval(this.tick, 1e3), this.sessionPrepared = !0, console.log("[StudySession] Session preparation complete, emitting session-prepared event"), this.$emit("session-prepared"), console.log("[StudySession] Event emission completed");
1947
1922
  } catch (e) {
1948
1923
  console.error("[StudySession] Error during session preparation:", e), this.$emit("session-error", {
1949
1924
  message: "Failed to prepare study session",
@@ -2000,7 +1975,7 @@ var Qt = M({
2000
1975
  } catch (e) {
2001
1976
  console.warn(`[StudySession] Error setting shadowWrapper style: ${e}`);
2002
1977
  }
2003
- this.sessionConfig.likesConfetti && Zt({
1978
+ this.sessionConfig.likesConfetti && Ht({
2004
1979
  origin: {
2005
1980
  y: 1,
2006
1981
  x: .25 + .5 * Math.random()
@@ -2053,17 +2028,17 @@ var Qt = M({
2053
2028
  }), this.loading = !1;
2054
2029
  }
2055
2030
  }
2056
- }), $t = {
2031
+ }), Wt = {
2057
2032
  key: 0,
2058
2033
  class: "StudySession"
2059
- }, en = { key: 2 }, tn = { key: 3 }, nn = { class: "text-h4" }, rn = { key: 0 }, an = {
2034
+ }, Gt = { key: 2 }, Kt = { key: 3 }, qt = { class: "text-h4" }, Jt = { key: 0 }, Yt = {
2060
2035
  key: 4,
2061
2036
  ref: "shadowWrapper",
2062
2037
  class: "card-transition-container"
2063
- }, on = { key: 0 };
2038
+ }, Xt = { key: 0 };
2064
2039
  function _sfc_render$15(e, t, n, r, i, a) {
2065
2040
  let o = V("v-spacer"), s = V("v-progress-circular"), c = V("v-row"), l = V("session-controller-debug"), u = V("heat-map"), d = V("card-viewer"), f = V("StudySessionTimer"), p = V("v-col"), m = V("SkMouseTrap");
2066
- return e.sessionPrepared ? (L(), O("div", $t, [
2041
+ return e.sessionPrepared ? (L(), O("div", Wt, [
2067
2042
  e.frameless ? D("", !0) : (L(), E(c, {
2068
2043
  key: 0,
2069
2044
  align: "center"
@@ -2081,15 +2056,15 @@ function _sfc_render$15(e, t, n, r, i, a) {
2081
2056
  key: 1,
2082
2057
  "session-controller": e.sessionController
2083
2058
  }, null, 8, ["session-controller"])) : D("", !0),
2084
- e.frameless ? D("", !0) : (L(), O("br", en)),
2085
- e.sessionFinished ? (L(), O("div", tn, [B(e.$slots, "session-finished", {
2059
+ e.frameless ? D("", !0) : (L(), O("br", Gt)),
2060
+ e.sessionFinished ? (L(), O("div", Kt, [B(e.$slots, "session-finished", {
2086
2061
  sessionRecord: e.sessionRecord,
2087
2062
  report: e.sessionController?.report
2088
- }, () => [k("div", nn, [
2063
+ }, () => [k("div", qt, [
2089
2064
  t[1] || (t[1] = k("p", null, "Study session finished! Great job!", -1)),
2090
- e.sessionController ? (L(), O("p", rn, H(e.sessionController.report), 1)) : D("", !0),
2065
+ e.sessionController ? (L(), O("p", Jt, H(e.sessionController.report), 1)) : D("", !0),
2091
2066
  j(u, { "activity-records-getter": () => e.user.getActivityRecords() }, null, 8, ["activity-records-getter"])
2092
- ])], !0)])) : (L(), O("div", an, [j(w, { name: e.transitionName }, {
2067
+ ])], !0)])) : (L(), O("div", Yt, [j(w, { name: e.transitionName }, {
2093
2068
  default: W(() => [e.view ? (L(), E(d, {
2094
2069
  ref: "cardViewer",
2095
2070
  key: e.cardID,
@@ -2120,7 +2095,7 @@ function _sfc_render$15(e, t, n, r, i, a) {
2120
2095
  ])) : D("", !0)]),
2121
2096
  _: 1
2122
2097
  }, 8, ["name"])], 512)),
2123
- e.frameless ? D("", !0) : (L(), O(C, { key: 5 }, [t[2] || (t[2] = k("br", null, null, -1)), e.sessionController ? (L(), O("div", on, [(L(!0), O(C, null, z(e.sessionController.failedCount, (e) => (L(), O("span", {
2098
+ e.frameless ? D("", !0) : (L(), O(C, { key: 5 }, [t[2] || (t[2] = k("br", null, null, -1)), e.sessionController ? (L(), O("div", Xt, [(L(!0), O(C, null, z(e.sessionController.failedCount, (e) => (L(), O("span", {
2124
2099
  key: e,
2125
2100
  class: "text-h5"
2126
2101
  }, "•"))), 128))])) : D("", !0)], 64)),
@@ -2159,7 +2134,7 @@ function _sfc_render$15(e, t, n, r, i, a) {
2159
2134
  ])) : D("", !0);
2160
2135
  }
2161
2136
  t(_sfc_render$15, "_sfc_render");
2162
- var sn = /* @__PURE__ */ r(Qt, [["render", _sfc_render$15], ["__scopeId", "data-v-de7119e9"]]), cn = M({
2137
+ var Zt = /* @__PURE__ */ r(Ut, [["render", _sfc_render$15], ["__scopeId", "data-v-0279250f"]]), Qt = M({
2163
2138
  name: "MultipleChoiceOption",
2164
2139
  components: { MarkdownRenderer: re(() => import("./MarkdownRenderer-kStoDRNE.mjs").then((e) => e.n)) },
2165
2140
  props: {
@@ -2246,9 +2221,9 @@ function _sfc_render$14(e, t, n, r, i, a) {
2246
2221
  ]);
2247
2222
  }
2248
2223
  t(_sfc_render$14, "_sfc_render");
2249
- var ln = /* @__PURE__ */ r(cn, [["render", _sfc_render$14], ["__scopeId", "data-v-96de7172"]]), un = M({
2224
+ var $t = /* @__PURE__ */ r(Qt, [["render", _sfc_render$14], ["__scopeId", "data-v-96de7172"]]), en = M({
2250
2225
  name: "RadioMultipleChoice",
2251
- components: { MultipleChoiceOption: ln },
2226
+ components: { MultipleChoiceOption: $t },
2252
2227
  extends: u,
2253
2228
  props: { choiceList: {
2254
2229
  type: Array,
@@ -2340,13 +2315,13 @@ var ln = /* @__PURE__ */ r(cn, [["render", _sfc_render$14], ["__scopeId", "data-
2340
2315
  });
2341
2316
  }
2342
2317
  }
2343
- }), dn = {
2318
+ }), tn = {
2344
2319
  ref: "containerRef",
2345
2320
  class: "multipleChoice"
2346
2321
  };
2347
2322
  function _sfc_render$13(e, t, n, r, i, a) {
2348
2323
  let o = V("MultipleChoiceOption");
2349
- return L(), O("div", dn, [(L(!0), O(C, null, z(e.choiceList, (t, n) => (L(), E(o, {
2324
+ return L(), O("div", tn, [(L(!0), O(C, null, z(e.choiceList, (t, n) => (L(), E(o, {
2350
2325
  key: n,
2351
2326
  content: t,
2352
2327
  selected: e.choiceList.indexOf(t) === e.currentSelection,
@@ -2364,9 +2339,9 @@ function _sfc_render$13(e, t, n, r, i, a) {
2364
2339
  ]))), 128))], 512);
2365
2340
  }
2366
2341
  t(_sfc_render$13, "_sfc_render");
2367
- var fn = /* @__PURE__ */ r(un, [["render", _sfc_render$13]]), pn = M({
2342
+ var nn = /* @__PURE__ */ r(en, [["render", _sfc_render$13]]), rn = M({
2368
2343
  name: "TrueFalse",
2369
- components: { RadioMultipleChoice: fn },
2344
+ components: { RadioMultipleChoice: nn },
2370
2345
  props: {
2371
2346
  MouseTrap: {
2372
2347
  type: Object,
@@ -2377,17 +2352,17 @@ var fn = /* @__PURE__ */ r(un, [["render", _sfc_render$13]]), pn = M({
2377
2352
  required: !0
2378
2353
  }
2379
2354
  }
2380
- }), mn = { "data-viewable": "TrueFalse" };
2355
+ }), an = { "data-viewable": "TrueFalse" };
2381
2356
  function _sfc_render$12(e, t, n, r, i, a) {
2382
2357
  let o = V("RadioMultipleChoice");
2383
- return L(), O("div", mn, [j(o, {
2358
+ return L(), O("div", an, [j(o, {
2384
2359
  "choice-list": ["True", "False"],
2385
2360
  MouseTrap: e.MouseTrap,
2386
2361
  submit: e.submit
2387
2362
  }, null, 8, ["MouseTrap", "submit"])]);
2388
2363
  }
2389
2364
  t(_sfc_render$12, "_sfc_render");
2390
- var hn = /* @__PURE__ */ r(pn, [["render", _sfc_render$12]]), gn = M({
2365
+ var on = /* @__PURE__ */ r(rn, [["render", _sfc_render$12]]), sn = M({
2391
2366
  name: "UserInputNumber",
2392
2367
  ref: {},
2393
2368
  extends: u,
@@ -2429,7 +2404,7 @@ function _sfc_render$11(e, t, n, r, i, a) {
2429
2404
  });
2430
2405
  }
2431
2406
  t(_sfc_render$11, "_sfc_render");
2432
- var _n = /* @__PURE__ */ r(gn, [["render", _sfc_render$11], ["__scopeId", "data-v-a56dcd1c"]]), vn = M({
2407
+ var cn = /* @__PURE__ */ r(sn, [["render", _sfc_render$11], ["__scopeId", "data-v-a56dcd1c"]]), ln = M({
2433
2408
  name: "CardLoader",
2434
2409
  components: { CardViewer: Q },
2435
2410
  props: {
@@ -2517,7 +2492,7 @@ function _sfc_render$10(e, t, n, r, i, a) {
2517
2492
  ]));
2518
2493
  }
2519
2494
  t(_sfc_render$10, "_sfc_render");
2520
- var yn = /* @__PURE__ */ r(vn, [["render", _sfc_render$10], ["__scopeId", "data-v-93f758b5"]]);
2495
+ var un = /* @__PURE__ */ r(ln, [["render", _sfc_render$10], ["__scopeId", "data-v-93f758b5"]]);
2521
2496
  //#endregion
2522
2497
  //#region src/stores/useAuthStore.ts
2523
2498
  async function getCurrentUser() {
@@ -2663,7 +2638,7 @@ function useAuthUI() {
2663
2638
  }
2664
2639
  //#endregion
2665
2640
  //#region src/components/auth/UserChip.vue
2666
- var bn = /* @__PURE__ */ r(/* @__PURE__ */ M({
2641
+ var dn = /* @__PURE__ */ r(/* @__PURE__ */ M({
2667
2642
  __name: "UserChip",
2668
2643
  props: {
2669
2644
  showLoginButton: { type: Boolean },
@@ -2864,7 +2839,7 @@ var bn = /* @__PURE__ */ r(/* @__PURE__ */ M({
2864
2839
  }, 8, ["modelValue"])], 64);
2865
2840
  };
2866
2841
  }
2867
- }), [["__scopeId", "data-v-9a38a213"]]), xn = { class: "d-flex flex-column align-start" }, Sn = { class: "mb-2" }, Cn = /* @__PURE__ */ r(/* @__PURE__ */ M({
2842
+ }), [["__scopeId", "data-v-9a38a213"]]), fn = { class: "d-flex flex-column align-start" }, pn = { class: "mb-2" }, mn = /* @__PURE__ */ r(/* @__PURE__ */ M({
2868
2843
  __name: "UserLogin",
2869
2844
  props: { redirectTo: { default: "/study" } },
2870
2845
  emits: [
@@ -2954,7 +2929,7 @@ var bn = /* @__PURE__ */ r(/* @__PURE__ */ M({
2954
2929
  })]),
2955
2930
  _: 1
2956
2931
  }, 8, ["modelValue", "timeout"]),
2957
- k("div", xn, [k("div", Sn, [j(i, {
2932
+ k("div", fn, [k("div", pn, [j(i, {
2958
2933
  class: "mr-2",
2959
2934
  type: "submit",
2960
2935
  loading: d.value,
@@ -3006,7 +2981,7 @@ function isPasswordValid(e) {
3006
2981
  }
3007
2982
  //#endregion
3008
2983
  //#region src/components/auth/UserRegistration.vue?vue&type=script&lang.ts
3009
- var wn = M({
2984
+ var hn = M({
3010
2985
  name: "UserRegistration",
3011
2986
  props: { onSignupSuccess: {
3012
2987
  type: Function,
@@ -3265,7 +3240,7 @@ function _sfc_render$9(e, t, n, r, i, a) {
3265
3240
  });
3266
3241
  }
3267
3242
  t(_sfc_render$9, "_sfc_render");
3268
- var Tn = /* @__PURE__ */ r(wn, [["render", _sfc_render$9]]), En = M({
3243
+ var gn = /* @__PURE__ */ r(hn, [["render", _sfc_render$9]]), _n = M({
3269
3244
  name: "RequestPasswordReset",
3270
3245
  emits: ["cancel", "success"],
3271
3246
  data() {
@@ -3301,7 +3276,7 @@ var Tn = /* @__PURE__ */ r(wn, [["render", _sfc_render$9]]), En = M({
3301
3276
  }
3302
3277
  }
3303
3278
  }
3304
- }), Dn = {
3279
+ }), vn = {
3305
3280
  key: 1,
3306
3281
  class: "text-center"
3307
3282
  };
@@ -3314,7 +3289,7 @@ function _sfc_render$8(e, t, n, r, i, a) {
3314
3289
  _: 1
3315
3290
  }),
3316
3291
  j(d, { class: "pa-6" }, {
3317
- default: W(() => [e.requestSent ? (L(), O("div", Dn, [
3292
+ default: W(() => [e.requestSent ? (L(), O("div", vn, [
3318
3293
  j(c, {
3319
3294
  color: "success",
3320
3295
  size: "64",
@@ -3388,7 +3363,7 @@ function _sfc_render$8(e, t, n, r, i, a) {
3388
3363
  });
3389
3364
  }
3390
3365
  t(_sfc_render$8, "_sfc_render");
3391
- var On = /* @__PURE__ */ r(En, [["render", _sfc_render$8]]), kn = { key: 0 }, An = { key: "login-buttons" }, jn = { key: "user-chip" }, Mn = /* @__PURE__ */ r(/* @__PURE__ */ M({
3366
+ var yn = /* @__PURE__ */ r(_n, [["render", _sfc_render$8]]), bn = { key: 0 }, xn = { key: "login-buttons" }, Sn = { key: "user-chip" }, Cn = /* @__PURE__ */ r(/* @__PURE__ */ M({
3392
3367
  __name: "UserLoginAndRegistrationContainer",
3393
3368
  props: {
3394
3369
  showLoginButton: { type: Boolean },
@@ -3438,11 +3413,11 @@ var On = /* @__PURE__ */ r(En, [["render", _sfc_render$8]]), kn = { key: 0 }, An
3438
3413
  };
3439
3414
  return (e, t) => {
3440
3415
  let n = V("v-btn"), r = V("v-dialog");
3441
- return c.value && s.value ? (L(), O("div", kn, [j(w, {
3416
+ return c.value && s.value ? (L(), O("div", bn, [j(w, {
3442
3417
  name: "component-fade",
3443
3418
  mode: "out-in"
3444
3419
  }, {
3445
- default: W(() => [l.value ? (L(), O("div", An, [
3420
+ default: W(() => [l.value ? (L(), O("div", xn, [
3446
3421
  u.value.showLoginRegistration ? (L(), E(r, {
3447
3422
  key: 0,
3448
3423
  modelValue: d.value,
@@ -3457,7 +3432,7 @@ var On = /* @__PURE__ */ r(En, [["render", _sfc_render$8]]), kn = { key: 0 }, An
3457
3432
  default: W(() => t[3] || (t[3] = [A("Sign Up")])),
3458
3433
  _: 2
3459
3434
  }, 1040)]),
3460
- default: W(() => [j(Tn, {
3435
+ default: W(() => [j(gn, {
3461
3436
  onToggle: toggle,
3462
3437
  onSignupSuccess: handleSignupSuccess,
3463
3438
  "on-signup-success": handleSignupSuccess
@@ -3476,7 +3451,7 @@ var On = /* @__PURE__ */ r(En, [["render", _sfc_render$8]]), kn = { key: 0 }, An
3476
3451
  default: W(() => t[4] || (t[4] = [A("Log In")])),
3477
3452
  _: 2
3478
3453
  }, 1040)]),
3479
- default: W(() => [j(Cn, {
3454
+ default: W(() => [j(mn, {
3480
3455
  onToggle: toggle,
3481
3456
  onForgotPassword: openResetDialog
3482
3457
  })]),
@@ -3487,18 +3462,18 @@ var On = /* @__PURE__ */ r(En, [["render", _sfc_render$8]]), kn = { key: 0 }, An
3487
3462
  "onUpdate:modelValue": t[2] || (t[2] = (e) => p.value = e),
3488
3463
  width: "500px"
3489
3464
  }, {
3490
- default: W(() => [j(On, {
3465
+ default: W(() => [j(yn, {
3491
3466
  onCancel: closeResetDialog,
3492
3467
  onSuccess: closeResetDialog
3493
3468
  })]),
3494
3469
  _: 1
3495
3470
  }, 8, ["modelValue"])
3496
- ])) : (L(), O("div", jn, [j(bn)]))]),
3471
+ ])) : (L(), O("div", Sn, [j(dn)]))]),
3497
3472
  _: 1
3498
3473
  })])) : D("", !0);
3499
3474
  };
3500
3475
  }
3501
- }), [["__scopeId", "data-v-5a55bdf0"]]), Nn = M({
3476
+ }), [["__scopeId", "data-v-5a55bdf0"]]), wn = M({
3502
3477
  name: "VerifyEmail",
3503
3478
  emits: ["verified", "error"],
3504
3479
  props: { token: {
@@ -3546,16 +3521,16 @@ var On = /* @__PURE__ */ r(En, [["render", _sfc_render$8]]), kn = { key: 0 }, An
3546
3521
  return typeof window > "u" ? null : new URLSearchParams(window.location.search).get("token");
3547
3522
  }
3548
3523
  }
3549
- }), Pn = {
3524
+ }), Tn = {
3550
3525
  key: 0,
3551
3526
  class: "text-center"
3552
- }, Fn = {
3527
+ }, En = {
3553
3528
  key: 1,
3554
3529
  class: "text-center"
3555
- }, In = { key: 0 }, Ln = {
3530
+ }, Dn = { key: 0 }, On = {
3556
3531
  key: 2,
3557
3532
  class: "text-center"
3558
- }, Rn = {
3533
+ }, kn = {
3559
3534
  key: 3,
3560
3535
  class: "text-center"
3561
3536
  };
@@ -3581,12 +3556,12 @@ function _sfc_render$7(e, t, n, r, i, a) {
3581
3556
  _: 1
3582
3557
  }),
3583
3558
  j(l, { class: "pa-6" }, {
3584
- default: W(() => [e.isVerifying ? (L(), O("div", Pn, [j(s, {
3559
+ default: W(() => [e.isVerifying ? (L(), O("div", Tn, [j(s, {
3585
3560
  indeterminate: "",
3586
3561
  color: "primary",
3587
3562
  size: "64",
3588
3563
  class: "mb-4"
3589
- }), t[3] || (t[3] = k("p", null, "Verifying your email...", -1))])) : e.verificationStatus === "success" ? (L(), O("div", Fn, [
3564
+ }), t[3] || (t[3] = k("p", null, "Verifying your email...", -1))])) : e.verificationStatus === "success" ? (L(), O("div", En, [
3590
3565
  j(c, {
3591
3566
  color: "success",
3592
3567
  size: "64",
@@ -3597,8 +3572,8 @@ function _sfc_render$7(e, t, n, r, i, a) {
3597
3572
  }),
3598
3573
  t[5] || (t[5] = k("h3", { class: "mb-2" }, "Email Verified!", -1)),
3599
3574
  t[6] || (t[6] = k("p", null, "Your account has been successfully verified.", -1)),
3600
- e.username ? (L(), O("p", In, "Welcome, " + H(e.username) + "!", 1)) : D("", !0)
3601
- ])) : e.verificationStatus === "error" ? (L(), O("div", Ln, [
3575
+ e.username ? (L(), O("p", Dn, "Welcome, " + H(e.username) + "!", 1)) : D("", !0)
3576
+ ])) : e.verificationStatus === "error" ? (L(), O("div", On, [
3602
3577
  j(c, {
3603
3578
  color: "error",
3604
3579
  size: "64",
@@ -3609,7 +3584,7 @@ function _sfc_render$7(e, t, n, r, i, a) {
3609
3584
  }),
3610
3585
  t[8] || (t[8] = k("h3", { class: "mb-2" }, "Verification Failed", -1)),
3611
3586
  k("p", null, H(e.errorMessage), 1)
3612
- ])) : (L(), O("div", Rn, [
3587
+ ])) : (L(), O("div", kn, [
3613
3588
  j(c, {
3614
3589
  color: "warning",
3615
3590
  size: "64",
@@ -3655,7 +3630,7 @@ function _sfc_render$7(e, t, n, r, i, a) {
3655
3630
  });
3656
3631
  }
3657
3632
  t(_sfc_render$7, "_sfc_render");
3658
- var zn = /* @__PURE__ */ r(Nn, [["render", _sfc_render$7]]), Bn = M({
3633
+ var An = /* @__PURE__ */ r(wn, [["render", _sfc_render$7]]), jn = M({
3659
3634
  name: "ResetPassword",
3660
3635
  emits: ["complete", "error"],
3661
3636
  props: { token: {
@@ -3713,7 +3688,7 @@ var zn = /* @__PURE__ */ r(Nn, [["render", _sfc_render$7]]), Bn = M({
3713
3688
  return typeof window > "u" ? null : new URLSearchParams(window.location.search).get("token");
3714
3689
  }
3715
3690
  }
3716
- }), Vn = {
3691
+ }), Mn = {
3717
3692
  key: 1,
3718
3693
  class: "text-center"
3719
3694
  };
@@ -3739,7 +3714,7 @@ function _sfc_render$6(e, t, n, r, i, a) {
3739
3714
  _: 1
3740
3715
  }),
3741
3716
  j(d, { class: "pa-6" }, {
3742
- default: W(() => [e.isComplete ? (L(), O("div", Vn, [
3717
+ default: W(() => [e.isComplete ? (L(), O("div", Mn, [
3743
3718
  j(c, {
3744
3719
  color: "success",
3745
3720
  size: "64",
@@ -3833,7 +3808,7 @@ function _sfc_render$6(e, t, n, r, i, a) {
3833
3808
  });
3834
3809
  }
3835
3810
  t(_sfc_render$6, "_sfc_render");
3836
- var Hn = /* @__PURE__ */ r(Bn, [["render", _sfc_render$6]]), Un = M({
3811
+ var Nn = /* @__PURE__ */ r(jn, [["render", _sfc_render$6]]), Pn = M({
3837
3812
  name: "SkTagsInput",
3838
3813
  components: { VueTagsInput: Te },
3839
3814
  props: {
@@ -3940,13 +3915,13 @@ var Hn = /* @__PURE__ */ r(Bn, [["render", _sfc_render$6]]), Un = M({
3940
3915
  this.loading = !1;
3941
3916
  }
3942
3917
  }
3943
- }), Wn = { "data-cy": "tags-input" }, Gn = { class: "tag-name" }, Kn = {
3918
+ }), Fn = { "data-cy": "tags-input" }, In = { class: "tag-name" }, Ln = {
3944
3919
  key: 0,
3945
3920
  class: "tag-snippet"
3946
3921
  };
3947
3922
  function _sfc_render$5(e, t, n, r, i, a) {
3948
3923
  let o = V("vue-tags-input"), s = V("v-btn");
3949
- return L(), O("div", Wn, [j(o, {
3924
+ return L(), O("div", Fn, [j(o, {
3950
3925
  modelValue: e.tag,
3951
3926
  "onUpdate:modelValue": t[0] || (t[0] = (t) => e.tag = t),
3952
3927
  tags: e.tags,
@@ -3955,7 +3930,7 @@ function _sfc_render$5(e, t, n, r, i, a) {
3955
3930
  "add-on-key": e.separators,
3956
3931
  onTagsChanged: e.tagsChanged
3957
3932
  }, {
3958
- "autocomplete-item": W((e) => [k("div", { class: F(["autocomplete-item", { "is-active": e.selected }]) }, [k("span", Gn, H(e.item.text), 1), e.item.data && e.item.data.snippet ? (L(), O("span", Kn, " - " + H(e.item.data.snippet), 1)) : D("", !0)], 2)]),
3933
+ "autocomplete-item": W((e) => [k("div", { class: F(["autocomplete-item", { "is-active": e.selected }]) }, [k("span", In, H(e.item.text), 1), e.item.data && e.item.data.snippet ? (L(), O("span", Ln, " - " + H(e.item.data.snippet), 1)) : D("", !0)], 2)]),
3959
3934
  _: 1
3960
3935
  }, 8, [
3961
3936
  "modelValue",
@@ -3975,11 +3950,11 @@ function _sfc_render$5(e, t, n, r, i, a) {
3975
3950
  }, 8, ["loading", "onClick"]))]);
3976
3951
  }
3977
3952
  t(_sfc_render$5, "_sfc_render");
3978
- var qn = /* @__PURE__ */ r(Un, [["render", _sfc_render$5], ["__scopeId", "data-v-f7373dc0"]]), Jn = M({
3953
+ var Rn = /* @__PURE__ */ r(Pn, [["render", _sfc_render$5], ["__scopeId", "data-v-f7373dc0"]]), zn = M({
3979
3954
  name: "CourseCardBrowser",
3980
3955
  components: {
3981
- CardLoader: yn,
3982
- TagsInput: qn,
3956
+ CardLoader: un,
3957
+ TagsInput: Rn,
3983
3958
  PaginatingToolbar: Ue
3984
3959
  },
3985
3960
  props: {
@@ -4134,26 +4109,26 @@ var qn = /* @__PURE__ */ r(Un, [["render", _sfc_render$5], ["__scopeId", "data-v
4134
4109
  }
4135
4110
  }
4136
4111
  }
4137
- }), Yn = {
4112
+ }), Bn = {
4138
4113
  key: 0,
4139
4114
  class: "d-flex justify-center align-center pa-6"
4140
- }, Xn = { key: 1 }, Zn = {
4115
+ }, Vn = { key: 1 }, Hn = {
4141
4116
  key: 0,
4142
4117
  class: "px-4 py-2 bg-blue-grey-lighten-5"
4143
- }, Qn = {
4118
+ }, Un = {
4144
4119
  key: 0,
4145
4120
  class: "mt-4"
4146
- }, $n = { class: "mt-4" }, er = {
4121
+ }, Wn = { class: "mt-4" }, Gn = {
4147
4122
  key: 0,
4148
4123
  class: "ml-4"
4149
4124
  };
4150
4125
  function _sfc_render$4(e, t, n, r, i, a) {
4151
4126
  let o = V("v-progress-circular"), s = V("paginating-toolbar"), c = V("v-list-item-title"), l = V("v-list-item-subtitle"), u = V("v-btn"), d = V("v-icon"), f = V("v-speed-dial"), p = V("v-list-item"), m = V("card-loader"), h = V("v-chip"), g = V("v-chip-group"), _ = V("tags-input"), v = V("v-list"), y = V("v-card");
4152
4127
  return L(), E(y, null, {
4153
- default: W(() => [e.updatePending ? (L(), O("div", Yn, [j(o, {
4128
+ default: W(() => [e.updatePending ? (L(), O("div", Bn, [j(o, {
4154
4129
  indeterminate: "",
4155
4130
  color: "primary"
4156
- })])) : (L(), O("div", Xn, [
4131
+ })])) : (L(), O("div", Vn, [
4157
4132
  j(s, {
4158
4133
  title: "Exercises",
4159
4134
  page: e.page,
@@ -4236,13 +4211,13 @@ function _sfc_render$4(e, t, n, r, i, a) {
4236
4211
  _: 2
4237
4212
  }, 1032, ["modelValue", "onUpdate:modelValue"])]),
4238
4213
  _: 2
4239
- }, 1032, ["class"]), n.isOpen ? (L(), O("div", Zn, [
4214
+ }, 1032, ["class"]), n.isOpen ? (L(), O("div", Hn, [
4240
4215
  j(m, {
4241
4216
  qualified_id: n.card,
4242
4217
  "view-lookup": e.viewLookup,
4243
4218
  class: "elevation-1"
4244
4219
  }, null, 8, ["qualified_id", "view-lookup"]),
4245
- e.editMode === "readonly" && e.cardTags[n.card.cardID] ? (L(), O("div", Qn, [j(g, null, {
4220
+ e.editMode === "readonly" && e.cardTags[n.card.cardID] ? (L(), O("div", Un, [j(g, null, {
4246
4221
  default: W(() => [(L(!0), O(C, null, z(e.cardTags[n.card.cardID], (e) => (L(), E(h, {
4247
4222
  key: e.name,
4248
4223
  size: "small",
@@ -4259,14 +4234,14 @@ function _sfc_render$4(e, t, n, r, i, a) {
4259
4234
  "card-i-d": n.card.cardID,
4260
4235
  class: "mt-4"
4261
4236
  }, null, 8, ["course-i-d", "card-i-d"]), [[ue, e.internalEditMode === "tags" && e.editMode === "full"]]),
4262
- de(k("div", $n, [j(u, {
4237
+ de(k("div", Wn, [j(u, {
4263
4238
  color: "error",
4264
4239
  variant: "outlined",
4265
4240
  onClick: (e) => n.delBtn = !0
4266
4241
  }, {
4267
4242
  default: W(() => t[6] || (t[6] = [A(" Delete this card ")])),
4268
4243
  _: 2
4269
- }, 1032, ["onClick"]), n.delBtn ? (L(), O("span", er, [t[8] || (t[8] = k("span", { class: "mr-2" }, "Are you sure?", -1)), j(u, {
4244
+ }, 1032, ["onClick"]), n.delBtn ? (L(), O("span", Gn, [t[8] || (t[8] = k("span", { class: "mr-2" }, "Are you sure?", -1)), j(u, {
4270
4245
  color: "error",
4271
4246
  variant: "elevated",
4272
4247
  onClick: (t) => e.deleteCard(n.card.cardID)
@@ -4299,9 +4274,9 @@ function _sfc_render$4(e, t, n, r, i, a) {
4299
4274
  });
4300
4275
  }
4301
4276
  t(_sfc_render$4, "_sfc_render");
4302
- var tr = /* @__PURE__ */ r(Jn, [["render", _sfc_render$4], ["__scopeId", "data-v-5ecc9d21"]]), nr = M({
4277
+ var Kn = /* @__PURE__ */ r(zn, [["render", _sfc_render$4], ["__scopeId", "data-v-5ecc9d21"]]), qn = M({
4303
4278
  name: "CourseInformation",
4304
- components: { CourseCardBrowser: tr },
4279
+ components: { CourseCardBrowser: Kn },
4305
4280
  props: {
4306
4281
  courseId: {
4307
4282
  type: String,
@@ -4343,15 +4318,15 @@ var tr = /* @__PURE__ */ r(Jn, [["render", _sfc_render$4], ["__scopeId", "data-v
4343
4318
  Y(`Dropping course ${this.courseId}`), (await this.user.dropCourse(this.courseId)).ok && (this.userIsRegistered = !1);
4344
4319
  }
4345
4320
  }
4346
- }), rr = { key: 0 }, ir = { class: "text-h4 mb-2" }, ar = { class: "text-body-2" }, or = { key: 0 }, sr = { key: 1 };
4321
+ }), Jn = { key: 0 }, Yn = { class: "text-h4 mb-2" }, Xn = { class: "text-body-2" }, Zn = { key: 0 }, Qn = { key: 1 };
4347
4322
  function _sfc_render$3(e, t, n, r, i, a) {
4348
4323
  let o = V("v-btn"), s = V("v-icon"), c = V("v-toolbar-title"), l = V("v-toolbar-items"), u = V("v-toolbar"), d = V("v-chip"), f = V("v-card-text"), p = V("v-card"), m = V("course-card-browser");
4349
- return e.updatePending ? D("", !0) : (L(), O("div", rr, [
4324
+ return e.updatePending ? D("", !0) : (L(), O("div", Jn, [
4350
4325
  B(e.$slots, "header", {
4351
4326
  courseConfig: e.courseConfig,
4352
4327
  courseId: e.courseId
4353
- }, () => [k("h1", ir, H(e.courseConfig.name), 1)], !0),
4354
- k("p", ar, H(e.courseConfig.description), 1),
4328
+ }, () => [k("h1", Yn, H(e.courseConfig.name), 1)], !0),
4329
+ k("p", Xn, H(e.courseConfig.description), 1),
4355
4330
  B(e.$slots, "actions", {
4356
4331
  userIsRegistered: e.userIsRegistered,
4357
4332
  courseId: e.courseId,
@@ -4362,7 +4337,7 @@ function _sfc_render$3(e, t, n, r, i, a) {
4362
4337
  name: "component-fade",
4363
4338
  mode: "out-in"
4364
4339
  }, {
4365
- default: W(() => [e.userIsRegistered ? (L(), O("div", or, [
4340
+ default: W(() => [e.userIsRegistered ? (L(), O("div", Zn, [
4366
4341
  j(o, {
4367
4342
  color: "success",
4368
4343
  "data-cy": "focused-study-session-btn",
@@ -4405,7 +4380,7 @@ function _sfc_render$3(e, t, n, r, i, a) {
4405
4380
  default: W(() => t[5] || (t[5] = [A(" Drop this course ")])),
4406
4381
  _: 1
4407
4382
  }, 8, ["onClick"])) : D("", !0)
4408
- ])) : (L(), O("div", sr, [j(o, {
4383
+ ])) : (L(), O("div", Qn, [j(o, {
4409
4384
  "data-cy": "register-btn",
4410
4385
  color: "primary",
4411
4386
  class: "me-2",
@@ -4465,7 +4440,7 @@ function _sfc_render$3(e, t, n, r, i, a) {
4465
4440
  ]));
4466
4441
  }
4467
4442
  t(_sfc_render$3, "_sfc_render");
4468
- var cr = /* @__PURE__ */ r(nr, [["render", _sfc_render$3], ["__scopeId", "data-v-38e9efe1"]]), lr = M({
4443
+ var $n = /* @__PURE__ */ r(qn, [["render", _sfc_render$3], ["__scopeId", "data-v-38e9efe1"]]), er = M({
4469
4444
  name: "CardBrowser",
4470
4445
  components: { CardViewer: Q },
4471
4446
  props: {
@@ -4505,7 +4480,7 @@ var cr = /* @__PURE__ */ r(nr, [["render", _sfc_render$3], ["__scopeId", "data-v
4505
4480
  this.viewIndex--, this.viewIndex = (this.viewIndex + this.views.length) % this.views.length;
4506
4481
  }
4507
4482
  }
4508
- }), ur = {
4483
+ }), tr = {
4509
4484
  key: 0,
4510
4485
  class: "text-subtitle-1 pa-2"
4511
4486
  };
@@ -4525,7 +4500,7 @@ function _sfc_render$2(e, t, n, r, i, a) {
4525
4500
  }, null, 8, ["view", "data"]),
4526
4501
  t[2] || (t[2] = k("br", null, null, -1)),
4527
4502
  t[3] || (t[3] = k("br", null, null, -1)),
4528
- e.suppressSpinner ? D("", !0) : (L(), O("div", ur, [
4503
+ e.suppressSpinner ? D("", !0) : (L(), O("div", tr, [
4529
4504
  e.spinner ? (L(), E(c, {
4530
4505
  key: 0,
4531
4506
  icon: "",
@@ -4559,7 +4534,7 @@ function _sfc_render$2(e, t, n, r, i, a) {
4559
4534
  });
4560
4535
  }
4561
4536
  t(_sfc_render$2, "_sfc_render");
4562
- var dr = /* @__PURE__ */ r(lr, [["render", _sfc_render$2]]), fr = M({
4537
+ var nr = /* @__PURE__ */ r(er, [["render", _sfc_render$2]]), rr = M({
4563
4538
  name: "CourseTagFilterWidget",
4564
4539
  props: {
4565
4540
  courseId: {
@@ -4614,13 +4589,13 @@ var dr = /* @__PURE__ */ r(lr, [["render", _sfc_render$2]]), fr = M({
4614
4589
  fuzzyFilter
4615
4590
  };
4616
4591
  }
4617
- }), pr = { class: "course-tag-filter-widget" }, mr = {
4592
+ }), ir = { class: "course-tag-filter-widget" }, ar = {
4618
4593
  key: 0,
4619
4594
  class: "filter-summary text-caption mt-2"
4620
- }, hr = { key: 0 }, gr = { key: 1 }, _r = { key: 2 };
4595
+ }, or = { key: 0 }, sr = { key: 1 }, cr = { key: 2 };
4621
4596
  function _sfc_render$1(e, t, n, r, i, a) {
4622
4597
  let o = V("v-chip"), s = V("v-list-item"), c = V("v-autocomplete"), l = V("v-icon");
4623
- return L(), O("div", pr, [
4598
+ return L(), O("div", ir, [
4624
4599
  j(c, {
4625
4600
  modelValue: e.localFilter.include,
4626
4601
  "onUpdate:modelValue": t[0] || (t[0] = (t) => e.localFilter.include = t),
@@ -4702,7 +4677,7 @@ function _sfc_render$1(e, t, n, r, i, a) {
4702
4677
  "disabled",
4703
4678
  "custom-filter"
4704
4679
  ]),
4705
- e.hasActiveFilter ? (L(), O("div", mr, [
4680
+ e.hasActiveFilter ? (L(), O("div", ar, [
4706
4681
  j(l, {
4707
4682
  size: "small",
4708
4683
  color: "info",
@@ -4711,18 +4686,18 @@ function _sfc_render$1(e, t, n, r, i, a) {
4711
4686
  default: W(() => t[2] || (t[2] = [A("mdi-filter")])),
4712
4687
  _: 1
4713
4688
  }),
4714
- e.localFilter.include.length ? (L(), O("span", hr, " Including: " + H(e.localFilter.include.join(", ")), 1)) : D("", !0),
4715
- e.localFilter.include.length && e.localFilter.exclude.length ? (L(), O("span", gr, " · ")) : D("", !0),
4716
- e.localFilter.exclude.length ? (L(), O("span", _r, " Excluding: " + H(e.localFilter.exclude.join(", ")), 1)) : D("", !0)
4689
+ e.localFilter.include.length ? (L(), O("span", or, " Including: " + H(e.localFilter.include.join(", ")), 1)) : D("", !0),
4690
+ e.localFilter.include.length && e.localFilter.exclude.length ? (L(), O("span", sr, " · ")) : D("", !0),
4691
+ e.localFilter.exclude.length ? (L(), O("span", cr, " Excluding: " + H(e.localFilter.exclude.join(", ")), 1)) : D("", !0)
4717
4692
  ])) : D("", !0)
4718
4693
  ]);
4719
4694
  }
4720
4695
  t(_sfc_render$1, "_sfc_render");
4721
- var vr = /* @__PURE__ */ r(fr, [["render", _sfc_render$1], ["__scopeId", "data-v-e1ba963b"]]), $ = {
4696
+ var lr = /* @__PURE__ */ r(rr, [["render", _sfc_render$1], ["__scopeId", "data-v-e1ba963b"]]), $ = {
4722
4697
  min: 0,
4723
4698
  startingMax: 2,
4724
4699
  absoluteMax: 10
4725
- }, yr = "UserTagPreferenceFilter", br = M({
4700
+ }, ur = "UserTagPreferenceFilter", dr = M({
4726
4701
  name: "UserTagPreferences",
4727
4702
  props: {
4728
4703
  courseId: {
@@ -4788,7 +4763,7 @@ var vr = /* @__PURE__ */ r(fr, [["render", _sfc_render$1], ["__scopeId", "data-v
4788
4763
  try {
4789
4764
  if (this.user = await getCurrentUser() ?? null, !this.user) throw Error("User not available");
4790
4765
  this.courseDB = X().getCourseDB(this.courseId), this.availableTags = (await this.courseDB.getCourseTagStubs()).rows.map((e) => e.doc).filter(Boolean);
4791
- let e = await this.user.getStrategyState(this.courseId, yr);
4766
+ let e = await this.user.getStrategyState(this.courseId, ur);
4792
4767
  e ? this.preferences.boost = { ...e.boost } : this.preferences.boost = {}, this.savedPreferences.boost = { ...this.preferences.boost }, this.tagMaxRanges = {}, Object.keys(this.preferences.boost).forEach((e) => {
4793
4768
  let t = this.preferences.boost[e], n = this.sliderConfigResolved.startingMax;
4794
4769
  t > n ? this.tagMaxRanges[e] = Math.min(Math.ceil(t), this.sliderConfigResolved.absoluteMax) : this.tagMaxRanges[e] = n;
@@ -4839,7 +4814,7 @@ var vr = /* @__PURE__ */ r(fr, [["render", _sfc_render$1], ["__scopeId", "data-v
4839
4814
  boost: { ...this.preferences.boost },
4840
4815
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
4841
4816
  };
4842
- await this.user.putStrategyState(this.courseId, yr, e), this.savedPreferences.boost = { ...this.preferences.boost }, this.saveSuccess = !0, this.$emit("preferences-saved", e);
4817
+ await this.user.putStrategyState(this.courseId, ur, e), this.savedPreferences.boost = { ...this.preferences.boost }, this.saveSuccess = !0, this.$emit("preferences-saved", e);
4843
4818
  } catch (e) {
4844
4819
  console.error("Failed to save preferences:", e), this.saveError = "Failed to save preferences. Please try again.";
4845
4820
  } finally {
@@ -4847,13 +4822,13 @@ var vr = /* @__PURE__ */ r(fr, [["render", _sfc_render$1], ["__scopeId", "data-v
4847
4822
  }
4848
4823
  }
4849
4824
  }
4850
- }), xr = { key: 1 }, Sr = { class: "mb-6" }, Cr = { class: "text-subtitle-1 font-weight-bold mb-2" }, wr = { class: "d-flex align-center ga-3 w-100" }, Tr = {
4825
+ }), fr = { key: 1 }, pr = { class: "mb-6" }, mr = { class: "text-subtitle-1 font-weight-bold mb-2" }, hr = { class: "d-flex align-center ga-3 w-100" }, gr = {
4851
4826
  class: "text-body-2 flex-shrink-0",
4852
4827
  style: {
4853
4828
  "min-width": "60px",
4854
4829
  "text-align": "right"
4855
4830
  }
4856
- }, Er = {
4831
+ }, _r = {
4857
4832
  key: 2,
4858
4833
  class: "d-flex justify-center py-8"
4859
4834
  };
@@ -4873,12 +4848,12 @@ function _sfc_render(e, t, n, r, i, a) {
4873
4848
  _: 1
4874
4849
  })) : D("", !0),
4875
4850
  j(_, null, {
4876
- default: W(() => [e.courseId ? e.loading ? (L(), O("div", Er, [j(g, {
4851
+ default: W(() => [e.courseId ? e.loading ? (L(), O("div", _r, [j(g, {
4877
4852
  indeterminate: "",
4878
4853
  color: "primary"
4879
- })])) : (L(), O("div", xr, [
4880
- k("div", Sr, [
4881
- k("h3", Cr, [j(o, {
4854
+ })])) : (L(), O("div", fr, [
4855
+ k("div", pr, [
4856
+ k("h3", mr, [j(o, {
4882
4857
  start: "",
4883
4858
  size: "small"
4884
4859
  }, {
@@ -4918,7 +4893,7 @@ function _sfc_render(e, t, n, r, i, a) {
4918
4893
  key: t,
4919
4894
  class: "px-0"
4920
4895
  }, {
4921
- default: W(() => [k("div", wr, [
4896
+ default: W(() => [k("div", hr, [
4922
4897
  j(f, {
4923
4898
  size: "small",
4924
4899
  variant: "tonal",
@@ -4946,7 +4921,7 @@ function _sfc_render(e, t, n, r, i, a) {
4946
4921
  "max",
4947
4922
  "onUpdate:modelValue"
4948
4923
  ]),
4949
- k("span", Tr, H(e.formatMultiplier(e.preferences.boost[t])), 1),
4924
+ k("span", gr, H(e.formatMultiplier(e.preferences.boost[t])), 1),
4950
4925
  j(m, {
4951
4926
  icon: "mdi-plus",
4952
4927
  size: "small",
@@ -5041,8 +5016,8 @@ function _sfc_render(e, t, n, r, i, a) {
5041
5016
  _: 1
5042
5017
  }, 8, ["loading"]);
5043
5018
  }
5044
- var Dr = /* @__PURE__ */ r(br, [["render", _sfc_render], ["__scopeId", "data-v-8fb14605"]]);
5019
+ var vr = /* @__PURE__ */ r(dr, [["render", _sfc_render], ["__scopeId", "data-v-8fb14605"]]);
5045
5020
  //#endregion
5046
- export { a as AudioAutoPlayer, dr as CardBrowser, at as CardHistoryViewer, yn as CardLoader, Ke as CardSearch, Qe as CardSearchResults, Q as CardViewer, f as CodeBlockRenderer, tr as CourseCardBrowser, cr as CourseInformation, vr as CourseTagFilterWidget, Displayable, m as FillInInput, Ae as HeatMap, y as MarkdownRenderer, _ as MdTokenRenderer, ln as MultipleChoiceOption, Ue as PaginatingToolbar, Question, fn as RadioMultipleChoice, On as RequestPasswordReset, Hn as ResetPassword, Yt as SessionControllerDebug, Ne as SkMouseTrap, Fe as SkMouseTrapToolTip, e as SkldrMouseTrap, Be as SnackbarService, sn as StudySession, st as StudySessionTimer, hn as TFSelect, qn as TagsInput, bn as UserChip, _n as UserInputNumber, d as UserInputString, Cn as UserLogin, Mn as UserLoginAndRegistrationContainer, Tn as UserRegistration, Dr as UserTagPreferences, zn as VerifyEmail, Z as alertUser, h as containsComponent, getCurrentUser, getUserStatus, v as isComponent, isDefineComponent, s as isInlineComponent, isPasswordValid, o as isQuestionView, p as parseComponentSyntax, b as parseComponentToken, te as piniaPlugin, requestPasswordReset, resetPassword, sendVerificationEmail, c as splitByDelimiters, l as splitParagraphToken, g as splitTextToken, useAuthStore, i as useCardPreviewModeStore, useConfigStore, useEntitlements, ee as useQuestionView, n as useViewable, validatePassword, verifyEmail };
5021
+ export { a as AudioAutoPlayer, nr as CardBrowser, at as CardHistoryViewer, un as CardLoader, Ke as CardSearch, Qe as CardSearchResults, Q as CardViewer, f as CodeBlockRenderer, Kn as CourseCardBrowser, $n as CourseInformation, lr as CourseTagFilterWidget, Displayable, m as FillInInput, Ae as HeatMap, y as MarkdownRenderer, _ as MdTokenRenderer, $t as MultipleChoiceOption, Ue as PaginatingToolbar, Question, nn as RadioMultipleChoice, yn as RequestPasswordReset, Nn as ResetPassword, Bt as SessionControllerDebug, Ne as SkMouseTrap, Fe as SkMouseTrapToolTip, e as SkldrMouseTrap, Be as SnackbarService, Zt as StudySession, st as StudySessionTimer, on as TFSelect, Rn as TagsInput, dn as UserChip, cn as UserInputNumber, d as UserInputString, mn as UserLogin, Cn as UserLoginAndRegistrationContainer, gn as UserRegistration, vr as UserTagPreferences, An as VerifyEmail, Z as alertUser, h as containsComponent, getCurrentUser, getUserStatus, v as isComponent, isDefineComponent, s as isInlineComponent, isPasswordValid, o as isQuestionView, p as parseComponentSyntax, b as parseComponentToken, te as piniaPlugin, requestPasswordReset, resetPassword, sendVerificationEmail, c as splitByDelimiters, l as splitParagraphToken, g as splitTextToken, useAuthStore, i as useCardPreviewModeStore, useConfigStore, useEntitlements, ee as useQuestionView, n as useViewable, validatePassword, verifyEmail };
5047
5022
 
5048
5023
  //# sourceMappingURL=common-ui.es.js.map