eat-js-sdk 0.0.9 → 0.0.10

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,284 @@
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
+ },
1265
+ m(target, anchor) {
1266
+ insert(target, svg, anchor);
1267
+ append(svg, path);
1268
+ },
1269
+ p: noop,
1270
+ i: noop,
1271
+ o: noop,
1272
+ d(detaching) {
1273
+ if (detaching) {
1274
+ detach(svg);
1275
+ }
1276
+ }
1277
+ };
1278
+ }
1279
+ var SuccessSolid = class extends SvelteComponent {
1280
+ constructor(options) {
1281
+ super();
1282
+ init(this, options, null, create_fragment2, safe_not_equal, {});
1283
+ }
1278
1284
  };
1279
- var useMCQ_default = useAlphabetEquivalent;
1285
+ create_custom_element(SuccessSolid, {}, [], [], true);
1286
+ var SuccessSolid_default = SuccessSolid;
1280
1287
 
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;
1288
+ // src/lib/assets/img/messaging/InfoSolid.svelte
1289
+ function create_fragment3(ctx) {
1290
+ let svg;
1291
+ let path;
1292
+ return {
1293
+ c() {
1294
+ svg = svg_element("svg");
1295
+ path = svg_element("path");
1296
+ attr(path, "fill-rule", "evenodd");
1297
+ attr(path, "clip-rule", "evenodd");
1298
+ 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");
1299
+ attr(path, "fill", "currentColor");
1300
+ attr(svg, "width", "20");
1301
+ attr(svg, "height", "20");
1302
+ attr(svg, "viewBox", "0 0 20 20");
1303
+ attr(svg, "fill", "none");
1304
+ attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1305
+ },
1306
+ m(target, anchor) {
1307
+ insert(target, svg, anchor);
1308
+ append(svg, path);
1309
+ },
1310
+ p: noop,
1311
+ i: noop,
1312
+ o: noop,
1313
+ d(detaching) {
1314
+ if (detaching) {
1315
+ detach(svg);
1316
+ }
1317
+ }
1318
+ };
1288
1319
  }
1320
+ var InfoSolid = class extends SvelteComponent {
1321
+ constructor(options) {
1322
+ super();
1323
+ init(this, options, null, create_fragment3, safe_not_equal, {});
1324
+ }
1325
+ };
1326
+ create_custom_element(InfoSolid, {}, [], [], true);
1327
+ var InfoSolid_default = InfoSolid;
1328
+
1329
+ // src/lib/components/prompt/template/PromptResultFeedback.svelte
1289
1330
  function create_if_block2(ctx) {
1290
- let div1;
1291
1331
  let div0;
1292
- let div0_class_value;
1332
+ let span0;
1333
+ let current_block_type_index;
1334
+ let if_block;
1335
+ let span0_class_value;
1336
+ let t0;
1337
+ let span3;
1338
+ let span1;
1339
+ let t1;
1293
1340
  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));
1341
+ let span2;
1342
+ let t3;
1343
+ let div0_class_value;
1344
+ let t4;
1345
+ let div1;
1346
+ let current;
1347
+ const if_block_creators = [create_if_block_12, create_else_block];
1348
+ const if_blocks = [];
1349
+ function select_block_type(ctx2, dirty) {
1350
+ if (
1351
+ /*isResultCorrect*/
1352
+ ctx2[2]
1353
+ )
1354
+ return 0;
1355
+ return 1;
1301
1356
  }
1357
+ current_block_type_index = select_block_type(ctx, -1);
1358
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
1302
1359
  return {
1303
1360
  c() {
1304
- div1 = element("div");
1305
1361
  div0 = element("div");
1362
+ span0 = element("span");
1363
+ if_block.c();
1364
+ t0 = space();
1365
+ span3 = element("span");
1366
+ span1 = element("span");
1367
+ t1 = text(
1368
+ /*resultFeedbackTitle*/
1369
+ ctx[1]
1370
+ );
1306
1371
  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");
1372
+ span2 = element("span");
1373
+ t3 = text(
1374
+ /*resultFeedback*/
1375
+ ctx[0]
1376
+ );
1377
+ t4 = space();
1378
+ div1 = element("div");
1379
+ attr(span0, "class", span0_class_value = "mr-2 p-0.5 " + /*isResultCorrect*/
1380
+ (ctx[2] ? "text-green-800" : "text-red-800"));
1381
+ attr(span1, "class", "block mb-1 font-semibold");
1382
+ attr(span3, "class", "text-base");
1383
+ attr(div0, "class", div0_class_value = "flex items-start my-6 p-4 border-l-[6px] text-charcoal " + /*isResultCorrect*/
1384
+ (ctx[2] ? "border-green-800 bg-green-300" : "border-red-800 bg-red-300"));
1385
+ attr(div1, "class", "divider my-6");
1313
1386
  },
1314
1387
  m(target, anchor) {
1388
+ insert(target, div0, anchor);
1389
+ append(div0, span0);
1390
+ if_blocks[current_block_type_index].m(span0, null);
1391
+ append(div0, t0);
1392
+ append(div0, span3);
1393
+ append(span3, span1);
1394
+ append(span1, t1);
1395
+ append(span3, t2);
1396
+ append(span3, span2);
1397
+ append(span2, t3);
1398
+ insert(target, t4, anchor);
1315
1399
  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
- }
1400
+ current = true;
1323
1401
  },
1324
1402
  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);
1403
+ let previous_block_index = current_block_type_index;
1404
+ current_block_type_index = select_block_type(ctx2, dirty);
1405
+ if (current_block_type_index !== previous_block_index) {
1406
+ group_outros();
1407
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
1408
+ if_blocks[previous_block_index] = null;
1409
+ });
1410
+ check_outros();
1411
+ if_block = if_blocks[current_block_type_index];
1412
+ if (!if_block) {
1413
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
1414
+ if_block.c();
1415
+ } else {
1349
1416
  }
1350
- each_blocks.length = each_value.length;
1417
+ transition_in(if_block, 1);
1418
+ if_block.m(span0, null);
1419
+ }
1420
+ if (!current || dirty & /*isResultCorrect*/
1421
+ 4 && span0_class_value !== (span0_class_value = "mr-2 p-0.5 " + /*isResultCorrect*/
1422
+ (ctx2[2] ? "text-green-800" : "text-red-800"))) {
1423
+ attr(span0, "class", span0_class_value);
1424
+ }
1425
+ if (!current || dirty & /*resultFeedbackTitle*/
1426
+ 2)
1427
+ set_data(
1428
+ t1,
1429
+ /*resultFeedbackTitle*/
1430
+ ctx2[1]
1431
+ );
1432
+ if (!current || dirty & /*resultFeedback*/
1433
+ 1)
1434
+ set_data(
1435
+ t3,
1436
+ /*resultFeedback*/
1437
+ ctx2[0]
1438
+ );
1439
+ if (!current || dirty & /*isResultCorrect*/
1440
+ 4 && div0_class_value !== (div0_class_value = "flex items-start my-6 p-4 border-l-[6px] text-charcoal " + /*isResultCorrect*/
1441
+ (ctx2[2] ? "border-green-800 bg-green-300" : "border-red-800 bg-red-300"))) {
1442
+ attr(div0, "class", div0_class_value);
1351
1443
  }
1352
1444
  },
1445
+ i(local) {
1446
+ if (current)
1447
+ return;
1448
+ transition_in(if_block);
1449
+ current = true;
1450
+ },
1451
+ o(local) {
1452
+ transition_out(if_block);
1453
+ current = false;
1454
+ },
1353
1455
  d(detaching) {
1354
1456
  if (detaching) {
1457
+ detach(div0);
1458
+ detach(t4);
1355
1459
  detach(div1);
1356
1460
  }
1357
- destroy_each(each_blocks, detaching);
1461
+ if_blocks[current_block_type_index].d();
1358
1462
  }
1359
1463
  };
1360
1464
  }
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
- }
1465
+ function create_else_block(ctx) {
1466
+ let infosolid;
1467
+ let current;
1468
+ infosolid = new InfoSolid_default({});
1469
+ return {
1470
+ c() {
1471
+ create_component(infosolid.$$.fragment);
1472
+ },
1473
+ m(target, anchor) {
1474
+ mount_component(infosolid, target, anchor);
1475
+ current = true;
1476
+ },
1477
+ i(local) {
1478
+ if (current)
1479
+ return;
1480
+ transition_in(infosolid.$$.fragment, local);
1481
+ current = true;
1482
+ },
1483
+ o(local) {
1484
+ transition_out(infosolid.$$.fragment, local);
1485
+ current = false;
1486
+ },
1487
+ d(detaching) {
1488
+ destroy_component(infosolid, detaching);
1489
+ }
1490
+ };
1491
+ }
1492
+ function create_if_block_12(ctx) {
1493
+ let successsolid;
1494
+ let current;
1495
+ successsolid = new SuccessSolid_default({});
1384
1496
  return {
1385
1497
  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" : ""));
1498
+ create_component(successsolid.$$.fragment);
1406
1499
  },
1407
1500
  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
- }
1501
+ mount_component(successsolid, target, anchor);
1502
+ current = true;
1417
1503
  },
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
- }
1504
+ i(local) {
1505
+ if (current)
1506
+ return;
1507
+ transition_in(successsolid.$$.fragment, local);
1508
+ current = true;
1509
+ },
1510
+ o(local) {
1511
+ transition_out(successsolid.$$.fragment, local);
1512
+ current = false;
1436
1513
  },
