eat-js-sdk 0.0.9 → 0.0.11

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.
@@ -1244,210 +1244,288 @@
1244
1244
  customElements.define("prompt-body", create_custom_element(PromptBody, { "rubric": {}, "prompt": {} }, ["default"], [], true));
1245
1245
  var PromptBody_default = PromptBody;
1246
1246
 
1247
- // src/lib/composables/useMCQ.ts
1248
- var useAlphabetEquivalent = (index) => {
1249
- const alphabetArr = [
1250
- "A",
1251
- "B",
1252
- "C",
1253
- "D",
1254
- "E",
1255
- "F",
1256
- "G",
1257
- "H",
1258
- "I",
1259
- "J",
1260
- "K",
1261
- "L",
1262
- "M",
1263
- "N",
1264
- "O",
1265
- "P",
1266
- "Q",
1267
- "R",
1268
- "S",
1269
- "T",
1270
- "U",
1271
- "V",
1272
- "W",
1273
- "X",
1274
- "Y",
1275
- "Z"
1276
- ];
1277
- return alphabetArr[index];
1247
+ // src/lib/assets/img/messaging/SuccessSolid.svelte
1248
+ function create_fragment2(ctx) {
1249
+ let svg;
1250
+ let path;
1251
+ return {
1252
+ c() {
1253
+ svg = svg_element("svg");
1254
+ path = svg_element("path");
1255
+ attr(path, "fill-rule", "evenodd");
1256
+ attr(path, "clip-rule", "evenodd");
1257
+ attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM14.7284 6.79289C14.3378 6.40237 13.7047 6.40237 13.3141 6.79289L8.02125 12.0858L6.20711 10.2716C5.81658 9.88112 5.18342 9.88112 4.79289 10.2716C4.40237 10.6622 4.40237 11.2953 4.79289 11.6859L7.31414 14.2071C7.70467 14.5976 8.33783 14.5976 8.72836 14.2071L14.7284 8.20711C15.1189 7.81658 15.1189 7.18342 14.7284 6.79289Z");
1258
+ attr(path, "fill", "currentColor");
1259
+ attr(svg, "width", "20");
1260
+ attr(svg, "height", "20");
1261
+ attr(svg, "viewBox", "0 0 20 20");
1262
+ attr(svg, "fill", "none");
1263
+ attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1264
+ attr(svg, "role", "img");
1265
+ attr(svg, "aria-label", "Check Icon");
1266
+ },
1267
+ m(target, anchor) {
1268
+ insert(target, svg, anchor);
1269
+ append(svg, path);
1270
+ },
1271
+ p: noop,
1272
+ i: noop,
1273
+ o: noop,
1274
+ d(detaching) {
1275
+ if (detaching) {
1276
+ detach(svg);
1277
+ }
1278
+ }
1279
+ };
1280
+ }
1281
+ var SuccessSolid = class extends SvelteComponent {
1282
+ constructor(options) {
1283
+ super();
1284
+ init(this, options, null, create_fragment2, safe_not_equal, {});
1285
+ }
1278
1286
  };
1279
- var useMCQ_default = useAlphabetEquivalent;
1287
+ create_custom_element(SuccessSolid, {}, [], [], true);
1288
+ var SuccessSolid_default = SuccessSolid;
1280
1289
 
1281
- // src/lib/components/prompt/mcq/PromptMCQ.svelte
1282
- function get_each_context(ctx, list, i) {
1283
- const child_ctx = ctx.slice();
1284
- child_ctx[11] = list[i][0];
1285
- child_ctx[12] = list[i][1];
1286
- child_ctx[14] = i;
1287
- return child_ctx;
1290
+ // src/lib/assets/img/messaging/InfoSolid.svelte
1291
+ function create_fragment3(ctx) {
1292
+ let svg;
1293
+ let path;
1294
+ return {
1295
+ c() {
1296
+ svg = svg_element("svg");
1297
+ path = svg_element("path");
1298
+ attr(path, "fill-rule", "evenodd");
1299
+ attr(path, "clip-rule", "evenodd");
1300
+ attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM10 9C9.44772 9 9 9.44772 9 10V14.5C9 15.0523 9.44772 15.5 10 15.5C10.5523 15.5 11 15.0523 11 14.5V10C11 9.44772 10.5523 9 10 9ZM10 5C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7C10.5523 7 11 6.55228 11 6C11 5.44772 10.5523 5 10 5Z");
1301
+ attr(path, "fill", "currentColor");
1302
+ attr(svg, "width", "20");
1303
+ attr(svg, "height", "20");
1304
+ attr(svg, "viewBox", "0 0 20 20");
1305
+ attr(svg, "fill", "none");
1306
+ attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1307
+ attr(svg, "role", "img");
1308
+ attr(svg, "aria-label", "Info Icon");
1309
+ },
1310
+ m(target, anchor) {
1311
+ insert(target, svg, anchor);
1312
+ append(svg, path);
1313
+ },
1314
+ p: noop,
1315
+ i: noop,
1316
+ o: noop,
1317
+ d(detaching) {
1318
+ if (detaching) {
1319
+ detach(svg);
1320
+ }
1321
+ }
1322
+ };
1288
1323
  }
1324
+ var InfoSolid = class extends SvelteComponent {
1325
+ constructor(options) {
1326
+ super();
1327
+ init(this, options, null, create_fragment3, safe_not_equal, {});
1328
+ }
1329
+ };
1330
+ create_custom_element(InfoSolid, {}, [], [], true);
1331
+ var InfoSolid_default = InfoSolid;
1332
+
1333
+ // src/lib/components/prompt/template/PromptResultFeedback.svelte
1289
1334
  function create_if_block2(ctx) {
1290
- let div1;
1291
1335
  let div0;
1292
- let div0_class_value;
1336
+ let span0;
1337
+ let current_block_type_index;
1338
+ let if_block;
1339
+ let span0_class_value;
1340
+ let t0;
1341
+ let span3;
1342
+ let span1;
1343
+ let t1;
1293
1344
  let t2;
1294
- let each_value = ensure_array_like(Object.entries(
1295
- /*options*/
1296
- ctx[4]
1297
- ));
1298
- let each_blocks = [];
1299
- for (let i = 0; i < each_value.length; i += 1) {
1300
- each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
1345
+ let span2;
1346
+ let t3;
1347
+ let div0_class_value;
1348
+ let t4;
1349
+ let div1;
1350
+ let current;
1351
+ const if_block_creators = [create_if_block_12, create_else_block];
1352
+ const if_blocks = [];
1353
+ function select_block_type(ctx2, dirty) {
1354
+ if (
1355
+ /*isResultCorrect*/
1356
+ ctx2[2]
1357
+ )
1358
+ return 0;
1359
+ return 1;
1301
1360
  }
1361
+ current_block_type_index = select_block_type(ctx, -1);
1362
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
1302
1363
  return {
1303
1364
  c() {
1304
- div1 = element("div");
1305
1365
  div0 = element("div");
1366
+ span0 = element("span");
1367
+ if_block.c();
1368
+ t0 = space();
1369
+ span3 = element("span");
1370
+ span1 = element("span");
1371
+ t1 = text(
1372
+ /*resultFeedbackTitle*/
1373
+ ctx[1]
1374
+ );
1306
1375
  t2 = space();
1307
- for (let i = 0; i < each_blocks.length; i += 1) {
1308
- each_blocks[i].c();
1309
- }
1310
- attr(div0, "class", div0_class_value = /*isDataSaving*/
1311
- ctx[0] ? "absolute inset-0 bg-transparent z-50" : "");
1312
- attr(div1, "class", "relative");
1376
+ span2 = element("span");
1377
+ t3 = text(
1378
+ /*resultFeedback*/
1379
+ ctx[0]
1380
+ );
1381
+ t4 = space();
1382
+ div1 = element("div");
1383
+ attr(span0, "class", span0_class_value = "mr-2 p-0.5 " + /*isResultCorrect*/
1384
+ (ctx[2] ? "text-green-800" : "text-red-800"));
1385
+ attr(span1, "class", "block mb-1 font-semibold");
1386
+ attr(span3, "class", "text-base");
1387
+ attr(div0, "class", div0_class_value = "flex items-start my-6 p-4 border-l-[6px] text-charcoal " + /*isResultCorrect*/
1388
+ (ctx[2] ? "border-green-800 bg-green-300" : "border-red-800 bg-red-300"));
1389
+ attr(div1, "class", "divider my-6");
1313
1390
  },
1314
1391
  m(target, anchor) {
1392
+ insert(target, div0, anchor);
1393
+ append(div0, span0);
1394
+ if_blocks[current_block_type_index].m(span0, null);
1395
+ append(div0, t0);
1396
+ append(div0, span3);
1397
+ append(span3, span1);
1398
+ append(span1, t1);
1399
+ append(span3, t2);
1400
+ append(span3, span2);
1401
+ append(span2, t3);
1402
+ insert(target, t4, anchor);
1315
1403
  insert(target, div1, anchor);
1316
- append(div1, div0);
1317
- append(div1, t2);
1318
- for (let i = 0; i < each_blocks.length; i += 1) {
1319
- if (each_blocks[i]) {
1320
- each_blocks[i].m(div1, null);
1321
- }
1322
- }
1404
+ current = true;
1323
1405
  },
1324
1406
  p(ctx2, dirty) {
1325
- if (dirty & /*isDataSaving*/
1326
- 1 && div0_class_value !== (div0_class_value = /*isDataSaving*/
1327
- ctx2[0] ? "absolute inset-0 bg-transparent z-50" : "")) {
1328
- attr(div0, "class", div0_class_value);
1329
- }
1330
- if (dirty & /*selectedOption, Object, options, handleOptionClick*/
1331
- 50) {
1332
- each_value = ensure_array_like(Object.entries(
1333
- /*options*/
1334
- ctx2[4]
1335
- ));
1336
- let i;
1337
- for (i = 0; i < each_value.length; i += 1) {
1338
- const child_ctx = get_each_context(ctx2, each_value, i);
1339
- if (each_blocks[i]) {
1340
- each_blocks[i].p(child_ctx, dirty);
1341
- } else {
1342
- each_blocks[i] = create_each_block(child_ctx);
1343
- each_blocks[i].c();
1344
- each_blocks[i].m(div1, null);
1345
- }
1346
- }
1347
- for (; i < each_blocks.length; i += 1) {
1348
- each_blocks[i].d(1);
1407
+ let previous_block_index = current_block_type_index;
1408
+ current_block_type_index = select_block_type(ctx2, dirty);
1409
+ if (current_block_type_index !== previous_block_index) {
1410
+ group_outros();
1411
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
1412
+ if_blocks[previous_block_index] = null;
1413
+ });
1414
+ check_outros();
1415
+ if_block = if_blocks[current_block_type_index];
1416
+ if (!if_block) {
1417
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
1418
+ if_block.c();
1419
+ } else {
1349
1420
  }
1350
- each_blocks.length = each_value.length;
1421
+ transition_in(if_block, 1);
1422
+ if_block.m(span0, null);
1423
+ }
1424
+ if (!current || dirty & /*isResultCorrect*/
1425
+ 4 && span0_class_value !== (span0_class_value = "mr-2 p-0.5 " + /*isResultCorrect*/
1426
+ (ctx2[2] ? "text-green-800" : "text-red-800"))) {
1427
+ attr(span0, "class", span0_class_value);
1351
1428
  }
1429
+ if (!current || dirty & /*resultFeedbackTitle*/
1430
+ 2)
1431
+ set_data(
1432
+ t1,
1433
+ /*resultFeedbackTitle*/
1434
+ ctx2[1]
1435
+ );
1436
+ if (!current || dirty & /*resultFeedback*/
1437
+ 1)
1438
+ set_data(
1439
+ t3,
1440
+ /*resultFeedback*/
1441
+ ctx2[0]
1442
+ );
1443
+ if (!current || dirty & /*isResultCorrect*/
1444
+ 4 && div0_class_value !== (div0_class_value = "flex items-start my-6 p-4 border-l-[6px] text-charcoal " + /*isResultCorrect*/
1445
+ (ctx2[2] ? "border-green-800 bg-green-300" : "border-red-800 bg-red-300"))) {
1446
+ attr(div0, "class", div0_class_value);
1447
+ }
1448
+ },
1449
+ i(local) {
1450
+ if (current)
1451
+ return;
1452
+ transition_in(if_block);
1453
+ current = true;
1454
+ },
1455
+ o(local) {
1456
+ transition_out(if_block);
1457
+ current = false;
1352
1458
  },
1353
1459
  d(detaching) {
1354
1460
  if (detaching) {
1461
+ detach(div0);
1462
+ detach(t4);
1355
1463
  detach(div1);
1356
1464
  }
1357
- destroy_each(each_blocks, detaching);
1465
+ if_blocks[current_block_type_index].d();
1358
1466
  }
1359
1467
  };
1360
1468
  }
1361
- function create_each_block(ctx) {
1362
- let button;
1363
- let span;
1364
- let t1;
1365
- let t2_value = (
1366
- /*option*/
1367
- ctx[12].answer + ""
1368
- );
1369
- let t2;
1370
- let t3;
1371
- let button_aria_label_value;
1372
- let button_class_value;
1373
- let mounted;
1374
- let dispose;
1375
- function click_handler() {
1376
- return (
1377
- /*click_handler*/
1378
- ctx[7](
1379
- /*option*/
1380
- ctx[12]
1381
- )
1382
- );
1383
- }
1469
+ function create_else_block(ctx) {
1470
+ let infosolid;
1471
+ let current;
1472
+ infosolid = new InfoSolid_default({});
1473
+ return {
1474
+ c() {
1475
+ create_component(infosolid.$$.fragment);
1476
+ },
1477
+ m(target, anchor) {
1478
+ mount_component(infosolid, target, anchor);
1479
+ current = true;
1480
+ },
1481
+ i(local) {
1482
+ if (current)
1483
+ return;
1484
+ transition_in(infosolid.$$.fragment, local);
1485
+ current = true;
1486
+ },
1487
+ o(local) {
1488
+ transition_out(infosolid.$$.fragment, local);
1489
+ current = false;
1490
+ },
1491
+ d(detaching) {
1492
+ destroy_component(infosolid, detaching);
1493
+ }
1494
+ };
1495
+ }
1496
+ function create_if_block_12(ctx) {
1497
+ let successsolid;
1498
+ let current;
1499
+ successsolid = new SuccessSolid_default({});
1384
1500
  return {
1385
1501
  c() {
1386
- button = element("button");
1387
- span = element("span");
1388
- span.textContent = `${useMCQ_default(
1389
- /*index*/
1390
- ctx[14]
1391
- )}`;
1392
- t1 = space();
1393
- t2 = text(t2_value);
1394
- t3 = space();
1395
- attr(span, "class", "choice group-active:border-2 group-active:border-blue-1000 group-active:p-[7px]");
1396
- attr(button, "aria-label", button_aria_label_value = `${/*selectedOption*/
1397
- ctx[1] === /*option*/
1398
- ctx[12].id ? "Selected option" : "Option"} ${useMCQ_default(
1399
- /*index*/
1400
- ctx[14]
1401
- )}: ${/*option*/
1402
- ctx[12].answer}`);
1403
- attr(button, "class", button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
1404
- (ctx[1] === /*option*/
1405
- ctx[12].id ? "selected" : ""));
1502
+ create_component(successsolid.$$.fragment);
1406
1503
  },
1407
1504
  m(target, anchor) {
1408
- insert(target, button, anchor);
1409
- append(button, span);
1410
- append(button, t1);
1411
- append(button, t2);
1412
- append(button, t3);
1413
- if (!mounted) {
1414
- dispose = listen(button, "click", click_handler);
1415
- mounted = true;
1416
- }
1505
+ mount_component(successsolid, target, anchor);
1506
+ current = true;
1417
1507
  },
1418
- p(new_ctx, dirty) {
1419
- ctx = new_ctx;
1420
- if (dirty & /*selectedOption*/
1421
- 2 && button_aria_label_value !== (button_aria_label_value = `${/*selectedOption*/
1422
- ctx[1] === /*option*/
1423
- ctx[12].id ? "Selected option" : "Option"} ${useMCQ_default(
1424
- /*index*/
1425
- ctx[14]
1426
- )}: ${/*option*/
1427
- ctx[12].answer}`)) {
1428
- attr(button, "aria-label", button_aria_label_value);
1429
- }
1430
- if (dirty & /*selectedOption*/
1431
- 2 && button_class_value !== (button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
1432
- (ctx[1] === /*option*/
1433
- ctx[12].id ? "selected" : ""))) {
1434
- attr(button, "class", button_class_value);
1435
- }
1508
+ i(local) {
1509
+ if (current)
1510
+ return;
1511
+ transition_in(successsolid.$$.fragment, local);
1512
+ current = true;
1513
+ },
1514
+ o(local) {
1515
+ transition_out(successsolid.$$.fragment, local);
1516
+ current = false;
1436
1517
  },
1437
1518
  d(detaching) {
1438
- if (detaching) {
1439
- detach(button);
1440
- }
1441
- mounted = false;
1442
- dispose();
1519
+ destroy_component(successsolid, detaching);
1443
1520
  }
1444
1521
  };
1445
1522
  }
1446
- function create_default_slot(ctx) {
1523
+ function create_fragment4(ctx) {
1447
1524
  let if_block_anchor;
1525
+ let current;
1448
1526
  let if_block = (
1449
- /*options*/
1450
- ctx[4] && create_if_block2(ctx)
1527
+ /*resultFeedback*/
1528
+ ctx[0] && create_if_block2(ctx)
1451
1529
  );
1452
1530
  return {
1453
1531
  c() {
@@ -1459,208 +1537,136 @@
1459
1537
  if (if_block)
1460
1538
  if_block.m(target, anchor);
1461
1539
  insert(target, if_block_anchor, anchor);
1462
- },
1463
- p(ctx2, dirty) {
1464
- if (
1465
- /*options*/
1466
- ctx2[4]
1467
- )
1468
- if_block.p(ctx2, dirty);
1469
- },
1470
- d(detaching) {
1471
- if (detaching) {
1472
- detach(if_block_anchor);
1473
- }
1474
- if (if_block)
1475
- if_block.d(detaching);
1476
- }
1477
- };
1478
- }
1479
- function create_fragment2(ctx) {
1480
- let promptbody;
1481
- let current;
1482
- promptbody = new PromptBody_default({
1483
- props: {
1484
- rubric: (
1485
- /*rubric*/
1486
- ctx[2].text
1487
- ),
1488
- prompt: (
1489
- /*prompt*/
1490
- ctx[3]
1491
- ),
1492
- $$slots: { default: [create_default_slot] },
1493
- $$scope: { ctx }
1494
- }
1495
- });
1496
- return {
1497
- c() {
1498
- create_component(promptbody.$$.fragment);
1499
- },
1500
- m(target, anchor) {
1501
- mount_component(promptbody, target, anchor);
1502
1540
  current = true;
1503
1541
  },
1504
1542
  p(ctx2, [dirty]) {
1505
- const promptbody_changes = {};
1506
- if (dirty & /*$$scope, selectedOption, isDataSaving*/
1507
- 32771) {
1508
- promptbody_changes.$$scope = { dirty, ctx: ctx2 };
1543
+ if (
1544
+ /*resultFeedback*/
1545
+ ctx2[0]
1546
+ ) {
1547
+ if (if_block) {
1548
+ if_block.p(ctx2, dirty);
1549
+ if (dirty & /*resultFeedback*/
1550
+ 1) {
1551
+ transition_in(if_block, 1);
1552
+ }
1553
+ } else {
1554
+ if_block = create_if_block2(ctx2);
1555
+ if_block.c();
1556
+ transition_in(if_block, 1);
1557
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
1558
+ }
1559
+ } else if (if_block) {
1560
+ group_outros();
1561
+ transition_out(if_block, 1, 1, () => {
1562
+ if_block = null;
1563
+ });
1564
+ check_outros();
1509
1565
  }
1510
- promptbody.$set(promptbody_changes);
1511
1566
  },
1512
1567
  i(local) {
1513
1568
  if (current)
1514
1569
  return;
1515
- transition_in(promptbody.$$.fragment, local);
1570
+ transition_in(if_block);
1516
1571
  current = true;
1517
1572
  },
1518
1573
  o(local) {
1519
- transition_out(promptbody.$$.fragment, local);
1574
+ transition_out(if_block);
1520
1575
  current = false;
1521
1576
  },
1522
1577
  d(detaching) {
1523
- destroy_component(promptbody, detaching);
1578
+ if (detaching) {
1579
+ detach(if_block_anchor);
1580
+ }
1581
+ if (if_block)
1582
+ if_block.d(detaching);
1524
1583
  }
1525
1584
  };
1526
1585
  }
1527
1586
  function instance2($$self, $$props, $$invalidate) {
1528
- let { sessionData } = $$props;
1529
- let { isDataSaving } = $$props;
1530
- const { rubric, interaction, metadata } = sessionData;
1531
- const { prompt, options } = interaction;
1532
- let selectedOption;
1533
- const dispatch = createEventDispatcher();
1534
- if (metadata) {
1535
- const { events } = metadata.interactions;
1536
- const currentOption = events.pop();
1537
- const { answer_id: answerChoiceId } = currentOption;
1538
- selectedOption = answerChoiceId[0];
1539
- }
1540
- const handleOptionClick = (optionId, option) => {
1541
- if (isDataSaving || optionId === selectedOption)
1542
- return;
1543
- $$invalidate(1, selectedOption = optionId);
1544
- dispatch("saveOption", {
1545
- answer_id: [optionId],
1546
- answer_choice: [option]
1547
- });
1548
- };
1549
- const click_handler = (option) => handleOptionClick(option.id, option.answer);
1587
+ let { resultFeedback = null } = $$props;
1588
+ let { resultFeedbackTitle = null } = $$props;
1589
+ let { isResultCorrect: isResultCorrect2 = true } = $$props;
1550
1590
  $$self.$$set = ($$props2) => {
1551
- if ("sessionData" in $$props2)
1552
- $$invalidate(6, sessionData = $$props2.sessionData);
1553
- if ("isDataSaving" in $$props2)
1554
- $$invalidate(0, isDataSaving = $$props2.isDataSaving);
1591
+ if ("resultFeedback" in $$props2)
1592
+ $$invalidate(0, resultFeedback = $$props2.resultFeedback);
1593
+ if ("resultFeedbackTitle" in $$props2)
1594
+ $$invalidate(1, resultFeedbackTitle = $$props2.resultFeedbackTitle);
1595
+ if ("isResultCorrect" in $$props2)
1596
+ $$invalidate(2, isResultCorrect2 = $$props2.isResultCorrect);
1555
1597
  };
1556
- return [
1557
- isDataSaving,
1558
- selectedOption,
1559
- rubric,
1560
- prompt,
1561
- options,
1562
- handleOptionClick,
1563
- sessionData,
1564
- click_handler
1565
- ];
1598
+ return [resultFeedback, resultFeedbackTitle, isResultCorrect2];
1566
1599
  }
1567
- var PromptMCQ = class extends SvelteComponent {
1600
+ var PromptResultFeedback = class extends SvelteComponent {
1568
1601
  constructor(options) {
1569
1602
  super();
1570
- init(this, options, instance2, create_fragment2, safe_not_equal, { sessionData: 6, isDataSaving: 0 });
1603
+ init(this, options, instance2, create_fragment4, safe_not_equal, {
1604
+ resultFeedback: 0,
1605
+ resultFeedbackTitle: 1,
1606
+ isResultCorrect: 2
1607
+ });
1571
1608
  }
1572
- get sessionData() {
1573
- return this.$$.ctx[6];
1609
+ get resultFeedback() {
1610
+ return this.$$.ctx[0];
1574
1611
  }
1575
- set sessionData(sessionData) {
1576
- this.$$set({ sessionData });
1612
+ set resultFeedback(resultFeedback) {
1613
+ this.$$set({ resultFeedback });
1577
1614
  flush();
1578
1615
  }
1579
- get isDataSaving() {
1580
- return this.$$.ctx[0];
1616
+ get resultFeedbackTitle() {
1617
+ return this.$$.ctx[1];
1581
1618
  }
1582
- set isDataSaving(isDataSaving) {
1583
- this.$$set({ isDataSaving });
1619
+ set resultFeedbackTitle(resultFeedbackTitle) {
1620
+ this.$$set({ resultFeedbackTitle });
1621
+ flush();
1622
+ }
1623
+ get isResultCorrect() {
1624
+ return this.$$.ctx[2];
1625
+ }
1626
+ set isResultCorrect(isResultCorrect2) {
1627
+ this.$$set({ isResultCorrect: isResultCorrect2 });
1584
1628
  flush();
1585
1629
  }
1586
1630
  };
1587
- customElements.define("prompt-mcq", create_custom_element(PromptMCQ, { "sessionData": {}, "isDataSaving": {} }, [], [], true));
1588
- var PromptMCQ_default = PromptMCQ;
1589
-
1590
- // node_modules/autosize/dist/autosize.esm.js
1591
- var e = /* @__PURE__ */ new Map();
1592
- function t(t2) {
1593
- var o2 = e.get(t2);
1594
- o2 && o2.destroy();
1595
- }
1596
- function o(t2) {
1597
- var o2 = e.get(t2);
1598
- o2 && o2.update();
1599
- }
1600
- var r = null;
1601
- "undefined" == typeof window ? ((r = function(e2) {
1602
- return e2;
1603
- }).destroy = function(e2) {
1604
- return e2;
1605
- }, r.update = function(e2) {
1606
- return e2;
1607
- }) : ((r = function(t2, o2) {
1608
- return t2 && Array.prototype.forEach.call(t2.length ? t2 : [t2], function(t3) {
1609
- return function(t4) {
1610
- if (t4 && t4.nodeName && "TEXTAREA" === t4.nodeName && !e.has(t4)) {
1611
- var o3, r2 = null, n2 = window.getComputedStyle(t4), i = (o3 = t4.value, function() {
1612
- a({ testForHeightReduction: "" === o3 || !t4.value.startsWith(o3), restoreTextAlign: null }), o3 = t4.value;
1613
- }), l = function(o4) {
1614
- t4.removeEventListener("autosize:destroy", l), t4.removeEventListener("autosize:update", s), t4.removeEventListener("input", i), window.removeEventListener("resize", s), Object.keys(o4).forEach(function(e2) {
1615
- return t4.style[e2] = o4[e2];
1616
- }), e.delete(t4);
1617
- }.bind(t4, { height: t4.style.height, resize: t4.style.resize, textAlign: t4.style.textAlign, overflowY: t4.style.overflowY, overflowX: t4.style.overflowX, wordWrap: t4.style.wordWrap });
1618
- t4.addEventListener("autosize:destroy", l), t4.addEventListener("autosize:update", s), t4.addEventListener("input", i), window.addEventListener("resize", s), t4.style.overflowX = "hidden", t4.style.wordWrap = "break-word", e.set(t4, { destroy: l, update: s }), s();
1619
- }
1620
- function a(e2) {
1621
- var o4, i2, l2 = e2.restoreTextAlign, s2 = void 0 === l2 ? null : l2, d = e2.testForHeightReduction, u = void 0 === d || d, c = n2.overflowY;
1622
- if (0 !== t4.scrollHeight && ("vertical" === n2.resize ? t4.style.resize = "none" : "both" === n2.resize && (t4.style.resize = "horizontal"), u && (o4 = function(e3) {
1623
- for (var t5 = []; e3 && e3.parentNode && e3.parentNode instanceof Element; )
1624
- e3.parentNode.scrollTop && t5.push([e3.parentNode, e3.parentNode.scrollTop]), e3 = e3.parentNode;
1625
- return function() {
1626
- return t5.forEach(function(e4) {
1627
- var t6 = e4[0], o5 = e4[1];
1628
- t6.style.scrollBehavior = "auto", t6.scrollTop = o5, t6.style.scrollBehavior = null;
1629
- });
1630
- };
1631
- }(t4), t4.style.height = ""), i2 = "content-box" === n2.boxSizing ? t4.scrollHeight - (parseFloat(n2.paddingTop) + parseFloat(n2.paddingBottom)) : t4.scrollHeight + parseFloat(n2.borderTopWidth) + parseFloat(n2.borderBottomWidth), "none" !== n2.maxHeight && i2 > parseFloat(n2.maxHeight) ? ("hidden" === n2.overflowY && (t4.style.overflow = "scroll"), i2 = parseFloat(n2.maxHeight)) : "hidden" !== n2.overflowY && (t4.style.overflow = "hidden"), t4.style.height = i2 + "px", s2 && (t4.style.textAlign = s2), o4 && o4(), r2 !== i2 && (t4.dispatchEvent(new Event("autosize:resized", { bubbles: true })), r2 = i2), c !== n2.overflow && !s2)) {
1632
- var v = n2.textAlign;
1633
- "hidden" === n2.overflow && (t4.style.textAlign = "start" === v ? "end" : "start"), a({ restoreTextAlign: v, testForHeightReduction: true });
1634
- }
1635
- }
1636
- function s() {
1637
- a({ testForHeightReduction: true, restoreTextAlign: null });
1638
- }
1639
- }(t3);
1640
- }), t2;
1641
- }).destroy = function(e2) {
1642
- return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], t), e2;
1643
- }, r.update = function(e2) {
1644
- return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], o), e2;
1645
- });
1646
- var n = r;
1647
- var autosize_esm_default = n;
1631
+ customElements.define("prompt-result-feedback", create_custom_element(PromptResultFeedback, { "resultFeedback": {}, "resultFeedbackTitle": {}, "isResultCorrect": { "type": "Boolean" } }, [], [], true));
1632
+ var PromptResultFeedback_default = PromptResultFeedback;
1648
1633
 
1649
- // node_modules/svelte-autosize/index.js
1650
- var action = (node) => {
1651
- autosize_esm_default(node);
1652
- return {
1653
- destroy() {
1654
- autosize_esm_default.destroy(node);
1655
- }
1656
- };
1634
+ // src/lib/composables/useMCQ.ts
1635
+ var useAlphabetEquivalent = (index) => {
1636
+ const alphabetArr = [
1637
+ "A",
1638
+ "B",
1639
+ "C",
1640
+ "D",
1641
+ "E",
1642
+ "F",
1643
+ "G",
1644
+ "H",
1645
+ "I",
1646
+ "J",
1647
+ "K",
1648
+ "L",
1649
+ "M",
1650
+ "N",
1651
+ "O",
1652
+ "P",
1653
+ "Q",
1654
+ "R",
1655
+ "S",
1656
+ "T",
1657
+ "U",
1658
+ "V",
1659
+ "W",
1660
+ "X",
1661
+ "Y",
1662
+ "Z"
1663
+ ];
1664
+ return alphabetArr[index];
1657
1665
  };
1658
- action.update = autosize_esm_default.update;
1659
- action.destroy = autosize_esm_default.destroy;
1660
- var svelte_autosize_default = action;
1666
+ var useMCQ_default = useAlphabetEquivalent;
1661
1667
 
1662
- // src/lib/assets/img/messaging/SuccessSolid.svelte
1663
- function create_fragment3(ctx) {
1668
+ // src/lib/assets/img/messaging/ErrorSolid.svelte
1669
+ function create_fragment5(ctx) {
1664
1670
  let svg;
1665
1671
  let path;
1666
1672
  return {
@@ -1669,13 +1675,15 @@
1669
1675
  path = svg_element("path");
1670
1676
  attr(path, "fill-rule", "evenodd");
1671
1677
  attr(path, "clip-rule", "evenodd");
1672
- attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM14.7284 6.79289C14.3378 6.40237 13.7047 6.40237 13.3141 6.79289L8.02125 12.0858L6.20711 10.2716C5.81658 9.88112 5.18342 9.88112 4.79289 10.2716C4.40237 10.6622 4.40237 11.2953 4.79289 11.6859L7.31414 14.2071C7.70467 14.5976 8.33783 14.5976 8.72836 14.2071L14.7284 8.20711C15.1189 7.81658 15.1189 7.18342 14.7284 6.79289Z");
1678
+ attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM7.70711 6.29289C7.31658 5.90237 6.68342 5.90237 6.29289 6.29289C5.90237 6.68342 5.90237 7.31658 6.29289 7.70711L8.585 10L6.29289 12.2929C5.93241 12.6534 5.90468 13.2206 6.2097 13.6129L6.29289 13.7071C6.68342 14.0976 7.31658 14.0976 7.70711 13.7071L10 11.415L12.2929 13.7071C12.6534 14.0676 13.2206 14.0953 13.6129 13.7903L13.7071 13.7071C14.0976 13.3166 14.0976 12.6834 13.7071 12.2929L11.415 10L13.7071 7.70711C14.0676 7.34662 14.0953 6.77939 13.7903 6.3871L13.7071 6.29289C13.3166 5.90237 12.6834 5.90237 12.2929 6.29289L10 8.585L7.70711 6.29289Z");
1673
1679
  attr(path, "fill", "currentColor");
1674
1680
  attr(svg, "width", "20");
1675
1681
  attr(svg, "height", "20");
1676
1682
  attr(svg, "viewBox", "0 0 20 20");
1677
1683
  attr(svg, "fill", "none");
1678
1684
  attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1685
+ attr(svg, "role", "img");
1686
+ attr(svg, "aria-label", "Cross Icon");
1679
1687
  },
1680
1688
  m(target, anchor) {
1681
1689
  insert(target, svg, anchor);
@@ -1691,99 +1699,191 @@
1691
1699
  }
1692
1700
  };
1693
1701
  }
1694
- var SuccessSolid = class extends SvelteComponent {
1702
+ var ErrorSolid = class extends SvelteComponent {
1695
1703
  constructor(options) {
1696
1704
  super();
1697
- init(this, options, null, create_fragment3, safe_not_equal, {});
1705
+ init(this, options, null, create_fragment5, safe_not_equal, {});
1698
1706
  }
1699
1707
  };
1700
- create_custom_element(SuccessSolid, {}, [], [], true);
1701
- var SuccessSolid_default = SuccessSolid;
1708
+ create_custom_element(ErrorSolid, {}, [], [], true);
1709
+ var ErrorSolid_default = ErrorSolid;
1702
1710
 
1703
- // src/lib/assets/img/messaging/ErrorSolid.svelte
1704
- function create_fragment4(ctx) {
1705
- let svg;
1706
- let path;
1711
+ // src/lib/components/prompt/mcq/PromptMCQ.svelte
1712
+ function get_each_context(ctx, list, i) {
1713
+ const child_ctx = ctx.slice();
1714
+ child_ctx[15] = list[i][0];
1715
+ child_ctx[16] = list[i][1];
1716
+ child_ctx[18] = i;
1717
+ return child_ctx;
1718
+ }
1719
+ function create_if_block_13(ctx) {
1720
+ let div1;
1721
+ let div0;
1722
+ let div0_class_value;
1723
+ let t2;
1724
+ let current;
1725
+ let each_value = ensure_array_like(Object.entries(
1726
+ /*options*/
1727
+ ctx[7]
1728
+ ));
1729
+ let each_blocks = [];
1730
+ for (let i = 0; i < each_value.length; i += 1) {
1731
+ each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
1732
+ }
1733
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
1734
+ each_blocks[i] = null;
1735
+ });
1707
1736
  return {
1708
1737
  c() {
1709
- svg = svg_element("svg");
1710
- path = svg_element("path");
1711
- attr(path, "fill-rule", "evenodd");
1712
- attr(path, "clip-rule", "evenodd");
1713
- attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM7.70711 6.29289C7.31658 5.90237 6.68342 5.90237 6.29289 6.29289C5.90237 6.68342 5.90237 7.31658 6.29289 7.70711L8.585 10L6.29289 12.2929C5.93241 12.6534 5.90468 13.2206 6.2097 13.6129L6.29289 13.7071C6.68342 14.0976 7.31658 14.0976 7.70711 13.7071L10 11.415L12.2929 13.7071C12.6534 14.0676 13.2206 14.0953 13.6129 13.7903L13.7071 13.7071C14.0976 13.3166 14.0976 12.6834 13.7071 12.2929L11.415 10L13.7071 7.70711C14.0676 7.34662 14.0953 6.77939 13.7903 6.3871L13.7071 6.29289C13.3166 5.90237 12.6834 5.90237 12.2929 6.29289L10 8.585L7.70711 6.29289Z");
1714
- attr(path, "fill", "currentColor");
1715
- attr(svg, "width", "20");
1716
- attr(svg, "height", "20");
1717
- attr(svg, "viewBox", "0 0 20 20");
1718
- attr(svg, "fill", "none");
1719
- attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1738
+ div1 = element("div");
1739
+ div0 = element("div");
1740
+ t2 = space();
1741
+ for (let i = 0; i < each_blocks.length; i += 1) {
1742
+ each_blocks[i].c();
1743
+ }
1744
+ attr(div0, "class", div0_class_value = /*isDataSaving*/
1745
+ ctx[0] ? "absolute inset-0 bg-transparent z-50" : "");
1746
+ attr(div1, "class", "relative");
1720
1747
  },
1721
1748
  m(target, anchor) {
1722
- insert(target, svg, anchor);
1723
- append(svg, path);
1749
+ insert(target, div1, anchor);
1750
+ append(div1, div0);
1751
+ append(div1, t2);
1752
+ for (let i = 0; i < each_blocks.length; i += 1) {
1753
+ if (each_blocks[i]) {
1754
+ each_blocks[i].m(div1, null);
1755
+ }
1756
+ }
1757
+ current = true;
1758
+ },
1759
+ p(ctx2, dirty) {
1760
+ if (!current || dirty & /*isDataSaving*/
1761
+ 1 && div0_class_value !== (div0_class_value = /*isDataSaving*/
1762
+ ctx2[0] ? "absolute inset-0 bg-transparent z-50" : "")) {
1763
+ attr(div0, "class", div0_class_value);
1764
+ }
1765
+ if (dirty & /*selectedOption, Object, options, isFinished, isResultCorrect, handleOptionClick*/
1766
+ 398) {
1767
+ each_value = ensure_array_like(Object.entries(
1768
+ /*options*/
1769
+ ctx2[7]
1770
+ ));
1771
+ let i;
1772
+ for (i = 0; i < each_value.length; i += 1) {
1773
+ const child_ctx = get_each_context(ctx2, each_value, i);
1774
+ if (each_blocks[i]) {
1775
+ each_blocks[i].p(child_ctx, dirty);
1776
+ transition_in(each_blocks[i], 1);
1777
+ } else {
1778
+ each_blocks[i] = create_each_block(child_ctx);
1779
+ each_blocks[i].c();
1780
+ transition_in(each_blocks[i], 1);
1781
+ each_blocks[i].m(div1, null);
1782
+ }
1783
+ }
1784
+ group_outros();
1785
+ for (i = each_value.length; i < each_blocks.length; i += 1) {
1786
+ out(i);
1787
+ }
1788
+ check_outros();
1789
+ }
1790
+ },
1791
+ i(local) {
1792
+ if (current)
1793
+ return;
1794
+ for (let i = 0; i < each_value.length; i += 1) {
1795
+ transition_in(each_blocks[i]);
1796
+ }
1797
+ current = true;
1798
+ },
1799
+ o(local) {
1800
+ each_blocks = each_blocks.filter(Boolean);
1801
+ for (let i = 0; i < each_blocks.length; i += 1) {
1802
+ transition_out(each_blocks[i]);
1803
+ }
1804
+ current = false;
1724
1805
  },
1725
- p: noop,
1726
- i: noop,
1727
- o: noop,
1728
1806
  d(detaching) {
1729
1807
  if (detaching) {
1730
- detach(svg);
1808
+ detach(div1);
1731
1809
  }
1810
+ destroy_each(each_blocks, detaching);
1732
1811
  }
1733
1812
  };
1734
1813
  }
1735
- var ErrorSolid = class extends SvelteComponent {
1736
- constructor(options) {
1737
- super();
1738
- init(this, options, null, create_fragment4, safe_not_equal, {});
1814
+ function create_if_block_2(ctx) {
1815
+ let span;
1816
+ let current_block_type_index;
1817
+ let if_block;
1818
+ let span_class_value;
1819
+ let current;
1820
+ const if_block_creators = [create_if_block_3, create_else_block2];
1821
+ const if_blocks = [];
1822
+ function select_block_type(ctx2, dirty) {
1823
+ if (
1824
+ /*isResultCorrect*/
1825
+ ctx2[2]
1826
+ )
1827
+ return 0;
1828
+ return 1;
1739
1829
  }
1740
- };
1741
- create_custom_element(ErrorSolid, {}, [], [], true);
1742
- var ErrorSolid_default = ErrorSolid;
1743
-
1744
- // src/lib/assets/img/messaging/InfoSolid.svelte
1745
- function create_fragment5(ctx) {
1746
- let svg;
1747
- let path;
1830
+ current_block_type_index = select_block_type(ctx, -1);
1831
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
1748
1832
  return {
1749
1833
  c() {
1750
- svg = svg_element("svg");
1751
- path = svg_element("path");
1752
- attr(path, "fill-rule", "evenodd");
1753
- attr(path, "clip-rule", "evenodd");
1754
- attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM10 9C9.44772 9 9 9.44772 9 10V14.5C9 15.0523 9.44772 15.5 10 15.5C10.5523 15.5 11 15.0523 11 14.5V10C11 9.44772 10.5523 9 10 9ZM10 5C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7C10.5523 7 11 6.55228 11 6C11 5.44772 10.5523 5 10 5Z");
1755
- attr(path, "fill", "currentColor");
1756
- attr(svg, "width", "20");
1757
- attr(svg, "height", "20");
1758
- attr(svg, "viewBox", "0 0 20 20");
1759
- attr(svg, "fill", "none");
1760
- attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1834
+ span = element("span");
1835
+ if_block.c();
1836
+ attr(span, "class", span_class_value = /*isResultCorrect*/
1837
+ (ctx[2] ? "text-green-800" : "text-red-800") + " p-0.5");
1761
1838
  },
1762
1839
  m(target, anchor) {
1763
- insert(target, svg, anchor);
1764
- append(svg, path);
1840
+ insert(target, span, anchor);
1841
+ if_blocks[current_block_type_index].m(span, null);
1842
+ current = true;
1843
+ },
1844
+ p(ctx2, dirty) {
1845
+ let previous_block_index = current_block_type_index;
1846
+ current_block_type_index = select_block_type(ctx2, dirty);
1847
+ if (current_block_type_index !== previous_block_index) {
1848
+ group_outros();
1849
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
1850
+ if_blocks[previous_block_index] = null;
1851
+ });
1852
+ check_outros();
1853
+ if_block = if_blocks[current_block_type_index];
1854
+ if (!if_block) {
1855
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
1856
+ if_block.c();
1857
+ } else {
1858
+ }
1859
+ transition_in(if_block, 1);
1860
+ if_block.m(span, null);
1861
+ }
1862
+ if (!current || dirty & /*isResultCorrect*/
1863
+ 4 && span_class_value !== (span_class_value = /*isResultCorrect*/
1864
+ (ctx2[2] ? "text-green-800" : "text-red-800") + " p-0.5")) {
1865
+ attr(span, "class", span_class_value);
1866
+ }
1867
+ },
1868
+ i(local) {
1869
+ if (current)
1870
+ return;
1871
+ transition_in(if_block);
1872
+ current = true;
1873
+ },
1874
+ o(local) {
1875
+ transition_out(if_block);
1876
+ current = false;
1765
1877
  },
1766
- p: noop,
1767
- i: noop,
1768
- o: noop,
1769
1878
  d(detaching) {
1770
1879
  if (detaching) {
1771
- detach(svg);
1880
+ detach(span);
1772
1881
  }
1882
+ if_blocks[current_block_type_index].d();
1773
1883
  }
1774
1884
  };
1775
1885
  }
1776
- var InfoSolid = class extends SvelteComponent {
1777
- constructor(options) {
1778
- super();
1779
- init(this, options, null, create_fragment5, safe_not_equal, {});
1780
- }
1781
- };
1782
- create_custom_element(InfoSolid, {}, [], [], true);
1783
- var InfoSolid_default = InfoSolid;
1784
-
1785
- // src/lib/components/prompt/template/PromptResult.svelte
1786
- function create_else_block_1(ctx) {
1886
+ function create_else_block2(ctx) {
1787
1887
  let errorsolid;
1788
1888
  let current;
1789
1889
  errorsolid = new ErrorSolid_default({});
@@ -1810,7 +1910,7 @@
1810
1910
  }
1811
1911
  };
1812
1912
  }
1813
- function create_if_block_2(ctx) {
1913
+ function create_if_block_3(ctx) {
1814
1914
  let successsolid;
1815
1915
  let current;
1816
1916
  successsolid = new SuccessSolid_default({});
@@ -1837,119 +1937,146 @@
1837
1937
  }
1838
1938
  };
1839
1939
  }
1840
- function create_if_block3(ctx) {
1841
- let div0;
1842
- let span0;
1843
- let current_block_type_index;
1844
- let if_block;
1845
- let span0_class_value;
1846
- let t0;
1847
- let span3;
1940
+ function create_each_block(ctx) {
1941
+ let button;
1848
1942
  let span1;
1943
+ let span0;
1849
1944
  let t1;
1945
+ let t2_value = (
1946
+ /*option*/
1947
+ ctx[16].answer + ""
1948
+ );
1850
1949
  let t2;
1851
- let span2;
1852
1950
  let t3;
1853
- let div0_class_value;
1854
1951
  let t4;
1855
- let div1;
1952
+ let button_aria_label_value;
1953
+ let button_class_value;
1856
1954
  let current;
1857
- const if_block_creators = [create_if_block_12, create_else_block];
1858
- const if_blocks = [];
1859
- function select_block_type_1(ctx2, dirty) {
1860
- if (
1861
- /*isResultCorrect*/
1862
- ctx2[2]
1863
- )
1864
- return 0;
1865
- return 1;
1955
+ let mounted;
1956
+ let dispose;
1957
+ let if_block = (
1958
+ /*selectedOption*/
1959
+ ctx[3] === /*option*/
1960
+ ctx[16].id && /*isFinished*/
1961
+ ctx[1] && create_if_block_2(ctx)
1962
+ );
1963
+ function click_handler() {
1964
+ return (
1965
+ /*click_handler*/
1966
+ ctx[10](
1967
+ /*option*/
1968
+ ctx[16]
1969
+ )
1970
+ );
1866
1971
  }
1867
- current_block_type_index = select_block_type_1(ctx, -1);
1868
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
1869
1972
  return {
1870
1973
  c() {
1871
- div0 = element("div");
1872
- span0 = element("span");
1873
- if_block.c();
1874
- t0 = space();
1875
- span3 = element("span");
1974
+ button = element("button");
1876
1975
  span1 = element("span");
1877
- t1 = text(
1878
- /*feedbackTitle*/
1879
- ctx[3]
1880
- );
1881
- t2 = space();
1882
- span2 = element("span");
1883
- t3 = text(
1884
- /*resultFeedback*/
1885
- ctx[1]
1886
- );
1976
+ span0 = element("span");
1977
+ span0.textContent = `${useMCQ_default(
1978
+ /*index*/
1979
+ ctx[18]
1980
+ )}`;
1981
+ t1 = space();
1982
+ t2 = text(t2_value);
1983
+ t3 = space();
1984
+ if (if_block)
1985
+ if_block.c();
1887
1986
  t4 = space();
1888
- div1 = element("div");
1889
- attr(span0, "class", span0_class_value = `${/*spanIconClass*/
1890
- ctx[5]} mr-2 p-0.5`);
1891
- attr(span1, "class", "block mb-1 font-semibold");
1892
- attr(span3, "class", "text-base");
1893
- attr(div0, "class", div0_class_value = `${/*mainDivClass*/
1894
- ctx[4]} flex items-start my-6 p-4 border-l-[6px] text-charcoal`);
1895
- attr(div1, "class", "divider my-6");
1987
+ attr(span0, "class", "choice group-active:border-2 group-active:border-blue-1000 group-active:p-[7px]");
1988
+ attr(span1, "class", "grow flex items-center");
1989
+ attr(button, "aria-label", button_aria_label_value = `${/*selectedOption*/
1990
+ ctx[3] === /*option*/
1991
+ ctx[16].id ? `Selected option ${useMCQ_default(
1992
+ /*index*/
1993
+ ctx[18]
1994
+ )} ${!/*isFinished*/
1995
+ ctx[1] ? "" : (
1996
+ /*isResultCorrect*/
1997
+ ctx[2] ? "is correct" : "is incorrect"
1998
+ )}` : `Option ${useMCQ_default(
1999
+ /*index*/
2000
+ ctx[18]
2001
+ )}`}: ${/*option*/
2002
+ ctx[16].answer}`);
2003
+ attr(button, "class", button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
2004
+ (ctx[3] === /*option*/
2005
+ ctx[16].id ? "selected" : "") + " " + (!/*isFinished*/
2006
+ ctx[1] ? "" : (
2007
+ /*isResultCorrect*/
2008
+ ctx[2] ? "correct" : "incorrect"
2009
+ )));
1896
2010
  },
1897
2011
  m(target, anchor) {
1898
- insert(target, div0, anchor);
1899
- append(div0, span0);
1900
- if_blocks[current_block_type_index].m(span0, null);
1901
- append(div0, t0);
1902
- append(div0, span3);
1903
- append(span3, span1);
2012
+ insert(target, button, anchor);
2013
+ append(button, span1);
2014
+ append(span1, span0);
1904
2015
  append(span1, t1);
1905
- append(span3, t2);
1906
- append(span3, span2);
1907
- append(span2, t3);
1908
- insert(target, t4, anchor);
1909
- insert(target, div1, anchor);
2016
+ append(span1, t2);
2017
+ append(button, t3);
2018
+ if (if_block)
2019
+ if_block.m(button, null);
2020
+ append(button, t4);
1910
2021
  current = true;
2022
+ if (!mounted) {
2023
+ dispose = listen(button, "click", click_handler);
2024
+ mounted = true;
2025
+ }
1911
2026
  },
1912
- p(ctx2, dirty) {
1913
- let previous_block_index = current_block_type_index;
1914
- current_block_type_index = select_block_type_1(ctx2, dirty);
1915
- if (current_block_type_index !== previous_block_index) {
2027
+ p(new_ctx, dirty) {
2028
+ ctx = new_ctx;
2029
+ if (
2030
+ /*selectedOption*/
2031
+ ctx[3] === /*option*/
2032
+ ctx[16].id && /*isFinished*/
2033
+ ctx[1]
2034
+ ) {
2035
+ if (if_block) {
2036
+ if_block.p(ctx, dirty);
2037
+ if (dirty & /*selectedOption, isFinished*/
2038
+ 10) {
2039
+ transition_in(if_block, 1);
2040
+ }
2041
+ } else {
2042
+ if_block = create_if_block_2(ctx);
2043
+ if_block.c();
2044
+ transition_in(if_block, 1);
2045
+ if_block.m(button, t4);
2046
+ }
2047
+ } else if (if_block) {
1916
2048
  group_outros();
1917
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
1918
- if_blocks[previous_block_index] = null;
2049
+ transition_out(if_block, 1, 1, () => {
2050
+ if_block = null;
1919
2051
  });
1920
2052
  check_outros();
1921
- if_block = if_blocks[current_block_type_index];
1922
- if (!if_block) {
1923
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
1924
- if_block.c();
1925
- } else {
1926
- }
1927
- transition_in(if_block, 1);
1928
- if_block.m(span0, null);
1929
2053
  }
1930
- if (!current || dirty & /*spanIconClass*/
1931
- 32 && span0_class_value !== (span0_class_value = `${/*spanIconClass*/
1932
- ctx2[5]} mr-2 p-0.5`)) {
1933
- attr(span0, "class", span0_class_value);
2054
+ if (!current || dirty & /*selectedOption, isFinished, isResultCorrect*/
2055
+ 14 && button_aria_label_value !== (button_aria_label_value = `${/*selectedOption*/
2056
+ ctx[3] === /*option*/
2057
+ ctx[16].id ? `Selected option ${useMCQ_default(
2058
+ /*index*/
2059
+ ctx[18]
2060
+ )} ${!/*isFinished*/
2061
+ ctx[1] ? "" : (
2062
+ /*isResultCorrect*/
2063
+ ctx[2] ? "is correct" : "is incorrect"
2064
+ )}` : `Option ${useMCQ_default(
2065
+ /*index*/
2066
+ ctx[18]
2067
+ )}`}: ${/*option*/
2068
+ ctx[16].answer}`)) {
2069
+ attr(button, "aria-label", button_aria_label_value);
1934
2070
  }
1935
- if (!current || dirty & /*feedbackTitle*/
1936
- 8)
1937
- set_data(
1938
- t1,
1939
- /*feedbackTitle*/
1940
- ctx2[3]
1941
- );
1942
- if (!current || dirty & /*resultFeedback*/
1943
- 2)
1944
- set_data(
1945
- t3,
1946
- /*resultFeedback*/
1947
- ctx2[1]
1948
- );
1949
- if (!current || dirty & /*mainDivClass*/
1950
- 16 && div0_class_value !== (div0_class_value = `${/*mainDivClass*/
1951
- ctx2[4]} flex items-start my-6 p-4 border-l-[6px] text-charcoal`)) {
1952
- attr(div0, "class", div0_class_value);
2071
+ if (!current || dirty & /*selectedOption, isFinished, isResultCorrect*/
2072
+ 14 && button_class_value !== (button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
2073
+ (ctx[3] === /*option*/
2074
+ ctx[16].id ? "selected" : "") + " " + (!/*isFinished*/
2075
+ ctx[1] ? "" : (
2076
+ /*isResultCorrect*/
2077
+ ctx[2] ? "correct" : "incorrect"
2078
+ )))) {
2079
+ attr(button, "class", button_class_value);
1953
2080
  }
1954
2081
  },
1955
2082
  i(local) {
@@ -1964,179 +2091,184 @@
1964
2091
  },
1965
2092
  d(detaching) {
1966
2093
  if (detaching) {
1967
- detach(div0);
1968
- detach(t4);
1969
- detach(div1);
2094
+ detach(button);
1970
2095
  }
1971
- if_blocks[current_block_type_index].d();
2096
+ if (if_block)
2097
+ if_block.d();
2098
+ mounted = false;
2099
+ dispose();
1972
2100
  }
1973
2101
  };
1974
2102
  }
1975
- function create_else_block(ctx) {
1976
- let infosolid;
2103
+ function create_default_slot(ctx) {
2104
+ let if_block_anchor;
1977
2105
  let current;
1978
- infosolid = new InfoSolid_default({});
2106
+ let if_block = (
2107
+ /*options*/
2108
+ ctx[7] && create_if_block_13(ctx)
2109
+ );
1979
2110
  return {
1980
2111
  c() {
1981
- create_component(infosolid.$$.fragment);
2112
+ if (if_block)
2113
+ if_block.c();
2114
+ if_block_anchor = empty();
1982
2115
  },
1983
2116
  m(target, anchor) {
1984
- mount_component(infosolid, target, anchor);
2117
+ if (if_block)
2118
+ if_block.m(target, anchor);
2119
+ insert(target, if_block_anchor, anchor);
1985
2120
  current = true;
1986
2121
  },
2122
+ p(ctx2, dirty) {
2123
+ if (
2124
+ /*options*/
2125
+ ctx2[7]
2126
+ )
2127
+ if_block.p(ctx2, dirty);
2128
+ },
1987
2129
  i(local) {
1988
2130
  if (current)
1989
2131
  return;
1990
- transition_in(infosolid.$$.fragment, local);
2132
+ transition_in(if_block);
1991
2133
  current = true;
1992
2134
  },
1993
2135
  o(local) {
1994
- transition_out(infosolid.$$.fragment, local);
2136
+ transition_out(if_block);
1995
2137
  current = false;
1996
2138
  },
1997
2139
  d(detaching) {
1998
- destroy_component(infosolid, detaching);
2140
+ if (detaching) {
2141
+ detach(if_block_anchor);
2142
+ }
2143
+ if (if_block)
2144
+ if_block.d(detaching);
1999
2145
  }
2000
2146
  };
2001
2147
  }
2002
- function create_if_block_12(ctx) {
2003
- let successsolid;
2148
+ function create_if_block3(ctx) {
2149
+ let promptresult;
2004
2150
  let current;
2005
- successsolid = new SuccessSolid_default({});
2151
+ promptresult = new PromptResultFeedback_default({
2152
+ props: {
2153
+ isResultCorrect: (
2154
+ /*isResultCorrect*/
2155
+ ctx[2]
2156
+ ),
2157
+ resultFeedbackTitle: (
2158
+ /*isResultCorrect*/
2159
+ ctx[2] ? "Well done!" : "Nice try!"
2160
+ ),
2161
+ resultFeedback: (
2162
+ /*resultFeedback*/
2163
+ ctx[4]
2164
+ )
2165
+ }
2166
+ });
2006
2167
  return {
2007
2168
  c() {
2008
- create_component(successsolid.$$.fragment);
2169
+ create_component(promptresult.$$.fragment);
2009
2170
  },
2010
2171
  m(target, anchor) {
2011
- mount_component(successsolid, target, anchor);
2172
+ mount_component(promptresult, target, anchor);
2012
2173
  current = true;
2013
2174
  },
2175
+ p(ctx2, dirty) {
2176
+ const promptresult_changes = {};
2177
+ if (dirty & /*isResultCorrect*/
2178
+ 4)
2179
+ promptresult_changes.isResultCorrect = /*isResultCorrect*/
2180
+ ctx2[2];
2181
+ if (dirty & /*isResultCorrect*/
2182
+ 4)
2183
+ promptresult_changes.resultFeedbackTitle = /*isResultCorrect*/
2184
+ ctx2[2] ? "Well done!" : "Nice try!";
2185
+ if (dirty & /*resultFeedback*/
2186
+ 16)
2187
+ promptresult_changes.resultFeedback = /*resultFeedback*/
2188
+ ctx2[4];
2189
+ promptresult.$set(promptresult_changes);
2190
+ },
2014
2191
  i(local) {
2015
2192
  if (current)
2016
2193
  return;
2017
- transition_in(successsolid.$$.fragment, local);
2194
+ transition_in(promptresult.$$.fragment, local);
2018
2195
  current = true;
2019
2196
  },
2020
2197
  o(local) {
2021
- transition_out(successsolid.$$.fragment, local);
2198
+ transition_out(promptresult.$$.fragment, local);
2022
2199
  current = false;
2023
2200
  },
2024
2201
  d(detaching) {
2025
- destroy_component(successsolid, detaching);
2202
+ destroy_component(promptresult, detaching);
2026
2203
  }
2027
2204
  };
2028
2205
  }
2029
2206
  function create_fragment6(ctx) {
2030
- let div;
2031
- let span0;
2032
- let current_block_type_index;
2033
- let if_block0;
2034
- let span0_class_value;
2035
- let t0;
2036
- let span1;
2037
- let t1;
2207
+ let promptbody;
2038
2208
  let t2;
2039
- let if_block1_anchor;
2209
+ let if_block_anchor;
2040
2210
  let current;
2041
- const if_block_creators = [create_if_block_2, create_else_block_1];
2042
- const if_blocks = [];
2043
- function select_block_type(ctx2, dirty) {
2044
- if (
2045
- /*isResultCorrect*/
2046
- ctx2[2]
2047
- )
2048
- return 0;
2049
- return 1;
2050
- }
2051
- current_block_type_index = select_block_type(ctx, -1);
2052
- if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
2053
- let if_block1 = (
2054
- /*resultFeedback*/
2211
+ promptbody = new PromptBody_default({
2212
+ props: {
2213
+ rubric: (
2214
+ /*rubric*/
2215
+ ctx[5].text
2216
+ ),
2217
+ prompt: (
2218
+ /*prompt*/
2219
+ ctx[6]
2220
+ ),
2221
+ $$slots: { default: [create_default_slot] },
2222
+ $$scope: { ctx }
2223
+ }
2224
+ });
2225
+ let if_block = (
2226
+ /*isFinished*/
2055
2227
  ctx[1] && create_if_block3(ctx)
2056
2228
  );
2057
2229
  return {
2058
2230
  c() {
2059
- div = element("div");
2060
- span0 = element("span");
2061
- if_block0.c();
2062
- t0 = space();
2063
- span1 = element("span");
2064
- t1 = text(
2065
- /*resultMessage*/
2066
- ctx[0]
2067
- );
2231
+ create_component(promptbody.$$.fragment);
2068
2232
  t2 = space();
2069
- if (if_block1)
2070
- if_block1.c();
2071
- if_block1_anchor = empty();
2072
- attr(span0, "class", span0_class_value = `${/*spanIconClass*/
2073
- ctx[5]} mr-2 p-0.5`);
2074
- attr(span1, "class", "p2");
2075
- attr(div, "class", "flex items-center mt-2 text-charcoal");
2233
+ if (if_block)
2234
+ if_block.c();
2235
+ if_block_anchor = empty();
2076
2236
  },
2077
2237
  m(target, anchor) {
2078
- insert(target, div, anchor);
2079
- append(div, span0);
2080
- if_blocks[current_block_type_index].m(span0, null);
2081
- append(div, t0);
2082
- append(div, span1);
2083
- append(span1, t1);
2238
+ mount_component(promptbody, target, anchor);
2084
2239
  insert(target, t2, anchor);
2085
- if (if_block1)
2086
- if_block1.m(target, anchor);
2087
- insert(target, if_block1_anchor, anchor);
2240
+ if (if_block)
2241
+ if_block.m(target, anchor);
2242
+ insert(target, if_block_anchor, anchor);
2088
2243
  current = true;
2089
2244
  },
2090
2245
  p(ctx2, [dirty]) {
2091
- let previous_block_index = current_block_type_index;
2092
- current_block_type_index = select_block_type(ctx2, dirty);
2093
- if (current_block_type_index !== previous_block_index) {
2094
- group_outros();
2095
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
2096
- if_blocks[previous_block_index] = null;
2097
- });
2098
- check_outros();
2099
- if_block0 = if_blocks[current_block_type_index];
2100
- if (!if_block0) {
2101
- if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
2102
- if_block0.c();
2103
- } else {
2104
- }
2105
- transition_in(if_block0, 1);
2106
- if_block0.m(span0, null);
2107
- }
2108
- if (!current || dirty & /*spanIconClass*/
2109
- 32 && span0_class_value !== (span0_class_value = `${/*spanIconClass*/
2110
- ctx2[5]} mr-2 p-0.5`)) {
2111
- attr(span0, "class", span0_class_value);
2246
+ const promptbody_changes = {};
2247
+ if (dirty & /*$$scope, selectedOption, isFinished, isResultCorrect, isDataSaving*/
2248
+ 524303) {
2249
+ promptbody_changes.$$scope = { dirty, ctx: ctx2 };
2112
2250
  }
2113
- if (!current || dirty & /*resultMessage*/
2114
- 1)
2115
- set_data(
2116
- t1,
2117
- /*resultMessage*/
2118
- ctx2[0]
2119
- );
2251
+ promptbody.$set(promptbody_changes);
2120
2252
  if (
2121
- /*resultFeedback*/
2253
+ /*isFinished*/
2122
2254
  ctx2[1]
2123
2255
  ) {
2124
- if (if_block1) {
2125
- if_block1.p(ctx2, dirty);
2126
- if (dirty & /*resultFeedback*/
2256
+ if (if_block) {
2257
+ if_block.p(ctx2, dirty);
2258
+ if (dirty & /*isFinished*/
2127
2259
  2) {
2128
- transition_in(if_block1, 1);
2260
+ transition_in(if_block, 1);
2129
2261
  }
2130
2262
  } else {
2131
- if_block1 = create_if_block3(ctx2);
2132
- if_block1.c();
2133
- transition_in(if_block1, 1);
2134
- if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
2263
+ if_block = create_if_block3(ctx2);
2264
+ if_block.c();
2265
+ transition_in(if_block, 1);
2266
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
2135
2267
  }
2136
- } else if (if_block1) {
2268
+ } else if (if_block) {
2137
2269
  group_outros();
2138
- transition_out(if_block1, 1, 1, () => {
2139
- if_block1 = null;
2270
+ transition_out(if_block, 1, 1, () => {
2271
+ if_block = null;
2140
2272
  });
2141
2273
  check_outros();
2142
2274
  }
@@ -2144,77 +2276,113 @@
2144
2276
  i(local) {
2145
2277
  if (current)
2146
2278
  return;
2147
- transition_in(if_block0);
2148
- transition_in(if_block1);
2279
+ transition_in(promptbody.$$.fragment, local);
2280
+ transition_in(if_block);
2149
2281
  current = true;
2150
2282
  },
2151
2283
  o(local) {
2152
- transition_out(if_block0);
2153
- transition_out(if_block1);
2284
+ transition_out(promptbody.$$.fragment, local);
2285
+ transition_out(if_block);
2154
2286
  current = false;
2155
2287
  },
2156
2288
  d(detaching) {
2157
2289
  if (detaching) {
2158
- detach(div);
2159
2290
  detach(t2);
2160
- detach(if_block1_anchor);
2161
- }
2162
- if_blocks[current_block_type_index].d();
2163
- if (if_block1)
2164
- if_block1.d(detaching);
2291
+ detach(if_block_anchor);
2292
+ }
2293
+ destroy_component(promptbody, detaching);
2294
+ if (if_block)
2295
+ if_block.d(detaching);
2165
2296
  }
2166
2297
  };
2167
2298
  }
2168
2299
  function instance3($$self, $$props, $$invalidate) {
2169
- let { resultMessage = "" } = $$props;
2170
- let { resultFeedback = null } = $$props;
2171
- let { isResultCorrect: isResultCorrect2 = true } = $$props;
2172
- let feedbackTitle = "Well done!";
2173
- let mainDivClass = "border-green-800 bg-green-300";
2174
- let spanIconClass = "text-green-800";
2175
- if (!isResultCorrect2) {
2176
- feedbackTitle = "Not quite, but you\u2019re close!";
2177
- mainDivClass = "border-red-800 bg-red-300";
2178
- spanIconClass = "text-red-800";
2300
+ let { sessionData } = $$props;
2301
+ let { isDataSaving } = $$props;
2302
+ let { isFinished: isFinished2 = false } = $$props;
2303
+ let { isResultCorrect: isResultCorrect2 = false } = $$props;
2304
+ const { rubric, interaction, metadata, scoringMetadata } = sessionData;
2305
+ const { prompt, options } = interaction;
2306
+ let selectedOption = null;
2307
+ let resultFeedback = null;
2308
+ const dispatch = createEventDispatcher();
2309
+ if (metadata) {
2310
+ const { events } = metadata.interactions;
2311
+ const currentOption = events.pop();
2312
+ const { answer_id: answerChoiceId } = currentOption;
2313
+ selectedOption = answerChoiceId[0];
2314
+ }
2315
+ if (isFinished2) {
2316
+ if (options && selectedOption) {
2317
+ const feedbackData = Object.values(options).filter((option) => option.id === selectedOption);
2318
+ resultFeedback = feedbackData[0].feedback || resultFeedback;
2319
+ }
2320
+ const { answerId, has_answer } = scoringMetadata;
2321
+ selectedOption = answerId && has_answer ? answerId : selectedOption;
2179
2322
  }
2323
+ const handleOptionClick = (optionId, option) => {
2324
+ if (isDataSaving || optionId === selectedOption || isFinished2)
2325
+ return;
2326
+ $$invalidate(3, selectedOption = optionId);
2327
+ dispatch("saveOption", {
2328
+ answer_id: [optionId],
2329
+ answer_choice: [option]
2330
+ });
2331
+ };
2332
+ const click_handler = (option) => handleOptionClick(option.id, option.answer);
2180
2333
  $$self.$$set = ($$props2) => {
2181
- if ("resultMessage" in $$props2)
2182
- $$invalidate(0, resultMessage = $$props2.resultMessage);
2183
- if ("resultFeedback" in $$props2)
2184
- $$invalidate(1, resultFeedback = $$props2.resultFeedback);
2334
+ if ("sessionData" in $$props2)
2335
+ $$invalidate(9, sessionData = $$props2.sessionData);
2336
+ if ("isDataSaving" in $$props2)
2337
+ $$invalidate(0, isDataSaving = $$props2.isDataSaving);
2338
+ if ("isFinished" in $$props2)
2339
+ $$invalidate(1, isFinished2 = $$props2.isFinished);
2185
2340
  if ("isResultCorrect" in $$props2)
2186
2341
  $$invalidate(2, isResultCorrect2 = $$props2.isResultCorrect);
2187
2342
  };
2188
2343
  return [
2189
- resultMessage,
2190
- resultFeedback,
2344
+ isDataSaving,
2345
+ isFinished2,
2191
2346
  isResultCorrect2,
2192
- feedbackTitle,
2193
- mainDivClass,
2194
- spanIconClass
2347
+ selectedOption,
2348
+ resultFeedback,
2349
+ rubric,
2350
+ prompt,
2351
+ options,
2352
+ handleOptionClick,
2353
+ sessionData,
2354
+ click_handler
2195
2355
  ];
2196
2356
  }
2197
- var PromptResult = class extends SvelteComponent {
2357
+ var PromptMCQ = class extends SvelteComponent {
2198
2358
  constructor(options) {
2199
2359
  super();
2200
2360
  init(this, options, instance3, create_fragment6, safe_not_equal, {
2201
- resultMessage: 0,
2202
- resultFeedback: 1,
2361
+ sessionData: 9,
2362
+ isDataSaving: 0,
2363
+ isFinished: 1,
2203
2364
  isResultCorrect: 2
2204
2365
  });
2205
2366
  }
2206
- get resultMessage() {
2367
+ get sessionData() {
2368
+ return this.$$.ctx[9];
2369
+ }
2370
+ set sessionData(sessionData) {
2371
+ this.$$set({ sessionData });
2372
+ flush();
2373
+ }
2374
+ get isDataSaving() {
2207
2375
  return this.$$.ctx[0];
2208
2376
  }
2209
- set resultMessage(resultMessage) {
2210
- this.$$set({ resultMessage });
2377
+ set isDataSaving(isDataSaving) {
2378
+ this.$$set({ isDataSaving });
2211
2379
  flush();
2212
2380
  }
2213
- get resultFeedback() {
2381
+ get isFinished() {
2214
2382
  return this.$$.ctx[1];
2215
2383
  }
2216
- set resultFeedback(resultFeedback) {
2217
- this.$$set({ resultFeedback });
2384
+ set isFinished(isFinished2) {
2385
+ this.$$set({ isFinished: isFinished2 });
2218
2386
  flush();
2219
2387
  }
2220
2388
  get isResultCorrect() {
@@ -2225,11 +2393,88 @@
2225
2393
  flush();
2226
2394
  }
2227
2395
  };
2228
- customElements.define("prompt-result", create_custom_element(PromptResult, { "resultMessage": {}, "resultFeedback": {}, "isResultCorrect": { "type": "Boolean" } }, [], [], true));
2229
- var PromptResult_default = PromptResult;
2396
+ customElements.define("prompt-mcq", create_custom_element(PromptMCQ, { "sessionData": {}, "isDataSaving": {}, "isFinished": { "type": "Boolean" }, "isResultCorrect": { "type": "Boolean" } }, [], [], true));
2397
+ var PromptMCQ_default = PromptMCQ;
2398
+
2399
+ // node_modules/autosize/dist/autosize.esm.js
2400
+ var e = /* @__PURE__ */ new Map();
2401
+ function t(t2) {
2402
+ var o2 = e.get(t2);
2403
+ o2 && o2.destroy();
2404
+ }
2405
+ function o(t2) {
2406
+ var o2 = e.get(t2);
2407
+ o2 && o2.update();
2408
+ }
2409
+ var r = null;
2410
+ "undefined" == typeof window ? ((r = function(e2) {
2411
+ return e2;
2412
+ }).destroy = function(e2) {
2413
+ return e2;
2414
+ }, r.update = function(e2) {
2415
+ return e2;
2416
+ }) : ((r = function(t2, o2) {
2417
+ return t2 && Array.prototype.forEach.call(t2.length ? t2 : [t2], function(t3) {
2418
+ return function(t4) {
2419
+ if (t4 && t4.nodeName && "TEXTAREA" === t4.nodeName && !e.has(t4)) {
2420
+ var o3, r2 = null, n2 = window.getComputedStyle(t4), i = (o3 = t4.value, function() {
2421
+ a({ testForHeightReduction: "" === o3 || !t4.value.startsWith(o3), restoreTextAlign: null }), o3 = t4.value;
2422
+ }), l = function(o4) {
2423
+ t4.removeEventListener("autosize:destroy", l), t4.removeEventListener("autosize:update", s), t4.removeEventListener("input", i), window.removeEventListener("resize", s), Object.keys(o4).forEach(function(e2) {
2424
+ return t4.style[e2] = o4[e2];
2425
+ }), e.delete(t4);
2426
+ }.bind(t4, { height: t4.style.height, resize: t4.style.resize, textAlign: t4.style.textAlign, overflowY: t4.style.overflowY, overflowX: t4.style.overflowX, wordWrap: t4.style.wordWrap });
2427
+ t4.addEventListener("autosize:destroy", l), t4.addEventListener("autosize:update", s), t4.addEventListener("input", i), window.addEventListener("resize", s), t4.style.overflowX = "hidden", t4.style.wordWrap = "break-word", e.set(t4, { destroy: l, update: s }), s();
2428
+ }
2429
+ function a(e2) {
2430
+ var o4, i2, l2 = e2.restoreTextAlign, s2 = void 0 === l2 ? null : l2, d = e2.testForHeightReduction, u = void 0 === d || d, c = n2.overflowY;
2431
+ if (0 !== t4.scrollHeight && ("vertical" === n2.resize ? t4.style.resize = "none" : "both" === n2.resize && (t4.style.resize = "horizontal"), u && (o4 = function(e3) {
2432
+ for (var t5 = []; e3 && e3.parentNode && e3.parentNode instanceof Element; )
2433
+ e3.parentNode.scrollTop && t5.push([e3.parentNode, e3.parentNode.scrollTop]), e3 = e3.parentNode;
2434
+ return function() {
2435
+ return t5.forEach(function(e4) {
2436
+ var t6 = e4[0], o5 = e4[1];
2437
+ t6.style.scrollBehavior = "auto", t6.scrollTop = o5, t6.style.scrollBehavior = null;
2438
+ });
2439
+ };
2440
+ }(t4), t4.style.height = ""), i2 = "content-box" === n2.boxSizing ? t4.scrollHeight - (parseFloat(n2.paddingTop) + parseFloat(n2.paddingBottom)) : t4.scrollHeight + parseFloat(n2.borderTopWidth) + parseFloat(n2.borderBottomWidth), "none" !== n2.maxHeight && i2 > parseFloat(n2.maxHeight) ? ("hidden" === n2.overflowY && (t4.style.overflow = "scroll"), i2 = parseFloat(n2.maxHeight)) : "hidden" !== n2.overflowY && (t4.style.overflow = "hidden"), t4.style.height = i2 + "px", s2 && (t4.style.textAlign = s2), o4 && o4(), r2 !== i2 && (t4.dispatchEvent(new Event("autosize:resized", { bubbles: true })), r2 = i2), c !== n2.overflow && !s2)) {
2441
+ var v = n2.textAlign;
2442
+ "hidden" === n2.overflow && (t4.style.textAlign = "start" === v ? "end" : "start"), a({ restoreTextAlign: v, testForHeightReduction: true });
2443
+ }
2444
+ }
2445
+ function s() {
2446
+ a({ testForHeightReduction: true, restoreTextAlign: null });
2447
+ }
2448
+ }(t3);
2449
+ }), t2;
2450
+ }).destroy = function(e2) {
2451
+ return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], t), e2;
2452
+ }, r.update = function(e2) {
2453
+ return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], o), e2;
2454
+ });
2455
+ var n = r;
2456
+ var autosize_esm_default = n;
2457
+
2458
+ // node_modules/svelte-autosize/index.js
2459
+ var action = (node) => {
2460
+ autosize_esm_default(node);
2461
+ return {
2462
+ destroy() {
2463
+ autosize_esm_default.destroy(node);
2464
+ }
2465
+ };
2466
+ };
2467
+ action.update = autosize_esm_default.update;
2468
+ action.destroy = autosize_esm_default.destroy;
2469
+ var svelte_autosize_default = action;
2470
+
2471
+ // src/lib/constants/index.ts
2472
+ var INTERACTION_TYPE_MCQ = "multipleChoiceInteraction";
2473
+ var INTERACTION_TYPE_TYPEIN = "typeInInteraction";
2474
+ var TYPEIN_TYPE_SHORT = "Short-Text";
2230
2475
 
2231
2476
  // src/lib/components/prompt/typein/PromptTypeIn.svelte
2232
- function create_else_block2(ctx) {
2477
+ function create_else_block_1(ctx) {
2233
2478
  let textarea;
2234
2479
  let textarea_class_value;
2235
2480
  let autosize_action;
@@ -2239,10 +2484,10 @@
2239
2484
  c() {
2240
2485
  textarea = element("textarea");
2241
2486
  attr(textarea, "id", idLabel);
2487
+ attr(textarea, "aria-label", placeholder);
2242
2488
  attr(textarea, "placeholder", placeholder);
2243
2489
  attr(textarea, "rows", "3");
2244
- attr(textarea, "class", textarea_class_value = `${/*inputBorderClass*/
2245
- ctx[2]} typein-textbox overflow-hidden`);
2490
+ attr(textarea, "class", textarea_class_value = "typein-textbox overflow-hidden " + (!isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800"));
2246
2491
  textarea.disabled = /*isDataSaving*/
2247
2492
  ctx[0];
2248
2493
  attr(textarea, "autocomplete", "off");
@@ -2260,38 +2505,38 @@
2260
2505
  textarea,
2261
2506
  "input",
2262
2507
  /*textarea_input_handler*/
2263
- ctx[14]
2508
+ ctx[13]
2264
2509
  ),
2265
2510
  listen(
2266
2511
  textarea,
2267
2512
  "mousedown",
2268
2513
  /*mousedown_handler*/
2269
- ctx[15]
2514
+ ctx[14]
2270
2515
  ),
2271
2516
  listen(
2272
2517
  textarea,
2273
2518
  "touchstart",
2274
2519
  /*touchstart_handler*/
2275
- ctx[16],
2520
+ ctx[15],
2276
2521
  { passive: true }
2277
2522
  ),
2278
2523
  listen(
2279
2524
  textarea,
2280
2525
  "focus",
2281
2526
  /*focus_handler*/
2282
- ctx[17]
2527
+ ctx[16]
2283
2528
  ),
2284
2529
  listen(
2285
2530
  textarea,
2286
2531
  "focusout",
2287
2532
  /*focusout_handler_1*/
2288
- ctx[18]
2533
+ ctx[17]
2289
2534
  ),
2290
2535
  listen(
2291
2536
  textarea,
2292
2537
  "keydown",
2293
2538
  /*keydown_handler_1*/
2294
- ctx[19]
2539
+ ctx[18]
2295
2540
  ),
2296
2541
  action_destroyer(autosize_action = svelte_autosize_default.call(null, textarea))
2297
2542
  ];
@@ -2322,7 +2567,7 @@
2322
2567
  }
2323
2568
  };
2324
2569
  }
2325
- function create_if_block_13(ctx) {
2570
+ function create_if_block_22(ctx) {
2326
2571
  let input;
2327
2572
  let input_class_value;
2328
2573
  let mounted;
@@ -2332,9 +2577,9 @@
2332
2577
  input = element("input");
2333
2578
  attr(input, "type", "text");
2334
2579
  attr(input, "id", idLabel);
2580
+ attr(input, "aria-label", placeholder);
2335
2581
  attr(input, "placeholder", placeholder);
2336
- attr(input, "class", input_class_value = `${/*inputBorderClass*/
2337
- ctx[2]} typein-textbox`);
2582
+ attr(input, "class", input_class_value = "typein-textbox " + (!isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800"));
2338
2583
  input.disabled = /*isDataSaving*/
2339
2584
  ctx[0];
2340
2585
  attr(input, "autocomplete", "off");
@@ -2352,19 +2597,19 @@
2352
2597
  input,
2353
2598
  "input",
2354
2599
  /*input_input_handler*/
2355
- ctx[11]
2600
+ ctx[10]
2356
2601
  ),
2357
2602
  listen(
2358
2603
  input,
2359
2604
  "focusout",
2360
2605
  /*focusout_handler*/
2361
- ctx[12]
2606
+ ctx[11]
2362
2607
  ),
2363
2608
  listen(
2364
2609
  input,
2365
2610
  "keydown",
2366
2611
  /*keydown_handler*/
2367
- ctx[13]
2612
+ ctx[12]
2368
2613
  )
2369
2614
  ];
2370
2615
  mounted = true;
@@ -2400,10 +2645,10 @@
2400
2645
  function select_block_type(ctx2, dirty) {
2401
2646
  if (
2402
2647
  /*typeinType*/
2403
- ctx2[5] === "Short-Text"
2648
+ ctx2[4] === TYPEIN_TYPE_SHORT
2404
2649
  )
2405
- return create_if_block_13;
2406
- return create_else_block2;
2650
+ return create_if_block_22;
2651
+ return create_else_block_1;
2407
2652
  }
2408
2653
  let current_block_type = select_block_type(ctx, -1);
2409
2654
  let if_block = current_block_type(ctx);
@@ -2428,20 +2673,55 @@
2428
2673
  };
2429
2674
  }
2430
2675
  function create_if_block4(ctx) {
2676
+ let div;
2677
+ let span0;
2678
+ let current_block_type_index;
2679
+ let if_block;
2680
+ let span0_class_value;
2681
+ let t0;
2682
+ let span1;
2683
+ let div_class_value;
2684
+ let t2;
2431
2685
  let promptresult;
2432
2686
  let current;
2433
- promptresult = new PromptResult_default({
2687
+ const if_block_creators = [create_if_block_14, create_else_block3];
2688
+ const if_blocks = [];
2689
+ function select_block_type_1(ctx2, dirty) {
2690
+ if (isResultCorrect)
2691
+ return 0;
2692
+ return 1;
2693
+ }
2694
+ current_block_type_index = select_block_type_1(ctx, -1);
2695
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
2696
+ promptresult = new PromptResultFeedback_default({
2434
2697
  props: {
2435
2698
  isResultCorrect,
2436
- resultMessage: "[Generic \u201Ccorrect\u201D message]",
2699
+ resultFeedbackTitle: isResultCorrect ? "Well done!" : "Not quite, but you\u2019re close!",
2437
2700
  resultFeedback: "You applied the principles of [specific theory] perfectly in your response."
2438
2701
  }
2439
2702
  });
2440
2703
  return {
2441
2704
  c() {
2705
+ div = element("div");
2706
+ span0 = element("span");
2707
+ if_block.c();
2708
+ t0 = space();
2709
+ span1 = element("span");
2710
+ span1.textContent = `${isResultCorrect ? "[Generic \u201Ccorrect\u201D message]" : "[Generic \u201Cincorrect\u201D message]"}`;
2711
+ t2 = space();
2442
2712
  create_component(promptresult.$$.fragment);
2713
+ attr(span0, "class", span0_class_value = (isResultCorrect ? "text-green-800" : "text-red-800") + " mr-2 p-0.5");
2714
+ attr(span1, "class", "p2");
2715
+ attr(div, "class", div_class_value = "flex items-center text-charcoal " + /*typeinType*/
2716
+ (ctx[4] === TYPEIN_TYPE_SHORT ? "mt-2" : "mt-0.5"));
2443
2717
  },
2444
2718
  m(target, anchor) {
2719
+ insert(target, div, anchor);
2720
+ append(div, span0);
2721
+ if_blocks[current_block_type_index].m(span0, null);
2722
+ append(div, t0);
2723
+ append(div, span1);
2724
+ insert(target, t2, anchor);
2445
2725
  mount_component(promptresult, target, anchor);
2446
2726
  current = true;
2447
2727
  },
@@ -2449,18 +2729,79 @@
2449
2729
  i(local) {
2450
2730
  if (current)
2451
2731
  return;
2732
+ transition_in(if_block);
2452
2733
  transition_in(promptresult.$$.fragment, local);
2453
2734
  current = true;
2454
2735
  },
2455
2736
  o(local) {
2737
+ transition_out(if_block);
2456
2738
  transition_out(promptresult.$$.fragment, local);
2457
2739
  current = false;
2458
2740
  },
2459
2741
  d(detaching) {
2742
+ if (detaching) {
2743
+ detach(div);
2744
+ detach(t2);
2745
+ }
2746
+ if_blocks[current_block_type_index].d();
2460
2747
  destroy_component(promptresult, detaching);
2461
2748
  }
2462
2749
  };
2463
2750
  }
2751
+ function create_else_block3(ctx) {
2752
+ let errorsolid;
2753
+ let current;
2754
+ errorsolid = new ErrorSolid_default({});
2755
+ return {
2756
+ c() {
2757
+ create_component(errorsolid.$$.fragment);
2758
+ },
2759
+ m(target, anchor) {
2760
+ mount_component(errorsolid, target, anchor);
2761
+ current = true;
2762
+ },
2763
+ i(local) {
2764
+ if (current)
2765
+ return;
2766
+ transition_in(errorsolid.$$.fragment, local);
2767
+ current = true;
2768
+ },
2769
+ o(local) {
2770
+ transition_out(errorsolid.$$.fragment, local);
2771
+ current = false;
2772
+ },
2773
+ d(detaching) {
2774
+ destroy_component(errorsolid, detaching);
2775
+ }
2776
+ };
2777
+ }
2778
+ function create_if_block_14(ctx) {
2779
+ let successsolid;
2780
+ let current;
2781
+ successsolid = new SuccessSolid_default({});
2782
+ return {
2783
+ c() {
2784
+ create_component(successsolid.$$.fragment);
2785
+ },
2786
+ m(target, anchor) {
2787
+ mount_component(successsolid, target, anchor);
2788
+ current = true;
2789
+ },
2790
+ i(local) {
2791
+ if (current)
2792
+ return;
2793
+ transition_in(successsolid.$$.fragment, local);
2794
+ current = true;
2795
+ },
2796
+ o(local) {
2797
+ transition_out(successsolid.$$.fragment, local);
2798
+ current = false;
2799
+ },
2800
+ d(detaching) {
2801
+ destroy_component(successsolid, detaching);
2802
+ }
2803
+ };
2804
+ }
2464
2805
  function create_fragment7(ctx) {
2465
2806
  let promptbody;
2466
2807
  let t2;
@@ -2470,11 +2811,11 @@
2470
2811
  props: {
2471
2812
  rubric: (
2472
2813
  /*rubric*/
2473
- ctx[3].text
2814
+ ctx[2].text
2474
2815
  ),
2475
2816
  prompt: (
2476
2817
  /*prompt*/
2477
- ctx[4]
2818
+ ctx[3]
2478
2819
  ),
2479
2820
  $$slots: { default: [create_default_slot2] },
2480
2821
  $$scope: { ctx }
@@ -2500,7 +2841,7 @@
2500
2841
  p(ctx2, [dirty]) {
2501
2842
  const promptbody_changes = {};
2502
2843
  if (dirty & /*$$scope, isDataSaving, typeinAnswer*/
2503
- 33554435) {
2844
+ 16777219) {
2504
2845
  promptbody_changes.$$scope = { dirty, ctx: ctx2 };
2505
2846
  }
2506
2847
  promptbody.$set(promptbody_changes);
@@ -2533,7 +2874,7 @@
2533
2874
  var idLabel = "answerText";
2534
2875
  var placeholder = "Type your answer here";
2535
2876
  var isFinished = false;
2536
- var isResultCorrect = true;
2877
+ var isResultCorrect = false;
2537
2878
  function instance4($$self, $$props, $$invalidate) {
2538
2879
  let { sessionData } = $$props;
2539
2880
  let { isDataSaving } = $$props;
@@ -2541,7 +2882,6 @@
2541
2882
  let typeinAnswer;
2542
2883
  let latestAnswer = "";
2543
2884
  let focusOrigin = "tab";
2544
- const inputBorderClass = !isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800";
2545
2885
  const { rubric, interaction, metadata } = sessionData;
2546
2886
  const { prompt, typein_type: typeinType } = interaction;
2547
2887
  if (metadata) {
@@ -2588,14 +2928,13 @@
2588
2928
  const keydown_handler_1 = (event) => saveOnEnter(event);
2589
2929
  $$self.$$set = ($$props2) => {
2590
2930
  if ("sessionData" in $$props2)
2591
- $$invalidate(10, sessionData = $$props2.sessionData);
2931
+ $$invalidate(9, sessionData = $$props2.sessionData);
2592
2932
  if ("isDataSaving" in $$props2)
2593
2933
  $$invalidate(0, isDataSaving = $$props2.isDataSaving);
2594
2934
  };
2595
2935
  return [
2596
2936
  isDataSaving,
2597
2937
  typeinAnswer,
2598
- inputBorderClass,
2599
2938
  rubric,
2600
2939
  prompt,
2601
2940
  typeinType,
@@ -2618,10 +2957,10 @@
2618
2957
  var PromptTypeIn = class extends SvelteComponent {
2619
2958
  constructor(options) {
2620
2959
  super();
2621
- init(this, options, instance4, create_fragment7, safe_not_equal, { sessionData: 10, isDataSaving: 0 });
2960
+ init(this, options, instance4, create_fragment7, safe_not_equal, { sessionData: 9, isDataSaving: 0 });
2622
2961
  }
2623
2962
  get sessionData() {
2624
- return this.$$.ctx[10];
2963
+ return this.$$.ctx[9];
2625
2964
  }
2626
2965
  set sessionData(sessionData) {
2627
2966
  this.$$set({ sessionData });
@@ -2729,7 +3068,7 @@
2729
3068
 
2730
3069
  // src/lib/components/prompt/PromptBuilder.svelte
2731
3070
  function add_css(target) {
2732
- append_styles(target, "svelte-12rerkj", '*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:Mulish, sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*{font-family:Mulish, sans-serif}input::-moz-selection,textarea::-moz-selection{background-color:hsla(0, 0%, 85%, 0.4)}input::selection,textarea::selection{background-color:hsla(0, 0%, 85%, 0.4)}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.p2{font-size:0.875rem;font-weight:600;line-height:1.25rem;line-height:1.5}.item-heading{--tw-text-opacity:1;color:rgb(8 38 99/var(--tw-text-opacity));font-size:1.25rem;letter-spacing:-0.025em;line-height:1.5rem}.divider{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(107 121 121/var(--tw-border-opacity))}@keyframes svelte-12rerkj-pulse{{opacity:0.5}}.animate-skeleton{--tw-bg-opacity:1;animation:svelte-12rerkj-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.btn-mcq-option:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));outline:2px solid transparent;outline-offset:2px;transition-duration:50ms}.btn-mcq-option{--tw-text-opacity:1;--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(247 250 250/var(--tw-bg-opacity));border-color:rgb(113 115 119/var(--tw-border-opacity));border-radius:0.5rem;border-width:1px;color:rgb(33 37 41/var(--tw-text-opacity));display:flex;font-size:1rem;line-height:1.5rem;margin-bottom:1rem;min-height:48px;padding:0.5rem 0.75rem 0.5rem 0.5rem;width:100%}.btn-mcq-option:active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity));border-color:rgb(8 38 99/var(--tw-border-opacity));border-width:2px}@media(hover: hover) and (pointer: fine){.btn-mcq-option:hover{--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity))}}.btn-mcq-option>.choice{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(113 115 119/var(--tw-border-opacity));border-radius:1rem;border-width:1px;color:rgb(93 99 107/var(--tw-text-opacity));display:flex;font-size:1rem;font-weight:700;height:2rem;justify-content:center;letter-spacing:0.05em;line-height:1rem;margin-right:1rem;padding:0.5rem;width:2rem}.btn-mcq-option.selected{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity))}.btn-mcq-option.selected,.btn-mcq-option.selected>.choice{border-color:rgb(8 38 99/var(--tw-border-opacity));border-width:2px}.btn-mcq-option.selected>.choice{--tw-border-opacity:1}.typein-textbox:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));outline:2px solid transparent;outline-offset:2px;transition-duration:50ms}.typein-textbox{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(93 99 107/var(--tw-border-opacity));border-radius:0.5rem;border-width:1px;color:rgb(33 37 41/var(--tw-text-opacity));font-size:1rem;line-height:1.5rem;padding:0.75rem 1rem;width:100%}.typein-textbox::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(93 99 107/var(--tw-placeholder-opacity))}.typein-textbox::placeholder{--tw-placeholder-opacity:1;color:rgb(93 99 107/var(--tw-placeholder-opacity))}.typein-textbox:focus{--tw-border-opacity:1;border-color:rgb(84 101 251/var(--tw-border-opacity));border-width:2px}@media(hover: hover) and (pointer: fine){.typein-textbox:hover{--tw-border-opacity:1;border-color:rgb(84 101 251/var(--tw-border-opacity));border-width:2px;outline:2px solid transparent;outline-offset:2px}}.typein-textbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0)) !important}@media(hover: hover) and (pointer: fine){.typein-textbox:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));transition-duration:50ms}}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.z-50{z-index:50}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.mb-1{margin-bottom:0.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:0.5rem}.mr-2{margin-right:0.5rem}.mt-2{margin-top:0.5rem}.block{display:block}.flex{display:flex}.h-52{height:13rem}.h-6{height:1.5rem}.w-full{width:100%}.items-start{align-items:flex-start}.items-center{align-items:center}.overflow-hidden{overflow:hidden}.rounded{border-radius:0.25rem}.border-2{border-width:2px}.border-l-\\[6px\\]{border-left-width:6px}.border-green-800{--tw-border-opacity:1;border-color:rgb(0 102 5/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-red-800{--tw-border-opacity:1;border-color:rgb(217 12 85/var(--tw-border-opacity))}.bg-green-300{--tw-bg-opacity:1;background-color:rgb(241 254 241/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(253 243 247/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-0{padding:0}.p-0\\.5{padding:0.125rem}.p-2{padding:0.5rem}.p-4{padding:1rem}.text-left{text-align:left}.text-base{font-size:1rem;line-height:1.5rem}.font-semibold{font-weight:600}.text-charcoal{--tw-text-opacity:1;color:rgb(33 37 41/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(0 102 5/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(217 12 85/var(--tw-text-opacity))}.group:active .group-active\\:border-2{border-width:2px}.group:active .group-active\\:border-blue-1000{--tw-border-opacity:1;border-color:rgb(8 38 99/var(--tw-border-opacity))}.group:active .group-active\\:p-\\[7px\\]{padding:7px}@media(min-width: 732px){.md\\:mb-4{margin-bottom:1rem}}');
3071
+ append_styles(target, "svelte-14zs2vw", '*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:Mulish, sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*{font-family:Mulish, sans-serif}input::-moz-selection,textarea::-moz-selection{background-color:hsla(0, 0%, 85%, 0.4)}input::selection,textarea::selection{background-color:hsla(0, 0%, 85%, 0.4)}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.p2{font-size:0.875rem;font-weight:600;line-height:1.25rem;line-height:1.5}.item-heading{--tw-text-opacity:1;color:rgb(8 38 99/var(--tw-text-opacity));font-size:1.25rem;letter-spacing:-0.025em;line-height:1.5rem}.divider{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(107 121 121/var(--tw-border-opacity))}@keyframes svelte-14zs2vw-pulse{{opacity:0.5}}.animate-skeleton{--tw-bg-opacity:1;animation:svelte-14zs2vw-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.btn-mcq-option:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));outline:2px solid transparent;outline-offset:2px;transition-duration:50ms}.btn-mcq-option{--tw-text-opacity:1;--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(247 250 250/var(--tw-bg-opacity));border-color:rgb(113 115 119/var(--tw-border-opacity));border-radius:0.5rem;border-width:1px;color:rgb(33 37 41/var(--tw-text-opacity));display:flex;font-size:1rem;justify-content:space-between;line-height:1.5rem;margin-bottom:1rem;min-height:48px;padding:0.5rem 0.75rem 0.5rem 0.5rem;width:100%}.btn-mcq-option:active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity));border-color:rgb(8 38 99/var(--tw-border-opacity));border-width:2px}@media(hover: hover) and (pointer: fine){.btn-mcq-option:hover{--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity))}}.btn-mcq-option>span>.choice{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(113 115 119/var(--tw-border-opacity));border-radius:1rem;border-width:1px;color:rgb(93 99 107/var(--tw-text-opacity));display:flex;font-size:1rem;font-weight:700;height:2rem;justify-content:center;letter-spacing:0.05em;line-height:1rem;margin-right:1rem;padding:0.5rem;width:2rem}.btn-mcq-option.selected{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity))}.btn-mcq-option.selected,.btn-mcq-option.selected>span>.choice{border-color:rgb(8 38 99/var(--tw-border-opacity));border-width:2px}.btn-mcq-option.selected>span>.choice{--tw-border-opacity:1}.btn-mcq-option.selected.correct{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 254 241/var(--tw-bg-opacity));border-color:rgb(0 102 5/var(--tw-border-opacity));border-width:1px}.btn-mcq-option.selected.incorrect{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(253 243 247/var(--tw-bg-opacity));border-color:rgb(217 12 85/var(--tw-border-opacity));border-width:1px}.btn-mcq-option.selected.correct>span>.choice,.btn-mcq-option.selected.incorrect>span>.choice{--tw-border-opacity:1;border-color:rgb(113 115 119/var(--tw-border-opacity));border-width:1px}.typein-textbox:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));outline:2px solid transparent;outline-offset:2px;transition-duration:50ms}.typein-textbox{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(93 99 107/var(--tw-border-opacity));border-radius:0.5rem;border-width:1px;color:rgb(33 37 41/var(--tw-text-opacity));font-size:1rem;line-height:1.5rem;padding:0.75rem 1rem;width:100%}.typein-textbox::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(93 99 107/var(--tw-placeholder-opacity))}.typein-textbox::placeholder{--tw-placeholder-opacity:1;color:rgb(93 99 107/var(--tw-placeholder-opacity))}.typein-textbox:focus{--tw-border-opacity:1;border-color:rgb(84 101 251/var(--tw-border-opacity));border-width:2px}@media(hover: hover) and (pointer: fine){.typein-textbox:hover{--tw-border-opacity:1;border-color:rgb(84 101 251/var(--tw-border-opacity));border-width:2px;outline:2px solid transparent;outline-offset:2px}}.typein-textbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0)) !important}@media(hover: hover) and (pointer: fine){.typein-textbox:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));transition-duration:50ms}}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.z-50{z-index:50}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.mb-1{margin-bottom:0.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:0.5rem}.mr-2{margin-right:0.5rem}.mt-0{margin-top:0}.mt-0\\.5{margin-top:0.125rem}.mt-2{margin-top:0.5rem}.block{display:block}.flex{display:flex}.h-52{height:13rem}.h-6{height:1.5rem}.w-full{width:100%}.grow{flex-grow:1}.items-start{align-items:flex-start}.items-center{align-items:center}.overflow-hidden{overflow:hidden}.rounded{border-radius:0.25rem}.border-2{border-width:2px}.border-l-\\[6px\\]{border-left-width:6px}.border-green-800{--tw-border-opacity:1;border-color:rgb(0 102 5/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-red-800{--tw-border-opacity:1;border-color:rgb(217 12 85/var(--tw-border-opacity))}.bg-green-300{--tw-bg-opacity:1;background-color:rgb(241 254 241/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(253 243 247/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-0{padding:0}.p-0\\.5{padding:0.125rem}.p-2{padding:0.5rem}.p-4{padding:1rem}.text-left{text-align:left}.text-base{font-size:1rem;line-height:1.5rem}.font-semibold{font-weight:600}.text-charcoal{--tw-text-opacity:1;color:rgb(33 37 41/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(0 102 5/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(217 12 85/var(--tw-text-opacity))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.group:active .group-active\\:border-2{border-width:2px}.group:active .group-active\\:border-blue-1000{--tw-border-opacity:1;border-color:rgb(8 38 99/var(--tw-border-opacity))}.group:active .group-active\\:p-\\[7px\\]{padding:7px}@media(min-width: 732px){.md\\:mb-4{margin-bottom:1rem}}');
2733
3072
  }
2734
3073
  function create_else_block_12(ctx) {
2735
3074
  let invalidbanner;
@@ -2759,22 +3098,22 @@
2759
3098
  }
2760
3099
  };
2761
3100
  }
2762
- function create_if_block_14(ctx) {
3101
+ function create_if_block_15(ctx) {
2763
3102
  let current_block_type_index;
2764
3103
  let if_block;
2765
3104
  let if_block_anchor;
2766
3105
  let current;
2767
- const if_block_creators = [create_if_block_22, create_if_block_3, create_else_block3];
3106
+ const if_block_creators = [create_if_block_23, create_if_block_32, create_else_block4];
2768
3107
  const if_blocks = [];
2769
3108
  function select_block_type_1(ctx2, dirty) {
2770
3109
  if (
2771
3110
  /*interactionType*/
2772
- ctx2[3] === "multipleChoiceInteraction"
3111
+ ctx2[3] === INTERACTION_TYPE_MCQ
2773
3112
  )
2774
3113
  return 0;
2775
3114
  if (
2776
3115
  /*interactionType*/
2777
- ctx2[3] === "typeInInteraction"
3116
+ ctx2[3] === INTERACTION_TYPE_TYPEIN
2778
3117
  )
2779
3118
  return 1;
2780
3119
  return 2;
@@ -2859,7 +3198,7 @@
2859
3198
  }
2860
3199
  };
2861
3200
  }
2862
- function create_else_block3(ctx) {
3201
+ function create_else_block4(ctx) {
2863
3202
  let invalidbanner;
2864
3203
  let current;
2865
3204
  invalidbanner = new InvalidBanner_default({ props: { bannerLabel } });
@@ -2887,7 +3226,7 @@
2887
3226
  }
2888
3227
  };
2889
3228
  }
2890
- function create_if_block_3(ctx) {
3229
+ function create_if_block_32(ctx) {
2891
3230
  let prompttypein;
2892
3231
  let current;
2893
3232
  prompttypein = new PromptTypeIn_default({
@@ -2905,7 +3244,7 @@
2905
3244
  prompttypein.$on(
2906
3245
  "saveAnswer",
2907
3246
  /*saveEvent*/
2908
- ctx[4]
3247
+ ctx[6]
2909
3248
  );
2910
3249
  return {
2911
3250
  c() {
@@ -2942,7 +3281,7 @@
2942
3281
  }
2943
3282
  };
2944
3283
  }
2945
- function create_if_block_22(ctx) {
3284
+ function create_if_block_23(ctx) {
2946
3285
  let promptmcq;
2947
3286
  let current;
2948
3287
  promptmcq = new PromptMCQ_default({
@@ -2954,13 +3293,21 @@
2954
3293
  isDataSaving: (
2955
3294
  /*isDataSaving*/
2956
3295
  ctx[2]
3296
+ ),
3297
+ isFinished: (
3298
+ /*isFinished*/
3299
+ ctx[4]
3300
+ ),
3301
+ isResultCorrect: (
3302
+ /*isResultCorrect*/
3303
+ ctx[5]
2957
3304
  )
2958
3305
  }
2959
3306
  });
2960
3307
  promptmcq.$on(
2961
3308
  "saveOption",
2962
3309
  /*saveEvent*/
2963
- ctx[4]
3310
+ ctx[6]
2964
3311
  );
2965
3312
  return {
2966
3313
  c() {
@@ -2980,6 +3327,14 @@
2980
3327
  4)
2981
3328
  promptmcq_changes.isDataSaving = /*isDataSaving*/
2982
3329
  ctx2[2];
3330
+ if (dirty & /*isFinished*/
3331
+ 16)
3332
+ promptmcq_changes.isFinished = /*isFinished*/
3333
+ ctx2[4];
3334
+ if (dirty & /*isResultCorrect*/
3335
+ 32)
3336
+ promptmcq_changes.isResultCorrect = /*isResultCorrect*/
3337
+ ctx2[5];
2983
3338
  promptmcq.$set(promptmcq_changes);
2984
3339
  },
2985
3340
  i(local) {
@@ -3002,7 +3357,7 @@
3002
3357
  let if_block;
3003
3358
  let if_block_anchor;
3004
3359
  let current;
3005
- const if_block_creators = [create_if_block5, create_if_block_14, create_else_block_12];
3360
+ const if_block_creators = [create_if_block5, create_if_block_15, create_else_block_12];
3006
3361
  const if_blocks = [];
3007
3362
  function select_block_type(ctx2, dirty) {
3008
3363
  if (
@@ -3077,11 +3432,16 @@
3077
3432
  let isDataFetching = true;
3078
3433
  let isDataSaving = false;
3079
3434
  let interactionType = null;
3435
+ let isFinished2 = false;
3436
+ let isLocked = false;
3437
+ let isResultCorrect2 = false;
3080
3438
  const skipUserValidationStr = get_store_value(skipUserValidation) ? "?skip_user_validation=true" : "";
3081
3439
  const getSessionData = async (sessionId2) => {
3082
3440
  try {
3083
3441
  const { data } = await useGet(`sessions/${sessionId2}${skipUserValidationStr}`);
3084
- const { item_id: itemId, metadata } = data;
3442
+ const { item_id: itemId, metadata, is_finished: isSessionFinished, is_locked: isSessionLocked } = data;
3443
+ isLocked = isSessionLocked;
3444
+ $$invalidate(4, isFinished2 = isSessionFinished);
3085
3445
  if (itemId) {
3086
3446
  await getItemData(itemId, metadata);
3087
3447
  }
@@ -3091,9 +3451,13 @@
3091
3451
  };
3092
3452
  const getItemData = async (itemId, metadata) => {
3093
3453
  try {
3094
- const { data } = await useGet(`items/${itemId}`);
3454
+ const includeAnswer = isFinished2 && isLocked ? "?include=[correct_answer]" : "";
3455
+ const { data } = await useGet(`items/${itemId}${includeAnswer}`);
3095
3456
  $$invalidate(3, interactionType = getInteractionType(data));
3096
3457
  $$invalidate(0, sessionData = { ...data, metadata });
3458
+ if (isFinished2 && isLocked) {
3459
+ await getSessionScore();
3460
+ }
3097
3461
  } catch (error) {
3098
3462
  } finally {
3099
3463
  $$invalidate(1, isDataFetching = false);
@@ -3110,7 +3474,27 @@
3110
3474
  }
3111
3475
  return interactionType2;
3112
3476
  };
3477
+ const getSessionScore = async () => {
3478
+ try {
3479
+ const { data } = await useGet(`sessions/${sessionId}/score`);
3480
+ if (data) {
3481
+ const { metadata, has_answer: hasAnswer, scoring } = data[0];
3482
+ const scoringMetadata = {
3483
+ hasAnswer: !!hasAnswer,
3484
+ answerId: metadata.answer[0],
3485
+ correctAnswerId: metadata.correctAnswerId[0]
3486
+ };
3487
+ $$invalidate(0, sessionData = { ...sessionData, scoringMetadata });
3488
+ $$invalidate(5, isResultCorrect2 = scoring.score_earned);
3489
+ }
3490
+ } catch (error) {
3491
+ } finally {
3492
+ $$invalidate(1, isDataFetching = false);
3493
+ }
3494
+ };
3113
3495
  const saveEvent = async ({ detail }) => {
3496
+ if (isLocked || isFinished2)
3497
+ return;
3114
3498
  try {
3115
3499
  $$invalidate(2, isDataSaving = true);
3116
3500
  await usePatch(`sessions/${sessionId}${skipUserValidationStr}`, detail);
@@ -3124,10 +3508,18 @@
3124
3508
  getSessionData(sessionId);
3125
3509
  }
3126
3510
  $$self.$$set = ($$new_props) => {
3127
- $$invalidate(10, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
3511
+ $$invalidate(14, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
3128
3512
  };
3129
3513
  $$props = exclude_internal_props($$props);
3130
- return [sessionData, isDataFetching, isDataSaving, interactionType, saveEvent];
3514
+ return [
3515
+ sessionData,
3516
+ isDataFetching,
3517
+ isDataSaving,
3518
+ interactionType,
3519
+ isFinished2,
3520
+ isResultCorrect2,
3521
+ saveEvent
3522
+ ];
3131
3523
  }
3132
3524
  var PromptBuilder = class extends SvelteComponent {
3133
3525
  constructor(options) {