@pie-element/ebsr 9.0.2-next.13 → 9.0.2-next.15

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 (54) hide show
  1. package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.json +1972 -0
  2. package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.md +2478 -0
  3. package/configure/node_modules/@pie-element/multiple-choice/LICENSE.md +5 -0
  4. package/configure/node_modules/@pie-element/multiple-choice/PRINT.md +35 -0
  5. package/configure/node_modules/@pie-element/multiple-choice/README.md +56 -0
  6. package/configure/node_modules/@pie-element/multiple-choice/choice.png +0 -0
  7. package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.json +1387 -0
  8. package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.md +1949 -0
  9. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js +133 -0
  10. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js.map +1 -0
  11. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js +248 -0
  12. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js.map +1 -0
  13. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js +610 -0
  14. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js.map +1 -0
  15. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js +18 -0
  16. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js.map +1 -0
  17. package/configure/node_modules/@pie-element/multiple-choice/configure/package.json +18 -0
  18. package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.json +527 -0
  19. package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.md +869 -0
  20. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js +18 -0
  21. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js.map +1 -0
  22. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js +306 -0
  23. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js.map +1 -0
  24. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js +36 -0
  25. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js.map +1 -0
  26. package/configure/node_modules/@pie-element/multiple-choice/controller/package.json +15 -0
  27. package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json +614 -0
  28. package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json.md +469 -0
  29. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/config.js +8 -0
  30. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/generate.js +53 -0
  31. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/index.html +1 -0
  32. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/session.js +7 -0
  33. package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json +411 -0
  34. package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json.md +327 -0
  35. package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js +332 -0
  36. package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js.map +1 -0
  37. package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js +165 -0
  38. package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js.map +1 -0
  39. package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js +174 -0
  40. package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js.map +1 -0
  41. package/configure/node_modules/@pie-element/multiple-choice/lib/index.js +156 -0
  42. package/configure/node_modules/@pie-element/multiple-choice/lib/index.js.map +1 -0
  43. package/configure/node_modules/@pie-element/multiple-choice/lib/main.js +96 -0
  44. package/configure/node_modules/@pie-element/multiple-choice/lib/main.js.map +1 -0
  45. package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js +359 -0
  46. package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js.map +1 -0
  47. package/configure/node_modules/@pie-element/multiple-choice/lib/print.js +129 -0
  48. package/configure/node_modules/@pie-element/multiple-choice/lib/print.js.map +1 -0
  49. package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js +35 -0
  50. package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js.map +1 -0
  51. package/configure/node_modules/@pie-element/multiple-choice/package.json +31 -0
  52. package/configure/package.json +2 -2
  53. package/controller/package.json +1 -1
  54. package/package.json +3 -3
