@pie-element/multiple-choice 5.9.3-next.133 → 5.9.3-next.1335

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","limitChoicesNumber","teacherInstructionsEnabled","studentInstructionsEnabled","verticalMode","toolbarEditorPosition","choicesLayout","gridColumns","configuration","settings","label","answerChoiceCount","addChoiceButton","deleteChoice","feedback","rationale","accessibility","studentInstructions","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,UADP;AAELC,IAAAA,YAAY,EAAE,SAFT;AAGLC,IAAAA,OAAO,EAAE,EAHJ;AAILC,IAAAA,MAAM,EAAE,2BAJH;AAKLC,IAAAA,eAAe,EAAE,IALZ;AAMLC,IAAAA,cAAc,EAAE,IANX;AAOLC,IAAAA,WAAW,EAAE,MAPR;AAQLC,IAAAA,eAAe,EAAE,IARZ;AASLC,IAAAA,aAAa,EAAE,IATV;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,kBAAkB,EAAE,IAXf;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,YAAY,EAAE,IAdT;AAeLC,IAAAA,qBAAqB,EAAE,QAflB;AAgBLC,IAAAA,aAAa,EAAE,UAhBV;AAiBLC,IAAAA,WAAW,EAAE;AAjBR,GADM;AAoBbC,EAAAA,aAAa,EAAE;AACbF,IAAAA,aAAa,EAAE;AACbG,MAAAA,QAAQ,EAAE,IADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KADF;AAKbH,IAAAA,WAAW,EAAE;AACXG,MAAAA,KAAK,EAAE;AADI,KALA;AAQbC,IAAAA,iBAAiB,EAAE,CARN;AASbC,IAAAA,eAAe,EAAE;AACfH,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KATJ;AAabT,IAAAA,kBAAkB,EAAE;AAClBQ,MAAAA,QAAQ,EAAE,IADQ;AAElBC,MAAAA,KAAK,EAAE;AAFW,KAbP;AAiBbnB,IAAAA,UAAU,EAAE;AACVkB,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAjBC;AAqBblB,IAAAA,YAAY,EAAE;AACZiB,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KArBD;AAyBbG,IAAAA,YAAY,EAAE;AACZJ,MAAAA,QAAQ,EAAE;AADE,KAzBD;AA4BbK,IAAAA,QAAQ,EAAE;AACRL,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KA5BG;AAgCbhB,IAAAA,MAAM,EAAE;AACNe,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAhCK;AAoCbf,IAAAA,eAAe,EAAE;AACfc,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KApCJ;AAwCbd,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAxCH;AA4CbK,IAAAA,SAAS,EAAE;AACTN,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KA5CE;AAgDbM,IAAAA,aAAa,EAAE;AACbP,MAAAA,QAAQ,EAAE,KADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KAhDF;AAoDbb,IAAAA,WAAW,EAAE;AACXY,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KApDA;AAwDbO,IAAAA,mBAAmB,EAAE;AACnBR,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAxDR;AA4DbQ,IAAAA,mBAAmB,EAAE;AACnBT,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA5DR;AAgEbL,IAAAA,qBAAqB,EAAE;AACrBI,MAAAA,QAAQ,EAAE,KADW;AAErBC,MAAAA,KAAK,EAAE;AAFc;AAhEV;AApBF,C","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 limitChoicesNumber: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n verticalMode: true,\n toolbarEditorPosition: 'bottom',\n choicesLayout: 'vertical',\n gridColumns: '2',\n },\n configuration: {\n choicesLayout: {\n settings: true,\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 limitChoicesNumber: {\n settings: true,\n label: 'Limit choices to 9',\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 },\n};\n"],"file":"defaults.js"}
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"],"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 },\n};\n"],"file":"defaults.js"}
@@ -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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
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); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
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] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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
- return _configUi.choiceUtils.normalizeChoices(_objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
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":"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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} 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 = {}) => utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\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 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 _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 });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
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"}
@@ -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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
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); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
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] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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,32 @@ 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
- gridColumns = _ref.gridColumns;
162
-
163
- var _ref2 = model || {},
164
- limitChoicesNumberModel = _ref2.limitChoicesNumber,
165
- teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
166
- rationaleEnabled = _ref2.rationaleEnabled,
167
- accessibilityLabelsEnabled = _ref2.accessibilityLabelsEnabled,
168
- feedbackEnabled = _ref2.feedbackEnabled,
169
- promptEnabled = _ref2.promptEnabled,
170
- choices = _ref2.choices;
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
+
202
+ var _ref2 = configuration || {},
203
+ maxAnswerChoices = _ref2.maxAnswerChoices;
204
+
205
+ var _ref3 = model || {},
206
+ limitChoicesNumber = _ref3.limitChoicesNumber,
207
+ teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
208
+ rationaleEnabled = _ref3.rationaleEnabled,
209
+ accessibilityLabelsEnabled = _ref3.accessibilityLabelsEnabled,
210
+ feedbackEnabled = _ref3.feedbackEnabled,
211
+ promptEnabled = _ref3.promptEnabled,
212
+ spellCheckEnabled = _ref3.spellCheckEnabled,
213
+ choices = _ref3.choices,
214
+ errors = _ref3.errors;
215
+
216
+ var _ref4 = errors || {},
217
+ choicesErrors = _ref4.choicesErrors,
218
+ correctResponseError = _ref4.correctResponseError,
219
+ answerChoicesError = _ref4.answerChoicesError;
171
220
 
