@pie-element/categorize 7.11.3-next.45 → 7.11.3-next.71

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.
@@ -269,13 +269,16 @@ exports.AlternateResponses = AlternateResponses;
269
269
  classes: _propTypes["default"].object.isRequired,
270
270
  className: _propTypes["default"].string,
271
271
  categories: _propTypes["default"].array,
272
+ defaultImageMaxHeight: _propTypes["default"].number,
273
+ defaultImageMaxWidth: _propTypes["default"].number,
272
274
  onModelChanged: _propTypes["default"].func,
273
275
  model: _propTypes["default"].object.isRequired,
274
276
  uploadSoundSupport: _propTypes["default"].shape({
275
277
  add: _propTypes["default"].func.isRequired,
276
278
  "delete": _propTypes["default"].func.isRequired
277
279
  }),
278
- toolbarOpts: _propTypes["default"].object
280
+ toolbarOpts: _propTypes["default"].object,
281
+ spellCheck: _propTypes["default"].bool
279
282
  });
280
283
 
281
284
  var _default = (0, _styles.withStyles)(styles)(AlternateResponses);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/alternateResponses.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","AlternateResponses","addedChoice","categoryId","props","altIndex","model","correctResponse","choices","onModelChanged","choice","find","c","id","forEach","a","category","alternateResponses","push","categoryCount","reduce","acc","currentValue","foundIndex","findIndex","filter","choiceId","from","to","choiceIndex","alternateIndex","altId","configuration","classes","className","imageSupport","spellCheck","uploadSoundSupport","toolbarOpts","defaultImageMaxHeight","defaultImageMaxWidth","categoriesPerRow","errors","rowLabels","duplicateAlternate","maxImageWidth","maxImageHeight","holderStyle","isDuplicated","index","map","hasRowLabel","rowIndex","val","changeRowLabel","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","object","shape","add","func","string","array"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,UAAU,EAAE;AACVC,MAAAA,YAAY,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB;AADzB,KADa;AAIzBC,IAAAA,gBAAgB,EAAE;AAChBC,MAAAA,OAAO,EAAE,MADO;AAEhBC,MAAAA,UAAU,YAAKP,KAAK,CAACG,OAAN,CAAcC,IAAnB,OAFM;AAGhBI,MAAAA,aAAa,YAAKR,KAAK,CAACG,OAAN,CAAcC,IAAnB;AAHG,KAJO;AASzBK,IAAAA,GAAG,EAAE;AACHH,MAAAA,OAAO,EAAE,MADN;AAEHI,MAAAA,mBAAmB,EAAE,gBAFlB;AAGHF,MAAAA,aAAa,YAAKR,KAAK,CAACG,OAAN,CAAcC,IAAnB,OAHV;AAIHO,MAAAA,UAAU,EAAE,UAJT;AAKHC,MAAAA,KAAK,EAAE,MALJ;AAMHC,MAAAA,SAAS,EAAEb,KAAK,CAACG,OAAN,CAAcC,IANtB;AAOHF,MAAAA,YAAY,EAAE,IAAIF,KAAK,CAACG,OAAN,CAAcC;AAP7B,KAToB;AAkBzBU,IAAAA,QAAQ,EAAE;AACRC,MAAAA,UAAU,EAAE;AADJ,KAlBe;AAqBzBC,IAAAA,cAAc,EAAE;AACdJ,MAAAA,KAAK,EAAE;AADO;AArBS,GAAZ;AAAA,CAAf;;IA0BaK,kB;;;;;;;;;;;;;;;4GAoBW,UAACC,WAAD,EAAcC,UAAd,EAA6B;AACjD,wBAII,MAAKC,KAJT;AAAA,UACEC,QADF,eACEA,QADF;AAAA,0CAEEC,KAFF;AAAA,UAEWC,eAFX,qBAEWA,eAFX;AAAA,UAE4BC,OAF5B,qBAE4BA,OAF5B;AAAA,UAGEC,cAHF,eAGEA,cAHF;AAMA,UAAMC,MAAM,GAAGF,OAAO,CAACG,IAAR,CAAa,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,EAAF,KAASX,WAAW,CAACW,EAA5B;AAAA,OAAb,CAAf;AAEAN,MAAAA,eAAe,CAACO,OAAhB,CAAwB,UAACC,CAAD,EAAO;AAC7B,YAAIA,CAAC,CAACC,QAAF,KAAeb,UAAnB,EAA+B;AAC7BY,UAAAA,CAAC,CAACE,kBAAF,GAAuBF,CAAC,CAACE,kBAAF,IAAwB,EAA/C;;AAEA,cAAI,CAACF,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,CAAL,EAAqC;AACnCU,YAAAA,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,IAAiC,EAAjC;AACD;;AAEDU,UAAAA,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,EAA+Ba,IAA/B,CAAoChB,WAAW,CAACW,EAAhD;;AACA,cAAIH,MAAM,CAACS,aAAP,IAAwBT,MAAM,CAACS,aAAP,KAAyB,CAArD,EAAwD;AACtDJ,YAAAA,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,IAAiCU,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,EAA+Be,MAA/B,CAAsC,UAACC,GAAD,EAAMC,YAAN,EAAuB;AAC5F,kBAAIA,YAAY,KAAKZ,MAAM,CAACG,EAA5B,EAAgC;AAC9B,oBAAMU,UAAU,GAAGF,GAAG,CAACG,SAAJ,CAAc,UAACZ,CAAD;AAAA,yBAAOA,CAAC,KAAKF,MAAM,CAACG,EAApB;AAAA,iBAAd,CAAnB;;AACA,oBAAIU,UAAU,KAAK,CAAC,CAApB,EAAuB;AACrBF,kBAAAA,GAAG,CAACH,IAAJ,CAASI,YAAT;AACD;AACF,eALD,MAKO;AACLD,gBAAAA,GAAG,CAACH,IAAJ,CAASI,YAAT;AACD;;AAED,qBAAOD,GAAP;AACD,aAXgC,EAW9B,EAX8B,CAAjC;AAYD;;AAED,iBAAON,CAAP;AACD,SAxBD,MAwBO;AACL,cAAIA,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,KAAkCK,MAAM,CAACS,aAAP,KAAyB,CAA/D,EAAkE;AAChEJ,YAAAA,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,IAAiCU,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,EAA+BoB,MAA/B,CAAsC,UAACb,CAAD;AAAA,qBAAOA,CAAC,KAAKV,WAAW,CAACW,EAAzB;AAAA,aAAtC,CAAjC;AACA,mBAAOE,CAAP;AACD;AACF;;AAED,eAAOA,CAAP;AACD,OAjCD;AAmCAN,MAAAA,cAAc,CAAC;AAAEF,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAd;AACD,K;mGAEY,UAACmB,QAAD,EAAWC,IAAX,EAAiBC,EAAjB,EAAqBC,WAArB,EAAkCC,cAAlC,EAAqD;AAChE,yBAAkC,MAAK1B,KAAvC;AAAA,UAAQE,KAAR,gBAAQA,KAAR;AAAA,UAAeG,cAAf,gBAAeA,cAAf;;AACA,iBAAwCH,KAAK,IAAI,EAAjD;AAAA,UAAME,OAAN,QAAMA,OAAN;AAAA,sCAAeD,eAAf;AAAA,UAAeA,eAAf,qCAAiC,EAAjC;;AACA,UAAMG,MAAM,GAAG,CAACF,OAAO,IAAI,EAAZ,EAAgBG,IAAhB,CAAqB,UAACD,MAAD;AAAA,eAAYA,MAAM,CAACG,EAAP,KAAca,QAA1B;AAAA,OAArB,CAAf;AACAnB,MAAAA,eAAe,GAAG,uCAChBmB,QADgB,EAEhBC,IAFgB,EAGhBC,EAHgB,EAIhBC,WAJgB,EAKhBtB,eALgB,EAMhBuB,cANgB,EAOhBpB,MAPgB,aAOhBA,MAPgB,uBAOhBA,MAAM,CAAES,aAPQ,CAAlB;AAUAV,MAAAA,cAAc,CAAC;AAAEF,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAd;AACD,K;iHAE0B,UAACS,QAAD,EAAWN,MAAX,EAAsB;AAC/C,yBAII,MAAKN,KAJT;AAAA,UACEC,QADF,gBACEA,QADF;AAAA,UAEWE,eAFX,gBAEED,KAFF,CAEWC,eAFX;AAAA,UAGEE,cAHF,gBAGEA,cAHF;AAMAF,MAAAA,eAAe,CAACO,OAAhB,CAAwB,UAACC,CAAD,EAAO;AAC7B,YAAIA,CAAC,CAACC,QAAF,KAAeA,QAAQ,CAACH,EAA5B,EAAgC;AAC9B,cAAIE,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,CAAJ,EAAoC;AAClCU,YAAAA,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,IAAiCU,CAAC,CAACE,kBAAF,CAAqBZ,QAArB,EAA+BoB,MAA/B,CAAsC,UAACM,KAAD;AAAA,qBAAWA,KAAK,KAAKrB,MAAM,CAACG,EAA5B;AAAA,aAAtC,CAAjC;AACD;AACF;;AAED,eAAOE,CAAP;AACD,OARD;AAUAN,MAAAA,cAAc,CAAC;AAAEF,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAd;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAaI,KAAKH,KAbT;AAAA,UACEC,QADF,gBACEA,QADF;AAAA,UAEEC,KAFF,gBAEEA,KAFF;AAAA,UAGE0B,aAHF,gBAGEA,aAHF;AAAA,UAIEC,OAJF,gBAIEA,OAJF;AAAA,UAKEC,SALF,gBAKEA,SALF;AAAA,UAMEjD,UANF,gBAMEA,UANF;AAAA,UAOEkD,YAPF,gBAOEA,YAPF;AAAA,UAQEC,UARF,gBAQEA,UARF;AAAA,UASEC,kBATF,gBASEA,kBATF;AAAA,UAUEC,WAVF,gBAUEA,WAVF;AAAA,UAWEC,qBAXF,gBAWEA,qBAXF;AAAA,UAYEC,oBAZF,gBAYEA,oBAZF;AAcA,UAAQC,gBAAR,GAAgDnC,KAAhD,CAAQmC,gBAAR;AAAA,UAA0BC,MAA1B,GAAgDpC,KAAhD,CAA0BoC,MAA1B;AAAA,UAAkCC,SAAlC,GAAgDrC,KAAhD,CAAkCqC,SAAlC;;AACA,kBAA+BD,MAAM,IAAI,EAAzC;AAAA,UAAQE,kBAAR,SAAQA,kBAAR;;AACA,kBAAoDZ,aAAa,IAAI,EAArE;AAAA,sCAAQa,aAAR;AAAA,UAAQA,aAAR,oCAAwB,EAAxB;AAAA,uCAA4BC,cAA5B;AAAA,UAA4BA,cAA5B,qCAA6C,EAA7C;;AAEA,UAAMC,WAAW,GAAG;AAClBrD,QAAAA,mBAAmB,mBAAY+C,gBAAZ;AADD,OAApB;AAGA,UAAMO,YAAY,GAAGJ,kBAAkB,GAAGA,kBAAkB,CAACK,KAAnB,KAA6B5C,QAAhC,GAA2C,KAAlF;AAEA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAW4B,OAAO,CAAChD,UAAnB,EAA+BiD,SAA/B;AAAhB,sBACE;AAAK,QAAA,SAAS,EAAED,OAAO,CAAC5C,gBAAxB;AAA0C,QAAA,KAAK,EAAE0D;AAAjD,SACG9D,UAAU,CAACiE,GAAX,CAAe,UAAClC,QAAD,EAAWiC,KAAX,EAAqB;AACnC,YAAME,WAAW,GAAGF,KAAK,GAAGR,gBAAR,KAA6B,CAAjD;AACA,YAAMW,QAAQ,GAAGH,KAAK,GAAGR,gBAAzB;AAEA,4BACE,gCAAC,iBAAD,CAAO,QAAP;AAAgB,UAAA,GAAG,EAAEQ;AAArB,WACGE,WAAW,iBACV,gCAAC,kBAAD;AACE,UAAA,gBAAgB,EAAEV,gBADpB;AAEE,UAAA,QAAQ,EAAE,IAFZ;AAGE,UAAA,QAAQ,EAAEW,QAHZ;AAIE,UAAA,MAAM,EAAET,SAAS,CAACS,QAAD,CAAT,IAAuB,EAJjC;AAKE,UAAA,QAAQ,EAAE,kBAACC,GAAD;AAAA,mBAAS,MAAI,CAACC,cAAL,CAAoBD,GAApB,EAAyBD,QAAzB,CAAT;AAAA,WALZ;AAME,UAAA,YAAY,EAAEjB,YANhB;AAOE,UAAA,WAAW,EAAEG,WAPf;AAQE,UAAA,UAAU,EAAEF,UARd;AASE,UAAA,aAAa,EAAGS,aAAa,IAAIA,aAAa,CAAC/C,QAAhC,IAA6C0C,oBAT9D;AAUE,UAAA,cAAc,EAAGM,cAAc,IAAIA,cAAc,CAAChD,QAAlC,IAA+CyC,qBAVjE;AAWE,UAAA,kBAAkB,EAAEF;AAXtB,UAFJ,eAiBE,gCAAC,oBAAD;AACE,UAAA,GAAG,EAAEY,KADP;AAEE,UAAA,sBAAsB,EAAE5C,QAF1B;AAGE,UAAA,YAAY,EAAE8B,YAHhB;AAIE,UAAA,YAAY,EAAEa,YAAY,IAAIJ,kBAAkB,CAAC5B,QAAnB,KAAgCA,QAAQ,CAACH,EAJzE;AAKE,UAAA,QAAQ,EAAEG,QALZ;AAME,UAAA,UAAU,EAAEoB,UANd;AAOE,UAAA,WAAW,EAAE,MAAI,CAACmB,mBAPpB;AAQE,UAAA,cAAc,EAAE,wBAAC7C,MAAD,EAASmB,WAAT;AAAA,mBAAyB,MAAI,CAAC2B,wBAAL,CAA8BxC,QAA9B,EAAwCN,MAAxC,EAAgDmB,WAAhD,CAAzB;AAAA,WARlB;AASE,UAAA,YAAY,EAAE,sBAACH,QAAD,EAAWC,IAAX,EAAiBC,EAAjB,EAAqBC,WAArB,EAAkCC,cAAlC;AAAA,mBACZ,MAAI,CAAC2B,UAAL,CAAgB/B,QAAhB,EAA0BC,IAA1B,EAAgCC,EAAhC,EAAoCC,WAApC,EAAiDC,cAAjD,CADY;AAAA,WAThB;AAYE,UAAA,kBAAkB,EAAEO;AAZtB,UAjBF,CADF;AAkCD,OAtCA,CADH,CADF,CADF;AA6CD;;;EA7KqCqB,kBAAMC,S;;;iCAAjC1D,kB,eACQ;AACjBI,EAAAA,QAAQ,EAAEuD,sBAAUC,MAAV,CAAiBC,UADV;AAEjB9B,EAAAA,aAAa,EAAE4B,sBAAUG,MAFR;AAGjB5B,EAAAA,YAAY,EAAEyB,sBAAUI,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEL,sBAAUM,IAAV,CAAeJ,UADQ;AAE5B,cAAQF,sBAAUM,IAAV,CAAeJ;AAFK,GAAhB,CAHG;AAOjB7B,EAAAA,OAAO,EAAE2B,sBAAUG,MAAV,CAAiBD,UAPT;AAQjB5B,EAAAA,SAAS,EAAE0B,sBAAUO,MARJ;AASjBlF,EAAAA,UAAU,EAAE2E,sBAAUQ,KATL;AAUjB3D,EAAAA,cAAc,EAAEmD,sBAAUM,IAVT;AAWjB5D,EAAAA,KAAK,EAAEsD,sBAAUG,MAAV,CAAiBD,UAXP;AAYjBzB,EAAAA,kBAAkB,EAAEuB,sBAAUI,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAEL,sBAAUM,IAAV,CAAeJ,UADc;AAElC,cAAQF,sBAAUM,IAAV,CAAeJ;AAFW,GAAhB,CAZH;AAgBjBxB,EAAAA,WAAW,EAAEsB,sBAAUG;AAhBN,C;;eA+KN,wBAAWhF,MAAX,EAAmBkB,kBAAnB,C","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';\nimport { RowLabel } from './RowLabel';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n configuration: PropTypes.object,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n };\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 {\n altIndex,\n model,\n configuration,\n classes,\n className,\n categories,\n imageSupport,\n spellCheck,\n uploadSoundSupport,\n toolbarOpts,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n } = this.props;\n const { categoriesPerRow, errors, rowLabels } = model;\n const { duplicateAlternate } = errors || {};\n const { maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n disabled={true}\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\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 </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/alternateResponses.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","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","configuration","classes","className","imageSupport","spellCheck","uploadSoundSupport","toolbarOpts","defaultImageMaxHeight","defaultImageMaxWidth","categoriesPerRow","errors","rowLabels","duplicateAlternate","maxImageWidth","maxImageHeight","holderStyle","isDuplicated","index","map","hasRowLabel","rowIndex","val","changeRowLabel","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","object","shape","add","func","string","array","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Category from './category';\nimport { moveChoiceToAlternate } from '@pie-lib/categorize';\nimport { RowLabel } from './RowLabel';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n configuration: PropTypes.object,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse, choices },\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 {\n altIndex,\n model,\n configuration,\n classes,\n className,\n categories,\n imageSupport,\n spellCheck,\n uploadSoundSupport,\n toolbarOpts,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n } = this.props;\n const { categoriesPerRow, errors, rowLabels } = model;\n const { duplicateAlternate } = errors || {};\n const { maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n disabled={true}\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\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 </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
