@pie-element/categorize 6.6.0 → 6.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 (71) hide show
  1. package/CHANGELOG.md +538 -0
  2. package/configure/CHANGELOG.md +474 -0
  3. package/configure/lib/defaults.js +56 -5
  4. package/configure/lib/defaults.js.map +1 -1
  5. package/configure/lib/design/builder.js +8 -5
  6. package/configure/lib/design/builder.js.map +1 -1
  7. package/configure/lib/design/buttons.js +6 -4
  8. package/configure/lib/design/buttons.js.map +1 -1
  9. package/configure/lib/design/categories/RowLabel.js +68 -0
  10. package/configure/lib/design/categories/RowLabel.js.map +1 -0
  11. package/configure/lib/design/categories/alternateResponses.js +122 -18
  12. package/configure/lib/design/categories/alternateResponses.js.map +1 -1
  13. package/configure/lib/design/categories/category.js +53 -6
  14. package/configure/lib/design/categories/category.js.map +1 -1
  15. package/configure/lib/design/categories/choice-preview.js +19 -6
  16. package/configure/lib/design/categories/choice-preview.js.map +1 -1
  17. package/configure/lib/design/categories/droppable-placeholder.js +25 -5
  18. package/configure/lib/design/categories/droppable-placeholder.js.map +1 -1
  19. package/configure/lib/design/categories/index.js +172 -82
  20. package/configure/lib/design/categories/index.js.map +1 -1
  21. package/configure/lib/design/choices/choice.js +83 -13
  22. package/configure/lib/design/choices/choice.js.map +1 -1
  23. package/configure/lib/design/choices/config.js +10 -136
  24. package/configure/lib/design/choices/config.js.map +1 -1
  25. package/configure/lib/design/choices/index.js +89 -13
  26. package/configure/lib/design/choices/index.js.map +1 -1
  27. package/configure/lib/design/header.js +18 -6
  28. package/configure/lib/design/header.js.map +1 -1
  29. package/configure/lib/design/index.js +165 -50
  30. package/configure/lib/design/index.js.map +1 -1
  31. package/configure/lib/design/input-header.js +69 -11
  32. package/configure/lib/design/input-header.js.map +1 -1
  33. package/configure/lib/index.js +18 -4
  34. package/configure/lib/index.js.map +1 -1
  35. package/configure/lib/main.js +4 -2
  36. package/configure/lib/main.js.map +1 -1
  37. package/configure/lib/utils.js +27 -0
  38. package/configure/lib/utils.js.map +1 -0
  39. package/configure/package.json +9 -9
  40. package/controller/CHANGELOG.md +128 -0
  41. package/controller/lib/defaults.js +20 -1
  42. package/controller/lib/defaults.js.map +1 -1
  43. package/controller/lib/index.js +173 -30
  44. package/controller/lib/index.js.map +1 -1
  45. package/controller/lib/utils.js +60 -0
  46. package/controller/lib/utils.js.map +1 -0
  47. package/controller/package.json +4 -4
  48. package/docs/config-schema.json +181 -0
  49. package/docs/config-schema.json.md +141 -1
  50. package/docs/demo/config.js +2 -2
  51. package/docs/demo/generate.js +5 -8
  52. package/docs/demo/index.html +1 -1
  53. package/docs/pie-schema.json +63 -11
  54. package/docs/pie-schema.json.md +51 -11
  55. package/lib/categorize/categories.js +30 -24
  56. package/lib/categorize/categories.js.map +1 -1
  57. package/lib/categorize/category.js +15 -12
  58. package/lib/categorize/category.js.map +1 -1
  59. package/lib/categorize/choice.js +19 -12
  60. package/lib/categorize/choice.js.map +1 -1
  61. package/lib/categorize/choices.js +35 -16
  62. package/lib/categorize/choices.js.map +1 -1
  63. package/lib/categorize/droppable-placeholder.js +6 -4
  64. package/lib/categorize/droppable-placeholder.js.map +1 -1
  65. package/lib/categorize/grid-content.js +3 -3
  66. package/lib/categorize/grid-content.js.map +1 -1
  67. package/lib/categorize/index.js +71 -37
  68. package/lib/categorize/index.js.map +1 -1
  69. package/lib/index.js +4 -1
  70. package/lib/index.js.map +1 -1
  71. package/package.json +9 -8
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.spec = exports.Choice = void 0;
8
+ exports.specTarget = exports.spec = exports["default"] = exports.Choice = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
@@ -47,13 +47,21 @@ var _debug = _interopRequireDefault(require("debug"));
47
47
 