1437
1514
  d(detaching) {
1438
- if (detaching) {
1439
- detach(button);
1440
- }
1441
- mounted = false;
1442
- dispose();
1515
+ destroy_component(successsolid, detaching);
1443
1516
  }
1444
1517
  };
1445
1518
  }
1446
- function create_default_slot(ctx) {
1519
+ function create_fragment4(ctx) {
1447
1520
  let if_block_anchor;
1521
+ let current;
1448
1522
  let if_block = (
1449
- /*options*/
1450
- ctx[4] && create_if_block2(ctx)
1523
+ /*resultFeedback*/
1524
+ ctx[0] && create_if_block2(ctx)
1451
1525
  );
1452
1526
  return {
1453
1527
  c() {
@@ -1459,208 +1533,136 @@
1459
1533
  if (if_block)
1460
1534
  if_block.m(target, anchor);
1461
1535
  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
1536
  current = true;
1503
1537
  },
1504
1538
  p(ctx2, [dirty]) {
1505
- const promptbody_changes = {};
1506
- if (dirty & /*$$scope, selectedOption, isDataSaving*/
1507
- 32771) {
1508
- promptbody_changes.$$scope = { dirty, ctx: ctx2 };
1539
+ if (
1540
+ /*resultFeedback*/
1541
+ ctx2[0]
1542
+ ) {
1543
+ if (if_block) {
1544
+ if_block.p(ctx2, dirty);
1545
+ if (dirty & /*resultFeedback*/
1546
+ 1) {
1547
+ transition_in(if_block, 1);
1548
+ }
1549
+ } else {
1550
+ if_block = create_if_block2(ctx2);
1551
+ if_block.c();
1552
+ transition_in(if_block, 1);
1553
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
1554
+ }
1555
+ } else if (if_block) {
1556
+ group_outros();
1557
+ transition_out(if_block, 1, 1, () => {
1558
+ if_block = null;
1559
+ });
1560
+ check_outros();
1509
1561
  }
1510
- promptbody.$set(promptbody_changes);
1511
1562
  },
1512
1563
  i(local) {
1513
1564
  if (current)
1514
1565
  return;
1515
- transition_in(promptbody.$$.fragment, local);
1566
+ transition_in(if_block);
1516
1567
  current = true;
1517
1568
  },
1518
1569
  o(local) {
1519
- transition_out(promptbody.$$.fragment, local);
1570
+ transition_out(if_block);
1520
1571
  current = false;
1521
1572
  },
1522
1573
  d(detaching) {
1523
- destroy_component(promptbody, detaching);
1574
+ if (detaching) {
1575
+ detach(if_block_anchor);
1576
+ }
1577
+ if (if_block)
1578
+ if_block.d(detaching);
1524
1579
  }
1525
1580
  };
1526
1581
  }
1527
1582
  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);
1583
+ let { resultFeedback = null } = $$props;
1584
+ let { resultFeedbackTitle = null } = $$props;
1585
+ let { isResultCorrect: isResultCorrect2 = true } = $$props;
1550
1586
  $$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);
1587
+ if ("resultFeedback" in $$props2)
1588
+ $$invalidate(0, resultFeedback = $$props2.resultFeedback);
1589
+ if ("resultFeedbackTitle" in $$props2)
1590
+ $$invalidate(1, resultFeedbackTitle = $$props2.resultFeedbackTitle);
1591
+ if ("isResultCorrect" in $$props2)
1592
+ $$invalidate(2, isResultCorrect2 = $$props2.isResultCorrect);
1555
1593
  };
1556
- return [
1557
- isDataSaving,
1558
- selectedOption,
1559
- rubric,
1560
- prompt,
1561
- options,
1562
- handleOptionClick,
1563
- sessionData,
1564
- click_handler
1565
- ];
1594
+ return [resultFeedback, resultFeedbackTitle, isResultCorrect2];
1566
1595
  }
