@pie-element/multiple-choice 5.9.3-next.137 → 5.9.3-next.1372
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.
- package/CHANGELOG.md +326 -0
- package/PRINT.md +35 -0
- package/configure/CHANGELOG.md +282 -0
- package/configure/lib/defaults.js +24 -7
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +24 -5
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +238 -65
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/utils.js +18 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +5 -5
- package/controller/CHANGELOG.md +86 -0
- package/controller/lib/index.js +81 -18
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/config-schema.json +136 -0
- package/docs/config-schema.json.md +105 -1
- package/docs/demo/generate.js +2 -1
- package/docs/pie-schema.json +44 -0
- package/docs/pie-schema.json.md +32 -0
- package/lib/choice-input.js +30 -16
- package/lib/choice-input.js.map +1 -1
- package/lib/choice.js +157 -0
- package/lib/choice.js.map +1 -0
- package/lib/feedback-tick.js +1 -1
- package/lib/feedback-tick.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/main.js +1 -1
- package/lib/main.js.map +1 -1
- package/lib/multiple-choice.js +59 -146
- package/lib/multiple-choice.js.map +1 -1
- package/lib/print.js +129 -0
- package/lib/print.js.map +1 -0
- package/package.json +11 -7
|
@@ -21,17 +21,20 @@ var _default = {
|
|
|
21
21
|
feedbackEnabled: true,
|
|
22
22
|
promptEnabled: true,
|
|
23
23
|
rationaleEnabled: true,
|
|
24
|
-
limitChoicesNumber: true,
|
|
25
24
|
teacherInstructionsEnabled: true,
|
|
26
25
|
studentInstructionsEnabled: true,
|
|
27
|
-
verticalMode: true,
|
|
28
26
|
toolbarEditorPosition: 'bottom',
|
|
29
27
|
choicesLayout: 'vertical',
|
|
30
28
|
gridColumns: '2'
|
|
31
29
|
},
|
|
32
30
|
configuration: {
|
|
31
|
+
spellCheck: {
|
|
32
|
+
label: 'Spellcheck',
|
|
33
|
+
settings: false,
|
|
34
|
+
enabled: true
|
|
35
|
+
},
|
|
33
36
|
choicesLayout: {
|
|
34
|
-
settings:
|
|
37
|
+
settings: false,
|
|
35
38
|
label: 'Choices Layout'
|
|
36
39
|
},
|
|
37
40
|
gridColumns: {
|
|
@@ -42,10 +45,6 @@ var _default = {
|
|
|
42
45
|
settings: true,
|
|
43
46
|
label: 'Add a Choice'
|
|
44
47
|
},
|
|
45
|
-
limitChoicesNumber: {
|
|
46
|
-
settings: true,
|
|
47
|
-
label: 'Limit choices to 9'
|
|
48
|
-
},
|
|
49
48
|
choiceMode: {
|
|
50
49
|
settings: true,
|
|
51
50
|
label: 'Response Type'
|
|
@@ -96,6 +95,24 @@ var _default = {
|
|
|
96
95
|
toolbarEditorPosition: {
|
|
97
96
|
settings: false,
|
|
98
97
|
label: 'Toolbar Editor Position'
|
|
98
|
+
},
|
|
99
|
+
minAnswerChoices: 2,
|
|
100
|
+
maxAnswerChoices: 5,
|
|
101
|
+
maxImageWidth: {
|
|
102
|
+
teacherInstructions: 300,
|
|
103
|
+
prompt: 300,
|
|
104
|
+
rationale: 636,
|
|
105
|
+
choices: 636
|
|
106
|
+
},
|
|
107
|
+
maxImageHeight: {
|
|
108
|
+
teacherInstructions: 300,
|
|
109
|
+
prompt: 300,
|
|
110
|
+
rationale: 300,
|
|
111
|
+
choices: 300
|
|
112
|
+
},
|
|
113
|
+
withRubric: {
|
|
114
|
+
settings: false,
|
|
115
|
+
label: 'Add Rubric'
|
|
99
116
|
}
|
|
100
117
|
}
|
|
101
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","choicesLayout","gridColumns","configuration","spellCheck","label","settings","enabled","answerChoiceCount","addChoiceButton","deleteChoice","feedback","rationale","accessibility","studentInstructions","teacherInstructions","minAnswerChoices","maxAnswerChoices","maxImageWidth","maxImageHeight","withRubric"],"mappings":"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","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n choiceMode: 'checkbox',\n choicePrefix: 'letters',\n choices: [],\n prompt: 'Question Prompt goes here',\n lockChoiceOrder: true,\n partialScoring: true,\n scoringType: 'auto',\n feedbackEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n choicesLayout: 'vertical',\n gridColumns: '2',\n },\n configuration: {\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n answerChoiceCount: 0,\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels',\n },\n deleteChoice: {\n settings: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n accessibility: {\n settings: false,\n label: 'Accessibility Label'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n minAnswerChoices: 2,\n maxAnswerChoices: 5,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 636,\n choices: 636\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n choices: 300\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric'\n }\n },\n};\n"],"file":"defaults.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -41,11 +41,11 @@ var _defaults2 = _interopRequireDefault(require("./defaults"));
|
|
|
41
41
|
|
|
42
42
|
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); }; }
|
|
43
43
|
|
|
44
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
44
|
+
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; } }
|
|
45
45
|
|
|
46
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
46
|
+
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; }
|
|
47
47
|
|
|
48
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
48
|
+
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; }
|
|
49
49
|
|
|
50
50
|
var log = (0, _debug["default"])('multiple-choice:configure');
|
|
51
51
|
|
|
@@ -160,6 +160,16 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
160
160
|
value: function onDeleteImage(src, done) {
|
|
161
161
|
this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
|
|
162
162
|
}
|
|
163
|
+
}, {
|
|
164
|
+
key: "insertSound",
|
|
165
|
+
value: function insertSound(handler) {
|
|
166
|
+
this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
|
|
167
|
+
}
|
|
168
|
+
}, {
|
|
169
|
+
key: "onDeleteSound",
|
|
170
|
+
value: function onDeleteSound(src, done) {
|
|
171
|
+
this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
|
|
172
|
+
}
|
|
163
173
|
}, {
|
|
164
174
|
key: "_render",
|
|
165
175
|
value: function _render() {
|
|
@@ -174,6 +184,10 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
174
184
|
imageSupport: {
|
|
175
185
|
add: this.insertImage.bind(this),
|
|
176
186
|
"delete": this.onDeleteImage.bind(this)
|
|
187
|
+
},
|
|
188
|
+
uploadSoundSupport: {
|
|
189
|
+
add: this.insertSound.bind(this),
|
|
190
|
+
"delete": this.onDeleteSound.bind(this)
|
|
177
191
|
}
|
|
178
192
|
});
|
|
179
193
|
|
|
@@ -186,8 +200,13 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
186
200
|
exports["default"] = MultipleChoice;
|
|
187
201
|
(0, _defineProperty2["default"])(MultipleChoice, "createDefaultModel", function () {
|
|
188
202
|
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
189
|
-
|
|
203
|
+
|
|
204
|
+
var normalizedModel = _configUi.choiceUtils.normalizeChoices(_objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
|
|
190
205
|
choices: generateFormattedChoices(model && model.choices || [])
|
|
191
|
-
}));
|
|
206
|
+
})); // This is used for offering support for old models which have the property "verticalMode"
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
normalizedModel.choicesLayout = model.choicesLayout || model.verticalMode === false && 'horizontal' || _defaults2["default"].model.choicesLayout;
|
|
210
|
+
return normalizedModel;
|
|
192
211
|
});
|
|
193
212
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement","utils","normalizeChoices"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel","utils","normalizeChoices","choicesLayout","verticalMode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent,\n InsertSoundEvent,\n DeleteSoundEvent\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: ''\n }\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [], configuration && configuration.answerChoiceCount)\n }\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\n });\n\n // This is used for offering support for old models which have the property \"verticalMode\"\n normalizedModel.choicesLayout = model.choicesLayout || (model.verticalMode === false && 'horizontal') || sensibleDefaults.model.choicesLayout;\n\n return normalizedModel;\n }\n\n constructor() {\n super();\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n this._configuration = info.configuration;\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this._render();\n\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this)\n },\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/lib/main.js
CHANGED
|
@@ -41,13 +41,25 @@ var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
|
41
41
|
|
|
42
42
|
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
43
43
|
|
|
44
|
+
var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
|
|
45
|
+
|
|
46
|
+
var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
|
|
47
|
+
|
|
48
|
+
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
|
|
49
|
+
|
|
50
|
+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
51
|
+
|
|
52
|
+
var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
|
|
53
|
+
|
|
54
|
+
var _utils = require("./utils");
|
|
55
|
+
|
|
44
56
|
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); }; }
|
|
45
57
|
|
|
46
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
58
|
+
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; } }
|
|
47
59
|
|
|
48
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
60
|
+
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; }
|
|
49
61
|
|
|
50
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
62
|
+
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; }
|
|
51
63
|
|
|
52
64
|
var Panel = _configUi.settings.Panel,
|
|
53
65
|
toggle = _configUi.settings.toggle,
|
|
@@ -108,6 +120,28 @@ var styles = function styles(theme) {
|
|
|
108
120
|
'&:focus': {
|
|
109
121
|
backgroundColor: _renderUi.color.disabled()
|
|
110
122
|
}
|
|
123
|
+
},
|
|
124
|
+
flexContainer: {
|
|
125
|
+
display: 'flex',
|
|
126
|
+
alignItems: 'center',
|
|
127
|
+
marginBottom: '5px'
|
|
128
|
+
},
|
|
129
|
+
titleText: {
|
|
130
|
+
fontFamily: 'Cerebri Sans',
|
|
131
|
+
fontSize: '18px',
|
|
132
|
+
lineHeight: '19px',
|
|
133
|
+
color: '#495B8F',
|
|
134
|
+
marginRight: '5px'
|
|
135
|
+
},
|
|
136
|
+
tooltip: {
|
|
137
|
+
fontSize: '12px',
|
|
138
|
+
whiteSpace: 'pre',
|
|
139
|
+
maxWidth: '500px'
|
|
140
|
+
},
|
|
141
|
+
errorText: {
|
|
142
|
+
fontSize: '12px',
|
|
143
|
+
color: 'red',
|
|
144
|
+
paddingTop: '5px'
|
|
111
145
|
}
|
|
112
146
|
};
|
|
113
147
|
};
|
|
@@ -121,6 +155,7 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
121
155
|
onRemoveChoice = props.onRemoveChoice,
|
|
122
156
|
onAddChoice = props.onAddChoice,
|
|
123
157
|
imageSupport = props.imageSupport,
|
|
158
|
+
uploadSoundSupport = props.uploadSoundSupport,
|
|
124
159
|
onChangeModel = props.onChangeModel,
|
|
125
160
|
onConfigurationChanged = props.onConfigurationChanged,
|
|
126
161
|
onTeacherInstructionsChanged = props.onTeacherInstructionsChanged;
|
|
@@ -130,8 +165,6 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
130
165
|
prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
|
|
131
166
|
_ref$addChoiceButton = _ref.addChoiceButton,
|
|
132
167
|
addChoiceButton = _ref$addChoiceButton === void 0 ? {} : _ref$addChoiceButton,
|
|
133
|
-
_ref$limitChoicesNumb = _ref.limitChoicesNumber,
|
|
134
|
-
limitChoicesNumber = _ref$limitChoicesNumb === void 0 ? {} : _ref$limitChoicesNumb,
|
|
135
168
|
_ref$feedback = _ref.feedback,
|
|
136
169
|
feedback = _ref$feedback === void 0 ? {} : _ref$feedback,
|
|
137
170
|
_ref$deleteChoice = _ref.deleteChoice,
|
|
@@ -158,16 +191,34 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
158
191
|
sequentialChoiceLabels = _ref$sequentialChoice === void 0 ? {} : _ref$sequentialChoice,
|
|
159
192
|
settingsPanelDisabled = _ref.settingsPanelDisabled,
|
|
160
193
|
choicesLayout = _ref.choicesLayout,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
194
|
+
_ref$spellCheck = _ref.spellCheck,
|
|
195
|
+
spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
|
|
196
|
+
gridColumns = _ref.gridColumns,
|
|
197
|
+
_ref$maxImageWidth = _ref.maxImageWidth,
|
|
198
|
+
maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
|
|
199
|
+
_ref$maxImageHeight = _ref.maxImageHeight,
|
|
200
|
+
maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
|
|
201
|
+
withRubric = _ref.withRubric;
|
|
202
|
+
|
|
203
|
+
var _ref2 = configuration || {},
|
|
204
|
+
maxAnswerChoices = _ref2.maxAnswerChoices;
|
|
205
|
+
|
|
206
|
+
var _ref3 = model || {},
|
|
207
|
+
limitChoicesNumber = _ref3.limitChoicesNumber,
|
|
208
|
+
teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
|
|
209
|
+
rationaleEnabled = _ref3.rationaleEnabled,
|
|
210
|
+
accessibilityLabelsEnabled = _ref3.accessibilityLabelsEnabled,
|
|
211
|
+
feedbackEnabled = _ref3.feedbackEnabled,
|
|
212
|
+
promptEnabled = _ref3.promptEnabled,
|
|
213
|
+
spellCheckEnabled = _ref3.spellCheckEnabled,
|
|
214
|
+
choices = _ref3.choices,
|
|
215
|
+
errors = _ref3.errors,
|
|
216
|
+
rubricEnabled = _ref3.rubricEnabled;
|
|
217
|
+
|
|
218
|
+
var _ref4 = errors || {},
|
|
219
|
+
choicesErrors = _ref4.choicesErrors,
|
|
220
|
+
correctResponseError = _ref4.correctResponseError,
|
|
221
|
+
answerChoicesError = _ref4.answerChoicesError;
|
|
171
222
|
|
|
172
223
|
var nrOfColumnsAvailable = choices && choices.length ? Array.from({
|
|
173
224
|
length: choices.length
|
|
@@ -192,8 +243,17 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
192
243
|
default:
|
|
193
244
|
toolbarOpts.position = 'bottom';
|
|
194
245
|
break;
|
|
246
|
+
} // if old property is used, set maxAnswerChoices to 9
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
if (limitChoicesNumber) {
|
|
250
|
+
maxAnswerChoices = MAX_CHOICES;
|
|
195
251
|
}
|
|
196
252
|
|
|
253
|
+
var validationMessage = (0, _utils.generateValidationMessage)(configuration);
|
|
254
|
+
var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
|
|
255
|
+
var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
|
|
256
|
+
|
|
197
257
|
var Content = /*#__PURE__*/_react["default"].createElement("div", null, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
198
258
|
label: teacherInstructions.label,
|
|
199
259
|
className: classes.promptHolder
|
|
@@ -203,7 +263,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
203
263
|
onChange: onTeacherInstructionsChanged,
|
|
204
264
|
imageSupport: imageSupport,
|
|
205
265
|
nonEmpty: false,
|
|
206
|
-
toolbarOpts: toolbarOpts
|
|
266
|
+
toolbarOpts: toolbarOpts,
|
|
267
|
+
spellCheck: spellCheckEnabled,
|
|
268
|
+
maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
|
|
269
|
+
maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
|
|
270
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
271
|
+
languageCharactersProps: [{
|
|
272
|
+
language: 'spanish'
|
|
273
|
+
}, {
|
|
274
|
+
language: 'special'
|
|
275
|
+
}]
|
|
207
276
|
})), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
208
277
|
label: prompt.label,
|
|
209
278
|
className: classes.promptHolder
|
|
@@ -214,8 +283,36 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
214
283
|
imageSupport: imageSupport,
|
|
215
284
|
nonEmpty: false,
|
|
216
285
|
disableUnderline: true,
|
|
217
|
-
toolbarOpts: toolbarOpts
|
|
218
|
-
|
|
286
|
+
toolbarOpts: toolbarOpts,
|
|
287
|
+
spellCheck: spellCheckEnabled,
|
|
288
|
+
maxImageWidth: maxImageWidth && maxImageWidth.prompt,
|
|
289
|
+
maxImageHeight: maxImageHeight && maxImageHeight.prompt,
|
|
290
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
291
|
+
languageCharactersProps: [{
|
|
292
|
+
language: 'spanish'
|
|
293
|
+
}, {
|
|
294
|
+
language: 'special'
|
|
295
|
+
}]
|
|
296
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
297
|
+
className: classes.flexContainer
|
|
298
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
299
|
+
className: classes.titleText
|
|
300
|
+
}, "Choices"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
301
|
+
classes: {
|
|
302
|
+
tooltip: classes.tooltip
|
|
303
|
+
},
|
|
304
|
+
disableFocusListener: true,
|
|
305
|
+
disableTouchListener: true,
|
|
306
|
+
placement: 'right',
|
|
307
|
+
title: validationMessage
|
|
308
|
+
}, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
|
|
309
|
+
fontSize: 'small',
|
|
310
|
+
color: 'primary'
|
|
311
|
+
}))), correctResponseError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
312
|
+
className: classes.errorText
|
|
313
|
+
}, correctResponseError), answerChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
314
|
+
className: classes.errorText
|
|
315
|
+
}, answerChoicesError), choices.map(function (choice, index) {
|
|
219
316
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
220
317
|
key: "choice-".concat(index),
|
|
221
318
|
className: classes.choiceConfigurationHolder
|
|
@@ -237,7 +334,13 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
237
334
|
allowFeedBack: feedbackEnabled,
|
|
238
335
|
allowDelete: deleteChoice.settings,
|
|
239
336
|
noLabels: true,
|
|
240
|
-
toolbarOpts: toolbarOpts
|
|
337
|
+
toolbarOpts: toolbarOpts,
|
|
338
|
+
spellCheck: spellCheckEnabled,
|
|
339
|
+
error: choicesErrors && choicesErrors[choice.value] ? choicesErrors[choice.value] : null,
|
|
340
|
+
noCorrectAnswerError: correctResponseError,
|
|
341
|
+
maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
|
|
342
|
+
maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
|
|
343
|
+
uploadSoundSupport: uploadSoundSupport
|
|
241
344
|
}), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
242
345
|
key: "rationale-".concat(index),
|
|
243
346
|
label: rationale.label,
|
|
@@ -252,7 +355,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
252
355
|
},
|
|
253
356
|
imageSupport: imageSupport,
|
|
254
357
|
toolbarOpts: toolbarOpts,
|
|
255
|
-
pluginProps: labelPlugins
|
|
358
|
+
pluginProps: labelPlugins,
|
|
359
|
+
spellCheck: spellCheckEnabled,
|
|
360
|
+
maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
|
|
361
|
+
maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
|
|
362
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
363
|
+
languageCharactersProps: [{
|
|
364
|
+
language: 'spanish'
|
|
365
|
+
}, {
|
|
366
|
+
language: 'special'
|
|
367
|
+
}]
|
|
256
368
|
})), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
257
369
|
key: "accessibility-".concat(index),
|
|
258
370
|
label: accessibility.label,
|
|
@@ -266,16 +378,25 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
266
378
|
}));
|
|
267
379
|
},
|
|
268
380
|
imageSupport: imageSupport,
|
|
269
|
-
pluginProps: labelPlugins
|
|
381
|
+
pluginProps: labelPlugins,
|
|
382
|
+
spellCheck: spellCheckEnabled,
|
|
383
|
+
maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
|
|
384
|
+
maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
|
|
385
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
386
|
+
languageCharactersProps: [{
|
|
387
|
+
language: 'spanish'
|
|
388
|
+
}, {
|
|
389
|
+
language: 'special'
|
|
390
|
+
}]
|
|
270
391
|
})));
|
|
271
392
|
}), /*#__PURE__*/_react["default"].createElement("br", null), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
272
|
-
title:
|
|
393
|
+
title: maxAnswerChoices && model.choices.length >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '',
|
|
273
394
|
classes: {
|
|
274
395
|
tooltip: classes.tooltip
|
|
275
396
|
}
|
|
276
397
|
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
277
398
|
classes: {
|
|
278
|
-
root:
|
|
399
|
+
root: maxAnswerChoices && model.choices.length >= maxAnswerChoices && classes.disableButton
|
|
279
400
|
},
|
|
280
401
|
className: classes.addButton,
|
|
281
402
|
variant: "contained",
|
|
@@ -288,16 +409,11 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
288
409
|
'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
|
|
289
410
|
choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
|
|
290
411
|
partialScoring: partialScoring.settings && toggle(partialScoring.label),
|
|
291
|
-
limitChoicesNumber: limitChoicesNumber.settings && toggle(limitChoicesNumber.label),
|
|
292
412
|
lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
|
|
293
413
|
feedbackEnabled: feedback.settings && toggle(feedback.label),
|
|
294
|
-
choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal'])
|
|
414
|
+
choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
|
|
415
|
+
gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable)
|
|
295
416
|
};
|
|
296
|
-
|
|
297
|
-
if (model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0) {
|
|
298
|
-
settingsInPanel.gridColumns = dropdown(gridColumns.label, nrOfColumnsAvailable);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
417
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
302
418
|
className: classes.design
|
|
303
419
|
}, settingsPanelDisabled ? Content : /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
@@ -313,14 +429,39 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
313
429
|
studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
|
|
314
430
|
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
315
431
|
rationaleEnabled: rationale.settings && toggle(rationale.label),
|
|
432
|
+
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
316
433
|
accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
|
|
317
|
-
scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
|
|
434
|
+
scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
|
|
435
|
+
rubricEnabled: withRubric.settings && toggle(withRubric.label)
|
|
318
436
|
}
|
|
319
437
|
}
|
|
320
438
|
})
|
|
321
439
|
}, Content));
|
|
322
440
|
});
|
|
323
441
|
|
|
442
|
+
var InfoDialog = function InfoDialog(_ref5) {
|
|
443
|
+
var open = _ref5.open,
|
|
444
|
+
onCancel = _ref5.onCancel,
|
|
445
|
+
onOk = _ref5.onOk,
|
|
446
|
+
title = _ref5.title;
|
|
447
|
+
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
448
|
+
open: open
|
|
449
|
+
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
450
|
+
onClick: onOk,
|
|
451
|
+
color: "primary"
|
|
452
|
+
}, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
453
|
+
onClick: onCancel,
|
|
454
|
+
color: "primary"
|
|
455
|
+
}, "Cancel")));
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
InfoDialog.propTypes = {
|
|
459
|
+
open: _propTypes["default"].bool,
|
|
460
|
+
onCancel: _propTypes["default"].func,
|
|
461
|
+
onOk: _propTypes["default"].func,
|
|
462
|
+
title: _propTypes["default"].string
|
|
463
|
+
};
|
|
464
|
+
|
|
324
465
|
var Main = /*#__PURE__*/function (_React$Component) {
|
|
325
466
|
(0, _inherits2["default"])(Main, _React$Component);
|
|
326
467
|
|
|
@@ -336,28 +477,70 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
336
477
|
}
|
|
337
478
|
|
|
338
479
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
480
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
481
|
+
dialog: {
|
|
482
|
+
open: false
|
|
483
|
+
}
|
|
484
|
+
});
|
|
339
485
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
|
|
340
|
-
var
|
|
341
|
-
|
|
486
|
+
var _this$props = _this.props,
|
|
487
|
+
model = _this$props.model,
|
|
488
|
+
configuration = _this$props.configuration;
|
|
489
|
+
|
|
490
|
+
var _ref6 = configuration || {},
|
|
491
|
+
minAnswerChoices = _ref6.minAnswerChoices;
|
|
492
|
+
|
|
493
|
+
if (minAnswerChoices && model.choices.length === minAnswerChoices) {
|
|
494
|
+
_this.setState({
|
|
495
|
+
dialog: {
|
|
496
|
+
open: true,
|
|
497
|
+
message: "There can't be less than ".concat(minAnswerChoices, " choices."),
|
|
498
|
+
onOk: function onOk() {
|
|
499
|
+
_this.setState({
|
|
500
|
+
dialog: {
|
|
501
|
+
open: false
|
|
502
|
+
}
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
} else {
|
|
508
|
+
model.choices.splice(index, 1);
|
|
342
509
|
|
|
343
|
-
|
|
510
|
+
_this.props.onModelChanged(model);
|
|
511
|
+
}
|
|
344
512
|
});
|
|
345
513
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
|
|
346
|
-
var
|
|
514
|
+
var _this$props2 = _this.props,
|
|
515
|
+
model = _this$props2.model,
|
|
516
|
+
configuration = _this$props2.configuration;
|
|
347
517
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
label: '',
|
|
351
|
-
value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
|
|
352
|
-
return c.value;
|
|
353
|
-
}), 0),
|
|
354
|
-
feedback: {
|
|
355
|
-
type: 'none'
|
|
356
|
-
}
|
|
357
|
-
});
|
|
518
|
+
var _ref7 = configuration || {},
|
|
519
|
+
maxAnswerChoices = _ref7.maxAnswerChoices;
|
|
358
520
|
|
|
359
|
-
|
|
521
|
+
var _ref8 = model || {},
|
|
522
|
+
limitChoicesNumber = _ref8.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
if (limitChoicesNumber) {
|
|
526
|
+
maxAnswerChoices = MAX_CHOICES;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
|
|
530
|
+
return;
|
|
360
531
|
}
|
|
532
|
+
|
|
533
|
+
model.choices.push({
|
|
534
|
+
label: '',
|
|
535
|
+
value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
|
|
536
|
+
return c.value;
|
|
537
|
+
}), 0),
|
|
538
|
+
feedback: {
|
|
539
|
+
type: 'none'
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
|
|
543
|
+
_this.props.onModelChanged(model);
|
|
361
544
|
});
|
|
362
545
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
|
|
363
546
|
var model = _this.props.model;
|
|
@@ -421,33 +604,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
421
604
|
}
|
|
422
605
|
|
|
423
606
|
(0, _createClass2["default"])(Main, [{
|
|
424
|
-
key: "componentDidMount",
|
|
425
|
-
value: function componentDidMount() {
|
|
426
|
-
// This is used for offering support for old models which have the property verticalMode
|
|
427
|
-
// Same thing is set in the controller: packages/multiple-choice/controller/src/index.js - model
|
|
428
|
-
var _this$props = this.props,
|
|
429
|
-
model = _this$props.model,
|
|
430
|
-
onModelChanged = _this$props.onModelChanged;
|
|
431
|
-
var verticalMode = model.verticalMode;
|
|
432
|
-
|
|
433
|
-
if (verticalMode !== undefined) {
|
|
434
|
-
var choicesLayout = verticalMode === false ? 'horizontal' : 'vertical';
|
|
435
|
-
onModelChanged(_objectSpread(_objectSpread({}, model), {}, {
|
|
436
|
-
choicesLayout: choicesLayout
|
|
437
|
-
}));
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
}, {
|
|
441
607
|
key: "render",
|
|
442
608
|
value: function render() {
|
|
443
|
-
|
|
609
|
+
var dialog = this.state.dialog;
|
|
610
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
|
|
611
|
+
open: dialog.open,
|
|
612
|
+
title: dialog.message,
|
|
613
|
+
onCancel: dialog.onCancel,
|
|
614
|
+
onOk: dialog.onOk
|
|
615
|
+
}), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
|
|
444
616
|
onChangeModel: this.onModelChanged,
|
|
445
617
|
onRemoveChoice: this.onRemoveChoice,
|
|
446
618
|
onChoiceChanged: this.onChoiceChanged,
|
|
447
619
|
onAddChoice: this.onAddChoice,
|
|
448
620
|
onPromptChanged: this.onPromptChanged,
|
|
449
621
|
onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
|
|
450
|
-
}));
|
|
622
|
+
})));
|
|
451
623
|
}
|
|
452
624
|
}]);
|
|
453
625
|
return Main;
|
|
@@ -456,6 +628,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
456
628
|
exports.Main = Main;
|
|
457
629
|
(0, _defineProperty2["default"])(Main, "propTypes", {
|
|
458
630
|
model: _propTypes["default"].object.isRequired,
|
|
631
|
+
configuration: _propTypes["default"].object.isRequired,
|
|
459
632
|
disableSidePanel: _propTypes["default"].bool,
|
|
460
633
|
onModelChanged: _propTypes["default"].func.isRequired,
|
|
461
634
|
onConfigurationChanged: _propTypes["default"].func.isRequired,
|