@digabi/exam-engine-core 20.3.0 → 20.3.2-annoteta-react.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/annotations.test.d.ts +2 -0
- package/dist/__tests__/annotations.test.d.ts.map +1 -0
- package/dist/__tests__/annotations.test.js +179 -0
- package/dist/__tests__/annotations.test.js.map +1 -0
- package/dist/__tests__/testExamRendering.js.map +1 -1
- package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
- package/dist/components/attachments/Attachments.d.ts.map +1 -1
- package/dist/components/attachments/Attachments.js +17 -13
- package/dist/components/attachments/Attachments.js.map +1 -1
- package/dist/components/context/AnnotationContext.d.ts +9 -0
- package/dist/components/context/AnnotationContext.d.ts.map +1 -0
- package/dist/components/context/AnnotationContext.js +3 -0
- package/dist/components/context/AnnotationContext.js.map +1 -0
- package/dist/components/context/AnnotationProvider.d.ts +19 -0
- package/dist/components/context/AnnotationProvider.d.ts.map +1 -0
- package/dist/components/context/AnnotationProvider.js +19 -0
- package/dist/components/context/AnnotationProvider.js.map +1 -0
- package/dist/components/context/IsInSidebarContext.d.ts +7 -0
- package/dist/components/context/IsInSidebarContext.d.ts.map +1 -0
- package/dist/components/context/IsInSidebarContext.js +3 -0
- package/dist/components/context/IsInSidebarContext.js.map +1 -0
- package/dist/components/context/TOCContext.d.ts +0 -1
- package/dist/components/context/TOCContext.d.ts.map +1 -1
- package/dist/components/context/TOCContext.js.map +1 -1
- package/dist/components/exam/DropdownAnswer.d.ts.map +1 -1
- package/dist/components/exam/DropdownAnswer.js +9 -1
- package/dist/components/exam/DropdownAnswer.js.map +1 -1
- package/dist/components/exam/Exam.d.ts +6 -1
- package/dist/components/exam/Exam.d.ts.map +1 -1
- package/dist/components/exam/Exam.js +35 -32
- package/dist/components/exam/Exam.js.map +1 -1
- package/dist/components/grading/editAnnotations.d.ts.map +1 -1
- package/dist/components/grading/editAnnotations.js +1 -0
- package/dist/components/grading/editAnnotations.js.map +1 -1
- package/dist/components/grading/examAnnotationUtils.d.ts +4 -0
- package/dist/components/grading/examAnnotationUtils.d.ts.map +1 -0
- package/dist/components/grading/examAnnotationUtils.js +53 -0
- package/dist/components/grading/examAnnotationUtils.js.map +1 -0
- package/dist/components/grading/reactAnnotation.d.ts +4 -0
- package/dist/components/grading/reactAnnotation.d.ts.map +1 -0
- package/dist/components/grading/reactAnnotation.js +54 -0
- package/dist/components/grading/reactAnnotation.js.map +1 -0
- package/dist/components/grading-instructions/GradingInstructions.d.ts +2 -2
- package/dist/components/grading-instructions/GradingInstructions.d.ts.map +1 -1
- package/dist/components/grading-instructions/GradingInstructions.js +21 -15
- package/dist/components/grading-instructions/GradingInstructions.js.map +1 -1
- package/dist/components/shared/AnnotationPopup.d.ts +3 -0
- package/dist/components/shared/AnnotationPopup.d.ts.map +1 -0
- package/dist/components/shared/AnnotationPopup.js +61 -0
- package/dist/components/shared/AnnotationPopup.js.map +1 -0
- package/dist/components/shared/CreateAnnotationPopup.d.ts +6 -0
- package/dist/components/shared/CreateAnnotationPopup.d.ts.map +1 -0
- package/dist/components/shared/CreateAnnotationPopup.js +11 -0
- package/dist/components/shared/CreateAnnotationPopup.js.map +1 -0
- package/dist/components/shared/TOCQuestion.js +4 -4
- package/dist/components/shared/TOCQuestion.js.map +1 -1
- package/dist/components/shared/TOCSectionTitle.js +2 -2
- package/dist/components/shared/TOCSectionTitle.js.map +1 -1
- package/dist/components/shared/TableOfContents.d.ts +1 -1
- package/dist/components/shared/TableOfContents.d.ts.map +1 -1
- package/dist/components/shared/TableOfContents.js +3 -1
- package/dist/components/shared/TableOfContents.js.map +1 -1
- package/dist/createRenderChildNodes.d.ts.map +1 -1
- package/dist/createRenderChildNodes.js +85 -6
- package/dist/createRenderChildNodes.js.map +1 -1
- package/dist/main-bundle.js +1 -1
- package/dist/main.css +1 -1
- package/dist/types/Score.d.ts +17 -8
- package/dist/types/Score.d.ts.map +1 -1
- package/package.json +2 -2
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"file":"annotations.test.d.ts","sourceRoot":"","sources":["../../__tests__/annotations.test.tsx"],"names":[],"mappings":"AAWA,OAAO,2BAA2B,CAAA"}
         | 