1567
- var PromptMCQ = class extends SvelteComponent {
1596
+ var PromptResultFeedback = class extends SvelteComponent {
1568
1597
  constructor(options) {
1569
1598
  super();
1570
- init(this, options, instance2, create_fragment2, safe_not_equal, { sessionData: 6, isDataSaving: 0 });
1599
+ init(this, options, instance2, create_fragment4, safe_not_equal, {
1600
+ resultFeedback: 0,
1601
+ resultFeedbackTitle: 1,
1602
+ isResultCorrect: 2
1603
+ });
1571
1604
  }
1572
- get sessionData() {
1573
- return this.$$.ctx[6];
1605
+ get resultFeedback() {
1606
+ return this.$$.ctx[0];
1574
1607
  }
1575
- set sessionData(sessionData) {
1576
- this.$$set({ sessionData });
1608
+ set resultFeedback(resultFeedback) {
1609
+ this.$$set({ resultFeedback });
1577
1610
  flush();
1578
1611
  }
1579
- get isDataSaving() {
1580
- return this.$$.ctx[0];
1612
+ get resultFeedbackTitle() {
1613
+ return this.$$.ctx[1];
1581
1614
  }
1582
- set isDataSaving(isDataSaving) {
1583
- this.$$set({ isDataSaving });
1615
+ set resultFeedbackTitle(resultFeedbackTitle) {
1616
+ this.$$set({ resultFeedbackTitle });
1617
+ flush();
1618
+ }
1619
+ get isResultCorrect() {
1620
+ return this.$$.ctx[2];
1621
+ }
1622
+ set isResultCorrect(isResultCorrect2) {
1623
+ this.$$set({ isResultCorrect: isResultCorrect2 });
1584
1624
  flush();
1585
1625
  }
1586
1626
  };
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;
1627
+ customElements.define("prompt-result-feedback", create_custom_element(PromptResultFeedback, { "resultFeedback": {}, "resultFeedbackTitle": {}, "isResultCorrect": { "type": "Boolean" } }, [], [], true));
1628
+ var PromptResultFeedback_default = PromptResultFeedback;
1648
1629
 
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
- };
1630
+ // src/lib/composables/useMCQ.ts
1631
+ var useAlphabetEquivalent = (index) => {
1632
+ const alphabetArr = [
1633
+ "A",
1634
+ "B",
1635
+ "C",
1636
+ "D",
1637
+ "E",
1638
+ "F",
1639
+ "G",
1640
+ "H",
1641
+ "I",
1642
+ "J",
1643
+ "K",
1644
+ "L",
1645
+ "M",
1646
+ "N",
1647
+ "O",
1648
+ "P",
1649
+ "Q",
1650
+ "R",
1651
+ "S",
1652
+ "T",
1653
+ "U",
1654
+ "V",
1655
+ "W",
1656
+ "X",
1657
+ "Y",
1658
+ "Z"
1659
+ ];
1660
+ return alphabetArr[index];
1657
1661
  };
1658
- action.update = autosize_esm_default.update;
1659
- action.destroy = autosize_esm_default.destroy;
1660
- var svelte_autosize_default = action;
1662
+ var useMCQ_default = useAlphabetEquivalent;
1661
1663
 
1662
- // src/lib/assets/img/messaging/SuccessSolid.svelte
1663
- function create_fragment3(ctx) {
1664
+ // src/lib/assets/img/messaging/ErrorSolid.svelte
1665
+ function create_fragment5(ctx) {
1664
1666
  let svg;
1665
1667
  let path;
1666
1668
  return {
@@ -1669,7 +1671,7 @@
1669
1671
  path = svg_element("path");
1670
1672
  attr(path, "fill-rule", "evenodd");
1671
1673
  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");
1674
+ 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
1675
  attr(path, "fill", "currentColor");
1674
1676
  attr(svg, "width", "20");
1675
1677
  attr(svg, "height", "20");
@@ -1691,99 +1693,191 @@
1691
1693
  }
1692
1694
  };
1693
1695
  }
1694
- var SuccessSolid = class extends SvelteComponent {
1696
+ var ErrorSolid = class extends SvelteComponent {
1695
1697
  constructor(options) {
1696
1698
  super();
1697
- init(this, options, null, create_fragment3, safe_not_equal, {});
1699
+ init(this, options, null, create_fragment5, safe_not_equal, {});
1698
1700
  }
1699
1701
  };
1700
- create_custom_element(SuccessSolid, {}, [], [], true);
1701
- var SuccessSolid_default = SuccessSolid;
1702
+ create_custom_element(ErrorSolid, {}, [], [], true);
1703
+ var ErrorSolid_default = ErrorSolid;
1702
1704
 
1703
- // src/lib/assets/img/messaging/ErrorSolid.svelte
1704
- function create_fragment4(ctx) {
1705
- let svg;
1706
- let path;
1705
+ // src/lib/components/prompt/mcq/PromptMCQ.svelte
1706
+ function get_each_context(ctx, list, i) {
1707
+ const child_ctx = ctx.slice();
1708
+ child_ctx[15] = list[i][0];
1709
+ child_ctx[16] = list[i][1];
1710
+ child_ctx[18] = i;
1711
+ return child_ctx;
1712
+ }
1713
+ function create_if_block_13(ctx) {
1714
+ let div1;
1715
+ let div0;
1716
+ let div0_class_value;
1717
+ let t2;
1718
+ let current;
1719
+ let each_value = ensure_array_like(Object.entries(
1720
+ /*options*/
1721
+ ctx[7]
1722
+ ));
1723
+ let each_blocks = [];
1724
+ for (let i = 0; i < each_value.length; i += 1) {
1725
+ each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
1726
+ }
1727
+ const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
1728
+ each_blocks[i] = null;
1729
+ });
1707
1730
  return {
1708
1731
  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");
1732
+ div1 = element("div");
1733
+ div0 = element("div");
1734
+ t2 = space();
1735
+ for (let i = 0; i < each_blocks.length; i += 1) {
1736
+ each_blocks[i].c();
1737
+ }
1738
+ attr(div0, "class", div0_class_value = /*isDataSaving*/
1739
+ ctx[0] ? "absolute inset-0 bg-transparent z-50" : "");
1740
+ attr(div1, "class", "relative");
1720
1741
  },
1721
1742
  m(target, anchor) {
1722
- insert(target, svg, anchor);
1723
- append(svg, path);
1743
+ insert(target, div1, anchor);
1744
+ append(div1, div0);
1745
+ append(div1, t2);
1746
+ for (let i = 0; i < each_blocks.length; i += 1) {
1747
+ if (each_blocks[i]) {
1748
+ each_blocks[i].m(div1, null);
1749
+ }
1750
+ }
1751
+ current = true;
1752
+ },
1753
+ p(ctx2, dirty) {
1754
+ if (!current || dirty & /*isDataSaving*/
1755
+ 1 && div0_class_value !== (div0_class_value = /*isDataSaving*/
1756
+ ctx2[0] ? "absolute inset-0 bg-transparent z-50" : "")) {
1757
+ attr(div0, "class", div0_class_value);
1758
+ }
1759
+ if (dirty & /*selectedOption, Object, options, isFinished, isResultCorrect, handleOptionClick*/
1760
+ 398) {
1761
+ each_value = ensure_array_like(Object.entries(
1762
+ /*options*/
1763
+ ctx2[7]
1764
+ ));
1765
+ let i;
1766
+ for (i = 0; i < each_value.length; i += 1) {
1767
+ const child_ctx = get_each_context(ctx2, each_value, i);
1768
+ if (each_blocks[i]) {
1769
+ each_blocks[i].p(child_ctx, dirty);
1770
+ transition_in(each_blocks[i], 1);
1771
+ } else {
1772
+ each_blocks[i] = create_each_block(child_ctx);
1773
+ each_blocks[i].c();
1774
+ transition_in(each_blocks[i], 1);
1775
+ each_blocks[i].m(div1, null);
1776
+ }
1777
+ }
1778
+ group_outros();
1779
+ for (i = each_value.length; i < each_blocks.length; i += 1) {
1780
+ out(i);
1781
+ }
1782
+ check_outros();
1783
+ }
1784
+ },
1785
+ i(local) {
1786
+ if (current)
1787
+ return;
1788
+ for (let i = 0; i < each_value.length; i += 1) {
1789
+ transition_in(each_blocks[i]);
1790
+ }
1791
+ current = true;
1792
+ },
1793
+ o(local) {
1794
+ each_blocks = each_blocks.filter(Boolean);
1795
+ for (let i = 0; i < each_blocks.length; i += 1) {
1796
+ transition_out(each_blocks[i]);
1797
+ }
1798
+ current = false;
1724
1799
  },
1725
- p: noop,
1726
- i: noop,
1727
- o: noop,
1728
1800
  d(detaching) {
1729
1801
  if (detaching) {
1730
- detach(svg);
1802
+ detach(div1);
1731
1803
  }
1804
+ destroy_each(each_blocks, detaching);
1732
1805
  }
1733
1806
  };
1734
1807
  }
1735
- var ErrorSolid = class extends SvelteComponent {
1736
- constructor(options) {
1737
- super();
1738
- init(this, options, null, create_fragment4, safe_not_equal, {});
1808
+ function create_if_block_2(ctx) {
1809
+ let span;
1810
+ let current_block_type_index;
1811
+ let if_block;
1812
+ let span_class_value;
1813
+ let current;
1814
+ const if_block_creators = [create_if_block_3, create_else_block2];
1815
+ const if_blocks = [];
1816
+ function select_block_type(ctx2, dirty) {
1817
+ if (
1818
+ /*isResultCorrect*/
1819
+ ctx2[2]
1820
+ )
1821
+ return 0;
1822
+ return 1;
1739
1823
  }
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;
1824
+ current_block_type_index = select_block_type(ctx, -1);
1825
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
1748
1826
  return {
1749
1827
  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");
1828
+ span = element("span");
1829
+ if_block.c();
1830
+ attr(span, "class", span_class_value = /*isResultCorrect*/
1831
+ (ctx[2] ? "text-green-800" : "text-red-800") + " p-0.5");
1761
1832
  },
1762
1833
  m(target, anchor) {
1763
- insert(target, svg, anchor);
1764
- append(svg, path);
1834
+ insert(target, span, anchor);
1835
+ if_blocks[current_block_type_index].m(span, null);
1836
+ current = true;
1837
+ },
1838
+ p(ctx2, dirty) {
1839
+ let previous_block_index = current_block_type_index;
1840
+ current_block_type_index = select_block_type(ctx2, dirty);
1841
+ if (current_block_type_index !== previous_block_index) {
1842
+ group_outros();
1843
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
1844
+ if_blocks[previous_block_index] = null;
1845
+ });
1846
+ check_outros();
1847
+ if_block = if_blocks[current_block_type_index];
1848
+ if (!if_block) {
1849
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
1850
+ if_block.c();
1851
+ } else {
1852
+ }
1853
+ transition_in(if_block, 1);
1854
+ if_block.m(span, null);
1855
+ }
1856
+ if (!current || dirty & /*isResultCorrect*/
1857
+ 4 && span_class_value !== (span_class_value = /*isResultCorrect*/
1858
+ (ctx2[2] ? "text-green-800" : "text-red-800") + " p-0.5")) {
1859
+ attr(span, "class", span_class_value);
1860
+ }
1861
+ },
1862
+ i(local) {
1863
+ if (current)
1864
+ return;
1865
+ transition_in(if_block);
1866
+ current = true;
1867
+ },
1868
+ o(local) {
1869
+ transition_out(if_block);
1870
+ current = false;
1765
1871
  },
1766
- p: noop,
1767
- i: noop,
1768
- o: noop,
1769
1872
  d(detaching) {
1770
1873
  if (detaching) {
1771
- detach(svg);
1874
+ detach(span);
1772
1875
  }
1876
+ if_blocks[current_block_type_index].d();
1773
1877
  }
1774
1878
  };
1775
1879
  }
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) {
1880
+ function create_else_block2(ctx) {
1787
1881
  let errorsolid;
1788
1882
  let current;
1789
1883
  errorsolid = new ErrorSolid_default({});
@@ -1810,7 +1904,7 @@
1810
1904
  }
1811
1905
  };
1812
1906
  }
1813
- function create_if_block_2(ctx) {
1907
+ function create_if_block_3(ctx) {
1814
1908
  let successsolid;
1815
1909
  let current;
1816
1910
  successsolid = new SuccessSolid_default({});
@@ -1837,119 +1931,132 @@
1837
1931
  }
1838
1932
  };
