eat-js-sdk 0.0.6 → 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 +1072 -196
  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,46 +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 = (
995
- /*buildPromptRubric*/
996
- ctx[6](
997
- /*rubric*/
998
- ctx[2].text,
999
- "item-heading mb-2 md:mb-4"
1000
- ) + ""
1001
- );
1002
- let html_anchor;
1003
- return {
1004
- c() {
1005
- html_tag = new HtmlTag(false);
1006
- html_anchor = empty();
1007
- html_tag.a = html_anchor;
1008
- },
1009
- m(target, anchor) {
1010
- html_tag.m(raw_value, target, anchor);
1011
- insert(target, html_anchor, anchor);
1012
- },
1013
- p: noop,
1014
- d(detaching) {
1015
- if (detaching) {
1016
- detach(html_anchor);
1017
- html_tag.d();
1018
- }
1019
- }
1020
- };
1021
- }
1022
- function create_if_block(ctx) {
1289
+ function create_if_block2(ctx) {
1023
1290
  let div1;
1024
1291
  let div0;
1025
1292
  let div0_class_value;
1026
- let t;
1293
+ let t2;
1027
1294
  let each_value = ensure_array_like(Object.entries(
1028
1295
  /*options*/
1029
1296
  ctx[4]
@@ -1036,7 +1303,7 @@
1036
1303
  c() {
1037
1304
  div1 = element("div");
1038
1305
  div0 = element("div");
1039
- t = space();
1306
+ t2 = space();
1040
1307
  for (let i = 0; i < each_blocks.length; i += 1) {
1041
1308
  each_blocks[i].c();
1042
1309
  }
@@ -1047,7 +1314,7 @@
1047
1314
  m(target, anchor) {
1048
1315
  insert(target, div1, anchor);
1049
1316
  append(div1, div0);
1050
- append(div1, t);
1317
+ append(div1, t2);
1051
1318
  for (let i = 0; i < each_blocks.length; i += 1) {
1052
1319
  if (each_blocks[i]) {
1053
1320
  each_blocks[i].m(div1, null);
@@ -1097,7 +1364,7 @@
1097
1364
  let t1;
1098
1365
  let t2_value = (
1099
1366
  /*option*/
1100
- ctx[13].answer + ""
1367
+ ctx[12].answer + ""
1101
1368
  );
1102
1369
  let t2;
1103
1370
  let t3;
@@ -1108,9 +1375,9 @@
1108
1375
  function click_handler() {
1109
1376
  return (
1110
1377
  /*click_handler*/
1111
- ctx[8](
1378
+ ctx[7](
1112
1379
  /*option*/
1113
- ctx[13]
1380
+ ctx[12]
1114
1381
  )
1115
1382
  );
1116
1383
  }
@@ -1120,7 +1387,7 @@
1120
1387
  span = element("span");
1121
1388
  span.textContent = `${useMCQ_default(
1122
1389
  /*index*/
1123
- ctx[15]
1390
+ ctx[14]
1124
1391
  )}`;
1125
1392
  t1 = space();
1126
1393
  t2 = text(t2_value);
@@ -1128,14 +1395,14 @@
1128
1395
  attr(span, "class", "choice group-active:border-2 group-active:border-blue-1000 group-active:p-[7px]");
1129
1396
  attr(button, "aria-label", button_aria_label_value = `${/*selectedOption*/
1130
1397
  ctx[1] === /*option*/
1131
- ctx[13].id ? "Selected option" : "Option"} ${useMCQ_default(
1398
+ ctx[12].id ? "Selected option" : "Option"} ${useMCQ_default(
1132
1399
  /*index*/
1133
- ctx[15]
1400
+ ctx[14]
1134
1401
  )}: ${/*option*/
1135
- ctx[13].answer}`);
1402
+ ctx[12].answer}`);
1136
1403
  attr(button, "class", button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
1137
1404
  (ctx[1] === /*option*/
1138
- ctx[13].id ? "selected" : ""));
1405
+ ctx[12].id ? "selected" : ""));
1139
1406
  },
1140
1407
  m(target, anchor) {
1141
1408
  insert(target, button, anchor);
@@ -1153,17 +1420,17 @@
1153
1420
  if (dirty & /*selectedOption*/
1154
1421
  2 && button_aria_label_value !== (button_aria_label_value = `${/*selectedOption*/
1155
1422
  ctx[1] === /*option*/
1156
- ctx[13].id ? "Selected option" : "Option"} ${useMCQ_default(
1423
+ ctx[12].id ? "Selected option" : "Option"} ${useMCQ_default(
1157
1424
  /*index*/
1158
- ctx[15]
1425
+ ctx[14]
1159
1426
  )}: ${/*option*/
1160
- ctx[13].answer}`)) {
1427
+ ctx[12].answer}`)) {
1161
1428
  attr(button, "aria-label", button_aria_label_value);
1162
1429
  }
1163
1430
  if (dirty & /*selectedOption*/
1164
1431
  2 && button_class_value !== (button_class_value = "btn-mcq-option group text-left " + /*selectedOption*/
1165
1432
  (ctx[1] === /*option*/
1166
- ctx[13].id ? "selected" : ""))) {
1433
+ ctx[12].id ? "selected" : ""))) {
1167
1434
  attr(button, "class", button_class_value);
1168
1435
  }
1169
1436
  },
@@ -1176,115 +1443,116 @@
1176
1443
  }
1177
1444
  };
1178
1445
  }
1179
- function create_fragment(ctx) {
1180
- let div1;
1181
- let t0;
1182
- let html_tag;
1183
- let raw_value = (
1184
- /*buildPromptRubric*/
1185
- ctx[6](
1186
- /*prompt*/
1187
- ctx[3],
1188
- "item-heading font-semibold"
1189
- ) + ""
1190
- );
1191
- let t1;
1192
- let div0;
1193
- let t2;
1194
- let if_block0 = (
1195
- /*rubric*/
1196
- ctx[2].text && create_if_block_1(ctx)
1197
- );
1198
- let if_block1 = (
1446
+ function create_default_slot(ctx) {
1447
+ let if_block_anchor;
1448
+ let if_block = (
1199
1449
  /*options*/
1200
- ctx[4] && create_if_block(ctx)
1450
+ ctx[4] && create_if_block2(ctx)
1201
1451
  );
1202
1452
  return {
1203
1453
  c() {
1204
- div1 = element("div");
1205
- if (if_block0)
1206
- if_block0.c();
1207
- t0 = space();
1208
- html_tag = new HtmlTag(false);
1209
- t1 = space();
1210
- div0 = element("div");
1211
- t2 = space();
1212
- if (if_block1)
1213
- if_block1.c();
1214
- html_tag.a = t1;
1215
- attr(div0, "class", "divider my-6");
1216
- attr(div1, "class", "bg-transparent");
1454
+ if (if_block)
1455
+ if_block.c();
1456
+ if_block_anchor = empty();
1217
1457
  },
1218
1458
  m(target, anchor) {
1219
- insert(target, div1, anchor);
1220
- if (if_block0)
1221
- if_block0.m(div1, null);
1222
- append(div1, t0);
1223
- html_tag.m(raw_value, div1);
1224
- append(div1, t1);
1225
- append(div1, div0);
1226
- append(div1, t2);
1227
- if (if_block1)
1228
- if_block1.m(div1, null);
1459
+ if (if_block)
1460
+ if_block.m(target, anchor);
1461
+ insert(target, if_block_anchor, anchor);
1229
1462
  },
1230
- p(ctx2, [dirty]) {
1231
- if (
1232
- /*rubric*/
1233
- ctx2[2].text
1234
- )
1235
- if_block0.p(ctx2, dirty);
1463
+ p(ctx2, dirty) {
1236
1464
  if (
1237
1465
  /*options*/
1238
1466
  ctx2[4]
1239
1467
  )
1240
- if_block1.p(ctx2, dirty);
1468
+ if_block.p(ctx2, dirty);
1241
1469
  },
1242
- i: noop,
1243
- o: noop,
1244
1470
  d(detaching) {
1245
1471
  if (detaching) {
1246
- detach(div1);
1472
+ detach(if_block_anchor);
1247
1473
  }
1248
- if (if_block0)
1249
- if_block0.d();
1250
- if (if_block1)
1251
- if_block1.d();
1474
+ if (if_block)
1475
+ if_block.d(detaching);
1252
1476
  }
1253
1477
  };
1254
1478
  }
1255
- function instance($$self, $$props, $$invalidate) {
1256
- let { sessionData } = $$props;
1257
- let { isDataSaving } = $$props;
1258
- const { rubric, interaction, metadata } = sessionData;
1259
- const { prompt, options } = interaction;
1260
- let selectedOption;
1261
- const dispatch = createEventDispatcher();
1262
- if (metadata) {
1263
- const { events } = metadata.interactions;
1264
- const currentOption = events.pop();
1265
- const { answer_id: answerChoiceId } = currentOption;
1266
- selectedOption = answerChoiceId;
1267
- }
1268
- const handleOptionClick = (optionId, option) => {
1269
- if (isDataSaving || optionId === selectedOption)
1270
- return;
1271
- $$invalidate(1, selectedOption = optionId);
1272
- dispatch("saveOption", {
1273
- answerChoiceId: optionId,
1274
- answerChoice: option
1275
- });
1276
- };
1277
- const buildPromptRubric = (elemText, elemClass) => {
1278
- const heading = get_store_value(promptRubricElem);
1279
- return `<${heading} class="${elemClass}">${elemText}</${heading}>`;
1280
- };
1281
- const click_handler = (option) => handleOptionClick(option.id, option.answer);
1282
- $$self.$$set = ($$props2) => {
1283
- if ("sessionData" in $$props2)
1284
- $$invalidate(7, sessionData = $$props2.sessionData);
1285
- if ("isDataSaving" in $$props2)
1286
- $$invalidate(0, isDataSaving = $$props2.isDataSaving);
1287
- };
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);
1553
+ if ("isDataSaving" in $$props2)
1554
+ $$invalidate(0, isDataSaving = $$props2.isDataSaving);
1555
+ };
1288
1556
  return [
1289
1557
  isDataSaving,
1290
1558
  selectedOption,
@@ -1292,7 +1560,6 @@
1292
1560
  prompt,
1293
1561
  options,
1294
1562
  handleOptionClick,
1295
- buildPromptRubric,
1296
1563
  sessionData,
1297
1564
  click_handler
1298
1565
  ];
@@ -1300,10 +1567,10 @@
1300
1567
  var PromptMCQ = class extends SvelteComponent {
1301
1568
  constructor(options) {
1302
1569
  super();
1303
- 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 });
1304
1571
  }
1305
1572
  get sessionData() {
1306
- return this.$$.ctx[7];
1573
+ return this.$$.ctx[6];
1307
1574
  }
1308
1575
  set sessionData(sessionData) {
1309
1576
  this.$$set({ sessionData });
@@ -1320,8 +1587,386 @@
1320
1587
  customElements.define("prompt-mcq", create_custom_element(PromptMCQ, { "sessionData": {}, "isDataSaving": {} }, [], [], true));
1321
1588
  var PromptMCQ_default = PromptMCQ;
1322
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
+
1323
1968
  // src/lib/components/prompt/skeleton/PromptSkeleton.svelte
1324
- function create_fragment2(ctx) {
1969
+ function create_fragment4(ctx) {
1325
1970
  let div3;
1326
1971
  return {
1327
1972
  c() {
@@ -1344,28 +1989,38 @@
1344
1989
  var PromptSkeleton = class extends SvelteComponent {
1345
1990
  constructor(options) {
1346
1991
  super();
1347
- init(this, options, null, create_fragment2, safe_not_equal, {});
1992
+ init(this, options, null, create_fragment4, safe_not_equal, {});
1348
1993
  }
1349
1994
  };
1350
1995
  customElements.define("prompt-skeleton", create_custom_element(PromptSkeleton, {}, [], [], true));
1351
1996
  var PromptSkeleton_default = PromptSkeleton;
1352
1997
 
1353
- // src/lib/components/prompt/PromptBuilder.svelte
1354
- function add_css(target) {
1355
- 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}}');
1356
- }
1357
- function create_else_block(ctx) {
1998
+ // src/lib/components/common/InvalidBanner.svelte
1999
+ function create_fragment5(ctx) {
1358
2000
  let p;
2001
+ let t2;
1359
2002
  return {
1360
2003
  c() {
1361
2004
  p = element("p");
1362
- p.textContent = "Invalid session id.";
2005
+ t2 = text(
2006
+ /*bannerLabel*/
2007
+ ctx[0]
2008
+ );
1363
2009
  attr(p, "class", "p-2 border-2 border-red-600 bg-red-200 rounded");
1364
2010
  },
1365
2011
  m(target, anchor) {
1366
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
+ );
1367
2023
  },
1368
- p: noop,
1369
2024
  i: noop,
1370
2025
  o: noop,
1371
2026
  d(detaching) {
@@ -1375,10 +2030,194 @@
1375
2030
  }
1376
2031
  };
1377
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
+ }
1378
2089
  function create_if_block_12(ctx) {
1379
- let promptmcq;
2090
+ let current_block_type_index;
2091
+ let if_block;
2092
+ let if_block_anchor;
1380
2093
  let current;
1381
- 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({
1382
2221
  props: {
1383
2222
  sessionData: (
1384
2223
  /*sessionData*/
@@ -1390,80 +2229,107 @@
1390
2229
  )
1391
2230
  }
1392
2231
  });
1393
- promptmcq.$on(
1394
- "saveOption",
1395
- /*saveOption*/
1396
- ctx[3]
2232
+ prompttypein.$on(
2233
+ "saveAnswer",
2234
+ /*saveEvent*/
2235
+ ctx[4]
1397
2236
  );
1398
2237
  return {
1399
2238
  c() {
1400
- create_component(promptmcq.$$.fragment);
2239
+ create_component(prompttypein.$$.fragment);
1401
2240
  },
1402
2241
  m(target, anchor) {
1403
- mount_component(promptmcq, target, anchor);
2242
+ mount_component(prompttypein, target, anchor);
1404
2243
  current = true;
1405
2244
  },
1406
2245
  p(ctx2, dirty) {
1407
- const promptmcq_changes = {};
2246
+ const prompttypein_changes = {};
1408
2247
  if (dirty & /*sessionData*/
1409
2248
  1)
1410
- promptmcq_changes.sessionData = /*sessionData*/
2249
+ prompttypein_changes.sessionData = /*sessionData*/
1411
2250
  ctx2[0];
1412
2251
  if (dirty & /*isDataSaving*/
1413
2252
  4)
1414
- promptmcq_changes.isDataSaving = /*isDataSaving*/
2253
+ prompttypein_changes.isDataSaving = /*isDataSaving*/
1415
2254
  ctx2[2];
1416
- promptmcq.$set(promptmcq_changes);
2255
+ prompttypein.$set(prompttypein_changes);
1417
2256
  },
1418
2257
  i(local) {
1419
2258
  if (current)
1420
2259
  return;
1421
- transition_in(promptmcq.$$.fragment, local);
2260
+ transition_in(prompttypein.$$.fragment, local);
1422
2261
  current = true;
1423
2262
  },
1424
2263
  o(local) {
1425
- transition_out(promptmcq.$$.fragment, local);
2264
+ transition_out(prompttypein.$$.fragment, local);
1426
2265
  current = false;
1427
2266
  },
1428
2267
  d(detaching) {
1429
- destroy_component(promptmcq, detaching);
2268
+ destroy_component(prompttypein, detaching);
1430
2269
  }
1431
2270
  };
1432
2271
  }
1433
- function create_if_block2(ctx) {
1434
- let promptskeleton;
2272
+ function create_if_block_2(ctx) {
2273
+ let promptmcq;
1435
2274
  let current;
1436
- 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
+ );
1437
2292
  return {
1438
2293
  c() {
1439
- create_component(promptskeleton.$$.fragment);
2294
+ create_component(promptmcq.$$.fragment);
1440
2295
  },
1441
2296
  m(target, anchor) {
1442
- mount_component(promptskeleton, target, anchor);
2297
+ mount_component(promptmcq, target, anchor);
1443
2298
  current = true;
1444
2299
  },
1445
- 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
+ },
1446
2312
  i(local) {
1447
2313
  if (current)
1448
2314
  return;
1449
- transition_in(promptskeleton.$$.fragment, local);
2315
+ transition_in(promptmcq.$$.fragment, local);
1450
2316
  current = true;
1451
2317
  },
1452
2318
  o(local) {
1453
- transition_out(promptskeleton.$$.fragment, local);
2319
+ transition_out(promptmcq.$$.fragment, local);
1454
2320
  current = false;
1455
2321
  },
1456
2322
  d(detaching) {
1457
- destroy_component(promptskeleton, detaching);
2323
+ destroy_component(promptmcq, detaching);
1458
2324
  }
1459
2325
  };
1460
2326
  }
1461
- function create_fragment3(ctx) {
2327
+ function create_fragment6(ctx) {
1462
2328
  let current_block_type_index;
1463
2329
  let if_block;
1464
2330
  let if_block_anchor;
1465
2331
  let current;
1466
- 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];
1467
2333
  const if_blocks = [];
1468
2334
  function select_block_type(ctx2, dirty) {
1469
2335
  if (
@@ -1530,12 +2396,14 @@
1530
2396
  }
1531
2397
  };
1532
2398
  }
1533
- function instance2($$self, $$props, $$invalidate) {
2399
+ var bannerLabel = "Invalid session id.";
2400
+ function instance5($$self, $$props, $$invalidate) {
1534
2401
  const { "session-id": sessionId } = $$props;
1535
2402
  useSetupAPI();
1536
2403
  let sessionData;
1537
2404
  let isDataFetching = true;
1538
2405
  let isDataSaving = false;
2406
+ let interactionType = null;
1539
2407
  const skipUserValidationStr = get_store_value(skipUserValidation) ? "?skip_user_validation=true" : "";
1540
2408
  const getSessionData = async (sessionId2) => {
1541
2409
  try {
@@ -1551,20 +2419,28 @@
1551
2419
  const getItemData = async (itemId, metadata) => {
1552
2420
  try {
1553
2421
  const { data } = await useGet(`items/${itemId}`);
2422
+ $$invalidate(3, interactionType = getInteractionType(data));
1554
2423
  $$invalidate(0, sessionData = { ...data, metadata });
1555
2424
  } catch (error) {
1556
2425
  } finally {
1557
2426
  $$invalidate(1, isDataFetching = false);
1558
2427
  }
1559
2428
  };
1560
- const saveOption = async ({ detail }) => {
1561
- $$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 }) => {
1562
2441
  try {
1563
- const { answerChoiceId, answerChoice } = detail;
1564
- await usePatch(`sessions/${sessionId}${skipUserValidationStr}`, {
1565
- answer_id: answerChoiceId,
1566
- answer_choice: answerChoice
1567
- });
2442
+ $$invalidate(2, isDataSaving = true);
2443
+ await usePatch(`sessions/${sessionId}${skipUserValidationStr}`, detail);
1568
2444
  } catch (error) {
1569
2445
  $$invalidate(2, isDataSaving = false);
1570
2446
  } finally {
@@ -1575,15 +2451,15 @@
1575
2451
  getSessionData(sessionId);
1576
2452
  }
1577
2453
  $$self.$$set = ($$new_props) => {
1578
- $$invalidate(8, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
2454
+ $$invalidate(10, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
1579
2455
  };
1580
2456
  $$props = exclude_internal_props($$props);
1581
- return [sessionData, isDataFetching, isDataSaving, saveOption];
2457
+ return [sessionData, isDataFetching, isDataSaving, interactionType, saveEvent];
1582
2458
  }
1583
2459
  var PromptBuilder = class extends SvelteComponent {
1584
2460
  constructor(options) {
1585
2461
  super();
1586
- init(this, options, instance2, create_fragment3, safe_not_equal, {}, add_css);
2462
+ init(this, options, instance5, create_fragment6, safe_not_equal, {}, add_css);
1587
2463
  }
1588
2464
  };
1589
2465
  customElements.define("prompt-builder", create_custom_element(PromptBuilder, {}, [], [], true));