@tinyweb_dev/oe-exam-sdk 0.2.14 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +12 -0
  2. package/dist/api/exam-questions.d.ts +1 -1
  3. package/dist/api/exam-questions.js +39 -1
  4. package/dist/api/exam-questions.types.d.ts +28 -0
  5. package/dist/api/exam-taking.types.d.ts +1 -0
  6. package/dist/components/exams/ExamCreator.d.ts +7 -1
  7. package/dist/components/exams/ExamCreator.js +57 -21
  8. package/dist/components/exams/ExamPreviewDialog.js +4 -2
  9. package/dist/components/exams/ExamQuestionsPageContainer.d.ts +5 -0
  10. package/dist/components/exams/ExamQuestionsPageContainer.js +2 -2
  11. package/dist/components/exams/api.d.ts +1 -1
  12. package/dist/components/exams/index.d.ts +1 -1
  13. package/dist/components/exams/take/components/QuestionRenderer.d.ts +6 -1
  14. package/dist/components/exams/take/components/QuestionRenderer.js +4 -4
  15. package/dist/components/exams/take/components/question-renderers/MoversListenAndWriteRenderer.d.ts +3 -1
  16. package/dist/components/exams/take/components/question-renderers/MoversListenAndWriteRenderer.js +5 -2
  17. package/dist/components/exams/take/components/question-renderers/MoversWordFillStructuredFormRenderer.d.ts +7 -1
  18. package/dist/components/exams/take/components/question-renderers/MoversWordFillStructuredFormRenderer.js +18 -9
  19. package/dist/components/exams/take/exam-taking.utils.d.ts +1 -0
  20. package/dist/components/exams/take/exam-taking.utils.js +1 -0
  21. package/dist/components/exams/take/index.d.ts +6 -0
  22. package/dist/components/exams/take/index.js +5 -0
  23. package/dist/components/exams/take/utils/question-transformers.d.ts +9 -1
  24. package/dist/components/exams/take/utils/question-transformers.js +68 -4
  25. package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.d.ts +6 -2
  26. package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.js +26 -5
  27. package/dist/components/questions/_shared/types/fill-in-blank.type.d.ts +9 -0
  28. package/dist/components/questions/_shared/types/question-group.type.d.ts +11 -0
  29. package/dist/components/questions/_shared/types/question-group.type.js +4 -1
  30. package/dist/components/questions/_shared/types/spontaneous-qa.type.d.ts +7 -0
  31. package/dist/components/questions/groups/ImageLabelGroupCard.d.ts +15 -0
  32. package/dist/components/questions/groups/ImageLabelGroupCard.js +42 -0
  33. package/dist/components/questions/groups/ImageLabelWordBank.d.ts +10 -0
  34. package/dist/components/questions/groups/ImageLabelWordBank.js +17 -0
  35. package/dist/components/questions/question-bank/QuestionBankPickerDialog.d.ts +45 -0
  36. package/dist/components/questions/question-bank/QuestionBankPickerDialog.js +209 -0
  37. package/dist/components/questions/question-bank/QuestionBankPickerRow.d.ts +9 -0
  38. package/dist/components/questions/question-bank/QuestionBankPickerRow.js +20 -0
  39. package/dist/components/questions/question-bank/index.d.ts +1 -0
  40. package/dist/components/questions/question-bank/index.js +1 -0
  41. package/dist/components/questions/question-bank/question-bank-picker.utils.d.ts +55 -0
  42. package/dist/components/questions/question-bank/question-bank-picker.utils.js +408 -0
  43. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.js +1 -2
  44. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.js +33 -9
  45. package/dist/components/questions/types/fill-in-blank/FillInBlankClient.js +6 -2
  46. package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.js +28 -5
  47. package/dist/components/questions/types/fill-in-blank/register.js +5 -0
  48. package/dist/components/questions/types/fill-in-blank/transform.js +4 -1
  49. package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardClient.d.ts +11 -0
  50. package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardClient.js +27 -0
  51. package/dist/components/questions/types/spontaneous-qa/SpontaneousQAClient.d.ts +2 -0
  52. package/dist/components/questions/types/spontaneous-qa/SpontaneousQAClient.js +15 -0
  53. package/dist/components/questions/types/spontaneous-qa/map-spontaneous-qa-data.d.ts +2 -0
  54. package/dist/components/questions/types/spontaneous-qa/map-spontaneous-qa-data.js +33 -0
  55. package/dist/components/questions/types/word-fill-structured-form/map-wfsf-question-data.js +8 -1
  56. package/dist/components/questions/types/word-fill-structured-form/transform.js +4 -0
  57. package/dist/components/questions/types/word-ordering/WordOrderingClient.js +51 -33
  58. package/dist/components/questions/viewer/QuestionViewer.js +12 -1
  59. package/dist/components/results/renderers/ReviewListenAndWriteRenderer.d.ts +3 -1
  60. package/dist/components/results/renderers/ReviewListenAndWriteRenderer.js +4 -2
  61. package/dist/components/results/renderers/review-question-body-dedicated.js +2 -2
  62. package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.js +8 -0
  63. package/dist/index.d.ts +4 -3
  64. package/dist/index.js +2 -1
  65. package/dist/shared/constants/ApiConstant.d.ts +1 -0
  66. package/dist/shared/constants/ApiConstant.js +1 -0
  67. package/dist/shared/lib/rich-text.d.ts +4 -0
  68. package/dist/shared/lib/rich-text.js +25 -0
  69. package/dist/shared/lib/stores/examQuestionStore.d.ts +4 -0
  70. package/dist/shared/lib/utils/question-transform-types.d.ts +4 -0
  71. package/dist/shared/lib/utils/question-transform.js +1 -1
  72. package/package.json +1 -1