1839
1933
  }
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;
1934
+ function create_each_block(ctx) {
1935
+ let button;
1848
1936
  let span1;
1937
+ let span0;
1849
1938
  let t1;
1939
+ let t2_value = (
1940
+ /*option*/
1941
+ ctx[16].answer + ""
1942
+ );
1850
1943
  let t2;
1851
- let span2;
1852
1944
  let t3;
1853
- let div0_class_value;
1854
1945
  let t4;
1855
- let div1;
1946
+ let button_aria_label_value;
1947
+ let button_class_value;
1856
1948
  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;
1949
+ let mounted;
1950
+ let dispose;
1951
+ let if_block = (
1952
+ /*selectedOption*/
1953
+ ctx[3] === /*option*/
1954
+ ctx[16].id && /*isFinished*/
1955
+ ctx[1] && create_if_block_2(ctx)
1956
+ );
1957
+ function click_handler() {
1958
+ return (
1959
+ /*click_handler*/
1960
+ ctx[10](
1961
+ /*option*/
1962
+ ctx[16]
1963
+ )
1964
+ );
1866
1965
  }
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
1966
  return {
1870
1967
  c() {
1871
- div0 = element("div");
1872
- span0 = element("span");
1873
- if_block.c();
1874
- t0 = space();
1875
- span3 = element("span");
1968
+ button = element("button");
1876
1969
  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
- );
1970
+ span0 = element("span");
1971
+ span0.textContent = `${useMCQ_default(
1972
+ /*index*/
1973
+ ctx[18]
1974
+ )}`;
1975
+ t1 = space();
1976
+ t2 = text(t2_value);
1977
+ t3 = space();
1978
+ if (if_block)
1979
+ if_block.c();
1887
1980
  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");
1981
+ attr(span0, "class", "choice group-active:border-2 group-active:border-blue-1000 group-active:p-[7px]");
1982
+ attr(span1, "class", "grow flex items-center");
1983
+ attr(button, "aria-label", button_aria_label_value = `${/*selectedOption*/
1984
+ ctx[3] === /*option*/
1985
+ ctx[16].id ? "Selected option" : "Option"} ${useMCQ_default(
1986
+ /*index*/
1987
+ ctx[18]
1988
+ )}: ${/*option*/
1989
+ ctx[16].answer}`);
1990
+ attr(button, "class", button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
1991
+ (ctx[3] === /*option*/
1992
+ ctx[16].id ? "selected" : "") + " " + (!/*isFinished*/
1993
+ ctx[1] ? "" : (
1994
+ /*isResultCorrect*/
1995
+ ctx[2] ? "correct" : "incorrect"
1996
+ )));
1896
1997
  },
1897
1998
  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);
1999
+ insert(target, button, anchor);
2000
+ append(button, span1);
2001
+ append(span1, span0);
1904
2002
  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);
2003
+ append(span1, t2);
2004
+ append(button, t3);
2005
+ if (if_block)
2006
+ if_block.m(button, null);
2007
+ append(button, t4);
1910
2008
  current = true;
2009
+ if (!mounted) {
2010
+ dispose = listen(button, "click", click_handler);
2011
+ mounted = true;
2012
+ }
1911
2013
  },
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) {
2014
+ p(new_ctx, dirty) {
2015
+ ctx = new_ctx;
2016
+ if (
2017
+ /*selectedOption*/
2018
+ ctx[3] === /*option*/
2019
+ ctx[16].id && /*isFinished*/
2020
+ ctx[1]
2021
+ ) {
2022
+ if (if_block) {
2023
+ if_block.p(ctx, dirty);
2024
+ if (dirty & /*selectedOption, isFinished*/
2025
+ 10) {
2026
+ transition_in(if_block, 1);
2027
+ }
2028
+ } else {
2029
+ if_block = create_if_block_2(ctx);
2030
+ if_block.c();
2031
+ transition_in(if_block, 1);
2032
+ if_block.m(button, t4);
2033
+ }
2034
+ } else if (if_block) {
1916
2035
  group_outros();
1917
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
1918
- if_blocks[previous_block_index] = null;
2036
+ transition_out(if_block, 1, 1, () => {
2037
+ if_block = null;
1919
2038
  });
1920
2039
  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
2040
  }
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);
2041
+ if (!current || dirty & /*selectedOption*/
2042
+ 8 && button_aria_label_value !== (button_aria_label_value = `${/*selectedOption*/
2043
+ ctx[3] === /*option*/
2044
+ ctx[16].id ? "Selected option" : "Option"} ${useMCQ_default(
2045
+ /*index*/
2046
+ ctx[18]
2047
+ )}: ${/*option*/
2048
+ ctx[16].answer}`)) {
2049
+ attr(button, "aria-label", button_aria_label_value);
1934
2050
  }
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);
2051
+ if (!current || dirty & /*selectedOption, isFinished, isResultCorrect*/
2052
+ 14 && button_class_value !== (button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
2053
+ (ctx[3] === /*option*/
2054
+ ctx[16].id ? "selected" : "") + " " + (!/*isFinished*/
2055
+ ctx[1] ? "" : (
2056
+ /*isResultCorrect*/
2057
+ ctx[2] ? "correct" : "incorrect"
2058
+ )))) {
2059
+ attr(button, "class", button_class_value);
1953
2060
  }
1954
2061
  },
1955
2062
  i(local) {
@@ -1964,179 +2071,184 @@
1964
2071
  },
1965
2072
  d(detaching) {
1966
2073
  if (detaching) {
1967
- detach(div0);
1968
- detach(t4);
1969
- detach(div1);
2074
+ detach(button);
1970
2075
  }
1971
- if_blocks[current_block_type_index].d();
2076
+ if (if_block)
2077
+ if_block.d();
2078
+ mounted = false;
2079
+ dispose();
1972
2080
  }
1973
2081
  };
1974
2082
  }
1975
- function create_else_block(ctx) {
1976
- let infosolid;
2083
+ function create_default_slot(ctx) {
2084
+ let if_block_anchor;
1977
2085
  let current;
1978
- infosolid = new InfoSolid_default({});
2086
+ let if_block = (
2087
+ /*options*/
2088
+ ctx[7] && create_if_block_13(ctx)
2089
+ );
1979
2090
  return {
1980
2091
  c() {
1981
- create_component(infosolid.$$.fragment);
2092
+ if (if_block)
2093
+ if_block.c();
2094
+ if_block_anchor = empty();
1982
2095
  },
1983
2096
  m(target, anchor) {
1984
- mount_component(infosolid, target, anchor);
2097
+ if (if_block)
2098
+ if_block.m(target, anchor);
2099
+ insert(target, if_block_anchor, anchor);
1985
2100
  current = true;
1986
2101
  },
2102
+ p(ctx2, dirty) {
2103
+ if (
2104
+ /*options*/
2105
+ ctx2[7]
2106
+ )
2107
+ if_block.p(ctx2, dirty);
2108
+ },
1987
2109
  i(local) {
1988
2110
  if (current)
1989
2111
  return;
1990
- transition_in(infosolid.$$.fragment, local);
2112
+ transition_in(if_block);
1991
2113
  current = true;
1992
2114
  },
1993
2115
  o(local) {
1994
- transition_out(infosolid.$$.fragment, local);
2116
+ transition_out(if_block);
1995
2117
  current = false;
1996
2118
  },
1997
2119
  d(detaching) {
1998
- destroy_component(infosolid, detaching);
2120
+ if (detaching) {
2121
+ detach(if_block_anchor);
2122
+ }
2123
+ if (if_block)
2124
+ if_block.d(detaching);
1999
2125
  }
2000
2126
  };
2001
2127
  }
2002
- function create_if_block_12(ctx) {
2003
- let successsolid;
2128
+ function create_if_block3(ctx) {
2129
+ let promptresult;
2004
2130
  let current;
2005
- successsolid = new SuccessSolid_default({});
2131
+ promptresult = new PromptResultFeedback_default({
2132
+ props: {
2133
+ isResultCorrect: (
2134
+ /*isResultCorrect*/
2135
+ ctx[2]
2136
+ ),
2137
+ resultFeedbackTitle: (
2138
+ /*isResultCorrect*/
2139
+ ctx[2] ? "Well done!" : "Nice try!"
2140
+ ),
2141
+ resultFeedback: (
2142
+ /*resultFeedback*/
2143
+ ctx[4]
2144
+ )
2145
+ }
2146
+ });
2006
2147
  return {
2007
2148
  c() {
2008
- create_component(successsolid.$$.fragment);
2149
+ create_component(promptresult.$$.fragment);
2009
2150
  },
2010
2151
  m(target, anchor) {
2011
- mount_component(successsolid, target, anchor);
2152
+ mount_component(promptresult, target, anchor);
2012
2153
  current = true;
2013
2154
  },
2155
+ p(ctx2, dirty) {
2156
+ const promptresult_changes = {};
2157
+ if (dirty & /*isResultCorrect*/
2158
+ 4)
2159
+ promptresult_changes.isResultCorrect = /*isResultCorrect*/
2160
+ ctx2[2];
2161
+ if (dirty & /*isResultCorrect*/
2162
+ 4)
2163
+ promptresult_changes.resultFeedbackTitle = /*isResultCorrect*/
2164
+ ctx2[2] ? "Well done!" : "Nice try!";
2165
+ if (dirty & /*resultFeedback*/
2166
+ 16)
2167
+ promptresult_changes.resultFeedback = /*resultFeedback*/
2168
+ ctx2[4];
2169
+ promptresult.$set(promptresult_changes);
2170
+ },
2014
2171
  i(local) {
2015
2172
  if (current)
2016
2173
  return;
2017
- transition_in(successsolid.$$.fragment, local);
2174
+ transition_in(promptresult.$$.fragment, local);
2018
2175
  current = true;
2019
2176
  },
2020
2177
  o(local) {
2021
- transition_out(successsolid.$$.fragment, local);
2178
+ transition_out(promptresult.$$.fragment, local);
2022
2179
  current = false;
2023
2180
  },
2024
2181
  d(detaching) {
2025
- destroy_component(successsolid, detaching);
2182
+ destroy_component(promptresult, detaching);
2026
2183
  }
2027
2184
  };
2028
2185
  }
2029
2186
  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;
2187
+ let promptbody;
2038
2188
  let t2;
2039
- let if_block1_anchor;
2189
+ let if_block_anchor;
2040
2190
  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*/
2191
+ promptbody = new PromptBody_default({
2192
+ props: {
2193
+ rubric: (
2194
+ /*rubric*/
2195
+ ctx[5].text
2196
+ ),
2197
+ prompt: (
2198
+ /*prompt*/
2199
+ ctx[6]
2200
+ ),
2201
+ $$slots: { default: [create_default_slot] },
2202
+ $$scope: { ctx }
2203
+ }
2204
+ });
2205
+ let if_block = (
2206
+ /*isFinished*/
2055
2207
  ctx[1] && create_if_block3(ctx)
2056
2208
  );
2057
2209
  return {
2058
2210
  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
- );
2211
+ create_component(promptbody.$$.fragment);
2068
2212
  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");
2213
+ if (if_block)
2214
+ if_block.c();
2215
+ if_block_anchor = empty();
2076
2216
  },
2077
2217
  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);