48
48
  var _drag = require("@pie-lib/drag");
49
49
 
50
+ var _utils = require("../../utils");
51
+
52
+ var _flow = _interopRequireDefault(require("lodash/flow"));
53
+
50
54
  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); }; }
51
55
 
52
- 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; } }
56
+ 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; } }
53
57
 
54
58
  var log = (0, _debug["default"])('@pie-element:categorize:configure:choice');
55
59
 
56
60
  var canDrag = function canDrag(props) {
61
+ if (props.lockChoiceOrder) {
62
+ return true;
63
+ }
64
+
57
65
  var count = props.choice.categoryCount || 0;
58
66
 
59
67
  if (count === 0) {
@@ -98,6 +106,9 @@ var Choice = /*#__PURE__*/function (_React$Component) {
98
106
 
99
107
  onChange(choice);
100
108
  });
109
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "isCheckboxShown", function (allowMultiplePlacements) {
110
+ return allowMultiplePlacements === _utils.multiplePlacements.perChoice;
111
+ });
101
112
  return _this;
102
113
  }
103
114
 
@@ -105,33 +116,56 @@ var Choice = /*#__PURE__*/function (_React$Component) {
105
116
  key: "render",
106
117
  value: function render() {
107
118
  var _this$props3 = this.props,
119
+ allowMultiplePlacements = _this$props3.allowMultiplePlacements,
108
120
  classes = _this$props3.classes,
109
121
  className = _this$props3.className,
110
122
  choice = _this$props3.choice,
123
+ deleteFocusedEl = _this$props3.deleteFocusedEl,
124
+ focusedEl = _this$props3.focusedEl,
125
+ index = _this$props3.index,
111
126
  onDelete = _this$props3.onDelete,
127
+ connectDropTarget = _this$props3.connectDropTarget,
112
128
  connectDragSource = _this$props3.connectDragSource,
113
129
  connectDragPreview = _this$props3.connectDragPreview,
114
- imageSupport = _this$props3.imageSupport;
130
+ imageSupport = _this$props3.imageSupport,
131
+ spellCheck = _this$props3.spellCheck,
132
+ toolbarOpts = _this$props3.toolbarOpts,
133
+ error = _this$props3.error,
134
+ maxImageWidth = _this$props3.maxImageWidth,
135
+ maxImageHeight = _this$props3.maxImageHeight,
136
+ uploadSoundSupport = _this$props3.uploadSoundSupport;
137
+ var showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);
115
138
  var draggable = canDrag(this.props);
116
139
  return /*#__PURE__*/_react["default"].createElement(_Card["default"], {
117
140
  className: (0, _classnames["default"])(classes.choice, className)
118
141
  }, /*#__PURE__*/_react["default"].createElement(_CardActions["default"], {
119
142
  className: classes.actions
120
- }, connectDragSource( /*#__PURE__*/_react["default"].createElement("span", {
143
+ }, connectDragSource(connectDropTarget( /*#__PURE__*/_react["default"].createElement("span", {
121
144
  className: (0, _classnames["default"])(classes.dragHandle, draggable === false && classes.dragDisabled)
122
145
  }, /*#__PURE__*/_react["default"].createElement(_DragHandle["default"], {
123
146
  color: draggable ? 'primary' : 'disabled'
124
- })))), connectDragPreview( /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_inputHeader["default"], {
147
+ }))))), connectDragPreview( /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_inputHeader["default"], {
125
148
  imageSupport: imageSupport,
149
+ focusedEl: focusedEl,
150
+ deleteFocusedEl: deleteFocusedEl,
151
+ index: index,
126
152
  label: choice.content,
127
153
  onChange: this.changeContent,
128
- onDelete: onDelete
129
- }))), /*#__PURE__*/_react["default"].createElement(_CardActions["default"], {
154
+ onDelete: onDelete,
155
+ toolbarOpts: toolbarOpts,
156
+ spellCheck: spellCheck,
157
+ error: error,
158
+ maxImageWidth: maxImageWidth,
159
+ maxImageHeight: maxImageHeight,
160
+ uploadSoundSupport: uploadSoundSupport
161
+ }), error && /*#__PURE__*/_react["default"].createElement("div", {
162
+ className: classes.errorText
163
+ }, error))), /*#__PURE__*/_react["default"].createElement(_CardActions["default"], {
130
164
  className: classes.actions
131
165
  }, /*#__PURE__*/_react["default"].createElement(_buttons.DeleteButton, {
132
166
  label: 'delete',
133
167
  onClick: onDelete
134
- }), /*#__PURE__*/_react["default"].createElement(_configUi.Checkbox, {
168
+ }), showRemoveAfterPlacing && /*#__PURE__*/_react["default"].createElement(_configUi.Checkbox, {
135
169
  mini: true,
136
170
  label: 'Remove after placing',
137
171
  checked: choice.categoryCount === 1,
@@ -144,9 +178,14 @@ var Choice = /*#__PURE__*/function (_React$Component) {
144
178
 
145
179
  exports.Choice = Choice;
146
180
  (0, _defineProperty2["default"])(Choice, "propTypes", {
181
+ allowMultiplePlacements: _propTypes["default"].string,
147
182
  classes: _propTypes["default"].object.isRequired,
148
183
  className: _propTypes["default"].string,
149
184
  choice: _propTypes["default"].object.isRequired,
185
+ deleteFocusedEl: _propTypes["default"].func,
186
+ focusedEl: _propTypes["default"].number,
187
+ index: _propTypes["default"].number,
188
+ lockChoiceOrder: _propTypes["default"].bool,
150
189
  onChange: _propTypes["default"].func.isRequired,
151
190
  onDelete: _propTypes["default"].func.isRequired,
152
191
  connectDragSource: _propTypes["default"].func.isRequired,
@@ -155,6 +194,12 @@ exports.Choice = Choice;
155
194
  imageSupport: _propTypes["default"].shape({
156
195
  add: _propTypes["default"].func.isRequired,
157
196
  "delete": _propTypes["default"].func.isRequired
197
+ }),
198
+ toolbarOpts: _propTypes["default"].object,
199
+ error: _propTypes["default"].string,
200
+ uploadSoundSupport: _propTypes["default"].shape({
201
+ add: _propTypes["default"].func.isRequired,
202
+ "delete": _propTypes["default"].func.isRequired
158
203
  })
159
204
  });
160
205
  (0, _defineProperty2["default"])(Choice, "defaultProps", {});
@@ -174,6 +219,11 @@ var styles = function styles(theme) {
174
219
  },
175
220
  dragDisabled: {
176
221
  cursor: 'inherit'
222
+ },
223
+ errorText: {
224
+ fontSize: '11px',
225
+ color: 'red',
226
+ paddingBottom: '5px'
177
227
  }
178
228
  };
179
229
  };
@@ -183,7 +233,8 @@ var spec = {
183
233
  canDrag: canDrag,
184
234
  beginDrag: function beginDrag(props) {
185
235
  var out = {
186
- id: props.choice.id
236
+ id: props.choice.id,
237
+ index: props.index
187
238
  };
188
239
  log('[beginDrag] out:', out);
189
240
  return out;
@@ -200,7 +251,20 @@ var spec = {
200
251
  }
201
252
  };
202
253
  exports.spec = spec;
203
- var DraggableChoice = (0, _reactDnd.DragSource)(function (_ref) {
254
+ var specTarget = {
255
+ drop: function drop(props, monitor) {
256
+ log('[drop] props: ', props);
257
+ var item = monitor.getItem();
258
+ props.rearrangeChoices(item.index, props.index);
259
+ },
260
+ canDrop: function canDrop(props, monitor) {
261
+ var item = monitor.getItem();
262
+ return props.choice.id !== item.id;
263
+ }
264
+ };
265
+ exports.specTarget = specTarget;
266
+
267
+ var _default = _drag.uid.withUid((0, _flow["default"])((0, _reactDnd.DragSource)(function (_ref) {
204
268
  var uid = _ref.uid;
205
269
  return uid;
206
270
  }, spec, function (connect, monitor) {
@@ -209,9 +273,15 @@ var DraggableChoice = (0, _reactDnd.DragSource)(function (_ref) {
209
273
  connectDragPreview: connect.dragPreview(),
210
274
  isDragging: monitor.isDragging()
211
275
  };
212
- })(StyledChoice);
213
-
214
- var _default = _drag.uid.withUid(DraggableChoice);
276
+ }), (0, _reactDnd.DropTarget)(function (_ref2) {
277
+ var uid = _ref2.uid;
278
+ return uid;
279
+ }, specTarget, function (connect, monitor) {
280
+ return {
281
+ connectDropTarget: connect.dropTarget(),
282
+ isOver: monitor.isOver()
283
+ };
284
+ }))(StyledChoice));
215
285
 
216
286
  exports["default"] = _default;
217
287
  //# sourceMappingURL=choice.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","classes","className","onDelete","connectDragSource","connectDragPreview","imageSupport","draggable","actions","dragHandle","dragDisabled","changeContent","changeCategoryCount","React","Component","PropTypes","object","isRequired","string","func","number","shape","add","styles","theme","padding","justifyContent","spacing","unit","overflow","cursor","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","DraggableChoice","uid","connect","dragSource","dragPreview","isDragging","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/drag';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = props => {\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n static defaultProps = {};\n\n changeContent = content => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n render() {\n const {\n classes,\n className,\n choice,\n onDelete,\n connectDragSource,\n connectDragPreview,\n imageSupport\n } = this.props;\n\n const draggable = canDrag(this.props);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n <span\n className={classNames(\n classes.dragHandle,\n draggable === false && classes.dragDisabled\n )}\n >\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n />\n </span>\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = theme => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between'\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible'\n },\n dragHandle: {\n cursor: 'move'\n },\n dragDisabled: {\n cursor: 'inherit'\n }\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: props => {\n const out = {\n id: props.choice.id\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n }\n};\n\nconst DraggableChoice = DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging()\n })\n)(StyledChoice);\n\nexport default uid.withUid(DraggableChoice);\n"],"file":"choice.js"}
1
+ {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","deleteFocusedEl","focusedEl","index","onDelete","connectDropTarget","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","showRemoveAfterPlacing","isCheckboxShown","draggable","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","number","bool","shape","add","styles","theme","padding","justifyContent","spacing","unit","overflow","cursor","fontSize","color","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/drag';\nimport { multiplePlacements } from '../../utils';\nimport flow from 'lodash/flow';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = (props) => {\n if (props.lockChoiceOrder) {\n return true;\n }\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n allowMultiplePlacements: PropTypes.string,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n lockChoiceOrder: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n choice,\n deleteFocusedEl,\n focusedEl,\n index,\n onDelete,\n connectDropTarget,\n connectDragSource,\n connectDragPreview,\n imageSupport,\n spellCheck,\n toolbarOpts,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n\n const showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);\n const draggable = canDrag(this.props);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n connectDropTarget(\n <span className={classNames(classes.dragHandle, draggable === false && classes.dragDisabled)}>\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>,\n ),\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>,\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n {showRemoveAfterPlacing && (\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n )}\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: '11px',\n color: 'red',\n paddingBottom: '5px',\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
@@ -45,25 +45,7 @@ var _configUi = require("@pie-lib/config-ui");
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
 
48
- 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; } }
49
-
50
- var positionOptions = [{
51
- label: 'Above',
52
- value: 'above',
53
- secondaryText: 'Choices will be shown above categories'
54
- }, {
55
- label: 'Below',
56
- value: 'below',
57
- secondaryText: 'Choices will be shown below categories'
58
- }, {
59
- label: 'Left',
60
- value: 'left',
61
- secondaryText: 'Choices will be shown to the left of the categories'
62
- }, {
63
- label: 'Right',
64
- value: 'right',
65
- secondaryText: 'Choices will be shown to the right of the categories'
66
- }];
48
+ 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; } }
67
49
 
68
50
  var Config = /*#__PURE__*/function (_React$Component) {
69
51
  (0, _inherits2["default"])(Config, _React$Component);
@@ -80,112 +62,27 @@ var Config = /*#__PURE__*/function (_React$Component) {
80
62
  }
81
63
 
82
64
  _this = _super.call.apply(_super, [this].concat(args));
83
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
84
- anchorEl: null
85
- });
86
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleRemoveAllTiles", function () {
87
- var _this$props = _this.props,
88
- config = _this$props.config,
89
- onModelChanged = _this$props.onModelChanged;
90
-
91
- var allAtOne = _this.props.allChoicesHaveCount(1);
92
-
93
- var update = config.choices.map(function (c) {
94
- c.categoryCount = allAtOne ? 0 : 1;
95
- return c;
96
- });
97
- onModelChanged({
98
- choices: update
99
- });
100
- });
101
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeColumns", function (_ref) {
65
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeLabel", function (_ref) {
102
66
  var target = _ref.target;
