@pie-element/match 4.6.0 → 4.6.1-beta.587

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +508 -0
  2. package/configure/CHANGELOG.md +465 -0
  3. package/configure/lib/add-row.js +1 -1
  4. package/configure/lib/add-row.js.map +1 -1
  5. package/configure/lib/answer-config-block.js +151 -51
  6. package/configure/lib/answer-config-block.js.map +1 -1
  7. package/configure/lib/common.js +46 -0
  8. package/configure/lib/common.js.map +1 -0
  9. package/configure/lib/configure.js +98 -36
  10. package/configure/lib/configure.js.map +1 -1
  11. package/configure/lib/defaults.js +31 -2
  12. package/configure/lib/defaults.js.map +1 -1
  13. package/configure/lib/general-config-block.js +86 -33
  14. package/configure/lib/general-config-block.js.map +1 -1
  15. package/configure/lib/index.js +18 -4
  16. package/configure/lib/index.js.map +1 -1
  17. package/configure/lib/row.js +122 -34
  18. package/configure/lib/row.js.map +1 -1
  19. package/configure/package.json +7 -7
  20. package/configure/utils.js +12 -0
  21. package/controller/CHANGELOG.md +103 -0
  22. package/controller/lib/defaults.js.map +1 -1
  23. package/controller/lib/index.js +159 -16
  24. package/controller/lib/index.js.map +1 -1
  25. package/controller/package.json +3 -3
  26. package/docs/config-schema.json +153 -0
  27. package/docs/config-schema.json.md +117 -1
  28. package/docs/demo/config.js +2 -2
  29. package/docs/demo/generate.js +11 -9
  30. package/docs/pie-schema.json +48 -0
  31. package/docs/pie-schema.json.md +39 -0
  32. package/lib/answer-grid.js +12 -12
  33. package/lib/answer-grid.js.map +1 -1
  34. package/lib/index.js +7 -2
  35. package/lib/index.js.map +1 -1
  36. package/lib/main.js +16 -20
  37. package/lib/main.js.map +1 -1
  38. package/package.json +6 -5
@@ -1,14 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
12
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
15
 
14
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -29,10 +31,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
29
31
 
30
32
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
33
 
32
- var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
33
-
34
- var _Input = _interopRequireDefault(require("@material-ui/core/Input"));
35
-
36
34
  var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
37
35
 
38
36
  var _styles = require("@material-ui/core/styles");
@@ -41,19 +39,23 @@ var _addRow = _interopRequireDefault(require("./add-row"));
41
39
 
42
40
  var _row = _interopRequireDefault(require("./row"));
43
41
 
44
- var _drag = require("@pie-lib/drag");
45
-
46
42
  var _debug = _interopRequireDefault(require("debug"));
47
43
 
48
44
  var _lodash = _interopRequireDefault(require("lodash"));
49
45
 
50
- 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
+ var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
47
+
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); }
51
49
 
52
- 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; }
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; }
51
+
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; }
53
+
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; }
53
55
 
54
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); }; }
55
57
 
56
- 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; } }
57
59
 
58
60
  var log = (0, _debug["default"])('pie-elements:match:configure');
59
61
 
@@ -65,38 +67,58 @@ var styles = function styles(theme) {
65
67
  flexDirection: 'column'
66
68
  },
67
69
  rowContainer: {
68
- marginTop: theme.spacing.unit * 2,
69
70
  display: 'flex',
70
71
  alignItems: 'center',
71
- 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
72
78
  },
73
79
  rowItem: {
74
80
  flex: 1,
75
81
  display: 'flex',
76
- justifyContent: 'center'
82
+ justifyContent: 'center',
83
+ flexDirection: 'column',
84
+ '&> div': {
85
+ width: '150px',
86
+ padding: "0 ".concat(theme.spacing.unit, "px"),
87
+ textAlign: 'center'
88
+ }
77
89
  },
78
90
  deleteIcon: {
79
91
  flex: 0.5,
80
- minWidth: '88px'
92
+ minWidth: '48px',
93
+ padding: "0 ".concat(theme.spacing.unit, "px")
81
94
  },
82
95
  questionText: {
83
96
  flex: 2,
84
97
  display: 'flex',
85
- justifyContent: 'flex-start'
98
+ justifyContent: 'flex-start',
99
+ marginRight: theme.spacing.unit,
100
+ '&> div': {
101
+ width: '100%',
102
+ padding: 0,
103
+ maxWidth: 'unset',
104
+ textAlign: 'left',
105
+ minWidth: '350px'
106
+ }
86
107
  },
87
108
  rowTable: {
88
109
  display: 'flex',
89
110
  flexDirection: 'column'
90
111
  },
91
- separator: {
92
- marginTop: theme.spacing.unit * 2,
93
- border: 0,
94
- borderTop: '2px solid lightgray',
95
- width: '100%'
96
- },
97
112
  headerInput: {
98
- textAlign: 'center',
99
- maxWidth: '100px'
113
+ '&> div': {
114
+ fontWeight: 'bold'
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'
100
122
  }
101
123
  };
102
124
  };
@@ -123,9 +145,25 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
123
145
 
