eat-js-sdk 2.0.43 → 2.0.44
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 +145 -91
- package/package.json +1 -1
|
@@ -5862,7 +5862,7 @@ function FeedbackAlert($$anchor, $$props) {
|
|
|
5862
5862
|
}
|
|
5863
5863
|
};
|
|
5864
5864
|
if_block(node_1, ($$render) => {
|
|
5865
|
-
if (showIcon()
|
|
5865
|
+
if (showIcon()) $$render(consequent);
|
|
5866
5866
|
});
|
|
5867
5867
|
}
|
|
5868
5868
|
var div_1 = sibling(node_1, 2);
|
|
@@ -5893,7 +5893,7 @@ function FeedbackAlert($$anchor, $$props) {
|
|
|
5893
5893
|
append($$anchor2, div);
|
|
5894
5894
|
};
|
|
5895
5895
|
if_block(node, ($$render) => {
|
|
5896
|
-
if (message()) $$render(consequent_2);
|
|
5896
|
+
if (message() && type() !== "skipped") $$render(consequent_2);
|
|
5897
5897
|
});
|
|
5898
5898
|
}
|
|
5899
5899
|
append($$anchor, fragment);
|
|
@@ -11717,6 +11717,138 @@ const useFilterUniqueObject = (data, identifier = "id") => {
|
|
|
11717
11717
|
const uniqueMap = new Map(data.map((obj) => [obj[identifier], obj]));
|
|
11718
11718
|
return Array.from(uniqueMap.values());
|
|
11719
11719
|
};
|
|
11720
|
+
const stripStatus = (itemId) => {
|
|
11721
|
+
return itemId.includes(CATEGORISE.DASH) ? itemId.split(CATEGORISE.DASH)[0] : itemId;
|
|
11722
|
+
};
|
|
11723
|
+
function useCategoriseFeedback(interactionState, config, api) {
|
|
11724
|
+
const totalRemainingItems = interactionState.data.wordBinItems.filter((id) => {
|
|
11725
|
+
const status = id.split(CATEGORISE.DASH)[1];
|
|
11726
|
+
return status !== "missed";
|
|
11727
|
+
}).length;
|
|
11728
|
+
let isFeedbackShown = false;
|
|
11729
|
+
let allAnswersCorrect = false;
|
|
11730
|
+
let isItemSkipped = false;
|
|
11731
|
+
let resultFeedback = "";
|
|
11732
|
+
if (config.isFinished && config.mode !== "preview") {
|
|
11733
|
+
const { answerList } = config.scoringMetadata || {};
|
|
11734
|
+
if (!answerList) {
|
|
11735
|
+
return {
|
|
11736
|
+
isFeedbackShown,
|
|
11737
|
+
allAnswersCorrect,
|
|
11738
|
+
isItemSkipped,
|
|
11739
|
+
resultFeedback
|
|
11740
|
+
};
|
|
11741
|
+
}
|
|
11742
|
+
const { correct: correctFeedback, incorrect: incorrectFeedback } = config.feedback || {};
|
|
11743
|
+
let hasIncorrect = false;
|
|
11744
|
+
let hasCorrect = false;
|
|
11745
|
+
const hasWordBinItems = totalRemainingItems > 0;
|
|
11746
|
+
config.category_groups.forEach((category) => {
|
|
11747
|
+
const categoryAnswerList = answerList[category.id] || [];
|
|
11748
|
+
const categoryItems = api.getCategoryItems(interactionState, category.id);
|
|
11749
|
+
categoryItems.forEach((item) => {
|
|
11750
|
+
const itemIdNoStatus = stripStatus(item);
|
|
11751
|
+
if (categoryAnswerList.includes(itemIdNoStatus)) {
|
|
11752
|
+
hasCorrect = true;
|
|
11753
|
+
} else {
|
|
11754
|
+
hasIncorrect = true;
|
|
11755
|
+
}
|
|
11756
|
+
});
|
|
11757
|
+
});
|
|
11758
|
+
allAnswersCorrect = hasCorrect && !hasIncorrect && !hasWordBinItems;
|
|
11759
|
+
isItemSkipped = totalRemainingItems === config.totalCategoryItems;
|
|
11760
|
+
resultFeedback = allAnswersCorrect ? correctFeedback : incorrectFeedback;
|
|
11761
|
+
isFeedbackShown = !allAnswersCorrect;
|
|
11762
|
+
} else if (config.mode === "interactive") {
|
|
11763
|
+
const allItemsPlaced = totalRemainingItems === 0;
|
|
11764
|
+
if (allItemsPlaced) {
|
|
11765
|
+
const { answerList } = config.scoringMetadata || {};
|
|
11766
|
+
if (answerList) {
|
|
11767
|
+
let hasIncorrect = false;
|
|
11768
|
+
let hasCorrect = false;
|
|
11769
|
+
config.category_groups.forEach((category) => {
|
|
11770
|
+
const categoryAnswerList = answerList[category.id] || [];
|
|
11771
|
+
const categoryItems = api.getCategoryItems(interactionState, category.id);
|
|
11772
|
+
categoryItems.forEach((item) => {
|
|
11773
|
+
const itemIdNoStatus = stripStatus(item);
|
|
11774
|
+
if (categoryAnswerList.includes(itemIdNoStatus)) {
|
|
11775
|
+
hasCorrect = true;
|
|
11776
|
+
} else {
|
|
11777
|
+
hasIncorrect = true;
|
|
11778
|
+
}
|
|
11779
|
+
});
|
|
11780
|
+
});
|
|
11781
|
+
allAnswersCorrect = hasCorrect && !hasIncorrect;
|
|
11782
|
+
resultFeedback = allAnswersCorrect ? config.feedback?.correct : config.feedback?.incorrect;
|
|
11783
|
+
isFeedbackShown = true;
|
|
11784
|
+
}
|
|
11785
|
+
} else {
|
|
11786
|
+
isFeedbackShown = false;
|
|
11787
|
+
}
|
|
11788
|
+
} else {
|
|
11789
|
+
isFeedbackShown = false;
|
|
11790
|
+
}
|
|
11791
|
+
return {
|
|
11792
|
+
isFeedbackShown,
|
|
11793
|
+
allAnswersCorrect,
|
|
11794
|
+
isItemSkipped,
|
|
11795
|
+
resultFeedback
|
|
11796
|
+
};
|
|
11797
|
+
}
|
|
11798
|
+
function CategoriseFeedback($$anchor, $$props) {
|
|
11799
|
+
push($$props, true);
|
|
11800
|
+
let feedbackState = prop($$props, "feedbackState", 7), isInteractiveMode2 = prop($$props, "isInteractiveMode", 7, false);
|
|
11801
|
+
const feedbackType = /* @__PURE__ */ user_derived(() => {
|
|
11802
|
+
if (feedbackState().isItemSkipped) return "skipped";
|
|
11803
|
+
if (feedbackState().allAnswersCorrect) return "correct";
|
|
11804
|
+
return "incorrect";
|
|
11805
|
+
});
|
|
11806
|
+
var $$exports = {
|
|
11807
|
+
get feedbackState() {
|
|
11808
|
+
return feedbackState();
|
|
11809
|
+
},
|
|
11810
|
+
set feedbackState($$value) {
|
|
11811
|
+
feedbackState($$value);
|
|
11812
|
+
flushSync();
|
|
11813
|
+
},
|
|
11814
|
+
get isInteractiveMode() {
|
|
11815
|
+
return isInteractiveMode2();
|
|
11816
|
+
},
|
|
11817
|
+
set isInteractiveMode($$value = false) {
|
|
11818
|
+
isInteractiveMode2($$value);
|
|
11819
|
+
flushSync();
|
|
11820
|
+
}
|
|
11821
|
+
};
|
|
11822
|
+
var fragment = comment();
|
|
11823
|
+
var node = first_child(fragment);
|
|
11824
|
+
{
|
|
11825
|
+
var consequent = ($$anchor2) => {
|
|
11826
|
+
{
|
|
11827
|
+
let $0 = /* @__PURE__ */ user_derived(() => !isInteractiveMode2());
|
|
11828
|
+
FeedbackAlert($$anchor2, {
|
|
11829
|
+
get type() {
|
|
11830
|
+
return get$1(feedbackType);
|
|
11831
|
+
},
|
|
11832
|
+
get message() {
|
|
11833
|
+
return feedbackState().resultFeedback;
|
|
11834
|
+
},
|
|
11835
|
+
showIcon: true,
|
|
11836
|
+
get isAlert() {
|
|
11837
|
+
return get$1($0);
|
|
11838
|
+
},
|
|
11839
|
+
iconProps: "h-6 w-6 flex items-center pt-0.5 mr-2",
|
|
11840
|
+
iconType: "info"
|
|
11841
|
+
});
|
|
11842
|
+
}
|
|
11843
|
+
};
|
|
11844
|
+
if_block(node, ($$render) => {
|
|
11845
|
+
if (feedbackState().isFeedbackShown) $$render(consequent);
|
|
11846
|
+
});
|
|
11847
|
+
}
|
|
11848
|
+
append($$anchor, fragment);
|
|
11849
|
+
return pop($$exports);
|
|
11850
|
+
}
|
|
11851
|
+
create_custom_element(CategoriseFeedback, { feedbackState: {}, isInteractiveMode: {} }, [], [], true);
|
|
11720
11852
|
function ownKeys(object, enumerableOnly) {
|
|
11721
11853
|
var keys = Object.keys(object);
|
|
11722
11854
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -15452,71 +15584,7 @@ function CategoriseComponent($$anchor, $$props) {
|
|
|
15452
15584
|
return status !== "missed";
|
|
15453
15585
|
}).length);
|
|
15454
15586
|
const totalPlacedItems = /* @__PURE__ */ user_derived(() => config().totalCategoryItems - get$1(totalRemainingItems));
|
|
15455
|
-
|
|
15456
|
-
let allAnswersCorrect = /* @__PURE__ */ state(false);
|
|
15457
|
-
let isItemSkipped = /* @__PURE__ */ state(false);
|
|
15458
|
-
let resultFeedback = /* @__PURE__ */ state("");
|
|
15459
|
-
const stripStatus = (itemId) => {
|
|
15460
|
-
return itemId.includes(CATEGORISE.DASH) ? itemId.split(CATEGORISE.DASH)[0] : itemId;
|
|
15461
|
-
};
|
|
15462
|
-
user_effect(() => {
|
|
15463
|
-
if (config().isFinished && config().mode !== "preview") {
|
|
15464
|
-
const { answerList } = config().scoringMetadata || {};
|
|
15465
|
-
if (!answerList) return;
|
|
15466
|
-
const { correct: correctFeedback, incorrect: incorrectFeedback } = config().feedback || {};
|
|
15467
|
-
let hasIncorrect = false;
|
|
15468
|
-
let hasCorrect = false;
|
|
15469
|
-
const hasWordBinItems = get$1(totalRemainingItems) > 0;
|
|
15470
|
-
config().category_groups.forEach((category) => {
|
|
15471
|
-
const categoryAnswerList = answerList[category.id] || [];
|
|
15472
|
-
const categoryItems = api().getCategoryItems(get$1(interactionState), category.id);
|
|
15473
|
-
categoryItems.forEach((item) => {
|
|
15474
|
-
const itemIdNoStatus = stripStatus(item);
|
|
15475
|
-
if (categoryAnswerList.includes(itemIdNoStatus)) {
|
|
15476
|
-
hasCorrect = true;
|
|
15477
|
-
} else {
|
|
15478
|
-
hasIncorrect = true;
|
|
15479
|
-
}
|
|
15480
|
-
});
|
|
15481
|
-
});
|
|
15482
|
-
set(allAnswersCorrect, hasCorrect && !hasIncorrect && !hasWordBinItems, true);
|
|
15483
|
-
set(isItemSkipped, get$1(totalRemainingItems) === config().totalCategoryItems);
|
|
15484
|
-
set(resultFeedback, get$1(allAnswersCorrect) ? correctFeedback : incorrectFeedback, true);
|
|
15485
|
-
set(isFeedbackShown, !get$1(allAnswersCorrect));
|
|
15486
|
-
} else if (config().mode === "interactive") {
|
|
15487
|
-
const allItemsPlaced = get$1(totalRemainingItems) === 0;
|
|
15488
|
-
if (allItemsPlaced) {
|
|
15489
|
-
const { answerList } = config().scoringMetadata || {};
|
|
15490
|
-
if (answerList) {
|
|
15491
|
-
let hasIncorrect = false;
|
|
15492
|
-
let hasCorrect = false;
|
|
15493
|
-
config().category_groups.forEach((category) => {
|
|
15494
|
-
const categoryAnswerList = answerList[category.id] || [];
|
|
15495
|
-
const categoryItems = api().getCategoryItems(get$1(interactionState), category.id);
|
|
15496
|
-
categoryItems.forEach((item) => {
|
|
15497
|
-
const itemIdNoStatus = stripStatus(item);
|
|
15498
|
-
if (categoryAnswerList.includes(itemIdNoStatus)) {
|
|
15499
|
-
hasCorrect = true;
|
|
15500
|
-
} else {
|
|
15501
|
-
hasIncorrect = true;
|
|
15502
|
-
}
|
|
15503
|
-
});
|
|
15504
|
-
});
|
|
15505
|
-
set(allAnswersCorrect, hasCorrect && !hasIncorrect, true);
|
|
15506
|
-
set(
|
|
15507
|
-
resultFeedback,
|
|
15508
|
-
get$1(allAnswersCorrect) ? config().feedback?.correct : config().feedback?.incorrect,
|
|
15509
|
-
true
|
|
15510
|
-
);
|
|
15511
|
-
set(isFeedbackShown, true);
|
|
15512
|
-
}
|
|
15513
|
-
} else {
|
|
15514
|
-
set(isFeedbackShown, false);
|
|
15515
|
-
}
|
|
15516
|
-
} else {
|
|
15517
|
-
set(isFeedbackShown, false);
|
|
15518
|
-
}
|
|
15519
|
-
});
|
|
15587
|
+
const feedbackState = /* @__PURE__ */ user_derived(() => useCategoriseFeedback(get$1(interactionState), config(), api()));
|
|
15520
15588
|
const dropContainerId = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.dropContainerId);
|
|
15521
15589
|
const hasAddItemAnimation = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.hasAddItemAnimation);
|
|
15522
15590
|
const wordBinItems = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.wordBinItems.map((id) => ({
|
|
@@ -15673,6 +15741,8 @@ function CategoriseComponent($$anchor, $$props) {
|
|
|
15673
15741
|
}
|
|
15674
15742
|
}
|
|
15675
15743
|
}
|
|
15744
|
+
} else {
|
|
15745
|
+
set(dragSourceContainerId, null);
|
|
15676
15746
|
}
|
|
15677
15747
|
});
|
|
15678
15748
|
user_effect(() => {
|
|
@@ -15889,6 +15959,7 @@ function CategoriseComponent($$anchor, $$props) {
|
|
|
15889
15959
|
set(interactionState, api().reset(get$1(interactionState)), true);
|
|
15890
15960
|
dispatchStateChange();
|
|
15891
15961
|
set(currentMobileIndex, 0);
|
|
15962
|
+
set(dragSourceContainerId, null);
|
|
15892
15963
|
set(isModalOpen, false);
|
|
15893
15964
|
};
|
|
15894
15965
|
var $$exports = {
|
|
@@ -16128,34 +16199,17 @@ function CategoriseComponent($$anchor, $$props) {
|
|
|
16128
16199
|
append($$anchor2, fragment_1);
|
|
16129
16200
|
};
|
|
16130
16201
|
const feedback = ($$anchor2) => {
|
|
16131
|
-
var fragment_4 = comment();
|
|
16132
|
-
var node_7 = first_child(fragment_4);
|
|
16133
16202
|
{
|
|
16134
|
-
|
|
16135
|
-
|
|
16136
|
-
|
|
16137
|
-
|
|
16138
|
-
|
|
16139
|
-
|
|
16140
|
-
|
|
16141
|
-
},
|
|
16142
|
-
get message() {
|
|
16143
|
-
return get$1(resultFeedback);
|
|
16144
|
-
},
|
|
16145
|
-
showIcon: true,
|
|
16146
|
-
get isAlert() {
|
|
16147
|
-
return get$1($12);
|
|
16148
|
-
},
|
|
16149
|
-
iconProps: "h-6 w-6 flex items-center pt-0.5 mr-2",
|
|
16150
|
-
iconType: "info"
|
|
16151
|
-
});
|
|
16203
|
+
let $02 = /* @__PURE__ */ user_derived(() => config().mode === "interactive");
|
|
16204
|
+
CategoriseFeedback($$anchor2, {
|
|
16205
|
+
get feedbackState() {
|
|
16206
|
+
return get$1(feedbackState);
|
|
16207
|
+
},
|
|
16208
|
+
get isInteractiveMode() {
|
|
16209
|
+
return get$1($02);
|
|
16152
16210
|
}
|
|
16153
|
-
};
|
|
16154
|
-
if_block(node_7, ($$render) => {
|
|
16155
|
-
if (get$1(isFeedbackShown)) $$render(consequent_1);
|
|
16156
16211
|
});
|
|
16157
16212
|
}
|
|
16158
|
-
append($$anchor2, fragment_4);
|
|
16159
16213
|
};
|
|
16160
16214
|
let $0 = /* @__PURE__ */ user_derived(() => config().rubric?.text || "");
|
|
16161
16215
|
let $1 = /* @__PURE__ */ user_derived(() => config().prompt || "");
|