@pie-element/categorize 7.5.2-next.98 → 7.6.1-next.14

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/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [7.6.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@7.5.1...@pie-element/categorize@7.6.0) (2023-01-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **categorize:** avoid dropping choice when user tries to move it to an alternate with other index-1967 ([8081621](https://github.com/pie-framework/pie-elements/commit/808162197c5cbf257bf503f2b7d4ea28111d073b))
12
+ * **categorize:** delete removeTilesAfterPlacing from generate method-PD-2169 ([2de0c55](https://github.com/pie-framework/pie-elements/commit/2de0c5567fa65f54609062e680369106b512d0ed))
13
+ * **categorize:** transform to else if Pd-1967 ([b124162](https://github.com/pie-framework/pie-elements/commit/b124162ccfcccd0600ca0fcee1431796cc5a7b53))
14
+
15
+
16
+ ### Features
17
+
18
+ * update pie-libs ([b174476](https://github.com/pie-framework/pie-elements/commit/b174476729119a0689f1f8adfc8c235246676cab))
19
+ * update pie-libs ([f72c3c8](https://github.com/pie-framework/pie-elements/commit/f72c3c8d8bc9bbf061bb81502317157a63c22972))
20
+ * update pie-libs ([8490729](https://github.com/pie-framework/pie-elements/commit/8490729a2389d36fd3968f0806119fde96577842))
21
+ * **categorize:** added configuration prop to hide the settings panel PD-1999 ([405c321](https://github.com/pie-framework/pie-elements/commit/405c3215f6953d9326d1eee25444a2bf00167d95))
22
+ * **categorize:** ensure no extra choices in alternate when categoryCount 1-PD-1967 ([7363bb7](https://github.com/pie-framework/pie-elements/commit/7363bb76767418239fa7b250331dbc4a3d4ae9ac))
23
+ * **categorize:** Ensure that there are no extra choices in alternate, add cond for canDrag-PD-1967 ([dc568f9](https://github.com/pie-framework/pie-elements/commit/dc568f9822569c75394358879318468595f14033))
24
+ * **categorize:** rearrange the choices via drag and drop-PD-1967 ([c1480a1](https://github.com/pie-framework/pie-elements/commit/c1480a168d6bb50c78e603f3c6ba04bb3ed1c6be))
25
+
26
+
27
+
28
+
29
+
6
30
  ## [7.5.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@7.5.0...@pie-element/categorize@7.5.1) (2022-12-21)
7
31
 
8
32
 
@@ -3,6 +3,29 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [6.6.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@6.5.1...@pie-element/categorize-configure@6.6.0) (2023-01-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **categorize:** avoid dropping choice when user tries to move it to an alternate with other index-1967 ([8081621](https://github.com/pie-framework/pie-elements/commit/808162197c5cbf257bf503f2b7d4ea28111d073b))
12
+ * **categorize:** transform to else if Pd-1967 ([b124162](https://github.com/pie-framework/pie-elements/commit/b124162ccfcccd0600ca0fcee1431796cc5a7b53))
13
+
14
+
15
+ ### Features
16
+
17
+ * update pie-libs ([b174476](https://github.com/pie-framework/pie-elements/commit/b174476729119a0689f1f8adfc8c235246676cab))
18
+ * update pie-libs ([f72c3c8](https://github.com/pie-framework/pie-elements/commit/f72c3c8d8bc9bbf061bb81502317157a63c22972))
19
+ * update pie-libs ([8490729](https://github.com/pie-framework/pie-elements/commit/8490729a2389d36fd3968f0806119fde96577842))
20
+ * **categorize:** added configuration prop to hide the settings panel PD-1999 ([405c321](https://github.com/pie-framework/pie-elements/commit/405c3215f6953d9326d1eee25444a2bf00167d95))
21
+ * **categorize:** ensure no extra choices in alternate when categoryCount 1-PD-1967 ([7363bb7](https://github.com/pie-framework/pie-elements/commit/7363bb76767418239fa7b250331dbc4a3d4ae9ac))
22
+ * **categorize:** Ensure that there are no extra choices in alternate, add cond for canDrag-PD-1967 ([dc568f9](https://github.com/pie-framework/pie-elements/commit/dc568f9822569c75394358879318468595f14033))
23
+ * **categorize:** rearrange the choices via drag and drop-PD-1967 ([c1480a1](https://github.com/pie-framework/pie-elements/commit/c1480a168d6bb50c78e603f3c6ba04bb3ed1c6be))
24
+
25
+
26
+
27
+
28
+
6
29
  ## [6.5.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@6.5.0...@pie-element/categorize-configure@6.5.1) (2022-12-21)
7
30
 
8
31
 
@@ -80,11 +80,16 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
80
80
  }
81
81
 
82
82
  _this = _super.call.apply(_super, [this].concat(args));
83
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addChoiceToCategory", function (choice, categoryId) {
83
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addChoiceToCategory", function (addedChoice, categoryId) {
84
84
  var _this$props = _this.props,
85
85
  altIndex = _this$props.altIndex,
86
- correctResponse = _this$props.model.correctResponse,
86
+ _this$props$model = _this$props.model,
87
+ correctResponse = _this$props$model.correctResponse,
88
+ choices = _this$props$model.choices,
87
89
  onModelChanged = _this$props.onModelChanged;
90
+ var choice = choices.find(function (c) {
91
+ return c.id === addedChoice.id;
92
+ });
88
93
  correctResponse.forEach(function (a) {
89
94
  if (a.category === categoryId) {
90
95
  a.alternateResponses = a.alternateResponses || [];
@@ -93,8 +98,34 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
93
98
  a.alternateResponses[altIndex] = [];
94
99
  }
95
100
 
96
- a.alternateResponses[altIndex].push(choice.id);
101
+ a.alternateResponses[altIndex].push(addedChoice.id);
102
+
103
+ if (choice.categoryCount && choice.categoryCount !== 0) {
104
+ a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce(function (acc, currentValue) {
105
+ if (currentValue === choice.id) {
106
+ var foundIndex = acc.findIndex(function (c) {
107
+ return c === choice.id;
108
+ });
109
+
110
+ if (foundIndex === -1) {
111
+ acc.push(currentValue);
112
+ }
113
+ } else {
114
+ acc.push(currentValue);
115
+ }
116
+
117
+ return acc;
118
+ }, []);
119
+ }
120
+
97
121
  return a;
122
+ } else {
123
+ if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {
124
+ a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter(function (c) {
125
+ return c !== addedChoice.id;
126
+ });
127
+ return a;
128
+ }
98
129
  }
99
130
 
100
131
  return a;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/alternateResponses.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","AlternateResponses","choice","categoryId","props","altIndex","correctResponse","model","onModelChanged","forEach","a","category","alternateResponses","push","id","choiceId","from","to","choiceIndex","alternateIndex","choices","find","categoryCount","filter","altId","classes","className","imageSupport","spellCheck","uploadSoundSupport","categoriesPerRow","errors","duplicateAlternate","holderStyle","isDuplicated","index","map","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","shape","add","func","object","string","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Category from './category';\nimport { moveChoiceToAlternate } from '@pie-lib/categorize';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n addChoiceToCategory = (choice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse },\n onModelChanged,\n } = this.props;\n\n correctResponse.forEach((a) => {\n if (a.category === categoryId) {\n a.alternateResponses = a.alternateResponses || [];\n\n if (!a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = [];\n }\n\n a.alternateResponses[altIndex].push(choice.id);\n\n return a;\n }\n\n return a;\n });\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [] } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n correctResponse = moveChoiceToAlternate(\n choiceId,\n from,\n to,\n choiceIndex,\n correctResponse,\n alternateIndex,\n choice?.categoryCount,\n );\n\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice) => {\n const {\n altIndex,\n model: { correctResponse },\n onModelChanged,\n } = this.props;\n\n correctResponse.forEach((a) => {\n if (a.category === category.id) {\n if (a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((altId) => altId !== choice.id);\n }\n }\n\n return a;\n });\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const { altIndex, model, classes, className, categories, imageSupport, spellCheck, uploadSoundSupport } =\n this.props;\n const { categoriesPerRow, errors } = model;\n const { duplicateAlternate } = errors || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => (\n <Category\n key={index}\n alternateResponseIndex={altIndex}\n imageSupport={imageSupport}\n isDuplicated={isDuplicated && duplicateAlternate.category === category.id}\n category={category}\n spellCheck={spellCheck}\n onAddChoice={this.addChoiceToCategory}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n onMoveChoice={(choiceId, from, to, choiceIndex, alternateIndex) =>\n this.moveChoice(choiceId, from, to, choiceIndex, alternateIndex)\n }\n uploadSoundSupport={uploadSoundSupport}\n />\n ))}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
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","onModelChanged","choice","find","c","id","forEach","a","category","alternateResponses","push","categoryCount","reduce","acc","currentValue","foundIndex","findIndex","filter","choiceId","from","to","choiceIndex","alternateIndex","altId","classes","className","imageSupport","spellCheck","uploadSoundSupport","categoriesPerRow","errors","duplicateAlternate","holderStyle","isDuplicated","index","map","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","shape","add","func","object","string","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Category from './category';\nimport { moveChoiceToAlternate } from '@pie-lib/categorize';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse, choices },\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 onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [] } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n correctResponse = moveChoiceToAlternate(\n choiceId,\n from,\n to,\n choiceIndex,\n correctResponse,\n alternateIndex,\n choice?.categoryCount,\n );\n\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice) => {\n const {\n altIndex,\n model: { correctResponse },\n onModelChanged,\n } = this.props;\n\n correctResponse.forEach((a) => {\n if (a.category === category.id) {\n if (a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((altId) => altId !== choice.id);\n }\n }\n\n return a;\n });\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const { altIndex, model, classes, className, categories, imageSupport, spellCheck, uploadSoundSupport } =\n this.props;\n const { categoriesPerRow, errors } = model;\n const { duplicateAlternate } = errors || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => (\n <Category\n key={index}\n alternateResponseIndex={altIndex}\n imageSupport={imageSupport}\n isDuplicated={isDuplicated && duplicateAlternate.category === category.id}\n category={category}\n spellCheck={spellCheck}\n onAddChoice={this.addChoiceToCategory}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n onMoveChoice={(choiceId, from, to, choiceIndex, alternateIndex) =>\n this.moveChoice(choiceId, from, to, choiceIndex, alternateIndex)\n }\n uploadSoundSupport={uploadSoundSupport}\n />\n ))}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
@@ -33,7 +33,7 @@ var _drag = require("@pie-lib/drag");
33
33
 
34
34
  var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
35
35
 
36
- var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
36
+ var _RemoveCircleOutline = _interopRequireDefault(require("@material-ui/icons/RemoveCircleOutline"));
37
37
 
38
38
  var _renderUi = require("@pie-lib/render-ui");
39
39
 
@@ -94,7 +94,7 @@ var ChoicePreview = /*#__PURE__*/function (_React$Component) {
94
94
  "aria-label": "delete",
95
95
  className: classes["delete"],
96
96
  onClick: this["delete"]
97
- }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null))) : null);
97
+ }, /*#__PURE__*/_react["default"].createElement(_RemoveCircleOutline["default"], null))) : null);
98
98
  }
99
99
  }]);
100
100
  return ChoicePreview;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","content","React","Component","PropTypes","object","isRequired","string","func","styles","position","right","top"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,a;;;;;;;;;;;;;;;+FASF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAsF,KAAKF,KAA3F;AAAA,UAAQG,sBAAR,gBAAQA,sBAAR;AAAA,UAAgCC,QAAhC,gBAAgCA,QAAhC;AAAA,UAA0CC,OAA1C,gBAA0CA,OAA1C;AAAA,UAAmDC,SAAnD,gBAAmDA,SAAnD;AAAA,UAA8DJ,MAA9D,gBAA8DA,MAA9D;AAAA,UAAsEK,WAAtE,gBAAsEA,WAAtE;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWF,OAAO,CAACG,aAAnB,EAAkCF,SAAlC;AAAhB,SACGJ,MAAM,gBACL,gCAAC,YAAD;AAAQ,QAAA,sBAAsB,EAAEC,sBAAhC;AAAwD,QAAA,QAAQ,EAAEC,QAAlE;AAA4E,QAAA,MAAM,EAAEF,MAApF;AAA4F,QAAA,WAAW,EAAEK,WAAzG;AAAsH,QAAA,cAAc,EAAE;AAAA,iBAAM,MAAI,UAAJ,EAAN;AAAA;AAAtI,sBACE,gCAAC,qBAAD;AAAa,QAAA,IAAI,EAAEL,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEO;AAA3B,QADF,eAEE,gCAAC,sBAAD;AAAY,QAAA,KAAK,EAAC,WAAlB;AAA8B,sBAAW,QAAzC;AAAkD,QAAA,SAAS,EAAEJ,OAAO,UAApE;AAA6E,QAAA,OAAO,EAAE;AAAtF,sBACE,gCAAC,kBAAD,OADF,CAFF,CADK,GAOH,IARN,CADF;AAYD;;;EA5BgCK,kBAAMC,S;;;iCAA5BZ,a,eACQ;AACjBM,EAAAA,OAAO,EAAEO,sBAAUC,MAAV,CAAiBC,UADT;AAEjBR,EAAAA,SAAS,EAAEM,sBAAUG,MAFJ;AAGjBb,EAAAA,MAAM,EAAEU,sBAAUC,MAAV,CAAiBC,UAHR;AAIjBb,EAAAA,QAAQ,EAAEW,sBAAUI,IAAV,CAAeF;AAJR,C;iCADRf,a,kBAOW,E;;AAuBxB,IAAMkB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBT,IAAAA,aAAa,EAAE;AACbU,MAAAA,QAAQ,EAAE;AADG,KADK;AAIpB,cAAQ;AACNA,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC;AAJY,GAAP;AAAA,CAAf;;eAUe,wBAAWH,MAAX,EAAmBlB,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Choice } from '@pie-lib/drag';\nimport IconButton from '@material-ui/core/IconButton';\nimport Delete from '@material-ui/icons/Delete';\nimport { HtmlAndMath } from '@pie-lib/render-ui';\n\nexport class ChoicePreview extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n onDelete: PropTypes.func.isRequired,\n };\n static defaultProps = {};\n\n delete = () => {\n const { onDelete, choice } = this.props;\n onDelete(choice);\n };\n\n render() {\n const { alternateResponseIndex, category, classes, className, choice, choiceIndex } = this.props;\n return (\n <div className={classNames(classes.choicePreview, className)}>\n {choice ? (\n <Choice alternateResponseIndex={alternateResponseIndex} category={category} choice={choice} choiceIndex={choiceIndex} onRemoveChoice={() => this.delete()}>\n <HtmlAndMath html={choice?.content} />\n <IconButton color=\"secondary\" aria-label=\"delete\" className={classes.delete} onClick={this.delete}>\n <Delete />\n </IconButton>\n </Choice>\n ) : null}\n </div>\n );\n }\n}\nconst styles = () => ({\n choicePreview: {\n position: 'relative',\n },\n delete: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","content","React","Component","PropTypes","object","isRequired","string","func","styles","position","right","top"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,a;;;;;;;;;;;;;;;+FASF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAsF,KAAKF,KAA3F;AAAA,UAAQG,sBAAR,gBAAQA,sBAAR;AAAA,UAAgCC,QAAhC,gBAAgCA,QAAhC;AAAA,UAA0CC,OAA1C,gBAA0CA,OAA1C;AAAA,UAAmDC,SAAnD,gBAAmDA,SAAnD;AAAA,UAA8DJ,MAA9D,gBAA8DA,MAA9D;AAAA,UAAsEK,WAAtE,gBAAsEA,WAAtE;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWF,OAAO,CAACG,aAAnB,EAAkCF,SAAlC;AAAhB,SACGJ,MAAM,gBACL,gCAAC,YAAD;AAAQ,QAAA,sBAAsB,EAAEC,sBAAhC;AAAwD,QAAA,QAAQ,EAAEC,QAAlE;AAA4E,QAAA,MAAM,EAAEF,MAApF;AAA4F,QAAA,WAAW,EAAEK,WAAzG;AAAsH,QAAA,cAAc,EAAE;AAAA,iBAAM,MAAI,UAAJ,EAAN;AAAA;AAAtI,sBACE,gCAAC,qBAAD;AAAa,QAAA,IAAI,EAAEL,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEO;AAA3B,QADF,eAEE,gCAAC,sBAAD;AAAY,QAAA,KAAK,EAAC,WAAlB;AAA8B,sBAAW,QAAzC;AAAkD,QAAA,SAAS,EAAEJ,OAAO,UAApE;AAA6E,QAAA,OAAO,EAAE;AAAtF,sBACE,gCAAC,+BAAD,OADF,CAFF,CADK,GAOH,IARN,CADF;AAYD;;;EA5BgCK,kBAAMC,S;;;iCAA5BZ,a,eACQ;AACjBM,EAAAA,OAAO,EAAEO,sBAAUC,MAAV,CAAiBC,UADT;AAEjBR,EAAAA,SAAS,EAAEM,sBAAUG,MAFJ;AAGjBb,EAAAA,MAAM,EAAEU,sBAAUC,MAAV,CAAiBC,UAHR;AAIjBb,EAAAA,QAAQ,EAAEW,sBAAUI,IAAV,CAAeF;AAJR,C;iCADRf,a,kBAOW,E;;AAuBxB,IAAMkB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBT,IAAAA,aAAa,EAAE;AACbU,MAAAA,QAAQ,EAAE;AADG,KADK;AAIpB,cAAQ;AACNA,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC;AAJY,GAAP;AAAA,CAAf;;eAUe,wBAAWH,MAAX,EAAmBlB,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Choice } from '@pie-lib/drag';\nimport IconButton from '@material-ui/core/IconButton';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport { HtmlAndMath } from '@pie-lib/render-ui';\n\nexport class ChoicePreview extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n onDelete: PropTypes.func.isRequired,\n };\n static defaultProps = {};\n\n delete = () => {\n const { onDelete, choice } = this.props;\n onDelete(choice);\n };\n\n render() {\n const { alternateResponseIndex, category, classes, className, choice, choiceIndex } = this.props;\n return (\n <div className={classNames(classes.choicePreview, className)}>\n {choice ? (\n <Choice alternateResponseIndex={alternateResponseIndex} category={category} choice={choice} choiceIndex={choiceIndex} onRemoveChoice={() => this.delete()}>\n <HtmlAndMath html={choice?.content} />\n <IconButton color=\"secondary\" aria-label=\"delete\" className={classes.delete} onClick={this.delete}>\n <RemoveCircleOutlineIcon />\n </IconButton>\n </Choice>\n ) : null}\n </div>\n );\n }\n}\nconst styles = () => ({\n choicePreview: {\n position: 'relative',\n },\n delete: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
@@ -159,7 +159,8 @@ var spec = {
159
159
 
160
160
  if (item.from && item.alternateResponseIndex === props.alternateResponseIndex) {
161
161
  props.onMoveChoice(item.choiceId, item.from, props.categoryId, item.choiceIndex, item.alternateResponseIndex);
162
- } else {
162
+ } else if (!item.from) {
163
+ // avoid dropping choice when user tries to move it to an alternate with other index
163
164
  props.onDropChoice(item, props.categoryId);
164
165
  }
165
166
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/droppable-placeholder.jsx"],"names":["log","Helper","helper","display","alignItems","fontSize","color","width","height","classes","Previews","alternateResponseIndex","category","choices","onDeleteChoice","map","c","index","choice","propTypes","PropTypes","number","object","array","func","DroppablePlaceHolder","props","isOver","className","connectDropTarget","droppablePlaceholder","placeHolder","length","React","Component","isRequired","string","onDropChoice","onMoveChoice","bool","categoryId","styles","minHeight","Styled","spec","drop","monitor","item","getItem","from","choiceId","choiceIndex","canDrop","disabled","WithTarget","uid","connect","dropTarget","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport ChoicePreview from './choice-preview';\nimport { DropTarget } from 'react-dnd';\nimport { uid, PlaceHolder } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:categorize:configure');\n\nconst Helper = withStyles(() => ({\n helper: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n color: 'rgba(0,0,0,0.4)',\n width: '100%',\n height: '100%',\n },\n}))(({ classes }) => <div className={classes.helper}>Drag your correct answers here</div>);\n\nconst Previews = ({ alternateResponseIndex, category, choices, onDeleteChoice }) => (\n <React.Fragment>\n {choices.map(\n (c, index) =>\n c && (\n <ChoicePreview\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={c}\n key={index}\n choiceIndex={index}\n onDelete={(choice) => onDeleteChoice(choice, index)}\n />\n ),\n )}\n </React.Fragment>\n);\n\nPreviews.propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n choices: PropTypes.array,\n onDeleteChoice: PropTypes.func,\n};\n\nexport class DroppablePlaceHolder extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n connectDropTarget: PropTypes.func.isRequired,\n choices: PropTypes.array,\n onDropChoice: PropTypes.func.isRequired,\n onMoveChoice: PropTypes.func,\n isOver: PropTypes.bool,\n onDeleteChoice: PropTypes.func,\n categoryId: PropTypes.string.isRequired,\n };\n\n static defaultProps = {};\n render() {\n const { alternateResponseIndex, isOver, category, choices, classes, className, connectDropTarget, onDeleteChoice } =\n this.props;\n\n return connectDropTarget(\n <div className={classNames(classes.droppablePlaceholder, className)}>\n <PlaceHolder isOver={isOver} className={classes.placeHolder}>\n {(choices || []).length === 0 ? (\n <Helper />\n ) : (\n <Previews\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={choices}\n onDeleteChoice={onDeleteChoice}\n />\n )}\n </PlaceHolder>\n </div>,\n );\n }\n}\nconst styles = () => ({\n droppablePlaceholder: {\n minHeight: '100px',\n },\n placeHolder: {\n width: '100%',\n minHeight: '100px',\n height: 'auto',\n },\n});\n\nconst Styled = withStyles(styles)(DroppablePlaceHolder);\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n\n if (item.from && item.alternateResponseIndex === props.alternateResponseIndex) {\n props.onMoveChoice(item.choiceId, item.from, props.categoryId, item.choiceIndex, item.alternateResponseIndex);\n } else {\n props.onDropChoice(item, props.categoryId);\n }\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(Styled);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/droppable-placeholder.jsx"],"names":["log","Helper","helper","display","alignItems","fontSize","color","width","height","classes","Previews","alternateResponseIndex","category","choices","onDeleteChoice","map","c","index","choice","propTypes","PropTypes","number","object","array","func","DroppablePlaceHolder","props","isOver","className","connectDropTarget","droppablePlaceholder","placeHolder","length","React","Component","isRequired","string","onDropChoice","onMoveChoice","bool","categoryId","styles","minHeight","Styled","spec","drop","monitor","item","getItem","from","choiceId","choiceIndex","canDrop","disabled","WithTarget","uid","connect","dropTarget","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport ChoicePreview from './choice-preview';\nimport { DropTarget } from 'react-dnd';\nimport { uid, PlaceHolder } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:categorize:configure');\n\nconst Helper = withStyles(() => ({\n helper: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '12px',\n color: 'rgba(0,0,0,0.4)',\n width: '100%',\n height: '100%',\n },\n}))(({ classes }) => <div className={classes.helper}>Drag your correct answers here</div>);\n\nconst Previews = ({ alternateResponseIndex, category, choices, onDeleteChoice }) => (\n <React.Fragment>\n {choices.map(\n (c, index) =>\n c && (\n <ChoicePreview\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={c}\n key={index}\n choiceIndex={index}\n onDelete={(choice) => onDeleteChoice(choice, index)}\n />\n ),\n )}\n </React.Fragment>\n);\n\nPreviews.propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n choices: PropTypes.array,\n onDeleteChoice: PropTypes.func,\n};\n\nexport class DroppablePlaceHolder extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n connectDropTarget: PropTypes.func.isRequired,\n choices: PropTypes.array,\n onDropChoice: PropTypes.func.isRequired,\n onMoveChoice: PropTypes.func,\n isOver: PropTypes.bool,\n onDeleteChoice: PropTypes.func,\n categoryId: PropTypes.string.isRequired,\n };\n\n static defaultProps = {};\n render() {\n const { alternateResponseIndex, isOver, category, choices, classes, className, connectDropTarget, onDeleteChoice } =\n this.props;\n\n return connectDropTarget(\n <div className={classNames(classes.droppablePlaceholder, className)}>\n <PlaceHolder isOver={isOver} className={classes.placeHolder}>\n {(choices || []).length === 0 ? (\n <Helper />\n ) : (\n <Previews\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={choices}\n onDeleteChoice={onDeleteChoice}\n />\n )}\n </PlaceHolder>\n </div>,\n );\n }\n}\nconst styles = () => ({\n droppablePlaceholder: {\n minHeight: '100px',\n },\n placeHolder: {\n width: '100%',\n minHeight: '100px',\n height: 'auto',\n },\n});\n\nconst Styled = withStyles(styles)(DroppablePlaceHolder);\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n\n if (item.from && item.alternateResponseIndex === props.alternateResponseIndex) {\n props.onMoveChoice(item.choiceId, item.from, props.categoryId, item.choiceIndex, item.alternateResponseIndex);\n } else if (!item.from){\n // avoid dropping choice when user tries to move it to an alternate with other index\n props.onDropChoice(item, props.categoryId);\n }\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(Styled);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
@@ -211,11 +211,26 @@ var Categories = /*#__PURE__*/function (_React$Component) {
211
211
  });
212
212
  }
213
213
  });
214
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addChoiceToCategory", function (choice, categoryId) {
214
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addChoiceToCategory", function (addedChoice, categoryId) {
215
215
  var _this$props3 = _this.props,
216
216
  model = _this$props3.model,
217
217
  onModelChanged = _this$props3.onModelChanged;
218
- var correctResponse = (0, _categorize.moveChoiceToCategory)(choice.id, undefined, categoryId, 0, model.correctResponse);
218
+
219
+ var _ref2 = model || {},
220
+ _ref2$choices = _ref2.choices,
221
+ choices = _ref2$choices === void 0 ? [] : _ref2$choices,
222
+ _ref2$correctResponse = _ref2.correctResponse,
223
+ correctResponse = _ref2$correctResponse === void 0 ? [] : _ref2$correctResponse;
224
+
225
+ var choice = (choices || []).find(function (choice) {
226
+ return choice.id === addedChoice.id;
227
+ });
228
+ correctResponse = (0, _categorize.moveChoiceToCategory)(addedChoice.id, undefined, categoryId, 0, model.correctResponse); // if multiplePlacements not allowed, ensure the consistency in the other categories
229
+
230
+ if (choice.categoryCount !== 0) {
231
+ correctResponse = (0, _categorize.verifyAllowMultiplePlacements)(addedChoice, categoryId, correctResponse);
232
+ }
233
+
219
234
  onModelChanged({
220
235
  correctResponse: correctResponse
221
236
  });
@@ -234,10 +249,10 @@ var Categories = /*#__PURE__*/function (_React$Component) {
234
249
  model = _this$props5.model,
235
250
  onModelChanged = _this$props5.onModelChanged;
236
251
 
237
- var _ref2 = model || {},
238
- choices = _ref2.choices,
239
- _ref2$correctResponse = _ref2.correctResponse,
240
- correctResponse = _ref2$correctResponse === void 0 ? [] : _ref2$correctResponse;
252
+ var _ref3 = model || {},
253
+ choices = _ref3.choices,
254
+ _ref3$correctResponse = _ref3.correctResponse,
255
+ correctResponse = _ref3$correctResponse === void 0 ? [] : _ref3$correctResponse;
241
256
 
242
257
  var choice = (choices || []).find(function (choice) {
243
258
  return choice.id === choiceId;
@@ -249,6 +264,7 @@ var Categories = /*#__PURE__*/function (_React$Component) {
249
264
 
250
265
  if (choice.categoryCount !== 0) {
251
266
  correctResponse = (0, _categorize.moveChoiceToCategory)(choice.id, from, to, choiceIndex, correctResponse);
267
+ correctResponse = (0, _categorize.verifyAllowMultiplePlacements)(choice, to, correctResponse);
252
268
  } else if (choice.categoryCount === 0) {
253
269
  correctResponse = (0, _categorize.moveChoiceToCategory)(choice.id, undefined, to, 0, correctResponse);
254
270
  }
@@ -296,17 +312,17 @@ var Categories = /*#__PURE__*/function (_React$Component) {
296
312
  rowLabels = model.rowLabels,
297
313
  errors = model.errors;
298
314
 
299
- var _ref3 = errors || {},
300
- associationError = _ref3.associationError,
301
- categoriesError = _ref3.categoriesError,
302
- categoriesErrors = _ref3.categoriesErrors;
303
-
304
- var _ref4 = configuration || {},
305
- maxCategories = _ref4.maxCategories,
306
- _ref4$maxImageWidth = _ref4.maxImageWidth,
307
- maxImageWidth = _ref4$maxImageWidth === void 0 ? {} : _ref4$maxImageWidth,
308
- _ref4$maxImageHeight = _ref4.maxImageHeight,
309
- maxImageHeight = _ref4$maxImageHeight === void 0 ? {} : _ref4$maxImageHeight;
315
+ var _ref4 = errors || {},
316
+ associationError = _ref4.associationError,
317
+ categoriesError = _ref4.categoriesError,
318
+ categoriesErrors = _ref4.categoriesErrors;
319
+
320
+ var _ref5 = configuration || {},
321
+ maxCategories = _ref5.maxCategories,
322
+ _ref5$maxImageWidth = _ref5.maxImageWidth,
323
+ maxImageWidth = _ref5$maxImageWidth === void 0 ? {} : _ref5$maxImageWidth,
324
+ _ref5$maxImageHeight = _ref5.maxImageHeight,
325
+ maxImageHeight = _ref5$maxImageHeight === void 0 ? {} : _ref5$maxImageHeight;
310
326
 
311
327
  var holderStyle = {
312
328
  gridTemplateColumns: "repeat(".concat(categoriesPerRow, ", 1fr)")
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","whiteSpace","maxWidth","errorText","color","padding","RowLabel","categoriesPerRow","classes","markup","imageSupport","onChange","toolbarOpts","spellCheck","maxImageWidth","maxImageHeight","uploadSoundSupport","text","language","Categories","focusedEl","props","model","oldCategories","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","index","findIndex","splice","correctResponse","c","choice","categoryId","undefined","choiceIndex","choiceId","from","to","choices","find","categoryCount","val","newRowLabels","className","configuration","defaultImageMaxHeight","defaultImageMaxWidth","errors","associationError","categoriesError","categoriesErrors","maxCategories","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","shape","func","isRequired","object","string","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n moveChoiceToAlternate,\n moveChoiceToCategory,\n removeCategory,\n removeChoiceFromCategory,\n} from '@pie-lib/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\n },\n});\n\nconst RowLabel = withStyles(styles)(\n ({\n categoriesPerRow,\n classes,\n markup,\n imageSupport,\n onChange,\n toolbarOpts,\n spellCheck,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n }) => {\n return (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n >\n <Typography className={classes.text}>Row Label</Typography>\n <EditableHtml\n className={classes.rowLabelHolder}\n markup={markup}\n onChange={onChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </div>\n );\n },\n);\n\nexport class Categories extends React.Component {\n static propTypes = {\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n };\n\n state = {\n focusedEl: null,\n };\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow } = model;\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 0,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n });\n }\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (choice, categoryId) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = moveChoiceToCategory(choice.id, undefined, categoryId, 0, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [] } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n if (to === from || !choice) {\n return;\n }\n if (choice.categoryCount !== 0) {\n correctResponse = moveChoiceToCategory(choice.id, from, to, choiceIndex, correctResponse);\n } else if (choice.categoryCount === 0) {\n correctResponse = moveChoiceToCategory(choice.id, undefined, to, 0, correctResponse);\n }\n onModelChanged({ correctResponse });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const { maxCategories, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n )}\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n onMoveChoice={(choiceId, from, to, choiceIndex) => this.moveChoice(choiceId, from, to, choiceIndex)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","whiteSpace","maxWidth","errorText","color","padding","RowLabel","categoriesPerRow","classes","markup","imageSupport","onChange","toolbarOpts","spellCheck","maxImageWidth","maxImageHeight","uploadSoundSupport","text","language","Categories","focusedEl","props","model","oldCategories","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","index","findIndex","splice","correctResponse","c","addedChoice","categoryId","choices","choice","find","undefined","categoryCount","choiceIndex","choiceId","from","to","val","newRowLabels","className","configuration","defaultImageMaxHeight","defaultImageMaxWidth","errors","associationError","categoriesError","categoriesErrors","maxCategories","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","shape","func","isRequired","object","string","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n moveChoiceToAlternate,\n moveChoiceToCategory,\n removeCategory,\n removeChoiceFromCategory,\n verifyAllowMultiplePlacements,\n} from '@pie-lib/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\n },\n});\n\nconst RowLabel = withStyles(styles)(\n ({\n categoriesPerRow,\n classes,\n markup,\n imageSupport,\n onChange,\n toolbarOpts,\n spellCheck,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n }) => {\n return (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n >\n <Typography className={classes.text}>Row Label</Typography>\n <EditableHtml\n className={classes.rowLabelHolder}\n markup={markup}\n onChange={onChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </div>\n );\n },\n);\n\nexport class Categories extends React.Component {\n static propTypes = {\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n };\n\n state = {\n focusedEl: null,\n };\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow } = model;\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 0,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const { model, onModelChanged } = this.props;\n let { choices = [], correctResponse = [] } = model || {};\n const choice = (choices || []).find((choice) => choice.id === addedChoice.id);\n correctResponse = moveChoiceToCategory(addedChoice.id, undefined, categoryId, 0, model.correctResponse);\n // if multiplePlacements not allowed, ensure the consistency in the other categories\n if (choice.categoryCount !== 0) {\n correctResponse = verifyAllowMultiplePlacements(addedChoice, categoryId, correctResponse);\n }\n onModelChanged({ correctResponse });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [] } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n if (to === from || !choice) {\n return;\n }\n if (choice.categoryCount !== 0) {\n correctResponse = moveChoiceToCategory(choice.id, from, to, choiceIndex, correctResponse);\n correctResponse = verifyAllowMultiplePlacements(choice, to, correctResponse);\n } else if (choice.categoryCount === 0) {\n correctResponse = moveChoiceToCategory(choice.id, undefined, to, 0, correctResponse);\n }\n onModelChanged({ correctResponse });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const { maxCategories, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n )}\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n onMoveChoice={(choiceId, from, to, choiceIndex) => this.moveChoice(choiceId, from, to, choiceIndex)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
@@ -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.spec = exports["default"] = exports.Choice = void 0;
8
+ exports.specTarget = exports.spec = exports["default"] = exports.Choice = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
@@ -49,6 +49,8 @@ var _drag = require("@pie-lib/drag");
49
49
 
50
50
  var _utils = require("../../utils");
51
51
 
52
+ var _flow = _interopRequireDefault(require("lodash/flow"));
53
+
52
54
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
53
55
 
54
56
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -56,6 +58,10 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
56
58
  var log = (0, _debug["default"])('@pie-element:categorize:configure:choice');
57
59
 
58
60
  var canDrag = function canDrag(props) {
61
+ if (props.lockChoiceOrder) {
62
+ return true;
63
+ }
64
+
59
65
  var count = props.choice.categoryCount || 0;
60
66
 
61
67
  if (count === 0) {
@@ -118,6 +124,7 @@ var Choice = /*#__PURE__*/function (_React$Component) {
118
124
  focusedEl = _this$props3.focusedEl,
119
125
  index = _this$props3.index,
120
126
  onDelete = _this$props3.onDelete,
127
+ connectDropTarget = _this$props3.connectDropTarget,
121
128
  connectDragSource = _this$props3.connectDragSource,
122
129
  connectDragPreview = _this$props3.connectDragPreview,
123
130
  imageSupport = _this$props3.imageSupport,
@@ -127,17 +134,17 @@ var Choice = /*#__PURE__*/function (_React$Component) {
127
134
  maxImageWidth = _this$props3.maxImageWidth,
128
135
  maxImageHeight = _this$props3.maxImageHeight,
129
136
  uploadSoundSupport = _this$props3.uploadSoundSupport;
130
- var draggable = canDrag(this.props);
131
137
  var showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);
138
+ var draggable = canDrag(this.props);
132
139
  return /*#__PURE__*/_react["default"].createElement(_Card["default"], {
133
140
  className: (0, _classnames["default"])(classes.choice, className)
134
141
  }, /*#__PURE__*/_react["default"].createElement(_CardActions["default"], {
135
142
  className: classes.actions
136
- }, connectDragSource( /*#__PURE__*/_react["default"].createElement("span", {
143
+ }, connectDragSource(connectDropTarget( /*#__PURE__*/_react["default"].createElement("span", {
137
144
  className: (0, _classnames["default"])(classes.dragHandle, draggable === false && classes.dragDisabled)
138
145
  }, /*#__PURE__*/_react["default"].createElement(_DragHandle["default"], {
139
146
  color: draggable ? 'primary' : 'disabled'
140
- })))), connectDragPreview( /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_inputHeader["default"], {
147
+ }))))), connectDragPreview( /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_inputHeader["default"], {
141
148
  imageSupport: imageSupport,
142
149
  focusedEl: focusedEl,
143
150
  deleteFocusedEl: deleteFocusedEl,
@@ -178,6 +185,7 @@ exports.Choice = Choice;
178
185
  deleteFocusedEl: _propTypes["default"].func,
179
186
  focusedEl: _propTypes["default"].number,
180
187
  index: _propTypes["default"].number,
188
+ lockChoiceOrder: _propTypes["default"].bool,
181
189
  onChange: _propTypes["default"].func.isRequired,
182
190
  onDelete: _propTypes["default"].func.isRequired,
183
191
  connectDragSource: _propTypes["default"].func.isRequired,
@@ -225,7 +233,8 @@ var spec = {
225
233
  canDrag: canDrag,
226
234
  beginDrag: function beginDrag(props) {
227
235
  var out = {
228
- id: props.choice.id
236
+ id: props.choice.id,
237
+ index: props.index
229
238
  };
230
239
  log('[beginDrag] out:', out);
231
240
  return out;
@@ -242,7 +251,20 @@ var spec = {
242
251
  }
243
252
  };
244
253
  exports.spec = spec;
245
- var DraggableChoice = (0, _reactDnd.DragSource)(function (_ref) {
254
+ var specTarget = {
255
+ drop: function drop(props, monitor) {
256
+ log('[drop] props: ', props);
257
+ var item = monitor.getItem();
258
+ props.rearrangeChoices(item.index, props.index);
259
+ },
260
+ canDrop: function canDrop(props, monitor) {
261
+ var item = monitor.getItem();
262
+ return props.choice.id !== item.id;
263
+ }
264
+ };
265
+ exports.specTarget = specTarget;
266
+
267
+ var _default = _drag.uid.withUid((0, _flow["default"])((0, _reactDnd.DragSource)(function (_ref) {
246
268
  var uid = _ref.uid;
247
269
  return uid;
248
270
  }, spec, function (connect, monitor) {
@@ -251,9 +273,15 @@ var DraggableChoice = (0, _reactDnd.DragSource)(function (_ref) {
251
273
  connectDragPreview: connect.dragPreview(),
252
274
  isDragging: monitor.isDragging()
253
275
  };
254
- })(StyledChoice);
255
-
256
- var _default = _drag.uid.withUid(DraggableChoice);
276
+ }), (0, _reactDnd.DropTarget)(function (_ref2) {
277
+ var uid = _ref2.uid;
278
+ return uid;
279
+ }, specTarget, function (connect, monitor) {
280
+ return {
281
+ connectDropTarget: connect.dropTarget(),
282
+ isOver: monitor.isOver()
283
+ };
284
+ }))(StyledChoice));
257
285
 
258
286
  exports["default"] = _default;
259
287
  //# sourceMappingURL=choice.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","deleteFocusedEl","focusedEl","index","onDelete","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","draggable","showRemoveAfterPlacing","isCheckboxShown","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","number","shape","add","styles","theme","padding","justifyContent","spacing","unit","overflow","cursor","fontSize","color","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","DraggableChoice","uid","connect","dragSource","dragPreview","isDragging","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/drag';\nimport { multiplePlacements } from '../../utils';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = (props) => {\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n allowMultiplePlacements: PropTypes.string,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n choice,\n deleteFocusedEl,\n focusedEl,\n index,\n onDelete,\n connectDragSource,\n connectDragPreview,\n imageSupport,\n spellCheck,\n toolbarOpts,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n\n const draggable = canDrag(this.props);\n\n const showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n <span className={classNames(classes.dragHandle, draggable === false && classes.dragDisabled)}>\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>,\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>,\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n {showRemoveAfterPlacing && (\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n )}\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: '11px',\n color: 'red',\n paddingBottom: '5px',\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nconst DraggableChoice = DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n)(StyledChoice);\n\nexport default uid.withUid(DraggableChoice);\n"],"file":"choice.js"}
1
+ {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","deleteFocusedEl","focusedEl","index","onDelete","connectDropTarget","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","showRemoveAfterPlacing","isCheckboxShown","draggable","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","number","bool","shape","add","styles","theme","padding","justifyContent","spacing","unit","overflow","cursor","fontSize","color","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/drag';\nimport { multiplePlacements } from '../../utils';\nimport flow from 'lodash/flow';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = (props) => {\n if (props.lockChoiceOrder) {\n return true;\n }\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n allowMultiplePlacements: PropTypes.string,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n lockChoiceOrder: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n choice,\n deleteFocusedEl,\n focusedEl,\n index,\n onDelete,\n connectDropTarget,\n connectDragSource,\n connectDragPreview,\n imageSupport,\n spellCheck,\n toolbarOpts,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n\n const showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);\n const draggable = canDrag(this.props);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n connectDropTarget(\n <span className={classNames(classes.dragHandle, draggable === false && classes.dragDisabled)}>\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>,\n ),\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>,\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n {showRemoveAfterPlacing && (\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n )}\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: '11px',\n color: 'red',\n paddingBottom: '5px',\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
@@ -128,6 +128,19 @@ var Choices = /*#__PURE__*/function (_React$Component) {
128
128
  onModelChanged(model);
129
129
  }
130
130
  });
131
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "rearrangeChoices", function (indexFrom, indexTo) {
132
+ var _ref = _this.props || {},
133
+ model = _ref.model,
134
+ onModelChanged = _ref.onModelChanged;
135
+
136
+ var _ref2 = model || [],
137
+ choices = _ref2.choices;
138
+
139
+ choices = (0, _categorize.rearrangeChoices)(choices, indexFrom, indexTo);
140
+ onModelChanged({
141
+ choices: choices
142
+ });
143
+ });
131
144
  return _this;
132
145
  }
133
146
 
@@ -151,18 +164,19 @@ var Choices = /*#__PURE__*/function (_React$Component) {
151
164
  defaultImageMaxWidth = _this$props4.defaultImageMaxWidth,
152
165
  defaultImageMaxHeight = _this$props4.defaultImageMaxHeight;
153
166
  var errors = model.errors,
154
- allowMultiplePlacementsEnabled = model.allowMultiplePlacementsEnabled;
167
+ allowMultiplePlacementsEnabled = model.allowMultiplePlacementsEnabled,
168
+ lockChoiceOrder = model.lockChoiceOrder;
155
169
 
156
- var _ref = errors || {},
157
- choicesError = _ref.choicesError,
158
- choicesErrors = _ref.choicesErrors;
170
+ var _ref3 = errors || {},
171
+ choicesError = _ref3.choicesError,
172
+ choicesErrors = _ref3.choicesErrors;
159
173
 
160
- var _ref2 = configuration || {},
161
- maxChoices = _ref2.maxChoices,
162
- _ref2$maxImageWidth = _ref2.maxImageWidth,
163
- maxImageWidth = _ref2$maxImageWidth === void 0 ? {} : _ref2$maxImageWidth,
164
- _ref2$maxImageHeight = _ref2.maxImageHeight,
165
- maxImageHeight = _ref2$maxImageHeight === void 0 ? {} : _ref2$maxImageHeight;
174
+ var _ref4 = configuration || {},
175
+ maxChoices = _ref4.maxChoices,
176
+ _ref4$maxImageWidth = _ref4.maxImageWidth,
177
+ maxImageWidth = _ref4$maxImageWidth === void 0 ? {} : _ref4$maxImageWidth,
178
+ _ref4$maxImageHeight = _ref4.maxImageHeight,
179
+ maxImageHeight = _ref4$maxImageHeight === void 0 ? {} : _ref4$maxImageHeight;
166
180
 
167
181
  var categoryCountIsOne = this.allChoicesHaveCount(1);
168
182
  var choiceHolderStyle = {
@@ -191,6 +205,7 @@ var Choices = /*#__PURE__*/function (_React$Component) {
191
205
  deleteFocusedEl: _this2.deleteFocusedEl,
192
206
  correctResponseCount: h.correctResponseCount,
193
207
  allowMultiplePlacements: allowMultiplePlacementsEnabled,
208
+ lockChoiceOrder: lockChoiceOrder,
194
209
  index: index,
195
210
  key: index,
196
211
  imageSupport: imageSupport,
@@ -198,6 +213,9 @@ var Choices = /*#__PURE__*/function (_React$Component) {
198
213
  onDelete: function onDelete() {
199
214
  return _this2.deleteChoice(h);
200
215
  },
216
+ rearrangeChoices: function rearrangeChoices(indexFrom, indexTo) {
217
+ return _this2.rearrangeChoices(indexFrom, indexTo);
218
+ },
201
219
  toolbarOpts: toolbarOpts,
202
220
  spellCheck: spellCheck,
203
221
  error: choicesErrors && choicesErrors[h.id],
@@ -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","utils","firstAvailableIndex","map","a","data","content","setState","length","concat","correctResponse","state","classes","className","imageSupport","uploadSoundSupport","spellCheck","toolbarOpts","configuration","defaultImageMaxWidth","defaultImageMaxHeight","errors","allowMultiplePlacementsEnabled","choicesError","choicesErrors","maxChoices","maxImageWidth","maxImageHeight","categoryCountIsOne","allChoicesHaveCount","choiceHolderStyle","gridTemplateColumns","categoriesPerRow","addChoice","errorText","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","React","Component","PropTypes","object","isRequired","string","array","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","label","fontSize","color","padding"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Divider } from '../buttons';\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/config-ui';\nimport { removeAllChoices } from '@pie-lib/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 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 };\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\n const id = utils.firstAvailableIndex(\n model.choices.map((a) => a.id),\n 0,\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 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 } = model;\n const { choicesError, choicesErrors } = errors || {};\n const { maxChoices, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n\n const categoryCountIsOne = this.allChoicesHaveCount(1);\n const choiceHolderStyle = {\n gridTemplateColumns: `repeat(${model.categoriesPerRow}, 1fr)`,\n };\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={maxChoices && choices && maxChoices === choices.length}\n />\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n <Config\n config={model}\n onModelChanged={onModelChanged}\n 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 index={index}\n key={index}\n imageSupport={imageSupport}\n onChange={this.changeChoice}\n onDelete={() => this.deleteChoice(h)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={choicesErrors && choicesErrors[h.id]}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.choice) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.choice) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n />\n );\n })}\n </div>\n <Divider />\n </div>\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 paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n label: {},\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\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","c","categoryCount","model","oldChoices","utils","firstAvailableIndex","map","a","data","content","setState","length","concat","correctResponse","indexFrom","indexTo","state","classes","className","imageSupport","uploadSoundSupport","spellCheck","toolbarOpts","configuration","defaultImageMaxWidth","defaultImageMaxHeight","errors","allowMultiplePlacementsEnabled","lockChoiceOrder","choicesError","choicesErrors","maxChoices","maxImageWidth","maxImageHeight","categoryCountIsOne","allChoicesHaveCount","choiceHolderStyle","gridTemplateColumns","categoriesPerRow","addChoice","errorText","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","rearrangeChoices","React","Component","PropTypes","object","isRequired","string","array","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","label","fontSize","color","padding"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Divider } from '../buttons';\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/config-ui';\nimport { removeAllChoices } from '@pie-lib/categorize';\nimport { rearrangeChoices } from '@pie-lib/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 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 };\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\n const id = utils.firstAvailableIndex(\n model.choices.map((a) => a.id),\n 0,\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 } = model;\n const { choicesError, choicesErrors } = errors || {};\n const { maxChoices, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n\n const categoryCountIsOne = this.allChoicesHaveCount(1);\n const choiceHolderStyle = {\n gridTemplateColumns: `repeat(${model.categoriesPerRow}, 1fr)`,\n };\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={maxChoices && choices && maxChoices === choices.length}\n />\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n <Config config={model} onModelChanged={onModelChanged} spellCheck={spellCheck} />\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 />\n );\n })}\n </div>\n <Divider />\n </div>\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 paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n label: {},\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\n },\n});\nexport default withStyles(styles)(Choices);\n"],"file":"index.js"}
@@ -86,7 +86,9 @@ var Design = /*#__PURE__*/function (_React$Component) {
86
86
  var updatedModel = _objectSpread(_objectSpread({}, model), props); //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.
87
87
 
88
88
 
89
- updatedModel.correctResponse = (0, _categorize.ensureNoExtraChoicesInAnswer)(updatedModel.correctResponse || [], updatedModel.choices); //clean categories
89
+ updatedModel.correctResponse = (0, _categorize.ensureNoExtraChoicesInAnswer)(updatedModel.correctResponse || [], updatedModel.choices); //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.
90
+
91
+ updatedModel.correctResponse = (0, _categorize.ensureNoExtraChoicesInAlternate)(updatedModel.correctResponse || [], updatedModel.choices); //clean categories
90
92
 
91
93
  updatedModel.categories = updatedModel.categories.map(function (c) {
92
94
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/design/index.jsx"],"names":["dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","correctResponse","choices","categories","map","c","id","label","h","content","categoryCount","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","generateId","classes","className","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","categoriesPerRow","choicesPosition","lockChoiceOrder","maxImageHeight","maxImageWidth","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","allowMultiplePlacementsEnabled","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","checkAllowMultiplePlacements","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","panelProperties","studentInstructionsEnabled","rubricEnabled","Settings","Properties","design","promptHolder","onPromptChanged","language","inputHolder","input","changeTeacherInstructions","changeRationale","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeFeedback","React","Component","PropTypes","object","isRequired","string","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","text","width","marginBottom","maxWidth","title"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { countInAnswer, ensureNoExtraChoicesInAnswer } from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { uid, withDragContext } from '@pie-lib/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { Divider } from './buttons';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { multiplePlacements } from '../utils';\n\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n onChange(updatedModel);\n };\n\n changeRationale = (rationale) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n rationale,\n });\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n teacherInstructions,\n });\n };\n\n changeFeedback = (feedback) => {\n this.updateModel({ feedback });\n };\n\n onAddAlternateResponse = () => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: [...(cr.alternateResponses || []), []],\n })),\n });\n };\n\n onPromptChanged = (prompt) => this.updateModel({ prompt });\n\n onRemoveAlternateResponse = (index) => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: (cr.alternateResponses || []).filter((alt, altIndex) => altIndex !== index),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n checkAllowMultiplePlacements = (allowMultiplePlacements, c) => {\n if (allowMultiplePlacements === multiplePlacements.enabled) {\n return 0;\n }\n\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n\n return c.categoryCount || 0;\n };\n\n render() {\n const {\n classes,\n className,\n configuration,\n imageSupport,\n model,\n uploadSoundSupport,\n onChange,\n onConfigurationChanged,\n } = this.props;\n const {\n allowMultiplePlacements = {},\n categoriesPerRow = {},\n choicesPosition = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n } = configuration || {};\n const {\n allowMultiplePlacementsEnabled,\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\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 c.categoryCount = this.checkAllowMultiplePlacements(allowMultiplePlacementsEnabled, c);\n\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 promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\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 return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChange}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n <div className={classNames(classes.design, className)}>\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputHolder}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputHolder}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n\n {alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n\n <Divider />\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </div>\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n design: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n },\n inputHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n input: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px',\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/design/index.jsx"],"names":["dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","correctResponse","choices","categories","map","c","id","label","h","content","categoryCount","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","generateId","classes","className","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","categoriesPerRow","choicesPosition","lockChoiceOrder","maxImageHeight","maxImageWidth","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","allowMultiplePlacementsEnabled","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","checkAllowMultiplePlacements","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","panelProperties","studentInstructionsEnabled","rubricEnabled","Settings","Properties","design","promptHolder","onPromptChanged","language","inputHolder","input","changeTeacherInstructions","changeRationale","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeFeedback","React","Component","PropTypes","object","isRequired","string","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","text","width","marginBottom","maxWidth","title"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAQA,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,CAHuB,CAQvB;;;AACAG,MAAAA,YAAY,CAACC,eAAb,GAA+B,8CAC7BD,YAAY,CAACC,eAAb,IAAgC,EADH,EAE7BD,YAAY,CAACE,OAFgB,CAA/B,CATuB,CAcvB;;AACCF,MAAAA,YAAY,CAACC,eAAb,GAA+B,iDAC5BD,YAAY,CAACC,eAAb,IAAgC,EADJ,EAE5BD,YAAY,CAACE,OAFe,CAA/B,CAfsB,CAoBvB;;AACAF,MAAAA,YAAY,CAACG,UAAb,GAA0BH,YAAY,CAACG,UAAb,CAAwBC,GAAxB,CAA4B,UAACC,CAAD;AAAA,eAAQ;AAC5DC,UAAAA,EAAE,EAAED,CAAC,CAACC,EADsD;AAE5DC,UAAAA,KAAK,EAAEF,CAAC,CAACE;AAFmD,SAAR;AAAA,OAA5B,CAA1B;AAKAP,MAAAA,YAAY,CAACE,OAAb,GAAuBF,YAAY,CAACE,OAAb,CAAqBE,GAArB,CAAyB,UAACI,CAAD;AAAA,eAAQ;AACtDF,UAAAA,EAAE,EAAEE,CAAC,CAACF,EADgD;AAEtDG,UAAAA,OAAO,EAAED,CAAC,CAACC,OAF2C;AAGtDC,UAAAA,aAAa,EAAEF,CAAC,CAACE;AAHqC,SAAR;AAAA,OAAzB,CAAvB;AAMAX,MAAAA,QAAQ,CAACC,YAAD,CAAR;AACD,KAtCkB;AAAA,wGAwCD,UAACW,SAAD,EAAe;AAC/B,yBAA4B,MAAKd,KAAjC;AAAA,UAAQC,KAAR,gBAAQA,KAAR;AAAA,UAAeC,QAAf,gBAAeA,QAAf;AAEAA,MAAAA,QAAQ,iCACHD,KADG;AAENa,QAAAA,SAAS,EAATA;AAFM,SAAR;AAID,KA/CkB;AAAA,kHAiDS,UAACC,mBAAD,EAAyB;AACnD,yBAA4B,MAAKf,KAAjC;AAAA,UAAQC,KAAR,gBAAQA,KAAR;AAAA,UAAeC,QAAf,gBAAeA,QAAf;AAEAA,MAAAA,QAAQ,iCACHD,KADG;AAENc,QAAAA,mBAAmB,EAAnBA;AAFM,SAAR;AAID,KAxDkB;AAAA,uGA0DF,UAACC,QAAD,EAAc;AAC7B,YAAKC,WAAL,CAAiB;AAAED,QAAAA,QAAQ,EAARA;AAAF,OAAjB;AACD,KA5DkB;AAAA,+GA8DM,YAAM;AAC7B,UACWZ,eADX,GAEI,MAAKJ,KAFT,CACEC,KADF,CACWG,eADX;;AAIA,YAAKa,WAAL,CAAiB;AACfb,QAAAA,eAAe,EAAE,CAACA,eAAe,IAAI,EAApB,EAAwBG,GAAxB,CAA4B,UAACW,EAAD;AAAA,iDACxCA,EADwC;AAE3CC,YAAAA,kBAAkB,gDAAOD,EAAE,CAACC,kBAAH,IAAyB,EAAhC,IAAqC,EAArC;AAFyB;AAAA,SAA5B;AADF,OAAjB;AAMD,KAzEkB;AAAA,wGA2ED,UAACC,MAAD;AAAA,aAAY,MAAKH,WAAL,CAAiB;AAAEG,QAAAA,MAAM,EAANA;AAAF,OAAjB,CAAZ;AAAA,KA3EC;AAAA,kHA6ES,UAACC,KAAD,EAAW;AACrC,UACWjB,eADX,GAEI,MAAKJ,KAFT,CACEC,KADF,CACWG,eADX;;AAIA,YAAKa,WAAL,CAAiB;AACfb,QAAAA,eAAe,EAAE,CAACA,eAAe,IAAI,EAApB,EAAwBG,GAAxB,CAA4B,UAACW,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,KAxFkB;AAAA,qHA0FY,UAACI,MAAD,EAAY;AACzC,UAAQxB,KAAR,GAAkB,MAAKD,KAAvB,CAAQC,KAAR;AAEA,aAAO,+BAAcwB,MAAM,CAAChB,EAArB,EAAyBR,KAAK,CAACG,eAA/B,CAAP;AACD,KA9FkB;AAAA,qHAgGY,UAACsB,uBAAD,EAA0BlB,CAA1B,EAAgC;AAC7D,UAAIkB,uBAAuB,KAAKC,0BAAmBC,OAAnD,EAA4D;AAC1D,eAAO,CAAP;AACD;;AAED,UAAIF,uBAAuB,KAAKC,0BAAmBE,QAAnD,EAA6D;AAC3D,eAAO,CAAP;AACD;;AAED,aAAOrB,CAAC,CAACK,aAAF,IAAmB,CAA1B;AACD,KA1GkB;AAEjB,UAAKhB,GAAL,GAAWG,MAAK,CAACH,GAAN,IAAaA,UAAIiC,UAAJ,EAAxB;AAFiB;AAGlB;;;;WAyGD,kBAAS;AAAA;;AACP,yBASI,KAAK9B,KATT;AAAA,UACE+B,OADF,gBACEA,OADF;AAAA,UAEEC,SAFF,gBAEEA,SAFF;AAAA,UAGEC,aAHF,gBAGEA,aAHF;AAAA,UAIEC,YAJF,gBAIEA,YAJF;AAAA,UAKEjC,KALF,gBAKEA,KALF;AAAA,UAMEkC,kBANF,gBAMEA,kBANF;AAAA,UAOEjC,QAPF,gBAOEA,QAPF;AAAA,UAQEkC,sBARF,gBAQEA,sBARF;;AAUA,iBAkBIH,aAAa,IAAI,EAlBrB;AAAA,uCACEP,uBADF;AAAA,UACEA,uBADF,sCAC4B,EAD5B;AAAA,uCAEEW,gBAFF;AAAA,UAEEA,gBAFF,sCAEqB,EAFrB;AAAA,sCAGEC,eAHF;AAAA,UAGEA,eAHF,qCAGoB,EAHpB;AAAA,+BAIEtB,QAJF;AAAA,UAIEA,QAJF,8BAIa,EAJb;AAAA,sCAKEuB,eALF;AAAA,UAKEA,eALF,qCAKoB,EALpB;AAAA,qCAMEC,cANF;AAAA,UAMEA,cANF,oCAMmB,EANnB;AAAA,oCAOEC,aAPF;AAAA,UAOEA,aAPF,mCAOkB,EAPlB;AAAA,uCAQEC,mBARF;AAAA,UAQEA,mBARF,sCAQwB,CARxB;AAAA,qCASEC,cATF;AAAA,UASEA,cATF,oCASmB,EATnB;AAAA,6BAUEvB,MAVF;AAAA,UAUEA,MAVF,4BAUW,EAVX;AAAA,gCAWEN,SAXF;AAAA,UAWEA,SAXF,+BAWc,EAXd;AAAA,kCAYE8B,WAZF;AAAA,UAYEA,WAZF,iCAYgB,EAZhB;AAAA,UAaEC,qBAbF,QAaEA,qBAbF;AAAA,iCAcEC,UAdF;AAAA,UAcEA,UAdF,gCAce,EAdf;AAAA,uCAeEC,mBAfF;AAAA,UAeEA,mBAfF,sCAewB,EAfxB;AAAA,uCAgBEhC,mBAhBF;AAAA,UAgBEA,mBAhBF,sCAgBwB,EAhBxB;AAAA,iCAiBEiC,UAjBF;AAAA,UAiBEA,UAjBF,gCAiBe,EAjBf;;AAmBA,kBAQI/C,KAAK,IAAI,EARb;AAAA,UACEgD,8BADF,SACEA,8BADF;AAAA,UAEEC,eAFF,SAEEA,eAFF;AAAA,UAGEC,aAHF,SAGEA,aAHF;AAAA,UAIEC,gBAJF,SAIEA,gBAJF;AAAA,UAKEC,iBALF,SAKEA,iBALF;AAAA,UAMEC,0BANF,SAMEA,0BANF;AAAA,UAOEC,qBAPF,SAOEA,qBAPF;;AAUA,UAAMC,WAAW,GAAG;AAClBC,QAAAA,QAAQ,EAAEF,qBAAqB,KAAK,KAA1B,GAAkC,KAAlC,GAA0C;AADlC,OAApB;AAIA,UAAMG,MAAM,GAAGzD,KAAK,CAACyD,MAAN,IAAgB,EAA/B;AACAA,MAAAA,MAAM,CAACrD,OAAP,GAAiBqD,MAAM,CAACrD,OAAP,IAAkB;AAAEK,QAAAA,KAAK,EAAE,EAAT;AAAaiD,QAAAA,OAAO,EAAE;AAAtB,OAAnC;AAEA,UAAMrD,UAAU,GAAG,8BAAgBL,KAAK,CAACK,UAAN,IAAoB,EAApC,EAAwCL,KAAK,CAACI,OAAN,IAAiB,EAAzD,EAA6DJ,KAAK,CAACG,eAAN,IAAyB,EAAtF,CAAnB;AAEA,UAAMe,kBAAkB,GAAG,sCACzBlB,KAAK,CAACK,UAAN,IAAoB,EADK,EAEzBL,KAAK,CAACI,OAAN,IAAiB,EAFQ,EAGzBJ,KAAK,CAACG,eAAN,IAAyB,EAHA,CAA3B;AAMA,UAAMC,OAAO,GAAGJ,KAAK,CAACI,OAAN,CAAcE,GAAd,CAAkB,UAACC,CAAD,EAAO;AACvCA,QAAAA,CAAC,CAACoD,oBAAF,GAAyB,MAAI,CAACC,4BAAL,CAAkCrD,CAAlC,CAAzB;AACAA,QAAAA,CAAC,CAACK,aAAF,GAAkB,MAAI,CAACiD,4BAAL,CAAkCb,8BAAlC,EAAkEzC,CAAlE,CAAlB;AAEA,eAAOA,CAAP;AACD,OALe,CAAhB;AAOA,UAAMuD,oBAAoB,GAAGtB,aAAa,IAAIA,aAAa,CAACrB,MAA5D;AACA,UAAM4C,qBAAqB,GAAGxB,cAAc,IAAIA,cAAc,CAACpB,MAA/D;AAEA,UAAM6C,aAAa,GAAG;AACpBtB,QAAAA,cAAc,EAAEA,cAAc,CAACpD,QAAf,IAA2BE,MAAM,CAACkD,cAAc,CAACjC,KAAhB,CAD7B;AAEpB6B,QAAAA,eAAe,EAAEA,eAAe,CAAChD,QAAhB,IAA4BE,MAAM,CAAC8C,eAAe,CAAC7B,KAAjB,CAF/B;AAGpB2B,QAAAA,gBAAgB,EACdA,gBAAgB,CAAC9C,QAAjB,IACAI,WAAW,CAAC0C,gBAAgB,CAAC3B,KAAlB,EAAyB;AAClCA,UAAAA,KAAK,EAAE2B,gBAAgB,CAAC3B,KADU;AAElCwD,UAAAA,GAAG,EAAExB,mBAF6B;AAGlCyB,UAAAA,GAAG,EAAE;AAH6B,SAAzB,CALO;AAUpB7B,QAAAA,eAAe,EAAEA,eAAe,CAAC/C,QAAhB,IAA4BG,KAAK,CAAC4C,eAAe,CAAC5B,KAAjB,EAAwB,CAAC,OAAD,EAAU,OAAV,EAAmB,MAAnB,EAA2B,OAA3B,CAAxB,CAV9B;AAWpBuC,QAAAA,8BAA8B,EAC5BvB,uBAAuB,CAACnC,QAAxB,IACAD,QAAQ,CAACoC,uBAAuB,CAAChB,KAAzB,EAAgC,CACtCiB,0BAAmBC,OADmB,EAEtCD,0BAAmBE,QAFmB,EAGtCF,0BAAmByC,SAHmB,CAAhC,CAbU;AAkBpBjB,QAAAA,aAAa,EAAE/B,MAAM,CAAC7B,QAAP,IAAmBE,MAAM,CAAC2B,MAAM,CAACV,KAAR,CAlBpB;AAmBpBwC,QAAAA,eAAe,EAAElC,QAAQ,CAACzB,QAAT,IAAqBE,MAAM,CAACuB,QAAQ,CAACN,KAAV;AAnBxB,OAAtB;AAsBA,UAAM2D,eAAe,GAAG;AACtBf,QAAAA,0BAA0B,EAAEvC,mBAAmB,CAACxB,QAApB,IAAgCE,MAAM,CAACsB,mBAAmB,CAACL,KAArB,CAD5C;AAEtB4D,QAAAA,0BAA0B,EAAEvB,mBAAmB,CAACxD,QAApB,IAAgCE,MAAM,CAACsD,mBAAmB,CAACrC,KAArB,CAF5C;AAGtB0C,QAAAA,gBAAgB,EAAEtC,SAAS,CAACvB,QAAV,IAAsBE,MAAM,CAACqB,SAAS,CAACJ,KAAX,CAHxB;AAItB2C,QAAAA,iBAAiB,EAAEP,UAAU,CAACvD,QAAX,IAAuBE,MAAM,CAACqD,UAAU,CAACpC,KAAZ,CAJ1B;AAKtBkC,QAAAA,WAAW,EAAEA,WAAW,CAACrD,QAAZ,IAAwBG,KAAK,CAACkD,WAAW,CAAClC,KAAb,EAAoB,CAAC,MAAD,EAAS,QAAT,CAApB,CALpB;AAMtB6D,QAAAA,aAAa,EAAE,CAAAvB,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEzD,QAAZ,KAAwBE,MAAM,CAACuD,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEtC,KAAb;AANvB,OAAxB;AASA,0BACE,gCAAC,UAAD;AAAY,QAAA,KAAK,EAAE,KAAKb;AAAxB,sBACE,gCAAC,gBAAD,CAAQ,YAAR;AACE,QAAA,YAAY,EAAEgD,qBADhB;AAEE,QAAA,QAAQ,eACN,gCAAC,KAAD;AACE,UAAA,KAAK,EAAE5C,KADT;AAEE,UAAA,aAAa,EAAEC,QAFjB;AAGE,UAAA,aAAa,EAAE+B,aAHjB;AAIE,UAAA,qBAAqB,EAAEG,sBAJzB;AAKE,UAAA,MAAM,EAAE;AACNoC,YAAAA,QAAQ,EAAEP,aADJ;AAENQ,YAAAA,UAAU,EAAEJ;AAFN;AALV;AAHJ,sBAeE;AAAK,QAAA,SAAS,EAAE,4BAAWtC,OAAO,CAAC2C,MAAnB,EAA2B1C,SAA3B;AAAhB,SACGmB,aAAa,iBACZ,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAE/B,MAAM,CAACV,KAA9B;AAAqC,QAAA,SAAS,EAAEqB,OAAO,CAAC4C;AAAxD,sBACE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAE5C,OAAO,CAACX,MADrB;AAEE,QAAA,MAAM,EAAEnB,KAAK,CAACmB,MAAN,IAAgB,EAF1B;AAGE,QAAA,QAAQ,EAAE,KAAKwD,eAHjB;AAIE,QAAA,YAAY,EAAE1C,YAJhB;AAKE,QAAA,QAAQ,EAAE,KALZ;AAME,QAAA,gBAAgB,MANlB;AAOE,QAAA,WAAW,EAAEsB,WAPf;AAQE,QAAA,UAAU,EAAEH,iBARd;AASE,QAAA,aAAa,EAAEZ,aAAa,IAAIA,aAAa,CAACrB,MAThD;AAUE,QAAA,cAAc,EAAEoB,cAAc,IAAIA,cAAc,CAACpB,MAVnD;AAWE,QAAA,kBAAkB,EAAEe,kBAXtB;AAYE,QAAA,uBAAuB,EAAE,CAAC;AAAE0C,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B;AAZ3B,QADF,CAFJ,EAoBGvB,0BAA0B,iBACzB,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEvC,mBAAmB,CAACL,KAA3C;AAAkD,QAAA,SAAS,EAAEqB,OAAO,CAAC+C;AAArE,sBACE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAE/C,OAAO,CAACgD,KADrB;AAEE,QAAA,MAAM,EAAE9E,KAAK,CAACc,mBAAN,IAA6B,EAFvC;AAGE,QAAA,QAAQ,EAAE,KAAKiE,yBAHjB;AAIE,QAAA,YAAY,EAAE9C,YAJhB;AAKE,QAAA,QAAQ,EAAE,KALZ;AAME,QAAA,WAAW,EAAEsB,WANf;AAOE,QAAA,UAAU,EAAEH,iBAPd;AAQE,QAAA,aAAa,EAAGZ,aAAa,IAAIA,aAAa,CAAC1B,mBAAhC,IAAwDgD,oBARzE;AASE,QAAA,cAAc,EAAGvB,cAAc,IAAIA,cAAc,CAACzB,mBAAlC,IAA0DiD,qBAT5E;AAUE,QAAA,kBAAkB,EAAE7B,kBAVtB;AAWE,QAAA,uBAAuB,EAAE,CAAC;AAAE0C,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B;AAX3B,QADF,CArBJ,EAsCGzB,gBAAgB,iBACf,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEtC,SAAS,CAACJ,KAAjC;AAAwC,QAAA,SAAS,EAAEqB,OAAO,CAAC+C;AAA3D,sBACE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAE/C,OAAO,CAACgD,KADrB;AAEE,QAAA,MAAM,EAAE9E,KAAK,CAACa,SAAN,IAAmB,EAF7B;AAGE,QAAA,QAAQ,EAAE,KAAKmE,eAHjB;AAIE,QAAA,YAAY,EAAE/C,YAJhB;AAKE,QAAA,QAAQ,EAAE,KALZ;AAME,QAAA,WAAW,EAAEsB,WANf;AAOE,QAAA,UAAU,EAAEH,iBAPd;AAQE,QAAA,aAAa,EAAGZ,aAAa,IAAIA,aAAa,CAAC3B,SAAhC,IAA8CiD,oBAR/D;AASE,QAAA,cAAc,EAAGvB,cAAc,IAAIA,cAAc,CAAC1B,SAAlC,IAAgDkD,qBATlE;AAUE,QAAA,kBAAkB,EAAE7B,kBAVtB;AAWE,QAAA,uBAAuB,EAAE,CAAC;AAAE0C,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B;AAX3B,QADF,CAvCJ,eAwDE,gCAAC,sBAAD;AACE,QAAA,YAAY,EAAE3C,YADhB;AAEE,QAAA,kBAAkB,EAAEC,kBAFtB;AAGE,QAAA,KAAK,EAAElC,KAHT;AAIE,QAAA,UAAU,EAAEK,UAAU,IAAI,EAJ5B;AAKE,QAAA,cAAc,EAAE,KAAKW,WALvB;AAME,QAAA,WAAW,EAAEuC,WANf;AAOE,QAAA,UAAU,EAAEH,iBAPd;AAQE,QAAA,aAAa,EAAEpB,aARjB;AASE,QAAA,oBAAoB,EAAE8B,oBATxB;AAUE,QAAA,qBAAqB,EAAEC;AAVzB,QAxDF,eAqEE,gCAAC,kBAAD;AACE,QAAA,SAAS,EAAEjC,OAAO,CAACmD,gBADrB;AAEE,QAAA,KAAK,EAAC,qBAFR;AAGE,QAAA,WAAW,EAAC,2BAHd;AAIE,QAAA,KAAK,EAAE,KAAKC;AAJd,QArEF,EA4EGhE,kBAAkB,CAACZ,GAAnB,CAAuB,UAAC6E,cAAD,EAAiB/D,KAAjB,EAA2B;AACjD,4BACE,gCAAC,iBAAD,CAAO,QAAP;AAAgB,UAAA,GAAG,EAAEA;AAArB,wBACE,gCAAC,kBAAD;AACE,UAAA,SAAS,EAAEU,OAAO,CAACmD,gBADrB;AAEE,UAAA,KAAK,EAAC,oBAFR;AAGE,UAAA,WAAW,EAAC,2BAHd;AAIE,UAAA,KAAK,EAAE;AAAA,mBAAM,MAAI,CAACG,yBAAL,CAA+BhE,KAA/B,CAAN;AAAA;AAJT,UADF,eAQE,gCAAC,8BAAD;AACE,UAAA,QAAQ,EAAEA,KADZ;AAEE,UAAA,YAAY,EAAEa,YAFhB;AAGE,UAAA,KAAK,EAAEjC,KAHT;AAIE,UAAA,UAAU,EAAEmF,cAJd;AAKE,UAAA,cAAc,EAAE,MAAI,CAACnE,WALvB;AAME,UAAA,kBAAkB,EAAEkB;AANtB,UARF,CADF;AAmBD,OApBA,CA5EH,eAkGE,gCAAC,gBAAD,OAlGF,eAmGE,gCAAC,mBAAD;AACE,QAAA,YAAY,EAAED,YADhB;AAEE,QAAA,kBAAkB,EAAEC,kBAFtB;AAGE,QAAA,OAAO,EAAE9B,OAHX;AAIE,QAAA,KAAK,EAAEJ,KAJT;AAKE,QAAA,cAAc,EAAE,KAAKgB,WALvB;AAME,QAAA,WAAW,EAAEuC,WANf;AAOE,QAAA,UAAU,EAAEH,iBAPd;AAQE,QAAA,aAAa,EAAEpB,aARjB;AASE,QAAA,oBAAoB,EAAE8B,oBATxB;AAUE,QAAA,qBAAqB,EAAEC;AAVzB,QAnGF,EAgHGd,eAAe,iBACd,gCAAC,wBAAD;AAAgB,QAAA,QAAQ,EAAEjD,KAAK,CAACe,QAAhC;AAA0C,QAAA,QAAQ,EAAE,KAAKsE,cAAzD;AAAyE,QAAA,WAAW,EAAE9B;AAAtF,QAjHJ,CAfF,CADF,CADF;AAwID;;;EAvWyB+B,kBAAMC,S;;;iCAArBzF,M,eACQ;AACjBgC,EAAAA,OAAO,EAAE0D,sBAAUC,MAAV,CAAiBC,UADT;AAEjB1D,EAAAA,aAAa,EAAEwD,sBAAUC,MAFR;AAGjB1D,EAAAA,SAAS,EAAEyD,sBAAUG,MAHJ;AAIjBxD,EAAAA,sBAAsB,EAAEqD,sBAAUI,IAJjB;AAKjB5F,EAAAA,KAAK,EAAEwF,sBAAUC,MAAV,CAAiBC,UALP;AAMjBzF,EAAAA,QAAQ,EAAEuF,sBAAUI,IAAV,CAAeF,UANR;AAOjB9F,EAAAA,GAAG,EAAE4F,sBAAUG,MAPE;AAQjB1D,EAAAA,YAAY,EAAEuD,sBAAUK,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEN,sBAAUI,IAAV,CAAeF,UADQ;AAE5B,cAAQF,sBAAUI,IAAV,CAAeF;AAFK,GAAhB,CARG;AAYjBxD,EAAAA,kBAAkB,EAAEsD,sBAAUK,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAEN,sBAAUI,IAAV,CAAeF,UADc;AAElC,cAAQF,sBAAUI,IAAV,CAAeF;AAFW,GAAhB;AAZH,C;;AAyWrB,IAAMK,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBf,IAAAA,gBAAgB,EAAE;AAChBgB,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CADjB;AAEhBC,MAAAA,aAAa,EAAEJ,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAFpB,KADO;AAKzBE,IAAAA,IAAI,EAAE;AACJJ,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAD7B;AAEJC,MAAAA,aAAa,EAAEJ,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAFhC,KALmB;AASzB1B,IAAAA,MAAM,EAAE;AACNwB,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IADpB;AAENC,MAAAA,aAAa,EAAEJ,KAAK,CAACE,OAAN,CAAcC;AAFvB,KATiB;AAazBtB,IAAAA,WAAW,EAAE;AACXyB,MAAAA,KAAK,EAAE,MADI;AAEXF,MAAAA,aAAa,EAAEJ,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAFzB;AAGXI,MAAAA,YAAY,EAAEP,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAHxB,KAbY;AAkBzBrB,IAAAA,KAAK,EAAE;AACLmB,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAD5B;AAELG,MAAAA,KAAK,EAAE,MAFF;AAGLE,MAAAA,QAAQ,EAAE;AAHL,KAlBkB;AAuBzBrF,IAAAA,MAAM,EAAE;AACN8E,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAD3B;AAENG,MAAAA,KAAK,EAAE;AAFD,KAvBiB;AA2BzB5B,IAAAA,YAAY,EAAE;AACZ4B,MAAAA,KAAK,EAAE,MADK;AAEZF,MAAAA,aAAa,EAAEJ,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB,CAFxB;AAGZI,MAAAA,YAAY,EAAEP,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAHvB,KA3BW;AAgCzBM,IAAAA,KAAK,EAAE;AACLF,MAAAA,YAAY,EAAEP,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD9B;AAhCkB,GAAZ;AAAA,CAAf;;eAqCe,2BAAgB,wBAAWJ,MAAX,EAAmBjG,MAAnB,CAAhB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { countInAnswer, ensureNoExtraChoicesInAnswer, ensureNoExtraChoicesInAlternate } from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { uid, withDragContext } from '@pie-lib/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { Divider } from './buttons';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { multiplePlacements } from '../utils';\n\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices\n );\n\n //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 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 render() {\n const {\n classes,\n className,\n configuration,\n imageSupport,\n model,\n uploadSoundSupport,\n onChange,\n onConfigurationChanged,\n } = this.props;\n const {\n allowMultiplePlacements = {},\n categoriesPerRow = {},\n choicesPosition = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n } = configuration || {};\n const {\n allowMultiplePlacementsEnabled,\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\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 c.categoryCount = this.checkAllowMultiplePlacements(allowMultiplePlacementsEnabled, c);\n\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 promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\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 return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChange}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n <div className={classNames(classes.design, className)}>\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputHolder}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputHolder}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n\n {alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n\n <Divider />\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </div>\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n design: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n },\n inputHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n input: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px',\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "main": "lib/index.js",
5
5
  "module": "src/index.js",
6
- "version": "6.5.1",
6
+ "version": "6.6.0",
7
7
  "description": "",
8
8
  "scripts": {},
9
9
  "author": "pie framework developers",
@@ -12,10 +12,10 @@
12
12
  "@material-ui/core": "^3.9.2",
13
13
  "@material-ui/icons": "^3.0.1",
14
14
  "@pie-framework/pie-configure-events": "^1.3.0",
15
- "@pie-lib/categorize": "^0.6.26",
16
- "@pie-lib/config-ui": "^11.1.4",
17
- "@pie-lib/drag": "^2.0.4",
18
- "@pie-lib/editable-html": "^9.3.0",
15
+ "@pie-lib/categorize": "^0.7.0",
16
+ "@pie-lib/config-ui": "^11.2.2",
17
+ "@pie-lib/drag": "^2.0.6",
18
+ "@pie-lib/editable-html": "^9.4.1",
19
19
  "@pie-lib/render-ui": "^4.13.7",
20
20
  "classnames": "^2.2.5",
21
21
  "debug": "^3.1.0",
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.6.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.5.1...@pie-element/categorize-controller@5.6.0) (2023-01-05)
7
+
8
+
9
+ ### Features
10
+
11
+ * update pie-libs ([8490729](https://github.com/pie-framework/pie-elements/commit/8490729a2389d36fd3968f0806119fde96577842))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [5.5.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.5.0...@pie-element/categorize-controller@5.5.1) (2022-12-20)
7
18
 
8
19
 
@@ -2,12 +2,12 @@
2
2
  "name": "@pie-element/categorize-controller",
3
3
  "private": true,
4
4
  "dependencies": {
5
- "@pie-lib/categorize": "^0.6.26",
5
+ "@pie-lib/categorize": "^0.7.0",
6
6
  "@pie-lib/controller-utils": "^0.2.27",
7
7
  "@pie-lib/feedback": "^0.4.28",
8
8
  "lodash": "^4.17.15"
9
9
  },
10
- "version": "5.5.1",
10
+ "version": "5.6.0",
11
11
  "description": "",
12
12
  "scripts": {},
13
13
  "main": "lib/index.js",
package/package.json CHANGED
@@ -4,16 +4,16 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "7.5.2-next.98+e6f0de2e0",
7
+ "version": "7.6.1-next.14+99eef6c72",
8
8
  "description": "",
9
9
  "author": "pie framework developers",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
12
  "@material-ui/core": "^3.9.2",
13
13
  "@pie-framework/pie-player-events": "^0.1.0",
14
- "@pie-lib/categorize": "^0.6.26",
14
+ "@pie-lib/categorize": "^0.7.0",
15
15
  "@pie-lib/correct-answer-toggle": "^2.3.47",
16
- "@pie-lib/drag": "^2.0.4",
16
+ "@pie-lib/drag": "^2.0.6",
17
17
  "@pie-lib/math-rendering": "^2.5.1",
18
18
  "@pie-lib/render-ui": "^4.13.7",
19
19
  "classnames": "^2.2.5",
@@ -24,7 +24,7 @@
24
24
  "react-dnd": "^14.0.5",
25
25
  "react-dom": "^16.8.1"
26
26
  },
27
- "gitHead": "e6f0de2e0a0e614c6fa7ff0daed87d5bea48f44f",
27
+ "gitHead": "99eef6c7245ed8fe4efa0ac90482f49788550c77",
28
28
  "scripts": {
29
29
  "postpublish": "../../scripts/postpublish"
30
30
  },