@digabi/exam-engine-core 19.0.4-alpha.3 → 19.0.4-alpha.4
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__/tsconfig.tsbuildinfo +1 -1
 - package/dist/components/grading/AnswerCharacterCounter.d.ts +6 -0
 - package/dist/components/grading/AnswerCharacterCounter.d.ts.map +1 -0
 - package/dist/components/grading/AnswerCharacterCounter.js +21 -0
 - package/dist/components/grading/AnswerCharacterCounter.js.map +1 -0
 - package/dist/components/grading/Grading.d.ts.map +1 -1
 - package/dist/components/grading/Grading.js +12 -12
 - package/dist/components/grading/Grading.js.map +1 -1
 - package/dist/components/grading/GradingAnswer.d.ts +4 -3
 - package/dist/components/grading/GradingAnswer.d.ts.map +1 -1
 - package/dist/components/grading/GradingAnswer.js +94 -82
 - package/dist/components/grading/GradingAnswer.js.map +1 -1
 - package/dist/components/grading/editAnnotations.d.ts +4 -6
 - package/dist/components/grading/editAnnotations.d.ts.map +1 -1
 - package/dist/components/grading/editAnnotations.js +18 -13
 - package/dist/components/grading/editAnnotations.js.map +1 -1
 - package/dist/components/grading/largeImageDetector.js +3 -3
 - package/dist/components/grading/largeImageDetector.js.map +1 -1
 - package/dist/main-bundle.js +1 -1
 - package/dist/main.css +1 -1
 - package/dist/renderAnnotations.d.ts +2 -2
 - package/dist/renderAnnotations.d.ts.map +1 -1
 - package/dist/renderAnnotations.js +9 -7
 - package/dist/renderAnnotations.js.map +1 -1
 - package/package.json +2 -2
 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"AnswerCharacterCounter.d.ts","sourceRoot":"","sources":["../../../src/components/grading/AnswerCharacterCounter.tsx"],"names":[],"mappings":";AAGA,wBAAgB,sBAAsB,CAAC,EACrC,cAAc,EACd,SAAS,GACV,EAAE;IACD,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,eAqBA"}
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import React from 'react';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { useExamTranslation } from '../../i18n';
         
     | 
| 
      
 3 
     | 
    
         
            +
            export function AnswerCharacterCounter({ characterCount, maxLength, }) {
         
     | 
| 
      
 4 
     | 
    
         
            +
                const { t } = useExamTranslation();
         
     | 
| 
      
 5 
     | 
    
         
            +
                const percentage = countSurplusPercentage(characterCount, maxLength);
         
     | 
| 
      
 6 
     | 
    
         
            +
                return (React.createElement("div", { className: "e-font-size-xs e-grading-answer-length" },
         
     | 
| 
      
 7 
     | 
    
         
            +
                    t('answer-length', {
         
     | 
| 
      
 8 
     | 
    
         
            +
                        count: characterCount,
         
     | 
| 
      
 9 
     | 
    
         
            +
                    }),
         
     | 
| 
      
 10 
     | 
    
         
            +
                    percentage > 0 ? (React.createElement("span", { className: "e-grading-answer-max-length-surplus" }, t('max-length-surplus', {
         
     | 
| 
      
 11 
     | 
    
         
            +
                        maxLength,
         
     | 
| 
      
 12 
     | 
    
         
            +
                        percentage,
         
     | 
| 
      
 13 
     | 
    
         
            +
                    }))) : ('')));
         
     | 
| 
      
 14 
     | 
    
         
            +
            }
         
     | 
| 
      
 15 
     | 
    
         
            +
            function countSurplusPercentage(characters, maxCharacters) {
         
     | 
| 
      
 16 
     | 
    
         
            +
                if (!maxCharacters || characters <= maxCharacters) {
         
     | 
| 
      
 17 
     | 
    
         
            +
                    return 0;
         
     | 
| 
      
 18 
     | 
    
         
            +
                }
         
     | 
| 
      
 19 
     | 
    
         
            +
                return Math.floor((100 * characters) / maxCharacters - 100);
         
     | 
| 
      
 20 
     | 
    
         
            +
            }
         
     | 
| 
      
 21 
     | 
    
         
            +
            //# sourceMappingURL=AnswerCharacterCounter.js.map
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"AnswerCharacterCounter.js","sourceRoot":"","sources":["../../../src/components/grading/AnswerCharacterCounter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,UAAU,sBAAsB,CAAC,EACrC,cAAc,EACd,SAAS,GAIV;IACC,MAAM,EAAE,CAAC,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG,sBAAsB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;IAEpE,OAAO,CACL,6BAAK,SAAS,EAAC,wCAAwC;QACpD,CAAC,CAAC,eAAe,EAAE;YAClB,KAAK,EAAE,cAAc;SACtB,CAAC;QACD,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAChB,8BAAM,SAAS,EAAC,qCAAqC,IAClD,CAAC,CAAC,oBAAoB,EAAE;YACvB,SAAS;YACT,UAAU;SACX,CAAC,CACG,CACR,CAAC,CAAC,CAAC,CACF,EAAE,CACH,CACG,CACP,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkB,EAAE,aAAwC;IAC1F,IAAI,CAAC,aAAa,IAAI,UAAU,IAAI,aAAa,EAAE;QACjD,OAAO,CAAC,CAAA;KACT;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,aAAa,GAAG,GAAG,CAAC,CAAA;AAC7D,CAAC"}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"Grading.d.ts","sourceRoot":"","sources":["../../../src/components/grading/Grading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAA;; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"Grading.d.ts","sourceRoot":"","sources":["../../../src/components/grading/Grading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAA;;AAmHtE,wBAA6E"}
         
     | 
| 
         @@ -49,29 +49,29 @@ function Grading() { 
     | 
|
| 
       49 
49 
     | 
    
         
             
                    pregrading: [],
         
     | 
| 
       50 
50 
     | 
    
         
             
                    censoring: [],
         
     | 
| 
       51 
51 
     | 
    
         
             
                });
         
     | 
| 
       52 
     | 
    
         
            -
                 
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
                useEffect(() => {
         
     | 
| 
      
 53 
     | 
    
         
            +
                    setAnnotations(annotationsStorage.current[answerId]);
         
     | 
| 
      
 54 
     | 
    
         
            +
                });
         
     | 
| 
      
 55 
     | 
    
         
            +
                const { type: answerType, value } = answersByQuestionId[answerId];
         
     | 
| 
      
 56 
     | 
    
         
            +
                if (answerType === 'choice') {
         
     | 
| 
       54 
57 
     | 
    
         
             
                    return React.createElement("div", null, "choice answer");
         
     | 
| 
       55 
58 
     | 
    
         
             
                }
         
     | 