124
146
  var newModel = _objectSpread({}, model);
125
147
 
126
- var rows = newModel.rows;
148
+ var rows = newModel.rows || [];
127
149
  log('[moveRow]: ', from, to);
128
- var update = (0, _drag.swap)(rows, from, to);
150
+
151
+ var _rows$reduce = rows.reduce(function (acc, item, index) {
152
+ if (index === from) {
153
+ acc.movedRow = item;
154
+ } else {
155
+ acc.remainingRows.push(item);
156
+ }
157
+
158
+ return acc;
159
+ }, {
160
+ movedRow: null,
161
+ remainingRows: []
162
+ }),
163
+ movedRow = _rows$reduce.movedRow,
164
+ remainingRows = _rows$reduce.remainingRows;
165
+
166
+ var update = [].concat((0, _toConsumableArray2["default"])(remainingRows.slice(0, to)), [movedRow], (0, _toConsumableArray2["default"])(remainingRows.slice(to)));
129
167
  log('update: ', update);
130
168
  newModel.rows = update;
131
169
  onChange(newModel);
@@ -150,14 +188,20 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
150
188
  };
151
189
  });
152
190
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onHeaderChange", function (headerIndex) {
153
- return function (event) {
191
+ return function (value) {
154
192
  var _this$props3 = _this.props,
155
193
  model = _this$props3.model,
156
194
  onChange = _this$props3.onChange;
157
195
 
158
196
  var newModel = _objectSpread({}, model);
159
197
 
160
- newModel.headers[headerIndex] = event.target.value;
198
+ if (headerIndex === 0) {
199
+ newModel.headers[headerIndex] = value;
200
+ onChange(newModel);
201
+ return;
202
+ }
203
+
204
+ newModel.headers[headerIndex] = value;
161
205
  onChange(newModel);
162
206
  };
163
207
  });
@@ -174,42 +218,87 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
174
218
  model = _this$props4.model,
175
219
  onAddRow = _this$props4.onAddRow,
176
220
  imageSupport = _this$props4.imageSupport,
177
- configuration = _this$props4.configuration;
221
+ configuration = _this$props4.configuration,
222
+ toolbarOpts = _this$props4.toolbarOpts,
223
+ spellCheck = _this$props4.spellCheck,
224
+ uploadSoundSupport = _this$props4.uploadSoundSupport;
178
225
 
179
226
  var _ref2 = configuration || {},
180
227
  _ref2$headers = _ref2.headers,
181
- headers = _ref2$headers === void 0 ? {} : _ref2$headers;
182
-
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;
243
+
244
+ var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
245
+ return p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list';
246
+ });
247
+ var labelPlugins = {
248
+ audio: {
249
+ disabled: true
250
+ },
251
+ video: {
252
+ disabled: true
253
+ }
254
+ };
255
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
256
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
183
257
  return /*#__PURE__*/React.createElement("div", {
184
258
  className: classes.container
185
259
  }, /*#__PURE__*/React.createElement(_Typography["default"], {
186
260
  type: "body1",
187
261
  component: "div"
188
- }, "Click on the labels to edit or remove. Set the correct answers by clicking each correct answer per row."), /*#__PURE__*/React.createElement("div", {
189
- 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
+ } : {}
190
274
  }, /*#__PURE__*/React.createElement("div", {
191
275
  className: classes.rowContainer
192
- }, headers.settings && model.headers.map(function (header, idx) {
276
+ }, headers.settings && (model.headers || []).map(function (header, idx) {
193
277
  return /*#__PURE__*/React.createElement("div", {
194
278
  key: idx,
195
279
  className: (0, _classnames["default"])(classes.rowItem, (0, _defineProperty2["default"])({}, classes.questionText, idx === 0))
196
- }, /*#__PURE__*/React.createElement(_Input["default"], {
197
- type: "text",
198
- disableUnderline: true,
199
- classes: idx === 0 ? null : {
200
- input: classes.headerInput
201
- },
280
+ }, /*#__PURE__*/React.createElement(_editableHtml["default"], {
202
281
  onChange: _this2.onHeaderChange(idx),
203
- value: header,
204
- placeholder: "Enter Value"
205
- }));
282
+ markup: header,
283
+ className: classes.headerInput,
284
+ label: 'column label',
285
+ activePlugins: filteredDefaultPlugins,
286
+ pluginProps: labelPlugins,
287
+ autoWidthToolbar: true,
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]));
206
299
  }), /*#__PURE__*/React.createElement("div", {
207
300
  className: classes.deleteIcon
208
- }, /*#__PURE__*/React.createElement(_Button["default"], {
209
- disabled: true
210
- }, /*#__PURE__*/React.createElement("div", null)))), /*#__PURE__*/React.createElement("hr", {
211
- className: classes.separator
212
- }), model.rows.map(function (row, idx) {
301
+ })), model.rows.map(function (row, idx) {
213
302
  return /*#__PURE__*/React.createElement(_row["default"], {
214
303
  key: idx,
215
304
  model: model,
@@ -219,7 +308,13 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
219
308
  onChange: _this2.props.onChange,
220
309
  onMoveRow: _this2.moveRow,
221
310
  imageSupport: imageSupport,
222
- enableImages: model.enableImages
311
+ enableImages: model.enableImages,
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
223
318
  });
224
319
  }), /*#__PURE__*/React.createElement(_addRow["default"], {
225
320
  onAddClick: onAddRow
@@ -239,10 +334,15 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
239
334
  imageSupport: _propTypes["default"].shape({
240
335
  add: _propTypes["default"].func.isRequired,
241
336
  "delete": _propTypes["default"].func.isRequired
242
- })
337
+ }),
338
+ uploadSoundSupport: _propTypes["default"].shape({
339
+ add: _propTypes["default"].func.isRequired,
340
+ "delete": _propTypes["default"].func.isRequired
341
+ }),
342
+ toolbarOpts: _propTypes["default"].object
243
343
  });
