@digabi/exam-engine-core 19.8.0 → 19.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. package/dist/__tests__/AnsweringInstructions.test.js +11 -11
  2. package/dist/__tests__/AnsweringInstructions.test.js.map +1 -1
  3. package/dist/__tests__/examServerApi.js +2 -2
  4. package/dist/__tests__/examServerApi.js.map +1 -1
  5. package/dist/__tests__/renderAnnotations.test.js +18 -18
  6. package/dist/__tests__/results/AnnotationList.test.js +27 -27
  7. package/dist/__tests__/results/ResultsContext.test.js +37 -37
  8. package/dist/__tests__/results/ResultsContext.test.js.map +1 -1
  9. package/dist/__tests__/results/ResultsExamQuestionAutoScore.test.js +4 -4
  10. package/dist/__tests__/results/ResultsExamQuestionManualScore.test.js +19 -19
  11. package/dist/__tests__/testExamRendering.js +14 -15
  12. package/dist/__tests__/testExamRendering.js.map +1 -1
  13. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  14. package/dist/__tests__/validateAnswers.test.js +28 -25
  15. package/dist/__tests__/validateAnswers.test.js.map +1 -1
  16. package/dist/components/AnswerToolbar.d.ts +1 -1
  17. package/dist/components/AnswerToolbar.d.ts.map +1 -1
  18. package/dist/components/AnswerToolbar.js +2 -2
  19. package/dist/components/AnswerToolbar.js.map +1 -1
  20. package/dist/components/AnsweringInstructions.js +1 -1
  21. package/dist/components/AnsweringInstructions.js.map +1 -1
  22. package/dist/components/DocumentTitle.js +1 -1
  23. package/dist/components/DocumentTitle.js.map +1 -1
  24. package/dist/components/SectionElement.js +1 -1
  25. package/dist/components/SectionElement.js.map +1 -1
  26. package/dist/components/attachments/Attachments.js +1 -1
  27. package/dist/components/attachments/ExternalMaterial.js +1 -1
  28. package/dist/components/attachments/Question.js +1 -1
  29. package/dist/components/attachments/Question.js.map +1 -1
  30. package/dist/components/context/CommonExamContext.js +1 -1
  31. package/dist/components/context/ExamContext.js +1 -1
  32. package/dist/components/context/QuestionContext.js +1 -1
  33. package/dist/components/context/ResultsContext.js +7 -6
  34. package/dist/components/context/ResultsContext.js.map +1 -1
  35. package/dist/components/context/SectionContext.js +2 -2
  36. package/dist/components/context/SectionContext.js.map +1 -1
  37. package/dist/components/exam/ChoiceAnswer.js +6 -6
  38. package/dist/components/exam/ChoiceAnswer.js.map +1 -1
  39. package/dist/components/exam/DropdownAnswer.js +10 -10
  40. package/dist/components/exam/DropdownAnswer.js.map +1 -1
  41. package/dist/components/exam/Exam.d.ts +1 -0
  42. package/dist/components/exam/Exam.d.ts.map +1 -1
  43. package/dist/components/exam/Exam.js +69 -13
  44. package/dist/components/exam/Exam.js.map +1 -1
  45. package/dist/components/exam/ExternalMaterial.js +1 -1
  46. package/dist/components/exam/Hints.js +3 -3
  47. package/dist/components/exam/Hints.js.map +1 -1
  48. package/dist/components/exam/Question.d.ts +4 -0
  49. package/dist/components/exam/Question.d.ts.map +1 -1
  50. package/dist/components/exam/Question.js +42 -5
  51. package/dist/components/exam/Question.js.map +1 -1
  52. package/dist/components/exam/QuestionTitle.js +1 -1
  53. package/dist/components/exam/RichTextAnswer.d.ts +6 -1
  54. package/dist/components/exam/RichTextAnswer.d.ts.map +1 -1
  55. package/dist/components/exam/RichTextAnswer.js +14 -2
  56. package/dist/components/exam/RichTextAnswer.js.map +1 -1
  57. package/dist/components/exam/Section.js +2 -2
  58. package/dist/components/exam/Section.js.map +1 -1
  59. package/dist/components/exam/internal/ErrorIndicator.d.ts +1 -1
  60. package/dist/components/exam/internal/ErrorIndicator.d.ts.map +1 -1
  61. package/dist/components/exam/internal/ErrorIndicator.js +4 -4
  62. package/dist/components/exam/internal/ErrorIndicator.js.map +1 -1
  63. package/dist/components/exam/internal/ProgressBar.js +1 -1
  64. package/dist/components/exam/internal/ProgressBar.js.map +1 -1
  65. package/dist/components/exam/internal/TextAnswerInput.d.ts.map +1 -1
  66. package/dist/components/exam/internal/TextAnswerInput.js +14 -13
  67. package/dist/components/exam/internal/TextAnswerInput.js.map +1 -1
  68. package/dist/components/grading/AnswerCharacterCounter.d.ts +1 -1
  69. package/dist/components/grading/AnswerCharacterCounter.d.ts.map +1 -1
  70. package/dist/components/grading/AnswerCharacterCounter.js +3 -3
  71. package/dist/components/grading/AnswerCharacterCounter.js.map +1 -1
  72. package/dist/components/grading/GradingAnswer.js +9 -9
  73. package/dist/components/grading/GradingAnswer.js.map +1 -1
  74. package/dist/components/grading/GradingAnswerAnnotationList.d.ts +1 -1
  75. package/dist/components/grading/GradingAnswerAnnotationList.d.ts.map +1 -1
  76. package/dist/components/grading/GradingAnswerAnnotationList.js +2 -2
  77. package/dist/components/grading/GradingAnswerAnnotationList.js.map +1 -1
  78. package/dist/components/grading/editAnnotations.js +14 -14
  79. package/dist/components/grading/editAnnotations.js.map +1 -1
  80. package/dist/components/grading/largeImageDetector.js +2 -2
  81. package/dist/components/grading/largeImageDetector.js.map +1 -1
  82. package/dist/components/grading-instructions/GradingInstructions.d.ts.map +1 -1
  83. package/dist/components/grading-instructions/GradingInstructions.js +6 -3
  84. package/dist/components/grading-instructions/GradingInstructions.js.map +1 -1
  85. package/dist/components/grading-instructions/Question.js +1 -1
  86. package/dist/components/grading-instructions/QuestionTitle.js +1 -1
  87. package/dist/components/results/ChoiceAnswer.js +8 -7
  88. package/dist/components/results/ChoiceAnswer.js.map +1 -1
  89. package/dist/components/results/DropdownAnswer.js +5 -5
  90. package/dist/components/results/DropdownAnswer.js.map +1 -1
  91. package/dist/components/results/Question.js +3 -3
  92. package/dist/components/results/Question.js.map +1 -1
  93. package/dist/components/results/QuestionTitle.js +1 -1
  94. package/dist/components/results/Results.js +2 -2
  95. package/dist/components/results/Results.js.map +1 -1
  96. package/dist/components/results/Section.js +1 -1
  97. package/dist/components/results/Section.js.map +1 -1
  98. package/dist/components/results/SingleLineAnswer.d.ts +1 -1
  99. package/dist/components/results/SingleLineAnswer.d.ts.map +1 -1
  100. package/dist/components/results/SingleLineAnswer.js +1 -1
  101. package/dist/components/results/SingleLineAnswer.js.map +1 -1
  102. package/dist/components/results/internal/AnnotationList.js +2 -2
  103. package/dist/components/results/internal/AnnotationList.js.map +1 -1
  104. package/dist/components/results/internal/QuestionManualScore.js +3 -3
  105. package/dist/components/results/internal/QuestionScoresContainer.d.ts +1 -1
  106. package/dist/components/results/internal/QuestionScoresContainer.d.ts.map +1 -1
  107. package/dist/components/results/internal/QuestionScoresContainer.js +2 -2
  108. package/dist/components/results/internal/QuestionScoresContainer.js.map +1 -1
  109. package/dist/components/shared/AnnotationLists.d.ts +1 -1
  110. package/dist/components/shared/AnnotationLists.d.ts.map +1 -1
  111. package/dist/components/shared/AnnotationLists.js +1 -1
  112. package/dist/components/shared/AnnotationLists.js.map +1 -1
  113. package/dist/components/shared/AnswerIndicator.d.ts +11 -0
  114. package/dist/components/shared/AnswerIndicator.d.ts.map +1 -0
  115. package/dist/components/shared/AnswerIndicator.js +22 -0
  116. package/dist/components/shared/AnswerIndicator.js.map +1 -0
  117. package/dist/components/shared/AttachmentLink.js +1 -1
  118. package/dist/components/shared/AttachmentLink.js.map +1 -1
  119. package/dist/components/shared/AttachmentLinks.js +3 -3
  120. package/dist/components/shared/AttachmentLinks.js.map +1 -1
  121. package/dist/components/shared/ImageOverlay.js +3 -3
  122. package/dist/components/shared/ImageOverlay.js.map +1 -1
  123. package/dist/components/shared/Reference.js +1 -1
  124. package/dist/components/shared/References.js +1 -1
  125. package/dist/components/shared/References.js.map +1 -1
  126. package/dist/components/shared/Score.js +1 -1
  127. package/dist/components/shared/TableOfContents.d.ts +1 -0
  128. package/dist/components/shared/TableOfContents.d.ts.map +1 -1
  129. package/dist/components/shared/TableOfContents.js +83 -26
  130. package/dist/components/shared/TableOfContents.js.map +1 -1
  131. package/dist/components/shared/internal/ResponsiveMediaContainer.js +3 -3
  132. package/dist/components/shared/internal/ResponsiveMediaContainer.js.map +1 -1
  133. package/dist/components/shared/internal/RestrictedAudioPlayer.d.ts +1 -1
  134. package/dist/components/shared/internal/RestrictedAudioPlayer.d.ts.map +1 -1
  135. package/dist/components/shared/internal/RestrictedAudioPlayer.js +2 -2
  136. package/dist/components/shared/internal/RestrictedAudioPlayer.js.map +1 -1
  137. package/dist/dom-utils.js +1 -1
  138. package/dist/dom-utils.js.map +1 -1
  139. package/dist/fonts.js +1 -1
  140. package/dist/fonts.js.map +1 -1
  141. package/dist/i18n/A_E.js +2 -2
  142. package/dist/i18n/BA.js +1 -1
  143. package/dist/i18n/CA.js +1 -1
  144. package/dist/i18n/EA.js +2 -2
  145. package/dist/i18n/FA.js +2 -2
  146. package/dist/i18n/GC.js +2 -2
  147. package/dist/i18n/I.js +3 -3
  148. package/dist/i18n/M.js +1 -1
  149. package/dist/i18n/O_E.js +2 -2
  150. package/dist/i18n/PA.js +2 -2
  151. package/dist/i18n/SA.js +2 -2
  152. package/dist/i18n/TC.js +2 -2
  153. package/dist/i18n/VA.js +2 -2
  154. package/dist/i18n/Z.js +3 -3
  155. package/dist/i18n/fi-FI.d.ts +3 -0
  156. package/dist/i18n/fi-FI.d.ts.map +1 -1
  157. package/dist/i18n/fi-FI.js +17 -14
  158. package/dist/i18n/fi-FI.js.map +1 -1
  159. package/dist/i18n/index.d.ts +2 -137
  160. package/dist/i18n/index.d.ts.map +1 -1
  161. package/dist/i18n/index.js +8 -8
  162. package/dist/i18n/index.js.map +1 -1
  163. package/dist/i18n/sv-FI.d.ts.map +1 -1
  164. package/dist/i18n/sv-FI.js +18 -14
  165. package/dist/i18n/sv-FI.js.map +1 -1
  166. package/dist/main-bundle.js +1 -1
  167. package/dist/main-bundle.js.LICENSE.txt +0 -5
  168. package/dist/main.css +1 -1
  169. package/dist/parser/parseExam.js +5 -5
  170. package/dist/parser/parseExam.js.map +1 -1
  171. package/dist/parser/parseExamStructure.js +4 -4
  172. package/dist/renderAnnotations.js +8 -8
  173. package/dist/renderAnnotations.js.map +1 -1
  174. package/dist/store/answers/reducer.js +2 -2
  175. package/dist/store/audio/reducer.js +3 -3
  176. package/dist/store/audio/sagas.js +1 -1
  177. package/dist/store/audio/sagas.js.map +1 -1
  178. package/dist/store/cas/reducer.js +1 -1
  179. package/dist/store/cas/sagas.js +1 -1
  180. package/dist/store/countdown.js +1 -1
  181. package/dist/store/countdown.js.map +1 -1
  182. package/dist/store/index.js +4 -4
  183. package/dist/validateAnswers.d.ts +1 -0
  184. package/dist/validateAnswers.d.ts.map +1 -1
  185. package/dist/validateAnswers.js +8 -7
  186. package/dist/validateAnswers.js.map +1 -1
  187. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"file":"Exam.d.ts","sourceRoot":"","sources":["../../../src/components/exam/Exam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AA6CvG,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,mBAAmB;IACnB,GAAG,EAAE,WAAW,CAAA;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,uDAAuD;AACvD,MAAM,WAAW,SAAU,SAAQ,eAAe;IAChD,2CAA2C;IAC3C,SAAS,EAAE,gBAAgB,CAAA;IAC3B,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;OAGG;IACH,4BAA4B,EAAE,4BAA4B,EAAE,CAAA;IAC5D,qCAAqC;IACrC,aAAa,EAAE,aAAa,CAAA;CAC7B;;AA4FD,wBAAuE"}