172
221
  var nrOfColumnsAvailable = choices && choices.length ? Array.from({
173
222
  length: choices.length
@@ -192,8 +241,17 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
192
241
  default:
193
242
  toolbarOpts.position = 'bottom';
194
243
  break;
244
+ } // if old property is used, set maxAnswerChoices to 9
245
+
246
+
247
+ if (limitChoicesNumber) {
248
+ maxAnswerChoices = MAX_CHOICES;
195
249
  }
196
250
 
251
+ var validationMessage = (0, _utils.generateValidationMessage)(configuration);
252
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
253
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
254
+
197
255
  var Content = /*#__PURE__*/_react["default"].createElement("div", null, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
198
256
  label: teacherInstructions.label,
199
257
  className: classes.promptHolder
@@ -203,7 +261,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
203
261
  onChange: onTeacherInstructionsChanged,
204
262
  imageSupport: imageSupport,
205
263
  nonEmpty: false,
206
- toolbarOpts: toolbarOpts
264
+ toolbarOpts: toolbarOpts,
265
+ spellCheck: spellCheckEnabled,
266
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
267
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
268
+ uploadSoundSupport: uploadSoundSupport,
269
+ languageCharactersProps: [{
270
+ language: 'spanish'
271
+ }, {
272
+ language: 'special'
273
+ }]
207
274
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
208
275
  label: prompt.label,
209
276
  className: classes.promptHolder
@@ -214,8 +281,36 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
214
281
  imageSupport: imageSupport,
215
282
  nonEmpty: false,
216
283
  disableUnderline: true,
217
- toolbarOpts: toolbarOpts
218
- })), model.choices.map(function (choice, index) {
284
+ toolbarOpts: toolbarOpts,
285
+ spellCheck: spellCheckEnabled,
286
+ maxImageWidth: maxImageWidth && maxImageWidth.prompt,
287
+ maxImageHeight: maxImageHeight && maxImageHeight.prompt,
288
+ uploadSoundSupport: uploadSoundSupport,
289
+ languageCharactersProps: [{
290
+ language: 'spanish'
291
+ }, {
292
+ language: 'special'
293
+ }]
294
+ })), /*#__PURE__*/_react["default"].createElement("div", {
295
+ className: classes.flexContainer
296
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
297
+ className: classes.titleText
298
+ }, "Choices"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
299
+ classes: {
300
+ tooltip: classes.tooltip
301
+ },
302
+ disableFocusListener: true,
303
+ disableTouchListener: true,
304
+ placement: 'right',
305
+ title: validationMessage
306
+ }, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
307
+ fontSize: 'small',
308
+ color: 'primary'
309
+ }))), correctResponseError && /*#__PURE__*/_react["default"].createElement("div", {
310
+ className: classes.errorText
311
+ }, correctResponseError), answerChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
312
+ className: classes.errorText
313
+ }, answerChoicesError), choices.map(function (choice, index) {
219
314
  return /*#__PURE__*/_react["default"].createElement("div", {
220
315
  key: "choice-".concat(index),
221
316
  className: classes.choiceConfigurationHolder
@@ -237,7 +332,12 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
237
332
  allowFeedBack: feedbackEnabled,
238
333
  allowDelete: deleteChoice.settings,
239
334
  noLabels: true,
240
- toolbarOpts: toolbarOpts
335
+ toolbarOpts: toolbarOpts,
336
+ spellCheck: spellCheckEnabled,
337
+ error: choicesErrors && choicesErrors[choice.value] ? choicesErrors[choice.value] : null,
338
+ noCorrectAnswerError: correctResponseError,
339
+ maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
340
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight
241
341
  }), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
242
342
  key: "rationale-".concat(index),
243
343
  label: rationale.label,
@@ -252,7 +352,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
252
352
  },
253
353
  imageSupport: imageSupport,
254
354
  toolbarOpts: toolbarOpts,
255
- pluginProps: labelPlugins
355
+ pluginProps: labelPlugins,
356
+ spellCheck: spellCheckEnabled,
357
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
358
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
359
+ uploadSoundSupport: uploadSoundSupport,
360
+ languageCharactersProps: [{
361
+ language: 'spanish'
362
+ }, {
363
+ language: 'special'
364
+ }]
256
365
  })), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
