@pie-element/match 4.10.0 → 4.10.1-beta.1443

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.
@@ -31,8 +31,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
31
31
 
32
32
  var _propTypes = _interopRequireDefault(require("prop-types"));
33
33
 
34
- var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
35
-
36
34
  var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
37
35
 
38
36
  var _styles = require("@material-ui/core/styles");
@@ -47,15 +45,13 @@ var _lodash = _interopRequireDefault(require("lodash"));
47
45
 
48
46
  var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
49
47
 
50
- var _common = require("./common");
51
-
52
48
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
53
49
 
54
50
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
55
51
 
56
- 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; }
52
+ 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; }
57
53
 
58
- 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; }
54
+ 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; }
59
55
 
60
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); }; }
61
57
 
@@ -71,29 +67,36 @@ var styles = function styles(theme) {
71
67
  flexDirection: 'column'
72
68
  },
73
69
  rowContainer: {
74
- marginTop: theme.spacing.unit * 2,
75
70
  display: 'flex',
76
71
  alignItems: 'center',
77
- flex: 1
72
+ flex: 1,
73
+ width: 'fit-content',
74
+ borderBottom: '2px solid lightgray',
75
+ paddingBottom: theme.spacing.unit * 2,
76
+ marginTop: theme.spacing.unit * 2,
77
+ marginBottom: theme.spacing.unit
78
78
  },
79
79
  rowItem: {
80
80
  flex: 1,
81
81
  display: 'flex',
82
82
  justifyContent: 'center',
83
+ flexDirection: 'column',
83
84
  '&> div': {
84
85
  width: '150px',
85
- padding: '12px',
86
+ padding: "0 ".concat(theme.spacing.unit, "px"),
86
87
  textAlign: 'center'
87
88
  }
88
89
  },
89
90
  deleteIcon: {
90
91
  flex: 0.5,
91
- minWidth: '88px'
92
+ minWidth: '48px',
93
+ padding: "0 ".concat(theme.spacing.unit, "px")
92
94
  },
93
95
  questionText: {
94
96
  flex: 2,
95
97
  display: 'flex',
96
98
  justifyContent: 'flex-start',
99
+ marginRight: theme.spacing.unit,
97
100
  '&> div': {
98
101
  width: '100%',
99
102
  padding: 0,
@@ -106,16 +109,16 @@ var styles = function styles(theme) {
106
109
  display: 'flex',
107
110
  flexDirection: 'column'
108
111
  },
109
- separator: {
110
- marginTop: theme.spacing.unit * 2,
111
- border: 0,
112
- borderTop: '2px solid lightgray',
113
- width: '100%'
114
- },
115
112
  headerInput: {
116
113
  '&> div': {
117
114
  fontWeight: 'bold'
118
115
  }
116
+ },
117
+ errorText: {
118
+ fontSize: theme.typography.fontSize - 2,
119
+ color: 'red',
120
+ paddingTop: "".concat(theme.spacing.unit, "px !important"),
121
+ width: 'fit-content !important'
119
122
  }
120
123
  };
121
124
  };
@@ -135,11 +138,6 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
135
138
  }
136
139
 
137
140
  _this = _super.call.apply(_super, [this].concat(args));
138
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
139
- dialog: {
140
- open: false
141
- }
142
- });
143
141
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "moveRow", function (from, to) {
144
142
  var _this$props = _this.props,
145
143
  model = _this$props.model,
@@ -203,32 +201,8 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
203
201
  return;
204
202
  }
205
203
 
206
- var headers = newModel.headers || [];
207
- var currentHeader = headers[headerIndex];
208
- var sameValue = headers.filter(function (header) {
209
- var wasChanged = currentHeader !== value && "<div>".concat(currentHeader, "</div>") !== value;
210
- var sameValueEntered = header === value || "<div>".concat(header, "</div>") === value;
211
- return wasChanged && sameValueEntered;
212
- });
213
- var empty = value === '<div></div>';
214
-
215
- if (sameValue.length || empty) {
216
- _this.setState({
217
- dialog: {
218
- open: true,
219
- onOk: function onOk() {
220
- _this.setState({
221
- dialog: {
222
- open: false
223
- }
224
- });
225
- }
226
- }
227
- });
228
- } else {
229
- newModel.headers[headerIndex] = value;
230
- onChange(newModel);
231
- }
204
+ newModel.headers[headerIndex] = value;
205
+ onChange(newModel);
232
206
  };