103
- var onModelChanged = _this.props.onModelChanged;
104
- var numberValue = parseInt(target.value, 10);
105
-
106
- if (numberValue && numberValue >= 1 && numberValue <= 4) {
107
- onModelChanged({
108
- choicesPerRow: numberValue
109
- });
110
- }
111
- });
112
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeLabel", function (_ref2) {
113
- var target = _ref2.target;
114
67
 
115
68
  _this.props.onModelChanged({
116
69
  choicesLabel: target.value
117
70
  });
118
71
  });
119
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShuffle", function () {
120
- _this.props.onModelChanged({
121
- lockChoiceOrder: !_this.props.config.lockChoiceOrder
122
- });
123
- });
124
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changePosition", function (position) {
125
- _this.props.onModelChanged({
126
- choicesPosition: position.value
127
- });
128
-
129
- _this.setState({
130
- anchorEl: null
131
- });
132
- });
133
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickPosition", function (event) {
134
- _this.setState({
135
- anchorEl: event.currentTarget
136
- });
137
- });
138
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMenuItemClick", function (event, index) {
139
- _this.setState({
140
- selectedIndex: index,
141
- anchorEl: null
142
- });
143
- });
144
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClose", function () {
145
- _this.setState({
146
- anchorEl: null
147
- });
148
- });
149
72
  return _this;