244
344
 
245
- var _default = (0, _drag.withDragContext)((0, _styles.withStyles)(styles)(AnswerConfigBlock));
345
+ var _default = (0, _styles.withStyles)(styles)(AnswerConfigBlock);
246
346
 
247
347
  exports["default"] = _default;
248
348
  //# sourceMappingURL=answer-config-block.js.map
@@ -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","deleteIcon","minWidth","questionText","rowTable","separator","border","borderTop","width","headerInput","textAlign","maxWidth","AnswerConfigBlock","from","to","props","model","onChange","newModel","rows","update","name","isBoolean","target","value","checked","lodash","set","headerIndex","event","headers","classes","onAddRow","imageSupport","configuration","settings","map","header","idx","input","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 Input from '@material-ui/core/Input';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddRow from './add-row';\nimport Row from './row';\nimport { swap, withDragContext } from '@pie-lib/drag';\nimport debug from 'debug';\nimport lodash from 'lodash';\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 },\n deleteIcon: {\n flex: 0.5,\n minWidth: '88px'\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start'\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 textAlign: 'center',\n maxWidth: '100px'\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 };\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 update = swap(rows, from, to);\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 => event => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.headers[headerIndex] = event.target.value;\n\n onChange(newModel);\n };\n\n render() {\n const {\n classes,\n model,\n onAddRow,\n imageSupport,\n configuration\n } = this.props;\n const { headers = {} } = configuration || {};\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 <Input\n type=\"text\"\n disableUnderline\n classes={idx === 0 ? null : { input: classes.headerInput }}\n onChange={this.onHeaderChange(idx)}\n value={header}\n placeholder=\"Enter Value\"\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 />\n ))}\n <AddRow onAddClick={onAddRow} />\n </div>\n </div>\n );\n }\n}\n\nexport default withDragContext(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"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.InfoDialog = void 0;
11
+
12
+ var React = _interopRequireWildcard(require("react"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
17
+
18
+ var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
19
+
20
+ var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
21
+
22
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ var InfoDialog = function InfoDialog(_ref) {
29
+ var title = _ref.title,
30
+ open = _ref.open,
31
+ onOk = _ref.onOk;
32
+ return /*#__PURE__*/React.createElement(_Dialog["default"], {
33
+ open: open
34
+ }, /*#__PURE__*/React.createElement(_DialogTitle["default"], null, title), /*#__PURE__*/React.createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/React.createElement(_Button["default"], {
35
+ onClick: onOk,
36
+ color: "primary"
37
+ }, "OK")));
38
+ };
39
+
40
+ exports.InfoDialog = InfoDialog;
41
+ InfoDialog.propTypes = {
42
+ title: _propTypes["default"].string,
43
+ open: _propTypes["default"].bool,
44
+ onOk: _propTypes["default"].func
45
+ };
46
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common.jsx"],"names":["InfoDialog","title","open","onOk","propTypes","PropTypes","string","bool","func"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;;;AAEO,IAAMA,UAAU,GAAG,SAAbA,UAAa;AAAA,MAAGC,KAAH,QAAGA,KAAH;AAAA,MAAUC,IAAV,QAAUA,IAAV;AAAA,MAAgBC,IAAhB,QAAgBA,IAAhB;AAAA,sBACxB,oBAAC,kBAAD;AAAQ,IAAA,IAAI,EAAED;AAAd,kBACE,oBAAC,uBAAD,QAAcD,KAAd,CADF,eAEE,oBAAC,yBAAD,QACGE,IAAI,iBACH,oBAAC,kBAAD;AAAQ,IAAA,OAAO,EAAEA,IAAjB;AAAuB,IAAA,KAAK,EAAC;AAA7B,UAFJ,CAFF,CADwB;AAAA,CAAnB;;;AAaPH,UAAU,CAACI,SAAX,GAAuB;AACrBH,EAAAA,KAAK,EAAEI,sBAAUC,MADI;AAErBJ,EAAAA,IAAI,EAAEG,sBAAUE,IAFK;AAGrBJ,EAAAA,IAAI,EAAEE,sBAAUG;AAHK,CAAvB","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\n\nexport const InfoDialog = ({ title, open, onOk }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n title: PropTypes.string,\n open: PropTypes.bool,\n onOk: PropTypes.func,\n};\n"],"file":"common.js"}