@pie-element/match 12.1.2-next.5 → 12.1.3

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 (97) hide show
  1. package/CHANGELOG.json +1462 -0
  2. package/CHANGELOG.md +2343 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +1 -0
  5. package/configure/CHANGELOG.json +892 -0
  6. package/configure/CHANGELOG.md +2046 -0
  7. package/configure/lib/add-row.js +40 -0
  8. package/configure/lib/add-row.js.map +1 -0
  9. package/configure/lib/answer-config-block.js +288 -0
  10. package/configure/lib/answer-config-block.js.map +1 -0
  11. package/configure/lib/common.js +31 -0
  12. package/configure/lib/common.js.map +1 -0
  13. package/configure/lib/configure.js +410 -0
  14. package/configure/lib/configure.js.map +1 -0
  15. package/configure/lib/defaults.js +201 -0
  16. package/configure/lib/defaults.js.map +1 -0
  17. package/configure/lib/general-config-block.js +144 -0
  18. package/configure/lib/general-config-block.js.map +1 -0
  19. package/configure/lib/index.js +152 -0
  20. package/configure/lib/index.js.map +1 -0
  21. package/configure/lib/row.js +321 -0
  22. package/configure/lib/row.js.map +1 -0
  23. package/configure/lib/utils.js +12 -0
  24. package/configure/lib/utils.js.map +1 -0
  25. package/configure/package.json +29 -0
  26. package/configure/utils.js +19 -0
  27. package/controller/CHANGELOG.json +502 -0
  28. package/controller/CHANGELOG.md +1363 -0
  29. package/controller/lib/defaults.js +25 -0
  30. package/controller/lib/defaults.js.map +1 -0
  31. package/controller/lib/index.js +424 -0
  32. package/controller/lib/index.js.map +1 -0
  33. package/controller/package.json +24 -0
  34. package/docs/config-schema.json +2929 -0
  35. package/docs/config-schema.json.md +2162 -0
  36. package/docs/demo/config.js +8 -0
  37. package/docs/demo/generate.js +49 -0
  38. package/docs/demo/index.html +1 -0
  39. package/docs/demo/session.js +11 -0
  40. package/docs/pie-schema.json +1530 -0
  41. package/docs/pie-schema.json.md +907 -0
  42. package/lib/answer-grid.js +166 -0
  43. package/lib/answer-grid.js.map +1 -0
  44. package/lib/index.js +85 -0
  45. package/lib/index.js.map +1 -0
  46. package/lib/main.js +163 -0
  47. package/lib/main.js.map +1 -0
  48. package/package.json +21 -87
  49. package/configure.js +0 -2
  50. package/controller.js +0 -1
  51. package/dist/author/add-row.d.ts +0 -17
  52. package/dist/author/add-row.js +0 -24
  53. package/dist/author/answer-config-block.d.ts +0 -36
  54. package/dist/author/answer-config-block.js +0 -176
  55. package/dist/author/common.d.ts +0 -22
  56. package/dist/author/configure.d.ts +0 -48
  57. package/dist/author/configure.js +0 -259
  58. package/dist/author/defaults.d.ts +0 -203
  59. package/dist/author/defaults.js +0 -151
  60. package/dist/author/general-config-block.d.ts +0 -22
  61. package/dist/author/general-config-block.js +0 -93
  62. package/dist/author/index.d.ts +0 -44
  63. package/dist/author/index.js +0 -76
  64. package/dist/author/row.d.ts +0 -51
  65. package/dist/author/row.js +0 -204
  66. package/dist/author/utils.d.ts +0 -10
  67. package/dist/author/utils.js +0 -10
  68. package/dist/browser/Typography-BRnAIZOH.js +0 -9224
  69. package/dist/browser/Typography-BRnAIZOH.js.map +0 -1
  70. package/dist/browser/author/index.js +0 -47499
  71. package/dist/browser/author/index.js.map +0 -1
  72. package/dist/browser/browser-kkT1XVKw.js +0 -219
  73. package/dist/browser/browser-kkT1XVKw.js.map +0 -1
  74. package/dist/browser/controller/index.js +0 -267
  75. package/dist/browser/controller/index.js.map +0 -1
  76. package/dist/browser/delivery/index.js +0 -1984
  77. package/dist/browser/delivery/index.js.map +0 -1
  78. package/dist/browser/dist-Dmwvrh9y.js +0 -104
  79. package/dist/browser/dist-Dmwvrh9y.js.map +0 -1
  80. package/dist/browser/match.css +0 -2
  81. package/dist/controller/defaults.d.ts +0 -27
  82. package/dist/controller/defaults.js +0 -25
  83. package/dist/controller/index.d.ts +0 -29
  84. package/dist/controller/index.js +0 -154
  85. package/dist/delivery/answer-grid.d.ts +0 -28
  86. package/dist/delivery/answer-grid.js +0 -99
  87. package/dist/delivery/index.d.ts +0 -21
  88. package/dist/delivery/index.js +0 -51
  89. package/dist/delivery/main.d.ts +0 -26
  90. package/dist/delivery/main.js +0 -112
  91. package/dist/index.d.ts +0 -1
  92. package/dist/index.iife.d.ts +0 -8
  93. package/dist/index.iife.js +0 -148
  94. package/dist/index.js +0 -2
  95. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -16
  96. package/dist/runtime-support.d.ts +0 -12
  97. package/dist/runtime-support.js +0 -12
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.Config = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _utils = require("./utils");
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _styles = require("@mui/material/styles");
12
+ var _configUi = require("@pie-lib/config-ui");
13
+ var _editableHtmlTipTap = _interopRequireDefault(require("@pie-lib/editable-html-tip-tap"));
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _debug = _interopRequireDefault(require("debug"));
16
+ var _generalConfigBlock = _interopRequireDefault(require("./general-config-block"));
17
+ var _answerConfigBlock = _interopRequireDefault(require("./answer-config-block"));
18
+ const log = (0, _debug.default)('@pie-element:match:configure');
19
+ const {
20
+ Panel,
21
+ toggle,
22
+ radio,
23
+ dropdown
24
+ } = _configUi.settings;
25
+ const MainLayout = (0, _styles.styled)('div')(() => ({
26
+ '& .promptHolder': {
27
+ width: '100%'
28
+ }
29
+ }));
30
+ const PromptHolder = (0, _styles.styled)('div')(({
31
+ theme
32
+ }) => ({
33
+ width: '100%',
34
+ paddingTop: theme.spacing(2),
35
+ marginBottom: theme.spacing(2)
36
+ }));
37
+ const ErrorText = (0, _styles.styled)('div')(({
38
+ theme
39
+ }) => ({
40
+ fontSize: theme.typography.fontSize - 2,
41
+ color: theme.palette.error.main,
42
+ paddingTop: theme.spacing(1)
43
+ }));
44
+ class Configure extends _react.default.Component {
45
+ constructor(props) {
46
+ super(props);
47
+ (0, _defineProperty2.default)(this, "onTabChange", (event, value) => {
48
+ this.setState({
49
+ activeTab: value
50
+ });
51
+ });
52
+ (0, _defineProperty2.default)(this, "onChangeTabIndex", index => {
53
+ this.setState({
54
+ activeTab: index
55
+ });
56
+ });
57
+ (0, _defineProperty2.default)(this, "onChange", model => {
58
+ this.props.onModelChanged(model);
59
+ });
60
+ (0, _defineProperty2.default)(this, "onFeedbackChange", feedback => {
61
+ const {
62
+ model,
63
+ onModelChanged
64
+ } = this.props;
65
+ model.feedback = feedback;
66
+ onModelChanged(model);
67
+ });
68
+ (0, _defineProperty2.default)(this, "onDeleteRow", rowIndex => {
69
+ const {
70
+ model
71
+ } = this.props;
72
+ const newModel = {
73
+ ...model
74
+ };
75
+ newModel.rows.splice(rowIndex, 1);
76
+ this.onChange(newModel);
77
+ });
78
+ (0, _defineProperty2.default)(this, "onAddRow", () => {
79
+ const {
80
+ model,
81
+ configuration
82
+ } = this.props;
83
+ const newModel = {
84
+ ...model
85
+ };
86
+ const {
87
+ maxQuestions
88
+ } = configuration || {};
89
+ if (maxQuestions && (newModel.rows || []).length >= maxQuestions) {
90
+ this.setState({
91
+ dialog: {
92
+ open: true,
93
+ text: `There can be maximum ${maxQuestions} question row` + (maxQuestions > 1 ? 's' : '') + '.'
94
+ }
95
+ });
96
+ return;
97
+ }
98
+ newModel.rows = newModel.rows.concat({
99
+ id: this.rowIdCounter + 1,
100
+ title: `Question Text ${(newModel.rows || []).length + 1}`,
101
+ values: new Array(model.layout - 1).fill(false)
102
+ });
103
+ this.rowIdCounter += 1;
104
+ this.onChange(newModel);
105
+ });
106
+ (0, _defineProperty2.default)(this, "onLayoutChange", newLayout => {
107
+ const {
108
+ model
109
+ } = this.props;
110
+ const oldLayout = model.layout;
111
+ const newModel = {
112
+ ...model
113
+ };
114
+ if (newLayout > oldLayout) {
115
+ for (let i = 0; i < newLayout - oldLayout; i++) {
116
+ newModel.headers.push(`Column ${newModel.headers.length + 1}`);
117
+ }
118
+ newModel.rows.forEach(row => {
119
+ for (let i = 0; i < newLayout - oldLayout; i++) {
120
+ row.values.push(false);
121
+ }
122
+ });
123
+ } else if (newLayout < oldLayout) {
124
+ newModel.headers.splice(newLayout);
125
+ newModel.rows.forEach(row => {
126
+ row.values.splice(newLayout - 1);
127
+ });
128
+ }
129
+ newModel.layout = newLayout;
130
+ this.onChange(newModel);
131
+ });
132
+ (0, _defineProperty2.default)(this, "onResponseTypeChange", newChoiceMode => {
133
+ const {
134
+ model
135
+ } = this.props;
136
+ const newModel = {
137
+ ...model
138
+ };
139
+
140
+ // if we're switching to radio and we have more than one true, reset
141
+ if (newChoiceMode === 'radio') {
142
+ newModel.rows.forEach(row => {
143
+ const trueCount = row.values.reduce((total, current) => current === true ? total + 1 : total);
144
+ if (trueCount > 1) {
145
+ row.values = new Array(model.layout - 1).fill(false);
146
+ }
147
+ });
148
+ }
149
+ newModel.choiceMode = newChoiceMode;
150
+ this.onChange(newModel);
151
+ });
152
+ (0, _defineProperty2.default)(this, "onPartialScoringChange", partialScoring => {
153
+ this.props.model.partialScoring = partialScoring;
154
+ this.props.onModelChanged(this.props.model);
155
+ });
156
+ (0, _defineProperty2.default)(this, "onPromptChanged", prompt => {
157
+ this.props.onModelChanged({
158
+ ...this.props.model,
159
+ prompt
160
+ });
161
+ });
162
+ (0, _defineProperty2.default)(this, "onTeacherInstructionsChanged", teacherInstructions => {
163
+ this.props.onModelChanged({
164
+ ...this.props.model,
165
+ teacherInstructions
166
+ });
167
+ });
168
+ (0, _defineProperty2.default)(this, "onRationaleChanged", rationale => {
169
+ this.props.onModelChanged({
170
+ ...this.props.model,
171
+ rationale
172
+ });
173
+ });
174
+ let maxId = 0;
175
+ if (props.model.rows && props.model.rows.length > 0) {
176
+ maxId = Math.max(...props.model.rows.map(row => row.id));
177
+ }
178
+ this.rowIdCounter = maxId + 1;
179
+ this.state = {
180
+ activeTab: 0,
181
+ dialog: {
182
+ open: false,
183
+ text: ''
184
+ }
185
+ };
186
+ }
187
+ componentDidMount() {
188
+ const {
189
+ updatedRows,
190
+ wasChanged
191
+ } = this.validateRowsID(this.props.model.rows);
192
+ if (wasChanged) {
193
+ const newModel = {
194
+ ...this.props.model,
195
+ rows: updatedRows
196
+ };
197
+ this.props.onModelChanged(newModel);
198
+ }
199
+ }
200
+ validateRowsID(rows) {
201
+ let wasChanged = false;
202
+ const updatedRows = (rows || []).map((row, index) => {
203
+ if (row.id !== index + 1) {
204
+ wasChanged = true;
205
+ return {
206
+ ...row,
207
+ id: index + 1
208
+ };
209
+ }
210
+ return row;
211
+ });
212
+ return {
213
+ updatedRows,
214
+ wasChanged
215
+ };
216
+ }
217
+ render() {
218
+ const {
219
+ model,
220
+ imageSupport,
221
+ onModelChanged,
222
+ configuration,
223
+ onConfigurationChanged,
224
+ uploadSoundSupport
225
+ } = this.props;
226
+ const {
227
+ baseInputConfiguration = {},
228
+ contentDimensions = {},
229
+ feedback = {},
230
+ lockChoiceOrder = {},
231
+ maxImageWidth = {},
232
+ maxImageHeight = {},
233
+ partialScoring = {},
234
+ prompt = {},
235
+ rationale = {},
236
+ settingsPanelDisabled,
237
+ scoringType = {},
238
+ spellCheck = {},
239
+ studentInstructions = {},
240
+ teacherInstructions = {},
241
+ withRubric = {},
242
+ language = {},
243
+ languageChoices = {}
244
+ } = configuration || {};
245
+ const {
246
+ errors,
247
+ extraCSSRules,
248
+ feedbackEnabled,
249
+ promptEnabled,
250
+ rationaleEnabled,
251
+ spellCheckEnabled,
252
+ teacherInstructionsEnabled,
253
+ toolbarEditorPosition
254
+ } = model || {};
255
+ const {
256
+ prompt: promptError,
257
+ rationale: rationaleError,
258
+ teacherInstructions: teacherInstructionsError
259
+ } = errors || {};
260
+ const {
261
+ dialog
262
+ } = this.state;
263
+ const toolbarOpts = {
264
+ position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
265
+ };
266
+ const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
267
+ const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
268
+ const panelSettings = {
269
+ partialScoring: partialScoring.settings && toggle(partialScoring.label),
270
+ lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
271
+ feedbackEnabled: feedback.settings && toggle(feedback.label),
272
+ 'language.enabled': language.settings && toggle(language.label, true),
273
+ language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options)
274
+ };
275
+ const panelProperties = {
276
+ teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
277
+ studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
278
+ promptEnabled: prompt.settings && toggle(prompt.label),
279
+ rationaleEnabled: rationale.settings && toggle(rationale.label),
280
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
281
+ scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
282
+ rubricEnabled: withRubric?.settings && toggle(withRubric?.label)
283
+ };
284
+ log('[render] model', model);
285
+ return /*#__PURE__*/_react.default.createElement(MainLayout, null, /*#__PURE__*/_react.default.createElement(_configUi.layout.ConfigLayout, {
286
+ extraCSSRules: extraCSSRules,
287
+ dimensions: contentDimensions,
288
+ hideSettings: settingsPanelDisabled,
289
+ settings: /*#__PURE__*/_react.default.createElement(Panel, {
290
+ model: model,
291
+ configuration: configuration,
292
+ onChangeModel: model => onModelChanged(model),
293
+ onChangeConfiguration: config => onConfigurationChanged(config),
294
+ groups: {
295
+ Settings: panelSettings,
296
+ Properties: panelProperties
297
+ }
298
+ })
299
+ }, teacherInstructionsEnabled && /*#__PURE__*/_react.default.createElement(_configUi.InputContainer, {
300
+ label: teacherInstructions.label,
301
+ className: "promptHolder"
302
+ }, /*#__PURE__*/_react.default.createElement(PromptHolder, null, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
303
+ className: "prompt",
304
+ markup: model.teacherInstructions || '',
305
+ onChange: this.onTeacherInstructionsChanged,
306
+ imageSupport: imageSupport,
307
+ error: teacherInstructionsError,
308
+ nonEmpty: false,
309
+ toolbarOpts: toolbarOpts,
310
+ pluginProps: (0, _utils.getPluginProps)(teacherInstructions?.inputConfiguration, baseInputConfiguration),
311
+ spellCheck: spellCheckEnabled,
312
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
313
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
314
+ uploadSoundSupport: uploadSoundSupport,
315
+ languageCharactersProps: [{
316
+ language: 'spanish'
317
+ }, {
318
+ language: 'special'
319
+ }]
320
+ }), teacherInstructionsError && /*#__PURE__*/_react.default.createElement(ErrorText, null, teacherInstructionsError))), promptEnabled && /*#__PURE__*/_react.default.createElement(_configUi.InputContainer, {
321
+ label: prompt.label,
322
+ className: "promptHolder"
323
+ }, /*#__PURE__*/_react.default.createElement(PromptHolder, null, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
324
+ className: "prompt",
325
+ markup: model.prompt,
326
+ onChange: this.onPromptChanged,
327
+ imageSupport: imageSupport,
328
+ error: promptError,
329
+ nonEmpty: false,
330
+ disableUnderline: true,
331
+ toolbarOpts: toolbarOpts,
332
+ pluginProps: (0, _utils.getPluginProps)(prompt?.inputConfiguration, baseInputConfiguration),
333
+ spellCheck: spellCheckEnabled,
334
+ maxImageWidth: maxImageWidth && maxImageWidth.prompt,
335
+ maxImageHeight: maxImageHeight && maxImageHeight.prompt,
336
+ uploadSoundSupport: uploadSoundSupport,
337
+ languageCharactersProps: [{
338
+ language: 'spanish'
339
+ }, {
340
+ language: 'special'
341
+ }]
342
+ }), promptError && /*#__PURE__*/_react.default.createElement(ErrorText, null, promptError))), /*#__PURE__*/_react.default.createElement(_generalConfigBlock.default, {
343
+ model: model,
344
+ configuration: configuration,
345
+ onResponseTypeChange: this.onResponseTypeChange,
346
+ onLayoutChange: this.onLayoutChange
347
+ }), /*#__PURE__*/_react.default.createElement(_answerConfigBlock.default, {
348
+ model: model,
349
+ configuration: configuration,
350
+ imageSupport: imageSupport,
351
+ onChange: this.onChange,
352
+ onAddRow: this.onAddRow,
353
+ onDeleteRow: this.onDeleteRow,
354
+ toolbarOpts: toolbarOpts,
355
+ spellCheck: spellCheckEnabled,
356
+ uploadSoundSupport: uploadSoundSupport
357
+ }), rationaleEnabled && /*#__PURE__*/_react.default.createElement(_configUi.InputContainer, {
358
+ label: rationale.label,
359
+ className: "promptHolder"
360
+ }, /*#__PURE__*/_react.default.createElement(PromptHolder, null, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
361
+ className: "prompt",
362
+ markup: model.rationale || '',
363
+ onChange: this.onRationaleChanged,
364
+ imageSupport: imageSupport,
365
+ error: rationaleError,
366
+ toolbarOpts: toolbarOpts,
367
+ pluginProps: (0, _utils.getPluginProps)(rationale?.inputConfiguration, baseInputConfiguration),
368
+ spellCheck: spellCheckEnabled,
369
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
370
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
371
+ uploadSoundSupport: uploadSoundSupport,
372
+ languageCharactersProps: [{
373
+ language: 'spanish'
374
+ }, {
375
+ language: 'special'
376
+ }]
377
+ }), rationaleError && /*#__PURE__*/_react.default.createElement(ErrorText, null, rationaleError))), feedbackEnabled && /*#__PURE__*/_react.default.createElement(_configUi.FeedbackConfig, {
378
+ feedback: model.feedback,
379
+ onChange: this.onFeedbackChange,
380
+ toolbarOpts: toolbarOpts
381
+ }), /*#__PURE__*/_react.default.createElement(_configUi.AlertDialog, {
382
+ open: dialog.open,
383
+ title: "Warning",
384
+ text: dialog.text,
385
+ onConfirm: () => this.setState({
386
+ dialog: {
387
+ open: false
388
+ }
389
+ })
390
+ })));
391
+ }
392
+ }
393
+ (0, _defineProperty2.default)(Configure, "propTypes", {
394
+ onModelChanged: _propTypes.default.func,
395
+ onConfigurationChanged: _propTypes.default.func,
396
+ model: _propTypes.default.object.isRequired,
397
+ configuration: _propTypes.default.object.isRequired,
398
+ imageSupport: _propTypes.default.shape({
399
+ add: _propTypes.default.func.isRequired,
400
+ delete: _propTypes.default.func.isRequired
401
+ }),
402
+ uploadSoundSupport: _propTypes.default.shape({
403
+ add: _propTypes.default.func.isRequired,
404
+ delete: _propTypes.default.func.isRequired
405
+ })
406
+ });
407
+ (0, _defineProperty2.default)(Configure, "defaultProps", {});
408
+ const Config = exports.Config = Configure;
409
+ var _default = exports.default = Configure;
410
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","names":["_utils","require","_react","_interopRequireDefault","_styles","_configUi","_editableHtmlTipTap","_propTypes","_debug","_generalConfigBlock","_answerConfigBlock","log","debug","Panel","toggle","radio","dropdown","settings","MainLayout","styled","width","PromptHolder","theme","paddingTop","spacing","marginBottom","ErrorText","fontSize","typography","color","palette","error","main","Configure","React","Component","constructor","props","_defineProperty2","default","event","value","setState","activeTab","index","model","onModelChanged","feedback","rowIndex","newModel","rows","splice","onChange","configuration","maxQuestions","length","dialog","open","text","concat","id","rowIdCounter","title","values","Array","layout","fill","newLayout","oldLayout","i","headers","push","forEach","row","newChoiceMode","trueCount","reduce","total","current","choiceMode","partialScoring","prompt","teacherInstructions","rationale","maxId","Math","max","map","state","componentDidMount","updatedRows","wasChanged","validateRowsID","render","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","contentDimensions","lockChoiceOrder","maxImageWidth","maxImageHeight","settingsPanelDisabled","scoringType","spellCheck","studentInstructions","withRubric","language","languageChoices","errors","extraCSSRules","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","label","enabled","options","panelProperties","studentInstructionsEnabled","rubricEnabled","createElement","ConfigLayout","dimensions","hideSettings","onChangeModel","onChangeConfiguration","config","groups","Settings","Properties","InputContainer","className","markup","onTeacherInstructionsChanged","nonEmpty","pluginProps","getPluginProps","inputConfiguration","languageCharactersProps","onPromptChanged","disableUnderline","onResponseTypeChange","onLayoutChange","onAddRow","onDeleteRow","onRationaleChanged","FeedbackConfig","onFeedbackChange","AlertDialog","onConfirm","PropTypes","func","object","isRequired","shape","add","delete","Config","exports","_default"],"sources":["../src/configure.jsx"],"sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { FeedbackConfig, settings, layout, InputContainer, AlertDialog } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport GeneralConfigBlock from './general-config-block';\nimport AnswerConfigBlock from './answer-config-block';\n\nconst log = debug('@pie-element:match:configure');\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst MainLayout = styled('div')(() => ({\n '& .promptHolder': {\n width: '100%',\n },\n}));\n\nconst PromptHolder = styled('div')(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nclass Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n let maxId = 0;\n\n if (props.model.rows && props.model.rows.length > 0) {\n maxId = Math.max(...props.model.rows.map((row) => row.id));\n }\n\n this.rowIdCounter = maxId + 1;\n\n this.state = {\n activeTab: 0,\n dialog: {\n open: false,\n text: '',\n },\n };\n }\n\n componentDidMount() {\n const { updatedRows, wasChanged } = this.validateRowsID(this.props.model.rows);\n\n if (wasChanged) {\n const newModel = { ...this.props.model, rows: updatedRows };\n this.props.onModelChanged(newModel);\n }\n }\n\n validateRowsID(rows) {\n let wasChanged = false;\n\n const updatedRows = (rows || []).map((row, index) => {\n if (row.id !== index + 1) {\n wasChanged = true;\n\n return { ...row, id: index + 1 };\n }\n\n return row;\n });\n\n return { updatedRows, wasChanged };\n }\n\n onTabChange = (event, value) => {\n this.setState({ activeTab: value });\n };\n\n onChangeTabIndex = (index) => {\n this.setState({ activeTab: index });\n };\n\n onChange = (model) => {\n this.props.onModelChanged(model);\n };\n\n onFeedbackChange = (feedback) => {\n const { model, onModelChanged } = this.props;\n model.feedback = feedback;\n\n onModelChanged(model);\n };\n\n onDeleteRow = (rowIndex) => {\n const { model } = this.props;\n const newModel = { ...model };\n\n newModel.rows.splice(rowIndex, 1);\n\n this.onChange(newModel);\n };\n\n onAddRow = () => {\n const { model, configuration } = this.props;\n const newModel = { ...model };\n const { maxQuestions } = configuration || {};\n\n if (maxQuestions && (newModel.rows || []).length >= maxQuestions) {\n this.setState({\n dialog: {\n open: true,\n text: `There can be maximum ${maxQuestions} question row` + (maxQuestions > 1 ? 's' : '') + '.',\n },\n });\n return;\n }\n\n newModel.rows = newModel.rows.concat({\n id: this.rowIdCounter + 1,\n title: `Question Text ${(newModel.rows || []).length + 1}`,\n values: new Array(model.layout - 1).fill(false),\n });\n\n this.rowIdCounter += 1;\n\n this.onChange(newModel);\n };\n\n onLayoutChange = (newLayout) => {\n const { model } = this.props;\n const oldLayout = model.layout;\n const newModel = { ...model };\n\n if (newLayout > oldLayout) {\n for (let i = 0; i < newLayout - oldLayout; i++) {\n newModel.headers.push(`Column ${newModel.headers.length + 1}`);\n }\n\n newModel.rows.forEach((row) => {\n for (let i = 0; i < newLayout - oldLayout; i++) {\n row.values.push(false);\n }\n });\n } else if (newLayout < oldLayout) {\n newModel.headers.splice(newLayout);\n\n newModel.rows.forEach((row) => {\n row.values.splice(newLayout - 1);\n });\n }\n\n newModel.layout = newLayout;\n\n this.onChange(newModel);\n };\n\n onResponseTypeChange = (newChoiceMode) => {\n const { model } = this.props;\n const newModel = { ...model };\n\n // if we're switching to radio and we have more than one true, reset\n if (newChoiceMode === 'radio') {\n newModel.rows.forEach((row) => {\n const trueCount = row.values.reduce((total, current) => (current === true ? total + 1 : total));\n\n if (trueCount > 1) {\n row.values = new Array(model.layout - 1).fill(false);\n }\n });\n }\n\n newModel.choiceMode = newChoiceMode;\n\n this.onChange(newModel);\n };\n\n onPartialScoringChange = (partialScoring) => {\n this.props.model.partialScoring = partialScoring;\n\n this.props.onModelChanged(this.props.model);\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n render() {\n const { model, imageSupport, onModelChanged, configuration, onConfigurationChanged, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageWidth = {},\n maxImageHeight = {},\n partialScoring = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const { dialog } = this.state;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n log('[render] model', model);\n\n return (\n <MainLayout>\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className=\"promptHolder\">\n <PromptHolder>\n <EditableHtml\n className=\"prompt\"\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {teacherInstructionsError && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </PromptHolder>\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className=\"promptHolder\">\n <PromptHolder>\n <EditableHtml\n className=\"prompt\"\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {promptError && <ErrorText>{promptError}</ErrorText>}\n </PromptHolder>\n </InputContainer>\n )}\n\n <GeneralConfigBlock\n model={model}\n configuration={configuration}\n onResponseTypeChange={this.onResponseTypeChange}\n onLayoutChange={this.onLayoutChange}\n />\n\n <AnswerConfigBlock\n model={model}\n configuration={configuration}\n imageSupport={imageSupport}\n onChange={this.onChange}\n onAddRow={this.onAddRow}\n onDeleteRow={this.onDeleteRow}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className=\"promptHolder\">\n <PromptHolder>\n <EditableHtml\n className=\"prompt\"\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {rationaleError && <ErrorText>{rationaleError}</ErrorText>}\n </PromptHolder>\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.onFeedbackChange} toolbarOpts={toolbarOpts} />\n )}\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n </layout.ConfigLayout>\n </MainLayout>\n );\n }\n}\n\nexport const Config = Configure;\n\nexport default Configure;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /** NOTE: teacherInstructions, studentInstructions, rationale & scoringType
8
+ * functionalities are not defined yet - the value for those can belong to
9
+ * model or to configuration
10
+ */
11
+ var _default = exports.default = {
12
+ model: {
13
+ choiceMode: 'radio',
14
+ feedbackEnabled: false,
15
+ headers: ['Column 1', 'Column 2', 'Column 3'],
16
+ layout: 3,
17
+ lockChoiceOrder: true,
18
+ partialScoring: false,
19
+ prompt: '',
20
+ promptEnabled: true,
21
+ rationale: '',
22
+ rationaleEnabled: true,
23
+ rows: [],
24
+ scoringType: 'auto',
25
+ studentInstructionsEnabled: true,
26
+ teacherInstructions: '',
27
+ teacherInstructionsEnabled: true,
28
+ toolbarEditorPosition: 'bottom'
29
+ },
30
+ configuration: {
31
+ baseInputConfiguration: {
32
+ h3: {
33
+ disabled: true
34
+ },
35
+ audio: {
36
+ disabled: false
37
+ },
38
+ video: {
39
+ disabled: false
40
+ },
41
+ image: {
42
+ disabled: false
43
+ },
44
+ textAlign: {
45
+ disabled: true
46
+ },
47
+ showParagraphs: {
48
+ disabled: false
49
+ },
50
+ separateParagraphs: {
51
+ disabled: true
52
+ }
53
+ },
54
+ rows: {
55
+ inputConfiguration: {
56
+ audio: {
57
+ disabled: true
58
+ },
59
+ video: {
60
+ disabled: true
61
+ },
62
+ image: {
63
+ disabled: false
64
+ }
65
+ }
66
+ },
67
+ feedback: {
68
+ settings: true,
69
+ label: 'Feedback',
70
+ enabled: true
71
+ },
72
+ headers: {
73
+ settings: true,
74
+ inputConfiguration: {
75
+ audio: {
76
+ disabled: true
77
+ },
78
+ video: {
79
+ disabled: true
80
+ },
81
+ image: {
82
+ disabled: false
83
+ }
84
+ }
85
+ },
86
+ layout: {
87
+ settings: true,
88
+ label: 'Layout'
89
+ },
90
+ lockChoiceOrder: {
91
+ settings: false,
92
+ label: 'Lock Choice Order'
93
+ },
94
+ partialScoring: {
95
+ settings: false,
96
+ label: 'Allow Partial Scoring'
97
+ },
98
+ choiceMode: {
99
+ settings: true,
100
+ label: 'Response Type'
101
+ },
102
+ prompt: {
103
+ settings: true,
104
+ label: 'Prompt',
105
+ inputConfiguration: {
106
+ audio: {
107
+ disabled: false
108
+ },
109
+ video: {
110
+ disabled: false
111
+ },
112
+ image: {
113
+ disabled: false
114
+ }
115
+ },
116
+ required: false
117
+ },
118
+ rationale: {
119
+ settings: true,
120
+ label: 'Rationale',
121
+ inputConfiguration: {
122
+ audio: {
123
+ disabled: false
124
+ },
125
+ video: {
126
+ disabled: false
127
+ },
128
+ image: {
129
+ disabled: false
130
+ }
131
+ },
132
+ required: false
133
+ },
134
+ settingsPanelDisabled: false,
135
+ spellCheck: {
136
+ label: 'Spellcheck',
137
+ settings: false,
138
+ enabled: true
139
+ },
140
+ scoringType: {
141
+ settings: false,
142
+ label: 'Scoring Type'
143
+ },
144
+ studentInstructions: {
145
+ settings: false,
146
+ label: 'Student Instructions'
147
+ },
148
+ teacherInstructions: {
149
+ settings: true,
150
+ label: 'Teacher Instructions',
151
+ inputConfiguration: {
152
+ audio: {
153
+ disabled: false
154
+ },
155
+ video: {
156
+ disabled: false
157
+ },
158
+ image: {
159
+ disabled: false
160
+ }
161
+ },
162
+ required: false
163
+ },
164
+ maxImageWidth: {
165
+ teacherInstructions: 300,
166
+ prompt: 300,
167
+ rationale: 300,
168
+ rowTitles: 300
169
+ },
170
+ maxImageHeight: {
171
+ teacherInstructions: 300,
172
+ prompt: 300,
173
+ rationale: 300,
174
+ rowTitles: 150
175
+ },
176
+ withRubric: {
177
+ settings: false,
178
+ label: 'Add Rubric'
179
+ },
180
+ minQuestions: 2,
181
+ maxQuestions: 5,
182
+ maxLengthQuestionsHeading: 100,
183
+ maxAnswers: 5,
184
+ maxLengthAnswers: 100,
185
+ maxLengthFirstColumnHeading: 100,
186
+ mathMlOptions: {
187
+ mmlOutput: false,
188
+ mmlEditing: false
189
+ },
190
+ language: {
191
+ settings: false,
192
+ label: 'Specify Language',
193
+ enabled: false
194
+ },
195
+ languageChoices: {
196
+ label: 'Language Choices',
197
+ options: []
198
+ }
199
+ }
200
+ };
201
+ //# sourceMappingURL=defaults.js.map