150
73
  }
151
74
 
152
75
  (0, _createClass2["default"])(Config, [{
153
76
  key: "render",
154
77
  value: function render() {
155
- var _this2 = this;
156
-
157
- var anchorEl = this.state.anchorEl;
158
- var _this$props2 = this.props,
159
- classes = _this$props2.classes,
160
- className = _this$props2.className,
161
- categoryCountIsOne = _this$props2.categoryCountIsOne,
162
- config = _this$props2.config;
163
- var positionOption = positionOptions.find(function (option) {
164
- return option.value === config.choicesPosition;
165
- }) || positionOption[1];
78
+ var _this$props = this.props,
79
+ classes = _this$props.classes,
80
+ className = _this$props.className,
81
+ config = _this$props.config,
82
+ spellCheck = _this$props.spellCheck;
166
83
  return /*#__PURE__*/_react["default"].createElement("div", {
167
84
  className: (0, _classnames["default"])(classes.config, className)
168
85
  }, /*#__PURE__*/_react["default"].createElement("div", {
169
- className: classes.row
170
- }, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
171
- label: 'Choices per row',
172
- type: "number",
173
- inputProps: {
174
- min: 1,
175
- max: 4
176
- },
177
- value: config.choicesPerRow,
178
- onChange: this.changeColumns
179
- }), /*#__PURE__*/_react["default"].createElement(_configUi.InputCheckbox, {
180
- label: 'Remove all tiles after placing',
181
- checked: categoryCountIsOne,
182
- onChange: this.toggleRemoveAllTiles
183
- }), /*#__PURE__*/_react["default"].createElement(_configUi.InputCheckbox, {
184
- className: classes.shuffleCheckbox,
185
- label: 'Lock Choice Order',
186
- checked: config.lockChoiceOrder,
187
- onChange: this.toggleShuffle
188
- })), /*#__PURE__*/_react["default"].createElement("div", {
189
86
  className: classes.configuration
190
87
  }, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
191
88
  className: classes.label,
@@ -194,30 +91,9 @@ var Config = /*#__PURE__*/function (_React$Component) {
194
91
  },
195
92
  label: "Label",
196
93
  value: config.choicesLabel,
197
- onChange: this.changeLabel
198
- }), /*#__PURE__*/_react["default"].createElement(_List["default"], {
199
- component: "nav"
200
- }, /*#__PURE__*/_react["default"].createElement(_ListItem["default"], {
201
- button: true,
202
- "aria-haspopup": "true",
203
- onClick: this.handleClickPosition
204
- }, /*#__PURE__*/_react["default"].createElement(_ListItemText["default"], {
205
- primary: "Choices Position",
206
- secondary: positionOption.secondaryText
207
- }))), /*#__PURE__*/_react["default"].createElement(_Menu["default"], {
208
- id: "lock-menu",
209
- anchorEl: anchorEl,
210
- open: Boolean(anchorEl),
211
- onClose: this.handleClose
212
- }, positionOptions.map(function (option) {
213
- return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
214
- key: option.value,
215
- selected: option.value === config.choicesPosition,
216
- onClick: function onClick() {
217
- return _this2.changePosition(option);
218
- }
219
- }, option.label);
220
- }))));
94
+ onChange: this.changeLabel,
95
+ spellCheck: spellCheck
96
+ })));
221
97
  }