233
207
  });
234
208
  return _this;
@@ -245,13 +219,28 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
245
219
  onAddRow = _this$props4.onAddRow,
246
220
  imageSupport = _this$props4.imageSupport,
247
221
  configuration = _this$props4.configuration,
248
- toolbarOpts = _this$props4.toolbarOpts;
222
+ toolbarOpts = _this$props4.toolbarOpts,
223
+ spellCheck = _this$props4.spellCheck,
224
+ uploadSoundSupport = _this$props4.uploadSoundSupport;
249
225
 
250
226
  var _ref2 = configuration || {},
251
227
  _ref2$headers = _ref2.headers,
252
- headers = _ref2$headers === void 0 ? {} : _ref2$headers;
228
+ headers = _ref2$headers === void 0 ? {} : _ref2$headers,
229
+ _ref2$maxImageWidth = _ref2.maxImageWidth,
230
+ maxImageWidth = _ref2$maxImageWidth === void 0 ? {} : _ref2$maxImageWidth,
231
+ _ref2$maxImageHeight = _ref2.maxImageHeight,
232
+ maxImageHeight = _ref2$maxImageHeight === void 0 ? {} : _ref2$maxImageHeight;
233
+
234
+ var _ref3 = model || {},
235
+ errors = _ref3.errors;
236
+
237
+ var _ref4 = errors || {},
238
+ correctResponseError = _ref4.correctResponseError,
239
+ rowsErrors = _ref4.rowsErrors,
240
+ columnsErrors = _ref4.columnsErrors,
241
+ noOfRowsError = _ref4.noOfRowsError,
242
+ columnsLengthError = _ref4.columnsLengthError;
253
243
 
254
- var dialog = this.state.dialog;
255
244
  var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
256
245
  return p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list';
257
246
  });
@@ -263,13 +252,25 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
263
252
  disabled: true
264
253
  }
265
254
  };
