@pie-element/categorize 7.4.1-next.22 → 7.4.1-next.33

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,6 +31,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
31
31
 
32
32
  var _category = _interopRequireDefault(require("./category"));
33
33
 
34
+ var _categorize = require("@pie-lib/categorize");
35
+
34
36
  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); }; }
35
37
 
36
38
  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; } }
@@ -101,11 +103,29 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
101
103
  correctResponse: correctResponse
102
104
  });
103
105
  });
104
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "deleteChoiceFromCategory", function (category, choice) {
106
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "moveChoice", function (choiceId, from, to, choiceIndex, alternateIndex) {
105
107
  var _this$props2 = _this.props,
106
- altIndex = _this$props2.altIndex,
107
- correctResponse = _this$props2.model.correctResponse,
108
+ model = _this$props2.model,
108
109
  onModelChanged = _this$props2.onModelChanged;
110
+
111
+ var _ref = model || {},
112
+ choices = _ref.choices,
113
+ _ref$correctResponse = _ref.correctResponse,
114
+ correctResponse = _ref$correctResponse === void 0 ? [] : _ref$correctResponse;
115
+
116
+ var choice = (choices || []).find(function (choice) {
117
+ return choice.id === choiceId;
118
+ });
119
+ correctResponse = (0, _categorize.moveChoiceToAlternate)(choiceId, from, to, choiceIndex, correctResponse, alternateIndex, choice === null || choice === void 0 ? void 0 : choice.categoryCount);
120
+ onModelChanged({
121
+ correctResponse: correctResponse
122
+ });
123
+ });
124
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "deleteChoiceFromCategory", function (category, choice) {
125
+ var _this$props3 = _this.props,
126
+ altIndex = _this$props3.altIndex,
127
+ correctResponse = _this$props3.model.correctResponse,
128
+ onModelChanged = _this$props3.onModelChanged;
109
129
  correctResponse.forEach(function (a) {
110
130
  if (a.category === category.id) {
111
131
  if (a.alternateResponses[altIndex]) {
@@ -129,20 +149,20 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
129
149
  value: function render() {
130
150
  var _this2 = this;
131
151
 
132
- var _this$props3 = this.props,
133
- altIndex = _this$props3.altIndex,
134
- model = _this$props3.model,
135
- classes = _this$props3.classes,
136
- className = _this$props3.className,
137
- categories = _this$props3.categories,
138
- imageSupport = _this$props3.imageSupport,
139
- spellCheck = _this$props3.spellCheck,
140
- uploadSoundSupport = _this$props3.uploadSoundSupport;
152
+ var _this$props4 = this.props,
153
+ altIndex = _this$props4.altIndex,
154
+ model = _this$props4.model,
155
+ classes = _this$props4.classes,
156
+ className = _this$props4.className,
157
+ categories = _this$props4.categories,
158
+ imageSupport = _this$props4.imageSupport,
159
+ spellCheck = _this$props4.spellCheck,
160
+ uploadSoundSupport = _this$props4.uploadSoundSupport;
141
161
  var categoriesPerRow = model.categoriesPerRow,
142
162
  errors = model.errors;
143
163
 
144
- var _ref = errors || {},
145
- duplicateAlternate = _ref.duplicateAlternate;
164
+ var _ref2 = errors || {},
165
+ duplicateAlternate = _ref2.duplicateAlternate;
146
166
 
147
167
  var holderStyle = {
148
168
  gridTemplateColumns: "repeat(".concat(categoriesPerRow, ", 1fr)")
@@ -156,6 +176,7 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
156
176
  }, categories.map(function (category, index) {
157
177
  return /*#__PURE__*/_react["default"].createElement(_category["default"], {
158
178
  key: index,
179
+ alternateResponseIndex: altIndex,
159
180
  imageSupport: imageSupport,
160
181
  isDuplicated: isDuplicated && duplicateAlternate.category === category.id,
161
182
  category: category,
@@ -164,6 +185,9 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
164
185
  onDeleteChoice: function onDeleteChoice(choice, choiceIndex) {
165
186
  return _this2.deleteChoiceFromCategory(category, choice, choiceIndex);
166
187
  },
188
+ onMoveChoice: function onMoveChoice(choiceId, from, to, choiceIndex, alternateIndex) {
189
+ return _this2.moveChoice(choiceId, from, to, choiceIndex, alternateIndex);
190
+ },
167
191
  uploadSoundSupport: uploadSoundSupport
168
192
  });
169
193
  })));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/alternateResponses.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","AlternateResponses","choice","categoryId","props","altIndex","correctResponse","model","onModelChanged","forEach","a","category","alternateResponses","push","id","filter","altId","classes","className","imageSupport","spellCheck","uploadSoundSupport","categoriesPerRow","errors","duplicateAlternate","holderStyle","isDuplicated","index","map","addChoiceToCategory","choiceIndex","deleteChoiceFromCategory","React","Component","PropTypes","number","isRequired","shape","add","func","object","string","array"],"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 Category from './category';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n addChoiceToCategory = (choice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse },\n onModelChanged,\n } = this.props;\n\n correctResponse.forEach((a) => {\n if (a.category === categoryId) {\n a.alternateResponses = a.alternateResponses || [];\n\n if (!a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = [];\n }\n\n a.alternateResponses[altIndex].push(choice.id);\n\n return a;\n }\n\n return a;\n });\n\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice) => {\n const {\n altIndex,\n model: { correctResponse },\n onModelChanged,\n } = this.props;\n\n correctResponse.forEach((a) => {\n if (a.category === category.id) {\n if (a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((altId) => altId !== choice.id);\n }\n }\n\n return a;\n });\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const {\n altIndex,\n model,\n classes,\n className,\n categories,\n imageSupport,\n spellCheck,\n uploadSoundSupport,\n } = this.props;\n const { categoriesPerRow, errors } = model;\n const { duplicateAlternate } = errors || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => (\n <Category\n key={index}\n imageSupport={imageSupport}\n isDuplicated={isDuplicated && duplicateAlternate.category === category.id}\n category={category}\n spellCheck={spellCheck}\n onAddChoice={this.addChoiceToCategory}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n uploadSoundSupport={uploadSoundSupport}\n />\n ))}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/alternateResponses.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","AlternateResponses","choice","categoryId","props","altIndex","correctResponse","model","onModelChanged","forEach","a","category","alternateResponses","push","id","choiceId","from","to","choiceIndex","alternateIndex","choices","find","categoryCount","filter","altId","classes","className","imageSupport","spellCheck","uploadSoundSupport","categoriesPerRow","errors","duplicateAlternate","holderStyle","isDuplicated","index","map","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","shape","add","func","object","string","array"],"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 Category from './category';\nimport { moveChoiceToAlternate } from '@pie-lib/categorize';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n addChoiceToCategory = (choice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse },\n onModelChanged,\n } = this.props;\n\n correctResponse.forEach((a) => {\n if (a.category === categoryId) {\n a.alternateResponses = a.alternateResponses || [];\n\n if (!a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = [];\n }\n\n a.alternateResponses[altIndex].push(choice.id);\n\n return a;\n }\n\n return a;\n });\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [] } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n correctResponse = moveChoiceToAlternate(\n choiceId,\n from,\n to,\n choiceIndex,\n correctResponse,\n alternateIndex,\n choice?.categoryCount,\n );\n\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice) => {\n const {\n altIndex,\n model: { correctResponse },\n onModelChanged,\n } = this.props;\n\n correctResponse.forEach((a) => {\n if (a.category === category.id) {\n if (a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((altId) => altId !== choice.id);\n }\n }\n\n return a;\n });\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const { altIndex, model, classes, className, categories, imageSupport, spellCheck, uploadSoundSupport } =\n this.props;\n const { categoriesPerRow, errors } = model;\n const { duplicateAlternate } = errors || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => (\n <Category\n key={index}\n alternateResponseIndex={altIndex}\n imageSupport={imageSupport}\n isDuplicated={isDuplicated && duplicateAlternate.category === category.id}\n category={category}\n spellCheck={spellCheck}\n onAddChoice={this.addChoiceToCategory}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n onMoveChoice={(choiceId, from, to, choiceIndex, alternateIndex) =>\n this.moveChoice(choiceId, from, to, choiceIndex, alternateIndex)\n }\n uploadSoundSupport={uploadSoundSupport}\n />\n ))}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
