@pie-element/multiple-choice 13.3.5-ng.0 → 13.3.6

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 (133) hide show
  1. package/CHANGELOG.json +1972 -0
  2. package/CHANGELOG.md +2778 -0
  3. package/LICENSE.md +5 -0
  4. package/PRINT.md +35 -0
  5. package/README.md +56 -0
  6. package/choice.png +0 -0
  7. package/configure/CHANGELOG.json +1387 -0
  8. package/configure/CHANGELOG.md +2114 -0
  9. package/configure/lib/__tests__/root.test.js +279 -0
  10. package/configure/lib/defaults.js +203 -0
  11. package/configure/lib/defaults.js.map +1 -0
  12. package/configure/lib/index.js +203 -0
  13. package/configure/lib/index.js.map +1 -0
  14. package/configure/lib/main.js +484 -0
  15. package/configure/lib/main.js.map +1 -0
  16. package/configure/lib/utils.js +18 -0
  17. package/configure/lib/utils.js.map +1 -0
  18. package/configure/package.json +22 -0
  19. package/controller/CHANGELOG.json +527 -0
  20. package/controller/CHANGELOG.md +1423 -0
  21. package/controller/lib/__tests__/index.test.js +561 -0
  22. package/controller/lib/__tests__/utils.test.js +8 -0
  23. package/controller/lib/defaults.js +33 -0
  24. package/controller/lib/defaults.js.map +1 -0
  25. package/controller/lib/index.js +298 -0
  26. package/controller/lib/index.js.map +1 -0
  27. package/controller/lib/utils.js +15 -0
  28. package/controller/lib/utils.js.map +1 -0
  29. package/controller/package.json +15 -0
  30. package/docs/config-schema.json +2993 -0
  31. package/docs/config-schema.json.md +2217 -0
  32. package/docs/demo/config.js +8 -0
  33. package/docs/demo/generate.js +61 -0
  34. package/docs/demo/index.html +1 -0
  35. package/docs/demo/pie.manifest.json +11 -0
  36. package/docs/demo/session.js +7 -0
  37. package/docs/pie-schema.json +1332 -0
  38. package/docs/pie-schema.json.md +1015 -0
  39. package/lib/__tests__/choice-input-test.js +49 -0
  40. package/lib/__tests__/choice-input.test.js +49 -0
  41. package/lib/__tests__/index-test.js +206 -0
  42. package/lib/__tests__/index.test.js +221 -0
  43. package/lib/__tests__/key-events-test.js +95 -0
  44. package/lib/__tests__/key-events.test.js +107 -0
  45. package/lib/__tests__/multiple-choice-test.js +101 -0
  46. package/lib/__tests__/multiple-choice.test.js +256 -0
  47. package/lib/__tests__/session-updater-test.js +70 -0
  48. package/lib/__tests__/session-updater.test.js +70 -0
  49. package/lib/choice-input.js +383 -0
  50. package/lib/choice-input.js.map +1 -0
  51. package/lib/choice.js +192 -0
  52. package/lib/choice.js.map +1 -0
  53. package/lib/feedback-tick.js +134 -0
  54. package/lib/feedback-tick.js.map +1 -0
  55. package/lib/index.js +405 -0
  56. package/lib/index.js.map +1 -0
  57. package/lib/main.js +63 -0
  58. package/lib/main.js.map +1 -0
  59. package/lib/multiple-choice.js +399 -0
  60. package/lib/multiple-choice.js.map +1 -0
  61. package/lib/print.js +94 -0
  62. package/lib/print.js.map +1 -0
  63. package/lib/session-updater.js +37 -0
  64. package/lib/session-updater.js.map +1 -0
  65. package/lib/utils.js +14 -0
  66. package/lib/utils.js.map +1 -0
  67. package/module/configure.js +1 -0
  68. package/module/controller.js +3045 -0
  69. package/module/demo.js +86 -0
  70. package/module/element.js +1 -0
  71. package/module/index.html +21 -0
  72. package/module/manifest.json +14 -0
  73. package/module/print-demo.js +124 -0
  74. package/module/print.html +18 -0
  75. package/module/print.js +1 -17945
  76. package/package.json +28 -94
  77. package/configure.js +0 -2
  78. package/controller.js +0 -1
  79. package/dist/author/defaults.d.ts +0 -205
  80. package/dist/author/defaults.js +0 -151
  81. package/dist/author/index.d.ts +0 -26
  82. package/dist/author/index.js +0 -119
  83. package/dist/author/main.d.ts +0 -34
  84. package/dist/author/main.js +0 -287
  85. package/dist/author/utils.d.ts +0 -9
  86. package/dist/author/utils.js +0 -7
  87. package/dist/browser/Radio-Bbu0BH_k.js +0 -9581
  88. package/dist/browser/Radio-Bbu0BH_k.js.map +0 -1
  89. package/dist/browser/author/index.js +0 -37436
  90. package/dist/browser/author/index.js.map +0 -1
  91. package/dist/browser/controller/index.js +0 -204
  92. package/dist/browser/controller/index.js.map +0 -1
  93. package/dist/browser/delivery/index.js +0 -251
  94. package/dist/browser/delivery/index.js.map +0 -1
  95. package/dist/browser/dist-CHbLnyuX.js +0 -111
  96. package/dist/browser/dist-CHbLnyuX.js.map +0 -1
  97. package/dist/browser/main-DahQxQZC.js +0 -2451
  98. package/dist/browser/main-DahQxQZC.js.map +0 -1
  99. package/dist/browser/multiple-choice.css +0 -2
  100. package/dist/browser/print/index.js +0 -43
  101. package/dist/browser/print/index.js.map +0 -1
  102. package/dist/controller/defaults.d.ts +0 -35
  103. package/dist/controller/defaults.js +0 -29
  104. package/dist/controller/index.d.ts +0 -65
  105. package/dist/controller/index.js +0 -129
  106. package/dist/controller/utils.d.ts +0 -10
  107. package/dist/controller/utils.js +0 -8
  108. package/dist/delivery/choice-input.d.ts +0 -44
  109. package/dist/delivery/choice-input.js +0 -280
  110. package/dist/delivery/choice.d.ts +0 -20
  111. package/dist/delivery/choice.js +0 -105
  112. package/dist/delivery/feedback-tick.d.ts +0 -20
  113. package/dist/delivery/feedback-tick.js +0 -104
  114. package/dist/delivery/index.d.ts +0 -37
  115. package/dist/delivery/index.js +0 -215
  116. package/dist/delivery/main.d.ts +0 -31
  117. package/dist/delivery/main.js +0 -51
  118. package/dist/delivery/multiple-choice.d.ts +0 -61
  119. package/dist/delivery/multiple-choice.js +0 -245
  120. package/dist/delivery/session-updater.d.ts +0 -10
  121. package/dist/delivery/session-updater.js +0 -9
  122. package/dist/delivery/utils.d.ts +0 -10
  123. package/dist/delivery/utils.js +0 -4
  124. package/dist/index.d.ts +0 -1
  125. package/dist/index.iife.d.ts +0 -8
  126. package/dist/index.iife.js +0 -148
  127. package/dist/index.js +0 -2
  128. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -16
  129. package/dist/print/index.d.ts +0 -15
  130. package/dist/print/index.js +0 -43
  131. package/dist/runtime-support.d.ts +0 -12
  132. package/dist/runtime-support.js +0 -12
  133. package/module/print.js.map +0 -1
