@pie-element/multiple-choice 5.9.3-next.135 → 5.9.3-next.1357
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 +237 -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,12 @@ 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
|
|
241
343
|
}), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
242
344
|
key: "rationale-".concat(index),
|
|
243
345
|
label: rationale.label,
|
|
@@ -252,7 +354,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
252
354
|
},
|
|
253
355
|
imageSupport: imageSupport,
|
|
254
356
|
toolbarOpts: toolbarOpts,
|
|
255
|
-
pluginProps: labelPlugins
|
|
357
|
+
pluginProps: labelPlugins,
|
|
358
|
+
spellCheck: spellCheckEnabled,
|
|
359
|
+
maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
|
|
360
|
+
maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
|
|
361
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
362
|
+
languageCharactersProps: [{
|
|
363
|
+
language: 'spanish'
|
|
364
|
+
}, {
|
|
365
|
+
language: 'special'
|
|
366
|
+
}]
|
|
256
367
|
})), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
257
368
|
key: "accessibility-".concat(index),
|
|
258
369
|
label: accessibility.label,
|
|
@@ -266,16 +377,25 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
266
377
|
}));
|
|
267
378
|
},
|
|
268
379
|
imageSupport: imageSupport,
|
|
269
|
-
pluginProps: labelPlugins
|
|
380
|
+
pluginProps: labelPlugins,
|
|
381
|
+
spellCheck: spellCheckEnabled,
|
|
382
|
+
maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
|
|
383
|
+
maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
|
|
384
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
385
|
+
languageCharactersProps: [{
|
|
386
|
+
language: 'spanish'
|
|
387
|
+
}, {
|
|
388
|
+
language: 'special'
|
|
389
|
+
}]
|
|
270
390
|
})));
|
|
271
391
|
}), /*#__PURE__*/_react["default"].createElement("br", null), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
272
|
-
title:
|
|
392
|
+
title: maxAnswerChoices && model.choices.length >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '',
|
|
273
393
|
classes: {
|
|
274
394
|
tooltip: classes.tooltip
|
|
275
395
|
}
|
|
276
396
|
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
277
397
|
classes: {
|
|
278
|
-
root:
|
|
398
|
+
root: maxAnswerChoices && model.choices.length >= maxAnswerChoices && classes.disableButton
|
|
279
399
|
},
|
|
280
400
|
className: classes.addButton,
|
|
281
401
|
variant: "contained",
|
|
@@ -288,16 +408,11 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
288
408
|
'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
|
|
289
409
|
choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
|
|
290
410
|
partialScoring: partialScoring.settings && toggle(partialScoring.label),
|
|
291
|
-
limitChoicesNumber: limitChoicesNumber.settings && toggle(limitChoicesNumber.label),
|
|
292
411
|
lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
|
|
293
412
|
feedbackEnabled: feedback.settings && toggle(feedback.label),
|
|
294
|
-
choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal'])
|
|
413
|
+
choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
|
|
414
|
+
gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable)
|
|
295
415
|
};
|
|
296
|
-
|
|
297
|
-
if (model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0) {
|
|
298
|
-
settingsInPanel.gridColumns = dropdown(gridColumns.label, nrOfColumnsAvailable);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
416
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
302
417
|
className: classes.design
|
|
303
418
|
}, settingsPanelDisabled ? Content : /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
@@ -313,14 +428,39 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
313
428
|
studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
|
|
314
429
|
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
315
430
|
rationaleEnabled: rationale.settings && toggle(rationale.label),
|
|
431
|
+
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
316
432
|
accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
|
|
317
|
-
scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
|
|
433
|
+
scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
|
|
434
|
+
rubricEnabled: withRubric.settings && toggle(withRubric.label)
|
|
318
435
|
}
|
|
319
436
|
}
|
|
320
437
|
})
|
|
321
438
|
}, Content));
|
|
322
439
|
});
|
|
323
440
|
|
|
441
|
+
var InfoDialog = function InfoDialog(_ref5) {
|
|
442
|
+
var open = _ref5.open,
|
|
443
|
+
onCancel = _ref5.onCancel,
|
|
444
|
+
onOk = _ref5.onOk,
|
|
445
|
+
title = _ref5.title;
|
|
446
|
+
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
447
|
+
open: open
|
|
448
|
+
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
449
|
+
onClick: onOk,
|
|
450
|
+
color: "primary"
|
|
451
|
+
}, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
452
|
+
onClick: onCancel,
|
|
453
|
+
color: "primary"
|
|
454
|
+
}, "Cancel")));
|
|
455
|
+
};
|
|
456
|
+
|
|
457
|
+
InfoDialog.propTypes = {
|
|
458
|
+
open: _propTypes["default"].bool,
|
|
459
|
+
onCancel: _propTypes["default"].func,
|
|
460
|
+
onOk: _propTypes["default"].func,
|
|
461
|
+
title: _propTypes["default"].string
|
|
462
|
+
};
|
|
463
|
+
|
|
324
464
|
var Main = /*#__PURE__*/function (_React$Component) {
|
|
325
465
|
(0, _inherits2["default"])(Main, _React$Component);
|
|
326
466
|
|
|
@@ -336,28 +476,70 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
336
476
|
}
|
|
337
477
|
|
|
338
478
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
479
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
480
|
+
dialog: {
|
|
481
|
+
open: false
|
|
482
|
+
}
|
|
483
|
+
});
|
|
339
484
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
|
|
340
|
-
var
|
|
341
|
-
|
|
485
|
+
var _this$props = _this.props,
|
|
486
|
+
model = _this$props.model,
|
|
487
|
+
configuration = _this$props.configuration;
|
|
488
|
+
|
|
489
|
+
var _ref6 = configuration || {},
|
|
490
|
+
minAnswerChoices = _ref6.minAnswerChoices;
|
|
491
|
+
|
|
492
|
+
if (minAnswerChoices && model.choices.length === minAnswerChoices) {
|
|
493
|
+
_this.setState({
|
|
494
|
+
dialog: {
|
|
495
|
+
open: true,
|
|
496
|
+
message: "There can't be less than ".concat(minAnswerChoices, " choices."),
|
|
497
|
+
onOk: function onOk() {
|
|
498
|
+
_this.setState({
|
|
499
|
+
dialog: {
|
|
500
|
+
open: false
|
|
501
|
+
}
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
} else {
|
|
507
|
+
model.choices.splice(index, 1);
|
|
342
508
|
|
|
343
|
-
|
|
509
|
+
_this.props.onModelChanged(model);
|
|
510
|
+
}
|
|
344
511
|
});
|
|
345
512
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
|
|
346
|
-
var
|
|
513
|
+
var _this$props2 = _this.props,
|
|
514
|
+
model = _this$props2.model,
|
|
515
|
+
configuration = _this$props2.configuration;
|
|
347
516
|
|
|
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
|
-
});
|
|
517
|
+
var _ref7 = configuration || {},
|
|
518
|
+
maxAnswerChoices = _ref7.maxAnswerChoices;
|
|
358
519
|
|
|
359
|
-
|
|
520
|
+
var _ref8 = model || {},
|
|
521
|
+
limitChoicesNumber = _ref8.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
if (limitChoicesNumber) {
|
|
525
|
+
maxAnswerChoices = MAX_CHOICES;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
|
|
529
|
+
return;
|
|
360
530
|
}
|
|
531
|
+
|
|
532
|
+
model.choices.push({
|
|
533
|
+
label: '',
|
|
534
|
+
value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
|
|
535
|
+
return c.value;
|
|
536
|
+
}), 0),
|
|
537
|
+
feedback: {
|
|
538
|
+
type: 'none'
|
|
539
|
+
}
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
_this.props.onModelChanged(model);
|
|
361
543
|
});
|
|
362
544
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
|
|
363
545
|
var model = _this.props.model;
|
|
@@ -421,33 +603,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
421
603
|
}
|
|
422
604
|
|
|
423
605
|
(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
606
|
key: "render",
|
|
442
607
|
value: function render() {
|
|
443
|
-
|
|
608
|
+
var dialog = this.state.dialog;
|
|
609
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
|
|
610
|
+
open: dialog.open,
|
|
611
|
+
title: dialog.message,
|
|
612
|
+
onCancel: dialog.onCancel,
|
|
613
|
+
onOk: dialog.onOk
|
|
614
|
+
}), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
|
|
444
615
|
onChangeModel: this.onModelChanged,
|
|
445
616
|
onRemoveChoice: this.onRemoveChoice,
|
|
446
617
|
onChoiceChanged: this.onChoiceChanged,
|
|
447
618
|
onAddChoice: this.onAddChoice,
|
|
448
619
|
onPromptChanged: this.onPromptChanged,
|
|
449
620
|
onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
|
|
450
|
-
}));
|
|
621
|
+
})));
|
|
451
622
|
}
|
|
452
623
|
}]);
|
|
453
624
|
return Main;
|
|
@@ -456,6 +627,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
456
627
|
exports.Main = Main;
|
|
457
628
|
(0, _defineProperty2["default"])(Main, "propTypes", {
|
|
458
629
|
model: _propTypes["default"].object.isRequired,
|
|
630
|
+
configuration: _propTypes["default"].object.isRequired,
|
|
459
631
|
disableSidePanel: _propTypes["default"].bool,
|
|
460
632
|
onModelChanged: _propTypes["default"].func.isRequired,
|
|
461
633
|
onConfigurationChanged: _propTypes["default"].func.isRequired,
|