2218
+ mount_component(promptbody, target, anchor);
2084
2219
  insert(target, t2, anchor);
2085
- if (if_block1)
2086
- if_block1.m(target, anchor);
2087
- insert(target, if_block1_anchor, anchor);
2220
+ if (if_block)
2221
+ if_block.m(target, anchor);
2222
+ insert(target, if_block_anchor, anchor);
2088
2223
  current = true;
2089
2224
  },
2090
2225
  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);
2226
+ const promptbody_changes = {};
2227
+ if (dirty & /*$$scope, selectedOption, isFinished, isResultCorrect, isDataSaving*/
2228
+ 524303) {
2229
+ promptbody_changes.$$scope = { dirty, ctx: ctx2 };
2112
2230
  }
2113
- if (!current || dirty & /*resultMessage*/
2114
- 1)
2115
- set_data(
2116
- t1,
2117
- /*resultMessage*/
2118
- ctx2[0]
2119
- );
2231
+ promptbody.$set(promptbody_changes);
2120
2232
  if (
2121
- /*resultFeedback*/
2233
+ /*isFinished*/
2122
2234
  ctx2[1]
2123
2235
  ) {
2124
- if (if_block1) {
2125
- if_block1.p(ctx2, dirty);
2126
- if (dirty & /*resultFeedback*/
2236
+ if (if_block) {
2237
+ if_block.p(ctx2, dirty);
2238
+ if (dirty & /*isFinished*/
2127
2239
  2) {
2128
- transition_in(if_block1, 1);
2240
+ transition_in(if_block, 1);
2129
2241
  }
2130
2242
  } 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);
2243
+ if_block = create_if_block3(ctx2);
2244
+ if_block.c();
2245
+ transition_in(if_block, 1);
2246
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
2135
2247
  }
2136
- } else if (if_block1) {
2248
+ } else if (if_block) {
2137
2249
  group_outros();
2138
- transition_out(if_block1, 1, 1, () => {
2139
- if_block1 = null;
2250
+ transition_out(if_block, 1, 1, () => {
2251
+ if_block = null;
2140
2252
  });
2141
2253
  check_outros();
2142
2254
  }
@@ -2144,77 +2256,113 @@
2144
2256
  i(local) {
2145
2257
  if (current)
2146
2258
  return;
2147
- transition_in(if_block0);
2148
- transition_in(if_block1);
2259
+ transition_in(promptbody.$$.fragment, local);
2260
+ transition_in(if_block);
2149
2261
  current = true;
2150
2262
  },
2151
2263
  o(local) {
2152
- transition_out(if_block0);
2153
- transition_out(if_block1);
2264
+ transition_out(promptbody.$$.fragment, local);
2265
+ transition_out(if_block);
2154
2266
  current = false;
2155
2267
  },
2156
2268
  d(detaching) {
2157
2269
  if (detaching) {
2158
- detach(div);
2159
2270
  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);
2271
+ detach(if_block_anchor);
2272
+ }
2273
+ destroy_component(promptbody, detaching);
2274
+ if (if_block)
2275
+ if_block.d(detaching);
2165
2276
  }
2166
2277
  };
2167
2278
  }
2168
2279
  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";
2280
+ let { sessionData } = $$props;
2281
+ let { isDataSaving } = $$props;
2282
+ let { isFinished: isFinished2 = false } = $$props;
2283
+ let { isResultCorrect: isResultCorrect2 = false } = $$props;
2284
+ const { rubric, interaction, metadata, scoringMetadata } = sessionData;
2285
+ const { prompt, options } = interaction;
2286
+ let selectedOption = null;
2287
+ let resultFeedback = null;
2288
+ const dispatch = createEventDispatcher();
2289
+ if (metadata) {
2290
+ const { events } = metadata.interactions;
2291
+ const currentOption = events.pop();
2292
+ const { answer_id: answerChoiceId } = currentOption;
2293
+ selectedOption = answerChoiceId[0];
2294
+ }
2295
+ if (isFinished2) {
2296
+ if (options && selectedOption) {
2297
+ const feedbackData = Object.values(options).filter((option) => option.id === selectedOption);
2298
+ resultFeedback = feedbackData[0].feedback || resultFeedback;
2299
+ }
2300
+ const { answerId, has_answer } = scoringMetadata;
2301
+ selectedOption = answerId && has_answer ? answerId : selectedOption;
2179
2302
  }
2303
+ const handleOptionClick = (optionId, option) => {
2304
+ if (isDataSaving || optionId === selectedOption || isFinished2)
2305
+ return;
2306
+ $$invalidate(3, selectedOption = optionId);
2307
+ dispatch("saveOption", {
2308
+ answer_id: [optionId],
2309
+ answer_choice: [option]
2310
+ });
2311
+ };
2312
+ const click_handler = (option) => handleOptionClick(option.id, option.answer);
2180
2313
  $$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);
2314
+ if ("sessionData" in $$props2)
2315
+ $$invalidate(9, sessionData = $$props2.sessionData);
2316
+ if ("isDataSaving" in $$props2)
2317
+ $$invalidate(0, isDataSaving = $$props2.isDataSaving);
2318
+ if ("isFinished" in $$props2)
2319
+ $$invalidate(1, isFinished2 = $$props2.isFinished);
2185
2320
  if ("isResultCorrect" in $$props2)
2186
2321
  $$invalidate(2, isResultCorrect2 = $$props2.isResultCorrect);
2187
2322
  };
2188
2323
  return [
2189
- resultMessage,
2190
- resultFeedback,
2324
+ isDataSaving,
2325
+ isFinished2,
2191
2326
  isResultCorrect2,
2192
- feedbackTitle,
2193
- mainDivClass,
2194
- spanIconClass
2327
+ selectedOption,
2328
+ resultFeedback,
2329
+ rubric,
2330
+ prompt,
2331
+ options,
2332
+ handleOptionClick,
2333
+ sessionData,
2334
+ click_handler
2195
2335
  ];
2196
2336
  }
