eat-js-sdk 0.0.12 → 0.0.14

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.
@@ -562,7 +562,7 @@
562
562
  }
563
563
  component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
564
564
  }
565
- function init(component, options, instance7, create_fragment11, not_equal, props, append_styles2 = null, dirty = [-1]) {
565
+ function init(component, options, instance7, create_fragment10, not_equal, props, append_styles2 = null, dirty = [-1]) {
566
566
  const parent_component = current_component;
567
567
  set_current_component(component);
568
568
  const $$ = component.$$ = {
@@ -601,7 +601,7 @@
601
601
  $$.update();
602
602
  ready = true;
603
603
  run_all($$.before_update);
604
- $$.fragment = create_fragment11 ? create_fragment11($$.ctx) : false;
604
+ $$.fragment = create_fragment10 ? create_fragment10($$.ctx) : false;
605
605
  if (options.target) {
606
606
  if (options.hydrate) {
607
607
  start_hydrating();
@@ -1244,285 +1244,80 @@
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/assets/img/messaging/SuccessSolid.svelte
1248
- function create_fragment2(ctx) {
1249
- let svg;
1250
- let path;
1251
- return {
1252
- c() {
1253
- svg = svg_element("svg");
1254
- path = svg_element("path");
1255
- attr(path, "fill-rule", "evenodd");
1256
- attr(path, "clip-rule", "evenodd");
1257
- attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM14.7284 6.79289C14.3378 6.40237 13.7047 6.40237 13.3141 6.79289L8.02125 12.0858L6.20711 10.2716C5.81658 9.88112 5.18342 9.88112 4.79289 10.2716C4.40237 10.6622 4.40237 11.2953 4.79289 11.6859L7.31414 14.2071C7.70467 14.5976 8.33783 14.5976 8.72836 14.2071L14.7284 8.20711C15.1189 7.81658 15.1189 7.18342 14.7284 6.79289Z");
1258
- attr(path, "fill", "currentColor");
1259
- attr(svg, "width", "20");
1260
- attr(svg, "height", "20");
1261
- attr(svg, "viewBox", "0 0 20 20");
1262
- attr(svg, "fill", "none");
1263
- attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1264
- attr(svg, "role", "img");
1265
- attr(svg, "aria-label", "Check Icon");
1266
- },
1267
- m(target, anchor) {
1268
- insert(target, svg, anchor);
1269
- append(svg, path);
1270
- },
1271
- p: noop,
1272
- i: noop,
1273
- o: noop,
1274
- d(detaching) {
1275
- if (detaching) {
1276
- detach(svg);
1277
- }
1278
- }
1279
- };
1280
- }
1281
- var SuccessSolid = class extends SvelteComponent {
1282
- constructor(options) {
1283
- super();
1284
- init(this, options, null, create_fragment2, safe_not_equal, {});
1285
- }
1286
- };
1287
- create_custom_element(SuccessSolid, {}, [], [], true);
1288
- var SuccessSolid_default = SuccessSolid;
1289
-
1290
- // src/lib/assets/img/messaging/InfoSolid.svelte
1291
- function create_fragment3(ctx) {
1292
- let svg;
1293
- let path;
1294
- return {
1295
- c() {
1296
- svg = svg_element("svg");
1297
- path = svg_element("path");
1298
- attr(path, "fill-rule", "evenodd");
1299
- attr(path, "clip-rule", "evenodd");
1300
- attr(path, "d", "M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM10 9C9.44772 9 9 9.44772 9 10V14.5C9 15.0523 9.44772 15.5 10 15.5C10.5523 15.5 11 15.0523 11 14.5V10C11 9.44772 10.5523 9 10 9ZM10 5C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7C10.5523 7 11 6.55228 11 6C11 5.44772 10.5523 5 10 5Z");
1301
- attr(path, "fill", "currentColor");
1302
- attr(svg, "width", "20");
1303
- attr(svg, "height", "20");
1304
- attr(svg, "viewBox", "0 0 20 20");
1305
- attr(svg, "fill", "none");
1306
- attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1307
- attr(svg, "role", "img");
1308
- attr(svg, "aria-label", "Info Icon");
1309
- },
1310
- m(target, anchor) {
1311
- insert(target, svg, anchor);
1312
- append(svg, path);
1313
- },
1314
- p: noop,
1315
- i: noop,
1316
- o: noop,
1317
- d(detaching) {
1318
- if (detaching) {
1319
- detach(svg);
1320
- }
1321
- }
1322
- };
1323
- }
1324
- var InfoSolid = class extends SvelteComponent {
1325
- constructor(options) {
1326
- super();
1327
- init(this, options, null, create_fragment3, safe_not_equal, {});
1328
- }
1329
- };
1330
- create_custom_element(InfoSolid, {}, [], [], true);
1331
- var InfoSolid_default = InfoSolid;
1332
-
1333
1247
  // src/lib/components/prompt/template/PromptResultFeedback.svelte
1334
1248
  function create_if_block2(ctx) {
1335
1249
  let div0;
1336
1250
  let span0;
1337
- let current_block_type_index;
1338
- let if_block;
1339
- let span0_class_value;
1340
1251
  let t0;
1341
- let span3;
1342
- let span1;
1343
1252
  let t1;
1253
+ let span1;
1344
1254
  let t2;
1345
- let span2;
1346
- let t3;
1347
1255
  let div0_class_value;
1348
- let t4;
1256
+ let t3;
1349
1257
  let div1;
1350
- let current;
1351
- const if_block_creators = [create_if_block_12, create_else_block];
1352
- const if_blocks = [];
1353
- function select_block_type(ctx2, dirty) {
1354
- if (
1355
- /*isResultCorrect*/
1356
- ctx2[2]
1357
- )
1358
- return 0;
1359
- return 1;
1360
- }
1361
- current_block_type_index = select_block_type(ctx, -1);
1362
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
1363
1258
  return {
1364
1259
  c() {
1365
1260
  div0 = element("div");
1366
1261
  span0 = element("span");
1367
- if_block.c();
1368
- t0 = space();
1369
- span3 = element("span");
1370
- span1 = element("span");
1371
- t1 = text(
1262
+ t0 = text(
1372
1263
  /*resultFeedbackTitle*/
1373
1264
  ctx[1]
1374
1265
  );
1375
- t2 = space();
1376
- span2 = element("span");
1377
- t3 = text(
1266
+ t1 = space();
1267
+ span1 = element("span");
1268
+ t2 = text(
1378
1269
  /*resultFeedback*/
1379
1270
  ctx[0]
1380
1271
  );
1381
- t4 = space();
1272
+ t3 = space();
1382
1273
  div1 = element("div");
1383
- attr(span0, "class", span0_class_value = "mr-2 p-0.5 " + /*isResultCorrect*/
1384
- (ctx[2] ? "text-green-800" : "text-red-800"));
1385
- attr(span1, "class", "block mb-1 font-semibold");
1386
- attr(span3, "class", "text-base");
1387
- attr(div0, "class", div0_class_value = "flex items-start my-6 p-4 border-l-[6px] text-charcoal " + /*isResultCorrect*/
1274
+ attr(span0, "class", "block mb-1 font-semibold");
1275
+ attr(div0, "class", div0_class_value = "my-6 p-4 border-l-[6px] text-charcoal text-base " + /*isResultCorrect*/
1388
1276
  (ctx[2] ? "border-green-800 bg-green-300" : "border-red-800 bg-red-300"));
1389
1277
  attr(div1, "class", "divider my-6");
1390
1278
  },
1391
1279
  m(target, anchor) {
1392
1280
  insert(target, div0, anchor);
1393
1281
  append(div0, span0);
1394
- if_blocks[current_block_type_index].m(span0, null);
1395
- append(div0, t0);
1396
- append(div0, span3);
1397
- append(span3, span1);
1398
- append(span1, t1);
1399
- append(span3, t2);
1400
- append(span3, span2);
1401
- append(span2, t3);
1402
- insert(target, t4, anchor);
1282
+ append(span0, t0);
1283
+ append(div0, t1);
1284
+ append(div0, span1);
1285
+ append(span1, t2);
1286
+ insert(target, t3, anchor);
1403
1287
  insert(target, div1, anchor);
1404
- current = true;
1405
1288
  },
1406
1289
  p(ctx2, dirty) {
1407
- let previous_block_index = current_block_type_index;
1408
- current_block_type_index = select_block_type(ctx2, dirty);
1409
- if (current_block_type_index !== previous_block_index) {
1410
- group_outros();
1411
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
1412
- if_blocks[previous_block_index] = null;
1413
- });
1414
- check_outros();
1415
- if_block = if_blocks[current_block_type_index];
1416
- if (!if_block) {
1417
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
1418
- if_block.c();
1419
- } else {
1420
- }
1421
- transition_in(if_block, 1);
1422
- if_block.m(span0, null);
1423
- }
1424
- if (!current || dirty & /*isResultCorrect*/
1425
- 4 && span0_class_value !== (span0_class_value = "mr-2 p-0.5 " + /*isResultCorrect*/
1426
- (ctx2[2] ? "text-green-800" : "text-red-800"))) {
1427
- attr(span0, "class", span0_class_value);
1428
- }
1429
- if (!current || dirty & /*resultFeedbackTitle*/
1290
+ if (dirty & /*resultFeedbackTitle*/
1430
1291
  2)
1431
1292
  set_data(
1432
- t1,
1293
+ t0,
1433
1294
  /*resultFeedbackTitle*/
1434
1295
  ctx2[1]
1435
1296
  );
1436
- if (!current || dirty & /*resultFeedback*/
1297
+ if (dirty & /*resultFeedback*/
1437
1298
  1)
1438
1299
  set_data(
1439
- t3,
1300
+ t2,
1440
1301
  /*resultFeedback*/
1441
1302
  ctx2[0]
1442
1303
  );
1443
- if (!current || dirty & /*isResultCorrect*/
1444
- 4 && div0_class_value !== (div0_class_value = "flex items-start my-6 p-4 border-l-[6px] text-charcoal " + /*isResultCorrect*/
1304
+ if (dirty & /*isResultCorrect*/
1305
+ 4 && div0_class_value !== (div0_class_value = "my-6 p-4 border-l-[6px] text-charcoal text-base " + /*isResultCorrect*/
1445
1306
  (ctx2[2] ? "border-green-800 bg-green-300" : "border-red-800 bg-red-300"))) {
1446
1307
  attr(div0, "class", div0_class_value);
1447
1308
  }
1448
1309
  },
1449
- i(local) {
1450
- if (current)
1451
- return;
1452
- transition_in(if_block);
1453
- current = true;
1454
- },
1455
- o(local) {
1456
- transition_out(if_block);
1457
- current = false;
1458
- },
1459
1310
  d(detaching) {
1460
1311
  if (detaching) {
1461
1312
  detach(div0);
1462
- detach(t4);
1313
+ detach(t3);
1463
1314
  detach(div1);
1464
1315
  }
1465
- if_blocks[current_block_type_index].d();
1466
1316
  }
1467
1317
  };
1468
1318
  }
1469
- function create_else_block(ctx) {
1470
- let infosolid;
1471
- let current;
1472
- infosolid = new InfoSolid_default({});
1473
- return {
1474
- c() {
1475
- create_component(infosolid.$$.fragment);
1476
- },
1477
- m(target, anchor) {
1478
- mount_component(infosolid, target, anchor);
1479
- current = true;
1480
- },
1481
- i(local) {
1482
- if (current)
1483
- return;
1484
- transition_in(infosolid.$$.fragment, local);
1485
- current = true;
1486
- },
1487
- o(local) {
1488
- transition_out(infosolid.$$.fragment, local);
1489
- current = false;
1490
- },
1491
- d(detaching) {
1492
- destroy_component(infosolid, detaching);
1493
- }
1494
- };
1495
- }
1496
- function create_if_block_12(ctx) {
1497
- let successsolid;
1498
- let current;
1499
- successsolid = new SuccessSolid_default({});
1500
- return {
1501
- c() {
1502
- create_component(successsolid.$$.fragment);
1503
- },
1504
- m(target, anchor) {
1505
- mount_component(successsolid, target, anchor);
1506
- current = true;
1507
- },
1508
- i(local) {
1509
- if (current)
1510
- return;
1511
- transition_in(successsolid.$$.fragment, local);
1512
- current = true;
1513
- },
1514
- o(local) {
1515
- transition_out(successsolid.$$.fragment, local);
1516
- current = false;
1517
- },
1518
- d(detaching) {
1519
- destroy_component(successsolid, detaching);
1520
- }
1521
- };
1522
- }
1523
- function create_fragment4(ctx) {
1319
+ function create_fragment2(ctx) {
1524
1320
  let if_block_anchor;
1525
- let current;
1526
1321
  let if_block = (
1527
1322
  /*resultFeedback*/
1528
1323
  ctx[0] && create_if_block2(ctx)
@@ -1537,7 +1332,6 @@
1537
1332
  if (if_block)
1538
1333
  if_block.m(target, anchor);
1539
1334
  insert(target, if_block_anchor, anchor);
1540
- current = true;
1541
1335
  },
1542
1336
  p(ctx2, [dirty]) {
1543
1337
  if (
@@ -1546,34 +1340,18 @@
1546
1340
  ) {
1547
1341
  if (if_block) {
1548
1342
  if_block.p(ctx2, dirty);
1549
- if (dirty & /*resultFeedback*/
1550
- 1) {
1551
- transition_in(if_block, 1);
1552
- }
1553
1343
  } else {
1554
1344
  if_block = create_if_block2(ctx2);
1555
1345
  if_block.c();
1556
- transition_in(if_block, 1);
1557
1346
  if_block.m(if_block_anchor.parentNode, if_block_anchor);
1558
1347
  }
1559
1348
  } else if (if_block) {
1560
- group_outros();
1561
- transition_out(if_block, 1, 1, () => {
1562
- if_block = null;
1563
- });
1564
- check_outros();
1349
+ if_block.d(1);
1350
+ if_block = null;
1565
1351
  }
1566
1352
  },
1567
- i(local) {
1568
- if (current)
1569
- return;
1570
- transition_in(if_block);
1571
- current = true;
1572
- },
1573
- o(local) {
1574
- transition_out(if_block);
1575
- current = false;
1576
- },
1353
+ i: noop,
1354
+ o: noop,
1577
1355
  d(detaching) {
1578
1356
  if (detaching) {
1579
1357
  detach(if_block_anchor);
@@ -1586,21 +1364,21 @@
1586
1364
  function instance2($$self, $$props, $$invalidate) {
1587
1365
  let { resultFeedback = null } = $$props;
1588
1366
  let { resultFeedbackTitle = null } = $$props;
1589
- let { isResultCorrect: isResultCorrect2 = true } = $$props;
1367
+ let { isResultCorrect = true } = $$props;
1590
1368
  $$self.$$set = ($$props2) => {
1591
1369
  if ("resultFeedback" in $$props2)
1592
1370
  $$invalidate(0, resultFeedback = $$props2.resultFeedback);
1593
1371
  if ("resultFeedbackTitle" in $$props2)
1594
1372
  $$invalidate(1, resultFeedbackTitle = $$props2.resultFeedbackTitle);
1595
1373
  if ("isResultCorrect" in $$props2)
1596
- $$invalidate(2, isResultCorrect2 = $$props2.isResultCorrect);
1374
+ $$invalidate(2, isResultCorrect = $$props2.isResultCorrect);
1597
1375
  };
1598
- return [resultFeedback, resultFeedbackTitle, isResultCorrect2];
1376
+ return [resultFeedback, resultFeedbackTitle, isResultCorrect];
1599
1377
  }
1600
1378
  var PromptResultFeedback = class extends SvelteComponent {
1601
1379
  constructor(options) {
1602
1380
  super();
1603
- init(this, options, instance2, create_fragment4, safe_not_equal, {
1381
+ init(this, options, instance2, create_fragment2, safe_not_equal, {
1604
1382
  resultFeedback: 0,
1605
1383
  resultFeedbackTitle: 1,
1606
1384
  isResultCorrect: 2
@@ -1623,8 +1401,8 @@
1623
1401
  get isResultCorrect() {
1624
1402
  return this.$$.ctx[2];
1625
1403
  }
1626
- set isResultCorrect(isResultCorrect2) {
1627
- this.$$set({ isResultCorrect: isResultCorrect2 });
1404
+ set isResultCorrect(isResultCorrect) {
1405
+ this.$$set({ isResultCorrect });
1628
1406
  flush();
1629
1407
  }
1630
1408
  };
@@ -1665,8 +1443,51 @@
1665
1443
  };
1666
1444
  var useMCQ_default = useAlphabetEquivalent;
1667
1445
 
1446
+ // src/lib/assets/img/messaging/SuccessSolid.svelte
1447
+ function create_fragment3(ctx) {
1448
+ let svg;
1449
+ let path;
1450
+ return {
1451
+ c() {
1452
+ svg = svg_element("svg");
1453
+ path = svg_element("path");
1454
+ attr(path, "fill-rule", "evenodd");
1455
+ attr(path, "clip-rule", "evenodd");
1456
+ 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");
1457
+ attr(path, "fill", "currentColor");
1458
+ attr(svg, "width", "20");
1459
+ attr(svg, "height", "20");
1460
+ attr(svg, "viewBox", "0 0 20 20");
1461
+ attr(svg, "fill", "none");
1462
+ attr(svg, "xmlns", "http://www.w3.org/2000/svg");
1463
+ attr(svg, "role", "img");
1464
+ attr(svg, "aria-label", "Check Icon");
1465
+ },
1466
+ m(target, anchor) {
1467
+ insert(target, svg, anchor);
1468
+ append(svg, path);
1469
+ },
1470
+ p: noop,
1471
+ i: noop,
1472
+ o: noop,
1473
+ d(detaching) {
1474
+ if (detaching) {
1475
+ detach(svg);
1476
+ }
1477
+ }
1478
+ };
1479
+ }
1480
+ var SuccessSolid = class extends SvelteComponent {
1481
+ constructor(options) {
1482
+ super();
1483
+ init(this, options, null, create_fragment3, safe_not_equal, {});
1484
+ }
1485
+ };
1486
+ create_custom_element(SuccessSolid, {}, [], [], true);
1487
+ var SuccessSolid_default = SuccessSolid;
1488
+
1668
1489
  // src/lib/assets/img/messaging/ErrorSolid.svelte
1669
- function create_fragment5(ctx) {
1490
+ function create_fragment4(ctx) {
1670
1491
  let svg;
1671
1492
  let path;
1672
1493
  return {
@@ -1702,7 +1523,7 @@
1702
1523
  var ErrorSolid = class extends SvelteComponent {
1703
1524
  constructor(options) {
1704
1525
  super();
1705
- init(this, options, null, create_fragment5, safe_not_equal, {});
1526
+ init(this, options, null, create_fragment4, safe_not_equal, {});
1706
1527
  }
1707
1528
  };
1708
1529
  create_custom_element(ErrorSolid, {}, [], [], true);
@@ -1716,7 +1537,7 @@
1716
1537
  child_ctx[18] = i;
1717
1538
  return child_ctx;
1718
1539
  }
1719
- function create_if_block_13(ctx) {
1540
+ function create_if_block_12(ctx) {
1720
1541
  let div1;
1721
1542
  let div0;
1722
1543
  let div0_class_value;
@@ -1817,7 +1638,7 @@
1817
1638
  let if_block;
1818
1639
  let span_class_value;
1819
1640
  let current;
1820
- const if_block_creators = [create_if_block_3, create_else_block2];
1641
+ const if_block_creators = [create_if_block_3, create_else_block];
1821
1642
  const if_blocks = [];
1822
1643
  function select_block_type(ctx2, dirty) {
1823
1644
  if (
@@ -1883,7 +1704,7 @@
1883
1704
  }
1884
1705
  };
1885
1706
  }
1886
- function create_else_block2(ctx) {
1707
+ function create_else_block(ctx) {
1887
1708
  let errorsolid;
1888
1709
  let current;
1889
1710
  errorsolid = new ErrorSolid_default({});
@@ -2105,7 +1926,7 @@
2105
1926
  let current;
2106
1927
  let if_block = (
2107
1928
  /*options*/
2108
- ctx[7] && create_if_block_13(ctx)
1929
+ ctx[7] && create_if_block_12(ctx)
2109
1930
  );
2110
1931
  return {
2111
1932
  c() {
@@ -2203,7 +2024,7 @@
2203
2024
  }
2204
2025
  };
2205
2026
  }
2206
- function create_fragment6(ctx) {
2027
+ function create_fragment5(ctx) {
2207
2028
  let promptbody;
2208
2029
  let t2;
2209
2030
  let if_block_anchor;
@@ -2299,8 +2120,8 @@
2299
2120
  function instance3($$self, $$props, $$invalidate) {
2300
2121
  let { sessionData } = $$props;
2301
2122
  let { isDataSaving } = $$props;
2302
- let { isFinished: isFinished2 = false } = $$props;
2303
- let { isResultCorrect: isResultCorrect2 = false } = $$props;
2123
+ let { isFinished = false } = $$props;
2124
+ let { isResultCorrect = false } = $$props;
2304
2125
  const { rubric, interaction, metadata, scoringMetadata } = sessionData;
2305
2126
  const { prompt, options } = interaction;
2306
2127
  let selectedOption = null;
@@ -2312,16 +2133,16 @@
2312
2133
  const { answer_id: answerChoiceId } = currentOption;
2313
2134
  selectedOption = answerChoiceId[0];
2314
2135
  }
2315
- if (isFinished2) {
2136
+ if (isFinished) {
2316
2137
  if (options && selectedOption) {
2317
2138
  const feedbackData = Object.values(options).filter((option) => option.id === selectedOption);
2318
2139
  resultFeedback = feedbackData[0].feedback || resultFeedback;
2319
2140
  }
2320
- const { answerId, has_answer } = scoringMetadata;
2321
- selectedOption = answerId && has_answer ? answerId : selectedOption;
2141
+ const { answerId, hasAnswer } = scoringMetadata;
2142
+ selectedOption = answerId && hasAnswer ? answerId : selectedOption;
2322
2143
  }
2323
2144
  const handleOptionClick = (optionId, option) => {
2324
- if (isDataSaving || optionId === selectedOption || isFinished2)
2145
+ if (isDataSaving || optionId === selectedOption || isFinished)
2325
2146
  return;
2326
2147
  $$invalidate(3, selectedOption = optionId);
2327
2148
  dispatch("saveOption", {
@@ -2336,14 +2157,14 @@
2336
2157
  if ("isDataSaving" in $$props2)
2337
2158
  $$invalidate(0, isDataSaving = $$props2.isDataSaving);
2338
2159
  if ("isFinished" in $$props2)
2339
- $$invalidate(1, isFinished2 = $$props2.isFinished);
2160
+ $$invalidate(1, isFinished = $$props2.isFinished);
2340
2161
  if ("isResultCorrect" in $$props2)
2341
- $$invalidate(2, isResultCorrect2 = $$props2.isResultCorrect);
2162
+ $$invalidate(2, isResultCorrect = $$props2.isResultCorrect);
2342
2163
  };
2343
2164
  return [
2344
2165
  isDataSaving,
2345
- isFinished2,
2346
- isResultCorrect2,
2166
+ isFinished,
2167
+ isResultCorrect,
2347
2168
  selectedOption,
2348
2169
  resultFeedback,
2349
2170
  rubric,
@@ -2357,7 +2178,7 @@
2357
2178
  var PromptMCQ = class extends SvelteComponent {
2358
2179
  constructor(options) {
2359
2180
  super();
2360
- init(this, options, instance3, create_fragment6, safe_not_equal, {
2181
+ init(this, options, instance3, create_fragment5, safe_not_equal, {
2361
2182
  sessionData: 9,
2362
2183
  isDataSaving: 0,
2363
2184
  isFinished: 1,
@@ -2381,15 +2202,15 @@
2381
2202
  get isFinished() {
2382
2203
  return this.$$.ctx[1];
2383
2204
  }
2384
- set isFinished(isFinished2) {
2385
- this.$$set({ isFinished: isFinished2 });
2205
+ set isFinished(isFinished) {
2206
+ this.$$set({ isFinished });
2386
2207
  flush();
2387
2208
  }
2388
2209
  get isResultCorrect() {
2389
2210
  return this.$$.ctx[2];
2390
2211
  }
2391
- set isResultCorrect(isResultCorrect2) {
2392
- this.$$set({ isResultCorrect: isResultCorrect2 });
2212
+ set isResultCorrect(isResultCorrect) {
2213
+ this.$$set({ isResultCorrect });
2393
2214
  flush();
2394
2215
  }
2395
2216
  };
@@ -2487,17 +2308,23 @@
2487
2308
  attr(textarea, "aria-label", "Answer input: Please type your response");
2488
2309
  attr(textarea, "placeholder", placeholder);
2489
2310
  attr(textarea, "rows", "3");
2490
- attr(textarea, "class", textarea_class_value = "typein-textbox overflow-hidden " + (!isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800"));
2311
+ attr(textarea, "class", textarea_class_value = "typein-textbox overflow-hidden " + (!/*isFinished*/
2312
+ ctx[1] ? "" : (
2313
+ /*isResultCorrect*/
2314
+ ctx[2] ? "border-2 border-green-800" : "border-2 border-red-800"
2315
+ )));
2491
2316
  textarea.disabled = /*isDataSaving*/
2492
2317
  ctx[0];
2493
2318
  attr(textarea, "autocomplete", "off");
2319
+ textarea.readOnly = /*isFinished*/
2320
+ ctx[1];
2494
2321
  },
2495
2322
  m(target, anchor) {
2496
2323
  insert(target, textarea, anchor);
2497
2324
  set_input_value(
2498
2325
  textarea,
2499
2326
  /*typeinAnswer*/
2500
- ctx[1]
2327
+ ctx[3]
2501
2328
  );
2502
2329
  if (!mounted) {
2503
2330
  dispose = [
@@ -2505,38 +2332,38 @@
2505
2332
  textarea,
2506
2333
  "input",
2507
2334
  /*textarea_input_handler*/
2508
- ctx[13]
2335
+ ctx[15]
2509
2336
  ),
2510
2337
  listen(
2511
2338
  textarea,
2512
2339
  "mousedown",
2513
2340
  /*mousedown_handler*/
2514
- ctx[14]
2341
+ ctx[16]
2515
2342
  ),
2516
2343
  listen(
2517
2344
  textarea,
2518
2345
  "touchstart",
2519
2346
  /*touchstart_handler*/
2520
- ctx[15],
2347
+ ctx[17],
2521
2348
  { passive: true }
2522
2349
  ),
2523
2350
  listen(
2524
2351
  textarea,
2525
2352
  "focus",
2526
2353
  /*focus_handler*/
2527
- ctx[16]
2354
+ ctx[18]
2528
2355
  ),
2529
2356
  listen(
2530
2357
  textarea,
2531
2358
  "focusout",
2532
2359
  /*focusout_handler_1*/
2533
- ctx[17]
2360
+ ctx[19]
2534
2361
  ),
2535
2362
  listen(
2536
2363
  textarea,
2537
2364
  "keydown",
2538
2365
  /*keydown_handler_1*/
2539
- ctx[18]
2366
+ ctx[20]
2540
2367
  ),
2541
2368
  action_destroyer(autosize_action = svelte_autosize_default.call(null, textarea))
2542
2369
  ];
@@ -2544,17 +2371,30 @@
2544
2371
  }
2545
2372
  },
2546
2373
  p(ctx2, dirty) {
2374
+ if (dirty & /*isFinished, isResultCorrect*/
2375
+ 6 && textarea_class_value !== (textarea_class_value = "typein-textbox overflow-hidden " + (!/*isFinished*/
2376
+ ctx2[1] ? "" : (
2377
+ /*isResultCorrect*/
2378
+ ctx2[2] ? "border-2 border-green-800" : "border-2 border-red-800"
2379
+ )))) {
2380
+ attr(textarea, "class", textarea_class_value);
2381
+ }
2547
2382
  if (dirty & /*isDataSaving*/
2548
2383
  1) {
2549
2384
  textarea.disabled = /*isDataSaving*/
2550
2385
  ctx2[0];
2551
2386
  }
2552
- if (dirty & /*typeinAnswer*/
2387
+ if (dirty & /*isFinished*/
2553
2388
  2) {
2389
+ textarea.readOnly = /*isFinished*/
2390
+ ctx2[1];
2391
+ }
2392
+ if (dirty & /*typeinAnswer*/
2393
+ 8) {
2554
2394
  set_input_value(
2555
2395
  textarea,
2556
2396
  /*typeinAnswer*/
2557
- ctx2[1]
2397
+ ctx2[3]
2558
2398
  );
2559
2399
  }
2560
2400
  },
@@ -2579,17 +2419,23 @@
2579
2419
  attr(input, "id", idLabel);
2580
2420
  attr(input, "aria-label", placeholder);
2581
2421
  attr(input, "placeholder", placeholder);
2582
- attr(input, "class", input_class_value = "typein-textbox " + (!isFinished ? "" : isResultCorrect ? "border-2 border-green-800" : "border-2 border-red-800"));
2422
+ attr(input, "class", input_class_value = "typein-textbox " + (!/*isFinished*/
2423
+ ctx[1] ? "" : (
2424
+ /*isResultCorrect*/
2425
+ ctx[2] ? "border-2 border-green-800" : "border-2 border-red-800"
2426
+ )));
2583
2427
  input.disabled = /*isDataSaving*/
2584
2428
  ctx[0];
2585
2429
  attr(input, "autocomplete", "off");
2430
+ input.readOnly = /*isFinished*/
2431
+ ctx[1];
2586
2432
  },
2587
2433
  m(target, anchor) {
2588
2434
  insert(target, input, anchor);
2589
2435
  set_input_value(
2590
2436
  input,
2591
2437
  /*typeinAnswer*/
2592
- ctx[1]
2438
+ ctx[3]
2593
2439
  );
2594
2440
  if (!mounted) {
2595
2441
  dispose = [
@@ -2597,37 +2443,50 @@
2597
2443
  input,
2598
2444
  "input",
2599
2445
  /*input_input_handler*/
2600
- ctx[10]
2446
+ ctx[12]
2601
2447
  ),
2602
2448
  listen(
2603
2449
  input,
2604
2450
  "focusout",
2605
2451
  /*focusout_handler*/
2606
- ctx[11]
2452
+ ctx[13]
2607
2453
  ),
2608
2454
  listen(
2609
2455
  input,
2610
2456
  "keydown",
2611
2457
  /*keydown_handler*/
2612
- ctx[12]
2458
+ ctx[14]
2613
2459
  )
2614
2460
  ];
2615
2461
  mounted = true;
2616
2462
  }
2617
2463
  },
2618
2464
  p(ctx2, dirty) {
2465
+ if (dirty & /*isFinished, isResultCorrect*/
2466
+ 6 && input_class_value !== (input_class_value = "typein-textbox " + (!/*isFinished*/
2467
+ ctx2[1] ? "" : (
2468
+ /*isResultCorrect*/
2469
+ ctx2[2] ? "border-2 border-green-800" : "border-2 border-red-800"
2470
+ )))) {
2471
+ attr(input, "class", input_class_value);
2472
+ }
2619
2473
  if (dirty & /*isDataSaving*/
2620
2474
  1) {
2621
2475
  input.disabled = /*isDataSaving*/
2622
2476
  ctx2[0];
2623
2477
  }
2478
+ if (dirty & /*isFinished*/
2479
+ 2) {
2480
+ input.readOnly = /*isFinished*/
2481
+ ctx2[1];
2482
+ }
2624
2483
  if (dirty & /*typeinAnswer*/
2625
- 2 && input.value !== /*typeinAnswer*/
2626
- ctx2[1]) {
2484
+ 8 && input.value !== /*typeinAnswer*/
2485
+ ctx2[3]) {
2627
2486
  set_input_value(
2628
2487
  input,
2629
2488
  /*typeinAnswer*/
2630
- ctx2[1]
2489
+ ctx2[3]
2631
2490
  );
2632
2491
  }
2633
2492
  },
@@ -2645,7 +2504,7 @@
2645
2504
  function select_block_type(ctx2, dirty) {
2646
2505
  if (
2647
2506
  /*typeinType*/
2648
- ctx2[4] === TYPEIN_TYPE_SHORT
2507
+ ctx2[6] === TYPEIN_TYPE_SHORT
2649
2508
  )
2650
2509
  return create_if_block_22;
2651
2510
  return create_else_block_1;
@@ -2680,14 +2539,22 @@
2680
2539
  let span0_class_value;
2681
2540
  let t0;
2682
2541
  let span1;
2542
+ let t1_value = (
2543
+ /*isResultCorrect*/
2544
+ ctx[2] ? "Correct" : "Incorrect"
2545
+ );
2546
+ let t1;
2683
2547
  let div_class_value;
2684
2548
  let t2;
2685
2549
  let promptresult;
2686
2550
  let current;
2687
- const if_block_creators = [create_if_block_14, create_else_block3];
2551
+ const if_block_creators = [create_if_block_13, create_else_block2];
2688
2552
  const if_blocks = [];
2689
2553
  function select_block_type_1(ctx2, dirty) {
2690
- if (isResultCorrect)
2554
+ if (
2555
+ /*isResultCorrect*/
2556
+ ctx2[2]
2557
+ )
2691
2558
  return 0;
2692
2559
  return 1;
2693
2560
  }
@@ -2695,9 +2562,15 @@
2695
2562
  if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
2696
2563
  promptresult = new PromptResultFeedback_default({
2697
2564
  props: {
2698
- isResultCorrect,
2699
- resultFeedbackTitle: isResultCorrect ? "Well done!" : "Not quite, but you\u2019re close!",
2700
- resultFeedback: "You applied the principles of [specific theory] perfectly in your response."
2565
+ isResultCorrect: (
2566
+ /*isResultCorrect*/
2567
+ ctx[2]
2568
+ ),
2569
+ resultFeedbackTitle: (
2570
+ /*isResultCorrect*/
2571
+ ctx[2] ? "Well done!" : "Not quite, but you\u2019re close!"
2572
+ ),
2573
+ resultFeedback: null
2701
2574
  }
2702
2575
  });
2703
2576
  return {
@@ -2707,13 +2580,14 @@
2707
2580
  if_block.c();
2708
2581
  t0 = space();
2709
2582
  span1 = element("span");
2710
- span1.textContent = `${isResultCorrect ? "[Generic \u201Ccorrect\u201D message]" : "[Generic \u201Cincorrect\u201D message]"}`;
2583
+ t1 = text(t1_value);
2711
2584
  t2 = space();
2712
2585
  create_component(promptresult.$$.fragment);
2713
- attr(span0, "class", span0_class_value = (isResultCorrect ? "text-green-800" : "text-red-800") + " mr-2 p-0.5");
2586
+ attr(span0, "class", span0_class_value = /*isResultCorrect*/
2587
+ (ctx[2] ? "text-green-800" : "text-red-800") + " mr-2 p-0.5");
2714
2588
  attr(span1, "class", "p2");
2715
2589
  attr(div, "class", div_class_value = "flex items-center text-charcoal " + /*typeinType*/
2716
- (ctx[4] === TYPEIN_TYPE_SHORT ? "mt-2" : "mt-0.5"));
2590
+ (ctx[6] === TYPEIN_TYPE_SHORT ? "mt-2" : "mt-0.5"));
2717
2591
  },
2718
2592
  m(target, anchor) {
2719
2593
  insert(target, div, anchor);
@@ -2721,11 +2595,49 @@
2721
2595
  if_blocks[current_block_type_index].m(span0, null);
2722
2596
  append(div, t0);
2723
2597
  append(div, span1);
2598
+ append(span1, t1);
2724
2599
  insert(target, t2, anchor);
2725
2600
  mount_component(promptresult, target, anchor);
2726
2601
  current = true;
2727
2602
  },
2728
- p: noop,
2603
+ p(ctx2, dirty) {
2604
+ let previous_block_index = current_block_type_index;
2605
+ current_block_type_index = select_block_type_1(ctx2, dirty);
2606
+ if (current_block_type_index !== previous_block_index) {
2607
+ group_outros();
2608
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
2609
+ if_blocks[previous_block_index] = null;
2610
+ });
2611
+ check_outros();
2612
+ if_block = if_blocks[current_block_type_index];
2613
+ if (!if_block) {
2614
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
2615
+ if_block.c();
2616
+ } else {
2617
+ }
2618
+ transition_in(if_block, 1);
2619
+ if_block.m(span0, null);
2620
+ }
2621
+ if (!current || dirty & /*isResultCorrect*/
2622
+ 4 && span0_class_value !== (span0_class_value = /*isResultCorrect*/
2623
+ (ctx2[2] ? "text-green-800" : "text-red-800") + " mr-2 p-0.5")) {
2624
+ attr(span0, "class", span0_class_value);
2625
+ }
2626
+ if ((!current || dirty & /*isResultCorrect*/
2627
+ 4) && t1_value !== (t1_value = /*isResultCorrect*/
2628
+ ctx2[2] ? "Correct" : "Incorrect"))
2629
+ set_data(t1, t1_value);
2630
+ const promptresult_changes = {};
2631
+ if (dirty & /*isResultCorrect*/
2632
+ 4)
2633
+ promptresult_changes.isResultCorrect = /*isResultCorrect*/
2634
+ ctx2[2];
2635
+ if (dirty & /*isResultCorrect*/
2636
+ 4)
2637
+ promptresult_changes.resultFeedbackTitle = /*isResultCorrect*/
2638
+ ctx2[2] ? "Well done!" : "Not quite, but you\u2019re close!";
2639
+ promptresult.$set(promptresult_changes);
2640
+ },
2729
2641
  i(local) {
2730
2642
  if (current)
2731
2643
  return;
@@ -2748,7 +2660,7 @@
2748
2660
  }
2749
2661
  };
2750
2662
  }
2751
- function create_else_block3(ctx) {
2663
+ function create_else_block2(ctx) {
2752
2664
  let errorsolid;
2753
2665
  let current;
2754
2666
  errorsolid = new ErrorSolid_default({});
@@ -2775,7 +2687,7 @@
2775
2687
  }
2776
2688
  };
2777
2689
  }
2778
- function create_if_block_14(ctx) {
2690
+ function create_if_block_13(ctx) {
2779
2691
  let successsolid;
2780
2692
  let current;
2781
2693
  successsolid = new SuccessSolid_default({});
@@ -2802,7 +2714,7 @@
2802
2714
  }
2803
2715
  };
2804
2716
  }
2805
- function create_fragment7(ctx) {
2717
+ function create_fragment6(ctx) {
2806
2718
  let promptbody;
2807
2719
  let t2;
2808
2720
  let if_block_anchor;
@@ -2811,17 +2723,20 @@
2811
2723
  props: {
2812
2724
  rubric: (
2813
2725
  /*rubric*/
2814
- ctx[2].text
2726
+ ctx[4].text
2815
2727
  ),
2816
2728
  prompt: (
2817
2729
  /*prompt*/
2818
- ctx[3]
2730
+ ctx[5]
2819
2731
  ),
2820
2732
  $$slots: { default: [create_default_slot2] },
2821
2733
  $$scope: { ctx }
2822
2734
  }
2823
2735
  });
2824
- let if_block = isFinished && create_if_block4(ctx);
2736
+ let if_block = (
2737
+ /*isFinished*/
2738
+ ctx[1] && create_if_block4(ctx)
2739
+ );
2825
2740
  return {
2826
2741
  c() {
2827
2742
  create_component(promptbody.$$.fragment);
@@ -2840,13 +2755,34 @@
2840
2755
  },
2841
2756
  p(ctx2, [dirty]) {
2842
2757
  const promptbody_changes = {};
2843
- if (dirty & /*$$scope, isDataSaving, typeinAnswer*/
2844
- 16777219) {
2758
+ if (dirty & /*$$scope, isFinished, isResultCorrect, isDataSaving, typeinAnswer*/
2759
+ 67108879) {
2845
2760
  promptbody_changes.$$scope = { dirty, ctx: ctx2 };
2846
2761
  }
2847
2762
  promptbody.$set(promptbody_changes);
2848
- if (isFinished)
2849
- if_block.p(ctx2, dirty);
2763
+ if (
2764
+ /*isFinished*/
2765
+ ctx2[1]
2766
+ ) {
2767
+ if (if_block) {
2768
+ if_block.p(ctx2, dirty);
2769
+ if (dirty & /*isFinished*/
2770
+ 2) {
2771
+ transition_in(if_block, 1);
2772
+ }
2773
+ } else {
2774
+ if_block = create_if_block4(ctx2);
2775
+ if_block.c();
2776
+ transition_in(if_block, 1);
2777
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
2778
+ }
2779
+ } else if (if_block) {
2780
+ group_outros();
2781
+ transition_out(if_block, 1, 1, () => {
2782
+ if_block = null;
2783
+ });
2784
+ check_outros();
2785
+ }
2850
2786
  },
2851
2787
  i(local) {
2852
2788
  if (current)
@@ -2873,11 +2809,11 @@
2873
2809
  }
2874
2810
  var idLabel = "answerText";
2875
2811
  var placeholder = "Type your answer here";
2876
- var isFinished = false;
2877
- var isResultCorrect = false;
2878
2812
  function instance4($$self, $$props, $$invalidate) {
2879
2813
  let { sessionData } = $$props;
2880
2814
  let { isDataSaving } = $$props;
2815
+ let { isFinished = false } = $$props;
2816
+ let { isResultCorrect = false } = $$props;
2881
2817
  const dispatch = createEventDispatcher();
2882
2818
  let typeinAnswer;
2883
2819
  let latestAnswer = "";
@@ -2913,13 +2849,13 @@
2913
2849
  };
2914
2850
  function input_input_handler() {
2915
2851
  typeinAnswer = this.value;
2916
- $$invalidate(1, typeinAnswer);
2852
+ $$invalidate(3, typeinAnswer);
2917
2853
  }
2918
2854
  const focusout_handler = () => saveAnswer();
2919
2855
  const keydown_handler = (event) => saveOnEnter(event);
2920
2856
  function textarea_input_handler() {
2921
2857
  typeinAnswer = this.value;
2922
- $$invalidate(1, typeinAnswer);
2858
+ $$invalidate(3, typeinAnswer);
2923
2859
  }
2924
2860
  const mousedown_handler = () => handleClick();
2925
2861
  const touchstart_handler = () => handleClick();
@@ -2928,12 +2864,18 @@
2928
2864
  const keydown_handler_1 = (event) => saveOnEnter(event);
2929
2865
  $$self.$$set = ($$props2) => {
2930
2866
  if ("sessionData" in $$props2)
2931
- $$invalidate(9, sessionData = $$props2.sessionData);
2867
+ $$invalidate(11, sessionData = $$props2.sessionData);
2932
2868
  if ("isDataSaving" in $$props2)
2933
2869
  $$invalidate(0, isDataSaving = $$props2.isDataSaving);
2870
+ if ("isFinished" in $$props2)
2871
+ $$invalidate(1, isFinished = $$props2.isFinished);
2872
+ if ("isResultCorrect" in $$props2)
2873
+ $$invalidate(2, isResultCorrect = $$props2.isResultCorrect);
2934
2874
  };
2935
2875
  return [
2936
2876
  isDataSaving,
2877
+ isFinished,
2878
+ isResultCorrect,
2937
2879
  typeinAnswer,
2938
2880
  rubric,
2939
2881
  prompt,
@@ -2957,10 +2899,15 @@
2957
2899
  var PromptTypeIn = class extends SvelteComponent {
2958
2900
  constructor(options) {
2959
2901
  super();
2960
- init(this, options, instance4, create_fragment7, safe_not_equal, { sessionData: 9, isDataSaving: 0 });
2902
+ init(this, options, instance4, create_fragment6, safe_not_equal, {
2903
+ sessionData: 11,
2904
+ isDataSaving: 0,
2905
+ isFinished: 1,
2906
+ isResultCorrect: 2
2907
+ });
2961
2908
  }
2962
2909
  get sessionData() {
2963
- return this.$$.ctx[9];
2910
+ return this.$$.ctx[11];
2964
2911
  }
2965
2912
  set sessionData(sessionData) {
2966
2913
  this.$$set({ sessionData });
@@ -2973,12 +2920,26 @@
2973
2920
  this.$$set({ isDataSaving });
2974
2921
  flush();
2975
2922
  }
2923
+ get isFinished() {
2924
+ return this.$$.ctx[1];
2925
+ }
2926
+ set isFinished(isFinished) {
2927
+ this.$$set({ isFinished });
2928
+ flush();
2929
+ }
2930
+ get isResultCorrect() {
2931
+ return this.$$.ctx[2];
2932
+ }
2933
+ set isResultCorrect(isResultCorrect) {
2934
+ this.$$set({ isResultCorrect });
2935
+ flush();
2936
+ }
2976
2937
  };
2977
- customElements.define("prompt-typein", create_custom_element(PromptTypeIn, { "sessionData": {}, "isDataSaving": {} }, [], [], true));
2938
+ customElements.define("prompt-typein", create_custom_element(PromptTypeIn, { "sessionData": {}, "isDataSaving": {}, "isFinished": { "type": "Boolean" }, "isResultCorrect": { "type": "Boolean" } }, [], [], true));
2978
2939
  var PromptTypeIn_default = PromptTypeIn;
2979
2940
 
2980
2941
  // src/lib/components/prompt/skeleton/PromptSkeleton.svelte
2981
- function create_fragment8(ctx) {
2942
+ function create_fragment7(ctx) {
2982
2943
  let div3;
2983
2944
  return {
2984
2945
  c() {
@@ -3001,14 +2962,14 @@
3001
2962
  var PromptSkeleton = class extends SvelteComponent {
3002
2963
  constructor(options) {
3003
2964
  super();
3004
- init(this, options, null, create_fragment8, safe_not_equal, {});
2965
+ init(this, options, null, create_fragment7, safe_not_equal, {});
3005
2966
  }
3006
2967
  };
3007
2968
  customElements.define("prompt-skeleton", create_custom_element(PromptSkeleton, {}, [], [], true));
3008
2969
  var PromptSkeleton_default = PromptSkeleton;
3009
2970
 
3010
2971
  // src/lib/components/common/InvalidBanner.svelte
3011
- function create_fragment9(ctx) {
2972
+ function create_fragment8(ctx) {
3012
2973
  let p;
3013
2974
  let t2;
3014
2975
  return {
@@ -3053,7 +3014,7 @@
3053
3014
  var InvalidBanner = class extends SvelteComponent {
3054
3015
  constructor(options) {
3055
3016
  super();
3056
- init(this, options, instance5, create_fragment9, safe_not_equal, { bannerLabel: 0 });
3017
+ init(this, options, instance5, create_fragment8, safe_not_equal, { bannerLabel: 0 });
3057
3018
  }
3058
3019
  get bannerLabel() {
3059
3020
  return this.$$.ctx[0];
@@ -3068,7 +3029,7 @@
3068
3029
 
3069
3030
  // src/lib/components/prompt/PromptBuilder.svelte
3070
3031
  function add_css(target) {
3071
- append_styles(target, "svelte-14zs2vw", '*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:Mulish, sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*{font-family:Mulish, sans-serif}input::-moz-selection,textarea::-moz-selection{background-color:hsla(0, 0%, 85%, 0.4)}input::selection,textarea::selection{background-color:hsla(0, 0%, 85%, 0.4)}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.p2{font-size:0.875rem;font-weight:600;line-height:1.25rem;line-height:1.5}.item-heading{--tw-text-opacity:1;color:rgb(8 38 99/var(--tw-text-opacity));font-size:1.25rem;letter-spacing:-0.025em;line-height:1.5rem}.divider{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(107 121 121/var(--tw-border-opacity))}@keyframes svelte-14zs2vw-pulse{{opacity:0.5}}.animate-skeleton{--tw-bg-opacity:1;animation:svelte-14zs2vw-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.btn-mcq-option:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));outline:2px solid transparent;outline-offset:2px;transition-duration:50ms}.btn-mcq-option{--tw-text-opacity:1;--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(247 250 250/var(--tw-bg-opacity));border-color:rgb(113 115 119/var(--tw-border-opacity));border-radius:0.5rem;border-width:1px;color:rgb(33 37 41/var(--tw-text-opacity));display:flex;font-size:1rem;justify-content:space-between;line-height:1.5rem;margin-bottom:1rem;min-height:48px;padding:0.5rem 0.75rem 0.5rem 0.5rem;width:100%}.btn-mcq-option:active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity));border-color:rgb(8 38 99/var(--tw-border-opacity));border-width:2px}@media(hover: hover) and (pointer: fine){.btn-mcq-option:hover{--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity))}}.btn-mcq-option>span>.choice{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(113 115 119/var(--tw-border-opacity));border-radius:1rem;border-width:1px;color:rgb(93 99 107/var(--tw-text-opacity));display:flex;font-size:1rem;font-weight:700;height:2rem;justify-content:center;letter-spacing:0.05em;line-height:1rem;margin-right:1rem;padding:0.5rem;width:2rem}.btn-mcq-option.selected{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(222 222 255/var(--tw-bg-opacity))}.btn-mcq-option.selected,.btn-mcq-option.selected>span>.choice{border-color:rgb(8 38 99/var(--tw-border-opacity));border-width:2px}.btn-mcq-option.selected>span>.choice{--tw-border-opacity:1}.btn-mcq-option.selected.correct{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(241 254 241/var(--tw-bg-opacity));border-color:rgb(0 102 5/var(--tw-border-opacity));border-width:1px}.btn-mcq-option.selected.incorrect{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(253 243 247/var(--tw-bg-opacity));border-color:rgb(217 12 85/var(--tw-border-opacity));border-width:1px}.btn-mcq-option.selected.correct>span>.choice,.btn-mcq-option.selected.incorrect>span>.choice{--tw-border-opacity:1;border-color:rgb(113 115 119/var(--tw-border-opacity));border-width:1px}.typein-textbox:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));outline:2px solid transparent;outline-offset:2px;transition-duration:50ms}.typein-textbox{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(93 99 107/var(--tw-border-opacity));border-radius:0.5rem;border-width:1px;color:rgb(33 37 41/var(--tw-text-opacity));font-size:1rem;line-height:1.5rem;padding:0.75rem 1rem;width:100%}.typein-textbox::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(93 99 107/var(--tw-placeholder-opacity))}.typein-textbox::placeholder{--tw-placeholder-opacity:1;color:rgb(93 99 107/var(--tw-placeholder-opacity))}.typein-textbox:focus{--tw-border-opacity:1;border-color:rgb(84 101 251/var(--tw-border-opacity));border-width:2px}@media(hover: hover) and (pointer: fine){.typein-textbox:hover{--tw-border-opacity:1;border-color:rgb(84 101 251/var(--tw-border-opacity));border-width:2px;outline:2px solid transparent;outline-offset:2px}}.typein-textbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0)) !important}@media(hover: hover) and (pointer: fine){.typein-textbox:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0, 0, 0, 0));transition-duration:50ms}}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.z-50{z-index:50}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.mb-1{margin-bottom:0.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:0.5rem}.mr-2{margin-right:0.5rem}.mt-0{margin-top:0}.mt-0\\.5{margin-top:0.125rem}.mt-2{margin-top:0.5rem}.block{display:block}.flex{display:flex}.h-52{height:13rem}.h-6{height:1.5rem}.w-full{width:100%}.grow{flex-grow:1}.items-start{align-items:flex-start}.items-center{align-items:center}.overflow-hidden{overflow:hidden}.rounded{border-radius:0.25rem}.border-2{border-width:2px}.border-l-\\[6px\\]{border-left-width:6px}.border-green-800{--tw-border-opacity:1;border-color:rgb(0 102 5/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-red-800{--tw-border-opacity:1;border-color:rgb(217 12 85/var(--tw-border-opacity))}.bg-green-300{--tw-bg-opacity:1;background-color:rgb(241 254 241/var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-red-300{--tw-bg-opacity:1;background-color:rgb(253 243 247/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-0{padding:0}.p-0\\.5{padding:0.125rem}.p-2{padding:0.5rem}.p-4{padding:1rem}.text-left{text-align:left}.text-base{font-size:1rem;line-height:1.5rem}.font-semibold{font-weight:600}.text-charcoal{--tw-text-opacity:1;color:rgb(33 37 41/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(0 102 5/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(217 12 85/var(--tw-text-opacity))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.group:active .group-active\\:border-2{border-width:2px}.group:active .group-active\\:border-blue-1000{--tw-border-opacity:1;border-color:rgb(8 38 99/var(--tw-border-opacity))}.group:active .group-active\\:p-\\[7px\\]{padding:7px}@media(min-width: 732px){.md\\:mb-4{margin-bottom:1rem}}');
3032
+ append_styles(target, "svelte-qoakla", '*,: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-qoakla-pulse{{opacity:0.5}}.animate-skeleton{--tw-bg-opacity:1;animation:svelte-qoakla-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-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}}');
3072
3033
  }
3073
3034
  function create_else_block_12(ctx) {
3074
3035
  let invalidbanner;
@@ -3098,12 +3059,12 @@
3098
3059
  }
3099
3060
  };
3100
3061
  }
3101
- function create_if_block_15(ctx) {
3062
+ function create_if_block_14(ctx) {
3102
3063
  let current_block_type_index;
3103
3064
  let if_block;
3104
3065
  let if_block_anchor;
3105
3066
  let current;
3106
- const if_block_creators = [create_if_block_23, create_if_block_32, create_else_block4];
3067
+ const if_block_creators = [create_if_block_23, create_if_block_32, create_else_block3];
3107
3068
  const if_blocks = [];
3108
3069
  function select_block_type_1(ctx2, dirty) {
3109
3070
  if (
@@ -3198,7 +3159,7 @@
3198
3159
  }
3199
3160
  };
3200
3161
  }
3201
- function create_else_block4(ctx) {
3162
+ function create_else_block3(ctx) {
3202
3163
  let invalidbanner;
3203
3164
  let current;
3204
3165
  invalidbanner = new InvalidBanner_default({ props: { bannerLabel } });
@@ -3238,6 +3199,14 @@
3238
3199
  isDataSaving: (
3239
3200
  /*isDataSaving*/
3240
3201
  ctx[2]
3202
+ ),
3203
+ isFinished: (
3204
+ /*isFinished*/
3205
+ ctx[4]
3206
+ ),
3207
+ isResultCorrect: (
3208
+ /*isResultCorrect*/
3209
+ ctx[5]
3241
3210
  )
3242
3211
  }
3243
3212
  });
@@ -3264,6 +3233,14 @@
3264
3233
  4)
3265
3234
  prompttypein_changes.isDataSaving = /*isDataSaving*/
3266
3235
  ctx2[2];
3236
+ if (dirty & /*isFinished*/
3237
+ 16)
3238
+ prompttypein_changes.isFinished = /*isFinished*/
3239
+ ctx2[4];
3240
+ if (dirty & /*isResultCorrect*/
3241
+ 32)
3242
+ prompttypein_changes.isResultCorrect = /*isResultCorrect*/
3243
+ ctx2[5];
3267
3244
  prompttypein.$set(prompttypein_changes);
3268
3245
  },
3269
3246
  i(local) {
@@ -3352,12 +3329,12 @@
3352
3329
  }
3353
3330
  };
3354
3331
  }
3355
- function create_fragment10(ctx) {
3332
+ function create_fragment9(ctx) {
3356
3333
  let current_block_type_index;
3357
3334
  let if_block;
3358
3335
  let if_block_anchor;
3359
3336
  let current;
3360
- const if_block_creators = [create_if_block5, create_if_block_15, create_else_block_12];
3337
+ const if_block_creators = [create_if_block5, create_if_block_14, create_else_block_12];
3361
3338
  const if_blocks = [];
3362
3339
  function select_block_type(ctx2, dirty) {
3363
3340
  if (
@@ -3426,38 +3403,42 @@
3426
3403
  }
3427
3404
  var bannerLabel = "Invalid session id.";
3428
3405
  function instance6($$self, $$props, $$invalidate) {
3429
- const { "session-id": sessionId } = $$props;
3406
+ const { "session-id": sessionId, "preview-mode": previewMode, "item-id": itemId } = $$props;
3407
+ const isPreviewMode = previewMode === "true" && itemId;
3430
3408
  useSetupAPI();
3431
3409
  let sessionData;
3432
3410
  let isDataFetching = true;
3433
3411
  let isDataSaving = false;
3434
3412
  let interactionType = null;
3435
- let isFinished2 = false;
3413
+ let isFinished = false;
3436
3414
  let isLocked = false;
3437
- let isResultCorrect2 = false;
3415
+ let isResultCorrect = false;
3438
3416
  const skipUserValidationStr = get_store_value(skipUserValidation) ? "?skip_user_validation=true" : "";
3439
3417
  const getSessionData = async (sessionId2) => {
3440
3418
  try {
3441
3419
  const { data } = await useGet(`sessions/${sessionId2}${skipUserValidationStr}`);
3442
- const { item_id: itemId, metadata, is_finished: isSessionFinished, is_locked: isSessionLocked } = data;
3420
+ const { item_id: itemId2, metadata, is_finished: isSessionFinished, is_locked: isSessionLocked } = data;
3443
3421
  isLocked = isSessionLocked;
3444
- $$invalidate(4, isFinished2 = isSessionFinished);
3445
- if (itemId) {
3446
- await getItemData(itemId, metadata);
3422
+ $$invalidate(4, isFinished = isSessionFinished);
3423
+ if (itemId2) {
3424
+ await getItemData(itemId2, metadata);
3447
3425
  }
3448
3426
  } catch (error) {
3449
3427
  $$invalidate(1, isDataFetching = false);
3450
3428
  }
3451
3429
  };
3452
- const getItemData = async (itemId, metadata) => {
3430
+ const getItemData = async (itemId2, metadata) => {
3453
3431
  try {
3454
- const includeAnswer = isFinished2 && isLocked ? "?include=[correct_answer]" : "";
3455
- const { data } = await useGet(`items/${itemId}${includeAnswer}`);
3432
+ const includeAnswer = isFinished && isLocked ? "?include=[correct_answer]" : "";
3433
+ const { data } = await useGet(`items/${itemId2}${includeAnswer}`);
3456
3434
  $$invalidate(3, interactionType = getInteractionType(data));
3457
3435
  $$invalidate(0, sessionData = { ...data, metadata });
3458
- if (isFinished2 && isLocked) {
3436
+ if (isFinished && isLocked && !isPreviewMode) {
3459
3437
  await getSessionScore();
3460
3438
  }
3439
+ if (isPreviewMode) {
3440
+ setPreviewData(data);
3441
+ }
3461
3442
  } catch (error) {
3462
3443
  } finally {
3463
3444
  $$invalidate(1, isDataFetching = false);
@@ -3485,15 +3466,44 @@
3485
3466
  correctAnswerId: metadata.correctAnswerId[0]
3486
3467
  };
3487
3468
  $$invalidate(0, sessionData = { ...sessionData, scoringMetadata });
3488
- $$invalidate(5, isResultCorrect2 = scoring.score_earned);
3469
+ $$invalidate(5, isResultCorrect = scoring.score_earned);
3489
3470
  }
3490
3471
  } catch (error) {
3491
3472
  } finally {
3492
3473
  $$invalidate(1, isDataFetching = false);
3493
3474
  }
3494
3475
  };
3476
+ const getPreviewData = async (itemId2) => {
3477
+ await getItemData(itemId2, null);
3478
+ };
3479
+ const setPreviewData = (data) => {
3480
+ switch (interactionType) {
3481
+ case INTERACTION_TYPE_MCQ:
3482
+ const { options } = data.interaction;
3483
+ const answerId = Object.values(options).filter((option) => option.correct_choice === true).map((option) => option.id);
3484
+ const scoringMetadata = {
3485
+ hasAnswer: true,
3486
+ answerId: answerId[0],
3487
+ correctAnswerId: answerId[0]
3488
+ };
3489
+ $$invalidate(0, sessionData = { ...sessionData, scoringMetadata });
3490
+ case INTERACTION_TYPE_TYPEIN:
3491
+ default:
3492
+ const { correct_answer: correctAnswer, typein_type: typeinType } = data.interaction;
3493
+ const metadata = {
3494
+ interactions: {
3495
+ events: [
3496
+ {
3497
+ answer: typeinType === TYPEIN_TYPE_SHORT ? correctAnswer[0] : correctAnswer[0].answer[0]
3498
+ }
3499
+ ]
3500
+ }
3501
+ };
3502
+ $$invalidate(0, sessionData = { ...sessionData, metadata });
3503
+ }
3504
+ };
3495
3505
  const saveEvent = async ({ detail }) => {
3496
- if (isLocked || isFinished2)
3506
+ if (isLocked || isFinished)
3497
3507
  return;
3498
3508
  try {
3499
3509
  $$invalidate(2, isDataSaving = true);
@@ -3504,11 +3514,17 @@
3504
3514
  $$invalidate(2, isDataSaving = false);
3505
3515
  }
3506
3516
  };
3507
- if (sessionId) {
3517
+ if (isPreviewMode) {
3518
+ isFinished = true;
3519
+ isLocked = true;
3520
+ isResultCorrect = true;
3521
+ getPreviewData(itemId);
3522
+ }
3523
+ if (sessionId && !isPreviewMode) {
3508
3524
  getSessionData(sessionId);
3509
3525
  }
3510
3526
  $$self.$$set = ($$new_props) => {
3511
- $$invalidate(14, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
3527
+ $$invalidate(19, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
3512
3528
  };
3513
3529
  $$props = exclude_internal_props($$props);
3514
3530
  return [
@@ -3516,15 +3532,15 @@
3516
3532
  isDataFetching,
3517
3533
  isDataSaving,
3518
3534
  interactionType,
3519
- isFinished2,
3520
- isResultCorrect2,
3535
+ isFinished,
3536
+ isResultCorrect,
3521
3537
  saveEvent
3522
3538
  ];
3523
3539
  }
3524
3540
  var PromptBuilder = class extends SvelteComponent {
3525
3541
  constructor(options) {
3526
3542
  super();
3527
- init(this, options, instance6, create_fragment10, safe_not_equal, {}, add_css);
3543
+ init(this, options, instance6, create_fragment9, safe_not_equal, {}, add_css);
3528
3544
  }
3529
3545
  };
3530
3546
  customElements.define("prompt-builder", create_custom_element(PromptBuilder, {}, [], [], true));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eat-js-sdk",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "Authoring tool frontend SDK",
5
5
  "contributors": [
6
6
  {