| 
       56 
     | 
    
         
            -
                function selectQuestion(id) {
         
     | 
| 
      
 59 
     | 
    
         
            +
                function selectQuestion(e, id) {
         
     | 
| 
      
 60 
     | 
    
         
            +
                    e.preventDefault();
         
     | 
| 
       57 
61 
     | 
    
         
             
                    setAnswerId(id);
         
     | 
| 
       58 
62 
     | 
    
         
             
                    setAnnotations(annotationsStorage.current[id]);
         
     | 
| 
       59 
63 
     | 
    
         
             
                }
         
     | 
| 
       60 
64 
     | 
    
         
             
                function saveAnnotations(annotations) {
         
     | 
| 
       61 
65 
     | 
    
         
             
                    annotationsStorage.current[answerId] = annotations;
         
     | 
| 
       62 
     | 
    
         
            -
                     
     | 
| 
      
 66 
     | 
    
         
            +
                    setAnnotations({ ...annotationsStorage.current[answerId] });
         
     | 
| 
       63 
67 
     | 
    
         
             
                }
         
     | 
| 
       64 
68 
     | 
    
         
             
                return (React.createElement(I18nextProvider, { i18n: i18n },
         
     | 
| 
       65 
69 
     | 
    
         
             
                    React.createElement("main", { className: "e-exam" },
         
     | 
| 
       66 
     | 
    
         
            -
                        React.createElement("div",  
     | 
| 
       67 
     | 
    
         
            -
                        React.createElement("div", null,
         
     | 
| 
       68 
     | 
    
         
            -
                            "Teht\u00E4v\u00E4 ",
         
     | 
| 
       69 
     | 
    
         
            -
                            displayNumber,
         
     | 
| 
       70 
     | 
    
         
            -
                            " (",
         
     | 
| 
       71 
     | 
    
         
            -
                            questionId,
         
     | 
| 
       72 
     | 
    
         
            -
                            ")"),
         
     | 
| 
      
 70 
     | 
    
         
            +
                        React.createElement("div", { className: "grading-navi" }, answerIds.map((id) => id === answerId ? (React.createElement("span", { key: id, className: "grading-navi-item" }, answersByQuestionId[id].displayNumber)) : (React.createElement("a", { className: "grading-navi-item", href: "", onClick: (e) => selectQuestion(e, id), key: id }, answersByQuestionId[id].displayNumber)))),
         
     | 
| 
       73 
71 
     | 
    
         
             
                        React.createElement(GradingAnswer, { ...{
         
     | 
| 
       74 
     | 
    
         
            -
                                 
     | 
| 
      
 72 
     | 
    
         
            +
                                isReadOnly: false,
         
     | 
| 
      
 73 
     | 
    
         
            +
                                answerType,
         
     | 
| 
      
 74 
     | 
    
         
            +
                                gradingRole: 'censoring',
         
     | 
| 
       75 
75 
     | 
    
         
             
                                value,
         
     | 
| 
       76 
76 
     | 
    
         
             
                                annotations,
         
     | 
| 
       77 
77 
     | 
    
         
             
                                saveAnnotations,
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"Grading.js","sourceRoot":"","sources":["../../../src/components/grading/Grading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,SAAS,OAAO;IACd,MAAM,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IAE1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IAC/C,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,8CAAqB,CAAA;KAC7B;IACD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAE9D,MAAM,kBAAkB,GAAG,MAAM,CAC/B,MAAM,CAAC,WAAW,CAChB,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QACpB,EAAE;QACF;YACE,UAAU,EAAE;gBACV;oBACE,UAAU,EAAE,CAAC;oBACb,MAAM,EAAE,CAAC;oBACT,OAAO,EAAE,IAAI;iBACd;gBACD;oBACE,CAAC,EAAE,mBAAmB;oBACtB,CAAC,EAAE,kBAAkB;oBACrB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,mBAAmB;oBAC1B,MAAM,EAAE,mBAAmB;oBAC3B,OAAO,EAAE,IAAI;oBACb,eAAe,EAAE,CAAC;iBACnB;gBACD;oBACE,EAAE,EAAE,kBAAkB;oBACtB,EAAE,EAAE,kBAAkB;oBACtB,EAAE,EAAE,iBAAiB;oBACrB,EAAE,EAAE,iBAAiB;oBACrB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,SAAS;oBAClB,eAAe,EAAE,CAAC;iBACnB;aACF;YACD,SAAS,EAAE,EAAE;SACd;KACF,CAAC,CACH,CACF,CAAA;IAED,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAwD;QACpG,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;KACd,CAAC,CAAA;IAEF, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"Grading.js","sourceRoot":"","sources":["../../../src/components/grading/Grading.tsx"],"names":[],"mappings":"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"}
         
     | 
| 
         @@ -4,15 +4,16 @@ type Annotations = { 
     | 
|
| 
       4 
4 
     | 
    
         
             
                pregrading: Annotation[];
         
     | 
| 
       5 
5 
     | 
    
         
             
                censoring: Annotation[];
         
     | 
| 
       6 
6 
     | 
    
         
             
            };
         
     | 
| 
       7 
     | 
    
         
            -
            type  
     | 
| 
       8 
     | 
    
         
            -
            export declare function GradingAnswer({ answer: { type, characterCount, value }, isReadOnly, gradingRole, annotations, saveAnnotations, maxLength, }: {
         
     | 
| 
      
 7 
     | 
    
         
            +
            type GradingRole = 'pregrading' | 'censoring';
         
     | 
| 
      
 8 
     | 
    
         
            +
            export declare function GradingAnswer({ answer: { type, characterCount, value }, language, isReadOnly, gradingRole, annotations, saveAnnotations, maxLength, }: {
         
     | 
| 
       9 
9 
     | 
    
         
             
                answer: {
         
     | 
| 
       10 
10 
     | 
    
         
             
                    type: 'richText' | 'text';
         
     | 
| 
       11 
11 
     | 
    
         
             
                    characterCount: number;
         
     | 
| 
       12 
12 
     | 
    
         
             
                    value: string;
         
     | 
| 
       13 
13 
     | 
    
         
             
                };
         
     | 
| 
      
 14 
     | 
    
         
            +
                language: string;
         
     | 
| 
       14 
15 
     | 
    
         
             
                isReadOnly: boolean;
         
     | 
| 
       15 
     | 
    
         
            -
                gradingRole:  
     | 
| 
      
 16 
     | 
    
         
            +
                gradingRole: GradingRole;
         
     | 
| 
       16 
17 
     | 
    
         
             
                maxLength?: number;
         
     | 
| 
       17 
18 
     | 
    
         
             
                annotations: Annotations;
         
     | 
| 
       18 
19 
     | 
    
         
             
                saveAnnotations: (annotations: Annotations) => void;
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"GradingAnswer.d.ts","sourceRoot":"","sources":["../../../src/components/grading/GradingAnswer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"GradingAnswer.d.ts","sourceRoot":"","sources":["../../../src/components/grading/GradingAnswer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAyBlC,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;AAC7C,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EACvC,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,SAAS,GACV,EAAE;IACD,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;CACpD,eAkSA"}
         
     | 
| 
         @@ -1,10 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import React, { useLayoutEffect, useRef } from 'react';
         
     | 
| 
       2 
     | 
    
         
            -
            import { annotationFromMousePosition, hasTextSelectedInAnswerText, imageAnnotationMouseDownInfo, mergeAnnotation, selectionHasNothingToUnderline,  
     | 
| 
      
 1 
     | 
    
         
            +
            import React, { useEffect, useLayoutEffect, useRef } from 'react';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { annotationFromMousePosition, getOverlappingMessages, hasTextSelectedInAnswerText, imageAnnotationMouseDownInfo, mergeAnnotation, selectionHasNothingToUnderline, showAndPositionElement, textAnnotationFromRange, } from './editAnnotations';
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { renderAnnotations, renderImageAnnotationByImage, updateImageAnnotationMarkSize, wrapAllImages, } from '../../renderAnnotations';
         
     | 
| 
       4 
4 
     | 
    
         
             
            import GradingAnswerAnnotationList from './GradingAnswerAnnotationList';
         
     | 
| 
       5 
     | 
    
         
            -
            import {  
     | 
| 
      
 5 
     | 
    
         
            +
            import { changeLanguage, initI18n } from '../../i18n';
         
     | 
| 
       6 
6 
     | 
    
         
             
            import { updateLargeImageWarnings } from './largeImageDetector';
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
            import { I18nextProvider } from 'react-i18next';
         
     | 
| 
      
 8 
     | 
    
         
            +
            import { useCached } from '../../useCached';
         
     | 
| 
      
 9 
     | 
    
         
            +
            import { AnswerCharacterCounter } from './AnswerCharacterCounter';
         
     | 
| 
      
 10 
     | 
    
         
            +
            export function GradingAnswer({ answer: { type, characterCount, value }, language, isReadOnly, gradingRole, annotations, saveAnnotations, maxLength, }) {
         
     | 
| 
       8 
11 
     | 
    
         
             
                const answerRef = useRef(null);
         
     | 
| 
       9 
12 
     | 
    
         
             
                const popupRef = useRef(null);
         
     | 
| 
       10 
13 
     | 
    
         
             
                const messageRef = useRef(null);
         
     | 
| 
         @@ -12,15 +15,33 @@ export function GradingAnswer({ answer: { type, characterCount, value }, isReadO 
     | 
|
| 
       12 
15 
     | 
    
         
             
                let newAnnotationObject;
         
     | 
| 
       13 
16 
     | 
    
         
             
                let savedAnnotations;
         
     | 
| 
       14 
17 
     | 
    
         
             
                const imgAnnotationState = { start: undefined, element: undefined, img: undefined };
         
     | 
| 
       15 
     | 
    
         
            -
                let  
     | 
| 
       16 
     | 
    
         
            -
                let closeTooltipTimeout;
         
     | 
| 
      
 18 
     | 
    
         
            +
                let isEditAnnotationPopupVisible = false;
         
     | 
| 
       17 
19 
     | 
    
         
             
                let annotationDataForTooltip;
         
     | 
| 
      
 20 
     | 
    
         
            +
                let annotationPositionForPopup;
         
     | 
| 
      
 21 
     | 
    
         
            +
                let hideTooltipTimeout;
         
     | 
| 
       18 
22 
     | 
    
         
             
                let windowResizeTimeout;
         
     | 
| 
       19 
     | 
    
         
            -
                 
     | 
| 
      
 23 
     | 
    
         
            +
                function onAnnotationOrListClick(e) {
         
     | 
| 
      
 24 
     | 
    
         
            +
                    var _a;
         
     | 
| 
      
 25 
     | 
    
         
            +
                    const element = e.target;
         
     | 
| 
      
 26 
     | 
    
         
            +
                    if (element instanceof HTMLElement) {
         
     | 
| 
      
 27 
     | 
    
         
            +
                        if (element.tagName === 'MARK') {
         
     | 
| 
      
 28 
     | 
    
         
            +
                            showTooltip(element);
         
     | 
| 
      
 29 
     | 
    
         
            +
                        }
         
     | 
| 
      
 30 
     | 
    
         
            +
                        else if (element.tagName === 'LI') {
         
     | 
| 
      
 31 
     | 
    
         
            +
                            const index = (_a = element.dataset.listNumber) === null || _a === void 0 ? void 0 : _a.replace(')', '');
         
     | 
| 
      
 32 
     | 
    
         
            +
                            const mark = document.querySelector(`.e-annotation[data-index="${index}"]`);
         
     | 
| 
      
 33 
     | 
    
         
            +
                            showTooltip(mark);
         
     | 
| 
      
 34 
     | 
    
         
            +
                            mark.scrollIntoView({ block: 'center', behavior: 'smooth' });
         
     | 
| 
      
 35 
     | 
    
         
            +
                        }
         
     | 
| 
      
 36 
     | 
    
         
            +
                        else if (annotationDataForTooltip) {
         
     | 
| 
      
 37 
     | 
    
         
            +
                            hideTooltip();
         
     | 
| 
      
 38 
     | 
    
         
            +
                        }
         
     | 
| 
      
 39 
     | 
    
         
            +
                    }
         
     | 
| 
      
 40 
     | 
    
         
            +
                }
         
     | 
| 
       20 
41 
     | 
    
         
             
                function editExistingAnnotation(e) {
         
     | 
| 
       21 
42 
     | 
    
         
             
                    if (e.target.closest('.editable')) {
         
     | 
| 
       22 
43 
     | 
    
         
             
                        toggle(tooltipRef.current, false);
         
     | 
| 
       23 
     | 
    
         
            -
                         
     | 
| 
      
 44 
     | 
    
         
            +
                        showExistingAnnotationPopup(annotationPositionForPopup);
         
     | 
| 
       24 
45 
     | 
    
         
             
                    }
         
     | 
| 
       25 
46 
     | 
    
         
             
                }
         
     | 
| 
       26 
47 
     | 
    
         
             
                useLayoutEffect(() => {
         
     | 
| 
         @@ -35,98 +56,98 @@ export function GradingAnswer({ answer: { type, characterCount, value }, isReadO 
     | 
|
| 
       35 
56 
     | 
    
         
             
                        windowResizeTimeout = setTimeout(() => updateLargeImageWarnings(answerRef.current), 1000);
         
     | 
| 
       36 
57 
     | 
    
         
             
                    };
         
     | 
| 
       37 
58 
     | 
    
         
             
                });
         
     | 
| 
       38 
     | 
    
         
            -
                const  
     | 
| 
       39 
     | 
    
         
            -
                 
     | 
| 
       40 
     | 
    
         
            -
                return (React.createElement( 
     | 
| 
       41 
     | 
    
         
            -
                    React.createElement("div", {  
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                        }),
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                             
     | 
| 
       48 
     | 
    
         
            -
                             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                        React.createElement(" 
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                        React.createElement("span", { onClick: (e) => editExistingAnnotation(e), className: "e-grading-answer-tooltip-label" }, "tooltip text"),
         
     | 
| 
       56 
     | 
    
         
            -
                        React.createElement("button", { onClick: (e) => removeAnnotation(e), className: "e-grading-answer-tooltip-remove" }, "\u00D7"))));
         
     | 
| 
      
 59 
     | 
    
         
            +
                const i18n = useCached(() => initI18n(language));
         
     | 
| 
      
 60 
     | 
    
         
            +
                useEffect(changeLanguage(i18n, language));
         
     | 
| 
      
 61 
     | 
    
         
            +
                return (React.createElement(I18nextProvider, { i18n: i18n },
         
     | 
| 
      
 62 
     | 
    
         
            +
                    React.createElement("div", { onClick: (e) => onAnnotationOrListClick(e), className: "e-grading-answer-wrapper" },
         
     | 
| 
      
 63 
     | 
    
         
            +
                        React.createElement("div", { className: "e-grading-answer e-line-height-l e-mrg-b-1", ref: answerRef, onMouseDown: (e) => onAnswerMouseDown(e), onMouseOver: (e) => onMouseOverAnnotation(e.target) }),
         
     | 
| 
      
 64 
     | 
    
         
            +
                        React.createElement(AnswerCharacterCounter, { characterCount: characterCount, maxLength: maxLength }),
         
     | 
| 
      
 65 
     | 
    
         
            +
                        React.createElement(GradingAnswerAnnotationList, { censoring: annotations.censoring, pregrading: annotations.pregrading, singleGrading: false }),
         
     | 
| 
      
 66 
     | 
    
         
            +
                        React.createElement("form", { style: { display: 'none' }, ref: popupRef, className: "e-grading-answer-popup e-grading-answer-add-annotation", onSubmit: (e) => onSubmitAnnotation(e) },
         
     | 
| 
      
 67 
     | 
    
         
            +
                            React.createElement("input", { name: "message", className: "e-grading-answer-add-annotation-text", type: "text", ref: messageRef }),
         
     | 
| 
      
 68 
     | 
    
         
            +
                            React.createElement("button", { className: "e-grading-answer-add-annotation-button", type: "submit", "data-i18n": "arpa.annotate" }, "Merkitse"),
         
     | 
| 
      
 69 
     | 
    
         
            +
                            React.createElement("button", { className: "e-grading-answer-close-popup", onClick: (e) => {
         
     | 
| 
      
 70 
     | 
    
         
            +
                                    e.preventDefault();
         
     | 
| 
      
 71 
     | 
    
         
            +
                                    hideAnnotationPopupAndRefresh();
         
     | 
| 
      
 72 
     | 
    
         
            +
                                } }, "\u00D7")),
         
     | 
| 
      
 73 
     | 
    
         
            +
                        React.createElement("div", { style: { display: 'none' }, ref: tooltipRef, className: "e-grading-answer-tooltip e-grading-answer-popup", onMouseOver: onMouseOverTooltip, onMouseOut: hideTooltip },
         
     | 
| 
      
 74 
     | 
    
         
            +
                            React.createElement("span", { onClick: (e) => editExistingAnnotation(e), className: "e-grading-answer-tooltip-label" }, "tooltip text"),
         
     | 
| 
      
 75 
     | 
    
         
            +
                            React.createElement("button", { onClick: (e) => removeAnnotation(e), className: "e-grading-answer-tooltip-remove" }, "\u00D7")))));
         
     | 
| 
       57 
76 
     | 
    
         
             
                function removeAnnotation(e) {
         
     | 
| 
       58 
77 
     | 
    
         
             
                    e.preventDefault();
         
     | 
| 
       59 
     | 
    
         
            -
                     
     | 
| 
       60 
     | 
    
         
            -
                    savedAnnotations[annotationDataForTooltip. 
     | 
| 
      
 78 
     | 
    
         
            +
                    hideTooltip();
         
     | 
| 
      
 79 
     | 
    
         
            +
                    savedAnnotations[annotationDataForTooltip.role].splice(annotationDataForTooltip.index, 1);
         
     | 
| 
       61 
80 
     | 
    
         
             
                    annotationDataForTooltip = undefined;
         
     | 
| 
       62 
81 
     | 
    
         
             
                    saveAnnotations(savedAnnotations);
         
     | 
| 
       63 
82 
     | 
    
         
             
                }
         
     | 
| 
       64 
     | 
    
         
            -
                function  
     | 
| 
       65 
     | 
    
         
            -
                     
     | 
| 
      
 83 
     | 
    
         
            +
                function hideTooltip() {
         
     | 
| 
      
 84 
     | 
    
         
            +
                    hideTooltipTimeout = setTimeout(() => {
         
     | 
| 
       66 
85 
     | 
    
         
             
                        toggle(tooltipRef.current, false);
         
     | 
| 
       67 
86 
     | 
    
         
             
                    }, 400);
         
     | 
| 
       68 
87 
     | 
    
         
             
                }
         
     | 
| 
       69 
88 
     | 
    
         
             
                function onMouseOverTooltip() {
         
     | 
| 
       70 
     | 
    
         
            -
                    clearTimeout( 
     | 
| 
      
 89 
     | 
    
         
            +
                    clearTimeout(hideTooltipTimeout);
         
     | 
| 
       71 
90 
     | 
    
         
             
                }
         
     | 
| 
       72 
     | 
    
         
            -
                function  
     | 
| 
      
 91 
     | 
    
         
            +
                function onMouseOutFromTooltip(e) {
         
     | 
| 
       73 
92 
     | 
    
         
             
                    const target = e.target;
         
     | 
| 
       74 
93 
     | 
    
         
             
                    if (target.tagName === 'MARK') {
         
     | 
| 
       75 
     | 
    
         
            -
                        clearTimeout( 
     | 
| 
       76 
     | 
    
         
            -
                         
     | 
| 
      
 94 
     | 
    
         
            +
                        clearTimeout(hideTooltipTimeout);
         
     | 
| 
      
 95 
     | 
    
         
            +
                        hideTooltip();
         
     | 
| 
       77 
96 
     | 
    
         
             
                    }
         
     | 
| 
       78 
     | 
    
         
            -
                    answerRef.current.removeEventListener('mouseout',  
     | 
| 
      
 97 
     | 
    
         
            +
                    answerRef.current.removeEventListener('mouseout', onMouseOutFromTooltip);
         
     | 
| 
       79 
98 
     | 
    
         
             
                }
         
     | 
| 
       80 
99 
     | 
    
         
             
                function showTooltip(target) {
         
     | 
| 
       81 
     | 
    
         
            -
                    clearTimeout( 
     | 
| 
      
 100 
     | 
    
         
            +
                    clearTimeout(hideTooltipTimeout);
         
     | 
| 
       82 
101 
     | 
    
         
             
                    const tooltip = tooltipRef.current;
         
     | 
| 
       83 
102 
     | 
    
         
             
                    const { type, listIndex, message } = target.dataset;
         
     | 
| 
       84 
103 
     | 
    
         
             
                    tooltip.classList.toggle('editable', !isReadOnly && type === gradingRole);
         
     | 
| 
       85 
     | 
    
         
            -
                     
     | 
| 
       86 
     | 
    
         
            -
                     
     | 
| 
       87 
     | 
    
         
            -
                    Object.assign(tooltip.style, showAndPositionPopup(rect, answerRef.current));
         
     | 
| 
      
 104 
     | 
    
         
            +
                    annotationPositionForPopup = target.getBoundingClientRect();
         
     | 
| 
      
 105 
     | 
    
         
            +
                    showAndPositionElement(annotationPositionForPopup, answerRef.current, tooltip);
         
     | 
| 
       88 
106 
     | 
    
         
             
                    tooltip.querySelector('.e-grading-answer-tooltip-label').textContent = message || '–';
         
     | 
| 
       89 
     | 
    
         
            -
                    annotationDataForTooltip = { index: Number(listIndex),  
     | 
| 
       90 
     | 
    
         
            -
                    answerRef.current.addEventListener('mouseout',  
     | 
| 
      
 107 
     | 
    
         
            +
                    annotationDataForTooltip = { index: Number(listIndex), role: type, message: message || '' };
         
     | 
| 
      
 108 
     | 
    
         
            +
                    answerRef.current.addEventListener('mouseout', onMouseOutFromTooltip);
         
     | 
| 
       91 
109 
     | 
    
         
             
                }
         
     | 
| 
       92 
     | 
    
         
            -
                function  
     | 
| 
      
 110 
     | 
    
         
            +
                function onMouseOverAnnotation(target) {
         
     | 
| 
       93 
111 
     | 
    
         
             
                    if (target.tagName === 'MARK' &&
         
     | 
| 
       94 
     | 
    
         
            -
                        ! 
     | 
| 
      
 112 
     | 
    
         
            +
                        !isEditAnnotationPopupVisible &&
         
     | 
| 
       95 
113 
     | 
    
         
             
                        (!hasTextSelectedInAnswerText() || isReadOnly) &&
         
     | 
| 
       96 
114 
     | 
    
         
             
                        !imgAnnotationState.element) {
         
     | 
| 
       97 
115 
     | 
    
         
             
                        showTooltip(target);
         
     | 
| 
       98 
116 
     | 
    
         
             
                    }
         
     | 
| 
       99 
117 
     | 
    
         
             
                }
         
     | 
| 
       100 
     | 
    
         
            -
                function showAnnotationPopup(rect) {
         
     | 
| 
      
 118 
     | 
    
         
            +
                function showAnnotationPopup(rect, message) {
         
     | 
| 
       101 
119 
     | 
    
         
             
                    annotationDataForTooltip = undefined;
         
     | 
| 
       102 
     | 
    
         
            -
                    setupAnnotationPopup(rect,  
     | 
| 
      
 120 
     | 
    
         
            +
                    setupAnnotationPopup(rect, message);
         
     | 
| 
       103 
121 
     | 
    
         
             
                }
         
     | 
| 
       104 
     | 
    
         
            -
                function  
     | 
| 
      
 122 
     | 
    
         
            +
                function showExistingAnnotationPopup(rect) {
         
     | 
| 
       105 
123 
     | 
    
         
             
                    setupAnnotationPopup(rect, annotationDataForTooltip.message);
         
     | 
| 
       106 
124 
     | 
    
         
             
                }
         
     | 
| 
       107 
125 
     | 
    
         
             
                function setupAnnotationPopup(rect, message) {
         
     | 
| 
       108 
     | 
    
         
            -
                     
     | 
| 
      
 126 
     | 
    
         
            +
                    // Could be active from previous popup
         
     | 
| 
      
 127 
     | 
    
         
            +
                    window.removeEventListener('keydown', onKeyUpInAnnotationPopup);
         
     | 
| 
      
 128 
     | 
    
         
            +
                    showAndPositionElement(rect, answerRef.current, popupRef.current);
         
     | 
| 
       109 
129 
     | 
    
         
             
                    const inputElement = messageRef.current;
         
     | 
| 
       110 
130 
     | 
    
         
             
                    inputElement.value = message;
         
     | 
| 
       111 
131 
     | 
    
         
             
                    inputElement.focus();
         
     | 
| 
       112 
     | 
    
         
            -
                     
     | 
| 
       113 
     | 
    
         
            -
                    window.addEventListener('keydown',  
     | 
| 
      
 132 
     | 
    
         
            +
                    isEditAnnotationPopupVisible = true;
         
     | 
| 
      
 133 
     | 
    
         
            +
                    window.addEventListener('keydown', onKeyUpInAnnotationPopup);
         
     | 
| 
       114 
134 
     | 
    
         
             
                }
         
     | 
| 
       115 
     | 
    
         
            -
                function  
     | 
| 
      
 135 
     | 
    
         
            +
                function hideAnnotationPopupAndRefresh() {
         
     | 
| 
       116 
136 
     | 
    
         
             
                    newAnnotationObject = undefined;
         
     | 
| 
       117 
137 
     | 
    
         
             
                    imgAnnotationState.element = undefined;
         
     | 
| 
       118 
138 
     | 
    
         
             
                    imgAnnotationState.img = undefined;
         
     | 
| 
       119 
     | 
    
         
            -
                     
     | 
| 
       120 
     | 
    
         
            -
                    window.removeEventListener('keydown',  
     | 
| 
      
 139 
     | 
    
         
            +
                    isEditAnnotationPopupVisible = false;
         
     | 
| 
      
 140 
     | 
    
         
            +
                    window.removeEventListener('keydown', onKeyUpInAnnotationPopup);
         
     | 
| 
       121 
141 
     | 
    
         
             
                    toggle(popupRef.current, false);
         
     | 
| 
       122 
142 
     | 
    
         
             
                    renderAnswerWithAnnotations(savedAnnotations);
         
     | 
| 
       123 
143 
     | 
    
         
             
                }
         
     | 
| 
       124 
     | 
    
         
            -
                function  
     | 
| 
      
 144 
     | 
    
         
            +
                function onAnswerMouseDown(e) {
         
     | 
| 
       125 
145 
     | 
    
         
             
                    var _a;
         
     | 
| 
       126 
146 
     | 
    
         
             
                    if (isReadOnly) {
         
     | 
| 
       127 
147 
     | 
    
         
             
                        return;
         
     | 
| 
       128 
148 
     | 
    
         
             
                    }
         
     | 
| 
       129 
     | 
    
         
            -
                    window.addEventListener('mouseup',  
     | 
| 
      
 149 
     | 
    
         
            +
                    window.addEventListener('mouseup', onWindowMouseUpAfterAnswerMouseDown);
         
     | 
| 
      
 150 
     | 
    
         
            +
                    // Do annotations only with left mouse buttons
         
     | 
| 
       130 
151 
     | 
    
         
             
                    if (e.button !== 0) {
         
     | 
| 
       131 
152 
     | 
    
         
             
                        return;
         
     | 
| 
       132 
153 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -135,27 +156,22 @@ export function GradingAnswer({ answer: { type, characterCount, value }, isReadO 
     | 
|
| 
       135 
156 
     | 
    
         
             
                    if (!img) {
         
     | 
| 
       136 
157 
     | 
    
         
             
                        return;
         
     | 
| 
       137 
158 
     | 
    
         
             
                    }
         
     | 
| 
       138 
     | 
    
         
            -
                    img.addEventListener('dragstart', preventDefaults);
         
     | 
| 
      
 159 
     | 
    
         
            +
                    img.addEventListener('dragstart', preventDefaults); // Prevent dragging images when marking image annotations
         
     | 
| 
       139 
160 
     | 
    
         
             
                    imgAnnotationState.start = imageAnnotationMouseDownInfo(e, img);
         
     | 
| 
       140 
161 
     | 
    
         
             
                    imgAnnotationState.img = img;
         
     | 
| 
       141 
162 
     | 
    
         
             
                    window.addEventListener('mousemove', onMouseMoveForImageAnnotation);
         
     | 
| 
       142 
163 
     | 
    
         
             
                }
         
     | 
| 
       143 
     | 
    
         
            -
                function  
     | 
| 
      
 164 
     | 
    
         
            +
                function onWindowMouseUpAfterAnswerMouseDown() {
         
     | 
| 
       144 
165 
     | 
    
         
             
                    var _a, _b;
         
     | 
| 
       145 
166 
     | 
    
         
             
                    (_a = imgAnnotationState.img) === null || _a === void 0 ? void 0 : _a.removeEventListener('dragstart', preventDefaults);
         
     | 
| 
       146 
167 
     | 
    
         
             
                    window.removeEventListener('mousemove', onMouseMoveForImageAnnotation);
         
     | 
| 
       147 
     | 
    
         
            -
                    window.removeEventListener('mouseup',  
     | 
| 
       148 
     | 
    
         
            -
                     
     | 
| 
       149 
     | 
    
         
            -
                        closePopupAndRefresh();
         
     | 
| 
       150 
     | 
    
         
            -
                        return;
         
     | 
| 
       151 
     | 
    
         
            -
                    }
         
     | 
| 
      
 168 
     | 
    
         
            +
                    window.removeEventListener('mouseup', onWindowMouseUpAfterAnswerMouseDown);
         
     | 
| 
      
 169 
     | 
    
         
            +
                    // Image annotation is being created since shape exists
         
     | 
| 
       152 
170 
     | 
    
         
             
                    if (imgAnnotationState.element) {
         
     | 
| 
       153 
     | 
    
         
            -
                        showAnnotationPopup((_b = imgAnnotationState.element) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect());
         
     | 
| 
       154 
     | 
    
         
            -
                        return;
         
     | 
| 
       155 
     | 
    
         
            -
                    }
         
     | 
| 
       156 
     | 
    
         
            -
                    if (isPopupVisible) {
         
     | 
| 
      
 171 
     | 
    
         
            +
                        showAnnotationPopup((_b = imgAnnotationState.element) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect(), '');
         
     | 
| 
       157 
172 
     | 
    
         
             
                        return;
         
     | 
| 
       158 
173 
     | 
    
         
             
                    }
         
     | 
| 
      
 174 
     | 
    
         
            +
                    // Text annotation
         
     | 
| 
       159 
175 
     | 
    
         
             
                    const selection = window.getSelection();
         
     | 
| 
       160 
176 
     | 
    
         
             
                    if (selection && answerRef.current !== null && hasTextSelectedInAnswerText()) {
         
     | 
| 
       161 
177 
     | 
    
         
             
                        const range = selection.getRangeAt(0);
         
     | 
| 
         @@ -163,8 +179,9 @@ export function GradingAnswer({ answer: { type, characterCount, value }, isReadO 
     | 
|
| 
       163 
179 
     | 
    
         
             
                            return;
         
     | 
| 
       164 
180 
     | 
    
         
             
                        }
         
     | 
| 
       165 
181 
     | 
    
         
             
                        const position = textAnnotationFromRange(answerRef.current, range);
         
     | 
| 
       166 
     | 
    
         
            -
                         
     | 
| 
       167 
     | 
    
         
            -
                         
     | 
| 
      
 182 
     | 
    
         
            +
                        const message = getOverlappingMessages(savedAnnotations[gradingRole], position.startIndex, position.length);
         
     | 
| 
      
 183 
     | 
    
         
            +
                        newAnnotationObject = { ...position, type: 'text', message };
         
     | 
| 
      
 184 
     | 
    
         
            +
                        showAnnotationPopup(range.getBoundingClientRect(), message);
         
     | 
| 
       168 
185 
     | 
    
         
             
                        const newAnnotations = { ...savedAnnotations };
         
     | 
| 
       169 
186 
     | 
    
         
             
                        newAnnotations[gradingRole] = mergeAnnotation(answerRef.current, newAnnotationObject, savedAnnotations[gradingRole]);
         
     | 
| 
       170 
187 
     | 
    
         
             
                        renderAnswerWithAnnotations(newAnnotations);
         
     | 
| 
         @@ -173,6 +190,7 @@ export function GradingAnswer({ answer: { type, characterCount, value }, isReadO 
     | 
|
| 
       173 
190 
     | 
    
         
             
                function onMouseMoveForImageAnnotation(e) {
         
     | 
| 
       174 
191 
     | 
    
         
             
                    preventDefaults(e);
         
     | 
| 
       175 
192 
     | 
    
         
             
                    newAnnotationObject = annotationFromMousePosition(e, imgAnnotationState.start);
         
     | 
| 
      
 193 
     | 
    
         
            +
                    // Create shape on first mouse move and resize after that
         
     | 
| 
       176 
194 
     | 
    
         
             
                    if (imgAnnotationState.element) {
         
     | 
| 
       177 
195 
     | 
    
         
             
                        updateImageAnnotationMarkSize(imgAnnotationState.element, newAnnotationObject);
         
     | 
| 
       178 
196 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -190,25 +208,25 @@ export function GradingAnswer({ answer: { type, characterCount, value }, isReadO 
     | 
|
| 
       190 
208 
     | 
    
         
             
                    else {
         
     | 
| 
       191 
209 
     | 
    
         
             
                        container.textContent = value;
         
     | 
| 
       192 
210 
     | 
    
         
             
                    }
         
     | 
| 
       193 
     | 
    
         
            -
                    renderAnnotations(container, annotations.pregrading, annotations.censoring);
         
     | 
| 
       194 
     | 
    
         
            -
                    //TODO make titles optional for annotation rendering
         
     | 
| 
       195 
     | 
    
         
            -
                    container.querySelectorAll('mark').forEach((mark) => mark.removeAttribute('title'));
         
     | 
| 
      
 211 
     | 
    
         
            +
                    renderAnnotations(container, annotations.pregrading, annotations.censoring, false);
         
     | 
| 
       196 
212 
     | 
    
         
             
                }
         
     | 
| 
       197 
     | 
    
         
            -
                function  
     | 
| 
      
 213 
     | 
    
         
            +
                function onSubmitAnnotation(e) {
         
     | 
| 
       198 
214 
     | 
    
         
             
                    e.preventDefault();
         
     | 
| 
       199 
215 
     | 
    
         
             
                    const message = messageRef.current.value;
         
     | 
| 
       200 
216 
     | 
    
         
             
                    if (annotationDataForTooltip) {
         
     | 
| 
       201 
     | 
    
         
            -
                         
     | 
| 
      
 217 
     | 
    
         
            +
                        // Editing existing annotation message by clicking tooltip
         
     | 
| 
      
 218 
     | 
    
         
            +
                        savedAnnotations[annotationDataForTooltip.role][annotationDataForTooltip.index].message = message;
         
     | 
| 
       202 
219 
     | 
    
         
             
                    }
         
     | 
| 
       203 
220 
     | 
    
         
             
                    else {
         
     | 
| 
      
 221 
     | 
    
         
            +
                        // Saving new annotation
         
     | 
| 
       204 
222 
     | 
    
         
             
                        savedAnnotations[gradingRole] = mergeAnnotation(answerRef.current, { ...newAnnotationObject, message }, savedAnnotations[gradingRole] || []);
         
     | 
| 
       205 
223 
     | 
    
         
             
                    }
         
     | 
| 
       206 
224 
     | 
    
         
             
                    toggle(popupRef.current, false);
         
     | 
| 
       207 
225 
     | 
    
         
             
                    saveAnnotations(savedAnnotations);
         
     | 
| 
       208 
226 
     | 
    
         
             
                }
         
     | 
| 
       209 
     | 
    
         
            -
                function  
     | 
| 
       210 
     | 
    
         
            -
                    if (e.key === 'Escape' &&  
     | 
| 
       211 
     | 
    
         
            -
                         
     | 
| 
      
 227 
     | 
    
         
            +
                function onKeyUpInAnnotationPopup(e) {
         
     | 
| 
      
 228 
     | 
    
         
            +
                    if (e.key === 'Escape' && isEditAnnotationPopupVisible) {
         
     | 
| 
      
 229 
     | 
    
         
            +
                        hideAnnotationPopupAndRefresh();
         
     | 
| 
       212 
230 
     | 
    
         
             
                    }
         
     | 
| 
       213 
231 
     | 
    
         
             
                }
         
     | 
| 
       214 
232 
     | 
    
         
             
            }
         
     | 
| 
         @@ -216,12 +234,6 @@ function preventDefaults(e) { 
     | 
|
| 
       216 
234 
     | 
    
         
             
                e.preventDefault();
         
     | 
| 
       217 
235 
     | 
    
         
             
                e.stopPropagation();
         
     | 
| 
       218 
236 
     | 
    
         
             
            }
         
     | 
| 
       219 
     | 
    
         
            -
            function countSurplusPercentage(characters, maxCharacters) {
         
     | 
| 
       220 
     | 
    
         
            -
                if (!maxCharacters || characters <= maxCharacters) {
         
     | 
| 
       221 
     | 
    
         
            -
                    return 0;
         
     | 
| 
       222 
     | 
    
         
            -
                }
         
     | 
| 
       223 
     | 
    
         
            -
                return Math.floor((100 * characters) / maxCharacters - 100);
         
     | 
| 
       224 
     | 
    
         
            -
            }
         
     | 
| 
       225 
237 
     | 
    
         
             
            function toggle(element, isVisible) {
         
     | 
| 
       226 
238 
     | 
    
         
             
                if (element instanceof HTMLElement) {
         
     | 
| 
       227 
239 
     | 
    
         
             
                    element.style.display = isVisible ? 'initial' : 'none';
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"GradingAnswer.js","sourceRoot":"","sources":["../../../src/components/grading/GradingAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,eAAe,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"GradingAnswer.js","sourceRoot":"","sources":["../../../src/components/grading/GradingAnswer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE5E,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,eAAe,EAEf,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,6BAA6B,EAC7B,aAAa,GACd,MAAM,yBAAyB,CAAA;AAChC,OAAO,2BAA2B,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAKjE,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EACvC,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,SAAS,GASV;IACC,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC/C,IAAI,mBAA2C,CAAA;IAC/C,IAAI,gBAA6B,CAAA;IACjC,MAAM,kBAAkB,GAIpB,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA;IAC5D,IAAI,4BAA4B,GAAG,KAAK,CAAA;IACxC,IAAI,wBAA2F,CAAA;IAC/F,IAAI,0BAAmC,CAAA;IACvC,IAAI,kBAAiD,CAAA;IACrD,IAAI,mBAAkD,CAAA;IAEtD,SAAS,uBAAuB,CAAC,CAAmC;;QAClE,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAA;QACxB,IAAI,OAAO,YAAY,WAAW,EAAE;YAClC,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE;gBAC9B,WAAW,CAAC,OAAO,CAAC,CAAA;aACrB;iBAAM,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE;gBACnC,MAAM,KAAK,GAAG,MAAA,OAAO,CAAC,OAAO,CAAC,UAAU,0CAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAE,CAAA;gBAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAc,6BAA6B,KAAK,IAAI,CAAE,CAAA;gBACzF,WAAW,CAAC,IAAI,CAAC,CAAA;gBACjB,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;aAC7D;iBAAM,IAAI,wBAAwB,EAAE;gBACnC,WAAW,EAAE,CAAA;aACd;SACF;IACH,CAAC;IAED,SAAS,sBAAsB,CAAC,CAAoC;QAClE,IAAK,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAClD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACjC,2BAA2B,CAAC,0BAA0B,CAAC,CAAA;SACxD;IACH,CAAC;IAED,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,CAAC,OAAO,EAAE;YACrB,gBAAgB,GAAG,WAAW,CAAA;YAC9B,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC/B,2BAA2B,CAAC,gBAAgB,CAAC,CAAA;SAC9C;QAED,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE;YACrB,YAAY,CAAC,mBAAmB,CAAC,CAAA;YACjC,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,OAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5F,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChD,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEzC,OAAO,CACL,oBAAC,eAAe,IAAC,IAAI,EAAE,IAAI;QACzB,6BAAK,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAC,0BAA0B;YACnF,6BACE,SAAS,EAAC,4CAA4C,EACtD,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EACxC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAqB,CAAC,GAClE;YACF,oBAAC,sBAAsB,IAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,GAAI;YAChF,oBAAC,2BAA2B,IAC1B,SAAS,EAAE,WAAW,CAAC,SAAS,EAChC,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,aAAa,EAAE,KAAK,GACpB;YACF,8BACE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,GAAG,EAAE,QAAQ,EACb,SAAS,EAAC,wDAAwD,EAClE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAEtC,+BAAO,IAAI,EAAC,SAAS,EAAC,SAAS,EAAC,sCAAsC,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAE,UAAU,GAAI;gBACtG,gCAAQ,SAAS,EAAC,wCAAwC,EAAC,IAAI,EAAC,QAAQ,eAAW,eAAe,eAEzF;gBACT,gCACE,SAAS,EAAC,8BAA8B,EACxC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;wBACb,CAAC,CAAC,cAAc,EAAE,CAAA;wBAClB,6BAA6B,EAAE,CAAA;oBACjC,CAAC,aAGM,CACJ;YACP,6BACE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,GAAG,EAAE,UAAU,EACf,SAAS,EAAC,iDAAiD,EAC3D,WAAW,EAAE,kBAAkB,EAC/B,UAAU,EAAE,WAAW;gBAEvB,8BAAM,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAC,gCAAgC,mBAEpF;gBACP,gCAAQ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAC,iCAAiC,aAE/E,CACL,CACF,CACU,CACnB,CAAA;IAED,SAAS,gBAAgB,CAAC,CAAkD;QAC1E,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,WAAW,EAAE,CAAA;QACb,gBAAgB,CAAC,wBAAyB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,wBAAyB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC3F,wBAAwB,GAAG,SAAS,CAAA;QACpC,eAAe,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;IACD,SAAS,WAAW;QAClB,kBAAkB,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACnC,CAAC,EAAE,GAAG,CAAC,CAAA;IACT,CAAC;IAED,SAAS,kBAAkB;QACzB,YAAY,CAAC,kBAAkB,CAAC,CAAA;IAClC,CAAC;IACD,SAAS,qBAAqB,CAAC,CAAa;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAiB,CAAA;QAClC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE;YAC7B,YAAY,CAAC,kBAAkB,CAAC,CAAA;YAChC,WAAW,EAAE,CAAA;SACd;QACD,SAAS,CAAC,OAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;IAC3E,CAAC;IAED,SAAS,WAAW,CAAC,MAAmB;QACtC,YAAY,CAAC,kBAAkB,CAAC,CAAA;QAChC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAQ,CAAA;QACnC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAA;QACnD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,UAAU,IAAI,IAAI,KAAK,WAAW,CAAC,CAAA;QACzE,0BAA0B,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAA;QAC3D,sBAAsB,CAAC,0BAA0B,EAAE,SAAS,CAAC,OAAQ,EAAE,OAAO,CAAC,CAAA;QAC/E,OAAO,CAAC,aAAa,CAAC,iCAAiC,CAAE,CAAC,WAAW,GAAG,OAAO,IAAI,GAAG,CAAA;QACtF,wBAAwB,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAmB,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAA;QAC1G,SAAS,CAAC,OAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;IACxE,CAAC;IAED,SAAS,qBAAqB,CAAC,MAAmB;QAChD,IACE,MAAM,CAAC,OAAO,KAAK,MAAM;YACzB,CAAC,4BAA4B;YAC7B,CAAC,CAAC,2BAA2B,EAAE,IAAI,UAAU,CAAC;YAC9C,CAAC,kBAAkB,CAAC,OAAO,EAC3B;YACA,WAAW,CAAC,MAAM,CAAC,CAAA;SACpB;IACH,CAAC;IACD,SAAS,mBAAmB,CAAC,IAAa,EAAE,OAAe;QACzD,wBAAwB,GAAG,SAAS,CAAA;QACpC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IACD,SAAS,2BAA2B,CAAC,IAAa;QAChD,oBAAoB,CAAC,IAAI,EAAE,wBAAyB,CAAC,OAAO,CAAC,CAAA;IAC/D,CAAC;IACD,SAAS,oBAAoB,CAAC,IAAa,EAAE,OAAe;QAC1D,sCAAsC;QACtC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;QAC/D,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,OAAQ,EAAE,QAAQ,CAAC,OAAQ,CAAC,CAAA;QACnE,MAAM,YAAY,GAAG,UAAU,CAAC,OAAQ,CAAA;QACxC,YAAY,CAAC,KAAK,GAAG,OAAO,CAAA;QAC5B,YAAY,CAAC,KAAK,EAAE,CAAA;QACpB,4BAA4B,GAAG,IAAI,CAAA;QACnC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;IAC9D,CAAC;IAED,SAAS,6BAA6B;QACpC,mBAAmB,GAAG,SAAS,CAAA;QAC/B,kBAAkB,CAAC,OAAO,GAAG,SAAS,CAAA;QACtC,kBAAkB,CAAC,GAAG,GAAG,SAAS,CAAA;QAClC,4BAA4B,GAAG,KAAK,CAAA;QACpC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;QAC/D,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC/B,2BAA2B,CAAC,gBAAgB,CAAC,CAAA;IAC/C,CAAC;IACD,SAAS,iBAAiB,CAAC,CAA+C;;QACxE,IAAI,UAAU,EAAE;YACd,OAAM;SACP;QACD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,mCAAmC,CAAC,CAAA;QAEvE,8CAA8C;QAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAClB,OAAM;SACP;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAiB,CAAA;QAClC,MAAM,GAAG,GAAG,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,0CAAE,aAAa,CAAmB,KAAK,CAAC,KAAI,SAAS,CAAA;QACxG,IAAI,CAAC,GAAG,EAAE;YACR,OAAM;SACP;QACD,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA,CAAC,yDAAyD;QAC5G,kBAAkB,CAAC,KAAK,GAAG,4BAA4B,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC/D,kBAAkB,CAAC,GAAG,GAAG,GAAG,CAAA;QAC5B,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAA;IACrE,CAAC;IAED,SAAS,mCAAmC;;QAC1C,MAAA,kBAAkB,CAAC,GAAG,0CAAE,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;QACzE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAA;QACtE,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,mCAAmC,CAAC,CAAA;QAE1E,uDAAuD;QACvD,IAAI,kBAAkB,CAAC,OAAO,EAAE;YAC9B,mBAAmB,CAAC,MAAA,kBAAkB,CAAC,OAAO,0CAAE,qBAAqB,EAAG,EAAE,EAAE,CAAC,CAAA;YAC7E,OAAM;SACP;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;QACvC,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,2BAA2B,EAAE,EAAE;YAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACrC,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;gBACzC,OAAM;aACP;YACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAClE,MAAM,OAAO,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC3G,mBAAmB,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;YAC5D,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,OAAO,CAAC,CAAA;YAC3D,MAAM,cAAc,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAA;YAC9C,cAAc,CAAC,WAAW,CAAC,GAAG,eAAe,CAC3C,SAAS,CAAC,OAAO,EACjB,mBAAmB,EACnB,gBAAgB,CAAC,WAAW,CAAC,CAC9B,CAAA;YACD,2BAA2B,CAAC,cAAc,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,SAAS,6BAA6B,CAAC,CAAa;QAClD,eAAe,CAAC,CAAC,CAAC,CAAA;QAClB,mBAAmB,GAAG,2BAA2B,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAM,CAAC,CAAA;QAC/E,yDAAyD;QACzD,IAAI,kBAAkB,CAAC,OAAO,EAAE;YAC9B,6BAA6B,CAAC,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;SAC/E;aAAM;YACL,kBAAkB,CAAC,OAAO,GAAG,4BAA4B,CACvD,kBAAkB,CAAC,GAAI,EACvB,EAAE,EACF,mBAAmB,EACnB,WAAW,EACX,GAAG,CACJ,CAAA;SACF;IACH,CAAC;IAED,SAAS,2BAA2B,CAAC,WAAwB;QAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,OAAQ,CAAA;QACpC,IAAI,IAAI,KAAK,UAAU,EAAE;YACvB,SAAS,CAAC,SAAS,GAAG,KAAK,CAAA;YAC3B,aAAa,CAAC,SAAS,CAAC,CAAA;YACxB,wBAAwB,CAAC,SAAS,CAAC,CAAA;SACpC;aAAM;YACL,SAAS,CAAC,WAAW,GAAG,KAAK,CAAA;SAC9B;QACD,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;IAED,SAAS,kBAAkB,CAAC,CAA6B;QACvD,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAQ,CAAC,KAAK,CAAA;QACzC,IAAI,wBAAwB,EAAE;YAC5B,0DAA0D;YAC1D,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAA;SAClG;aAAM;YACL,wBAAwB;YACxB,gBAAgB,CAAC,WAAW,CAAC,GAAG,eAAe,CAC7C,SAAS,CAAC,OAAQ,EAClB,EAAE,GAAG,mBAAoB,EAAE,OAAO,EAAE,EACpC,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,CACpC,CAAA;SACF;QACD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC/B,eAAe,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,wBAAwB,CAAC,CAAgB;QAChD,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,4BAA4B,EAAE;YACtD,6BAA6B,EAAE,CAAA;SAChC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,CAAQ;IAC/B,CAAC,CAAC,cAAc,EAAE,CAAA;IAClB,CAAC,CAAC,eAAe,EAAE,CAAA;AACrB,CAAC;AAED,SAAS,MAAM,CAAC,OAA2B,EAAE,SAAkB;IAC7D,IAAI,OAAO,YAAY,WAAW,EAAE;QAClC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;KACvD;AACH,CAAC"}
         
     | 
| 
         @@ -1,16 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { Annotation, ImageAnnotation } from '../../types/Score';
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { Annotation, ImageAnnotation, TextAnnotation } from '../../types/Score';
         
     | 
| 
       2 
2 
     | 
    
         
             
            import React from 'react';
         
     | 
| 
       3 
3 
     | 
    
         
             
            export declare function textAnnotationFromRange(answerTextNode: Element, range: Range): {
         
     | 
| 
       4 
4 
     | 
    
         
             
                startIndex: number;
         
     | 
| 
       5 
5 
     | 
    
         
             
                length: number;
         
     | 
| 
       6 
6 
     | 
    
         
             
            };
         
     | 
| 
      
 7 
     | 
    
         
            +
            export declare function getOverlappingMessages(currentAnnotations: Annotation[], start: number, length: number): string;
         
     | 
| 
      
 8 
     | 
    
         
            +
            export declare function getOverlappingMessagesFromTextAnnotations(currentAnnotations: TextAnnotation[], start: number, length: number): string;
         
     | 
| 
       7 
9 
     | 
    
         
             
            export declare function toNodeLength(node: Node): number | undefined;
         
     | 
| 
       8 
10 
     | 
    
         
             
            export declare function allNodesUnder(el: Node, documentObject?: Document): Node[];
         
     | 
| 
       9 
     | 
    
         
            -
            export declare function  
     | 
| 
       10 
     | 
    
         
            -
                display: string;
         
     | 
| 
       11 
     | 
    
         
            -
                top: string;
         
     | 
| 
       12 
     | 
    
         
            -
                left: string;
         
     | 
| 
       13 
     | 
    
         
            -
            };
         
     | 
| 
      
 11 
     | 
    
         
            +
            export declare function showAndPositionElement(annotationRect: DOMRect, container: HTMLElement, popup: HTMLElement): void;
         
     | 
| 
       14 
12 
     | 
    
         
             
            export declare function hasTextSelectedInAnswerText(): boolean;
         
     | 
| 
       15 
13 
     | 
    
         
             
            export declare function selectionHasNothingToUnderline(range: Range): boolean;
         
     | 
| 
       16 
14 
     | 
    
         
             
            export declare function mergeAnnotation($answerText: Element, newAnnotation: Annotation, annotations: Annotation[]): Annotation[];
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"editAnnotations.d.ts","sourceRoot":"","sources":["../../../src/components/grading/editAnnotations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,eAAe, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"editAnnotations.d.ts","sourceRoot":"","sources":["../../../src/components/grading/editAnnotations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;;;EAgB5E;AAED,wBAAgB,sBAAsB,CAAC,kBAAkB,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAGrG;AACD,wBAAgB,yCAAyC,CACvD,kBAAkB,EAAE,cAAc,EAAE,EACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,UAIf;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,sBAEtC;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,WAAW,GAAG,IAAI,EAAE,CAQzE;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,QAczG;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAqCrD;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,KAAK,WAM1D;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,gBA0BzG;AAqBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,UAKvE;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,CAAA;IACb,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,UAAU,EACb,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,GAC9E,eAAe,CA+BjB;AACD,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,EAC/C,KAAK,EAAE,gBAAgB,GACtB,kBAAkB,CAUpB"}
         
     | 
| 
         @@ -15,6 +15,14 @@ export function textAnnotationFromRange(answerTextNode, range) { 
     | 
|
| 
       15 
15 
     | 
    
         
             
                    return offsetInside + _.sum(nodesBeforeContainer.map(toNodeLength));
         
     | 
| 
       16 
16 
     | 
    
         
             
                }
         
     | 
| 
       17 
17 
     | 
    
         
             
            }
         
     | 
| 
      
 18 
     | 
    
         
            +
            export function getOverlappingMessages(currentAnnotations, start, length) {
         
     | 
| 
      
 19 
     | 
    
         
            +
                const textAnnotations = currentAnnotations.filter((a) => a.type === 'text');
         
     | 
| 
      
 20 
     | 
    
         
            +
                return getOverlappingMessagesFromTextAnnotations(textAnnotations, start, length);
         
     | 
| 
      
 21 
     | 
    
         
            +
            }
         
     | 
| 
      
 22 
     | 
    
         
            +
            export function getOverlappingMessagesFromTextAnnotations(currentAnnotations, start, length) {
         
     | 
| 
      
 23 
     | 
    
         
            +
                const parted = getOverlappingAnnotations(currentAnnotations, { startIndex: start, length, message: '' });
         
     | 
| 
      
 24 
     | 
    
         
            +
                return _.compact(parted.overlapping.map((anno) => anno.message)).reduceRight((msg, str) => `${str} / ${msg}`, '');
         
     | 
| 
      
 25 
     | 
    
         
            +
            }
         
     | 
| 
       18 
26 
     | 
    
         
             
            export function toNodeLength(node) {
         
     | 
| 
       19 
27 
     | 
    
         
             
                var _a;
         
     | 
| 
       20 
28 
     | 
    
         
             
                return node.nodeType === Node.TEXT_NODE ? (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.length : node.nodeName === 'IMG' ? 1 : 0;
         
     | 
| 
         @@ -28,21 +36,18 @@ export function allNodesUnder(el, documentObject = document) { 
     | 
|
| 
       28 
36 
     | 
    
         
             
                }
         
     | 
| 
       29 
37 
     | 
    
         
             
                return a;
         
     | 
| 
       30 
38 
     | 
    
         
             
            }
         
     | 
| 
       31 
     | 
    
         
            -
            export function  
     | 
| 
      
 39 
     | 
    
         
            +
            export function showAndPositionElement(annotationRect, container, popup) {
         
     | 
| 
      
 40 
     | 
    
         
            +
                const style = popup.style;
         
     | 
| 
       32 
41 
     | 
    
         
             
                if (container) {
         
     | 
| 
      
 42 
     | 
    
         
            +
                    style.display = 'block';
         
     | 
| 
       33 
43 
     | 
    
         
             
                    const containerRect = container.getBoundingClientRect();
         
     | 
| 
       34 
     | 
    
         
            -
                     
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                     
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                    return {
         
     | 
| 
       42 
     | 
    
         
            -
                        display: 'block',
         
     | 
| 
       43 
     | 
    
         
            -
                        top: '0px',
         
     | 
| 
       44 
     | 
    
         
            -
                        left: '0px',
         
     | 
| 
       45 
     | 
    
         
            -
                    };
         
     | 
| 
      
 44 
     | 
    
         
            +
                    const popupRect = popup.getBoundingClientRect();
         
     | 
| 
      
 45 
     | 
    
         
            +
                    const left = annotationRect.left - containerRect.left;
         
     | 
| 
      
 46 
     | 
    
         
            +
                    const top = annotationRect.bottom - containerRect.top + 25;
         
     | 
| 
      
 47 
     | 
    
         
            +
                    style.top = String(top) + 'px';
         
     | 
| 
      
 48 
     | 
    
         
            +
                    style.left =
         
     | 
| 
      
 49 
     | 
    
         
            +
                        String(left + popupRect.width < containerRect.width ? left + 20 : containerRect.width - popupRect.width + 15) +
         
     | 
| 
      
 50 
     | 
    
         
            +
                            'px';
         
     | 
| 
       46 
51 
     | 
    
         
             
                }
         
     | 
| 
       47 
52 
     | 
    
         
             
            }
         
     | 
| 
       48 
53 
     | 
    
         
             
            export function hasTextSelectedInAnswerText() {
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"editAnnotations.js","sourceRoot":"","sources":["../../../src/components/grading/editAnnotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,WAAW,CAAA;AAI9B,MAAM,UAAU,uBAAuB,CAAC,cAAuB,EAAE,KAAY;IAC3E,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,CAAC,CAAA;IACjD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;IAC3F,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACzF,OAAO;QACL,UAAU,EAAE,gBAAgB;QAC5B,MAAM,EAAE,kBAAkB,GAAG,gBAAgB;KAC9C,CAAA;IAED,SAAS,yBAAyB,CAAC,cAAoB,EAAE,MAAc;QACrE,MAAM,cAAc,GAAG,cAAc,KAAK,cAAc,CAAA;QACxD,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;QACrF,MAAM,YAAY,GAAW,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACxD,MAAM,oBAAoB,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;QACnF,OAAO,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAU;;IACrC,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,WAAW,0CAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtG,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAQ,EAAE,cAAc,GAAG,QAAQ;IAC/D,IAAI,CAAC,GAAgB,IAAI,CAAA;IACzB,MAAM,CAAC,GAAW,EAAE,CAAA;IACpB,MAAM,IAAI,GAAG,cAAc,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACtG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;QAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACV;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"editAnnotations.js","sourceRoot":"","sources":["../../../src/components/grading/editAnnotations.ts"],"names":[],"mappings":"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"}
         
     |