255
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
256
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
266
257
  return /*#__PURE__*/React.createElement("div", {
267
258
  className: classes.container
268
259
  }, /*#__PURE__*/React.createElement(_Typography["default"], {
269
260
  type: "body1",
270
261
  component: "div"
271
- }, "Click on the labels to edit or remove. Set the correct answers by clicking each correct answer per row."), /*#__PURE__*/React.createElement("div", {
272
- className: classes.rowTable
262
+ }, "Click on the labels to edit or remove. Set the correct answers by clicking each correct answer per row."), correctResponseError && /*#__PURE__*/React.createElement("div", {
263
+ className: classes.errorText
264
+ }, correctResponseError), noOfRowsError && /*#__PURE__*/React.createElement("div", {
265
+ className: classes.errorText
266
+ }, noOfRowsError), columnsLengthError && /*#__PURE__*/React.createElement("div", {
267
+ className: classes.errorText
268
+ }, columnsLengthError), /*#__PURE__*/React.createElement("div", {
269
+ className: classes.rowTable,
270
+ style: configuration.width ? {
271
+ width: configuration.width,
272
+ overflow: 'scroll'
273
+ } : {}
273
274
  }, /*#__PURE__*/React.createElement("div", {
274
275
  className: classes.rowContainer
275
276
  }, headers.settings && (model.headers || []).map(function (header, idx) {
@@ -284,15 +285,20 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
284
285
  activePlugins: filteredDefaultPlugins,
285
286
  pluginProps: labelPlugins,
286
287
  autoWidthToolbar: true,
287
- allowValidation: true
288
- }));
288
+ spellCheck: spellCheck,
289
+ uploadSoundSupport: uploadSoundSupport,
290
+ languageCharactersProps: [{
291
+ language: 'spanish'
292
+ }, {
293
+ language: 'special'
294
+ }],
295
+ error: columnsErrors && columnsErrors[idx]
296
+ }), columnsErrors && columnsErrors[idx] && /*#__PURE__*/React.createElement("div", {
297
+ className: classes.errorText
298
+ }, columnsErrors[idx]));
289
299
  }), /*#__PURE__*/React.createElement("div", {
290
300
  className: classes.deleteIcon
291
- }, /*#__PURE__*/React.createElement(_Button["default"], {
292
- disabled: true
293
- }, /*#__PURE__*/React.createElement("div", null)))), /*#__PURE__*/React.createElement("hr", {
294
- className: classes.separator
295
- }), model.rows.map(function (row, idx) {
301
+ })), model.rows.map(function (row, idx) {
296
302
  return /*#__PURE__*/React.createElement(_row["default"], {
297
303
  key: idx,
298
304
  model: model,
@@ -303,15 +309,16 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
303
309
  onMoveRow: _this2.moveRow,
304
310
  imageSupport: imageSupport,
305
311
  enableImages: model.enableImages,
306
- toolbarOpts: toolbarOpts
312
+ toolbarOpts: toolbarOpts,
313
+ spellCheck: spellCheck,
314
+ error: rowsErrors === null || rowsErrors === void 0 ? void 0 : rowsErrors[row.id],
315
+ maxImageWidth: maxImageWidth && maxImageWidth.rowTitles || defaultImageMaxWidth,
316
+ maxImageHeight: maxImageHeight && maxImageHeight.rowTitles || defaultImageMaxHeight,
317
+ uploadSoundSupport: uploadSoundSupport
307
318
  });
308
319
  }), /*#__PURE__*/React.createElement(_addRow["default"], {
309
320
  onAddClick: onAddRow
310
- })), /*#__PURE__*/React.createElement(_common.InfoDialog, {
311
- title: 'The column headings must be non-blank and unique.',
312
- open: dialog.open,
313
- onOk: dialog.onOk
314
- }));
321
+ })));
315
322
  }
316
323
  }]);
317
324
  return AnswerConfigBlock;
@@ -328,6 +335,10 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
328
335
  add: _propTypes["default"].func.isRequired,
329
336
  "delete": _propTypes["default"].func.isRequired
330
337
  }),
338
+ uploadSoundSupport: _propTypes["default"].shape({
339
+ add: _propTypes["default"].func.isRequired,
340
+ "delete": _propTypes["default"].func.isRequired
341
+ }),
331
342
  toolbarOpts: _propTypes["default"].object
332
343
  });