@@ -72,6 +72,7 @@ var Category = /*#__PURE__*/function (_React$Component) {
72
72
  key: "render",
73
73
  value: function render() {
74
74
  var _this$props2 = this.props,
75
+ alternateResponseIndex = _this$props2.alternateResponseIndex,
75
76
  category = _this$props2.category,
76
77
  classes = _this$props2.classes,
77
78
  className = _this$props2.className,
@@ -84,6 +85,7 @@ var Category = /*#__PURE__*/function (_React$Component) {
84
85
  onDelete = _this$props2.onDelete,
85
86
  onDeleteChoice = _this$props2.onDeleteChoice,
86
87
  onAddChoice = _this$props2.onAddChoice,
88
+ onMoveChoice = _this$props2.onMoveChoice,
87
89
  imageSupport = _this$props2.imageSupport,
88
90
  spellCheck = _this$props2.spellCheck,
89
91
  toolbarOpts = _this$props2.toolbarOpts,
@@ -110,9 +112,12 @@ var Category = /*#__PURE__*/function (_React$Component) {
110
112
  className: classes.errorText
111
113
  }, error)), /*#__PURE__*/_react["default"].createElement(_droppablePlaceholder["default"], {
112
114
  className: classes.placeHolder,
115
+ alternateResponseIndex: alternateResponseIndex,
116
+ category: category,
113
117
  choices: category.choices,
114
118
  onDeleteChoice: onDeleteChoice,
115
119
  onDropChoice: onAddChoice,
120
+ onMoveChoice: onMoveChoice,
116
121
  categoryId: category.id
117
122
  }), onDelete && /*#__PURE__*/_react["default"].createElement(_CardActions["default"], {
118
123
  className: classes.actions
@@ -127,6 +132,7 @@ var Category = /*#__PURE__*/function (_React$Component) {
127
132
 
128
133
  exports.Category = Category;
129
134
  (0, _defineProperty2["default"])(Category, "propTypes", {
135
+ alternateResponseIndex: _propTypes["default"].number,
130
136
  classes: _propTypes["default"].object.isRequired,
131
137
  className: _propTypes["default"].string,
132
138
  category: _propTypes["default"].object.isRequired,
@@ -139,6 +145,7 @@ exports.Category = Category;
139
145
  onDelete: _propTypes["default"].func,
140
146
  onDeleteChoice: _propTypes["default"].func,
141
147
  onAddChoice: _propTypes["default"].func,
148
+ onMoveChoice: _propTypes["default"].func,
142
149
  imageSupport: _propTypes["default"].shape({
143
150
  add: _propTypes["default"].func.isRequired,
144
151
  "delete": _propTypes["default"].func.isRequired
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/category.jsx"],"names":["Category","l","props","category","onChange","label","classes","className","deleteFocusedEl","focusedEl","index","error","isDuplicated","onDelete","onDeleteChoice","onAddChoice","imageSupport","spellCheck","toolbarOpts","maxImageWidth","maxImageHeight","uploadSoundSupport","duplicateError","changeLabel","errorText","placeHolder","choices","id","actions","React","Component","PropTypes","object","isRequired","string","func","number","bool","shape","add","styles","theme","minHeight","deleteButton","margin","padding","paddingBottom","paddingTop","spacing","unit","iconButtonRoot","width","height","header","display","justifyContent","overflow","border","fontSize","color","editor","flex"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;IAEaA,Q;;;;;;;;;;;;;;;oGA2BG,UAACC,CAAD,EAAO;AACnB,wBAA+B,MAAKC,KAApC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,QAAlB,eAAkBA,QAAlB;AACAD,MAAAA,QAAQ,CAACE,KAAT,GAAiBJ,CAAjB;AACAG,MAAAA,QAAQ,CAACD,QAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AACP,yBAmBI,KAAKD,KAnBT;AAAA,UACEC,QADF,gBACEA,QADF;AAAA,UAEEG,OAFF,gBAEEA,OAFF;AAAA,UAGEC,SAHF,gBAGEA,SAHF;AAAA,UAIEC,eAJF,gBAIEA,eAJF;AAAA,UAKEC,SALF,gBAKEA,SALF;AAAA,UAMEC,KANF,gBAMEA,KANF;AAAA,UAOEC,KAPF,gBAOEA,KAPF;AAAA,UAQEC,YARF,gBAQEA,YARF;AAAA,UASER,QATF,gBASEA,QATF;AAAA,UAUES,QAVF,gBAUEA,QAVF;AAAA,UAWEC,cAXF,gBAWEA,cAXF;AAAA,UAYEC,WAZF,gBAYEA,WAZF;AAAA,UAaEC,YAbF,gBAaEA,YAbF;AAAA,UAcEC,UAdF,gBAcEA,UAdF;AAAA,UAeEC,WAfF,gBAeEA,WAfF;AAAA,UAgBEC,aAhBF,gBAgBEA,aAhBF;AAAA,UAiBEC,cAjBF,gBAiBEA,cAjBF;AAAA,UAkBEC,kBAlBF,gBAkBEA,kBAlBF;AAoBA,0BACE,gCAAC,gBAAD;AAAM,QAAA,SAAS,EAAE,4BAAWf,OAAO,CAACH,QAAnB,EAA6BI,SAA7B,uCACdD,OAAO,CAACgB,cADM,EACWV,YADX;AAAjB,SAGGR,QAAQ,iBACL,2DACE,gCAAC,uBAAD;AACE,QAAA,KAAK,EAAED,QAAQ,CAACE,KADlB;AAEE,QAAA,SAAS,EAAEI,SAFb;AAGE,QAAA,eAAe,EAAED,eAHnB;AAIE,QAAA,KAAK,EAAEE,KAJT;AAKE,QAAA,KAAK,EAAEC,KALT;AAME,QAAA,QAAQ,EAAE,KAAKY,WANjB;AAOE,QAAA,QAAQ,EAAEV,QAPZ;AAQE,QAAA,YAAY,EAAEG,YARhB;AASE,QAAA,WAAW,EAAEE,WATf;AAUE,QAAA,UAAU,EAAED,UAVd;AAWE,QAAA,aAAa,EAAEE,aAXjB;AAYE,QAAA,cAAc,EAAEC,cAZlB;AAaE,QAAA,kBAAkB,EAAEC;AAbtB,QADF,EAgBGV,KAAK,iBAAI;AAAK,QAAA,SAAS,EAAEL,OAAO,CAACkB;AAAxB,SAAoCb,KAApC,CAhBZ,CAJN,eAwBE,gCAAC,gCAAD;AACE,QAAA,SAAS,EAAEL,OAAO,CAACmB,WADrB;AAEE,QAAA,OAAO,EAAEtB,QAAQ,CAACuB,OAFpB;AAGE,QAAA,cAAc,EAAEZ,cAHlB;AAIE,QAAA,YAAY,EAAEC,WAJhB;AAKE,QAAA,UAAU,EAAEZ,QAAQ,CAACwB;AALvB,QAxBF,EA+BGd,QAAQ,iBACP,gCAAC,uBAAD;AAAa,QAAA,SAAS,EAAEP,OAAO,CAACsB;AAAhC,sBACE,gCAAC,qBAAD;AAAc,QAAA,KAAK,EAAE,QAArB;AAA+B,QAAA,OAAO,EAAEf;AAAxC,QADF,CAhCJ,CADF;AAuCD;;;EA7F2BgB,kBAAMC,S;;;iCAAvB9B,Q,eACQ;AACjBM,EAAAA,OAAO,EAAEyB,sBAAUC,MAAV,CAAiBC,UADT;AAEjB1B,EAAAA,SAAS,EAAEwB,sBAAUG,MAFJ;AAGjB/B,EAAAA,QAAQ,EAAE4B,sBAAUC,MAAV,CAAiBC,UAHV;AAIjBzB,EAAAA,eAAe,EAAEuB,sBAAUI,IAJV;AAKjB1B,EAAAA,SAAS,EAAEsB,sBAAUK,MALJ;AAMjB1B,EAAAA,KAAK,EAAEqB,sBAAUK,MANA;AAOjBzB,EAAAA,KAAK,EAAEoB,sBAAUG,MAPA;AAQjBtB,EAAAA,YAAY,EAAEmB,sBAAUM,IARP;AASjBjC,EAAAA,QAAQ,EAAE2B,sBAAUI,IATH;AAUjBtB,EAAAA,QAAQ,EAAEkB,sBAAUI,IAVH;AAWjBrB,EAAAA,cAAc,EAAEiB,sBAAUI,IAXT;AAYjBpB,EAAAA,WAAW,EAAEgB,sBAAUI,IAZN;AAajBnB,EAAAA,YAAY,EAAEe,sBAAUO,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAER,sBAAUI,IAAV,CAAeF,UADQ;AAE5B,cAAQF,sBAAUI,IAAV,CAAeF;AAFK,GAAhB,CAbG;AAiBjBf,EAAAA,WAAW,EAAEa,sBAAUC,MAjBN;AAkBjBX,EAAAA,kBAAkB,EAAEU,sBAAUO,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAER,sBAAUI,IAAV,CAAeF,UADc;AAElC,cAAQF,sBAAUI,IAAV,CAAeF;AAFW,GAAhB;AAlBH,C;iCADRjC,Q,kBAyBW,E;;AAsExB,IAAMwC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBhB,IAAAA,WAAW,EAAE;AACXiB,MAAAA,SAAS,EAAE;AADA,KADY;AAIzBC,IAAAA,YAAY,EAAE;AACZC,MAAAA,MAAM,EAAE;AADI,KAJW;AAOzBhB,IAAAA,OAAO,EAAE;AACPiB,MAAAA,OAAO,EAAE,CADF;AAEPC,MAAAA,aAAa,EAAE,CAFR;AAGPC,MAAAA,UAAU,EAAEN,KAAK,CAACO,OAAN,CAAcC;AAHnB,KAPgB;AAYzBC,IAAAA,cAAc,EAAE;AACdC,MAAAA,KAAK,EAAE,MADO;AAEdC,MAAAA,MAAM,EAAE;AAFM,KAZS;AAgBzBC,IAAAA,MAAM,EAAE;AACNC,MAAAA,OAAO,EAAE,MADH;AAENC,MAAAA,cAAc,EAAE;AAFV,KAhBiB;AAoBzBpD,IAAAA,QAAQ,EAAE;AACR0C,MAAAA,OAAO,EAAEJ,KAAK,CAACO,OAAN,CAAcC,IADf;AAERO,MAAAA,QAAQ,EAAE;AAFF,KApBe;AAwBzBlC,IAAAA,cAAc,EAAE;AACdmC,MAAAA,MAAM,EAAE;AADM,KAxBS;AA2BzBjC,IAAAA,SAAS,EAAE;AACTkC,MAAAA,QAAQ,EAAE,MADD;AAETC,MAAAA,KAAK,EAAE,KAFE;AAGTb,MAAAA,aAAa,EAAE;AAHN,KA3Bc;AAgCzBc,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAE,GADA;AAENf,MAAAA,aAAa,EAAEL,KAAK,CAACO,OAAN,CAAcC,IAAd,GAAqB;AAF9B;AAhCiB,GAAZ;AAAA,CAAf;;eAqCe,wBAAWT,MAAX,EAAmBxC,QAAnB,C","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 InputHeader from '../input-header';\nimport CardActions from '@material-ui/core/CardActions';\nimport { DeleteButton } from '../buttons';\n\nimport PlaceHolder from './droppable-placeholder';\n\nexport class Category extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n category: PropTypes.object.isRequired,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n error: PropTypes.string,\n isDuplicated: PropTypes.bool,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n onDeleteChoice: PropTypes.func,\n onAddChoice: PropTypes.func,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n changeLabel = (l) => {\n const { category, onChange } = this.props;\n category.label = l;\n onChange(category);\n };\n\n render() {\n const {\n category,\n classes,\n className,\n deleteFocusedEl,\n focusedEl,\n index,\n error,\n isDuplicated,\n onChange,\n onDelete,\n onDeleteChoice,\n onAddChoice,\n imageSupport,\n spellCheck,\n toolbarOpts,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n return (\n <Card className={classNames(classes.category, className, {\n [classes.duplicateError]: isDuplicated\n })}>\n {onChange && (\n <span>\n <InputHeader\n label={category.label}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n error={error}\n onChange={this.changeLabel}\n onDelete={onDelete}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>\n )\n }\n <PlaceHolder\n className={classes.placeHolder}\n choices={category.choices}\n onDeleteChoice={onDeleteChoice}\n onDropChoice={onAddChoice}\n categoryId={category.id}\n />\n {onDelete && (\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n </CardActions>\n )}\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n placeHolder: {\n minHeight: '100px',\n },\n deleteButton: {\n margin: 0,\n },\n actions: {\n padding: 0,\n paddingBottom: 0,\n paddingTop: theme.spacing.unit,\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto',\n },\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n category: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n duplicateError: {\n border: '1px solid red',\n },\n errorText: {\n fontSize: '11px',\n color: 'red',\n paddingBottom: '5px'\n },\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit * 2,\n },\n});\nexport default withStyles(styles)(Category);\n"],"file":"category.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/category.jsx"],"names":["Category","l","props","category","onChange","label","alternateResponseIndex","classes","className","deleteFocusedEl","focusedEl","index","error","isDuplicated","onDelete","onDeleteChoice","onAddChoice","onMoveChoice","imageSupport","spellCheck","toolbarOpts","maxImageWidth","maxImageHeight","uploadSoundSupport","duplicateError","changeLabel","errorText","placeHolder","choices","id","actions","React","Component","PropTypes","number","object","isRequired","string","func","bool","shape","add","styles","theme","minHeight","deleteButton","margin","padding","paddingBottom","paddingTop","spacing","unit","iconButtonRoot","width","height","header","display","justifyContent","overflow","border","fontSize","color","editor","flex"],"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 InputHeader from '../input-header';\nimport CardActions from '@material-ui/core/CardActions';\nimport { DeleteButton } from '../buttons';\n\nimport PlaceHolder from './droppable-placeholder';\n\nexport class Category extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n category: PropTypes.object.isRequired,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n error: PropTypes.string,\n isDuplicated: PropTypes.bool,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n onDeleteChoice: PropTypes.func,\n onAddChoice: PropTypes.func,\n onMoveChoice: PropTypes.func,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n changeLabel = (l) => {\n const { category, onChange } = this.props;\n category.label = l;\n onChange(category);\n };\n\n render() {\n const {\n alternateResponseIndex,\n category,\n classes,\n className,\n deleteFocusedEl,\n focusedEl,\n index,\n error,\n isDuplicated,\n onChange,\n onDelete,\n onDeleteChoice,\n onAddChoice,\n onMoveChoice,\n imageSupport,\n spellCheck,\n toolbarOpts,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n return (\n <Card className={classNames(classes.category, className, {\n [classes.duplicateError]: isDuplicated\n })}>\n {onChange && (\n <span>\n <InputHeader\n label={category.label}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n error={error}\n onChange={this.changeLabel}\n onDelete={onDelete}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>\n )\n }\n <PlaceHolder\n className={classes.placeHolder}\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={category.choices}\n onDeleteChoice={onDeleteChoice}\n onDropChoice={onAddChoice}\n onMoveChoice={onMoveChoice}\n categoryId={category.id}\n />\n {onDelete && (\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n </CardActions>\n )}\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n placeHolder: {\n minHeight: '100px',\n },\n deleteButton: {\n margin: 0,\n },\n actions: {\n padding: 0,\n paddingBottom: 0,\n paddingTop: theme.spacing.unit,\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto',\n },\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n category: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n duplicateError: {\n border: '1px solid red',\n },\n errorText: {\n fontSize: '11px',\n color: 'red',\n paddingBottom: '5px'\n },\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit * 2,\n },\n});\nexport default withStyles(styles)(Category);\n"],"file":"category.js"}
@@ -68,13 +68,26 @@ var ChoicePreview = /*#__PURE__*/function (_React$Component) {
68
68
  (0, _createClass2["default"])(ChoicePreview, [{
69
69
  key: "render",
70
70
  value: function render() {
71
+ var _this2 = this;
72
+
71
73
  var _this$props2 = this.props,
74
+ alternateResponseIndex = _this$props2.alternateResponseIndex,
75
+ category = _this$props2.category,
72
76
  classes = _this$props2.classes,
73
77
  className = _this$props2.className,
74
- choice = _this$props2.choice;
78
+ choice = _this$props2.choice,
79
+ choiceIndex = _this$props2.choiceIndex;
75
80
  return /*#__PURE__*/_react["default"].createElement("div", {
76
81
  className: (0, _classnames["default"])(classes.choicePreview, className)
77
- }, choice ? /*#__PURE__*/_react["default"].createElement(_drag.Choice, null, /*#__PURE__*/_react["default"].createElement(_renderUi.HtmlAndMath, {
82
+ }, choice ? /*#__PURE__*/_react["default"].createElement(_drag.Choice, {
83
+ alternateResponseIndex: alternateResponseIndex,
84
+ category: category,
85
+ choice: choice,
86
+ choiceIndex: choiceIndex,
87
+ onRemoveChoice: function onRemoveChoice() {
88
+ return _this2["delete"]();
89
+ }
90
+ }, /*#__PURE__*/_react["default"].createElement(_renderUi.HtmlAndMath, {
78
91
  html: choice === null || choice === void 0 ? void 0 : choice.content
79
92
  }), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
80
93
  color: "secondary",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","classes","className","choicePreview","content","React","Component","PropTypes","object","isRequired","string","func","styles","position","right","top"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,a;;;;;;;;;;;;;;;+FASF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AACP,yBAAuC,KAAKF,KAA5C;AAAA,UAAQG,OAAR,gBAAQA,OAAR;AAAA,UAAiBC,SAAjB,gBAAiBA,SAAjB;AAAA,UAA4BF,MAA5B,gBAA4BA,MAA5B;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWC,OAAO,CAACE,aAAnB,EAAkCD,SAAlC;AAAhB,SACGF,MAAM,gBACL,gCAAC,YAAD,qBACE,gCAAC,qBAAD;AAAa,QAAA,IAAI,EAAEA,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEI;AAA3B,QADF,eAEE,gCAAC,sBAAD;AAAY,QAAA,KAAK,EAAC,WAAlB;AAA8B,sBAAW,QAAzC;AAAkD,QAAA,SAAS,EAAEH,OAAO,UAApE;AAA6E,QAAA,OAAO,EAAE;AAAtF,sBACE,gCAAC,kBAAD,OADF,CAFF,CADK,GAOH,IARN,CADF;AAYD;;;EA5BgCI,kBAAMC,S;;;iCAA5BT,a,eACQ;AACjBI,EAAAA,OAAO,EAAEM,sBAAUC,MAAV,CAAiBC,UADT;AAEjBP,EAAAA,SAAS,EAAEK,sBAAUG,MAFJ;AAGjBV,EAAAA,MAAM,EAAEO,sBAAUC,MAAV,CAAiBC,UAHR;AAIjBV,EAAAA,QAAQ,EAAEQ,sBAAUI,IAAV,CAAeF;AAJR,C;iCADRZ,a,kBAOW,E;;AAuBxB,IAAMe,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBT,IAAAA,aAAa,EAAE;AACbU,MAAAA,QAAQ,EAAE;AADG,KADK;AAIpB,cAAQ;AACNA,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC;AAJY,GAAP;AAAA,CAAf;;eAUe,wBAAWH,MAAX,EAAmBf,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Choice } from '@pie-lib/drag';\nimport IconButton from '@material-ui/core/IconButton';\nimport Delete from '@material-ui/icons/Delete';\nimport { HtmlAndMath } from '@pie-lib/render-ui';\n\nexport class ChoicePreview extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n onDelete: PropTypes.func.isRequired,\n };\n static defaultProps = {};\n\n delete = () => {\n const { onDelete, choice } = this.props;\n onDelete(choice);\n };\n\n render() {\n const { classes, className, choice } = this.props;\n return (\n <div className={classNames(classes.choicePreview, className)}>\n {choice ? (\n <Choice>\n <HtmlAndMath html={choice?.content} />\n <IconButton color=\"secondary\" aria-label=\"delete\" className={classes.delete} onClick={this.delete}>\n <Delete />\n </IconButton>\n </Choice>\n ) : null}\n </div>\n );\n }\n}\nconst styles = () => ({\n choicePreview: {\n position: 'relative',\n },\n delete: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","content","React","Component","PropTypes","object","isRequired","string","func","styles","position","right","top"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,a;;;;;;;;;;;;;;;+FASF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAsF,KAAKF,KAA3F;AAAA,UAAQG,sBAAR,gBAAQA,sBAAR;AAAA,UAAgCC,QAAhC,gBAAgCA,QAAhC;AAAA,UAA0CC,OAA1C,gBAA0CA,OAA1C;AAAA,UAAmDC,SAAnD,gBAAmDA,SAAnD;AAAA,UAA8DJ,MAA9D,gBAA8DA,MAA9D;AAAA,UAAsEK,WAAtE,gBAAsEA,WAAtE;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWF,OAAO,CAACG,aAAnB,EAAkCF,SAAlC;AAAhB,SACGJ,MAAM,gBACL,gCAAC,YAAD;AAAQ,QAAA,sBAAsB,EAAEC,sBAAhC;AAAwD,QAAA,QAAQ,EAAEC,QAAlE;AAA4E,QAAA,MAAM,EAAEF,MAApF;AAA4F,QAAA,WAAW,EAAEK,WAAzG;AAAsH,QAAA,cAAc,EAAE;AAAA,iBAAM,MAAI,UAAJ,EAAN;AAAA;AAAtI,sBACE,gCAAC,qBAAD;AAAa,QAAA,IAAI,EAAEL,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEO;AAA3B,QADF,eAEE,gCAAC,sBAAD;AAAY,QAAA,KAAK,EAAC,WAAlB;AAA8B,sBAAW,QAAzC;AAAkD,QAAA,SAAS,EAAEJ,OAAO,UAApE;AAA6E,QAAA,OAAO,EAAE;AAAtF,sBACE,gCAAC,kBAAD,OADF,CAFF,CADK,GAOH,IARN,CADF;AAYD;;;EA5BgCK,kBAAMC,S;;;iCAA5BZ,a,eACQ;AACjBM,EAAAA,OAAO,EAAEO,sBAAUC,MAAV,CAAiBC,UADT;AAEjBR,EAAAA,SAAS,EAAEM,sBAAUG,MAFJ;AAGjBb,EAAAA,MAAM,EAAEU,sBAAUC,MAAV,CAAiBC,UAHR;AAIjBb,EAAAA,QAAQ,EAAEW,sBAAUI,IAAV,CAAeF;AAJR,C;iCADRf,a,kBAOW,E;;AAuBxB,IAAMkB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBT,IAAAA,aAAa,EAAE;AACbU,MAAAA,QAAQ,EAAE;AADG,KADK;AAIpB,cAAQ;AACNA,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC;AAJY,GAAP;AAAA,CAAf;;eAUe,wBAAWH,MAAX,EAAmBlB,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Choice } from '@pie-lib/drag';\nimport IconButton from '@material-ui/core/IconButton';\nimport Delete from '@material-ui/icons/Delete';\nimport { HtmlAndMath } from '@pie-lib/render-ui';\n\nexport class ChoicePreview extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n onDelete: PropTypes.func.isRequired,\n };\n static defaultProps = {};\n\n delete = () => {\n const { onDelete, choice } = this.props;\n onDelete(choice);\n };\n\n render() {\n const { alternateResponseIndex, category, classes, className, choice, choiceIndex } = this.props;\n return (\n <div className={classNames(classes.choicePreview, className)}>\n {choice ? (\n <Choice alternateResponseIndex={alternateResponseIndex} category={category} choice={choice} choiceIndex={choiceIndex} onRemoveChoice={() => this.delete()}>\n <HtmlAndMath html={choice?.content} />\n <IconButton color=\"secondary\" aria-label=\"delete\" className={classes.delete} onClick={this.delete}>\n <Delete />\n </IconButton>\n </Choice>\n ) : null}\n </div>\n );\n }\n}\nconst styles = () => ({\n choicePreview: {\n position: 'relative',\n },\n delete: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
@@ -59,12 +59,17 @@ var Helper = (0, _styles.withStyles)(function () {
59
59
  });
60
60
 
61
61
  var Previews = function Previews(_ref2) {
62
- var choices = _ref2.choices,
62
+ var alternateResponseIndex = _ref2.alternateResponseIndex,
63
+ category = _ref2.category,
64
+ choices = _ref2.choices,
63
65
  onDeleteChoice = _ref2.onDeleteChoice;
64
66
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, choices.map(function (c, index) {
65
67
  return c && /*#__PURE__*/_react["default"].createElement(_choicePreview["default"], {
68
+ alternateResponseIndex: alternateResponseIndex,
69
+ category: category,
66
70
  choice: c,
67
71
  key: index,
72
+ choiceIndex: index,
68
73
  onDelete: function onDelete(choice) {
69
74
  return onDeleteChoice(choice, index);
70
75
  }
@@ -73,6 +78,8 @@ var Previews = function Previews(_ref2) {
73
78
  };
74
79
 
75
80
  Previews.propTypes = {
81
+ alternateResponseIndex: _propTypes["default"].number,
82
+ category: _propTypes["default"].object,
76
83
  choices: _propTypes["default"].array,
77
84
  onDeleteChoice: _propTypes["default"].func
78
85
  };
@@ -91,7 +98,9 @@ var DroppablePlaceHolder = /*#__PURE__*/function (_React$Component) {
91
98
  key: "render",
92
99
  value: function render() {
93
100
  var _this$props = this.props,
101
+ alternateResponseIndex = _this$props.alternateResponseIndex,
94
102
  isOver = _this$props.isOver,
103
+ category = _this$props.category,
95
104
  choices = _this$props.choices,
96
105
  classes = _this$props.classes,
97
106
  className = _this$props.className,
@@ -103,6 +112,8 @@ var DroppablePlaceHolder = /*#__PURE__*/function (_React$Component) {
103
112
  isOver: isOver,
104
113
  className: classes.placeHolder
105
114
  }, (choices || []).length === 0 ? /*#__PURE__*/_react["default"].createElement(Helper, null) : /*#__PURE__*/_react["default"].createElement(Previews, {
115
+ alternateResponseIndex: alternateResponseIndex,
116
+ category: category,
106
117
  choices: choices,
107
118
  onDeleteChoice: onDeleteChoice
108
119
  }))));
@@ -113,11 +124,14 @@ var DroppablePlaceHolder = /*#__PURE__*/function (_React$Component) {
113
124
 
114
125
  exports.DroppablePlaceHolder = DroppablePlaceHolder;
115
126
  (0, _defineProperty2["default"])(DroppablePlaceHolder, "propTypes", {
127
+ alternateResponseIndex: _propTypes["default"].number,
128
+ category: _propTypes["default"].object,
116
129
  classes: _propTypes["default"].object.isRequired,
117
130
  className: _propTypes["default"].string,
118
131
  connectDropTarget: _propTypes["default"].func.isRequired,
119
132
  choices: _propTypes["default"].array,
120
133
  onDropChoice: _propTypes["default"].func.isRequired,
134
+ onMoveChoice: _propTypes["default"].func,
121
135
  isOver: _propTypes["default"].bool,
122
136
  onDeleteChoice: _propTypes["default"].func,
123
137
  categoryId: _propTypes["default"].string.isRequired
@@ -142,7 +156,12 @@ var spec = {
142
156
  drop: function drop(props, monitor) {
143
157
  log('[drop] props: ', props);
144
158
  var item = monitor.getItem();
145
- props.onDropChoice(item, props.categoryId);
159
+
160
+ if (item.from && item.alternateResponseIndex === props.alternateResponseIndex) {
161
+ props.onMoveChoice(item.choiceId, item.from, props.categoryId, item.choiceIndex, item.alternateResponseIndex);
162
+ } else {
163
+ props.onDropChoice(item, props.categoryId);
164
+ }
146
165
  },
147
166
  canDrop: function canDrop(props
148
167
  /*, monitor*/
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/droppable-placeholder.jsx"],"names":["log","Helper","helper","display","alignItems","fontSize","color","width","height","classes","Previews","choices","onDeleteChoice","map","c","index","choice","propTypes","PropTypes","array","func","DroppablePlaceHolder","props","isOver","className","connectDropTarget","droppablePlaceholder","placeHolder","length","React","Component","object","isRequired","string","onDropChoice","bool","categoryId","styles","minHeight","Styled","spec","drop","monitor","item","getItem","canDrop","disabled","WithTarget","uid","connect","dropTarget","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 ChoicePreview from './choice-preview';\nimport { DropTarget } from 'react-dnd';\nimport { uid, PlaceHolder } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:categorize:configure');\n\nconst Helper = withStyles(() => ({\n helper: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n color: 'rgba(0,0,0,0.4)',\n width: '100%',\n height: '100%',\n },\n}))(({ classes }) => <div className={classes.helper}>Drag your correct answers here</div>);\n\nconst Previews = ({ choices, onDeleteChoice }) => (\n <React.Fragment>\n {choices.map(\n (c, index) => c && <ChoicePreview choice={c} key={index} onDelete={(choice) => onDeleteChoice(choice, index)} />,\n )}\n </React.Fragment>\n);\n\nPreviews.propTypes = {\n choices: PropTypes.array,\n onDeleteChoice: PropTypes.func,\n};\n\nexport class DroppablePlaceHolder extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n connectDropTarget: PropTypes.func.isRequired,\n choices: PropTypes.array,\n onDropChoice: PropTypes.func.isRequired,\n isOver: PropTypes.bool,\n onDeleteChoice: PropTypes.func,\n categoryId: PropTypes.string.isRequired,\n };\n\n static defaultProps = {};\n render() {\n const { isOver, choices, classes, className, connectDropTarget, onDeleteChoice } = this.props;\n\n return connectDropTarget(\n <div className={classNames(classes.droppablePlaceholder, className)}>\n <PlaceHolder isOver={isOver} className={classes.placeHolder}>\n {(choices || []).length === 0 ? <Helper /> : <Previews choices={choices} onDeleteChoice={onDeleteChoice} />}\n </PlaceHolder>\n </div>,\n );\n }\n}\nconst styles = () => ({\n droppablePlaceholder: {\n minHeight: '100px',\n },\n placeHolder: {\n width: '100%',\n minHeight: '100px',\n height: 'auto',\n },\n});\n\nconst Styled = withStyles(styles)(DroppablePlaceHolder);\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.onDropChoice(item, props.categoryId);\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(Styled);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/droppable-placeholder.jsx"],"names":["log","Helper","helper","display","alignItems","fontSize","color","width","height","classes","Previews","alternateResponseIndex","category","choices","onDeleteChoice","map","c","index","choice","propTypes","PropTypes","number","object","array","func","DroppablePlaceHolder","props","isOver","className","connectDropTarget","droppablePlaceholder","placeHolder","length","React","Component","isRequired","string","onDropChoice","onMoveChoice","bool","categoryId","styles","minHeight","Styled","spec","drop","monitor","item","getItem","from","choiceId","choiceIndex","canDrop","disabled","WithTarget","uid","connect","dropTarget","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 ChoicePreview from './choice-preview';\nimport { DropTarget } from 'react-dnd';\nimport { uid, PlaceHolder } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:categorize:configure');\n\nconst Helper = withStyles(() => ({\n helper: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n color: 'rgba(0,0,0,0.4)',\n width: '100%',\n height: '100%',\n },\n}))(({ classes }) => <div className={classes.helper}>Drag your correct answers here</div>);\n\nconst Previews = ({ alternateResponseIndex, category, choices, onDeleteChoice }) => (\n <React.Fragment>\n {choices.map(\n (c, index) =>\n c && (\n <ChoicePreview\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={c}\n key={index}\n choiceIndex={index}\n onDelete={(choice) => onDeleteChoice(choice, index)}\n />\n ),\n )}\n </React.Fragment>\n);\n\nPreviews.propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n choices: PropTypes.array,\n onDeleteChoice: PropTypes.func,\n};\n\nexport class DroppablePlaceHolder extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n connectDropTarget: PropTypes.func.isRequired,\n choices: PropTypes.array,\n onDropChoice: PropTypes.func.isRequired,\n onMoveChoice: PropTypes.func,\n isOver: PropTypes.bool,\n onDeleteChoice: PropTypes.func,\n categoryId: PropTypes.string.isRequired,\n };\n\n static defaultProps = {};\n render() {\n const { alternateResponseIndex, isOver, category, choices, classes, className, connectDropTarget, onDeleteChoice } =\n this.props;\n\n return connectDropTarget(\n <div className={classNames(classes.droppablePlaceholder, className)}>\n <PlaceHolder isOver={isOver} className={classes.placeHolder}>\n {(choices || []).length === 0 ? (\n <Helper />\n ) : (\n <Previews\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={choices}\n onDeleteChoice={onDeleteChoice}\n />\n )}\n </PlaceHolder>\n </div>,\n );\n }\n}\nconst styles = () => ({\n droppablePlaceholder: {\n minHeight: '100px',\n },\n placeHolder: {\n width: '100%',\n minHeight: '100px',\n height: 'auto',\n },\n});\n\nconst Styled = withStyles(styles)(DroppablePlaceHolder);\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n\n if (item.from && item.alternateResponseIndex === props.alternateResponseIndex) {\n props.onMoveChoice(item.choiceId, item.from, props.categoryId, item.choiceIndex, item.alternateResponseIndex);\n } else {\n props.onDropChoice(item, props.categoryId);\n }\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(Styled);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
@@ -229,6 +229,34 @@ var Categories = /*#__PURE__*/function (_React$Component) {
229
229
  correctResponse: correctResponse
230
230
  });
231
231
  });
232
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "moveChoice", function (choiceId, from, to, choiceIndex) {
233
+ var _this$props5 = _this.props,
234
+ model = _this$props5.model,
235
+ onModelChanged = _this$props5.onModelChanged;
236
+
237
+ var _ref2 = model || {},
238
+ choices = _ref2.choices,
239
+ _ref2$correctResponse = _ref2.correctResponse,
240
+ correctResponse = _ref2$correctResponse === void 0 ? [] : _ref2$correctResponse;
241
+
242
+ var choice = (choices || []).find(function (choice) {
243
+ return choice.id === choiceId;
244
+ });
245
+
246
+ if (to === from || !choice) {
247
+ return;
248
+ }
249
+
250
+ if (choice.categoryCount !== 0) {
251
+ correctResponse = (0, _categorize.moveChoiceToCategory)(choice.id, from, to, choiceIndex, correctResponse);
252
+ } else if (choice.categoryCount === 0) {
253
+ correctResponse = (0, _categorize.moveChoiceToCategory)(choice.id, undefined, to, 0, correctResponse);
254
+ }
255
+
256
+ onModelChanged({
257
+ correctResponse: correctResponse
258
+ });
259
+ });
232
260
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeRowLabel", function (val, index) {
233
261
  var model = _this.props.model;
234
262
  var rowLabels = model.rowLabels;
@@ -252,33 +280,33 @@ var Categories = /*#__PURE__*/function (_React$Component) {
252
280
  value: function render() {
253
281
  var _this2 = this;
254
282
 
255
- var _this$props5 = this.props,
256
- model = _this$props5.model,
257
- classes = _this$props5.classes,
258
- className = _this$props5.className,
259
- categories = _this$props5.categories,
260
- imageSupport = _this$props5.imageSupport,
261
- uploadSoundSupport = _this$props5.uploadSoundSupport,
262
- toolbarOpts = _this$props5.toolbarOpts,
263
- spellCheck = _this$props5.spellCheck,
264
- configuration = _this$props5.configuration,
265
- defaultImageMaxHeight = _this$props5.defaultImageMaxHeight,
266
- defaultImageMaxWidth = _this$props5.defaultImageMaxWidth;
283
+ var _this$props6 = this.props,
284
+ model = _this$props6.model,
285
+ classes = _this$props6.classes,
286
+ className = _this$props6.className,
287
+ categories = _this$props6.categories,
288
+ imageSupport = _this$props6.imageSupport,
289
+ uploadSoundSupport = _this$props6.uploadSoundSupport,
290
+ toolbarOpts = _this$props6.toolbarOpts,
291
+ spellCheck = _this$props6.spellCheck,
292
+ configuration = _this$props6.configuration,
293
+ defaultImageMaxHeight = _this$props6.defaultImageMaxHeight,
294
+ defaultImageMaxWidth = _this$props6.defaultImageMaxWidth;
267
295
  var categoriesPerRow = model.categoriesPerRow,
268
296
  rowLabels = model.rowLabels,
269
297
  errors = model.errors;
270
298
 
271
- var _ref2 = errors || {},
272
- associationError = _ref2.associationError,
273
- categoriesError = _ref2.categoriesError,
274
- categoriesErrors = _ref2.categoriesErrors;
299
+ var _ref3 = errors || {},
300
+ associationError = _ref3.associationError,
301
+ categoriesError = _ref3.categoriesError,
302
+ categoriesErrors = _ref3.categoriesErrors;
275
303
 
276
- var _ref3 = configuration || {},
277
- maxCategories = _ref3.maxCategories,
278
- _ref3$maxImageWidth = _ref3.maxImageWidth,
279
- maxImageWidth = _ref3$maxImageWidth === void 0 ? {} : _ref3$maxImageWidth,
280
- _ref3$maxImageHeight = _ref3.maxImageHeight,
281
- maxImageHeight = _ref3$maxImageHeight === void 0 ? {} : _ref3$maxImageHeight;
304
+ var _ref4 = configuration || {},
305
+ maxCategories = _ref4.maxCategories,
306
+ _ref4$maxImageWidth = _ref4.maxImageWidth,
307
+ maxImageWidth = _ref4$maxImageWidth === void 0 ? {} : _ref4$maxImageWidth,
308
+ _ref4$maxImageHeight = _ref4.maxImageHeight,
309
+ maxImageHeight = _ref4$maxImageHeight === void 0 ? {} : _ref4$maxImageHeight;
282
310
 
283
311
  var holderStyle = {
284
312
  gridTemplateColumns: "repeat(".concat(categoriesPerRow, ", 1fr)")
@@ -343,6 +371,9 @@ var Categories = /*#__PURE__*/function (_React$Component) {
343
371
  return _this2["delete"](category);
344
372
  },
345
373
  onAddChoice: _this2.addChoiceToCategory,
374
+ onMoveChoice: function onMoveChoice(choiceId, from, to, choiceIndex) {
375
+ return _this2.moveChoice(choiceId, from, to, choiceIndex);
376
+ },
346
377
  toolbarOpts: toolbarOpts,
347
378
  spellCheck: spellCheck,
348
379
  onDeleteChoice: function onDeleteChoice(choice, choiceIndex) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","whiteSpace","maxWidth","errorText","color","padding","RowLabel","categoriesPerRow","classes","markup","imageSupport","onChange","toolbarOpts","spellCheck","maxImageWidth","maxImageHeight","uploadSoundSupport","text","language","Categories","focusedEl","props","model","oldCategories","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","index","findIndex","splice","correctResponse","c","choice","categoryId","undefined","choiceIndex","val","newRowLabels","className","configuration","defaultImageMaxHeight","defaultImageMaxWidth","errors","associationError","categoriesError","categoriesErrors","maxCategories","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","shape","func","isRequired","object","string","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { moveChoiceToCategory, removeCategory, removeChoiceFromCategory } from '@pie-lib/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\n },\n});\n\nconst RowLabel = withStyles(styles)(\n ({\n categoriesPerRow,\n classes,\n markup,\n imageSupport,\n onChange,\n toolbarOpts,\n spellCheck,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n }) => {\n return (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n >\n <Typography className={classes.text}>Row Label</Typography>\n <EditableHtml\n className={classes.rowLabelHolder}\n markup={markup}\n onChange={onChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </div>\n );\n },\n);\n\nexport class Categories extends React.Component {\n static propTypes = {\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 classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n };\n\n state = {\n focusedEl: null,\n };\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow } = model;\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 0,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n });\n }\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (choice, categoryId) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = moveChoiceToCategory(choice.id, undefined, categoryId, 0, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const {\n maxCategories,\n maxImageWidth = {},\n maxImageHeight = {},\n } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n )}\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","whiteSpace","maxWidth","errorText","color","padding","RowLabel","categoriesPerRow","classes","markup","imageSupport","onChange","toolbarOpts","spellCheck","maxImageWidth","maxImageHeight","uploadSoundSupport","text","language","Categories","focusedEl","props","model","oldCategories","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","index","findIndex","splice","correctResponse","c","choice","categoryId","undefined","choiceIndex","choiceId","from","to","choices","find","categoryCount","val","newRowLabels","className","configuration","defaultImageMaxHeight","defaultImageMaxWidth","errors","associationError","categoriesError","categoriesErrors","maxCategories","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","shape","func","isRequired","object","string","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n moveChoiceToAlternate,\n moveChoiceToCategory,\n removeCategory,\n removeChoiceFromCategory,\n} from '@pie-lib/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\n },\n});\n\nconst RowLabel = withStyles(styles)(\n ({\n categoriesPerRow,\n classes,\n markup,\n imageSupport,\n onChange,\n toolbarOpts,\n spellCheck,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n }) => {\n return (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n >\n <Typography className={classes.text}>Row Label</Typography>\n <EditableHtml\n className={classes.rowLabelHolder}\n markup={markup}\n onChange={onChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </div>\n );\n },\n);\n\nexport class Categories extends React.Component {\n static propTypes = {\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 classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n };\n\n state = {\n focusedEl: null,\n };\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow } = model;\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 0,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n });\n }\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (choice, categoryId) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = moveChoiceToCategory(choice.id, undefined, categoryId, 0, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [] } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n if (to === from || !choice) {\n return;\n }\n if (choice.categoryCount !== 0) {\n correctResponse = moveChoiceToCategory(choice.id, from, to, choiceIndex, correctResponse);\n } else if (choice.categoryCount === 0) {\n correctResponse = moveChoiceToCategory(choice.id, undefined, to, 0, correctResponse);\n }\n onModelChanged({ correctResponse });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const { maxCategories, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n )}\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n onMoveChoice={(choiceId, from, to, choiceIndex) => this.moveChoice(choiceId, from, to, choiceIndex)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/design/index.jsx"],"names":["dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","correctResponse","choices","categories","map","c","id","label","h","content","categoryCount","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","generateId","classes","className","imageSupport","uploadSoundSupport","configuration","onConfigurationChanged","partialScoring","lockChoiceOrder","categoriesPerRow","choicesPosition","studentInstructions","scoringType","spellCheck","maxImageWidth","maxImageHeight","withRubric","minCategoriesPerRow","allowMultiplePlacementsEnabled","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","feedbackEnabled","spellCheckEnabled","rubricEnabled","toolbarOpts","toolbarEditorPosition","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","checkAllowMultiplePlacements","defaultImageMaxWidth","defaultImageMaxHeight","Settings","min","max","perChoice","Properties","studentInstructionsEnabled","design","promptHolder","onPromptChanged","language","inputHolder","input","changeTeacherInstructions","changeRationale","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeFeedback","React","Component","PropTypes","object","isRequired","string","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","text","width","marginBottom","maxWidth","title"],"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 {\n FeedbackConfig,\n InputContainer,\n layout,\n settings,\n} from '@pie-lib/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n} from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { uid, withDragContext } from '@pie-lib/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { Divider } from './buttons';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { multiplePlacements } from '../utils';\n\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\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 };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n onChange(updatedModel);\n };\n\n changeRationale = (rationale) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n rationale,\n });\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n teacherInstructions,\n });\n };\n\n changeFeedback = (feedback) => {\n this.updateModel({ feedback });\n };\n\n onAddAlternateResponse = () => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: [...(cr.alternateResponses || []), []],\n })),\n });\n };\n\n onPromptChanged = (prompt) => this.updateModel({ prompt });\n\n onRemoveAlternateResponse = (index) => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: (cr.alternateResponses || []).filter(\n (alt, altIndex) => altIndex !== index\n ),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n checkAllowMultiplePlacements = (allowMultiplePlacements, c) => {\n if (allowMultiplePlacements === multiplePlacements.enabled) {\n return 0;\n }\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n return c.categoryCount || 0;\n\n };\n\n render() {\n const {\n classes,\n className,\n model,\n imageSupport,\n uploadSoundSupport,\n configuration,\n onChange,\n onConfigurationChanged,\n } = this.props;\n const {\n allowMultiplePlacements = {},\n partialScoring = {},\n lockChoiceOrder = {},\n categoriesPerRow = {},\n choicesPosition = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n scoringType = {},\n feedback = {},\n prompt = {},\n spellCheck = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n minCategoriesPerRow = 1,\n } = configuration || {};\n const {\n allowMultiplePlacementsEnabled,\n teacherInstructionsEnabled,\n promptEnabled,\n rationaleEnabled,\n feedbackEnabled,\n spellCheckEnabled,\n rubricEnabled\n } = model || {};\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(\n model.categories || [],\n model.choices || [],\n model.correctResponse || []\n );\n\n const alternateResponses = buildAlternateResponses(\n model.categories || [],\n model.choices || [],\n model.correctResponse || []\n );\n\n const choices = model.choices.map((c) => {\n c.correctResponseCount = this.countChoiceInCorrectResponse(c);\n c.categoryCount = this.checkAllowMultiplePlacements(allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={onChange}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n categoriesPerRow: categoriesPerRow.settings && numberField(categoriesPerRow.label,\n {\n label: categoriesPerRow.label,\n min: minCategoriesPerRow,\n max: 6,\n }),\n choicesPosition:\n choicesPosition.settings &&\n radio(choicesPosition.label, ['below', 'above','left','right']),\n allowMultiplePlacementsEnabled:\n allowMultiplePlacements.settings &&\n dropdown(allowMultiplePlacements.label, [\n multiplePlacements.enabled,\n multiplePlacements.disabled,\n multiplePlacements.perChoice,\n ], ),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label)\n },\n }}\n />\n }\n >\n <div className={classNames(classes.design, className)}>\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.inputHolder}\n >\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.inputHolder}\n >\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n\n {alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n\n <Divider />\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {feedbackEnabled && (\n <FeedbackConfig\n feedback={model.feedback}\n onChange={this.changeFeedback}\n toolbarOpts={toolbarOpts}\n />\n )}\n </div>\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n design: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n },\n inputHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n input: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px',\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: '30px',\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/design/index.jsx"],"names":["dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","correctResponse","choices","categories","map","c","id","label","h","content","categoryCount","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","generateId","classes","className","imageSupport","uploadSoundSupport","configuration","onConfigurationChanged","partialScoring","lockChoiceOrder","categoriesPerRow","choicesPosition","studentInstructions","scoringType","spellCheck","maxImageWidth","maxImageHeight","withRubric","minCategoriesPerRow","allowMultiplePlacementsEnabled","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","feedbackEnabled","spellCheckEnabled","rubricEnabled","toolbarOpts","toolbarEditorPosition","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","checkAllowMultiplePlacements","defaultImageMaxWidth","defaultImageMaxHeight","Settings","min","max","perChoice","Properties","studentInstructionsEnabled","design","promptHolder","onPromptChanged","language","inputHolder","input","changeTeacherInstructions","changeRationale","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeFeedback","React","Component","PropTypes","object","isRequired","string","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","text","width","marginBottom","maxWidth","title"],"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 { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { countInAnswer, ensureNoExtraChoicesInAnswer } from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { uid, withDragContext } from '@pie-lib/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { Divider } from './buttons';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { multiplePlacements } from '../utils';\n\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\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 };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n onChange(updatedModel);\n };\n\n changeRationale = (rationale) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n rationale,\n });\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n teacherInstructions,\n });\n };\n\n changeFeedback = (feedback) => {\n this.updateModel({ feedback });\n };\n\n onAddAlternateResponse = () => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: [...(cr.alternateResponses || []), []],\n })),\n });\n };\n\n onPromptChanged = (prompt) => this.updateModel({ prompt });\n\n onRemoveAlternateResponse = (index) => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: (cr.alternateResponses || []).filter((alt, altIndex) => altIndex !== index),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n checkAllowMultiplePlacements = (allowMultiplePlacements, c) => {\n if (allowMultiplePlacements === multiplePlacements.enabled) {\n return 0;\n }\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n return c.categoryCount || 0;\n };\n\n render() {\n const {\n classes,\n className,\n model,\n imageSupport,\n uploadSoundSupport,\n configuration,\n onChange,\n onConfigurationChanged,\n } = this.props;\n const {\n allowMultiplePlacements = {},\n partialScoring = {},\n lockChoiceOrder = {},\n categoriesPerRow = {},\n choicesPosition = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n scoringType = {},\n feedback = {},\n prompt = {},\n spellCheck = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n minCategoriesPerRow = 1,\n } = configuration || {};\n const {\n allowMultiplePlacementsEnabled,\n teacherInstructionsEnabled,\n promptEnabled,\n rationaleEnabled,\n feedbackEnabled,\n spellCheckEnabled,\n rubricEnabled,\n } = model || {};\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(model.categories || [], model.choices || [], model.correctResponse || []);\n\n const alternateResponses = buildAlternateResponses(\n model.categories || [],\n model.choices || [],\n model.correctResponse || [],\n );\n\n const choices = model.choices.map((c) => {\n c.correctResponseCount = this.countChoiceInCorrectResponse(c);\n c.categoryCount = this.checkAllowMultiplePlacements(allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={onChange}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n categoriesPerRow:\n categoriesPerRow.settings &&\n numberField(categoriesPerRow.label, {\n label: categoriesPerRow.label,\n min: minCategoriesPerRow,\n max: 6,\n }),\n choicesPosition:\n choicesPosition.settings && radio(choicesPosition.label, ['below', 'above', 'left', 'right']),\n allowMultiplePlacementsEnabled:\n allowMultiplePlacements.settings &&\n dropdown(allowMultiplePlacements.label, [\n multiplePlacements.enabled,\n multiplePlacements.disabled,\n multiplePlacements.perChoice,\n ]),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n },\n Properties: {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n },\n }}\n />\n }\n >\n <div className={classNames(classes.design, className)}>\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputHolder}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputHolder}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n\n {alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n\n <Divider />\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </div>\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n design: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n },\n inputHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n input: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px',\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: '30px',\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