| @@ -0,0 +1,179 @@ | |
| 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:-1 > 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: 67
         | 
| 82 | 
            +
                    });
         | 
| 83 | 
            +
                });
         | 
| 84 | 
            +
                it('callback is called when annotation is clicked', async () => {
         | 
| 85 | 
            +
                    const clickAnnotationMock = jest.fn();
         | 
| 86 | 
            +
                    const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), annotations: { [defaultAnnotationAnchor]: [createAnnotation(1, 1, 1)] }, onClickAnnotation: clickAnnotationMock, onSaveAnnotation: () => { } }));
         | 
| 87 | 
            +
                    await user_event_1.default.click(exam.container.querySelector('[data-annotation-id="1"]'));
         | 
| 88 | 
            +
                    expect(clickAnnotationMock).toHaveBeenCalledTimes(1);
         | 
| 89 | 
            +
                    expect(clickAnnotationMock).toHaveBeenCalledWith(expect.anything(), {
         | 
| 90 | 
            +
                        annotationAnchor: defaultAnnotationAnchor,
         | 
| 91 | 
            +
                        annotationId: 1,
         | 
| 92 | 
            +
                        displayNumber: '',
         | 
| 93 | 
            +
                        hidden: false,
         | 
| 94 | 
            +
                        length: 1,
         | 
| 95 | 
            +
                        message: '',
         | 
| 96 | 
            +
                        selectedText: '',
         | 
| 97 | 
            +
                        startIndex: 1
         | 
| 98 | 
            +
                    });
         | 
| 99 | 
            +
                });
         | 
| 100 | 
            +
                it('annotations are added to dom when provided', () => {
         | 
| 101 | 
            +
                    const annotationProps = {
         | 
| 102 | 
            +
                        annotations: {
         | 
| 103 | 
            +
                            [defaultAnnotationAnchor]: [createAnnotation(1, 1, 1), createAnnotation(3, 4, 2)]
         | 
| 104 | 
            +
                        },
         | 
| 105 | 
            +
                        onClickAnnotation: () => { },
         | 
| 106 | 
            +
                        onSaveAnnotation: () => { }
         | 
| 107 | 
            +
                    };
         | 
| 108 | 
            +
                    const exam = (0, react_1.render)(react_2.default.createElement(Exam_1.default, { ...getExamProps(), ...annotationProps }));
         | 
| 109 | 
            +
                    expect(exam.container.querySelector('[data-annotation-id="1"]')).toBeInTheDocument();
         | 
| 110 | 
            +
                    expect(exam.container.querySelector('[data-annotation-id="3"]')).toBeInTheDocument();
         | 
| 111 | 
            +
                });
         | 
