eat-js-sdk 2.2.0 → 2.2.1
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.
- package/dist/interaction-builder.mjs +964 -226
- package/package.json +1 -1
|
@@ -5103,7 +5103,19 @@ const INTERACTION_TYPES = {
|
|
|
5103
5103
|
MCQ: "multipleChoiceInteraction",
|
|
5104
5104
|
TYPEIN: "typeInInteraction",
|
|
5105
5105
|
CATEGORISE: "categoriseInteraction",
|
|
5106
|
-
DROPDOWN: "dropdownInteraction"
|
|
5106
|
+
DROPDOWN: "dropdownInteraction",
|
|
5107
|
+
SELECTABLE_TEXT: "selectableTextInteraction"
|
|
5108
|
+
};
|
|
5109
|
+
const mapAPIToInteractionType = (apiType) => {
|
|
5110
|
+
const { MCQ, CATEGORISE: CATEGORISE2, TYPEIN, DROPDOWN, SELECTABLE_TEXT } = INTERACTION_TYPES;
|
|
5111
|
+
const typeMap = {
|
|
5112
|
+
[MCQ]: "mcq",
|
|
5113
|
+
[CATEGORISE2]: "categorise",
|
|
5114
|
+
[TYPEIN]: "typein",
|
|
5115
|
+
[DROPDOWN]: "dropdown",
|
|
5116
|
+
[SELECTABLE_TEXT]: "selectableText"
|
|
5117
|
+
};
|
|
5118
|
+
return typeMap[apiType] ?? null;
|
|
5107
5119
|
};
|
|
5108
5120
|
const ANSWER_RESULTS = {
|
|
5109
5121
|
CORRECT: "correct",
|
|
@@ -5127,15 +5139,6 @@ const DROPDOWN_INTERACTION = {
|
|
|
5127
5139
|
RESIZE_DEBOUNCE_DELAY: 150,
|
|
5128
5140
|
EMPTY_CHOICE: ""
|
|
5129
5141
|
};
|
|
5130
|
-
const INTERACTION_TYPE_MAP = {
|
|
5131
|
-
[INTERACTION_TYPES.MCQ]: "mcq",
|
|
5132
|
-
[INTERACTION_TYPES.CATEGORISE]: "categorise",
|
|
5133
|
-
[INTERACTION_TYPES.TYPEIN]: "typein",
|
|
5134
|
-
[INTERACTION_TYPES.DROPDOWN]: "dropdown"
|
|
5135
|
-
};
|
|
5136
|
-
function mapInteractionType(legacyType) {
|
|
5137
|
-
return INTERACTION_TYPE_MAP[legacyType] ?? legacyType;
|
|
5138
|
-
}
|
|
5139
5142
|
const ALIGNMENT = {
|
|
5140
5143
|
DEFAULT: "default",
|
|
5141
5144
|
INLINE: "inline"
|
|
@@ -5173,10 +5176,9 @@ const loadData = async (sessionId, itemId, mode) => {
|
|
|
5173
5176
|
throw new Error("No session ID or item ID provided");
|
|
5174
5177
|
};
|
|
5175
5178
|
const loadPreviewData = async (itemId, mode) => {
|
|
5176
|
-
|
|
5177
|
-
const
|
|
5178
|
-
|
|
5179
|
-
if (mode === MODES.INTERACTIVE) {
|
|
5179
|
+
let includeAnswer = `?include=[html_tags,correct_answer]`;
|
|
5180
|
+
const isInteractive = mode === MODES.INTERACTIVE;
|
|
5181
|
+
if (isInteractive) {
|
|
5180
5182
|
includeAnswer = "?include=[html_tags,correct_answer,unpublished]&is_contentful_preview=true";
|
|
5181
5183
|
}
|
|
5182
5184
|
const { data } = await useGet(`items/${itemId}${includeAnswer}`);
|
|
@@ -5184,78 +5186,58 @@ const loadPreviewData = async (itemId, mode) => {
|
|
|
5184
5186
|
return {
|
|
5185
5187
|
...data,
|
|
5186
5188
|
mode,
|
|
5187
|
-
isFinished,
|
|
5188
|
-
isLocked,
|
|
5189
|
+
isFinished: !isInteractive,
|
|
5190
|
+
isLocked: !isInteractive,
|
|
5189
5191
|
scoringMetadata
|
|
5190
5192
|
};
|
|
5191
5193
|
};
|
|
5192
5194
|
const generatePreviewScoringMetadata = (data) => {
|
|
5193
|
-
if (!data.interaction) return null;
|
|
5194
5195
|
const { interaction } = data;
|
|
5195
|
-
const { type
|
|
5196
|
-
if (type === "multipleChoiceInteraction"
|
|
5197
|
-
const
|
|
5196
|
+
const { type } = interaction;
|
|
5197
|
+
if (type === "multipleChoiceInteraction") {
|
|
5198
|
+
const mcqInteraction = interaction;
|
|
5199
|
+
const options = mcqInteraction.options;
|
|
5200
|
+
const mcqCorrectAnswerIds = [];
|
|
5198
5201
|
Object.values(options).forEach((option) => {
|
|
5199
5202
|
if (option.correct_choice === true) {
|
|
5200
|
-
|
|
5203
|
+
mcqCorrectAnswerIds.push(option.id);
|
|
5201
5204
|
}
|
|
5202
5205
|
});
|
|
5203
5206
|
return {
|
|
5204
|
-
|
|
5205
|
-
correctAnswerIds,
|
|
5206
|
-
answerIds: [],
|
|
5207
|
-
// No student answers in preview
|
|
5208
|
-
interactionType: type
|
|
5207
|
+
correctAnswerIds: mcqCorrectAnswerIds
|
|
5209
5208
|
};
|
|
5210
5209
|
}
|
|
5211
5210
|
if (type === "typeInInteraction") {
|
|
5212
|
-
const
|
|
5213
|
-
const
|
|
5214
|
-
|
|
5215
|
-
|
|
5216
|
-
|
|
5217
|
-
|
|
5218
|
-
|
|
5219
|
-
|
|
5220
|
-
|
|
5221
|
-
|
|
5222
|
-
|
|
5223
|
-
} else {
|
|
5224
|
-
if (Array.isArray(correctAnswer) && correctAnswer.length > 0) {
|
|
5225
|
-
const firstAnswerObj = correctAnswer[0];
|
|
5226
|
-
if (typeof firstAnswerObj === "object" && firstAnswerObj !== null && !Array.isArray(firstAnswerObj)) {
|
|
5227
|
-
if (Array.isArray(firstAnswerObj.sample_answer) && firstAnswerObj.sample_answer.length > 0) {
|
|
5228
|
-
answer = [firstAnswerObj.sample_answer[0]];
|
|
5229
|
-
} else if (Array.isArray(firstAnswerObj.patterns) && firstAnswerObj.patterns.length > 0) {
|
|
5230
|
-
answer = [firstAnswerObj.patterns[0]];
|
|
5231
|
-
} else {
|
|
5232
|
-
answer = [""];
|
|
5211
|
+
const typeInInteraction = interaction;
|
|
5212
|
+
const typeinCorrectAnswer = typeInInteraction.correct_answer || [];
|
|
5213
|
+
const typeinType = typeInInteraction.typein_type.toLowerCase();
|
|
5214
|
+
let typeinAnswer = [];
|
|
5215
|
+
const shortAndInlineAnswer = Array.isArray(typeinCorrectAnswer) && typeinCorrectAnswer.length > 0 && Array.isArray(typeinCorrectAnswer[0]);
|
|
5216
|
+
if (shortAndInlineAnswer) {
|
|
5217
|
+
const isInline = typeinType === "inline text";
|
|
5218
|
+
if (isInline) {
|
|
5219
|
+
for (const blankAnswers of typeinCorrectAnswer) {
|
|
5220
|
+
if (Array.isArray(blankAnswers) && blankAnswers.length > 0) {
|
|
5221
|
+
typeinAnswer.push(blankAnswers[0]);
|
|
5233
5222
|
}
|
|
5234
|
-
} else if (Array.isArray(firstAnswerObj)) {
|
|
5235
|
-
answer = [firstAnswerObj[0] || ""];
|
|
5236
|
-
} else {
|
|
5237
|
-
answer = [String(firstAnswerObj || "")];
|
|
5238
5223
|
}
|
|
5224
|
+
} else {
|
|
5225
|
+
typeinAnswer = [typeinCorrectAnswer[0][0]];
|
|
5239
5226
|
}
|
|
5227
|
+
} else {
|
|
5228
|
+
typeinAnswer = typeinCorrectAnswer[0].sample_answer;
|
|
5240
5229
|
}
|
|
5241
5230
|
return {
|
|
5242
|
-
|
|
5243
|
-
|
|
5244
|
-
correct_answer: correctAnswer,
|
|
5245
|
-
interactionType: type
|
|
5231
|
+
answer: typeinAnswer,
|
|
5232
|
+
correct_answer: typeinCorrectAnswer
|
|
5246
5233
|
};
|
|
5247
5234
|
}
|
|
5248
5235
|
if (type === "categoriseInteraction") {
|
|
5249
|
-
const
|
|
5250
|
-
|
|
5251
|
-
return {
|
|
5252
|
-
hasAnswer: false,
|
|
5253
|
-
interactionType: type
|
|
5254
|
-
};
|
|
5255
|
-
}
|
|
5236
|
+
const categoriseInteraction = interaction;
|
|
5237
|
+
const categoriseCorrectAnswer = categoriseInteraction.correct_answer;
|
|
5256
5238
|
const answerList = {};
|
|
5257
|
-
|
|
5258
|
-
const matchingCategory =
|
|
5239
|
+
categoriseCorrectAnswer?.forEach((entry) => {
|
|
5240
|
+
const matchingCategory = categoriseInteraction.category_groups.find(
|
|
5259
5241
|
(cat) => cat.name === entry.category_name || cat.id === entry.id
|
|
5260
5242
|
);
|
|
5261
5243
|
if (matchingCategory && entry.correct_answer_list && Array.isArray(entry.correct_answer_list)) {
|
|
@@ -5270,30 +5252,33 @@ const generatePreviewScoringMetadata = (data) => {
|
|
|
5270
5252
|
answerList[matchingCategory.id] = itemIds;
|
|
5271
5253
|
}
|
|
5272
5254
|
});
|
|
5273
|
-
return {
|
|
5274
|
-
hasAnswer: true,
|
|
5275
|
-
answerList,
|
|
5276
|
-
interactionType: type
|
|
5277
|
-
};
|
|
5255
|
+
return { answerList };
|
|
5278
5256
|
}
|
|
5279
|
-
if (type === "dropdownInteraction"
|
|
5257
|
+
if (type === "dropdownInteraction") {
|
|
5258
|
+
const dropdownInteraction = interaction;
|
|
5259
|
+
const options = dropdownInteraction.options;
|
|
5280
5260
|
const answer = [];
|
|
5281
5261
|
Object.values(options).forEach((option) => {
|
|
5282
|
-
const correctAnswers = option.correct_answers
|
|
5283
|
-
const firstCorrect = correctAnswers[0] || "";
|
|
5262
|
+
const correctAnswers = option.correct_answers;
|
|
5284
5263
|
answer.push({
|
|
5285
5264
|
id: option.id,
|
|
5286
|
-
choice:
|
|
5265
|
+
choice: correctAnswers[0]
|
|
5287
5266
|
});
|
|
5288
5267
|
});
|
|
5289
5268
|
return {
|
|
5290
|
-
hasAnswer: true,
|
|
5291
5269
|
answer,
|
|
5292
|
-
correctAnswer: options
|
|
5293
|
-
interactionType: type
|
|
5270
|
+
correctAnswer: options
|
|
5294
5271
|
};
|
|
5295
5272
|
}
|
|
5296
|
-
|
|
5273
|
+
if (type === "selectableTextInteraction") {
|
|
5274
|
+
const selectableTextInteraction = interaction;
|
|
5275
|
+
const correctAnswers = selectableTextInteraction.correct_answers || [];
|
|
5276
|
+
const correctAnswerIds = correctAnswers.map((answer) => answer.id);
|
|
5277
|
+
return {
|
|
5278
|
+
correctAnswerIds
|
|
5279
|
+
};
|
|
5280
|
+
}
|
|
5281
|
+
throw new Error(`Unsupported interaction type: ${type}, cannot generate preview metadata.`);
|
|
5297
5282
|
};
|
|
5298
5283
|
const loadSessionData = async (sessionId, mode) => {
|
|
5299
5284
|
const skipUserValidationStr = get(skipUserValidation) ? "&skip_user_validation=true" : "";
|
|
@@ -5315,13 +5300,10 @@ const loadSessionData = async (sessionId, mode) => {
|
|
|
5315
5300
|
}
|
|
5316
5301
|
return {
|
|
5317
5302
|
...item,
|
|
5318
|
-
sessionId,
|
|
5319
5303
|
totalCorrectAnswers,
|
|
5320
5304
|
metadata,
|
|
5321
5305
|
isFinished: Boolean(isFinished),
|
|
5322
|
-
// Convert 1/0 to true/false
|
|
5323
5306
|
isLocked: Boolean(isLocked),
|
|
5324
|
-
// Convert 1/0 to true/false
|
|
5325
5307
|
mode
|
|
5326
5308
|
};
|
|
5327
5309
|
};
|
|
@@ -5351,13 +5333,13 @@ const useSetupAPI = () => {
|
|
|
5351
5333
|
interactionWidth.set(interactionWidthValue);
|
|
5352
5334
|
}
|
|
5353
5335
|
};
|
|
5354
|
-
var root$
|
|
5336
|
+
var root$n = /* @__PURE__ */ from_html(`<div><div class="animate-skeleton w-full h-6 mb-2 rounded md:mb-4"></div> <div class="animate-skeleton w-full h-6 mb-12 rounded"></div> <div class="animate-skeleton w-full h-52 rounded"></div></div>`);
|
|
5355
5337
|
function CommonSkeleton($$anchor) {
|
|
5356
|
-
var div = root$
|
|
5338
|
+
var div = root$n();
|
|
5357
5339
|
append($$anchor, div);
|
|
5358
5340
|
}
|
|
5359
5341
|
create_custom_element(CommonSkeleton, {}, [], [], true);
|
|
5360
|
-
var root$
|
|
5342
|
+
var root$m = /* @__PURE__ */ from_html(`<p class="p-2 border-2 border-red-600 bg-red-200 rounded"> </p>`);
|
|
5361
5343
|
function InvalidBanner($$anchor, $$props) {
|
|
5362
5344
|
push($$props, true);
|
|
5363
5345
|
let bannerLabel = prop($$props, "bannerLabel", 7, "Invalid.");
|
|
@@ -5370,7 +5352,7 @@ function InvalidBanner($$anchor, $$props) {
|
|
|
5370
5352
|
flushSync();
|
|
5371
5353
|
}
|
|
5372
5354
|
};
|
|
5373
|
-
var p = root$
|
|
5355
|
+
var p = root$m();
|
|
5374
5356
|
var text = child(p, true);
|
|
5375
5357
|
reset(p);
|
|
5376
5358
|
template_effect(() => set_text(text, bannerLabel()));
|
|
@@ -5672,7 +5654,7 @@ const svgIconRegistry = {
|
|
|
5672
5654
|
}
|
|
5673
5655
|
};
|
|
5674
5656
|
var root_1$n = /* @__PURE__ */ from_svg(`<path></path>`);
|
|
5675
|
-
var root$
|
|
5657
|
+
var root$l = /* @__PURE__ */ from_svg(`<svg xmlns="http://www.w3.org/2000/svg"><!></svg>`);
|
|
5676
5658
|
function SvgLoader($$anchor, $$props) {
|
|
5677
5659
|
push($$props, true);
|
|
5678
5660
|
let width = prop($$props, "width", 7, void 0), height = prop($$props, "height", 7, void 0), svgName = prop($$props, "svgName", 7), className = prop($$props, "className", 7, void 0), dataTestId = prop($$props, "dataTestId", 7);
|
|
@@ -5726,7 +5708,7 @@ function SvgLoader($$anchor, $$props) {
|
|
|
5726
5708
|
flushSync();
|
|
5727
5709
|
}
|
|
5728
5710
|
};
|
|
5729
|
-
var svg = root$
|
|
5711
|
+
var svg = root$l();
|
|
5730
5712
|
var node = child(svg);
|
|
5731
5713
|
{
|
|
5732
5714
|
var consequent = ($$anchor2) => {
|
|
@@ -5768,7 +5750,7 @@ create_custom_element(
|
|
|
5768
5750
|
[],
|
|
5769
5751
|
true
|
|
5770
5752
|
);
|
|
5771
|
-
var root$
|
|
5753
|
+
var root$k = /* @__PURE__ */ from_html(`<span><!></span>`);
|
|
5772
5754
|
function ResultIcon($$anchor, $$props) {
|
|
5773
5755
|
push($$props, true);
|
|
5774
5756
|
let isCorrect = prop($$props, "isCorrect", 7), iconType = prop($$props, "iconType", 7, "result"), parentProps = prop($$props, "parentProps", 7);
|
|
@@ -5798,7 +5780,7 @@ function ResultIcon($$anchor, $$props) {
|
|
|
5798
5780
|
flushSync();
|
|
5799
5781
|
}
|
|
5800
5782
|
};
|
|
5801
|
-
var span = root$
|
|
5783
|
+
var span = root$k();
|
|
5802
5784
|
var node = child(span);
|
|
5803
5785
|
SvgLoader(node, {
|
|
5804
5786
|
get svgName() {
|
|
@@ -5817,7 +5799,7 @@ function ResultIcon($$anchor, $$props) {
|
|
|
5817
5799
|
return pop($$exports);
|
|
5818
5800
|
}
|
|
5819
5801
|
create_custom_element(ResultIcon, { isCorrect: {}, iconType: {}, parentProps: {} }, [], [], true);
|
|
5820
|
-
var root_3$
|
|
5802
|
+
var root_3$e = /* @__PURE__ */ from_html(`<span class="sr-only">Alert. </span>`);
|
|
5821
5803
|
var root_1$m = /* @__PURE__ */ from_html(`<div data-testid="feedback-alt"><!> <div><!> <span><!></span></div></div>`);
|
|
5822
5804
|
function FeedbackAlert($$anchor, $$props) {
|
|
5823
5805
|
push($$props, true);
|
|
@@ -5910,7 +5892,7 @@ function FeedbackAlert($$anchor, $$props) {
|
|
|
5910
5892
|
var node_2 = child(div_1);
|
|
5911
5893
|
{
|
|
5912
5894
|
var consequent_1 = ($$anchor3) => {
|
|
5913
|
-
var span = root_3$
|
|
5895
|
+
var span = root_3$e();
|
|
5914
5896
|
append($$anchor3, span);
|
|
5915
5897
|
};
|
|
5916
5898
|
if_block(node_2, ($$render) => {
|
|
@@ -6245,7 +6227,7 @@ const useFocusTrap = () => {
|
|
|
6245
6227
|
handleTabKey
|
|
6246
6228
|
};
|
|
6247
6229
|
};
|
|
6248
|
-
var root$
|
|
6230
|
+
var root$j = /* @__PURE__ */ from_html(`<dialog aria-modal="true" class="bg-transparent max-w-none max-h-none w-screen h-screen"><div role="button" aria-hidden="true"></div> <!></dialog>`);
|
|
6249
6231
|
function CommonModal($$anchor, $$props) {
|
|
6250
6232
|
push($$props, true);
|
|
6251
6233
|
let modalData = prop($$props, "modalData", 23, () => ({ modalAriaLabel: "", isModalOpen: false })), modalClass = prop($$props, "modalClass", 7, ""), onupdateModalSettings = prop($$props, "onupdateModalSettings", 7), onclose = prop($$props, "onclose", 7), children = prop($$props, "children", 7), dataTestId = prop($$props, "dataTestId", 7);
|
|
@@ -6329,7 +6311,7 @@ function CommonModal($$anchor, $$props) {
|
|
|
6329
6311
|
flushSync();
|
|
6330
6312
|
}
|
|
6331
6313
|
};
|
|
6332
|
-
var dialog = root$
|
|
6314
|
+
var dialog = root$j();
|
|
6333
6315
|
dialog.__keydown = handleFocusTrap;
|
|
6334
6316
|
var div = child(dialog);
|
|
6335
6317
|
div.__click = clickModalBackground;
|
|
@@ -6379,7 +6361,7 @@ function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {
|
|
|
6379
6361
|
};
|
|
6380
6362
|
}
|
|
6381
6363
|
var root_1$l = /* @__PURE__ */ from_html(`<div><div role="tooltip" data-testid="img-viewer-tt"> <span aria-hidden="true"></span></div></div>`);
|
|
6382
|
-
var root$
|
|
6364
|
+
var root$i = /* @__PURE__ */ from_html(`<div class="relative inline-block"><!> <!></div>`);
|
|
6383
6365
|
function CommonTooltip($$anchor, $$props) {
|
|
6384
6366
|
push($$props, true);
|
|
6385
6367
|
let text = prop($$props, "text", 7), placement = prop($$props, "placement", 7, "bottom"), open = prop($$props, "open", 7, void 0), disabled = prop($$props, "disabled", 7, false), trigger = prop($$props, "trigger", 7, "hover"), tooltipClass = prop($$props, "tooltipClass", 7, ""), showDelay = prop($$props, "showDelay", 7, 80), hideDelay = prop($$props, "hideDelay", 7, 120), children = prop($$props, "children", 7);
|
|
@@ -6557,7 +6539,7 @@ function CommonTooltip($$anchor, $$props) {
|
|
|
6557
6539
|
flushSync();
|
|
6558
6540
|
}
|
|
6559
6541
|
};
|
|
6560
|
-
var div = root$
|
|
6542
|
+
var div = root$i();
|
|
6561
6543
|
div.__focusin = scheduleShow;
|
|
6562
6544
|
div.__focusout = scheduleHide;
|
|
6563
6545
|
div.__touchstart = handleTouchStart;
|
|
@@ -6624,7 +6606,7 @@ create_custom_element(
|
|
|
6624
6606
|
true
|
|
6625
6607
|
);
|
|
6626
6608
|
var root_1$k = /* @__PURE__ */ from_html(`<span><!></span>`);
|
|
6627
|
-
var root$
|
|
6609
|
+
var root$h = /* @__PURE__ */ from_html(`<button><!></button>`);
|
|
6628
6610
|
function CommonButton($$anchor, $$props) {
|
|
6629
6611
|
push($$props, true);
|
|
6630
6612
|
let ariaLabel = prop($$props, "ariaLabel", 7, ""), ariaHaspopup = prop($$props, "ariaHaspopup", 7), className = prop($$props, "className", 7, ""), disabled = prop($$props, "disabled", 7, false), pressed = prop($$props, "pressed", 7, false), transparent = prop($$props, "transparent", 7, false), variant = prop($$props, "variant", 7, "standard"), type = prop($$props, "type", 7, "button"), tabindex = prop($$props, "tabindex", 7, 0), onclick = prop($$props, "onclick", 7), children = prop($$props, "children", 7), dataTestId = prop($$props, "dataTestId", 7);
|
|
@@ -6723,7 +6705,7 @@ function CommonButton($$anchor, $$props) {
|
|
|
6723
6705
|
flushSync();
|
|
6724
6706
|
}
|
|
6725
6707
|
};
|
|
6726
|
-
var button = root$
|
|
6708
|
+
var button = root$h();
|
|
6727
6709
|
let classes;
|
|
6728
6710
|
button.__click = function(...$$args) {
|
|
6729
6711
|
onclick()?.apply(this, $$args);
|
|
@@ -6940,9 +6922,9 @@ function useImageModalSize() {
|
|
|
6940
6922
|
calculateStimulusImageLayout
|
|
6941
6923
|
};
|
|
6942
6924
|
}
|
|
6943
|
-
var root_3$
|
|
6925
|
+
var root_3$d = /* @__PURE__ */ from_html(`<span class="w-6 h-6 flex items-center justify-center"><!></span>`);
|
|
6944
6926
|
var root_4$7 = /* @__PURE__ */ from_html(`<span class="w-6 h-6 flex items-center justify-center"><!></span>`);
|
|
6945
|
-
var root_5$
|
|
6927
|
+
var root_5$8 = /* @__PURE__ */ from_html(`<div><span aria-hidden="true"><!></span></div>`);
|
|
6946
6928
|
var root_8$5 = /* @__PURE__ */ from_html(`<span class="w-4 h-4 flex items-center justify-center"><!></span>`);
|
|
6947
6929
|
var root_9$3 = /* @__PURE__ */ from_html(`<span class="w-4 h-4 flex items-center justify-center"><!></span>`);
|
|
6948
6930
|
var root_2$d = /* @__PURE__ */ from_html(`<div class="absolute inset-0 m-0"><div class="w-full h-full px-0 md:px-[82px] lg:px-[128px] pt-14 pb-[72px] relative lg:py-24 flex flex-col items-center justify-center"><div aria-live="polite" aria-atomic="true" class="sr-only"> </div> <div class="w-full h-full flex flex-col md:flex-row md:justify-center items-center justify-between"><div class="md:hidden"></div> <!> <!> <div><div class="flex-shrink-0 flex items-center justify-between py-1 px-2 md:px-4 border-border-minimal border rounded-t-md lg:rounded-t-lg md:gap-4 h-8.5 md:h-fit"><!> <!> <!></div> <div class="rounded-b-md"><img class="mx-auto block rounded-b-md lg:rounded-b-lg object-contain max-w-full max-h-[calc(100vh-168px-34px)] md:max-h-[calc(100vh-128px-54px)] lg:max-h-[calc(100vh-192px-54px)] pointer-events-none"/></div></div> <div class="md:hidden flex justify-center items-center gap-1 flex-shrink-0 h-6 mt-4"><!> <!></div></div></div></div>`);
|
|
@@ -7170,7 +7152,7 @@ function MCQImageModal($$anchor, $$props) {
|
|
|
7170
7152
|
dataTestId: "img-viewer-prev",
|
|
7171
7153
|
onclick: navigatePrevious,
|
|
7172
7154
|
children: ($$anchor4, $$slotProps2) => {
|
|
7173
|
-
var span = root_3$
|
|
7155
|
+
var span = root_3$d();
|
|
7174
7156
|
var node_2 = child(span);
|
|
7175
7157
|
SvgLoader(node_2, {
|
|
7176
7158
|
svgName: "smallChevronLeft",
|
|
@@ -7226,7 +7208,7 @@ function MCQImageModal($$anchor, $$props) {
|
|
|
7226
7208
|
return get$1(fullAnswerText);
|
|
7227
7209
|
},
|
|
7228
7210
|
children: ($$anchor4, $$slotProps2) => {
|
|
7229
|
-
var div_6 = root_5$
|
|
7211
|
+
var div_6 = root_5$8();
|
|
7230
7212
|
var span_2 = child(div_6);
|
|
7231
7213
|
var node_6 = child(span_2);
|
|
7232
7214
|
{
|
|
@@ -7514,7 +7496,7 @@ function PromptSection($$anchor, $$props) {
|
|
|
7514
7496
|
return pop($$exports);
|
|
7515
7497
|
}
|
|
7516
7498
|
create_custom_element(PromptSection, { prompt: {} }, [], [], true);
|
|
7517
|
-
var root$
|
|
7499
|
+
var root$g = /* @__PURE__ */ from_html(`<div class="interaction-section"><!></div>`);
|
|
7518
7500
|
function InteractionSection($$anchor, $$props) {
|
|
7519
7501
|
push($$props, true);
|
|
7520
7502
|
let children = prop($$props, "children", 7);
|
|
@@ -7527,7 +7509,7 @@ function InteractionSection($$anchor, $$props) {
|
|
|
7527
7509
|
flushSync();
|
|
7528
7510
|
}
|
|
7529
7511
|
};
|
|
7530
|
-
var div = root$
|
|
7512
|
+
var div = root$g();
|
|
7531
7513
|
var node = child(div);
|
|
7532
7514
|
snippet(node, () => children() ?? noop);
|
|
7533
7515
|
reset(div);
|
|
@@ -7535,9 +7517,9 @@ function InteractionSection($$anchor, $$props) {
|
|
|
7535
7517
|
return pop($$exports);
|
|
7536
7518
|
}
|
|
7537
7519
|
create_custom_element(InteractionSection, { children: {} }, [], [], true);
|
|
7538
|
-
var root_5$
|
|
7520
|
+
var root_5$7 = /* @__PURE__ */ from_html(`<div></div>`);
|
|
7539
7521
|
var root_4$6 = /* @__PURE__ */ from_html(`<div class="px-4 w-full max-w-[1008px] mx-auto flex-shrink-0 text-center font-semibold text-sm md:text-lg leading-[150%] text-white" aria-hidden="true" data-testid="img-viewer-cap-txt"> </div> <!>`, 1);
|
|
7540
|
-
var root_7$
|
|
7522
|
+
var root_7$5 = /* @__PURE__ */ from_html(`<div></div>`);
|
|
7541
7523
|
var root_2$c = /* @__PURE__ */ from_html(`<div class="absolute inset-0"><div class="w-full h-full flex items-center justify-center pt-14 pb-[72px] lg:py-24"><div aria-live="polite" aria-atomic="true" class="sr-only"> </div> <div class="flex flex-col items-center overflow-y-auto overflow-x-hidden w-full px-0 md:px-6 lg:px-16"><div class="relative bg-white rounded-md md:rounded-lg shadow-sm overflow-hidden flex-shrink-0"><img class="block object-contain w-full h-auto max-w-full mx-auto"/> <!></div> <!></div></div></div>`);
|
|
7542
7524
|
function PromptStimulusImageModal($$anchor, $$props) {
|
|
7543
7525
|
push($$props, true);
|
|
@@ -7709,7 +7691,7 @@ function PromptStimulusImageModal($$anchor, $$props) {
|
|
|
7709
7691
|
var node_3 = sibling(div_5, 2);
|
|
7710
7692
|
{
|
|
7711
7693
|
var consequent = ($$anchor5) => {
|
|
7712
|
-
var div_6 = root_5$
|
|
7694
|
+
var div_6 = root_5$7();
|
|
7713
7695
|
template_effect(() => set_style(div_6, `height:${get$1(bottomSpacerHeight) ?? ""}px`));
|
|
7714
7696
|
append($$anchor5, div_6);
|
|
7715
7697
|
};
|
|
@@ -7728,7 +7710,7 @@ function PromptStimulusImageModal($$anchor, $$props) {
|
|
|
7728
7710
|
var node_4 = first_child(fragment_4);
|
|
7729
7711
|
{
|
|
7730
7712
|
var consequent_2 = ($$anchor5) => {
|
|
7731
|
-
var div_7 = root_7$
|
|
7713
|
+
var div_7 = root_7$5();
|
|
7732
7714
|
template_effect(() => set_style(div_7, `height:${get$1(bottomSpacerHeight) ?? ""}px`));
|
|
7733
7715
|
append($$anchor5, div_7);
|
|
7734
7716
|
};
|
|
@@ -8076,35 +8058,64 @@ const singleColumnTemplate = {
|
|
|
8076
8058
|
matches: () => true,
|
|
8077
8059
|
// Fallback
|
|
8078
8060
|
build: (context) => {
|
|
8061
|
+
const isSelectableText = context.interactionType === INTERACTION_TYPES.SELECTABLE_TEXT;
|
|
8079
8062
|
const allSections = [
|
|
8080
|
-
{
|
|
8063
|
+
{
|
|
8064
|
+
name: "rubric",
|
|
8065
|
+
component: "rubric",
|
|
8066
|
+
classes: isSelectableText ? ["max-w-[864px]"] : void 0
|
|
8067
|
+
},
|
|
8081
8068
|
{
|
|
8082
8069
|
name: "stimulus-inline-text-first",
|
|
8083
8070
|
component: "stimulus-text",
|
|
8084
|
-
condition: context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "text first"
|
|
8071
|
+
condition: !isSelectableText && context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "text first"
|
|
8085
8072
|
},
|
|
8086
8073
|
{
|
|
8087
8074
|
name: "stimulus-inline-media",
|
|
8088
8075
|
component: "stimulus-media",
|
|
8089
|
-
condition: context.stimulusData.hasMedia && context.stimulusData.fileAlignment === "inline"
|
|
8076
|
+
condition: !isSelectableText && context.stimulusData.hasMedia && context.stimulusData.fileAlignment === "inline"
|
|
8090
8077
|
},
|
|
8091
8078
|
{
|
|
8092
8079
|
name: "stimulus-inline-text-second",
|
|
8093
8080
|
component: "stimulus-text",
|
|
8094
|
-
condition: context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "media first"
|
|
8081
|
+
condition: !isSelectableText && context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "media first"
|
|
8095
8082
|
},
|
|
8096
|
-
{
|
|
8097
|
-
|
|
8098
|
-
|
|
8099
|
-
|
|
8100
|
-
|
|
8083
|
+
{
|
|
8084
|
+
name: "prompt",
|
|
8085
|
+
component: "prompt",
|
|
8086
|
+
classes: isSelectableText ? ["max-w-[864px]"] : void 0
|
|
8087
|
+
},
|
|
8088
|
+
{
|
|
8089
|
+
name: "divider",
|
|
8090
|
+
component: "divider",
|
|
8091
|
+
condition: context.hasDivider,
|
|
8092
|
+
classes: isSelectableText ? ["max-w-[864px]"] : void 0
|
|
8093
|
+
},
|
|
8094
|
+
{
|
|
8095
|
+
name: "interaction",
|
|
8096
|
+
component: "slot",
|
|
8097
|
+
slot: "interaction"
|
|
8098
|
+
},
|
|
8099
|
+
{
|
|
8100
|
+
name: "divider-bottom",
|
|
8101
|
+
component: "divider-bottom",
|
|
8102
|
+
condition: context.hasDividerBottom,
|
|
8103
|
+
classes: isSelectableText ? ["max-w-[864px]"] : void 0
|
|
8104
|
+
},
|
|
8105
|
+
{
|
|
8106
|
+
name: "feedback",
|
|
8107
|
+
component: "slot",
|
|
8108
|
+
slot: "feedback",
|
|
8109
|
+
classes: isSelectableText ? ["max-w-[864px]"] : void 0
|
|
8110
|
+
}
|
|
8101
8111
|
];
|
|
8102
8112
|
const order = getSingleColumnOrder(context.interactionType);
|
|
8103
8113
|
const sections = reorderSections(allSections, order);
|
|
8114
|
+
const containerStyles = { "--interactionWidthValue": context.interactionWidthValue };
|
|
8104
8115
|
return {
|
|
8105
8116
|
sections,
|
|
8106
8117
|
containerClasses: ["container-class"],
|
|
8107
|
-
containerStyles
|
|
8118
|
+
containerStyles
|
|
8108
8119
|
};
|
|
8109
8120
|
}
|
|
8110
8121
|
};
|
|
@@ -8134,7 +8145,12 @@ const fullWidthStimulusTextTemplate = {
|
|
|
8134
8145
|
{ name: "prompt", component: "prompt", classes: ["lg:max-w-[50%]"] },
|
|
8135
8146
|
{ name: "divider", component: "divider", condition: context.hasDivider, classes: ["lg:max-w-[50%]"] },
|
|
8136
8147
|
{ name: "interaction", component: "slot", slot: "interaction", classes: ["lg:max-w-[50%]"] },
|
|
8137
|
-
{
|
|
8148
|
+
{
|
|
8149
|
+
name: "divider-bottom",
|
|
8150
|
+
component: "divider-bottom",
|
|
8151
|
+
condition: context.hasDividerBottom,
|
|
8152
|
+
classes: ["lg:max-w-[50%]"]
|
|
8153
|
+
},
|
|
8138
8154
|
{ name: "feedback", component: "slot", slot: "feedback", classes: ["lg:max-w-[50%]"] }
|
|
8139
8155
|
];
|
|
8140
8156
|
const order = getSingleColumnOrder(context.interactionType);
|
|
@@ -8158,7 +8174,7 @@ const shouldRenderSection = (section) => section.condition !== false;
|
|
|
8158
8174
|
const getClassString = (classes = []) => classes.join(" ");
|
|
8159
8175
|
const getStyleString = (styles = {}) => Object.entries(styles).map(([k, v]) => `${k}:${v}`).join(";");
|
|
8160
8176
|
var root_4$5 = /* @__PURE__ */ from_html(`<p class="text-lg leading-[22px] text-blue-1000 font-semibold mt-4" data-testid="img-cap-txt"> </p>`);
|
|
8161
|
-
var root_5$
|
|
8177
|
+
var root_5$6 = /* @__PURE__ */ from_html(`<div class="mt-6 w-full"><button class="flex items-center font-semibold leading-[1.5] outline-none group w-fit h-11 text-charcoal" aria-controls="long-description-content" aria-labelledby="image-description-label" type="button"><div class="w-6 h-6 flex items-center justify-center mr-2" data-testid="img-desc-txt"><!></div> <div id="image-description-label" class="image-description-accordion group-[.active]:border-b-2">Image Description</div></button> <div id="long-description-content" data-testid="img-desc-txt"><!></div></div>`);
|
|
8162
8178
|
var root_2$b = /* @__PURE__ */ from_html(`<div class="flex flex-col justify-center items-center text-center"><div class="flex flex-col items-center"><div class="relative inline-block"><img/> <!></div> <!></div></div> <!>`, 1);
|
|
8163
8179
|
var root_1$j = /* @__PURE__ */ from_html(`<div class="w-full"><!></div>`);
|
|
8164
8180
|
function CommonMedia($$anchor, $$props) {
|
|
@@ -8291,7 +8307,7 @@ function CommonMedia($$anchor, $$props) {
|
|
|
8291
8307
|
var node_4 = sibling(div_1, 2);
|
|
8292
8308
|
{
|
|
8293
8309
|
var consequent_1 = ($$anchor4) => {
|
|
8294
|
-
var div_4 = root_5$
|
|
8310
|
+
var div_4 = root_5$6();
|
|
8295
8311
|
var button = child(div_4);
|
|
8296
8312
|
button.__click = toggleLongDescription;
|
|
8297
8313
|
button.__keydown = handleKeyDown;
|
|
@@ -8380,11 +8396,11 @@ create_custom_element(
|
|
|
8380
8396
|
true
|
|
8381
8397
|
);
|
|
8382
8398
|
var root_4$4 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-txt-ctr"><!></div>`);
|
|
8383
|
-
var root_5$
|
|
8384
|
-
var root_3$
|
|
8385
|
-
var root_7$
|
|
8399
|
+
var root_5$5 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-img-ctr"><!></div>`);
|
|
8400
|
+
var root_3$c = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
8401
|
+
var root_7$4 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-img-ctr"><!></div>`);
|
|
8386
8402
|
var root_8$4 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-txt-ctr"><!></div>`);
|
|
8387
|
-
var root_6$
|
|
8403
|
+
var root_6$3 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
8388
8404
|
var root_1$i = /* @__PURE__ */ from_html(`<div class="stimulus-section flex flex-col w-full"><!> <div><!></div></div>`);
|
|
8389
8405
|
function StimulusSection($$anchor, $$props) {
|
|
8390
8406
|
push($$props, true);
|
|
@@ -8473,7 +8489,7 @@ function StimulusSection($$anchor, $$props) {
|
|
|
8473
8489
|
var node_2 = child(div_1);
|
|
8474
8490
|
{
|
|
8475
8491
|
var consequent_3 = ($$anchor3) => {
|
|
8476
|
-
var fragment_2 = root_3$
|
|
8492
|
+
var fragment_2 = root_3$c();
|
|
8477
8493
|
var node_3 = first_child(fragment_2);
|
|
8478
8494
|
{
|
|
8479
8495
|
var consequent_1 = ($$anchor4) => {
|
|
@@ -8498,7 +8514,7 @@ function StimulusSection($$anchor, $$props) {
|
|
|
8498
8514
|
var node_5 = sibling(node_3, 2);
|
|
8499
8515
|
{
|
|
8500
8516
|
var consequent_2 = ($$anchor4) => {
|
|
8501
|
-
var div_3 = root_5$
|
|
8517
|
+
var div_3 = root_5$5();
|
|
8502
8518
|
let classes_2;
|
|
8503
8519
|
var node_6 = child(div_3);
|
|
8504
8520
|
CommonMedia(node_6, {
|
|
@@ -8533,11 +8549,11 @@ function StimulusSection($$anchor, $$props) {
|
|
|
8533
8549
|
append($$anchor3, fragment_2);
|
|
8534
8550
|
};
|
|
8535
8551
|
var alternate = ($$anchor3) => {
|
|
8536
|
-
var fragment_3 = root_6$
|
|
8552
|
+
var fragment_3 = root_6$3();
|
|
8537
8553
|
var node_7 = first_child(fragment_3);
|
|
8538
8554
|
{
|
|
8539
8555
|
var consequent_4 = ($$anchor4) => {
|
|
8540
|
-
var div_4 = root_7$
|
|
8556
|
+
var div_4 = root_7$4();
|
|
8541
8557
|
let classes_3;
|
|
8542
8558
|
var node_8 = child(div_4);
|
|
8543
8559
|
CommonMedia(node_8, {
|
|
@@ -8622,11 +8638,11 @@ create_custom_element(
|
|
|
8622
8638
|
true
|
|
8623
8639
|
);
|
|
8624
8640
|
var root_8$3 = /* @__PURE__ */ from_html(`<div class="divider my-6"></div>`);
|
|
8625
|
-
var root_13 = /* @__PURE__ */ from_html(`<div class="divider my-6"></div>`);
|
|
8626
|
-
var root_15 = /* @__PURE__ */ from_html(`<div aria-live="polite"><!></div>`);
|
|
8641
|
+
var root_13$1 = /* @__PURE__ */ from_html(`<div class="divider my-6"></div>`);
|
|
8642
|
+
var root_15$1 = /* @__PURE__ */ from_html(`<div aria-live="polite"><!></div>`);
|
|
8627
8643
|
var root_1$h = /* @__PURE__ */ from_html(`<div><!></div>`);
|
|
8628
|
-
var root_16$
|
|
8629
|
-
var root$
|
|
8644
|
+
var root_16$2 = /* @__PURE__ */ from_html(`<div><!></div>`);
|
|
8645
|
+
var root$f = /* @__PURE__ */ from_html(`<div class="prompt-container"><div><div></div> <!></div></div> <!>`, 1);
|
|
8630
8646
|
function PromptContainer($$anchor, $$props) {
|
|
8631
8647
|
push($$props, true);
|
|
8632
8648
|
let rubric = prop($$props, "rubric", 7, ""), prompt = prop($$props, "prompt", 7, ""), interactionType = prop($$props, "interactionType", 7), hasDivider = prop($$props, "hasDivider", 7, true), hasDividerBottom = prop($$props, "hasDividerBottom", 7, false), stimulus = prop($$props, "stimulus", 7, null), optionHasMedia = prop($$props, "optionHasMedia", 7, false), interaction = prop($$props, "interaction", 7), feedback = prop($$props, "feedback", 7);
|
|
@@ -8748,7 +8764,7 @@ function PromptContainer($$anchor, $$props) {
|
|
|
8748
8764
|
flushSync();
|
|
8749
8765
|
}
|
|
8750
8766
|
};
|
|
8751
|
-
var fragment = root$
|
|
8767
|
+
var fragment = root$f();
|
|
8752
8768
|
var div = first_child(fragment);
|
|
8753
8769
|
var div_1 = child(div);
|
|
8754
8770
|
var div_2 = child(div_1);
|
|
@@ -8823,7 +8839,7 @@ function PromptContainer($$anchor, $$props) {
|
|
|
8823
8839
|
var node_6 = first_child(fragment_10);
|
|
8824
8840
|
{
|
|
8825
8841
|
var consequent_5 = ($$anchor8) => {
|
|
8826
|
-
var div_5 = root_13();
|
|
8842
|
+
var div_5 = root_13$1();
|
|
8827
8843
|
append($$anchor8, div_5);
|
|
8828
8844
|
};
|
|
8829
8845
|
var alternate = ($$anchor8) => {
|
|
@@ -8831,7 +8847,7 @@ function PromptContainer($$anchor, $$props) {
|
|
|
8831
8847
|
var node_7 = first_child(fragment_11);
|
|
8832
8848
|
{
|
|
8833
8849
|
var consequent_6 = ($$anchor9) => {
|
|
8834
|
-
var div_6 = root_15();
|
|
8850
|
+
var div_6 = root_15$1();
|
|
8835
8851
|
var node_8 = child(div_6);
|
|
8836
8852
|
snippet(node_8, () => feedback() ?? noop);
|
|
8837
8853
|
reset(div_6);
|
|
@@ -8924,7 +8940,7 @@ function PromptContainer($$anchor, $$props) {
|
|
|
8924
8940
|
var node_9 = sibling(div_2, 2);
|
|
8925
8941
|
{
|
|
8926
8942
|
var consequent_7 = ($$anchor2) => {
|
|
8927
|
-
var div_7 = root_16$
|
|
8943
|
+
var div_7 = root_16$2();
|
|
8928
8944
|
var node_10 = child(div_7);
|
|
8929
8945
|
StimulusSection(node_10, {
|
|
8930
8946
|
get stimulusData() {
|
|
@@ -9011,13 +9027,13 @@ create_custom_element(
|
|
|
9011
9027
|
);
|
|
9012
9028
|
var root_1$g = /* @__PURE__ */ from_html(`<p class="text-charcoal text-sm leading-[19.2px] mb-2"> </p>`);
|
|
9013
9029
|
var root_2$a = /* @__PURE__ */ from_html(`<span class="text-gray-860 text-sm mb-0.5"> </span>`);
|
|
9014
|
-
var root_3$
|
|
9030
|
+
var root_3$b = /* @__PURE__ */ from_html(`<span class="text-gray-860 text-sm mb-0.5">Missing answer:</span>`);
|
|
9015
9031
|
var root_4$3 = /* @__PURE__ */ from_html(`<span aria-hidden="true" class="text-green-900 mr-1"><!></span>`);
|
|
9016
|
-
var root_5$
|
|
9032
|
+
var root_5$4 = /* @__PURE__ */ from_html(`<span aria-hidden="true"><!></span>`);
|
|
9017
9033
|
var root_9$2 = /* @__PURE__ */ from_html(`<span class="w-3 h-2 flex items-center justify-center"><!></span>`);
|
|
9018
9034
|
var root_8$2 = /* @__PURE__ */ from_html(`<span><!></span>`);
|
|
9019
|
-
var root_10$
|
|
9020
|
-
var root$
|
|
9035
|
+
var root_10$3 = /* @__PURE__ */ from_html(`<div class="w-full overflow-hidden bg-white rounded-b-lg flex items-center justify-center relative"><img class="mcq-opt-img min-h-[154px] max-h-[184px] w-auto max-w-full object-contain pointer-events-none" data-testid="mcq-opt-img" loading="lazy"/></div>`);
|
|
9036
|
+
var root$e = /* @__PURE__ */ from_html(`<!> <div class="relative"><button><span><span class="flex items-center justify-between w-full"><span class="flex items-center"><span> </span> <span class="flex flex-col px-3 text-left"><!> <!> <!></span></span> <span class="flex items-center"><!> <!> <!></span></span></span> <!></button> <!></div>`, 1);
|
|
9021
9037
|
function MCQOption($$anchor, $$props) {
|
|
9022
9038
|
push($$props, true);
|
|
9023
9039
|
let option = prop($$props, "option", 7), index2 = prop($$props, "index", 7), config = prop($$props, "config", 7), state2 = prop($$props, "state", 7), optionHasMedia = prop($$props, "optionHasMedia", 7, false), onOptionClick = prop($$props, "onOptionClick", 7), onExpandImage = prop($$props, "onExpandImage", 7);
|
|
@@ -9105,7 +9121,7 @@ function MCQOption($$anchor, $$props) {
|
|
|
9105
9121
|
flushSync();
|
|
9106
9122
|
}
|
|
9107
9123
|
};
|
|
9108
|
-
var fragment = root$
|
|
9124
|
+
var fragment = root$e();
|
|
9109
9125
|
var node = first_child(fragment);
|
|
9110
9126
|
{
|
|
9111
9127
|
var consequent = ($$anchor2) => {
|
|
@@ -9145,7 +9161,7 @@ function MCQOption($$anchor, $$props) {
|
|
|
9145
9161
|
var node_2 = sibling(node_1, 2);
|
|
9146
9162
|
{
|
|
9147
9163
|
var consequent_2 = ($$anchor2) => {
|
|
9148
|
-
var span_6 = root_3$
|
|
9164
|
+
var span_6 = root_3$b();
|
|
9149
9165
|
append($$anchor2, span_6);
|
|
9150
9166
|
};
|
|
9151
9167
|
if_block(node_2, ($$render) => {
|
|
@@ -9182,7 +9198,7 @@ function MCQOption($$anchor, $$props) {
|
|
|
9182
9198
|
var node_6 = sibling(node_4, 2);
|
|
9183
9199
|
{
|
|
9184
9200
|
var consequent_5 = ($$anchor2) => {
|
|
9185
|
-
var span_9 = root_5$
|
|
9201
|
+
var span_9 = root_5$4();
|
|
9186
9202
|
var node_7 = child(span_9);
|
|
9187
9203
|
{
|
|
9188
9204
|
var consequent_4 = ($$anchor3) => {
|
|
@@ -9249,7 +9265,7 @@ function MCQOption($$anchor, $$props) {
|
|
|
9249
9265
|
var node_11 = sibling(span, 2);
|
|
9250
9266
|
{
|
|
9251
9267
|
var consequent_8 = ($$anchor2) => {
|
|
9252
|
-
var div_1 = root_10$
|
|
9268
|
+
var div_1 = root_10$3();
|
|
9253
9269
|
var img = child(div_1);
|
|
9254
9270
|
reset(div_1);
|
|
9255
9271
|
template_effect(() => {
|
|
@@ -9447,8 +9463,8 @@ create_custom_element(
|
|
|
9447
9463
|
[],
|
|
9448
9464
|
true
|
|
9449
9465
|
);
|
|
9450
|
-
var root_3$
|
|
9451
|
-
var root$
|
|
9466
|
+
var root_3$a = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6"><!></div>`);
|
|
9467
|
+
var root$d = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
9452
9468
|
function MCQComponent($$anchor, $$props) {
|
|
9453
9469
|
push($$props, true);
|
|
9454
9470
|
let api = prop($$props, "api", 7), config = prop($$props, "config", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onstateChange = prop($$props, "onstateChange", 7);
|
|
@@ -9562,7 +9578,7 @@ function MCQComponent($$anchor, $$props) {
|
|
|
9562
9578
|
flushSync();
|
|
9563
9579
|
}
|
|
9564
9580
|
};
|
|
9565
|
-
var fragment = root$
|
|
9581
|
+
var fragment = root$d();
|
|
9566
9582
|
var node = first_child(fragment);
|
|
9567
9583
|
{
|
|
9568
9584
|
const interaction = ($$anchor2) => {
|
|
@@ -9585,7 +9601,7 @@ function MCQComponent($$anchor, $$props) {
|
|
|
9585
9601
|
var node_1 = first_child(fragment_2);
|
|
9586
9602
|
{
|
|
9587
9603
|
var consequent = ($$anchor3) => {
|
|
9588
|
-
var div = root_3$
|
|
9604
|
+
var div = root_3$a();
|
|
9589
9605
|
var node_2 = child(div);
|
|
9590
9606
|
MCQFeedback(node_2, {
|
|
9591
9607
|
get feedbackState() {
|
|
@@ -9666,8 +9682,8 @@ function MCQComponent($$anchor, $$props) {
|
|
|
9666
9682
|
}
|
|
9667
9683
|
create_custom_element(MCQComponent, { api: {}, config: {}, isDataSaving: {}, onstateChange: {} }, [], [], true);
|
|
9668
9684
|
const useSharedState = (loadedData) => {
|
|
9669
|
-
const
|
|
9670
|
-
const lastEvent =
|
|
9685
|
+
const events = loadedData.metadata?.interactions?.events;
|
|
9686
|
+
const lastEvent = events && events.length > 0 ? events[events.length - 1] : void 0;
|
|
9671
9687
|
const getIsFinished = () => loadedData.isFinished === true;
|
|
9672
9688
|
const getIsLocked = () => loadedData.isLocked === true;
|
|
9673
9689
|
const getHasLastEvent = () => !!lastEvent;
|
|
@@ -9749,7 +9765,7 @@ const useSharedState = (loadedData) => {
|
|
|
9749
9765
|
};
|
|
9750
9766
|
};
|
|
9751
9767
|
const isCategoriseEvent = (event2) => {
|
|
9752
|
-
return event2 !== void 0 && "answer_list" in event2;
|
|
9768
|
+
return event2 !== void 0 && event2 !== null && typeof event2 === "object" && "answer_list" in event2;
|
|
9753
9769
|
};
|
|
9754
9770
|
const createMCQInteraction = (config, sessionData) => {
|
|
9755
9771
|
const getCorrectOptions = () => config.correctAnswerIds || Object.values(config.options).filter((opt) => opt.correct_choice).map((opt) => opt.id);
|
|
@@ -10046,7 +10062,7 @@ function shouldSaveTextAnswer(currentAnswer, latestAnswer, isDataSaving) {
|
|
|
10046
10062
|
}
|
|
10047
10063
|
var root_1$e = /* @__PURE__ */ from_html(`<label class="inline-txb-lbl absolute left-0 top-0 bottom-0" data-testid="inline-txb-lbl" aria-hidden="true"><span class="absolute inset-0 bg-black opacity-5 rounded-l-lg w-8.5 h-10.5 top-1"></span> <span class="absolute font-semibold text-base leading-[19px] text-charcoal px-3 inline-block pt-[15px]"> </span></label>`);
|
|
10048
10064
|
var root_2$8 = /* @__PURE__ */ from_html(`<span class="w-6 h-6 absolute right-4 top-3.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
|
|
10049
|
-
var root$
|
|
10065
|
+
var root$c = /* @__PURE__ */ from_html(`<span><!> <input data-testid="input-inline-txb" placeholder="Type your answer here" autocomplete="off"/> <!></span>`);
|
|
10050
10066
|
function TypeInInlineField($$anchor, $$props) {
|
|
10051
10067
|
push($$props, true);
|
|
10052
10068
|
let index2 = prop($$props, "index", 7), value = prop($$props, "value", 15), readonly = prop($$props, "readonly", 7, false), showStatus = prop($$props, "showStatus", 7, false), isCorrect = prop($$props, "isCorrect", 7, null), isMultiple = prop($$props, "isMultiple", 7, false), marginClass = prop($$props, "marginClass", 7, ""), onBlur = prop($$props, "onBlur", 7);
|
|
@@ -10145,7 +10161,7 @@ function TypeInInlineField($$anchor, $$props) {
|
|
|
10145
10161
|
flushSync();
|
|
10146
10162
|
}
|
|
10147
10163
|
};
|
|
10148
|
-
var span = root$
|
|
10164
|
+
var span = root$c();
|
|
10149
10165
|
var node = child(span);
|
|
10150
10166
|
{
|
|
10151
10167
|
var consequent = ($$anchor2) => {
|
|
@@ -10223,11 +10239,11 @@ create_custom_element(
|
|
|
10223
10239
|
true
|
|
10224
10240
|
);
|
|
10225
10241
|
var root_1$d = /* @__PURE__ */ from_html(`<p class="p2 text-red-400 mb-3">Student's answer</p>`);
|
|
10226
|
-
var root_3$
|
|
10242
|
+
var root_3$9 = /* @__PURE__ */ from_html(`<span class="w-8 h-8 absolute right-2 top-2.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
|
|
10227
10243
|
var root_2$7 = /* @__PURE__ */ from_html(`<div class="relative"><textarea id="answerText" data-testid="input-long-txa" autocomplete="off" rows="3"></textarea> <!></div>`);
|
|
10228
|
-
var root_5$
|
|
10244
|
+
var root_5$3 = /* @__PURE__ */ from_html(`<span class="w-8 h-8 absolute right-2 top-2.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
|
|
10229
10245
|
var root_4$1 = /* @__PURE__ */ from_html(`<div class="relative"><input data-testid="input-short-txb" autocomplete="off"/> <!></div>`);
|
|
10230
|
-
var root$
|
|
10246
|
+
var root$b = /* @__PURE__ */ from_html(`<div class="relative"><!> <!></div>`);
|
|
10231
10247
|
function TypeInTextField($$anchor, $$props) {
|
|
10232
10248
|
push($$props, true);
|
|
10233
10249
|
let value = prop($$props, "value", 15), variant = prop($$props, "variant", 7), readonly = prop($$props, "readonly", 7, false), disabled = prop($$props, "disabled", 7, false), showStatus = prop($$props, "showStatus", 7, false), isCorrect = prop($$props, "isCorrect", 7, null), isSkipped = prop($$props, "isSkipped", 7, false), onBlur = prop($$props, "onBlur", 7);
|
|
@@ -10310,7 +10326,7 @@ function TypeInTextField($$anchor, $$props) {
|
|
|
10310
10326
|
flushSync();
|
|
10311
10327
|
}
|
|
10312
10328
|
};
|
|
10313
|
-
var div = root$
|
|
10329
|
+
var div = root$b();
|
|
10314
10330
|
var node = child(div);
|
|
10315
10331
|
{
|
|
10316
10332
|
var consequent = ($$anchor2) => {
|
|
@@ -10333,7 +10349,7 @@ function TypeInTextField($$anchor, $$props) {
|
|
|
10333
10349
|
var node_2 = sibling(textarea, 2);
|
|
10334
10350
|
{
|
|
10335
10351
|
var consequent_1 = ($$anchor3) => {
|
|
10336
|
-
var span = root_3$
|
|
10352
|
+
var span = root_3$9();
|
|
10337
10353
|
var node_3 = child(span);
|
|
10338
10354
|
{
|
|
10339
10355
|
let $0 = /* @__PURE__ */ user_derived(() => isSkipped() ? false : Boolean(isCorrect()));
|
|
@@ -10385,7 +10401,7 @@ function TypeInTextField($$anchor, $$props) {
|
|
|
10385
10401
|
var node_4 = sibling(input, 2);
|
|
10386
10402
|
{
|
|
10387
10403
|
var consequent_3 = ($$anchor3) => {
|
|
10388
|
-
var span_1 = root_5$
|
|
10404
|
+
var span_1 = root_5$3();
|
|
10389
10405
|
var node_5 = child(span_1);
|
|
10390
10406
|
{
|
|
10391
10407
|
let $0 = /* @__PURE__ */ user_derived(() => isSkipped() ? false : Boolean(isCorrect()));
|
|
@@ -10512,9 +10528,9 @@ action.update = n.update;
|
|
|
10512
10528
|
action.destroy = n.destroy;
|
|
10513
10529
|
var root_1$c = /* @__PURE__ */ from_html(`<label data-testid="qn-number-txt" aria-hidden="true"><span></span> <span> </span></label>`);
|
|
10514
10530
|
var root_2$6 = /* @__PURE__ */ from_html(`<div role="textbox" aria-readonly="true"><!></div>`);
|
|
10515
|
-
var root_3$
|
|
10531
|
+
var root_3$8 = /* @__PURE__ */ from_html(`<textarea rows="1" readonly=""></textarea>`);
|
|
10516
10532
|
var root_4 = /* @__PURE__ */ from_html(`<span class="w-6 h-6 absolute right-4 top-[calc(50%+0.375rem)] -translate-y-1/2 flex items-center justify-center"><!></span>`);
|
|
10517
|
-
var root$
|
|
10533
|
+
var root$a = /* @__PURE__ */ from_html(`<div><!> <!> <!></div>`);
|
|
10518
10534
|
function AnswerDisplay($$anchor, $$props) {
|
|
10519
10535
|
push($$props, true);
|
|
10520
10536
|
let answer = prop($$props, "answer", 7), isCorrect = prop($$props, "isCorrect", 7), questionNumber = prop($$props, "questionNumber", 7), type = prop($$props, "type", 7), showQuestionNumber = prop($$props, "showQuestionNumber", 7), showResultIcon = prop($$props, "showResultIcon", 7), comparison = prop($$props, "comparison", 7), interactionType = prop($$props, "interactionType", 7);
|
|
@@ -10642,7 +10658,7 @@ function AnswerDisplay($$anchor, $$props) {
|
|
|
10642
10658
|
flushSync();
|
|
10643
10659
|
}
|
|
10644
10660
|
};
|
|
10645
|
-
var div = root$
|
|
10661
|
+
var div = root$a();
|
|
10646
10662
|
var node = child(div);
|
|
10647
10663
|
{
|
|
10648
10664
|
var consequent = ($$anchor2) => {
|
|
@@ -10694,7 +10710,7 @@ function AnswerDisplay($$anchor, $$props) {
|
|
|
10694
10710
|
append($$anchor2, div_1);
|
|
10695
10711
|
};
|
|
10696
10712
|
var alternate = ($$anchor2) => {
|
|
10697
|
-
var textarea = root_3$
|
|
10713
|
+
var textarea = root_3$8();
|
|
10698
10714
|
remove_textarea_child(textarea);
|
|
10699
10715
|
action$1(textarea, ($$node) => action?.($$node));
|
|
10700
10716
|
template_effect(() => {
|
|
@@ -10756,7 +10772,7 @@ create_custom_element(
|
|
|
10756
10772
|
[],
|
|
10757
10773
|
true
|
|
10758
10774
|
);
|
|
10759
|
-
var root$
|
|
10775
|
+
var root$9 = /* @__PURE__ */ from_html(`<div class="flex flex-col md:flex-row"><div class="flex flex-col md:w-1/2 md:pr-4"><p data-testid="ans-sum-stud-hdr">Student's answers:</p> <!></div> <div><p data-testid="ans-sum-corr-hdr">Correct answers:</p> <!></div></div>`);
|
|
10760
10776
|
function ComparisonRow($$anchor, $$props) {
|
|
10761
10777
|
push($$props, true);
|
|
10762
10778
|
let comparison = prop($$props, "comparison", 7), showHeaders = prop($$props, "showHeaders", 7, false), isMultipleAnswers = prop($$props, "isMultipleAnswers", 7, false), isFirstRow = prop($$props, "isFirstRow", 7, false), interactionType = prop($$props, "interactionType", 7);
|
|
@@ -10817,7 +10833,7 @@ function ComparisonRow($$anchor, $$props) {
|
|
|
10817
10833
|
flushSync();
|
|
10818
10834
|
}
|
|
10819
10835
|
};
|
|
10820
|
-
var div = root$
|
|
10836
|
+
var div = root$9();
|
|
10821
10837
|
var div_1 = child(div);
|
|
10822
10838
|
var p = child(div_1);
|
|
10823
10839
|
var node = sibling(p, 2);
|
|
@@ -10997,7 +11013,7 @@ create_custom_element(
|
|
|
10997
11013
|
);
|
|
10998
11014
|
var root_1$a = /* @__PURE__ */ from_html(`<div aria-hidden="true" class="flex items-center text-charcoal mt-2"><!> <span class="p3">There is more than one possible correct answer for this question.</span></div>`);
|
|
10999
11015
|
var root_2$5 = /* @__PURE__ */ from_html(`<div class="mt-4"><!></div>`);
|
|
11000
|
-
var root$
|
|
11016
|
+
var root$8 = /* @__PURE__ */ from_html(`<!> <!> <!>`, 1);
|
|
11001
11017
|
function TypeInFeedback($$anchor, $$props) {
|
|
11002
11018
|
push($$props, true);
|
|
11003
11019
|
let config = prop($$props, "config", 7), feedbackState = prop($$props, "feedbackState", 7), isInteractiveMode2 = prop($$props, "isInteractiveMode", 7), correctAnswersFlat = prop($$props, "correctAnswersFlat", 7), allCorrectAnswers = prop($$props, "allCorrectAnswers", 7), sessionAnswersFlat = prop($$props, "sessionAnswersFlat", 7), answerResults = prop($$props, "answerResults", 7);
|
|
@@ -11080,7 +11096,7 @@ function TypeInFeedback($$anchor, $$props) {
|
|
|
11080
11096
|
flushSync();
|
|
11081
11097
|
}
|
|
11082
11098
|
};
|
|
11083
|
-
var fragment = root$
|
|
11099
|
+
var fragment = root$8();
|
|
11084
11100
|
var node = first_child(fragment);
|
|
11085
11101
|
{
|
|
11086
11102
|
var consequent = ($$anchor2) => {
|
|
@@ -11177,10 +11193,10 @@ create_custom_element(
|
|
|
11177
11193
|
[],
|
|
11178
11194
|
true
|
|
11179
11195
|
);
|
|
11180
|
-
var root_3$
|
|
11196
|
+
var root_3$7 = /* @__PURE__ */ from_html(`<p></p>`);
|
|
11181
11197
|
var root_8$1 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 bg-transparent z-50"></div>`);
|
|
11182
11198
|
var root_2$4 = /* @__PURE__ */ from_html(`<div class="inline-typein-container mt-6 relative"><!> <div class="divider my-6"></div> <!></div>`);
|
|
11183
|
-
var root_10$
|
|
11199
|
+
var root_10$2 = /* @__PURE__ */ from_html(`<div class="mb-4"><!></div>`);
|
|
11184
11200
|
var root_9$1 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
11185
11201
|
function TypeInComponent($$anchor, $$props) {
|
|
11186
11202
|
push($$props, true);
|
|
@@ -11384,7 +11400,7 @@ function TypeInComponent($$anchor, $$props) {
|
|
|
11384
11400
|
var div = root_2$4();
|
|
11385
11401
|
var node_1 = child(div);
|
|
11386
11402
|
each(node_1, 17, () => segments, index, ($$anchor4, segment) => {
|
|
11387
|
-
var p = root_3$
|
|
11403
|
+
var p = root_3$7();
|
|
11388
11404
|
each(p, 21, () => get$1(segment).parts, index, ($$anchor5, part, partIndex) => {
|
|
11389
11405
|
var fragment_2 = comment();
|
|
11390
11406
|
var node_2 = first_child(fragment_2);
|
|
@@ -11470,7 +11486,7 @@ function TypeInComponent($$anchor, $$props) {
|
|
|
11470
11486
|
var node_6 = first_child(fragment_6);
|
|
11471
11487
|
{
|
|
11472
11488
|
var consequent_4 = ($$anchor4) => {
|
|
11473
|
-
var div_2 = root_10$
|
|
11489
|
+
var div_2 = root_10$2();
|
|
11474
11490
|
var node_7 = child(div_2);
|
|
11475
11491
|
{
|
|
11476
11492
|
let $02 = /* @__PURE__ */ user_derived(() => get$1(feedbackState).isResultCorrect ? "correct" : "incorrect");
|
|
@@ -14081,10 +14097,10 @@ function isInt(value) {
|
|
|
14081
14097
|
})(parseFloat(value));
|
|
14082
14098
|
}
|
|
14083
14099
|
var root_1$9 = /* @__PURE__ */ from_html(`<span class="text-green-800 preview-icon"><!></span>`);
|
|
14084
|
-
var root_3$
|
|
14085
|
-
var root_5$
|
|
14086
|
-
var root_7$
|
|
14087
|
-
var root$
|
|
14100
|
+
var root_3$6 = /* @__PURE__ */ from_html(`<span class="text-red-800 preview-icon"><!></span>`);
|
|
14101
|
+
var root_5$2 = /* @__PURE__ */ from_html(`<span class="text-green-800"><!></span>`);
|
|
14102
|
+
var root_7$3 = /* @__PURE__ */ from_html(`<span class="preview-vertical hidden"><!></span>`);
|
|
14103
|
+
var root$7 = /* @__PURE__ */ from_html(`<button data-item-button=""><span><!></span> <div><span></span> <span class="absolute"><!> <!></span></div></button>`);
|
|
14088
14104
|
function CategoriseItem($$anchor, $$props) {
|
|
14089
14105
|
push($$props, true);
|
|
14090
14106
|
let itemId = prop($$props, "itemId", 7), itemText = prop($$props, "itemText", 7), containerId = prop($$props, "containerId", 7), mode = prop($$props, "mode", 7), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isCollapsed = prop($$props, "isCollapsed", 7, false), resultType = prop($$props, "resultType", 7, ""), isCurrentMobileItem = prop($$props, "isCurrentMobileItem", 7, true), isClonedItem = prop($$props, "isClonedItem", 7, false), isConsideredItem = prop($$props, "isConsideredItem", 7, false), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), onclick = prop($$props, "onclick", 7), onfocus = prop($$props, "onfocus", 7), onblur = prop($$props, "onblur", 7), onkeydown = prop($$props, "onkeydown", 7);
|
|
@@ -14376,7 +14392,7 @@ function CategoriseItem($$anchor, $$props) {
|
|
|
14376
14392
|
flushSync();
|
|
14377
14393
|
}
|
|
14378
14394
|
};
|
|
14379
|
-
var button = root$
|
|
14395
|
+
var button = root$7();
|
|
14380
14396
|
button.__click = selectItem;
|
|
14381
14397
|
button.__touchstart = handleTouchStart;
|
|
14382
14398
|
button.__touchmove = handleTouchMove;
|
|
@@ -14412,7 +14428,7 @@ function CategoriseItem($$anchor, $$props) {
|
|
|
14412
14428
|
var node_3 = first_child(fragment);
|
|
14413
14429
|
{
|
|
14414
14430
|
var consequent_1 = ($$anchor3) => {
|
|
14415
|
-
var span_4 = root_3$
|
|
14431
|
+
var span_4 = root_3$6();
|
|
14416
14432
|
var node_4 = child(span_4);
|
|
14417
14433
|
SvgLoader(node_4, {
|
|
14418
14434
|
svgName: "errorSolid",
|
|
@@ -14427,7 +14443,7 @@ function CategoriseItem($$anchor, $$props) {
|
|
|
14427
14443
|
var node_5 = first_child(fragment_1);
|
|
14428
14444
|
{
|
|
14429
14445
|
var consequent_2 = ($$anchor4) => {
|
|
14430
|
-
var span_5 = root_5$
|
|
14446
|
+
var span_5 = root_5$2();
|
|
14431
14447
|
var node_6 = child(span_5);
|
|
14432
14448
|
SvgLoader(node_6, {
|
|
14433
14449
|
svgName: "success",
|
|
@@ -14474,7 +14490,7 @@ function CategoriseItem($$anchor, $$props) {
|
|
|
14474
14490
|
var node_7 = sibling(node_1, 2);
|
|
14475
14491
|
{
|
|
14476
14492
|
var consequent_3 = ($$anchor2) => {
|
|
14477
|
-
var span_6 = root_7$
|
|
14493
|
+
var span_6 = root_7$3();
|
|
14478
14494
|
var node_8 = child(span_6);
|
|
14479
14495
|
SvgLoader(node_8, {
|
|
14480
14496
|
svgName: "gripVertical",
|
|
@@ -14544,9 +14560,9 @@ create_custom_element(
|
|
|
14544
14560
|
true
|
|
14545
14561
|
);
|
|
14546
14562
|
var root_1$8 = /* @__PURE__ */ from_html(`<button tabindex="0"></button>`);
|
|
14547
|
-
var root_7$
|
|
14548
|
-
var root_6$
|
|
14549
|
-
var root$
|
|
14563
|
+
var root_7$2 = /* @__PURE__ */ from_html(`<div class="w-full text-base text-charcoal font-semibold mt-1 mb-2">Missing answers:</div>`);
|
|
14564
|
+
var root_6$2 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
14565
|
+
var root$6 = /* @__PURE__ */ from_html(`<!> <section><!></section>`, 1);
|
|
14550
14566
|
function CategoriseDndContainer($$anchor, $$props) {
|
|
14551
14567
|
push($$props, true);
|
|
14552
14568
|
let containerId = prop($$props, "containerId", 7), containerLabel = prop($$props, "containerLabel", 7, ""), containerClass = prop($$props, "containerClass", 7, ""), showButton = prop($$props, "showButton", 7, true), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isMobile = prop($$props, "isMobile", 7, false), mode = prop($$props, "mode", 7), paddingTop = prop($$props, "paddingTop", 7, 0), dndType = prop($$props, "dndType", 7, "categorise"), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), isCollapsed = prop($$props, "isCollapsed", 7, false), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), onitemfocus = prop($$props, "onitemfocus", 7), onitemblur = prop($$props, "onitemblur", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7), children = prop($$props, "children", 7);
|
|
@@ -14837,7 +14853,7 @@ function CategoriseDndContainer($$anchor, $$props) {
|
|
|
14837
14853
|
flushSync();
|
|
14838
14854
|
}
|
|
14839
14855
|
};
|
|
14840
|
-
var fragment = root$
|
|
14856
|
+
var fragment = root$6();
|
|
14841
14857
|
var node = first_child(fragment);
|
|
14842
14858
|
{
|
|
14843
14859
|
var consequent = ($$anchor2) => {
|
|
@@ -14886,11 +14902,11 @@ function CategoriseDndContainer($$anchor, $$props) {
|
|
|
14886
14902
|
var node_5 = first_child(fragment_4);
|
|
14887
14903
|
each(node_5, 19, () => get$1(localItems), (item) => `${item.id}-${get$1(dragCounter)}`, ($$anchor4, item, index2) => {
|
|
14888
14904
|
const itemResultType = /* @__PURE__ */ user_derived(() => getItemResultType(get$1(item).isClonedItem && get$1(item).cloneId ? get$1(item).cloneId : get$1(item).id));
|
|
14889
|
-
var fragment_5 = root_6$
|
|
14905
|
+
var fragment_5 = root_6$2();
|
|
14890
14906
|
var node_6 = first_child(fragment_5);
|
|
14891
14907
|
{
|
|
14892
14908
|
var consequent_3 = ($$anchor5) => {
|
|
14893
|
-
var div = root_7$
|
|
14909
|
+
var div = root_7$2();
|
|
14894
14910
|
append($$anchor5, div);
|
|
14895
14911
|
};
|
|
14896
14912
|
if_block(node_6, ($$render) => {
|
|
@@ -15008,9 +15024,9 @@ create_custom_element(
|
|
|
15008
15024
|
true
|
|
15009
15025
|
);
|
|
15010
15026
|
var root_2$3 = /* @__PURE__ */ from_svg(`<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-testid="icon-chevron-coll"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg>`);
|
|
15011
|
-
var root_3$
|
|
15027
|
+
var root_3$5 = /* @__PURE__ */ from_svg(`<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-testid="icon-chevron-exp"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"></path></svg>`);
|
|
15012
15028
|
var root_1$7 = /* @__PURE__ */ from_html(`<button type="button" class="focus-ring flex items-center rounded-[32px] p-1.5 text-charcoal text-sm border border-gray-800 bg-gray-50 min-w-[85px] ml-3 whitespace-nowrap active:raw-focus-ring active:bg-black-55"><span class="mx-0.5"> </span> <span class="w-4 h-4 text-inherit flex items-center justify-center"><!></span></button>`);
|
|
15013
|
-
var root$
|
|
15029
|
+
var root$5 = /* @__PURE__ */ from_html(`<div role="group" data-testid="cat-ctr"><div><!> <!></div> <!></div>`);
|
|
15014
15030
|
function CategoriseCategory($$anchor, $$props) {
|
|
15015
15031
|
push($$props, true);
|
|
15016
15032
|
let categoryId = prop($$props, "categoryId", 7), categoryTitle = prop($$props, "categoryTitle", 7), categoryIndex = prop($$props, "categoryIndex", 7, 1), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isCollapsed = prop($$props, "isCollapsed", 7, false), isDraggingOver = prop($$props, "isDraggingOver", 7, false), dropContainerId = prop($$props, "dropContainerId", 7, void 0), hasAddItemAnimation = prop($$props, "hasAddItemAnimation", 7, false), dragSourceContainerId = prop($$props, "dragSourceContainerId", 7, void 0), mode = prop($$props, "mode", 7), isMobile = prop($$props, "isMobile", 7, false), hasStimulus = prop($$props, "hasStimulus", 7, false), dndType = prop($$props, "dndType", 7, "categorise"), tabindex = prop($$props, "tabindex", 7, 0), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), ontogglecollapse = prop($$props, "ontogglecollapse", 7), onitemfocus = prop($$props, "onitemfocus", 7), onitemblur = prop($$props, "onitemblur", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), onkeydown = prop($$props, "onkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7);
|
|
@@ -15252,7 +15268,7 @@ function CategoriseCategory($$anchor, $$props) {
|
|
|
15252
15268
|
flushSync();
|
|
15253
15269
|
}
|
|
15254
15270
|
};
|
|
15255
|
-
var div = root$
|
|
15271
|
+
var div = root$5();
|
|
15256
15272
|
div.__keydown = function(...$$args) {
|
|
15257
15273
|
(onkeydown() || void 0)?.apply(this, $$args);
|
|
15258
15274
|
};
|
|
@@ -15287,7 +15303,7 @@ function CategoriseCategory($$anchor, $$props) {
|
|
|
15287
15303
|
append($$anchor3, svg);
|
|
15288
15304
|
};
|
|
15289
15305
|
var alternate = ($$anchor3) => {
|
|
15290
|
-
var svg_1 = root_3$
|
|
15306
|
+
var svg_1 = root_3$5();
|
|
15291
15307
|
append($$anchor3, svg_1);
|
|
15292
15308
|
};
|
|
15293
15309
|
if_block(node_2, ($$render) => {
|
|
@@ -15435,8 +15451,8 @@ create_custom_element(
|
|
|
15435
15451
|
var root_1$6 = /* @__PURE__ */ from_html(`<div role="group" tabindex="-1" class="text-base leading-4 text-gray-800 p-5 border border-gray-400 rounded-lg border-dashed
|
|
15436
15452
|
absolute top-12 right-4 left-4 bottom-4 flex items-center justify-center !bg-white md:top-20">Word Bin is empty</div>`);
|
|
15437
15453
|
var root_2$2 = /* @__PURE__ */ from_html(`<button type="button" class="focus-ring p-2 text-blue-1000 rounded-md w-11 h-11 mt-9 td:hover:bg-black-50 active:bg-black-60 disabled:text-gray-40 disabled:hover:bg-white md:hidden" aria-label="Left"><span class="w-6 h-6 text-inherit flex items-center justify-center"><!></span></button>`);
|
|
15438
|
-
var root_3$
|
|
15439
|
-
var root$
|
|
15454
|
+
var root_3$4 = /* @__PURE__ */ from_html(`<button type="button" class="focus-ring p-2 text-blue-1000 rounded-md w-11 h-11 mt-9 td:hover:bg-black-50 active:bg-black-60 disabled:text-gray-40 disabled:hover:bg-white md:hidden" aria-label="Right"><span class="w-6 h-6 text-inherit flex items-center justify-center ml-[3px]"><!></span></button>`);
|
|
15455
|
+
var root$4 = /* @__PURE__ */ from_html(`<div role="group" data-testid="cat-bin-grp"><div><span class="text-base leading-5 !text-gray-900 font-semibold md:mb-2 md:item-heading" aria-hidden="true">Word Bin </span> <span class="text-base leading-5 !text-gray-900 md:item-heading" aria-hidden="true"> </span></div> <div class="flex items-center justify-between px-4 min-h-[133px] md:min-h-0 md:block md:px-0 md:justify-normal"><!> <!> <!> <!></div></div>`);
|
|
15440
15456
|
function CategoriseWordBin($$anchor, $$props) {
|
|
15441
15457
|
push($$props, true);
|
|
15442
15458
|
let containerId = prop($$props, "containerId", 7), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isDraggingOver = prop($$props, "isDraggingOver", 7, false), dropContainerId = prop($$props, "dropContainerId", 7, void 0), hasAddItemAnimation = prop($$props, "hasAddItemAnimation", 7, false), dragSourceContainerId = prop($$props, "dragSourceContainerId", 7, void 0), mode = prop($$props, "mode", 7), isMobile = prop($$props, "isMobile", 7, false), currentMobileIndex = prop($$props, "currentMobileIndex", 7, 0), totalItems = prop($$props, "totalItems", 7, 0), tabindex = prop($$props, "tabindex", 7, 0), dndType = prop($$props, "dndType", 7, "categorise"), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), onnavigateitem = prop($$props, "onnavigateitem", 7), onitemfocus = prop($$props, "onitemfocus", 7), onitemblur = prop($$props, "onitemblur", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7), onkeydown = prop($$props, "onkeydown", 7), onfocus = prop($$props, "onfocus", 7, void 0);
|
|
@@ -15696,7 +15712,7 @@ function CategoriseWordBin($$anchor, $$props) {
|
|
|
15696
15712
|
flushSync();
|
|
15697
15713
|
}
|
|
15698
15714
|
};
|
|
15699
|
-
var div = root$
|
|
15715
|
+
var div = root$4();
|
|
15700
15716
|
div.__keydown = function(...$$args) {
|
|
15701
15717
|
(onkeydown() || void 0)?.apply(this, $$args);
|
|
15702
15718
|
};
|
|
@@ -15803,7 +15819,7 @@ function CategoriseWordBin($$anchor, $$props) {
|
|
|
15803
15819
|
var node_4 = sibling(node_3, 2);
|
|
15804
15820
|
{
|
|
15805
15821
|
var consequent_2 = ($$anchor2) => {
|
|
15806
|
-
var button_1 = root_3$
|
|
15822
|
+
var button_1 = root_3$4();
|
|
15807
15823
|
button_1.__click = () => handleNavigate("right");
|
|
15808
15824
|
button_1.__keydown = (e2) => {
|
|
15809
15825
|
if (e2.key === "Enter" || e2.key === " ") {
|
|
@@ -15878,7 +15894,7 @@ create_custom_element(
|
|
|
15878
15894
|
["wordBinElement"],
|
|
15879
15895
|
true
|
|
15880
15896
|
);
|
|
15881
|
-
var root$
|
|
15897
|
+
var root$3 = /* @__PURE__ */ from_html(`<div><!></div>`);
|
|
15882
15898
|
function CategoriseCategoryList($$anchor, $$props) {
|
|
15883
15899
|
push($$props, true);
|
|
15884
15900
|
let hasStimulus = prop($$props, "hasStimulus", 7, false), children = prop($$props, "children", 7);
|
|
@@ -15898,7 +15914,7 @@ function CategoriseCategoryList($$anchor, $$props) {
|
|
|
15898
15914
|
flushSync();
|
|
15899
15915
|
}
|
|
15900
15916
|
};
|
|
15901
|
-
var div = root$
|
|
15917
|
+
var div = root$3();
|
|
15902
15918
|
var node = child(div);
|
|
15903
15919
|
snippet(node, children);
|
|
15904
15920
|
reset(div);
|
|
@@ -17639,17 +17655,17 @@ function useDropdownPosition(config) {
|
|
|
17639
17655
|
}
|
|
17640
17656
|
var root_1$3 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 bg-transparent z-10"></div>`);
|
|
17641
17657
|
var root_2 = /* @__PURE__ */ from_html(`<div class="bg-black bg-opacity-5 h-full flex flex-none justify-center items-center"><div class="inline-txb-lbl font-semibold text-base leading-[19px] text-charcoal px-3 flex items-center" data-testid="inline-txb-lbl" aria-hidden="true"> </div></div>`);
|
|
17642
|
-
var root_3$
|
|
17643
|
-
var root_6 = /* @__PURE__ */ from_html(`<span class="text-green-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Correct</span></span>`);
|
|
17644
|
-
var root_7 = /* @__PURE__ */ from_html(`<span class="text-red-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Incorrect</span></span>`);
|
|
17658
|
+
var root_3$3 = /* @__PURE__ */ from_html(`<span class="text-green-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Correct</span></span>`);
|
|
17659
|
+
var root_6$1 = /* @__PURE__ */ from_html(`<span class="text-green-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Correct</span></span>`);
|
|
17660
|
+
var root_7$1 = /* @__PURE__ */ from_html(`<span class="text-red-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Incorrect</span></span>`);
|
|
17645
17661
|
var root_8 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
|
|
17646
17662
|
var root_9 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
|
|
17647
17663
|
var root_12 = /* @__PURE__ */ from_html(`<span class="flex items-center text-green-900" aria-hidden="true"><!></span>`);
|
|
17648
|
-
var root_14 = /* @__PURE__ */ from_html(`<span class="flex items-center text-red-900" aria-hidden="true"><!></span>`);
|
|
17649
|
-
var root_16 = /* @__PURE__ */ from_html(`<span class="flex items-center text-blue-850" aria-hidden="true"><!></span>`);
|
|
17650
|
-
var root_11 = /* @__PURE__ */ from_html(`<li role="option" tabindex="-1"><div class="p-0.5 flex justify-between w-full text-base whitespace-normal"><!> <!></div></li>`);
|
|
17651
|
-
var root_10 = /* @__PURE__ */ from_html(`<ul class="drp-list dropdown-menu block" data-testid="drp-list" role="listbox" tabindex="-1"></ul>`);
|
|
17652
|
-
var root$
|
|
17664
|
+
var root_14$1 = /* @__PURE__ */ from_html(`<span class="flex items-center text-red-900" aria-hidden="true"><!></span>`);
|
|
17665
|
+
var root_16$1 = /* @__PURE__ */ from_html(`<span class="flex items-center text-blue-850" aria-hidden="true"><!></span>`);
|
|
17666
|
+
var root_11$1 = /* @__PURE__ */ from_html(`<li role="option" tabindex="-1"><div class="p-0.5 flex justify-between w-full text-base whitespace-normal"><!> <!></div></li>`);
|
|
17667
|
+
var root_10$1 = /* @__PURE__ */ from_html(`<ul class="drp-list dropdown-menu block" data-testid="drp-list" role="listbox" tabindex="-1"></ul>`);
|
|
17668
|
+
var root$2 = /* @__PURE__ */ from_html(`<span class="dropdown inline-block relative align-middle"><span class="sr-only"> </span> <!> <div role="combobox" data-testid="drp-cmb" aria-haspopup="listbox" tabindex="0"><!> <div class="px-4 flex flex-1 min-w-0 align-middle truncate items-center justify-between w-full"><span><!></span> <div class="flex items-center"><!> <!></div></div></div> <!></span>`);
|
|
17653
17669
|
function DropdownContainer($$anchor, $$props) {
|
|
17654
17670
|
push($$props, true);
|
|
17655
17671
|
let dropdownId = prop($$props, "dropdownId", 7), dropdownNumber = prop($$props, "dropdownNumber", 7), options = prop($$props, "options", 7), selected = prop($$props, "selected", 7), correctAnswers = prop($$props, "correctAnswers", 23, () => []), isCorrect = prop($$props, "isCorrect", 7, false), isFinished = prop($$props, "isFinished", 7, false), isLocked = prop($$props, "isLocked", 7, false), isDataSaving = prop($$props, "isDataSaving", 7, false), mode = prop($$props, "mode", 7), showFeedback = prop($$props, "showFeedback", 7, false), showNumbering = prop($$props, "showNumbering", 7, true), onselect = prop($$props, "onselect", 7), viewportBuffer = prop($$props, "viewportBuffer", 7, 60);
|
|
@@ -18022,7 +18038,7 @@ function DropdownContainer($$anchor, $$props) {
|
|
|
18022
18038
|
flushSync();
|
|
18023
18039
|
}
|
|
18024
18040
|
};
|
|
18025
|
-
var span = root$
|
|
18041
|
+
var span = root$2();
|
|
18026
18042
|
var span_1 = child(span);
|
|
18027
18043
|
var text = child(span_1, true);
|
|
18028
18044
|
reset(span_1);
|
|
@@ -18067,7 +18083,7 @@ function DropdownContainer($$anchor, $$props) {
|
|
|
18067
18083
|
var node_3 = child(div_5);
|
|
18068
18084
|
{
|
|
18069
18085
|
var consequent_2 = ($$anchor2) => {
|
|
18070
|
-
var span_3 = root_3$
|
|
18086
|
+
var span_3 = root_3$3();
|
|
18071
18087
|
var span_4 = child(span_3);
|
|
18072
18088
|
var node_4 = child(span_4);
|
|
18073
18089
|
SvgLoader(node_4, { svgName: "successSolid", className: "correct-icon" });
|
|
@@ -18085,7 +18101,7 @@ function DropdownContainer($$anchor, $$props) {
|
|
|
18085
18101
|
var node_6 = first_child(fragment_1);
|
|
18086
18102
|
{
|
|
18087
18103
|
var consequent_3 = ($$anchor4) => {
|
|
18088
|
-
var span_5 = root_6();
|
|
18104
|
+
var span_5 = root_6$1();
|
|
18089
18105
|
var span_6 = child(span_5);
|
|
18090
18106
|
var node_7 = child(span_6);
|
|
18091
18107
|
SvgLoader(node_7, { svgName: "successSolid", className: "correct-icon" });
|
|
@@ -18095,7 +18111,7 @@ function DropdownContainer($$anchor, $$props) {
|
|
|
18095
18111
|
append($$anchor4, span_5);
|
|
18096
18112
|
};
|
|
18097
18113
|
var alternate = ($$anchor4) => {
|
|
18098
|
-
var span_7 = root_7();
|
|
18114
|
+
var span_7 = root_7$1();
|
|
18099
18115
|
var span_8 = child(span_7);
|
|
18100
18116
|
var node_8 = child(span_8);
|
|
18101
18117
|
SvgLoader(node_8, { svgName: "errorSolid", className: "incorrect-icon" });
|
|
@@ -18168,13 +18184,13 @@ function DropdownContainer($$anchor, $$props) {
|
|
|
18168
18184
|
var node_12 = sibling(div_1, 2);
|
|
18169
18185
|
{
|
|
18170
18186
|
var consequent_9 = ($$anchor2) => {
|
|
18171
|
-
var ul = root_10();
|
|
18187
|
+
var ul = root_10$1();
|
|
18172
18188
|
each(ul, 21, () => get$1(initializedOptions), index, ($$anchor3, option, index2) => {
|
|
18173
18189
|
const iconType = /* @__PURE__ */ user_derived(() => getOptionIcon(get$1(option)));
|
|
18174
18190
|
const showCurrentOption = /* @__PURE__ */ user_derived(() => isCurrentOption(index2));
|
|
18175
18191
|
const showHoverOption = /* @__PURE__ */ user_derived(() => shouldShowHover(index2));
|
|
18176
18192
|
const optionAriaLabel = /* @__PURE__ */ user_derived(() => getOptionAriaLabel(get$1(option), index2));
|
|
18177
|
-
var li = root_11();
|
|
18193
|
+
var li = root_11$1();
|
|
18178
18194
|
li.__mousedown = (e2) => e2.preventDefault();
|
|
18179
18195
|
li.__click = async (e2) => {
|
|
18180
18196
|
e2.preventDefault();
|
|
@@ -18211,7 +18227,7 @@ function DropdownContainer($$anchor, $$props) {
|
|
|
18211
18227
|
var node_16 = first_child(fragment_2);
|
|
18212
18228
|
{
|
|
18213
18229
|
var consequent_7 = ($$anchor5) => {
|
|
18214
|
-
var span_14 = root_14();
|
|
18230
|
+
var span_14 = root_14$1();
|
|
18215
18231
|
var node_17 = child(span_14);
|
|
18216
18232
|
SvgLoader(node_17, { svgName: "errorSolid", className: "incorrect-icon" });
|
|
18217
18233
|
reset(span_14);
|
|
@@ -18222,7 +18238,7 @@ function DropdownContainer($$anchor, $$props) {
|
|
|
18222
18238
|
var node_18 = first_child(fragment_3);
|
|
18223
18239
|
{
|
|
18224
18240
|
var consequent_8 = ($$anchor6) => {
|
|
18225
|
-
var span_15 = root_16();
|
|
18241
|
+
var span_15 = root_16$1();
|
|
18226
18242
|
var node_19 = child(span_15);
|
|
18227
18243
|
SvgLoader(node_19, { svgName: "successSolid", className: "correct-icon" });
|
|
18228
18244
|
reset(span_15);
|
|
@@ -18318,9 +18334,9 @@ create_custom_element(
|
|
|
18318
18334
|
[],
|
|
18319
18335
|
true
|
|
18320
18336
|
);
|
|
18321
|
-
var root_5 = /* @__PURE__ */ from_html(`<span class="dropdown-text text-xl font-semibold leading-12 text-blue-1000"><!></span>`);
|
|
18337
|
+
var root_5$1 = /* @__PURE__ */ from_html(`<span class="dropdown-text text-xl font-semibold leading-12 text-blue-1000"><!></span>`);
|
|
18322
18338
|
var root_1$2 = /* @__PURE__ */ from_html(`<p class="mb-4"></p>`);
|
|
18323
|
-
var root = /* @__PURE__ */ from_html(`<div class="my-6"></div>`);
|
|
18339
|
+
var root$1 = /* @__PURE__ */ from_html(`<div class="my-6"></div>`);
|
|
18324
18340
|
function DropdownInteractionContent($$anchor, $$props) {
|
|
18325
18341
|
push($$props, true);
|
|
18326
18342
|
let config = prop($$props, "config", 7), state2 = prop($$props, "state", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), showFeedback = prop($$props, "showFeedback", 7, false), onselection = prop($$props, "onselection", 7);
|
|
@@ -18435,7 +18451,7 @@ function DropdownInteractionContent($$anchor, $$props) {
|
|
|
18435
18451
|
flushSync();
|
|
18436
18452
|
}
|
|
18437
18453
|
};
|
|
18438
|
-
var div = root();
|
|
18454
|
+
var div = root$1();
|
|
18439
18455
|
each(div, 21, () => get$1(promptLines), index, ($$anchor2, promptLine) => {
|
|
18440
18456
|
var p = root_1$2();
|
|
18441
18457
|
each(p, 21, () => dropdownParser.parseText(get$1(promptLine)), index, ($$anchor3, part) => {
|
|
@@ -18495,7 +18511,7 @@ function DropdownInteractionContent($$anchor, $$props) {
|
|
|
18495
18511
|
var node_1 = first_child(fragment_2);
|
|
18496
18512
|
{
|
|
18497
18513
|
var consequent_1 = ($$anchor5) => {
|
|
18498
|
-
var span = root_5();
|
|
18514
|
+
var span = root_5$1();
|
|
18499
18515
|
var node_2 = child(span);
|
|
18500
18516
|
html(node_2, () => get$1(part).text);
|
|
18501
18517
|
reset(span);
|
|
@@ -18622,7 +18638,7 @@ function DropdownFeedback($$anchor, $$props) {
|
|
|
18622
18638
|
return pop($$exports);
|
|
18623
18639
|
}
|
|
18624
18640
|
create_custom_element(DropdownFeedback, { feedbackState: {}, config: {}, interactionType: {} }, [], [], true);
|
|
18625
|
-
var root_3 = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6"><!></div>`);
|
|
18641
|
+
var root_3$2 = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6"><!></div>`);
|
|
18626
18642
|
function DropdownComponent($$anchor, $$props) {
|
|
18627
18643
|
push($$props, true);
|
|
18628
18644
|
let api = prop($$props, "api", 7), config = prop($$props, "config", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onstateChange = prop($$props, "onstateChange", 7);
|
|
@@ -18773,7 +18789,7 @@ function DropdownComponent($$anchor, $$props) {
|
|
|
18773
18789
|
var node = first_child(fragment_2);
|
|
18774
18790
|
{
|
|
18775
18791
|
var consequent = ($$anchor3) => {
|
|
18776
|
-
var div = root_3();
|
|
18792
|
+
var div = root_3$2();
|
|
18777
18793
|
var node_1 = child(div);
|
|
18778
18794
|
DropdownFeedback(node_1, {
|
|
18779
18795
|
get feedbackState() {
|
|
@@ -19081,10 +19097,731 @@ const createDropdownConfig = (loadedData) => {
|
|
|
19081
19097
|
};
|
|
19082
19098
|
};
|
|
19083
19099
|
registerInteraction("dropdown", createDropdownInteraction, DropdownComponent);
|
|
19100
|
+
const decodeNbsp = (text) => text.replace(/&nbsp;/g, " ").replace(/ /g, " ");
|
|
19101
|
+
const splitParagraphs = (rawText) => rawText.split(/<\/p>/i).map((p) => p.replace(/^<p>/i, "").trim()).filter(Boolean);
|
|
19102
|
+
const parseSentences = (rawText, correctAnswers = []) => {
|
|
19103
|
+
const paragraphs = splitParagraphs(rawText);
|
|
19104
|
+
const segments = [];
|
|
19105
|
+
let posIndex = 0;
|
|
19106
|
+
let correctIndex = 0;
|
|
19107
|
+
for (let pIdx = 0; pIdx < paragraphs.length; pIdx++) {
|
|
19108
|
+
const para = paragraphs[pIdx];
|
|
19109
|
+
const decoded = para.replace(/<eat-contentful>/g, "<eat-contentful>").replace(/<\/eat-contentful>/g, "</eat-contentful>").replace(/<eat-sentence>/g, "<eat-sentence>");
|
|
19110
|
+
const chunks = decoded.split("<eat-sentence>");
|
|
19111
|
+
for (const chunk of chunks) {
|
|
19112
|
+
const contentfulMatch = chunk.match(/<eat-contentful>(.*?)<\/eat-contentful>/);
|
|
19113
|
+
const text = decodeNbsp((contentfulMatch ? contentfulMatch[1] : chunk).trim());
|
|
19114
|
+
if (text) {
|
|
19115
|
+
const id = contentfulMatch ? correctAnswers[correctIndex]?.id ?? String(posIndex) : String(posIndex);
|
|
19116
|
+
if (contentfulMatch) correctIndex++;
|
|
19117
|
+
segments.push({ id, text });
|
|
19118
|
+
posIndex++;
|
|
19119
|
+
}
|
|
19120
|
+
}
|
|
19121
|
+
if (pIdx < paragraphs.length - 1) {
|
|
19122
|
+
segments.push({ id: `br-${pIdx}`, text: "", isLineBreak: true });
|
|
19123
|
+
}
|
|
19124
|
+
}
|
|
19125
|
+
return segments;
|
|
19126
|
+
};
|
|
19127
|
+
const parseWords = (rawText, correctAnswers = []) => {
|
|
19128
|
+
const paragraphs = splitParagraphs(rawText);
|
|
19129
|
+
const segments = [];
|
|
19130
|
+
let globalIndex = 1;
|
|
19131
|
+
let correctIndex = 0;
|
|
19132
|
+
const tokenRegex = /<eat-contentful>(.*?)<\/eat-contentful>|([^<>]+)/g;
|
|
19133
|
+
const trailingPunctRe = /([.,!?;:)\]"'»…\u2014\u2013]+)$/;
|
|
19134
|
+
const purePunctRe = /^[^\w\u00C0-\u024F]+$/;
|
|
19135
|
+
for (let pIdx = 0; pIdx < paragraphs.length; pIdx++) {
|
|
19136
|
+
const para = paragraphs[pIdx];
|
|
19137
|
+
const decoded = para.replace(/<eat-contentful>/g, "<eat-contentful>").replace(/<\/eat-contentful>/g, "</eat-contentful>");
|
|
19138
|
+
tokenRegex.lastIndex = 0;
|
|
19139
|
+
let match;
|
|
19140
|
+
while ((match = tokenRegex.exec(decoded)) !== null) {
|
|
19141
|
+
if (match[1] !== void 0) {
|
|
19142
|
+
const raw = decodeNbsp(match[1].trim());
|
|
19143
|
+
if (raw) {
|
|
19144
|
+
const punctMatch = raw.match(trailingPunctRe);
|
|
19145
|
+
const text = punctMatch ? raw.slice(0, -punctMatch[1].length) : raw;
|
|
19146
|
+
const trailingPunctuation = punctMatch ? punctMatch[1] : void 0;
|
|
19147
|
+
const id = correctAnswers[correctIndex]?.id ?? `w-${globalIndex}`;
|
|
19148
|
+
segments.push({ id, text, trailingPunctuation });
|
|
19149
|
+
correctIndex++;
|
|
19150
|
+
globalIndex++;
|
|
19151
|
+
}
|
|
19152
|
+
} else if (match[2] !== void 0) {
|
|
19153
|
+
const words = match[2].split(/\s+/).filter(Boolean);
|
|
19154
|
+
for (const word of words) {
|
|
19155
|
+
if (purePunctRe.test(word)) {
|
|
19156
|
+
const prev = segments[segments.length - 1];
|
|
19157
|
+
if (prev && !prev.isPunctuation && !prev.isLineBreak) {
|
|
19158
|
+
prev.trailingPunctuation = (prev.trailingPunctuation ?? "") + word;
|
|
19159
|
+
} else {
|
|
19160
|
+
segments.push({ id: `punct-${globalIndex}`, text: word, isPunctuation: true });
|
|
19161
|
+
}
|
|
19162
|
+
} else {
|
|
19163
|
+
const punctMatch = word.match(trailingPunctRe);
|
|
19164
|
+
const text = decodeNbsp(punctMatch ? word.slice(0, -punctMatch[1].length) : word);
|
|
19165
|
+
const trailingPunctuation = punctMatch ? punctMatch[1] : void 0;
|
|
19166
|
+
segments.push({ id: `w-${globalIndex}`, text, trailingPunctuation });
|
|
19167
|
+
globalIndex++;
|
|
19168
|
+
}
|
|
19169
|
+
}
|
|
19170
|
+
}
|
|
19171
|
+
}
|
|
19172
|
+
if (pIdx < paragraphs.length - 1) {
|
|
19173
|
+
segments.push({ id: `br-${pIdx}`, text: "", isLineBreak: true });
|
|
19174
|
+
}
|
|
19175
|
+
}
|
|
19176
|
+
return segments;
|
|
19177
|
+
};
|
|
19178
|
+
const parseSelectableText = (text, selectableType, correctAnswers = []) => {
|
|
19179
|
+
if (selectableType === "Sentence") {
|
|
19180
|
+
return parseSentences(text, correctAnswers);
|
|
19181
|
+
}
|
|
19182
|
+
return parseWords(text, correctAnswers);
|
|
19183
|
+
};
|
|
19184
|
+
function getSegmentState(segmentId, selectedIds, correctAnswerIds, isPreviewMode2, isValidating) {
|
|
19185
|
+
const isSegmentSelected = selectedIds.includes(segmentId);
|
|
19186
|
+
const isInCorrectAnswers = correctAnswerIds.includes(segmentId);
|
|
19187
|
+
const isCorrect = isPreviewMode2 && isInCorrectAnswers || isValidating && isSegmentSelected && isInCorrectAnswers;
|
|
19188
|
+
const isIncorrect = isValidating && isSegmentSelected && !isInCorrectAnswers;
|
|
19189
|
+
const isMissing = isValidating && !isSegmentSelected && isInCorrectAnswers;
|
|
19190
|
+
return { isSegmentSelected, isCorrect, isIncorrect, isMissing };
|
|
19191
|
+
}
|
|
19192
|
+
const useSelectableText = (config) => {
|
|
19193
|
+
const segments = parseSelectableText(
|
|
19194
|
+
config.text,
|
|
19195
|
+
config.selectable_type,
|
|
19196
|
+
config.correct_answers ?? []
|
|
19197
|
+
);
|
|
19198
|
+
const isAtMaxSelections = (currentSelections) => {
|
|
19199
|
+
return config.max_selections != null && currentSelections.length >= config.max_selections;
|
|
19200
|
+
};
|
|
19201
|
+
return {
|
|
19202
|
+
segments,
|
|
19203
|
+
isAtMaxSelections
|
|
19204
|
+
};
|
|
19205
|
+
};
|
|
19206
|
+
function useSelectableTextState(config, selections) {
|
|
19207
|
+
const isPreviewMode2 = config.mode === MODES.PREVIEW;
|
|
19208
|
+
const isInteractiveMode2 = config.mode === MODES.INTERACTIVE;
|
|
19209
|
+
const isSessionMode2 = config.mode === MODES.SESSION;
|
|
19210
|
+
const correctAnswerIds = config.correct_answers?.map((a) => a.id) ?? [];
|
|
19211
|
+
const maxSelections = config.max_selections ?? correctAnswerIds.length;
|
|
19212
|
+
const isValidating = isInteractiveMode2 && maxSelections > 0 && selections.length >= maxSelections;
|
|
19213
|
+
const isAllCorrect = isValidating && selections.length === correctAnswerIds.length && selections.every((id) => correctAnswerIds.includes(id));
|
|
19214
|
+
return {
|
|
19215
|
+
isPreviewMode: isPreviewMode2,
|
|
19216
|
+
isInteractiveMode: isInteractiveMode2,
|
|
19217
|
+
isSessionMode: isSessionMode2,
|
|
19218
|
+
correctAnswerIds,
|
|
19219
|
+
maxSelections,
|
|
19220
|
+
isValidating,
|
|
19221
|
+
isAllCorrect
|
|
19222
|
+
};
|
|
19223
|
+
}
|
|
19224
|
+
function useSelectableTextFeedback(isValidating, isAllCorrect, config) {
|
|
19225
|
+
const feedbackType = isAllCorrect ? "correct" : "incorrect";
|
|
19226
|
+
const feedbackMessage = isValidating ? isAllCorrect ? config.feedback?.correct ?? "" : config.feedback?.incorrect ?? "" : "";
|
|
19227
|
+
const isFeedbackShown = isValidating && feedbackMessage.length > 0;
|
|
19228
|
+
return { isFeedbackShown, feedbackType, feedbackMessage };
|
|
19229
|
+
}
|
|
19230
|
+
var root_3$1 = /* @__PURE__ */ from_html(`<br/>`);
|
|
19231
|
+
var root_5 = /* @__PURE__ */ from_html(`<span class="segment-punctuation" aria-hidden="true"> </span>`);
|
|
19232
|
+
var root_7 = /* @__PURE__ */ from_html(`<span class="segment-trailing-punct" aria-hidden="true"> </span>`);
|
|
19233
|
+
var root_6 = /* @__PURE__ */ from_html(`<span class="selectable-segment" aria-hidden="true"> <!></span>`);
|
|
19234
|
+
var root_10 = /* @__PURE__ */ from_html(`<br/>`);
|
|
19235
|
+
var root_13 = /* @__PURE__ */ from_html(`<span class="segment-punctuation" aria-hidden="true"> </span>`);
|
|
19236
|
+
var root_15 = /* @__PURE__ */ from_html(`<span class="selectable-segment-missing-badge" aria-hidden="true" data-testid="select-mis-ans-tt">Missing answer</span>`);
|
|
19237
|
+
var root_16 = /* @__PURE__ */ from_html(`<span aria-hidden="true" class="selectable-segment-deselect-icon" data-testid="select-close-icon"><!></span>`);
|
|
19238
|
+
var root_18 = /* @__PURE__ */ from_html(`<span aria-hidden="true" class="selectable-segment-status-icon"><!></span>`);
|
|
19239
|
+
var root_19 = /* @__PURE__ */ from_html(`<span class="segment-trailing-punct" aria-hidden="true"> </span>`);
|
|
19240
|
+
var root_20 = /* @__PURE__ */ from_html(`<span class="sr-only">Correct answer</span>`);
|
|
19241
|
+
var root_21 = /* @__PURE__ */ from_html(`<span class="sr-only">Incorrect answer</span>`);
|
|
19242
|
+
var root_22 = /* @__PURE__ */ from_html(`<span class="sr-only">Missing answer</span>`);
|
|
19243
|
+
var root_14 = /* @__PURE__ */ from_html(`<span role="button"><!> <span class="selectable-segment-text"> <!></span> <!> <!> <!> <!></span>`);
|
|
19244
|
+
var root_11 = /* @__PURE__ */ from_html(`<span></span>`);
|
|
19245
|
+
var root = /* @__PURE__ */ from_html(`<div class="selectable-text-passage" data-testid="select-passage-ctr"><!></div>`);
|
|
19246
|
+
function SelectableTextInteractionContent($$anchor, $$props) {
|
|
19247
|
+
push($$props, true);
|
|
19248
|
+
let config = prop($$props, "config", 7), interactionState = prop($$props, "state", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onselection = prop($$props, "onselection", 7);
|
|
19249
|
+
const { segments } = useSelectableText(config());
|
|
19250
|
+
const isWord = config().selectable_type !== "Sentence";
|
|
19251
|
+
const segmentType = isWord ? "word" : "sent";
|
|
19252
|
+
let selectedIds = /* @__PURE__ */ user_derived(() => interactionState().data.selections);
|
|
19253
|
+
let sharedState = /* @__PURE__ */ user_derived(() => useSelectableTextState(config(), get$1(selectedIds)));
|
|
19254
|
+
let segmentStates = /* @__PURE__ */ user_derived(() => segments.map((segment) => ({
|
|
19255
|
+
segment,
|
|
19256
|
+
seg: getSegmentState(segment.id, get$1(selectedIds), get$1(sharedState).correctAnswerIds, get$1(sharedState).isPreviewMode, get$1(sharedState).isValidating)
|
|
19257
|
+
})));
|
|
19258
|
+
const handleSegmentClick = (segmentId) => {
|
|
19259
|
+
if (isDataSaving() || get$1(sharedState).isPreviewMode) return;
|
|
19260
|
+
onselection()?.(new CustomEvent("selection", { detail: { segmentId } }));
|
|
19261
|
+
};
|
|
19262
|
+
const handleSegmentKeydown = (e2, segmentId) => {
|
|
19263
|
+
if (get$1(sharedState).isPreviewMode) return;
|
|
19264
|
+
if (e2.key === " ") {
|
|
19265
|
+
e2.preventDefault();
|
|
19266
|
+
handleSegmentClick(segmentId);
|
|
19267
|
+
} else if (e2.key === "Enter") {
|
|
19268
|
+
handleSegmentClick(segmentId);
|
|
19269
|
+
}
|
|
19270
|
+
};
|
|
19271
|
+
const getSegmentTestId = (seg) => {
|
|
19272
|
+
if (get$1(sharedState).isPreviewMode && seg.isCorrect) return `select-${segmentType}-corr-ans-btn`;
|
|
19273
|
+
if (seg.isCorrect || seg.isIncorrect) return `select-${segmentType}-stud-ans-btn`;
|
|
19274
|
+
if (seg.isMissing) return `select-${segmentType}-mis-ans-btn`;
|
|
19275
|
+
return `select-${segmentType}-btn`;
|
|
19276
|
+
};
|
|
19277
|
+
const getSegmentClasses = (seg) => {
|
|
19278
|
+
return [
|
|
19279
|
+
"selectable-segment",
|
|
19280
|
+
!get$1(sharedState).isPreviewMode && seg.isSegmentSelected && !get$1(sharedState).isValidating ? "selected" : "",
|
|
19281
|
+
get$1(sharedState).isPreviewMode ? "preview" : "",
|
|
19282
|
+
get$1(sharedState).isInteractiveMode ? "interactive" : "",
|
|
19283
|
+
seg.isCorrect ? "correct" : "",
|
|
19284
|
+
seg.isIncorrect ? "incorrect" : "",
|
|
19285
|
+
seg.isMissing ? "missing" : ""
|
|
19286
|
+
].filter(Boolean).join(" ");
|
|
19287
|
+
};
|
|
19288
|
+
let passageEl = /* @__PURE__ */ state(void 0);
|
|
19289
|
+
let lineRows = /* @__PURE__ */ state(proxy([]));
|
|
19290
|
+
let isMeasured = /* @__PURE__ */ state(!isWord);
|
|
19291
|
+
const sentenceDisplayRows = isWord ? [] : segments.reduce(
|
|
19292
|
+
(acc, segment, idx) => {
|
|
19293
|
+
if (segment.isLineBreak) {
|
|
19294
|
+
acc.push("break");
|
|
19295
|
+
} else {
|
|
19296
|
+
const last = acc[acc.length - 1];
|
|
19297
|
+
if (Array.isArray(last)) last.push(idx);
|
|
19298
|
+
else acc.push([idx]);
|
|
19299
|
+
}
|
|
19300
|
+
return acc;
|
|
19301
|
+
},
|
|
19302
|
+
[]
|
|
19303
|
+
);
|
|
19304
|
+
let displayRows = /* @__PURE__ */ user_derived(() => isWord ? get$1(lineRows) : sentenceDisplayRows);
|
|
19305
|
+
const measureLines = async () => {
|
|
19306
|
+
if (!get$1(passageEl)) return;
|
|
19307
|
+
await tick();
|
|
19308
|
+
const segEls = get$1(passageEl).querySelectorAll("[data-seg-idx]");
|
|
19309
|
+
if (segEls.length === 0) {
|
|
19310
|
+
set(lineRows, [], true);
|
|
19311
|
+
set(isMeasured, true);
|
|
19312
|
+
return;
|
|
19313
|
+
}
|
|
19314
|
+
const containerTop = get$1(passageEl).getBoundingClientRect().top;
|
|
19315
|
+
const topMap = /* @__PURE__ */ new Map();
|
|
19316
|
+
for (const el of segEls) {
|
|
19317
|
+
const idx = Number(el.dataset.segIdx);
|
|
19318
|
+
const top = Math.round(el.getBoundingClientRect().top - containerTop);
|
|
19319
|
+
if (!topMap.has(top)) topMap.set(top, []);
|
|
19320
|
+
topMap.get(top).push(idx);
|
|
19321
|
+
}
|
|
19322
|
+
set(lineRows, [...topMap.entries()].sort(([a], [b]) => a - b).map(([, indices]) => indices), true);
|
|
19323
|
+
set(isMeasured, true);
|
|
19324
|
+
};
|
|
19325
|
+
user_effect(() => {
|
|
19326
|
+
if (!isWord) return;
|
|
19327
|
+
const el = get$1(passageEl);
|
|
19328
|
+
if (!el) return;
|
|
19329
|
+
const parent = el.parentElement;
|
|
19330
|
+
if (!parent) return;
|
|
19331
|
+
let lastWidth = Math.round(parent.getBoundingClientRect().width);
|
|
19332
|
+
const ro = new ResizeObserver((entries) => {
|
|
19333
|
+
for (const entry of entries) {
|
|
19334
|
+
const newWidth = Math.round(entry.contentRect.width);
|
|
19335
|
+
if (newWidth !== lastWidth) {
|
|
19336
|
+
lastWidth = newWidth;
|
|
19337
|
+
set(isMeasured, false);
|
|
19338
|
+
}
|
|
19339
|
+
}
|
|
19340
|
+
});
|
|
19341
|
+
ro.observe(parent);
|
|
19342
|
+
return () => ro.disconnect();
|
|
19343
|
+
});
|
|
19344
|
+
user_effect(() => {
|
|
19345
|
+
if (!get$1(isMeasured) && get$1(passageEl)) {
|
|
19346
|
+
measureLines();
|
|
19347
|
+
}
|
|
19348
|
+
});
|
|
19349
|
+
var $$exports = {
|
|
19350
|
+
get config() {
|
|
19351
|
+
return config();
|
|
19352
|
+
},
|
|
19353
|
+
set config($$value) {
|
|
19354
|
+
config($$value);
|
|
19355
|
+
flushSync();
|
|
19356
|
+
},
|
|
19357
|
+
get state() {
|
|
19358
|
+
return interactionState();
|
|
19359
|
+
},
|
|
19360
|
+
set state($$value) {
|
|
19361
|
+
interactionState($$value);
|
|
19362
|
+
flushSync();
|
|
19363
|
+
},
|
|
19364
|
+
get isDataSaving() {
|
|
19365
|
+
return isDataSaving();
|
|
19366
|
+
},
|
|
19367
|
+
set isDataSaving($$value = false) {
|
|
19368
|
+
isDataSaving($$value);
|
|
19369
|
+
flushSync();
|
|
19370
|
+
},
|
|
19371
|
+
get onselection() {
|
|
19372
|
+
return onselection();
|
|
19373
|
+
},
|
|
19374
|
+
set onselection($$value) {
|
|
19375
|
+
onselection($$value);
|
|
19376
|
+
flushSync();
|
|
19377
|
+
}
|
|
19378
|
+
};
|
|
19379
|
+
var div = root();
|
|
19380
|
+
var node = child(div);
|
|
19381
|
+
{
|
|
19382
|
+
var consequent_3 = ($$anchor2) => {
|
|
19383
|
+
var fragment = comment();
|
|
19384
|
+
var node_1 = first_child(fragment);
|
|
19385
|
+
each(node_1, 19, () => segments, (segment) => segment.id, ($$anchor3, segment, i) => {
|
|
19386
|
+
var fragment_1 = comment();
|
|
19387
|
+
var node_2 = first_child(fragment_1);
|
|
19388
|
+
{
|
|
19389
|
+
var consequent = ($$anchor4) => {
|
|
19390
|
+
var br = root_3$1();
|
|
19391
|
+
append($$anchor4, br);
|
|
19392
|
+
};
|
|
19393
|
+
var alternate_1 = ($$anchor4) => {
|
|
19394
|
+
var fragment_2 = comment();
|
|
19395
|
+
var node_3 = first_child(fragment_2);
|
|
19396
|
+
{
|
|
19397
|
+
var consequent_1 = ($$anchor5) => {
|
|
19398
|
+
var span = root_5();
|
|
19399
|
+
var text = child(span, true);
|
|
19400
|
+
reset(span);
|
|
19401
|
+
template_effect(() => set_text(text, get$1(segment).text));
|
|
19402
|
+
append($$anchor5, span);
|
|
19403
|
+
};
|
|
19404
|
+
var alternate = ($$anchor5) => {
|
|
19405
|
+
var span_1 = root_6();
|
|
19406
|
+
var text_1 = child(span_1);
|
|
19407
|
+
var node_4 = sibling(text_1);
|
|
19408
|
+
{
|
|
19409
|
+
var consequent_2 = ($$anchor6) => {
|
|
19410
|
+
var span_2 = root_7();
|
|
19411
|
+
var text_2 = child(span_2, true);
|
|
19412
|
+
reset(span_2);
|
|
19413
|
+
template_effect(() => set_text(text_2, get$1(segment).trailingPunctuation));
|
|
19414
|
+
append($$anchor6, span_2);
|
|
19415
|
+
};
|
|
19416
|
+
if_block(node_4, ($$render) => {
|
|
19417
|
+
if (get$1(segment).trailingPunctuation) $$render(consequent_2);
|
|
19418
|
+
});
|
|
19419
|
+
}
|
|
19420
|
+
reset(span_1);
|
|
19421
|
+
template_effect(() => {
|
|
19422
|
+
set_attribute(span_1, "data-seg-idx", get$1(i));
|
|
19423
|
+
set_text(text_1, `${get$1(segment).text ?? ""} `);
|
|
19424
|
+
});
|
|
19425
|
+
append($$anchor5, span_1);
|
|
19426
|
+
};
|
|
19427
|
+
if_block(
|
|
19428
|
+
node_3,
|
|
19429
|
+
($$render) => {
|
|
19430
|
+
if (get$1(segment).isPunctuation) $$render(consequent_1);
|
|
19431
|
+
else $$render(alternate, false);
|
|
19432
|
+
},
|
|
19433
|
+
true
|
|
19434
|
+
);
|
|
19435
|
+
}
|
|
19436
|
+
append($$anchor4, fragment_2);
|
|
19437
|
+
};
|
|
19438
|
+
if_block(node_2, ($$render) => {
|
|
19439
|
+
if (get$1(segment).isLineBreak) $$render(consequent);
|
|
19440
|
+
else $$render(alternate_1, false);
|
|
19441
|
+
});
|
|
19442
|
+
}
|
|
19443
|
+
append($$anchor3, fragment_1);
|
|
19444
|
+
});
|
|
19445
|
+
append($$anchor2, fragment);
|
|
19446
|
+
};
|
|
19447
|
+
var alternate_5 = ($$anchor2) => {
|
|
19448
|
+
var fragment_3 = comment();
|
|
19449
|
+
var node_5 = first_child(fragment_3);
|
|
19450
|
+
each(node_5, 17, () => get$1(displayRows), index, ($$anchor3, row) => {
|
|
19451
|
+
var fragment_4 = comment();
|
|
19452
|
+
var node_6 = first_child(fragment_4);
|
|
19453
|
+
{
|
|
19454
|
+
var consequent_4 = ($$anchor4) => {
|
|
19455
|
+
var br_1 = root_10();
|
|
19456
|
+
append($$anchor4, br_1);
|
|
19457
|
+
};
|
|
19458
|
+
var alternate_4 = ($$anchor4) => {
|
|
19459
|
+
var span_3 = root_11();
|
|
19460
|
+
each(span_3, 21, () => get$1(row), (idx) => segments[idx].id, ($$anchor5, idx) => {
|
|
19461
|
+
const segment = /* @__PURE__ */ user_derived(() => segments[get$1(idx)]);
|
|
19462
|
+
const computed_const = /* @__PURE__ */ user_derived(() => {
|
|
19463
|
+
const { seg } = get$1(segmentStates)[get$1(idx)];
|
|
19464
|
+
return { seg };
|
|
19465
|
+
});
|
|
19466
|
+
var fragment_5 = comment();
|
|
19467
|
+
var node_7 = first_child(fragment_5);
|
|
19468
|
+
{
|
|
19469
|
+
var consequent_5 = ($$anchor6) => {
|
|
19470
|
+
var span_4 = root_13();
|
|
19471
|
+
var text_3 = child(span_4, true);
|
|
19472
|
+
reset(span_4);
|
|
19473
|
+
template_effect(() => set_text(text_3, get$1(segment).text));
|
|
19474
|
+
append($$anchor6, span_4);
|
|
19475
|
+
};
|
|
19476
|
+
var alternate_3 = ($$anchor6) => {
|
|
19477
|
+
var span_5 = root_14();
|
|
19478
|
+
span_5.__click = () => handleSegmentClick(get$1(segment).id);
|
|
19479
|
+
span_5.__keydown = (e2) => handleSegmentKeydown(e2, get$1(segment).id);
|
|
19480
|
+
var node_8 = child(span_5);
|
|
19481
|
+
{
|
|
19482
|
+
var consequent_6 = ($$anchor7) => {
|
|
19483
|
+
var span_6 = root_15();
|
|
19484
|
+
append($$anchor7, span_6);
|
|
19485
|
+
};
|
|
19486
|
+
if_block(node_8, ($$render) => {
|
|
19487
|
+
if (get$1(computed_const).seg.isMissing) $$render(consequent_6);
|
|
19488
|
+
});
|
|
19489
|
+
}
|
|
19490
|
+
var span_7 = sibling(node_8, 2);
|
|
19491
|
+
var text_4 = child(span_7);
|
|
19492
|
+
var node_9 = sibling(text_4);
|
|
19493
|
+
{
|
|
19494
|
+
var consequent_7 = ($$anchor7) => {
|
|
19495
|
+
var span_8 = root_16();
|
|
19496
|
+
var node_10 = child(span_8);
|
|
19497
|
+
SvgLoader(node_10, { svgName: "crossIcon", className: "deselect-icon" });
|
|
19498
|
+
reset(span_8);
|
|
19499
|
+
append($$anchor7, span_8);
|
|
19500
|
+
};
|
|
19501
|
+
var alternate_2 = ($$anchor7) => {
|
|
19502
|
+
var fragment_6 = comment();
|
|
19503
|
+
var node_11 = first_child(fragment_6);
|
|
19504
|
+
{
|
|
19505
|
+
var consequent_8 = ($$anchor8) => {
|
|
19506
|
+
var span_9 = root_18();
|
|
19507
|
+
var node_12 = child(span_9);
|
|
19508
|
+
{
|
|
19509
|
+
let $0 = /* @__PURE__ */ user_derived(() => get$1(computed_const).seg.isCorrect ? "successSolid" : "errorSolid");
|
|
19510
|
+
let $1 = /* @__PURE__ */ user_derived(() => get$1(computed_const).seg.isCorrect ? "correct-icon" : "incorrect-icon");
|
|
19511
|
+
SvgLoader(node_12, {
|
|
19512
|
+
get svgName() {
|
|
19513
|
+
return get$1($0);
|
|
19514
|
+
},
|
|
19515
|
+
get className() {
|
|
19516
|
+
return get$1($1);
|
|
19517
|
+
}
|
|
19518
|
+
});
|
|
19519
|
+
}
|
|
19520
|
+
reset(span_9);
|
|
19521
|
+
template_effect(() => set_attribute(span_9, "data-testid", get$1(computed_const).seg.isCorrect ? "icon-correct" : "icon-incorrect"));
|
|
19522
|
+
append($$anchor8, span_9);
|
|
19523
|
+
};
|
|
19524
|
+
if_block(
|
|
19525
|
+
node_11,
|
|
19526
|
+
($$render) => {
|
|
19527
|
+
if (get$1(computed_const).seg.isCorrect || get$1(computed_const).seg.isIncorrect) $$render(consequent_8);
|
|
19528
|
+
},
|
|
19529
|
+
true
|
|
19530
|
+
);
|
|
19531
|
+
}
|
|
19532
|
+
append($$anchor7, fragment_6);
|
|
19533
|
+
};
|
|
19534
|
+
if_block(node_9, ($$render) => {
|
|
19535
|
+
if (get$1(computed_const).seg.isSegmentSelected && !get$1(sharedState).isValidating && !get$1(sharedState).isPreviewMode) $$render(consequent_7);
|
|
19536
|
+
else $$render(alternate_2, false);
|
|
19537
|
+
});
|
|
19538
|
+
}
|
|
19539
|
+
reset(span_7);
|
|
19540
|
+
var node_13 = sibling(span_7, 2);
|
|
19541
|
+
{
|
|
19542
|
+
var consequent_9 = ($$anchor7) => {
|
|
19543
|
+
var span_10 = root_19();
|
|
19544
|
+
var text_5 = child(span_10, true);
|
|
19545
|
+
reset(span_10);
|
|
19546
|
+
template_effect(() => set_text(text_5, get$1(segment).trailingPunctuation));
|
|
19547
|
+
append($$anchor7, span_10);
|
|
19548
|
+
};
|
|
19549
|
+
if_block(node_13, ($$render) => {
|
|
19550
|
+
if (get$1(segment).trailingPunctuation) $$render(consequent_9);
|
|
19551
|
+
});
|
|
19552
|
+
}
|
|
19553
|
+
var node_14 = sibling(node_13, 2);
|
|
19554
|
+
{
|
|
19555
|
+
var consequent_10 = ($$anchor7) => {
|
|
19556
|
+
var span_11 = root_20();
|
|
19557
|
+
append($$anchor7, span_11);
|
|
19558
|
+
};
|
|
19559
|
+
if_block(node_14, ($$render) => {
|
|
19560
|
+
if (get$1(computed_const).seg.isCorrect) $$render(consequent_10);
|
|
19561
|
+
});
|
|
19562
|
+
}
|
|
19563
|
+
var node_15 = sibling(node_14, 2);
|
|
19564
|
+
{
|
|
19565
|
+
var consequent_11 = ($$anchor7) => {
|
|
19566
|
+
var span_12 = root_21();
|
|
19567
|
+
append($$anchor7, span_12);
|
|
19568
|
+
};
|
|
19569
|
+
if_block(node_15, ($$render) => {
|
|
19570
|
+
if (get$1(computed_const).seg.isIncorrect) $$render(consequent_11);
|
|
19571
|
+
});
|
|
19572
|
+
}
|
|
19573
|
+
var node_16 = sibling(node_15, 2);
|
|
19574
|
+
{
|
|
19575
|
+
var consequent_12 = ($$anchor7) => {
|
|
19576
|
+
var span_13 = root_22();
|
|
19577
|
+
append($$anchor7, span_13);
|
|
19578
|
+
};
|
|
19579
|
+
if_block(node_16, ($$render) => {
|
|
19580
|
+
if (get$1(computed_const).seg.isMissing) $$render(consequent_12);
|
|
19581
|
+
});
|
|
19582
|
+
}
|
|
19583
|
+
reset(span_5);
|
|
19584
|
+
template_effect(
|
|
19585
|
+
($0, $1) => {
|
|
19586
|
+
set_attribute(span_5, "tabindex", get$1(sharedState).isPreviewMode ? -1 : 0);
|
|
19587
|
+
set_class(span_5, 1, $0);
|
|
19588
|
+
set_attribute(span_5, "aria-pressed", !get$1(sharedState).isPreviewMode && get$1(computed_const).seg.isSegmentSelected);
|
|
19589
|
+
set_attribute(span_5, "aria-disabled", isDataSaving() || get$1(sharedState).isPreviewMode);
|
|
19590
|
+
set_attribute(span_5, "data-segment-id", get$1(segment).id);
|
|
19591
|
+
set_attribute(span_5, "data-testid", $1);
|
|
19592
|
+
set_text(text_4, `${get$1(segment).text ?? ""} `);
|
|
19593
|
+
},
|
|
19594
|
+
[
|
|
19595
|
+
() => clsx(getSegmentClasses(get$1(computed_const).seg)),
|
|
19596
|
+
() => getSegmentTestId(get$1(computed_const).seg)
|
|
19597
|
+
]
|
|
19598
|
+
);
|
|
19599
|
+
append($$anchor6, span_5);
|
|
19600
|
+
};
|
|
19601
|
+
if_block(node_7, ($$render) => {
|
|
19602
|
+
if (get$1(segment).isPunctuation) $$render(consequent_5);
|
|
19603
|
+
else $$render(alternate_3, false);
|
|
19604
|
+
});
|
|
19605
|
+
}
|
|
19606
|
+
append($$anchor5, fragment_5);
|
|
19607
|
+
});
|
|
19608
|
+
reset(span_3);
|
|
19609
|
+
template_effect(() => set_class(span_3, 1, clsx(isWord ? "selectable-line-word" : void 0)));
|
|
19610
|
+
append($$anchor4, span_3);
|
|
19611
|
+
};
|
|
19612
|
+
if_block(node_6, ($$render) => {
|
|
19613
|
+
if (get$1(row) === "break") $$render(consequent_4);
|
|
19614
|
+
else $$render(alternate_4, false);
|
|
19615
|
+
});
|
|
19616
|
+
}
|
|
19617
|
+
append($$anchor3, fragment_4);
|
|
19618
|
+
});
|
|
19619
|
+
append($$anchor2, fragment_3);
|
|
19620
|
+
};
|
|
19621
|
+
if_block(node, ($$render) => {
|
|
19622
|
+
if (!get$1(isMeasured)) $$render(consequent_3);
|
|
19623
|
+
else $$render(alternate_5, false);
|
|
19624
|
+
});
|
|
19625
|
+
}
|
|
19626
|
+
reset(div);
|
|
19627
|
+
bind_this(div, ($$value) => set(passageEl, $$value), () => get$1(passageEl));
|
|
19628
|
+
template_effect(() => set_style(div, !get$1(isMeasured) ? "visibility:hidden;max-width:864px" : !isWord || get$1(selectedIds).length === 0 && !get$1(sharedState).isValidating && !get$1(sharedState).isPreviewMode ? "max-width:864px" : void 0));
|
|
19629
|
+
append($$anchor, div);
|
|
19630
|
+
return pop($$exports);
|
|
19631
|
+
}
|
|
19632
|
+
delegate(["click", "keydown"]);
|
|
19633
|
+
create_custom_element(SelectableTextInteractionContent, { config: {}, state: {}, isDataSaving: {}, onselection: {} }, [], [], true);
|
|
19634
|
+
var root_3 = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6 max-w-[544px]"><!></div>`);
|
|
19635
|
+
function SelectableTextComponent($$anchor, $$props) {
|
|
19636
|
+
push($$props, true);
|
|
19637
|
+
let api = prop($$props, "api", 7), config = prop($$props, "config", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onstateChange = prop($$props, "onstateChange", 7);
|
|
19638
|
+
const initialState = api().hasExistingState?.() ? api().restoreState?.() : api().createInitialState?.();
|
|
19639
|
+
if (!initialState?.data) {
|
|
19640
|
+
throw new Error("Failed to initialize SelectableText state");
|
|
19641
|
+
}
|
|
19642
|
+
let interactionState = /* @__PURE__ */ state(proxy(initialState));
|
|
19643
|
+
let sharedState = /* @__PURE__ */ user_derived(() => useSelectableTextState(config(), get$1(interactionState).data.selections));
|
|
19644
|
+
let feedbackState = /* @__PURE__ */ user_derived(() => useSelectableTextFeedback(get$1(sharedState).isValidating, get$1(sharedState).isAllCorrect, config()));
|
|
19645
|
+
const handleSelection = (event2) => {
|
|
19646
|
+
const { segmentId } = event2.detail;
|
|
19647
|
+
if (api().isLocked?.(get$1(interactionState))) return;
|
|
19648
|
+
const currentSelections = get$1(interactionState).data.selections;
|
|
19649
|
+
const isSelected = currentSelections.includes(segmentId);
|
|
19650
|
+
let newSelections;
|
|
19651
|
+
if (isSelected) {
|
|
19652
|
+
newSelections = currentSelections.filter((id) => id !== segmentId);
|
|
19653
|
+
} else {
|
|
19654
|
+
if (get$1(sharedState).maxSelections > 0 && currentSelections.length >= get$1(sharedState).maxSelections) {
|
|
19655
|
+
newSelections = [...currentSelections.slice(0, -1), segmentId];
|
|
19656
|
+
} else {
|
|
19657
|
+
newSelections = [...currentSelections, segmentId];
|
|
19658
|
+
}
|
|
19659
|
+
}
|
|
19660
|
+
set(interactionState, interactionUtils.updateState(get$1(interactionState), { selections: newSelections }), true);
|
|
19661
|
+
api().onStateChange?.(get$1(interactionState));
|
|
19662
|
+
onstateChange()?.(new CustomEvent("stateChange", {
|
|
19663
|
+
detail: {
|
|
19664
|
+
state: get$1(interactionState),
|
|
19665
|
+
serialized: api().serialize?.(get$1(interactionState))
|
|
19666
|
+
}
|
|
19667
|
+
}));
|
|
19668
|
+
};
|
|
19669
|
+
var $$exports = {
|
|
19670
|
+
get api() {
|
|
19671
|
+
return api();
|
|
19672
|
+
},
|
|
19673
|
+
set api($$value) {
|
|
19674
|
+
api($$value);
|
|
19675
|
+
flushSync();
|
|
19676
|
+
},
|
|
19677
|
+
get config() {
|
|
19678
|
+
return config();
|
|
19679
|
+
},
|
|
19680
|
+
set config($$value) {
|
|
19681
|
+
config($$value);
|
|
19682
|
+
flushSync();
|
|
19683
|
+
},
|
|
19684
|
+
get isDataSaving() {
|
|
19685
|
+
return isDataSaving();
|
|
19686
|
+
},
|
|
19687
|
+
set isDataSaving($$value = false) {
|
|
19688
|
+
isDataSaving($$value);
|
|
19689
|
+
flushSync();
|
|
19690
|
+
},
|
|
19691
|
+
get onstateChange() {
|
|
19692
|
+
return onstateChange();
|
|
19693
|
+
},
|
|
19694
|
+
set onstateChange($$value) {
|
|
19695
|
+
onstateChange($$value);
|
|
19696
|
+
flushSync();
|
|
19697
|
+
}
|
|
19698
|
+
};
|
|
19699
|
+
{
|
|
19700
|
+
const interaction = ($$anchor2) => {
|
|
19701
|
+
SelectableTextInteractionContent($$anchor2, {
|
|
19702
|
+
get config() {
|
|
19703
|
+
return config();
|
|
19704
|
+
},
|
|
19705
|
+
get state() {
|
|
19706
|
+
return get$1(interactionState);
|
|
19707
|
+
},
|
|
19708
|
+
get isDataSaving() {
|
|
19709
|
+
return isDataSaving();
|
|
19710
|
+
},
|
|
19711
|
+
onselection: handleSelection
|
|
19712
|
+
});
|
|
19713
|
+
};
|
|
19714
|
+
const feedback = ($$anchor2) => {
|
|
19715
|
+
var fragment_2 = comment();
|
|
19716
|
+
var node = first_child(fragment_2);
|
|
19717
|
+
{
|
|
19718
|
+
var consequent_1 = ($$anchor3) => {
|
|
19719
|
+
var div = root_3();
|
|
19720
|
+
var node_1 = child(div);
|
|
19721
|
+
{
|
|
19722
|
+
var consequent = ($$anchor4) => {
|
|
19723
|
+
FeedbackAlert($$anchor4, {
|
|
19724
|
+
get type() {
|
|
19725
|
+
return get$1(feedbackState).feedbackType;
|
|
19726
|
+
},
|
|
19727
|
+
get message() {
|
|
19728
|
+
return get$1(feedbackState).feedbackMessage;
|
|
19729
|
+
},
|
|
19730
|
+
isAlert: false
|
|
19731
|
+
});
|
|
19732
|
+
};
|
|
19733
|
+
if_block(node_1, ($$render) => {
|
|
19734
|
+
if (get$1(feedbackState).isFeedbackShown) $$render(consequent);
|
|
19735
|
+
});
|
|
19736
|
+
}
|
|
19737
|
+
reset(div);
|
|
19738
|
+
append($$anchor3, div);
|
|
19739
|
+
};
|
|
19740
|
+
if_block(node, ($$render) => {
|
|
19741
|
+
if (get$1(sharedState).isInteractiveMode) $$render(consequent_1);
|
|
19742
|
+
});
|
|
19743
|
+
}
|
|
19744
|
+
append($$anchor2, fragment_2);
|
|
19745
|
+
};
|
|
19746
|
+
let $0 = /* @__PURE__ */ user_derived(() => config().rubric?.text || "");
|
|
19747
|
+
let $1 = /* @__PURE__ */ user_derived(() => config().prompt || "");
|
|
19748
|
+
PromptContainer($$anchor, {
|
|
19749
|
+
get rubric() {
|
|
19750
|
+
return get$1($0);
|
|
19751
|
+
},
|
|
19752
|
+
get prompt() {
|
|
19753
|
+
return get$1($1);
|
|
19754
|
+
},
|
|
19755
|
+
get interactionType() {
|
|
19756
|
+
return INTERACTION_TYPES.SELECTABLE_TEXT;
|
|
19757
|
+
},
|
|
19758
|
+
hasDivider: true,
|
|
19759
|
+
interaction,
|
|
19760
|
+
feedback,
|
|
19761
|
+
$$slots: { interaction: true, feedback: true }
|
|
19762
|
+
});
|
|
19763
|
+
}
|
|
19764
|
+
return pop($$exports);
|
|
19765
|
+
}
|
|
19766
|
+
create_custom_element(SelectableTextComponent, { api: {}, config: {}, isDataSaving: {}, onstateChange: {} }, [], [], true);
|
|
19767
|
+
const createSelectableTextConfig = (data) => {
|
|
19768
|
+
const { mode, isFinished, isLocked, getItemRubric, getItemStimulus, getItemInteraction } = useSharedState(data);
|
|
19769
|
+
const { prompt, text, selectable_type, is_single_mark, correct_answers, max_selections, feedback } = getItemInteraction();
|
|
19770
|
+
return {
|
|
19771
|
+
prompt,
|
|
19772
|
+
text,
|
|
19773
|
+
selectable_type,
|
|
19774
|
+
is_single_mark,
|
|
19775
|
+
correct_answers,
|
|
19776
|
+
max_selections: correct_answers?.length ?? max_selections,
|
|
19777
|
+
feedback,
|
|
19778
|
+
mode,
|
|
19779
|
+
rubric: getItemRubric(),
|
|
19780
|
+
stimulus: getItemStimulus(),
|
|
19781
|
+
isFinished,
|
|
19782
|
+
isLocked
|
|
19783
|
+
};
|
|
19784
|
+
};
|
|
19785
|
+
const createSelectableTextInteraction = () => {
|
|
19786
|
+
return {
|
|
19787
|
+
type: "selectableText",
|
|
19788
|
+
component: SelectableTextComponent,
|
|
19789
|
+
state: {
|
|
19790
|
+
data: { selections: [] },
|
|
19791
|
+
attempts: 0,
|
|
19792
|
+
completed: false,
|
|
19793
|
+
lastModified: Date.now()
|
|
19794
|
+
},
|
|
19795
|
+
createInitialState: () => ({
|
|
19796
|
+
data: { selections: [] },
|
|
19797
|
+
attempts: 0,
|
|
19798
|
+
completed: false,
|
|
19799
|
+
lastModified: Date.now()
|
|
19800
|
+
}),
|
|
19801
|
+
validate: () => ({
|
|
19802
|
+
isValid: true,
|
|
19803
|
+
score: 1,
|
|
19804
|
+
maxScore: 1
|
|
19805
|
+
}),
|
|
19806
|
+
serialize: (state2) => ({
|
|
19807
|
+
selections: state2.data.selections,
|
|
19808
|
+
timestamp: Date.now()
|
|
19809
|
+
}),
|
|
19810
|
+
deserialize: (answer) => ({
|
|
19811
|
+
data: { selections: answer.selections },
|
|
19812
|
+
attempts: 0,
|
|
19813
|
+
completed: false,
|
|
19814
|
+
lastModified: answer.timestamp
|
|
19815
|
+
}),
|
|
19816
|
+
isCompleted: () => false,
|
|
19817
|
+
isLocked: () => false
|
|
19818
|
+
};
|
|
19819
|
+
};
|
|
19820
|
+
registerInteraction("selectableText", createSelectableTextInteraction, SelectableTextComponent);
|
|
19084
19821
|
var root_1 = /* @__PURE__ */ from_html(`<link rel="preconnect" href="https://fonts.googleapis.com" class="svelte-1dpid58"/> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous" class="svelte-1dpid58"/> <link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&display=swap" rel="stylesheet" class="svelte-1dpid58"/>`, 1);
|
|
19085
19822
|
const $$css = {
|
|
19086
19823
|
hash: "svelte-1dpid58",
|
|
19087
|
-
code: ' *, :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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} ::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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} *, :after, :before{border:0 solid #e5e7eb;box-sizing:border-box} :after, :before{--tw-content:""} :host, html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Mulish,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent} 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-feature-settings:normal;font-size:1em;font-variation-settings:normal} small{font-size:80%} sub, sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sub{bottom:-.25em} sup{top:-.5em} table{border-collapse:collapse;border-color:inherit;text-indent:0} button, input, optgroup, select, textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0} button, select{text-transform:none} button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]){-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]:where(:not([hidden=until-found])){display:none} *{font-family:Mulish,sans-serif} input::-moz-selection, textarea::-moz-selection{background-color:hsla(0,0%,85%,.4)} input::selection, textarea::selection{background-color:hsla(0,0%,85%,.4)} .container{width:100%}@media (min-width:732px){ .container{max-width:732px}}@media (min-width:1196px){ .container{max-width:1196px}} .p2{font-size:1rem;font-weight:600;line-height:1.5rem;line-height:130%} .p3{font-size:.875rem;font-weight:400;line-height:1.25rem;line-height:1.5} .blanket-overlay{inset:0;position:absolute} .item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .focus-ring:focus{--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,1));--tw-ring-offset-width:4px} .focus-ring:focus, .raw-focus-ring{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .raw-focus-ring{--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,1));--tw-ring-offset-width:2px} .focus-ring-by-dropdown{outline:2px solid transparent;outline-offset:2px;--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(var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(59,64,240,var(--tw-border-opacity,1));border-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047} .divider, .focus-ring-by-dropdown{--tw-border-opacity:1} .divider{border-bottom-width:1px;border-color:rgb(218,224,224,var(--tw-border-opacity,1))}@keyframes svelte-1dpid58-pulse{50%{opacity:.5}} .animate-skeleton{animation:svelte-1dpid58-pulse 2s cubic-bezier(.4,0,.6,1) infinite;--tw-bg-opacity:1;background-color:rgb(226,232,240,var(--tw-bg-opacity,1))} .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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-mcq-option{font-size:1rem;line-height:1.5rem;line-height:19.2px;margin-bottom:1rem;min-height:52px;width:100%;--tw-text-opacity:1;border-radius:.5rem;border-width:1px;box-sizing:border-box;color:rgb(33,37,41,var(--tw-text-opacity,1));--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-text{align-items:center;display:flex;padding:.375rem .75rem;width:100%}@supports (overflow-wrap:anywhere){ .btn-mcq-text{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .btn-mcq-text{word-break:break-word}} .btn-mcq-option>span>span>span>.choice{align-items:center;border-radius:1rem;border-width:1px;display:flex;font-size:1rem;font-weight:700;height:2rem;justify-content:center;letter-spacing:.05em;line-height:1rem;width:2rem;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));padding:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected{border-width:2px;--tw-border-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1));border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected, .btn-mcq-option.selected:active{--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .btn-mcq-option.selected:active{background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}} .btn-mcq-option.finished{cursor:default} .btn-mcq-option.finished:active, .btn-mcq-option.finished:hover{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option.selected>span>span>.choice{--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))} .btn-mcq-option>span>span>span>.custom-checkbox{align-items:center;border-radius:.25rem;border-width:1px;display:flex;height:1.75rem;justify-content:center;pointer-events:none;width:1.75rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .btn-mcq-option:active>span>span>span>.custom-checkbox.preview-only, .btn-mcq-option:hover>span>span>span>.custom-checkbox.preview-only{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))}} .btn-mcq-option:active>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected>span>span>span>.custom-checkbox{border-width:0;pointer-events:none;--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(76,91,226,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected:active>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .btn-mcq-option.finished:active>span>span>span>.custom-checkbox, .btn-mcq-option.finished:hover>span>span>span>.custom-checkbox{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-mcq-option.missing.\\!correct, .btn-mcq-option.missing.correct{border-width:1px;--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.\\!correct.interactive:active, .btn-mcq-option.\\!correct.interactive:hover, .btn-mcq-option.correct.interactive:active, .btn-mcq-option.correct.interactive:hover, .btn-mcq-option.incorrect.interactive:active, .btn-mcq-option.incorrect.interactive:hover, .btn-mcq-option.missing.interactive:active, .btn-mcq-option.missing.interactive:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct{background-color:rgb(240,253,244,var(--tw-bg-opacity,1));border-color:rgb(21,128,61,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct, .btn-mcq-option.selected.incorrect{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected.incorrect{background-color:rgb(253,242,248,var(--tw-bg-opacity,1));border-color:rgb(190,24,93,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct>span>span>span>.choice, .btn-mcq-option.selected.correct>span>span>span>.choice, .btn-mcq-option.selected.incorrect>span>span>span>.choice{border-width:1px;--tw-border-opacity:1;border-color:rgb(113,115,119,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-pressed{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-base: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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-base{align-items:center;display:inline-flex;justify-content:center}@media (hover:hover) and (pointer:fine){ .btn-base:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-base:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container{align-items:center;display:flex;height:2.75rem;justify-content:center;width:2.75rem} .btn-touch-container:focus{outline:2px solid transparent;outline-offset:2px} .btn-icon-sm{align-items:center;background-color:hsla(0,0%,100%,.8);border-radius:.25rem;display:flex;height:1.5rem;justify-content:center;width:1.5rem}@media (hover:hover) and (pointer:fine){ .btn-touch-container:hover>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-touch-container:active>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container:focus-visible>.btn-icon-sm{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .typein-textbox:focus{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .typein-textbox{border-radius:.5rem;border-width:1px;width:100%;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));font-size:1rem;line-height:1.5rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .typein-textbox::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox::placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox:focus{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}} .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 transparent)!important}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{transition-duration:50ms}} .typein-textbox:focus{outline-color:#212529;outline-width:2px}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{outline-color:#212529;outline-width:2px}} .typein-textbox:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1))} .inline-typein-container>p{font-size:1.25rem;font-weight:600;line-height:3rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;cursor:grabbing!important;transition-duration:50ms;--tw-border-opacity:1!important;border-color:rgb(93,99,107,var(--tw-border-opacity,1))!important;--tw-bg-opacity:1!important;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))!important} #dnd-action-dragged-el .btn-vertical-icon{cursor:grabbing!important;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el .preview-icon{display:none!important} #dnd-action-dragged-el .preview-vertical{display:block!important} .image-description, .text-stimulus{padding-bottom:1rem;padding-top:1rem} .text-stimulus p{font-size:1.25rem;line-height:1.75rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .image-description p{font-size:.875rem;line-height:1.25rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus ol, .text-stimulus ul{font-size:1rem;line-height:1.5rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .text-stimulus ol ::marker, .text-stimulus ul ::marker{color:#282c87} .text-stimulus ol::marker, .text-stimulus ul::marker{color:#282c87} .image-description ol, .image-description ul{font-size:.875rem;line-height:1.25rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .image-description ol ::marker, .image-description ul ::marker{color:#212529} .image-description ol::marker, .image-description ul::marker{color:#212529} .image-description ul, .text-stimulus ul{list-style-type:disc} .image-description ol, .text-stimulus ol{list-style-type:decimal} .image-description ul li>p, .text-stimulus ul li>p{margin-left:-.5rem} .text-stimulus ol>li>p, .text-stimulus ul>li>p{display:inline;font-size:1rem;line-height:1.5rem;padding-bottom:0;padding-top:0} .image-description ol>li>p, .image-description ul>li>p{display:inline;font-size:.875rem;line-height:1.25rem;padding-bottom:0;padding-top:0} .image-description div.table-container:focus, .text-stimulus div.table-container:focus{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .image-description div.table-container, .text-stimulus div.table-container{border-radius:.5rem;overflow:auto;padding-left:.125rem;padding-right:.125rem} .image-description table, .text-stimulus table{margin-bottom:1rem;margin-top:.5rem;width:100%;--tw-border-spacing-x:0.75rem;--tw-border-spacing-y:0.75rem;border-radius:.5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);overflow-x:auto;--tw-shadow:0 0 0 1px #9ca3af;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .image-description table tr, .text-stimulus table tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table tr:last-child, .text-stimulus table tr:last-child{border-color:transparent} .image-description table td, .image-description table th, .text-stimulus table td, .text-stimulus table th{border-left-width:1px;min-width:140px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table td:first-child, .image-description table th:first-child, .text-stimulus table td:first-child, .text-stimulus table th:first-child{border-style:none} .text-stimulus table td>p, .text-stimulus table th>p{font-size:1rem;line-height:1.5rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .image-description table td>p, .image-description table th>p{font-size:.875rem;line-height:1.25rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus table th>p{font-weight:400} .image-description table th p, .prompt p, .text-stimulus table th p{font-weight:600} .prompt p b, .prompt p b i, .prompt p b i u, .prompt p b u, .prompt p b u i, .prompt p i b, .prompt p i b u, .prompt p i u b, .prompt p u b, .prompt p u b i, .prompt p u i b, .text-stimulus table th p b, .text-stimulus table th p b i, .text-stimulus table th p b i u, .text-stimulus table th p b u, .text-stimulus table th p b u i, .text-stimulus table th p i b, .text-stimulus table th p i b u, .text-stimulus table th p i u b, .text-stimulus table th p u b, .text-stimulus table th p u b i, .text-stimulus table th p u i b{font-weight:900} .dropdown-text:not(:last-child), .dropdown:not(:last-child){margin-right:1rem} .dropdown-container{align-items:center;border-radius:.5rem;border-width:1px;display:flex;height:2.75rem;overflow:hidden;white-space:nowrap;width:15rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .dropdown-container:focus{outline:2px solid transparent;outline-offset:2px;--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(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .dropdown-container:active, .dropdown-container:focus{border-width:2px;box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .dropdown-container:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));outline-color:#212529;outline-width:2px}} .dropdown-menu{border-radius:.5rem;border-width:1px;margin-top:.5rem;max-height:400px;overflow-y:auto;position:absolute;z-index:10;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@supports (overflow-wrap:anywhere){ .dropdown-menu{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .dropdown-menu{word-break:break-word}} .dropdown-menu{max-width:min(500px,100vw - 2rem);min-width:240px;width:-moz-max-content;width:max-content} .dropdown-item{cursor:pointer;font-size:1rem;line-height:1.5rem;outline:2px solid transparent;outline-offset:2px;padding:.5rem 1rem} .dropdown-itemtext{border-bottom-width:1px;border-color:transparent} .dropdown-itemtext.hover-option{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .dropdown-itemtext.current-option{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px;--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .dropdown-itemtext:active{border-bottom-width:2px} .image-description-accordion{border-bottom-width:1px;border-color:transparent;font-weight:600;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .group:focus .image-description-accordion{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px} .group:focus .image-description-accordion, .group:hover .image-description-accordion{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .group:active .image-description-accordion{border-bottom-width:2px} .sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap} .pointer-events-none{pointer-events:none} .pointer-events-auto{pointer-events:auto} .visible{visibility:visible} .invisible{visibility:hidden} .collapse{visibility:collapse} .static{position:static} .fixed{position:fixed} .absolute{position:absolute} .relative{position:relative} .inset-0{inset:0} .inset-y-0{bottom:0;top:0} .-top-2\\.5{top:-.625rem} .bottom-0{bottom:0} .bottom-1\\.5{bottom:.375rem} .bottom-4{bottom:1rem} .bottom-5{bottom:1.25rem} .bottom-\\[7px\\]{bottom:7px} .bottom-full{bottom:100%} .left-0{left:0} .left-1\\/2{left:50%} .left-4{left:1rem} .left-6{left:1.5rem} .left-\\[-9999px\\]{left:-9999px} .left-full{left:100%} .right-0{right:0} .right-1{right:.25rem} .right-1\\.5{right:.375rem} .right-2{right:.5rem} .right-4{right:1rem} .right-6{right:1.5rem} .right-full{right:100%} .top-0{top:0} .top-1{top:.25rem} .top-1\\.5{top:.375rem} .top-1\\/2{top:50%} .top-12{top:3rem} .top-2\\.5{top:.625rem} .top-3\\.5{top:.875rem} .top-\\[13px\\]{top:13px} .top-\\[calc\\(50\\%\\+0\\.375rem\\)\\]{top:calc(50% + .375rem)} .top-full{top:100%} .z-0{z-index:0} .z-10{z-index:10} .z-50{z-index:50} .m-0{margin:0} .m-auto{margin:auto} .mx-0\\.5{margin-left:.125rem;margin-right:.125rem} .mx-auto{margin-left:auto;margin-right:auto} .my-1\\.5{margin-bottom:.375rem;margin-top:.375rem} .my-2{margin-bottom:.5rem;margin-top:.5rem} .my-6{margin-bottom:1.5rem;margin-top:1.5rem} .-mb-1{margin-bottom:-.25rem} .-ml-1{margin-left:-.25rem} .-mr-1{margin-right:-.25rem} .-mr-2\\.5{margin-right:-.625rem} .-mt-0\\.5{margin-top:-.125rem} .-mt-1{margin-top:-.25rem} .mb-0\\.5{margin-bottom:.125rem} .mb-10{margin-bottom:2.5rem} .mb-12{margin-bottom:3rem} .mb-2{margin-bottom:.5rem} .mb-3{margin-bottom:.75rem} .mb-4{margin-bottom:1rem} .mb-5{margin-bottom:1.25rem} .mb-6{margin-bottom:1.5rem} .mb-\\[9\\.5px\\]{margin-bottom:9.5px} .ml-1{margin-left:.25rem} .ml-2{margin-left:.5rem} .ml-2\\.5{margin-left:.625rem} .ml-3{margin-left:.75rem} .ml-8\\.5{margin-left:2.125rem} .ml-\\[3px\\]{margin-left:3px} .ml-\\[9\\.5px\\]{margin-left:9.5px} .mr-1{margin-right:.25rem} .mr-2{margin-right:.5rem} .mr-4{margin-right:1rem} .mr-\\[9\\.5px\\]{margin-right:9.5px} .mt-1{margin-top:.25rem} .mt-2{margin-top:.5rem} .mt-4{margin-top:1rem} .mt-6{margin-top:1.5rem} .mt-7\\.5{margin-top:1.875} .mt-9{margin-top:2.25rem} .mt-\\[9\\.5px\\]{margin-top:9.5px} .line-clamp-1{-webkit-line-clamp:1} .line-clamp-1, .line-clamp-3{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical} .line-clamp-3{-webkit-line-clamp:3} .block{display:block} .inline-block{display:inline-block} .inline{display:inline} .flex{display:flex} .table{display:table} .grid{display:grid} .contents{display:contents} .hidden{display:none} .h-10\\.5{height:2.625rem} .h-11{height:2.75rem} .h-2{height:.5rem} .h-32{height:8rem} .h-4{height:1rem} .h-52{height:13rem} .h-6{height:1.5rem} .h-8{height:2rem} .h-8\\.5{height:2.125rem} .h-\\[13\\.33px\\]{height:13.33px} .h-\\[8\\.77px\\]{height:8.77px} .h-auto{height:auto} .h-fit{height:-moz-fit-content;height:fit-content} .h-full{height:100%} .h-screen{height:100vh} .max-h-\\[184px\\]{max-height:184px} .max-h-\\[470px\\]{max-height:470px} .max-h-\\[660px\\]{max-height:660px} .max-h-\\[calc\\(100vh-168px\\)\\]{max-height:calc(100vh - 168px)} .max-h-\\[calc\\(100vh-168px-34px\\)\\]{max-height:calc(100vh - 202px)} .max-h-none{max-height:none} .min-h-\\[133px\\]{min-height:133px} .min-h-\\[140px\\]{min-height:140px} .min-h-\\[154px\\]{min-height:154px} .min-h-\\[210px\\]{min-height:210px} .min-h-\\[44px\\]{min-height:44px} .min-h-\\[54px\\]{min-height:54px} .min-h-\\[86px\\]{min-height:86px} .w-11{width:2.75rem} .w-2{width:.5rem} .w-2\\/4{width:50%} .w-3{width:.75rem} .w-4{width:1rem} .w-6{width:1.5rem} .w-60{width:15rem} .w-8{width:2rem} .w-8\\.5{width:2.125rem} .w-\\[13\\.33px\\]{width:13.33px} .w-\\[8\\.77px\\]{width:8.77px} .w-auto{width:auto} .w-fit{width:-moz-fit-content;width:fit-content} .w-full{width:100%} .w-screen{width:100vw} .min-w-0{min-width:0} .min-w-\\[288px\\]{min-width:288px} .min-w-\\[44px\\]{min-width:44px} .min-w-\\[85px\\]{min-width:85px} .max-w-\\[1008px\\]{max-width:1008px} .max-w-\\[300px\\]{max-width:300px} .max-w-\\[304px\\]{max-width:304px} .max-w-\\[400px\\]{max-width:400px} .max-w-full{max-width:100%} .max-w-none{max-width:none} .flex-1{flex:1 1 0%} .flex-none{flex:none} .flex-shrink-0{flex-shrink:0} .grow{flex-grow:1} .basis-0{flex-basis:0px} .-translate-x-1\\/2{--tw-translate-x:-50%} .-translate-x-1\\/2, .-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))} .-translate-y-1\\/2{--tw-translate-y:-50%} .rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))} .\\!cursor-default{cursor:default!important} .\\!cursor-pointer{cursor:pointer!important} .cursor-default{cursor:default} .cursor-pointer{cursor:pointer} .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none} .resize-none{resize:none} .resize{resize:both} .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))} .flex-row{flex-direction:row} .flex-col{flex-direction:column} .flex-col-reverse{flex-direction:column-reverse} .flex-wrap{flex-wrap:wrap} .content-start{align-content:flex-start} .items-center{align-items:center} .justify-start{justify-content:flex-start} .justify-center{justify-content:center} .justify-between{justify-content:space-between} .gap-1{gap:.25rem} .gap-2{gap:.5rem} .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))} .space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1} .overflow-hidden{overflow:hidden} .overflow-y-auto{overflow-y:auto} .overflow-x-hidden{overflow-x:hidden} .overflow-y-visible{overflow-y:visible} .truncate{overflow:hidden;white-space:nowrap} .text-ellipsis, .truncate{text-overflow:ellipsis} .whitespace-normal{white-space:normal} .whitespace-nowrap{white-space:nowrap} .break-words{overflow-wrap:break-word} .break-all{word-break:break-all} .rounded{border-radius:.25rem} .rounded-\\[32px\\]{border-radius:32px} .rounded-lg{border-radius:.5rem} .rounded-md{border-radius:.375rem} .rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem} .rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem} .rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem} .border{border-width:1px} .border-2{border-width:2px} .border-b{border-bottom-width:1px} .border-l-4{border-left-width:4px} .border-l-6{border-left-width:6px} .border-dashed{border-style:dashed} .\\!border-blue-1000{--tw-border-opacity:1!important;border-color:rgb(40,44,135,var(--tw-border-opacity,1))!important} .border-blue-1000{--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .border-blue-950{--tw-border-opacity:1;border-color:rgb(29,78,216,var(--tw-border-opacity,1))} .border-border-minimal{--tw-border-opacity:1;border-color:rgb(229,231,235,var(--tw-border-opacity,1))} .border-charcoal{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .border-gray-800{--tw-border-opacity:1;border-color:rgb(93,99,107,var(--tw-border-opacity,1))} .border-gray-850{--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .border-green-700{--tw-border-opacity:1;border-color:rgb(22,163,74,var(--tw-border-opacity,1))} .border-green-800{--tw-border-opacity:1;border-color:rgb(0,102,5,var(--tw-border-opacity,1))} .border-green-900{--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1))} .border-red-600{--tw-border-opacity:1;border-color:rgb(220,38,38,var(--tw-border-opacity,1))} .border-red-800{--tw-border-opacity:1;border-color:rgb(217,12,85,var(--tw-border-opacity,1))} .border-red-850{--tw-border-opacity:1;border-color:rgb(219,39,119,var(--tw-border-opacity,1))} .border-red-900{--tw-border-opacity:1;border-color:rgb(190,24,93,var(--tw-border-opacity,1))} .border-soft-blue{--tw-border-opacity:1;border-color:rgb(84,101,251,var(--tw-border-opacity,1))} .border-white{--tw-border-opacity:1;border-color:rgb(255,255,255,var(--tw-border-opacity,1))} .\\!bg-violet-100{--tw-bg-opacity:1!important;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))!important} .\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .bg-blue-1000{--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239,246,255,var(--tw-bg-opacity,1))} .bg-charcoal\\/30{background-color:rgba(33,37,41,.3)} .bg-charcoal\\/80{background-color:rgba(33,37,41,.8)} .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(247,250,250,var(--tw-bg-opacity,1))} .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(244,244,244,var(--tw-bg-opacity,1))} .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(57,62,69,var(--tw-bg-opacity,1))} .bg-green-300{--tw-bg-opacity:1;background-color:rgb(241,254,241,var(--tw-bg-opacity,1))} .bg-green-400{--tw-bg-opacity:1;background-color:rgb(240,253,244,var(--tw-bg-opacity,1))} .bg-red-200{--tw-bg-opacity:1;background-color:rgb(254,202,202,var(--tw-bg-opacity,1))} .bg-red-300{--tw-bg-opacity:1;background-color:rgb(253,243,247,var(--tw-bg-opacity,1))} .bg-red-50{--tw-bg-opacity:1;background-color:rgb(253,242,248,var(--tw-bg-opacity,1))} .bg-soft-blue{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))} .bg-transparent{background-color:transparent} .bg-violet-100{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .bg-violet-150{--tw-bg-opacity:1;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))} .bg-white{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .bg-white\\/80{background-color:hsla(0,0%,100%,.8)} .bg-yellow-1000{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .bg-opacity-5{--tw-bg-opacity:0.05} .object-contain{-o-object-fit:contain;object-fit:contain} .p-0\\.5{padding:.125rem} .p-1{padding:.25rem} .p-1\\.5{padding:.375rem} .p-2{padding:.5rem} .p-3{padding:.75rem} .p-4{padding:1rem} .p-5{padding:1.25rem} .p-6{padding:1.5rem} .px-0{padding-left:0;padding-right:0} .px-2{padding-left:.5rem;padding-right:.5rem} .px-3{padding-left:.75rem;padding-right:.75rem} .px-4{padding-left:1rem;padding-right:1rem} .py-1{padding-bottom:.25rem;padding-top:.25rem} .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem} .py-2{padding-bottom:.5rem;padding-top:.5rem} .py-\\[9px\\]{padding-bottom:9px;padding-top:9px} .\\!pr-11{padding-right:2.75rem!important} .pb-0{padding-bottom:0} .pb-10{padding-bottom:2.5rem} .pb-2{padding-bottom:.5rem} .pb-3{padding-bottom:.75rem} .pb-\\[72px\\]{padding-bottom:72px} .pl-13\\.2{padding-left:3.125rem} .pl-24{padding-left:6rem} .pl-3{padding-left:.75rem} .pl-4{padding-left:1rem} .pr-10{padding-right:2.5rem} .pr-3{padding-right:.75rem} .pr-4{padding-right:1rem} .pt-0{padding-top:0} .pt-0\\.5{padding-top:.125rem} .pt-14{padding-top:3.5rem} .pt-4{padding-top:1rem} .pt-6{padding-top:1.5rem} .pt-\\[15px\\]{padding-top:15px} .pt-\\[55px\\]{padding-top:55px} .text-left{text-align:left} .text-center{text-align:center} .align-middle{vertical-align:middle} .text-base{font-size:1rem;line-height:1.5rem} .text-lg{font-size:1.125rem;line-height:1.75rem} .text-sm{font-size:.875rem;line-height:1.25rem} .text-xl{font-size:1.25rem;line-height:1.75rem} .font-bold{font-weight:700} .font-normal{font-weight:400} .font-semibold{font-weight:600} .leading-12{line-height:3rem} .leading-4{line-height:1rem} .leading-5{line-height:1.25rem} .leading-6{line-height:1.5rem} .leading-\\[1\\.5\\]{line-height:1.5} .leading-\\[150\\%\\]{line-height:150%} .leading-\\[19\\.2px\\]{line-height:19.2px} .leading-\\[19px\\]{line-height:19px} .leading-\\[22px\\]{line-height:22px} .\\!text-gray-900{--tw-text-opacity:1!important;color:rgb(57,62,69,var(--tw-text-opacity,1))!important} .text-blue-1000{--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .text-blue-500{--tw-text-opacity:1;color:rgb(37,99,235,var(--tw-text-opacity,1))} .text-blue-850{--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .text-charcoal{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-gray-500{--tw-text-opacity:1;color:rgb(107,114,128,var(--tw-text-opacity,1))} .text-gray-800{--tw-text-opacity:1;color:rgb(93,99,107,var(--tw-text-opacity,1))} .text-gray-860{--tw-text-opacity:1;color:rgb(55,65,81,var(--tw-text-opacity,1))} .text-green-700{--tw-text-opacity:1;color:rgb(22,163,74,var(--tw-text-opacity,1))} .text-green-800{--tw-text-opacity:1;color:rgb(0,102,5,var(--tw-text-opacity,1))} .text-green-900{--tw-text-opacity:1;color:rgb(21,128,61,var(--tw-text-opacity,1))} .text-inherit{color:inherit} .text-primary-emphasis{--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))} .text-red-400{--tw-text-opacity:1;color:rgb(157,23,77,var(--tw-text-opacity,1))} .text-red-800{--tw-text-opacity:1;color:rgb(217,12,85,var(--tw-text-opacity,1))} .text-red-850{--tw-text-opacity:1;color:rgb(219,39,119,var(--tw-text-opacity,1))} .text-red-900{--tw-text-opacity:1;color:rgb(190,24,93,var(--tw-text-opacity,1))} .text-white{--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .underline{text-decoration-line:underline} .opacity-0{opacity:0} .opacity-5{opacity:.05} .opacity-50{opacity:.5} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\]{--tw-shadow:0 -12px 14px -16px #00000033;--tw-shadow-colored:0 -12px 14px -16px var(--tw-shadow-color)} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\], .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .shadow-md{--tw-shadow:0px 2px 8px rgba(0,0,0,.2);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color)} .\\!outline-none{outline:2px solid transparent!important;outline-offset:2px!important} .outline-none{outline:2px solid transparent;outline-offset:2px} .blur{--tw-blur:blur(8px)} .blur, .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)} .backdrop-blur-md{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)} .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)} .duration-300{transition-duration:.3s} :host, html{-webkit-tap-highlight-color:inherit!important} .active\\:raw-focus-ring-by:active{--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(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529} .active\\:raw-focus-ring-by:active, .active\\:raw-focus-ring:active{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .active\\:raw-focus-ring:active{--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,1));--tw-ring-offset-width:2px}@media (min-width:732px){ .md\\:item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))}}@media (hover:hover) and (pointer:fine){ .td\\:hover-focus-ring:hover{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;transition-duration:50ms}} .last\\:mr-0:last-child{margin-right:0} .focus-within\\:left-0:focus-within{left:0} .focus-within\\:right-0:focus-within{right:0} .focus-within\\:top-0:focus-within{top:0} .focus-within\\:z-30:focus-within{z-index:30} .hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(222,222,255,var(--tw-bg-opacity,1))} .hover\\:bg-yellow-1000:hover{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .hover\\:text-charcoal:hover{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .hover\\:underline:hover{text-decoration-line:underline} .hover\\:decoration-2:hover{text-decoration-thickness:2px} .hover\\:underline-offset-\\[25\\%\\]:hover{text-underline-offset:25%} .focus-visible\\:border:focus-visible{border-width:1px} .focus-visible\\:border-charcoal:focus-visible{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .focus-visible\\:border-gray-400:focus-visible{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .focus-visible\\:border-gray-800:focus-visible{--tw-border-opacity:1;border-color:rgb(93,99,107,var(--tw-border-opacity,1))} .focus-visible\\:bg-yellow-900:focus-visible{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))} .focus-visible\\:text-charcoal:focus-visible{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .focus-visible\\:underline:focus-visible{text-decoration-line:underline} .focus-visible\\:decoration-2:focus-visible{text-decoration-thickness:2px} .focus-visible\\:underline-offset-\\[25\\%\\]:focus-visible{text-underline-offset:25%} .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px} .focus-visible\\:ring-4: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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .focus-visible\\:ring-soft-blue:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1))} .focus-visible\\:ring-offset-4:focus-visible{--tw-ring-offset-width:4px} .focus-visible\\:duration-50:focus-visible{transition-duration:50ms} .active\\:bg-black-55:active, .active\\:bg-black-60:active{background-color:rgba(0,0,0,.102)} .active\\:bg-yellow-1100:active{--tw-bg-opacity:1;background-color:rgb(238,206,26,var(--tw-bg-opacity,1))} .active\\:text-charcoal:active{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .disabled\\:text-gray-40:disabled{--tw-text-opacity:1;color:rgb(142,147,153,var(--tw-text-opacity,1))} .disabled\\:hover\\:bg-white:hover:disabled{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .group:hover .group-hover\\:underline{text-decoration-line:underline} .group.active .group-\\[\\.active\\]\\:border-b-2{border-bottom-width:2px}@media (min-width:732px){ .md\\:inset-0{inset:0} .md\\:top-20{top:5rem} .md\\:mb-2{margin-bottom:.5rem} .md\\:mb-4{margin-bottom:1rem} .md\\:mb-8{margin-bottom:2rem} .md\\:ml-0{margin-left:0} .md\\:mt-0{margin-top:0} .md\\:mt-14{margin-top:3.5rem} .md\\:block{display:block} .md\\:inline-block{display:inline-block} .md\\:flex{display:flex} .md\\:grid{display:grid} .md\\:hidden{display:none} .md\\:h-11{height:2.75rem} .md\\:h-5{height:1.25rem} .md\\:h-\\[13\\.5px\\]{height:13.5px} .md\\:h-fit{height:-moz-fit-content;height:fit-content} .md\\:max-h-\\[calc\\(100vh-128px\\)\\]{max-height:calc(100vh - 128px)} .md\\:max-h-\\[calc\\(100vh-128px-54px\\)\\]{max-height:calc(100vh - 182px)} .md\\:min-h-0{min-height:0} .md\\:min-h-\\[140px\\]{min-height:140px} .md\\:min-h-\\[164px\\]{min-height:164px} .md\\:w-1\\/2{width:50%} .md\\:w-11{width:2.75rem} .md\\:w-5{width:1.25rem} .md\\:w-\\[13\\.5px\\]{width:13.5px} .md\\:w-fit{width:-moz-fit-content;width:fit-content} .md\\:max-w-\\[calc\\(100vw-164px\\)\\]{max-width:calc(100vw - 164px)} .md\\:flex-none{flex:none} .md\\:grow-0{flex-grow:0} .md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))} .md\\:flex-row{flex-direction:row} .md\\:flex-col{flex-direction:column} .md\\:items-start{align-items:flex-start} .md\\:items-center{align-items:center} .md\\:justify-normal{justify-content:normal} .md\\:justify-center{justify-content:center} .md\\:justify-between{justify-content:space-between} .md\\:gap-4{gap:1rem} .md\\:gap-6{gap:1.5rem} .md\\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem} .md\\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))} .md\\:rounded-lg{border-radius:.5rem} .md\\:rounded-md{border-radius:.375rem} .md\\:rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0} .md\\:border{border-width:1px} .md\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .md\\:\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .md\\:p-4{padding:1rem} .md\\:px-0{padding-left:0;padding-right:0} .md\\:px-4{padding-left:1rem;padding-right:1rem} .md\\:px-6{padding-left:1.5rem;padding-right:1.5rem} .md\\:px-\\[82px\\]{padding-left:82px;padding-right:82px} .md\\:pb-0{padding-bottom:0} .md\\:pl-13\\.2{padding-left:3.125rem} .md\\:pl-4{padding-left:1rem} .md\\:pr-4{padding-right:1rem} .md\\:pt-20\\.5{padding-top:5.125rem} .md\\:text-center{text-align:center} .md\\:text-lg{font-size:1.125rem;line-height:1.75rem} .md\\:shadow-\\[0_0_\\#0000\\]{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .md\\:\\[grid-template-columns\\:repeat\\(2\\,minmax\\(auto\\,304px\\)\\)\\]{grid-template-columns:repeat(2,minmax(auto,304px))}}@media (min-width:1196px){ .lg\\:left-16{left:4rem} .lg\\:right-16{right:4rem} .lg\\:flex{display:flex} .lg\\:hidden{display:none} .lg\\:max-h-\\[calc\\(100vh-192px\\)\\]{max-height:calc(100vh - 192px)} .lg\\:max-h-\\[calc\\(100vh-192px-54px\\)\\]{max-height:calc(100vh - 246px)} .lg\\:min-h-\\[224px\\]{min-height:224px} .lg\\:w-full{width:100%} .lg\\:max-w-\\[50\\%\\]{max-width:50%} .lg\\:max-w-\\[calc\\(100vw-248px\\)\\]{max-width:calc(100vw - 248px)} .lg\\:grow{flex-grow:1} .lg\\:basis-1\\/2{flex-basis:50%} .lg\\:justify-start{justify-content:flex-start} .lg\\:rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .lg\\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .lg\\:px-16{padding-left:4rem;padding-right:4rem} .lg\\:px-\\[128px\\]{padding-left:128px;padding-right:128px} .lg\\:py-24{padding-bottom:6rem;padding-top:6rem} .lg\\:pt-6{padding-top:1.5rem}}@media (hover:hover) and (pointer:fine){ .td\\:border-2{border-width:2px} .td\\:border-blue-900{--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .td\\:hover\\:cursor-grab:hover{cursor:grab} .td\\:hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .td\\:hover\\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .td\\:hover\\:text-soft-blue:hover{--tw-text-opacity:1;color:rgb(84,101,251,var(--tw-text-opacity,1))} .group:hover .td\\:group-hover\\:bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .group:hover .td\\:group-hover\\:opacity-5{opacity:.05}}@media (pointer:coarse){ .coarse\\:active\\:bg-yellow-900:active{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))}}'
|
|
19824
|
+
code: ' *, :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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} ::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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} *, :after, :before{border:0 solid #e5e7eb;box-sizing:border-box} :after, :before{--tw-content:""} :host, html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Mulish,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent} 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-feature-settings:normal;font-size:1em;font-variation-settings:normal} small{font-size:80%} sub, sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sub{bottom:-.25em} sup{top:-.5em} table{border-collapse:collapse;border-color:inherit;text-indent:0} button, input, optgroup, select, textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0} button, select{text-transform:none} button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]){-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]:where(:not([hidden=until-found])){display:none} *{font-family:Mulish,sans-serif} input::-moz-selection, textarea::-moz-selection{background-color:hsla(0,0%,85%,.4)} input::selection, textarea::selection{background-color:hsla(0,0%,85%,.4)} .container{width:100%}@media (min-width:732px){ .container{max-width:732px}}@media (min-width:1196px){ .container{max-width:1196px}} .p2{font-size:1rem;font-weight:600;line-height:1.5rem;line-height:130%} .p3{font-size:.875rem;font-weight:400;line-height:1.25rem;line-height:1.5} .blanket-overlay{inset:0;position:absolute} .item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .focus-ring:focus{--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,1));--tw-ring-offset-width:4px} .focus-ring:focus, .raw-focus-ring{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .raw-focus-ring{--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,1));--tw-ring-offset-width:2px} .focus-ring-by-dropdown{outline:2px solid transparent;outline-offset:2px;--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(var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(59,64,240,var(--tw-border-opacity,1));border-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047} .divider, .focus-ring-by-dropdown{--tw-border-opacity:1} .divider{border-bottom-width:1px;border-color:rgb(218,224,224,var(--tw-border-opacity,1))}@keyframes svelte-1dpid58-pulse{50%{opacity:.5}} .animate-skeleton{animation:svelte-1dpid58-pulse 2s cubic-bezier(.4,0,.6,1) infinite;--tw-bg-opacity:1;background-color:rgb(226,232,240,var(--tw-bg-opacity,1))} .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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-mcq-option{font-size:1rem;line-height:1.5rem;line-height:19.2px;margin-bottom:1rem;min-height:52px;width:100%;--tw-text-opacity:1;border-radius:.5rem;border-width:1px;box-sizing:border-box;color:rgb(33,37,41,var(--tw-text-opacity,1));--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-text{align-items:center;display:flex;padding:.375rem .75rem;width:100%}@supports (overflow-wrap:anywhere){ .btn-mcq-text{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .btn-mcq-text{word-break:break-word}} .btn-mcq-option>span>span>span>.choice{align-items:center;border-radius:1rem;border-width:1px;display:flex;font-size:1rem;font-weight:700;height:2rem;justify-content:center;letter-spacing:.05em;line-height:1rem;width:2rem;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));padding:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected{border-width:2px;--tw-border-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1));border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected, .btn-mcq-option.selected:active{--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .btn-mcq-option.selected:active{background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}} .btn-mcq-option.finished{cursor:default} .btn-mcq-option.finished:active, .btn-mcq-option.finished:hover{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option.selected>span>span>.choice{--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))} .btn-mcq-option>span>span>span>.custom-checkbox{align-items:center;border-radius:.25rem;border-width:1px;display:flex;height:1.75rem;justify-content:center;pointer-events:none;width:1.75rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .btn-mcq-option:active>span>span>span>.custom-checkbox.preview-only, .btn-mcq-option:hover>span>span>span>.custom-checkbox.preview-only{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))}} .btn-mcq-option:active>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected>span>span>span>.custom-checkbox{border-width:0;pointer-events:none;--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(76,91,226,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected:active>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .btn-mcq-option.finished:active>span>span>span>.custom-checkbox, .btn-mcq-option.finished:hover>span>span>span>.custom-checkbox{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-mcq-option.missing.\\!correct, .btn-mcq-option.missing.correct{border-width:1px;--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.\\!correct.interactive:active, .btn-mcq-option.\\!correct.interactive:hover, .btn-mcq-option.correct.interactive:active, .btn-mcq-option.correct.interactive:hover, .btn-mcq-option.incorrect.interactive:active, .btn-mcq-option.incorrect.interactive:hover, .btn-mcq-option.missing.interactive:active, .btn-mcq-option.missing.interactive:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct{background-color:rgb(240,253,244,var(--tw-bg-opacity,1));border-color:rgb(21,128,61,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct, .btn-mcq-option.selected.incorrect{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected.incorrect{background-color:rgb(253,242,248,var(--tw-bg-opacity,1));border-color:rgb(190,24,93,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct>span>span>span>.choice, .btn-mcq-option.selected.correct>span>span>span>.choice, .btn-mcq-option.selected.incorrect>span>span>span>.choice{border-width:1px;--tw-border-opacity:1;border-color:rgb(113,115,119,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-pressed{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-base: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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-base{align-items:center;display:inline-flex;justify-content:center}@media (hover:hover) and (pointer:fine){ .btn-base:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-base:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container{align-items:center;display:flex;height:2.75rem;justify-content:center;width:2.75rem} .btn-touch-container:focus{outline:2px solid transparent;outline-offset:2px} .btn-icon-sm{align-items:center;background-color:hsla(0,0%,100%,.8);border-radius:.25rem;display:flex;height:1.5rem;justify-content:center;width:1.5rem}@media (hover:hover) and (pointer:fine){ .btn-touch-container:hover>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-touch-container:active>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container:focus-visible>.btn-icon-sm{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .typein-textbox:focus{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .typein-textbox{border-radius:.5rem;border-width:1px;width:100%;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));font-size:1rem;line-height:1.5rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .typein-textbox::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox::placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox:focus{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}} .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 transparent)!important}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{transition-duration:50ms}} .typein-textbox:focus{outline-color:#212529;outline-width:2px}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{outline-color:#212529;outline-width:2px}} .typein-textbox:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1))} .inline-typein-container>p{font-size:1.25rem;font-weight:600;line-height:3rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;cursor:grabbing!important;transition-duration:50ms;--tw-border-opacity:1!important;border-color:rgb(93,99,107,var(--tw-border-opacity,1))!important;--tw-bg-opacity:1!important;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))!important} #dnd-action-dragged-el .btn-vertical-icon{cursor:grabbing!important;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el .preview-icon{display:none!important} #dnd-action-dragged-el .preview-vertical{display:block!important} .image-description, .text-stimulus{padding-bottom:1rem;padding-top:1rem} .text-stimulus p{font-size:1.25rem;line-height:1.75rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .image-description p{font-size:.875rem;line-height:1.25rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus ol, .text-stimulus ul{font-size:1rem;line-height:1.5rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .text-stimulus ol ::marker, .text-stimulus ul ::marker{color:#282c87} .text-stimulus ol::marker, .text-stimulus ul::marker{color:#282c87} .image-description ol, .image-description ul{font-size:.875rem;line-height:1.25rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .image-description ol ::marker, .image-description ul ::marker{color:#212529} .image-description ol::marker, .image-description ul::marker{color:#212529} .image-description ul, .text-stimulus ul{list-style-type:disc} .image-description ol, .text-stimulus ol{list-style-type:decimal} .image-description ul li>p, .text-stimulus ul li>p{margin-left:-.5rem} .text-stimulus ol>li>p, .text-stimulus ul>li>p{display:inline;font-size:1rem;line-height:1.5rem;padding-bottom:0;padding-top:0} .image-description ol>li>p, .image-description ul>li>p{display:inline;font-size:.875rem;line-height:1.25rem;padding-bottom:0;padding-top:0} .image-description div.table-container:focus, .text-stimulus div.table-container:focus{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .image-description div.table-container, .text-stimulus div.table-container{border-radius:.5rem;overflow:auto;padding-left:.125rem;padding-right:.125rem} .image-description table, .text-stimulus table{margin-bottom:1rem;margin-top:.5rem;width:100%;--tw-border-spacing-x:0.75rem;--tw-border-spacing-y:0.75rem;border-radius:.5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);overflow-x:auto;--tw-shadow:0 0 0 1px #9ca3af;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .image-description table tr, .text-stimulus table tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table tr:last-child, .text-stimulus table tr:last-child{border-color:transparent} .image-description table td, .image-description table th, .text-stimulus table td, .text-stimulus table th{border-left-width:1px;min-width:140px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table td:first-child, .image-description table th:first-child, .text-stimulus table td:first-child, .text-stimulus table th:first-child{border-style:none} .text-stimulus table td>p, .text-stimulus table th>p{font-size:1rem;line-height:1.5rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .image-description table td>p, .image-description table th>p{font-size:.875rem;line-height:1.25rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus table th>p{font-weight:400} .image-description table th p, .prompt p, .text-stimulus table th p{font-weight:600} .prompt p b, .prompt p b i, .prompt p b i u, .prompt p b u, .prompt p b u i, .prompt p i b, .prompt p i b u, .prompt p i u b, .prompt p u b, .prompt p u b i, .prompt p u i b, .text-stimulus table th p b, .text-stimulus table th p b i, .text-stimulus table th p b i u, .text-stimulus table th p b u, .text-stimulus table th p b u i, .text-stimulus table th p i b, .text-stimulus table th p i b u, .text-stimulus table th p i u b, .text-stimulus table th p u b, .text-stimulus table th p u b i, .text-stimulus table th p u i b{font-weight:900} .dropdown-text:not(:last-child), .dropdown:not(:last-child){margin-right:1rem} .dropdown-container{align-items:center;border-radius:.5rem;border-width:1px;display:flex;height:2.75rem;overflow:hidden;white-space:nowrap;width:15rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .dropdown-container:focus{outline:2px solid transparent;outline-offset:2px;--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(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .dropdown-container:active, .dropdown-container:focus{border-width:2px;box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .dropdown-container:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));outline-color:#212529;outline-width:2px}} .dropdown-menu{border-radius:.5rem;border-width:1px;margin-top:.5rem;max-height:400px;overflow-y:auto;position:absolute;z-index:10;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@supports (overflow-wrap:anywhere){ .dropdown-menu{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .dropdown-menu{word-break:break-word}} .dropdown-menu{max-width:min(500px,100vw - 2rem);min-width:240px;width:-moz-max-content;width:max-content} .dropdown-item{cursor:pointer;font-size:1rem;line-height:1.5rem;outline:2px solid transparent;outline-offset:2px;padding:.5rem 1rem} .dropdown-itemtext{border-bottom-width:1px;border-color:transparent} .dropdown-itemtext.hover-option{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .dropdown-itemtext.current-option{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px;--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .dropdown-itemtext:active{border-bottom-width:2px} .image-description-accordion{border-bottom-width:1px;border-color:transparent;font-weight:600;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .group:focus .image-description-accordion{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px} .group:focus .image-description-accordion, .group:hover .image-description-accordion{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .group:active .image-description-accordion{border-bottom-width:2px} .selectable-text-passage{line-height:44px;margin-bottom:-.375rem;margin-left:-.375rem;margin-top:-.75rem;overflow-x:auto;padding:.75rem 2rem .375rem .375rem;width:100%} .selectable-line-word{display:block;overflow:visible;white-space:nowrap} .selectable-segment{cursor:pointer;display:inline;font-size:1rem;font-weight:400;line-height:1.5rem;margin-right:.25rem;min-height:2.75rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.75rem;padding-top:.75rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))}@media (hover:hover) and (pointer:fine){ .selectable-segment:hover{--tw-text-opacity:1;color:rgb(51,69,223,var(--tw-text-opacity,1));text-decoration-color:#3345df;text-decoration-line:underline;text-decoration-thickness:2px;text-underline-offset:25%}} .selectable-segment:active{--tw-text-opacity:1;color:rgb(51,69,223,var(--tw-text-opacity,1));text-decoration-color:#3345df;text-decoration-line:underline;text-decoration-thickness:3px;text-underline-offset:25%} .segment-trailing-punct{cursor:pointer;text-decoration-line:none} .segment-punctuation, .segment-trailing-punct{-webkit-user-select:none;-moz-user-select:none;user-select:none} .segment-punctuation{cursor:default;display:inline;font-size:1rem;line-height:1.5rem;margin-right:.25rem;--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))} .selectable-segment:focus-visible>.selectable-segment-text{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1));text-decoration-color:#212529;text-decoration-line:underline;text-decoration-thickness:2px;text-underline-offset:25%} .selectable-segment:not(.selected):not(.correct):not(.incorrect):not(.missing):focus-visible{--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1));text-decoration-line:none} .selectable-segment.selected>.selectable-segment-text{border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(107,114,128,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:5px .5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1));text-decoration-line:none}@media (hover:hover) and (pointer:fine){ .selectable-segment.selected:active, .selectable-segment.selected:hover{text-decoration-line:none} .selectable-segment.selected:active>.selectable-segment-text, .selectable-segment.selected:hover>.selectable-segment-text{--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(239,241,255,var(--tw-bg-opacity,1));--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}} .selectable-segment.selected:active>.selectable-segment-text{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .selectable-segment.selected:focus-visible>.selectable-segment-text{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .selectable-segment.\\!preview, .selectable-segment.preview{cursor:default;pointer-events:none} .selectable-segment.correct, .selectable-segment.incorrect, .selectable-segment.missing{color:inherit} .selectable-segment.correct:active, .selectable-segment.incorrect:active, .selectable-segment.missing:active{text-decoration-line:none}@media (hover:hover) and (pointer:fine){ .selectable-segment.correct:hover, .selectable-segment.incorrect:hover, .selectable-segment.missing:hover{text-decoration-line:none}} .selectable-segment.\\!correct{color:inherit} .selectable-segment.\\!correct:active{text-decoration-line:none}@media (hover:hover) and (pointer:fine){ .selectable-segment.\\!correct:hover{text-decoration-line:none}} .selectable-segment.missing{position:relative} .selectable-segment.correct:focus-visible>.selectable-segment-text, .selectable-segment.incorrect:focus-visible>.selectable-segment-text, .selectable-segment.missing:focus-visible>.selectable-segment-text{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;background-color:inherit;outline:2px solid transparent;outline-offset:2px;text-decoration-line:none;transition-duration:50ms} .selectable-segment.\\!correct:focus-visible>.selectable-segment-text{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;background-color:inherit;outline:2px solid transparent;outline-offset:2px;text-decoration-line:none;transition-duration:50ms} .selectable-segment.\\!correct:active>.selectable-segment-text, .selectable-segment.correct:active>.selectable-segment-text, .selectable-segment.incorrect:active>.selectable-segment-text{--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .selectable-segment.\\!correct>.selectable-segment-text, .selectable-segment.correct>.selectable-segment-text{background-color:rgb(240,253,244,var(--tw-bg-opacity,1));border-color:rgb(22,163,74,var(--tw-border-opacity,1));border-radius:.5rem;border-width:1px} .selectable-segment.\\!correct>.selectable-segment-text, .selectable-segment.correct>.selectable-segment-text, .selectable-segment.incorrect>.selectable-segment-text{--tw-border-opacity:1;--tw-bg-opacity:1;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:.375rem .375rem .375rem .5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1));text-decoration-line:none} .selectable-segment.incorrect>.selectable-segment-text{background-color:rgb(253,243,247,var(--tw-bg-opacity,1));border-color:rgb(190,24,93,var(--tw-border-opacity,1));border-radius:.5rem;border-width:1px} .selectable-segment.missing>.selectable-segment-text{border-radius:.5rem;border-style:dashed;border-width:2px;--tw-border-opacity:1;border-color:rgb(22,163,74,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:.375rem .5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1));text-decoration-line:none} .selectable-segment-missing-badge{align-items:center;display:inline-flex;font-size:.875rem;font-weight:600;left:.25rem;line-height:1.25rem;padding:.125rem .375rem;position:absolute;top:-.75rem;white-space:nowrap;z-index:10;--tw-text-opacity:1;border-radius:.25rem;border-width:1px;color:rgb(21,101,52,var(--tw-text-opacity,1));--tw-border-opacity:1;border-color:rgb(187,247,209,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(240,253,244,var(--tw-bg-opacity,1));line-height:130%} .selectable-segment.missing.interactive>.selectable-segment-missing-badge{opacity:0;transition-duration:.15s;transition-property:opacity,visibility;transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden} .selectable-segment.missing.interactive:focus-visible>.selectable-segment-missing-badge, .selectable-segment.missing.interactive:hover>.selectable-segment-missing-badge{opacity:1;visibility:visible}@media (hover:hover) and (pointer:fine){ .selectable-segment.missing:hover>.selectable-segment-text{--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(239,241,255,var(--tw-bg-opacity,1))}} .selectable-segment-status-icon{align-items:center;display:inline-flex;margin-left:.25rem;vertical-align:sub} .selectable-segment.selected .selectable-segment-deselect-icon{display:inline-flex;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .selectable-segment.selected .selectable-segment-deselect-icon .deselect-icon{height:7.63px;width:7.63px} .selectable-segment.\\!correct .selectable-segment-status-icon, .selectable-segment.correct .selectable-segment-status-icon{--tw-text-opacity:1;color:rgb(22,163,74,var(--tw-text-opacity,1))} .selectable-segment.incorrect .selectable-segment-status-icon{--tw-text-opacity:1;color:rgb(219,39,119,var(--tw-text-opacity,1))} .sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap} .pointer-events-none{pointer-events:none} .pointer-events-auto{pointer-events:auto} .visible{visibility:visible} .invisible{visibility:hidden} .collapse{visibility:collapse} .static{position:static} .fixed{position:fixed} .absolute{position:absolute} .relative{position:relative} .inset-0{inset:0} .inset-y-0{bottom:0;top:0} .-top-2\\.5{top:-.625rem} .bottom-0{bottom:0} .bottom-1\\.5{bottom:.375rem} .bottom-4{bottom:1rem} .bottom-5{bottom:1.25rem} .bottom-\\[7px\\]{bottom:7px} .bottom-full{bottom:100%} .left-0{left:0} .left-1\\/2{left:50%} .left-4{left:1rem} .left-6{left:1.5rem} .left-\\[-9999px\\]{left:-9999px} .left-full{left:100%} .right-0{right:0} .right-1{right:.25rem} .right-1\\.5{right:.375rem} .right-2{right:.5rem} .right-4{right:1rem} .right-6{right:1.5rem} .right-full{right:100%} .top-0{top:0} .top-1{top:.25rem} .top-1\\.5{top:.375rem} .top-1\\/2{top:50%} .top-12{top:3rem} .top-2\\.5{top:.625rem} .top-3\\.5{top:.875rem} .top-\\[13px\\]{top:13px} .top-\\[calc\\(50\\%\\+0\\.375rem\\)\\]{top:calc(50% + .375rem)} .top-full{top:100%} .z-0{z-index:0} .z-10{z-index:10} .z-50{z-index:50} .m-0{margin:0} .m-auto{margin:auto} .mx-0\\.5{margin-left:.125rem;margin-right:.125rem} .mx-auto{margin-left:auto;margin-right:auto} .my-1\\.5{margin-bottom:.375rem;margin-top:.375rem} .my-2{margin-bottom:.5rem;margin-top:.5rem} .my-6{margin-bottom:1.5rem;margin-top:1.5rem} .-mb-1{margin-bottom:-.25rem} .-ml-1{margin-left:-.25rem} .-mr-1{margin-right:-.25rem} .-mr-2\\.5{margin-right:-.625rem} .-mt-0\\.5{margin-top:-.125rem} .-mt-1{margin-top:-.25rem} .mb-0\\.5{margin-bottom:.125rem} .mb-10{margin-bottom:2.5rem} .mb-12{margin-bottom:3rem} .mb-2{margin-bottom:.5rem} .mb-3{margin-bottom:.75rem} .mb-4{margin-bottom:1rem} .mb-5{margin-bottom:1.25rem} .mb-6{margin-bottom:1.5rem} .mb-\\[9\\.5px\\]{margin-bottom:9.5px} .ml-1{margin-left:.25rem} .ml-2{margin-left:.5rem} .ml-2\\.5{margin-left:.625rem} .ml-3{margin-left:.75rem} .ml-8\\.5{margin-left:2.125rem} .ml-\\[3px\\]{margin-left:3px} .ml-\\[9\\.5px\\]{margin-left:9.5px} .mr-1{margin-right:.25rem} .mr-2{margin-right:.5rem} .mr-4{margin-right:1rem} .mr-\\[9\\.5px\\]{margin-right:9.5px} .mt-1{margin-top:.25rem} .mt-2{margin-top:.5rem} .mt-4{margin-top:1rem} .mt-6{margin-top:1.5rem} .mt-7\\.5{margin-top:1.875} .mt-9{margin-top:2.25rem} .mt-\\[9\\.5px\\]{margin-top:9.5px} .line-clamp-1{-webkit-line-clamp:1} .line-clamp-1, .line-clamp-3{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical} .line-clamp-3{-webkit-line-clamp:3} .block{display:block} .inline-block{display:inline-block} .inline{display:inline} .flex{display:flex} .table{display:table} .grid{display:grid} .contents{display:contents} .hidden{display:none} .h-10\\.5{height:2.625rem} .h-11{height:2.75rem} .h-2{height:.5rem} .h-32{height:8rem} .h-4{height:1rem} .h-52{height:13rem} .h-6{height:1.5rem} .h-8{height:2rem} .h-8\\.5{height:2.125rem} .h-\\[13\\.33px\\]{height:13.33px} .h-\\[8\\.77px\\]{height:8.77px} .h-auto{height:auto} .h-fit{height:-moz-fit-content;height:fit-content} .h-full{height:100%} .h-screen{height:100vh} .max-h-\\[184px\\]{max-height:184px} .max-h-\\[470px\\]{max-height:470px} .max-h-\\[660px\\]{max-height:660px} .max-h-\\[calc\\(100vh-168px\\)\\]{max-height:calc(100vh - 168px)} .max-h-\\[calc\\(100vh-168px-34px\\)\\]{max-height:calc(100vh - 202px)} .max-h-none{max-height:none} .min-h-\\[133px\\]{min-height:133px} .min-h-\\[140px\\]{min-height:140px} .min-h-\\[154px\\]{min-height:154px} .min-h-\\[210px\\]{min-height:210px} .min-h-\\[44px\\]{min-height:44px} .min-h-\\[54px\\]{min-height:54px} .min-h-\\[86px\\]{min-height:86px} .w-11{width:2.75rem} .w-2{width:.5rem} .w-2\\/4{width:50%} .w-3{width:.75rem} .w-4{width:1rem} .w-6{width:1.5rem} .w-60{width:15rem} .w-8{width:2rem} .w-8\\.5{width:2.125rem} .w-\\[13\\.33px\\]{width:13.33px} .w-\\[8\\.77px\\]{width:8.77px} .w-auto{width:auto} .w-fit{width:-moz-fit-content;width:fit-content} .w-full{width:100%} .w-screen{width:100vw} .min-w-0{min-width:0} .min-w-\\[288px\\]{min-width:288px} .min-w-\\[44px\\]{min-width:44px} .min-w-\\[85px\\]{min-width:85px} .max-w-\\[1008px\\]{max-width:1008px} .max-w-\\[300px\\]{max-width:300px} .max-w-\\[304px\\]{max-width:304px} .max-w-\\[400px\\]{max-width:400px} .max-w-\\[544px\\]{max-width:544px} .max-w-\\[864px\\]{max-width:864px} .max-w-full{max-width:100%} .max-w-none{max-width:none} .flex-1{flex:1 1 0%} .flex-none{flex:none} .flex-shrink-0{flex-shrink:0} .grow{flex-grow:1} .basis-0{flex-basis:0px} .-translate-x-1\\/2{--tw-translate-x:-50%} .-translate-x-1\\/2, .-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))} .-translate-y-1\\/2{--tw-translate-y:-50%} .rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))} .\\!cursor-default{cursor:default!important} .\\!cursor-pointer{cursor:pointer!important} .cursor-default{cursor:default} .cursor-pointer{cursor:pointer} .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none} .resize-none{resize:none} .resize{resize:both} .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))} .flex-row{flex-direction:row} .flex-col{flex-direction:column} .flex-col-reverse{flex-direction:column-reverse} .flex-wrap{flex-wrap:wrap} .content-start{align-content:flex-start} .items-center{align-items:center} .justify-start{justify-content:flex-start} .justify-center{justify-content:center} .justify-between{justify-content:space-between} .gap-1{gap:.25rem} .gap-2{gap:.5rem} .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))} .space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1} .overflow-hidden{overflow:hidden} .overflow-y-auto{overflow-y:auto} .overflow-x-hidden{overflow-x:hidden} .overflow-y-visible{overflow-y:visible} .truncate{overflow:hidden;white-space:nowrap} .text-ellipsis, .truncate{text-overflow:ellipsis} .whitespace-normal{white-space:normal} .whitespace-nowrap{white-space:nowrap} .break-words{overflow-wrap:break-word} .break-all{word-break:break-all} .rounded{border-radius:.25rem} .rounded-\\[32px\\]{border-radius:32px} .rounded-lg{border-radius:.5rem} .rounded-md{border-radius:.375rem} .rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem} .rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem} .rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem} .border{border-width:1px} .border-2{border-width:2px} .border-b{border-bottom-width:1px} .border-l-4{border-left-width:4px} .border-l-6{border-left-width:6px} .border-dashed{border-style:dashed} .\\!border-blue-1000{--tw-border-opacity:1!important;border-color:rgb(40,44,135,var(--tw-border-opacity,1))!important} .border-blue-1000{--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .border-blue-950{--tw-border-opacity:1;border-color:rgb(29,78,216,var(--tw-border-opacity,1))} .border-border-minimal{--tw-border-opacity:1;border-color:rgb(229,231,235,var(--tw-border-opacity,1))} .border-charcoal{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .border-gray-800{--tw-border-opacity:1;border-color:rgb(93,99,107,var(--tw-border-opacity,1))} .border-gray-850{--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .border-green-700{--tw-border-opacity:1;border-color:rgb(22,163,74,var(--tw-border-opacity,1))} .border-green-800{--tw-border-opacity:1;border-color:rgb(0,102,5,var(--tw-border-opacity,1))} .border-green-900{--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1))} .border-red-600{--tw-border-opacity:1;border-color:rgb(220,38,38,var(--tw-border-opacity,1))} .border-red-800{--tw-border-opacity:1;border-color:rgb(217,12,85,var(--tw-border-opacity,1))} .border-red-850{--tw-border-opacity:1;border-color:rgb(219,39,119,var(--tw-border-opacity,1))} .border-red-900{--tw-border-opacity:1;border-color:rgb(190,24,93,var(--tw-border-opacity,1))} .border-soft-blue{--tw-border-opacity:1;border-color:rgb(84,101,251,var(--tw-border-opacity,1))} .border-white{--tw-border-opacity:1;border-color:rgb(255,255,255,var(--tw-border-opacity,1))} .\\!bg-violet-100{--tw-bg-opacity:1!important;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))!important} .\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .bg-blue-1000{--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239,246,255,var(--tw-bg-opacity,1))} .bg-charcoal\\/30{background-color:rgba(33,37,41,.3)} .bg-charcoal\\/80{background-color:rgba(33,37,41,.8)} .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(247,250,250,var(--tw-bg-opacity,1))} .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(244,244,244,var(--tw-bg-opacity,1))} .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(57,62,69,var(--tw-bg-opacity,1))} .bg-green-300{--tw-bg-opacity:1;background-color:rgb(241,254,241,var(--tw-bg-opacity,1))} .bg-green-400{--tw-bg-opacity:1;background-color:rgb(240,253,244,var(--tw-bg-opacity,1))} .bg-red-200{--tw-bg-opacity:1;background-color:rgb(254,202,202,var(--tw-bg-opacity,1))} .bg-red-300{--tw-bg-opacity:1;background-color:rgb(253,243,247,var(--tw-bg-opacity,1))} .bg-red-50{--tw-bg-opacity:1;background-color:rgb(253,242,248,var(--tw-bg-opacity,1))} .bg-soft-blue{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))} .bg-transparent{background-color:transparent} .bg-violet-100{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .bg-violet-150{--tw-bg-opacity:1;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))} .bg-white{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .bg-white\\/80{background-color:hsla(0,0%,100%,.8)} .bg-yellow-1000{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .bg-opacity-5{--tw-bg-opacity:0.05} .object-contain{-o-object-fit:contain;object-fit:contain} .p-0\\.5{padding:.125rem} .p-1{padding:.25rem} .p-1\\.5{padding:.375rem} .p-2{padding:.5rem} .p-3{padding:.75rem} .p-4{padding:1rem} .p-5{padding:1.25rem} .p-6{padding:1.5rem} .px-0{padding-left:0;padding-right:0} .px-2{padding-left:.5rem;padding-right:.5rem} .px-3{padding-left:.75rem;padding-right:.75rem} .px-4{padding-left:1rem;padding-right:1rem} .py-1{padding-bottom:.25rem;padding-top:.25rem} .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem} .py-2{padding-bottom:.5rem;padding-top:.5rem} .py-\\[9px\\]{padding-bottom:9px;padding-top:9px} .\\!pr-11{padding-right:2.75rem!important} .pb-0{padding-bottom:0} .pb-10{padding-bottom:2.5rem} .pb-2{padding-bottom:.5rem} .pb-3{padding-bottom:.75rem} .pb-\\[72px\\]{padding-bottom:72px} .pl-13\\.2{padding-left:3.125rem} .pl-24{padding-left:6rem} .pl-3{padding-left:.75rem} .pl-4{padding-left:1rem} .pr-10{padding-right:2.5rem} .pr-3{padding-right:.75rem} .pr-4{padding-right:1rem} .pt-0{padding-top:0} .pt-0\\.5{padding-top:.125rem} .pt-14{padding-top:3.5rem} .pt-4{padding-top:1rem} .pt-6{padding-top:1.5rem} .pt-\\[15px\\]{padding-top:15px} .pt-\\[55px\\]{padding-top:55px} .text-left{text-align:left} .text-center{text-align:center} .align-middle{vertical-align:middle} .text-base{font-size:1rem;line-height:1.5rem} .text-lg{font-size:1.125rem;line-height:1.75rem} .text-sm{font-size:.875rem;line-height:1.25rem} .text-xl{font-size:1.25rem;line-height:1.75rem} .font-bold{font-weight:700} .font-normal{font-weight:400} .font-semibold{font-weight:600} .leading-12{line-height:3rem} .leading-4{line-height:1rem} .leading-5{line-height:1.25rem} .leading-6{line-height:1.5rem} .leading-\\[1\\.5\\]{line-height:1.5} .leading-\\[150\\%\\]{line-height:150%} .leading-\\[19\\.2px\\]{line-height:19.2px} .leading-\\[19px\\]{line-height:19px} .leading-\\[22px\\]{line-height:22px} .\\!text-gray-900{--tw-text-opacity:1!important;color:rgb(57,62,69,var(--tw-text-opacity,1))!important} .text-blue-1000{--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .text-blue-500{--tw-text-opacity:1;color:rgb(37,99,235,var(--tw-text-opacity,1))} .text-blue-850{--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .text-charcoal{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-gray-500{--tw-text-opacity:1;color:rgb(107,114,128,var(--tw-text-opacity,1))} .text-gray-800{--tw-text-opacity:1;color:rgb(93,99,107,var(--tw-text-opacity,1))} .text-gray-860{--tw-text-opacity:1;color:rgb(55,65,81,var(--tw-text-opacity,1))} .text-green-700{--tw-text-opacity:1;color:rgb(22,163,74,var(--tw-text-opacity,1))} .text-green-800{--tw-text-opacity:1;color:rgb(0,102,5,var(--tw-text-opacity,1))} .text-green-900{--tw-text-opacity:1;color:rgb(21,128,61,var(--tw-text-opacity,1))} .text-inherit{color:inherit} .text-primary-emphasis{--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))} .text-red-400{--tw-text-opacity:1;color:rgb(157,23,77,var(--tw-text-opacity,1))} .text-red-800{--tw-text-opacity:1;color:rgb(217,12,85,var(--tw-text-opacity,1))} .text-red-850{--tw-text-opacity:1;color:rgb(219,39,119,var(--tw-text-opacity,1))} .text-red-900{--tw-text-opacity:1;color:rgb(190,24,93,var(--tw-text-opacity,1))} .text-white{--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .underline{text-decoration-line:underline} .opacity-0{opacity:0} .opacity-5{opacity:.05} .opacity-50{opacity:.5} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\]{--tw-shadow:0 -12px 14px -16px #00000033;--tw-shadow-colored:0 -12px 14px -16px var(--tw-shadow-color)} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\], .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .shadow-md{--tw-shadow:0px 2px 8px rgba(0,0,0,.2);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color)} .\\!outline-none{outline:2px solid transparent!important;outline-offset:2px!important} .outline-none{outline:2px solid transparent;outline-offset:2px} .blur{--tw-blur:blur(8px)} .blur, .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)} .backdrop-blur-md{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)} .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)} .duration-300{transition-duration:.3s} :host, html{-webkit-tap-highlight-color:inherit!important} .active\\:raw-focus-ring-by:active{--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(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529} .active\\:raw-focus-ring-by:active, .active\\:raw-focus-ring:active{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .active\\:raw-focus-ring:active{--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,1));--tw-ring-offset-width:2px}@media (min-width:732px){ .md\\:item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))}}@media (hover:hover) and (pointer:fine){ .td\\:hover-focus-ring:hover{outline:2px solid transparent;outline-offset:2px;--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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;transition-duration:50ms}} .last\\:mr-0:last-child{margin-right:0} .focus-within\\:left-0:focus-within{left:0} .focus-within\\:right-0:focus-within{right:0} .focus-within\\:top-0:focus-within{top:0} .focus-within\\:z-30:focus-within{z-index:30} .hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(222,222,255,var(--tw-bg-opacity,1))} .hover\\:bg-yellow-1000:hover{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .hover\\:text-charcoal:hover{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .hover\\:underline:hover{text-decoration-line:underline} .hover\\:decoration-2:hover{text-decoration-thickness:2px} .hover\\:underline-offset-\\[25\\%\\]:hover{text-underline-offset:25%} .focus-visible\\:border:focus-visible{border-width:1px} .focus-visible\\:border-charcoal:focus-visible{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .focus-visible\\:border-gray-400:focus-visible{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .focus-visible\\:border-gray-800:focus-visible{--tw-border-opacity:1;border-color:rgb(93,99,107,var(--tw-border-opacity,1))} .focus-visible\\:bg-yellow-900:focus-visible{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))} .focus-visible\\:text-charcoal:focus-visible{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .focus-visible\\:underline:focus-visible{text-decoration-line:underline} .focus-visible\\:decoration-2:focus-visible{text-decoration-thickness:2px} .focus-visible\\:underline-offset-\\[25\\%\\]:focus-visible{text-underline-offset:25%} .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px} .focus-visible\\:ring-4: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);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .focus-visible\\:ring-soft-blue:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1))} .focus-visible\\:ring-offset-4:focus-visible{--tw-ring-offset-width:4px} .focus-visible\\:duration-50:focus-visible{transition-duration:50ms} .active\\:bg-black-55:active, .active\\:bg-black-60:active{background-color:rgba(0,0,0,.102)} .active\\:bg-yellow-1100:active{--tw-bg-opacity:1;background-color:rgb(238,206,26,var(--tw-bg-opacity,1))} .active\\:text-charcoal:active{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .disabled\\:text-gray-40:disabled{--tw-text-opacity:1;color:rgb(142,147,153,var(--tw-text-opacity,1))} .disabled\\:hover\\:bg-white:hover:disabled{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .group:hover .group-hover\\:underline{text-decoration-line:underline} .group.active .group-\\[\\.active\\]\\:border-b-2{border-bottom-width:2px}@media (min-width:732px){ .md\\:inset-0{inset:0} .md\\:top-20{top:5rem} .md\\:mb-2{margin-bottom:.5rem} .md\\:mb-4{margin-bottom:1rem} .md\\:mb-8{margin-bottom:2rem} .md\\:ml-0{margin-left:0} .md\\:mt-0{margin-top:0} .md\\:mt-14{margin-top:3.5rem} .md\\:block{display:block} .md\\:inline-block{display:inline-block} .md\\:flex{display:flex} .md\\:grid{display:grid} .md\\:hidden{display:none} .md\\:h-11{height:2.75rem} .md\\:h-5{height:1.25rem} .md\\:h-\\[13\\.5px\\]{height:13.5px} .md\\:h-fit{height:-moz-fit-content;height:fit-content} .md\\:max-h-\\[calc\\(100vh-128px\\)\\]{max-height:calc(100vh - 128px)} .md\\:max-h-\\[calc\\(100vh-128px-54px\\)\\]{max-height:calc(100vh - 182px)} .md\\:min-h-0{min-height:0} .md\\:min-h-\\[140px\\]{min-height:140px} .md\\:min-h-\\[164px\\]{min-height:164px} .md\\:w-1\\/2{width:50%} .md\\:w-11{width:2.75rem} .md\\:w-5{width:1.25rem} .md\\:w-\\[13\\.5px\\]{width:13.5px} .md\\:w-fit{width:-moz-fit-content;width:fit-content} .md\\:max-w-\\[calc\\(100vw-164px\\)\\]{max-width:calc(100vw - 164px)} .md\\:flex-none{flex:none} .md\\:grow-0{flex-grow:0} .md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))} .md\\:flex-row{flex-direction:row} .md\\:flex-col{flex-direction:column} .md\\:items-start{align-items:flex-start} .md\\:items-center{align-items:center} .md\\:justify-normal{justify-content:normal} .md\\:justify-center{justify-content:center} .md\\:justify-between{justify-content:space-between} .md\\:gap-4{gap:1rem} .md\\:gap-6{gap:1.5rem} .md\\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem} .md\\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))} .md\\:rounded-lg{border-radius:.5rem} .md\\:rounded-md{border-radius:.375rem} .md\\:rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0} .md\\:border{border-width:1px} .md\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .md\\:\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .md\\:p-4{padding:1rem} .md\\:px-0{padding-left:0;padding-right:0} .md\\:px-4{padding-left:1rem;padding-right:1rem} .md\\:px-6{padding-left:1.5rem;padding-right:1.5rem} .md\\:px-\\[82px\\]{padding-left:82px;padding-right:82px} .md\\:pb-0{padding-bottom:0} .md\\:pl-13\\.2{padding-left:3.125rem} .md\\:pl-4{padding-left:1rem} .md\\:pr-4{padding-right:1rem} .md\\:pt-20\\.5{padding-top:5.125rem} .md\\:text-center{text-align:center} .md\\:text-lg{font-size:1.125rem;line-height:1.75rem} .md\\:shadow-\\[0_0_\\#0000\\]{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .md\\:\\[grid-template-columns\\:repeat\\(2\\,minmax\\(auto\\,304px\\)\\)\\]{grid-template-columns:repeat(2,minmax(auto,304px))}}@media (min-width:1196px){ .lg\\:left-16{left:4rem} .lg\\:right-16{right:4rem} .lg\\:flex{display:flex} .lg\\:hidden{display:none} .lg\\:max-h-\\[calc\\(100vh-192px\\)\\]{max-height:calc(100vh - 192px)} .lg\\:max-h-\\[calc\\(100vh-192px-54px\\)\\]{max-height:calc(100vh - 246px)} .lg\\:min-h-\\[224px\\]{min-height:224px} .lg\\:w-full{width:100%} .lg\\:max-w-\\[50\\%\\]{max-width:50%} .lg\\:max-w-\\[calc\\(100vw-248px\\)\\]{max-width:calc(100vw - 248px)} .lg\\:grow{flex-grow:1} .lg\\:basis-1\\/2{flex-basis:50%} .lg\\:justify-start{justify-content:flex-start} .lg\\:rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .lg\\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .lg\\:px-16{padding-left:4rem;padding-right:4rem} .lg\\:px-\\[128px\\]{padding-left:128px;padding-right:128px} .lg\\:py-24{padding-bottom:6rem;padding-top:6rem} .lg\\:pt-6{padding-top:1.5rem}}@media (hover:hover) and (pointer:fine){ .td\\:border-2{border-width:2px} .td\\:border-blue-900{--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .td\\:hover\\:cursor-grab:hover{cursor:grab} .td\\:hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .td\\:hover\\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .td\\:hover\\:text-soft-blue:hover{--tw-text-opacity:1;color:rgb(84,101,251,var(--tw-text-opacity,1))} .group:hover .td\\:group-hover\\:bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .group:hover .td\\:group-hover\\:opacity-5{opacity:.05}}@media (pointer:coarse){ .coarse\\:active\\:bg-yellow-900:active{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))}}'
|
|
19088
19825
|
};
|
|
19089
19826
|
function InteractionBuilder($$anchor, $$props) {
|
|
19090
19827
|
push($$props, true);
|
|
@@ -19118,18 +19855,17 @@ function InteractionBuilder($$anchor, $$props) {
|
|
|
19118
19855
|
try {
|
|
19119
19856
|
set(data, await loadData(sessionId(), itemId(), get$1(mode)), true);
|
|
19120
19857
|
if (!isMounted) return;
|
|
19121
|
-
const
|
|
19122
|
-
const interactionType =
|
|
19858
|
+
const apiType = get$1(data).interaction.type;
|
|
19859
|
+
const interactionType = mapAPIToInteractionType(apiType);
|
|
19123
19860
|
if (!interactionType) {
|
|
19124
|
-
throw new Error(`Unable to determine interaction type.
|
|
19861
|
+
throw new Error(`Unable to determine interaction type. API type: ${apiType}`);
|
|
19125
19862
|
}
|
|
19126
|
-
|
|
19127
|
-
set(config, createConfigFromLoadedData(get$1(data), pluginType), true);
|
|
19863
|
+
set(config, createConfigFromLoadedData(get$1(data), interactionType), true);
|
|
19128
19864
|
if (!get$1(config)) {
|
|
19129
19865
|
throw new Error(`Failed to create config for type: ${interactionType}`);
|
|
19130
19866
|
}
|
|
19131
|
-
set(interactionAPI, createInteraction(
|
|
19132
|
-
set(InteractionComponent, getComponent(
|
|
19867
|
+
set(interactionAPI, createInteraction(interactionType, get$1(config), get$1(data)), true);
|
|
19868
|
+
set(InteractionComponent, getComponent(interactionType) ?? null, true);
|
|
19133
19869
|
if (!get$1(InteractionComponent)) {
|
|
19134
19870
|
throw new Error(`No component registered for type: ${interactionType}`);
|
|
19135
19871
|
}
|
|
@@ -19145,8 +19881,8 @@ function InteractionBuilder($$anchor, $$props) {
|
|
|
19145
19881
|
isMounted = false;
|
|
19146
19882
|
};
|
|
19147
19883
|
});
|
|
19148
|
-
const createConfigFromLoadedData = (data2,
|
|
19149
|
-
switch (
|
|
19884
|
+
const createConfigFromLoadedData = (data2, interactionType) => {
|
|
19885
|
+
switch (interactionType) {
|
|
19150
19886
|
case "mcq":
|
|
19151
19887
|
return createMCQConfig(data2);
|
|
19152
19888
|
case "typein":
|
|
@@ -19155,6 +19891,8 @@ function InteractionBuilder($$anchor, $$props) {
|
|
|
19155
19891
|
return createCategoriseConfig(data2);
|
|
19156
19892
|
case "dropdown":
|
|
19157
19893
|
return createDropdownConfig(data2);
|
|
19894
|
+
case "selectableText":
|
|
19895
|
+
return createSelectableTextConfig(data2);
|
|
19158
19896
|
default:
|
|
19159
19897
|
return null;
|
|
19160
19898
|
}
|