@digabi/exam-engine-core 24.0.0 → 25.0.0-alpha.0
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/components/AnswerToolbar.js +22 -17
- package/dist/components/AnswerToolbar.js.map +1 -1
- package/dist/components/AnsweringInstructions.js +44 -6
- package/dist/components/AnsweringInstructions.js.map +1 -1
- package/dist/components/DocumentTitle.js +40 -5
- package/dist/components/DocumentTitle.js.map +1 -1
- package/dist/components/NotificationIcon.js +10 -5
- package/dist/components/NotificationIcon.js.map +1 -1
- package/dist/components/RenderChildNodes.js +8 -3
- package/dist/components/RenderChildNodes.js.map +1 -1
- package/dist/components/RenderExamElements.js +8 -3
- package/dist/components/RenderExamElements.js.map +1 -1
- package/dist/components/RenderIf.js +10 -3
- package/dist/components/RenderIf.js.map +1 -1
- package/dist/components/ScreenReaderOnly.js +9 -2
- package/dist/components/ScreenReaderOnly.js.map +1 -1
- package/dist/components/SectionElement.js +10 -5
- package/dist/components/SectionElement.js.map +1 -1
- package/dist/components/attachments/Attachment.js +40 -5
- package/dist/components/attachments/Attachment.js.map +1 -1
- package/dist/components/attachments/AttachmentTitle.js +42 -7
- package/dist/components/attachments/AttachmentTitle.js.map +1 -1
- package/dist/components/attachments/Attachments.js +87 -47
- package/dist/components/attachments/Attachments.js.map +1 -1
- package/dist/components/attachments/ExternalMaterial.js +77 -39
- package/dist/components/attachments/ExternalMaterial.js.map +1 -1
- package/dist/components/attachments/Question.js +47 -9
- package/dist/components/attachments/Question.js.map +1 -1
- package/dist/components/attachments/QuestionTitle.js +45 -10
- package/dist/components/attachments/QuestionTitle.js.map +1 -1
- package/dist/components/context/AnnotationProvider.js +10 -4
- package/dist/components/context/AnnotationProvider.js.map +1 -1
- package/dist/components/context/AttachmentContext.js +12 -6
- package/dist/components/context/AttachmentContext.js.map +1 -1
- package/dist/components/context/AudioRecorderContext.js +41 -5
- package/dist/components/context/AudioRecorderContext.js.map +1 -1
- package/dist/components/context/CommonExamContext.js +22 -15
- package/dist/components/context/CommonExamContext.js.map +1 -1
- package/dist/components/context/ExamContext.js +10 -4
- package/dist/components/context/ExamContext.js.map +1 -1
- package/dist/components/context/GradingInstructionContext.js +8 -2
- package/dist/components/context/GradingInstructionContext.js.map +1 -1
- package/dist/components/context/IsInSidebarContext.js +5 -2
- package/dist/components/context/IsInSidebarContext.js.map +1 -1
- package/dist/components/context/QuestionContext.js +21 -15
- package/dist/components/context/QuestionContext.js.map +1 -1
- package/dist/components/context/ResultsContext.js +57 -14
- package/dist/components/context/ResultsContext.js.map +1 -1
- package/dist/components/context/SectionContext.js +16 -10
- package/dist/components/context/SectionContext.js.map +1 -1
- package/dist/components/context/TOCContext.js +5 -2
- package/dist/components/context/TOCContext.js.map +1 -1
- package/dist/components/context/withContext.js +13 -6
- package/dist/components/context/withContext.js.map +1 -1
- package/dist/components/exam/Attachment.js +40 -5
- package/dist/components/exam/Attachment.js.map +1 -1
- package/dist/components/exam/AudioAnswer.js +51 -16
- package/dist/components/exam/AudioAnswer.js.map +1 -1
- package/dist/components/exam/ChoiceAnswer.js +63 -25
- package/dist/components/exam/ChoiceAnswer.js.map +1 -1
- package/dist/components/exam/DNDAllOptions.js +19 -12
- package/dist/components/exam/DNDAllOptions.js.map +1 -1
- package/dist/components/exam/DNDAnswerContainer.js +67 -30
- package/dist/components/exam/DNDAnswerContainer.js.map +1 -1
- package/dist/components/exam/DNDAnswerOptionDraggable.js +20 -13
- package/dist/components/exam/DNDAnswerOptionDraggable.js.map +1 -1
- package/dist/components/exam/DropdownAnswer.js +85 -47
- package/dist/components/exam/DropdownAnswer.js.map +1 -1
- package/dist/components/exam/Exam.js +184 -145
- package/dist/components/exam/Exam.js.map +1 -1
- package/dist/components/exam/ExamFooter.js +8 -3
- package/dist/components/exam/ExamFooter.js.map +1 -1
- package/dist/components/exam/ExamInstruction.js +8 -3
- package/dist/components/exam/ExamInstruction.js.map +1 -1
- package/dist/components/exam/ExternalMaterial.js +57 -22
- package/dist/components/exam/ExternalMaterial.js.map +1 -1
- package/dist/components/exam/GoToExamineAnswersButton.js +42 -7
- package/dist/components/exam/GoToExamineAnswersButton.js.map +1 -1
- package/dist/components/exam/Hints.js +21 -16
- package/dist/components/exam/Hints.js.map +1 -1
- package/dist/components/exam/Question.js +76 -37
- package/dist/components/exam/Question.js.map +1 -1
- package/dist/components/exam/QuestionInstruction.js +10 -5
- package/dist/components/exam/QuestionInstruction.js.map +1 -1
- package/dist/components/exam/QuestionTitle.js +57 -19
- package/dist/components/exam/QuestionTitle.js.map +1 -1
- package/dist/components/exam/RichTextAnswer.js +23 -18
- package/dist/components/exam/RichTextAnswer.js.map +1 -1
- package/dist/components/exam/Section.js +76 -38
- package/dist/components/exam/Section.js.map +1 -1
- package/dist/components/exam/SectionInstruction.js +8 -3
- package/dist/components/exam/SectionInstruction.js.map +1 -1
- package/dist/components/exam/SectionTitle.js +58 -20
- package/dist/components/exam/SectionTitle.js.map +1 -1
- package/dist/components/exam/StudentNameHeader.js +9 -2
- package/dist/components/exam/StudentNameHeader.js.map +1 -1
- package/dist/components/exam/TextAnswer.js +19 -14
- package/dist/components/exam/TextAnswer.js.map +1 -1
- package/dist/components/exam/UndoHistoryEntry.js +21 -14
- package/dist/components/exam/UndoHistoryEntry.js.map +1 -1
- package/dist/components/exam/UndoView.d.ts +0 -1
- package/dist/components/exam/UndoView.d.ts.map +1 -1
- package/dist/components/exam/UndoView.js +45 -69
- package/dist/components/exam/UndoView.js.map +1 -1
- package/dist/components/exam/internal/AudioRecorder.js +78 -39
- package/dist/components/exam/internal/AudioRecorder.js.map +1 -1
- package/dist/components/exam/internal/ErrorIndicator.js +71 -32
- package/dist/components/exam/internal/ErrorIndicator.js.map +1 -1
- package/dist/components/exam/internal/ProgressBar.js +46 -8
- package/dist/components/exam/internal/ProgressBar.js.map +1 -1
- package/dist/components/exam/internal/SaveIndicator.js +16 -11
- package/dist/components/exam/internal/SaveIndicator.js.map +1 -1
- package/dist/components/exam/internal/TextAnswerInput.js +97 -58
- package/dist/components/exam/internal/TextAnswerInput.js.map +1 -1
- package/dist/components/exam/multipleContainersKeyboardCoordinates.js +13 -9
- package/dist/components/exam/multipleContainersKeyboardCoordinates.js.map +1 -1
- package/dist/components/grading/AnswerCharacterCounter.js +12 -6
- package/dist/components/grading/AnswerCharacterCounter.js.map +1 -1
- package/dist/components/grading/GradingAnswer.js +112 -73
- package/dist/components/grading/GradingAnswer.js.map +1 -1
- package/dist/components/grading/GradingAnswerAnnotationList.js +9 -4
- package/dist/components/grading/GradingAnswerAnnotationList.js.map +1 -1
- package/dist/components/grading/editAnnotations.js +66 -16
- package/dist/components/grading/editAnnotations.js.map +1 -1
- package/dist/components/grading/largeImageDetector.js +6 -2
- package/dist/components/grading/largeImageDetector.js.map +1 -1
- package/dist/components/grading-instructions/AnswerGradingInstruction.js +42 -7
- package/dist/components/grading-instructions/AnswerGradingInstruction.js.map +1 -1
- package/dist/components/grading-instructions/AutogradedAnswer.js +59 -21
- package/dist/components/grading-instructions/AutogradedAnswer.js.map +1 -1
- package/dist/components/grading-instructions/AutogradedAnswerOption.js +13 -8
- package/dist/components/grading-instructions/AutogradedAnswerOption.js.map +1 -1
- package/dist/components/grading-instructions/ExamGradingInstruction.js +8 -3
- package/dist/components/grading-instructions/ExamGradingInstruction.js.map +1 -1
- package/dist/components/grading-instructions/GradingInstructionProvider.js +10 -3
- package/dist/components/grading-instructions/GradingInstructionProvider.js.map +1 -1
- package/dist/components/grading-instructions/GradingInstructions.js +132 -92
- package/dist/components/grading-instructions/GradingInstructions.js.map +1 -1
- package/dist/components/grading-instructions/Question.js +45 -7
- package/dist/components/grading-instructions/Question.js.map +1 -1
- package/dist/components/grading-instructions/QuestionTitle.js +50 -12
- package/dist/components/grading-instructions/QuestionTitle.js.map +1 -1
- package/dist/components/grading-instructions/Recording.js +20 -13
- package/dist/components/grading-instructions/Recording.js.map +1 -1
- package/dist/components/grading-instructions/RenderAttachmentElements.js +11 -6
- package/dist/components/grading-instructions/RenderAttachmentElements.js.map +1 -1
- package/dist/components/grading-instructions/Section.js +45 -7
- package/dist/components/grading-instructions/Section.js.map +1 -1
- package/dist/components/grading-instructions/SectionTitle.js +45 -10
- package/dist/components/grading-instructions/SectionTitle.js.map +1 -1
- package/dist/components/grading-instructions/gradingInstructionContent.js +4 -1
- package/dist/components/grading-instructions/gradingInstructionContent.js.map +1 -1
- package/dist/components/results/AudioAnswer.js +62 -24
- package/dist/components/results/AudioAnswer.js.map +1 -1
- package/dist/components/results/AudioContainer.js +27 -20
- package/dist/components/results/AudioContainer.js.map +1 -1
- package/dist/components/results/ChoiceAnswer.js +67 -29
- package/dist/components/results/ChoiceAnswer.js.map +1 -1
- package/dist/components/results/CorrectDNDAnswers.js +48 -11
- package/dist/components/results/CorrectDNDAnswers.js.map +1 -1
- package/dist/components/results/DNDAnswerOption.js +13 -6
- package/dist/components/results/DNDAnswerOption.js.map +1 -1
- package/dist/components/results/DropdownAnswer.js +68 -30
- package/dist/components/results/DropdownAnswer.js.map +1 -1
- package/dist/components/results/EndExamSession.js +22 -15
- package/dist/components/results/EndExamSession.js.map +1 -1
- package/dist/components/results/MultiLineAnswer.js +60 -20
- package/dist/components/results/MultiLineAnswer.js.map +1 -1
- package/dist/components/results/Question.js +53 -15
- package/dist/components/results/Question.js.map +1 -1
- package/dist/components/results/QuestionTitle.js +57 -19
- package/dist/components/results/QuestionTitle.js.map +1 -1
- package/dist/components/results/Results.js +144 -106
- package/dist/components/results/Results.js.map +1 -1
- package/dist/components/results/ScoredTextAnswer.js +54 -16
- package/dist/components/results/ScoredTextAnswer.js.map +1 -1
- package/dist/components/results/Section.js +46 -8
- package/dist/components/results/Section.js.map +1 -1
- package/dist/components/results/SingleLineAnswer.js +54 -16
- package/dist/components/results/SingleLineAnswer.js.map +1 -1
- package/dist/components/results/TextAnswer.js +68 -30
- package/dist/components/results/TextAnswer.js.map +1 -1
- package/dist/components/results/internal/AnnotationList.js +51 -16
- package/dist/components/results/internal/AnnotationList.js.map +1 -1
- package/dist/components/results/internal/QuestionAutoScore.js +47 -9
- package/dist/components/results/internal/QuestionAutoScore.js.map +1 -1
- package/dist/components/results/internal/QuestionManualScore.js +61 -23
- package/dist/components/results/internal/QuestionManualScore.js.map +1 -1
- package/dist/components/results/internal/QuestionScoresContainer.js +53 -15
- package/dist/components/results/internal/QuestionScoresContainer.js.map +1 -1
- package/dist/components/results/isExamineExamPageHook.js +8 -4
- package/dist/components/results/isExamineExamPageHook.js.map +1 -1
- package/dist/components/shared/AnnotationLists.js +19 -13
- package/dist/components/shared/AnnotationLists.js.map +1 -1
- package/dist/components/shared/AnswerIndicator.js +51 -12
- package/dist/components/shared/AnswerIndicator.js.map +1 -1
- package/dist/components/shared/AnswerLengthInfo.js +13 -8
- package/dist/components/shared/AnswerLengthInfo.js.map +1 -1
- package/dist/components/shared/AttachmentLink.js +53 -15
- package/dist/components/shared/AttachmentLink.js.map +1 -1
- package/dist/components/shared/AttachmentLinks.js +53 -15
- package/dist/components/shared/AttachmentLinks.js.map +1 -1
- package/dist/components/shared/Audio.js +63 -25
- package/dist/components/shared/Audio.js.map +1 -1
- package/dist/components/shared/AudioGroup.js +10 -5
- package/dist/components/shared/AudioGroup.js.map +1 -1
- package/dist/components/shared/AudioTest.js +67 -29
- package/dist/components/shared/AudioTest.js.map +1 -1
- package/dist/components/shared/DNDAnswerContainer.js +52 -15
- package/dist/components/shared/DNDAnswerContainer.js.map +1 -1
- package/dist/components/shared/DNDDroppable.js +23 -16
- package/dist/components/shared/DNDDroppable.js.map +1 -1
- package/dist/components/shared/DNDTitleAndDroppable.js +68 -28
- package/dist/components/shared/DNDTitleAndDroppable.js.map +1 -1
- package/dist/components/shared/ExamTranslation.js +10 -5
- package/dist/components/shared/ExamTranslation.js.map +1 -1
- package/dist/components/shared/File.js +44 -6
- package/dist/components/shared/File.js.map +1 -1
- package/dist/components/shared/Footer.js +9 -2
- package/dist/components/shared/Footer.js.map +1 -1
- package/dist/components/shared/Formula.js +15 -10
- package/dist/components/shared/Formula.js.map +1 -1
- package/dist/components/shared/Image.js +64 -25
- package/dist/components/shared/Image.js.map +1 -1
- package/dist/components/shared/ImageOverlay.js +65 -27
- package/dist/components/shared/ImageOverlay.js.map +1 -1
- package/dist/components/shared/Popup.js +63 -23
- package/dist/components/shared/Popup.js.map +1 -1
- package/dist/components/shared/QuestionNumber.js +42 -6
- package/dist/components/shared/QuestionNumber.js.map +1 -1
- package/dist/components/shared/Reference.js +70 -32
- package/dist/components/shared/Reference.js.map +1 -1
- package/dist/components/shared/References.js +60 -22
- package/dist/components/shared/References.js.map +1 -1
- package/dist/components/shared/Score.js +13 -6
- package/dist/components/shared/Score.js.map +1 -1
- package/dist/components/shared/TOCQuestion.js +73 -33
- package/dist/components/shared/TOCQuestion.js.map +1 -1
- package/dist/components/shared/TOCSection.js +48 -11
- package/dist/components/shared/TOCSection.js.map +1 -1
- package/dist/components/shared/TOCSectionTitle.js +65 -25
- package/dist/components/shared/TOCSectionTitle.js.map +1 -1
- package/dist/components/shared/TableOfContents.js +77 -37
- package/dist/components/shared/TableOfContents.js.map +1 -1
- package/dist/components/shared/VersionNumber.js +46 -6
- package/dist/components/shared/VersionNumber.js.map +1 -1
- package/dist/components/shared/Video.js +55 -17
- package/dist/components/shared/Video.js.map +1 -1
- package/dist/components/shared/internal/AttachmentLinkAnchor.js +8 -3
- package/dist/components/shared/internal/AttachmentLinkAnchor.js.map +1 -1
- package/dist/components/shared/internal/AudioPlayer.js +58 -23
- package/dist/components/shared/internal/AudioPlayer.js.map +1 -1
- package/dist/components/shared/internal/ModalDialog.js +40 -5
- package/dist/components/shared/internal/ModalDialog.js.map +1 -1
- package/dist/components/shared/internal/RenderIfNoError.js +15 -10
- package/dist/components/shared/internal/RenderIfNoError.js.map +1 -1
- package/dist/components/shared/internal/ResponsiveMediaContainer.js +11 -6
- package/dist/components/shared/internal/ResponsiveMediaContainer.js.map +1 -1
- package/dist/components/shared/internal/RestrictedAudioPlayer.js +64 -25
- package/dist/components/shared/internal/RestrictedAudioPlayer.js.map +1 -1
- package/dist/createRenderChildNodes.js +19 -12
- package/dist/createRenderChildNodes.js.map +1 -1
- package/dist/dom-utils.js +89 -32
- package/dist/dom-utils.js.map +1 -1
- package/dist/fonts.js +15 -9
- package/dist/fonts.js.map +1 -1
- package/dist/formatting.js +4 -1
- package/dist/formatting.js.map +1 -1
- package/dist/getDisplayName.js +4 -1
- package/dist/getDisplayName.js.map +1 -1
- package/dist/i18n/A_E.js +4 -1
- package/dist/i18n/A_E.js.map +1 -1
- package/dist/i18n/BA.js +39 -3
- package/dist/i18n/BA.js.map +1 -1
- package/dist/i18n/CA.js +39 -3
- package/dist/i18n/CA.js.map +1 -1
- package/dist/i18n/EA.js +4 -1
- package/dist/i18n/EA.js.map +1 -1
- package/dist/i18n/FA.js +4 -1
- package/dist/i18n/FA.js.map +1 -1
- package/dist/i18n/GC.js +4 -1
- package/dist/i18n/GC.js.map +1 -1
- package/dist/i18n/I.js +4 -1
- package/dist/i18n/I.js.map +1 -1
- package/dist/i18n/M.js +4 -1
- package/dist/i18n/M.js.map +1 -1
- package/dist/i18n/O_E.js +4 -1
- package/dist/i18n/O_E.js.map +1 -1
- package/dist/i18n/PA.js +4 -1
- package/dist/i18n/PA.js.map +1 -1
- package/dist/i18n/SA.js +4 -1
- package/dist/i18n/SA.js.map +1 -1
- package/dist/i18n/TC.js +4 -1
- package/dist/i18n/TC.js.map +1 -1
- package/dist/i18n/VA.js +4 -1
- package/dist/i18n/VA.js.map +1 -1
- package/dist/i18n/Z.js +4 -1
- package/dist/i18n/Z.js.map +1 -1
- package/dist/i18n/fi-FI.js +4 -1
- package/dist/i18n/fi-FI.js.map +1 -1
- package/dist/i18n/index.js +93 -51
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/sv-FI.js +4 -1
- package/dist/i18n/sv-FI.js.map +1 -1
- package/dist/ids.js +16 -13
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -14
- package/dist/index.js.map +1 -1
- package/dist/indexedDBExamServerAPI.d.ts.map +1 -1
- package/dist/indexedDBExamServerAPI.js +14 -4
- package/dist/indexedDBExamServerAPI.js.map +1 -1
- package/dist/main.css +4486 -1
- package/dist/parser/parseExam.js +44 -8
- package/dist/parser/parseExam.js.map +1 -1
- package/dist/parser/parseExamStructure.js +18 -15
- package/dist/parser/parseExamStructure.js.map +1 -1
- package/dist/renderAnnotations.js +21 -12
- package/dist/renderAnnotations.js.map +1 -1
- package/dist/scrollToHash.js +4 -1
- package/dist/scrollToHash.js.map +1 -1
- package/dist/shortDisplayNumber.js +38 -2
- package/dist/shortDisplayNumber.js.map +1 -1
- package/dist/store/answers/actions.js +16 -7
- package/dist/store/answers/actions.js.map +1 -1
- package/dist/store/answers/reducer.js +6 -3
- package/dist/store/answers/reducer.js.map +1 -1
- package/dist/store/answers/sagas.js +22 -18
- package/dist/store/answers/sagas.js.map +1 -1
- package/dist/store/audio/actions.js +16 -7
- package/dist/store/audio/actions.js.map +1 -1
- package/dist/store/audio/reducer.js +38 -2
- package/dist/store/audio/reducer.js.map +1 -1
- package/dist/store/audio/sagas.js +18 -15
- package/dist/store/audio/sagas.js.map +1 -1
- package/dist/store/cas/actions.js +13 -7
- package/dist/store/cas/actions.js.map +1 -1
- package/dist/store/cas/reducer.js +4 -1
- package/dist/store/cas/reducer.js.map +1 -1
- package/dist/store/cas/sagas.js +19 -15
- package/dist/store/cas/sagas.js.map +1 -1
- package/dist/store/countdown.js +12 -9
- package/dist/store/countdown.js.map +1 -1
- package/dist/store/index.js +63 -24
- package/dist/store/index.js.map +1 -1
- package/dist/store/selectors.js +53 -9
- package/dist/store/selectors.js.map +1 -1
- package/dist/types/ExamAnswer.js +2 -1
- package/dist/types/ExamServerAPI.d.ts +1 -1
- package/dist/types/ExamServerAPI.d.ts.map +1 -1
- package/dist/types/ExamServerAPI.js +2 -1
- package/dist/types/GradingStructure.js +2 -1
- package/dist/types/Score.js +2 -1
- package/dist/url.js +38 -2
- package/dist/url.js.map +1 -1
- package/dist/useCached.js +6 -3
- package/dist/useCached.js.map +1 -1
- package/dist/utils.js +8 -3
- package/dist/utils.js.map +1 -1
- package/dist/validateAnswers.js +38 -2
- package/dist/validateAnswers.js.map +1 -1
- package/package.json +39 -37
- package/dist/__tests__/AnsweringInstructions.test.d.ts +0 -2
- package/dist/__tests__/AnsweringInstructions.test.d.ts.map +0 -1
- package/dist/__tests__/AnsweringInstructions.test.js +0 -95
- package/dist/__tests__/AnsweringInstructions.test.js.map +0 -1
- package/dist/__tests__/casSaga.test.d.ts +0 -2
- package/dist/__tests__/casSaga.test.d.ts.map +0 -1
- package/dist/__tests__/casSaga.test.js +0 -80
- package/dist/__tests__/casSaga.test.js.map +0 -1
- package/dist/__tests__/examServerApi.d.ts +0 -3
- package/dist/__tests__/examServerApi.d.ts.map +0 -1
- package/dist/__tests__/examServerApi.js +0 -17
- package/dist/__tests__/examServerApi.js.map +0 -1
- package/dist/__tests__/playwright/SectionElement.test.d.ts +0 -2
- package/dist/__tests__/playwright/SectionElement.test.d.ts.map +0 -1
- package/dist/__tests__/playwright/SectionElement.test.js +0 -20
- package/dist/__tests__/playwright/SectionElement.test.js.map +0 -1
- package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts +0 -2
- package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts.map +0 -1
- package/dist/__tests__/playwright/exam/AudioAnswer.test.js +0 -132
- package/dist/__tests__/playwright/exam/AudioAnswer.test.js.map +0 -1
- package/dist/__tests__/playwright/exam/AudioPlayer.test.d.ts +0 -2
- package/dist/__tests__/playwright/exam/AudioPlayer.test.d.ts.map +0 -1
- package/dist/__tests__/playwright/exam/AudioPlayer.test.js +0 -69
- package/dist/__tests__/playwright/exam/AudioPlayer.test.js.map +0 -1
- package/dist/__tests__/playwright/exam/DNDAnswerContainer.test.d.ts +0 -2
- package/dist/__tests__/playwright/exam/DNDAnswerContainer.test.d.ts.map +0 -1
- package/dist/__tests__/playwright/exam/DNDAnswerContainer.test.js +0 -125
- package/dist/__tests__/playwright/exam/DNDAnswerContainer.test.js.map +0 -1
- package/dist/__tests__/playwright/exam/Exam.test.d.ts +0 -2
- package/dist/__tests__/playwright/exam/Exam.test.d.ts.map +0 -1
- package/dist/__tests__/playwright/exam/Exam.test.js +0 -29
- package/dist/__tests__/playwright/exam/Exam.test.js.map +0 -1
- package/dist/__tests__/playwright/exam/TextAnswerInput.test.d.ts +0 -2
- package/dist/__tests__/playwright/exam/TextAnswerInput.test.d.ts.map +0 -1
- package/dist/__tests__/playwright/exam/TextAnswerInput.test.js +0 -81
- package/dist/__tests__/playwright/exam/TextAnswerInput.test.js.map +0 -1
- package/dist/__tests__/playwright/pages/AudioPlayer.page.d.ts +0 -13
- package/dist/__tests__/playwright/pages/AudioPlayer.page.d.ts.map +0 -1
- package/dist/__tests__/playwright/pages/AudioPlayer.page.js +0 -16
- package/dist/__tests__/playwright/pages/AudioPlayer.page.js.map +0 -1
- package/dist/__tests__/playwright/results/MultiLineAnswer.test.d.ts +0 -2
- package/dist/__tests__/playwright/results/MultiLineAnswer.test.d.ts.map +0 -1
- package/dist/__tests__/playwright/results/MultiLineAnswer.test.js +0 -45
- package/dist/__tests__/playwright/results/MultiLineAnswer.test.js.map +0 -1
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts +0 -5
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts.map +0 -1
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js +0 -14
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js.map +0 -1
- package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.d.ts +0 -10
- package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.d.ts.map +0 -1
- package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.js +0 -20
- package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.js.map +0 -1
- package/dist/__tests__/playwright/stories/exam/Exam.story.d.ts +0 -8
- package/dist/__tests__/playwright/stories/exam/Exam.story.d.ts.map +0 -1
- package/dist/__tests__/playwright/stories/exam/Exam.story.js +0 -18
- package/dist/__tests__/playwright/stories/exam/Exam.story.js.map +0 -1
- package/dist/__tests__/playwright/stories/exam/Question.story.d.ts +0 -5
- package/dist/__tests__/playwright/stories/exam/Question.story.d.ts.map +0 -1
- package/dist/__tests__/playwright/stories/exam/Question.story.js +0 -19
- package/dist/__tests__/playwright/stories/exam/Question.story.js.map +0 -1
- package/dist/__tests__/playwright/stories/results/MultiLineAnswer.story.d.ts +0 -8
- package/dist/__tests__/playwright/stories/results/MultiLineAnswer.story.d.ts.map +0 -1
- package/dist/__tests__/playwright/stories/results/MultiLineAnswer.story.js +0 -51
- package/dist/__tests__/playwright/stories/results/MultiLineAnswer.story.js.map +0 -1
- package/dist/__tests__/playwright/template/index.d.ts +0 -1
- package/dist/__tests__/playwright/template/index.d.ts.map +0 -1
- package/dist/__tests__/playwright/template/index.js +0 -5
- package/dist/__tests__/playwright/template/index.js.map +0 -1
- package/dist/__tests__/playwright/utils/ExamComponentWrapper.d.ts +0 -9
- package/dist/__tests__/playwright/utils/ExamComponentWrapper.d.ts.map +0 -1
- package/dist/__tests__/playwright/utils/ExamComponentWrapper.js +0 -26
- package/dist/__tests__/playwright/utils/ExamComponentWrapper.js.map +0 -1
- package/dist/__tests__/playwright/utils/utils.d.ts +0 -6
- package/dist/__tests__/playwright/utils/utils.d.ts.map +0 -1
- package/dist/__tests__/playwright/utils/utils.js +0 -52
- package/dist/__tests__/playwright/utils/utils.js.map +0 -1
- package/dist/__tests__/renderAnnotations.test.d.ts +0 -2
- package/dist/__tests__/renderAnnotations.test.d.ts.map +0 -1
- package/dist/__tests__/renderAnnotations.test.js +0 -134
- package/dist/__tests__/renderAnnotations.test.js.map +0 -1
- package/dist/__tests__/results/AnnotationList.test.d.ts +0 -2
- package/dist/__tests__/results/AnnotationList.test.d.ts.map +0 -1
- package/dist/__tests__/results/AnnotationList.test.js +0 -168
- package/dist/__tests__/results/AnnotationList.test.js.map +0 -1
- package/dist/__tests__/results/ResultsContext.test.d.ts +0 -2
- package/dist/__tests__/results/ResultsContext.test.d.ts.map +0 -1
- package/dist/__tests__/results/ResultsContext.test.js +0 -185
- package/dist/__tests__/results/ResultsContext.test.js.map +0 -1
- package/dist/__tests__/results/ResultsExamQuestionAutoScore.test.d.ts +0 -2
- package/dist/__tests__/results/ResultsExamQuestionAutoScore.test.d.ts.map +0 -1
- package/dist/__tests__/results/ResultsExamQuestionAutoScore.test.js +0 -60
- package/dist/__tests__/results/ResultsExamQuestionAutoScore.test.js.map +0 -1
- package/dist/__tests__/results/ResultsExamQuestionManualScore.test.d.ts +0 -2
- package/dist/__tests__/results/ResultsExamQuestionManualScore.test.d.ts.map +0 -1
- package/dist/__tests__/results/ResultsExamQuestionManualScore.test.js +0 -145
- package/dist/__tests__/results/ResultsExamQuestionManualScore.test.js.map +0 -1
- package/dist/__tests__/testExamRendering.d.ts +0 -2
- package/dist/__tests__/testExamRendering.d.ts.map +0 -1
- package/dist/__tests__/testExamRendering.js +0 -149
- package/dist/__tests__/testExamRendering.js.map +0 -1
- package/dist/__tests__/tsconfig.tsbuildinfo +0 -1
- package/dist/__tests__/util.test.d.ts +0 -2
- package/dist/__tests__/util.test.d.ts.map +0 -1
- package/dist/__tests__/util.test.js +0 -12
- package/dist/__tests__/util.test.js.map +0 -1
- package/dist/__tests__/validateAnswers.test.d.ts +0 -2
- package/dist/__tests__/validateAnswers.test.d.ts.map +0 -1
- package/dist/__tests__/validateAnswers.test.js +0 -243
- package/dist/__tests__/validateAnswers.test.js.map +0 -1
- package/dist/main-bundle.js +0 -366
- package/dist/main-bundle.js.LICENSE.txt +0 -69
- package/src/css/colors.less +0 -56
|
@@ -1,45 +1,83 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
40
|
+
const react_1 = __importStar(require("react"));
|
|
41
|
+
const react_redux_1 = require("react-redux");
|
|
42
|
+
const dom_utils_1 = require("../../dom-utils");
|
|
43
|
+
const QuestionContext_1 = require("../context/QuestionContext");
|
|
44
|
+
const actions_1 = require("../../store/answers/actions");
|
|
7
45
|
const ChoiceAnswerOption = ({ selected, element, renderChildNodes, questionId, onSelect, direction, value }) => {
|
|
8
46
|
const className = element.getAttribute('class');
|
|
9
|
-
const content = (
|
|
47
|
+
const content = (react_1.default.createElement("div", { className: (0, classnames_1.default)('e-choice-answer-option e-column e-pointer', className, {
|
|
10
48
|
'e-choice-answer-option--selected': selected
|
|
11
49
|
}) }, renderChildNodes(element)));
|
|
12
|
-
return direction === 'vertical' ? (
|
|
13
|
-
|
|
14
|
-
'e-columns--inline': query(element, ['image', 'video']) == null /* Force full width for options containing responsive media */
|
|
50
|
+
return direction === 'vertical' ? (react_1.default.createElement("div", { className: "e-mrg-b-1" },
|
|
51
|
+
react_1.default.createElement("label", { className: (0, classnames_1.default)('e-columns', {
|
|
52
|
+
'e-columns--inline': (0, dom_utils_1.query)(element, ['image', 'video']) == null /* Force full width for options containing responsive media */
|
|
15
53
|
}) },
|
|
16
|
-
|
|
17
|
-
content))) : (
|
|
18
|
-
|
|
19
|
-
|
|
54
|
+
react_1.default.createElement("input", { type: "radio", className: "e-radio-button e-column e-column--narrow", name: String(questionId), onChange: onSelect, value: value, checked: selected }),
|
|
55
|
+
content))) : (react_1.default.createElement("div", { className: "e-column e-mrg-b-1" },
|
|
56
|
+
react_1.default.createElement("label", { className: "e-block e-text-center" },
|
|
57
|
+
react_1.default.createElement("input", { type: "radio", className: "e-radio-button", name: String(questionId), onChange: onSelect, value: value, checked: selected }),
|
|
20
58
|
content)));
|
|
21
59
|
};
|
|
22
60
|
const ChoiceAnswer = ({ element, renderChildNodes, renderComponentOverrides }) => {
|
|
23
|
-
const questionId = getNumericAttribute(element, 'question-id');
|
|
61
|
+
const questionId = (0, dom_utils_1.getNumericAttribute)(element, 'question-id');
|
|
24
62
|
const displayNumber = element.getAttribute('display-number');
|
|
25
63
|
const direction = element.getAttribute('direction') || 'vertical';
|
|
26
64
|
const className = element.getAttribute('class');
|
|
27
|
-
const { questionLabelIds } = useContext(QuestionContext);
|
|
28
|
-
const answer = useSelector((state) => state.answers.answersById[questionId]);
|
|
29
|
-
const dispatch = useDispatch();
|
|
30
|
-
const onSelect = useCallback(event => {
|
|
31
|
-
dispatch(saveAnswer({ type: 'choice', questionId, value: event.currentTarget.value, displayNumber }));
|
|
65
|
+
const { questionLabelIds } = (0, react_1.useContext)(QuestionContext_1.QuestionContext);
|
|
66
|
+
const answer = (0, react_redux_1.useSelector)((state) => state.answers.answersById[questionId]);
|
|
67
|
+
const dispatch = (0, react_redux_1.useDispatch)();
|
|
68
|
+
const onSelect = (0, react_1.useCallback)(event => {
|
|
69
|
+
dispatch((0, actions_1.saveAnswer)({ type: 'choice', questionId, value: event.currentTarget.value, displayNumber }));
|
|
32
70
|
}, [questionId, displayNumber]);
|
|
33
|
-
return (
|
|
71
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)('e-choice-answer e-mrg-b-4', className, {
|
|
34
72
|
'e-columns': direction === 'horizontal'
|
|
35
73
|
}), "data-question-id": questionId, role: "radiogroup", "aria-labelledby": questionLabelIds },
|
|
36
|
-
|
|
37
|
-
mapChildElements(element, childElement => {
|
|
74
|
+
react_1.default.createElement("span", { className: "anchor", id: `question-nr-${displayNumber}` }),
|
|
75
|
+
(0, dom_utils_1.mapChildElements)(element, childElement => {
|
|
38
76
|
const optionId = childElement.getAttribute('option-id');
|
|
39
77
|
const isNoAnswer = childElement.getAttribute('type') === 'no-answer';
|
|
40
78
|
const value = isNoAnswer ? '' : optionId;
|
|
41
79
|
const selected = answer != null && answer.value === value;
|
|
42
|
-
return (
|
|
80
|
+
return (react_1.default.createElement(ChoiceAnswerOption, { element: childElement,
|
|
43
81
|
onSelect,
|
|
44
82
|
renderChildNodes,
|
|
45
83
|
renderComponentOverrides,
|
|
@@ -50,5 +88,5 @@ const ChoiceAnswer = ({ element, renderChildNodes, renderComponentOverrides }) =
|
|
|
50
88
|
value }));
|
|
51
89
|
})));
|
|
52
90
|
};
|
|
53
|
-
|
|
91
|
+
exports.default = react_1.default.memo(ChoiceAnswer);
|
|
54
92
|
//# sourceMappingURL=ChoiceAnswer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChoiceAnswer.js","sourceRoot":"","sources":["../../../src/components/exam/ChoiceAnswer.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ChoiceAnswer.js","sourceRoot":"","sources":["../../../src/components/exam/ChoiceAnswer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { DNDDroppable } from '../shared/DNDDroppable';
|
|
5
|
-
import { useExamTranslation } from '../../i18n';
|
|
6
|
-
export const AllDNDOptions = ({ items, renderChildNodes, renderComponentOverrides, answerOptionElements }) => {
|
|
7
|
-
const { setNodeRef } = useDroppable({ id: 'root' });
|
|
8
|
-
const { t } = useExamTranslation();
|
|
9
|
-
return (React.createElement(SortableContext, { items: items },
|
|
10
|
-
React.createElement("span", { className: "droppable-title" }, t('dnd-answers.all-answer-options')),
|
|
11
|
-
React.createElement("span", { ref: setNodeRef },
|
|
12
|
-
React.createElement(DNDDroppable, { renderChildNodes: renderChildNodes, renderComponentOverrides: renderComponentOverrides, questionId: "root", page: "exam", classes: ['root'], answerOptionElements: answerOptionElements }))));
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AllDNDOptions = void 0;
|
|
7
|
+
const core_1 = require("@dnd-kit/core");
|
|
8
|
+
const sortable_1 = require("@dnd-kit/sortable");
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const DNDDroppable_1 = require("../shared/DNDDroppable");
|
|
11
|
+
const i18n_1 = require("../../i18n");
|
|
12
|
+
const AllDNDOptions = ({ items, renderChildNodes, renderComponentOverrides, answerOptionElements }) => {
|
|
13
|
+
const { setNodeRef } = (0, core_1.useDroppable)({ id: 'root' });
|
|
14
|
+
const { t } = (0, i18n_1.useExamTranslation)();
|
|
15
|
+
return (react_1.default.createElement(sortable_1.SortableContext, { items: items },
|
|
16
|
+
react_1.default.createElement("span", { className: "droppable-title" }, t('dnd-answers.all-answer-options')),
|
|
17
|
+
react_1.default.createElement("span", { ref: setNodeRef },
|
|
18
|
+
react_1.default.createElement(DNDDroppable_1.DNDDroppable, { renderChildNodes: renderChildNodes, renderComponentOverrides: renderComponentOverrides, questionId: "root", page: "exam", classes: ['root'], answerOptionElements: answerOptionElements }))));
|
|
19
|
+
};
|
|
20
|
+
exports.AllDNDOptions = AllDNDOptions;
|
|
14
21
|
//# sourceMappingURL=DNDAllOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DNDAllOptions.js","sourceRoot":"","sources":["../../../src/components/exam/DNDAllOptions.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"DNDAllOptions.js","sourceRoot":"","sources":["../../../src/components/exam/DNDAllOptions.tsx"],"names":[],"mappings":";;;;;;AAAA,wCAA8D;AAC9D,gDAAmD;AACnD,kDAAyB;AAEzB,yDAAqD;AACrD,qCAA+C;AAExC,MAAM,aAAa,GAAG,CAAC,EAC5B,KAAK,EACL,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EAMrB,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,mBAAY,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACnD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAkB,GAAE,CAAA;IAElC,OAAO,CACL,8BAAC,0BAAe,IAAC,KAAK,EAAE,KAAK;QAC3B,wCAAM,SAAS,EAAC,iBAAiB,IAAE,CAAC,CAAC,gCAAgC,CAAC,CAAQ;QAC9E,wCAAM,GAAG,EAAE,UAAU;YACnB,8BAAC,2BAAY,IACX,gBAAgB,EAAE,gBAAgB,EAClC,wBAAwB,EAAE,wBAAwB,EAClD,UAAU,EAAC,MAAM,EACjB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,CAAC,MAAM,CAAC,EACjB,oBAAoB,EAAE,oBAAoB,GAC1C,CACG,CACS,CACnB,CAAA;AACH,CAAC,CAAA;AA7BY,QAAA,aAAa,iBA6BzB"}
|
|
@@ -1,24 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DNDAnswerContainer = void 0;
|
|
37
|
+
const core_1 = require("@dnd-kit/core");
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
39
|
+
const react_redux_1 = require("react-redux");
|
|
40
|
+
const dom_utils_1 = require("../../dom-utils");
|
|
41
|
+
const actions_1 = require("../../store/answers/actions");
|
|
42
|
+
const DNDTitleAndDroppable_1 = require("../shared/DNDTitleAndDroppable");
|
|
43
|
+
const DNDAllOptions_1 = require("./DNDAllOptions");
|
|
44
|
+
const DNDAnswerOptionDraggable_1 = require("./DNDAnswerOptionDraggable");
|
|
45
|
+
const multipleContainersKeyboardCoordinates_1 = require("./multipleContainersKeyboardCoordinates");
|
|
46
|
+
const DNDAnswerContainer = ({ element, renderChildNodes, renderComponentOverrides }) => {
|
|
11
47
|
var _a;
|
|
12
|
-
const dispatch = useDispatch();
|
|
13
|
-
const [activeId, setActiveId] = useState();
|
|
14
|
-
const [optionIdsByQuestionId, setOptionIdsByQuestionId] = useState({});
|
|
15
|
-
const [answerOptionsById, setAnswerOptionsById] = useState({});
|
|
16
|
-
const [displayNumbersById, setDisplayNumbersById] = useState({});
|
|
17
|
-
const answers = useSelector((state) => state.answers);
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
const dndAnswers = queryAll(element, 'dnd-answer').filter(e => !!query(e, 'dnd-answer-title'));
|
|
20
|
-
const answerOptionIdsByQuestionId = getAnswerOptionIdsByQuestionId(element, answers.answersById);
|
|
21
|
-
const answerOptionsByOptionId = getAnswerOptionsByOptionId(element);
|
|
48
|
+
const dispatch = (0, react_redux_1.useDispatch)();
|
|
49
|
+
const [activeId, setActiveId] = (0, react_1.useState)();
|
|
50
|
+
const [optionIdsByQuestionId, setOptionIdsByQuestionId] = (0, react_1.useState)({});
|
|
51
|
+
const [answerOptionsById, setAnswerOptionsById] = (0, react_1.useState)({});
|
|
52
|
+
const [displayNumbersById, setDisplayNumbersById] = (0, react_1.useState)({});
|
|
53
|
+
const answers = (0, react_redux_1.useSelector)((state) => state.answers);
|
|
54
|
+
(0, react_1.useEffect)(() => {
|
|
55
|
+
const dndAnswers = (0, dom_utils_1.queryAll)(element, 'dnd-answer').filter(e => !!(0, dom_utils_1.query)(e, 'dnd-answer-title'));
|
|
56
|
+
const answerOptionIdsByQuestionId = (0, dom_utils_1.getAnswerOptionIdsByQuestionId)(element, answers.answersById);
|
|
57
|
+
const answerOptionsByOptionId = (0, dom_utils_1.getAnswerOptionsByOptionId)(element);
|
|
22
58
|
const displayNumbersById = dndAnswers.reduce((acc, el) => {
|
|
23
59
|
const questionId = el.getAttribute('question-id');
|
|
24
60
|
const displayNumber = el.getAttribute('display-number');
|
|
@@ -28,8 +64,8 @@ export const DNDAnswerContainer = ({ element, renderChildNodes, renderComponentO
|
|
|
28
64
|
setAnswerOptionsById(answerOptionsByOptionId);
|
|
29
65
|
setDisplayNumbersById(displayNumbersById);
|
|
30
66
|
}, [element]);
|
|
31
|
-
const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
|
|
32
|
-
coordinateGetter
|
|
67
|
+
const sensors = (0, core_1.useSensors)((0, core_1.useSensor)(core_1.PointerSensor), (0, core_1.useSensor)(core_1.KeyboardSensor, {
|
|
68
|
+
coordinateGetter: multipleContainersKeyboardCoordinates_1.coordinateGetter
|
|
33
69
|
}));
|
|
34
70
|
function findContainer(id) {
|
|
35
71
|
if (id in optionIdsByQuestionId) {
|
|
@@ -65,26 +101,27 @@ export const DNDAnswerContainer = ({ element, renderChildNodes, renderComponentO
|
|
|
65
101
|
const questionIdNumber = Number(questionId);
|
|
66
102
|
const value = (optionId === null || optionId === void 0 ? void 0 : optionId.toString()) || '';
|
|
67
103
|
const displayNumber = displayNumbersById[questionId];
|
|
68
|
-
dispatch(saveAnswer({ type: 'choice', questionId: questionIdNumber, value, displayNumber }));
|
|
104
|
+
dispatch((0, actions_1.saveAnswer)({ type: 'choice', questionId: questionIdNumber, value, displayNumber }));
|
|
69
105
|
}
|
|
70
|
-
const dndAnswersWithQuestion = queryAll(element, 'dnd-answer').filter(e => !!query(e, 'dnd-answer-title'));
|
|
106
|
+
const dndAnswersWithQuestion = (0, dom_utils_1.queryAll)(element, 'dnd-answer').filter(e => !!(0, dom_utils_1.query)(e, 'dnd-answer-title'));
|
|
71
107
|
const allAnswerOptionElements = (_a = optionIdsByQuestionId.root) === null || _a === void 0 ? void 0 : _a.map(id => answerOptionsById[id] || null).filter(Boolean);
|
|
72
108
|
// We can not render the prop 'element' (XML) here, because we will change the DOM structure when items are dragged around¯, but the XML can not be changed
|
|
73
|
-
return (
|
|
74
|
-
|
|
109
|
+
return (react_1.default.createElement("div", { className: "e-dnd-answer-container" },
|
|
110
|
+
react_1.default.createElement(core_1.DndContext, { sensors: sensors, onDragStart: handleDragStart, onDragEnd: handleDragEnd },
|
|
75
111
|
dndAnswersWithQuestion.map(element => {
|
|
76
112
|
var _a;
|
|
77
113
|
const questionId = element.getAttribute('question-id');
|
|
78
114
|
const dndAnswerOptions = (_a = (optionIdsByQuestionId[questionId] || [])) === null || _a === void 0 ? void 0 : _a.map(id => (answerOptionsById === null || answerOptionsById === void 0 ? void 0 : answerOptionsById[id]) || null).filter(Boolean);
|
|
79
115
|
const itemIds = optionIdsByQuestionId[questionId] || [];
|
|
80
|
-
return (
|
|
116
|
+
return (react_1.default.createElement(DNDTitleAndDroppable_1.DNDTitleAndDroppable, { key: questionId, element: element, renderChildNodes: renderChildNodes, renderComponentOverrides: renderComponentOverrides, itemIds: itemIds, answerOptionElements: dndAnswerOptions, page: "exam" }));
|
|
81
117
|
}),
|
|
82
|
-
|
|
83
|
-
|
|
118
|
+
react_1.default.createElement(DNDAllOptions_1.AllDNDOptions, { items: optionIdsByQuestionId.root || [], renderChildNodes: renderChildNodes, renderComponentOverrides: renderComponentOverrides, answerOptionElements: allAnswerOptionElements }),
|
|
119
|
+
react_1.default.createElement(core_1.DragOverlay, { className: "e-dnd-answer-drag-overlay", dropAnimation: {
|
|
84
120
|
duration: 250,
|
|
85
121
|
easing: 'ease-in-out'
|
|
86
|
-
} }, activeId ? (
|
|
122
|
+
} }, activeId ? (react_1.default.createElement(DNDAnswerOptionDraggable_1.DNDAnswerOptionDraggable, { element: answerOptionsById[activeId], renderChildNodes: renderChildNodes, renderComponentOverrides: renderComponentOverrides })) : null))));
|
|
87
123
|
};
|
|
124
|
+
exports.DNDAnswerContainer = DNDAnswerContainer;
|
|
88
125
|
function moveValue(state, from, to, value) {
|
|
89
126
|
const newState = { ...state };
|
|
90
127
|
// Remove the value from its current container
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DNDAnswerContainer.js","sourceRoot":"","sources":["../../../src/components/exam/DNDAnswerContainer.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"DNDAnswerContainer.js","sourceRoot":"","sources":["../../../src/components/exam/DNDAnswerContainer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DNDAnswerOptionDraggable = void 0;
|
|
7
|
+
const core_1 = require("@dnd-kit/core");
|
|
8
|
+
const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
|
|
9
|
+
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
11
|
+
const dom_utils_1 = require("../../dom-utils");
|
|
12
|
+
const DNDAnswerOption_1 = require("../results/DNDAnswerOption");
|
|
13
|
+
const DNDAnswerOptionDraggable = ({ element, renderChildNodes, renderComponentOverrides }) => {
|
|
14
|
+
const optionId = (0, dom_utils_1.getNumericAttribute)(element, 'option-id');
|
|
15
|
+
const { attributes, listeners, setNodeRef, isDragging, setActivatorNodeRef } = (0, core_1.useDraggable)({
|
|
10
16
|
id: optionId
|
|
11
17
|
});
|
|
12
18
|
const style = { opacity: isDragging ? 0.3 : 1 };
|
|
13
|
-
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
return (react_1.default.createElement("div", { ref: setNodeRef, className: "e-dnd-answer-option", "data-testid": "dnd-answer-option" },
|
|
20
|
+
react_1.default.createElement(DNDAnswerOption_1.DNDAnswerOption, { element: element, renderChildNodes: renderChildNodes, renderComponentOverrides: renderComponentOverrides, style: style }),
|
|
21
|
+
react_1.default.createElement("div", { ...listeners, ...attributes, ref: setActivatorNodeRef, className: "drag-handle" },
|
|
22
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { size: "1x", icon: free_solid_svg_icons_1.faUpDownLeftRight }))));
|
|
17
23
|
};
|
|
24
|
+
exports.DNDAnswerOptionDraggable = DNDAnswerOptionDraggable;
|
|
18
25
|
//# sourceMappingURL=DNDAnswerOptionDraggable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DNDAnswerOptionDraggable.js","sourceRoot":"","sources":["../../../src/components/exam/DNDAnswerOptionDraggable.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"DNDAnswerOptionDraggable.js","sourceRoot":"","sources":["../../../src/components/exam/DNDAnswerOptionDraggable.tsx"],"names":[],"mappings":";;;;;;AAAA,wCAA4C;AAC5C,4EAAqE;AACrE,sEAAgE;AAChE,kDAAyB;AAEzB,+CAAqD;AACrD,gEAA4D;AAErD,MAAM,wBAAwB,GAAG,CAAC,EACvC,OAAO,EACP,gBAAgB,EAChB,wBAAwB,EACL,EAAE,EAAE;IACvB,MAAM,QAAQ,GAAG,IAAA,+BAAmB,EAAC,OAAO,EAAE,WAAW,CAAE,CAAA;IAE3D,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,IAAA,mBAAY,EAAC;QAC1F,EAAE,EAAE,QAAQ;KACb,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE/C,OAAO,CACL,uCAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAC,qBAAqB,iBAAa,mBAAmB;QACnF,8BAAC,iCAAe,IACd,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,wBAAwB,EAAE,wBAAwB,EAClD,KAAK,EAAE,KAAK,GACZ;QAEF,0CAAS,SAAS,KAAM,UAAU,EAAE,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAC,aAAa;YACnF,8BAAC,mCAAe,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAE,wCAAiB,GAAI,CAClD,CACF,CACP,CAAA;AACH,CAAC,CAAA;AA3BY,QAAA,wBAAwB,4BA2BpC"}
|
|
@@ -1,45 +1,83 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
|
|
40
|
+
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
41
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
42
|
+
const downshift_1 = require("downshift");
|
|
43
|
+
const _ = __importStar(require("lodash-es"));
|
|
44
|
+
const react_1 = __importStar(require("react"));
|
|
45
|
+
const react_redux_1 = require("react-redux");
|
|
46
|
+
const dom_utils_1 = require("../../dom-utils");
|
|
47
|
+
const fonts = __importStar(require("../../fonts"));
|
|
48
|
+
const i18n_1 = require("../../i18n");
|
|
49
|
+
const ids_1 = require("../../ids");
|
|
50
|
+
const QuestionContext_1 = require("../context/QuestionContext");
|
|
51
|
+
const Score_1 = require("../shared/Score");
|
|
52
|
+
const actions_1 = require("../../store/answers/actions");
|
|
53
|
+
const AnnotationProvider_1 = require("../context/AnnotationProvider");
|
|
16
54
|
const menuBorderWidthPx = 2;
|
|
17
55
|
const roundingErrorCompensationPx = 1;
|
|
18
56
|
const noAnswer = '';
|
|
19
57
|
const runningInBrowser = !navigator.userAgent.includes('jsdom/');
|
|
20
58
|
const DropdownAnswer = ({ element, renderChildNodes }) => {
|
|
21
|
-
const questionId = getNumericAttribute(element, 'question-id');
|
|
22
|
-
const maxScore = getNumericAttribute(element, 'max-score');
|
|
23
|
-
const answer = useSelector((state) => state.answers.answersById[questionId]);
|
|
24
|
-
const dispatch = useDispatch();
|
|
59
|
+
const questionId = (0, dom_utils_1.getNumericAttribute)(element, 'question-id');
|
|
60
|
+
const maxScore = (0, dom_utils_1.getNumericAttribute)(element, 'max-score');
|
|
61
|
+
const answer = (0, react_redux_1.useSelector)((state) => state.answers.answersById[questionId]);
|
|
62
|
+
const dispatch = (0, react_redux_1.useDispatch)();
|
|
25
63
|
const displayNumber = element.getAttribute('display-number');
|
|
26
64
|
const currentlySelectedItem = answer &&
|
|
27
65
|
answer.value &&
|
|
28
|
-
findChildElement(element, childElement => answer.value === childElement.getAttribute('option-id'));
|
|
29
|
-
const labelRef = useRef(null);
|
|
30
|
-
const menuRef =
|
|
31
|
-
const [measuring, setMeasuring] = useState(true);
|
|
32
|
-
const [fontsLoaded, setFontsLoaded] = useState(fonts.loaded);
|
|
66
|
+
(0, dom_utils_1.findChildElement)(element, childElement => answer.value === childElement.getAttribute('option-id'));
|
|
67
|
+
const labelRef = (0, react_1.useRef)(null);
|
|
68
|
+
const menuRef = react_1.default.useRef(null);
|
|
69
|
+
const [measuring, setMeasuring] = (0, react_1.useState)(true);
|
|
70
|
+
const [fontsLoaded, setFontsLoaded] = (0, react_1.useState)(fonts.loaded);
|
|
33
71
|
if (runningInBrowser) {
|
|
34
72
|
// Force a re-measure if element changes or fonts are loaded after this
|
|
35
73
|
// component has been rendered.
|
|
36
74
|
fonts.ready.then(() => !fontsLoaded && setFontsLoaded(true)).catch(() => { });
|
|
37
|
-
useEffect(() => setMeasuring(true), [element]);
|
|
38
|
-
useEffect(() => {
|
|
75
|
+
(0, react_1.useEffect)(() => setMeasuring(true), [element]);
|
|
76
|
+
(0, react_1.useEffect)(() => {
|
|
39
77
|
if (measuring && menuRef.current && labelRef.current) {
|
|
40
78
|
const menuEl = menuRef.current;
|
|
41
79
|
const labelEl = labelRef.current;
|
|
42
|
-
const preferredWidth = _.max(mapChildElements(menuEl, el => el.firstElementChild.scrollWidth));
|
|
80
|
+
const preferredWidth = _.max((0, dom_utils_1.mapChildElements)(menuEl, el => el.firstElementChild.scrollWidth));
|
|
43
81
|
// Run the DOM mutations on the next frame to avoid layout trashing in exams with lots of dropdowns.
|
|
44
82
|
const requestId = requestAnimationFrame(() => {
|
|
45
83
|
labelEl.style.width = `${preferredWidth + menuBorderWidthPx + roundingErrorCompensationPx}px`;
|
|
@@ -50,42 +88,42 @@ const DropdownAnswer = ({ element, renderChildNodes }) => {
|
|
|
50
88
|
});
|
|
51
89
|
}
|
|
52
90
|
const items = [noAnswer, ...element.children];
|
|
53
|
-
const { answers, questionLabelIds } = useContext(QuestionContext);
|
|
54
|
-
const { getItemProps, getMenuProps, getToggleButtonProps, highlightedIndex, isOpen, selectedItem } = useSelect({
|
|
91
|
+
const { answers, questionLabelIds } = (0, react_1.useContext)(QuestionContext_1.QuestionContext);
|
|
92
|
+
const { getItemProps, getMenuProps, getToggleButtonProps, highlightedIndex, isOpen, selectedItem } = (0, downshift_1.useSelect)({
|
|
55
93
|
items,
|
|
56
94
|
itemToString: item => (item ? item.textContent : ''),
|
|
57
95
|
onSelectedItemChange: ({ selectedItem }) => {
|
|
58
96
|
const value = selectedItem ? selectedItem.getAttribute('option-id') : '';
|
|
59
|
-
dispatch(saveAnswer({ type: 'choice', questionId, value, displayNumber }));
|
|
97
|
+
dispatch((0, actions_1.saveAnswer)({ type: 'choice', questionId, value, displayNumber }));
|
|
60
98
|
},
|
|
61
99
|
initialSelectedItem: currentlySelectedItem
|
|
62
100
|
});
|
|
63
|
-
const { t } = useExamTranslation();
|
|
64
|
-
const scoreId = answerScoreId(element);
|
|
65
|
-
const annotationsEnabled = useContext(AnnotationContext);
|
|
101
|
+
const { t } = (0, i18n_1.useExamTranslation)();
|
|
102
|
+
const scoreId = (0, ids_1.answerScoreId)(element);
|
|
103
|
+
const annotationsEnabled = (0, react_1.useContext)(AnnotationProvider_1.AnnotationContext);
|
|
66
104
|
const mouseHandlerOverrides = {
|
|
67
105
|
onClick: () => { },
|
|
68
106
|
onMouseDown: () => { },
|
|
69
107
|
onMouseMove: () => { }
|
|
70
108
|
};
|
|
71
|
-
return (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
109
|
+
return (react_1.default.createElement("span", { className: "e-nowrap" },
|
|
110
|
+
react_1.default.createElement("span", { className: "anchor", id: `question-nr-${displayNumber}` }),
|
|
111
|
+
react_1.default.createElement("span", { className: (0, classnames_1.default)('e-dropdown-answer e-normal'), "data-question-id": questionId },
|
|
112
|
+
react_1.default.createElement("button", { className: (0, classnames_1.default)('e-dropdown-answer__toggle-button e-button-plain e-columns', {
|
|
75
113
|
'e-dropdown-answer__toggle-button--open': isOpen
|
|
76
114
|
}), ...getToggleButtonProps({
|
|
77
115
|
'aria-describedby': scoreId,
|
|
78
116
|
'aria-labelledby': questionLabelIds
|
|
79
117
|
}, { suppressRefError: !runningInBrowser }) },
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
className:
|
|
118
|
+
react_1.default.createElement("span", { className: "e-dropdown-answer__label e-column e-pad-l-1 e-pad-r-4" },
|
|
119
|
+
react_1.default.createElement("span", { className: "e-ellipsis e-block", ref: labelRef }, selectedItem ? (renderChildNodes(selectedItem)) : (react_1.default.createElement("span", { "aria-label": t.raw('dropdown-answer.label') }, dom_utils_1.NBSP)))),
|
|
120
|
+
react_1.default.createElement("span", { className: (0, classnames_1.default)('e-dropdown-answer__toggle-icon e-text-center e-column e-column--narrow e-column--gapless') },
|
|
121
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: isOpen ? free_solid_svg_icons_1.faChevronUp : free_solid_svg_icons_1.faChevronDown }))),
|
|
122
|
+
react_1.default.createElement("span", { ...getMenuProps({
|
|
123
|
+
className: (0, classnames_1.default)('e-dropdown-answer__menu', { 'e-dropdown-answer__menu--open': isOpen }),
|
|
86
124
|
'aria-labelledby': undefined,
|
|
87
125
|
ref: menuRef
|
|
88
|
-
}, { suppressRefError: !runningInBrowser }) }, items.map((item, i) => (
|
|
126
|
+
}, { suppressRefError: !runningInBrowser }) }, items.map((item, i) => (react_1.default.createElement("span", { className: (0, classnames_1.default)('e-dropdown-answer__menu-item e-block e-pad-l-1 e-pad-r-4', {
|
|
89
127
|
'e-dropdown-answer__menu-item--selected': item === selectedItem,
|
|
90
128
|
'e-bg-color-off-white': highlightedIndex !== i,
|
|
91
129
|
'e-bg-color-link e-color-off-white': highlightedIndex === i
|
|
@@ -93,8 +131,8 @@ const DropdownAnswer = ({ element, renderChildNodes }) => {
|
|
|
93
131
|
item,
|
|
94
132
|
index: i
|
|
95
133
|
}), ...(annotationsEnabled ? mouseHandlerOverrides : {}) },
|
|
96
|
-
|
|
97
|
-
answers.length > 1 &&
|
|
134
|
+
react_1.default.createElement("span", { className: (0, classnames_1.default)('e-dropdown-answer__menu-item-inner e-block', { 'e-nowrap': measuring }) }, item ? renderChildNodes(item) : react_1.default.createElement("span", { "aria-label": t.raw('dropdown-answer.clear') }, dom_utils_1.NBSP))))))),
|
|
135
|
+
answers.length > 1 && react_1.default.createElement(Score_1.Score, { score: maxScore, size: 'inline', id: scoreId })));
|
|
98
136
|
};
|
|
99
|
-
|
|
137
|
+
exports.default = react_1.default.memo(DropdownAnswer);
|
|
100
138
|
//# sourceMappingURL=DropdownAnswer.js.map
|