eat-js-sdk 0.0.7 → 0.0.8

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.
Files changed (2) hide show
  1. package/dist/eat-prompt-builder.mjs +1070 -183
  2. package/package.json +27 -24
@@ -44,6 +44,50 @@
44
44
  subscribe(store, (_) => value = _)();
45
45
  return value;
46
46
  }
47
+ function create_slot(definition, ctx, $$scope, fn) {
48
+ if (definition) {
49
+ const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
50
+ return definition[0](slot_ctx);
51
+ }
52
+ }
53
+ function get_slot_context(definition, ctx, $$scope, fn) {
54
+ return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;
55
+ }
56
+ function get_slot_changes(definition, $$scope, dirty, fn) {
57
+ if (definition[2] && fn) {
58
+ const lets = definition[2](fn(dirty));
59
+ if ($$scope.dirty === void 0) {
60
+ return lets;
61
+ }
62
+ if (typeof lets === "object") {
63
+ const merged = [];
64
+ const len = Math.max($$scope.dirty.length, lets.length);
65
+ for (let i = 0; i < len; i += 1) {
66
+ merged[i] = $$scope.dirty[i] | lets[i];
67
+ }
68
+ return merged;
69
+ }
70
+ return $$scope.dirty | lets;
71
+ }
72
+ return $$scope.dirty;
73
+ }
74
+ function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {
75
+ if (slot_changes) {
76
+ const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
77
+ slot.p(slot_context, slot_changes);
78
+ }
79
+ }
80
+ function get_all_dirty_from_scope($$scope) {
81
+ if ($$scope.ctx.length > 32) {
82
+ const dirty = [];
83
+ const length = $$scope.ctx.length / 32;
84
+ for (let i = 0; i < length; i++) {
85
+ dirty[i] = -1;
86
+ }
87
+ return dirty;
88
+ }
89
+ return -1;
90
+ }
47
91
  function exclude_internal_props(props) {
48
92
  const result = {};
49
93
  for (const k in props)
@@ -51,6 +95,9 @@
51
95
  result[k] = props[k];
52
96
  return result;
53
97
  }
98
+ function action_destroyer(action_result) {
99
+ return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
100
+ }
54
101
 
55
102
  // node_modules/svelte/src/runtime/internal/globals.js
56
103
  var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : (
@@ -187,6 +234,16 @@
187
234
  function children(element2) {
188
235
  return Array.from(element2.childNodes);
189
236
  }
237
+ function set_data(text2, data) {
238
+ data = "" + data;
239
+ if (text2.data === data)
240
+ return;
241
+ text2.data = /** @type {string} */
242
+ data;
243
+ }
244
+ function set_input_value(input, value) {
245
+ input.value = value == null ? "" : value;
246
+ }
190
247
  function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
191
248
  return new CustomEvent(type, { detail, bubbles, cancelable });
192
249
  }
@@ -345,10 +402,10 @@
345
402
  set_current_component(component);
346
403
  update(component.$$);
347
404
  }
348
- } catch (e) {
405
+ } catch (e2) {
349
406
  dirty_components.length = 0;
350
407
  flushidx = 0;
351
- throw e;
408
+ throw e2;
352
409
  }
353
410
  set_current_component(null);
354
411
  dirty_components.length = 0;
@@ -505,7 +562,7 @@
505
562
  }
506
563
  component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
507
564
  }