222
98
  }]);
223
99
  return Config;
@@ -228,8 +104,6 @@ exports.Config = Config;
228
104
  classes: _propTypes["default"].object.isRequired,
229
105
  className: _propTypes["default"].string,
230
106
  config: _propTypes["default"].object,
231
- categoryCountIsOne: _propTypes["default"].bool,
232
- allChoicesHaveCount: _propTypes["default"].func,
233
107
  onModelChanged: _propTypes["default"].func
234
108
  });
235
109
  (0, _defineProperty2["default"])(Config, "defaultProps", {});
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/choices/config.jsx"],"names":["positionOptions","label","value","secondaryText","Config","anchorEl","props","config","onModelChanged","allAtOne","allChoicesHaveCount","update","choices","map","c","categoryCount","target","numberValue","parseInt","choicesPerRow","choicesLabel","lockChoiceOrder","position","choicesPosition","setState","event","currentTarget","index","selectedIndex","state","classes","className","categoryCountIsOne","positionOption","find","option","row","min","max","changeColumns","toggleRemoveAllTiles","shuffleCheckbox","toggleShuffle","configuration","shrink","changeLabel","handleClickPosition","Boolean","handleClose","changePosition","React","Component","PropTypes","object","isRequired","string","bool","func","styles","theme","display","alignItems","gridColumnGap","spacing","unit","gridRowGap","gridTemplateColumns","justifyContent","marginBottom","choiceConfig","width","maxWidth","backgroundColor","palette","background","paper","marginTop","gridColumnStart","gridColumnEnd"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport TextField from '@material-ui/core/TextField';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Menu from '@material-ui/core/Menu';\nimport { InputCheckbox } from '@pie-lib/config-ui';\n\nconst positionOptions = [\n {\n label: 'Above',\n value: 'above',\n secondaryText: 'Choices will be shown above categories'\n },\n {\n label: 'Below',\n value: 'below',\n secondaryText: 'Choices will be shown below categories'\n },\n {\n label: 'Left',\n value: 'left',\n secondaryText: 'Choices will be shown to the left of the categories'\n },\n {\n label: 'Right',\n value: 'right',\n secondaryText: 'Choices will be shown to the right of the categories'\n }\n];\n\nexport class Config extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n config: PropTypes.object,\n categoryCountIsOne: PropTypes.bool,\n allChoicesHaveCount: PropTypes.func,\n onModelChanged: PropTypes.func\n };\n\n static defaultProps = {};\n\n state = {\n anchorEl: null\n };\n\n toggleRemoveAllTiles = () => {\n const { config, onModelChanged } = this.props;\n\n const allAtOne = this.props.allChoicesHaveCount(1);\n const update = config.choices.map(c => {\n c.categoryCount = allAtOne ? 0 : 1;\n return c;\n });\n\n onModelChanged({ choices: update });\n };\n\n changeColumns = ({ target }) => {\n const { onModelChanged } = this.props;\n const numberValue = parseInt(target.value, 10);\n\n if (numberValue && numberValue >= 1 && numberValue <= 4) {\n onModelChanged({ choicesPerRow: numberValue });\n }\n };\n\n changeLabel = ({ target }) => {\n this.props.onModelChanged({ choicesLabel: target.value });\n };\n\n toggleShuffle = () => {\n this.props.onModelChanged({\n lockChoiceOrder: !this.props.config.lockChoiceOrder\n });\n };\n\n changePosition = position => {\n this.props.onModelChanged({ choicesPosition: position.value });\n\n this.setState({ anchorEl: null });\n };\n\n handleClickPosition = event => {\n this.setState({ anchorEl: event.currentTarget });\n };\n\n handleMenuItemClick = (event, index) => {\n this.setState({ selectedIndex: index, anchorEl: null });\n };\n\n handleClose = () => {\n this.setState({ anchorEl: null });\n };\n\n render() {\n const { anchorEl } = this.state;\n const { classes, className, categoryCountIsOne, config } = this.props;\n\n const positionOption =\n positionOptions.find(option => option.value === config.choicesPosition) ||\n positionOption[1];\n\n return (\n <div className={classNames(classes.config, className)}>\n <div className={classes.row}>\n <TextField\n label={'Choices per row'}\n type=\"number\"\n inputProps={{\n min: 1,\n max: 4\n }}\n value={config.choicesPerRow}\n onChange={this.changeColumns}\n />\n <InputCheckbox\n label={'Remove all tiles after placing'}\n checked={categoryCountIsOne}\n onChange={this.toggleRemoveAllTiles}\n />\n <InputCheckbox\n className={classes.shuffleCheckbox}\n label={'Lock Choice Order'}\n checked={config.lockChoiceOrder}\n onChange={this.toggleShuffle}\n />\n </div>\n\n <div className={classes.configuration}>\n <TextField\n className={classes.label}\n InputLabelProps={{\n shrink: true\n }}\n label=\"Label\"\n value={config.choicesLabel}\n onChange={this.changeLabel}\n />\n <List component=\"nav\">\n <ListItem\n button\n aria-haspopup=\"true\"\n onClick={this.handleClickPosition}\n >\n <ListItemText\n primary=\"Choices Position\"\n secondary={positionOption.secondaryText}\n />\n </ListItem>\n </List>\n <Menu\n id=\"lock-menu\"\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={this.handleClose}\n >\n {positionOptions.map(option => (\n <MenuItem\n key={option.value}\n selected={option.value === config.choicesPosition}\n onClick={() => this.changePosition(option)}\n >\n {option.label}\n </MenuItem>\n ))}\n </Menu>\n </div>\n </div>\n );\n }\n}\nconst styles = theme => ({\n configuration: {\n display: 'grid',\n alignItems: 'center',\n gridColumnGap: `${theme.spacing.unit}px`,\n gridRowGap: `${theme.spacing.unit}px`,\n gridTemplateColumns: 'repeat(2, 1fr)',\n justifyContent: 'space-between',\n marginBottom: theme.spacing.unit\n },\n choiceConfig: {\n width: '100%',\n maxWidth: 360,\n backgroundColor: theme.palette.background.paper\n },\n row: {\n display: 'grid',\n gridColumnGap: `${theme.spacing.unit}px`,\n gridRowGap: `${theme.spacing.unit}px`,\n gridTemplateColumns: 'repeat(2, 1fr)',\n justifyContent: 'space-between',\n marginTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit\n },\n shuffleCheckbox: {\n gridColumnStart: 2,\n gridColumnEnd: 2\n }\n});\nexport default withStyles(styles)(Config);\n"],"file":"config.js"}
1
+ {"version":3,"sources":["../../../src/design/choices/config.jsx"],"names":["Config","target","props","onModelChanged","choicesLabel","value","classes","className","config","spellCheck","configuration","label","shrink","changeLabel","React","Component","PropTypes","object","isRequired","string","func","styles","theme","display","alignItems","gridColumnGap","spacing","unit","gridRowGap","gridTemplateColumns","justifyContent","marginBottom","choiceConfig","width","maxWidth","backgroundColor","palette","background","paper","row","marginTop","shuffleCheckbox","gridColumnStart","gridColumnEnd"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAGaA,M;;;;;;;;;;;;;;;oGAWG,gBAAgB;AAAA,UAAbC,MAAa,QAAbA,MAAa;;AAC5B,YAAKC,KAAL,CAAWC,cAAX,CAA0B;AAAEC,QAAAA,YAAY,EAAEH,MAAM,CAACI;AAAvB,OAA1B;AACD,K;;;;;;WAGD,kBAAS;AACP,wBAAkD,KAAKH,KAAvD;AAAA,UAAQI,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,MAA5B,eAA4BA,MAA5B;AAAA,UAAoCC,UAApC,eAAoCA,UAApC;AAGA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWH,OAAO,CAACE,MAAnB,EAA2BD,SAA3B;AAAhB,sBACE;AAAK,QAAA,SAAS,EAAED,OAAO,CAACI;AAAxB,sBACE,gCAAC,qBAAD;AACE,QAAA,SAAS,EAAEJ,OAAO,CAACK,KADrB;AAEE,QAAA,eAAe,EAAE;AACfC,UAAAA,MAAM,EAAE;AADO,SAFnB;AAKE,QAAA,KAAK,EAAC,OALR;AAME,QAAA,KAAK,EAAEJ,MAAM,CAACJ,YANhB;AAOE,QAAA,QAAQ,EAAE,KAAKS,WAPjB;AAQE,QAAA,UAAU,EAAEJ;AARd,QADF,CADF,CADF;AAgBD;;;EApCyBK,kBAAMC,S;;;iCAArBf,M,eACQ;AACjBM,EAAAA,OAAO,EAAEU,sBAAUC,MAAV,CAAiBC,UADT;AAEjBX,EAAAA,SAAS,EAAES,sBAAUG,MAFJ;AAGjBX,EAAAA,MAAM,EAAEQ,sBAAUC,MAHD;AAIjBd,EAAAA,cAAc,EAAEa,sBAAUI;AAJT,C;iCADRpB,M,kBAQW,E;;AA8BxB,IAAMqB,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK;AACvBZ,IAAAA,aAAa,EAAE;AACba,MAAAA,OAAO,EAAE,MADI;AAEbC,MAAAA,UAAU,EAAE,QAFC;AAGbC,MAAAA,aAAa,YAAKH,KAAK,CAACI,OAAN,CAAcC,IAAnB,OAHA;AAIbC,MAAAA,UAAU,YAAKN,KAAK,CAACI,OAAN,CAAcC,IAAnB,OAJG;AAKbE,MAAAA,mBAAmB,EAAE,gBALR;AAMbC,MAAAA,cAAc,EAAE,eANH;AAObC,MAAAA,YAAY,EAAET,KAAK,CAACI,OAAN,CAAcC;AAPf,KADQ;AAUvBK,IAAAA,YAAY,EAAE;AACZC,MAAAA,KAAK,EAAE,MADK;AAEZC,MAAAA,QAAQ,EAAE,GAFE;AAGZC,MAAAA,eAAe,EAAEb,KAAK,CAACc,OAAN,CAAcC,UAAd,CAAyBC;AAH9B,KAVS;AAevBC,IAAAA,GAAG,EAAE;AACHhB,MAAAA,OAAO,EAAE,MADN;AAEHE,MAAAA,aAAa,YAAKH,KAAK,CAACI,OAAN,CAAcC,IAAnB,OAFV;AAGHC,MAAAA,UAAU,YAAKN,KAAK,CAACI,OAAN,CAAcC,IAAnB,OAHP;AAIHE,MAAAA,mBAAmB,EAAE,gBAJlB;AAKHC,MAAAA,cAAc,EAAE,eALb;AAMHU,MAAAA,SAAS,EAAElB,KAAK,CAACI,OAAN,CAAcC,IANtB;AAOHI,MAAAA,YAAY,EAAET,KAAK,CAACI,OAAN,CAAcC;AAPzB,KAfkB;AAwBvBc,IAAAA,eAAe,EAAE;AACfC,MAAAA,eAAe,EAAE,CADF;AAEfC,MAAAA,aAAa,EAAE;AAFA;AAxBM,GAAL;AAAA,CAApB;;eA6Be,wBAAWtB,MAAX,EAAmBrB,MAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport TextField from '@material-ui/core/TextField';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Menu from '@material-ui/core/Menu';\nimport { Checkbox } from '@pie-lib/config-ui';\n\n\nexport class Config extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n config: PropTypes.object,\n onModelChanged: PropTypes.func\n };\n\n static defaultProps = {};\n\n\n changeLabel = ({ target }) => {\n this.props.onModelChanged({ choicesLabel: target.value });\n };\n\n\n render() {\n const { classes, className, config, spellCheck} = this.props;\n\n\n return (\n <div className={classNames(classes.config, className)}>\n <div className={classes.configuration}>\n <TextField\n className={classes.label}\n InputLabelProps={{\n shrink: true\n }}\n label=\"Label\"\n value={config.choicesLabel}\n onChange={this.changeLabel}\n spellCheck={spellCheck}\n />\n </div>\n </div>\n );\n }\n}\nconst styles = theme => ({\n configuration: {\n display: 'grid',\n alignItems: 'center',\n gridColumnGap: `${theme.spacing.unit}px`,\n gridRowGap: `${theme.spacing.unit}px`,\n gridTemplateColumns: 'repeat(2, 1fr)',\n justifyContent: 'space-between',\n marginBottom: theme.spacing.unit\n },\n choiceConfig: {\n width: '100%',\n maxWidth: 360,\n backgroundColor: theme.palette.background.paper\n },\n row: {\n display: 'grid',\n gridColumnGap: `${theme.spacing.unit}px`,\n gridRowGap: `${theme.spacing.unit}px`,\n gridTemplateColumns: 'repeat(2, 1fr)',\n justifyContent: 'space-between',\n marginTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit\n },\n shuffleCheckbox: {\n gridColumnStart: 2,\n gridColumnEnd: 2\n }\n});\nexport default withStyles(styles)(Config);\n"],"file":"config.js"}