@@ -22,3 +22,28 @@ export function richTextToPlainText(value) {
22
22
  export function isRichTextEmpty(value) {
23
23
  return richTextToPlainText(value) === '';
24
24
  }
25
+ const SIMPLE_WRAPPER_TAG_RE = /<\/?(?:p|br)\s*\/?>/gi;
26
+ /** True when HTML has marks/blocks beyond a plain paragraph (bold, list, table, …). */
27
+ export function hasRichTextFormatting(value) {
28
+ if (!value)
29
+ return false;
30
+ return /<[^>]+>/.test(value.replace(SIMPLE_WRAPPER_TAG_RE, ''));
31
+ }
32
+ /** Show stored TipTap HTML as editable plain text without collapsing line breaks. */
33
+ export function htmlToPlainEditorText(value) {
34
+ if (!value)
35
+ return '';
36
+ if (!/<[a-z][\s\S]*>/i.test(value))
37
+ return value;
38
+ return value
39
+ .replace(/<br\s*\/?>/gi, '\n')
40
+ .replace(/<\/p>\s*<p>/gi, '\n')
41
+ .replace(HTML_TAG_RE, '')
42
+ .replace(/&nbsp;|&amp;|&lt;|&gt;|&quot;|&#39;/gi, (entity) => {
43
+ return HTML_ENTITIES[entity.toLowerCase()] ?? entity;
44
+ })
45
+ .replace(/\u00a0/g, ' ')
46
+ .replace(/[ \t]+\n/g, '\n')
47
+ .replace(/\n{3,}/g, '\n\n')
48
+ .trim();
49
+ }
@@ -20,6 +20,10 @@ interface SharedPassageData {
20
20
  content: string;
21
21
  imageUrl: string;
22
22
  }>;
23
+ imageLabels?: Array<{
24
+ imageUrl: string;
25
+ label: string;
26
+ }>;
23
27
  }
24
28
  interface SharedSceneData {
25
29
  backgroundImageUrl?: string;
@@ -27,6 +27,10 @@ export type TransformResult = {
27
27
  content?: string;
28
28
  imageUrl?: string;
29
29
  articles?: any[];
30
+ imageLabels?: Array<{
31
+ imageUrl: string;
32
+ label: string;
33
+ }>;
30
34
  };
31
35
  questionListGroupData?: {
32
36
  questions: Array<{
@@ -175,7 +175,7 @@ function resolveQuestionGroupPayload(sources) {
175
175
  return passageData;
176
176
  if (imageData)
177
177
  return imageData;
178
- if (basicGroupData && (basicGroupData.title || basicGroupData.subtitle || basicGroupData.content || basicGroupData.imageUrl || basicGroupData.articles)) {
178
+ if (basicGroupData && (basicGroupData.title || basicGroupData.subtitle || basicGroupData.content || basicGroupData.imageUrl || basicGroupData.articles || (basicGroupData.imageLabels && basicGroupData.imageLabels.length > 0))) {
179
179
  return basicGroupData;
180
180
  }
181
181
  if (sceneData)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinyweb_dev/oe-exam-sdk",
3
- "version": "0.2.14",
3
+ "version": "1.0.1",
4
4
  "description": "Reusable OceanEdu question components.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",