@digabi/exam-engine-core 23.13.1 → 23.13.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/__tests__/examServerApi.d.ts.map +1 -1
  2. package/dist/__tests__/examServerApi.js +2 -0
  3. package/dist/__tests__/examServerApi.js.map +1 -1
  4. package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts +2 -0
  5. package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts.map +1 -0
  6. package/dist/__tests__/playwright/exam/AudioAnswer.test.js +30 -0
  7. package/dist/__tests__/playwright/exam/AudioAnswer.test.js.map +1 -0
  8. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts +8 -0
  9. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts.map +1 -0
  10. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js +34 -0
  11. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js.map +1 -0
  12. package/dist/__tests__/results/ResultsContext.test.js +1 -1
  13. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  14. package/dist/components/context/AudioContext.d.ts +9 -0
  15. package/dist/components/context/AudioContext.d.ts.map +1 -0
  16. package/dist/components/context/AudioContext.js +9 -0
  17. package/dist/components/context/AudioContext.js.map +1 -0
  18. package/dist/components/context/QuestionContext.d.ts.map +1 -1
  19. package/dist/components/context/QuestionContext.js +1 -1
  20. package/dist/components/context/QuestionContext.js.map +1 -1
  21. package/dist/components/exam/AudioAnswer.d.ts +4 -0
  22. package/dist/components/exam/AudioAnswer.d.ts.map +1 -0
  23. package/dist/components/exam/AudioAnswer.js +39 -0
  24. package/dist/components/exam/AudioAnswer.js.map +1 -0
  25. package/dist/components/exam/Exam.d.ts.map +1 -1
  26. package/dist/components/exam/Exam.js +3 -1
  27. package/dist/components/exam/Exam.js.map +1 -1
  28. package/dist/components/exam/internal/AudioRecorder.d.ts +14 -0
  29. package/dist/components/exam/internal/AudioRecorder.d.ts.map +1 -0
  30. package/dist/components/exam/internal/AudioRecorder.js +126 -0
  31. package/dist/components/exam/internal/AudioRecorder.js.map +1 -0
  32. package/dist/components/exam/internal/MyAudioRecorder.d.ts +10 -0
  33. package/dist/components/exam/internal/MyAudioRecorder.d.ts.map +1 -0
  34. package/dist/components/exam/internal/MyAudioRecorder.js +106 -0
  35. package/dist/components/exam/internal/MyAudioRecorder.js.map +1 -0
  36. package/dist/components/exam/internal/MyMediaRecorder.d.ts +10 -0
  37. package/dist/components/exam/internal/MyMediaRecorder.d.ts.map +1 -0
  38. package/dist/components/exam/internal/MyMediaRecorder.js +91 -0
  39. package/dist/components/exam/internal/MyMediaRecorder.js.map +1 -0
  40. package/dist/components/grading/GradingAnswer.d.ts +2 -6
  41. package/dist/components/grading/GradingAnswer.d.ts.map +1 -1
  42. package/dist/components/grading/GradingAnswer.js +4 -3
  43. package/dist/components/grading/GradingAnswer.js.map +1 -1
  44. package/dist/components/results/AudioAnswer.d.ts +6 -0
  45. package/dist/components/results/AudioAnswer.d.ts.map +1 -0
  46. package/dist/components/results/AudioAnswer.js +33 -0
  47. package/dist/components/results/AudioAnswer.js.map +1 -0
  48. package/dist/components/results/Results.d.ts.map +1 -1
  49. package/dist/components/results/Results.js +3 -1
  50. package/dist/components/results/Results.js.map +1 -1
  51. package/dist/components/shared/Audio.js +2 -2
  52. package/dist/components/shared/Audio.js.map +1 -1
  53. package/dist/components/shared/AudioTest.js +2 -2
  54. package/dist/components/shared/AudioTest.js.map +1 -1
  55. package/dist/components/shared/internal/AudioError.d.ts +8 -0
  56. package/dist/components/shared/internal/AudioError.d.ts.map +1 -0
  57. package/dist/components/shared/internal/AudioError.js +17 -0
  58. package/dist/components/shared/internal/AudioError.js.map +1 -0
  59. package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts +8 -0
  60. package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts.map +1 -0
  61. package/dist/components/shared/internal/AudioErrorRemoveMe.js +17 -0
  62. package/dist/components/shared/internal/AudioErrorRemoveMe.js.map +1 -0
  63. package/dist/dom-utils.js +1 -1
  64. package/dist/dom-utils.js.map +1 -1
  65. package/dist/i18n/fi-FI.d.ts +5 -0
  66. package/dist/i18n/fi-FI.d.ts.map +1 -1
  67. package/dist/i18n/fi-FI.js +5 -0
  68. package/dist/i18n/fi-FI.js.map +1 -1
  69. package/dist/i18n/sv-FI.d.ts.map +1 -1
  70. package/dist/i18n/sv-FI.js +5 -0
  71. package/dist/i18n/sv-FI.js.map +1 -1
  72. package/dist/main-bundle.js +3 -3
  73. package/dist/main.css +1 -1
  74. package/dist/parser/parseExamStructure.d.ts +8 -1
  75. package/dist/parser/parseExamStructure.d.ts.map +1 -1
  76. package/dist/parser/parseExamStructure.js +1 -1
  77. package/dist/parser/parseExamStructure.js.map +1 -1
  78. package/dist/store/audio/actions.d.ts +3 -3
  79. package/dist/store/audio/actions.d.ts.map +1 -1
  80. package/dist/store/audio/actions.js.map +1 -1
  81. package/dist/store/audio/reducer.d.ts +2 -2
  82. package/dist/store/audio/reducer.d.ts.map +1 -1
  83. package/dist/store/index.d.ts +1 -1
  84. package/dist/store/selectors.d.ts +2 -2
  85. package/dist/store/selectors.d.ts.map +1 -1
  86. package/dist/store/selectors.js.map +1 -1
  87. package/dist/types/ExamAnswer.d.ts +5 -1
  88. package/dist/types/ExamAnswer.d.ts.map +1 -1
  89. package/dist/types/ExamServerAPI.d.ts +11 -3
  90. package/dist/types/ExamServerAPI.d.ts.map +1 -1
  91. package/dist/types/GradingStructure.d.ts +7 -1
  92. package/dist/types/GradingStructure.d.ts.map +1 -1
  93. package/dist/validateAnswers.d.ts.map +1 -1
  94. package/dist/validateAnswers.js +1 -0
  95. package/dist/validateAnswers.js.map +1 -1
  96. package/package.json +2 -2
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface AudioContext {
3
+ bitRate?: number;
4
+ saveInterval?: number;
5
+ }
6
+ export declare const AudioContext: React.Context<AudioContext>;
7
+ export declare const withAudioContext: (Component: React.ComponentType<any>) => React.ComponentType<any>;
8
+ export {};
9
+ //# sourceMappingURL=AudioContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/AudioContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,YAAY,6BAAwD,CAAA;AAEjF,eAAO,MAAM,gBAAgB,mEAG1B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { getNumericAttribute } from '../../dom-utils';
3
+ import { withContext } from './withContext';
4
+ export const AudioContext = React.createContext({});
5
+ export const withAudioContext = withContext(AudioContext, ({ element }) => ({
6
+ bitRate: getNumericAttribute(element, 'bit-rate'),
7
+ saveInterval: getNumericAttribute(element, 'save-interval')
8
+ }));
9
+ //# sourceMappingURL=AudioContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioContext.js","sourceRoot":"","sources":["../../../src/components/context/AudioContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAQ3C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAe,EAAkB,CAAC,CAAA;AAEjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAmC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5G,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC;IACjD,YAAY,EAAE,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC;CAC5D,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"QuestionContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/QuestionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,eAAe,gCAA8D,CAAA;AAE1F,eAAO,MAAM,mBAAmB,mEAsB9B,CAAA"}
1
+ {"version":3,"file":"QuestionContext.d.ts","sourceRoot":"","sources":["../../../src/components/context/QuestionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,eAAe,gCAA8D,CAAA;AAE1F,eAAO,MAAM,mBAAmB,mEA0B9B,CAAA"}
@@ -7,7 +7,7 @@ export const withQuestionContext = withContext(QuestionContext, ({ element }) =>
7
7
  const childQuestions = queryAll(element, 'question', false);
8
8
  const answers = childQuestions.length
9
9
  ? []
10
- : queryAll(element, ['text-answer', 'scored-text-answer', 'dropdown-answer', 'choice-answer', 'dnd-answer'], false);
10
+ : queryAll(element, ['text-answer', 'scored-text-answer', 'dropdown-answer', 'choice-answer', 'dnd-answer', 'audio-answer'], false);
11
11
  const questionInstructions = queryAll(element, 'question-instruction', false);
12
12
  const displayNumber = element.getAttribute('display-number');
13
13
  const questionLabelIds = questionInstructions.length > 0
@@ -1 +1 @@
1
- {"version":3,"file":"QuestionContext.js","sourceRoot":"","sources":["../../../src/components/context/QuestionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAalE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAkB,EAAqB,CAAC,CAAA;AAE1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAsC,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACnH,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM;QACnC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAA;IACrH,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAA;IAC7E,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAE,CAAA;IAC7D,MAAM,gBAAgB,GACpB,oBAAoB,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3D,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;IAEpC,OAAO;QACL,OAAO;QACP,aAAa;QACb,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,IAAI,IAAI;QAC3E,UAAU,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC;QACvD,QAAQ,EAAE,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAE;QACpD,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM;QACjD,cAAc;QACd,gBAAgB;KACjB,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"QuestionContext.js","sourceRoot":"","sources":["../../../src/components/context/QuestionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAalE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAkB,EAAqB,CAAC,CAAA;AAE1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAsC,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACnH,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM;QACnC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,QAAQ,CACN,OAAO,EACP,CAAC,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,CAAC,EACvG,KAAK,CACN,CAAA;IACL,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAA;IAC7E,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAE,CAAA;IAC7D,MAAM,gBAAgB,GACpB,oBAAoB,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3D,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;IAEpC,OAAO;QACL,OAAO;QACP,aAAa;QACb,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,IAAI,IAAI;QAC3E,UAAU,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC;QACvD,QAAQ,EAAE,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAE;QACpD,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM;QACjD,cAAc;QACd,gBAAgB;KACjB,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ declare const _default: React.MemoExoticComponent<React.ComponentType<any>>;
3
+ export default _default;
4
+ //# sourceMappingURL=AudioAnswer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioAnswer.d.ts","sourceRoot":"","sources":["../../../src/components/exam/AudioAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;;AAqDzC,wBAAwD"}
@@ -0,0 +1,39 @@
1
+ import React, { useContext } from 'react';
2
+ import { getNumericAttribute } from '../../dom-utils';
3
+ import { saveAnswer } from '../../store/answers/actions';
4
+ import { useDispatch, useSelector } from 'react-redux';
5
+ import { ExamContext } from '../context/ExamContext';
6
+ import { AudioRecorder } from './internal/AudioRecorder';
7
+ import { AudioContext, withAudioContext } from '../context/AudioContext';
8
+ function AudioAnswer(audioAnswerProps) {
9
+ const { element } = audioAnswerProps;
10
+ const questionId = getNumericAttribute(element, 'question-id');
11
+ const answer = useSelector((state) => state.answers.answersById[questionId]);
12
+ const displayNumber = element.getAttribute('display-number');
13
+ const dispatch = useDispatch();
14
+ const { examServerApi } = useContext(ExamContext);
15
+ const { bitRate, saveInterval } = useContext(AudioContext);
16
+ return (React.createElement("div", { className: "audio-answer" },
17
+ React.createElement("span", { className: "anchor", id: `question-nr-${displayNumber}` }),
18
+ React.createElement(AudioRecorder, { audioUrl: (answer === null || answer === void 0 ? void 0 : answer.value) === '' ? undefined : answer === null || answer === void 0 ? void 0 : answer.value, onSave: audio => {
19
+ void (async function () {
20
+ const audioAttachmentUrl = await examServerApi.saveAudio(questionId, audio);
21
+ const answer = { questionId, type: 'audio', value: audioAttachmentUrl };
22
+ dispatch(saveAnswer(answer));
23
+ })();
24
+ }, onDelete: () => {
25
+ if (!answer)
26
+ return;
27
+ void (async function () {
28
+ const audioId = answer.value.split('/').pop();
29
+ await examServerApi.deleteAudio(audioId);
30
+ const answerObj = { questionId, type: 'audio', value: '' };
31
+ dispatch(saveAnswer(answerObj));
32
+ })();
33
+ }, audioRecorderOptions: {
34
+ audioBitsPerSecond: bitRate !== null && bitRate !== void 0 ? bitRate : 65536,
35
+ saveIntervalMs: saveInterval
36
+ } })));
37
+ }
38
+ export default React.memo(withAudioContext(AudioAnswer));
39
+ //# sourceMappingURL=AudioAnswer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioAnswer.js","sourceRoot":"","sources":["../../../src/components/exam/AudioAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAExE,SAAS,WAAW,CAAC,gBAAoC;IACvD,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAA;IAEpC,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAE,CAAA;IAC/D,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,KAAgC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAA4B,CACvG,CAAA;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAE,CAAA;IAC7D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACjD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;IAE1D,OAAO,CACL,6BAAK,SAAS,EAAC,cAAc;QAC3B,8BAAM,SAAS,EAAC,QAAQ,EAAC,EAAE,EAAE,eAAe,aAAa,EAAE,GAAI;QAC/D,oBAAC,aAAa,IACZ,QAAQ,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,MAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,EAC1D,MAAM,EAAE,KAAK,CAAC,EAAE;gBACd,KAAK,CAAC,KAAK;oBACT,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;oBAC3E,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAA;oBAChF,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC9B,CAAC,CAAC,EAAE,CAAA;YACN,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE;gBACb,IAAI,CAAC,MAAM;oBAAE,OAAM;gBACnB,KAAK,CAAC,KAAK;oBACT,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAA;oBAC9C,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;oBACxC,MAAM,SAAS,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;oBACnE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;gBACjC,CAAC,CAAC,EAAE,CAAA;YACN,CAAC,EACD,oBAAoB,EAAE;gBACpB,kBAAkB,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,KAAK;gBACpC,cAAc,EAAE,YAAY;aAC7B,GACD,CACE,CACP,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Exam.d.ts","sourceRoot":"","sources":["../../../src/components/exam/Exam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAA;AAGlF,OAAO,EAA0B,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAI/F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAIvG,OAAO,EAAE,cAAc,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAA;AA+CrF,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;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;CACpD;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,KAAK,IAAI,CAAA;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;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,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,eAAO,MAAM,oBAAoB,wLA+B/B,CAAA;;AAiOF,wBAAuE"}
1
+ {"version":3,"file":"Exam.d.ts","sourceRoot":"","sources":["../../../src/components/exam/Exam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAA;AAGlF,OAAO,EAA0B,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAI/F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAIvG,OAAO,EAAE,cAAc,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAgDrF,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;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wBAAwB,CAAC,EAAE,wBAAwB,CAAA;CACpD;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,KAAK,IAAI,CAAA;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;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,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,eAAO,MAAM,oBAAoB,wLAgC/B,CAAA;;AAiOF,wBAAuE"}
@@ -53,6 +53,7 @@ import TextAnswer from './TextAnswer';
53
53
  import { UndoView } from './UndoView';
54
54
  import ErrorIndicator from './internal/ErrorIndicator';
55
55
  import SaveIndicator from './internal/SaveIndicator';
56
+ import AudioAnswer from './AudioAnswer';
56
57
  export const renderChildNodesBase = createRenderChildNodes({
57
58
  attachment: ExamAttachment,
58
59
  'attachment-link': mkAttachmentLink('link'),
@@ -83,7 +84,8 @@ export const renderChildNodesBase = createRenderChildNodes({
83
84
  'section-title': SectionTitle,
84
85
  'text-answer': TextAnswer,
85
86
  video: Video,
86
- 'image-overlay': ImageOverlay
87
+ 'image-overlay': ImageOverlay,
88
+ 'audio-answer': AudioAnswer
87
89
  });
88
90
  const Exam = ({ doc, casStatus, answers, restrictedAudioPlaybackStats, examServerApi, studentName, showUndoView, undoViewProps, annotationsEnabled, renderComponentOverrides = {} }) => {
89
91
  const { date, dateTimeFormatter, dayCode, examCode, language, resolveAttachment, root, subjectLanguage } = useContext(CommonExamContext);
@@ -1 +1 @@
1
- {"version":3,"file":"Exam.js","sourceRoot":"","sources":["../../../src/components/exam/Exam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAA4B,MAAM,8BAA8B,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,aAAa,MAAM,kBAAkB,CAAA;AAC5C,OAAO,gBAAgB,MAAM,qBAAqB,CAAA;AAClD,OAAO,gBAAgB,MAAM,qBAAqB,CAAA;AAClD,OAAO,cAAc,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,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,eAAe,MAAM,2BAA2B,CAAA;AACvD,OAAO,IAAI,MAAM,gBAAgB,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,OAAO,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,MAAM,iBAAiB,CAAA;AACnC,OAAO,YAAY,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,UAAU,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,MAAM,iBAAiB,CAAA;AACnC,OAAO,cAAc,MAAM,cAAc,CAAA;AACzC,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAC7C,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,wBAAwB,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,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,kBAAkB,MAAM,sBAAsB,CAAA;AACrD,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,cAAc,MAAM,2BAA2B,CAAA;AACtD,OAAO,aAAa,MAAM,0BAA0B,CAAA;AA+CpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;IACzD,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,sBAAsB,EAAE,kBAAkB;IAC1C,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,GAAyD,CAAC,EAClE,GAAG,EACH,SAAS,EACT,OAAO,EACP,4BAA4B,EAC5B,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,wBAAwB,GAAG,EAAE,EAC9B,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;IAC/B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAA;IAElH,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,OAAO,GAAG,SAAS,EAAkB,CAAA;IAE3C,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;IAED,MAAM,sBAAsB,GAAG,SAAS,CAAC,GAAG,EAAE,CAC5C,iBAAiB,CAAC;QAChB,mBAAmB,EAAE,IAAI;QACzB,yBAAyB,EAAE,IAAI;QAC/B,WAAW,EAAE,IAAI;KAClB,CAAC,CACH,CAAA;IAED,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,EAAE,CACrC,iBAAiB,CAAC;QAChB,mBAAmB,EAAE,IAAI;QACzB,yBAAyB,EAAE,IAAI;QAC/B,WAAW,EAAE,KAAK;KACnB,CAAC,CACH,CAAA;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAEnE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IACzC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAE3B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAA;IAE5D,MAAM,MAAM,GAAG,CAAC,GAAmB,EAAE,EAAE;QACrC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACpB,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAA;gBACtC,OAAO,WAAW,CAAA;YACpB,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QACnD,MAAM,kBAAkB,GAAG,OAAO,CAAA;QAClC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAChE,OAAO,GAAG,EAAE;YACV,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QACpE,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,MAAM,QAAQ,GAAG,CAAC,OAAoC,EAAE,EAAE,CACxD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAE,CAAA;QAC3D,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAC/B,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAC1G,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAA;IAEpE,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,GAAG,CAAA,CAAC,qDAAqD;QACxE,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAA;QAC5C,OAAO,IAAI,CAAC,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAA;IACzE,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAChC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;YACtD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,2CAA2C,aAAa,KAAK,CAAC,CAAA;YAC/G,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAA;gBACjD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,2CAA2C,CAAC,CAAA;gBAC1F,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA;oBAC/D,MAAM,WAAW,GAAI,iBAAiC,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,CAAA;oBAChF,cAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAA;gBACnE,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAA;IAErB,sFAAsF;IACtF,+GAA+G;IAC/G,MAAM,eAAe,GAAG,aAAa,CAAC,WAAW,KAAK,SAAS,CAAA;IAC/D,MAAM,SAAS,GAAG,WAAW,KAAK,iBAAiB,CAAA;IAEnD,OAAO,CACL,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;QACpB,oBAAC,kBAAkB,IAAC,kBAAkB,EAAE,kBAAkB;YACxD,oBAAC,UAAU,CAAC,QAAQ,IAClB,KAAK,EAAE;oBACL,kBAAkB,EAAE,eAAe;oBACnC,MAAM;iBACP;gBAED,oBAAC,eAAe,IAAC,IAAI,EAAE,IAAI;oBACzB,8BAAM,SAAS,EAAC,QAAQ,EAAC,IAAI,EAAE,eAAe,qBAAmB,WAAW,EAAE,GAAG,EAAE,OAAO;wBACxF,oBAAC,KAAK,CAAC,UAAU,OAAG;wBACnB,cAAc,IAAI,8BAAM,GAAG,EAAC,YAAY,EAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAI;wBACrF,6BAAK,SAAS,EAAC,gBAAgB;4BAC5B,eAAe,IAAI,CAClB,6BAAK,SAAS,EAAC,uBAAuB,iBAAa,MAAM;gCACvD,oBAAC,sBAAsB,IACf,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,GAC1E,CACE,CACP;4BAED,6BAAK,SAAS,EAAC,qBAAqB;gCAClC,6BAAK,SAAS,EAAC,WAAW;oCACxB,oBAAC,iBAAiB,IAAC,WAAW,EAAE,WAAW,GAAI;oCAE/C,oBAAC,cAAc,uBAAkB,WAAW;wCACzC,SAAS,IAAI,oBAAC,aAAa,IAAC,EAAE,EAAE,WAAW,IAAG,gBAAgB,CAAC,SAAS,CAAC,CAAiB;wCAC1F,IAAI,IAAI,CACP;4CACE,oCAAS,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAU,CAC/C,CACL;wCAED,oBAAC,yBAAyB,IAAC,IAAI,EAAE,IAAI,GAAI;wCAExC,eAAe,IAAI,CAClB,oBAAC,eAAe,IACR,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,GAC1E,CACH;wCAEA,eAAe,IAAI,CAClB,6BAAK,SAAS,EAAC,oBAAoB;4CACjC,oBAAC,eAAe,IAEZ,OAAO,EAAE,eAAe;gDACxB,gBAAgB;gDAChB,wBAAwB,GAE1B,CACE,CACP;wCACA,gBAAgB,IAAI,CACnB,oBAAC,gBAAgB,IAEb,OAAO,EAAE,gBAAgB;4CACzB,gBAAgB;4CAChB,wBAAwB;4CACxB,WAAW,EAAE,IAAI,GAEnB,CACH,CACc;oCAEhB,gBAAgB,CAAC,IAAI,CAAC;oCAEtB,CAAC,SAAS,IAAI,eAAe,CAAC,IAAI,CACjC,6BAAK,SAAS,EAAC,gBAAgB;wCAC7B,oBAAC,wBAAwB,OAAG;wCAC5B,oBAAC,2BAA2B,OAAG,CAC3B,CACP,CACG,CACF,CACF;wBAEL,CAAC,SAAS,IAAI,eAAe,CAAC,IAAI,CACjC,oBAAC,MAAM;4BACL,6BAAK,SAAS,EAAC,mCAAmC;gCAChD,oBAAC,aAAa,OAAG,CACb,CACC,CACV;wBAED,oBAAC,cAAc,OAAG;wBAClB,oBAAC,aAAa,OAAG;wBAEhB,YAAY,IAAI,eAAe,IAAI,oBAAC,QAAQ,OAAK,aAAa,GAAI,CAC9D,CACS,CACE,CACH,CACZ,CACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,yBAAyB,GAAG,CAAC,EAAE,IAAI,EAAqB,EAAE,EAAE;IAChE,MAAM,EAAE,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAClC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IACvD,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7B,8BAAM,SAAS,EAAC,mCAAmC;QACjD,oBAAC,gBAAgB,OAAG;QACnB,CAAC,CAAC,gBAAgB,CAAC,CACf,CACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,GAAG,EAAE;IACvC,MAAM,EAAE,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAClC,OAAO,CACL,6BAAK,SAAS,EAAC,6BAA6B,EAAC,EAAE,EAAC,yBAAyB,IACtE,CAAC,CAAC,2BAA2B,CAAC,CAC3B,CACP,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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"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ type AudioRecorderOptions = Omit<MediaRecorderOptions, 'bitsPerSecond' | 'videoBitsPerSecond'> & {
3
+ saveIntervalMs?: number;
4
+ };
5
+ interface AudioRecorderProps {
6
+ audioUrl?: string;
7
+ saveIntervalMs?: number;
8
+ onSave: (blob: Blob) => void;
9
+ onDelete: () => void;
10
+ audioRecorderOptions?: AudioRecorderOptions;
11
+ }
12
+ export declare function AudioRecorder({ audioUrl, onSave, onDelete, audioRecorderOptions }: AudioRecorderProps): React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=AudioRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioRecorder.d.ts","sourceRoot":"","sources":["../../../../src/components/exam/internal/AudioRecorder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAQ1D,KAAK,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,eAAe,GAAG,oBAAoB,CAAC,GAAG;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC5C;AASD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,kBAAkB,qBAoJrG"}
@@ -0,0 +1,126 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
+ import { faMicrophone, faStop } from '@fortawesome/free-solid-svg-icons';
4
+ import { useExamTranslation } from '../../../i18n';
5
+ import AudioError from '../../shared/internal/AudioError';
6
+ import { NBSP } from '../../../dom-utils';
7
+ class UserMediaError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'UserMediaError';
11
+ }
12
+ }
13
+ export function AudioRecorder({ audioUrl, onSave, onDelete, audioRecorderOptions }) {
14
+ const [timeElapsed, setTimeElapsed] = useState(0);
15
+ const [status, setStatus] = useState('inactive');
16
+ const [error, setError] = useState(null);
17
+ const mediaRecorder = useRef();
18
+ const timer = useRef();
19
+ const { t } = useExamTranslation();
20
+ useEffect(() => () => {
21
+ void stopRecording(); // force stop unless user didn't do it
22
+ }, []);
23
+ async function getMediaRecorder() {
24
+ var _a;
25
+ try {
26
+ if (mediaRecorder.current) {
27
+ return mediaRecorder.current;
28
+ }
29
+ if ((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia) {
30
+ const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });
31
+ mediaRecorder.current = new MediaRecorder(mediaStream, audioRecorderOptions);
32
+ return mediaRecorder.current;
33
+ }
34
+ else {
35
+ showError(new UserMediaError('Cannot get media stream, possibly insecure context'));
36
+ }
37
+ }
38
+ catch (err) {
39
+ showError(err);
40
+ }
41
+ }
42
+ async function startRecording() {
43
+ try {
44
+ setError(null);
45
+ const mediaRecorder = await getMediaRecorder();
46
+ if (mediaRecorder) {
47
+ startTimer();
48
+ mediaRecorder.start(audioRecorderOptions === null || audioRecorderOptions === void 0 ? void 0 : audioRecorderOptions.saveIntervalMs);
49
+ setStatus(mediaRecorder.state);
50
+ mediaRecorder.ondataavailable = onData;
51
+ mediaRecorder.onerror = (ev) => showError(new Error(ev.message));
52
+ }
53
+ }
54
+ catch (err) {
55
+ showError(err);
56
+ }
57
+ }
58
+ async function stopRecording() {
59
+ try {
60
+ setError(null);
61
+ const mediaRecorder = await getMediaRecorder();
62
+ if (mediaRecorder) {
63
+ stopTimer();
64
+ mediaRecorder.stop();
65
+ setStatus(mediaRecorder.state);
66
+ }
67
+ }
68
+ catch (err) {
69
+ showError(err);
70
+ }
71
+ }
72
+ function onData(blobEvent) {
73
+ onSave(blobEvent.data);
74
+ }
75
+ function startTimer() {
76
+ setTimeElapsed(0);
77
+ const timerId = setInterval(() => {
78
+ var _a, _b;
79
+ const timeElapsedMs = new Date().getTime() - ((_b = (_a = timer === null || timer === void 0 ? void 0 : timer.current) === null || _a === void 0 ? void 0 : _a.startTime) !== null && _b !== void 0 ? _b : new Date()).getTime();
80
+ setTimeElapsed(Math.floor(timeElapsedMs / 1000));
81
+ }, 1000);
82
+ timer.current = { id: timerId, startTime: new Date() };
83
+ }
84
+ function stopTimer() {
85
+ var _a;
86
+ clearInterval((_a = timer.current) === null || _a === void 0 ? void 0 : _a.id);
87
+ }
88
+ function renderTimeElapsed() {
89
+ const minutes = Math.floor(timeElapsed / 60);
90
+ const sec = timeElapsed - minutes * 60;
91
+ const seconds = `00${sec}`.slice(-2);
92
+ return `${minutes}:${seconds}`;
93
+ }
94
+ function showError(err) {
95
+ stopTimer();
96
+ const error = err instanceof Error ? err : new Error('unknown error');
97
+ switch (error.name) {
98
+ case 'UserMediaError':
99
+ case 'NotAllowedError':
100
+ return setError('permission-denied');
101
+ default:
102
+ console.error(error.name, error.message);
103
+ return setError('other-recording-error');
104
+ }
105
+ }
106
+ function deleteRecording() {
107
+ setError(null);
108
+ onDelete();
109
+ }
110
+ return (React.createElement(React.Fragment, null,
111
+ React.createElement("div", null,
112
+ React.createElement("p", null,
113
+ status != 'recording' && !audioUrl && (React.createElement("button", { className: "e-button start-recording", onClick: () => void startRecording(), disabled: error != null },
114
+ React.createElement(FontAwesomeIcon, { size: "sm", icon: faMicrophone, fixedWidth: true }),
115
+ t('start.recording'))),
116
+ React.createElement(React.Fragment, null, status == 'recording' && (React.createElement(React.Fragment, null,
117
+ React.createElement("button", { className: "e-button stop-recording", onClick: () => void stopRecording(), disabled: error != null },
118
+ React.createElement(FontAwesomeIcon, { size: "sm", icon: faStop, fixedWidth: true }),
119
+ t('stop.recording')),
120
+ React.createElement("span", { className: "time-elapsed" }, renderTimeElapsed())))))),
121
+ audioUrl && status != 'recording' && (React.createElement("div", { className: "audio-answer-controls" },
122
+ React.createElement("audio", { src: audioUrl, className: "e-column e-column--narrow", preload: "metadata", controls: true, controlsList: "nodownload" }),
123
+ React.createElement("button", { className: "e-button-secondary delete-recording", onClick: deleteRecording }, t('remove.recording')))),
124
+ error && React.createElement(AudioError, { error: error }, NBSP)));
125
+ }
126
+ //# sourceMappingURL=AudioRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioRecorder.js","sourceRoot":"","sources":["../../../../src/components/exam/internal/AudioRecorder.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface MyAudioRecorderProps {
3
+ audioUrl?: string;
4
+ onSave: (blob: Blob) => void;
5
+ onDelete: () => void;
6
+ mediaRecorderOptions?: MediaRecorderOptions;
7
+ }
8
+ export declare function MyAudioRecorder({ audioUrl, onSave, onDelete, mediaRecorderOptions }: MyAudioRecorderProps): React.JSX.Element | null;
9
+ export {};
10
+ //# sourceMappingURL=MyAudioRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyAudioRecorder.d.ts","sourceRoot":"","sources":["../../../../src/components/exam/internal/MyAudioRecorder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAK1D,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC5C;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,oBAAoB,4BAkIzG"}
@@ -0,0 +1,106 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
+ import { faMicrophone, faStop } from '@fortawesome/free-solid-svg-icons';
4
+ import { useExamTranslation } from '../../../i18n';
5
+ export function MyAudioRecorder({ audioUrl, onSave, onDelete, mediaRecorderOptions }) {
6
+ const [mediaRecorder, setMediaRecorder] = useState();
7
+ const [timeElapsed, setTimeElapsed] = useState(0);
8
+ const [status, setStatus] = useState('');
9
+ const [error, setError] = useState();
10
+ const timer = useRef();
11
+ const { t } = useExamTranslation();
12
+ useEffect(() => {
13
+ void (async function () {
14
+ try {
15
+ const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });
16
+ //const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: true } })
17
+ const mediaRecorder = new MediaRecorder(mediaStream, mediaRecorderOptions);
18
+ setMediaRecorder(mediaRecorder);
19
+ }
20
+ catch (err) {
21
+ showError(err);
22
+ }
23
+ return () => stopRecording();
24
+ })();
25
+ }, []);
26
+ useEffect(() => {
27
+ var _a;
28
+ setStatus((_a = mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.state) !== null && _a !== void 0 ? _a : '');
29
+ }, [mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.state]);
30
+ function startRecording() {
31
+ try {
32
+ if (mediaRecorder) {
33
+ startTimer();
34
+ mediaRecorder.start();
35
+ //mediaRecorder.start(1000) // to save in chunks
36
+ mediaRecorder.ondataavailable = onData;
37
+ mediaRecorder.onerror = (ev) => showError(new Error(ev.message));
38
+ }
39
+ }
40
+ catch (err) {
41
+ showError(err);
42
+ }
43
+ }
44
+ function stopRecording() {
45
+ console.info('stop');
46
+ try {
47
+ if (mediaRecorder && mediaRecorder.state !== 'inactive') {
48
+ mediaRecorder.stop();
49
+ //saveAndStopTimer(new Blob())
50
+ }
51
+ }
52
+ catch (err) {
53
+ showError(err);
54
+ }
55
+ /*if (mediaStream) {
56
+ mediaStream.getTracks().forEach(track => track.stop())
57
+ mediaStream = null
58
+ }*/
59
+ }
60
+ function onData(blobEvent) {
61
+ var _a;
62
+ clearInterval((_a = timer.current) === null || _a === void 0 ? void 0 : _a.id);
63
+ setTimeElapsed(0);
64
+ console.info('save');
65
+ onSave(blobEvent.data);
66
+ }
67
+ /*function saveAndStopTimer(blob: Blob) {
68
+ console.info('save')
69
+ clearInterval(timer.current?.id)
70
+ setTimeElapsed(0)
71
+ onSave(blob)
72
+ }*/
73
+ function startTimer() {
74
+ const timerId = setInterval(() => {
75
+ var _a, _b;
76
+ const timeElapsedMs = new Date().getTime() - ((_b = (_a = timer === null || timer === void 0 ? void 0 : timer.current) === null || _a === void 0 ? void 0 : _a.startTime) !== null && _b !== void 0 ? _b : new Date()).getTime();
77
+ setTimeElapsed(Math.floor(timeElapsedMs / 1000));
78
+ }, 1000);
79
+ timer.current = { id: timerId, startTime: new Date() };
80
+ }
81
+ function renderTimeElapsed() {
82
+ const minutes = Math.floor(timeElapsed / 60);
83
+ const sec = timeElapsed - minutes * 60;
84
+ const seconds = `00${sec}`.slice(-2);
85
+ return `${minutes}:${seconds}`;
86
+ }
87
+ function showError(err) {
88
+ setError(err instanceof Error ? err : new Error('unknown error'));
89
+ }
90
+ console.info('status', status);
91
+ return error ? (React.createElement("div", null, error.message)) : status == '' ? null : (React.createElement(React.Fragment, null,
92
+ React.createElement("div", null,
93
+ React.createElement("p", null,
94
+ status != 'recording' && !audioUrl && (React.createElement("button", { className: "e-button start-recording", onClick: () => void startRecording() },
95
+ React.createElement(FontAwesomeIcon, { size: "sm", icon: faMicrophone, fixedWidth: true }),
96
+ t('start.recording'))),
97
+ React.createElement(React.Fragment, null,
98
+ status == 'recording' && (React.createElement("button", { className: "e-button stop-recording", onClick: stopRecording },
99
+ React.createElement(FontAwesomeIcon, { size: "sm", icon: faStop, fixedWidth: true }),
100
+ t('stop.recording'))),
101
+ React.createElement("span", { className: "time-elapsed" }, renderTimeElapsed())))),
102
+ audioUrl && (React.createElement("div", { className: "audio-answer-controls" },
103
+ React.createElement("audio", { src: audioUrl, className: "e-column e-column--narrow", preload: "metadata", controls: true, controlsList: "nodownload" }),
104
+ React.createElement("button", { className: "e-button-reversed delete-recording", onClick: onDelete }, t('remove.recording'))))));
105
+ }
106
+ //# sourceMappingURL=MyAudioRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyAudioRecorder.js","sourceRoot":"","sources":["../../../../src/components/exam/internal/MyAudioRecorder.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface MyMediaRecorderProps {
3
+ audioUrl?: string;
4
+ onSave: (blob: Blob) => void;
5
+ onDelete: () => void;
6
+ bitsPerSecond?: number;
7
+ }
8
+ export declare function MyMediaRecorder({ onSave, onDelete }: MyMediaRecorderProps): React.JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=MyMediaRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyMediaRecorder.d.ts","sourceRoot":"","sources":["../../../../src/components/exam/internal/MyMediaRecorder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAK1D,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,qBAkHzE"}
@@ -0,0 +1,91 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
+ import { faMicrophone, faStop } from '@fortawesome/free-solid-svg-icons';
4
+ import { useExamTranslation } from '../../../i18n';
5
+ export function MyMediaRecorder({ onSave, onDelete }) {
6
+ const [mediaRecorder, setMediaRecorder] = useState();
7
+ const [timeElapsed, setTimeElapsed] = useState(0);
8
+ const [status, setStatus] = useState('inactive');
9
+ const [audioUrl, setAudioUrl] = useState();
10
+ const [error, setError] = useState();
11
+ const timer = useRef();
12
+ const { t } = useExamTranslation();
13
+ useEffect(() => {
14
+ var _a;
15
+ setStatus((_a = mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.state) !== null && _a !== void 0 ? _a : 'inactive');
16
+ }, [mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.state]);
17
+ async function startRecording() {
18
+ try {
19
+ const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });
20
+ setMediaRecorder(() => {
21
+ const mediaRecorder = new MediaRecorder(mediaStream);
22
+ startTimer();
23
+ mediaRecorder.start();
24
+ //mediaRecorder.start(1000)
25
+ mediaRecorder.ondataavailable = onData;
26
+ return mediaRecorder;
27
+ });
28
+ }
29
+ catch (err) {
30
+ setError(err instanceof Error ? err : new Error('unknown error'));
31
+ }
32
+ }
33
+ function stopRecording() {
34
+ try {
35
+ if (mediaRecorder && mediaRecorder.state !== 'inactive') {
36
+ mediaRecorder.stop();
37
+ saveAndStopTimer(new Blob());
38
+ }
39
+ }
40
+ catch (err) {
41
+ setError(err instanceof Error ? err : new Error('unknown error'));
42
+ }
43
+ /*if (mediaStream) {
44
+ mediaStream.getTracks().forEach(track => track.stop())
45
+ mediaStream = null
46
+ }*/
47
+ }
48
+ function onData(blobEvent) {
49
+ console.info('data', blobEvent.data);
50
+ }
51
+ function saveAndStopTimer(blob) {
52
+ var _a;
53
+ console.info('save');
54
+ clearInterval((_a = timer.current) === null || _a === void 0 ? void 0 : _a.id);
55
+ setTimeElapsed(0);
56
+ console.info('save blob', blob);
57
+ //onSave(blob)
58
+ }
59
+ function onDelete() { }
60
+ function startTimer() {
61
+ const timerId = setInterval(() => {
62
+ var _a, _b;
63
+ const timeElapsedMs = new Date().getTime() - ((_b = (_a = timer === null || timer === void 0 ? void 0 : timer.current) === null || _a === void 0 ? void 0 : _a.startTime) !== null && _b !== void 0 ? _b : new Date()).getTime();
64
+ setTimeElapsed(Math.floor(timeElapsedMs / 1000));
65
+ }, 1000);
66
+ timer.current = { id: timerId, startTime: new Date() };
67
+ }
68
+ function renderTimeElapsed() {
69
+ const minutes = Math.floor(timeElapsed / 60);
70
+ const sec = timeElapsed - minutes * 60;
71
+ const seconds = `00${sec}`.slice(-2);
72
+ return `${minutes}:${seconds}`;
73
+ }
74
+ console.info('status', status);
75
+ return (React.createElement(React.Fragment, null,
76
+ React.createElement("div", null,
77
+ React.createElement("p", null,
78
+ [undefined, 'inactive'].includes(mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.state) && (React.createElement("button", { className: "e-button start-recording", onClick: () => void startRecording() },
79
+ React.createElement(FontAwesomeIcon, { size: "sm", icon: faMicrophone, fixedWidth: true }),
80
+ t('start.recording'))),
81
+ React.createElement(React.Fragment, null,
82
+ (mediaRecorder === null || mediaRecorder === void 0 ? void 0 : mediaRecorder.state) == 'recording' && (React.createElement("button", { className: "e-button stop-recording", onClick: stopRecording },
83
+ React.createElement(FontAwesomeIcon, { size: "sm", icon: faStop, fixedWidth: true }),
84
+ t('stop.recording'))),
85
+ React.createElement("span", { className: "time-elapsed" }, renderTimeElapsed())))),
86
+ audioUrl && (React.createElement("div", { className: "audio-answer-controls" },
87
+ React.createElement("audio", { src: audioUrl, className: "e-column e-column--narrow", preload: "metadata", controls: true, controlsList: "nodownload" }),
88
+ React.createElement("button", { className: "e-button-reversed delete-recording", onClick: onDelete }, t('remove.recording')))),
89
+ error && React.createElement("div", null, error.message)));
90
+ }
91
+ //# sourceMappingURL=MyMediaRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyMediaRecorder.js","sourceRoot":"","sources":["../../../../src/components/exam/internal/MyMediaRecorder.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,12 @@
1
1
  import React from 'react';
2
- import { Annotation } from '../..';
2
+ import { Annotation, AudioAnswer, RichTextAnswer, TextAnswer } from '../..';
3
3
  type Annotations = {
4
4
  pregrading: Annotation[];
5
5
  censoring: Annotation[];
6
6
  };
7
7
  type GradingRole = 'pregrading' | 'censoring';
8
8
  type GradingAnswerProps = {
9
- answer: {
10
- type: 'richText' | 'text';
11
- characterCount: number;
12
- value: string;
13
- };
9
+ answer: RichTextAnswer | TextAnswer | AudioAnswer;
14
10
  language: string;
15
11
  isReadOnly: boolean;
16
12
  gradingRole: GradingRole;
@@ -1 +1 @@
1
- {"version":3,"file":"GradingAnswer.d.ts","sourceRoot":"","sources":["../../../src/components/grading/GradingAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkE,MAAM,OAAO,CAAA;AAEtF,OAAO,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAA;AAyBlD,KAAK,WAAW,GAAG;IAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAAC,SAAS,EAAE,UAAU,EAAE,CAAA;CAAE,CAAA;AAExE,KAAK,WAAW,GAAG,YAAY,GAAG,WAAW,CAAA;AAE7C,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5E,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IACxB,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IACnD,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAQtD"}
1
+ {"version":3,"file":"GradingAnswer.d.ts","sourceRoot":"","sources":["../../../src/components/grading/GradingAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkE,MAAM,OAAO,CAAA;AAEtF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAA;AAyB3F,KAAK,WAAW,GAAG;IAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAAC,SAAS,EAAE,UAAU,EAAE,CAAA;CAAE,CAAA;AAExE,KAAK,WAAW,GAAG,YAAY,GAAG,WAAW,CAAA;AAE7C,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,WAAW,CAAA;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IACxB,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IACnD,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAQtD"}