1
+ {"version":3,"file":"Exam.d.ts","sourceRoot":"","sources":["../../../src/components/exam/Exam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AA+CvG,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,mBAAmB;IACnB,GAAG,EAAE,WAAW,CAAA;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,uDAAuD;AACvD,MAAM,WAAW,SAAU,SAAQ,eAAe;IAChD,2CAA2C;IAC3C,SAAS,EAAE,gBAAgB,CAAA;IAC3B,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;OAGG;IACH,4BAA4B,EAAE,4BAA4B,EAAE,CAAA;IAC5D,qCAAqC;IACrC,aAAa,EAAE,aAAa,CAAA;IAC5B,IAAI,EAAE,QAAQ,GAAG,mBAAmB,GAAG,kBAAkB,CAAA;CAC1D;;AAmLD,wBAAuE"}
@@ -1,4 +1,4 @@
1
- import React, { useContext, useEffect } from 'react';
1
+ import React, { createRef, useContext, useEffect } from 'react';
2
2
  import { I18nextProvider } from 'react-i18next';
3
3
  import { Provider } from 'react-redux';
4
4
  import { createRenderChildNodes } from '../../createRenderChildNodes';
@@ -44,6 +44,8 @@ import Video from '../shared/Video';
44
44
  import RenderChildNodes from '../RenderChildNodes';
45
45
  import { QuestionNumber } from '../shared/QuestionNumber';
46
46
  import ExamTranslation from '../shared/ExamTranslation';
47
+ import * as _ from 'lodash-es';
48
+ import classNames from 'classnames';
47
49
  const renderChildNodes = createRenderChildNodes({
48
50
  attachment: ExamAttachment,
49
51
  'attachment-link': mkAttachmentLink('link'),
@@ -73,33 +75,87 @@ const renderChildNodes = createRenderChildNodes({
73
75
  'section-title': SectionTitle,
74
76
  'text-answer': TextAnswer,
75
77
  video: Video,
76
- 'image-overlay': ImageOverlay,
78
+ 'image-overlay': ImageOverlay
77
79
  });
78
- const Exam = ({ doc, casStatus, answers, restrictedAudioPlaybackStats, examServerApi, }) => {
80
+ const Exam = ({ doc, casStatus, answers, restrictedAudioPlaybackStats, examServerApi, type }) => {
79
81
  const { date, dateTimeFormatter, dayCode, examCode, language, resolveAttachment, root, subjectLanguage } = useContext(CommonExamContext);
80
82
  const examTitle = findChildElement(root, 'exam-title');
81
83
  const examInstruction = findChildElement(root, 'exam-instruction');
82
84
  const tableOfContents = findChildElement(root, 'table-of-contents');
83
85
  const externalMaterial = findChildElement(root, 'external-material');
84
86
  const examStylesheet = root.getAttribute('exam-stylesheet');
87
+ const examRef = createRef();
85
88
  const store = useCached(() => initializeExamStore(parseExamStructure(doc), casStatus, answers, restrictedAudioPlaybackStats, examServerApi));
86
- const TableOfContents = useCached(() => mkTableOfContents({ showAttachmentLinks: true, showAnsweringInstructions: true }));
89
+ const TableOfContentsSidebar = useCached(() => mkTableOfContents({
90
+ showAttachmentLinks: true,
91
+ showAnsweringInstructions: true,
92
+ isInSidebar: true
93
+ }));
94
+ const TableOfContents = useCached(() => mkTableOfContents({
95
+ showAttachmentLinks: true,
96
+ showAnsweringInstructions: true,
97
+ isInSidebar: false
98
+ }));
87
99
  const i18n = useCached(() => initI18n(language, examCode, dayCode));
88
100
  useEffect(changeLanguage(i18n, language));
89
101
  useEffect(scrollToHash, []);
102
+ const isInViewport = (element) => {
103
+ const rect = element.getBoundingClientRect();
104
+ return rect.top >= 100 && rect.bottom <= window.innerHeight - 100;
105
+ };
106
+ const handleExamScroll = () => {
107
+ const scrollY = window.scrollY;
108
+ const sections = document.querySelectorAll('.e-exam-question.e-level-0');
109
+ const sideNavigation = document.querySelector(`.sidebar-toc-container`);
110
+ const lis = document.querySelectorAll(`.sidebar-toc-container li[data-list-number]`);
111
+ lis.forEach(i => i.classList.remove('current'));
112
+ // Find the section currently in view
113
+ sections.forEach(section => {
114
+ var _a;
115
+ const sectionTop = section.getBoundingClientRect().top + scrollY;
116
+ const sectionBottom = section.getBoundingClientRect().bottom + scrollY;
117
+ const sectionBeginsInView = sectionTop < scrollY + window.innerHeight && sectionTop > scrollY;
118
+ const sectionEndsInView = sectionBottom < scrollY + window.innerHeight && sectionBottom > scrollY;
119
+ const sectionFillsView = sectionTop < scrollY && sectionBottom > scrollY + window.innerHeight;
120
+ const sectionId = ((_a = section.querySelector('.anchor')) === null || _a === void 0 ? void 0 : _a.id) || '';
121
+ const sectionNumber = sectionId.replace('question-nr-', '');
122
+ if (sectionBeginsInView || sectionEndsInView || sectionFillsView) {
123
+ const currentNavTitle = document.querySelector(`.table-of-contents li[data-list-number="${sectionNumber}."]`);
124
+ if (currentNavTitle) {
125
+ currentNavTitle.classList.add('current');
126
+ const isVisible = isInViewport(currentNavTitle);
127
+ if (!isVisible && sideNavigation) {
128
+ const navHeight = sideNavigation.getBoundingClientRect().height;
129
+ const scrollToPos = currentNavTitle.offsetTop - navHeight / 2;
130
+ sideNavigation.scrollTo({ behavior: 'smooth', top: scrollToPos });
131
+ }
132
+ }
133
+ }
134
+ });
135
+ };
136
+ const throttledScroll = _.throttle(handleExamScroll, 100, { trailing: false });
137
+ const visuallyImpaired = type === 'visually-impaired';
138
+ window.addEventListener('scroll', throttledScroll);
90
139
  return (React.createElement(Provider, { store: store },
91
140
  React.createElement(I18nextProvider, { i18n: i18n },
92
- React.createElement("main", { className: "e-exam", lang: subjectLanguage, "aria-labelledby": examTitleId },
141
+ React.createElement("main", { className: "e-exam", lang: subjectLanguage, "aria-labelledby": examTitleId, ref: examRef },
93
142
  React.createElement(React.StrictMode, null),
94
143
  examStylesheet && React.createElement("link", { rel: "stylesheet", href: resolveAttachment(examStylesheet) }),
95
- React.createElement(SectionElement, { "aria-labelledby": examTitleId },
96
- examTitle && React.createElement(DocumentTitle, { id: examTitleId }, renderChildNodes(examTitle)),
97
- date && (React.createElement("p", null,
98
- React.createElement("strong", null, dateTimeFormatter.format(date)))),
99
- examInstruction && React.createElement(ExamInstruction, { element: examInstruction, renderChildNodes }),
100
- tableOfContents && React.createElement(TableOfContents, { element: tableOfContents, renderChildNodes }),
101
- externalMaterial && (React.createElement(ExternalMaterial, { element: externalMaterial, renderChildNodes, forceRender: true }))),
102
- renderChildNodes(root),
144
+ React.createElement("div", { className: "e-toc-and-exam" },
145
+ tableOfContents && !visuallyImpaired && (React.createElement("div", { className: "sidebar-toc-container" },
146
+ React.createElement(TableOfContentsSidebar, { element: tableOfContents, renderChildNodes }))),
147
+ React.createElement("div", { className: "main-exam-container" /*onScroll={throttledScroll}*/ },
148
+ React.createElement("div", { className: classNames('main-exam', { center: visuallyImpaired }) },
149
+ React.createElement(SectionElement, { "aria-labelledby": examTitleId },
150
+ examTitle && React.createElement(DocumentTitle, { id: examTitleId }, renderChildNodes(examTitle)),
151
+ date && (React.createElement("p", null,
152
+ React.createElement("strong", null, dateTimeFormatter.format(date)))),
153
+ examInstruction && React.createElement(ExamInstruction, { element: examInstruction, renderChildNodes }),
154
+ tableOfContents && (React.createElement("div", { className: "main-toc-container" },
155
+ React.createElement(TableOfContents, { element: tableOfContents,
156
+ renderChildNodes }))),
157
+ externalMaterial && (React.createElement(ExternalMaterial, { element: externalMaterial, renderChildNodes, forceRender: true }))),
158
+ renderChildNodes(root)))),
103
159
  React.createElement("div", { className: "e-footer" },
104
160
  React.createElement(ErrorIndicator, null),
105
161
  React.createElement(SaveIndicator, null))))));
@@ -1 +1 @@
1
- {"version":3,"file":"Exam.js","sourceRoot":"","sources":["../../../src/components/exam/Exam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AACvD,OAAO,iBAAiB,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,MAAM,iBAAiB,CAAA;AACnC,OAAO,UAAU,MAAM,sBAAsB,CAAA;AAC7C,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,aAAa,MAAM,kBAAkB,CAAA;AAC5C,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAC7C,OAAO,cAAc,MAAM,2BAA2B,CAAA;AACtD,OAAO,cAAc,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AACvD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,IAAI,MAAM,gBAAgB,CAAA;AACjC,OAAO,OAAO,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,KAAK,MAAM,iBAAiB,CAAA;AACnC,OAAO,YAAY,MAAM,wBAAwB,CAAA;AACjD,OAAO,UAAU,MAAM,sBAAsB,CAAA;AAC7C,OAAO,aAAa,MAAM,0BAA0B,CAAA;AACpD,OAAO,cAAc,MAAM,mBAAmB,CAAA;AAC9C,OAAO,kBAAkB,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,iBAAiB,CAAA;AACnC,OAAO,gBAAgB,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,eAAe,MAAM,2BAA2B,CAAA;AA+BvD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;IAC9C,UAAU,EAAE,cAAc;IAC1B,iBAAiB,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAC3C,kBAAkB,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,gBAAgB;IAC/B,aAAa,EAAE,UAAU;IACzB,YAAY,EAAE,SAAS;IACvB,eAAe,EAAE,YAAY;IAC7B,iBAAiB,EAAE,cAAc;IACjC,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,gBAAgB;IACrC,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,iBAAiB,EAAE,cAAc;IACjC,WAAW,EAAE,eAAe;IAC5B,sBAAsB,EAAE,mBAAmB;IAC3C,gBAAgB,EAAE,aAAa;IAC/B,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,UAAU;IACtB,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,KAAK;IAC5B,qBAAqB,EAAE,kBAAkB;IACzC,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,YAAY;IAC7B,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,YAAY;CAC9B,CAAC,CAAA;AAEF,MAAM,IAAI,GAAuC,CAAC,EAChD,GAAG,EACH,SAAS,EACT,OAAO,EACP,4BAA4B,EAC5B,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,EAAE,GACtG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAE/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACtD,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;IAClE,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IACnE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IACpE,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;IAE3D,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,CAC3B,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,4BAA4B,EAAE,aAAa,CAAC,CAC9G,CAAA;IACD,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,EAAE,CACrC,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAClF,CAAA;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IACnE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEzC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAE3B,OAAO,CACL,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;QACpB,oBAAC,eAAe,IAAC,IAAI,EAAE,IAAI;YACzB,8BAAM,SAAS,EAAC,QAAQ,EAAC,IAAI,EAAE,eAAe,qBAAmB,WAAW;gBAC1E,oBAAC,KAAK,CAAC,UAAU,OAAG;gBACnB,cAAc,IAAI,8BAAM,GAAG,EAAC,YAAY,EAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAI;gBACrF,oBAAC,cAAc,uBAAkB,WAAW;oBACzC,SAAS,IAAI,oBAAC,aAAa,IAAC,EAAE,EAAE,WAAW,IAAG,gBAAgB,CAAC,SAAS,CAAC,CAAiB;oBAC1F,IAAI,IAAI,CACP;wBACE,oCAAS,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAU,CAC/C,CACL;oBACA,eAAe,IAAI,oBAAC,eAAe,IAAO,OAAO,EAAE,eAAe,EAAE,gBAAgB,GAAM;oBAC1F,eAAe,IAAI,oBAAC,eAAe,IAAO,OAAO,EAAE,eAAe,EAAE,gBAAgB,GAAM;oBAC1F,gBAAgB,IAAI,CACnB,oBAAC,gBAAgB,IAAO,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,GAAM,CAC7F,CACc;gBAChB,gBAAgB,CAAC,IAAI,CAAC;gBACvB,6BAAK,SAAS,EAAC,UAAU;oBACvB,oBAAC,cAAc,OAAG;oBAClB,oBAAC,aAAa,OAAG,CACb,CACD,CACS,CACT,CACZ,CAAA;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"Exam.js","sourceRoot":"","sources":["../../../src/components/exam/Exam.tsx"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { AttachmentContext, withAttachmentContext } from '../context/AttachmentC
8
8
  import { CommonExamContext } from '../context/CommonExamContext';
9
9
  const renderChildNodes = createRenderChildNodes({
10
10
  attachment: withAttachmentContext(Attachment),
11
- 'attachment-title': AttachmentTitle,
11
+ 'attachment-title': AttachmentTitle
12
12
  });
13
13
  function Attachment({ element }) {
14
14
  const { displayNumber } = useContext(AttachmentContext);
@@ -5,17 +5,17 @@ import { findChildElement, getNumericAttribute, queryAll } from '../../dom-utils
5
5
  import { shortDisplayNumber } from '../../shortDisplayNumber';
6
6
  const Hints = ({ element, renderChildNodes }) => {
7
7
  const focusedQuestionId = useSelector((state) => state.answers.focusedQuestionId);
8
- const answersWithHints = queryAll(element, ['text-answer', 'scored-text-answer']).filter((answer) => findChildElement(answer, 'hint') != null);
8
+ const answersWithHints = queryAll(element, ['text-answer', 'scored-text-answer']).filter(answer => findChildElement(answer, 'hint') != null);
9
9
  return answersWithHints.length > 0 ? (React.createElement("div", { className: "e-columns" },
10
10
  React.createElement("div", { className: "e-column e-column--8" }, renderChildNodes(element)),
11
11
  React.createElement("div", { className: "e-hints e-column e-column--4", "aria-hidden": "true" }, answersWithHints.map((answer, i) => (React.createElement(Hint, { answer, focusedQuestionId, renderChildNodes, key: i })))))) : (React.createElement(React.Fragment, null, renderChildNodes(element)));
12
12
  };
13
- function Hint({ answer, focusedQuestionId, renderChildNodes, }) {
13
+ function Hint({ answer, focusedQuestionId, renderChildNodes }) {
14
14
  const questionId = getNumericAttribute(answer, 'question-id');
15
15
  const displayNumber = answer.getAttribute('display-number');
16
16
  const hint = findChildElement(answer, 'hint');
17
17
  return (React.createElement("p", { className: classNames('e-hints__hint', {
18
- 'e-hints__hint--focused': focusedQuestionId === questionId,
18
+ 'e-hints__hint--focused': focusedQuestionId === questionId
19
19
  }), onClick: () => {
20
20
  const question = document.querySelector(`.text-answer[data-question-id="${questionId}"]`);
21
21
  if (question) {
@@ -1 +1 @@
1
- {"version":3,"file":"Hints.js","sourceRoot":"","sources":["../../../src/components/exam/Hints.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAI7D,MAAM,KAAK,GAAgD,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE;IAC3F,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,KAAgC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC5G,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CACtF,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CACrD,CAAA;IAED,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACnC,6BAAK,SAAS,EAAC,WAAW;QACxB,6BAAK,SAAS,EAAC,sBAAsB,IAAE,gBAAgB,CAAC,OAAO,CAAC,CAAO;QAIvE,6BAAK,SAAS,EAAC,8BAA8B,iBAAa,MAAM,IAC7D,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CACnC,oBAAC,IAAI,IAAO,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAI,GAAG,EAAE,CAAC,GAAI,CACtE,CAAC,CACE,CACF,CACP,CAAC,CAAC,CAAC,CACF,0CAAG,gBAAgB,CAAC,OAAO,CAAC,CAAI,CACjC,CAAA;AACH,CAAC,CAAA;AAED,SAAS,IAAI,CAAC,EACZ,MAAM,EACN,iBAAiB,EACjB,gBAAgB,GAKjB;IACC,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAE,CAAA;IAC9D,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAE,CAAA;IAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAE,CAAA;IAE9C,OAAO,CACL,2BACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE;YACrC,wBAAwB,EAAE,iBAAiB,KAAK,UAAU;SAC3D,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAc,kCAAkC,UAAU,IAAI,CAAC,CAAA;YACtG,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,KAAK,EAAE,CAAA;aACjB;QACH,CAAC,sBACiB,UAAU;QAE3B,kBAAkB,CAAC,aAAa,CAAC;;QAAG,gBAAgB,CAAC,IAAI,CAAC,CACzD,CACL,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAA"}
1
+ {"version":3,"file":"Hints.js","sourceRoot":"","sources":["../../../src/components/exam/Hints.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAI7D,MAAM,KAAK,GAAgD,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE;IAC3F,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,KAAgC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC5G,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CACtF,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CACnD,CAAA;IAED,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACnC,6BAAK,SAAS,EAAC,WAAW;QACxB,6BAAK,SAAS,EAAC,sBAAsB,IAAE,gBAAgB,CAAC,OAAO,CAAC,CAAO;QAIvE,6BAAK,SAAS,EAAC,8BAA8B,iBAAa,MAAM,IAC7D,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CACnC,oBAAC,IAAI,IAAO,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAI,GAAG,EAAE,CAAC,GAAI,CACtE,CAAC,CACE,CACF,CACP,CAAC,CAAC,CAAC,CACF,0CAAG,gBAAgB,CAAC,OAAO,CAAC,CAAI,CACjC,CAAA;AACH,CAAC,CAAA;AAED,SAAS,IAAI,CAAC,EACZ,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAKjB;IACC,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAE,CAAA;IAC9D,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAE,CAAA;IAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAE,CAAA;IAE9C,OAAO,CACL,2BACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE;YACrC,wBAAwB,EAAE,iBAAiB,KAAK,UAAU;SAC3D,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAc,kCAAkC,UAAU,IAAI,CAAC,CAAA;YACtG,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,KAAK,EAAE,CAAA;aACjB;QACH,CAAC,sBACiB,UAAU;QAE3B,kBAAkB,CAAC,aAAa,CAAC;;QAAG,gBAAgB,CAAC,IAAI,CAAC,CACzD,CACL,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAA"}
@@ -1,4 +1,8 @@
1
1
  import React from 'react';
2
+ export declare const ExpandQuestionContext: React.Context<{
3
+ expanded: boolean;
4
+ toggleWriterMode: (s: boolean) => void;
5
+ }>;
2
6
  declare const _default: React.MemoExoticComponent<React.ComponentType<any>>;
3
7
  export default _default;
4
8
  //# sourceMappingURL=Question.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Question.d.ts","sourceRoot":"","sources":["../../../src/components/exam/Question.tsx"],"names":[],"mappings":"AACA,OAAO,KAAqB,MAAM,OAAO,CAAA;;AAyBzC,wBAAwD"}
1
+ {"version":3,"file":"Question.d.ts","sourceRoot":"","sources":["../../../src/components/exam/Question.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyD,MAAM,OAAO,CAAA;AAU7E,eAAO,MAAM,qBAAqB;cACtB,OAAO;0BACK,OAAO,KAAK,IAAI;EACkB,CAAA;;AA8D1D,wBAAwD"}
@@ -1,16 +1,53 @@
1
1
  import classNames from 'classnames';
2
- import React, { useContext } from 'react';
2
+ import React, { createContext, useContext, useEffect, useState } from 'react';
3
3
  import { useSelector } from 'react-redux';
4
4
  import { QuestionContext, withQuestionContext } from '../context/QuestionContext';
5
5
  import { SectionContext } from '../context/SectionContext';
6
+ import { faCompressAlt } from '@fortawesome/free-solid-svg-icons';
7
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
8
+ import { useExamTranslation } from '../../i18n';
9
+ export const ExpandQuestionContext = createContext({ expanded: false, toggleWriterMode: () => undefined });
6
10
  function Question({ element, renderChildNodes }) {
7
11
  const casStatus = useSelector((state) => state.cas.casStatus);
8
12
  const { casForbidden } = useContext(SectionContext);
9
13
  const { displayNumber, level } = useContext(QuestionContext);
10
- return !casForbidden || casStatus === 'forbidden' ? (React.createElement("div", { className: classNames('exam-question', {
11
- 'e-mrg-b-8 e-clearfix': level === 0,
12
- 'e-mrg-l-8 e-mrg-y-4': level > 0,
13
- }), id: displayNumber }, renderChildNodes(element))) : null;
14
+ const [expanded, setExpanded] = useState(false);
15
+ const { t } = useExamTranslation();
16
+ const toggleWriterMode = (expand) => {
17
+ setExpanded(expand);
18
+ const body = document.querySelector('body');
19
+ if (expand) {
20
+ body === null || body === void 0 ? void 0 : body.classList.add('writer-mode');
21
+ }
22
+ else {
23
+ body === null || body === void 0 ? void 0 : body.classList.remove('writer-mode');
24
+ body === null || body === void 0 ? void 0 : body.classList.remove('rich-text-editor-focus');
25
+ setTimeout(() => { var _a; return (_a = document.getElementById(`question-nr-${displayNumber}`)) === null || _a === void 0 ? void 0 : _a.scrollIntoView(); }, 10);
26
+ }
27
+ };
28
+ const handleEsc = (e) => {
29
+ if (e.key === 'Escape' || e.code === 'Escape') {
30
+ toggleWriterMode(false);
31
+ }
32
+ };
33
+ useEffect(() => {
34
+ if (expanded) {
35
+ window.addEventListener('keydown', handleEsc);
36
+ }
37
+ return () => window.removeEventListener('keydown', handleEsc);
38
+ }, [expanded]);
39
+ return !casForbidden || casStatus === 'forbidden' ? (React.createElement(ExpandQuestionContext.Provider, { value: { expanded, toggleWriterMode } },
40
+ React.createElement("div", { className: classNames('e-exam-question', {
41
+ 'e-level-0 e-pad-b-8 e-clearfix': level === 0,
42
+ 'e-mrg-l-8': level > 0,
43
+ 'e-expanded': expanded
44
+ }) },
45
+ React.createElement("div", { className: "anchor", id: `question-nr-${displayNumber}` }),
46
+ expanded ? (React.createElement("div", { className: "full-screen", "data-full-screen-id": displayNumber },
47
+ React.createElement("button", { className: "expand close", onClick: () => toggleWriterMode(false) },
48
+ React.createElement(FontAwesomeIcon, { icon: faCompressAlt }),
49
+ t('close-writing-mode')),
50
+ renderChildNodes(element))) : (renderChildNodes(element))))) : null;
14
51
  }
15
52
  export default React.memo(withQuestionContext(Question));
16
53
  //# sourceMappingURL=Question.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../../src/components/exam/Question.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,SAAS,QAAQ,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAsB;IACjE,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,KAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChF,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IACnD,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,eAAe,CAAC,CAAA;IAE5D,OAAO,CAAC,YAAY,IAAI,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAClD,6BACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE;YACrC,sBAAsB,EAAE,KAAK,KAAK,CAAC;YACnC,qBAAqB,EAAE,KAAK,GAAG,CAAC;SACjC,CAAC,EACF,EAAE,EAAE,aAAa,IAEhB,gBAAgB,CAAC,OAAO,CAAC,CACtB,CACP,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../../src/components/exam/Question.tsx"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ const QuestionTitle = ({ element, renderChildNodes }) => {
13
13
  return (React.createElement(React.Fragment, null,
14
14
  React.createElement(Tag, { id: id, className: classNames('exam-question-title', { 'e-normal e-font-size-m': level > 0 }) },
15
15
  React.createElement("strong", { className: classNames('exam-question-title__display-number', {
16
- 'exam-question-title__display-number--indented': level > 0,
16
+ 'exam-question-title__display-number--indented': level > 0
17
17
  }) }, `${formatQuestionDisplayNumber(displayNumber)} `),
18
18
  renderChildNodes(element),
19
19
  " ",
@@ -6,6 +6,11 @@ export interface ScreenshotError {
6
6
  key: 'screenshot-too-big' | 'screenshot-byte-limit-reached' | 'screenshot-upload-failed';
7
7
  options?: TOptions;
8
8
  }
9
+ type ErrorResponse = {
10
+ response: {
11
+ status: number;
12
+ };
13
+ };
9
14
  interface Props {
10
15
  answer?: RichTextAnswerT;
11
16
  className?: string;
@@ -24,7 +29,7 @@ export default class RichTextAnswer extends React.PureComponent<Props> {
24
29
  private lastHTML;
25
30
  constructor(props: Props);
26
31
  componentDidMount(): void;
27
- handleSaveError: (err: unknown) => void;
32
+ handleSaveError: (err: ErrorResponse) => void;
28
33
  handleChange: (data: {
29
34
  answerHTML: string;
30
35
  answerText: string;
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextAnswer.d.ts","sourceRoot":"","sources":["../../../src/components/exam/RichTextAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,oBAAoB,GAAG,+BAA+B,GAAG,0BAA0B,CAAA;IACxF,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IACzC,cAAc,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACrD,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;IACpE,MAAM,CAAC,WAAW,mCAAoB;IAC9B,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAiC;IAC5C,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,KAAK,EAAE,KAAK;IAMxB,iBAAiB,IAAI,IAAI;IAwBzB,eAAe,QAAS,OAAO,KAAG,IAAI,CAarC;IAED,YAAY,SAAU;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAG,IAAI,CAKtE;IAED,kBAAkB,IAAI,IAAI;IAS1B,MAAM,IAAI,KAAK,CAAC,SAAS;CAiB1B"}
1
+ {"version":3,"file":"RichTextAnswer.d.ts","sourceRoot":"","sources":["../../../src/components/exam/RichTextAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAOhE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,oBAAoB,GAAG,+BAA+B,GAAG,0BAA0B,CAAA;IACxF,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAErD,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IACzC,cAAc,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACrD,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;IACpE,MAAM,CAAC,WAAW,mCAAoB;IAC9B,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAiC;IAC5C,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,KAAK,EAAE,KAAK;IAMxB,iBAAiB,IAAI,IAAI;IAwBzB,eAAe,QAAS,aAAa,KAAG,IAAI,CAa3C;IAED,YAAY,SAAU;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAG,IAAI,CAKtE;IAED,kBAAkB,IAAI,IAAI;IAS1B,MAAM,IAAI,KAAK,CAAC,SAAS;CAkC1B"}
@@ -2,6 +2,10 @@ import * as _ from 'lodash-es';
2
2
  import React from 'react';
3
3
  import { CommonExamContext } from '../context/CommonExamContext';
4
4
  import { makeRichText } from 'rich-text-editor';
5
+ import { ExpandQuestionContext } from './Question';
6
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
+ import { faExpandAlt } from '@fortawesome/free-solid-svg-icons';
8
+ import { useExamTranslation } from '../../i18n';
5
9
  class RichTextAnswer extends React.PureComponent {
6
10
  constructor(props) {
7
11
  super(props);
@@ -38,7 +42,7 @@ class RichTextAnswer extends React.PureComponent {
38
42
  screenshotSaver: ({ data, type }) => saveScreenshot(data instanceof Blob ? data : new Blob([data], { type })).catch((err) => {
39
43
  this.handleSaveError(err);
40
44
  throw err; // Rethrow error so rich-text-editor can handle it.
41
- }),
45
+ })
42
46
  }, this.handleChange);
43
47
  }
44
48
  }
@@ -51,9 +55,17 @@ class RichTextAnswer extends React.PureComponent {
51
55
  }
52
56
  render() {
53
57
  const { className, questionId, invalid, lang, labelledBy } = this.props;
54
- return (React.createElement("div", { ref: this.ref, className: className, "data-question-id": questionId, role: "textbox", "aria-multiline": "true", "aria-invalid": invalid, tabIndex: 0, lang: lang, "aria-labelledby": labelledBy }));
58
+ return (React.createElement(ExpandQuestionContext.Consumer, null, ({ expanded, toggleWriterMode }) => (React.createElement(React.Fragment, null,
59
+ React.createElement("div", { ref: this.ref, className: className, "data-question-id": questionId, role: "textbox", "aria-multiline": "true", "aria-invalid": invalid, tabIndex: 0, lang: lang, "aria-labelledby": labelledBy, id: String(questionId) }),
60
+ !expanded && (React.createElement("button", { className: "expand open", onClick: () => toggleWriterMode(true), "aria-labelledby": "expand-label", "aria-owns": String(questionId) },
61
+ React.createElement(ExpandButtonLabel, null),
62
+ React.createElement(FontAwesomeIcon, { icon: faExpandAlt })))))));
55
63
  }
56
64
  }
57
65
  RichTextAnswer.contextType = CommonExamContext;
58
66
  export default RichTextAnswer;
67
+ const ExpandButtonLabel = () => {
68
+ const { t } = useExamTranslation();
69
+ return (React.createElement("div", { className: "label", id: "expand-label" }, t('open-writing-mode')));
70
+ };
59
71
  //# sourceMappingURL=RichTextAnswer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextAnswer.js","sourceRoot":"","sources":["../../../src/components/exam/RichTextAnswer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RichTextAnswer.js","sourceRoot":"","sources":["../../../src/components/exam/RichTextAnswer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAqB/C,MAAqB,cAAe,SAAQ,KAAK,CAAC,aAAoB;IAMpE,YAAY,KAAY;QACtB,KAAK,CAAC,KAAK,CAAC,CAAA;QA6Bd,oBAAe,GAAG,CAAC,GAAkB,EAAQ,EAAE;YAC7C,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;gBAChB,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE;oBACrC,KAAK,GAAG;wBACN,OAAO,+BAA+B,CAAA;oBACxC,KAAK,GAAG;wBACN,OAAO,oBAAoB,CAAA;oBAC7B;wBACE,OAAO,0BAA0B,CAAA;iBACpC;YACH,CAAC,CAAC,EAAE,CAAA;YAEJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7B,CAAC,CAAA;QAED,iBAAY,GAAG,CAAC,IAAgD,EAAQ,EAAE;YACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;YAE/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAA;YAC/B,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5C,CAAC,CAAA;QAhDC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAClE,CAAC;IAED,iBAAiB;QACf,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAA;QAC5B,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAE7C,IAAI,OAAO,EAAE;YACX,IAAI,MAAM,EAAE;gBACV,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAA;aACjC;YAED,YAAY,CACV,OAAO,EACP;gBACE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAiB;gBACtE,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAkC,EAAE,EAAE,CAClE,cAAc,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAkB,EAAE,EAAE;oBACpG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;oBACzB,MAAM,GAAG,CAAA,CAAC,mDAAmD;gBAC/D,CAAC,CAAC;aACL,EACD,IAAI,CAAC,YAAY,CAClB,CAAA;SACF;IACH,CAAC;IAwBD,kBAAkB;QAChB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAA;QAE5B,gGAAgG;QAChG,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC7E,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAA;SAC5D;IACH,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACvE,OAAO,CACL,oBAAC,qBAAqB,CAAC,QAAQ,QAC5B,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CACnC;YACE,6BACE,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,SAAS,EAAE,SAAS,sBACF,UAAU,EAC5B,IAAI,EAAC,SAAS,oBACC,MAAM,kBACP,OAAO,EACrB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,IAAI,qBACO,UAAU,EAC3B,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,GACtB;YACD,CAAC,QAAQ,IAAI,CACZ,gCACE,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBACrB,cAAc,eACnB,MAAM,CAAC,UAAU,CAAC;gBAE7B,oBAAC,iBAAiB,OAAG;gBACrB,oBAAC,eAAe,IAAC,IAAI,EAAE,WAAW,GAAI,CAC/B,CACV,CACA,CACJ,CAC8B,CAClC,CAAA;IACH,CAAC;;AAnGM,0BAAW,GAAG,iBAAiB,AAApB,CAAoB;eADnB,cAAc;AAuGnC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC7B,MAAM,EAAE,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAClC,OAAO,CACL,6BAAK,SAAS,EAAC,OAAO,EAAC,EAAE,EAAC,cAAc,IACrC,CAAC,CAAC,mBAAmB,CAAC,CACnB,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -31,11 +31,11 @@ function CasControls(props) {
31
31
  return (React.createElement("div", { className: "e-cas-controls" }, props.casStatus === 'forbidden' ? (React.createElement("div", { className: "e-text-center" },
32
32
  React.createElement("hr", { className: "e-exam-separator" }),
33
33
  React.createElement("p", { id: "e-cas-controls-forbidden-description" }, t('cas.forbidden.infoText')),
34
- React.createElement("button", { className: "e-button", id: "allow-cas", onClick: () => dispatch(allowCas(casCountdownDuration)), "aria-describedby": "e-cas-controls-forbidden-description" }, t('cas.forbidden.buttonText')))) : props.casStatus === 'allowing' ? (React.createElement("div", { className: "e-text-center", ref: (e) => e != null && casCountdownDuration === props.durationRemaining && e.scrollIntoView() },
34
+ React.createElement("button", { className: "e-button", id: "allow-cas", onClick: () => dispatch(allowCas(casCountdownDuration)), "aria-describedby": "e-cas-controls-forbidden-description" }, t('cas.forbidden.buttonText')))) : props.casStatus === 'allowing' ? (React.createElement("div", { className: "e-text-center", ref: e => e != null && casCountdownDuration === props.durationRemaining && e.scrollIntoView() },
35
35
  React.createElement("hr", { className: "e-exam-separator" }),
36
36
  React.createElement("p", { id: "e-cas-controls-allowing-description" }, t('cas.allowing.infoText')),
37
37
  React.createElement(ProgressBar, { className: "e-mrg-b-2", duration: casCountdownDuration, durationRemaining: props.durationRemaining }),
38
- React.createElement("button", { className: "e-button", id: "allow-cas-cancelled", onClick: () => dispatch(allowCasCancelled()), ref: (e) => e != null && casCountdownDuration === props.durationRemaining && e.focus(), "aria-describedby": "e-cas-controls-allowing-description" }, t('cas.allowing.cancel', { count: props.durationRemaining })))) : (React.createElement("div", { className: "notification e-text-left e-mrg-b-0" }, t('cas.allowed.infoText')))));
38
+ React.createElement("button", { className: "e-button", id: "allow-cas-cancelled", onClick: () => dispatch(allowCasCancelled()), ref: e => e != null && casCountdownDuration === props.durationRemaining && e.focus(), "aria-describedby": "e-cas-controls-allowing-description" }, t('cas.allowing.cancel', { count: props.durationRemaining })))) : (React.createElement("div", { className: "notification e-text-left e-mrg-b-0" }, t('cas.allowed.infoText')))));
39
39
  }
40
40
  export default React.memo(withSectionContext(Section));
41
41
  //# sourceMappingURL=Section.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Section.js","sourceRoot":"","sources":["../../../src/components/exam/Section.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Section.js","sourceRoot":"","sources":["../../../src/components/exam/Section.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { ValidationError } from '../../../validateAnswers';
3
- export declare function ErrorIndicatorForErrors({ validationErrors, inExam, }: {
3
+ export declare function ErrorIndicatorForErrors({ validationErrors, inExam }: {
4
4
  validationErrors: ValidationError[];
5
5
  inExam: boolean;
6
6
  }): JSX.Element | null;
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorIndicator.d.ts","sourceRoot":"","sources":["../../../../src/components/exam/internal/ErrorIndicator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,OAAO,EAA8B,eAAe,EAAE,MAAM,0BAA0B,CAAA;AA2BtF,wBAAgB,uBAAuB,CAAC,EACtC,gBAAgB,EAChB,MAAM,GACP,EAAE;IACD,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,MAAM,EAAE,OAAO,CAAA;CAChB,sBAyBA;;AA2BD,wBAAyC"}
1
+ {"version":3,"file":"ErrorIndicator.d.ts","sourceRoot":"","sources":["../../../../src/components/exam/internal/ErrorIndicator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,OAAO,EAA8B,eAAe,EAAE,MAAM,0BAA0B,CAAA;AA2BtF,wBAAgB,uBAAuB,CAAC,EACtC,gBAAgB,EAChB,MAAM,EACP,EAAE;IACD,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,MAAM,EAAE,OAAO,CAAA;CAChB,sBAyBA;;AA2BD,wBAAyC"}
@@ -7,7 +7,7 @@ import { useExamTranslation } from '../../../i18n';
7
7
  import AnsweringInstructions from '../../AnsweringInstructions';
8
8
  import { CommonExamContext } from '../../context/CommonExamContext';
9
9
  import classNames from 'classnames';
10
- const ExtraAnswerError = (props) => {
10
+ const ExtraAnswerError = props => {
11
11
  const { t } = useExamTranslation();
12
12
  const { displayNumber, elementType } = props;
13
13
  return (React.createElement("div", null,
@@ -24,11 +24,11 @@ const AnswerTooLongError = ({ displayNumber, characterCount }) => {
24
24
  " ",
25
25
  t('answer-errors.answer-too-long', { count: characterCount })));
26
26
  };
27
- export function ErrorIndicatorForErrors({ validationErrors, inExam, }) {
27
+ export function ErrorIndicatorForErrors({ validationErrors, inExam }) {
28
28
  return validationErrors.length > 0 ? (React.createElement("div", { className: classNames({ 'error-indicator e-bg-color-error e-color-off-white': inExam }, 'e-columns e-columns--inline e-font-size-xs e-pad-1 e-mrg-r-1'), role: "alert" },
29
29
  React.createElement("div", { className: "e-column e-column--narrow" },
30
30
  React.createElement(FontAwesomeIcon, { size: "lg", icon: faExclamationTriangle, fixedWidth: true, className: "e-mrg-r-1" })),
31
- React.createElement("div", { className: "e-column e-column--gapless" }, validationErrors.map((validationError) => {
31
+ React.createElement("div", { className: "e-column e-column--gapless" }, validationErrors.map(validationError => {
32
32
  const key = validationError.type + validationError.displayNumber;
33
33
  switch (validationError.type) {
34
34
  case 'ExtraAnswer':
@@ -49,7 +49,7 @@ const FallbackTitle = ({ elementType, displayNumber }) => {
49
49
  // we can delete this code on some day. 💩
50
50
  if (elementType === 'section') {
51
51
  const { root } = useContext(CommonExamContext);
52
- const section = findChildElement(root, (e) => e.localName === 'section' && e.getAttribute('display-number') === displayNumber);
52
+ const section = findChildElement(root, e => e.localName === 'section' && e.getAttribute('display-number') === displayNumber);
53
53
  if (section) {
54
54
  const sectionTitle = findChildElement(section, 'section-title');
55
55
  if (sectionTitle) {
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorIndicator.js","sourceRoot":"","sources":["../../../../src/components/exam/internal/ErrorIndicator.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ErrorIndicator.js","sourceRoot":"","sources":["../../../../src/components/exam/internal/ErrorIndicator.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import classNames from 'classnames';
2
2
  import React, { useEffect, useRef, useState } from 'react';
3
- const ProgressBar = ({ duration, durationRemaining, className, }) => {
3
+ const ProgressBar = ({ duration, durationRemaining, className }) => {
4
4
  const progressBarRef = useRef(null);
5
5
  const [animating, setAnimating] = useState(false);
6
6
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../../src/components/exam/internal/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE1D,MAAM,WAAW,GAAiG,CAAC,EACjH,QAAQ,EACR,iBAAiB,EACjB,SAAS,GACV,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,wEAAwE;QACxE,yCAAyC;QACzC,cAAc,CAAC,OAAQ,CAAC,SAAS,CAAA;QACjC,YAAY,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,cAAc;QAC1E,6BACE,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,EAAE,iCAAiC,EAAE,SAAS,EAAE,CAAC,EAC/F,KAAK,EAAE,EAAE,kBAAkB,EAAE,GAAG,QAAQ,GAAG,EAAE,EAC7C,IAAI,EAAC,aAAa,mBACH,QAAQ,mBACR,CAAC,mBACD,QAAQ,GAAG,iBAAiB,GAC3C,CACE,CACP,CAAA;AACH,CAAC,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../../src/components/exam/internal/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE1D,MAAM,WAAW,GAAiG,CAAC,EACjH,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACV,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,wEAAwE;QACxE,yCAAyC;QACzC,cAAc,CAAC,OAAQ,CAAC,SAAS,CAAA;QACjC,YAAY,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,cAAc;QAC1E,6BACE,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,EAAE,iCAAiC,EAAE,SAAS,EAAE,CAAC,EAC/F,KAAK,EAAE,EAAE,kBAAkB,EAAE,GAAG,QAAQ,GAAG,EAAE,EAC7C,IAAI,EAAC,aAAa,mBACH,QAAQ,mBACR,CAAC,mBACD,QAAQ,GAAG,iBAAiB,GAC3C,CACE,CACP,CAAA;AACH,CAAC,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextAnswerInput.d.ts","sourceRoot":"","sources":["../../../../src/components/exam/internal/TextAnswerInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AA8MpE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;;AAED,wBAA0C"}
1
+ {"version":3,"file":"TextAnswerInput.d.ts","sourceRoot":"","sources":["../../../../src/components/exam/internal/TextAnswerInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAgNpE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;;AAED,wBAA0C"}
@@ -48,20 +48,20 @@ const TextAnswerInput = ({ element, className }) => {
48
48
  }
49
49
  }
50
50
  });
51
- const onChange = useCallback((event) => {
51
+ const onChange = useCallback(event => {
52
52
  const value = event.currentTarget.value.trim();
53
53
  const answer = {
54
54
  type: 'text',
55
55
  questionId,
56
56
  value,
57
57
  characterCount: getCharacterCount(value),
58
- displayNumber,
58
+ displayNumber
59
59
  };
60
60
  dispatch(saveAnswer(answer));
61
61
  setScreenshotError(undefined);
62
62
  }, [questionId, displayNumber]);
63
63
  const [integerValue, setIntegerValue] = useState('');
64
- const onIntegerChange = useCallback((event) => {
64
+ const onIntegerChange = useCallback(event => {
65
65
  event.preventDefault();
66
66
  event.currentTarget.classList.remove('text-answer--integer--input-error');
67
67
  const patternForIntegers = /^-?\d*$/;
@@ -73,7 +73,7 @@ const TextAnswerInput = ({ element, className }) => {
73
73
  questionId,
74
74
  value,
75
75
  characterCount: getCharacterCount(value),
76
- displayNumber,
76
+ displayNumber
77
77
  };
78
78
  dispatch(saveAnswer(answer));
79
79
  setScreenshotError(undefined);
@@ -91,7 +91,7 @@ const TextAnswerInput = ({ element, className }) => {
91
91
  questionId,
92
92
  value: answerHtml,
93
93
  characterCount: getCharacterCount(answerText),
94
- displayNumber,
94
+ displayNumber
95
95
  };
96
96
  dispatch(saveAnswer(answer));
97
97
  setScreenshotError(undefined);
@@ -104,14 +104,15 @@ const TextAnswerInput = ({ element, className }) => {
104
104
  case 'rich-text':
105
105
  return (React.createElement(React.Fragment, null,
106
106
  maxLength != null && React.createElement(AnswerLengthInfo, { maxLength, id: answerLengthInfoId(element) }),
107
- React.createElement(RichTextAnswer, { answer: answer, className: classNames('text-answer text-answer--rich-text', className), saveScreenshot: (data) => examServerApi.saveScreenshot(questionId, data), onChange: onRichTextChange, onError: onError, questionId: questionId, lang: lang, invalid: invalid, labelledBy: labelledBy }),
108
- React.createElement(AnswerToolbar, { answer,
109
- element,
110
- selectAnswerVersion: wrappedSelectAnswerVersion,
111
- showAnswerHistory,
112
- supportsAnswerHistory,
113
- screenshotError,
114
- validationError })));
107
+ React.createElement("div", { className: "text-answer-container" },
108
+ React.createElement(RichTextAnswer, { answer: answer, className: classNames('text-answer text-answer--rich-text', className), saveScreenshot: data => examServerApi.saveScreenshot(questionId, data), onChange: onRichTextChange, onError: onError, questionId: questionId, lang: lang, invalid: invalid, labelledBy: labelledBy }),
109
+ React.createElement(AnswerToolbar, { answer,
110
+ element,
111
+ selectAnswerVersion: wrappedSelectAnswerVersion,
112
+ showAnswerHistory,
113
+ supportsAnswerHistory,
114
+ screenshotError,
115
+ validationError }))));
115
116
  case 'integer':
116
117
  return (React.createElement("span", { className: "e-nowrap" },
117
118
  React.createElement("input", { type: "text", className: classNames('text-answer text-answer--single-line text-answer--integer', className), value: integerValue, onChange: onIntegerChange, onFocus: onFocus, onBlur: onBlur, ref: ref, "data-question-id": questionId, lang: lang, "aria-describedby": scoreId, "aria-labelledby": labelledBy }),