@tinyweb_dev/oe-exam-sdk 0.1.28 → 0.1.29
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/README.md +4 -4
- package/dist/api/contest-rooms.js +54 -1
- package/dist/api/contest-rooms.types.js +1 -1
- package/dist/api/exam-create.js +179 -1
- package/dist/api/exam-create.types.js +1 -1
- package/dist/api/exam-entry.js +68 -1
- package/dist/api/exam-entry.types.js +1 -1
- package/dist/api/exam-questions.js +149 -1
- package/dist/api/exam-questions.types.js +1 -1
- package/dist/api/exam-taking.js +84 -1
- package/dist/api/exam-taking.types.d.ts +7 -0
- package/dist/api/exam-taking.types.js +1 -1
- package/dist/api/index.js +8 -1
- package/dist/api/result-review.js +62 -1
- package/dist/api/result-review.types.js +16 -1
- package/dist/components/CueCardEditor.js +58 -1
- package/dist/components/common/ResolvedImage.js +15 -1
- package/dist/components/exams/CompletionDialog.js +8 -1
- package/dist/components/exams/CreateExamInfoForm.js +84 -1
- package/dist/components/exams/CreateExamPageContainer.js +110 -1
- package/dist/components/exams/ExamCreator.js +287 -1
- package/dist/components/exams/ExamPartTabs.js +138 -1
- package/dist/components/exams/ExamPreviewDialog.d.ts +6 -7
- package/dist/components/exams/ExamPreviewDialog.js +121 -1
- package/dist/components/exams/ExamPreviewPartContent.d.ts +18 -0
- package/dist/components/exams/ExamPreviewPartContent.js +27 -0
- package/dist/components/exams/ExamPreviewSidebar.d.ts +17 -0
- package/dist/components/exams/ExamPreviewSidebar.js +37 -0
- package/dist/components/exams/ExamQuestionGrid.js +37 -1
- package/dist/components/exams/ExamQuestionsPageContainer.js +112 -1
- package/dist/components/exams/ExamViewDialog.js +61 -1
- package/dist/components/exams/PartAudioUploader.js +9 -1
- package/dist/components/exams/TemplateSelector.js +76 -1
- package/dist/components/exams/UnsavedChangesDialog.js +7 -1
- package/dist/components/exams/api.js +3 -1
- package/dist/components/exams/create-exam.texts.js +1 -1
- package/dist/components/exams/create-exam.validation.js +18 -1
- package/dist/components/exams/entry/EntryRestartDialog.js +11 -1
- package/dist/components/exams/entry/StudentExamEntryPageContainer.js +358 -1
- package/dist/components/exams/entry/exam-entry.states.js +26 -1
- package/dist/components/exams/entry/exam-entry.utils.js +55 -1
- package/dist/components/exams/entry/fullscreen-loading.js +18 -1
- package/dist/components/exams/entry/index.js +4 -1
- package/dist/components/exams/exam-preview.types.d.ts +30 -0
- package/dist/components/exams/exam-preview.types.js +62 -0
- package/dist/components/exams/exam-question-status.js +45 -1
- package/dist/components/exams/exam-template.utils.js +18 -1
- package/dist/components/exams/index.d.ts +1 -0
- package/dist/components/exams/index.js +19 -1
- package/dist/components/exams/rooms/StudentContestRoomsPageContainer.js +183 -1
- package/dist/components/exams/rooms/contest-rooms.utils.js +93 -1
- package/dist/components/exams/rooms/index.js +2 -1
- package/dist/components/exams/take/ExamTakingApiContext.js +25 -1
- package/dist/components/exams/take/ExamTakingPageContainer.js +955 -1
- package/dist/components/exams/take/GenericQuestionRenderer.js +14 -1
- package/dist/components/exams/take/components/QuestionRenderer.js +207 -1
- package/dist/components/exams/take/components/index.js +11 -1
- package/dist/components/exams/take/components/question-renderers/ArticlesViewer.js +8 -1
- package/dist/components/exams/take/components/question-renderers/MoversAnswerTheQuestionRenderer.js +30 -1
- package/dist/components/exams/take/components/question-renderers/MoversChooseAdjectiveRenderer.js +63 -1
- package/dist/components/exams/take/components/question-renderers/MoversChooseBestAnswerRenderer.js +136 -1
- package/dist/components/exams/take/components/question-renderers/MoversColoringRenderer.js +379 -1
- package/dist/components/exams/take/components/question-renderers/MoversCrossOutWordGroupRenderer.d.ts +20 -0
- package/dist/components/exams/take/components/question-renderers/MoversCrossOutWordGroupRenderer.js +141 -0
- package/dist/components/exams/take/components/question-renderers/MoversFillWordHintRenderer.js +131 -1
- package/dist/components/exams/take/components/question-renderers/MoversGridFillRenderer.js +76 -1
- package/dist/components/exams/take/components/question-renderers/MoversLabelThePictureRenderer.js +68 -1
- package/dist/components/exams/take/components/question-renderers/MoversListenAndWriteRenderer.js +42 -1
- package/dist/components/exams/take/components/question-renderers/MoversMatchByWritingAnswerRenderer.js +131 -1
- package/dist/components/exams/take/components/question-renderers/MoversPictureChooseRenderer.js +76 -1
- package/dist/components/exams/take/components/question-renderers/MoversPictureFillBlankChooseRenderer.js +68 -1
- package/dist/components/exams/take/components/question-renderers/MoversReadingPassageRenderer.js +62 -1
- package/dist/components/exams/take/components/question-renderers/MoversTrueFalseRenderer.d.ts +1 -1
- package/dist/components/exams/take/components/question-renderers/MoversTrueFalseRenderer.js +51 -1
- package/dist/components/exams/take/components/question-renderers/MoversWordFillParagraphRenderer.js +171 -1
- package/dist/components/exams/take/components/question-renderers/MoversWordFillStructuredFormRenderer.js +198 -1
- package/dist/components/exams/take/components/question-renderers/MoversWordOrderAndMatchGroupRenderer.d.ts +15 -0
- package/dist/components/exams/take/components/question-renderers/MoversWordOrderAndMatchGroupRenderer.js +36 -0
- package/dist/components/exams/take/components/question-renderers/MoversWordOrderingRenderer.js +92 -1
- package/dist/components/exams/take/components/question-renderers/MoversWriteSentencesRenderer.js +11 -1
- package/dist/components/exams/take/components/question-renderers/MoversWritingRenderer.js +56 -1
- package/dist/components/exams/take/components/question-renderers/index.d.ts +2 -0
- package/dist/components/exams/take/components/question-renderers/index.js +25 -1
- package/dist/components/exams/take/components/speaking/SpeakingAudioPlayer.js +85 -1
- package/dist/components/exams/take/components/speaking/SpeakingContentFrame.js +10 -1
- package/dist/components/exams/take/components/speaking/SpeakingExamLayout.js +15 -1
- package/dist/components/exams/take/components/speaking/SpeakingHeader.js +6 -1
- package/dist/components/exams/take/components/speaking/SpeakingInstructionBar.js +8 -1
- package/dist/components/exams/take/components/speaking/SpeakingMicButton.js +59 -1
- package/dist/components/exams/take/components/speaking/SpeakingNavButton.js +7 -1
- package/dist/components/exams/take/components/speaking/SpeakingPartBadge.js +5 -1
- package/dist/components/exams/take/components/speaking/SpeakingReadDisplayedContent.module.css +120 -0
- package/dist/components/exams/take/components/speaking/SpeakingRecordingPreview.js +73 -1
- package/dist/components/exams/take/components/speaking/SpeakingReportErrorButton.js +8 -1
- package/dist/components/exams/take/components/speaking/SpeakingSpontaneousQA.module.css +344 -0
- package/dist/components/exams/take/components/speaking/SpeakingVideoIntro.js +32 -1
- package/dist/components/exams/take/components/speaking/index.js +1 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingChooseAnswerGroupRenderer.js +63 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingChooseObjectsRenderer.js +95 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingCompareImagesRenderer.js +35 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingConversationRenderer.js +147 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingCueCardRenderer.js +232 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingDescribeImageRenderer.js +193 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingDragObjectsRenderer.js +155 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingGNInterviewRenderer.js +212 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingInfoExchangeRenderer.js +77 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingListenAndSpeakAnswerRenderer.js +64 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingOddOneOutRenderer.js +69 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingQuestionListRenderer.js +64 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingQuestionRenderer.js +92 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingReadDisplayedContentRenderer.js +202 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingSpontaneousQARenderer.js +339 -1
- package/dist/components/exams/take/components/speaking/renderers/SpeakingSpontaneousQaGroupRenderer.d.ts +19 -0
- package/dist/components/exams/take/components/speaking/renderers/SpeakingSpontaneousQaGroupRenderer.js +76 -0
- package/dist/components/exams/take/components/speaking/renderers/SpeakingStoryImagesRenderer.js +56 -1
- package/dist/components/exams/take/components/speaking/renderers/SpontaneousQACambridgeLayout.d.ts +24 -0
- package/dist/components/exams/take/components/speaking/renderers/SpontaneousQACambridgeLayout.js +120 -0
- package/dist/components/exams/take/components/speaking/renderers/SpontaneousQAInlineAudioPlayer.d.ts +8 -0
- package/dist/components/exams/take/components/speaking/renderers/SpontaneousQAInlineAudioPlayer.js +94 -0
- package/dist/components/exams/take/components/speaking/renderers/SpontaneousQASummerSkyAudioPlayer.d.ts +8 -0
- package/dist/components/exams/take/components/speaking/renderers/SpontaneousQASummerSkyAudioPlayer.js +101 -0
- package/dist/components/exams/take/components/speaking/renderers/index.d.ts +1 -0
- package/dist/components/exams/take/components/speaking/renderers/index.js +14 -1
- package/dist/components/exams/take/exam-taking.utils.d.ts +13 -0
- package/dist/components/exams/take/exam-taking.utils.js +203 -1
- package/dist/components/exams/take/hooks/index.js +2 -1
- package/dist/components/exams/take/hooks/useAnswerAutosave.js +71 -1
- package/dist/components/exams/take/hooks/useAttemptSubmit.js +38 -1
- package/dist/components/exams/take/hooks/useAutoSave.js +83 -1
- package/dist/components/exams/take/hooks/useExamCountdown.js +35 -1
- package/dist/components/exams/take/hooks/useExamTimer.js +97 -1
- package/dist/components/exams/take/hooks/useProctoringCamera.js +118 -1
- package/dist/components/exams/take/hooks/useProctoringSnapshot.js +76 -1
- package/dist/components/exams/take/hooks/useSpeakingConversationAudio.js +178 -1
- package/dist/components/exams/take/hooks/useSpeakingNavigation.js +51 -1
- package/dist/components/exams/take/hooks/useSpeakingRecorder.js +406 -1
- package/dist/components/exams/take/hooks/useSpeakingRendererSetup.js +136 -1
- package/dist/components/exams/take/hooks/useSpontaneousQaGroupRecorder.d.ts +11 -0
- package/dist/components/exams/take/hooks/useSpontaneousQaGroupRecorder.js +352 -0
- package/dist/components/exams/take/hooks/useSpontaneousQaGroupRendererSetup.d.ts +42 -0
- package/dist/components/exams/take/hooks/useSpontaneousQaGroupRendererSetup.js +166 -0
- package/dist/components/exams/take/hooks/useToeicAudio.js +35 -1
- package/dist/components/exams/take/index.js +6 -1
- package/dist/components/exams/take/types/speaking-cue-card.types.js +1 -1
- package/dist/components/exams/take/types/speaking.types.js +7 -1
- package/dist/components/exams/take/types.js +4 -1
- package/dist/components/exams/take/utils/answer-transformers.js +452 -1
- package/dist/components/exams/take/utils/cambridge-yle-inline-speaking.d.ts +21 -0
- package/dist/components/exams/take/utils/cambridge-yle-inline-speaking.js +44 -0
- package/dist/components/exams/take/utils/coloring-assignments.js +40 -1
- package/dist/components/exams/take/utils/cross-out-word-group.transformer.d.ts +21 -0
- package/dist/components/exams/take/utils/cross-out-word-group.transformer.js +83 -0
- package/dist/components/exams/take/utils/question-transformers.d.ts +43 -2
- package/dist/components/exams/take/utils/question-transformers.js +1137 -1
- package/dist/components/features/exam-entry/entry-state-cards.js +19 -1
- package/dist/components/features/exam-entry/index.js +2 -1
- package/dist/components/features/exam-entry/themed/CambridgeYleWaitingRoom.js +121 -1
- package/dist/components/features/exam-entry/themed/ThemedWaitingRoom.js +37 -1
- package/dist/components/features/exam-entry/themed/ToeicWaitingRoom.js +15 -1
- package/dist/components/features/exam-entry/themed/cambridge-yle-waiting-parts.js +80 -1
- package/dist/components/features/exam-entry/themed/components/CloseButton.js +6 -1
- package/dist/components/features/exam-entry/themed/components/ExamInfoPanel.js +17 -1
- package/dist/components/features/exam-entry/themed/components/ModeSelector.js +6 -1
- package/dist/components/features/exam-entry/themed/components/StartButton.js +12 -1
- package/dist/components/features/exam-entry/themed/components/index.js +4 -1
- package/dist/components/features/exam-entry/themed/index.js +3 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +43 -1
- package/dist/components/questions/_shared/config/question-types.config.js +362 -1
- package/dist/components/questions/_shared/constants/color-palette.js +21 -1
- package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.js +105 -1
- package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.js +222 -1
- package/dist/components/questions/_shared/hooks/useCompareImagesGroup.js +140 -1
- package/dist/components/questions/_shared/hooks/useImageQuestionGroup.js +123 -1
- package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.js +50 -1
- package/dist/components/questions/_shared/hooks/useQuestionFormState.js +54 -1
- package/dist/components/questions/_shared/hooks/useQuestionInitialization.js +123 -1
- package/dist/components/questions/_shared/hooks/useQuestionListGroup.js +121 -1
- package/dist/components/questions/_shared/hooks/useQuestionOnChange.js +70 -1
- package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.js +194 -1
- package/dist/components/questions/_shared/index.js +7 -1
- package/dist/components/questions/_shared/types/answer-the-question.type.js +1 -1
- package/dist/components/questions/_shared/types/arrange-letters-into-words.type.js +1 -1
- package/dist/components/questions/_shared/types/choose-correct-adjective.type.js +3 -1
- package/dist/components/questions/_shared/types/choose-the-correct-answer-group.type.d.ts +1 -0
- package/dist/components/questions/_shared/types/choose-the-correct-answer-group.type.js +1 -1
- package/dist/components/questions/_shared/types/color-region.config.js +1 -1
- package/dist/components/questions/_shared/types/cross-out-word-group.type.d.ts +2 -0
- package/dist/components/questions/_shared/types/cross-out-word-group.type.js +1 -1
- package/dist/components/questions/_shared/types/fill-in-blank.type.js +1 -1
- package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.js +1 -1
- package/dist/components/questions/_shared/types/gn-speaking-interview.type.js +1 -1
- package/dist/components/questions/_shared/types/index.d.ts +1 -0
- package/dist/components/questions/_shared/types/index.js +14 -1
- package/dist/components/questions/_shared/types/label-the-picture.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-speak-answer.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.js +3 -1
- package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.js +1 -1
- package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.js +3 -1
- package/dist/components/questions/_shared/types/listen-and-tick-answer.type.js +1 -1
- package/dist/components/questions/_shared/types/listening-drawline.type.js +1 -1
- package/dist/components/questions/_shared/types/look-and-choose-answer.type.js +1 -1
- package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.js +1 -1
- package/dist/components/questions/_shared/types/match-by-writing-answer.type.js +1 -1
- package/dist/components/questions/_shared/types/multiple-choice.type.d.ts +5 -0
- package/dist/components/questions/_shared/types/multiple-choice.type.js +1 -1
- package/dist/components/questions/_shared/types/question-group.type.js +11 -1
- package/dist/components/questions/_shared/types/read-and-color-objects.type.js +1 -1
- package/dist/components/questions/_shared/types/read-displayed-content.type.js +1 -1
- package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.js +1 -1
- package/dist/components/questions/_shared/types/speaking-describe-image.type.js +1 -1
- package/dist/components/questions/_shared/types/spontaneous-qa-group.type.d.ts +37 -0
- package/dist/components/questions/_shared/types/spontaneous-qa-group.type.js +1 -0
- package/dist/components/questions/_shared/types/spontaneous-qa.type.js +1 -1
- package/dist/components/questions/_shared/types/true-false-group.type.js +1 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.js +1 -1
- package/dist/components/questions/_shared/types/word-fill-paragraph.type.js +1 -1
- package/dist/components/questions/_shared/types/word-fill-structured-form.type.d.ts +20 -11
- package/dist/components/questions/_shared/types/word-fill-structured-form.type.js +1 -1
- package/dist/components/questions/_shared/types/word-order-and-match-group.type.d.ts +38 -0
- package/dist/components/questions/_shared/types/word-order-and-match-group.type.js +1 -0
- package/dist/components/questions/_shared/types/word-ordering.type.js +1 -1
- package/dist/components/questions/_shared/types/write-a-short-letter.type.js +1 -1
- package/dist/components/questions/_shared/types/write-correct-verb-form.type.js +3 -1
- package/dist/components/questions/_shared/types/write-sentences.type.js +1 -1
- package/dist/components/questions/_shared/types/write-short-paragraph.type.js +1 -1
- package/dist/components/questions/_shared/utils/answer-builder.js +79 -1
- package/dist/components/questions/_shared/utils/createColorRegionRegistration.js +39 -1
- package/dist/components/questions/_shared/utils/id-generator.js +3 -1
- package/dist/components/questions/_shared/utils/parseFillBlankStem.d.ts +30 -0
- package/dist/components/questions/_shared/utils/parseFillBlankStem.js +69 -0
- package/dist/components/questions/_shared/utils/question-validation.js +21 -1
- package/dist/components/questions/components/ColorNode.js +85 -1
- package/dist/components/questions/components/ColorRegionClient.js +545 -1
- package/dist/components/questions/components/ColorRegionCreator.js +420 -1
- package/dist/components/questions/components/ColorRegionNode.js +59 -1
- package/dist/components/questions/components/CreatorGuide.js +103 -1
- package/dist/components/questions/components/NameNode.js +26 -1
- package/dist/components/questions/components/QuestionBankOption.js +46 -1
- package/dist/components/questions/components/QuestionBasicInfoForm.js +9 -1
- package/dist/components/questions/components/QuestionCommonFields.js +33 -1
- package/dist/components/questions/components/QuestionSearchDropdown.js +258 -1
- package/dist/components/questions/components/QuestionTypeSelector.js +32 -1
- package/dist/components/questions/components/QuestionTypeSpecificForms.js +6 -1
- package/dist/components/questions/components/RegionNode.js +94 -1
- package/dist/components/questions/components/index.js +14 -1
- package/dist/components/questions/creator/QuestionCreator.js +90 -1
- package/dist/components/questions/creator/QuestionGroupCreator.js +119 -1
- package/dist/components/questions/creator/dedicated-component-router.js +79 -1
- package/dist/components/questions/creator/index.js +3 -1
- package/dist/components/questions/creator/question-type-registry.js +90 -1
- package/dist/components/questions/groups/ArticlesGroupCard.js +121 -1
- package/dist/components/questions/groups/BasicQuestionGroupCard.js +50 -1
- package/dist/components/questions/groups/DocumentGroupCard.js +114 -1
- package/dist/components/questions/groups/MatchAnswerGroupCard.js +25 -1
- package/dist/components/questions/index.d.ts +1 -0
- package/dist/components/questions/index.js +11 -1
- package/dist/components/questions/question-bank/EditQuestionBankDialog.d.ts +2 -0
- package/dist/components/questions/question-bank/EditQuestionBankDialog.js +114 -0
- package/dist/components/questions/question-bank/QuestionEditorRenderer.d.ts +23 -0
- package/dist/components/questions/question-bank/QuestionEditorRenderer.js +75 -0
- package/dist/components/questions/question-bank/difficulty.d.ts +15 -0
- package/dist/components/questions/question-bank/difficulty.js +33 -0
- package/dist/components/questions/question-bank/editor-adapters/choice-adapters.d.ts +5 -0
- package/dist/components/questions/question-bank/editor-adapters/choice-adapters.js +101 -0
- package/dist/components/questions/question-bank/editor-adapters/index.d.ts +5 -0
- package/dist/components/questions/question-bank/editor-adapters/index.js +4 -0
- package/dist/components/questions/question-bank/editor-adapters/media-adapters.d.ts +6 -0
- package/dist/components/questions/question-bank/editor-adapters/media-adapters.js +140 -0
- package/dist/components/questions/question-bank/editor-adapters/types.d.ts +1 -0
- package/dist/components/questions/question-bank/editor-adapters/types.js +1 -0
- package/dist/components/questions/question-bank/editor-adapters/unsupported-fallback.d.ts +8 -0
- package/dist/components/questions/question-bank/editor-adapters/unsupported-fallback.js +6 -0
- package/dist/components/questions/question-bank/editor-adapters/writing-adapters.d.ts +5 -0
- package/dist/components/questions/question-bank/editor-adapters/writing-adapters.js +114 -0
- package/dist/components/questions/question-bank/index.d.ts +4 -0
- package/dist/components/questions/question-bank/index.js +3 -0
- package/dist/components/questions/question-bank/types.d.ts +59 -0
- package/dist/components/questions/question-bank/types.js +1 -0
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.js +37 -1
- package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.js +351 -1
- package/dist/components/questions/types/answer-the-question/register.js +67 -1
- package/dist/components/questions/types/answer-the-question/transform.js +36 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.js +141 -1
- package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.js +118 -1
- package/dist/components/questions/types/arrange-letters-into-words/index.js +2 -1
- package/dist/components/questions/types/arrange-letters-into-words/register.js +4 -1
- package/dist/components/questions/types/arrange-letters-into-words/transform.js +24 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.js +74 -1
- package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.js +169 -1
- package/dist/components/questions/types/choose-correct-adjective/index.js +2 -1
- package/dist/components/questions/types/choose-correct-adjective/register.js +55 -1
- package/dist/components/questions/types/choose-correct-adjective/transform.js +16 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.js +149 -1
- package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.js +568 -1
- package/dist/components/questions/types/choose-the-correct-answer/index.js +3 -1
- package/dist/components/questions/types/choose-the-correct-answer/normalize.d.ts +9 -0
- package/dist/components/questions/types/choose-the-correct-answer/normalize.js +88 -1
- package/dist/components/questions/types/choose-the-correct-answer/register.js +99 -1
- package/dist/components/questions/types/choose-the-correct-answer/transform.js +70 -1
- package/dist/components/questions/types/choose-the-correct-answer-group/ChooseTheCorrectAnswerGroupClient.js +22 -1
- package/dist/components/questions/types/choose-the-correct-answer-group/ChooseTheCorrectAnswerGroupCreator.js +163 -1
- package/dist/components/questions/types/choose-the-correct-answer-group/index.js +3 -1
- package/dist/components/questions/types/choose-the-correct-answer-group/map-choose-the-correct-answer-group-data.js +94 -1
- package/dist/components/questions/types/choose-the-correct-answer-group/register.js +36 -1
- package/dist/components/questions/types/choose-the-correct-answer-group/transform.js +55 -1
- package/dist/components/questions/types/cross-out-word-group/CrossOutWordGroupClient.js +27 -1
- package/dist/components/questions/types/cross-out-word-group/CrossOutWordGroupCreator.js +231 -1
- package/dist/components/questions/types/cross-out-word-group/index.js +5 -1
- package/dist/components/questions/types/cross-out-word-group/map-cross-out-word-group-data.d.ts +1 -1
- package/dist/components/questions/types/cross-out-word-group/map-cross-out-word-group-data.js +110 -1
- package/dist/components/questions/types/cross-out-word-group/register.js +36 -1
- package/dist/components/questions/types/cross-out-word-group/transform.js +67 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankClient.js +275 -1
- package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.js +464 -1
- package/dist/components/questions/types/fill-in-blank/index.js +2 -1
- package/dist/components/questions/types/fill-in-blank/register.js +148 -1
- package/dist/components/questions/types/fill-in-blank/transform.js +88 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.js +117 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.js +671 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/index.js +2 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/register.js +37 -1
- package/dist/components/questions/types/fill-missing-words-in-grid/transform.js +15 -1
- package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.js +262 -1
- package/dist/components/questions/types/gn-speaking-interview/register.js +121 -1
- package/dist/components/questions/types/gn-speaking-interview/transform.js +48 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.js +16 -1
- package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.js +27 -1
- package/dist/components/questions/types/image-object-matching/index.js +2 -1
- package/dist/components/questions/types/image-object-matching/register.js +3 -1
- package/dist/components/questions/types/image-object-matching/transform.js +2 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureClient.js +102 -1
- package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.js +344 -1
- package/dist/components/questions/types/label-the-picture/index.js +2 -1
- package/dist/components/questions/types/label-the-picture/register.js +54 -1
- package/dist/components/questions/types/label-the-picture/transform.js +28 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.js +78 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.js +232 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/index.js +2 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/register.js +82 -1
- package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.js +27 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.js +70 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.js +386 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.js +2 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.js +100 -1
- package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.js +33 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.js +106 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.js +457 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.js +2 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.js +110 -1
- package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.js +35 -1
- package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.js +8 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.js +22 -1
- package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.js +291 -1
- package/dist/components/questions/types/listen-and-speak-answer/index.js +2 -1
- package/dist/components/questions/types/listen-and-speak-answer/register.js +84 -1
- package/dist/components/questions/types/listen-and-speak-answer/transform.js +27 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.js +32 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.js +295 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/register.js +79 -1
- package/dist/components/questions/types/listen-and-speak-compare-images/transform.js +27 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.js +34 -1
- package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.js +285 -1
- package/dist/components/questions/types/listen-and-speak-image-group/register.js +81 -1
- package/dist/components/questions/types/listen-and-speak-image-group/transform.js +26 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.js +38 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.js +385 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/register.js +87 -1
- package/dist/components/questions/types/listen-and-speak-info-exchange/transform.js +32 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.js +26 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.js +247 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/register.js +59 -1
- package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.js +18 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.js +26 -1
- package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.js +256 -1
- package/dist/components/questions/types/listen-and-speak-question-list/register.js +81 -1
- package/dist/components/questions/types/listen-and-speak-question-list/transform.js +26 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.js +26 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.js +230 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/register.js +56 -1
- package/dist/components/questions/types/listen-and-speak-with-story-images/transform.js +16 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.js +72 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.js +230 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/index.js +1 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/register.js +66 -1
- package/dist/components/questions/types/look-picture-choose-correct-answer/transform.js +42 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.js +96 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.js +238 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.js +2 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.js +76 -1
- package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.js +19 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.js +134 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.js +617 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/index.js +2 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/register.js +82 -1
- package/dist/components/questions/types/look-picture-fill-word-hint/transform.js +29 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.js +38 -1
- package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.js +359 -1
- package/dist/components/questions/types/match-by-writing-answer/index.js +3 -1
- package/dist/components/questions/types/match-by-writing-answer/register.js +58 -1
- package/dist/components/questions/types/match-by-writing-answer/transform.js +61 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.js +16 -1
- package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.js +23 -1
- package/dist/components/questions/types/read-and-color-objects/index.js +2 -1
- package/dist/components/questions/types/read-and-color-objects/register.js +3 -1
- package/dist/components/questions/types/read-and-color-objects/transform.js +36 -1
- package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.js +125 -1
- package/dist/components/questions/types/read-displayed-content/register.js +64 -1
- package/dist/components/questions/types/read-displayed-content/transform.js +12 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.js +65 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.js +511 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/index.js +2 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/register.js +58 -1
- package/dist/components/questions/types/read-passage-and-answer-questions/transform.js +28 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.js +373 -1
- package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.js +41 -1
- package/dist/components/questions/types/speaking-conversation/register.js +110 -1
- package/dist/components/questions/types/speaking-conversation/transform.js +34 -1
- package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.js +74 -1
- package/dist/components/questions/types/speaking-cue-card/register.js +52 -1
- package/dist/components/questions/types/speaking-cue-card/transform.js +12 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.js +10 -1
- package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.js +161 -1
- package/dist/components/questions/types/speaking-describe-image/index.js +2 -1
- package/dist/components/questions/types/speaking-describe-image/register.js +69 -1
- package/dist/components/questions/types/speaking-describe-image/transform.js +16 -1
- package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.js +234 -1
- package/dist/components/questions/types/spontaneous-qa/register.js +93 -1
- package/dist/components/questions/types/spontaneous-qa/transform.js +34 -1
- package/dist/components/questions/types/spontaneous-qa-group/SpontaneousQaGroupClient.d.ts +2 -0
- package/dist/components/questions/types/spontaneous-qa-group/SpontaneousQaGroupClient.js +9 -0
- package/dist/components/questions/types/spontaneous-qa-group/SpontaneousQaGroupCreator.d.ts +2 -0
- package/dist/components/questions/types/spontaneous-qa-group/SpontaneousQaGroupCreator.js +179 -0
- package/dist/components/questions/types/spontaneous-qa-group/creator-helpers.d.ts +5 -0
- package/dist/components/questions/types/spontaneous-qa-group/creator-helpers.js +43 -0
- package/dist/components/questions/types/spontaneous-qa-group/flatten.d.ts +14 -0
- package/dist/components/questions/types/spontaneous-qa-group/flatten.js +69 -0
- package/dist/components/questions/types/spontaneous-qa-group/index.d.ts +2 -0
- package/dist/components/questions/types/spontaneous-qa-group/index.js +2 -0
- package/dist/components/questions/types/spontaneous-qa-group/register.d.ts +2 -0
- package/dist/components/questions/types/spontaneous-qa-group/register.js +139 -0
- package/dist/components/questions/types/spontaneous-qa-group/transform.d.ts +2 -0
- package/dist/components/questions/types/spontaneous-qa-group/transform.js +52 -0
- package/dist/components/questions/types/true-false/TrueFalseClient.js +75 -1
- package/dist/components/questions/types/true-false/TrueFalseCreator.js +244 -1
- package/dist/components/questions/types/true-false/index.js +2 -1
- package/dist/components/questions/types/true-false/register.js +77 -1
- package/dist/components/questions/types/true-false/transform.js +32 -1
- package/dist/components/questions/types/true-false-group/TrueFalseGroupClient.js +25 -1
- package/dist/components/questions/types/true-false-group/TrueFalseGroupCreator.js +129 -1
- package/dist/components/questions/types/true-false-group/index.js +5 -1
- package/dist/components/questions/types/true-false-group/map-true-false-group-data.js +69 -1
- package/dist/components/questions/types/true-false-group/register.js +36 -1
- package/dist/components/questions/types/true-false-group/transform.js +43 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.js +233 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.js +631 -1
- package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.js +28 -1
- package/dist/components/questions/types/word-fill-paragraph/index.js +2 -1
- package/dist/components/questions/types/word-fill-paragraph/register.js +136 -1
- package/dist/components/questions/types/word-fill-paragraph/transform.js +56 -1
- package/dist/components/questions/types/word-fill-structured-form/WfsfWordBankEditor.js +86 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.js +246 -1
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.d.ts +2 -0
- package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.js +484 -1
- package/dist/components/questions/types/word-fill-structured-form/index.js +3 -1
- package/dist/components/questions/types/word-fill-structured-form/map-wfsf-question-data.js +113 -1
- package/dist/components/questions/types/word-fill-structured-form/register.js +36 -1
- package/dist/components/questions/types/word-fill-structured-form/transform.js +77 -1
- package/dist/components/questions/types/word-fill-structured-form/wfsf-word-bank.utils.js +110 -1
- package/dist/components/questions/types/word-order-and-match-group/WordOrderAndMatchGroupClient.d.ts +3 -0
- package/dist/components/questions/types/word-order-and-match-group/WordOrderAndMatchGroupClient.js +190 -0
- package/dist/components/questions/types/word-order-and-match-group/WordOrderAndMatchGroupCreator.d.ts +3 -0
- package/dist/components/questions/types/word-order-and-match-group/WordOrderAndMatchGroupCreator.js +182 -0
- package/dist/components/questions/types/word-order-and-match-group/index.d.ts +4 -0
- package/dist/components/questions/types/word-order-and-match-group/index.js +4 -0
- package/dist/components/questions/types/word-order-and-match-group/register.d.ts +2 -0
- package/dist/components/questions/types/word-order-and-match-group/register.js +121 -0
- package/dist/components/questions/types/word-order-and-match-group/transform.d.ts +2 -0
- package/dist/components/questions/types/word-order-and-match-group/transform.js +70 -0
- package/dist/components/questions/types/word-ordering/WordOrderingClient.js +84 -1
- package/dist/components/questions/types/word-ordering/WordOrderingCreator.js +192 -1
- package/dist/components/questions/types/word-ordering/index.js +2 -1
- package/dist/components/questions/types/word-ordering/register.js +46 -1
- package/dist/components/questions/types/word-ordering/transform.js +24 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.js +99 -1
- package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.js +320 -1
- package/dist/components/questions/types/write-a-short-letter/index.js +2 -1
- package/dist/components/questions/types/write-a-short-letter/register.js +68 -1
- package/dist/components/questions/types/write-a-short-letter/transform.js +25 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.js +61 -1
- package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.js +196 -1
- package/dist/components/questions/types/write-correct-verb-form/index.js +2 -1
- package/dist/components/questions/types/write-correct-verb-form/register.js +62 -1
- package/dist/components/questions/types/write-correct-verb-form/transform.js +17 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesClient.js +22 -1
- package/dist/components/questions/types/write-sentences/WriteSentencesCreator.js +174 -1
- package/dist/components/questions/types/write-sentences/index.js +2 -1
- package/dist/components/questions/types/write-sentences/register.js +58 -1
- package/dist/components/questions/types/write-sentences/transform.js +28 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.js +96 -1
- package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.js +161 -1
- package/dist/components/questions/types/write-short-paragraph/index.js +2 -1
- package/dist/components/questions/types/write-short-paragraph/register.js +4 -1
- package/dist/components/questions/types/write-short-paragraph/transform.js +21 -1
- package/dist/components/questions/viewer/ChooseTheCorrectAnswerGroupViewer.js +11 -1
- package/dist/components/questions/viewer/CrossOutWordGroupViewer.js +8 -1
- package/dist/components/questions/viewer/QuestionGroupViewer.js +36 -1
- package/dist/components/questions/viewer/QuestionViewer.js +692 -1
- package/dist/components/questions/viewer/SpontaneousQaGroupViewer.d.ts +2 -1
- package/dist/components/questions/viewer/SpontaneousQaGroupViewer.js +82 -1
- package/dist/components/questions/viewer/TrueFalseGroupViewer.js +11 -1
- package/dist/components/questions/viewer/WordFillStructuredFormViewer.js +14 -1
- package/dist/components/questions/viewer/WordOrderAndMatchGroupViewer.d.ts +3 -1
- package/dist/components/questions/viewer/WordOrderAndMatchGroupViewer.js +95 -1
- package/dist/components/questions/viewer/index.js +8 -1
- package/dist/components/results/ResultReviewPageContainer.js +220 -1
- package/dist/components/results/ReviewQuestionRenderer.js +55 -1
- package/dist/components/results/hooks/useResultReviewPolling.js +76 -1
- package/dist/components/results/index.js +22 -1
- package/dist/components/results/renderers/QuestionExplanations.js +19 -1
- package/dist/components/results/renderers/ReviewChooseAdjectiveRenderer.js +94 -1
- package/dist/components/results/renderers/ReviewChooseBestAnswerRenderer.js +75 -1
- package/dist/components/results/renderers/ReviewColoringRenderer.js +110 -1
- package/dist/components/results/renderers/ReviewListenAndWriteRenderer.js +48 -1
- package/dist/components/results/renderers/ReviewListenChooseAnswerGroupRenderer.js +87 -1
- package/dist/components/results/renderers/ReviewListenChooseObjectsRenderer.js +104 -1
- package/dist/components/results/renderers/ReviewListenDragObjectsRenderer.js +123 -1
- package/dist/components/results/renderers/ReviewListeningHeader.js +104 -1
- package/dist/components/results/renderers/ReviewSpeakingAIPanel.js +116 -1
- package/dist/components/results/renderers/ReviewSpeakingMedia.js +48 -1
- package/dist/components/results/renderers/ReviewSpeakingQuestionItem.js +42 -1
- package/dist/components/results/renderers/ReviewSpeakingRenderer.js +12 -1
- package/dist/components/results/renderers/ReviewSpeakingRenderer.types.js +85 -1
- package/dist/components/results/renderers/review-question-body-dedicated.js +104 -1
- package/dist/components/results/renderers/review-question-body-movers.js +148 -1
- package/dist/components/results/renderers/review-speaking-map.js +226 -1
- package/dist/components/results/renderers/review-spontaneous-qa-group.d.ts +4 -0
- package/dist/components/results/renderers/review-spontaneous-qa-group.js +74 -0
- package/dist/components/results/report/BadgeTitle.js +5 -1
- package/dist/components/results/report/ExamSkillRow.js +20 -1
- package/dist/components/results/report/OceanEduExamReport.js +58 -1
- package/dist/components/results/report/OceanEduSpeakingReport.js +62 -1
- package/dist/components/results/report/OverallAssessmentSection.js +17 -1
- package/dist/components/results/report/ResultErrorState.js +18 -1
- package/dist/components/results/report/ResultLoadingState.js +10 -1
- package/dist/components/results/report/ResultNotPublicState.js +27 -1
- package/dist/components/results/report/SpeakingReportParts.js +14 -1
- package/dist/components/results/report/SpeakingReportShared.js +86 -1
- package/dist/components/results/report/SpeakingRubricSection.js +171 -1
- package/dist/components/results/report/speaking-report.utils.js +198 -1
- package/dist/components/results/result-review.utils.js +6 -1
- package/dist/components/results/review-data.js +222 -1
- package/dist/components/results/review-renderer.utils.js +97 -1
- package/dist/components/results/review-status.utils.js +36 -1
- package/dist/components/results/review-types.js +1 -1
- package/dist/components/results/speaking/SpeakingResultAudioPlayer.js +77 -1
- package/dist/components/results/speaking/SpeakingReviewResult.js +48 -1
- package/dist/components/results/utils/review-score.utils.js +72 -1
- package/dist/components/results/utils/speaking-summary.js +224 -1
- package/dist/components/results/utils/transform-speaking-review.js +183 -1
- package/dist/components/shared/RichTextEditor.d.ts +9 -0
- package/dist/components/shared/RichTextEditor.js +47 -0
- package/dist/components/shared/audio/SpeakingAudioPlayer.js +100 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.js +140 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.js +10 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.d.ts +1 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.js +18 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.js +11 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleHeader.js +11 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.d.ts +2 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.js +19 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.js +13 -1
- package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.d.ts +1 -1
- package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.js +3 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.js +6 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.js +5 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.js +9 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.d.ts +2 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.js +61 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleTimer.d.ts +1 -1
- package/dist/components/themes/cambridge-yle/CambridgeYleTimer.js +25 -1
- package/dist/components/themes/cambridge-yle/index.js +13 -1
- package/dist/components/themes/english-certification/EcAnswerTheQuestion.js +25 -1
- package/dist/components/themes/english-certification/EcMatchByWritingAnswer.js +89 -1
- package/dist/components/themes/english-certification/EcWordFillParagraph.js +56 -1
- package/dist/components/themes/english-certification/EcWordFillStructuredForm.js +192 -1
- package/dist/components/themes/english-certification/EcWritingTask.js +60 -1
- package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.js +108 -1
- package/dist/components/themes/english-certification/EnglishCertificationBrand.js +11 -1
- package/dist/components/themes/english-certification/EnglishCertificationExamLayout.js +34 -1
- package/dist/components/themes/english-certification/EnglishCertificationFlagButton.js +15 -1
- package/dist/components/themes/english-certification/EnglishCertificationFooterBar.js +19 -1
- package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.js +166 -1
- package/dist/components/themes/english-certification/EnglishCertificationHeader.js +31 -1
- package/dist/components/themes/english-certification/EnglishCertificationInstructionBanner.js +79 -1
- package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.js +71 -1
- package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.js +79 -1
- package/dist/components/themes/english-certification/EnglishCertificationPartHeader.js +47 -1
- package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.js +77 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.js +25 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.js +36 -1
- package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.js +81 -1
- package/dist/components/themes/english-certification/EnglishCertificationReadingSection.js +95 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.js +18 -1
- package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.js +32 -1
- package/dist/components/themes/english-certification/english-cert-scroll.js +163 -1
- package/dist/components/themes/english-certification/english-certification-theme.js +58 -1
- package/dist/components/themes/english-certification/grouped-question-utils.js +243 -1
- package/dist/components/themes/english-certification/index.js +24 -1
- package/dist/components/themes/index.js +25 -1
- package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.js +170 -1
- package/dist/components/themes/summer-sky/SummerSkyExitModal.js +21 -1
- package/dist/components/themes/summer-sky/SummerSkyLayout.js +221 -1
- package/dist/components/themes/summer-sky/SummerSkySubmitModal.js +18 -1
- package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.js +193 -1
- package/dist/components/themes/types.js +1 -1
- package/dist/components/ui/alert-dialog.js +26 -1
- package/dist/components/ui/alert.js +22 -1
- package/dist/components/ui/avatar.js +12 -1
- package/dist/components/ui/badge.js +38 -1
- package/dist/components/ui/button.js +35 -1
- package/dist/components/ui/calendar.js +76 -1
- package/dist/components/ui/card.js +16 -1
- package/dist/components/ui/carousel.js +91 -1
- package/dist/components/ui/checkbox.js +9 -1
- package/dist/components/ui/collapsible.js +13 -1
- package/dist/components/ui/command.js +34 -1
- package/dist/components/ui/confirm-dialog.js +49 -1
- package/dist/components/ui/dialog.js +23 -1
- package/dist/components/ui/drawer.js +35 -1
- package/dist/components/ui/dropdown-menu.js +33 -1
- package/dist/components/ui/file-upload.js +155 -1
- package/dist/components/ui/form.js +62 -1
- package/dist/components/ui/hover-card.js +10 -1
- package/dist/components/ui/image-preview.js +29 -1
- package/dist/components/ui/input.js +8 -1
- package/dist/components/ui/label.js +9 -1
- package/dist/components/ui/language-switcher.js +15 -1
- package/dist/components/ui/multi-select.js +90 -1
- package/dist/components/ui/points-input.js +33 -1
- package/dist/components/ui/popover.js +26 -1
- package/dist/components/ui/progress.js +16 -1
- package/dist/components/ui/radio-group.js +12 -1
- package/dist/components/ui/scroll-area.js +11 -1
- package/dist/components/ui/select.js +38 -1
- package/dist/components/ui/separator.js +8 -1
- package/dist/components/ui/sheet.js +40 -1
- package/dist/components/ui/single-select.js +76 -1
- package/dist/components/ui/skeleton.js +6 -1
- package/dist/components/ui/switch.js +8 -1
- package/dist/components/ui/table.js +20 -1
- package/dist/components/ui/tabs.js +17 -1
- package/dist/components/ui/textarea.js +8 -1
- package/dist/components/ui/tooltip.js +11 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +24 -1
- package/dist/shared/constants/ApiConstant.d.ts +1 -0
- package/dist/shared/constants/ApiConstant.js +278 -1
- package/dist/shared/constants/QueryKeyConstant.js +112 -1
- package/dist/shared/constants/exam-level.enum.js +41 -1
- package/dist/shared/constants/landings/placement-test.constants.js +431 -1
- package/dist/shared/constants/question-skills.js +277 -1
- package/dist/shared/constants/routes.js +81 -1
- package/dist/shared/index.js +10 -1
- package/dist/shared/lib/hooks/index.js +10 -1
- package/dist/shared/lib/hooks/useAlertDialog.js +57 -1
- package/dist/shared/lib/hooks/useAudioPlayCounter.js +30 -1
- package/dist/shared/lib/hooks/useAudioPreview.js +81 -1
- package/dist/shared/lib/hooks/useAudioUpload.js +24 -1
- package/dist/shared/lib/hooks/useConfirmDialog.js +89 -1
- package/dist/shared/lib/hooks/useDebouncedCallback.js +32 -1
- package/dist/shared/lib/hooks/useDelayedAutoPlay.js +12 -1
- package/dist/shared/lib/hooks/useFileUpload.js +24 -1
- package/dist/shared/lib/hooks/useImageUrl.js +5 -1
- package/dist/shared/lib/hooks/usePresignedFileUrl.js +108 -1
- package/dist/shared/lib/hooks/useReactHookForm.js +31 -1
- package/dist/shared/lib/hooks/useToast.js +62 -1
- package/dist/shared/lib/html-content.js +22 -1
- package/dist/shared/lib/i18n/index.js +54 -1
- package/dist/shared/lib/i18n/messages/en/admin.d.ts +11 -4
- package/dist/shared/lib/i18n/messages/en/admin.js +2111 -1
- package/dist/shared/lib/i18n/messages/en/auth.js +86 -1
- package/dist/shared/lib/i18n/messages/en/common.js +140 -1
- package/dist/shared/lib/i18n/messages/en/file-upload.js +18 -1
- package/dist/shared/lib/i18n/messages/en/student.js +133 -1
- package/dist/shared/lib/i18n/messages/en/terms.js +37 -1
- package/dist/shared/lib/i18n/messages/en.d.ts +11 -4
- package/dist/shared/lib/i18n/messages/en.js +15 -1
- package/dist/shared/lib/i18n/messages/vi/admin.d.ts +11 -4
- package/dist/shared/lib/i18n/messages/vi/admin.js +2111 -1
- package/dist/shared/lib/i18n/messages/vi/auth.js +86 -1
- package/dist/shared/lib/i18n/messages/vi/common.js +140 -1
- package/dist/shared/lib/i18n/messages/vi/file-upload.js +18 -1
- package/dist/shared/lib/i18n/messages/vi/student.js +133 -1
- package/dist/shared/lib/i18n/messages/vi/terms.js +37 -1
- package/dist/shared/lib/i18n/messages/vi.d.ts +11 -4
- package/dist/shared/lib/i18n/messages/vi.js +15 -1
- package/dist/shared/lib/i18n/types.js +1 -1
- package/dist/shared/lib/stores/examQuestionStore.js +212 -1
- package/dist/shared/lib/stores/examTakingStore.js +240 -1
- package/dist/shared/lib/stores/gradingTransientStore.js +39 -1
- package/dist/shared/lib/stores/localeStore.js +10 -1
- package/dist/shared/lib/themes/config/starters.config.js +71 -1
- package/dist/shared/lib/themes/index.js +49 -1
- package/dist/shared/lib/themes/types.js +2 -1
- package/dist/shared/lib/toast.js +43 -1
- package/dist/shared/lib/utils/public-page.js +44 -1
- package/dist/shared/lib/utils/question-reverse-transform.js +438 -1
- package/dist/shared/lib/utils/question-transform-types.js +1 -1
- package/dist/shared/lib/utils/question-transform-validation.js +194 -1
- package/dist/shared/lib/utils/question-transform.js +199 -1
- package/dist/shared/lib/utils.js +168 -1
- package/dist/shared/lib/validation/choose-correct-answer.validation.js +111 -1
- package/dist/shared/lib/validation/label-the-picture.validation.js +19 -1
- package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.js +46 -1
- package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.js +21 -1
- package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.js +34 -1
- package/dist/shared/lib/validation/listen-and-speak-answer.validation.js +40 -1
- package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.js +45 -1
- package/dist/shared/lib/validation/listen-and-speak-image-group.validation.js +19 -1
- package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.js +39 -1
- package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.js +32 -1
- package/dist/shared/lib/validation/listen-and-speak-question-list.validation.js +19 -1
- package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.js +28 -1
- package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.js +12 -1
- package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.js +47 -1
- package/dist/shared/lib/validation/read-and-color-objects.validation.js +29 -1
- package/dist/shared/lib/validation/read-displayed-content.validation.js +28 -1
- package/dist/shared/lib/validation/speaking-conversation.validation.js +75 -1
- package/dist/shared/lib/validation/speaking-describe-image.validation.js +31 -1
- package/dist/shared/lib/validation/spontaneous-qa.validation.js +48 -1
- package/dist/shared/lib/validation/word-fill-paragraph-default.validation.js +38 -1
- package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.js +39 -1
- package/dist/shared/lib/validation/word-fill-paragraph.validation.js +43 -1
- package/dist/shared/lib/validation/word-ordering.validation.js +33 -1
- package/dist/shared/types/branch.types.js +6 -1
- package/dist/shared/types/common.types.js +49 -1
- package/dist/shared/types/entities/exam-schedule.types.js +5 -1
- package/dist/shared/types/entities/exam.types.js +1 -1
- package/dist/shared/types/entities/question.types.js +4 -1
- package/dist/shared/types/entities/result.types.js +4 -1
- package/dist/shared/types/entities/user.types.js +4 -1
- package/dist/shared/types/exam-taking.types.js +2 -1
- package/dist/shared/types/history.types.js +34 -1
- package/dist/shared/types/index.js +1 -1
- package/dist/shared/types/questions/choose-correct-adjective.js +4 -1
- package/dist/shared/types/questions/choose-the-correct-answer-group.d.ts +1 -0
- package/dist/shared/types/questions/choose-the-correct-answer-group.js +1 -1
- package/dist/shared/types/questions/choose-the-correct-answer.js +9 -1
- package/dist/shared/types/questions/cross-out-word-group.d.ts +2 -0
- package/dist/shared/types/questions/cross-out-word-group.js +1 -1
- package/dist/shared/types/questions/fill-missing-words-in-grid.js +11 -1
- package/dist/shared/types/questions/index.d.ts +1 -0
- package/dist/shared/types/questions/index.js +46 -1
- package/dist/shared/types/questions/listen-and-speak-answer.js +1 -1
- package/dist/shared/types/questions/listen-and-speak-compare-images.js +1 -1
- package/dist/shared/types/questions/listen-and-speak-image-group.js +1 -1
- package/dist/shared/types/questions/listen-and-speak-info-exchange.js +3 -1
- package/dist/shared/types/questions/listen-and-speak-odd-one-out.js +3 -1
- package/dist/shared/types/questions/listen-and-speak-question-list.js +1 -1
- package/dist/shared/types/questions/listen-and-speak-with-story-images.js +3 -1
- package/dist/shared/types/questions/look-picture-choose-correct-answer.js +5 -1
- package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.js +9 -1
- package/dist/shared/types/questions/look-picture-fill-word-hint.js +7 -1
- package/dist/shared/types/questions/read-displayed-content.js +1 -1
- package/dist/shared/types/questions/speaking-conversation.js +7 -1
- package/dist/shared/types/questions/speaking-describe-image.js +1 -1
- package/dist/shared/types/questions/spontaneous-qa.js +1 -1
- package/dist/shared/types/questions/word-order-and-match-group.d.ts +33 -0
- package/dist/shared/types/questions/word-order-and-match-group.js +1 -0
- package/dist/shared/types/questions/write-correct-verb-form.js +12 -1
- package/dist/shared/types/role.types.js +1 -1
- package/dist/shared/types/structure-management.js +28 -1
- package/dist/shared/types/student.types.js +57 -1
- package/dist/shared/types/teacher-dashboard-rooms.js +2 -1
- package/package.json +184 -166
- package/dist/mcp/config.d.ts +0 -12
- package/dist/mcp/config.js +0 -1
- package/dist/mcp/http-client.d.ts +0 -6
- package/dist/mcp/http-client.js +0 -1
- package/dist/mcp/index.d.ts +0 -6
- package/dist/mcp/index.js +0 -2
- package/dist/mcp/tools/_helpers.d.ts +0 -4
- package/dist/mcp/tools/_helpers.js +0 -1
- package/dist/mcp/tools/exams.d.ts +0 -2
- package/dist/mcp/tools/exams.js +0 -1
- package/dist/mcp/tools/index.d.ts +0 -2
- package/dist/mcp/tools/index.js +0 -1
- package/dist/mcp/tools/results.d.ts +0 -2
- package/dist/mcp/tools/results.js +0 -1
|
@@ -1 +1,86 @@
|
|
|
1
|
-
|
|
1
|
+
const auth = {
|
|
2
|
+
// Register
|
|
3
|
+
'auth.register.success': 'Registration successful! Please log in.',
|
|
4
|
+
'auth.register.loadError': 'Unable to load data. Please try again.',
|
|
5
|
+
'auth.register.title': 'Create Account',
|
|
6
|
+
'auth.register.description': 'Register a student account for Ocean Edu Exam',
|
|
7
|
+
'auth.register.withGoogle': 'Sign up with Google',
|
|
8
|
+
'auth.register.signingUp': 'Signing up...',
|
|
9
|
+
'auth.register.nameLabel': 'Full Name',
|
|
10
|
+
'auth.register.namePlaceholder': 'John Doe',
|
|
11
|
+
'auth.register.branchLabel': 'Branch',
|
|
12
|
+
'auth.register.branchPlaceholder': '-- Select branch --',
|
|
13
|
+
'auth.register.levelLabel': 'Level',
|
|
14
|
+
'auth.register.levelPlaceholder': '-- Select level --',
|
|
15
|
+
'auth.register.phoneLabel': 'Phone Number',
|
|
16
|
+
'auth.register.phonePlaceholder': '0901234567',
|
|
17
|
+
'auth.register.emailLabel': 'Email',
|
|
18
|
+
'auth.register.emailPlaceholder': 'email@example.com',
|
|
19
|
+
'auth.register.identifierLabel': 'Email or Username',
|
|
20
|
+
'auth.register.identifierPlaceholder': 'email@example.com or username',
|
|
21
|
+
'auth.register.usernameLabel': 'Username',
|
|
22
|
+
'auth.register.usernamePlaceholder': 'username',
|
|
23
|
+
'auth.register.passwordLabel': 'Password',
|
|
24
|
+
'auth.register.passwordPlaceholder': '••••••••',
|
|
25
|
+
'auth.register.confirmPasswordLabel': 'Confirm Password',
|
|
26
|
+
'auth.register.confirmPasswordPlaceholder': '••••••••',
|
|
27
|
+
'auth.register.submit': 'Register',
|
|
28
|
+
'auth.register.submitting': 'Registering...',
|
|
29
|
+
'auth.register.failed': 'Registration failed. Please try again.',
|
|
30
|
+
'auth.register.emailExists': 'Email is already in use',
|
|
31
|
+
'auth.register.identifierExists': 'Email or username is already in use',
|
|
32
|
+
'auth.register.phoneExists': 'Phone number is already in use',
|
|
33
|
+
'auth.register.usernameExists': 'Username is already in use',
|
|
34
|
+
'auth.register.loading': 'Loading...',
|
|
35
|
+
'auth.register.hasAccount': 'Already have an account?',
|
|
36
|
+
'auth.register.loginNow': 'Sign in',
|
|
37
|
+
// Account upgrade
|
|
38
|
+
'auth.upgrade.success': 'Account updated! Please log in again with your new email and password.',
|
|
39
|
+
'auth.upgrade.clientError': 'An error occurred. Please try again.',
|
|
40
|
+
'auth.upgrade.systemError': 'System error. Please try again later.',
|
|
41
|
+
// Landing lead form
|
|
42
|
+
'auth.lead.branchLoadError': 'Unable to load branch list. Please reload the page.',
|
|
43
|
+
'auth.lead.submitSuccess': 'Registration successful! Redirecting...',
|
|
44
|
+
// Login dialog
|
|
45
|
+
'auth.login.title': 'Ocean Edu Exam',
|
|
46
|
+
'auth.login.description': 'Sign in to continue using the system',
|
|
47
|
+
'auth.login.withGoogle': 'Sign in with Google',
|
|
48
|
+
'auth.login.loggingIn': 'Signing in...',
|
|
49
|
+
'auth.login.secureNote': 'Secure & Safe',
|
|
50
|
+
'auth.login.termsAgreement': 'By signing in, you agree to our',
|
|
51
|
+
'auth.login.termsOfService': 'Terms of Service',
|
|
52
|
+
'auth.login.emailLabel': 'Email',
|
|
53
|
+
'auth.login.emailPlaceholder': 'your-email@oceanedu.com',
|
|
54
|
+
'auth.login.identifierLabel': 'Email or Username',
|
|
55
|
+
'auth.login.identifierPlaceholder': 'email@oceanedu.com or username',
|
|
56
|
+
'auth.login.passwordLabel': 'Password',
|
|
57
|
+
'auth.login.passwordPlaceholder': '••••••••',
|
|
58
|
+
'auth.login.submit': 'Sign in',
|
|
59
|
+
'auth.login.submitting': 'Signing in...',
|
|
60
|
+
'auth.login.failed': 'Sign in failed',
|
|
61
|
+
'auth.login.or': 'or',
|
|
62
|
+
'auth.login.googleError': 'Google sign in failed. Please try again.',
|
|
63
|
+
'auth.login.noAccount': "Don't have an account?",
|
|
64
|
+
'auth.login.registerNow': 'Register now',
|
|
65
|
+
// Complete profile dialog
|
|
66
|
+
'auth.completeProfile.title': 'Complete Your Profile',
|
|
67
|
+
'auth.completeProfile.description': 'Please update your personal information to use the system',
|
|
68
|
+
'auth.completeProfile.nameLabel': 'Full Name',
|
|
69
|
+
'auth.completeProfile.namePlaceholder': 'John Doe',
|
|
70
|
+
'auth.completeProfile.nameRequired': 'Please enter your name',
|
|
71
|
+
'auth.completeProfile.phoneLabel': 'Phone Number',
|
|
72
|
+
'auth.completeProfile.phonePlaceholder': '0901234567',
|
|
73
|
+
'auth.completeProfile.phoneRequired': 'Please enter your phone number',
|
|
74
|
+
'auth.completeProfile.phoneInvalid': 'Invalid phone number (10-11 digits)',
|
|
75
|
+
'auth.completeProfile.levelLabel': 'English Level',
|
|
76
|
+
'auth.completeProfile.levelPlaceholder': '-- Select level --',
|
|
77
|
+
'auth.completeProfile.levelRequired': 'Please select your English level',
|
|
78
|
+
'auth.completeProfile.dateOfBirthLabel': 'Date of Birth',
|
|
79
|
+
'auth.completeProfile.branchLabel': 'Branch',
|
|
80
|
+
'auth.completeProfile.branchPlaceholder': '-- Select branch (optional) --',
|
|
81
|
+
'auth.completeProfile.submit': 'Complete',
|
|
82
|
+
'auth.completeProfile.submitting': 'Updating...',
|
|
83
|
+
'auth.completeProfile.success': 'Profile updated successfully!',
|
|
84
|
+
'auth.completeProfile.failed': 'Update failed. Please try again.',
|
|
85
|
+
};
|
|
86
|
+
export default auth;
|
|
@@ -1 +1,140 @@
|
|
|
1
|
-
|
|
1
|
+
const common = {
|
|
2
|
+
// HTTP status errors
|
|
3
|
+
'common.http.400': 'Invalid data. Please check your input!',
|
|
4
|
+
'common.http.403': 'You do not have permission to perform this action!',
|
|
5
|
+
'common.http.404': 'Data not found!',
|
|
6
|
+
'common.http.409': 'Data already exists!',
|
|
7
|
+
'common.http.500': 'Server error. Please try again later!',
|
|
8
|
+
'common.http.generic': 'An error occurred. Please try again!',
|
|
9
|
+
// Generic
|
|
10
|
+
'common.cancel': 'Cancel',
|
|
11
|
+
'common.close': 'Close',
|
|
12
|
+
'common.error.system': 'System error. Please try again later.',
|
|
13
|
+
'common.error.loadData': 'Unable to load data. Please try again.',
|
|
14
|
+
'common.form.validationError': 'Please check your input!',
|
|
15
|
+
'common.comingSoon': 'Coming soon',
|
|
16
|
+
// Exam creator (shared between admin & teacher)
|
|
17
|
+
'common.examCreator.fillInfoBeforeSave': 'Please fill in all information before saving!',
|
|
18
|
+
'common.examCreator.invalidQuestions': 'Invalid question(s): {errors}',
|
|
19
|
+
'common.examCreator.noValidData': 'No valid question data',
|
|
20
|
+
'common.examCreator.saveError': 'Error saving question {index}',
|
|
21
|
+
'common.examCreator.saveWithBankSuccess': 'Successfully saved question {index} and added to question bank with code "{code}".',
|
|
22
|
+
'common.examCreator.saveSuccess': 'Successfully saved question {index}.',
|
|
23
|
+
'common.examCreator.bankSelected': 'Question selected from bank. Click "Save question" to save.',
|
|
24
|
+
'common.examCreator.saveBeforeExit': 'Please save the current question before exiting.',
|
|
25
|
+
'common.examCreator.previewLoadError': 'Unable to load questions',
|
|
26
|
+
// Auto fill questions
|
|
27
|
+
'common.autoFill.loadBankError': 'Unable to load question bank information',
|
|
28
|
+
'common.autoFill.noQuestions': 'No questions to fill',
|
|
29
|
+
'common.autoFill.success': 'Filled {count} questions from bank',
|
|
30
|
+
'common.autoFill.noneApplied': 'No questions were filled',
|
|
31
|
+
'common.autoFill.error': 'An error occurred while auto-filling questions',
|
|
32
|
+
// Question creator
|
|
33
|
+
'common.question.create.fillInfo': 'Please fill in all information!',
|
|
34
|
+
'common.question.create.success': 'Question created successfully.',
|
|
35
|
+
'common.questionGroup.create.fillInfo': 'Please fill in all information and select at least 1 question!',
|
|
36
|
+
'common.questionGroup.create.success': 'Question group created successfully!',
|
|
37
|
+
// Multiple choice validation
|
|
38
|
+
'common.multipleChoice.minAnswers': 'Minimum 2 answers required!',
|
|
39
|
+
'common.multipleChoice.enterQuestion': 'Please enter the question!',
|
|
40
|
+
'common.multipleChoice.atLeastTwo': 'Must have at least 2 answers!',
|
|
41
|
+
'common.multipleChoice.selectCorrect': 'Please select the correct answer!',
|
|
42
|
+
// Question type validations
|
|
43
|
+
'common.questionType.missingAnswer': 'Missing cell #{index} at position ({row}, {col}): Please enter an answer!',
|
|
44
|
+
'common.questionType.addImage': 'Question {index}: Please add an image',
|
|
45
|
+
'common.questionType.enterContent': 'Question {index}: Please enter content',
|
|
46
|
+
'common.questionType.answerTooLong': 'Answer cannot exceed {limit} words',
|
|
47
|
+
// Audio
|
|
48
|
+
'common.audio.maxPlayReached': 'You can only listen up to {maxPlay} times!',
|
|
49
|
+
// Layout — Sidebar
|
|
50
|
+
'layout.sidebar.admin.dashboard': 'Dashboard',
|
|
51
|
+
'layout.sidebar.admin.users': 'User Management',
|
|
52
|
+
'layout.sidebar.admin.roles': 'Roles',
|
|
53
|
+
'layout.sidebar.admin.classrooms': 'Class Management',
|
|
54
|
+
'layout.sidebar.admin.branches': 'Branch Management',
|
|
55
|
+
'layout.sidebar.admin.contests': 'Contest Management',
|
|
56
|
+
'layout.sidebar.admin.rooms': 'Room Management',
|
|
57
|
+
'layout.sidebar.admin.exams': 'Exam Management',
|
|
58
|
+
'layout.sidebar.admin.questionBanks': 'Question Banks',
|
|
59
|
+
'layout.sidebar.admin.schedules': 'Schedule Management',
|
|
60
|
+
'layout.sidebar.admin.templates': 'Exam Templates',
|
|
61
|
+
'layout.sidebar.admin.testParticipants': 'Test Participants',
|
|
62
|
+
'layout.sidebar.admin.reports': 'Reports',
|
|
63
|
+
'layout.sidebar.admin.settings': 'System Settings',
|
|
64
|
+
'layout.sidebar.student.home': 'Home',
|
|
65
|
+
'layout.sidebar.student.contests': 'Contests',
|
|
66
|
+
'layout.sidebar.student.discoverContests': 'Discover Contests',
|
|
67
|
+
'layout.sidebar.student.myContests': 'My Contests',
|
|
68
|
+
'layout.sidebar.student.mySchedule': 'My Schedule',
|
|
69
|
+
'layout.sidebar.student.examRooms': 'Exam Rooms',
|
|
70
|
+
'layout.sidebar.student.roomList': 'Room List',
|
|
71
|
+
'layout.sidebar.student.joinedRooms': 'Joined Rooms',
|
|
72
|
+
'layout.sidebar.student.results': 'Results',
|
|
73
|
+
'layout.sidebar.student.history': 'Exam History',
|
|
74
|
+
'layout.sidebar.logout': 'Log out',
|
|
75
|
+
'layout.sidebar.loggingOut': 'Logging out...',
|
|
76
|
+
'layout.sidebar.expand': 'Expand menu',
|
|
77
|
+
'layout.sidebar.collapse': 'Collapse menu',
|
|
78
|
+
// Layout — Sidebar (System Admin)
|
|
79
|
+
'layout.sidebar.systemAdmin.dashboard': 'Dashboard',
|
|
80
|
+
'layout.sidebar.systemAdmin.users': 'User Management',
|
|
81
|
+
// Layout — Topbar
|
|
82
|
+
'layout.topbar.greeting': 'Hello, {name}',
|
|
83
|
+
'layout.topbar.notification': 'Notifications',
|
|
84
|
+
'layout.topbar.userMenu': 'User menu',
|
|
85
|
+
'layout.topbar.profile': 'Profile',
|
|
86
|
+
'layout.topbar.changePassword': 'Change Password',
|
|
87
|
+
'layout.topbar.systemAdmin': 'System Admin',
|
|
88
|
+
// Pagination
|
|
89
|
+
'common.pagination.showing': 'Showing {start} - {end} of {total} records',
|
|
90
|
+
'common.pagination.display': 'Show:',
|
|
91
|
+
'common.pagination.first': 'First',
|
|
92
|
+
'common.pagination.previous': 'Previous',
|
|
93
|
+
'common.pagination.next': 'Next',
|
|
94
|
+
'common.pagination.last': 'Last',
|
|
95
|
+
// Table
|
|
96
|
+
'common.table.loading': 'Loading data...',
|
|
97
|
+
'common.table.showing': 'Showing {count} of {total} records',
|
|
98
|
+
'common.table.all': 'All',
|
|
99
|
+
'common.table.clearFilters': 'Clear filters',
|
|
100
|
+
'common.table.defaultTitle': 'List',
|
|
101
|
+
'common.table.noData': 'No data',
|
|
102
|
+
'common.table.search': 'Search...',
|
|
103
|
+
// Badge — Role
|
|
104
|
+
'common.badge.role.systemAdmin': 'System Admin',
|
|
105
|
+
'common.badge.role.admin': 'Admin',
|
|
106
|
+
'common.badge.role.teacher': 'Teacher',
|
|
107
|
+
'common.badge.role.student': 'Student',
|
|
108
|
+
// Badge — Status
|
|
109
|
+
'common.badge.status.active': 'Active',
|
|
110
|
+
'common.badge.status.inactive': 'Inactive',
|
|
111
|
+
'common.badge.status.verified': 'Verified',
|
|
112
|
+
'common.badge.status.pending': 'Pending',
|
|
113
|
+
'common.badge.status.processing': 'Processing',
|
|
114
|
+
'common.badge.status.completed': 'Completed',
|
|
115
|
+
'common.badge.status.approved': 'Approved',
|
|
116
|
+
'common.badge.status.graded': 'Graded',
|
|
117
|
+
'common.badge.status.draft': 'Draft',
|
|
118
|
+
'common.badge.status.rejected': 'Rejected',
|
|
119
|
+
'common.badge.status.cancelled': 'Cancelled',
|
|
120
|
+
'common.badge.status.failed': 'Failed',
|
|
121
|
+
'common.badge.status.error': 'Error',
|
|
122
|
+
'common.badge.status.locked': 'Locked',
|
|
123
|
+
'common.badge.status.open': 'Open',
|
|
124
|
+
'common.badge.status.ready': 'Ready',
|
|
125
|
+
'common.badge.status.inProgress': 'In Progress',
|
|
126
|
+
'common.badge.status.paid': 'Paid',
|
|
127
|
+
'common.badge.status.success': 'Success',
|
|
128
|
+
'common.badge.status.info': 'Info',
|
|
129
|
+
'common.badge.status.unpaid': 'Unpaid',
|
|
130
|
+
'common.badge.status.warning': 'Warning',
|
|
131
|
+
'common.badge.status.overdue': 'Overdue',
|
|
132
|
+
'common.badge.status.disabled': 'Disabled',
|
|
133
|
+
'common.badge.status.archived': 'Archived',
|
|
134
|
+
// Badge — Registration Source
|
|
135
|
+
'common.badge.source.selfRegistered': 'Self-registered',
|
|
136
|
+
'common.badge.source.createdByAdmin': 'Created by admin',
|
|
137
|
+
'common.badge.source.createdByTeacher': 'Created by teacher',
|
|
138
|
+
'common.badge.source.createdFromEBM': 'Synced from EBM',
|
|
139
|
+
};
|
|
140
|
+
export default common;
|
|
@@ -1 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
const fileUpload = {
|
|
2
|
+
// Generic file upload
|
|
3
|
+
'fileUpload.success': 'File uploaded successfully!',
|
|
4
|
+
'fileUpload.error': 'File upload error: {message}',
|
|
5
|
+
'fileUpload.invalidFormat': 'Invalid file format. Please select a file with format: {accept}',
|
|
6
|
+
'fileUpload.tooLarge': 'File too large! Maximum size: {maxSize}MB',
|
|
7
|
+
'fileUpload.uploaded': 'Uploaded: {name}',
|
|
8
|
+
// Audio upload
|
|
9
|
+
'fileUpload.audio.success': 'Audio file uploaded successfully!',
|
|
10
|
+
'fileUpload.audio.missingExamId': 'Missing examId for audio upload',
|
|
11
|
+
'fileUpload.audio.error': 'Unable to upload audio file. Please try again.',
|
|
12
|
+
'fileUpload.audio.timeout': 'Audio upload timed out. Please try again.',
|
|
13
|
+
'fileUpload.audio.networkError': 'Network error. Please check your connection and try again.',
|
|
14
|
+
'fileUpload.audio.tooLarge': 'Audio file exceeds the allowed size. Please select a smaller file.',
|
|
15
|
+
'fileUpload.audio.noUrl': 'No audio URL available to play',
|
|
16
|
+
'fileUpload.audio.playError': 'Unable to play audio file',
|
|
17
|
+
};
|
|
18
|
+
export default fileUpload;
|
|
@@ -1 +1,133 @@
|
|
|
1
|
-
|
|
1
|
+
const student = {
|
|
2
|
+
// Room & joining
|
|
3
|
+
'student.room.join.enterCode': 'Please enter the room code',
|
|
4
|
+
'student.room.join.success': 'Joined exam room successfully!',
|
|
5
|
+
'student.room.join.invalidCode': 'Invalid room code',
|
|
6
|
+
'student.room.join.noAccess': 'You do not have access to this exam room',
|
|
7
|
+
'student.room.join.unavailable': 'Exam room is not available',
|
|
8
|
+
'student.room.join.error': 'Unable to join exam room',
|
|
9
|
+
// Exam entry
|
|
10
|
+
'student.exam.entry.loadError': 'Unable to load exam room information',
|
|
11
|
+
'student.exam.entry.notStarted': 'Exam has not started yet',
|
|
12
|
+
'student.exam.entry.expired': 'Exam time has expired',
|
|
13
|
+
'student.exam.entry.startError': 'Unable to start the exam',
|
|
14
|
+
'student.exam.entry.otherRoom': 'You have an ongoing exam in another room. Please complete it first.',
|
|
15
|
+
'student.exam.entry.continue': 'Continuing the exam!',
|
|
16
|
+
'student.exam.entry.restartError': 'Unable to restart the exam',
|
|
17
|
+
// Exam taking
|
|
18
|
+
'student.exam.take.noActive': 'No active exam in progress',
|
|
19
|
+
'student.exam.take.otherRoom': 'You have another exam in progress',
|
|
20
|
+
'student.exam.take.submitted': 'Exam has been submitted',
|
|
21
|
+
'student.exam.take.timeExpired': 'Time is up',
|
|
22
|
+
'student.exam.take.loadError': 'Error loading the exam',
|
|
23
|
+
'student.exam.take.autoSubmit': "Time's up! Submitting...",
|
|
24
|
+
'student.exam.take.timeWarning': '5 minutes left! Please finish your exam.',
|
|
25
|
+
'student.exam.take.saved': 'Saved',
|
|
26
|
+
'student.exam.take.saveError': 'Save error',
|
|
27
|
+
'student.exam.take.submitSuccess': 'Exam submitted successfully!',
|
|
28
|
+
'student.exam.take.submittedAIGradingInProgress': 'Submitted! AI is grading your Speaking answers, please wait a moment...',
|
|
29
|
+
'student.exam.take.submitError': 'Unable to submit. Please try again.',
|
|
30
|
+
// Schedule
|
|
31
|
+
'student.schedule.exportSuccess': 'Exported exam schedule to Google Calendar',
|
|
32
|
+
// Audio
|
|
33
|
+
'student.audio.maxPlayReached': 'You can only listen up to {maxPlayCount} times!',
|
|
34
|
+
// Contest pages
|
|
35
|
+
'student.contest.discover.title': 'Discover Contests',
|
|
36
|
+
'student.contest.discover.description': 'Explore and join public contests',
|
|
37
|
+
'student.contest.discover.search': 'Search contests...',
|
|
38
|
+
'student.contest.discover.noContests': 'No contests available at the moment',
|
|
39
|
+
'student.contest.discover.upcoming': 'Upcoming',
|
|
40
|
+
'student.contest.discover.inProgress': 'In Progress',
|
|
41
|
+
'student.contest.discover.completed': 'Completed',
|
|
42
|
+
'student.contest.discover.all': 'All',
|
|
43
|
+
'student.contest.discover.register': 'Register',
|
|
44
|
+
'student.contest.discover.registered': 'Registered',
|
|
45
|
+
'student.contest.discover.viewDetail': 'View Details',
|
|
46
|
+
'student.contest.discover.participants': '{count} participants',
|
|
47
|
+
'student.contest.discover.timeRemaining': '{time} remaining',
|
|
48
|
+
'student.contest.discover.myContestsTitle': 'My Contests',
|
|
49
|
+
'student.contest.discover.myContestsDescription': 'Contests you are currently participating in',
|
|
50
|
+
'student.contest.discover.viewAll': 'View All',
|
|
51
|
+
'student.contest.discover.noMyContests': 'You have not joined any contests yet',
|
|
52
|
+
'student.contest.discover.noDescription': 'No description yet',
|
|
53
|
+
'student.contest.my.title': 'My Contests',
|
|
54
|
+
'student.contest.my.description': 'Contests you are participating in or have participated in',
|
|
55
|
+
'student.contest.my.participating': 'Participating',
|
|
56
|
+
'student.contest.my.completed': 'Completed',
|
|
57
|
+
'student.contest.my.all': 'All',
|
|
58
|
+
'student.contest.my.noContests': 'You have not joined any contests yet',
|
|
59
|
+
'student.contest.my.goDiscover': 'Discover Contests',
|
|
60
|
+
'student.contest.my.enterContest': 'Enter Contest',
|
|
61
|
+
'student.contest.detail.schedules': 'Schedules',
|
|
62
|
+
'student.contest.detail.rooms': 'Exam Rooms',
|
|
63
|
+
'student.contest.detail.results': 'Results',
|
|
64
|
+
'student.contest.detail.history': 'Exam History',
|
|
65
|
+
'student.contest.detail.overview': 'Overview',
|
|
66
|
+
'student.contest.detail.notFound': 'Contest not found',
|
|
67
|
+
'student.contest.detail.backToContests': 'Back to Contests',
|
|
68
|
+
// Contest detail - redesign
|
|
69
|
+
'student.contest.detail.registerNow': 'Register Now',
|
|
70
|
+
'student.contest.detail.alreadyRegistered': 'Registered ✓',
|
|
71
|
+
'student.contest.detail.registering': 'Registering...',
|
|
72
|
+
'student.contest.detail.startDate': 'Start',
|
|
73
|
+
'student.contest.detail.endDate': 'End',
|
|
74
|
+
'student.contest.detail.examRooms': 'Exam Rooms',
|
|
75
|
+
'student.contest.detail.participants': 'Participants',
|
|
76
|
+
'student.contest.detail.aboutContest': 'About This Contest',
|
|
77
|
+
'student.contest.detail.examFlow': 'Your Journey',
|
|
78
|
+
'student.contest.detail.flowStep1Title': 'Explore',
|
|
79
|
+
'student.contest.detail.flowStep1Desc': 'Read contest info and rules',
|
|
80
|
+
'student.contest.detail.flowStep2Title': 'Register',
|
|
81
|
+
'student.contest.detail.flowStep2Desc': 'Sign up to participate',
|
|
82
|
+
'student.contest.detail.flowStep3Title': 'Enter Room',
|
|
83
|
+
'student.contest.detail.flowStep3Desc': 'Join your exam room when it\'s time',
|
|
84
|
+
'student.contest.detail.flowStep4Title': 'Take Exam',
|
|
85
|
+
'student.contest.detail.flowStep4Desc': 'Complete the exam within time limit',
|
|
86
|
+
'student.contest.detail.flowStep5Title': 'Get Results',
|
|
87
|
+
'student.contest.detail.flowStep5Desc': 'View your score and ranking',
|
|
88
|
+
'student.contest.detail.statsTitle': 'Contest Statistics',
|
|
89
|
+
'student.contest.detail.avgScore': 'Average Score',
|
|
90
|
+
'student.contest.detail.highestScore': 'Highest Score',
|
|
91
|
+
'student.contest.detail.completionRate': 'Completion Rate',
|
|
92
|
+
'student.contest.detail.countdown.days': 'Days',
|
|
93
|
+
'student.contest.detail.countdown.hours': 'Hours',
|
|
94
|
+
'student.contest.detail.countdown.minutes': 'Mins',
|
|
95
|
+
'student.contest.detail.countdown.seconds': 'Secs',
|
|
96
|
+
'student.contest.detail.countdown.startsIn': 'Contest starts in',
|
|
97
|
+
'student.contest.detail.countdown.endsIn': 'Contest ends in',
|
|
98
|
+
'student.contest.detail.countdown.ended': 'Contest has ended',
|
|
99
|
+
'student.contest.detail.quickActions': 'Quick Actions',
|
|
100
|
+
'student.contest.detail.viewRooms': 'View Rooms',
|
|
101
|
+
'student.contest.detail.viewSchedule': 'View Schedule',
|
|
102
|
+
'student.contest.detail.viewResults': 'View Results',
|
|
103
|
+
// Contest visibility
|
|
104
|
+
'student.contest.visibility.internal': 'Internal',
|
|
105
|
+
'student.contest.visibility.internalBadge': 'Internal Contest',
|
|
106
|
+
'student.contest.visibility.registerPendingApproval': 'Registration pending approval',
|
|
107
|
+
'student.contest.visibility.pendingApprovalDesc': 'Your registration request has been submitted and is pending admin/mod approval.',
|
|
108
|
+
'student.contest.visibility.registerRequiresApproval': 'Register (requires approval)',
|
|
109
|
+
'student.contest.visibility.approvalRequired': 'Approval required',
|
|
110
|
+
'student.contest.visibility.approvalRequiredDesc': 'This is an internal contest. After registering, you need admin or mod approval to participate.',
|
|
111
|
+
'student.contest.visibility.privateTitle': 'Private Contest',
|
|
112
|
+
'student.contest.visibility.privateDesc': 'This contest is private. You cannot view details or register. Please contact admin/mod to be added.',
|
|
113
|
+
'student.contest.visibility.accessDenied': 'Access Denied',
|
|
114
|
+
'student.contest.visibility.accessDeniedDesc': 'You do not have permission to view this contest.',
|
|
115
|
+
'student.contest.discover.registerSuccess': 'Successfully registered for the contest!',
|
|
116
|
+
'student.contest.discover.registerPendingSuccess': 'Registration request submitted! Please wait for admin/mod approval.',
|
|
117
|
+
'student.contest.discover.registerError': 'Unable to register for the contest. Please try again.',
|
|
118
|
+
'student.contest.discover.cancelRegistration': 'Cancel Registration',
|
|
119
|
+
'student.contest.discover.cancelRegistrationSuccess': 'Successfully cancelled contest registration!',
|
|
120
|
+
'student.contest.discover.cancelRegistrationError': 'Unable to cancel registration. Please try again.',
|
|
121
|
+
'student.contest.discover.cancelRegistrationExamAttempted': 'Cannot cancel registration because you have already attempted the exam.',
|
|
122
|
+
'student.contest.discover.cancelRegistrationNotFound': 'Contest registration not found.',
|
|
123
|
+
'student.contest.discover.cancelling': 'Cancelling...',
|
|
124
|
+
// Registration status
|
|
125
|
+
'student.contest.registration.pending': 'Pending Approval',
|
|
126
|
+
'student.contest.registration.pendingBadge': '⏳ Pending',
|
|
127
|
+
'student.contest.registration.pendingDesc': 'Your registration request has been submitted and is waiting for admin approval.',
|
|
128
|
+
'student.contest.registration.rejected': 'Registration Rejected',
|
|
129
|
+
'student.contest.registration.rejectedBadge': '✗ Rejected',
|
|
130
|
+
'student.contest.registration.rejectedDesc': 'Your registration request has been rejected. Please contact admin for details.',
|
|
131
|
+
'student.contest.registration.approved': 'Approved',
|
|
132
|
+
};
|
|
133
|
+
export default student;
|
|
@@ -1 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
const terms = {
|
|
2
|
+
// Page
|
|
3
|
+
'terms.page.title': 'Terms of Service',
|
|
4
|
+
'terms.page.lastUpdated': 'Last updated: April 15, 2026',
|
|
5
|
+
'terms.page.backToHome': 'Back to Home',
|
|
6
|
+
// Section 1 - Introduction
|
|
7
|
+
'terms.section1.title': '1. Introduction',
|
|
8
|
+
'terms.section1.content': 'Ocean Edu Exam ("Platform") is an online examination system developed and operated by Ocean Edu International English Language System. By accessing and using the Platform, you agree to comply with the terms and conditions set forth in this document. If you do not agree with any of these terms, please stop using the Platform.',
|
|
9
|
+
// Section 2 - Terms of Use
|
|
10
|
+
'terms.section2.title': '2. Terms of Use',
|
|
11
|
+
'terms.section2.content': 'To use the Platform, you must meet the following conditions:\n• Be at least 6 years old. Users under 13 years of age require consent and supervision from a parent or legal guardian.\n• Provide accurate and complete registration information.\n• Accept and comply with all of these Terms of Service.\n• Not use the Platform for illegal purposes or in violation of the rights of others.',
|
|
12
|
+
// Section 3 - User Account
|
|
13
|
+
'terms.section3.title': '3. User Account',
|
|
14
|
+
'terms.section3.content': 'You are responsible for:\n• Keeping your login credentials (email/username and password) secure.\n• Not sharing your account with others.\n• Notifying us immediately if you discover unauthorized access to your account.\n• Providing accurate personal information and updating it when changes occur.\n\nWe are not responsible for any damages arising from your failure to secure your account.',
|
|
15
|
+
// Section 4 - Exam Rules
|
|
16
|
+
'terms.section4.title': '4. Examination Rules',
|
|
17
|
+
'terms.section4.content': 'When participating in exams on the Platform, you agree to:\n• Complete the exam by yourself without assistance from others.\n• Not use reference materials, assistive software, or any form of cheating.\n• Not copy, screenshot, record, or share exam content in any form.\n• Comply with the time limits and specific rules of each examination.\n\nViolation of exam rules may result in exam result cancellation and account suspension.',
|
|
18
|
+
// Section 5 - Intellectual Property
|
|
19
|
+
'terms.section5.title': '5. Intellectual Property',
|
|
20
|
+
'terms.section5.content': 'All content on the Platform, including but not limited to: exam papers, questions, images, audio, video, interface, source code, and related materials are the intellectual property of Ocean Edu or its licensed partners.\n\nYou may not:\n• Copy, distribute, modify, or create derivative works from Platform content.\n• Use content for commercial purposes without written consent.\n• Extract system data using automated tools (crawlers, bots, scrapers).',
|
|
21
|
+
// Section 6 - Privacy & Security
|
|
22
|
+
'terms.section6.title': '6. Privacy & Security',
|
|
23
|
+
'terms.section6.content': 'We are committed to protecting your personal information:\n• We collect minimal data necessary to provide the service (full name, email, exam results).\n• We do not sell or share personal information with third parties for commercial purposes.\n• We apply technical security measures to protect user data.\n• Exam result data is stored securely and accessible only to the user or authorized administrators.\n\nPlease contact us if you wish to request deletion of your personal data.',
|
|
24
|
+
// Section 7 - Limitation of Liability
|
|
25
|
+
'terms.section7.title': '7. Limitation of Liability',
|
|
26
|
+
'terms.section7.content': 'The Platform is provided on an "as-is" basis. We strive to ensure stable system operation but do not guarantee:\n• 100% uninterrupted service availability.\n• Absence of technical errors or system issues.\n• Exam results absolutely and accurately reflecting actual ability.\n\nWe are not liable for indirect damages arising from the use or inability to use the Platform.',
|
|
27
|
+
// Section 8 - Account Termination
|
|
28
|
+
'terms.section8.title': '8. Account Termination',
|
|
29
|
+
'terms.section8.content': 'We reserve the right to temporarily suspend or permanently delete your account if:\n• You violate these Terms of Service.\n• Cheating behavior is detected in examinations.\n• The Platform is used to harass, sabotage, or harm other users.\n• False information is provided during registration.\n\nYou may also request account deletion at any time by contacting us.',
|
|
30
|
+
// Section 9 - Changes to Terms
|
|
31
|
+
'terms.section9.title': '9. Changes to Terms',
|
|
32
|
+
'terms.section9.content': 'We reserve the right to update or modify these Terms of Service at any time. When significant changes are made:\n• We will notify you on the Platform or via your registered email.\n• The update date will be clearly noted at the top of the page.\n• Your continued use of the Platform after changes take effect constitutes acceptance of the new terms.',
|
|
33
|
+
// Section 10 - Contact
|
|
34
|
+
'terms.section10.title': '10. Contact',
|
|
35
|
+
'terms.section10.content': 'If you have any questions or concerns about these Terms of Service, please contact us:\n\n• Email: support@ocean.edu.vn\n• Hotline: 1900 0340\n• Website: https://ocean.edu.vn',
|
|
36
|
+
};
|
|
37
|
+
export default terms;
|
|
@@ -275,6 +275,12 @@ declare const en: {
|
|
|
275
275
|
readonly 'admin.questionBank.dialog.edit.save': "Save changes";
|
|
276
276
|
readonly 'admin.questionBank.dialog.edit.codeError': "Please enter question code";
|
|
277
277
|
readonly 'admin.questionBank.dialog.edit.titleError': "Please enter title";
|
|
278
|
+
readonly 'admin.questionBank.dialog.edit.loading': "Loading...";
|
|
279
|
+
readonly 'admin.questionBank.dialog.edit.unsupportedNote': "Note:";
|
|
280
|
+
readonly 'admin.questionBank.dialog.edit.unsupportedType': "Question type \"{type}\" is not editable in this UI. Please use the exam creator to edit this question.";
|
|
281
|
+
readonly 'admin.questionBank.dialog.edit.contentLabel': "Question content";
|
|
282
|
+
readonly 'admin.questionBank.dialog.edit.answerLabel': "Correct answer";
|
|
283
|
+
readonly 'admin.questionBank.dialog.edit.explanationLabel': "Explanation";
|
|
278
284
|
readonly 'admin.questionBank.dialog.delete.title': "Confirm Delete Question";
|
|
279
285
|
readonly 'admin.questionBank.dialog.delete.message': "Are you sure you want to delete question";
|
|
280
286
|
readonly 'admin.questionBank.dialog.delete.warning': "This action cannot be undone.";
|
|
@@ -1544,9 +1550,6 @@ declare const en: {
|
|
|
1544
1550
|
readonly 'admin.exams.shuffle.info3': "Questions within the same Part are randomly shuffled";
|
|
1545
1551
|
readonly 'admin.exams.shuffle.info4': "Variants are linked to the parent exam for management";
|
|
1546
1552
|
readonly 'admin.exams.shuffle.countLabel': "Number of variants to create";
|
|
1547
|
-
readonly 'admin.exams.shuffle.strategyLabel': "Existing exam handling option";
|
|
1548
|
-
readonly 'admin.exams.shuffle.keepOld': "Keep existing exams and add new ones";
|
|
1549
|
-
readonly 'admin.exams.shuffle.replaceAll': "Create a completely new set";
|
|
1550
1553
|
readonly 'admin.exams.shuffle.existingVariants': "Existing exams ({count})";
|
|
1551
1554
|
readonly 'admin.exams.shuffle.deleteAll': "Delete all ({count})";
|
|
1552
1555
|
readonly 'admin.exams.shuffle.loading': "Loading...";
|
|
@@ -1637,21 +1640,25 @@ declare const en: {
|
|
|
1637
1640
|
readonly 'admin.exams.preview.totalPoints': "Total Points:";
|
|
1638
1641
|
readonly 'admin.exams.preview.progress': "Progress";
|
|
1639
1642
|
readonly 'admin.exams.preview.loading': "Loading...";
|
|
1640
|
-
readonly 'admin.exams.preview.questionNavigation': "
|
|
1643
|
+
readonly 'admin.exams.preview.questionNavigation': "Part Navigation";
|
|
1641
1644
|
readonly 'admin.exams.preview.all': "All";
|
|
1642
1645
|
readonly 'admin.exams.preview.allQuestions': "All {count} questions";
|
|
1643
1646
|
readonly 'admin.exams.preview.partQuestions': "Part {part}: {count} questions";
|
|
1644
1647
|
readonly 'admin.exams.preview.collapse': "Collapse";
|
|
1645
1648
|
readonly 'admin.exams.preview.detail': "Details";
|
|
1646
1649
|
readonly 'admin.exams.preview.questionIndex': "Question {index} / {total}";
|
|
1650
|
+
readonly 'admin.exams.preview.partIndex': "Part {index} / {total}";
|
|
1647
1651
|
readonly 'admin.exams.preview.noQuestions': "No questions yet";
|
|
1648
1652
|
readonly 'admin.exams.preview.loadingQuestions': "Loading questions...";
|
|
1649
1653
|
readonly 'admin.exams.preview.retry': "Retry";
|
|
1650
1654
|
readonly 'admin.exams.preview.examNoQuestions': "This exam has no questions yet.";
|
|
1651
1655
|
readonly 'admin.exams.preview.prevQuestion': "Previous Question";
|
|
1656
|
+
readonly 'admin.exams.preview.prevPart': "Previous Part";
|
|
1652
1657
|
readonly 'admin.exams.preview.prev': "Prev";
|
|
1653
1658
|
readonly 'admin.exams.preview.nextQuestion': "Next Question";
|
|
1659
|
+
readonly 'admin.exams.preview.nextPart': "Next Part";
|
|
1654
1660
|
readonly 'admin.exams.preview.next': "Next";
|
|
1661
|
+
readonly 'admin.exams.preview.questionLabel': "Question {number}";
|
|
1655
1662
|
readonly 'admin.exams.preview.footerNote': "This is a preview mode to check the layout and content of the exam.";
|
|
1656
1663
|
readonly 'admin.exams.preview.close': "Close";
|
|
1657
1664
|
readonly 'admin.exams.preview.loadError': "Unable to load questions. Please try again.";
|
|
@@ -1 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import common from './en/common';
|
|
2
|
+
import auth from './en/auth';
|
|
3
|
+
import admin from './en/admin';
|
|
4
|
+
import student from './en/student';
|
|
5
|
+
import fileUpload from './en/file-upload';
|
|
6
|
+
import terms from './en/terms';
|
|
7
|
+
const en = {
|
|
8
|
+
...common,
|
|
9
|
+
...auth,
|
|
10
|
+
...admin,
|
|
11
|
+
...student,
|
|
12
|
+
...fileUpload,
|
|
13
|
+
...terms,
|
|
14
|
+
};
|
|
15
|
+
export default en;
|
|
@@ -118,6 +118,12 @@ declare const admin: {
|
|
|
118
118
|
readonly 'admin.questionBank.dialog.edit.save': "Lưu thay đổi";
|
|
119
119
|
readonly 'admin.questionBank.dialog.edit.codeError': "Vui lòng nhập mã câu hỏi";
|
|
120
120
|
readonly 'admin.questionBank.dialog.edit.titleError': "Vui lòng nhập tiêu đề";
|
|
121
|
+
readonly 'admin.questionBank.dialog.edit.loading': "Đang tải...";
|
|
122
|
+
readonly 'admin.questionBank.dialog.edit.unsupportedNote': "Lưu ý:";
|
|
123
|
+
readonly 'admin.questionBank.dialog.edit.unsupportedType': "Loại câu hỏi \"{type}\" chưa hỗ trợ chỉnh sửa trực tiếp trong giao diện này. Vui lòng sử dụng trang tạo đề thi để chỉnh sửa câu hỏi này.";
|
|
124
|
+
readonly 'admin.questionBank.dialog.edit.contentLabel': "Nội dung câu hỏi";
|
|
125
|
+
readonly 'admin.questionBank.dialog.edit.answerLabel': "Đáp án đúng";
|
|
126
|
+
readonly 'admin.questionBank.dialog.edit.explanationLabel': "Giải thích";
|
|
121
127
|
readonly 'admin.questionBank.dialog.delete.title': "Xác nhận xóa câu hỏi";
|
|
122
128
|
readonly 'admin.questionBank.dialog.delete.message': "Bạn có chắc chắn muốn xóa câu hỏi";
|
|
123
129
|
readonly 'admin.questionBank.dialog.delete.warning': "Hành động này không thể hoàn tác.";
|
|
@@ -1387,9 +1393,6 @@ declare const admin: {
|
|
|
1387
1393
|
readonly 'admin.exams.shuffle.info3': "Các câu hỏi trong cùng 1 Part được xáo trộn ngẫu nhiên";
|
|
1388
1394
|
readonly 'admin.exams.shuffle.info4': "Các đề thi con được liên kết với đề thi cha để quản lý";
|
|
1389
1395
|
readonly 'admin.exams.shuffle.countLabel': "Số lượng đề thi con muốn tạo";
|
|
1390
|
-
readonly 'admin.exams.shuffle.strategyLabel': "Lựa chọn xử lý đề thi cũ";
|
|
1391
|
-
readonly 'admin.exams.shuffle.keepOld': "Giữ lại các đề thi cũ và thêm đề mới";
|
|
1392
|
-
readonly 'admin.exams.shuffle.replaceAll': "Tạo bộ đề mới hoàn toàn";
|
|
1393
1396
|
readonly 'admin.exams.shuffle.existingVariants': "Đề thi đã có ({count})";
|
|
1394
1397
|
readonly 'admin.exams.shuffle.deleteAll': "Xóa tất cả ({count})";
|
|
1395
1398
|
readonly 'admin.exams.shuffle.loading': "Đang tải...";
|
|
@@ -1480,21 +1483,25 @@ declare const admin: {
|
|
|
1480
1483
|
readonly 'admin.exams.preview.totalPoints': "Tổng điểm:";
|
|
1481
1484
|
readonly 'admin.exams.preview.progress': "Tiến độ";
|
|
1482
1485
|
readonly 'admin.exams.preview.loading': "Đang tải...";
|
|
1483
|
-
readonly 'admin.exams.preview.questionNavigation': "Điều hướng
|
|
1486
|
+
readonly 'admin.exams.preview.questionNavigation': "Điều hướng Part";
|
|
1484
1487
|
readonly 'admin.exams.preview.all': "Tất cả";
|
|
1485
1488
|
readonly 'admin.exams.preview.allQuestions': "Tất cả {count} câu hỏi";
|
|
1486
1489
|
readonly 'admin.exams.preview.partQuestions': "Part {part}: {count} câu";
|
|
1487
1490
|
readonly 'admin.exams.preview.collapse': "Thu gọn";
|
|
1488
1491
|
readonly 'admin.exams.preview.detail': "Chi tiết";
|
|
1489
1492
|
readonly 'admin.exams.preview.questionIndex': "Câu hỏi {index} / {total}";
|
|
1493
|
+
readonly 'admin.exams.preview.partIndex': "Part {index} / {total}";
|
|
1490
1494
|
readonly 'admin.exams.preview.noQuestions': "Chưa có câu hỏi";
|
|
1491
1495
|
readonly 'admin.exams.preview.loadingQuestions': "Đang tải câu hỏi...";
|
|
1492
1496
|
readonly 'admin.exams.preview.retry': "Thử lại";
|
|
1493
1497
|
readonly 'admin.exams.preview.examNoQuestions': "Đề thi này chưa có câu hỏi nào.";
|
|
1494
1498
|
readonly 'admin.exams.preview.prevQuestion': "Câu trước";
|
|
1499
|
+
readonly 'admin.exams.preview.prevPart': "Part trước";
|
|
1495
1500
|
readonly 'admin.exams.preview.prev': "Trước";
|
|
1496
1501
|
readonly 'admin.exams.preview.nextQuestion': "Câu tiếp theo";
|
|
1502
|
+
readonly 'admin.exams.preview.nextPart': "Part tiếp theo";
|
|
1497
1503
|
readonly 'admin.exams.preview.next': "Tiếp";
|
|
1504
|
+
readonly 'admin.exams.preview.questionLabel': "Câu {number}";
|
|
1498
1505
|
readonly 'admin.exams.preview.footerNote': "Đây là chế độ xem trước để kiểm tra bố cục và nội dung đề thi.";
|
|
1499
1506
|
readonly 'admin.exams.preview.close': "Đóng";
|
|
1500
1507
|
readonly 'admin.exams.preview.loadError': "Không thể tải câu hỏi. Vui lòng thử lại.";
|