257
366
  key: "accessibility-".concat(index),
258
367
  label: accessibility.label,
@@ -266,16 +375,25 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
266
375
  }));
267
376
  },
268
377
  imageSupport: imageSupport,
269
- pluginProps: labelPlugins
378
+ pluginProps: labelPlugins,
379
+ spellCheck: spellCheckEnabled,
380
+ maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
381
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
382
+ uploadSoundSupport: uploadSoundSupport,
383
+ languageCharactersProps: [{
384
+ language: 'spanish'
385
+ }, {
386
+ language: 'special'
387
+ }]
270
388
  })));
271
389
  }), /*#__PURE__*/_react["default"].createElement("br", null), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
272
- title: limitChoicesNumberModel && model.choices.length >= MAX_CHOICES ? "Only ".concat(MAX_CHOICES, " allowed maximum") : '',
390
+ title: maxAnswerChoices && model.choices.length >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '',
273
391
  classes: {
274
392
  tooltip: classes.tooltip
275
393
  }
276
394
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
277
395
  classes: {
278
- root: limitChoicesNumberModel && model.choices.length >= MAX_CHOICES ? classes.disableButton : undefined
396
+ root: maxAnswerChoices && model.choices.length >= maxAnswerChoices && classes.disableButton
279
397
  },
280
398
  className: classes.addButton,
281
399
  variant: "contained",
@@ -288,16 +406,11 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
288
406
  'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
289
407
  choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
290
408
  partialScoring: partialScoring.settings && toggle(partialScoring.label),
291
- limitChoicesNumber: limitChoicesNumber.settings && toggle(limitChoicesNumber.label),
292
409
  lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
293
410
  feedbackEnabled: feedback.settings && toggle(feedback.label),
294
- choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal'])
411
+ choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
412
+ gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable)
295
413
  };
296
-
297
- if (model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0) {
298
- settingsInPanel.gridColumns = dropdown(gridColumns.label, nrOfColumnsAvailable);
299
- }
300
-
301
414
  return /*#__PURE__*/_react["default"].createElement("div", {
302
415
  className: classes.design
303
416
  }, settingsPanelDisabled ? Content : /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
@@ -313,6 +426,7 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
313
426
  studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
314
427
  promptEnabled: prompt.settings && toggle(prompt.label),
315
428
  rationaleEnabled: rationale.settings && toggle(rationale.label),
429
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
316
430
  accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
317
431
  scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
318
432
  }
@@ -321,6 +435,29 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
321
435
  }, Content));
322
436
  });
323
437
 