2197
- var PromptResult = class extends SvelteComponent {
2337
+ var PromptMCQ = class extends SvelteComponent {
2198
2338
  constructor(options) {
2199
2339
  super();
2200
2340
  init(this, options, instance3, create_fragment6, safe_not_equal, {
2201
- resultMessage: 0,
2202
- resultFeedback: 1,
2341
+ sessionData: 9,
2342
+ isDataSaving: 0,
2343
+ isFinished: 1,
2203
2344
  isResultCorrect: 2
2204
2345
  });
2205
2346
  }
2206
- get resultMessage() {
2347
+ get sessionData() {
2348
+ return this.$$.ctx[9];
2349
+ }
2350
+ set sessionData(sessionData) {
2351
+ this.$$set({ sessionData });
2352
+ flush();
2353
+ }
2354
+ get isDataSaving() {
2207
2355
  return this.$$.ctx[0];
2208
2356
  }
2209
- set resultMessage(resultMessage) {
2210
- this.$$set({ resultMessage });
2357
+ set isDataSaving(isDataSaving) {
2358
+ this.$$set({ isDataSaving });
2211
2359
  flush();
2212
2360
  }
2213
- get resultFeedback() {
2361
+ get isFinished() {
2214
2362
  return this.$$.ctx[1];
2215
2363
  }
2216
- set resultFeedback(resultFeedback) {
2217
- this.$$set({ resultFeedback });
2364
+ set isFinished(isFinished2) {
2365
+ this.$$set({ isFinished: isFinished2 });
2218
2366
  flush();
2219
2367
  }
2220
2368
  get isResultCorrect() {
@@ -2225,11 +2373,88 @@
2225
2373
  flush();
2226
2374
  }
2227
2375
  };
2228
- customElements.define("prompt-result", create_custom_element(PromptResult, { "resultMessage": {}, "resultFeedback": {}, "isResultCorrect": { "type": "Boolean" } }, [], [], true));
2229
- var PromptResult_default = PromptResult;
2376
+ customElements.define("prompt-mcq", create_custom_element(PromptMCQ, { "sessionData": {}, "isDataSaving": {}, "isFinished": { "type": "Boolean" }, "isResultCorrect": { "type": "Boolean" } }, [], [], true));
2377
+ var PromptMCQ_default = PromptMCQ;
2378
+
2379
+ // node_modules/autosize/dist/autosize.esm.js
2380
+ var e = /* @__PURE__ */ new Map();
2381
+ function t(t2) {
2382
+ var o2 = e.get(t2);
2383
+ o2 && o2.destroy();
2384
+ }
2385
+ function o(t2) {
2386
+ var o2 = e.get(t2);
2387
+ o2 && o2.update();
2388
+ }
2389
+ var r = null;
2390
+ "undefined" == typeof window ? ((r = function(e2) {
2391
+ return e2;
2392
+ }).destroy = function(e2) {
2393
+ return e2;
2394
+ }, r.update = function(e2) {
2395
+ return e2;
2396
+ }) : ((r = function(t2, o2) {
2397
+ return t2 && Array.prototype.forEach.call(t2.length ? t2 : [t2], function(t3) {
2398
+ return function(t4) {
2399
+ if (t4 && t4.nodeName && "TEXTAREA" === t4.nodeName && !e.has(t4)) {
2400
+ var o3, r2 = null, n2 = window.getComputedStyle(t4), i = (o3 = t4.value, function() {
2401
+ a({ testForHeightReduction: "" === o3 || !t4.value.startsWith(o3), restoreTextAlign: null }), o3 = t4.value;
2402
+ }), l = function(o4) {
2403
+ t4.removeEventListener("autosize:destroy", l), t4.removeEventListener("autosize:update", s), t4.removeEventListener("input", i), window.removeEventListener("resize", s), Object.keys(o4).forEach(function(e2) {
2404
+ return t4.style[e2] = o4[e2];
2405
+ }), e.delete(t4);
2406
+ }.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 });
2407
+ 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();
2408
+ }
2409
+ function a(e2) {
2410
+ var o4, i2, l2 = e2.restoreTextAlign, s2 = void 0 === l2 ? null : l2, d = e2.testForHeightReduction, u = void 0 === d || d, c = n2.overflowY;
2411
+ if (0 !== t4.scrollHeight && ("vertical" === n2.resize ? t4.style.resize = "none" : "both" === n2.resize && (t4.style.resize = "horizontal"), u && (o4 = function(e3) {
2412
+ for (var t5 = []; e3 && e3.parentNode && e3.parentNode instanceof Element; )
2413
+ e3.parentNode.scrollTop && t5.push([e3.parentNode, e3.parentNode.scrollTop]), e3 = e3.parentNode;
2414
+ return function() {
2415
+ return t5.forEach(function(e4) {
2416
+ var t6 = e4[0], o5 = e4[1];
2417
+ t6.style.scrollBehavior = "auto", t6.scrollTop = o5, t6.style.scrollBehavior = null;
2418
+ });
2419
+ };
2420
+ }(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)) {
2421
+ var v = n2.textAlign;
2422
+ "hidden" === n2.overflow && (t4.style.textAlign = "start" === v ? "end" : "start"), a({ restoreTextAlign: v, testForHeightReduction: true });
2423
+ }
2424
+ }
2425
+ function s() {
2426
+ a({ testForHeightReduction: true, restoreTextAlign: null });
2427
+ }
2428
+ }(t3);
2429
+ }), t2;
2430
+ }).destroy = function(e2) {
2431
+ return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], t), e2;
2432
+ }, r.update = function(e2) {
2433
+ return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], o), e2;
2434
+ });
2435
+ var n = r;
2436
+ var autosize_esm_default = n;
2437
+
2438
+ // node_modules/svelte-autosize/index.js
2439
+ var action = (node) => {
2440
+ autosize_esm_default(node);
2441
+ return {
2442
+ destroy() {
2443
+ autosize_esm_default.destroy(node);
2444
+ }
2445
+ };
2446
+ };
2447
+ action.update = autosize_esm_default.update;
2448
+ action.destroy = autosize_esm_default.destroy;
2449
+ var svelte_autosize_default = action;
2450
+
2451
+ // src/lib/constants/index.ts
2452
+ var INTERACTION_TYPE_MCQ = "multipleChoiceInteraction";
2453
+ var INTERACTION_TYPE_TYPEIN = "typeInInteraction";
2454
+ var TYPEIN_TYPE_SHORT = "Short-Text";
2230
2455
 
2231
2456
  // src/lib/components/prompt/typein/PromptTypeIn.svelte
2232
- function create_else_block2(ctx) {
2457
+ function create_else_block_1(ctx) {
2233
2458
  let textarea;
2234
2459
  let textarea_class_value;
2235
2460
  let autosize_action;
@@ -2239,10 +2464,10 @@
2239
2464
  c() {
2240
2465
  textarea = element("textarea");
2241
2466
  attr(textarea, "id", idLabel);
2467
+ attr(textarea, "aria-label", placeholder);
2242
2468
  attr(textarea, "placeholder", placeholder);
2243
2469
  attr(textarea, "rows", "3");
2244
- attr(textarea, "class", textarea_class_value = `${/*inputBorderClass*/
2245
- ctx[2]} typein-textbox overflow-hidden`);
2470
+ attr(textarea, "class", textarea_class_value = "typein-textbox overflow-hidden " + (!isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800"));
2246
2471
  textarea.disabled = /*isDataSaving*/
2247
2472
  ctx[0];
2248
2473
  attr(textarea, "autocomplete", "off");
@@ -2260,38 +2485,38 @@
2260
2485
  textarea,
2261
2486
  "input",
2262
2487
  /*textarea_input_handler*/
2263
- ctx[14]
2488
+ ctx[13]
2264
2489
  ),
2265
2490
  listen(
2266
2491
  textarea,
2267
2492
  "mousedown",
2268
2493
  /*mousedown_handler*/
2269
- ctx[15]
2494
+ ctx[14]
2270
2495
  ),
2271
2496
  listen(
2272
2497
  textarea,
2273
2498
  "touchstart",
2274
2499
  /*touchstart_handler*/
2275
- ctx[16],
2500
+ ctx[15],
2276
2501
  { passive: true }
2277
2502
  ),
2278
2503
  listen(
2279
2504
  textarea,
2280
2505
  "focus",
2281
2506
  /*focus_handler*/
2282
- ctx[17]
2507
+ ctx[16]
2283
2508
  ),
2284
2509
  listen(
2285
2510
  textarea,
2286
2511
  "focusout",
2287
2512
  /*focusout_handler_1*/
2288
- ctx[18]
2513
+ ctx[17]
2289
2514
  ),
2290
2515
  listen(
2291
2516
  textarea,
2292
2517
  "keydown",
2293
2518
  /*keydown_handler_1*/
2294
- ctx[19]
2519
+ ctx[18]
2295
2520
  ),
2296
2521
  action_destroyer(autosize_action = svelte_autosize_default.call(null, textarea))
2297
2522
  ];
@@ -2322,7 +2547,7 @@
2322
2547
  }
2323
2548
  };
2324
2549
  }
2325
- function create_if_block_13(ctx) {
2550
+ function create_if_block_22(ctx) {
2326
2551
  let input;
2327
2552
  let input_class_value;
2328
2553
  let mounted;
@@ -2332,9 +2557,9 @@
2332
2557
  input = element("input");
2333
2558
  attr(input, "type", "text");
2334
2559
  attr(input, "id", idLabel);
2560
+ attr(input, "aria-label", placeholder);
2335
2561
  attr(input, "placeholder", placeholder);
2336
- attr(input, "class", input_class_value = `${/*inputBorderClass*/
2337
- ctx[2]} typein-textbox`);
2562
+ attr(input, "class", input_class_value = "typein-textbox " + (!isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800"));
2338
2563
  input.disabled = /*isDataSaving*/
2339
2564
  ctx[0];
2340
2565
  attr(input, "autocomplete", "off");
@@ -2352,19 +2577,19 @@
2352
2577
  input,
2353
2578
  "input",
2354
2579
  /*input_input_handler*/
2355
- ctx[11]
2580
+ ctx[10]
2356
2581
  ),
2357
2582
  listen(
2358
2583
  input,
2359
2584
  "focusout",
2360
2585
  /*focusout_handler*/
2361
- ctx[12]
2586
+ ctx[11]
2362
2587
  ),
2363
2588
  listen(
2364
2589
  input,
2365
2590
  "keydown",
2366
2591
  /*keydown_handler*/
2367
- ctx[13]
2592
+ ctx[12]
2368
2593
  )
2369
2594
  ];
2370
2595
  mounted = true;
@@ -2400,10 +2625,10 @@
2400
2625
  function select_block_type(ctx2, dirty) {
2401
2626
  if (
2402
2627
  /*typeinType*/
2403
- ctx2[5] === "Short-Text"
2628
+ ctx2[4] === TYPEIN_TYPE_SHORT
2404
2629
  )
2405
- return create_if_block_13;
2406
- return create_else_block2;
2630
+ return create_if_block_22;
2631
+ return create_else_block_1;
2407
2632
  }
2408
2633
  let current_block_type = select_block_type(ctx, -1);
2409
2634
  let if_block = current_block_type(ctx);
@@ -2428,20 +2653,55 @@
2428
2653
  };
2429
2654
  }
2430
2655
  function create_if_block4(ctx) {
2656
+ let div;
2657
+ let span0;
2658
+ let current_block_type_index;
2659
+ let if_block;
2660
+ let span0_class_value;
2661
+ let t0;
2662
+ let span1;
2663
+ let div_class_value;
2664
+ let t2;
2431
2665
  let promptresult;
2432
2666
  let current;
2433
- promptresult = new PromptResult_default({
2667
+ const if_block_creators = [create_if_block_14, create_else_block3];
2668
+ const if_blocks = [];
2669
+ function select_block_type_1(ctx2, dirty) {
2670
+ if (isResultCorrect)
2671
+ return 0;
2672
+ return 1;
2673
+ }
2674
+ current_block_type_index = select_block_type_1(ctx, -1);
2675
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
2676
+ promptresult = new PromptResultFeedback_default({
2434
2677
  props: {
2435
2678
  isResultCorrect,
2436
- resultMessage: "[Generic \u201Ccorrect\u201D message]",
2679
+ resultFeedbackTitle: isResultCorrect ? "Well done!" : "Not quite, but you\u2019re close!",
2437
2680
  resultFeedback: "You applied the principles of [specific theory] perfectly in your response."
2438
2681
  }
2439
2682
  });
2440
2683
  return {
2441
2684
  c() {
2685
+ div = element("div");
2686
+ span0 = element("span");
2687
+ if_block.c();
2688
+ t0 = space();
2689
+ span1 = element("span");
2690
+ span1.textContent = `${isResultCorrect ? "[Generic \u201Ccorrect\u201D message]" : "[Generic \u201Cincorrect\u201D message]"}`;
2691
+ t2 = space();
2442
2692
  create_component(promptresult.$$.fragment);
2693
+ attr(span0, "class", span0_class_value = (isResultCorrect ? "text-green-800" : "text-red-800") + " mr-2 p-0.5");
2694
+ attr(span1, "class", "p2");
2695
+ attr(div, "class", div_class_value = "flex items-center text-charcoal " + /*typeinType*/
2696
+ (ctx[4] === TYPEIN_TYPE_SHORT ? "mt-2" : "mt-0.5"));
2443
2697
  },
2444
2698
  m(target, anchor) {
2699
+ insert(target, div, anchor);
2700
+ append(div, span0);
2701
+ if_blocks[current_block_type_index].m(span0, null);
2702
+ append(div, t0);
2703
+ append(div, span1);
2704
+ insert(target, t2, anchor);
2445
2705
  mount_component(promptresult, target, anchor);
2446
2706
  current = true;
2447
2707
  },
@@ -2449,18 +2709,79 @@
2449
2709
  i(local) {
2450
2710
  if (current)
2451
2711
  return;
2712
+ transition_in(if_block);
2452
2713
  transition_in(promptresult.$$.fragment, local);
2453
2714
  current = true;
2454
2715
  },
2455
2716
  o(local) {
2717
+ transition_out(if_block);
2456
2718
  transition_out(promptresult.$$.fragment, local);
2457
2719
  current = false;
2458
2720
  },
2459
2721
  d(detaching) {
2722
+ if (detaching) {
2723
+ detach(div);
2724
+ detach(t2);
2725
+ }
2726
+ if_blocks[current_block_type_index].d();
2460
2727
  destroy_component(promptresult, detaching);
2461
2728
  }
2462
2729
  };
2463
2730
  }
2731
+ function create_else_block3(ctx) {
2732
+ let errorsolid;
2733
+ let current;
2734
+ errorsolid = new ErrorSolid_default({});
2735
+ return {
2736
+ c() {
2737
+ create_component(errorsolid.$$.fragment);
2738
+ },
2739
+ m(target, anchor) {
2740
+ mount_component(errorsolid, target, anchor);
2741
+ current = true;
2742
+ },
2743
+ i(local) {
2744
+ if (current)
2745
+ return;
2746
+ transition_in(errorsolid.$$.fragment, local);
2747
+ current = true;
2748
+ },
2749
+ o(local) {
2750
+ transition_out(errorsolid.$$.fragment, local);
2751
+ current = false;
2752
+ },
2753
+ d(detaching) {
2754
+ destroy_component(errorsolid, detaching);
2755
+ }
2756
+ };
2757
+ }
2758
+ function create_if_block_14(ctx) {
2759
+ let successsolid;
2760
+ let current;
2761
+ successsolid = new SuccessSolid_default({});
2762
+ return {
2763
+ c() {
2764
+ create_component(successsolid.$$.fragment);
2765
+ },
2766
+ m(target, anchor) {
2767
+ mount_component(successsolid, target, anchor);
2768
+ current = true;
2769
+ },
2770
+ i(local) {
2771
+ if (current)
2772
+ return;
2773
+ transition_in(successsolid.$$.fragment, local);
2774
+ current = true;
2775
+ },
2776
+ o(local) {
2777
+ transition_out(successsolid.$$.fragment, local);
2778
+ current = false;
2779
+ },
2780
+ d(detaching) {
2781
+ destroy_component(successsolid, detaching);
2782
+ }
2783
+ };
2784
+ }
2464
2785
  function create_fragment7(ctx) {
2465
2786
  let promptbody;
2466
2787
  let t2;
@@ -2470,11 +2791,11 @@
2470
2791
  props: {
2471
2792
  rubric: (
2472
2793
  /*rubric*/
2473
- ctx[3].text
2794
+ ctx[2].text
2474
2795
  ),
2475
2796
  prompt: (
2476
2797
  /*prompt*/
2477
- ctx[4]
2798
+ ctx[3]
2478
2799
  ),
2479
2800
  $$slots: { default: [create_default_slot2] },
2480
2801
  $$scope: { ctx }
@@ -2500,7 +2821,7 @@
2500
2821
  p(ctx2, [dirty]) {
2501
2822
  const promptbody_changes = {};
2502
2823
  if (dirty & /*$$scope, isDataSaving, typeinAnswer*/
2503
- 33554435) {
2824
+ 16777219) {
2504
2825
  promptbody_changes.$$scope = { dirty, ctx: ctx2 };
2505
2826
  }
2506
2827
  promptbody.$set(promptbody_changes);
@@ -2533,7 +2854,7 @@
2533
2854
  var idLabel = "answerText";
2534
2855
  var placeholder = "Type your answer here";
2535
2856
  var isFinished = false;
2536
- var isResultCorrect = true;
2857
+ var isResultCorrect = false;
2537
2858
  function instance4($$self, $$props, $$invalidate) {
2538
2859
  let { sessionData } = $$props;
2539
2860
  let { isDataSaving } = $$props;
@@ -2541,7 +2862,6 @@
2541
2862
  let typeinAnswer;
2542
2863
  let latestAnswer = "";
2543
2864
  let focusOrigin = "tab";
2544
- const inputBorderClass = !isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800";
2545
2865
  const { rubric, interaction, metadata } = sessionData;
2546
2866
  const { prompt, typein_type: typeinType } = interaction;
2547
2867
  if (metadata) {
@@ -2588,14 +2908,13 @@
2588
2908
  const keydown_handler_1 = (event) => saveOnEnter(event);
2589
2909
  $$self.$$set = ($$props2) => {
2590
2910
  if ("sessionData" in $$props2)
2591
- $$invalidate(10, sessionData = $$props2.sessionData);
2911
+ $$invalidate(9, sessionData = $$props2.sessionData);
2592
2912
  if ("isDataSaving" in $$props2)
2593
2913
  $$invalidate(0, isDataSaving = $$props2.isDataSaving);
2594
2914
  };
2595
2915
  return [
2596
2916
  isDataSaving,
2597
2917
  typeinAnswer,
2598
- inputBorderClass,
2599
2918
  rubric,
2600
2919
  prompt,
2601
2920
  typeinType,
@@ -2618,10 +2937,10 @@
2618
2937
  var PromptTypeIn = class extends SvelteComponent {
2619
2938
  constructor(options) {
2620
2939
  super();
2621
- init(this, options, instance4, create_fragment7, safe_not_equal, { sessionData: 10, isDataSaving: 0 });
2940
+ init(this, options, instance4, create_fragment7, safe_not_equal, { sessionData: 9, isDataSaving: 0 });
2622
2941
  }
2623
2942
  get sessionData() {
2624
- return this.$$.ctx[10];
2943
+ return this.$$.ctx[9];
2625
2944
  }
2626
2945
  set sessionData(sessionData) {
2627
2946
  this.$$set({ sessionData });
@@ -2729,7 +3048,7 @@
2729
3048
 
2730
3049
  // src/lib/components/prompt/PromptBuilder.svelte
2731
3050
  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}}');
3051
+ 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
3052
  }
2734
3053
  function create_else_block_12(ctx) {
2735
3054
  let invalidbanner;
@@ -2759,22 +3078,22 @@
2759
3078
  }
2760
3079
  };
2761
3080
  }
2762
- function create_if_block_14(ctx) {
3081
+ function create_if_block_15(ctx) {
2763
3082
  let current_block_type_index;
2764
3083
  let if_block;
2765
3084
  let if_block_anchor;
2766
3085
  let current;
2767
- const if_block_creators = [create_if_block_22, create_if_block_3, create_else_block3];
3086
+ const if_block_creators = [create_if_block_23, create_if_block_32, create_else_block4];
2768
3087
  const if_blocks = [];
2769
3088
  function select_block_type_1(ctx2, dirty) {
2770
3089
  if (
2771
3090
  /*interactionType*/
2772
- ctx2[3] === "multipleChoiceInteraction"
3091
+ ctx2[3] === INTERACTION_TYPE_MCQ
2773
3092
  )
2774
3093
  return 0;
2775
3094
  if (
2776
3095
  /*interactionType*/
2777
- ctx2[3] === "typeInInteraction"
3096
+ ctx2[3] === INTERACTION_TYPE_TYPEIN
2778
3097
  )
2779
3098
  return 1;
2780
3099
  return 2;
@@ -2859,7 +3178,7 @@
2859
3178
  }
2860
3179
  };
2861
3180
  }
2862
- function create_else_block3(ctx) {
3181
+ function create_else_block4(ctx) {
2863
3182
  let invalidbanner;
2864
3183
  let current;
2865
3184
  invalidbanner = new InvalidBanner_default({ props: { bannerLabel } });
@@ -2887,7 +3206,7 @@
2887
3206
  }
2888
3207
  };
2889
3208
  }
2890
- function create_if_block_3(ctx) {
3209
+ function create_if_block_32(ctx) {
2891
3210
  let prompttypein;
2892
3211
  let current;
2893
3212
  prompttypein = new PromptTypeIn_default({
@@ -2905,7 +3224,7 @@
2905
3224
  prompttypein.$on(
2906
3225
  "saveAnswer",
2907
3226
  /*saveEvent*/
2908
- ctx[4]
3227
+ ctx[6]
2909
3228
  );
2910
3229
  return {
2911
3230
  c() {
@@ -2942,7 +3261,7 @@
2942
3261
  }
2943
3262
  };
2944
3263
  }
2945
- function create_if_block_22(ctx) {
3264
+ function create_if_block_23(ctx) {
2946
3265
  let promptmcq;
2947
3266
  let current;
2948
3267
  promptmcq = new PromptMCQ_default({
@@ -2954,13 +3273,21 @@
2954
3273
  isDataSaving: (
2955
3274
  /*isDataSaving*/
2956
3275
  ctx[2]
3276
+ ),
3277
+ isFinished: (
3278
+ /*isFinished*/
3279
+ ctx[4]
3280
+ ),
3281
+ isResultCorrect: (
3282
+ /*isResultCorrect*/
3283
+ ctx[5]
2957
3284
  )
2958
3285
  }
2959
3286
  });
2960
3287
  promptmcq.$on(
2961
3288
  "saveOption",
2962
3289
  /*saveEvent*/
2963
- ctx[4]
3290
+ ctx[6]
2964
3291
  );
2965
3292
  return {
2966
3293
  c() {
@@ -2980,6 +3307,14 @@
2980
3307
  4)
2981
3308
  promptmcq_changes.isDataSaving = /*isDataSaving*/
2982
3309
  ctx2[2];
3310
+ if (dirty & /*isFinished*/
3311
+ 16)
3312
+ promptmcq_changes.isFinished = /*isFinished*/
3313
+ ctx2[4];
3314
+ if (dirty & /*isResultCorrect*/
3315
+ 32)
3316
+ promptmcq_changes.isResultCorrect = /*isResultCorrect*/
3317
+ ctx2[5];
2983
3318
  promptmcq.$set(promptmcq_changes);
2984
3319
  },
2985
3320
  i(local) {
@@ -3002,7 +3337,7 @@
3002
3337
  let if_block;
3003
3338
  let if_block_anchor;
3004
3339
  let current;
3005
- const if_block_creators = [create_if_block5, create_if_block_14, create_else_block_12];
3340
+ const if_block_creators = [create_if_block5, create_if_block_15, create_else_block_12];
3006
3341
  const if_blocks = [];
3007
3342
  function select_block_type(ctx2, dirty) {
3008
3343
  if (
@@ -3077,11 +3412,16 @@
3077
3412
  let isDataFetching = true;
3078
3413
  let isDataSaving = false;
3079
3414
  let interactionType = null;
3415
+ let isFinished2 = false;
3416
+ let isLocked = false;
3417
+ let isResultCorrect2 = false;
3080
3418
  const skipUserValidationStr = get_store_value(skipUserValidation) ? "?skip_user_validation=true" : "";
3081
3419
  const getSessionData = async (sessionId2) => {
3082
3420
  try {
3083
3421
  const { data } = await useGet(`sessions/${sessionId2}${skipUserValidationStr}`);
3084
- const { item_id: itemId, metadata } = data;
3422
+ const { item_id: itemId, metadata, is_finished: isSessionFinished, is_locked: isSessionLocked } = data;
3423
+ isLocked = isSessionLocked;
3424
+ $$invalidate(4, isFinished2 = isSessionFinished);
3085
3425
  if (itemId) {
3086
3426
  await getItemData(itemId, metadata);
3087
3427
  }
@@ -3091,9 +3431,13 @@
3091
3431
  };
3092
3432
  const getItemData = async (itemId, metadata) => {
3093
3433
  try {
3094
- const { data } = await useGet(`items/${itemId}`);
3434
+ const includeAnswer = isFinished2 && isLocked ? "?include=[correct_answer]" : "";
3435
+ const { data } = await useGet(`items/${itemId}${includeAnswer}`);
3095
3436
  $$invalidate(3, interactionType = getInteractionType(data));
3096
3437
  $$invalidate(0, sessionData = { ...data, metadata });
3438
+ if (isFinished2 && isLocked) {
3439
+ await getSessionScore();
3440
+ }
3097
3441
  } catch (error) {
3098
3442
  } finally {
3099
3443
  $$invalidate(1, isDataFetching = false);
@@ -3110,7 +3454,27 @@
3110
3454
  }
3111
3455
  return interactionType2;
3112
3456
  };
3457
+ const getSessionScore = async () => {
3458
+ try {
3459
+ const { data } = await useGet(`sessions/${sessionId}/score`);
3460
+ if (data) {
3461
+ const { metadata, has_answer: hasAnswer, scoring } = data[0];
3462
+ const scoringMetadata = {
3463
+ hasAnswer: !!hasAnswer,
3464
+ answerId: metadata.answer[0],
3465
+ correctAnswerId: metadata.correctAnswerId[0]
3466
+ };
3467
+ $$invalidate(0, sessionData = { ...sessionData, scoringMetadata });
3468
+ $$invalidate(5, isResultCorrect2 = scoring.score_earned);
3469
+ }
3470
+ } catch (error) {
3471
+ } finally {
3472
+ $$invalidate(1, isDataFetching = false);
3473
+ }
3474
+ };
3113
3475
  const saveEvent = async ({ detail }) => {
3476
+ if (isLocked || isFinished2)
3477
+ return;
3114
3478
  try {
3115
3479
  $$invalidate(2, isDataSaving = true);
3116
3480
  await usePatch(`sessions/${sessionId}${skipUserValidationStr}`, detail);
@@ -3124,10 +3488,18 @@
3124
3488
  getSessionData(sessionId);
3125
3489
  }
3126
3490
  $$self.$$set = ($$new_props) => {
3127
- $$invalidate(10, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
3491
+ $$invalidate(14, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
3128
3492
  };
3129
3493
  $$props = exclude_internal_props($$props);
3130
- return [sessionData, isDataFetching, isDataSaving, interactionType, saveEvent];
3494
+ return [
3495
+ sessionData,
3496
+ isDataFetching,
3497
+ isDataSaving,
3498
+ interactionType,
3499
+ isFinished2,
3500
+ isResultCorrect2,
3501
+ saveEvent
3502
+ ];
3131
3503
  }
3132
3504
  var PromptBuilder = class extends SvelteComponent {
3133
3505
  constructor(options) {