@@ -0,0 +1,610 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.Main = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _editableHtml = _interopRequireDefault(require("@pie-lib/pie-toolbox/editable-html"));
31
+
32
+ var _configUi = require("@pie-lib/pie-toolbox/config-ui");
33
+
34
+ var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
35
+
36
+ var _styles = require("@material-ui/core/styles");
37
+
38
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
39
+
40
+ var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
41
+
42
+ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
43
+
44
+ var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
45
+
46
+ var _merge = _interopRequireDefault(require("lodash/merge"));
47
+
48
+ var _utils = require("./utils");
49
+
50
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
51
+
52
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
53
+
54
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
55
+
56
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
57
+
58
+ var Panel = _configUi.settings.Panel,
59
+ toggle = _configUi.settings.toggle,
60
+ radio = _configUi.settings.radio,
61
+ dropdown = _configUi.settings.dropdown;
62
+ var MAX_CHOICES = 9;
63
+
64
+ var styles = function styles(theme) {
65
+ return {
66
+ promptHolder: {
67
+ width: '100%',
68
+ paddingTop: theme.spacing.unit * 2,
69
+ marginBottom: theme.spacing.unit * 2
70
+ },
71
+ rationaleHolder: {
72
+ flex: 1,
73
+ marginTop: theme.spacing.unit * 1.5,
74
+ paddingTop: theme.spacing.unit * 2,
75
+ marginLeft: theme.spacing.unit * 3.5
76
+ },
77
+ accessibilityHolder: {
78
+ flex: 1,
79
+ marginTop: theme.spacing.unit * 1.5,
80
+ paddingTop: theme.spacing.unit * 2,
81
+ marginLeft: theme.spacing.unit * 3.5
82
+ },
83
+ choiceConfigurationHolder: {
84
+ display: 'flex',
85
+ flexDirection: 'column',
86
+ marginBottom: theme.spacing.unit
87
+ },
88
+ choiceConfiguration: {
89
+ width: '100%'
90
+ },
91
+ switchElement: {
92
+ justifyContent: 'space-between',
93
+ margin: 0
94
+ },
95
+ addButton: {
96
+ marginTop: theme.spacing.unit,
97
+ "float": 'right'
98
+ },
99
+ disableButton: {
100
+ cursor: 'not-allowed',
101
+ pointerEvents: 'all',
102
+ backgroundColor: _renderUi.color.disabled(),
103
+ '&:hover': {
104
+ backgroundColor: _renderUi.color.disabled()
105
+ },
106
+ '&:focus': {
107
+ backgroundColor: _renderUi.color.disabled()
108
+ }
109
+ },
110
+ flexContainer: {
111
+ display: 'flex',
112
+ alignItems: 'center'
113
+ },
114
+ titleText: {
115
+ fontSize: theme.typography.fontSize + 2,
116
+ marginRight: theme.spacing.unit
117
+ },
118
+ tooltip: {
119
+ fontSize: theme.typography.fontSize - 2,
120
+ whiteSpace: 'pre',
121
+ maxWidth: '500px'
122
+ },
123
+ errorText: {
124
+ fontSize: theme.typography.fontSize - 2,
125
+ color: theme.palette.error.main,
126
+ paddingTop: theme.spacing.unit
127
+ }
128
+ };
129
+ };
130
+
131
+ var Design = (0, _styles.withStyles)(styles)(function (props) {
132
+ var classes = props.classes,
133
+ model = props.model,
134
+ configuration = props.configuration,
135
+ onPromptChanged = props.onPromptChanged,
136
+ onChoiceChanged = props.onChoiceChanged,
137
+ onRemoveChoice = props.onRemoveChoice,
138
+ onAddChoice = props.onAddChoice,
139
+ imageSupport = props.imageSupport,
140
+ uploadSoundSupport = props.uploadSoundSupport,
141
+ onChangeModel = props.onChangeModel,
142
+ onConfigurationChanged = props.onConfigurationChanged,
143
+ onTeacherInstructionsChanged = props.onTeacherInstructionsChanged;
144
+
145
+ var _ref = configuration || {},
146
+ _ref$addChoiceButton = _ref.addChoiceButton,
147
+ addChoiceButton = _ref$addChoiceButton === void 0 ? {} : _ref$addChoiceButton,
148
+ _ref$contentDimension = _ref.contentDimensions,
149
+ contentDimensions = _ref$contentDimension === void 0 ? {} : _ref$contentDimension,
150
+ _ref$feedback = _ref.feedback,
151
+ feedback = _ref$feedback === void 0 ? {} : _ref$feedback,
152
+ _ref$deleteChoice = _ref.deleteChoice,
153
+ deleteChoice = _ref$deleteChoice === void 0 ? {} : _ref$deleteChoice,
154
+ _ref$choiceMode = _ref.choiceMode,
155
+ choiceMode = _ref$choiceMode === void 0 ? {} : _ref$choiceMode,
156
+ _ref$choicePrefix = _ref.choicePrefix,
157
+ choicePrefix = _ref$choicePrefix === void 0 ? {} : _ref$choicePrefix,
158
+ _ref$partialScoring = _ref.partialScoring,
159
+ partialScoring = _ref$partialScoring === void 0 ? {} : _ref$partialScoring,
160
+ _ref$lockChoiceOrder = _ref.lockChoiceOrder,
161
+ lockChoiceOrder = _ref$lockChoiceOrder === void 0 ? {} : _ref$lockChoiceOrder,
162
+ _ref$teacherInstructi = _ref.teacherInstructions,
163
+ teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
164
+ _ref$studentInstructi = _ref.studentInstructions,
165
+ studentInstructions = _ref$studentInstructi === void 0 ? {} : _ref$studentInstructi,
166
+ _ref$rationale = _ref.rationale,
167
+ rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
168
+ _ref$accessibility = _ref.accessibility,
169
+ accessibility = _ref$accessibility === void 0 ? {} : _ref$accessibility,
170
+ _ref$scoringType = _ref.scoringType,
171
+ scoringType = _ref$scoringType === void 0 ? {} : _ref$scoringType,
172
+ _ref$sequentialChoice = _ref.sequentialChoiceLabels,
173
+ sequentialChoiceLabels = _ref$sequentialChoice === void 0 ? {} : _ref$sequentialChoice,
174
+ settingsPanelDisabled = _ref.settingsPanelDisabled,
175
+ choicesLayout = _ref.choicesLayout,
176
+ _ref$spellCheck = _ref.spellCheck,
177
+ spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
178
+ gridColumns = _ref.gridColumns,
179
+ _ref$maxImageWidth = _ref.maxImageWidth,
180
+ maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
181
+ _ref$maxImageHeight = _ref.maxImageHeight,
182
+ maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
183
+ _ref$prompt = _ref.prompt,
184
+ prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
185
+ _ref$withRubric = _ref.withRubric,
186
+ withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric,
187
+ _ref$mathMlOptions = _ref.mathMlOptions,
188
+ mathMlOptions = _ref$mathMlOptions === void 0 ? {} : _ref$mathMlOptions,
189
+ _ref$language = _ref.language,
190
+ language = _ref$language === void 0 ? {} : _ref$language,
191
+ _ref$languageChoices = _ref.languageChoices,
192
+ languageChoices = _ref$languageChoices === void 0 ? {} : _ref$languageChoices;
193
+
194
+ var _ref2 = configuration || {},
195
+ maxAnswerChoices = _ref2.maxAnswerChoices;
196
+
197
+ var _ref3 = model || {},
198
+ limitChoicesNumber = _ref3.limitChoicesNumber,
199
+ teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
200
+ rationaleEnabled = _ref3.rationaleEnabled,
201
+ accessibilityLabelsEnabled = _ref3.accessibilityLabelsEnabled,
202
+ feedbackEnabled = _ref3.feedbackEnabled,
203
+ promptEnabled = _ref3.promptEnabled,
204
+ spellCheckEnabled = _ref3.spellCheckEnabled,
205
+ choices = _ref3.choices,
206
+ errors = _ref3.errors,
207
+ toolbarEditorPosition = _ref3.toolbarEditorPosition;
208
+
209
+ var _ref4 = errors || {},
210
+ choicesErrors = _ref4.choicesErrors,
211
+ correctResponseError = _ref4.correctResponseError,
212
+ answerChoicesError = _ref4.answerChoicesError;
213
+
214
+ var nrOfColumnsAvailable = choices !== null && choices !== void 0 && choices.length ? Array.from({
215
+ length: choices.length
216
+ }, function (_, i) {
217
+ return "".concat(i + 1);
218
+ }) : [];
219
+ var labelPlugins = {
220
+ audio: {
221
+ disabled: true
222
+ },
223
+ video: {
224
+ disabled: true
225
+ }
226
+ };
227
+ var toolbarOpts = {
228
+ position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
229
+ }; // if old property is used, set maxAnswerChoices to 9
230
+
231
+ if (limitChoicesNumber) {
232
+ maxAnswerChoices = MAX_CHOICES;
233
+ }
234
+
235
+ var validationMessage = (0, _utils.generateValidationMessage)(configuration);
236
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
237
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
238
+ var addChoiceButtonTooltip = maxAnswerChoices && (choices === null || choices === void 0 ? void 0 : choices.length) >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '';
239
+ var panelSettings = {
240
+ choiceMode: choiceMode.settings && radio(choiceMode.label, ['checkbox', 'radio']),
241
+ 'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
242
+ choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
243
+ partialScoring: partialScoring.settings && toggle(partialScoring.label),
244
+ lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
245
+ feedbackEnabled: feedback.settings && toggle(feedback.label),
246
+ choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
247
+ gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable),
248
+ 'language.enabled': language.settings && toggle(language.label, true),
249
+ language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options)
250
+ };
251
+ var panelProperties = {
252
+ teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
253
+ studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
254
+ promptEnabled: prompt.settings && toggle(prompt.label),
255
+ rationaleEnabled: rationale.settings && toggle(rationale.label),
256
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
257
+ accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
258
+ scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
259
+ rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
260
+ };
261
+ return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
262
+ dimensions: contentDimensions,
263
+ hideSettings: settingsPanelDisabled,
264
+ settings: /*#__PURE__*/_react["default"].createElement(Panel, {
265
+ model: model,
266
+ onChangeModel: onChangeModel,
267
+ configuration: configuration,
268
+ onChangeConfiguration: onConfigurationChanged,
269
+ groups: {
270
+ Settings: panelSettings,
271
+ Properties: panelProperties
272
+ }
273
+ })
274
+ }, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
275
+ label: teacherInstructions.label,
276
+ className: classes.promptHolder
277
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
278
+ className: classes.prompt,
279
+ markup: model.teacherInstructions || '',
280
+ onChange: onTeacherInstructionsChanged,
281
+ imageSupport: imageSupport,
282
+ nonEmpty: false,
283
+ toolbarOpts: toolbarOpts,
284
+ spellCheck: spellCheckEnabled,
285
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
286
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
287
+ uploadSoundSupport: uploadSoundSupport,
288
+ languageCharactersProps: [{
289
+ language: 'spanish'
290
+ }, {
291
+ language: 'special'
292
+ }],
293
+ mathMlOptions: mathMlOptions
294
+ })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
295
+ label: prompt.label,
296
+ className: classes.promptHolder
297
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
298
+ className: classes.prompt,
299
+ markup: model.prompt,
300
+ onChange: onPromptChanged,
301
+ imageSupport: imageSupport,
302
+ nonEmpty: false,
303
+ disableUnderline: true,
304
+ toolbarOpts: toolbarOpts,
305
+ spellCheck: spellCheckEnabled,
306
+ maxImageWidth: maxImageWidth && maxImageWidth.prompt,
307
+ maxImageHeight: maxImageHeight && maxImageHeight.prompt,
308
+ uploadSoundSupport: uploadSoundSupport,
309
+ languageCharactersProps: [{
310
+ language: 'spanish'
311
+ }, {
312
+ language: 'special'
313
+ }],
314
+ mathMlOptions: mathMlOptions
315
+ })), /*#__PURE__*/_react["default"].createElement("div", {
316
+ className: classes.flexContainer
317
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
318
+ className: classes.titleText
319
+ }, "Choices"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
320
+ classes: {
321
+ tooltip: classes.tooltip
322
+ },
323
+ disableFocusListener: true,
324
+ disableTouchListener: true,
325
+ placement: 'right',
326
+ title: validationMessage
327
+ }, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
328
+ fontSize: 'small',
329
+ color: 'primary'
330
+ }))), choices.map(function (choice, index) {
331
+ return /*#__PURE__*/_react["default"].createElement("div", {
332
+ key: "choice-".concat(index),
333
+ className: classes.choiceConfigurationHolder
334
+ }, /*#__PURE__*/_react["default"].createElement(_configUi.ChoiceConfiguration, {
335
+ key: index,
336
+ index: index + 1,
337
+ useLetterOrdering: model.choicePrefix === 'letters',
338
+ className: classes.choiceConfiguration,
339
+ mode: model.choiceMode,
340
+ data: choice,
341
+ defaultFeedback: {},
342
+ imageSupport: imageSupport,
343
+ disableImageAlignmentButtons: true,
344
+ onDelete: function onDelete() {
345
+ return onRemoveChoice(index);
346
+ },
347
+ onChange: function onChange(c) {
348
+ return onChoiceChanged(index, c);
349
+ },
350
+ allowFeedBack: feedbackEnabled,
351
+ allowDelete: deleteChoice.settings,
352
+ noLabels: true,
353
+ toolbarOpts: toolbarOpts,
354
+ spellCheck: spellCheckEnabled,
355
+ error: (choicesErrors === null || choicesErrors === void 0 ? void 0 : choicesErrors[choice.value]) || null,
356
+ noCorrectAnswerError: correctResponseError,
357
+ maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
358
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
359
+ uploadSoundSupport: uploadSoundSupport,
360
+ mathMlOptions: mathMlOptions
361
+ }), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
362
+ key: "rationale-".concat(index),
363
+ label: rationale.label,
364
+ className: classes.rationaleHolder
365
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
366
+ className: classes.rationale,
367
+ markup: choice.rationale || '',
368
+ onChange: function onChange(c) {
369
+ return onChoiceChanged(index, _objectSpread(_objectSpread({}, choice), {}, {
370
+ rationale: c
371
+ }));
372
+ },
373
+ imageSupport: imageSupport,
374
+ toolbarOpts: toolbarOpts,
375
+ pluginProps: labelPlugins,
376
+ spellCheck: spellCheckEnabled,
377
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
378
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
379
+ uploadSoundSupport: uploadSoundSupport,
380
+ languageCharactersProps: [{
381
+ language: 'spanish'
382
+ }, {
383
+ language: 'special'
384
+ }],
385
+ mathMlOptions: mathMlOptions
386
+ })), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
387
+ key: "accessibility-".concat(index),
388
+ label: accessibility.label,
389
+ className: classes.accessibilityHolder
390
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
391
+ className: classes.accessibility,
392
+ markup: choice.accessibility || '',
393
+ onChange: function onChange(c) {
394
+ return onChoiceChanged(index, _objectSpread(_objectSpread({}, choice), {}, {
395
+ accessibility: c
396
+ }));
397
+ },
398
+ imageSupport: imageSupport,
399
+ pluginProps: labelPlugins,
400
+ spellCheck: spellCheckEnabled,
401
+ maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
402
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
403
+ uploadSoundSupport: uploadSoundSupport,
404
+ languageCharactersProps: [{
405
+ language: 'spanish'
406
+ }, {
407
+ language: 'special'
408
+ }],
409
+ mathMlOptions: mathMlOptions
410
+ })));
411
+ }), correctResponseError && /*#__PURE__*/_react["default"].createElement("div", {
412
+ className: classes.errorText
413
+ }, correctResponseError), answerChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
414
+ className: classes.errorText
415
+ }, answerChoicesError), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
416
+ title: addChoiceButtonTooltip,
417
+ classes: {
418
+ tooltip: classes.tooltip
419
+ }
420
+ }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
421
+ classes: {
422
+ root: maxAnswerChoices && (choices === null || choices === void 0 ? void 0 : choices.length) >= maxAnswerChoices && classes.disableButton
423
+ },
424
+ className: classes.addButton,
425
+ variant: "contained",
426
+ color: "primary",
427
+ onClick: onAddChoice
428
+ }, addChoiceButton.label)));
429
+ });
430
+
431
+ var Main = /*#__PURE__*/function (_React$Component) {
432
+ (0, _inherits2["default"])(Main, _React$Component);
433
+
434
+ var _super = _createSuper(Main);
435
+
436
+ function Main() {
437
+ var _this;
438
+
439
+ (0, _classCallCheck2["default"])(this, Main);
440
+
441
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
442
+ args[_key] = arguments[_key];
443
+ }
444
+
445
+ _this = _super.call.apply(_super, [this].concat(args));
446
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
447
+ showWarning: false
448
+ });
449
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
450
+ var _this$props = _this.props,
451
+ model = _this$props.model,
452
+ configuration = _this$props.configuration,
453
+ onModelChanged = _this$props.onModelChanged;
454
+
455
+ var _ref5 = configuration || {},
456
+ minAnswerChoices = _ref5.minAnswerChoices;
457
+
458
+ if (minAnswerChoices && model.choices.length === minAnswerChoices) {
459
+ _this.setState({
460
+ showWarning: true
461
+ });
462
+
463
+ return;
464
+ }
465
+
466
+ model.choices.splice(index, 1);
467
+ onModelChanged(model);
468
+ });
469
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
470
+ var _this$props2 = _this.props,
471
+ model = _this$props2.model,
472
+ configuration = _this$props2.configuration,
473
+ onModelChanged = _this$props2.onModelChanged;
474
+
475
+ var _ref6 = configuration || {},
476
+ maxAnswerChoices = _ref6.maxAnswerChoices;
477
+
478
+ var _ref7 = model || {},
479
+ limitChoicesNumber = _ref7.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
480
+
481
+
482
+ if (limitChoicesNumber) {
483
+ maxAnswerChoices = MAX_CHOICES;
484
+ }
485
+
486
+ if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
487
+ return;
488
+ }
489
+
490
+ model.choices.push({
491
+ label: '',
492
+ value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
493
+ return c.value;
494
+ }), 0),
495
+ feedback: {
496
+ type: 'none'
497
+ }
498
+ });
499
+ onModelChanged(model);
500
+ });
501
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
502
+ var _this$props3 = _this.props,
503
+ model = _this$props3.model,
504
+ onModelChanged = _this$props3.onModelChanged;
505
+
506
+ if (choice.correct && model.choiceMode === 'radio') {
507
+ model.choices = model.choices.map(function (c) {
508
+ return (0, _merge["default"])({}, c, {
509
+ correct: false
510
+ });
511
+ });
512
+ }
513
+
514
+ model.choices.splice(index, 1, choice);
515
+ onModelChanged(model);
516
+ });
517
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPromptChanged", function (prompt) {
518
+ _this.props.onModelChanged(_objectSpread(_objectSpread({}, _this.props.model), {}, {
519
+ prompt: prompt
520
+ }));
521
+ });
522
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onTeacherInstructionsChanged", function (teacherInstructions) {
523
+ _this.props.onModelChanged(_objectSpread(_objectSpread({}, _this.props.model), {}, {
524
+ teacherInstructions: teacherInstructions
525
+ }));
526
+ });
527
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onModelChanged", function (model, key) {
528
+ var onModelChanged = _this.props.onModelChanged;
529
+
530
+ switch (key) {
531
+ case 'choiceMode':
532
+ {
533
+ var value = model.choiceMode;
534
+
535
+ if (value === 'radio') {
536
+ var correctFound = false;
537
+ model.choices = model.choices.map(function (c) {
538
+ if (correctFound) {
539
+ c.correct = false;
540
+ return c;
541
+ }
542
+
543
+ if (c.correct) {
544
+ correctFound = true;
545
+ }
546
+
547
+ return c;
548
+ });
549
+ }
550
+
551
+ onModelChanged(model, true);
552
+ break;
553
+ }
554
+
555
+ default:
556
+ onModelChanged(model);
557
+ break;
558
+ }
559
+ });
560
+ return _this;
561
+ }
562
+
563
+ (0, _createClass2["default"])(Main, [{
564
+ key: "render",
565
+ value: function render() {
566
+ var _this2 = this;
567
+
568
+ var _this$props$configura = this.props.configuration;
569
+ _this$props$configura = _this$props$configura === void 0 ? {} : _this$props$configura;
570
+ var minAnswerChoices = _this$props$configura.minAnswerChoices;
571
+ var showWarning = this.state.showWarning;
572
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
573
+ open: showWarning,
574
+ title: "Warning",
575
+ text: "There can't be less than ".concat(minAnswerChoices || 0, " choices."),
576
+ onConfirm: function onConfirm() {
577
+ return _this2.setState({
578
+ showWarning: false
579
+ });
580
+ }
581
+ }), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
582
+ onChangeModel: this.onModelChanged,
583
+ onRemoveChoice: this.onRemoveChoice,
584
+ onChoiceChanged: this.onChoiceChanged,
585
+ onAddChoice: this.onAddChoice,
586
+ onPromptChanged: this.onPromptChanged,
587
+ onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
588
+ })));
589
+ }
590
+ }]);
591
+ return Main;
592
+ }(_react["default"].Component);
593
+
594
+ exports.Main = Main;
595
+ (0, _defineProperty2["default"])(Main, "propTypes", {
596
+ model: _propTypes["default"].object.isRequired,
597
+ configuration: _propTypes["default"].object.isRequired,
598
+ disableSidePanel: _propTypes["default"].bool,
599
+ onModelChanged: _propTypes["default"].func.isRequired,
600
+ onConfigurationChanged: _propTypes["default"].func.isRequired,
601
+ classes: _propTypes["default"].object.isRequired,
602
+ imageSupport: _propTypes["default"].shape({
603
+ add: _propTypes["default"].func.isRequired,
604
+ "delete": _propTypes["default"].func.isRequired
605
+ })
606
+ });
607
+ var Styled = (0, _styles.withStyles)(styles)(Main);
608
+ var _default = Styled;
609
+ exports["default"] = _default;
610
+ //# sourceMappingURL=main.js.map