@@ -81,7 +81,6 @@ var Category = /*#__PURE__*/function (_React$Component) {
81
81
  index = _this$props2.index,
82
82
  error = _this$props2.error,
83
83
  isDuplicated = _this$props2.isDuplicated,
84
- onChange = _this$props2.onChange,
85
84
  onDelete = _this$props2.onDelete,
86
85
  onDeleteChoice = _this$props2.onDeleteChoice,
87
86
  onAddChoice = _this$props2.onAddChoice,
@@ -137,11 +136,15 @@ exports.Category = Category;
137
136
  classes: _propTypes["default"].object.isRequired,
138
137
  className: _propTypes["default"].string,
139
138
  category: _propTypes["default"].object.isRequired,
139
+ defaultImageMaxHeight: _propTypes["default"].number,
140
+ defaultImageMaxWidth: _propTypes["default"].number,
140
141
  deleteFocusedEl: _propTypes["default"].func,
141
142
  focusedEl: _propTypes["default"].number,
142
143
  index: _propTypes["default"].number,
143
144
  error: _propTypes["default"].string,
144
145
  isDuplicated: _propTypes["default"].bool,
146
+ maxImageWidth: _propTypes["default"].object,
147
+ maxImageHeight: _propTypes["default"].object,
145
148
  onChange: _propTypes["default"].func,
146
149
  onDelete: _propTypes["default"].func,
147
150
  onDeleteChoice: _propTypes["default"].func,
@@ -152,6 +155,7 @@ exports.Category = Category;
152
155
  "delete": _propTypes["default"].func.isRequired
153
156
  }),
154
157
  toolbarOpts: _propTypes["default"].object,
