{introText?.filter(t => t.trim()).map(((t, i) =>
// Show the level's intro text as hints, too
))}
{proof?.steps.map((step, i) => {
let filteredHints = filterHints(step.goals[0]?.hints, proof?.steps[i-1]?.goals[0]?.hints)
if (step.goals.length > 0 && !isLastStepWithErrors(proof, i)) {
return
}
})}
{/* {modifiedHints.map((step, i) => {
// It the last step has errors, it will have the same hints
// as the second-to-last step. Therefore we should not display them.
if (!(i == proof?.steps.length - 1 && withErr)) {
// TODO: Should not use index as key.
return
}
})} */}
{proof?.completed &&
<>
{t("Level completed! 🎉")}
{level?.data?.conclusion?.trim() &&
{t(level?.data?.conclusion, {ns: gameId})}
}
>
}