508
- function init(component, options, instance3, create_fragment4, not_equal, props, append_styles2 = null, dirty = [-1]) {
565
+ function init(component, options, instance6, create_fragment7, not_equal, props, append_styles2 = null, dirty = [-1]) {
509
566
  const parent_component = current_component;
510
567
  set_current_component(component);
511
568
  const $$ = component.$$ = {
@@ -531,7 +588,7 @@
531
588
  };
532
589
  append_styles2 && append_styles2($$.root);
533
590
  let ready = false;
534
- $$.ctx = instance3 ? instance3(component, options.props || {}, (i, ret, ...rest) => {
591
+ $$.ctx = instance6 ? instance6(component, options.props || {}, (i, ret, ...rest) => {
535
592
  const value = rest.length ? rest[0] : ret;
536
593
  if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
537
594
  if (!$$.skip_bound && $$.bound[i])
@@ -544,7 +601,7 @@
544
601
  $$.update();
545
602
  ready = true;
546
603
  run_all($$.before_update);
547
- $$.fragment = create_fragment4 ? create_fragment4($$.ctx) : false;
604
+ $$.fragment = create_fragment7 ? create_fragment7($$.ctx) : false;
548
605
  if (options.target) {
549
606
  if (options.hydrate) {
550
607
  start_hydrating();
@@ -613,7 +670,7 @@
613
670
  async connectedCallback() {
614
671
  this.$$cn = true;
615
672
  if (!this.$$c) {
616
- let create_slot = function(name) {
673
+ let create_slot2 = function(name) {
617
674
  return () => {
618
675
  let node;
619
676
  const obj = {
@@ -647,7 +704,7 @@
647
704
  const existing_slots = get_custom_elements_slots(this);
648
705
  for (const name of this.$$s) {
649
706
  if (name in existing_slots) {
650
- $$slots[name] = [create_slot(name)];
707
+ $$slots[name] = [create_slot2(name)];
651
708
  }
652
709
  }
653
710
  for (const attribute of this.attributes) {
@@ -947,6 +1004,246 @@
947
1004
  return await response.json();
948
1005
  };
949
1006
 
1007
+ // src/lib/components/prompt/template/PromptBody.svelte
1008
+ function create_if_block_1(ctx) {
1009
+ let html_tag;
1010
+ let raw_value = `<${/*promptRubricHeaderElem*/
1011
+ ctx[2]} class="item-heading mb-2 md:mb-4">${/*rubric*/
1012
+ ctx[0]}</${/*promptRubricHeaderElem*/
1013
+ ctx[2]}>`;
1014
+ let html_anchor;
1015
+ return {
1016
+ c() {
1017
+ html_tag = new HtmlTag(false);
1018
+ html_anchor = empty();
1019
+ html_tag.a = html_anchor;
1020
+ },
1021
+ m(target, anchor) {
1022
+ html_tag.m(raw_value, target, anchor);
1023
+ insert(target, html_anchor, anchor);
1024
+ },
1025
+ p(ctx2, dirty) {
1026
+ if (dirty & /*rubric*/
1027
+ 1 && raw_value !== (raw_value = `<${/*promptRubricHeaderElem*/
1028
+ ctx2[2]} class="item-heading mb-2 md:mb-4">${/*rubric*/
1029
+ ctx2[0]}</${/*promptRubricHeaderElem*/
1030
+ ctx2[2]}>`))
1031
+ html_tag.p(raw_value);
1032
+ },
1033
+ d(detaching) {
1034
+ if (detaching) {
1035
+ detach(html_anchor);
1036
+ html_tag.d();
1037
+ }
1038
+ }
1039
+ };
1040
+ }
1041
+ function create_if_block(ctx) {
1042
+ let html_tag;
1043
+ let raw_value = `<${/*promptRubricHeaderElem*/
1044
+ ctx[2]} class="item-heading font-semibold">${/*prompt*/
1045
+ ctx[1]}</${/*promptRubricHeaderElem*/
1046
+ ctx[2]}>`;
1047
+ let html_anchor;
1048
+ return {
1049
+ c() {
1050
+ html_tag = new HtmlTag(false);
1051
+ html_anchor = empty();
1052
+ html_tag.a = html_anchor;
1053
+ },
1054
+ m(target, anchor) {
1055
+ html_tag.m(raw_value, target, anchor);
1056
+ insert(target, html_anchor, anchor);
1057
+ },
1058
+ p(ctx2, dirty) {
1059
+ if (dirty & /*prompt*/
1060
+ 2 && raw_value !== (raw_value = `<${/*promptRubricHeaderElem*/
1061
+ ctx2[2]} class="item-heading font-semibold">${/*prompt*/
1062
+ ctx2[1]}</${/*promptRubricHeaderElem*/
1063
+ ctx2[2]}>`))
1064
+ html_tag.p(raw_value);
1065
+ },
1066
+ d(detaching) {
1067
+ if (detaching) {
1068
+ detach(html_anchor);
1069
+ html_tag.d();
1070
+ }
1071
+ }
1072
+ };
1073
+ }
1074
+ function create_fragment(ctx) {
1075
+ let div1;
1076
+ let t0;
1077
+ let t1;
1078
+ let div0;
1079
+ let t2;
1080
+ let current;
1081
+ let if_block0 = (
1082
+ /*rubric*/
1083
+ ctx[0] && create_if_block_1(ctx)
1084
+ );
1085
+ let if_block1 = (
1086
+ /*prompt*/
1087
+ ctx[1] && create_if_block(ctx)
1088
+ );
1089
+ const default_slot_template = (
1090
+ /*#slots*/
1091
+ ctx[4].default
1092
+ );
1093
+ const default_slot = create_slot(
1094
+ default_slot_template,
1095
+ ctx,
1096
+ /*$$scope*/
1097
+ ctx[3],
1098
+ null
1099
+ );
1100
+ return {
1101
+ c() {
1102
+ div1 = element("div");
1103
+ if (if_block0)
1104
+ if_block0.c();
1105
+ t0 = space();
1106
+ if (if_block1)
1107
+ if_block1.c();
1108
+ t1 = space();
1109
+ div0 = element("div");
1110
+ t2 = space();
1111
+ if (default_slot)
1112
+ default_slot.c();
1113
+ attr(div0, "class", "divider my-6");
1114
+ attr(div1, "class", "bg-transparent");
1115
+ },
1116
+ m(target, anchor) {
1117
+ insert(target, div1, anchor);
1118
+ if (if_block0)
1119
+ if_block0.m(div1, null);
1120
+ append(div1, t0);
1121
+ if (if_block1)
1122
+ if_block1.m(div1, null);
1123
+ append(div1, t1);
1124
+ append(div1, div0);
1125
+ append(div1, t2);
1126
+ if (default_slot) {
1127
+ default_slot.m(div1, null);
1128
+ }
1129
+ current = true;
1130
+ },
1131
+ p(ctx2, [dirty]) {
1132
+ if (
1133
+ /*rubric*/
1134
+ ctx2[0]
1135
+ ) {
1136
+ if (if_block0) {
1137
+ if_block0.p(ctx2, dirty);
1138
+ } else {
1139
+ if_block0 = create_if_block_1(ctx2);
1140
+ if_block0.c();
1141
+ if_block0.m(div1, t0);
1142
+ }
1143
+ } else if (if_block0) {
1144
+ if_block0.d(1);
1145
+ if_block0 = null;
1146
+ }
1147
+ if (
1148
+ /*prompt*/
1149
+ ctx2[1]
1150
+ ) {
1151
+ if (if_block1) {
1152
+ if_block1.p(ctx2, dirty);
1153
+ } else {
1154
+ if_block1 = create_if_block(ctx2);
1155
+ if_block1.c();
1156
+ if_block1.m(div1, t1);
1157
+ }
1158
+ } else if (if_block1) {
1159
+ if_block1.d(1);
1160
+ if_block1 = null;
1161
+ }
1162
+ if (default_slot) {
1163
+ if (default_slot.p && (!current || dirty & /*$$scope*/
1164
+ 8)) {
1165
+ update_slot_base(
1166
+ default_slot,
1167
+ default_slot_template,
1168
+ ctx2,
1169
+ /*$$scope*/
1170
+ ctx2[3],
1171
+ !current ? get_all_dirty_from_scope(
1172
+ /*$$scope*/
1173
+ ctx2[3]
1174
+ ) : get_slot_changes(
1175
+ default_slot_template,
1176
+ /*$$scope*/
1177
+ ctx2[3],
1178
+ dirty,
1179
+ null
1180
+ ),
1181
+ null
1182
+ );
1183
+ }
1184
+ }
1185
+ },
1186
+ i(local) {
1187
+ if (current)
1188
+ return;
1189
+ transition_in(default_slot, local);
1190
+ current = true;
1191
+ },
1192
+ o(local) {
1193
+ transition_out(default_slot, local);
1194
+ current = false;
1195
+ },
1196
+ d(detaching) {
1197
+ if (detaching) {
1198
+ detach(div1);
1199
+ }
1200
+ if (if_block0)
1201
+ if_block0.d();
1202
+ if (if_block1)
1203
+ if_block1.d();
1204
+ if (default_slot)
1205
+ default_slot.d(detaching);
1206
+ }
1207
+ };
1208
+ }
1209
+ function instance($$self, $$props, $$invalidate) {
1210
+ let { $$slots: slots = {}, $$scope } = $$props;
1211
+ let { rubric } = $$props;
1212
+ let { prompt } = $$props;
1213
+ const promptRubricHeaderElem = get_store_value(promptRubricElem);
1214
+ $$self.$$set = ($$props2) => {
1215
+ if ("rubric" in $$props2)
1216
+ $$invalidate(0, rubric = $$props2.rubric);
1217
+ if ("prompt" in $$props2)
1218
+ $$invalidate(1, prompt = $$props2.prompt);
1219
+ if ("$$scope" in $$props2)
1220
+ $$invalidate(3, $$scope = $$props2.$$scope);
1221
+ };
1222
+ return [rubric, prompt, promptRubricHeaderElem, $$scope, slots];
1223
+ }
1224
+ var PromptBody = class extends SvelteComponent {
1225
+ constructor(options) {
1226
+ super();
1227
+ init(this, options, instance, create_fragment, safe_not_equal, { rubric: 0, prompt: 1 });
1228
+ }
1229
+ get rubric() {
1230
+ return this.$$.ctx[0];
1231
+ }
1232
+ set rubric(rubric) {
1233
+ this.$$set({ rubric });
1234
+ flush();
1235
+ }
1236
+ get prompt() {
1237
+ return this.$$.ctx[1];
1238
+ }
1239
+ set prompt(prompt) {
1240
+ this.$$set({ prompt });
1241
+ flush();
1242
+ }
1243
+ };
1244
+ customElements.define("prompt-body", create_custom_element(PromptBody, { "rubric": {}, "prompt": {} }, ["default"], [], true));
1245
+ var PromptBody_default = PromptBody;
1246
+
950
1247
  // src/lib/composables/useMCQ.ts
951
1248
  var useAlphabetEquivalent = (index) => {
952
1249
  const alphabetArr = [
@@ -984,42 +1281,16 @@
984
1281
  // src/lib/components/prompt/mcq/PromptMCQ.svelte
985
1282
  function get_each_context(ctx, list, i) {
986
1283
  const child_ctx = ctx.slice();
987
- child_ctx[12] = list[i][0];
988
- child_ctx[13] = list[i][1];
989
- child_ctx[15] = i;
1284
+ child_ctx[11] = list[i][0];
1285
+ child_ctx[12] = list[i][1];
1286
+ child_ctx[14] = i;
990
1287
  return child_ctx;
991
1288
  }
992
- function create_if_block_1(ctx) {
993
- let html_tag;
994
- let raw_value = `<${/*promptRubricHeaderElem*/
995
- ctx[5]} class="item-heading mb-2 md:mb-4">${/*rubric*/
996
- ctx[2].text}</${/*promptRubricHeaderElem*/
997
- ctx[5]}>`;
998
- let html_anchor;
999
- return {
1000
- c() {
1001
- html_tag = new HtmlTag(false);
1002
- html_anchor = empty();
1003
- html_tag.a = html_anchor;
1004
- },
1005
- m(target, anchor) {
1006
- html_tag.m(raw_value, target, anchor);
1007
- insert(target, html_anchor, anchor);
1008
- },
1009
- p: noop,
1010
- d(detaching) {
1011
- if (detaching) {
1012
- detach(html_anchor);
1013
- html_tag.d();
1014
- }
1015
- }
1016
- };
1017
- }
1018
- function create_if_block(ctx) {
1289
+ function create_if_block2(ctx) {
1019
1290
  let div1;
1020
1291
  let div0;
1021
1292
  let div0_class_value;
1022
- let t;
1293
+ let t2;
1023
1294
  let each_value = ensure_array_like(Object.entries(
1024
1295
  /*options*/
1025
1296
  ctx[4]
@@ -1032,7 +1303,7 @@
1032
1303
  c() {
1033
1304
  div1 = element("div");
1034
1305
  div0 = element("div");
1035
- t = space();
1306
+ t2 = space();
1036
1307
  for (let i = 0; i < each_blocks.length; i += 1) {
1037
1308
  each_blocks[i].c();
1038
1309
  }
@@ -1043,7 +1314,7 @@
1043
1314
  m(target, anchor) {
1044
1315
  insert(target, div1, anchor);
1045
1316
  append(div1, div0);
1046
- append(div1, t);
1317
+ append(div1, t2);
1047
1318
  for (let i = 0; i < each_blocks.length; i += 1) {
1048
1319
  if (each_blocks[i]) {
1049
1320
  each_blocks[i].m(div1, null);
@@ -1057,7 +1328,7 @@
1057
1328
  attr(div0, "class", div0_class_value);
1058
1329
  }
1059
1330
  if (dirty & /*selectedOption, Object, options, handleOptionClick*/
1060
- 82) {
1331
+ 50) {
1061
1332
  each_value = ensure_array_like(Object.entries(
1062
1333
  /*options*/
1063
1334
  ctx2[4]
@@ -1093,7 +1364,7 @@
1093
1364
  let t1;
1094
1365
  let t2_value = (
1095
1366
  /*option*/
1096
- ctx[13].answer + ""
1367
+ ctx[12].answer + ""
1097
1368
  );
1098
1369
  let t2;
1099
1370
  let t3;
@@ -1104,9 +1375,9 @@
1104
1375
  function click_handler() {
1105
1376
  return (
1106
1377
  /*click_handler*/
1107
- ctx[8](
1378
+ ctx[7](
1108
1379
  /*option*/
1109
- ctx[13]
1380
+ ctx[12]
1110
1381
  )
1111
1382
  );
1112
1383
  }
@@ -1116,7 +1387,7 @@
1116
1387
  span = element("span");
1117
1388
  span.textContent = `${useMCQ_default(
1118
1389
  /*index*/
1119
- ctx[15]
1390
+ ctx[14]
1120
1391
  )}`;
1121
1392
  t1 = space();
1122
1393
  t2 = text(t2_value);
@@ -1124,14 +1395,14 @@
1124
1395
  attr(span, "class", "choice group-active:border-2 group-active:border-blue-1000 group-active:p-[7px]");
1125
1396
  attr(button, "aria-label", button_aria_label_value = `${/*selectedOption*/
1126
1397
  ctx[1] === /*option*/
1127
- ctx[13].id ? "Selected option" : "Option"} ${useMCQ_default(
1398
+ ctx[12].id ? "Selected option" : "Option"} ${useMCQ_default(
1128
1399
  /*index*/
1129
- ctx[15]
1400
+ ctx[14]
1130
1401
  )}: ${/*option*/
1131
- ctx[13].answer}`);
1402
+ ctx[12].answer}`);
1132
1403
  attr(button, "class", button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
1133
1404
  (ctx[1] === /*option*/
1134
- ctx[13].id ? "selected" : ""));
1405
+ ctx[12].id ? "selected" : ""));
1135
1406
  },
1136
1407
  m(target, anchor) {
1137
1408
  insert(target, button, anchor);
@@ -1149,17 +1420,17 @@
1149
1420
  if (dirty & /*selectedOption*/
1150
1421
  2 && button_aria_label_value !== (button_aria_label_value = `${/*selectedOption*/
1151
1422
  ctx[1] === /*option*/
1152
- ctx[13].id ? "Selected option" : "Option"} ${useMCQ_default(
1423
+ ctx[12].id ? "Selected option" : "Option"} ${useMCQ_default(
1153
1424
  /*index*/
1154
- ctx[15]
1425
+ ctx[14]
1155
1426
  )}: ${/*option*/
1156
- ctx[13].answer}`)) {
1427
+ ctx[12].answer}`)) {
1157
1428
  attr(button, "aria-label", button_aria_label_value);
1158
1429
  }
1159
1430
  if (dirty & /*selectedOption*/
1160
1431
  2 && button_class_value !== (button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
1161
1432
  (ctx[1] === /*option*/
1162
- ctx[13].id ? "selected" : ""))) {
1433
+ ctx[12].id ? "selected" : ""))) {
1163
1434
  attr(button, "class", button_class_value);
1164
1435
  }
1165
1436
  },
@@ -1172,105 +1443,113 @@
1172
1443
  }
1173
1444
  };
1174
1445
  }
1175
- function create_fragment(ctx) {
1176
- let div1;
1177
- let t0;
1178
- let html_tag;
1179
- let raw_value = `<${/*promptRubricHeaderElem*/
1180
- ctx[5]} class="item-heading font-semibold">${/*prompt*/
1181
- ctx[3]}</${/*promptRubricHeaderElem*/
1182
- ctx[5]}>`;
1183
- let t1;
1184
- let div0;
1185
- let t2;
1186
- let if_block0 = (
1187
- /*rubric*/
1188
- ctx[2].text && create_if_block_1(ctx)
1189
- );
1190
- let if_block1 = (
1446
+ function create_default_slot(ctx) {
1447
+ let if_block_anchor;
1448
+ let if_block = (
1191
1449
  /*options*/
1192
- ctx[4] && create_if_block(ctx)
1450
+ ctx[4] && create_if_block2(ctx)
1193
1451
  );
1194
1452
  return {
1195
1453
  c() {
1196
- div1 = element("div");
1197
- if (if_block0)
1198
- if_block0.c();
1199
- t0 = space();
1200
- html_tag = new HtmlTag(false);
1201
- t1 = space();
1202
- div0 = element("div");
1203
- t2 = space();
1204
- if (if_block1)
1205
- if_block1.c();
1206
- html_tag.a = t1;
1207
- attr(div0, "class", "divider my-6");
1208
- attr(div1, "class", "bg-transparent");
1454
+ if (if_block)
1455
+ if_block.c();
1456
+ if_block_anchor = empty();
1209
1457
  },
1210
1458
  m(target, anchor) {
1211
- insert(target, div1, anchor);
1212
- if (if_block0)
1213
- if_block0.m(div1, null);
1214
- append(div1, t0);
1215
- html_tag.m(raw_value, div1);
1216
- append(div1, t1);
1217
- append(div1, div0);
1218
- append(div1, t2);
1219
- if (if_block1)
1220
- if_block1.m(div1, null);
1459
+ if (if_block)
1460
+ if_block.m(target, anchor);
1461
+ insert(target, if_block_anchor, anchor);
1221
1462
  },
1222
- p(ctx2, [dirty]) {
1223
- if (
1224
- /*rubric*/
1225
- ctx2[2].text
1226
- )
1227
- if_block0.p(ctx2, dirty);
1463
+ p(ctx2, dirty) {
1228
1464
  if (
1229
1465
  /*options*/
1230
1466
  ctx2[4]
1231
1467
  )
1232
- if_block1.p(ctx2, dirty);
1468
+ if_block.p(ctx2, dirty);
1233
1469
  },
1234
- i: noop,
1235
- o: noop,
1236
1470
  d(detaching) {
1237
1471
  if (detaching) {
1238
- detach(div1);
1472
+ detach(if_block_anchor);
1239
1473
  }
1240
- if (if_block0)
1241
- if_block0.d();
1242
- if (if_block1)
1243
- if_block1.d();
1474
+ if (if_block)
1475
+ if_block.d(detaching);
1244
1476
  }
1245
1477
  };
1246
1478
  }
1247
- function instance($$self, $$props, $$invalidate) {
1248
- let { sessionData } = $$props;
1249
- let { isDataSaving } = $$props;
1250
- const { rubric, interaction, metadata } = sessionData;
1251
- const { prompt, options } = interaction;
1252
- let selectedOption;
1253
- const dispatch = createEventDispatcher();
1254
- const promptRubricHeaderElem = get_store_value(promptRubricElem);
1255
- if (metadata) {
1256
- const { events } = metadata.interactions;
1257
- const currentOption = events.pop();
1258
- const { answer_id: answerChoiceId } = currentOption;
1259
- selectedOption = answerChoiceId;
1260
- }
1261
- const handleOptionClick = (optionId, option) => {
1262
- if (isDataSaving || optionId === selectedOption)
1263
- return;
1264
- $$invalidate(1, selectedOption = optionId);
1265
- dispatch("saveOption", {
1266
- answerChoiceId: optionId,
1267
- answerChoice: option
1268
- });
1269
- };
1270
- const click_handler = (option) => handleOptionClick(option.id, option.answer);
1271
- $$self.$$set = ($$props2) => {
1272
- if ("sessionData" in $$props2)
1273
- $$invalidate(7, sessionData = $$props2.sessionData);
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
+ current = true;
1503
+ },
1504
+ p(ctx2, [dirty]) {
1505
+ const promptbody_changes = {};
1506
+ if (dirty & /*$$scope, selectedOption, isDataSaving*/
1507
+ 32771) {
1508
+ promptbody_changes.$$scope = { dirty, ctx: ctx2 };
1509
+ }
1510
+ promptbody.$set(promptbody_changes);
1511
+ },
1512
+ i(local) {
1513
+ if (current)
1514
+ return;
1515
+ transition_in(promptbody.$$.fragment, local);
1516
+ current = true;
1517
+ },
1518
+ o(local) {
1519
+ transition_out(promptbody.$$.fragment, local);
1520
+ current = false;
1521
+ },
1522
+ d(detaching) {
1523
+ destroy_component(promptbody, detaching);
1524
+ }
1525
+ };
1526
+ }
1527
+ 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);
1550
+ $$self.$$set = ($$props2) => {
1551
+ if ("sessionData" in $$props2)
1552
+ $$invalidate(6, sessionData = $$props2.sessionData);
1274
1553
  if ("isDataSaving" in $$props2)
1275
1554
  $$invalidate(0, isDataSaving = $$props2.isDataSaving);
1276
1555
  };
@@ -1280,7 +1559,6 @@
1280
1559
  rubric,
1281
1560
  prompt,
1282
1561
  options,
1283
- promptRubricHeaderElem,
1284
1562
  handleOptionClick,
1285
1563
  sessionData,
1286
1564
  click_handler
@@ -1289,10 +1567,10 @@
1289
1567
  var PromptMCQ = class extends SvelteComponent {
1290
1568
  constructor(options) {
1291
1569
  super();
1292
- init(this, options, instance, create_fragment, safe_not_equal, { sessionData: 7, isDataSaving: 0 });
1570
+ init(this, options, instance2, create_fragment2, safe_not_equal, { sessionData: 6, isDataSaving: 0 });
1293
1571
  }
1294
1572
  get sessionData() {
1295
- return this.$$.ctx[7];
1573
+ return this.$$.ctx[6];
1296
1574
  }
1297
1575
  set sessionData(sessionData) {
1298
1576
  this.$$set({ sessionData });
@@ -1309,8 +1587,386 @@
1309
1587
  customElements.define("prompt-mcq", create_custom_element(PromptMCQ, { "sessionData": {}, "isDataSaving": {} }, [], [], true));
1310
1588
  var PromptMCQ_default = PromptMCQ;
1311
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;
1648
+
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
+ };
1657
+ };
1658
+ action.update = autosize_esm_default.update;
1659
+ action.destroy = autosize_esm_default.destroy;
1660
+ var svelte_autosize_default = action;
1661
+
1662
+ // src/lib/components/prompt/typein/PromptTypeIn.svelte
1663
+ function create_else_block(ctx) {
1664
+ let textarea;
1665
+ let autosize_action;
1666
+ let mounted;
1667
+ let dispose;
1668
+ return {
1669
+ c() {
1670
+ textarea = element("textarea");
1671
+ attr(textarea, "id", idLabel);
1672
+ attr(textarea, "placeholder", placeholder);
1673
+ attr(textarea, "rows", "3");
1674
+ attr(textarea, "class", "typein-textbox overflow-hidden");
1675
+ textarea.disabled = /*isDataSaving*/
1676
+ ctx[0];
1677
+ },
1678
+ m(target, anchor) {
1679
+ insert(target, textarea, anchor);
1680
+ set_input_value(
1681
+ textarea,
1682
+ /*typeinAnswer*/
1683
+ ctx[1]
1684
+ );
1685
+ if (!mounted) {
1686
+ dispose = [
1687
+ listen(
1688
+ textarea,
1689
+ "input",
1690
+ /*textarea_input_handler*/
1691
+ ctx[11]
1692
+ ),
1693
+ listen(
1694
+ textarea,
1695
+ "focusout",
1696
+ /*focusout_handler_1*/
1697
+ ctx[12]
1698
+ ),
1699
+ listen(
1700
+ textarea,
1701
+ "keydown",
1702
+ /*keydown_handler_1*/
1703
+ ctx[13]
1704
+ ),
1705
+ action_destroyer(autosize_action = svelte_autosize_default.call(null, textarea))
1706
+ ];
1707
+ mounted = true;
1708
+ }
1709
+ },
1710
+ p(ctx2, dirty) {
1711
+ if (dirty & /*isDataSaving*/
1712
+ 1) {
1713
+ textarea.disabled = /*isDataSaving*/
1714
+ ctx2[0];
1715
+ }
1716
+ if (dirty & /*typeinAnswer*/
1717
+ 2) {
1718
+ set_input_value(
1719
+ textarea,
1720
+ /*typeinAnswer*/
1721
+ ctx2[1]
1722
+ );
1723
+ }
1724
+ },
1725
+ d(detaching) {
1726
+ if (detaching) {
1727
+ detach(textarea);
1728
+ }
1729
+ mounted = false;
1730
+ run_all(dispose);
1731
+ }
1732
+ };
1733
+ }
1734
+ function create_if_block3(ctx) {
1735
+ let input;
1736
+ let mounted;
1737
+ let dispose;
1738
+ return {
1739
+ c() {
1740
+ input = element("input");
1741
+ attr(input, "type", "text");
1742
+ attr(input, "id", idLabel);
1743
+ attr(input, "placeholder", placeholder);
1744
+ attr(input, "class", "typein-textbox");
1745
+ input.disabled = /*isDataSaving*/
1746
+ ctx[0];
1747
+ },
1748
+ m(target, anchor) {
1749
+ insert(target, input, anchor);
1750
+ set_input_value(
1751
+ input,
1752
+ /*typeinAnswer*/
1753
+ ctx[1]
1754
+ );
1755
+ if (!mounted) {
1756
+ dispose = [
1757
+ listen(
1758
+ input,
1759
+ "input",
1760
+ /*input_input_handler*/
1761
+ ctx[8]
1762
+ ),
1763
+ listen(
1764
+ input,
1765
+ "focusout",
1766
+ /*focusout_handler*/
1767
+ ctx[9]
1768
+ ),
1769
+ listen(
1770
+ input,
1771
+ "keydown",
1772
+ /*keydown_handler*/
1773
+ ctx[10]
1774
+ )
1775
+ ];
1776
+ mounted = true;
1777
+ }
1778
+ },
1779
+ p(ctx2, dirty) {
1780
+ if (dirty & /*isDataSaving*/
1781
+ 1) {
1782
+ input.disabled = /*isDataSaving*/
1783
+ ctx2[0];
1784
+ }
1785
+ if (dirty & /*typeinAnswer*/
1786
+ 2 && input.value !== /*typeinAnswer*/
1787
+ ctx2[1]) {
1788
+ set_input_value(
1789
+ input,
1790
+ /*typeinAnswer*/
1791
+ ctx2[1]
1792
+ );
1793
+ }
1794
+ },
1795
+ d(detaching) {
1796
+ if (detaching) {
1797
+ detach(input);
1798
+ }
1799
+ mounted = false;
1800
+ run_all(dispose);
1801
+ }
1802
+ };
1803
+ }
1804
+ function create_default_slot2(ctx) {
1805
+ let if_block_anchor;
1806
+ function select_block_type(ctx2, dirty) {
1807
+ if (
1808
+ /*typeinType*/
1809
+ ctx2[4] === "Short-Text"
1810
+ )
1811
+ return create_if_block3;
1812
+ return create_else_block;
1813
+ }
1814
+ let current_block_type = select_block_type(ctx, -1);
1815
+ let if_block = current_block_type(ctx);
1816
+ return {
1817
+ c() {
1818
+ if_block.c();
1819
+ if_block_anchor = empty();
1820
+ },
1821
+ m(target, anchor) {
1822
+ if_block.m(target, anchor);
1823
+ insert(target, if_block_anchor, anchor);
1824
+ },
1825
+ p(ctx2, dirty) {
1826
+ if_block.p(ctx2, dirty);
1827
+ },
1828
+ d(detaching) {
1829
+ if (detaching) {
1830
+ detach(if_block_anchor);
1831
+ }
1832
+ if_block.d(detaching);
1833
+ }
1834
+ };
1835
+ }
1836
+ function create_fragment3(ctx) {
1837
+ let promptbody;
1838
+ let current;
1839
+ promptbody = new PromptBody_default({
1840
+ props: {
1841
+ rubric: (
1842
+ /*rubric*/
1843
+ ctx[2].text
1844
+ ),
1845
+ prompt: (
1846
+ /*prompt*/
1847
+ ctx[3]
1848
+ ),
1849
+ $$slots: { default: [create_default_slot2] },
1850
+ $$scope: { ctx }
1851
+ }
1852
+ });
1853
+ return {
1854
+ c() {
1855
+ create_component(promptbody.$$.fragment);
1856
+ },
1857
+ m(target, anchor) {
1858
+ mount_component(promptbody, target, anchor);
1859
+ current = true;
1860
+ },
1861
+ p(ctx2, [dirty]) {
1862
+ const promptbody_changes = {};
1863
+ if (dirty & /*$$scope, isDataSaving, typeinAnswer*/
1864
+ 262147) {
1865
+ promptbody_changes.$$scope = { dirty, ctx: ctx2 };
1866
+ }
1867
+ promptbody.$set(promptbody_changes);
1868
+ },
1869
+ i(local) {
1870
+ if (current)
1871
+ return;
1872
+ transition_in(promptbody.$$.fragment, local);
1873
+ current = true;
1874
+ },
1875
+ o(local) {
1876
+ transition_out(promptbody.$$.fragment, local);
1877
+ current = false;
1878
+ },
1879
+ d(detaching) {
1880
+ destroy_component(promptbody, detaching);
1881
+ }
1882
+ };
1883
+ }
1884
+ var idLabel = "answerText";
1885
+ var placeholder = "Type your answer here";
1886
+ function instance3($$self, $$props, $$invalidate) {
1887
+ let { sessionData } = $$props;
1888
+ let { isDataSaving } = $$props;
1889
+ const dispatch = createEventDispatcher();
1890
+ let typeinAnswer;
1891
+ let latestAnswer = "";
1892
+ const { rubric, interaction, metadata } = sessionData;
1893
+ const { prompt, typein_type: typeinType } = interaction;
1894
+ if (metadata) {
1895
+ const events = metadata.interactions.events.pop();
1896
+ latestAnswer = typeinAnswer = events.answer;
1897
+ }
1898
+ const saveAnswer = () => {
1899
+ if (isDataSaving || typeinAnswer === latestAnswer || !typeinAnswer && !latestAnswer)
1900
+ return;
1901
+ latestAnswer = typeinAnswer;
1902
+ dispatch("saveAnswer", { answer: typeinAnswer || "" });
1903
+ };
1904
+ const saveOnEnter = (event) => {
1905
+ if (event.key === "Enter") {
1906
+ event.preventDefault();
1907
+ saveAnswer();
1908
+ }
1909
+ };
1910
+ function input_input_handler() {
1911
+ typeinAnswer = this.value;
1912
+ $$invalidate(1, typeinAnswer);
1913
+ }
1914
+ const focusout_handler = () => saveAnswer();
1915
+ const keydown_handler = (event) => saveOnEnter(event);
1916
+ function textarea_input_handler() {
1917
+ typeinAnswer = this.value;
1918
+ $$invalidate(1, typeinAnswer);
1919
+ }
1920
+ const focusout_handler_1 = () => saveAnswer();
1921
+ const keydown_handler_1 = (event) => saveOnEnter(event);
1922
+ $$self.$$set = ($$props2) => {
1923
+ if ("sessionData" in $$props2)
1924
+ $$invalidate(7, sessionData = $$props2.sessionData);
1925
+ if ("isDataSaving" in $$props2)
1926
+ $$invalidate(0, isDataSaving = $$props2.isDataSaving);
1927
+ };
1928
+ return [
1929
+ isDataSaving,
1930
+ typeinAnswer,
1931
+ rubric,
1932
+ prompt,
1933
+ typeinType,
1934
+ saveAnswer,
1935
+ saveOnEnter,
1936
+ sessionData,
1937
+ input_input_handler,
1938
+ focusout_handler,
1939
+ keydown_handler,
1940
+ textarea_input_handler,
1941
+ focusout_handler_1,
1942
+ keydown_handler_1
1943
+ ];
1944
+ }
1945
+ var PromptTypeIn = class extends SvelteComponent {
1946
+ constructor(options) {
1947
+ super();
1948
+ init(this, options, instance3, create_fragment3, safe_not_equal, { sessionData: 7, isDataSaving: 0 });
1949
+ }
1950
+ get sessionData() {
1951
+ return this.$$.ctx[7];
1952
+ }
1953
+ set sessionData(sessionData) {
1954
+ this.$$set({ sessionData });
1955
+ flush();
1956
+ }
1957
+ get isDataSaving() {
1958
+ return this.$$.ctx[0];
1959
+ }
1960
+ set isDataSaving(isDataSaving) {
1961
+ this.$$set({ isDataSaving });
1962
+ flush();
1963
+ }
1964
+ };
1965
+ customElements.define("prompt-typein", create_custom_element(PromptTypeIn, { "sessionData": {}, "isDataSaving": {} }, [], [], true));
1966
+ var PromptTypeIn_default = PromptTypeIn;
1967
+
1312
1968
  // src/lib/components/prompt/skeleton/PromptSkeleton.svelte
1313
- function create_fragment2(ctx) {
1969
+ function create_fragment4(ctx) {
1314
1970
  let div3;
1315
1971
  return {
1316
1972
  c() {
@@ -1333,28 +1989,38 @@
1333
1989
  var PromptSkeleton = class extends SvelteComponent {
1334
1990
  constructor(options) {
1335
1991
  super();
1336
- init(this, options, null, create_fragment2, safe_not_equal, {});
1992
+ init(this, options, null, create_fragment4, safe_not_equal, {});
1337
1993
  }
1338
1994
  };
1339
1995
  customElements.define("prompt-skeleton", create_custom_element(PromptSkeleton, {}, [], [], true));
1340
1996
  var PromptSkeleton_default = PromptSkeleton;
1341
1997
 
1342
- // src/lib/components/prompt/PromptBuilder.svelte
1343
- function add_css(target) {
1344
- append_styles(target, "svelte-1i5tmfz", '*,: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}*,: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: }.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-1i5tmfz-pulse{50%{opacity:0.5}}.animate-skeleton{--tw-bg-opacity:1;animation:svelte-1i5tmfz-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}.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-12{margin-bottom:3rem}.mb-2{margin-bottom:0.5rem}.h-52{height:13rem}.h-6{height:1.5rem}.w-full{width:100%}.rounded{border-radius:0.25rem}.border-2{border-width:2px}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-2{padding:0.5rem}.text-left{text-align:left}.font-semibold{font-weight:600}.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}}');
1345
- }
1346
- function create_else_block(ctx) {
1998
+ // src/lib/components/common/InvalidBanner.svelte
1999
+ function create_fragment5(ctx) {
1347
2000
  let p;
2001
+ let t2;
1348
2002
  return {
1349
2003
  c() {
1350
2004
  p = element("p");
1351
- p.textContent = "Invalid session id.";
2005
+ t2 = text(
2006
+ /*bannerLabel*/
2007
+ ctx[0]
2008
+ );
1352
2009
  attr(p, "class", "p-2 border-2 border-red-600 bg-red-200 rounded");
1353
2010
  },
1354
2011
  m(target, anchor) {
1355
2012
  insert(target, p, anchor);
2013
+ append(p, t2);
2014
+ },
2015
+ p(ctx2, [dirty]) {
2016
+ if (dirty & /*bannerLabel*/
2017
+ 1)
2018
+ set_data(
2019
+ t2,
2020
+ /*bannerLabel*/
2021
+ ctx2[0]
2022
+ );
1356
2023
  },
1357
- p: noop,
1358
2024
  i: noop,
1359
2025
  o: noop,
1360
2026
  d(detaching) {
@@ -1364,10 +2030,194 @@
1364
2030
  }
1365
2031
  };
1366
2032
  }
2033
+ function instance4($$self, $$props, $$invalidate) {
2034
+ let { bannerLabel: bannerLabel2 = "Invalid." } = $$props;
2035
+ $$self.$$set = ($$props2) => {
2036
+ if ("bannerLabel" in $$props2)
2037
+ $$invalidate(0, bannerLabel2 = $$props2.bannerLabel);
2038
+ };
2039
+ return [bannerLabel2];
2040
+ }
2041
+ var InvalidBanner = class extends SvelteComponent {
2042
+ constructor(options) {
2043
+ super();
2044
+ init(this, options, instance4, create_fragment5, safe_not_equal, { bannerLabel: 0 });
2045
+ }
2046
+ get bannerLabel() {
2047
+ return this.$$.ctx[0];
2048
+ }
2049
+ set bannerLabel(bannerLabel2) {
2050
+ this.$$set({ bannerLabel: bannerLabel2 });
2051
+ flush();
2052
+ }
2053
+ };
2054
+ customElements.define("invalid-banner", create_custom_element(InvalidBanner, { "bannerLabel": {} }, [], [], true));
2055
+ var InvalidBanner_default = InvalidBanner;
2056
+
2057
+ // src/lib/components/prompt/PromptBuilder.svelte
2058
+ function add_css(target) {
2059
+ append_styles(target, "svelte-1h69jp4", '*,: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}*,: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: }.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-1h69jp4-pulse{{opacity:0.5}}.animate-skeleton{--tw-bg-opacity:1;animation:svelte-1h69jp4-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-12{margin-bottom:3rem}.mb-2{margin-bottom:0.5rem}.h-52{height:13rem}.h-6{height:1.5rem}.w-full{width:100%}.overflow-hidden{overflow:hidden}.rounded{border-radius:0.25rem}.border-2{border-width:2px}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-2{padding:0.5rem}.text-left{text-align:left}.font-semibold{font-weight:600}.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}}');
2060
+ }
2061
+ function create_else_block_1(ctx) {
2062
+ let invalidbanner;
2063
+ let current;
2064
+ invalidbanner = new InvalidBanner_default({ props: { bannerLabel } });
2065
+ return {
2066
+ c() {
2067
+ create_component(invalidbanner.$$.fragment);
2068
+ },
2069
+ m(target, anchor) {
2070
+ mount_component(invalidbanner, target, anchor);
2071
+ current = true;
2072
+ },
2073
+ p: noop,
2074
+ i(local) {
2075
+ if (current)
2076
+ return;
2077
+ transition_in(invalidbanner.$$.fragment, local);
2078
+ current = true;
2079
+ },
2080
+ o(local) {
2081
+ transition_out(invalidbanner.$$.fragment, local);
2082
+ current = false;
2083
+ },
2084
+ d(detaching) {
2085
+ destroy_component(invalidbanner, detaching);
2086
+ }
2087
+ };
2088
+ }
1367
2089
  function create_if_block_12(ctx) {
1368
- let promptmcq;
2090
+ let current_block_type_index;
2091
+ let if_block;
2092
+ let if_block_anchor;
1369
2093
  let current;
1370
- promptmcq = new PromptMCQ_default({
2094
+ const if_block_creators = [create_if_block_2, create_if_block_3, create_else_block2];
2095
+ const if_blocks = [];
2096
+ function select_block_type_1(ctx2, dirty) {
2097
+ if (
2098
+ /*interactionType*/
2099
+ ctx2[3] === "multipleChoiceInteraction"
2100
+ )
2101
+ return 0;
2102
+ if (
2103
+ /*interactionType*/
2104
+ ctx2[3] === "typeInInteraction"
2105
+ )
2106
+ return 1;
2107
+ return 2;
2108
+ }
2109
+ current_block_type_index = select_block_type_1(ctx, -1);
2110
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
2111
+ return {
2112
+ c() {
2113
+ if_block.c();
2114
+ if_block_anchor = empty();
2115
+ },
2116
+ m(target, anchor) {
2117
+ if_blocks[current_block_type_index].m(target, anchor);
2118
+ insert(target, if_block_anchor, anchor);
2119
+ current = true;
2120
+ },
2121
+ p(ctx2, dirty) {
2122
+ let previous_block_index = current_block_type_index;
2123
+ current_block_type_index = select_block_type_1(ctx2, dirty);
2124
+ if (current_block_type_index === previous_block_index) {
2125
+ if_blocks[current_block_type_index].p(ctx2, dirty);
2126
+ } else {
2127
+ group_outros();
2128
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
2129
+ if_blocks[previous_block_index] = null;
2130
+ });
2131
+ check_outros();
2132
+ if_block = if_blocks[current_block_type_index];
2133
+ if (!if_block) {
2134
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
2135
+ if_block.c();
2136
+ } else {
2137
+ if_block.p(ctx2, dirty);
2138
+ }
2139
+ transition_in(if_block, 1);
2140
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
2141
+ }
2142
+ },
2143
+ i(local) {
2144
+ if (current)
2145
+ return;
2146
+ transition_in(if_block);
2147
+ current = true;
2148
+ },
2149
+ o(local) {
2150
+ transition_out(if_block);
2151
+ current = false;
2152
+ },
2153
+ d(detaching) {
2154
+ if (detaching) {
2155
+ detach(if_block_anchor);
2156
+ }
2157
+ if_blocks[current_block_type_index].d(detaching);
2158
+ }
2159
+ };
2160
+ }
2161
+ function create_if_block4(ctx) {
2162
+ let promptskeleton;
2163
+ let current;
2164
+ promptskeleton = new PromptSkeleton_default({});
2165
+ return {
2166
+ c() {
2167
+ create_component(promptskeleton.$$.fragment);
2168
+ },
2169
+ m(target, anchor) {
2170
+ mount_component(promptskeleton, target, anchor);
2171
+ current = true;
2172
+ },
2173
+ p: noop,
2174
+ i(local) {
2175
+ if (current)
2176
+ return;
2177
+ transition_in(promptskeleton.$$.fragment, local);
2178
+ current = true;
2179
+ },
2180
+ o(local) {
2181
+ transition_out(promptskeleton.$$.fragment, local);
2182
+ current = false;
2183
+ },
2184
+ d(detaching) {
2185
+ destroy_component(promptskeleton, detaching);
2186
+ }
2187
+ };
2188
+ }
2189
+ function create_else_block2(ctx) {
2190
+ let invalidbanner;
2191
+ let current;
2192
+ invalidbanner = new InvalidBanner_default({ props: { bannerLabel } });
2193
+ return {
2194
+ c() {
2195
+ create_component(invalidbanner.$$.fragment);
2196
+ },
2197
+ m(target, anchor) {
2198
+ mount_component(invalidbanner, target, anchor);
2199
+ current = true;
2200
+ },
2201
+ p: noop,
2202
+ i(local) {
2203
+ if (current)
2204
+ return;
2205
+ transition_in(invalidbanner.$$.fragment, local);
2206
+ current = true;
2207
+ },
2208
+ o(local) {
2209
+ transition_out(invalidbanner.$$.fragment, local);
2210
+ current = false;
2211
+ },
2212
+ d(detaching) {
2213
+ destroy_component(invalidbanner, detaching);
2214
+ }
2215
+ };
2216
+ }
2217
+ function create_if_block_3(ctx) {
2218
+ let prompttypein;
2219
+ let current;
2220
+ prompttypein = new PromptTypeIn_default({
1371
2221
  props: {
1372
2222
  sessionData: (
1373
2223
  /*sessionData*/
@@ -1379,80 +2229,107 @@
1379
2229
  )
1380
2230
  }
1381
2231
  });
1382
- promptmcq.$on(
1383
- "saveOption",
1384
- /*saveOption*/
1385
- ctx[3]
2232
+ prompttypein.$on(
2233
+ "saveAnswer",
2234
+ /*saveEvent*/
2235
+ ctx[4]
1386
2236
  );
1387
2237
  return {
1388
2238
  c() {
1389
- create_component(promptmcq.$$.fragment);
2239
+ create_component(prompttypein.$$.fragment);
1390
2240
  },
1391
2241
  m(target, anchor) {
1392
- mount_component(promptmcq, target, anchor);
2242
+ mount_component(prompttypein, target, anchor);
1393
2243
  current = true;
1394
2244
  },
1395
2245
  p(ctx2, dirty) {
1396
- const promptmcq_changes = {};
2246
+ const prompttypein_changes = {};
1397
2247
  if (dirty & /*sessionData*/
1398
2248
  1)
1399
- promptmcq_changes.sessionData = /*sessionData*/
2249
+ prompttypein_changes.sessionData = /*sessionData*/
1400
2250
  ctx2[0];
1401
2251
  if (dirty & /*isDataSaving*/
1402
2252
  4)
1403
- promptmcq_changes.isDataSaving = /*isDataSaving*/
2253
+ prompttypein_changes.isDataSaving = /*isDataSaving*/
1404
2254
  ctx2[2];
1405
- promptmcq.$set(promptmcq_changes);
2255
+ prompttypein.$set(prompttypein_changes);
1406
2256
  },
1407
2257
  i(local) {
1408
2258
  if (current)
1409
2259
  return;
1410
- transition_in(promptmcq.$$.fragment, local);
2260
+ transition_in(prompttypein.$$.fragment, local);
1411
2261
  current = true;
1412
2262
  },
1413
2263
  o(local) {
1414
- transition_out(promptmcq.$$.fragment, local);
2264
+ transition_out(prompttypein.$$.fragment, local);
1415
2265
  current = false;
1416
2266
  },
1417
2267
  d(detaching) {
1418
- destroy_component(promptmcq, detaching);
2268
+ destroy_component(prompttypein, detaching);
1419
2269
  }
1420
2270
  };
1421
2271
  }
1422
- function create_if_block2(ctx) {
1423
- let promptskeleton;
2272
+ function create_if_block_2(ctx) {
2273
+ let promptmcq;
1424
2274
  let current;
1425
- promptskeleton = new PromptSkeleton_default({});
2275
+ promptmcq = new PromptMCQ_default({
2276
+ props: {
2277
+ sessionData: (
2278
+ /*sessionData*/
2279
+ ctx[0]
2280
+ ),
2281
+ isDataSaving: (
2282
+ /*isDataSaving*/
2283
+ ctx[2]
2284
+ )
2285
+ }
2286
+ });
2287
+ promptmcq.$on(
2288
+ "saveOption",
2289
+ /*saveEvent*/
2290
+ ctx[4]
2291
+ );
1426
2292
  return {
1427
2293
  c() {
1428
- create_component(promptskeleton.$$.fragment);
2294
+ create_component(promptmcq.$$.fragment);
1429
2295
  },
1430
2296
  m(target, anchor) {
1431
- mount_component(promptskeleton, target, anchor);
2297
+ mount_component(promptmcq, target, anchor);
1432
2298
  current = true;
1433
2299
  },
1434
- p: noop,
2300
+ p(ctx2, dirty) {
2301
+ const promptmcq_changes = {};
2302
+ if (dirty & /*sessionData*/
2303
+ 1)
2304
+ promptmcq_changes.sessionData = /*sessionData*/
2305
+ ctx2[0];
2306
+ if (dirty & /*isDataSaving*/
2307
+ 4)
2308
+ promptmcq_changes.isDataSaving = /*isDataSaving*/
2309
+ ctx2[2];
2310
+ promptmcq.$set(promptmcq_changes);
2311
+ },
1435
2312
  i(local) {
1436
2313
  if (current)
1437
2314
  return;
1438
- transition_in(promptskeleton.$$.fragment, local);
2315
+ transition_in(promptmcq.$$.fragment, local);
1439
2316
  current = true;
1440
2317
  },
1441
2318
  o(local) {
1442
- transition_out(promptskeleton.$$.fragment, local);
2319
+ transition_out(promptmcq.$$.fragment, local);
1443
2320
  current = false;
1444
2321
  },
1445
2322
  d(detaching) {
1446
- destroy_component(promptskeleton, detaching);
2323
+ destroy_component(promptmcq, detaching);
1447
2324
  }
1448
2325
  };
1449
2326
  }
1450
- function create_fragment3(ctx) {
2327
+ function create_fragment6(ctx) {
1451
2328
  let current_block_type_index;
1452
2329
  let if_block;
1453
2330
  let if_block_anchor;
1454
2331
  let current;
1455
- const if_block_creators = [create_if_block2, create_if_block_12, create_else_block];
2332
+ const if_block_creators = [create_if_block4, create_if_block_12, create_else_block_1];
1456
2333
  const if_blocks = [];
1457
2334
  function select_block_type(ctx2, dirty) {
1458
2335
  if (
@@ -1519,12 +2396,14 @@
1519
2396
  }
1520
2397
  };
1521
2398
  }
1522
- function instance2($$self, $$props, $$invalidate) {
2399
+ var bannerLabel = "Invalid session id.";
2400
+ function instance5($$self, $$props, $$invalidate) {
1523
2401
  const { "session-id": sessionId } = $$props;
1524
2402
  useSetupAPI();
1525
2403
  let sessionData;
1526
2404
  let isDataFetching = true;
1527
2405
  let isDataSaving = false;
2406
+ let interactionType = null;
1528
2407
  const skipUserValidationStr = get_store_value(skipUserValidation) ? "?skip_user_validation=true" : "";
1529
2408
  const getSessionData = async (sessionId2) => {
1530
2409
  try {
@@ -1540,20 +2419,28 @@
1540
2419
  const getItemData = async (itemId, metadata) => {
1541
2420
  try {
1542
2421
  const { data } = await useGet(`items/${itemId}`);
2422
+ $$invalidate(3, interactionType = getInteractionType(data));
1543
2423
  $$invalidate(0, sessionData = { ...data, metadata });
1544
2424
  } catch (error) {
1545
2425
  } finally {
1546
2426
  $$invalidate(1, isDataFetching = false);
1547
2427
  }
1548
2428
  };
1549
- const saveOption = async ({ detail }) => {
1550
- $$invalidate(2, isDataSaving = true);
2429
+ const getInteractionType = (data) => {
2430
+ let interactionType2 = null;
2431
+ if (data) {
2432
+ const { interaction } = data;
2433
+ if (interaction) {
2434
+ const { type } = interaction;
2435
+ interactionType2 = type || null;
2436
+ }
2437
+ }
2438
+ return interactionType2;
2439
+ };
2440
+ const saveEvent = async ({ detail }) => {
1551
2441
  try {
1552
- const { answerChoiceId, answerChoice } = detail;
1553
- await usePatch(`sessions/${sessionId}${skipUserValidationStr}`, {
1554
- answer_id: answerChoiceId,
1555
- answer_choice: answerChoice
1556
- });
2442
+ $$invalidate(2, isDataSaving = true);
2443
+ await usePatch(`sessions/${sessionId}${skipUserValidationStr}`, detail);
1557
2444
  } catch (error) {
1558
2445
  $$invalidate(2, isDataSaving = false);
1559
2446
  } finally {
@@ -1564,15 +2451,15 @@
1564
2451
  getSessionData(sessionId);
1565
2452
  }
1566
2453
  $$self.$$set = ($$new_props) => {
1567
- $$invalidate(8, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
2454
+ $$invalidate(10, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
1568
2455
  };
1569
2456
  $$props = exclude_internal_props($$props);
1570
- return [sessionData, isDataFetching, isDataSaving, saveOption];
2457
+ return [sessionData, isDataFetching, isDataSaving, interactionType, saveEvent];
1571
2458
  }
1572
2459
  var PromptBuilder = class extends SvelteComponent {
1573
2460
  constructor(options) {
1574
2461
  super();
1575
- init(this, options, instance2, create_fragment3, safe_not_equal, {}, add_css);
2462
+ init(this, options, instance5, create_fragment6, safe_not_equal, {}, add_css);
1576
2463
  }
1577
2464
  };
1578
2465
  customElements.define("prompt-builder", create_custom_element(PromptBuilder, {}, [], [], true));