| 112 | 
            +
                it('grading instructions can be annotated', async () => {
         | 
| 113 | 
            +
                    const gi = (0, react_1.render)(react_2.default.createElement(GradingInstructions_1.default, { ...getCommonProps(), annotations: {}, onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
         | 
| 114 | 
            +
                    await annotateText(gi, defaultTextToAnnotate);
         | 
| 115 | 
            +
                    expect(gi.getByTestId('annotation-popup')).toBeVisible();
         | 
| 116 | 
            +
                });
         | 
| 117 | 
            +
                it('attachments can be annotated', async () => {
         | 
| 118 | 
            +
                    const gi = (0, react_1.render)(react_2.default.createElement(Attachments_1.default, { ...getCommonProps(), annotations: {}, onClickAnnotation: () => { }, onSaveAnnotation: () => { } }));
         | 
| 119 | 
            +
                    await annotateText(gi, 'Mollit sint magna aliquip in.');
         | 
| 120 | 
            +
                    expect(gi.getByTestId('annotation-popup')).toBeVisible();
         | 
| 121 | 
            +
                });
         | 
| 122 | 
            +
                function createAnnotation(id, startIndex, length) {
         | 
| 123 | 
            +
                    return {
         | 
| 124 | 
            +
                        annotationId: id,
         | 
| 125 | 
            +
                        annotationAnchor: defaultAnnotationAnchor,
         | 
| 126 | 
            +
                        hidden: false,
         | 
| 127 | 
            +
                        startIndex,
         | 
| 128 | 
            +
                        length,
         | 
| 129 | 
            +
                        message: '',
         | 
| 130 | 
            +
                        displayNumber: '',
         | 
| 131 | 
            +
                        selectedText: ''
         | 
| 132 | 
            +
                    };
         | 
| 133 | 
            +
                }
         | 
| 134 | 
            +
                async function annotateText(exam, text) {
         | 
| 135 | 
            +
                    mockWindowSelection(text, text.length);
         | 
| 136 | 
            +
                    const textElement = exam.getByText(text);
         | 
| 137 | 
            +
                    await user_event_1.default.click(textElement);
         | 
| 138 | 
            +
                }
         | 
| 139 | 
            +
                function mockWindowSelection(text = 'mocked selection text', length = 5) {
         | 
| 140 | 
            +
                    ;
         | 
| 141 | 
            +
                    window.getSelection.mockImplementation(() => ({
         | 
| 142 | 
            +
                        toString: () => text,
         | 
| 143 | 
            +
                        rangeCount: 1,
         | 
| 144 | 
            +
                        getRangeAt: jest.fn().mockReturnValue({
         | 
| 145 | 
            +
                            startOffset: 0,
         | 
| 146 | 
            +
                            endOffset: length,
         | 
| 147 | 
            +
                            startContainer: {},
         | 
| 148 | 
            +
                            endContainer: {},
         | 
| 149 | 
            +
                            cloneContents: jest.fn().mockReturnValue({ children: [], childNodes: [] })
         | 
| 150 | 
            +
                        })
         | 
| 151 | 
            +
                    }));
         | 
| 152 | 
            +
                }
         | 
| 153 | 
            +
                function getCommonProps() {
         | 
| 154 | 
            +
                    return {
         | 
| 155 | 
            +
                        doc,
         | 
| 156 | 
            +
                        answers: [],
         | 
| 157 | 
            +
                        attachmentsURL: '/attachments',
         | 
| 158 | 
            +
                        resolveAttachment: (filename) => `/attachments/${encodeURIComponent(filename)}`
         | 
| 159 | 
            +
                    };
         | 
| 160 | 
            +
                }
         | 
| 161 | 
            +
                function getExamProps() {
         | 
| 162 | 
            +
                    const examProps = {
         | 
| 163 | 
            +
                        ...getCommonProps(),
         | 
| 164 | 
            +
                        casStatus: 'forbidden',
         | 
| 165 | 
            +
                        examServerApi: examServerApi_1.examServerApi,
         | 
| 166 | 
            +
                        restrictedAudioPlaybackStats: [],
         | 
| 167 | 
            +
                        studentName: '[Kokelaan Nimi]',
         | 
| 168 | 
            +
                        showUndoView: false,
         | 
| 169 | 
            +
                        undoViewProps: {
         | 
| 170 | 
            +
                            questionId: 0,
         | 
| 171 | 
            +
                            title: '',
         | 
| 172 | 
            +
                            close: () => undefined,
         | 
| 173 | 
            +
                            restoreAnswer: () => undefined
         | 
| 174 | 
            +
                        }
         | 
| 175 | 
            +
                    };
         | 
| 176 | 
            +
                    return examProps;
         | 
| 177 | 
            +
                }
         | 
| 178 | 
            +
            });
         | 
| 179 | 
            +
            //# sourceMappingURL=annotations.test.js.map
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"file":"annotations.test.js","sourceRoot":"","sources":["../../__tests__/annotations.test.tsx"],"names":[],"mappings":"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"}
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"testExamRendering.js","sourceRoot":"","sources":["../../__tests__/testExamRendering.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAQiC;AACjC,+FAAsE;AACtE,iEAAqD;AACrD,yEAAyF;AACzF,2BAAmC;AACnC,gDAAuB;AACvB,kDAAyB;AACzB,6DAA4C;AAC5C,6CAA8B;AAG9B,mDAA+C;AAC/C,yEAA+D;AAE/D,QAAQ,CAAC,IAAI,CAAC,IAAA,6BAAS,GAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;IAC5F,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAA;IAEzG,UAAU,CAAC,GAAG,EAAE;QACd,4EAA4E;QAC5E,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;YACzD,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,WAAW,EAAE,IAAI,CAAC,EAAE;gBACpB,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,UAAU,EAAE,IAAI,CAAC,EAAE;aACpB,CAAA;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAA,kCAAU,EAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAA,qDAA6B,EAAC,iBAAiB,CAAC,EAAE;YACnG,oBAAoB,EAAE,KAAK;SAC5B,CAAC,CAAA;QACF,KAAK,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,OAAO,EAAE,CAAC;YAC1D,MAAM,GAAG,GAAG,IAAA,mBAAS,EAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAChC,MAAM,WAAW,GAAoB;gBACnC,GAAG;gBACH,OAAO,EAAE,EAAE;gBACX,cAAc,EAAE,cAAc;gBAC9B,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,gBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE;gBACvF,QAAQ;aACT,CAAA;YACD,MAAM,SAAS,GAAc;gBAC3B,GAAG,WAAW;gBACd,SAAS,EAAE,WAAW;gBACtB,aAAa,EAAb,6BAAa;gBACb,4BAA4B,EAAE,EAAE;gBAChC,WAAW,EAAE,iBAAiB;gBAC9B,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE;oBACb,UAAU,EAAE,CAAC;oBACb,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;oBACtB,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;iBAC/B;aACF,CAAA; | 
| 1 | 
            +
            {"version":3,"file":"testExamRendering.js","sourceRoot":"","sources":["../../__tests__/testExamRendering.tsx"],"names":[],"mappings":"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"}
         |