@digabi/exam-engine-core 23.13.6 → 23.13.8-alpha.1

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 (62) hide show
  1. package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts +2 -0
  2. package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts.map +1 -0
  3. package/dist/__tests__/playwright/exam/AudioAnswer.test.js +110 -0
  4. package/dist/__tests__/playwright/exam/AudioAnswer.test.js.map +1 -0
  5. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts +5 -0
  6. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts.map +1 -0
  7. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js +15 -0
  8. package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js.map +1 -0
  9. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  10. package/dist/components/exam/internal/MyAudioRecorder.d.ts +10 -0
  11. package/dist/components/exam/internal/MyAudioRecorder.d.ts.map +1 -0
  12. package/dist/components/exam/internal/MyAudioRecorder.js +106 -0
  13. package/dist/components/exam/internal/MyAudioRecorder.js.map +1 -0
  14. package/dist/components/exam/internal/MyMediaRecorder.d.ts +10 -0
  15. package/dist/components/exam/internal/MyMediaRecorder.d.ts.map +1 -0
  16. package/dist/components/exam/internal/MyMediaRecorder.js +91 -0
  17. package/dist/components/exam/internal/MyMediaRecorder.js.map +1 -0
  18. package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts +8 -0
  19. package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts.map +1 -0
  20. package/dist/components/shared/internal/AudioErrorRemoveMe.js +17 -0
  21. package/dist/components/shared/internal/AudioErrorRemoveMe.js.map +1 -0
  22. package/dist/main-bundle.js +2 -2
  23. package/package.json +2 -2
  24. package/dist/__tests__/annotations.test.d.ts +0 -2
  25. package/dist/__tests__/annotations.test.d.ts.map +0 -1
  26. package/dist/__tests__/annotations.test.js +0 -217
  27. package/dist/__tests__/annotations.test.js.map +0 -1
  28. package/dist/assets/NotoMono.ttf +0 -0
  29. package/dist/assets/NotoSans-Bold.ttf +0 -0
  30. package/dist/assets/NotoSans-BoldItalic.ttf +0 -0
  31. package/dist/assets/NotoSans-Italic.ttf +0 -0
  32. package/dist/assets/NotoSans-Light.ttf +0 -0
  33. package/dist/assets/NotoSans-LightItalic.ttf +0 -0
  34. package/dist/assets/NotoSans-Regular.ttf +0 -0
  35. package/dist/assets/NotoSans-SemiBold.ttf +0 -0
  36. package/dist/assets/NotoSans-SemiBoldItalic.ttf +0 -0
  37. package/dist/assets/closeButton.svg +0 -1
  38. package/dist/assets/collapse.svg +0 -12
  39. package/dist/assets/expand.svg +0 -12
  40. package/dist/assets/helpButton.svg +0 -9
  41. package/dist/assets/redoButton.svg +0 -5
  42. package/dist/assets/undoButton.svg +0 -5
  43. package/dist/components/exam/ExamineExam.d.ts +0 -5
  44. package/dist/components/exam/ExamineExam.d.ts.map +0 -1
  45. package/dist/components/exam/ExamineExam.js +0 -20
  46. package/dist/components/exam/ExamineExam.js.map +0 -1
  47. package/dist/components/grading/examAnnotationUtils.d.ts +0 -4
  48. package/dist/components/grading/examAnnotationUtils.d.ts.map +0 -1
  49. package/dist/components/grading/examAnnotationUtils.js +0 -51
  50. package/dist/components/grading/examAnnotationUtils.js.map +0 -1
  51. package/dist/components/shared/AnnotatableText.d.ts +0 -7
  52. package/dist/components/shared/AnnotatableText.d.ts.map +0 -1
  53. package/dist/components/shared/AnnotatableText.js +0 -73
  54. package/dist/components/shared/AnnotatableText.js.map +0 -1
  55. package/dist/components/shared/AnnotationPopup.d.ts +0 -3
  56. package/dist/components/shared/AnnotationPopup.d.ts.map +0 -1
  57. package/dist/components/shared/AnnotationPopup.js +0 -74
  58. package/dist/components/shared/AnnotationPopup.js.map +0 -1
  59. package/dist/components/surround.d.ts +0 -8
  60. package/dist/components/surround.d.ts.map +0 -1
  61. package/dist/components/surround.js +0 -19
  62. package/dist/components/surround.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digabi/exam-engine-core",