438
+ var InfoDialog = function InfoDialog(_ref5) {
439
+ var open = _ref5.open,
440
+ onCancel = _ref5.onCancel,
441
+ onOk = _ref5.onOk,
442
+ title = _ref5.title;
443
+ return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
444
+ open: open
445
+ }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
446
+ onClick: onOk,
447
+ color: "primary"
448
+ }, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
449
+ onClick: onCancel,
450
+ color: "primary"
451
+ }, "Cancel")));
452
+ };
453
+
454
+ InfoDialog.propTypes = {
455
+ open: _propTypes["default"].bool,
456
+ onCancel: _propTypes["default"].func,
457
+ onOk: _propTypes["default"].func,
458
+ title: _propTypes["default"].string
459
+ };
460
+
324
461
  var Main = /*#__PURE__*/function (_React$Component) {
325
462
  (0, _inherits2["default"])(Main, _React$Component);
326
463
 
@@ -336,28 +473,70 @@ var Main = /*#__PURE__*/function (_React$Component) {
336
473
  }
337
474
 
338
475
  _this = _super.call.apply(_super, [this].concat(args));
476
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
477
+ dialog: {
478
+ open: false
479
+ }
480
+ });
339
481
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
340
- var model = _this.props.model;
341
- model.choices.splice(index, 1);
482
+ var _this$props = _this.props,
483
+ model = _this$props.model,
484
+ configuration = _this$props.configuration;
485
+
486
+ var _ref6 = configuration || {},
487
+ minAnswerChoices = _ref6.minAnswerChoices;
488
+
489
+ if (minAnswerChoices && model.choices.length === minAnswerChoices) {
490
+ _this.setState({
491
+ dialog: {
492
+ open: true,
493
+ message: "There can't be less than ".concat(minAnswerChoices, " choices."),
494
+ onOk: function onOk() {
495
+ _this.setState({
496
+ dialog: {
497
+ open: false
498
+ }
499
+ });
500
+ }
501
+ }
502
+ });
503
+ } else {
504
+ model.choices.splice(index, 1);
342
505
 
343
- _this.props.onModelChanged(model);
506
+ _this.props.onModelChanged(model);
507
+ }
344
508
  });
345
509
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
346
- var model = _this.props.model;
510
+ var _this$props2 = _this.props,
511
+ model = _this$props2.model,
512
+ configuration = _this$props2.configuration;
347
513
 
348
- if (!model.limitChoicesNumber || model.limitChoicesNumber && model.choices.length < MAX_CHOICES) {
349
- model.choices.push({
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
- });
514
+ var _ref7 = configuration || {},
515
+ maxAnswerChoices = _ref7.maxAnswerChoices;
358
516
 
359
- _this.props.onModelChanged(model);
517
+ var _ref8 = model || {},
518
+ limitChoicesNumber = _ref8.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
519
+
520
+
521
+ if (limitChoicesNumber) {
522
+ maxAnswerChoices = MAX_CHOICES;
523
+ }
524
+
525
+ if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
526
+ return;
360
527
  }
528
+
529
+ model.choices.push({
530
+ label: '',
531
+ value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
532
+ return c.value;
533
+ }), 0),
534
+ feedback: {
535
+ type: 'none'
536
+ }
537
+ });
538
+
539
+ _this.props.onModelChanged(model);
361
540
  });
362
541
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
363
542
  var model = _this.props.model;
@@ -421,33 +600,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
421
600
  }
422
601
 
423
602
  (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
603
  key: "render",
442
604
  value: function render() {
443
- return /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
605
+ var dialog = this.state.dialog;
606
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
607
+ open: dialog.open,
608
+ title: dialog.message,
609
+ onCancel: dialog.onCancel,
610
+ onOk: dialog.onOk
611
+ }), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
444
612
  onChangeModel: this.onModelChanged,
445
613
  onRemoveChoice: this.onRemoveChoice,
446
614
  onChoiceChanged: this.onChoiceChanged,
447
615
  onAddChoice: this.onAddChoice,
448
616
  onPromptChanged: this.onPromptChanged,
449
617
  onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
450
- }));
618
+ })));
451
619
  }
452
620
  }]);
453
621
  return Main;
@@ -456,6 +624,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
456
624
  exports.Main = Main;
457
625
  (0, _defineProperty2["default"])(Main, "propTypes", {
458
626
  model: _propTypes["default"].object.isRequired,
627
+ configuration: _propTypes["default"].object.isRequired,
459
628
  disableSidePanel: _propTypes["default"].bool,
460
629
  onModelChanged: _propTypes["default"].func.isRequired,
461
630
  onConfigurationChanged: _propTypes["default"].func.isRequired,