@digabi/exam-engine-core 22.0.3 → 22.0.4-alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (240) hide show
  1. package/dist/__tests__/EditableGradingInstruction.test.d.ts +2 -0
  2. package/dist/__tests__/EditableGradingInstruction.test.d.ts.map +1 -0
  3. package/dist/__tests__/EditableGradingInstruction.test.js +174 -0
  4. package/dist/__tests__/EditableGradingInstruction.test.js.map +1 -0
  5. package/dist/__tests__/EditableGradingInstructionLocalization.test.d.ts +2 -0
  6. package/dist/__tests__/EditableGradingInstructionLocalization.test.d.ts.map +1 -0
  7. package/dist/__tests__/EditableGradingInstructionLocalization.test.js +112 -0
  8. package/dist/__tests__/EditableGradingInstructionLocalization.test.js.map +1 -0
  9. package/dist/__tests__/FormatButton.test.d.ts +2 -0
  10. package/dist/__tests__/FormatButton.test.d.ts.map +1 -0
  11. package/dist/__tests__/FormatButton.test.js +94 -0
  12. package/dist/__tests__/FormatButton.test.js.map +1 -0
  13. package/dist/__tests__/annotations.test.js +7 -7
  14. package/dist/__tests__/annotations.test.js.map +1 -1
  15. package/dist/__tests__/editor/FormatButton.test.d.ts +2 -0
  16. package/dist/__tests__/editor/FormatButton.test.d.ts.map +1 -0
  17. package/dist/__tests__/editor/FormatButton.test.js +98 -0
  18. package/dist/__tests__/editor/FormatButton.test.js.map +1 -0
  19. package/dist/__tests__/editor/Formula.test.d.ts +2 -0
  20. package/dist/__tests__/editor/Formula.test.d.ts.map +1 -0
  21. package/dist/__tests__/editor/Formula.test.js +61 -0
  22. package/dist/__tests__/editor/Formula.test.js.map +1 -0
  23. package/dist/__tests__/editor/ImageUploadButton.test.d.ts +2 -0
  24. package/dist/__tests__/editor/ImageUploadButton.test.d.ts.map +1 -0
  25. package/dist/__tests__/editor/ImageUploadButton.test.js +94 -0
  26. package/dist/__tests__/editor/ImageUploadButton.test.js.map +1 -0
  27. package/dist/__tests__/editor/List.test.d.ts +2 -0
  28. package/dist/__tests__/editor/List.test.d.ts.map +1 -0
  29. package/dist/__tests__/editor/List.test.js +72 -0
  30. package/dist/__tests__/editor/List.test.js.map +1 -0
  31. package/dist/__tests__/editor/Table.test.d.ts +2 -0
  32. package/dist/__tests__/editor/Table.test.d.ts.map +1 -0
  33. package/dist/__tests__/editor/Table.test.js +172 -0
  34. package/dist/__tests__/editor/Table.test.js.map +1 -0
  35. package/dist/__tests__/editor/br.test.d.ts +2 -0
  36. package/dist/__tests__/editor/br.test.d.ts.map +1 -0
  37. package/dist/__tests__/editor/br.test.js +39 -0
  38. package/dist/__tests__/editor/br.test.js.map +1 -0
  39. package/dist/__tests__/editor/hr.test.d.ts +2 -0
  40. package/dist/__tests__/editor/hr.test.d.ts.map +1 -0
  41. package/dist/__tests__/editor/hr.test.js +39 -0
  42. package/dist/__tests__/editor/hr.test.js.map +1 -0
  43. package/dist/__tests__/editor/nbsp.test.d.ts +2 -0
  44. package/dist/__tests__/editor/nbsp.test.d.ts.map +1 -0
  45. package/dist/__tests__/editor/nbsp.test.js +55 -0
  46. package/dist/__tests__/editor/nbsp.test.js.map +1 -0
  47. package/dist/__tests__/editor/noWrap.test.d.ts +2 -0
  48. package/dist/__tests__/editor/noWrap.test.d.ts.map +1 -0
  49. package/dist/__tests__/editor/noWrap.test.js +62 -0
  50. package/dist/__tests__/editor/noWrap.test.js.map +1 -0
  51. package/dist/__tests__/editor/spanWithLang.test.d.ts +2 -0
  52. package/dist/__tests__/editor/spanWithLang.test.d.ts.map +1 -0
  53. package/dist/__tests__/editor/spanWithLang.test.js +38 -0
  54. package/dist/__tests__/editor/spanWithLang.test.js.map +1 -0
  55. package/dist/__tests__/editor/subSup.test.d.ts +2 -0
  56. package/dist/__tests__/editor/subSup.test.d.ts.map +1 -0
  57. package/dist/__tests__/editor/subSup.test.js +50 -0
  58. package/dist/__tests__/editor/subSup.test.js.map +1 -0
  59. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  60. package/dist/__tests__/utils/ProseMirrorWrapper.d.ts +8 -0
  61. package/dist/__tests__/utils/ProseMirrorWrapper.d.ts.map +1 -0
  62. package/dist/__tests__/utils/ProseMirrorWrapper.js +44 -0
  63. package/dist/__tests__/utils/ProseMirrorWrapper.js.map +1 -0
  64. package/dist/__tests__/utils/prosemirror.d.ts +2 -0
  65. package/dist/__tests__/utils/prosemirror.d.ts.map +1 -0
  66. package/dist/__tests__/utils/prosemirror.js +30 -0
  67. package/dist/__tests__/utils/prosemirror.js.map +1 -0
  68. package/dist/__tests__/utils/renderEditableGradingInstruction.d.ts +4 -0
  69. package/dist/__tests__/utils/renderEditableGradingInstruction.d.ts.map +1 -0
  70. package/dist/__tests__/utils/renderEditableGradingInstruction.js +22 -0
  71. package/dist/__tests__/utils/renderEditableGradingInstruction.js.map +1 -0
  72. package/dist/__tests__/utils/util.d.ts +2 -0
  73. package/dist/__tests__/utils/util.d.ts.map +1 -0
  74. package/dist/__tests__/utils/util.js +10 -0
  75. package/dist/__tests__/utils/util.js.map +1 -0
  76. package/dist/components/Localization.d.ts +5 -0
  77. package/dist/components/Localization.d.ts.map +1 -0
  78. package/dist/components/Localization.js +9 -0
  79. package/dist/components/Localization.js.map +1 -0
  80. package/dist/components/context/AnnotationProvider.d.ts +2 -2
  81. package/dist/components/context/AnnotationProvider.d.ts.map +1 -1
  82. package/dist/components/context/AnnotationProvider.js +3 -2
  83. package/dist/components/context/AnnotationProvider.js.map +1 -1
  84. package/dist/components/context/AttachmentContext.d.ts.map +1 -1
  85. package/dist/components/context/CommonExamContext.d.ts +1 -0
  86. package/dist/components/context/CommonExamContext.d.ts.map +1 -1
  87. package/dist/components/context/CommonExamContext.js +3 -0
  88. package/dist/components/context/CommonExamContext.js.map +1 -1
  89. package/dist/components/context/ExamContext.d.ts.map +1 -1
  90. package/dist/components/context/GradingInstructionContext.d.ts +17 -0
  91. package/dist/components/context/GradingInstructionContext.d.ts.map +1 -0
  92. package/dist/components/context/GradingInstructionContext.js +3 -0
  93. package/dist/components/context/GradingInstructionContext.js.map +1 -0
  94. package/dist/components/context/QuestionContext.d.ts.map +1 -1
  95. package/dist/components/context/ResultsContext.d.ts.map +1 -1
  96. package/dist/components/context/SectionContext.d.ts.map +1 -1
  97. package/dist/components/grading-instructions/AnswerGradingInstruction.d.ts.map +1 -1
  98. package/dist/components/grading-instructions/AnswerGradingInstruction.js +7 -2
  99. package/dist/components/grading-instructions/AnswerGradingInstruction.js.map +1 -1
  100. package/dist/components/grading-instructions/EditableGradingInstruction.d.ts +6 -0
  101. package/dist/components/grading-instructions/EditableGradingInstruction.d.ts.map +1 -0
  102. package/dist/components/grading-instructions/EditableGradingInstruction.js +121 -0
  103. package/dist/components/grading-instructions/EditableGradingInstruction.js.map +1 -0
  104. package/dist/components/grading-instructions/GradingInstruction.d.ts +7 -0
  105. package/dist/components/grading-instructions/GradingInstruction.d.ts.map +1 -0
  106. package/dist/components/grading-instructions/GradingInstruction.js +9 -0
  107. package/dist/components/grading-instructions/GradingInstruction.js.map +1 -0
  108. package/dist/components/grading-instructions/GradingInstructionProvider.d.ts +4 -0
  109. package/dist/components/grading-instructions/GradingInstructionProvider.d.ts.map +1 -0
  110. package/dist/components/grading-instructions/GradingInstructionProvider.js +7 -0
  111. package/dist/components/grading-instructions/GradingInstructionProvider.js.map +1 -0
  112. package/dist/components/grading-instructions/GradingInstructions.d.ts +2 -1
  113. package/dist/components/grading-instructions/GradingInstructions.d.ts.map +1 -1
  114. package/dist/components/grading-instructions/GradingInstructions.js +18 -15
  115. package/dist/components/grading-instructions/GradingInstructions.js.map +1 -1
  116. package/dist/components/grading-instructions/editor/AttributeToggleButton.d.ts +9 -0
  117. package/dist/components/grading-instructions/editor/AttributeToggleButton.d.ts.map +1 -0
  118. package/dist/components/grading-instructions/editor/AttributeToggleButton.js +53 -0
  119. package/dist/components/grading-instructions/editor/AttributeToggleButton.js.map +1 -0
  120. package/dist/components/grading-instructions/editor/CurrentElement.d.ts +2 -0
  121. package/dist/components/grading-instructions/editor/CurrentElement.d.ts.map +1 -0
  122. package/dist/components/grading-instructions/editor/CurrentElement.js +8 -0
  123. package/dist/components/grading-instructions/editor/CurrentElement.js.map +1 -0
  124. package/dist/components/grading-instructions/editor/CurrentLocalization.d.ts +7 -0
  125. package/dist/components/grading-instructions/editor/CurrentLocalization.d.ts.map +1 -0
  126. package/dist/components/grading-instructions/editor/CurrentLocalization.js +13 -0
  127. package/dist/components/grading-instructions/editor/CurrentLocalization.js.map +1 -0
  128. package/dist/components/grading-instructions/editor/FormatButton.d.ts +9 -0
  129. package/dist/components/grading-instructions/editor/FormatButton.d.ts.map +1 -0
  130. package/dist/components/grading-instructions/editor/FormatButton.js +26 -0
  131. package/dist/components/grading-instructions/editor/FormatButton.js.map +1 -0
  132. package/dist/components/grading-instructions/editor/Formula.d.ts +15 -0
  133. package/dist/components/grading-instructions/editor/Formula.d.ts.map +1 -0
  134. package/dist/components/grading-instructions/editor/Formula.js +41 -0
  135. package/dist/components/grading-instructions/editor/Formula.js.map +1 -0
  136. package/dist/components/grading-instructions/editor/FormulaPopup.d.ts +7 -0
  137. package/dist/components/grading-instructions/editor/FormulaPopup.d.ts.map +1 -0
  138. package/dist/components/grading-instructions/editor/FormulaPopup.js +49 -0
  139. package/dist/components/grading-instructions/editor/FormulaPopup.js.map +1 -0
  140. package/dist/components/grading-instructions/editor/ImageUploadButton.d.ts +6 -0
  141. package/dist/components/grading-instructions/editor/ImageUploadButton.d.ts.map +1 -0
  142. package/dist/components/grading-instructions/editor/ImageUploadButton.js +77 -0
  143. package/dist/components/grading-instructions/editor/ImageUploadButton.js.map +1 -0
  144. package/dist/components/grading-instructions/editor/List.d.ts +9 -0
  145. package/dist/components/grading-instructions/editor/List.d.ts.map +1 -0
  146. package/dist/components/grading-instructions/editor/List.js +41 -0
  147. package/dist/components/grading-instructions/editor/List.js.map +1 -0
  148. package/dist/components/grading-instructions/editor/Localization.d.ts +3 -0
  149. package/dist/components/grading-instructions/editor/Localization.d.ts.map +1 -0
  150. package/dist/components/grading-instructions/editor/Localization.js +36 -0
  151. package/dist/components/grading-instructions/editor/Localization.js.map +1 -0
  152. package/dist/components/grading-instructions/editor/LocalizationButtons.d.ts +6 -0
  153. package/dist/components/grading-instructions/editor/LocalizationButtons.d.ts.map +1 -0
  154. package/dist/components/grading-instructions/editor/LocalizationButtons.js +14 -0
  155. package/dist/components/grading-instructions/editor/LocalizationButtons.js.map +1 -0
  156. package/dist/components/grading-instructions/editor/NBSP.d.ts +4 -0
  157. package/dist/components/grading-instructions/editor/NBSP.d.ts.map +1 -0
  158. package/dist/components/grading-instructions/editor/NBSP.js +17 -0
  159. package/dist/components/grading-instructions/editor/NBSP.js.map +1 -0
  160. package/dist/components/grading-instructions/editor/Table.d.ts +6 -0
  161. package/dist/components/grading-instructions/editor/Table.d.ts.map +1 -0
  162. package/dist/components/grading-instructions/editor/Table.js +186 -0
  163. package/dist/components/grading-instructions/editor/Table.js.map +1 -0
  164. package/dist/components/grading-instructions/editor/findNode.d.ts +3 -0
  165. package/dist/components/grading-instructions/editor/findNode.d.ts.map +1 -0
  166. package/dist/components/grading-instructions/editor/findNode.js +10 -0
  167. package/dist/components/grading-instructions/editor/findNode.js.map +1 -0
  168. package/dist/components/grading-instructions/editor/localizatio.d.ts +3 -0
  169. package/dist/components/grading-instructions/editor/localizatio.d.ts.map +1 -0
  170. package/dist/components/grading-instructions/editor/localizatio.js +36 -0
  171. package/dist/components/grading-instructions/editor/localizatio.js.map +1 -0
  172. package/dist/components/grading-instructions/editor/localizationSpan.d.ts +3 -0
  173. package/dist/components/grading-instructions/editor/localizationSpan.d.ts.map +1 -0
  174. package/dist/components/grading-instructions/editor/localizationSpan.js +36 -0
  175. package/dist/components/grading-instructions/editor/localizationSpan.js.map +1 -0
  176. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts +4 -0
  177. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts.map +1 -0
  178. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js +62 -0
  179. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js.map +1 -0
  180. package/dist/components/grading-instructions/editor/schemas/image-schema.d.ts +4 -0
  181. package/dist/components/grading-instructions/editor/schemas/image-schema.d.ts.map +1 -0
  182. package/dist/components/grading-instructions/editor/schemas/image-schema.js +47 -0
  183. package/dist/components/grading-instructions/editor/schemas/image-schema.js.map +1 -0
  184. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts +4 -0
  185. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts.map +1 -0
  186. package/dist/components/grading-instructions/editor/schemas/imageSchema.js +61 -0
  187. package/dist/components/grading-instructions/editor/schemas/imageSchema.js.map +1 -0
  188. package/dist/components/grading-instructions/editor/schemas/listSchema.d.ts +72 -0
  189. package/dist/components/grading-instructions/editor/schemas/listSchema.d.ts.map +1 -0
  190. package/dist/components/grading-instructions/editor/schemas/listSchema.js +7 -0
  191. package/dist/components/grading-instructions/editor/schemas/listSchema.js.map +1 -0
  192. package/dist/components/grading-instructions/editor/schemas/localizationSchema.d.ts +3 -0
  193. package/dist/components/grading-instructions/editor/schemas/localizationSchema.d.ts.map +1 -0
  194. package/dist/components/grading-instructions/editor/schemas/localizationSchema.js +39 -0
  195. package/dist/components/grading-instructions/editor/schemas/localizationSchema.js.map +1 -0
  196. package/dist/components/grading-instructions/editor/schemas/spanWithLangSchema.d.ts +3 -0
  197. package/dist/components/grading-instructions/editor/schemas/spanWithLangSchema.d.ts.map +1 -0
  198. package/dist/components/grading-instructions/editor/schemas/spanWithLangSchema.js +19 -0
  199. package/dist/components/grading-instructions/editor/schemas/spanWithLangSchema.js.map +1 -0
  200. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts +3 -0
  201. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts.map +1 -0
  202. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js +19 -0
  203. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js.map +1 -0
  204. package/dist/components/grading-instructions/editor/schemas/subSupSchema.d.ts +3 -0
  205. package/dist/components/grading-instructions/editor/schemas/subSupSchema.d.ts.map +1 -0
  206. package/dist/components/grading-instructions/editor/schemas/subSupSchema.js +23 -0
  207. package/dist/components/grading-instructions/editor/schemas/subSupSchema.js.map +1 -0
  208. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts +3 -0
  209. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts.map +1 -0
  210. package/dist/components/grading-instructions/editor/schemas/tableSchema.js +43 -0
  211. package/dist/components/grading-instructions/editor/schemas/tableSchema.js.map +1 -0
  212. package/dist/components/grading-instructions/editor/spanWithNowrap.d.ts +3 -0
  213. package/dist/components/grading-instructions/editor/spanWithNowrap.d.ts.map +1 -0
  214. package/dist/components/grading-instructions/editor/spanWithNowrap.js +19 -0
  215. package/dist/components/grading-instructions/editor/spanWithNowrap.js.map +1 -0
  216. package/dist/components/grading-instructions/editor/spanWithPath.d.ts +3 -0
  217. package/dist/components/grading-instructions/editor/spanWithPath.d.ts.map +1 -0
  218. package/dist/components/grading-instructions/editor/spanWithPath.js +24 -0
  219. package/dist/components/grading-instructions/editor/spanWithPath.js.map +1 -0
  220. package/dist/components/grading-instructions/editor/util.d.ts +6 -0
  221. package/dist/components/grading-instructions/editor/util.d.ts.map +1 -0
  222. package/dist/components/grading-instructions/editor/util.js +10 -0
  223. package/dist/components/grading-instructions/editor/util.js.map +1 -0
  224. package/dist/components/shared/AnnotationMark.d.ts +1 -1
  225. package/dist/components/shared/AnnotationMark.d.ts.map +1 -1
  226. package/dist/components/shared/AnnotationPopup.d.ts +1 -1
  227. package/dist/components/shared/AnnotationPopup.d.ts.map +1 -1
  228. package/dist/components/shared/AnnotationPopup.js +11 -70
  229. package/dist/components/shared/AnnotationPopup.js.map +1 -1
  230. package/dist/components/shared/Popup.d.ts +15 -0
  231. package/dist/components/shared/Popup.d.ts.map +1 -0
  232. package/dist/components/shared/Popup.js +90 -0
  233. package/dist/components/shared/Popup.js.map +1 -0
  234. package/dist/components/shared/markText.d.ts +1 -1
  235. package/dist/components/shared/markText.d.ts.map +1 -1
  236. package/dist/components/shared/markText.js.map +1 -1
  237. package/dist/main-bundle.js +1 -1
  238. package/dist/main-bundle.js.LICENSE.txt +1 -1
  239. package/dist/main.css +1 -1
  240. package/package.json +11 -2
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { AnnotationProps, CommonExamProps } from '../exam/Exam';
3
+ import { GradingInstructionProps } from '../context/GradingInstructionContext';
3
4
  export declare const GradingInstructionsPageTitle: React.FunctionComponent;