@@ -78,11 +78,6 @@
78
78
  "type": "boolean",
79
79
  "title": "promptEnabled"
80
80
  },
81
- "removeTilesAfterPlacing": {
82
- "description": "Indicates if the choice, after it is dragged into a category, should be removed from the choices\narea or should remain in place.",
83
- "type": "boolean",
84
- "title": "removeTilesAfterPlacing"
85
- },
86
81
  "categories": {
87
82
  "description": "The categories in which choices may be placed",
88
83
  "type": "array",
@@ -53,11 +53,6 @@ The question prompt or item stem
53
53
 
54
54
  Indicates if the prompt is enabled
55
55
 
56
- # `removeTilesAfterPlacing` (boolean)
57
-
58
- Indicates if the choice, after it is dragged into a category, should be removed from the choices
59
- area or should remain in place.
60
-
61
56
  # `categories` (array, required)
62
57
 
63
58
  The categories in which choices may be placed
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "7.4.1-next.22+9551ca5d5",
7
+ "version": "7.4.1-next.33+1dcebbfd6",
8
8
  "description": "",
9
9
  "author": "pie framework developers",
10
10
  "license": "ISC",
@@ -24,7 +24,7 @@
24
24
  "react-dnd": "^14.0.5",
25
25
  "react-dom": "^16.8.1"
26
26
  },
27
- "gitHead": "9551ca5d557431c9d9ef83d4e3565d084e4b6c63",
27
+ "gitHead": "1dcebbfd6dd35d76e87027be758d7b596af353e1",
28
28
  "scripts": {
29
29
  "postpublish": "../../scripts/postpublish"
30
30
  },