3
- "version": "23.13.6",
3
+ "version": "23.13.8-alpha.1",
4
4
  "main": "dist/main-bundle.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "Matriculation Examination Board, Finland",
@@ -60,5 +60,5 @@
60
60
  "webpack-bundle-analyzer": "^4.1.0",
61
61
  "webpack-cli": "^6.0.0"
62
62
  },
63
- "gitHead": "5b9aeb5fc36d62c78f2e8b9d381423bea166b618"
63
+ "gitHead": "9578244f8a69f5d0853d448fa6512deb0ab3fcc1"
64
64
  }
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- //# sourceMappingURL=annotations.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotations.test.d.ts","sourceRoot":"","sources":["../../__tests__/annotations.test.tsx"],"names":[],"mappings":"AAWA,OAAO,2BAA2B,CAAA"}
@@ -1,217 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = require("@testing-library/react");
7
- const user_event_1 = __importDefault(require("@testing-library/user-event"));
8
- const Exam_1 = __importDefault(require("../src/components/exam/Exam"));
9
- const GradingInstructions_1 = __importDefault(require("../src/components/grading-instructions/GradingInstructions"));
10
- const fs_1 = require("fs");
11
- const exam_engine_mastering_1 = require("@digabi/exam-engine-mastering");
12
- const exam_engine_exams_1 = require("@digabi/exam-engine-exams");
13
- const path_1 = __importDefault(require("path"));
14
- const parseExam_1 = __importDefault(require("../dist/parser/parseExam"));
15
- const examServerApi_1 = require("./examServerApi");
16
- const react_2 = __importDefault(require("react"));
17
- require("@testing-library/jest-dom");
18
- const Attachments_1 = __importDefault(require("../src/components/attachments/Attachments"));
19
- class IntersectionObserver {
20
- constructor() {
21
- this.root = null;
22
- this.rootMargin = '';
23
- this.thresholds = [];
24
- this.disconnect = () => null;
25
- this.observe = () => null;
26
- this.takeRecords = () => [];
27
- this.unobserve = () => null;
28
- }
29
- }
30
- window.IntersectionObserver = IntersectionObserver;
31
- global.IntersectionObserver = IntersectionObserver;
32
- window.scrollTo = jest.fn();
33
- document.execCommand = jest.fn();
34
- describe('Annotations', () => {
35
- let doc;
36
- beforeEach(async () => {
37
- window.getSelection = jest.fn();
38
- const examPath = (0, exam_engine_exams_1.resolveExam)('FF/FF.xml');
39
- const resolveAttachment = (filename) => path_1.default.resolve(path_1.default.dirname(examPath), 'attachments', filename);
40
- const source = await fs_1.promises.readFile(examPath, 'utf-8');
41
- const results = await (0, exam_engine_mastering_1.masterExam)(source, () => '', (0, exam_engine_mastering_1.getMediaMetadataFromLocalFile)(resolveAttachment), {
42
- removeCorrectAnswers: false
43
- });
44
- doc = (0, parseExam_1.default)(results[0].xml, true);
45
- });
46
- afterEach(() => {
47
- ;
48
- window.getSelection.mockReset();
49
- window.scrollTo.mockReset();
50
- document.execCommand.mockReset();
51
- });
52
- const defaultTextToAnnotate = 'Sekä moraali että tavat pyrkivät ohjaamaan ihmisten käyttäytymistä.';
53
- const defaultAnnotationAnchor = 'e:exam:0 > e:section:1 > e:question:2 > e:question-instruction:1 > span:0 > p:0 > #text:0';
54
- it('popup is rendered', async () => {
55
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: {}, onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
56
- await annotateText(exam, defaultTextToAnnotate);
57
- expect(exam.getByTestId('annotation-popup')).toBeVisible();
58
- });
59
- it('popup is not rendered if annotation props are not passed', async () => {
60
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps() }));
61
- await annotateText(exam, defaultTextToAnnotate);
62
- expect(exam.queryByTestId('annotation-popup')).not.toBeInTheDocument();
63
- });
64
- it('callback is called when annotation is saved', async () => {
65
- const saveAnnotationMock = jest.fn();
66
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: {}, onClickAnnotation: () => { }, onSaveAnnotation: saveAnnotationMock }));
67
- await annotateText(exam, defaultTextToAnnotate);
68
- const textbox = exam.getByTestId('edit-comment');
69
- react_1.fireEvent.input(textbox, {
70
- target: { innerText: 'New Value', innerHTML: 'New Value' }
71
- });
72
- await user_event_1.default.click(exam.getByText('Vastaa'));
73
- expect(saveAnnotationMock).toHaveBeenCalledTimes(1);
74
- expect(saveAnnotationMock).toHaveBeenCalledWith({
75
- annotationAnchor: defaultAnnotationAnchor,
76
- annotationId: undefined,
77
- displayNumber: '2',
78
- length: defaultTextToAnnotate.length,
79
- message: 'New Value',
80
- selectedText: defaultTextToAnnotate,
81
- startIndex: 0
82
- });
83
- });
84
- it('popup field is empty when creating new annotation', async () => {
85
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: {}, onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
86
- await annotateText(exam, defaultTextToAnnotate);
87
- const textbox = exam.getByTestId('edit-comment');
88
- react_1.fireEvent.input(textbox, {
89
- target: { innerText: 'New Value', innerHTML: 'New Value' }
90
- });
91
- await user_event_1.default.click(exam.getByText('Vastaa'));
92
- await annotateText(exam, 'Esitä jokin toinen käsitys filosofiasta ja vertaa sitä');
93
- expect(exam.getByTestId('edit-comment').textContent).toHaveLength(0);
94
- });
95
- it('callback is called when annotation is clicked', async () => {
96
- const clickAnnotationMock = jest.fn();
97
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: { [defaultAnnotationAnchor]: [createAnnotation(1, 5, 12, 'moraali että')] }, onClickAnnotation: clickAnnotationMock, onSaveAnnotation: () => { } }));
98
- await user_event_1.default.click(exam.container.querySelector('[data-annotation-id="1"]'));
99
- expect(clickAnnotationMock).toHaveBeenCalledTimes(1);
100
- expect(clickAnnotationMock).toHaveBeenCalledWith(expect.anything(), {
101
- annotationAnchor: defaultAnnotationAnchor,
102
- annotationId: 1,
103
- displayNumber: '',
104
- hidden: false,
105
- length: 12,
106
- message: '',
107
- selectedText: 'moraali että',
108
- startIndex: 5
109
- });
110
- });
111
- it('annotations are added to dom when provided', () => {
112
- var _a, _b;
113
- const annotationProps = {
114
- annotations: {
115
- [defaultAnnotationAnchor]: [createAnnotation(1, 5, 7, 'moraali'), createAnnotation(3, 18, 5, 'tavat')]
116
- },
117
- onClickAnnotation: () => { },
118
- onSaveAnnotation: () => { }
119
- };
120
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
121
- expect(exam.container.querySelector('[data-annotation-id="1"]')).toBeInTheDocument();
122
- expect((_a = exam.container.querySelector('[data-annotation-id="1"]')) === null || _a === void 0 ? void 0 : _a.textContent).toBe('moraali');
123
- expect(exam.container.querySelector('[data-annotation-id="3"]')).toBeInTheDocument();
124
- expect((_b = exam.container.querySelector('[data-annotation-id="3"]')) === null || _b === void 0 ? void 0 : _b.textContent).toBe('tavat');
125
- });
126
- it('hidden annotation works correctly', () => {
127
- var _a, _b;
128
- const annotationProps = {
129
- annotations: {
130
- [defaultAnnotationAnchor]: [
131
- {
132
- annotationId: 1,
133
- annotationAnchor: defaultAnnotationAnchor,
134
- hidden: true,
135
- startIndex: 24,
136
- length: 8,
137
- message: '',
138
- displayNumber: '',
139
- selectedText: 'pyrkivät'
140
- }
141
- ]
142
- },
143
- onClickAnnotation: () => { },
144
- onSaveAnnotation: () => { }
145
- };
146
- const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
147
- expect(exam.container.querySelector('[data-annotation-id="1"]')).toBeInTheDocument();
148
- expect((_b = (_a = exam.container.querySelector('[data-annotation-id="1"]')) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.textContent).toBe('Sekä moraali että tavat pyrkivät ohjaamaan ihmisten käyttäytymistä.');
149
- });
150
- it('grading instructions can be annotated', async () => {
151
- const gi = (0, react_1.render)(react_2.default.createElement(GradingInstructions_1.default, { ...getCommonProps(), annotations: {}, onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
152
- await annotateText(gi, defaultTextToAnnotate);
153
- expect(gi.getByTestId('annotation-popup')).toBeVisible();
154
- });
155
- it('attachments can be annotated', async () => {
156
- const gi = (0, react_1.render)(react_2.default.createElement(Attachments_1.default, { ...getCommonProps(), annotations: {}, onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
157
- await annotateText(gi, 'Mollit sint magna aliquip in.');
158
- expect(gi.getByTestId('annotation-popup')).toBeVisible();
159
- });
160
- function createAnnotation(id, startIndex, length, selectedText) {
161
- return {
162
- annotationId: id,
163
- annotationAnchor: defaultAnnotationAnchor,
164
- hidden: false,
165
- startIndex,
166
- length,
167
- message: '',
168
- displayNumber: '',
169
- selectedText
170
- };
171
- }
172
- async function annotateText(exam, text) {
173
- const textElement = exam.getByText(text);
174
- mockWindowSelection(text, text.length, textElement);
175
- await user_event_1.default.click(textElement);
176
- }
177
- function mockWindowSelection(text = 'mocked selection text', length = 5, element) {
178
- ;
179
- window.getSelection.mockImplementation(() => ({
180
- toString: () => text,
181
- rangeCount: 1,
182
- getRangeAt: jest.fn().mockReturnValue({
183
- startOffset: 0,
184
- endOffset: length,
185
- startContainer: element,
186
- endContainer: element,
187
- cloneContents: jest.fn().mockReturnValue({ children: [], childNodes: [] })
188
- })
189
- }));
190
- }
191
- function getCommonProps() {
192
- return {
193
- doc,
194
- answers: [],
195
- attachmentsURL: '/attachments',
196
- resolveAttachment: (filename) => `/attachments/${encodeURIComponent(filename)}`
197
- };
198
- }
199
- function getExamProps() {
200
- const examProps = {
201
- ...getCommonProps(),
202
- casStatus: 'forbidden',
203
- examServerApi: examServerApi_1.examServerApi,
204
- restrictedAudioPlaybackStats: [],
205
- studentName: '[Kokelaan Nimi]',
206
- showUndoView: false,
207
- undoViewProps: {
208
- questionId: 0,
209
- title: '',
210
- close: () => undefined,
211
- restoreAnswer: () => undefined
212
- }
213
- };
214
- return examProps;
215
- }
216
- });
217
- //# sourceMappingURL=annotations.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotations.test.js","sourceRoot":"","sources":["../../__tests__/annotations.test.tsx"],"names":[],"mappings":"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"}
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30" height="30" viewBox="0 0 30 30"><defs><clipPath id="clip-path"><path d="M141.57-89.324v-2.34H143.2v2.34A2.3,2.3,0,0,1,140.9-87.03H130.1a2.3,2.3,0,0,1-2.292-2.294v-17.029a2.294,2.294,0,0,1,2.292-2.292h10.8a2.3,2.3,0,0,1,2.295,2.292v2.342H141.57v-2.342a.669.669,0,0,0-.67-.667H130.1a.667.667,0,0,0-.667.667v17.029a.668.668,0,0,0,.667.669h10.8A.67.67,0,0,0,141.57-89.324Zm3.271-13.579a1.069,1.069,0,0,1,1.825-.755l5.065,5.065a1.065,1.065,0,0,1,0,1.511l-5.065,5.067a1.07,1.07,0,0,1-1.825-.757v-2.412h-6.633a2.3,2.3,0,0,1-2.3-2.3v-.7a2.3,2.3,0,0,1,2.3-2.3h6.633V-102.9" fill="none" clip-rule="evenodd"/></clipPath><clipPath id="clip-path-2"><ellipse cx="10" cy="-29.606" rx="15" ry="14.933" fill="none"/></clipPath></defs><title>closeButton</title><rect width="30" height="30" fill="#fff" opacity="0"/><line x1="25" y1="5" x2="5" y2="25" fill="none" stroke="#6d6d6d" stroke-miterlimit="10" stroke-width="3"/><line x1="5" y1="5" x2="25" y2="25" fill="none" stroke="#6d6d6d" stroke-miterlimit="10" stroke-width="3"/></svg>
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <svg width="19px" height="12px" viewBox="0 0 19 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
- <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
4
- <title>Page 1</title>
5
- <desc>Created with Sketch.</desc>
6
- <defs></defs>
7
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
- <g id="Kuuntelu-kokelas-painaa-nappia-Copy-18" transform="translate(-1068.000000, -19.000000)" stroke-width="3" stroke="#359BB7">
9
- <polyline id="Page-1" transform="translate(1077.999981, 26.000000) rotate(180.000000) translate(-1077.999981, -26.000000) " points="1085.99996 22 1077.99996 30 1070 22"></polyline>
10
- </g>
11
- </g>
12
- </svg>
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <svg width="18px" height="12px" viewBox="0 0 18 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
- <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
4
- <title>Page 1</title>
5
- <desc>Created with Sketch.</desc>
6
- <defs></defs>
7
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
- <g id="Kuuntelu-kokelas-painaa-nappia-Copy-18" transform="translate(-1069.000000, -21.000000)" stroke-width="3" stroke="#359BB7">
9
- <polyline id="Page-1" points="1085.99996 22 1077.99996 30 1070 22"></polyline>
10
- </g>
11
- </g>
12
- </svg>
@@ -1,9 +0,0 @@
1
- <svg version="1.1"
2
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
3
- x="0px" y="0px" width="20px" height="20px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
4
- <path fill="#359BB7" d="M10,20C4.48,20,0,15.52,0,10C0,4.48,4.48,0,10,0s10,4.48,10,10C20,15.52,15.52,20,10,20z M5.57,5.88
5
- c-0.14,0.21-0.09,0.5,0.11,0.66l1.4,1.06c0.21,0.16,0.51,0.12,0.67-0.09c0.72-0.91,1.21-1.44,2.31-1.44c0.82,0,1.84,0.53,1.84,1.33
6
- c0,0.6-0.5,0.91-1.31,1.37c-0.95,0.53-2.2,1.19-2.2,2.85v0.16c0,0.27,0.22,0.48,0.48,0.48h2.26c0.27,0,0.48-0.22,0.48-0.48v-0.05
7
- c0-1.15,3.35-1.2,3.35-4.3c0-2.34-2.43-4.11-4.7-4.11C8.07,3.31,6.67,4.23,5.57,5.88z M8.15,15.16c0,1.02,0.83,1.85,1.85,1.85
8
- s1.85-0.83,1.85-1.85s-0.83-1.85-1.85-1.85S8.15,14.14,8.15,15.16z"/>
9
- </svg>
@@ -1,5 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20px" height="20px" viewBox="0 0 20 20" version="1.1">
2
- <g id="surface1">
3
- <path fill="#359BB7" d="M 18.316406 1.253906 C 18.859375 1.253906 19.378906 1.675781 19.378906 2.3125 L 19.378906 8.007812 C 19.378906 8.421875 19.042969 8.757812 18.628906 8.757812 L 12.9375 8.757812 C 12.300781 8.757812 11.882812 8.238281 11.882812 7.695312 C 11.882812 7.4375 11.976562 7.171875 12.191406 6.957031 L 13.953125 5.195312 C 12.851562 4.289062 11.460938 3.761719 9.996094 3.761719 C 6.554688 3.761719 3.753906 6.5625 3.753906 10.003906 C 3.753906 13.449219 6.554688 16.246094 9.996094 16.246094 C 12.851562 16.246094 13.488281 14.75 14.492188 14.75 C 15.214844 14.75 15.742188 15.335938 15.742188 15.996094 C 15.742188 17.367188 12.554688 18.75 10 18.75 C 5.179688 18.75 1.253906 14.824219 1.253906 10.003906 C 1.253906 5.183594 5.179688 1.265625 10 1.265625 C 12.132812 1.265625 14.148438 2.0625 15.71875 3.425781 L 17.578125 1.566406 C 17.792969 1.351562 18.058594 1.253906 18.316406 1.253906 Z M 18.316406 1.253906 "/>
4
- </g>
5
- </svg>
@@ -1,5 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20px" height="20px" viewBox="0 0 20 20" version="1.1">
2
- <g id="surface1">
3
- <path fill="#359BB7" d="M 18.75 10 C 18.75 14.820312 14.824219 18.746094 10.003906 18.746094 C 8.097656 18.746094 6.285156 18.136719 4.761719 16.992188 C 4.210938 16.578125 4.097656 15.796875 4.511719 15.242188 C 4.925781 14.691406 5.707031 14.582031 6.261719 14.996094 C 7.351562 15.8125 8.644531 16.242188 10.007812 16.242188 C 13.449219 16.242188 16.25 13.441406 16.25 10 C 16.25 6.558594 13.449219 3.757812 10.007812 3.757812 C 8.542969 3.757812 7.152344 4.285156 6.050781 5.1875 L 7.8125 6.953125 C 8.476562 7.617188 8.007812 8.753906 7.066406 8.753906 L 1.375 8.753906 C 0.960938 8.753906 0.625 8.417969 0.625 8.003906 L 0.625 2.304688 C 0.625 1.367188 1.761719 0.898438 2.425781 1.5625 L 4.285156 3.421875 C 5.855469 2.058594 7.871094 1.253906 10.003906 1.253906 C 14.824219 1.253906 18.75 5.179688 18.75 10 Z M 18.75 10 "/>
4
- </g>
5
- </svg>
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- declare function ExamineExam(): React.JSX.Element;
3
- declare const _default: React.MemoExoticComponent<typeof ExamineExam>;
4
- export default _default;
5
- //# sourceMappingURL=ExamineExam.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExamineExam.d.ts","sourceRoot":"","sources":["../../../src/components/exam/ExamineExam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAKzC,iBAAS,WAAW,sBA4BnB;;AAED,wBAAsC"}
@@ -1,20 +0,0 @@
1
- import React, { useContext } from 'react';
2
- import { useExamTranslation } from '../../i18n';
3
- import { ExamContext } from '../context/ExamContext';
4
- function ExamineExam() {
5
- const { examServerApi } = useContext(ExamContext);
6
- const { examineExam } = examServerApi;
7
- const { t } = useExamTranslation();
8
- const goToInspectAnswers = () => {
9
- if (!examineExam) {
10
- return;
11
- }
12
- examineExam();
13
- window.scrollTo(0, 0);
14
- };
15
- return (React.createElement("div", { className: "e-examine-exam" },
16
- React.createElement("button", { className: "e-button", id: "examineExam", onClick: goToInspectAnswers, "aria-describedby": "examineExamInstructions" }, t('examine-exam.examine')),
17
- React.createElement("div", { className: "e-examine-exam-instructions", id: "examineExamInstructions" }, t('examine-exam.instructions'))));
18
- }
19
- export default React.memo(ExamineExam);
20
- //# sourceMappingURL=ExamineExam.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExamineExam.js","sourceRoot":"","sources":["../../../src/components/exam/ExamineExam.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD,SAAS,WAAW;IAClB,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACjD,MAAM,EAAE,WAAW,EAAE,GAAkB,aAAa,CAAA;IACpD,MAAM,EAAE,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAElC,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QACD,WAAW,EAAE,CAAA;QACb,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,CAAC,CAAA;IAED,OAAO,CACL,6BAAK,SAAS,EAAC,gBAAgB;QAC7B,gCACE,SAAS,EAAC,UAAU,EACpB,EAAE,EAAC,aAAa,EAChB,OAAO,EAAE,kBAAkB,sBACV,yBAAyB,IAEzC,CAAC,CAAC,sBAAsB,CAAC,CACnB;QACT,6BAAK,SAAS,EAAC,6BAA6B,EAAC,EAAE,EAAC,yBAAyB,IACtE,CAAC,CAAC,2BAA2B,CAAC,CAC3B,CACF,CACP,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- export declare function onMouseDownForAnnotation(e: React.MouseEvent, mouseUpCallback: (e: any) => void): void;
3
- export declare function hasTextSelectedInAnswerText(): boolean;
4
- //# sourceMappingURL=examAnnotationUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"examAnnotationUtils.d.ts","sourceRoot":"","sources":["../../../src/components/grading/examAnnotationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,QAuB9F;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAoCrD"}
@@ -1,51 +0,0 @@
1
- import { textAnnotationFromRange } from './editAnnotations';
2
- export function onMouseDownForAnnotation(e, mouseUpCallback) {
3
- function onMouseUpAfterAnswerMouseDown(e) {
4
- const target = e.target;
5
- window.removeEventListener('mouseup', onMouseUpAfterAnswerMouseDown);
6
- // Text annotation
7
- const selection = window.getSelection();
8
- if (selection && hasTextSelectedInAnswerText()) {
9
- const range = selection.getRangeAt(0);
10
- const position = textAnnotationFromRange(target, range);
11
- if (!position) {
12
- return;
13
- }
14
- const selectedText = selection.toString();
15
- mouseUpCallback({ ...position, selectedText });
16
- }
17
- }
18
- // Do annotations only with left mouse buttons
19
- if (e.button !== 0) {
20
- return;
21
- }
22
- window.addEventListener('mouseup', onMouseUpAfterAnswerMouseDown);
23
- }
24
- export function hasTextSelectedInAnswerText() {
25
- const selection = window.getSelection();
26
- return (selection !== null &&
27
- selectionInAnswerText(selection) &&
28
- (isRangeSelection(selection) || textSelectedInRange(selection)));
29
- function selectionInAnswerText(sel) {
30
- if (sel.type === 'None' || sel.type === 'Caret' || sel.rangeCount === 0) {
31
- return false;
32
- }
33
- const startContainer = sel.getRangeAt(0).startContainer;
34
- const endContainer = sel.getRangeAt(0).endContainer;
35
- const startParent = startContainer.parentElement;
36
- const endParent = endContainer.parentElement;
37
- const visibleMarkTagExistsInSelection = Array.from(sel.getRangeAt(0).cloneContents().children).some(child => child.tagName === 'MARK' && child.getAttribute('data-hidden') === 'false');
38
- return (sel.rangeCount > 0 &&
39
- startParent === endParent &&
40
- (startParent === null || startParent === void 0 ? void 0 : startParent.tagName) !== 'MARK' &&
41
- !visibleMarkTagExistsInSelection);
42
- }
43
- function isRangeSelection(sel) {
44
- return (sel === null || sel === void 0 ? void 0 : sel.type) === 'Range';
45
- }
46
- function textSelectedInRange(sel) {
47
- const range = sel === null || sel === void 0 ? void 0 : sel.getRangeAt(0);
48
- return !!sel.rangeCount && range.toString().length > 0;
49
- }
50
- }
51
- //# sourceMappingURL=examAnnotationUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"examAnnotationUtils.js","sourceRoot":"","sources":["../../../src/components/grading/examAnnotationUtils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import { AnnotationContextType } from '../context/AnnotationProvider';
3
- export declare const AnnotatableText: ({ node, annotationContextData }: {
4
- node: Node;
5
- annotationContextData: AnnotationContextType;
6
- }) => React.JSX.Element;
7
- //# sourceMappingURL=AnnotatableText.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnnotatableText.d.ts","sourceRoot":"","sources":["../../../src/components/shared/AnnotatableText.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAMrE,eAAO,MAAM,eAAe,oCAGzB;IACD,IAAI,EAAE,IAAI,CAAA;IACV,qBAAqB,EAAE,qBAAqB,CAAA;CAC7C,sBAqGA,CAAA"}
@@ -1,73 +0,0 @@
1
- import { partition } from 'lodash-es';
2
- import React, { useEffect, useRef } from 'react';
3
- import { getElementPath, queryAncestors } from '../../dom-utils';
4
- import { onMouseDownForAnnotation } from '../grading/examAnnotationUtils';
5
- const isExamAnnotation = (annotation) => 'annotationId' in annotation;
6
- export const AnnotatableText = ({ node, annotationContextData }) => {
7
- const { annotations, onClickAnnotation, setNewAnnotation, setNewAnnotationRef, newAnnotation } = annotationContextData;
8
- const path = getElementPath(node);
9
- const newAnnotationForThisNode = (newAnnotation === null || newAnnotation === void 0 ? void 0 : newAnnotation.annotationAnchor) === path ? newAnnotation : null;
10
- const thisNodeAnnotations = [
11
- ...((annotations === null || annotations === void 0 ? void 0 : annotations[path]) || []),
12
- ...(newAnnotationForThisNode ? [newAnnotationForThisNode] : [])
13
- ];
14
- const mouseUpCallback = (annotation) => {
15
- var _a;
16
- const displayNumber = ((_a = queryAncestors(node.parentElement, 'question')) === null || _a === void 0 ? void 0 : _a.getAttribute('display-number')) || '';
17
- setNewAnnotation({ ...annotation, annotationAnchor: path, displayNumber });
18
- };
19
- function onMouseDown(e) {
20
- const target = e.target;
21
- const clickIsInPopup = target.closest('.annotation-popup');
22
- if (!clickIsInPopup) {
23
- setNewAnnotation(null);
24
- }
25
- onMouseDownForAnnotation(e, mouseUpCallback);
26
- }
27
- return (React.createElement("span", { onMouseDown: onMouseDown, className: "e-annotatable", key: path }, (thisNodeAnnotations === null || thisNodeAnnotations === void 0 ? void 0 : thisNodeAnnotations.length) > 0 ? markText(node.textContent, thisNodeAnnotations) : node.textContent));
28
- function markText(text, annotations) {
29
- if (annotations.length === 0) {
30
- return [text];
31
- }
32
- function getMarkedText(annotation) {
33
- return text.substring(annotation.startIndex, annotation.startIndex + annotation.length);
34
- }
35
- const nodes = [];
36
- let lastIndex = 0;
37
- annotations.sort((a, b) => a.startIndex - b.startIndex);
38
- const [validAnnotations, invalidAnnotations] = partition(annotations, annotation => annotation.startIndex >= 0 && annotation.length > 0 && annotation.selectedText === getMarkedText(annotation));
39
- if (invalidAnnotations.length > 0) {
40
- console.error('Invalid annotations:', invalidAnnotations, invalidAnnotations.map(a => `selectedText (${a.selectedText}) does not match text picked by startIndex and length (${getMarkedText(a)})`));
41
- }
42
- for (const annotation of validAnnotations) {
43
- const markedText = getMarkedText(annotation);
44
- // Add unmarked text before this mark
45
- if (annotation.startIndex > lastIndex) {
46
- nodes.push(text.substring(lastIndex, annotation.startIndex));
47
- }
48
- // Add marked text
49
- const key = isExamAnnotation(annotation) ? annotation.annotationId : annotation.startIndex;
50
- nodes.push(annotation.hidden ? (React.createElement("mark", { key: key, className: "e-annotation", "data-annotation-id": isExamAnnotation(annotation) ? annotation.annotationId : '', "data-hidden": "true" })) : (React.createElement(Mark, { key: key, annotation: annotation, markedText: markedText, onClickAnnotation: onClickAnnotation, setNewAnnotationRef: setNewAnnotationRef })));
51
- // if annotation is hidden and it starts inside another annotation, we must not increment lastIndex (actually it would be decremented)
52
- const hiddenAnnotationInsideCurrentAnnotation = annotation.startIndex < lastIndex && annotation.hidden;
53
- if (!hiddenAnnotationInsideCurrentAnnotation) {
54
- lastIndex = annotation.startIndex + (annotation.hidden ? 0 : annotation.length);
55
- }
56
- }
57
- // Add remaining unmarked text
58
- nodes.push(text.substring(lastIndex));
59
- return nodes;
60
- }
61
- };
62
- const Mark = ({ annotation, markedText, onClickAnnotation, setNewAnnotationRef }) => {
63
- const markRef = useRef(null);
64
- useEffect(() => {
65
- if (markRef.current && !isExamAnnotation(annotation)) {
66
- setNewAnnotationRef(markRef.current);
67
- }
68
- }, []);
69
- return (React.createElement("mark", { ref: markRef, className: "e-annotation", "data-annotation-id": isExamAnnotation(annotation) ? annotation.annotationId : '', "data-hidden": "false", onClick: e => (isExamAnnotation(annotation) ? onClickAnnotation(e, annotation) : undefined) },
70
- markedText,
71
- (annotation === null || annotation === void 0 ? void 0 : annotation.markNumber) && React.createElement("sup", { className: "e-annotation", "data-content": annotation === null || annotation === void 0 ? void 0 : annotation.markNumber })));
72
- };
73
- //# sourceMappingURL=AnnotatableText.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnnotatableText.js","sourceRoot":"","sources":["../../../src/components/shared/AnnotatableText.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare function AnnotationPopup(): React.JSX.Element | null;
3
- //# sourceMappingURL=AnnotationPopup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnnotationPopup.d.ts","sourceRoot":"","sources":["../../../src/components/shared/AnnotationPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAK9D,wBAAgB,eAAe,6BA8E9B"}