4
- declare const _default: React.MemoExoticComponent<React.ComponentType<CommonExamProps & AnnotationProps>>;
5
+ declare const _default: React.MemoExoticComponent<React.ComponentType<CommonExamProps & AnnotationProps & GradingInstructionProps>>;
5
6
  export default _default;
6
7
  //# sourceMappingURL=GradingInstructions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GradingInstructions.d.ts","sourceRoot":"","sources":["../../../src/components/grading-instructions/GradingInstructions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAcpD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AA8H/D,eAAO,MAAM,4BAA4B,EAAE,KAAK,CAAC,iBAGhD,CAAA;;AAED,wBAAqE"}
1
+ {"version":3,"file":"GradingInstructions.d.ts","sourceRoot":"","sources":["../../../src/components/grading-instructions/GradingInstructions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAcpD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAoB/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAmH9E,eAAO,MAAM,4BAA4B,EAAE,KAAK,CAAC,iBAGhD,CAAA;;AAED,wBAAqE"}
@@ -30,6 +30,7 @@ import QuestionTitle from './QuestionTitle';
30
30
  import Recording from './Recording';
31
31
  import Section from './Section';
32
32
  import SectionTitle from './SectionTitle';
33
+ import { GradingInstructionProvider } from './GradingInstructionProvider';
33
34
  const renderIfWithinGradingInstructionContent = renderIf(({ element }) => queryAncestors(element, [
34
35
  // Keep in sync with lists in mastering/index.ts
35
36
  'answer-grading-instruction',
@@ -70,7 +71,7 @@ const renderChildNodes = createRenderChildNodes({
70
71
  'section-title': SectionTitle,
71
72
  video: Recording
72
73
  });
73
- const GradingInstructions = ({ doc, annotations, onClickAnnotation, onSaveAnnotation }) => {
74
+ const GradingInstructions = ({ doc, annotations, onClickAnnotation, onSaveAnnotation, editable, onContentChange, onSaveImage }) => {
74
75
  const root = doc.documentElement;
75
76
  const { date, dateTimeFormatter, dayCode, examCode, language, subjectLanguage } = useContext(CommonExamContext);
76
77
  const examTitle = findChildElement(root, 'exam-title');
@@ -84,21 +85,23 @@ const GradingInstructions = ({ doc, annotations, onClickAnnotation, onSaveAnnota
84
85
  const i18n = useCached(() => initI18n(language, examCode, dayCode));
85
86
  useEffect(changeLanguage(i18n, language));
86
87
  useEffect(scrollToHash, []);
88
+ const props = editable ? { editable, onContentChange, onSaveImage } : { editable };
87
89
  return (React.createElement(AnnotationProvider, { annotations: annotations, onClickAnnotation: onClickAnnotation, onSaveAnnotation: onSaveAnnotation },
88
- React.createElement(I18nextProvider, { i18n: i18n },
89
- React.createElement("main", { className: "e-exam e-grading-instructions", lang: subjectLanguage },
90
- React.createElement(React.StrictMode, null),
91
- React.createElement(SectionElement, { "aria-labelledby": examTitleId },
92
- React.createElement(DocumentTitle, { id: examTitleId },
93
- React.createElement(GradingInstructionsPageTitle, null),
94
- " ",
95
- examTitle && renderChildNodes(examTitle)),
96
- date && (React.createElement("p", null,
97
- React.createElement("strong", null, dateTimeFormatter.format(date)))),
98
- examGradingInstruction && (React.createElement(ExamGradingInstruction, { element: examGradingInstruction, renderChildNodes })),
99
- tableOfContents && (React.createElement("div", { className: "main-toc-container" },
100
- React.createElement(TableOfContents, { element: tableOfContents, renderChildNodes })))),
101
- renderChildNodes(root)))));
90
+ React.createElement(GradingInstructionProvider, { ...props },
91
+ React.createElement(I18nextProvider, { i18n: i18n },
92
+ React.createElement("main", { className: "e-exam e-grading-instructions", lang: subjectLanguage },
93
+ React.createElement(React.StrictMode, null),
94
+ React.createElement(SectionElement, { "aria-labelledby": examTitleId },
95
+ React.createElement(DocumentTitle, { id: examTitleId },
96
+ React.createElement(GradingInstructionsPageTitle, null),
97
+ " ",
98
+ examTitle && renderChildNodes(examTitle)),
99
+ date && (React.createElement("p", null,
100
+ React.createElement("strong", null, dateTimeFormatter.format(date)))),
101
+ examGradingInstruction && (React.createElement(ExamGradingInstruction, { element: examGradingInstruction, renderChildNodes })),
102
+ tableOfContents && (React.createElement("div", { className: "main-toc-container" },
103
+ React.createElement(TableOfContents, { element: tableOfContents, renderChildNodes })))),
104
+ renderChildNodes(root))))));
102
105
  };
103
106
  // Wrap to a separate component, since we can't use translation hooks in the root component.
104
107
  export const GradingInstructionsPageTitle = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"GradingInstructions.js","sourceRoot":"","sources":["../../../src/components/grading-instructions/GradingInstructions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GradingInstructions.js","sourceRoot":"","sources":["../../../src/components/grading-instructions/GradingInstructions.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ declare function AttributeToggleButton({ markType, attributeName, attributeValue, displayName }: {
3
+ markType: string;
4
+ attributeName: string;
5
+ attributeValue: string;
6
+ displayName: string;
7
+ }): React.JSX.Element;
8
+ export default AttributeToggleButton;
9
+ //# sourceMappingURL=AttributeToggleButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttributeToggleButton.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/AttributeToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,iBAAS,qBAAqB,CAAC,EAC7B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB,qBAuDA;AAED,eAAe,qBAAqB,CAAA"}
@@ -0,0 +1,53 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { useEditorEventCallback, useEditorState } from '@nytimes/react-prosemirror';
3
+ import { findAttributesFromCursor } from './util';
4
+ function AttributeToggleButton({ markType, attributeName, attributeValue, displayName }) {
5
+ const editorState = useEditorState();
6
+ const [isActive, setIsActive] = useState(false);
7
+ useEffect(() => {
8
+ const attributes = findAttributesFromCursor(editorState.tr, markType);
9
+ setIsActive(attributes[attributeName] == attributeValue);
10
+ }, [editorState]);
11
+ const onClick = useEditorEventCallback(view => {
12
+ const { state } = view;
13
+ const tr = state.tr
14
+ //.insertText('paska')
15
+ .setNodeAttribute(state.selection.$head.before(), 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'b');
16
+ view.dispatch(tr);
17
+ view.focus();
18
+ return true;
19
+ });
20
+ /*const onClick2 = useEditorEventCallback(view => {
21
+ const { state } = view
22
+ const node = state.tr.doc.nodeAt(state.tr.selection.from)
23
+ if (node) {
24
+ const newAttributeValue = node.attrs[attributeName] ? undefined : attributeValue
25
+ const tr = state.tr.setNodeAttribute(state.selection.$from.before(), attributeName, newAttributeValue)
26
+ view.dispatch(tr)
27
+ view.focus()
28
+ return true
29
+ }
30
+ return false
31
+ //console.info(state.selection, state.selection.$from, state.selection.$from.parent)
32
+ if (state.selection instanceof NodeSelection) {
33
+ state.selection.$from.node()
34
+ const node = state.tr.doc.nodeAt(state.tr.selection.from)
35
+ if (node) {
36
+ const mark = node?.marks.find(mark => mark.type.name == markType)
37
+ if (mark) {
38
+ state.tr.addMark()
39
+ const attrs = { ...mark.attrs, [attributeName]: attributeValue }
40
+ node.
41
+
42
+ mark.addToSet(node.marks)
43
+ const newMark = { ...mark, attrs }
44
+ newMark.addToSet(node.marks)
45
+ }
46
+ }
47
+ }
48
+ //const a = findTagAttributesFromCursor(state.tr, 'localization')
49
+ })*/
50
+ return (React.createElement("button", { onClick: onClick, style: { fontWeight: isActive ? 'bold' : 'normal' } }, displayName));
51
+ }
52
+ export default AttributeToggleButton;
53
+ //# sourceMappingURL=AttributeToggleButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttributeToggleButton.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/AttributeToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAA;AAEjD,SAAS,qBAAqB,CAAC,EAC7B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EAMZ;IACC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,wBAAwB,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QACrE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,CAAA;IAC1D,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;QACtB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE;YACjB,sBAAsB;aACrB,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,yDAAyD,EAAE,GAAG,CAAC,CAAA;QACnH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACjB,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6BI;IAEJ,OAAO,CACL,gCAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,IAC1E,WAAW,CACL,CACV,CAAA;AACH,CAAC;AAED,eAAe,qBAAqB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CurrentElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentElement.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/CurrentElement.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ function CurrentElement({ currentElement }) {
3
+ return (React.createElement("div", null,
4
+ props.currentElement.getAttribute('lang'),
5
+ " ",
6
+ props.currentElement.getAttribute('exam-type')));
7
+ }
8
+ //# sourceMappingURL=CurrentElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentElement.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/CurrentElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,SAAS,cAAc,CAAC,EAAE,cAAc,EAAsC;IAC5E,OAAO,CACL;QACG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC;;QAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CACvF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export declare function CurrentLocalization({ currentAttributes }: {
3
+ currentAttributes: {
4
+ [key: string]: string;
5
+ };
6
+ }): React.JSX.Element;
7
+ //# sourceMappingURL=CurrentLocalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentLocalization.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/CurrentLocalization.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,wBAAgB,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,EAAE;IAAE,iBAAiB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CAAE,qBAsB1G"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import AttributeToggleButton from './AttributeToggleButton';
3
+ export function CurrentLocalization({ currentAttributes }) {
4
+ const { lang, examType } = currentAttributes;
5
+ console.info(lang, examType);
6
+ return (React.createElement("span", { className: "element-target" },
7
+ React.createElement("span", null, "Kohdennus:"),
8
+ React.createElement(AttributeToggleButton, { markType: "localization", attributeName: "lang", attributeValue: "fi-FI", displayName: "FI" }),
9
+ React.createElement(AttributeToggleButton, { markType: "localization", attributeName: "lang", attributeValue: "sv-FI", displayName: "SV" }),
10
+ React.createElement(AttributeToggleButton, { markType: "localization", attributeName: "examType", attributeValue: "visually-impaired", displayName: "NV" }),
11
+ React.createElement(AttributeToggleButton, { markType: "localization", attributeName: "examType", attributeValue: "hearing-impaired", displayName: "KV" })));
12
+ }
13
+ //# sourceMappingURL=CurrentLocalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentLocalization.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/CurrentLocalization.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAE3D,MAAM,UAAU,mBAAmB,CAAC,EAAE,iBAAiB,EAAoD;IACzG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAA;IAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC5B,OAAO,CACL,8BAAM,SAAS,EAAC,gBAAgB;QAC9B,+CAAuB;QACvB,oBAAC,qBAAqB,IAAC,QAAQ,EAAC,cAAc,EAAC,aAAa,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,GAAG;QAC9G,oBAAC,qBAAqB,IAAC,QAAQ,EAAC,cAAc,EAAC,aAAa,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,GAAG;QAC9G,oBAAC,qBAAqB,IACpB,QAAQ,EAAC,cAAc,EACvB,aAAa,EAAC,UAAU,EACxB,cAAc,EAAC,mBAAmB,EAClC,WAAW,EAAC,IAAI,GAChB;QACF,oBAAC,qBAAqB,IACpB,QAAQ,EAAC,cAAc,EACvB,aAAa,EAAC,UAAU,EACxB,cAAc,EAAC,kBAAkB,EACjC,WAAW,EAAC,IAAI,GAChB,CACG,CACR,CAAA;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { IconDefinition } from '@fortawesome/free-solid-svg-icons';
3
+ interface Props {
4
+ markName: string;
5
+ icon?: IconDefinition;
6
+ }
7
+ declare function FormatButton({ markName, icon }: Props): React.JSX.Element;
8
+ export default FormatButton;
9
+ //# sourceMappingURL=FormatButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormatButton.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/FormatButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAGlE,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,cAAc,CAAA;CACtB;AAID,iBAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,qBAuB9C;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { useEditorEventCallback, useEditorState } from '@nytimes/react-prosemirror';
2
+ import { toggleMark } from 'prosemirror-commands';
3
+ import React, { useEffect, useState } from 'react';
4
+ import classNames from 'classnames';
5
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
6
+ const getMarkType = (state, markName) => state.schema.marks[markName];
7
+ function FormatButton({ markName, icon }) {
8
+ const editorState = useEditorState();
9
+ const [isActive, setIsActive] = useState(false);
10
+ const onClick = useEditorEventCallback(view => {
11
+ const { state } = view;
12
+ const toggleFormatMark = toggleMark(getMarkType(state, markName));
13
+ toggleFormatMark(state, view.dispatch, view);
14
+ view.focus();
15
+ });
16
+ useEffect(() => {
17
+ const isTextFormatActive = editorState.storedMarks
18
+ ? getMarkType(editorState, markName).isInSet(editorState.storedMarks) // is next input going to be marked?
19
+ : getMarkType(editorState, markName).isInSet(editorState.selection.$to.marks()); // is current input marked?
20
+ setIsActive(!!isTextFormatActive);
21
+ }, [editorState]);
22
+ return (React.createElement("button", { onClick: onClick, className: classNames({ active: isActive }) },
23
+ React.createElement(FontAwesomeIcon, { size: "lg", className: "editor-menu-icon", icon: icon })));
24
+ }
25
+ export default FormatButton;
26
+ //# sourceMappingURL=FormatButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormatButton.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/FormatButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAOhE,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAE,QAAgB,EAAY,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AAEpG,SAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAS;IAC7C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE/C,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;QACtB,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;QACjE,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW;YAChD,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,oCAAoC;YAC1G,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC,2BAA2B;QAC7G,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;IACnC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,CACL,gCAAQ,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnE,oBAAC,eAAe,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAE,IAAK,GAAI,CAChE,CACV,CAAA;AACH,CAAC;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { Plugin } from 'prosemirror-state';
2
+ import React from 'react';
3
+ export type FormulaEditorState = {
4
+ pos: number;
5
+ latex: string;
6
+ element: Element;
7
+ };
8
+ export declare function FormulaButton(props: {
9
+ disabled: boolean;
10
+ setFormulaState: (values: FormulaEditorState) => void;
11
+ }): React.JSX.Element;
12
+ export declare class FormulaPlugin extends Plugin {
13
+ constructor(updateFormulaState: (values: FormulaEditorState) => void);
14
+ }
15
+ //# sourceMappingURL=Formula.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Formula.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/Formula.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA0B,MAAM,mBAAmB,CAAA;AAIlE,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,kBAAkB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAA;AAEjF,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAA;CAAE,qBAoBhH;AAED,qBAAa,aAAc,SAAQ,MAAM;gBAC3B,kBAAkB,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI;CAmBrE"}
@@ -0,0 +1,41 @@
1
+ import { Plugin, PluginKey } from 'prosemirror-state';
2
+ import { Fragment } from 'prosemirror-model';
3
+ import { useEditorEventCallback } from '@nytimes/react-prosemirror';
4
+ import React from 'react';
5
+ export function FormulaButton(props) {
6
+ const onClick = useEditorEventCallback(view => {
7
+ const transaction = view.state.tr;
8
+ const formula = view.state.schema.nodes.formula.create({ latex: '' }, Fragment.empty);
9
+ if (view.dispatch) {
10
+ view.dispatch(transaction.insert(view.state.selection.to, formula).scrollIntoView());
11
+ const pos = view.state.selection.to - formula.nodeSize;
12
+ const element = view.nodeDOM(pos);
13
+ if (element instanceof Element) {
14
+ props.setFormulaState({ pos, latex: '', element });
15
+ }
16
+ }
17
+ });
18
+ return (React.createElement("button", { onClick: onClick, "data-testid": "add-formula", disabled: props.disabled }, "Lis\u00E4\u00E4 kaava"));
19
+ }
20
+ export class FormulaPlugin extends Plugin {
21
+ constructor(updateFormulaState) {
22
+ super({
23
+ key: new PluginKey('Formula'),
24
+ props: {
25
+ handleClick(view, pos) {
26
+ const { state } = view;
27
+ const node = state.doc.nodeAt(pos);
28
+ if (node && node.type.name === 'formula') {
29
+ const domNode = view.nodeDOM(pos);
30
+ if (domNode instanceof Element) {
31
+ updateFormulaState({ pos, element: domNode, latex: node.attrs.latex });
32
+ return true;
33
+ }
34
+ }
35
+ return false;
36
+ }
37
+ }
38
+ });
39
+ }
40
+ }
41
+ //# sourceMappingURL=Formula.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Formula.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/Formula.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,UAAU,aAAa,CAAC,KAAmF;IAC/G,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAC5C,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;QACrF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,CAAA;YAEpF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAA;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;gBAC/B,KAAK,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,gCAAQ,OAAO,EAAE,OAAO,iBAAc,aAAa,EAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,4BAEnE,CACV,CAAA;AACH,CAAC;AAED,MAAM,OAAO,aAAc,SAAQ,MAAM;IACvC,YAAY,kBAAwD;QAClE,KAAK,CAAC;YACJ,GAAG,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC;YAC7B,KAAK,EAAE;gBACL,WAAW,CAAC,IAAgB,EAAE,GAAW;oBACvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;oBACtB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAClC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;wBACjC,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;4BAC/B,kBAAkB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAe,EAAE,CAAC,CAAA;4BAChF,OAAO,IAAI,CAAA;wBACb,CAAC;oBACH,CAAC;oBACD,OAAO,KAAK,CAAA;gBACd,CAAC;aACF;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { FormulaEditorState } from './Formula';
3
+ export declare function FormulaPopup({ state, onFinish }: {
4
+ state: FormulaEditorState;
5
+ onFinish: () => void;
6
+ }): React.JSX.Element;
7
+ //# sourceMappingURL=FormulaPopup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormulaPopup.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/FormulaPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAG9C,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,qBAmDpG"}
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { useEditorEventCallback } from '@nytimes/react-prosemirror';
3
+ import { Popup } from '../../shared/Popup';
4
+ export function FormulaPopup({ state, onFinish }) {
5
+ const onValueChange = (text) => {
6
+ if (text.length && !containsOnlyOneImgTag(text)) {
7
+ return 'Ainoastaan yksi kaava sallittu';
8
+ }
9
+ return null;
10
+ };
11
+ const onContentChange = useEditorEventCallback((view, textField) => {
12
+ const node = view.state.doc.nodeAt(state.pos);
13
+ const latex = extractLatex(textField) || '';
14
+ const { schema } = view.state;
15
+ if (node) {
16
+ const tr = view.state.tr.replaceWith(state.pos, state.pos + node.nodeSize, schema.node('formula', { ...node.attrs, ...{ latex } }));
17
+ view.dispatch(tr);
18
+ }
19
+ onFinish();
20
+ });
21
+ const onDelete = useEditorEventCallback(view => {
22
+ const node = view.state.doc.nodeAt(state.pos);
23
+ if (node) {
24
+ const tr = view.state.tr.delete(state.pos, state.pos + node.nodeSize);
25
+ view.dispatch(tr);
26
+ }
27
+ onFinish();
28
+ });
29
+ return (React.createElement(Popup, { element: state.element, initialTextContent: state.latex.length ? `<img alt="${state.latex}" src="/math.svg?latex=${encodeURIComponent(state.latex)}">` : '', onValueChange: onValueChange, onValueSave: onContentChange, enableDelete: true, onDelete: onDelete, onCancel: () => {
30
+ if (!state.latex.length) {
31
+ onDelete();
32
+ }
33
+ onFinish();
34
+ } }));
35
+ }
36
+ function extractLatex(value) {
37
+ const latexPattern = /alt="([^&]+)" src=/;
38
+ const latexMatch = value.match(latexPattern);
39
+ if (!latexMatch || latexMatch.length < 2) {
40
+ return;
41
+ }
42
+ return decodeURIComponent(latexMatch[1]);
43
+ }
44
+ function containsOnlyOneImgTag(htmlString) {
45
+ const imgTagPattern = /^<img\s+[^>]*>$/g;
46
+ const matches = htmlString.trim().match(imgTagPattern);
47
+ return matches && matches.length === 1;
48
+ }
49
+ //# sourceMappingURL=FormulaPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormulaPopup.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/FormulaPopup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { EditableProps } from '../../context/GradingInstructionContext';
3
+ export declare function ImageUploadButton({ saveImage }: {
4
+ saveImage: EditableProps['onSaveImage'];
5
+ }): React.JSX.Element;
6
+ //# sourceMappingURL=ImageUploadButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploadButton.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/ImageUploadButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAYvE,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAAE,qBAgF3F"}
@@ -0,0 +1,77 @@
1
+ import { useEditorEventCallback } from '@nytimes/react-prosemirror';
2
+ import React, { useRef, useContext } from 'react';
3
+ import { QuestionContext } from '../../context/QuestionContext';
4
+ import { CommonExamContext } from '../../context/CommonExamContext';
5
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
6
+ import { faImage } from '@fortawesome/free-solid-svg-icons';
7
+ var EditorAction;
8
+ (function (EditorAction) {
9
+ EditorAction["REMOVE_IMAGE"] = "REMOVE_IMAGE";
10
+ EditorAction["UPDATE_IMAGE"] = "UPDATE_IMAGE";
11
+ EditorAction["INSERT_IMAGE"] = "INSERT_IMAGE";
12
+ })(EditorAction || (EditorAction = {}));
13
+ export function ImageUploadButton({ saveImage }) {
14
+ const inputRef = useRef(null);
15
+ const { displayNumber } = useContext(QuestionContext);
16
+ const { resolveAttachment } = useContext(CommonExamContext);
17
+ const handleButtonClick = () => {
18
+ if (inputRef.current) {
19
+ inputRef.current.click();
20
+ }
21
+ };
22
+ const updateEditor = useEditorEventCallback((view, action, tempPath, permanentPath) => {
23
+ const { state } = view;
24
+ const { doc, schema: { nodes } } = state;
25
+ let tr = state.tr;
26
+ switch (action) {
27
+ case EditorAction.INSERT_IMAGE:
28
+ tr = tr.replaceSelectionWith(nodes.image.create({ src: tempPath }));
29
+ break;
30
+ case EditorAction.UPDATE_IMAGE:
31
+ doc.descendants((node, pos) => {
32
+ if (node.type.name === 'image' && node.attrs.src === tempPath) {
33
+ tr = tr.setNodeAttribute(pos, 'src', permanentPath);
34
+ }
35
+ });
36
+ break;
37
+ case EditorAction.REMOVE_IMAGE:
38
+ doc.descendants((node, pos) => {
39
+ if (node.type.name === 'image' && node.attrs.src === tempPath) {
40
+ tr = tr.delete(pos, pos + node.nodeSize);
41
+ }
42
+ });
43
+ break;
44
+ default:
45
+ console.error('Unsupported action:', action);
46
+ }
47
+ if (tr.steps.length > 0) {
48
+ view.dispatch(tr);
49
+ }
50
+ view.focus();
51
+ });
52
+ const handleFileChange = async (event) => {
53
+ var _a;
54
+ const file = (_a = event.target.files) === null || _a === void 0 ? void 0 : _a[0];
55
+ if (file) {
56
+ const tempPath = URL.createObjectURL(file);
57
+ updateEditor(EditorAction.INSERT_IMAGE, tempPath);
58
+ event.target.value = '';
59
+ try {
60
+ const permanentPath = await saveImage(file, displayNumber);
61
+ if (!permanentPath)
62
+ throw new Error('no permanent image path provided');
63
+ updateEditor(EditorAction.UPDATE_IMAGE, tempPath, resolveAttachment(permanentPath));
64
+ }
65
+ catch (e) {
66
+ console.error('error getting permanent path for image', e);
67
+ updateEditor(EditorAction.REMOVE_IMAGE, tempPath);
68
+ }
69
+ }
70
+ };
71
+ return (React.createElement(React.Fragment, null,
72
+ React.createElement("button", { onClick: handleButtonClick, title: "Lis\u00E4\u00E4 kuva" },
73
+ ' ',
74
+ React.createElement(FontAwesomeIcon, { size: "lg", icon: faImage, className: "editor-menu-icon", fixedWidth: true })),
75
+ React.createElement("input", { type: "file", accept: "image/png, image/jpeg, image/tiff", style: { display: 'none' }, ref: inputRef, onChange: e => void handleFileChange(e), "data-testid": "image-upload-input" })));
76
+ }
77
+ //# sourceMappingURL=ImageUploadButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploadButton.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/ImageUploadButton.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { NodeType, Schema } from 'prosemirror-model';
2
+ import { IconDefinition } from '@fortawesome/free-solid-svg-icons';
3
+ import React from 'react';
4
+ export declare function createListPlugin(schema: Schema): import("prosemirror-state").Plugin<any>;
5
+ export declare function ListButton(props: {
6
+ nodeType: NodeType;
7
+ icon: IconDefinition;
8
+ }): React.JSX.Element;
9
+ //# sourceMappingURL=List.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/List.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkB,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAGpE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,KAA8B,MAAM,OAAO,CAAA;AAKlD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,2CAM9C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,qBAoC7E"}
@@ -0,0 +1,41 @@
1
+ import { keymap } from 'prosemirror-keymap';
2
+ import { liftListItem, sinkListItem, splitListItem } from 'prosemirror-schema-list';
3
+ import { Fragment } from 'prosemirror-model';
4
+ import classNames from 'classnames';
5
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
6
+ import React, { useEffect, useState } from 'react';
7
+ import { useEditorEventCallback, useEditorState } from '@nytimes/react-prosemirror';
8
+ import { TextSelection } from 'prosemirror-state';
9
+ import { getNodeFromPosition } from './findNode';
10
+ export function createListPlugin(schema) {
11
+ return keymap({
12
+ Enter: splitListItem(schema.nodes.list_item),
13
+ 'Shift-Tab': liftListItem(schema.nodes.list_item),
14
+ Tab: sinkListItem(schema.nodes.list_item)
15
+ });
16
+ }
17
+ export function ListButton(props) {
18
+ const [isActive, setIsActive] = useState(false);
19
+ const editorState = useEditorState();
20
+ useEffect(() => {
21
+ const node = getNodeFromPosition(editorState.selection.$from, props.nodeType.name);
22
+ setIsActive(!!node);
23
+ }, [editorState]);
24
+ const onClick = useEditorEventCallback(view => {
25
+ const offset = view.state.selection.anchor + 1;
26
+ const transaction = view.state.tr;
27
+ const cell = view.state.schema.nodes.list_item.createAndFill(null, Fragment.empty);
28
+ const sss = props.nodeType.name === 'bullet_list' ? view.state.schema.nodes.bullet_list : view.state.schema.nodes.ordered_list;
29
+ const list = sss.create({}, Fragment.fromArray([cell]));
30
+ if (view.dispatch) {
31
+ view.dispatch(transaction
32
+ .insert(view.state.selection.to, list)
33
+ .scrollIntoView()
34
+ .setSelection(TextSelection.near(transaction.doc.resolve(offset))));
35
+ view.focus();
36
+ }
37
+ });
38
+ return (React.createElement("button", { onClick: onClick, className: classNames({ active: isActive }), "data-testid": `editor-menu-add-${props.nodeType.name}` },
39
+ React.createElement(FontAwesomeIcon, { size: "lg", icon: props.icon, className: "editor-menu-icon", fixedWidth: true })));
40
+ }
41
+ //# sourceMappingURL=List.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/List.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { MarkSpec } from 'prosemirror-model';
2
+ export declare function localization(hideable: boolean): MarkSpec;
3
+ //# sourceMappingURL=localization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../../../src/components/grading-instructions/editor/localization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAElD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAiCxD"}