333
344
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/answer-config-block.jsx"],"names":["log","styles","theme","container","marginTop","spacing","unit","display","flexDirection","rowContainer","alignItems","flex","rowItem","justifyContent","width","padding","textAlign","deleteIcon","minWidth","questionText","maxWidth","rowTable","separator","border","borderTop","headerInput","fontWeight","AnswerConfigBlock","dialog","open","from","to","props","model","onChange","newModel","rows","reduce","acc","item","index","movedRow","remainingRows","push","update","slice","name","isBoolean","target","value","checked","lodash","set","headerIndex","headers","currentHeader","sameValue","filter","header","wasChanged","sameValueEntered","empty","length","setState","onOk","classes","onAddRow","imageSupport","configuration","toolbarOpts","state","filteredDefaultPlugins","DEFAULT_PLUGINS","p","labelPlugins","audio","disabled","video","settings","map","idx","onHeaderChange","row","onDeleteRow","moveRow","enableImages","React","Component","PropTypes","object","isRequired","func","shape","add"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddRow from './add-row';\nimport Row from './row';\nimport debug from 'debug';\nimport lodash from 'lodash';\nimport EditableHTML, { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\nimport { InfoDialog } from './common';\n\nconst log = debug('pie-elements:match:configure');\n\nconst styles = theme => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column'\n },\n rowContainer: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n alignItems: 'center',\n flex: 1\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n '&> div': {\n width: '150px',\n padding: '12px',\n textAlign: 'center'\n },\n },\n deleteIcon: {\n flex: 0.5,\n minWidth: '88px'\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n '&> div': {\n width: '100%',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '350px'\n }\n },\n rowTable: {\n display: 'flex',\n flexDirection: 'column'\n },\n separator: {\n marginTop: theme.spacing.unit * 2,\n border: 0,\n borderTop: '2px solid lightgray',\n width: '100%'\n },\n headerInput: {\n '&> div': {\n fontWeight: 'bold'\n }\n }\n});\n\nclass AnswerConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onDeleteRow: PropTypes.func.isRequired,\n onAddRow: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n }),\n toolbarOpts: PropTypes.object\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n moveRow = (from, to) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n const rows = newModel.rows || [];\n\n log('[moveRow]: ', from, to);\n\n const { movedRow, remainingRows } = rows.reduce(\n (acc, item, index) => {\n if (index === from) {\n acc.movedRow = item;\n } else {\n acc.remainingRows.push(item);\n }\n\n return acc;\n },\n { movedRow: null, remainingRows: [] }\n );\n\n const update = [\n ...remainingRows.slice(0, to),\n movedRow,\n ...remainingRows.slice(to)\n ];\n\n log('update: ', update);\n\n newModel.rows = update;\n\n onChange(newModel);\n };\n\n onChange = (name, isBoolean) => ({ target }) => {\n const { model, onChange } = this.props;\n let value;\n\n if (isBoolean) {\n value = target.checked;\n } else {\n value = target.value;\n }\n\n lodash.set(model, name, value);\n onChange(model, name);\n };\n\n onHeaderChange = headerIndex => value => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if(headerIndex === 0) {\n newModel.headers[headerIndex] = value;\n onChange(newModel);\n\n return;\n }\n\n const headers = newModel.headers || [];\n\n const currentHeader = headers[headerIndex];\n\n const sameValue = headers.filter(header => {\n const wasChanged = currentHeader !== value && `<div>${currentHeader}</div>` !== value;\n const sameValueEntered = header === value || `<div>${header}</div>` === value;\n\n return wasChanged && sameValueEntered;\n });\n\n const empty = value === '<div></div>';\n\n if (sameValue.length || empty) {\n this.setState({\n dialog: {\n open: true,\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n }\n );\n }\n }\n });\n } else {\n newModel.headers[headerIndex] = value;\n\n onChange(newModel);\n }\n };\n\n render() {\n const {\n classes,\n model,\n onAddRow,\n imageSupport,\n configuration,\n toolbarOpts\n } = this.props;\n const { headers = {} } = configuration || {};\n const { dialog } = this.state;\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || [])\n .filter(p => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list');\n const labelPlugins = {\n audio: { disabled: true },\n video: { disabled: true }\n };\n\n return (\n <div className={classes.container}>\n <Typography type=\"body1\" component=\"div\">\n Click on the labels to edit or remove. Set the correct answers by\n clicking each correct answer per row.\n </Typography>\n <div className={classes.rowTable}>\n <div className={classes.rowContainer}>\n {headers.settings &&\n (model.headers || []).map((header, idx) => (\n <div\n key={idx}\n className={cx(classes.rowItem, {\n [classes.questionText]: idx === 0\n })}\n >\n <EditableHTML\n onChange={this.onHeaderChange(idx)}\n markup={header}\n className={classes.headerInput}\n label={'column label'}\n activePlugins={filteredDefaultPlugins}\n pluginProps={labelPlugins}\n autoWidthToolbar\n allowValidation\n />\n </div>\n ))}\n <div className={classes.deleteIcon}>\n <Button disabled>\n <div />\n </Button>\n </div>\n </div>\n <hr className={classes.separator} />\n {model.rows.map((row, idx) => (\n <Row\n key={idx}\n model={model}\n row={row}\n idx={idx}\n onDeleteRow={this.props.onDeleteRow}\n onChange={this.props.onChange}\n onMoveRow={this.moveRow}\n imageSupport={imageSupport}\n enableImages={model.enableImages}\n toolbarOpts={toolbarOpts}\n />\n ))}\n <AddRow onAddClick={onAddRow} />\n </div>\n <InfoDialog\n title={'The column headings must be non-blank and unique.'}\n open={dialog.open}\n onOk={dialog.onOk}\n />\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AnswerConfigBlock);\n"],"file":"answer-config-block.js"}
1
+ {"version":3,"sources":["../src/answer-config-block.jsx"],"names":["log","styles","theme","container","marginTop","spacing","unit","display","flexDirection","rowContainer","alignItems","flex","width","borderBottom","paddingBottom","marginBottom","rowItem","justifyContent","padding","textAlign","deleteIcon","minWidth","questionText","marginRight","maxWidth","rowTable","headerInput","fontWeight","errorText","fontSize","typography","color","paddingTop","AnswerConfigBlock","from","to","props","model","onChange","newModel","rows","reduce","acc","item","index","movedRow","remainingRows","push","update","slice","name","isBoolean","target","value","checked","lodash","set","headerIndex","headers","classes","onAddRow","imageSupport","configuration","toolbarOpts","spellCheck","uploadSoundSupport","maxImageWidth","maxImageHeight","errors","correctResponseError","rowsErrors","columnsErrors","noOfRowsError","columnsLengthError","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","labelPlugins","audio","disabled","video","defaultImageMaxWidth","prompt","defaultImageMaxHeight","overflow","settings","map","header","idx","onHeaderChange","language","row","onDeleteRow","moveRow","enableImages","id","rowTitles","React","Component","PropTypes","object","isRequired","func","shape","add"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddRow from './add-row';\nimport Row from './row';\nimport debug from 'debug';\nimport lodash from 'lodash';\nimport EditableHTML, { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\n\nconst log = debug('pie-elements:match:configure');\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n width: 'fit-content',\n borderBottom: '2px solid lightgray',\n paddingBottom: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n '&> div': {\n width: '150px',\n padding: `0 ${theme.spacing.unit}px`,\n textAlign: 'center',\n },\n },\n deleteIcon: {\n flex: 0.5,\n minWidth: '48px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n marginRight: theme.spacing.unit,\n '&> div': {\n width: '100%',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '350px',\n },\n },\n rowTable: {\n display: 'flex',\n flexDirection: 'column',\n },\n headerInput: {\n '&> div': {\n fontWeight: 'bold',\n },\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: 'red',\n paddingTop: `${theme.spacing.unit}px !important`,\n width: 'fit-content !important',\n },\n});\n\nclass AnswerConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onDeleteRow: PropTypes.func.isRequired,\n onAddRow: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n };\n\n moveRow = (from, to) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n const rows = newModel.rows || [];\n\n log('[moveRow]: ', from, to);\n\n const { movedRow, remainingRows } = rows.reduce(\n (acc, item, index) => {\n if (index === from) {\n acc.movedRow = item;\n } else {\n acc.remainingRows.push(item);\n }\n\n return acc;\n },\n { movedRow: null, remainingRows: [] },\n );\n\n const update = [...remainingRows.slice(0, to), movedRow, ...remainingRows.slice(to)];\n\n log('update: ', update);\n\n newModel.rows = update;\n\n onChange(newModel);\n };\n\n onChange =\n (name, isBoolean) =>\n ({ target }) => {\n const { model, onChange } = this.props;\n let value;\n\n if (isBoolean) {\n value = target.checked;\n } else {\n value = target.value;\n }\n\n lodash.set(model, name, value);\n onChange(model, name);\n };\n\n onHeaderChange = (headerIndex) => (value) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (headerIndex === 0) {\n newModel.headers[headerIndex] = value;\n onChange(newModel);\n\n return;\n }\n\n newModel.headers[headerIndex] = value;\n onChange(newModel);\n };\n\n render() {\n const { classes, model, onAddRow, imageSupport, configuration, toolbarOpts, spellCheck, uploadSoundSupport } =\n this.props;\n const { headers = {}, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const { errors } = model || {};\n const { correctResponseError, rowsErrors, columnsErrors, noOfRowsError, columnsLengthError } = errors || {};\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list',\n );\n const labelPlugins = {\n audio: { disabled: true },\n video: { disabled: true },\n };\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n return (\n <div className={classes.container}>\n <Typography type=\"body1\" component=\"div\">\n Click on the labels to edit or remove. Set the correct answers by clicking each correct answer per row.\n </Typography>\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n {noOfRowsError && <div className={classes.errorText}>{noOfRowsError}</div>}\n {columnsLengthError && <div className={classes.errorText}>{columnsLengthError}</div>}\n\n <div\n className={classes.rowTable}\n style={configuration.width ? { width: configuration.width, overflow: 'scroll' } : {}}\n >\n <div className={classes.rowContainer}>\n {headers.settings &&\n (model.headers || []).map((header, idx) => (\n <div\n key={idx}\n className={cx(classes.rowItem, {\n [classes.questionText]: idx === 0,\n })}\n >\n <EditableHTML\n onChange={this.onHeaderChange(idx)}\n markup={header}\n className={classes.headerInput}\n label={'column label'}\n activePlugins={filteredDefaultPlugins}\n pluginProps={labelPlugins}\n autoWidthToolbar\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={columnsErrors && columnsErrors[idx]}\n />\n {columnsErrors && columnsErrors[idx] && <div className={classes.errorText}>{columnsErrors[idx]}</div>}\n </div>\n ))}\n <div className={classes.deleteIcon} />\n </div>\n\n {model.rows.map((row, idx) => (\n <Row\n key={idx}\n model={model}\n row={row}\n idx={idx}\n onDeleteRow={this.props.onDeleteRow}\n onChange={this.props.onChange}\n onMoveRow={this.moveRow}\n imageSupport={imageSupport}\n enableImages={model.enableImages}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={rowsErrors?.[row.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowTitles) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowTitles) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n ))}\n\n <AddRow onAddClick={onAddRow} />\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AnswerConfigBlock);\n"],"file":"answer-config-block.js"}
@@ -39,9 +39,9 @@ var _generalConfigBlock = _interopRequireDefault(require("./general-config-block
39
39
 
40
40
  var _answerConfigBlock = _interopRequireDefault(require("./answer-config-block"));
41
41
 
42
- 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; }
42
+ 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; }
43
43
 
44
- 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; }
44
+ 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; }
45
45
 
