@pie-element/categorize 9.13.10-next.6 → 9.13.10-next.8
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.
- package/configure/lib/design/buttons.js +1 -15
- package/configure/lib/design/buttons.js.map +1 -1
- package/configure/lib/design/categories/alternateResponses.js +1 -18
- package/configure/lib/design/categories/alternateResponses.js.map +1 -1
- package/configure/lib/design/choices/choice.js +0 -2
- package/configure/lib/design/choices/choice.js.map +1 -1
- package/configure/lib/design/choices/index.js +1 -3
- package/configure/lib/design/choices/index.js.map +1 -1
- package/configure/lib/design/index.js +0 -4
- package/configure/lib/design/index.js.map +1 -1
- package/controller/lib/index.js +19 -41
- package/controller/lib/index.js.map +1 -1
- package/lib/categorize/categories.js +6 -5
- package/lib/categorize/categories.js.map +1 -1
- package/package.json +2 -2
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.RawAddButton = exports.
|
|
8
|
+
exports.RawAddButton = exports.DeleteButton = exports.AddButton = void 0;
|
|
9
9
|
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
11
|
|
|
@@ -110,18 +110,4 @@ var DeleteButton = (0, _styles.withStyles)(function () {
|
|
|
110
110
|
}, label);
|
|
111
111
|
});
|
|
112
112
|
exports.DeleteButton = DeleteButton;
|
|
113
|
-
var Divider = (0, _styles.withStyles)(function (theme) {
|
|
114
|
-
return {
|
|
115
|
-
divider: {
|
|
116
|
-
marginTop: 2 * theme.spacing.unit,
|
|
117
|
-
marginBottom: 2 * theme.spacing.unit
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
})(function (_ref2) {
|
|
121
|
-
var classes = _ref2.classes;
|
|
122
|
-
return /*#__PURE__*/_react["default"].createElement(_Divider["default"], {
|
|
123
|
-
className: classes.divider
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
exports.Divider = Divider;
|
|
127
113
|
//# sourceMappingURL=buttons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/buttons.jsx"],"names":["RawAddButton","props","classes","className","label","onClick","disabled","addButton","React","Component","PropTypes","object","isRequired","string","func","bool","styles","theme","height","spacing","unit","AddButton","DeleteButton","deleteButton","margin","padding"
|
|
1
|
+
{"version":3,"sources":["../../src/design/buttons.jsx"],"names":["RawAddButton","props","classes","className","label","onClick","disabled","addButton","React","Component","PropTypes","object","isRequired","string","func","bool","styles","theme","height","spacing","unit","AddButton","DeleteButton","deleteButton","margin","padding"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,Y;;;;;;;;;;;;WAaX,kBAAS;AACP,wBAAyD,KAAKC,KAA9D;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,KAA5B,eAA4BA,KAA5B;AAAA,UAAmCC,OAAnC,eAAmCA,OAAnC;AAAA,UAA4CC,QAA5C,eAA4CA,QAA5C;AACA,0BACE,gCAAC,kBAAD;AACE,QAAA,OAAO,EAAED,OADX;AAEE,QAAA,QAAQ,EAAEC,QAFZ;AAGE,QAAA,SAAS,EAAE,4BAAWJ,OAAO,CAACK,SAAnB,EAA8BJ,SAA9B,CAHb;AAIE,QAAA,IAAI,EAAC,OAJP;AAKE,QAAA,OAAO,EAAC,WALV;AAME,QAAA,KAAK,EAAC;AANR,SAQGC,KARH,CADF;AAYD;;;EA3B+BI,kBAAMC,S;;;iCAA3BT,Y,eACQ;AACjBE,EAAAA,OAAO,EAAEQ,sBAAUC,MAAV,CAAiBC,UADT;AAEjBT,EAAAA,SAAS,EAAEO,sBAAUG,MAFJ;AAGjBT,EAAAA,KAAK,EAAEM,sBAAUG,MAHA;AAIjBR,EAAAA,OAAO,EAAEK,sBAAUI,IAJF;AAKjBR,EAAAA,QAAQ,EAAEI,sBAAUK;AALH,C;iCADRf,Y,kBASW;AACpBI,EAAAA,KAAK,EAAE;AADa,C;;AAoBxB,IAAMY,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBV,IAAAA,SAAS,EAAE;AACTW,MAAAA,MAAM,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AADpB;AADc,GAAZ;AAAA,CAAf;;AAMA,IAAMC,SAAS,GAAG,wBAAWL,MAAX,EAAmBhB,YAAnB,CAAlB;;AAEA,IAAMsB,YAAY,GAAG,wBAAW;AAAA,SAAO;AACrCC,IAAAA,YAAY,EAAE;AACZC,MAAAA,MAAM,EAAE,CADI;AAEZC,MAAAA,OAAO,EAAE;AAFG;AADuB,GAAP;AAAA,CAAX,EAKjB;AAAA,MAAGvB,OAAH,QAAGA,OAAH;AAAA,MAAYE,KAAZ,QAAYA,KAAZ;AAAA,MAAmBC,OAAnB,QAAmBA,OAAnB;AAAA,MAA4BC,QAA5B,QAA4BA,QAA5B;AAAA,sBACF,gCAAC,kBAAD;AAAQ,IAAA,SAAS,EAAEJ,OAAO,CAACqB,YAA3B;AAAyC,IAAA,OAAO,EAAElB,OAAlD;AAA2D,IAAA,IAAI,EAAC,OAAhE;AAAwE,IAAA,KAAK,EAAC,SAA9E;AAAwF,IAAA,QAAQ,EAAEC;AAAlG,KACGF,KADH,CADE;AAAA,CALiB,CAArB","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Button from '@material-ui/core/Button';\nimport MuiDivider from '@material-ui/core/Divider';\n\nexport class RawAddButton extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func,\n disabled: PropTypes.bool,\n };\n\n static defaultProps = {\n label: 'Add',\n };\n\n render() {\n const { classes, className, label, onClick, disabled } = this.props;\n return (\n <Button\n onClick={onClick}\n disabled={disabled}\n className={classNames(classes.addButton, className)}\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n >\n {label}\n </Button>\n );\n }\n}\nconst styles = (theme) => ({\n addButton: {\n height: theme.spacing.unit * 4,\n },\n});\n\nconst AddButton = withStyles(styles)(RawAddButton);\n\nconst DeleteButton = withStyles(() => ({\n deleteButton: {\n margin: 0,\n padding: 0,\n },\n}))(({ classes, label, onClick, disabled }) => (\n <Button className={classes.deleteButton} onClick={onClick} size=\"small\" color=\"primary\" disabled={disabled}>\n {label}\n </Button>\n));\n\nexport { AddButton, DeleteButton };\n"],"file":"buttons.js"}
|
|
@@ -29,11 +29,9 @@ var _styles = require("@material-ui/core/styles");
|
|
|
29
29
|
|
|
30
30
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
31
31
|
|
|
32
|
-
var _category = _interopRequireDefault(require("./category"));
|
|
33
|
-
|
|
34
32
|
var _categorize = require("@pie-lib/pie-toolbox/categorize");
|
|
35
33
|
|
|
36
|
-
var
|
|
34
|
+
var _category = _interopRequireDefault(require("./category"));
|
|
37
35
|
|
|
38
36
|
var _utils = require("../../utils");
|
|
39
37
|
|
|
@@ -62,9 +60,6 @@ var styles = function styles(theme) {
|
|
|
62
60
|
},
|
|
63
61
|
rowLabel: {
|
|
64
62
|
gridColumn: '1/3'
|
|
65
|
-
},
|
|
66
|
-
rowLabelHolder: {
|
|
67
|
-
width: '100%'
|
|
68
63
|
}
|
|
69
64
|
};
|
|
70
65
|
};
|
|
@@ -194,9 +189,6 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
|
|
|
194
189
|
imageSupport = _this$props4.imageSupport,
|
|
195
190
|
spellCheck = _this$props4.spellCheck,
|
|
196
191
|
uploadSoundSupport = _this$props4.uploadSoundSupport,
|
|
197
|
-
toolbarOpts = _this$props4.toolbarOpts,
|
|
198
|
-
defaultImageMaxHeight = _this$props4.defaultImageMaxHeight,
|
|
199
|
-
defaultImageMaxWidth = _this$props4.defaultImageMaxWidth,
|
|
200
192
|
_this$props4$mathMlOp = _this$props4.mathMlOptions,
|
|
201
193
|
mathMlOptions = _this$props4$mathMlOp === void 0 ? {} : _this$props4$mathMlOp;
|
|
202
194
|
var categoriesPerRow = model.categoriesPerRow,
|
|
@@ -206,12 +198,6 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
|
|
|
206
198
|
var _ref2 = errors || {},
|
|
207
199
|
duplicateAlternate = _ref2.duplicateAlternate;
|
|
208
200
|
|
|
209
|
-
var _ref3 = configuration || {},
|
|
210
|
-
_ref3$maxImageWidth = _ref3.maxImageWidth,
|
|
211
|
-
maxImageWidth = _ref3$maxImageWidth === void 0 ? {} : _ref3$maxImageWidth,
|
|
212
|
-
_ref3$maxImageHeight = _ref3.maxImageHeight,
|
|
213
|
-
maxImageHeight = _ref3$maxImageHeight === void 0 ? {} : _ref3$maxImageHeight;
|
|
214
|
-
|
|
215
201
|
var holderStyle = {
|
|
216
202
|
gridTemplateColumns: "repeat(".concat(categoriesPerRow, ", 1fr)")
|
|
217
203
|
};
|
|
@@ -270,15 +256,12 @@ exports.AlternateResponses = AlternateResponses;
|
|
|
270
256
|
classes: _propTypes["default"].object.isRequired,
|
|
271
257
|
className: _propTypes["default"].string,
|
|
272
258
|
categories: _propTypes["default"].array,
|
|
273
|
-
defaultImageMaxHeight: _propTypes["default"].number,
|
|
274
|
-
defaultImageMaxWidth: _propTypes["default"].number,
|
|
275
259
|
onModelChanged: _propTypes["default"].func,
|
|
276
260
|
model: _propTypes["default"].object.isRequired,
|
|
277
261
|
uploadSoundSupport: _propTypes["default"].shape({
|
|
278
262
|
add: _propTypes["default"].func.isRequired,
|
|
279
263
|
"delete": _propTypes["default"].func.isRequired
|
|
280
264
|
}),
|
|
281
|
-
toolbarOpts: _propTypes["default"].object,
|
|
282
265
|
spellCheck: _propTypes["default"].bool
|
|
283
266
|
});
|
|
284
267
|
|
|
@@ -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","addedChoice","categoryId","props","altIndex","model","correctResponse","choices","maxChoicesPerCategory","onModelChanged","choice","find","c","id","forEach","a","category","alternateResponses","push","categoryCount","reduce","acc","currentValue","foundIndex","findIndex","filter","maxCategoryChoices","choiceId","from","to","choiceIndex","alternateIndex","configuration","classes","className","imageSupport","spellCheck","uploadSoundSupport","toolbarOpts","defaultImageMaxHeight","defaultImageMaxWidth","mathMlOptions","categoriesPerRow","errors","rowLabels","duplicateAlternate","maxImageWidth","maxImageHeight","holderStyle","isDuplicated","index","map","hasRowLabel","rowIndex","__html","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","object","shape","add","func","string","array","bool"],"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, removeChoiceFromAlternate } from '@pie-lib/pie-toolbox/categorize';\nimport { RowLabel } from './RowLabel';\nimport { getMaxCategoryChoices } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 2.5,\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 configuration: PropTypes.object,\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 defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\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 toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse, choices, maxChoicesPerCategory = 0 },\n onModelChanged,\n } = this.props;\n\n const choice = choices.find((c) => c.id === addedChoice.id);\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(addedChoice.id);\n if (choice.categoryCount && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce((acc, currentValue) => {\n if (currentValue === choice.id) {\n const foundIndex = acc.findIndex((c) => c === choice.id);\n if (foundIndex === -1) {\n acc.push(currentValue);\n }\n } else {\n acc.push(currentValue);\n }\n\n return acc;\n }, []);\n }\n\n return a;\n } else {\n if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((c) => c !== addedChoice.id);\n return a;\n }\n }\n\n return a;\n });\n\n const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = 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 const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, altIndex, onModelChanged } = this.props;\n\n const correctResponse = removeChoiceFromAlternate(\n choice.id,\n category.id,\n choiceIndex,\n altIndex,\n model.correctResponse,\n );\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const {\n altIndex,\n model,\n configuration,\n classes,\n className,\n categories,\n imageSupport,\n spellCheck,\n uploadSoundSupport,\n toolbarOpts,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n mathMlOptions = {},\n } = this.props;\n const { categoriesPerRow, errors, rowLabels } = model;\n const { duplicateAlternate } = errors || {};\n const { maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\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 const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n className={classes.rowLabel}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n ></div>\n )}\n\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 mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n </React.Fragment>\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","AlternateResponses","addedChoice","categoryId","props","altIndex","model","correctResponse","choices","maxChoicesPerCategory","onModelChanged","choice","find","c","id","forEach","a","category","alternateResponses","push","categoryCount","reduce","acc","currentValue","foundIndex","findIndex","filter","maxCategoryChoices","choiceId","from","to","choiceIndex","alternateIndex","configuration","classes","className","imageSupport","spellCheck","uploadSoundSupport","mathMlOptions","categoriesPerRow","errors","rowLabels","duplicateAlternate","holderStyle","isDuplicated","index","map","hasRowLabel","rowIndex","__html","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","object","shape","add","func","string","array","bool"],"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 { moveChoiceToAlternate, removeChoiceFromAlternate } from '@pie-lib/pie-toolbox/categorize';\n\nimport Category from './category';\nimport { getMaxCategoryChoices } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 2.5,\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});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n configuration: PropTypes.object,\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 spellCheck: PropTypes.bool,\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse, choices, maxChoicesPerCategory = 0 },\n onModelChanged,\n } = this.props;\n\n const choice = choices.find((c) => c.id === addedChoice.id);\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(addedChoice.id);\n if (choice.categoryCount && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce((acc, currentValue) => {\n if (currentValue === choice.id) {\n const foundIndex = acc.findIndex((c) => c === choice.id);\n if (foundIndex === -1) {\n acc.push(currentValue);\n }\n } else {\n acc.push(currentValue);\n }\n\n return acc;\n }, []);\n }\n\n return a;\n } else {\n if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((c) => c !== addedChoice.id);\n return a;\n }\n }\n\n return a;\n });\n\n const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = 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 const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, altIndex, onModelChanged } = this.props;\n\n const correctResponse = removeChoiceFromAlternate(\n choice.id,\n category.id,\n choiceIndex,\n altIndex,\n model.correctResponse,\n );\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const {\n altIndex,\n model,\n configuration,\n classes,\n className,\n categories,\n imageSupport,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n } = this.props;\n const { categoriesPerRow, errors, rowLabels } = 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 const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n className={classes.rowLabel}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n ></div>\n )}\n\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 mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
|
|
@@ -187,8 +187,6 @@ exports.Choice = Choice;
|
|
|
187
187
|
choice: _propTypes["default"].object.isRequired,
|
|
188
188
|
connectDropTarget: _propTypes["default"].func,
|
|
189
189
|
deleteFocusedEl: _propTypes["default"].func,
|
|
190
|
-
defaultImageMaxHeight: _propTypes["default"].number,
|
|
191
|
-
defaultImageMaxWidth: _propTypes["default"].number,
|
|
192
190
|
focusedEl: _propTypes["default"].number,
|
|
193
191
|
index: _propTypes["default"].number,
|
|
194
192
|
lockChoiceOrder: _propTypes["default"].bool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","configuration","deleteFocusedEl","focusedEl","index","onDelete","connectDropTarget","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","showRemoveAfterPlacing","isCheckboxShown","draggable","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","defaultImageMaxHeight","number","defaultImageMaxWidth","bool","shape","add","styles","theme","padding","justifyContent","minWidth","spacing","unit","overflow","cursor","fontSize","typography","color","palette","main","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/pie-toolbox/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/pie-toolbox/drag';\nimport { multiplePlacements } from '../../utils';\nimport flow from 'lodash/flow';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = (props) => {\n if (props.lockChoiceOrder) {\n return true;\n }\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n allowMultiplePlacements: PropTypes.string,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n configuration: PropTypes.object.isRequired,\n choice: PropTypes.object.isRequired,\n connectDropTarget: PropTypes.func,\n deleteFocusedEl: PropTypes.func,\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n lockChoiceOrder: PropTypes.bool,\n maxImageHeight: PropTypes.object,\n maxImageWidth: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n configuration,\n choice,\n deleteFocusedEl,\n focusedEl,\n index,\n onDelete,\n connectDropTarget,\n connectDragSource,\n connectDragPreview,\n imageSupport,\n spellCheck,\n toolbarOpts,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n\n const showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);\n const draggable = canDrag(this.props);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n connectDropTarget(\n <span className={classNames(classes.dragHandle, draggable === false && classes.dragDisabled)}>\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>,\n ),\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>,\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n {showRemoveAfterPlacing && (\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n )}\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n minWidth: '196px',\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","configuration","deleteFocusedEl","focusedEl","index","onDelete","connectDropTarget","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","showRemoveAfterPlacing","isCheckboxShown","draggable","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","number","bool","shape","add","styles","theme","padding","justifyContent","minWidth","spacing","unit","overflow","cursor","fontSize","typography","color","palette","main","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/pie-toolbox/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/pie-toolbox/drag';\nimport { multiplePlacements } from '../../utils';\nimport flow from 'lodash/flow';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = (props) => {\n if (props.lockChoiceOrder) {\n return true;\n }\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n allowMultiplePlacements: PropTypes.string,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n configuration: PropTypes.object.isRequired,\n choice: PropTypes.object.isRequired,\n connectDropTarget: PropTypes.func,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n lockChoiceOrder: PropTypes.bool,\n maxImageHeight: PropTypes.object,\n maxImageWidth: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n configuration,\n choice,\n deleteFocusedEl,\n focusedEl,\n index,\n onDelete,\n connectDropTarget,\n connectDragSource,\n connectDragPreview,\n imageSupport,\n spellCheck,\n toolbarOpts,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n\n const showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);\n const draggable = canDrag(this.props);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n connectDropTarget(\n <span className={classNames(classes.dragHandle, draggable === false && classes.dragDisabled)}>\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>,\n ),\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>,\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n {showRemoveAfterPlacing && (\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n )}\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n minWidth: '196px',\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
|
|
@@ -33,8 +33,6 @@ var _choice = _interopRequireDefault(require("./choice"));
|
|
|
33
33
|
|
|
34
34
|
var _header = _interopRequireDefault(require("../header"));
|
|
35
35
|
|
|
36
|
-
var _every = _interopRequireDefault(require("lodash/every"));
|
|
37
|
-
|
|
38
36
|
var _config = _interopRequireDefault(require("./config"));
|
|
39
37
|
|
|
40
38
|
var _configUi = require("@pie-lib/pie-toolbox/config-ui");
|
|
@@ -80,7 +78,7 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
80
78
|
});
|
|
81
79
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "allChoicesHaveCount", function (count) {
|
|
82
80
|
var choices = _this.props.choices;
|
|
83
|
-
return (
|
|
81
|
+
return Array.isArray(choices) && choices.every(function (c) {
|
|
84
82
|
return c.categoryCount === count;
|
|
85
83
|
});
|
|
86
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/design/choices/index.jsx"],"names":["Choices","focusedEl","choice","props","choices","onModelChanged","index","findIndex","h","id","splice","count","c","categoryCount","model","oldChoices","maxAnswerChoices","length","utils","firstAvailableIndex","map","a","data","content","setState","concat","correctResponse","indexFrom","indexTo","state","classes","className","imageSupport","uploadSoundSupport","spellCheck","toolbarOpts","configuration","defaultImageMaxWidth","defaultImageMaxHeight","errors","allowMultiplePlacementsEnabled","lockChoiceOrder","choicesError","choicesErrors","maxImageWidth","maxImageHeight","choiceHolderStyle","gridTemplateColumns","categoriesPerRow","addChoiceButtonTooltip","addChoice","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","rearrangeChoices","errorText","React","Component","PropTypes","object","isRequired","string","array","number","func","shape","add","bool","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","marginBottom","fontSize","typography","color","palette","error","main"],"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 Choice from './choice';\nimport Header from '../header';\nimport every from 'lodash/every';\nimport Config from './config';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport { removeAllChoices } from '@pie-lib/pie-toolbox/categorize';\nimport { rearrangeChoices } from '@pie-lib/pie-toolbox/categorize';\n\nexport class Choices extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choices: PropTypes.array.isRequired,\n defaultImageMaxWidth: PropTypes.number,\n defaultImageMaxHeight: PropTypes.number,\n onModelChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n state = {\n focusedEl: null,\n };\n\n changeChoice = (choice) => {\n const { choices, onModelChanged } = this.props;\n const index = choices.findIndex((h) => h.id === choice.id);\n if (index !== -1) {\n choices.splice(index, 1, choice);\n onModelChanged({ choices });\n }\n };\n\n allChoicesHaveCount = (count) => {\n const { choices } = this.props;\n return every(choices, (c) => c.categoryCount === count);\n };\n\n addChoice = () => {\n const { onModelChanged, model, choices: oldChoices } = this.props;\n let { maxAnswerChoices } = model || {};\n\n if (maxAnswerChoices && model.choices?.length >= maxAnswerChoices) {\n return;\n }\n\n const id = utils.firstAvailableIndex(\n model.choices.map((a) => a.id),\n 1,\n );\n const data = { id, content: 'Choice ' + id };\n\n this.setState(\n {\n focusedEl: oldChoices.length,\n },\n () => {\n onModelChanged({ choices: model.choices.concat([data]) });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n deleteChoice = (choice) => {\n const { model, onModelChanged } = this.props;\n const index = model.choices.findIndex((a) => a.id === choice.id);\n if (index !== -1) {\n model.choices.splice(index, 1);\n model.correctResponse = removeAllChoices(choice.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n rearrangeChoices = (indexFrom, indexTo) => {\n const { model, onModelChanged } = this.props || {};\n let { choices } = model || [];\n choices = rearrangeChoices(choices, indexFrom, indexTo);\n onModelChanged({ choices });\n };\n\n render() {\n const { focusedEl } = this.state;\n const {\n classes,\n className,\n choices,\n model,\n imageSupport,\n uploadSoundSupport,\n onModelChanged,\n spellCheck,\n toolbarOpts,\n configuration,\n defaultImageMaxWidth,\n defaultImageMaxHeight,\n } = this.props;\n const { errors, allowMultiplePlacementsEnabled, lockChoiceOrder, maxAnswerChoices } = model;\n const { choicesError, choicesErrors } = errors || {};\n const { maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const choiceHolderStyle = {\n gridTemplateColumns: `repeat(${model.categoriesPerRow}, 1fr)`,\n };\n const addChoiceButtonTooltip =\n maxAnswerChoices && choices?.length >= maxAnswerChoices ? `Only ${maxAnswerChoices} allowed maximum` : '';\n\n return (\n <div className={classNames(classes.choices, className)}>\n <Header\n label=\"Choices\"\n buttonLabel=\"ADD A CHOICE\"\n onAdd={this.addChoice}\n buttonDisabled={maxAnswerChoices && choices && choices?.length >= maxAnswerChoices}\n tooltip={addChoiceButtonTooltip}\n />\n\n <Config config={model} onModelChanged={onModelChanged} spellCheck={spellCheck} />\n\n <div className={classes.choiceHolder} style={choiceHolderStyle}>\n {choices.map((h, index) => {\n return (\n <Choice\n choice={h}\n focusedEl={focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n correctResponseCount={h.correctResponseCount}\n allowMultiplePlacements={allowMultiplePlacementsEnabled}\n lockChoiceOrder={lockChoiceOrder}\n index={index}\n key={index}\n imageSupport={imageSupport}\n onChange={this.changeChoice}\n onDelete={() => this.deleteChoice(h)}\n rearrangeChoices={(indexFrom, indexTo) => this.rearrangeChoices(indexFrom, indexTo)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={choicesErrors && choicesErrors[h.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.choice) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choice) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n );\n })}\n </div>\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choiceHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n choices: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/design/choices/index.jsx"],"names":["Choices","focusedEl","choice","props","choices","onModelChanged","index","findIndex","h","id","splice","count","Array","isArray","every","c","categoryCount","model","oldChoices","maxAnswerChoices","length","utils","firstAvailableIndex","map","a","data","content","setState","concat","correctResponse","indexFrom","indexTo","state","classes","className","imageSupport","uploadSoundSupport","spellCheck","toolbarOpts","configuration","defaultImageMaxWidth","defaultImageMaxHeight","errors","allowMultiplePlacementsEnabled","lockChoiceOrder","choicesError","choicesErrors","maxImageWidth","maxImageHeight","choiceHolderStyle","gridTemplateColumns","categoriesPerRow","addChoiceButtonTooltip","addChoice","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","rearrangeChoices","errorText","React","Component","PropTypes","object","isRequired","string","array","number","func","shape","add","bool","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","marginBottom","fontSize","typography","color","palette","error","main"],"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 Choice from './choice';\nimport Header from '../header';\nimport Config from './config';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport { removeAllChoices } from '@pie-lib/pie-toolbox/categorize';\nimport { rearrangeChoices } from '@pie-lib/pie-toolbox/categorize';\n\nexport class Choices extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choices: PropTypes.array.isRequired,\n defaultImageMaxWidth: PropTypes.number,\n defaultImageMaxHeight: PropTypes.number,\n onModelChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n state = {\n focusedEl: null,\n };\n\n changeChoice = (choice) => {\n const { choices, onModelChanged } = this.props;\n const index = choices.findIndex((h) => h.id === choice.id);\n if (index !== -1) {\n choices.splice(index, 1, choice);\n onModelChanged({ choices });\n }\n };\n\n allChoicesHaveCount = (count) => {\n const { choices } = this.props;\n return Array.isArray(choices) && choices.every((c) => c.categoryCount === count);\n };\n\n addChoice = () => {\n const { onModelChanged, model, choices: oldChoices } = this.props;\n let { maxAnswerChoices } = model || {};\n\n if (maxAnswerChoices && model.choices?.length >= maxAnswerChoices) {\n return;\n }\n\n const id = utils.firstAvailableIndex(\n model.choices.map((a) => a.id),\n 1,\n );\n const data = { id, content: 'Choice ' + id };\n\n this.setState(\n {\n focusedEl: oldChoices.length,\n },\n () => {\n onModelChanged({ choices: model.choices.concat([data]) });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n deleteChoice = (choice) => {\n const { model, onModelChanged } = this.props;\n const index = model.choices.findIndex((a) => a.id === choice.id);\n if (index !== -1) {\n model.choices.splice(index, 1);\n model.correctResponse = removeAllChoices(choice.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n rearrangeChoices = (indexFrom, indexTo) => {\n const { model, onModelChanged } = this.props || {};\n let { choices } = model || [];\n choices = rearrangeChoices(choices, indexFrom, indexTo);\n onModelChanged({ choices });\n };\n\n render() {\n const { focusedEl } = this.state;\n const {\n classes,\n className,\n choices,\n model,\n imageSupport,\n uploadSoundSupport,\n onModelChanged,\n spellCheck,\n toolbarOpts,\n configuration,\n defaultImageMaxWidth,\n defaultImageMaxHeight,\n } = this.props;\n const { errors, allowMultiplePlacementsEnabled, lockChoiceOrder, maxAnswerChoices } = model;\n const { choicesError, choicesErrors } = errors || {};\n const { maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const choiceHolderStyle = {\n gridTemplateColumns: `repeat(${model.categoriesPerRow}, 1fr)`,\n };\n const addChoiceButtonTooltip =\n maxAnswerChoices && choices?.length >= maxAnswerChoices ? `Only ${maxAnswerChoices} allowed maximum` : '';\n\n return (\n <div className={classNames(classes.choices, className)}>\n <Header\n label=\"Choices\"\n buttonLabel=\"ADD A CHOICE\"\n onAdd={this.addChoice}\n buttonDisabled={maxAnswerChoices && choices && choices?.length >= maxAnswerChoices}\n tooltip={addChoiceButtonTooltip}\n />\n\n <Config config={model} onModelChanged={onModelChanged} spellCheck={spellCheck} />\n\n <div className={classes.choiceHolder} style={choiceHolderStyle}>\n {choices.map((h, index) => {\n return (\n <Choice\n choice={h}\n focusedEl={focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n correctResponseCount={h.correctResponseCount}\n allowMultiplePlacements={allowMultiplePlacementsEnabled}\n lockChoiceOrder={lockChoiceOrder}\n index={index}\n key={index}\n imageSupport={imageSupport}\n onChange={this.changeChoice}\n onDelete={() => this.deleteChoice(h)}\n rearrangeChoices={(indexFrom, indexTo) => this.rearrangeChoices(indexFrom, indexTo)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={choicesErrors && choicesErrors[h.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.choice) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choice) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n );\n })}\n </div>\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choiceHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n choices: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"index.js"}
|
|
@@ -276,7 +276,6 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
276
276
|
spellCheckEnabled = _ref3.spellCheckEnabled,
|
|
277
277
|
teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
|
|
278
278
|
toolbarEditorPosition = _ref3.toolbarEditorPosition,
|
|
279
|
-
maxAnswerChoices = _ref3.maxAnswerChoices,
|
|
280
279
|
extraCSSRules = _ref3.extraCSSRules;
|
|
281
280
|
|
|
282
281
|
var _ref4 = errors || {},
|
|
@@ -460,9 +459,6 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
460
459
|
categories: categoriesList,
|
|
461
460
|
onModelChanged: _this2.updateModel,
|
|
462
461
|
uploadSoundSupport: uploadSoundSupport,
|
|
463
|
-
toolbarOpts: toolbarOpts,
|
|
464
|
-
defaultImageMaxWidth: defaultImageMaxWidth,
|
|
465
|
-
defaultImageMaxHeight: defaultImageMaxHeight,
|
|
466
462
|
mathMlOptions: mathMlOptions
|
|
467
463
|
}));
|
|
468
464
|
}), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/index.jsx"],"names":["translator","Translator","dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowMaxAnswerChoices","allowAlternateEnabled","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","maxAnswerChoices","extraCSSRules","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","length","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","Settings","Properties","onAlertModalCancel","inputContainer","input","changeTeacherInstructions","inputConfiguration","errorText","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n} from '@pie-lib/pie-toolbox/categorize';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { uid, withDragContext } from '@pie-lib/pie-toolbox/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\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 updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\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 //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\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 // ensure that maxChoicesPerCategory is reset if author switch back the corresponding switch (allowMaxChoicesPerCategory)\n updatedModel.maxChoicesPerCategory = updatedModel.allowMaxChoicesPerCategory\n ? updatedModel.maxChoicesPerCategory\n : 0;\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\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n\n return c.categoryCount || 0;\n };\n\n isAlertModalOpened = () => {\n const { model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const maxChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so modal should not be opened\n return maxChoicesPerCategory !== 0 ? maxChoices > maxChoicesPerCategory : false;\n };\n\n onAlertModalCancel = () => {\n const { model } = this.props;\n const maxChoices = getMaxCategoryChoices(model);\n this.updateModel({ maxChoicesPerCategory: maxChoices });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowAlternate = {},\n allowMultiplePlacements = {},\n baseInputConfiguration = {},\n categoriesPerRow = {},\n choicesPosition = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n maxPlacements = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n allowMaxAnswerChoices = {},\n } = configuration || {};\n const {\n allowAlternateEnabled,\n allowMaxChoicesPerCategory,\n errors,\n feedbackEnabled,\n maxChoicesPerCategory,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n maxAnswerChoices,\n extraCSSRules,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\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 // ensure categoryCount is set even though updatedModel hasn't been called\n c.categoryCount = this.checkAllowMultiplePlacements(model.allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\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: 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 maxAnswerChoices: allowMaxAnswerChoices.settings && numberField(allowMaxAnswerChoices.label, {\n label: '',\n min: choices?.length || 0,\n max: 30,\n }),\n allowMaxChoicesPerCategory: maxPlacements.settings && toggle(maxPlacements.label),\n maxChoicesPerCategory:\n allowMaxChoicesPerCategory === true &&\n numberField(maxPlacements.label, {\n label: '',\n min: 0,\n max: 30,\n }),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\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 const isOpened = this.isAlertModalOpened();\n const alertMaxChoicesMsg = translator.t('translation:categorize:maxChoicesPerCategoryRestriction', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <AlertDialog\n title={'Warning'}\n text={alertMaxChoicesMsg}\n open={isOpened}\n onClose={this.onAlertModalCancel}\n />\n }\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\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 mathMlOptions={mathMlOptions}\n />\n\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 {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n toolbarOpts={toolbarOpts}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n error={rationaleError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/design/index.jsx"],"names":["translator","Translator","dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowMaxAnswerChoices","allowAlternateEnabled","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","extraCSSRules","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","maxAnswerChoices","length","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","Settings","Properties","onAlertModalCancel","inputContainer","input","changeTeacherInstructions","inputConfiguration","errorText","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title","fontSize","typography","color","palette","error","main"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;AAEA,IAAQA,UAAR,GAAuBC,sBAAvB,CAAQD,UAAR;AACA,IAAQE,QAAR,GAAwDC,kBAAxD,CAAQD,QAAR;AAAA,IAAkBE,KAAlB,GAAwDD,kBAAxD,CAAkBC,KAAlB;AAAA,IAAyBC,MAAzB,GAAwDF,kBAAxD,CAAyBE,MAAzB;AAAA,IAAiCC,KAAjC,GAAwDH,kBAAxD,CAAiCG,KAAjC;AAAA,IAAwCC,WAAxC,GAAwDJ,kBAAxD,CAAwCI,WAAxC;AACA,IAAkBC,UAAlB,GAAiCC,SAAjC,CAAQC,QAAR;;IAEaC,M;;;;;AAmBX,kBAAYC,MAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,MAAN;AADiB,oGAKL,UAACA,KAAD,EAAW;AACvB,wBAA4B,MAAKA,KAAjC;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,QAAf,eAAeA,QAAf;;AAEA,UAAMC,YAAY,mCACbF,KADa,GAEbD,KAFa,CAAlB;;AAKAG,MAAAA,YAAY,CAACC,OAAb,GAAuBD,YAAY,CAACC,OAAb,CAAqBC,GAArB,CAAyB,UAACC,CAAD;AAAA,+CAC3CA,CAD2C;AAE9CC,UAAAA,aAAa,EAAE,MAAKC,4BAAL,CAAkCL,YAAY,CAACM,8BAA/C,EAA+EH,CAA/E;AAF+B;AAAA,OAAzB,CAAvB,CARuB,CAavB;;AACAH,MAAAA,YAAY,CAACO,eAAb,GAA+B,8CAC7BP,YAAY,CAACO,eAAb,IAAgC,EADH,EAE7BP,YAAY,CAACC,OAFgB,CAA/B,CAduB,CAmBvB;;AACAD,MAAAA,YAAY,CAACO,eAAb,GAA+B,iDAC7BP,YAAY,CAACO,eAAb,IAAgC,EADH,EAE7BP,YAAY,CAACC,OAFgB,CAA/B,CApBuB,CAyBvB;;AACAD,MAAAA,YAAY,CAACQ,UAAb,GAA0BR,YAAY,CAACQ,UAAb,CAAwBN,GAAxB,CAA4B,UAACC,CAAD;AAAA,eAAQ;AAC5DM,UAAAA,EAAE,EAAEN,CAAC,CAACM,EADsD;AAE5DC,UAAAA,KAAK,EAAEP,CAAC,CAACO;AAFmD,SAAR;AAAA,OAA5B,CAA1B;AAKAV,MAAAA,YAAY,CAACC,OAAb,GAAuBD,YAAY,CAACC,OAAb,CAAqBC,GAArB,CAAyB,UAACS,CAAD;AAAA,eAAQ;AACtDF,UAAAA,EAAE,EAAEE,CAAC,CAACF,EADgD;AAEtDG,UAAAA,OAAO,EAAED,CAAC,CAACC,OAF2C;AAGtDR,UAAAA,aAAa,EAAEO,CAAC,CAACP;AAHqC,SAAR;AAAA,OAAzB,CAAvB,CA/BuB,CAqCvB;;AACAJ,MAAAA,YAAY,CAACa,qBAAb,GAAqCb,YAAY,CAACc,0BAAb,GACjCd,YAAY,CAACa,qBADoB,GAEjC,CAFJ;AAIAd,MAAAA,QAAQ,CAACC,YAAD,CAAR;AACD,KAhDkB;AAAA,wGAkDD,UAACe,SAAD,EAAe;AAC/B,yBAA4B,MAAKlB,KAAjC;AAAA,UAAQC,KAAR,gBAAQA,KAAR;AAAA,UAAeC,QAAf,gBAAeA,QAAf;AAEAA,MAAAA,QAAQ,iCACHD,KADG;AAENiB,QAAAA,SAAS,EAATA;AAFM,SAAR;AAID,KAzDkB;AAAA,kHA2DS,UAACC,mBAAD,EAAyB;AACnD,yBAA4B,MAAKnB,KAAjC;AAAA,UAAQC,KAAR,gBAAQA,KAAR;AAAA,UAAeC,QAAf,gBAAeA,QAAf;AAEAA,MAAAA,QAAQ,iCACHD,KADG;AAENkB,QAAAA,mBAAmB,EAAnBA;AAFM,SAAR;AAID,KAlEkB;AAAA,uGAoEF,UAACC,QAAD,EAAc;AAC7B,YAAKC,WAAL,CAAiB;AAAED,QAAAA,QAAQ,EAARA;AAAF,OAAjB;AACD,KAtEkB;AAAA,+GAwEM,YAAM;AAC7B,UACWV,eADX,GAEI,MAAKV,KAFT,CACEC,KADF,CACWS,eADX;;AAIA,YAAKW,WAAL,CAAiB;AACfX,QAAAA,eAAe,EAAE,CAACA,eAAe,IAAI,EAApB,EAAwBL,GAAxB,CAA4B,UAACiB,EAAD;AAAA,iDACxCA,EADwC;AAE3CC,YAAAA,kBAAkB,gDAAOD,EAAE,CAACC,kBAAH,IAAyB,EAAhC,IAAqC,EAArC;AAFyB;AAAA,SAA5B;AADF,OAAjB;AAMD,KAnFkB;AAAA,wGAqFD,UAACC,MAAD;AAAA,aAAY,MAAKH,WAAL,CAAiB;AAAEG,QAAAA,MAAM,EAANA;AAAF,OAAjB,CAAZ;AAAA,KArFC;AAAA,kHAuFS,UAACC,KAAD,EAAW;AACrC,UACWf,eADX,GAEI,MAAKV,KAFT,CACEC,KADF,CACWS,eADX;;AAIA,YAAKW,WAAL,CAAiB;AACfX,QAAAA,eAAe,EAAE,CAACA,eAAe,IAAI,EAApB,EAAwBL,GAAxB,CAA4B,UAACiB,EAAD;AAAA,iDACxCA,EADwC;AAE3CC,YAAAA,kBAAkB,EAAE,CAACD,EAAE,CAACC,kBAAH,IAAyB,EAA1B,EAA8BG,MAA9B,CAAqC,UAACC,GAAD,EAAMC,QAAN;AAAA,qBAAmBA,QAAQ,KAAKH,KAAhC;AAAA,aAArC;AAFuB;AAAA,SAA5B;AADF,OAAjB;AAMD,KAlGkB;AAAA,qHAoGY,UAACI,MAAD,EAAY;AACzC,UAAQ5B,KAAR,GAAkB,MAAKD,KAAvB,CAAQC,KAAR;AAEA,aAAO,+BAAc4B,MAAM,CAACjB,EAArB,EAAyBX,KAAK,CAACS,eAA/B,CAAP;AACD,KAxGkB;AAAA,qHA0GY,UAACoB,uBAAD,EAA0BxB,CAA1B,EAAgC;AAC7D,UAAIwB,uBAAuB,KAAKC,2BAAmBC,OAAnD,EAA4D;AAC1D,eAAO,CAAP;AACD;;AAED,UAAIF,uBAAuB,KAAKC,2BAAmBE,QAAnD,EAA6D;AAC3D,eAAO,CAAP;AACD;;AAED,aAAO3B,CAAC,CAACC,aAAF,IAAmB,CAA1B;AACD,KApHkB;AAAA,2GAsHE,YAAM;AACzB,UAAQN,KAAR,GAAkB,MAAKD,KAAvB,CAAQC,KAAR;;AACA,iBAAsCA,KAAK,IAAI,EAA/C;AAAA,uCAAQe,qBAAR;AAAA,UAAQA,qBAAR,sCAAgC,CAAhC;;AACA,UAAMkB,UAAU,GAAG,mCAAsBjC,KAAtB,CAAnB,CAHyB,CAIzB;;AACA,aAAOe,qBAAqB,KAAK,CAA1B,GAA8BkB,UAAU,GAAGlB,qBAA3C,GAAmE,KAA1E;AACD,KA5HkB;AAAA,2GA8HE,YAAM;AACzB,UAAQf,KAAR,GAAkB,MAAKD,KAAvB,CAAQC,KAAR;AACA,UAAMiC,UAAU,GAAG,mCAAsBjC,KAAtB,CAAnB;;AACA,YAAKoB,WAAL,CAAiB;AAAEL,QAAAA,qBAAqB,EAAEkB;AAAzB,OAAjB;AACD,KAlIkB;AAEjB,UAAKrC,GAAL,GAAWG,MAAK,CAACH,GAAN,IAAaA,UAAIsC,UAAJ,EAAxB;AAFiB;AAGlB;;;;WAiID,kBAAS;AAAA;;AACP,yBAAoG,KAAKnC,KAAzG;AAAA,UAAQoC,OAAR,gBAAQA,OAAR;AAAA,UAAiBC,aAAjB,gBAAiBA,aAAjB;AAAA,UAAgCC,YAAhC,gBAAgCA,YAAhC;AAAA,UAA8CrC,KAA9C,gBAA8CA,KAA9C;AAAA,UAAqDsC,kBAArD,gBAAqDA,kBAArD;AAAA,UAAyEC,sBAAzE,gBAAyEA,sBAAzE;;AACA,kBA0BIH,aAAa,IAAI,EA1BrB;AAAA,uCACEI,cADF;AAAA,UACEA,cADF,qCACmB,EADnB;AAAA,wCAEEX,uBAFF;AAAA,UAEEA,uBAFF,sCAE4B,EAF5B;AAAA,wCAGEY,sBAHF;AAAA,UAGEA,sBAHF,sCAG2B,EAH3B;AAAA,wCAIEC,gBAJF;AAAA,UAIEA,gBAJF,sCAIqB,EAJrB;AAAA,wCAKEC,eALF;AAAA,UAKEA,eALF,sCAKoB,EALpB;AAAA,wCAMEC,iBANF;AAAA,UAMEA,iBANF,sCAMsB,EANtB;AAAA,iCAOEzB,QAPF;AAAA,UAOEA,QAPF,+BAOa,EAPb;AAAA,wCAQE0B,eARF;AAAA,UAQEA,eARF,sCAQoB,EARpB;AAAA,uCASEC,cATF;AAAA,UASEA,cATF,qCASmB,EATnB;AAAA,sCAUEC,aAVF;AAAA,UAUEA,aAVF,oCAUkB,EAVlB;AAAA,sCAWEC,aAXF;AAAA,UAWEA,aAXF,oCAWkB,EAXlB;AAAA,wCAYEC,mBAZF;AAAA,UAYEA,mBAZF,sCAYwB,CAZxB;AAAA,uCAaEC,cAbF;AAAA,UAaEA,cAbF,qCAamB,EAbnB;AAAA,+BAcE3B,MAdF;AAAA,UAcEA,MAdF,6BAcW,EAdX;AAAA,kCAeEN,SAfF;AAAA,UAeEA,SAfF,gCAec,EAfd;AAAA,oCAgBEkC,WAhBF;AAAA,UAgBEA,WAhBF,kCAgBgB,EAhBhB;AAAA,UAiBEC,qBAjBF,SAiBEA,qBAjBF;AAAA,mCAkBEC,UAlBF;AAAA,UAkBEA,UAlBF,iCAkBe,EAlBf;AAAA,wCAmBEC,mBAnBF;AAAA,UAmBEA,mBAnBF,sCAmBwB,EAnBxB;AAAA,wCAoBEpC,mBApBF;AAAA,UAoBEA,mBApBF,sCAoBwB,EApBxB;AAAA,mCAqBEqC,UArBF;AAAA,UAqBEA,UArBF,iCAqBe,EArBf;AAAA,sCAsBEC,aAtBF;AAAA,UAsBEA,aAtBF,oCAsBkB,EAtBlB;AAAA,iCAuBEC,QAvBF;AAAA,UAuBEA,QAvBF,+BAuBa,EAvBb;AAAA,wCAwBEC,eAxBF;AAAA,UAwBEA,eAxBF,sCAwBoB,EAxBpB;AAAA,wCAyBEC,qBAzBF;AAAA,UAyBEA,qBAzBF,sCAyB0B,EAzB1B;;AA2BA,kBAYI3D,KAAK,IAAI,EAZb;AAAA,UACE4D,qBADF,SACEA,qBADF;AAAA,UAEE5C,0BAFF,SAEEA,0BAFF;AAAA,UAGE6C,MAHF,SAGEA,MAHF;AAAA,UAIEC,eAJF,SAIEA,eAJF;AAAA,UAKE/C,qBALF,SAKEA,qBALF;AAAA,UAMEgD,aANF,SAMEA,aANF;AAAA,UAOEC,gBAPF,SAOEA,gBAPF;AAAA,UAQEC,iBARF,SAQEA,iBARF;AAAA,UASEC,0BATF,SASEA,0BATF;AAAA,UAUEC,qBAVF,SAUEA,qBAVF;AAAA,UAWEC,aAXF,SAWEA,aAXF;;AAaA,kBAIIP,MAAM,IAAI,EAJd;AAAA,UACUQ,WADV,SACE9C,MADF;AAAA,UAEa+C,cAFb,SAEErD,SAFF;AAAA,UAGuBsD,wBAHvB,SAGErD,mBAHF;;AAMA,UAAMsD,WAAW,GAAG;AAClBC,QAAAA,QAAQ,EAAEN,qBAAqB,KAAK,KAA1B,GAAkC,KAAlC,GAA0C;AADlC,OAApB;AAIA,UAAMO,MAAM,GAAG1E,KAAK,CAAC0E,MAAN,IAAgB,EAA/B;AACAA,MAAAA,MAAM,CAACvE,OAAP,GAAiBuE,MAAM,CAACvE,OAAP,IAAkB;AAAES,QAAAA,KAAK,EAAE,EAAT;AAAa+D,QAAAA,OAAO,EAAE;AAAtB,OAAnC;AAEA,UAAMjE,UAAU,GAAG,8BAAgBV,KAAK,CAACU,UAAN,IAAoB,EAApC,EAAwCV,KAAK,CAACG,OAAN,IAAiB,EAAzD,EAA6DH,KAAK,CAACS,eAAN,IAAyB,EAAtF,CAAnB;AAEA,UAAMa,kBAAkB,GAAG,sCACzBtB,KAAK,CAACU,UAAN,IAAoB,EADK,EAEzBV,KAAK,CAACG,OAAN,IAAiB,EAFQ,EAGzBH,KAAK,CAACS,eAAN,IAAyB,EAHA,CAA3B;AAMA,UAAMN,OAAO,GAAGH,KAAK,CAACG,OAAN,CAAcC,GAAd,CAAkB,UAACC,CAAD,EAAO;AACvCA,QAAAA,CAAC,CAACuE,oBAAF,GAAyB,MAAI,CAACC,4BAAL,CAAkCxE,CAAlC,CAAzB,CADuC,CAEvC;;AACAA,QAAAA,CAAC,CAACC,aAAF,GAAkB,MAAI,CAACC,4BAAL,CAAkCP,KAAK,CAACQ,8BAAxC,EAAwEH,CAAxE,CAAlB;AACA,eAAOA,CAAP;AACD,OALe,CAAhB;AAOA,UAAMyE,oBAAoB,GAAG/B,aAAa,IAAIA,aAAa,CAACxB,MAA5D;AACA,UAAMwD,qBAAqB,GAAGjC,cAAc,IAAIA,cAAc,CAACvB,MAA/D;AAEA,UAAMyD,aAAa,GAAG;AACpB9B,QAAAA,cAAc,EAAEA,cAAc,CAAC5D,QAAf,IAA2BE,MAAM,CAAC0D,cAAc,CAACtC,KAAhB,CAD7B;AAEpBiC,QAAAA,eAAe,EAAEA,eAAe,CAACvD,QAAhB,IAA4BE,MAAM,CAACqD,eAAe,CAACjC,KAAjB,CAF/B;AAGpB8B,QAAAA,gBAAgB,EACdA,gBAAgB,CAACpD,QAAjB,IACAI,WAAW,CAACgD,gBAAgB,CAAC9B,KAAlB,EAAyB;AAClCA,UAAAA,KAAK,EAAE8B,gBAAgB,CAAC9B,KADU;AAElCqE,UAAAA,GAAG,EAAEhC,mBAF6B;AAGlCiC,UAAAA,GAAG,EAAE;AAH6B,SAAzB,CALO;AAUpBvC,QAAAA,eAAe,EAAEA,eAAe,CAACrD,QAAhB,IAA4BG,KAAK,CAACkD,eAAe,CAAC/B,KAAjB,EAAwB,CAAC,OAAD,EAAU,OAAV,EAAmB,MAAnB,EAA2B,OAA3B,CAAxB,CAV9B;AAWpBJ,QAAAA,8BAA8B,EAC5BqB,uBAAuB,CAACvC,QAAxB,IACAD,QAAQ,CAACwC,uBAAuB,CAACjB,KAAzB,EAAgC,CACtCkB,2BAAmBC,OADmB,EAEtCD,2BAAmBE,QAFmB,EAGtCF,2BAAmBqD,SAHmB,CAAhC,CAbU;AAkBpBC,QAAAA,gBAAgB,EAAEzB,qBAAqB,CAACrE,QAAtB,IAAkCI,WAAW,CAACiE,qBAAqB,CAAC/C,KAAvB,EAA8B;AAC3FA,UAAAA,KAAK,EAAE,EADoF;AAE3FqE,UAAAA,GAAG,EAAE,CAAA9E,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEkF,MAAT,KAAmB,CAFmE;AAG3FH,UAAAA,GAAG,EAAE;AAHsF,SAA9B,CAlB3C;AAuBpBlE,QAAAA,0BAA0B,EAAEgC,aAAa,CAAC1D,QAAd,IAA0BE,MAAM,CAACwD,aAAa,CAACpC,KAAf,CAvBxC;AAwBpBG,QAAAA,qBAAqB,EACnBC,0BAA0B,KAAK,IAA/B,IACAtB,WAAW,CAACsD,aAAa,CAACpC,KAAf,EAAsB;AAC/BA,UAAAA,KAAK,EAAE,EADwB;AAE/BqE,UAAAA,GAAG,EAAE,CAF0B;AAG/BC,UAAAA,GAAG,EAAE;AAH0B,SAAtB,CA1BO;AA+BpBnB,QAAAA,aAAa,EAAExC,MAAM,CAACjC,QAAP,IAAmBE,MAAM,CAAC+B,MAAM,CAACX,KAAR,CA/BpB;AAgCpBkD,QAAAA,eAAe,EAAE3C,QAAQ,CAAC7B,QAAT,IAAqBE,MAAM,CAAC2B,QAAQ,CAACP,KAAV,CAhCxB;AAiCpBgD,QAAAA,qBAAqB,EAAEpB,cAAc,CAAClD,QAAf,IAA2BE,MAAM,CAACgD,cAAc,CAAC5B,KAAhB,CAjCpC;AAkCpB,4BAAoB6C,QAAQ,CAACnE,QAAT,IAAqBE,MAAM,CAACiE,QAAQ,CAAC7C,KAAV,EAAiB,IAAjB,CAlC3B;AAmCpB6C,QAAAA,QAAQ,EAAEA,QAAQ,CAACnE,QAAT,IAAqBmE,QAAQ,CAAC1B,OAA9B,IAAyC1C,QAAQ,CAACqE,eAAe,CAAC9C,KAAjB,EAAwB8C,eAAe,CAAC4B,OAAxC;AAnCvC,OAAtB;AAsCA,UAAMC,eAAe,GAAG;AACtBrB,QAAAA,0BAA0B,EAAEhD,mBAAmB,CAAC5B,QAApB,IAAgCE,MAAM,CAAC0B,mBAAmB,CAACN,KAArB,CAD5C;AAEtB4E,QAAAA,0BAA0B,EAAElC,mBAAmB,CAAChE,QAApB,IAAgCE,MAAM,CAAC8D,mBAAmB,CAAC1C,KAArB,CAF5C;AAGtBoD,QAAAA,gBAAgB,EAAE/C,SAAS,CAAC3B,QAAV,IAAsBE,MAAM,CAACyB,SAAS,CAACL,KAAX,CAHxB;AAItBqD,QAAAA,iBAAiB,EAAEZ,UAAU,CAAC/D,QAAX,IAAuBE,MAAM,CAAC6D,UAAU,CAACzC,KAAZ,CAJ1B;AAKtBuC,QAAAA,WAAW,EAAEA,WAAW,CAAC7D,QAAZ,IAAwBG,KAAK,CAAC0D,WAAW,CAACvC,KAAb,EAAoB,CAAC,MAAD,EAAS,QAAT,CAApB,CALpB;AAMtB6E,QAAAA,aAAa,EAAE,CAAAlC,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEjE,QAAZ,KAAwBE,MAAM,CAAC+D,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAE3C,KAAb;AANvB,OAAxB;AASA,UAAM8E,QAAQ,GAAG,KAAKC,kBAAL,EAAjB;AACA,UAAMC,kBAAkB,GAAGzG,UAAU,CAAC0G,CAAX,CAAa,yDAAb,EAAwE;AACjGC,QAAAA,GAAG,EAAE9F,KAAK,CAACyD,QADsF;AAEjG1C,QAAAA,qBAAqB,EAArBA;AAFiG,OAAxE,CAA3B;AAKA,0BACE,gCAAC,UAAD;AAAY,QAAA,KAAK,EAAE,KAAKnB;AAAxB,sBACE,gCAAC,gBAAD,CAAQ,YAAR;AACE,QAAA,aAAa,EAAEwE,aADjB;AAEE,QAAA,UAAU,EAAExB,iBAFd;AAGE,QAAA,YAAY,EAAEQ,qBAHhB;AAIE,QAAA,QAAQ,eACN,gCAAC,KAAD;AACE,UAAA,KAAK,EAAEpD,KADT;AAEE,UAAA,aAAa,EAAE,KAAKoB,WAFtB;AAGE,UAAA,aAAa,EAAEgB,aAHjB;AAIE,UAAA,qBAAqB,EAAEG,sBAJzB;AAKE,UAAA,MAAM,EAAE;AACNwD,YAAAA,QAAQ,EAAEf,aADJ;AAENgB,YAAAA,UAAU,EAAET;AAFN,WALV;AASE,UAAA,KAAK,eACH,gCAAC,qBAAD;AACE,YAAA,KAAK,EAAE,SADT;AAEE,YAAA,IAAI,EAAEK,kBAFR;AAGE,YAAA,IAAI,EAAEF,QAHR;AAIE,YAAA,OAAO,EAAE,KAAKO;AAJhB;AAVJ;AALJ,SAyBG/B,0BAA0B,iBACzB,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEhD,mBAAmB,CAACN,KAA3C;AAAkD,QAAA,SAAS,EAAEuB,OAAO,CAAC+D;AAArE,sBACE,gCAAC,0BAAD;AACE,QAAA,SAAS,EAAE/D,OAAO,CAACgE,KADrB;AAEE,QAAA,MAAM,EAAEnG,KAAK,CAACkB,mBAAN,IAA6B,EAFvC;AAGE,QAAA,QAAQ,EAAE,KAAKkF,yBAHjB;AAIE,QAAA,YAAY,EAAE/D,YAJhB;AAKE,QAAA,KAAK,EAAEkC,wBALT;AAME,QAAA,QAAQ,EAAE,KANZ;AAOE,QAAA,WAAW,EAAEC,WAPf;AAQE,QAAA,WAAW,EAAE,2BAAetD,mBAAf,aAAeA,mBAAf,uBAAeA,mBAAmB,CAAEmF,kBAApC,EAAwD5D,sBAAxD,CARf;AASE,QAAA,UAAU,EAAEwB,iBATd;AAUE,QAAA,aAAa,EAAGlB,aAAa,IAAIA,aAAa,CAAC7B,mBAAhC,IAAwD4D,oBAVzE;AAWE,QAAA,cAAc,EAAGhC,cAAc,IAAIA,cAAc,CAAC5B,mBAAlC,IAA0D6D,qBAX5E;AAYE,QAAA,kBAAkB,EAAEzC,kBAZtB;AAaE,QAAA,uBAAuB,EAAE,CAAC;AAAEmB,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B,CAb3B;AAcE,QAAA,aAAa,EAAED;AAdjB,QADF,EAiBGe,wBAAwB,iBAAI;AAAK,QAAA,SAAS,EAAEpC,OAAO,CAACmE;AAAxB,SAAoC/B,wBAApC,CAjB/B,CA1BJ,EA+CGR,aAAa,iBACZ,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAExC,MAAM,CAACX,KAA9B;AAAqC,QAAA,SAAS,EAAEuB,OAAO,CAAC+D;AAAxD,sBACE,gCAAC,0BAAD;AACE,QAAA,SAAS,EAAE/D,OAAO,CAACgE,KADrB;AAEE,QAAA,MAAM,EAAEnG,KAAK,CAACuB,MAAN,IAAgB,EAF1B;AAGE,QAAA,QAAQ,EAAE,KAAKgF,eAHjB;AAIE,QAAA,YAAY,EAAElE,YAJhB;AAKE,QAAA,KAAK,EAAEgC,WALT;AAME,QAAA,QAAQ,EAAE,KANZ;AAOE,QAAA,gBAAgB,MAPlB;AAQE,QAAA,WAAW,EAAEG,WARf;AASE,QAAA,WAAW,EAAE,2BAAejD,MAAf,aAAeA,MAAf,uBAAeA,MAAM,CAAE8E,kBAAvB,EAA2C5D,sBAA3C,CATf;AAUE,QAAA,UAAU,EAAEwB,iBAVd;AAWE,QAAA,aAAa,EAAElB,aAAa,IAAIA,aAAa,CAACxB,MAXhD;AAYE,QAAA,cAAc,EAAEuB,cAAc,IAAIA,cAAc,CAACvB,MAZnD;AAaE,QAAA,kBAAkB,EAAEe,kBAbtB;AAcE,QAAA,uBAAuB,EAAE,CAAC;AAAEmB,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B,CAd3B;AAeE,QAAA,aAAa,EAAED;AAfjB,QADF,EAkBGa,WAAW,iBAAI;AAAK,QAAA,SAAS,EAAElC,OAAO,CAACmE;AAAxB,SAAoCjC,WAApC,CAlBlB,CAhDJ,eAsEE,gCAAC,sBAAD;AACE,QAAA,YAAY,EAAEhC,YADhB;AAEE,QAAA,kBAAkB,EAAEC,kBAFtB;AAGE,QAAA,KAAK,EAAEtC,KAHT;AAIE,QAAA,UAAU,EAAEU,UAAU,IAAI,EAJ5B;AAKE,QAAA,cAAc,EAAE,KAAKU,WALvB;AAME,QAAA,WAAW,EAAEoD,WANf;AAOE,QAAA,UAAU,EAAEP,iBAPd;AAQE,QAAA,aAAa,EAAE7B,aARjB;AASE,QAAA,oBAAoB,EAAE0C,oBATxB;AAUE,QAAA,qBAAqB,EAAEC,qBAVzB;AAWE,QAAA,aAAa,EAAEvB;AAXjB,QAtEF,eAoFE,gCAAC,mBAAD;AACE,QAAA,YAAY,EAAEnB,YADhB;AAEE,QAAA,kBAAkB,EAAEC,kBAFtB;AAGE,QAAA,OAAO,EAAEnC,OAHX;AAIE,QAAA,KAAK,EAAEH,KAJT;AAKE,QAAA,cAAc,EAAE,KAAKoB,WALvB;AAME,QAAA,WAAW,EAAEoD,WANf;AAOE,QAAA,UAAU,EAAEP,iBAPd;AAQE,QAAA,aAAa,EAAE7B,aARjB;AASE,QAAA,oBAAoB,EAAE0C,oBATxB;AAUE,QAAA,qBAAqB,EAAEC;AAVzB,QApFF,EAiGGnB,qBAAqB,iBACpB,gCAAC,kBAAD;AACE,QAAA,SAAS,EAAEzB,OAAO,CAACqE,gBADrB;AAEE,QAAA,KAAK,EAAC,qBAFR;AAGE,QAAA,WAAW,EAAC,2BAHd;AAIE,QAAA,KAAK,EAAE,KAAKC;AAJd,QAlGJ,EAyGG7C,qBAAqB,IACpBtC,kBAAkB,CAAClB,GAAnB,CAAuB,UAACsG,cAAD,EAAiBlF,KAAjB,EAA2B;AAChD,4BACE,gCAAC,iBAAD,CAAO,QAAP;AAAgB,UAAA,GAAG,EAAEA;AAArB,wBACE,gCAAC,kBAAD;AACE,UAAA,SAAS,EAAEW,OAAO,CAACqE,gBADrB;AAEE,UAAA,OAAO,EAAE,WAFX;AAGE,UAAA,KAAK,EAAC,oBAHR;AAIE,UAAA,WAAW,EAAC,2BAJd;AAKE,UAAA,KAAK,EAAE;AAAA,mBAAM,MAAI,CAACG,yBAAL,CAA+BnF,KAA/B,CAAN;AAAA;AALT,UADF,eAQE,gCAAC,8BAAD;AACE,UAAA,QAAQ,EAAEA,KADZ;AAEE,UAAA,YAAY,EAAEa,YAFhB;AAGE,UAAA,KAAK,EAAErC,KAHT;AAIE,UAAA,aAAa,EAAEoC,aAJjB;AAKE,UAAA,UAAU,EAAEsE,cALd;AAME,UAAA,cAAc,EAAE,MAAI,CAACtF,WANvB;AAOE,UAAA,kBAAkB,EAAEkB,kBAPtB;AAQE,UAAA,aAAa,EAAEkB;AARjB,UARF,CADF;AAqBD,OAtBD,CA1GJ,EAkIGQ,gBAAgB,iBACf,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAE/C,SAAS,CAACL,KAAjC;AAAwC,QAAA,SAAS,EAAEuB,OAAO,CAAC+D;AAA3D,sBACE,gCAAC,0BAAD;AACE,QAAA,SAAS,EAAE/D,OAAO,CAACgE,KADrB;AAEE,QAAA,MAAM,EAAEnG,KAAK,CAACiB,SAAN,IAAmB,EAF7B;AAGE,QAAA,QAAQ,EAAE,KAAK2F,eAHjB;AAIE,QAAA,YAAY,EAAEvE,YAJhB;AAKE,QAAA,KAAK,EAAEiC,cALT;AAME,QAAA,QAAQ,EAAE,KANZ;AAOE,QAAA,WAAW,EAAEE,WAPf;AAQE,QAAA,WAAW,EAAE,2BAAejD,MAAf,aAAeA,MAAf,uBAAeA,MAAM,CAAE8E,kBAAvB,EAA2C5D,sBAA3C,CARf;AASE,QAAA,UAAU,EAAEwB,iBATd;AAUE,QAAA,aAAa,EAAGlB,aAAa,IAAIA,aAAa,CAAC9B,SAAhC,IAA8C6D,oBAV/D;AAWE,QAAA,cAAc,EAAGhC,cAAc,IAAIA,cAAc,CAAC7B,SAAlC,IAAgD8D,qBAXlE;AAYE,QAAA,kBAAkB,EAAEzC,kBAZtB;AAaE,QAAA,uBAAuB,EAAE,CAAC;AAAEmB,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B,CAb3B;AAcE,QAAA,aAAa,EAAED;AAdjB,QADF,EAiBGc,cAAc,iBAAI;AAAK,QAAA,SAAS,EAAEnC,OAAO,CAACmE;AAAxB,SAAoChC,cAApC,CAjBrB,CAnIJ,EAwJGR,eAAe,iBACd,gCAAC,wBAAD;AAAgB,QAAA,QAAQ,EAAE9D,KAAK,CAACmB,QAAhC;AAA0C,QAAA,QAAQ,EAAE,KAAK0F,cAAzD;AAAyE,QAAA,WAAW,EAAErC;AAAtF,QAzJJ,CADF,CADF;AAgKD;;;EArbyBsC,kBAAMC,S;;;iCAArBjH,M,eACQ;AACjBqC,EAAAA,OAAO,EAAE6E,sBAAUC,MAAV,CAAiBC,UADT;AAEjB9E,EAAAA,aAAa,EAAE4E,sBAAUC,MAFR;AAGjBE,EAAAA,SAAS,EAAEH,sBAAUI,MAHJ;AAIjB7E,EAAAA,sBAAsB,EAAEyE,sBAAUK,IAJjB;AAKjBrH,EAAAA,KAAK,EAAEgH,sBAAUC,MAAV,CAAiBC,UALP;AAMjBjH,EAAAA,QAAQ,EAAE+G,sBAAUK,IAAV,CAAeH,UANR;AAOjBtH,EAAAA,GAAG,EAAEoH,sBAAUI,MAPE;AAQjB/E,EAAAA,YAAY,EAAE2E,sBAAUM,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEP,sBAAUK,IAAV,CAAeH,UADQ;AAE5B,cAAQF,sBAAUK,IAAV,CAAeH;AAFK,GAAhB,CARG;AAYjB5E,EAAAA,kBAAkB,EAAE0E,sBAAUM,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAEP,sBAAUK,IAAV,CAAeH,UADc;AAElC,cAAQF,sBAAUK,IAAV,CAAeH;AAFW,GAAhB;AAZH,C;;AAubrB,IAAMM,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBjB,IAAAA,gBAAgB,EAAE;AAChBkB,MAAAA,YAAY,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AADnB,KADO;AAIzBC,IAAAA,IAAI,EAAE;AACJC,MAAAA,UAAU,EAAEL,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAD7B;AAEJG,MAAAA,aAAa,EAAEN,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAFhC,KAJmB;AAQzB1B,IAAAA,cAAc,EAAE;AACd8B,MAAAA,KAAK,EAAE,MADO;AAEdF,MAAAA,UAAU,EAAEL,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAFnB;AAGdF,MAAAA,YAAY,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAHrB,KARS;AAazBK,IAAAA,KAAK,EAAE;AACLP,MAAAA,YAAY,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD9B,KAbkB;AAgBzBtB,IAAAA,SAAS,EAAE;AACT4B,MAAAA,QAAQ,EAAET,KAAK,CAACU,UAAN,CAAiBD,QAAjB,GAA4B,CAD7B;AAETE,MAAAA,KAAK,EAAEX,KAAK,CAACY,OAAN,CAAcC,KAAd,CAAoBC,IAFlB;AAGTT,MAAAA,UAAU,EAAEL,KAAK,CAACE,OAAN,CAAcC;AAHjB;AAhBc,GAAZ;AAAA,CAAf;;eAuBe,2BAAgB,wBAAWJ,MAAX,EAAmB1H,MAAnB,CAAhB,C","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n} from '@pie-lib/pie-toolbox/categorize';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { uid, withDragContext } from '@pie-lib/pie-toolbox/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\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 updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\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 //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\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 // ensure that maxChoicesPerCategory is reset if author switch back the corresponding switch (allowMaxChoicesPerCategory)\n updatedModel.maxChoicesPerCategory = updatedModel.allowMaxChoicesPerCategory\n ? updatedModel.maxChoicesPerCategory\n : 0;\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\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n\n return c.categoryCount || 0;\n };\n\n isAlertModalOpened = () => {\n const { model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const maxChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so modal should not be opened\n return maxChoicesPerCategory !== 0 ? maxChoices > maxChoicesPerCategory : false;\n };\n\n onAlertModalCancel = () => {\n const { model } = this.props;\n const maxChoices = getMaxCategoryChoices(model);\n this.updateModel({ maxChoicesPerCategory: maxChoices });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowAlternate = {},\n allowMultiplePlacements = {},\n baseInputConfiguration = {},\n categoriesPerRow = {},\n choicesPosition = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n maxPlacements = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n allowMaxAnswerChoices = {},\n } = configuration || {};\n const {\n allowAlternateEnabled,\n allowMaxChoicesPerCategory,\n errors,\n feedbackEnabled,\n maxChoicesPerCategory,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n extraCSSRules,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\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 // ensure categoryCount is set even though updatedModel hasn't been called\n c.categoryCount = this.checkAllowMultiplePlacements(model.allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\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: 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 maxAnswerChoices: allowMaxAnswerChoices.settings && numberField(allowMaxAnswerChoices.label, {\n label: '',\n min: choices?.length || 0,\n max: 30,\n }),\n allowMaxChoicesPerCategory: maxPlacements.settings && toggle(maxPlacements.label),\n maxChoicesPerCategory:\n allowMaxChoicesPerCategory === true &&\n numberField(maxPlacements.label, {\n label: '',\n min: 0,\n max: 30,\n }),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelProperties = {\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 const isOpened = this.isAlertModalOpened();\n const alertMaxChoicesMsg = translator.t('translation:categorize:maxChoicesPerCategoryRestriction', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <AlertDialog\n title={'Warning'}\n text={alertMaxChoicesMsg}\n open={isOpened}\n onClose={this.onAlertModalCancel}\n />\n }\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\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 mathMlOptions={mathMlOptions}\n />\n\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 {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n error={rationaleError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -22,8 +22,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
22
22
|
|
|
23
23
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
24
24
|
|
|
25
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
26
|
-
|
|
27
25
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
28
26
|
|
|
29
27
|
var _categorize = require("@pie-lib/pie-toolbox/categorize");
|
|
@@ -38,38 +36,18 @@ var _defaults = _interopRequireDefault(require("./defaults"));
|
|
|
38
36
|
|
|
39
37
|
var _utils = require("./utils");
|
|
40
38
|
|
|
41
|
-
var _excluded = ["alternateResponses"];
|
|
42
|
-
|
|
43
39
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
44
40
|
|
|
45
41
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
46
42
|
|
|
47
43
|
var translator = _translator["default"].translator;
|
|
48
44
|
|
|
49
|
-
// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)
|
|
50
|
-
// this function is used in configure part, too
|
|
51
|
-
var disableAlternateResponses = function disableAlternateResponses(question) {
|
|
52
|
-
var _ref = question || {},
|
|
53
|
-
correctResponse = _ref.correctResponse;
|
|
54
|
-
|
|
55
|
-
correctResponse = correctResponse || [];
|
|
56
|
-
var mappedCorrectResponse = correctResponse.map(function (cr) {
|
|
57
|
-
var alternateResponses = cr.alternateResponses,
|
|
58
|
-
response = (0, _objectWithoutProperties2["default"])(cr, _excluded);
|
|
59
|
-
return response;
|
|
60
|
-
});
|
|
61
|
-
return _objectSpread(_objectSpread({}, question), {}, {
|
|
62
|
-
correctResponse: mappedCorrectResponse,
|
|
63
|
-
allowAlternateEnabled: false
|
|
64
|
-
});
|
|
65
|
-
};
|
|
66
|
-
|
|
67
45
|
var getPartialScore = function getPartialScore(correctResponse, builtCategories) {
|
|
68
46
|
// in the resulted best scenario we make a sum with all the correct responses
|
|
69
47
|
// and all the placements
|
|
70
|
-
var _builtCategories$redu = builtCategories.reduce(function (acc,
|
|
71
|
-
var
|
|
72
|
-
choices =
|
|
48
|
+
var _builtCategories$redu = builtCategories.reduce(function (acc, _ref) {
|
|
49
|
+
var _ref$choices = _ref.choices,
|
|
50
|
+
choices = _ref$choices === void 0 ? [] : _ref$choices;
|
|
73
51
|
return {
|
|
74
52
|
placements: acc.placements + choices.length,
|
|
75
53
|
score: acc.score + choices.filter(function (ch) {
|
|
@@ -84,8 +62,8 @@ var getPartialScore = function getPartialScore(correctResponse, builtCategories)
|
|
|
84
62
|
score = _builtCategories$redu.score; // in the correct response, we make a sum of the max possible score
|
|
85
63
|
|
|
86
64
|
|
|
87
|
-
var _correctResponse$redu = correctResponse.reduce(function (acc,
|
|
88
|
-
var choices =
|
|
65
|
+
var _correctResponse$redu = correctResponse.reduce(function (acc, _ref2) {
|
|
66
|
+
var choices = _ref2.choices;
|
|
89
67
|
return {
|
|
90
68
|
maxScore: acc.maxScore + choices.length
|
|
91
69
|
};
|
|
@@ -119,15 +97,15 @@ var getTotalScore = function getTotalScore(question, session, env) {
|
|
|
119
97
|
return 0;
|
|
120
98
|
}
|
|
121
99
|
|
|
122
|
-
var
|
|
123
|
-
categories =
|
|
124
|
-
choices =
|
|
100
|
+
var _ref3 = question || {},
|
|
101
|
+
categories = _ref3.categories,
|
|
102
|
+
choices = _ref3.choices;
|
|
125
103
|
|
|
126
|
-
var
|
|
127
|
-
correctResponse =
|
|
104
|
+
var _ref4 = question || {},
|
|
105
|
+
correctResponse = _ref4.correctResponse;
|
|
128
106
|
|
|
129
|
-
var
|
|
130
|
-
answers =
|
|
107
|
+
var _ref5 = session || {},
|
|
108
|
+
answers = _ref5.answers;
|
|
131
109
|
|
|
132
110
|
answers = answers || [];
|
|
133
111
|
correctResponse = correctResponse || []; // this function is used in pie-ui/categorize as well, in order to get the best scenario
|
|
@@ -198,8 +176,8 @@ exports.normalize = normalize;
|
|
|
198
176
|
|
|
199
177
|
var model = function model(question, session, env, updateSession) {
|
|
200
178
|
return new Promise( /*#__PURE__*/function () {
|
|
201
|
-
var
|
|
202
|
-
var normalizedQuestion, answerCorrectness,
|
|
179
|
+
var _ref6 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve) {
|
|
180
|
+
var normalizedQuestion, answerCorrectness, _ref7, mode, role, categories, categoriesPerRow, choicesLabel, choicesPosition, correctResponse, feedback, feedbackEnabled, promptEnabled, prompt, rowLabels, rationaleEnabled, rationale, teacherInstructionsEnabled, teacherInstructions, language, maxChoicesPerCategory, extraCSSRules, minRowHeight, fontSizeFactor, autoplayAudioEnabled, completeAudioEnabled, customAudioButton, choices, note, fb, lockChoiceOrder, filteredCorrectResponse, alternates, out;
|
|
203
181
|
|
|
204
182
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
205
183
|
while (1) {
|
|
@@ -211,7 +189,7 @@ var model = function model(question, session, env, updateSession) {
|
|
|
211
189
|
|
|
212
190
|
case 3:
|
|
213
191
|
answerCorrectness = _context.sent;
|
|
214
|
-
|
|
192
|
+
_ref7 = env || {}, mode = _ref7.mode, role = _ref7.role;
|
|
215
193
|
categories = normalizedQuestion.categories, categoriesPerRow = normalizedQuestion.categoriesPerRow, choicesLabel = normalizedQuestion.choicesLabel, choicesPosition = normalizedQuestion.choicesPosition, correctResponse = normalizedQuestion.correctResponse, feedback = normalizedQuestion.feedback, feedbackEnabled = normalizedQuestion.feedbackEnabled, promptEnabled = normalizedQuestion.promptEnabled, prompt = normalizedQuestion.prompt, rowLabels = normalizedQuestion.rowLabels, rationaleEnabled = normalizedQuestion.rationaleEnabled, rationale = normalizedQuestion.rationale, teacherInstructionsEnabled = normalizedQuestion.teacherInstructionsEnabled, teacherInstructions = normalizedQuestion.teacherInstructions, language = normalizedQuestion.language, maxChoicesPerCategory = normalizedQuestion.maxChoicesPerCategory, extraCSSRules = normalizedQuestion.extraCSSRules, minRowHeight = normalizedQuestion.minRowHeight, fontSizeFactor = normalizedQuestion.fontSizeFactor, autoplayAudioEnabled = normalizedQuestion.autoplayAudioEnabled, completeAudioEnabled = normalizedQuestion.completeAudioEnabled, customAudioButton = normalizedQuestion.customAudioButton;
|
|
216
194
|
choices = normalizedQuestion.choices, note = normalizedQuestion.note;
|
|
217
195
|
lockChoiceOrder = (0, _controllerUtils.lockChoices)(normalizedQuestion, session, env);
|
|
@@ -300,7 +278,7 @@ var model = function model(question, session, env, updateSession) {
|
|
|
300
278
|
}));
|
|
301
279
|
|
|
302
280
|
return function (_x) {
|
|
303
|
-
return
|
|
281
|
+
return _ref6.apply(this, arguments);
|
|
304
282
|
};
|
|
305
283
|
}());
|
|
306
284
|
};
|
|
@@ -324,9 +302,9 @@ exports.outcome = outcome;
|
|
|
324
302
|
|
|
325
303
|
var createCorrectResponseSession = function createCorrectResponseSession(question, env) {
|
|
326
304
|
return new Promise(function (resolve) {
|
|
327
|
-
var
|
|
328
|
-
mode =
|
|
329
|
-
role =
|
|
305
|
+
var _ref8 = env || {},
|
|
306
|
+
mode = _ref8.mode,
|
|
307
|
+
role = _ref8.role;
|
|
330
308
|
|
|
331
309
|
if (mode !== 'evaluate' && role === 'instructor') {
|
|
332
310
|
var correctResponse = question.correctResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","disableAlternateResponses","question","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled","getPartialScore","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","c","alternate","getTotalScore","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","extraCSSRules","minRowHeight","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","note","lockChoiceOrder","filteredCorrectResponse","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxAnswerChoices","minChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\n// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n// this function is used in configure part, too\nconst disableAlternateResponses = (question) => {\n let { correctResponse } = question || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...question,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n};\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n extraCSSRules,\n minRowHeight,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n extraCSSRules,\n fontSizeFactor,\n minRowHeight: minRowHeight,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse, maxAnswerChoices } = model;\n const {\n minChoices = 1,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.choicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","getPartialScore","correctResponse","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","map","c","alternateResponses","alternate","getTotalScore","question","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","extraCSSRules","minRowHeight","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","note","lockChoiceOrder","filteredCorrectResponse","response","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxAnswerChoices","minChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n extraCSSRules,\n minRowHeight,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n extraCSSRules,\n fontSizeFactor,\n minRowHeight: minRowHeight,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse, maxAnswerChoices } = model;\n const {\n minChoices = 1,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.choicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
@@ -36,12 +36,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
36
36
|
|
|
37
37
|
var _styles = require("@material-ui/core/styles");
|
|
38
38
|
|
|
39
|
-
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
40
|
-
|
|
41
39
|
var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
|
|
42
40
|
|
|
43
|
-
var _chunk = _interopRequireDefault(require("lodash/chunk"));
|
|
44
|
-
|
|
45
41
|
var _gridContent = _interopRequireDefault(require("./grid-content"));
|
|
46
42
|
|
|
47
43
|
var _category = _interopRequireWildcard(require("./category"));
|
|
@@ -79,7 +75,12 @@ var Categories = /*#__PURE__*/function (_React$Component) {
|
|
|
79
75
|
minRowHeight = model.minRowHeight; // split categories into an array of arrays (inner array),
|
|
80
76
|
// where each inner array represents how many categories should be displayed on one row
|
|
81
77
|
|
|
82
|
-
var chunkedCategories =
|
|
78
|
+
var chunkedCategories = [];
|
|
79
|
+
var cats = categories || [];
|
|
80
|
+
|
|
81
|
+
for (var i = 0; i < cats.length; i += categoriesPerRow) {
|
|
82
|
+
chunkedCategories.push(cats.slice(i, i + categoriesPerRow));
|
|
83
|
+
}
|
|
83
84
|
|
|
84
85
|
var hasNonEmptyString = function hasNonEmptyString(array) {
|
|
85
86
|
var found = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/categorize/categories.jsx"],"names":["Categories","props","classes","categories","model","disabled","onDropChoice","onRemoveChoice","rowLabels","categoriesPerRow","minRowHeight","chunkedCategories","hasNonEmptyString","array","found","forEach","element","trim","Math","ceil","
|
|
1
|
+
{"version":3,"sources":["../../src/categorize/categories.jsx"],"names":["Categories","props","classes","categories","model","disabled","onDropChoice","onRemoveChoice","rowLabels","categoriesPerRow","minRowHeight","chunkedCategories","cats","i","length","push","slice","hasNonEmptyString","array","found","forEach","element","trim","Math","ceil","map","cat","rowIndex","items","c","columnIndex","display","rowLabel","__html","categoryWrapper","label","h","id","category","concat","Array","fill","value","index","React","Component","PropTypes","object","isRequired","arrayOf","shape","CategoryType","number","bool","func","styles","theme","flex","color","text","backgroundColor","background","textAlign","paddingTop","spacing","unit","alignItems","justifyContent","marginRight","flexDirection"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nimport GridContent from './grid-content';\nimport Category, { CategoryType } from './category';\n\nexport { CategoryType };\n\nexport class Categories extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n categories: PropTypes.arrayOf(PropTypes.shape(CategoryType)),\n model: PropTypes.shape({\n categoriesPerRow: PropTypes.number,\n }),\n disabled: PropTypes.bool,\n onDropChoice: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n rowLabels: PropTypes.array\n };\n\n static defaultProps = {\n model: {\n categoriesPerRow: 1,\n },\n };\n\n render() {\n const { classes, categories, model, disabled, onDropChoice, onRemoveChoice, rowLabels } = this.props;\n const { categoriesPerRow, minRowHeight } = model;\n\n // split categories into an array of arrays (inner array),\n // where each inner array represents how many categories should be displayed on one row\n const chunkedCategories = [];\n const cats = categories || [];\n for (let i = 0; i < cats.length; i += categoriesPerRow) {\n chunkedCategories.push(cats.slice(i, i + categoriesPerRow));\n }\n\n const hasNonEmptyString = (array) => {\n let found = false;\n\n (array || []).forEach(element => {\n if (typeof element === 'string' && element.trim() !== '' && element.trim() !== '<div></div>') {\n found = true;\n }\n });\n\n return found;\n };\n\n return (\n <GridContent\n columns={categoriesPerRow}\n className={classes.categories}\n rows={Math.ceil(categories.length / categoriesPerRow) * 2}\n >\n {chunkedCategories.map((cat, rowIndex) => {\n let items = [];\n\n // for each inner array of categories, create a row with category titles\n // first cell of row has to be the row label\n cat.forEach((c, columnIndex) => {\n items.push(\n <div style={{ display: 'flex' }}>\n {columnIndex === 0 && hasNonEmptyString(rowLabels) ? (\n <div\n key={rowIndex}\n className={classes.rowLabel}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n />\n ) : null}\n <div className={classes.categoryWrapper}>\n <div\n className={classes.label}\n key={`category-label-${rowIndex}-${columnIndex}`}\n dangerouslySetInnerHTML={{ __html: c.label }}\n />\n\n <Category\n minRowHeight={minRowHeight}\n onDropChoice={(h) => onDropChoice(c.id, h)}\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n className={classes.category}\n key={`category-element-${rowIndex}-${columnIndex}`}\n {...c}\n />\n </div>\n </div>,\n );\n });\n\n // if the last row has fewer categories than max on a row, fill the spaces with divs\n items = items.concat(\n Array(categoriesPerRow - cat.length)\n .fill(<div />)\n .map((value, index) => <div key={`fill-space-final-${index}`} />),\n );\n\n return items;\n })}\n </GridContent>\n );\n }\n}\n\nconst styles = (theme) => ({\n categories: {\n flex: 1,\n },\n label: {\n color: color.text(),\n backgroundColor: color.background(),\n textAlign: 'center',\n paddingTop: theme.spacing.unit,\n },\n rowLabel: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n flex: 0.5,\n marginRight: '12px'\n },\n categoryWrapper: {\n display: 'flex',\n flex: '2',\n flexDirection: 'column'\n },\n});\nexport default withStyles(styles)(Categories);\n"],"file":"categories.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "9.13.10-next.
|
|
7
|
+
"version": "9.13.10-next.8+1b882957d",
|
|
8
8
|
"description": "",
|
|
9
9
|
"author": "pie framework developers",
|
|
10
10
|
"license": "ISC",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"react-dnd": "^14.0.5",
|
|
21
21
|
"react-dom": "^16.8.1"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "1b882957d8a58714cb1617f5145a970b04bd45e9",
|
|
24
24
|
"scripts": {
|
|
25
25
|
"postpublish": "../../scripts/postpublish"
|
|
26
26
|
},
|