package/package.json CHANGED
@@ -1,111 +1,45 @@
1
1
  {
2
2
  "name": "@pie-element/multiple-choice",
3
- "version": "13.3.5-ng.0",
4
- "description": "React implementation of multiple-choice element synced from pie-elements",
5
- "repository": {
6
- "type": "git",
7
- "url": "git+https://github.com/pie-framework/pie-elements-ng.git",
8
- "directory": "packages/elements-react/multiple-choice"
3
+ "repository": "pie-framework/pie-elements",
4
+ "version": "13.3.6",
5
+ "publishConfig": {
6
+ "access": "public"
9
7
  },
10
8
  "dependencies": {
11
9
  "@emotion/react": "^11.14.0",
12
10
  "@emotion/style": "^0.8.0",
13
11
  "@mui/icons-material": "^7.3.4",
14
12
  "@mui/material": "^7.3.4",
15
- "@pie-lib/correct-answer-toggle": "4.0.3-next.38",
16
- "@pie-lib/render-ui": "6.1.1-next.38",
17
- "@pie-lib/translator": "4.0.3-next.1",
13
+ "@pie-framework/pie-player-events": "^0.1.0",
14
+ "@pie-lib/correct-answer-toggle": "4.0.5",
15
+ "@pie-lib/math-rendering": "5.1.0",
16
+ "@pie-lib/render-ui": "6.1.3",
17
+ "@pie-lib/translator": "4.0.2",
18
+ "classnames": "^2.2.6",
18
19
  "debug": "^4.1.1",
20
+ "lodash-es": "^4.17.23",
19
21
  "prop-types": "^15.8.1",
20
- "react-transition-group": "^4.4.5",
21
- "@pie-element/shared-configure-events": "0.1.0",
22
- "@pie-lib/config-ui": "13.0.4-next.31",
23
- "@pie-element/shared-lodash": "0.1.1-next.1",
24
- "@pie-lib/editable-html-tip-tap": "2.1.2-next.31",
25
- "@pie-element/shared-controller-utils": "0.1.1-next.1",
26
- "clsx": "^2.1.1",
27
- "@pie-element/shared-player-events": "0.1.0",
28
- "@pie-element/shared-math-rendering-mathjax": "0.1.1-next.0"
22
+ "react": "18.3.1",
23
+ "react-dom": "18.3.1",
24
+ "react-transition-group": "^4.4.5"
29
25
  },
30
- "peerDependencies": {
31
- "react": "^18.0.0",
32
- "react-dom": "^18.0.0"
26
+ "gitHead": "3da9547e82ab80b9119ef5854e3593c3e040309d",
27
+ "scripts": {
28
+ "postpublish": "../../scripts/postpublish"
33
29
  },
30
+ "main": "lib/index.js",
31
+ "module": "src/index.js",
34
32
  "exports": {
35
33
  ".": {
36
- "types": "./dist/index.d.ts",
37
- "default": "./dist/index.js"
38
- },
39
- "./delivery": {
40
- "types": "./dist/delivery/index.d.ts",
41
- "default": "./dist/delivery/index.js"
42
- },
43
- "./browser/delivery": {
44
- "default": "./dist/browser/delivery/index.js"
45
- },
46
- "./author": {
47
- "types": "./dist/author/index.d.ts",
48
- "default": "./dist/author/index.js"
49
- },
50
- "./browser/author": {
51
- "default": "./dist/browser/author/index.js"
52
- },
53
- "./configure": {
54
- "types": "./dist/author/index.d.ts",
55
- "default": "./dist/author/index.js"
56
- },
57
- "./controller": {
58
- "types": "./dist/controller/index.d.ts",
59
- "default": "./dist/controller/index.js"
60
- },
61
- "./controller.js": {
62
- "types": "./dist/controller/index.d.ts",
63
- "default": "./dist/controller/index.js"
64
- },
65
- "./browser/controller": {
66
- "default": "./dist/browser/controller/index.js"
67
- },
68
- "./print": {
69
- "types": "./dist/print/index.d.ts",
70
- "default": "./dist/print/index.js"
71
- },
72
- "./browser/print": {
73
- "default": "./dist/browser/print/index.js"
74
- },
75
- "./runtime-support": {
76
- "types": "./dist/runtime-support.d.ts",
77
- "default": "./dist/runtime-support.js"
78
- }
79
- },
80
- "type": "module",
81
- "main": "./dist/index.js",
82
- "types": "./dist/index.d.ts",
83
- "files": [
84
- "configure.js",
85
- "controller.js",
86
- "dist",
87
- "module"
88
- ],
89
- "sideEffects": false,
90
- "devDependencies": {
91
- "vite": "^8.0.1",
92
- "typescript": "^5.9.3",
93
- "@vitejs/plugin-react": "^6.0.1",
94
- "@types/react": "^18.2.0",
95
- "@types/react-dom": "^18.2.0"
96
- },
97
- "scripts": {
98
- "build": "bun x vite build && bun x vite build --config ../../../tools/vite/element-browser.config.ts && bun x vite build --config ../../../tools/vite/element-legacy-print.config.ts && bun x vite build --config vite.config.iife.ts && bun x tsc --emitDeclarationOnly",
99
- "dev": "bun x vite",
100
- "demo": "bun x vite --mode demo",
101
- "test": "bun x vitest run"
102
- },
103
- "pie": {
104
- "controller": "@pie-element/multiple-choice/controller",
105
- "configure": "@pie-element/multiple-choice/configure",
106
- "browserSharedDependencies": {
107
- "react": "18.2.0",
108
- "react-dom": "18.2.0"
34
+ "import": "./lib/index.js",
35
+ "require": "./lib/index.js",
36
+ "default": "./lib/index.js"
37
+ },
38
+ "./print": "./src/print.js",
39
+ "./configure/lib": {
40
+ "import": "./configure/lib/index.js",
41
+ "require": "./configure/lib/index.js",
42
+ "default": "./configure/lib/index.js"
109
43
  }
110
44
  }
111
45
  }
package/configure.js DELETED
@@ -1,2 +0,0 @@
1
- export { default } from './dist/author/index.js';
2
- export * from './dist/author/index.js';
package/controller.js DELETED
@@ -1 +0,0 @@
1
- export * from './dist/controller/index.js';
@@ -1,205 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/multiple-choice/configure/src/defaults.js
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- /** NOTE: teacherInstructions, studentInstructions, rationale & scoringType
10
- * functionalities are not defined yet - the value for those can belong to
11
- * model or to configure
12
- */
13
- declare const _default: {
14
- model: {
15
- choiceMode: string;
16
- choicePrefix: string;
17
- choices: never[];
18
- choicesLayout: string;
19
- feedbackEnabled: boolean;
20
- gridColumns: number;
21
- lockChoiceOrder: boolean;
22
- partialScoring: boolean;
23
- prompt: string;
24
- promptEnabled: boolean;
25
- rationale: string;
26
- rationaleEnabled: boolean;
27
- scoringType: string;
28
- studentInstructionsEnabled: boolean;
29
- teacherInstructions: string;
30
- teacherInstructionsEnabled: boolean;
31
- toolbarEditorPosition: string;
32
- selectedAnswerBackgroundColor: string;
33
- keyboardEventsEnabled: boolean;
34
- };
35
- configuration: {
36
- baseInputConfiguration: {
37
- h3: {
38
- disabled: boolean;
39
- };
40
- audio: {
41
- disabled: boolean;
42
- };
43
- video: {
44
- disabled: boolean;
45
- };
46
- image: {
47
- disabled: boolean;
48
- };
49
- textAlign: {
50
- disabled: boolean;
51
- };
52
- showParagraphs: {
53
- disabled: boolean;
54
- };
55
- separateParagraphs: {
56
- disabled: boolean;
57
- };
58
- };
59
- choices: {
60
- inputConfiguration: {
61
- audio: {
62
- disabled: boolean;
63
- };
64
- video: {
65
- disabled: boolean;
66
- };
67
- image: {
68
- disabled: boolean;
69
- };
70
- };
71
- };
72
- spellCheck: {
73
- label: string;
74
- settings: boolean;
75
- enabled: boolean;
76
- };
77
- choicesLayout: {
78
- settings: boolean;
79
- label: string;
80
- };
81
- gridColumns: {
82
- label: string;
83
- };
84
- answerChoiceCount: number;
85
- addChoiceButton: {
86
- settings: boolean;
87
- label: string;
88
- };
89
- choiceMode: {
90
- settings: boolean;
91
- label: string;
92
- };
93
- choicePrefix: {
94
- settings: boolean;
95
- label: string;
96
- };
97
- deleteChoice: {
98
- settings: boolean;
99
- };
100
- feedback: {
101
- settings: boolean;
102
- label: string;
103
- };
104
- prompt: {
105
- settings: boolean;
106
- label: string;
107
- inputConfiguration: {
108
- audio: {
109
- disabled: boolean;
110
- };
111
- video: {
112
- disabled: boolean;
113
- };
114
- image: {
115
- disabled: boolean;
116
- };
117
- };
118
- required: boolean;
119
- };
120
- lockChoiceOrder: {
121
- settings: boolean;
122
- label: string;
123
- };
124
- partialScoring: {
125
- settings: boolean;
126
- label: string;
127
- };
128
- rationale: {
129
- settings: boolean;
130
- label: string;
131
- inputConfiguration: {
132
- audio: {
133
- disabled: boolean;
134
- };
135
- video: {
136
- disabled: boolean;
137
- };
138
- image: {
139
- disabled: boolean;
140
- };
141
- };
142
- required: boolean;
143
- };
144
- scoringType: {
145
- settings: boolean;
146
- label: string;
147
- };
148
- studentInstructions: {
149
- settings: boolean;
150
- label: string;
151
- };
152
- teacherInstructions: {
153
- settings: boolean;
154
- label: string;
155
- inputConfiguration: {
156
- audio: {
157
- disabled: boolean;
158
- };
159
- video: {
160
- disabled: boolean;
161
- };
162
- image: {
163
- disabled: boolean;
164
- };
165
- };
166
- required: boolean;
167
- };
168
- toolbarEditorPosition: {
169
- settings: boolean;
170
- label: string;
171
- };
172
- minAnswerChoices: number;
173
- maxAnswerChoices: number;
174
- maxImageWidth: {
175
- teacherInstructions: number;
176
- prompt: number;
177
- rationale: number;
178
- choices: number;
179
- };
180
- maxImageHeight: {
181
- teacherInstructions: number;
182
- prompt: number;
183
- rationale: number;
184
- choices: number;
185
- };
186
- withRubric: {
187
- settings: boolean;
188
- label: string;
189
- };
190
- mathMlOptions: {
191
- mmlOutput: boolean;
192
- mmlEditing: boolean;
193
- };
194
- language: {
195
- settings: boolean;
196
- label: string;
197
- enabled: boolean;
198
- };
199
- languageChoices: {
200
- label: string;
201
- options: never[];
202
- };
203
- };
204
- };
205
- export default _default;
@@ -1,151 +0,0 @@
1
- //#region src/author/defaults.ts
2
- var e = {
3
- model: {
4
- choiceMode: "checkbox",
5
- choicePrefix: "letters",
6
- choices: [],
7
- choicesLayout: "vertical",
8
- feedbackEnabled: !1,
9
- gridColumns: 2,
10
- lockChoiceOrder: !0,
11
- partialScoring: !0,
12
- prompt: "",
13
- promptEnabled: !0,
14
- rationale: "",
15
- rationaleEnabled: !0,
16
- scoringType: "auto",
17
- studentInstructionsEnabled: !0,
18
- teacherInstructions: "",
19
- teacherInstructionsEnabled: !0,
20
- toolbarEditorPosition: "bottom",
21
- selectedAnswerBackgroundColor: "initial",
22
- keyboardEventsEnabled: !1
23
- },
24
- configuration: {
25
- baseInputConfiguration: {
26
- h3: { disabled: !0 },
27
- audio: { disabled: !1 },
28
- video: { disabled: !1 },
29
- image: { disabled: !1 },
30
- textAlign: { disabled: !0 },
31
- showParagraphs: { disabled: !1 },
32
- separateParagraphs: { disabled: !0 }
33
- },
34
- choices: { inputConfiguration: {
35
- audio: { disabled: !1 },
36
- video: { disabled: !1 },
37
- image: { disabled: !1 }
38
- } },
39
- spellCheck: {
40
- label: "Spellcheck",
41
- settings: !1,
42
- enabled: !0
43
- },
44
- choicesLayout: {
45
- settings: !1,
46
- label: "Choices Layout"
47
- },
48
- gridColumns: { label: "Grid columns" },
49
- answerChoiceCount: 0,
50
- addChoiceButton: {
51
- settings: !0,
52
- label: "Add a Choice"
53
- },
54
- choiceMode: {
55
- settings: !0,
56
- label: "Response Type"
57
- },
58
- choicePrefix: {
59
- settings: !0,
60
- label: "Choice Labels"
61
- },
62
- deleteChoice: { settings: !0 },
63
- feedback: {
64
- settings: !0,
65
- label: "Feedback"
66
- },
67
- prompt: {
68
- settings: !0,
69
- label: "Prompt",
70
- inputConfiguration: {
71
- audio: { disabled: !1 },
72
- video: { disabled: !1 },
73
- image: { disabled: !1 }
74
- },
75
- required: !1
76
- },
77
- lockChoiceOrder: {
78
- settings: !0,
79
- label: "Lock Choice Order"
80
- },
81
- partialScoring: {
82
- settings: !1,
83
- label: "Allow Partial Scoring"
84
- },
85
- rationale: {
86
- settings: !0,
87
- label: "Rationale",
88
- inputConfiguration: {
89
- audio: { disabled: !0 },
90
- video: { disabled: !0 },
91
- image: { disabled: !1 }
92
- },
93
- required: !1
94
- },
95
- scoringType: {
96
- settings: !1,
97
- label: "Scoring Type"
98
- },
99
- studentInstructions: {
100
- settings: !1,
101
- label: "Student Instructions"
102
- },
103
- teacherInstructions: {
104
- settings: !0,
105
- label: "Teacher Instructions",
106
- inputConfiguration: {
107
- audio: { disabled: !1 },
108
- video: { disabled: !1 },
109
- image: { disabled: !1 }
110
- },
111
- required: !1
112
- },
113
- toolbarEditorPosition: {
114
- settings: !1,
115
- label: "Toolbar Editor Position"
116
- },
117
- minAnswerChoices: 2,
118
- maxAnswerChoices: 5,
119
- maxImageWidth: {
120
- teacherInstructions: 300,
121
- prompt: 300,
122
- rationale: 636,
123
- choices: 900
124
- },
125
- maxImageHeight: {
126
- teacherInstructions: 300,
127
- prompt: 300,
128
- rationale: 300,
129
- choices: 300
130
- },
131
- withRubric: {
132
- settings: !1,
133
- label: "Add Rubric"
134
- },
135
- mathMlOptions: {
136
- mmlOutput: !1,
137
- mmlEditing: !1
138
- },
139
- language: {
140
- settings: !1,
141
- label: "Specify Language",
142
- enabled: !1
143
- },
144
- languageChoices: {
145
- label: "Language Choices",
146
- options: []
147
- }
148
- }
149
- };
150
- //#endregion
151
- export { e as default };
@@ -1,26 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/multiple-choice/configure/src/index.js
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- export default class MultipleChoice extends HTMLElement {
10
- static createDefaultModel: (model?: {}) => any;
11
- constructor();
12
- set model(s: any);
13
- set configuration(c: any);
14
- set disableSidePanel(s: any);
15
- dispatchModelUpdated(reset: any): void;
16
- onModelChanged(m: any, reset: any): void;
17
- onConfigurationChanged(c: any): void;
18
- /** @param {done, progress, file} handler */
19
- insertImage(handler: any): void;
20
- onDeleteImage(src: any, done: any): void;
21
- insertSound(handler: any): void;
22
- onDeleteSound(src: any, done: any): void;
23
- _render(): void;
24
- connectedCallback(): void;
25
- disconnectedCallback(): void;
26
- }
@@ -1,119 +0,0 @@
1
- import { Main as e } from "./main.js";
2
- import t from "./defaults.js";
3
- import n from "react";
4
- import { createRoot as r } from "react-dom/client";
5
- import { defaults as i } from "@pie-element/shared-lodash";
6
- import a from "debug";
7
- import { DeleteImageEvent as o, DeleteSoundEvent as s, InsertImageEvent as c, InsertSoundEvent as l, ModelUpdatedEvent as u } from "@pie-element/shared-configure-events";
8
- import { choiceUtils as d } from "@pie-lib/config-ui";
9
- //#region src/author/index.ts
10
- var f = a("multiple-choice:configure"), p = (e, t = 0) => {
11
- if (!e || e.length === 0) {
12
- let e = [];
13
- for (let n = 0; n < t; n++) e.push({
14
- value: `${n}`,
15
- label: "",
16
- feedback: {
17
- type: "none",
18
- value: ""
19
- }
20
- });
21
- return e;
22
- }
23
- return e;
24
- }, m = (e, n) => {
25
- let r = i(e, t.configuration);
26
- return {
27
- configuration: r,
28
- model: {
29
- ...n,
30
- choices: p(n && n.choices || [], r && r.answerChoiceCount)
31
- }
32
- };
33
- }, h = class i extends HTMLElement {
34
- static createDefaultModel = (e = {}) => {
35
- let n = d.normalizeChoices({
36
- ...t.model,
37
- ...e,
38
- choices: p(e && e.choices || [])
39
- });
40
- return n.choicesLayout = e.choicesLayout || e.verticalMode === !1 && "horizontal" || t.model.choicesLayout, n;
41
- };
42
- constructor() {
43
- super(), this._root = null, this._reactContainer = null, this._model = i.createDefaultModel(), this._configuration = t.configuration, this.onModelChanged = this.onModelChanged.bind(this), this.onConfigurationChanged = this.onConfigurationChanged.bind(this);
44
- }
45
- set model(e) {
46
- this._model = i.createDefaultModel(e), this._render();
47
- }
48
- set configuration(e) {
49
- let n = m(e, this._model);
50
- this.onModelChanged(n.model);
51
- let r = {
52
- ...t.configuration,
53
- ...n.configuration
54
- };
55
- this._configuration = r, r?.language?.enabled ? r?.languageChoices?.options?.length && (this._model.language = r?.languageChoices.options[0].value) : r.language.settings && this._model.language ? (this._configuration.language.enabled = !0, (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) && (this._configuration.languageChoices.options = []), this._configuration.languageChoices.options.find((e) => e.value === this._model.language) || this._configuration.languageChoices.options.push({
56
- value: this._model.language,
57
- label: this._model.language
58
- })) : delete this._model.language, this._render();
59
- }
60
- set disableSidePanel(e) {
61
- this._disableSidePanel = e, this._render();
62
- }
63
- dispatchModelUpdated(e) {
64
- let t = !!e;
65
- this.dispatchEvent(new u(this._model, t));
66
- }
67
- onModelChanged(e, t) {
68
- this._model = {
69
- ...this._model,
70
- ...e
71
- }, this._render(), this.dispatchModelUpdated(t);
72
- }
73
- onConfigurationChanged(e) {
74
- this._configuration = m(e, this._model).configuration, this._model && this.onModelChanged(this._model), this._render();
75
- }
76
- insertImage(e) {
77
- this.dispatchEvent(new c(e));
78
- }
79
- onDeleteImage(e, t) {
80
- this.dispatchEvent(new o(e, t));
81
- }
82
- insertSound(e) {
83
- this.dispatchEvent(new l(e));
84
- }
85
- onDeleteSound(e, t) {
86
- this.dispatchEvent(new s(e, t));
87
- }
88
- _render() {
89
- f("_render - Starting render"), f("_render - Model:", this._model ? "present" : "missing"), f("_render - Configuration:", this._configuration ? "present" : "missing"), f("_render - Root exists:", !!this._root);
90
- try {
91
- let t = n.createElement(e, {
92
- model: this._model,
93
- configuration: this._configuration,
94
- onModelChanged: this.onModelChanged,
95
- onConfigurationChanged: this.onConfigurationChanged,
96
- disableSidePanel: this._disableSidePanel,
97
- imageSupport: {
98
- add: this.insertImage.bind(this),
99
- delete: this.onDeleteImage.bind(this)
100
- },
101
- uploadSoundSupport: {
102
- add: this.insertSound.bind(this),
103
- delete: this.onDeleteSound.bind(this)
104
- }
105
- });
106
- this._root || (f("_render - Creating React container"), this._reactContainer = document.createElement("div"), this._reactContainer.className = "pie-configure-wrapper", this.appendChild(this._reactContainer), f("_render - Creating new React root"), this._root = r(this._reactContainer), f("_render - React root created successfully")), f("_render - Calling root.render()"), this._root.render(t), f("_render - Render completed successfully");
107
- } catch (e) {
108
- throw console.error("❌ [multiple-choice-configure] Render error:", e), console.error("Error stack:", e.stack), e;
109
- }
110
- }
111
- connectedCallback() {
112
- f("connectedCallback - Component connected to DOM"), f("connectedCallback - Model:", this._model ? "present" : "missing"), f("connectedCallback - Configuration:", this._configuration ? "present" : "missing"), this._render();
113
- }
114
- disconnectedCallback() {
115
- f("disconnectedCallback - Component disconnected from DOM"), this._root &&= (f("disconnectedCallback - Unmounting React root"), this._root.unmount(), null), this._reactContainer &&= null;
116
- }
117
- };
118
- //#endregion
119
- export { h as default };
@@ -1,34 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/multiple-choice/configure/src/main.jsx
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- import React from 'react';
10
- import PropTypes from 'prop-types';
11
- export declare class Main extends React.Component {
12
- static propTypes: {
13
- model: PropTypes.Validator<object>;
14
- configuration: PropTypes.Validator<object>;
15
- disableSidePanel: PropTypes.Requireable<boolean>;
16
- onModelChanged: PropTypes.Validator<(...args: any[]) => any>;
17
- onConfigurationChanged: PropTypes.Validator<(...args: any[]) => any>;
18
- imageSupport: PropTypes.Requireable<PropTypes.InferProps<{
19
- add: PropTypes.Validator<(...args: any[]) => any>;
20
- delete: PropTypes.Validator<(...args: any[]) => any>;
21
- }>>;
22
- };
23
- state: {
24
- showWarning: boolean;
25
- };
26
- onRemoveChoice: any;
27
- onAddChoice: any;
28
- onChoiceChanged: any;
29
- onPromptChanged: any;
30
- onTeacherInstructionsChanged: any;
31
- onModelChanged: any;
32
- render(): React.JSX.Element;
33
- }
34
- export default Main;