46
46
  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); }; }
47
47
 
@@ -212,48 +212,69 @@ var Configure = /*#__PURE__*/function (_React$Component) {
212
212
  imageSupport = _this$props2.imageSupport,
213
213
  onModelChanged = _this$props2.onModelChanged,
214
214
  configuration = _this$props2.configuration,
215
- onConfigurationChanged = _this$props2.onConfigurationChanged;
215
+ onConfigurationChanged = _this$props2.onConfigurationChanged,
216
+ uploadSoundSupport = _this$props2.uploadSoundSupport;
216
217
 
217
218
  var _ref = configuration || {},
218
219
  _ref$enableImages = _ref.enableImages,
219
220
  enableImages = _ref$enableImages === void 0 ? {} : _ref$enableImages,
221
+ _ref$feedback = _ref.feedback,
222
+ feedback = _ref$feedback === void 0 ? {} : _ref$feedback,
223
+ _ref$lockChoiceOrder = _ref.lockChoiceOrder,
224
+ lockChoiceOrder = _ref$lockChoiceOrder === void 0 ? {} : _ref$lockChoiceOrder,
225
+ _ref$maxImageWidth = _ref.maxImageWidth,
226
+ maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
227
+ _ref$maxImageHeight = _ref.maxImageHeight,
228
+ maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
220
229
  _ref$partialScoring = _ref.partialScoring,
221
230
  partialScoring = _ref$partialScoring === void 0 ? {} : _ref$partialScoring,
222
- _ref$teacherInstructi = _ref.teacherInstructions,
223
- teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
224
- _ref$studentInstructi = _ref.studentInstructions,
225
- studentInstructions = _ref$studentInstructi === void 0 ? {} : _ref$studentInstructi,
231
+ _ref$prompt = _ref.prompt,
232
+ prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
226
233
  _ref$rationale = _ref.rationale,
227
234
  rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
228
- _ref$lockChoiceOrder = _ref.lockChoiceOrder,
229
- lockChoiceOrder = _ref$lockChoiceOrder === void 0 ? {} : _ref$lockChoiceOrder,
235
+ settingsPanelDisabled = _ref.settingsPanelDisabled,
230
236
  _ref$scoringType = _ref.scoringType,
231
237
  scoringType = _ref$scoringType === void 0 ? {} : _ref$scoringType,
232
- _ref$prompt = _ref.prompt,
233
- prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
234
- _ref$feedback = _ref.feedback,
235
- feedback = _ref$feedback === void 0 ? {} : _ref$feedback;
238
+ _ref$spellCheck = _ref.spellCheck,
239
+ spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
240
+ _ref$studentInstructi = _ref.studentInstructions,
241
+ studentInstructions = _ref$studentInstructi === void 0 ? {} : _ref$studentInstructi,
242
+ _ref$teacherInstructi = _ref.teacherInstructions,
243
+ teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
244
+ _ref$withRubric = _ref.withRubric,
245
+ withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric;
236
246
 
237
247
  var _ref2 = model || {},
238
- teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
248
+ feedbackEnabled = _ref2.feedbackEnabled,
239
249
  promptEnabled = _ref2.promptEnabled,
240
250
  rationaleEnabled = _ref2.rationaleEnabled,
241
- feedbackEnabled = _ref2.feedbackEnabled;
242
-
243
- var toolbarOpts = {};
244
-
245
- switch (model.toolbarEditorPosition) {
246
- case 'top':
247
- toolbarOpts.position = 'top';
248
- break;
249
-
250
- default:
251
- toolbarOpts.position = 'bottom';
252
- break;
253
- }
254
-
251
+ spellCheckEnabled = _ref2.spellCheckEnabled,
252
+ teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
253
+ toolbarEditorPosition = _ref2.toolbarEditorPosition;
254
+
255
+ var toolbarOpts = {
256
+ position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
257
+ };
258
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
259
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
260
+ var panelSettings = {
261
+ enableImages: enableImages.settings && toggle(enableImages.label),
262
+ partialScoring: partialScoring.settings && toggle(partialScoring.label),
263
+ lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
264
+ feedbackEnabled: feedback.settings && toggle(feedback.label)
265
+ };
266
+ var panelProperties = {
267
+ teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
268
+ studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
269
+ promptEnabled: prompt.settings && toggle(prompt.label),
270
+ rationaleEnabled: rationale.settings && toggle(rationale.label),
271
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
272
+ scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
273
+ rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
274
+ };
255
275
  log('[render] model', model);
256
276
  return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
277
+ hideSettings: settingsPanelDisabled,
257
278
  settings: /*#__PURE__*/_react["default"].createElement(Panel, {
258
279
  model: model,
259
280
  configuration: configuration,
@@ -264,19 +285,8 @@ var Configure = /*#__PURE__*/function (_React$Component) {
264
285
  return onConfigurationChanged(config);
265
286
  },
266
287
  groups: {
267
- Settings: {
268
- enableImages: enableImages.settings && toggle(enableImages.label),
269
- partialScoring: partialScoring.settings && toggle(partialScoring.label),
270
- lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
271
- feedbackEnabled: feedback.settings && toggle(feedback.label)
272
- },
273
- Properties: {
274
- teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
275
- studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
276
- promptEnabled: prompt.settings && toggle(prompt.label),
277
- rationaleEnabled: rationale.settings && toggle(rationale.label),
278
- scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
279
- }
288
+ Settings: panelSettings,
289
+ Properties: panelProperties
280
290
  }
281
291
  })
282
292
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -290,7 +300,16 @@ var Configure = /*#__PURE__*/function (_React$Component) {
290
300
  onChange: this.onTeacherInstructionsChanged,
291
301
  imageSupport: imageSupport,
292
302
  nonEmpty: false,
293
- toolbarOpts: toolbarOpts
303
+ toolbarOpts: toolbarOpts,
304
+ spellCheck: spellCheckEnabled,
305
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
306
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
307
+ uploadSoundSupport: uploadSoundSupport,
308
+ languageCharactersProps: [{
309
+ language: 'spanish'
310
+ }, {
311
+ language: 'special'
312
+ }]
294
313
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
295
314
  label: prompt.label,
296
315
  className: classes.promptHolder
@@ -301,7 +320,16 @@ var Configure = /*#__PURE__*/function (_React$Component) {
301
320
  imageSupport: imageSupport,
302
321
  nonEmpty: false,
303
322
  disableUnderline: true,
304
- toolbarOpts: toolbarOpts
323
+ toolbarOpts: toolbarOpts,
324
+ spellCheck: spellCheckEnabled,
325
+ maxImageWidth: maxImageWidth && maxImageWidth.prompt,
326
+ maxImageHeight: maxImageHeight && maxImageHeight.prompt,
327
+ uploadSoundSupport: uploadSoundSupport,
328
+ languageCharactersProps: [{
329
+ language: 'spanish'
330
+ }, {
331
+ language: 'special'
332
+ }]
305
333
  })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
306
334
  label: rationale.label,
307
335
  className: classes.promptHolder
@@ -310,7 +338,16 @@ var Configure = /*#__PURE__*/function (_React$Component) {
310
338
  markup: model.rationale || '',
311
339
  onChange: this.onRationaleChanged,
312
340
  imageSupport: imageSupport,
313
- toolbarOpts: toolbarOpts
341
+ toolbarOpts: toolbarOpts,
342
+ spellCheck: spellCheckEnabled,
343
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
344
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
345
+ uploadSoundSupport: uploadSoundSupport,
346
+ languageCharactersProps: [{
347
+ language: 'spanish'
348
+ }, {
349
+ language: 'special'
350
+ }]
314
351
  })), /*#__PURE__*/_react["default"].createElement(_generalConfigBlock["default"], {
315
352
  model: model,
316
353
  configuration: configuration,
@@ -323,7 +360,9 @@ var Configure = /*#__PURE__*/function (_React$Component) {
323
360
  onChange: this.onChange,
324
361
  onAddRow: this.onAddRow,
325
362
  onDeleteRow: this.onDeleteRow,
326
- toolbarOpts: toolbarOpts
363
+ toolbarOpts: toolbarOpts,
364
+ spellCheck: spellCheckEnabled,
365
+ uploadSoundSupport: uploadSoundSupport
327
366
  }), feedbackEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.FeedbackConfig, {
328
367
  feedback: model.feedback,
329
368
  onChange: this.onFeedbackChange,
@@ -343,6 +382,10 @@ var Configure = /*#__PURE__*/function (_React$Component) {
343
382
  imageSupport: _propTypes["default"].shape({
344
383
  add: _propTypes["default"].func.isRequired,
345
384
  "delete": _propTypes["default"].func.isRequired
385
+ }),
386
+ uploadSoundSupport: _propTypes["default"].shape({
387
+ add: _propTypes["default"].func.isRequired,
388
+ "delete": _propTypes["default"].func.isRequired
346
389
  })
347
390
  });
348
391
  (0, _defineProperty2["default"])(Configure, "defaultProps", {