158
+ spellCheck: _propTypes["default"].bool,
155
159
  uploadSoundSupport: _propTypes["default"].shape({
156
160
  add: _propTypes["default"].func.isRequired,
157
161
  "delete": _propTypes["default"].func.isRequired
@@ -181,6 +185,7 @@ var styles = function styles(theme) {
181
185
  justifyContent: 'space-between'
182
186
  },
183
187
  category: {
188
+ minWidth: '196px',
184
189
  padding: theme.spacing.unit,
185
190
  overflow: 'visible'
186
191
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/category.jsx"],"names":["Category","l","props","category","onChange","label","alternateResponseIndex","classes","className","deleteFocusedEl","focusedEl","index","error","isDuplicated","onDelete","onDeleteChoice","onAddChoice","onMoveChoice","imageSupport","spellCheck","toolbarOpts","maxImageWidth","maxImageHeight","uploadSoundSupport","duplicateError","changeLabel","errorText","placeHolder","choices","id","actions","React","Component","PropTypes","number","object","isRequired","string","func","bool","shape","add","styles","theme","minHeight","deleteButton","margin","padding","paddingBottom","paddingTop","spacing","unit","iconButtonRoot","width","height","header","display","justifyContent","overflow","border","fontSize","typography","color","palette","main","editor","flex"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport InputHeader from '../input-header';\nimport CardActions from '@material-ui/core/CardActions';\nimport { DeleteButton } from '../buttons';\n\nimport PlaceHolder from './droppable-placeholder';\n\nexport class Category extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n category: PropTypes.object.isRequired,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n error: PropTypes.string,\n isDuplicated: PropTypes.bool,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n onDeleteChoice: PropTypes.func,\n onAddChoice: PropTypes.func,\n onMoveChoice: PropTypes.func,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n changeLabel = (l) => {\n const { category, onChange } = this.props;\n category.label = l;\n onChange(category);\n };\n\n render() {\n const {\n alternateResponseIndex,\n category,\n classes,\n className,\n deleteFocusedEl,\n focusedEl,\n index,\n error,\n isDuplicated,\n onChange,\n onDelete,\n onDeleteChoice,\n onAddChoice,\n onMoveChoice,\n imageSupport,\n spellCheck,\n toolbarOpts,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n return (\n <Card\n className={classNames(classes.category, className, {\n [classes.duplicateError]: isDuplicated,\n })}\n >\n <span>\n <InputHeader\n label={category.label}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n disabled={!!alternateResponseIndex || alternateResponseIndex === 0}\n error={error}\n onChange={this.changeLabel}\n onDelete={onDelete}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>\n <PlaceHolder\n className={classes.placeHolder}\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={category.choices}\n onDeleteChoice={onDeleteChoice}\n onDropChoice={onAddChoice}\n onMoveChoice={onMoveChoice}\n categoryId={category.id}\n />\n {onDelete && (\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n </CardActions>\n )}\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n placeHolder: {\n minHeight: '100px',\n },\n deleteButton: {\n margin: 0,\n },\n actions: {\n padding: 0,\n paddingBottom: 0,\n paddingTop: theme.spacing.unit,\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto',\n },\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n category: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n duplicateError: {\n border: '1px solid red',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit * 2,\n },\n});\nexport default withStyles(styles)(Category);\n"],"file":"category.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/category.jsx"],"names":["Category","l","props","category","onChange","label","alternateResponseIndex","classes","className","deleteFocusedEl","focusedEl","index","error","isDuplicated","onDelete","onDeleteChoice","onAddChoice","onMoveChoice","imageSupport","spellCheck","toolbarOpts","maxImageWidth","maxImageHeight","uploadSoundSupport","duplicateError","changeLabel","errorText","placeHolder","choices","id","actions","React","Component","PropTypes","number","object","isRequired","string","defaultImageMaxHeight","defaultImageMaxWidth","func","bool","shape","add","styles","theme","minHeight","deleteButton","margin","padding","paddingBottom","paddingTop","spacing","unit","iconButtonRoot","width","height","header","display","justifyContent","minWidth","overflow","border","fontSize","typography","color","palette","main","editor","flex"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport InputHeader from '../input-header';\nimport CardActions from '@material-ui/core/CardActions';\nimport { DeleteButton } from '../buttons';\n\nimport PlaceHolder from './droppable-placeholder';\n\nexport class Category extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n category: PropTypes.object.isRequired,\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n error: PropTypes.string,\n isDuplicated: PropTypes.bool,\n maxImageWidth: PropTypes.object,\n maxImageHeight: PropTypes.object,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\n onDeleteChoice: PropTypes.func,\n onAddChoice: PropTypes.func,\n onMoveChoice: PropTypes.func,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n static defaultProps = {};\n\n changeLabel = (l) => {\n const { category, onChange } = this.props;\n category.label = l;\n onChange(category);\n };\n\n render() {\n const {\n alternateResponseIndex,\n category,\n classes,\n className,\n deleteFocusedEl,\n focusedEl,\n index,\n error,\n isDuplicated,\n onDelete,\n onDeleteChoice,\n onAddChoice,\n onMoveChoice,\n imageSupport,\n spellCheck,\n toolbarOpts,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n return (\n <Card\n className={classNames(classes.category, className, {\n [classes.duplicateError]: isDuplicated,\n })}\n >\n <span>\n <InputHeader\n label={category.label}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n disabled={!!alternateResponseIndex || alternateResponseIndex === 0}\n error={error}\n onChange={this.changeLabel}\n onDelete={onDelete}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>\n <PlaceHolder\n className={classes.placeHolder}\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={category.choices}\n onDeleteChoice={onDeleteChoice}\n onDropChoice={onAddChoice}\n onMoveChoice={onMoveChoice}\n categoryId={category.id}\n />\n {onDelete && (\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n </CardActions>\n )}\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n placeHolder: {\n minHeight: '100px',\n },\n deleteButton: {\n margin: 0,\n },\n actions: {\n padding: 0,\n paddingBottom: 0,\n paddingTop: theme.spacing.unit,\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto',\n },\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n category: {\n minWidth: '196px',\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n duplicateError: {\n border: '1px solid red',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit * 2,\n },\n});\nexport default withStyles(styles)(Category);\n"],"file":"category.js"}
@@ -103,9 +103,12 @@ var ChoicePreview = /*#__PURE__*/function (_React$Component) {
103
103
 
104
104
  exports.ChoicePreview = ChoicePreview;
105
105
  (0, _defineProperty2["default"])(ChoicePreview, "propTypes", {
106
+ alternateResponseIndex: _propTypes["default"].number,
107
+ category: _propTypes["default"].object,
106
108
  classes: _propTypes["default"].object.isRequired,
107
109
  className: _propTypes["default"].string,
108
110
  choice: _propTypes["default"].object.isRequired,
111
+ choiceIndex: _propTypes["default"].number,
109
112
  onDelete: _propTypes["default"].func.isRequired
110
113
  });
111
114
  (0, _defineProperty2["default"])(ChoicePreview, "defaultProps", {});
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","content","breakWord","React","Component","PropTypes","object","isRequired","string","func","styles","position","right","top","maxWidth","wordWrap"],"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,OAA3B;AAAoC,QAAA,SAAS,YAAKJ,OAAO,CAACK,SAAb;AAA7C,QADF,eAEE,gCAAC,sBAAD;AAAY,QAAA,KAAK,EAAC,WAAlB;AAA8B,sBAAW,QAAzC;AAAkD,QAAA,SAAS,EAAEL,OAAO,UAApE;AAA6E,QAAA,OAAO,EAAE;AAAtF,sBACE,gCAAC,+BAAD,OADF,CAFF,CADK,GAOH,IARN,CADF;AAYD;;;EA5BgCM,kBAAMC,S;;;iCAA5Bb,a,eACQ;AACjBM,EAAAA,OAAO,EAAEQ,sBAAUC,MAAV,CAAiBC,UADT;AAEjBT,EAAAA,SAAS,EAAEO,sBAAUG,MAFJ;AAGjBd,EAAAA,MAAM,EAAEW,sBAAUC,MAAV,CAAiBC,UAHR;AAIjBd,EAAAA,QAAQ,EAAEY,sBAAUI,IAAV,CAAeF;AAJR,C;iCADRhB,a,kBAOW,E;;AAuBxB,IAAMmB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBV,IAAAA,aAAa,EAAE;AACbW,MAAAA,QAAQ,EAAE;AADG,KADK;AAIpB,cAAQ;AACNA,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC,KAJY;AASpBX,IAAAA,SAAS,EAAE;AACTY,MAAAA,QAAQ,EAAE,KADD;AAETC,MAAAA,QAAQ,EAAE;AAFD;AATS,GAAP;AAAA,CAAf;;eAce,wBAAWL,MAAX,EAAmBnB,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} className={`${classes.breakWord}`} />\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 breakWord: {\n maxWidth: '90%',\n wordWrap: 'break-word',\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","breakWord","React","Component","PropTypes","number","object","isRequired","string","func","styles","position","right","top","maxWidth","wordWrap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,a;;;;;;;;;;;;;;;+FAYF,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,OAA3B;AAAoC,QAAA,SAAS,YAAKJ,OAAO,CAACK,SAAb;AAA7C,QADF,eAEE,gCAAC,sBAAD;AAAY,QAAA,KAAK,EAAC,WAAlB;AAA8B,sBAAW,QAAzC;AAAkD,QAAA,SAAS,EAAEL,OAAO,UAApE;AAA6E,QAAA,OAAO,EAAE;AAAtF,sBACE,gCAAC,+BAAD,OADF,CAFF,CADK,GAOH,IARN,CADF;AAYD;;;EA/BgCM,kBAAMC,S;;;iCAA5Bb,a,eACQ;AACjBI,EAAAA,sBAAsB,EAAEU,sBAAUC,MADjB;AAEjBV,EAAAA,QAAQ,EAAES,sBAAUE,MAFH;AAGjBV,EAAAA,OAAO,EAAEQ,sBAAUE,MAAV,CAAiBC,UAHT;AAIjBV,EAAAA,SAAS,EAAEO,sBAAUI,MAJJ;AAKjBf,EAAAA,MAAM,EAAEW,sBAAUE,MAAV,CAAiBC,UALR;AAMjBT,EAAAA,WAAW,EAAEM,sBAAUC,MANN;AAOjBb,EAAAA,QAAQ,EAAEY,sBAAUK,IAAV,CAAeF;AAPR,C;iCADRjB,a,kBAUW,E;;AAuBxB,IAAMoB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBX,IAAAA,aAAa,EAAE;AACbY,MAAAA,QAAQ,EAAE;AADG,KADK;AAIpB,cAAQ;AACNA,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC,KAJY;AASpBZ,IAAAA,SAAS,EAAE;AACTa,MAAAA,QAAQ,EAAE,KADD;AAETC,MAAAA,QAAQ,EAAE;AAFD;AATS,GAAP;AAAA,CAAf;;eAce,wBAAWL,MAAX,EAAmBpB,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 alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n choiceIndex: PropTypes.number,\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} className={`${classes.breakWord}`} />\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 breakWord: {\n maxWidth: '90%',\n wordWrap: 'break-word',\n }\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
@@ -367,6 +367,8 @@ var Categories = /*#__PURE__*/function (_React$Component) {
367
367
 
368
368
  exports.Categories = Categories;
369
369
  (0, _defineProperty2["default"])(Categories, "propTypes", {
370
+ defaultImageMaxHeight: _propTypes["default"].number,
371
+ defaultImageMaxWidth: _propTypes["default"].number,
370
372
  imageSupport: _propTypes["default"].shape({
371
373
  add: _propTypes["default"].func.isRequired,
372
374
  "delete": _propTypes["default"].func.isRequired
@@ -381,7 +383,8 @@ exports.Categories = Categories;
381
383
  onModelChanged: _propTypes["default"].func,
382
384
  model: _propTypes["default"].object.isRequired,
383
385
  configuration: _propTypes["default"].object.isRequired,
384
- toolbarOpts: _propTypes["default"].object
386
+ toolbarOpts: _propTypes["default"].object,
387
+ spellCheck: _propTypes["default"].bool
385
388
  });
386
389
 
387
390
  var _default = (0, _styles.withStyles)(styles)(Categories);
@@ -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","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","Categories","focusedEl","props","model","oldCategories","categoriesPerRow","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","classes","className","imageSupport","uploadSoundSupport","toolbarOpts","spellCheck","configuration","defaultImageMaxHeight","defaultImageMaxWidth","errors","associationError","categoriesError","categoriesErrors","maxCategories","maxImageWidth","maxImageHeight","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 { choiceUtils as utils } from '@pie-lib/config-ui';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\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';\nimport { RowLabel } from './RowLabel';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 3,\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: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport 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\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 disabled={false}\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\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\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</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","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","Categories","focusedEl","props","model","oldCategories","categoriesPerRow","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","classes","className","imageSupport","uploadSoundSupport","toolbarOpts","spellCheck","configuration","defaultImageMaxHeight","defaultImageMaxWidth","errors","associationError","categoriesError","categoriesErrors","maxCategories","maxImageWidth","maxImageHeight","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","number","shape","func","isRequired","object","string","array","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\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';\nimport { RowLabel } from './RowLabel';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 3,\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: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport class Categories extends React.Component {\n static propTypes = {\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\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 spellCheck: PropTypes.bool,\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\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 disabled={false}\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\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\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
@@ -182,10 +182,15 @@ exports.Choice = Choice;
182
182
  classes: _propTypes["default"].object.isRequired,
183
183
  className: _propTypes["default"].string,
184
184
  choice: _propTypes["default"].object.isRequired,
185
+ connectDropTarget: _propTypes["default"].func,
185
186
  deleteFocusedEl: _propTypes["default"].func,
187
+ defaultImageMaxHeight: _propTypes["default"].number,
188
+ defaultImageMaxWidth: _propTypes["default"].number,
186
189
  focusedEl: _propTypes["default"].number,
187
190
  index: _propTypes["default"].number,
188
191
  lockChoiceOrder: _propTypes["default"].bool,
192
+ maxImageHeight: _propTypes["default"].object,
193
+ maxImageWidth: _propTypes["default"].object,
189
194
  onChange: _propTypes["default"].func.isRequired,
190
195
  onDelete: _propTypes["default"].func.isRequired,
191
196
  connectDragSource: _propTypes["default"].func.isRequired,
@@ -200,7 +205,8 @@ exports.Choice = Choice;
200
205
  uploadSoundSupport: _propTypes["default"].shape({
201
206
  add: _propTypes["default"].func.isRequired,
202
207
  "delete": _propTypes["default"].func.isRequired
203
- })
208
+ }),
209
+ spellCheck: _propTypes["default"].bool
204
210
  });
205
211
  (0, _defineProperty2["default"])(Choice, "defaultProps", {});
206
212
 
@@ -211,6 +217,7 @@ var styles = function styles(theme) {
211
217
  justifyContent: 'space-between'
212
218
  },
213
219
  choice: {
220
+ minWidth: '196px',
214
221
  padding: theme.spacing.unit,
215
222
  overflow: 'visible'
216
223
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","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","typography","color","palette","main","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/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: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
1
+ {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","deleteFocusedEl","focusedEl","index","onDelete","connectDropTarget","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","showRemoveAfterPlacing","isCheckboxShown","draggable","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","defaultImageMaxHeight","number","defaultImageMaxWidth","bool","shape","add","styles","theme","padding","justifyContent","minWidth","spacing","unit","overflow","cursor","fontSize","typography","color","palette","main","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/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 connectDropTarget: PropTypes.func,\n deleteFocusedEl: PropTypes.func,\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n lockChoiceOrder: PropTypes.bool,\n maxImageHeight: PropTypes.object,\n maxImageWidth: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n 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 minWidth: '196px',\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
@@ -91,7 +91,8 @@ exports.Config = Config;
91
91
  classes: _propTypes["default"].object.isRequired,
92
92
  className: _propTypes["default"].string,
93
93
  config: _propTypes["default"].object,
94
- onModelChanged: _propTypes["default"].func
94
+ onModelChanged: _propTypes["default"].func,
95
+ spellCheck: _propTypes["default"].bool
95
96
  });
96
97
  (0, _defineProperty2["default"])(Config, "defaultProps", {});
97
98
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/choices/config.jsx"],"names":["Config","target","props","onModelChanged","choicesLabel","value","classes","className","config","spellCheck","label","shrink","changeLabel","React","Component","PropTypes","object","isRequired","string","func","styles","theme","paddingTop","spacing","unit","marginBottom","width"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,M;;;;;;;;;;;;;;;oGAUG,gBAAgB;AAAA,UAAbC,MAAa,QAAbA,MAAa;;AAC5B,YAAKC,KAAL,CAAWC,cAAX,CAA0B;AAAEC,QAAAA,YAAY,EAAEH,MAAM,CAACI;AAAvB,OAA1B;AACD,K;;;;;;WAED,kBAAS;AACP,wBAAmD,KAAKH,KAAxD;AAAA,UAAQI,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,MAA5B,eAA4BA,MAA5B;AAAA,UAAoCC,UAApC,eAAoCA,UAApC;AAEA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWH,OAAO,CAACE,MAAnB,EAA2BD,SAA3B;AAAhB,sBACE,gCAAC,qBAAD;AACE,QAAA,SAAS,EAAED,OAAO,CAACI,KADrB;AAEE,QAAA,eAAe,EAAE;AACfC,UAAAA,MAAM,EAAE;AADO,SAFnB;AAKE,QAAA,OAAO,EAAC,UALV;AAME,QAAA,KAAK,EAAC,OANR;AAOE,QAAA,KAAK,EAAEH,MAAM,CAACJ,YAPhB;AAQE,QAAA,QAAQ,EAAE,KAAKQ,WARjB;AASE,QAAA,UAAU,EAAEH;AATd,QADF,CADF;AAeD;;;EAhCyBI,kBAAMC,S;;;iCAArBd,M,eACQ;AACjBM,EAAAA,OAAO,EAAES,sBAAUC,MAAV,CAAiBC,UADT;AAEjBV,EAAAA,SAAS,EAAEQ,sBAAUG,MAFJ;AAGjBV,EAAAA,MAAM,EAAEO,sBAAUC,MAHD;AAIjBb,EAAAA,cAAc,EAAEY,sBAAUI;AAJT,C;iCADRnB,M,kBAQW,E;;AA2BxB,IAAMoB,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBb,IAAAA,MAAM,EAAE;AACNc,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IADpB;AAENC,MAAAA,YAAY,EAAEJ,KAAK,CAACE,OAAN,CAAcC;AAFtB,KADiB;AAKzBd,IAAAA,KAAK,EAAE;AACLgB,MAAAA,KAAK,EAAE;AADF;AALkB,GAAZ;AAAA,CAAf;;eAUe,wBAAWN,MAAX,EAAmBpB,MAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport TextField from '@material-ui/core/TextField';\n\nexport class Config extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n config: PropTypes.object,\n onModelChanged: PropTypes.func,\n };\n\n static defaultProps = {};\n\n changeLabel = ({ target }) => {\n this.props.onModelChanged({ choicesLabel: target.value });\n };\n\n render() {\n const { classes, className, config, spellCheck } = this.props;\n\n return (\n <div className={classNames(classes.config, className)}>\n <TextField\n className={classes.label}\n InputLabelProps={{\n shrink: true,\n }}\n variant=\"outlined\"\n label=\"Label\"\n value={config.choicesLabel}\n onChange={this.changeLabel}\n spellCheck={spellCheck}\n />\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n config: {\n paddingTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n },\n label: {\n width: '100%',\n },\n});\n\nexport default withStyles(styles)(Config);\n"],"file":"config.js"}
1
+ {"version":3,"sources":["../../../src/design/choices/config.jsx"],"names":["Config","target","props","onModelChanged","choicesLabel","value","classes","className","config","spellCheck","label","shrink","changeLabel","React","Component","PropTypes","object","isRequired","string","func","bool","styles","theme","paddingTop","spacing","unit","marginBottom","width"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,M;;;;;;;;;;;;;;;oGAWG,gBAAgB;AAAA,UAAbC,MAAa,QAAbA,MAAa;;AAC5B,YAAKC,KAAL,CAAWC,cAAX,CAA0B;AAAEC,QAAAA,YAAY,EAAEH,MAAM,CAACI;AAAvB,OAA1B;AACD,K;;;;;;WAED,kBAAS;AACP,wBAAmD,KAAKH,KAAxD;AAAA,UAAQI,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,MAA5B,eAA4BA,MAA5B;AAAA,UAAoCC,UAApC,eAAoCA,UAApC;AAEA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWH,OAAO,CAACE,MAAnB,EAA2BD,SAA3B;AAAhB,sBACE,gCAAC,qBAAD;AACE,QAAA,SAAS,EAAED,OAAO,CAACI,KADrB;AAEE,QAAA,eAAe,EAAE;AACfC,UAAAA,MAAM,EAAE;AADO,SAFnB;AAKE,QAAA,OAAO,EAAC,UALV;AAME,QAAA,KAAK,EAAC,OANR;AAOE,QAAA,KAAK,EAAEH,MAAM,CAACJ,YAPhB;AAQE,QAAA,QAAQ,EAAE,KAAKQ,WARjB;AASE,QAAA,UAAU,EAAEH;AATd,QADF,CADF;AAeD;;;EAjCyBI,kBAAMC,S;;;iCAArBd,M,eACQ;AACjBM,EAAAA,OAAO,EAAES,sBAAUC,MAAV,CAAiBC,UADT;AAEjBV,EAAAA,SAAS,EAAEQ,sBAAUG,MAFJ;AAGjBV,EAAAA,MAAM,EAAEO,sBAAUC,MAHD;AAIjBb,EAAAA,cAAc,EAAEY,sBAAUI,IAJT;AAKjBV,EAAAA,UAAU,EAAEM,sBAAUK;AALL,C;iCADRpB,M,kBASW,E;;AA2BxB,IAAMqB,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBd,IAAAA,MAAM,EAAE;AACNe,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IADpB;AAENC,MAAAA,YAAY,EAAEJ,KAAK,CAACE,OAAN,CAAcC;AAFtB,KADiB;AAKzBf,IAAAA,KAAK,EAAE;AACLiB,MAAAA,KAAK,EAAE;AADF;AALkB,GAAZ;AAAA,CAAf;;eAUe,wBAAWN,MAAX,EAAmBrB,MAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport TextField from '@material-ui/core/TextField';\n\nexport class Config extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n config: PropTypes.object,\n onModelChanged: PropTypes.func,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n changeLabel = ({ target }) => {\n this.props.onModelChanged({ choicesLabel: target.value });\n };\n\n render() {\n const { classes, className, config, spellCheck } = this.props;\n\n return (\n <div className={classNames(classes.config, className)}>\n <TextField\n className={classes.label}\n InputLabelProps={{\n shrink: true,\n }}\n variant=\"outlined\"\n label=\"Label\"\n value={config.choicesLabel}\n onChange={this.changeLabel}\n spellCheck={spellCheck}\n />\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n config: {\n paddingTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n },\n label: {\n width: '100%',\n },\n});\n\nexport default withStyles(styles)(Config);\n"],"file":"config.js"}
@@ -176,7 +176,6 @@ var Choices = /*#__PURE__*/function (_React$Component) {
176
176
  _ref4$maxImageHeight = _ref4.maxImageHeight,
177
177
  maxImageHeight = _ref4$maxImageHeight === void 0 ? {} : _ref4$maxImageHeight;
178
178
 
179
- var categoryCountIsOne = this.allChoicesHaveCount(1);
180
179
  var choiceHolderStyle = {
181
180
  gridTemplateColumns: "repeat(".concat(model.categoriesPerRow, ", 1fr)")
182
181
  };
@@ -234,6 +233,8 @@ exports.Choices = Choices;
234
233
  classes: _propTypes["default"].object.isRequired,
235
234
  className: _propTypes["default"].string,
236
235
  choices: _propTypes["default"].array.isRequired,
236
+ defaultImageMaxWidth: _propTypes["default"].number,
237
+ defaultImageMaxHeight: _propTypes["default"].number,
237
238
  onModelChanged: _propTypes["default"].func.isRequired,
238
239
  imageSupport: _propTypes["default"].shape({
239
240
  add: _propTypes["default"].func.isRequired,
@@ -243,7 +244,8 @@ exports.Choices = Choices;
243
244
  add: _propTypes["default"].func.isRequired,
244
245
  "delete": _propTypes["default"].func.isRequired
245
246
  }),
246
- toolbarOpts: _propTypes["default"].object
247
+ toolbarOpts: _propTypes["default"].object,
248
+ spellCheck: _propTypes["default"].bool
247
249
  });
248
250
  (0, _defineProperty2["default"])(Choices, "defaultProps", {});
249
251
 
@@ -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","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","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","rearrangeChoices","errorText","React","Component","PropTypes","object","isRequired","string","array","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","marginBottom","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Choice from './choice';\nimport Header from '../header';\nimport every from 'lodash/every';\nimport Config from './config';\nimport { choiceUtils as utils } from '@pie-lib/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\n <Config config={model} onModelChanged={onModelChanged} spellCheck={spellCheck} />\n\n <div className={classes.choiceHolder} style={choiceHolderStyle}>\n {choices.map((h, index) => {\n return (\n <Choice\n choice={h}\n focusedEl={focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n correctResponseCount={h.correctResponseCount}\n allowMultiplePlacements={allowMultiplePlacementsEnabled}\n lockChoiceOrder={lockChoiceOrder}\n index={index}\n key={index}\n imageSupport={imageSupport}\n onChange={this.changeChoice}\n onDelete={() => this.deleteChoice(h)}\n rearrangeChoices={(indexFrom, indexTo) => this.rearrangeChoices(indexFrom, indexTo)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={choicesErrors && choicesErrors[h.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.choice) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choice) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n );\n })}\n </div>\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choiceHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n choices: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/design/choices/index.jsx"],"names":["Choices","focusedEl","choice","props","choices","onModelChanged","index","findIndex","h","id","splice","count","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","choiceHolderStyle","gridTemplateColumns","categoriesPerRow","addChoice","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","rearrangeChoices","errorText","React","Component","PropTypes","object","isRequired","string","array","number","func","shape","add","bool","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","marginBottom","fontSize","typography","color","palette","error","main"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAGaA,O;;;;;;;;;;;;;;;8FAwBH;AACNC,MAAAA,SAAS,EAAE;AADL,K;qGAIO,UAACC,MAAD,EAAY;AACzB,wBAAoC,MAAKC,KAAzC;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,cAAjB,eAAiBA,cAAjB;AACA,UAAMC,KAAK,GAAGF,OAAO,CAACG,SAAR,CAAkB,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,EAAF,KAASP,MAAM,CAACO,EAAvB;AAAA,OAAlB,CAAd;;AACA,UAAIH,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChBF,QAAAA,OAAO,CAACM,MAAR,CAAeJ,KAAf,EAAsB,CAAtB,EAAyBJ,MAAzB;AACAG,QAAAA,cAAc,CAAC;AAAED,UAAAA,OAAO,EAAPA;AAAF,SAAD,CAAd;AACD;AACF,K;4GAEqB,UAACO,KAAD,EAAW;AAC/B,UAAQP,OAAR,GAAoB,MAAKD,KAAzB,CAAQC,OAAR;AACA,aAAO,uBAAMA,OAAN,EAAe,UAACQ,CAAD;AAAA,eAAOA,CAAC,CAACC,aAAF,KAAoBF,KAA3B;AAAA,OAAf,CAAP;AACD,K;kGAEW,YAAM;AAChB,yBAAuD,MAAKR,KAA5D;AAAA,UAAQE,cAAR,gBAAQA,cAAR;AAAA,UAAwBS,KAAxB,gBAAwBA,KAAxB;AAAA,UAAwCC,UAAxC,gBAA+BX,OAA/B;;AAEA,UAAMK,EAAE,GAAGO,sBAAMC,mBAAN,CACTH,KAAK,CAACV,OAAN,CAAcc,GAAd,CAAkB,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACV,EAAT;AAAA,OAAlB,CADS,EAET,CAFS,CAAX;;AAIA,UAAMW,IAAI,GAAG;AAAEX,QAAAA,EAAE,EAAFA,EAAF;AAAMY,QAAAA,OAAO,EAAE,YAAYZ;AAA3B,OAAb;;AAEA,YAAKa,QAAL,CACE;AACErB,QAAAA,SAAS,EAAEc,UAAU,CAACQ;AADxB,OADF,EAIE,YAAM;AACJlB,QAAAA,cAAc,CAAC;AAAED,UAAAA,OAAO,EAAEU,KAAK,CAACV,OAAN,CAAcoB,MAAd,CAAqB,CAACJ,IAAD,CAArB;AAAX,SAAD,CAAd;AACD,OANH;AAQD,K;wGAEiB,YAAM;AACtB,YAAKE,QAAL,CAAc;AACZrB,QAAAA,SAAS,EAAE;AADC,OAAd;AAGD,K;qGAEc,UAACC,MAAD,EAAY;AACzB,yBAAkC,MAAKC,KAAvC;AAAA,UAAQW,KAAR,gBAAQA,KAAR;AAAA,UAAeT,cAAf,gBAAeA,cAAf;AACA,UAAMC,KAAK,GAAGQ,KAAK,CAACV,OAAN,CAAcG,SAAd,CAAwB,UAACY,CAAD;AAAA,eAAOA,CAAC,CAACV,EAAF,KAASP,MAAM,CAACO,EAAvB;AAAA,OAAxB,CAAd;;AACA,UAAIH,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChBQ,QAAAA,KAAK,CAACV,OAAN,CAAcM,MAAd,CAAqBJ,KAArB,EAA4B,CAA5B;AACAQ,QAAAA,KAAK,CAACW,eAAN,GAAwB,kCAAiBvB,MAAM,CAACO,EAAxB,EAA4BK,KAAK,CAACW,eAAlC,CAAxB;AACApB,QAAAA,cAAc,CAACS,KAAD,CAAd;AACD;AACF,K;yGAEkB,UAACY,SAAD,EAAYC,OAAZ,EAAwB;AACzC,iBAAkC,MAAKxB,KAAL,IAAc,EAAhD;AAAA,UAAQW,KAAR,QAAQA,KAAR;AAAA,UAAeT,cAAf,QAAeA,cAAf;;AACA,kBAAkBS,KAAK,IAAI,EAA3B;AAAA,UAAMV,OAAN,SAAMA,OAAN;;AACAA,MAAAA,OAAO,GAAG,kCAAiBA,OAAjB,EAA0BsB,SAA1B,EAAqCC,OAArC,CAAV;AACAtB,MAAAA,cAAc,CAAC;AAAED,QAAAA,OAAO,EAAPA;AAAF,OAAD,CAAd;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,UAAQH,SAAR,GAAsB,KAAK2B,KAA3B,CAAQ3B,SAAR;AACA,yBAaI,KAAKE,KAbT;AAAA,UACE0B,OADF,gBACEA,OADF;AAAA,UAEEC,SAFF,gBAEEA,SAFF;AAAA,UAGE1B,OAHF,gBAGEA,OAHF;AAAA,UAIEU,KAJF,gBAIEA,KAJF;AAAA,UAKEiB,YALF,gBAKEA,YALF;AAAA,UAMEC,kBANF,gBAMEA,kBANF;AAAA,UAOE3B,cAPF,gBAOEA,cAPF;AAAA,UAQE4B,UARF,gBAQEA,UARF;AAAA,UASEC,WATF,gBASEA,WATF;AAAA,UAUEC,aAVF,gBAUEA,aAVF;AAAA,UAWEC,oBAXF,gBAWEA,oBAXF;AAAA,UAYEC,qBAZF,gBAYEA,qBAZF;AAcA,UAAQC,MAAR,GAAoExB,KAApE,CAAQwB,MAAR;AAAA,UAAgBC,8BAAhB,GAAoEzB,KAApE,CAAgByB,8BAAhB;AAAA,UAAgDC,eAAhD,GAAoE1B,KAApE,CAAgD0B,eAAhD;;AACA,kBAAwCF,MAAM,IAAI,EAAlD;AAAA,UAAQG,YAAR,SAAQA,YAAR;AAAA,UAAsBC,aAAtB,SAAsBA,aAAtB;;AACA,kBAAgEP,aAAa,IAAI,EAAjF;AAAA,UAAQQ,UAAR,SAAQA,UAAR;AAAA,sCAAoBC,aAApB;AAAA,UAAoBA,aAApB,oCAAoC,EAApC;AAAA,uCAAwCC,cAAxC;AAAA,UAAwCA,cAAxC,qCAAyD,EAAzD;;AAEA,UAAMC,iBAAiB,GAAG;AACxBC,QAAAA,mBAAmB,mBAAYjC,KAAK,CAACkC,gBAAlB;AADK,OAA1B;AAIA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWnB,OAAO,CAACzB,OAAnB,EAA4B0B,SAA5B;AAAhB,sBACE,gCAAC,kBAAD;AACE,QAAA,KAAK,EAAC,SADR;AAEE,QAAA,WAAW,EAAC,cAFd;AAGE,QAAA,KAAK,EAAE,KAAKmB,SAHd;AAIE,QAAA,cAAc,EAAEN,UAAU,IAAIvC,OAAd,IAAyBuC,UAAU,KAAKvC,OAAO,CAACmB;AAJlE,QADF,eAQE,gCAAC,kBAAD;AAAQ,QAAA,MAAM,EAAET,KAAhB;AAAuB,QAAA,cAAc,EAAET,cAAvC;AAAuD,QAAA,UAAU,EAAE4B;AAAnE,QARF,eAUE;AAAK,QAAA,SAAS,EAAEJ,OAAO,CAACqB,YAAxB;AAAsC,QAAA,KAAK,EAAEJ;AAA7C,SACG1C,OAAO,CAACc,GAAR,CAAY,UAACV,CAAD,EAAIF,KAAJ,EAAc;AACzB,4BACE,gCAAC,kBAAD;AACE,UAAA,MAAM,EAAEE,CADV;AAEE,UAAA,SAAS,EAAEP,SAFb;AAGE,UAAA,eAAe,EAAE,MAAI,CAACkD,eAHxB;AAIE,UAAA,oBAAoB,EAAE3C,CAAC,CAAC4C,oBAJ1B;AAKE,UAAA,uBAAuB,EAAEb,8BAL3B;AAME,UAAA,eAAe,EAAEC,eANnB;AAOE,UAAA,KAAK,EAAElC,KAPT;AAQE,UAAA,GAAG,EAAEA,KARP;AASE,UAAA,YAAY,EAAEyB,YAThB;AAUE,UAAA,QAAQ,EAAE,MAAI,CAACsB,YAVjB;AAWE,UAAA,QAAQ,EAAE;AAAA,mBAAM,MAAI,CAACC,YAAL,CAAkB9C,CAAlB,CAAN;AAAA,WAXZ;AAYE,UAAA,gBAAgB,EAAE,0BAACkB,SAAD,EAAYC,OAAZ;AAAA,mBAAwB,MAAI,CAAC4B,gBAAL,CAAsB7B,SAAtB,EAAiCC,OAAjC,CAAxB;AAAA,WAZpB;AAaE,UAAA,WAAW,EAAEO,WAbf;AAcE,UAAA,UAAU,EAAED,UAdd;AAeE,UAAA,KAAK,EAAES,aAAa,IAAIA,aAAa,CAAClC,CAAC,CAACC,EAAH,CAfvC;AAgBE,UAAA,aAAa,EAAGmC,aAAa,IAAIA,aAAa,CAAC1C,MAAhC,IAA2CkC,oBAhB5D;AAiBE,UAAA,cAAc,EAAGS,cAAc,IAAIA,cAAc,CAAC3C,MAAlC,IAA6CmC,qBAjB/D;AAkBE,UAAA,kBAAkB,EAAEL;AAlBtB,UADF;AAsBD,OAvBA,CADH,CAVF,EAoCGS,YAAY,iBAAI;AAAK,QAAA,SAAS,EAAEZ,OAAO,CAAC2B;AAAxB,SAAoCf,YAApC,CApCnB,CADF;AAwCD;;;EApJ0BgB,kBAAMC,S;;;iCAAtB1D,O,eACQ;AACjBc,EAAAA,KAAK,EAAE6C,sBAAUC,MAAV,CAAiBC,UADP;AAEjB1B,EAAAA,aAAa,EAAEwB,sBAAUC,MAAV,CAAiBC,UAFf;AAGjBhC,EAAAA,OAAO,EAAE8B,sBAAUC,MAAV,CAAiBC,UAHT;AAIjB/B,EAAAA,SAAS,EAAE6B,sBAAUG,MAJJ;AAKjB1D,EAAAA,OAAO,EAAEuD,sBAAUI,KAAV,CAAgBF,UALR;AAMjBzB,EAAAA,oBAAoB,EAAEuB,sBAAUK,MANf;AAOjB3B,EAAAA,qBAAqB,EAAEsB,sBAAUK,MAPhB;AAQjB3D,EAAAA,cAAc,EAAEsD,sBAAUM,IAAV,CAAeJ,UARd;AASjB9B,EAAAA,YAAY,EAAE4B,sBAAUO,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAER,sBAAUM,IAAV,CAAeJ,UADQ;AAE5B,cAAQF,sBAAUM,IAAV,CAAeJ;AAFK,GAAhB,CATG;AAajB7B,EAAAA,kBAAkB,EAAE2B,sBAAUO,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAER,sBAAUM,IAAV,CAAeJ,UADc;AAElC,cAAQF,sBAAUM,IAAV,CAAeJ;AAFW,GAAhB,CAbH;AAiBjB3B,EAAAA,WAAW,EAAEyB,sBAAUC,MAjBN;AAkBjB3B,EAAAA,UAAU,EAAE0B,sBAAUS;AAlBL,C;iCADRpE,O,kBAsBW,E;;AAiIxB,IAAMqE,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBpB,IAAAA,YAAY,EAAE;AACZqB,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IADd;AAEZC,MAAAA,aAAa,EAAEJ,KAAK,CAACE,OAAN,CAAcC,IAFjB;AAGZE,MAAAA,OAAO,EAAE,MAHG;AAIZC,MAAAA,UAAU,YAAKN,KAAK,CAACE,OAAN,CAAcC,IAAnB,OAJE;AAKZI,MAAAA,aAAa,YAAKP,KAAK,CAACE,OAAN,CAAcC,IAAnB;AALD,KADW;AAQzBrE,IAAAA,OAAO,EAAE;AACP0E,MAAAA,YAAY,EAAER,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAD5B,KARgB;AAWzBjB,IAAAA,SAAS,EAAE;AACTuB,MAAAA,QAAQ,EAAET,KAAK,CAACU,UAAN,CAAiBD,QAAjB,GAA4B,CAD7B;AAETE,MAAAA,KAAK,EAAEX,KAAK,CAACY,OAAN,CAAcC,KAAd,CAAoBC,IAFlB;AAGTb,MAAAA,UAAU,EAAED,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AAHxB;AAXc,GAAZ;AAAA,CAAf;;eAkBe,wBAAWJ,MAAX,EAAmBrE,OAAnB,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 './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 defaultImageMaxWidth: PropTypes.number,\n defaultImageMaxHeight: PropTypes.number,\n onModelChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n state = {\n focusedEl: null,\n };\n\n changeChoice = (choice) => {\n const { choices, onModelChanged } = this.props;\n const index = choices.findIndex((h) => h.id === choice.id);\n if (index !== -1) {\n choices.splice(index, 1, choice);\n onModelChanged({ choices });\n }\n };\n\n allChoicesHaveCount = (count) => {\n const { choices } = this.props;\n return every(choices, (c) => c.categoryCount === count);\n };\n\n addChoice = () => {\n const { onModelChanged, model, choices: oldChoices } = this.props;\n\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 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\n <Config config={model} onModelChanged={onModelChanged} spellCheck={spellCheck} />\n\n <div className={classes.choiceHolder} style={choiceHolderStyle}>\n {choices.map((h, index) => {\n return (\n <Choice\n choice={h}\n focusedEl={focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n correctResponseCount={h.correctResponseCount}\n allowMultiplePlacements={allowMultiplePlacementsEnabled}\n lockChoiceOrder={lockChoiceOrder}\n index={index}\n key={index}\n imageSupport={imageSupport}\n onChange={this.changeChoice}\n onDelete={() => this.deleteChoice(h)}\n rearrangeChoices={(indexFrom, indexTo) => this.rearrangeChoices(indexFrom, indexTo)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={choicesErrors && choicesErrors[h.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.choice) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choice) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n );\n })}\n </div>\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choiceHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n choices: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"index.js"}
@@ -197,6 +197,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
197
197
  categoriesPerRow = _ref$categoriesPerRow === void 0 ? {} : _ref$categoriesPerRow,
198
198
  _ref$choicesPosition = _ref.choicesPosition,
199
199
  choicesPosition = _ref$choicesPosition === void 0 ? {} : _ref$choicesPosition,
200
+ _ref$contentDimension = _ref.contentDimensions,
201
+ contentDimensions = _ref$contentDimension === void 0 ? {} : _ref$contentDimension,
200
202
  _ref$feedback = _ref.feedback,
201
203
  feedback = _ref$feedback === void 0 ? {} : _ref$feedback,
202
204
  _ref$lockChoiceOrder = _ref.lockChoiceOrder,
@@ -275,6 +277,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
275
277
  return /*#__PURE__*/_react["default"].createElement(IdProvider, {
276
278
  value: this.uid
277
279
  }, /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
280
+ dimensions: contentDimensions,
278
281
  hideSettings: settingsPanelDisabled,
279
282
  settings: /*#__PURE__*/_react["default"].createElement(Panel, {
280
283
  model: model,
@@ -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","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","categoriesPerRow","choicesPosition","lockChoiceOrder","maxImageHeight","maxImageWidth","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","allowAlternateEnabled","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","panelProperties","studentInstructionsEnabled","rubricEnabled","Settings","Properties","inputContainer","input","changeTeacherInstructions","language","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\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 { 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 updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\n }));\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n 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 { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowMultiplePlacements = {},\n allowAlternate = {},\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 allowAlternateEnabled,\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\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 allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.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={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n 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 {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n 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 <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 <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n toolbarOpts={toolbarOpts}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n 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 {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n});\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","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","allowAlternateEnabled","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","panelProperties","studentInstructionsEnabled","rubricEnabled","Settings","Properties","inputContainer","input","changeTeacherInstructions","language","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\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 { 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 updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\n }));\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n 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 { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowMultiplePlacements = {},\n allowAlternate = {},\n categoriesPerRow = {},\n choicesPosition = {},\n contentDimensions = {},\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 allowAlternateEnabled,\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\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 allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.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 dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n 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 {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n 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 <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 <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n toolbarOpts={toolbarOpts}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n 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 {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
@@ -124,6 +124,8 @@ exports.InputHeader = InputHeader;
124
124
  focusedEl: _propTypes["default"].number,
125
125
  index: _propTypes["default"].number,
126
126
  label: _propTypes["default"].string,
127
+ maxImageWidth: _propTypes["default"].object,
128
+ maxImageHeight: _propTypes["default"].object,
127
129
  onChange: _propTypes["default"].func,
128
130
  onDelete: _propTypes["default"].func,
129
131
  imageSupport: _propTypes["default"].shape({
@@ -135,7 +137,8 @@ exports.InputHeader = InputHeader;
135
137
  "delete": _propTypes["default"].func.isRequired
136
138
  }),
137
139
  toolbarOpts: _propTypes["default"].object,
138
- error: _propTypes["default"].string
140
+ error: _propTypes["default"].string,
141
+ spellCheck: _propTypes["default"].bool
139
142
  });
140
143
  (0, _defineProperty2["default"])(InputHeader, "defaultProps", {});
141
144
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/design/input-header.jsx"],"names":["InputHeader","props","focusedEl","index","inputRef","focus","onChange","label","classes","className","deleteFocusedEl","disabled","imageSupport","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","choicePlugins","audio","video","inputHeader","ref","editor","language","React","Component","PropTypes","object","isRequired","string","func","bool","number","onDelete","shape","add","styles","theme","flex","paddingBottom","spacing","unit","iconButtonRoot","width","height","display","justifyContent"],"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 EditableHtml from '@pie-lib/editable-html';\n\nexport class InputHeader extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n deleteFocusedEl: PropTypes.func,\n disabled: PropTypes.bool,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n label: PropTypes.string,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\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 error: PropTypes.string,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n const { focusedEl, index } = this.props;\n if (focusedEl && index && focusedEl === index) {\n this.inputRef.focus('end', null, true);\n }\n }\n\n render() {\n const {\n onChange,\n label,\n classes,\n className,\n deleteFocusedEl,\n disabled,\n imageSupport,\n toolbarOpts,\n spellCheck,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n const choicePlugins = {\n audio: { disabled: true },\n video: { disabled: true },\n };\n\n return (\n <div className={classNames(classes.inputHeader, className)}>\n <EditableHtml\n imageSupport={imageSupport}\n disabled={disabled}\n ref={(ref) => (this.inputRef = ref)}\n autoWidthToolbar\n label={'label'}\n markup={label}\n onChange={onChange}\n className={classes.editor}\n pluginProps={choicePlugins}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n onDone={() => {\n deleteFocusedEl && deleteFocusedEl();\n }}\n />\n </div>\n );\n }\n}\nconst styles = (theme) => ({\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit,\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto',\n },\n inputHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n});\nexport default withStyles(styles)(InputHeader);\n"],"file":"input-header.js"}
1
+ {"version":3,"sources":["../../src/design/input-header.jsx"],"names":["InputHeader","props","focusedEl","index","inputRef","focus","onChange","label","classes","className","deleteFocusedEl","disabled","imageSupport","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","choicePlugins","audio","video","inputHeader","ref","editor","language","React","Component","PropTypes","object","isRequired","string","func","bool","number","onDelete","shape","add","styles","theme","flex","paddingBottom","spacing","unit","iconButtonRoot","width","height","display","justifyContent"],"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 EditableHtml from '@pie-lib/editable-html';\n\nexport class InputHeader extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n deleteFocusedEl: PropTypes.func,\n disabled: PropTypes.bool,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n label: PropTypes.string,\n maxImageWidth: PropTypes.object,\n maxImageHeight: PropTypes.object,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\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 error: PropTypes.string,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n const { focusedEl, index } = this.props;\n if (focusedEl && index && focusedEl === index) {\n this.inputRef.focus('end', null, true);\n }\n }\n\n render() {\n const {\n onChange,\n label,\n classes,\n className,\n deleteFocusedEl,\n disabled,\n imageSupport,\n toolbarOpts,\n spellCheck,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n const choicePlugins = {\n audio: { disabled: true },\n video: { disabled: true },\n };\n\n return (\n <div className={classNames(classes.inputHeader, className)}>\n <EditableHtml\n imageSupport={imageSupport}\n disabled={disabled}\n ref={(ref) => (this.inputRef = ref)}\n autoWidthToolbar\n label={'label'}\n markup={label}\n onChange={onChange}\n className={classes.editor}\n pluginProps={choicePlugins}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n onDone={() => {\n deleteFocusedEl && deleteFocusedEl();\n }}\n />\n </div>\n );\n }\n}\nconst styles = (theme) => ({\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit,\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto',\n },\n inputHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n});\nexport default withStyles(styles)(InputHeader);\n"],"file":"input-header.js"}
@@ -13,10 +13,10 @@
13
13
  "@material-ui/icons": "^3.0.1",
14
14
  "@pie-framework/pie-configure-events": "^1.3.0",
15
15
  "@pie-lib/categorize": "^0.8.15",
16
- "@pie-lib/config-ui": "^11.6.0",
16
+ "@pie-lib/config-ui": "^11.6.1",
17
17
  "@pie-lib/drag": "^2.1.15",
18
- "@pie-lib/editable-html": "^9.5.19",
19
- "@pie-lib/render-ui": "^4.14.19",
18
+ "@pie-lib/editable-html": "^9.5.20",
19
+ "@pie-lib/render-ui": "^4.14.20",
20
20
  "classnames": "^2.2.5",
21
21
  "debug": "^3.1.0",
22
22
  "lodash": "^4.17.15",
@@ -240,6 +240,50 @@
240
240
  "type": "string",
241
241
  "title": "promptLabel"
242
242
  },
243
+ "contentDimensions": {
244
+ "description": "Indicates the dimensions configuration for the authoring container\nNote: Some items have a default minimum width because of their content, but if\nthe minWidth is lower than this, the overflow behavior will take care of that",
245
+ "default": ": {}",
246
+ "type": "object",
247
+ "properties": {
248
+ "maxHeight": {
249
+ "description": "Indicates the max height of the authoring container",
250
+ "default": "undefined",
251
+ "type": [
252
+ "string",
253
+ "number"
254
+ ],
255
+ "title": "maxHeight"
256
+ },
257
+ "maxWidth": {
258
+ "description": "Indicates the max width of the authoring container",
259
+ "default": "undefined",
260
+ "type": [
261
+ "string",
262
+ "number"
263
+ ],
264
+ "title": "maxWidth"
265
+ },
266
+ "minHeight": {
267
+ "description": "Indicates the min height of the authoring container",
268
+ "default": "undefined",
269
+ "type": [
270
+ "string",
271
+ "number"
272
+ ],
273
+ "title": "minHeight"
274
+ },
275
+ "minWidth": {
276
+ "description": "Indicates the min width of the authoring container",
277
+ "default": "undefined",
278
+ "type": [
279
+ "string",
280
+ "number"
281
+ ],
282
+ "title": "minWidth"
283
+ }
284
+ },
285
+ "title": "contentDimensions"
286
+ },
243
287
  "settingsPartialScoring": {
244
288
  "description": "Indicates whether the settings panel wil allow the author to modify settings for partial scoring",
245
289
  "default": true,
@@ -186,6 +186,40 @@ The label for the item stem/prompt field
186
186
 
187
187
  Default: `"Item Stemm"`
188
188
 
189
+ # `contentDimensions` (object)
190
+
191
+ Indicates the dimensions configuration for the authoring container
192
+ Note: Some items have a default minimum width because of their content, but if
193
+ the minWidth is lower than this, the overflow behavior will take care of that
194
+
195
+ Properties of the `contentDimensions` object:
196
+
197
+ ## `maxHeight` (string,number)
198
+
199
+ Indicates the max height of the authoring container
200
+
201
+ Default: `"undefined"`
202
+
203
+ ## `maxWidth` (string,number)
204
+
205
+ Indicates the max width of the authoring container
206
+
207
+ Default: `"undefined"`
208
+
209
+ ## `minHeight` (string,number)
210
+
211
+ Indicates the min height of the authoring container
212
+
213
+ Default: `"undefined"`
214
+
215
+ ## `minWidth` (string,number)
216
+
217
+ Indicates the min width of the authoring container
218
+
219
+ Default: `"undefined"`
220
+
221
+ Default: `": {}"`
222
+
189
223
  # `settingsPartialScoring` (boolean)
190
224
 
191
225
  Indicates whether the settings panel wil allow the author to modify settings for partial scoring
@@ -1,4 +1,4 @@
1
- const E234 = {
1
+ /* const E234 = {
2
2
  choicesPosition: 'below',
3
3
  lockChoiceOrder: false,
4
4
  choices: [
@@ -48,7 +48,7 @@ const E234 = {
48
48
  category: '1',
49
49
  },
50
50
  ],
51
- };
51
+ }; */
52
52
 
53
53
  // const E236 = {
54
54
  // choices: [
@@ -124,7 +124,9 @@ exports.Choices = Choices;
124
124
  choicesLabel: _propTypes["default"].string
125
125
  }),
126
126
  disabled: _propTypes["default"].bool,
127
- choicePosition: _propTypes["default"].string
127
+ choicePosition: _propTypes["default"].string,
128
+ onDropChoice: _propTypes["default"].func,
129
+ onRemoveChoice: _propTypes["default"].func
128
130
  });
129
131
  (0, _defineProperty2["default"])(Choices, "defaultProps", {
130
132
  model: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/categorize/choices.jsx"],"names":["Blank","Choices","props","classes","choices","model","disabled","onDropChoice","onRemoveChoice","choicePosition","style","textAlign","direction","wrapper","background","choicesLabel","labelHolder","__html","map","c","index","empty","choice","maxWidth","categoriesPerRow","React","Component","PropTypes","object","isRequired","arrayOf","oneOfType","shape","ChoiceType","bool","number","string","styles","theme","flex","padding","spacing","unit","touchAction","display","justifyContent","alignItems","margin","paddingTop"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Choice, { ChoiceType } from './choice';\nimport DroppablePlaceholder from './droppable-placeholder';\nexport { ChoiceType };\n\nconst Blank = () => <div />;\n\nexport class Choices extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n choices: PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.shape(ChoiceType), PropTypes.shape({ empty: PropTypes.bool })]),\n ),\n model: PropTypes.shape({\n categoriesPerRow: PropTypes.number,\n choicesLabel: PropTypes.string,\n }),\n disabled: PropTypes.bool,\n choicePosition: PropTypes.string,\n };\n\n static defaultProps = {\n model: {\n categoriesPerRow: 1,\n choicesLabel: '',\n },\n };\n\n render() {\n const { classes, choices = [], model, disabled, onDropChoice, onRemoveChoice, choicePosition } = this.props;\n\n let style = {\n textAlign: 'center',\n };\n\n if (choicePosition === 'left') {\n style.direction = 'rtl';\n }\n\n return (\n <div className={classes.wrapper}>\n <DroppablePlaceholder\n onDropChoice={onDropChoice}\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n style={{ background: 'none' }}\n choiceBoard={true}\n >\n {model.choicesLabel && model.choicesLabel !== '' && (\n <div className={classes.labelHolder} dangerouslySetInnerHTML={{ __html: model.choicesLabel }}></div>\n )}\n {choices.map((c, index) => {\n return c.empty ? (\n <Blank key={index} />\n ) : (\n <Choice\n disabled={disabled}\n className={classes.choice}\n key={index}\n extraStyle={{ maxWidth: `${95 / model.categoriesPerRow}%` }}\n {...c}\n />\n );\n })}\n </DroppablePlaceholder>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n wrapper: {\n flex: 1,\n padding: theme.spacing.unit,\n touchAction: 'none',\n },\n choices: {\n padding: theme.spacing.unit / 2,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n labelHolder: {\n margin: '0 auto',\n textAlign: 'center',\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"choices.js"}
1
+ {"version":3,"sources":["../../src/categorize/choices.jsx"],"names":["Blank","Choices","props","classes","choices","model","disabled","onDropChoice","onRemoveChoice","choicePosition","style","textAlign","direction","wrapper","background","choicesLabel","labelHolder","__html","map","c","index","empty","choice","maxWidth","categoriesPerRow","React","Component","PropTypes","object","isRequired","arrayOf","oneOfType","shape","ChoiceType","bool","number","string","func","styles","theme","flex","padding","spacing","unit","touchAction","display","justifyContent","alignItems","margin","paddingTop"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Choice, { ChoiceType } from './choice';\nimport DroppablePlaceholder from './droppable-placeholder';\nexport { ChoiceType };\n\nconst Blank = () => <div />;\n\nexport class Choices extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n choices: PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.shape(ChoiceType), PropTypes.shape({ empty: PropTypes.bool })]),\n ),\n model: PropTypes.shape({\n categoriesPerRow: PropTypes.number,\n choicesLabel: PropTypes.string,\n }),\n disabled: PropTypes.bool,\n choicePosition: PropTypes.string,\n onDropChoice: PropTypes.func,\n onRemoveChoice: PropTypes.func,\n };\n\n static defaultProps = {\n model: {\n categoriesPerRow: 1,\n choicesLabel: '',\n },\n };\n\n render() {\n const { classes, choices = [], model, disabled, onDropChoice, onRemoveChoice, choicePosition } = this.props;\n\n let style = {\n textAlign: 'center',\n };\n\n if (choicePosition === 'left') {\n style.direction = 'rtl';\n }\n\n return (\n <div className={classes.wrapper}>\n <DroppablePlaceholder\n onDropChoice={onDropChoice}\n onRemoveChoice={onRemoveChoice}\n disabled={disabled}\n style={{ background: 'none' }}\n choiceBoard={true}\n >\n {model.choicesLabel && model.choicesLabel !== '' && (\n <div className={classes.labelHolder} dangerouslySetInnerHTML={{ __html: model.choicesLabel }}></div>\n )}\n {choices.map((c, index) => {\n return c.empty ? (\n <Blank key={index} />\n ) : (\n <Choice\n disabled={disabled}\n className={classes.choice}\n key={index}\n extraStyle={{ maxWidth: `${95 / model.categoriesPerRow}%` }}\n {...c}\n />\n );\n })}\n </DroppablePlaceholder>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n wrapper: {\n flex: 1,\n padding: theme.spacing.unit,\n touchAction: 'none',\n },\n choices: {\n padding: theme.spacing.unit / 2,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n labelHolder: {\n margin: '0 auto',\n textAlign: 'center',\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"choices.js"}
@@ -74,6 +74,7 @@ var DroppablePlaceholder = /*#__PURE__*/function (_React$Component) {
74
74
 
75
75
  exports.DroppablePlaceholder = DroppablePlaceholder;
76
76
  (0, _defineProperty2["default"])(DroppablePlaceholder, "propTypes", {
77
+ choiceBoard: _propTypes["default"].bool,
77
78
  connectDropTarget: _propTypes["default"].func.isRequired,
78
79
  isOver: _propTypes["default"].bool,
79
80
  children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/categorize/droppable-placeholder.jsx"],"names":["log","DroppablePlaceholder","props","children","connectDropTarget","isOver","className","grid","disabled","choiceBoard","flex","React","Component","PropTypes","func","isRequired","bool","oneOfType","arrayOf","node","string","object","spec","drop","monitor","item","getItem","onDropChoice","canDrop","WithTarget","uid","connect","dropTarget","withUid"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;IAEaC,oB;;;;;;;;;;;;WASX,kBAAS;AACP,wBAQI,KAAKC,KART;AAAA,UACEC,QADF,eACEA,QADF;AAAA,UAEEC,iBAFF,eAEEA,iBAFF;AAAA,UAGEC,MAHF,eAGEA,MAHF;AAAA,UAIEC,SAJF,eAIEA,SAJF;AAAA,UAKEC,IALF,eAKEA,IALF;AAAA,UAMEC,QANF,eAMEA,QANF;AAAA,UAOEC,WAPF,eAOEA,WAPF;AAUA,aAAOL,iBAAiB,eACtB;AAAK,QAAA,KAAK,EAAE;AAAEM,UAAAA,IAAI,EAAE;AAAR;AAAZ,sBACE,gCAAC,iBAAD;AACE,QAAA,SAAS,EAAEJ,SADb;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,IAAI,EAAEE,IAHR;AAIE,QAAA,QAAQ,EAAEC,QAJZ;AAKE,QAAA,WAAW,EAAEC;AALf,SAOGN,QAPH,CADF,CADsB,CAAxB;AAaD;;;EAjCuCQ,kBAAMC,S;;;iCAAnCX,oB,eACQ;AACjBG,EAAAA,iBAAiB,EAAES,sBAAUC,IAAV,CAAeC,UADjB;AAEjBV,EAAAA,MAAM,EAAEQ,sBAAUG,IAFD;AAGjBb,EAAAA,QAAQ,EAAEU,sBAAUI,SAAV,CAAoB,CAACJ,sBAAUK,OAAV,CAAkBL,sBAAUM,IAA5B,CAAD,EAAoCN,sBAAUM,IAA9C,CAApB,EAAyEJ,UAHlE;AAIjBT,EAAAA,SAAS,EAAEO,sBAAUO,MAJJ;AAKjBb,EAAAA,IAAI,EAAEM,sBAAUQ,MALC;AAMjBb,EAAAA,QAAQ,EAAEK,sBAAUG;AANH,C;AAmCd,IAAMM,IAAI,GAAG;AAClBC,EAAAA,IAAI,EAAE,cAACrB,KAAD,EAAQsB,OAAR,EAAoB;AACxBxB,IAAAA,GAAG,CAAC,gBAAD,EAAmBE,KAAnB,CAAH;AACA,QAAMuB,IAAI,GAAGD,OAAO,CAACE,OAAR,EAAb;AACAxB,IAAAA,KAAK,CAACyB,YAAN,CAAmBF,IAAnB;AACD,GALiB;AAMlBG,EAAAA,OAAO,EAAE,iBAAC1B;AAAM;AAAP,IAAyB;AAChC,WAAO,CAACA,KAAK,CAACM,QAAd;AACD;AARiB,CAAb;;AAWP,IAAMqB,UAAU,GAAG,0BACjB;AAAA,MAAGC,GAAH,QAAGA,GAAH;AAAA,SAAaA,GAAb;AAAA,CADiB,EAEjBR,IAFiB,EAGjB,UAACS,OAAD,EAAUP,OAAV;AAAA,SAAuB;AACrBpB,IAAAA,iBAAiB,EAAE2B,OAAO,CAACC,UAAR,EADE;AAErB3B,IAAAA,MAAM,EAAEmB,OAAO,CAACnB,MAAR;AAFa,GAAvB;AAAA,CAHiB,EAOjBJ,oBAPiB,CAAnB;;eASe6B,UAAIG,OAAJ,CAAYJ,UAAZ,C","sourcesContent":["import React from 'react';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from 'react-dnd';\nimport { uid } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize:droppable-placeholder');\n\nexport class DroppablePlaceholder extends React.Component {\n static propTypes = {\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n className: PropTypes.string,\n grid: PropTypes.object,\n disabled: PropTypes.bool,\n };\n render() {\n const {\n children,\n connectDropTarget,\n isOver,\n className,\n grid,\n disabled,\n choiceBoard\n } = this.props;\n\n return connectDropTarget(\n <div style={{ flex: 1 }}>\n <PlaceHolder\n className={className}\n isOver={isOver}\n grid={grid}\n disabled={disabled}\n choiceBoard={choiceBoard}\n >\n {children}\n </PlaceHolder>\n </div>,\n );\n }\n}\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.onDropChoice(item);\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)(DroppablePlaceholder);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
1
+ {"version":3,"sources":["../../src/categorize/droppable-placeholder.jsx"],"names":["log","DroppablePlaceholder","props","children","connectDropTarget","isOver","className","grid","disabled","choiceBoard","flex","React","Component","PropTypes","bool","func","isRequired","oneOfType","arrayOf","node","string","object","spec","drop","monitor","item","getItem","onDropChoice","canDrop","WithTarget","uid","connect","dropTarget","withUid"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;IAEaC,oB;;;;;;;;;;;;WAUX,kBAAS;AACP,wBAQI,KAAKC,KART;AAAA,UACEC,QADF,eACEA,QADF;AAAA,UAEEC,iBAFF,eAEEA,iBAFF;AAAA,UAGEC,MAHF,eAGEA,MAHF;AAAA,UAIEC,SAJF,eAIEA,SAJF;AAAA,UAKEC,IALF,eAKEA,IALF;AAAA,UAMEC,QANF,eAMEA,QANF;AAAA,UAOEC,WAPF,eAOEA,WAPF;AAUA,aAAOL,iBAAiB,eACtB;AAAK,QAAA,KAAK,EAAE;AAAEM,UAAAA,IAAI,EAAE;AAAR;AAAZ,sBACE,gCAAC,iBAAD;AACE,QAAA,SAAS,EAAEJ,SADb;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,IAAI,EAAEE,IAHR;AAIE,QAAA,QAAQ,EAAEC,QAJZ;AAKE,QAAA,WAAW,EAAEC;AALf,SAOGN,QAPH,CADF,CADsB,CAAxB;AAaD;;;EAlCuCQ,kBAAMC,S;;;iCAAnCX,oB,eACQ;AACjBQ,EAAAA,WAAW,EAAEI,sBAAUC,IADN;AAEjBV,EAAAA,iBAAiB,EAAES,sBAAUE,IAAV,CAAeC,UAFjB;AAGjBX,EAAAA,MAAM,EAAEQ,sBAAUC,IAHD;AAIjBX,EAAAA,QAAQ,EAAEU,sBAAUI,SAAV,CAAoB,CAACJ,sBAAUK,OAAV,CAAkBL,sBAAUM,IAA5B,CAAD,EAAoCN,sBAAUM,IAA9C,CAApB,EAAyEH,UAJlE;AAKjBV,EAAAA,SAAS,EAAEO,sBAAUO,MALJ;AAMjBb,EAAAA,IAAI,EAAEM,sBAAUQ,MANC;AAOjBb,EAAAA,QAAQ,EAAEK,sBAAUC;AAPH,C;AAoCd,IAAMQ,IAAI,GAAG;AAClBC,EAAAA,IAAI,EAAE,cAACrB,KAAD,EAAQsB,OAAR,EAAoB;AACxBxB,IAAAA,GAAG,CAAC,gBAAD,EAAmBE,KAAnB,CAAH;AACA,QAAMuB,IAAI,GAAGD,OAAO,CAACE,OAAR,EAAb;AACAxB,IAAAA,KAAK,CAACyB,YAAN,CAAmBF,IAAnB;AACD,GALiB;AAMlBG,EAAAA,OAAO,EAAE,iBAAC1B;AAAM;AAAP,IAAyB;AAChC,WAAO,CAACA,KAAK,CAACM,QAAd;AACD;AARiB,CAAb;;AAWP,IAAMqB,UAAU,GAAG,0BACjB;AAAA,MAAGC,GAAH,QAAGA,GAAH;AAAA,SAAaA,GAAb;AAAA,CADiB,EAEjBR,IAFiB,EAGjB,UAACS,OAAD,EAAUP,OAAV;AAAA,SAAuB;AACrBpB,IAAAA,iBAAiB,EAAE2B,OAAO,CAACC,UAAR,EADE;AAErB3B,IAAAA,MAAM,EAAEmB,OAAO,CAACnB,MAAR;AAFa,GAAvB;AAAA,CAHiB,EAOjBJ,oBAPiB,CAAnB;;eASe6B,UAAIG,OAAJ,CAAYJ,UAAZ,C","sourcesContent":["import React from 'react';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from 'react-dnd';\nimport { uid } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize:droppable-placeholder');\n\nexport class DroppablePlaceholder extends React.Component {\n static propTypes = {\n choiceBoard: PropTypes.bool,\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n className: PropTypes.string,\n grid: PropTypes.object,\n disabled: PropTypes.bool,\n };\n render() {\n const {\n children,\n connectDropTarget,\n isOver,\n className,\n grid,\n disabled,\n choiceBoard\n } = this.props;\n\n return connectDropTarget(\n <div style={{ flex: 1 }}>\n <PlaceHolder\n className={className}\n isOver={isOver}\n grid={grid}\n disabled={disabled}\n choiceBoard={choiceBoard}\n >\n {children}\n </PlaceHolder>\n </div>,\n );\n }\n}\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.onDropChoice(item);\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)(DroppablePlaceholder);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "7.11.3-next.45+62ff92a85",
7
+ "version": "7.11.3-next.71+b7d3e7f71",
8
8
  "description": "",
9
9
  "author": "pie framework developers",
10
10
  "license": "ISC",
@@ -12,10 +12,10 @@
12
12
  "@material-ui/core": "^3.9.2",
13
13
  "@pie-framework/pie-player-events": "^0.1.0",
14
14
  "@pie-lib/categorize": "^0.8.15",
15
- "@pie-lib/correct-answer-toggle": "^2.3.69",
15
+ "@pie-lib/correct-answer-toggle": "^2.3.70",
16
16
  "@pie-lib/drag": "^2.1.15",
17
17
  "@pie-lib/math-rendering": "^2.5.13",
18
- "@pie-lib/render-ui": "^4.14.19",
18
+ "@pie-lib/render-ui": "^4.14.20",
19
19
  "classnames": "^2.2.5",
20
20
  "debug": "^4.1.1",
21
21
  "lodash": "^4.17.15",
@@ -24,7 +24,7 @@
24
24
  "react-dnd": "^14.0.5",
25
25
  "react-dom": "^16.8.1"
26
26
  },
27
- "gitHead": "62ff92a8524033abfcc7a323b126605d76eb73c7",
27
+ "gitHead": "b7d3e7f7160aafd5dcfed2960bc6c2f03dba2180",
28
28
  "scripts": {
29
29
  "postpublish": "../../scripts/postpublish"
30
30
  },