@pie-element/match 8.7.9 → 8.7.10-next.86

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.
@@ -45,7 +45,7 @@ var _debug = _interopRequireDefault(require("debug"));
45
45
 
46
46
  var _lodash = _interopRequireDefault(require("lodash"));
47
47
 
48
- var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
48
+ var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
49
49
 
50
50
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
51
 
@@ -281,7 +281,7 @@ var AnswerConfigBlock = /*#__PURE__*/function (_React$Component) {
281
281
  return /*#__PURE__*/React.createElement("div", {
282
282
  key: idx,
283
283
  className: (0, _classnames["default"])(classes.rowItem, (0, _defineProperty2["default"])({}, classes.questionText, idx === 0))
284
- }, /*#__PURE__*/React.createElement(_editableHtml.EditableHtml, {
284
+ }, /*#__PURE__*/React.createElement(_editableHtml["default"], {
285
285
  onChange: _this2.onHeaderChange(idx),
286
286
  markup: header,
287
287
  className: columnsErrors && !columnsErrors[idx] ? classes.marginBottom : classes.headerInput,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/answer-config-block.jsx"],"names":["log","styles","theme","container","marginBottom","spacing","unit","display","flexDirection","rowContainer","alignItems","flex","width","borderBottom","palette","grey","paddingBottom","marginTop","rowItem","justifyContent","padding","textAlign","deleteIcon","minWidth","questionText","marginRight","maxWidth","rowTable","headerInput","fontWeight","typography","fontSize","columnErrorText","color","error","main","paddingTop","errorText","AnswerConfigBlock","from","to","props","model","onChange","newModel","rows","reduce","acc","item","index","movedRow","remainingRows","push","update","slice","name","isBoolean","target","value","checked","lodash","set","headerIndex","headers","classes","onAddRow","imageSupport","configuration","toolbarOpts","spellCheck","uploadSoundSupport","baseInputConfiguration","maxImageWidth","maxImageHeight","mathMlOptions","minQuestions","errors","correctResponseError","rowsErrors","columnsErrors","noOfRowsError","columnsLengthError","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","defaultImageMaxWidth","prompt","defaultImageMaxHeight","overflow","settings","map","header","idx","onHeaderChange","inputConfiguration","language","row","onDeleteRow","moveRow","id","rowTitles","React","Component","PropTypes","object","isRequired","func","shape","add","bool"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,8BAAN,CAAZ;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,SAAS,EAAE;AACTC,MAAAA,YAAY,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,GAD1B;AAETC,MAAAA,OAAO,EAAE,MAFA;AAGTC,MAAAA,aAAa,EAAE;AAHN,KADc;AAMzBC,IAAAA,YAAY,EAAE;AACZF,MAAAA,OAAO,EAAE,MADG;AAEZG,MAAAA,UAAU,EAAE,QAFA;AAGZC,MAAAA,IAAI,EAAE,CAHM;AAIZC,MAAAA,KAAK,EAAE,MAJK;AAKZC,MAAAA,YAAY,sBAAeX,KAAK,CAACY,OAAN,CAAcC,IAAd,CAAmB,MAAnB,CAAf,CALA;AAMZC,MAAAA,aAAa,EAAEd,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,CANxB;AAOZW,MAAAA,SAAS,EAAEf,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,CAPpB;AAQZF,MAAAA,YAAY,EAAEF,KAAK,CAACG,OAAN,CAAcC;AARhB,KANW;AAgBzBY,IAAAA,OAAO,EAAE;AACPP,MAAAA,IAAI,EAAE,CADC;AAEPJ,MAAAA,OAAO,EAAE,MAFF;AAGPY,MAAAA,cAAc,EAAE,QAHT;AAIPT,MAAAA,UAAU,EAAE,QAJL;AAKPF,MAAAA,aAAa,EAAE,QALR;AAMP,gBAAU;AACRI,QAAAA,KAAK,EAAE,OADC;AAERQ,QAAAA,OAAO,cAAOlB,KAAK,CAACG,OAAN,CAAcC,IAArB,OAFC;AAGRe,QAAAA,SAAS,EAAE;AAHH;AANH,KAhBgB;AA4BzBC,IAAAA,UAAU,EAAE;AACVX,MAAAA,IAAI,EAAE,GADI;AAEVY,MAAAA,QAAQ,EAAE,MAFA;AAGVH,MAAAA,OAAO,cAAOlB,KAAK,CAACG,OAAN,CAAcC,IAArB;AAHG,KA5Ba;AAiCzBkB,IAAAA,YAAY,EAAE;AACZb,MAAAA,IAAI,EAAE,CADM;AAEZJ,MAAAA,OAAO,EAAE,MAFG;AAGZY,MAAAA,cAAc,EAAE,YAHJ;AAIZM,MAAAA,WAAW,EAAEvB,KAAK,CAACG,OAAN,CAAcC,IAJf;AAKZ,gBAAU;AACRM,QAAAA,KAAK,EAAE,MADC;AAERQ,QAAAA,OAAO,EAAE,CAFD;AAGRM,QAAAA,QAAQ,EAAE,OAHF;AAIRL,QAAAA,SAAS,EAAE,MAJH;AAKRE,QAAAA,QAAQ,EAAE;AALF;AALE,KAjCW;AA8CzBI,IAAAA,QAAQ,EAAE;AACRpB,MAAAA,OAAO,EAAE,MADD;AAERC,MAAAA,aAAa,EAAE;AAFP,KA9Ce;AAkDzBoB,IAAAA,WAAW,EAAE;AACX,gBAAU;AACRC,QAAAA,UAAU,EAAE;AADJ;AADC,KAlDY;AAuDzBzB,IAAAA,YAAY,EAAE;AACZA,MAAAA,YAAY,EAAEF,KAAK,CAAC4B,UAAN,CAAiBC,QAAjB,GAA4B,CAA5B,GAAgC7B,KAAK,CAACG,OAAN,CAAcC;AADhD,KAvDW;AA0DzB0B,IAAAA,eAAe,EAAE;AACfD,MAAAA,QAAQ,EAAE7B,KAAK,CAAC4B,UAAN,CAAiBC,QAAjB,GAA4B,CADvB;AAEfE,MAAAA,KAAK,EAAE/B,KAAK,CAACY,OAAN,CAAcoB,KAAd,CAAoBC,IAFZ;AAGfC,MAAAA,UAAU,YAAKlC,KAAK,CAACG,OAAN,CAAcC,IAAnB,kBAHK;AAIfM,MAAAA,KAAK,EAAE;AAJQ,KA1DQ;AAgEzByB,IAAAA,SAAS,EAAE;AACTN,MAAAA,QAAQ,EAAE7B,KAAK,CAAC4B,UAAN,CAAiBC,QAAjB,GAA4B,CAD7B;AAETE,MAAAA,KAAK,EAAE/B,KAAK,CAACY,OAAN,CAAcoB,KAAd,CAAoBC,IAFlB;AAGTnB,MAAAA,aAAa,EAAEd,KAAK,CAACG,OAAN,CAAcC;AAHpB;AAhEc,GAAZ;AAAA,CAAf;;IAuEMgC,iB;;;;;;;;;;;;;;;gGAoBM,UAACC,IAAD,EAAOC,EAAP,EAAc;AACtB,wBAA4B,MAAKC,KAAjC;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAeC,QAAf,eAAeA,QAAf;;AACA,UAAMC,QAAQ,qBAAQF,KAAR,CAAd;;AACA,UAAMG,IAAI,GAAGD,QAAQ,CAACC,IAAT,IAAiB,EAA9B;AAEA7C,MAAAA,GAAG,CAAC,aAAD,EAAgBuC,IAAhB,EAAsBC,EAAtB,CAAH;;AAEA,yBAAoCK,IAAI,CAACC,MAAL,CAClC,UAACC,GAAD,EAAMC,IAAN,EAAYC,KAAZ,EAAsB;AACpB,YAAIA,KAAK,KAAKV,IAAd,EAAoB;AAClBQ,UAAAA,GAAG,CAACG,QAAJ,GAAeF,IAAf;AACD,SAFD,MAEO;AACLD,UAAAA,GAAG,CAACI,aAAJ,CAAkBC,IAAlB,CAAuBJ,IAAvB;AACD;;AAED,eAAOD,GAAP;AACD,OATiC,EAUlC;AAAEG,QAAAA,QAAQ,EAAE,IAAZ;AAAkBC,QAAAA,aAAa,EAAE;AAAjC,OAVkC,CAApC;AAAA,UAAQD,QAAR,gBAAQA,QAAR;AAAA,UAAkBC,aAAlB,gBAAkBA,aAAlB;;AAaA,UAAME,MAAM,iDAAOF,aAAa,CAACG,KAAd,CAAoB,CAApB,EAAuBd,EAAvB,CAAP,IAAmCU,QAAnC,uCAAgDC,aAAa,CAACG,KAAd,CAAoBd,EAApB,CAAhD,EAAZ;AAEAxC,MAAAA,GAAG,CAAC,UAAD,EAAaqD,MAAb,CAAH;AAEAT,MAAAA,QAAQ,CAACC,IAAT,GAAgBQ,MAAhB;AAEAV,MAAAA,QAAQ,CAACC,QAAD,CAAR;AACD,K;iGAGC,UAACW,IAAD,EAAOC,SAAP;AAAA,aACA,gBAAgB;AAAA,YAAbC,MAAa,QAAbA,MAAa;AACd,2BAA4B,MAAKhB,KAAjC;AAAA,YAAQC,KAAR,gBAAQA,KAAR;AAAA,YAAeC,QAAf,gBAAeA,QAAf;AACA,YAAIe,KAAJ;;AAEA,YAAIF,SAAJ,EAAe;AACbE,UAAAA,KAAK,GAAGD,MAAM,CAACE,OAAf;AACD,SAFD,MAEO;AACLD,UAAAA,KAAK,GAAGD,MAAM,CAACC,KAAf;AACD;;AAEDE,2BAAOC,GAAP,CAAWnB,KAAX,EAAkBa,IAAlB,EAAwBG,KAAxB;;AACAf,QAAAA,QAAQ,CAACD,KAAD,EAAQa,IAAR,CAAR;AACD,OAbD;AAAA,K;uGAee,UAACO,WAAD;AAAA,aAAiB,UAACJ,KAAD,EAAW;AAC3C,2BAA4B,MAAKjB,KAAjC;AAAA,YAAQC,KAAR,gBAAQA,KAAR;AAAA,YAAeC,QAAf,gBAAeA,QAAf;;AACA,YAAMC,QAAQ,qBAAQF,KAAR,CAAd;;AAEA,YAAIoB,WAAW,KAAK,CAApB,EAAuB;AACrBlB,UAAAA,QAAQ,CAACmB,OAAT,CAAiBD,WAAjB,IAAgCJ,KAAhC;AACAf,UAAAA,QAAQ,CAACC,QAAD,CAAR;AAEA;AACD;;AAEDA,QAAAA,QAAQ,CAACmB,OAAT,CAAiBD,WAAjB,IAAgCJ,KAAhC;AACAf,QAAAA,QAAQ,CAACC,QAAD,CAAR;AACD,OAbgB;AAAA,K;;;;;;WAejB,kBAAS;AAAA;;AACP,yBACE,KAAKH,KADP;AAAA,UAAQuB,OAAR,gBAAQA,OAAR;AAAA,UAAiBtB,KAAjB,gBAAiBA,KAAjB;AAAA,UAAwBuB,QAAxB,gBAAwBA,QAAxB;AAAA,UAAkCC,YAAlC,gBAAkCA,YAAlC;AAAA,UAAgDC,aAAhD,gBAAgDA,aAAhD;AAAA,UAA+DC,WAA/D,gBAA+DA,WAA/D;AAAA,UAA4EC,UAA5E,gBAA4EA,UAA5E;AAAA,UAAwFC,kBAAxF,gBAAwFA,kBAAxF;;AAEA,kBAQIH,aAAa,IAAI,EARrB;AAAA,wCACEI,sBADF;AAAA,UACEA,sBADF,sCAC2B,EAD3B;AAAA,gCAEER,OAFF;AAAA,UAEEA,OAFF,8BAEY,EAFZ;AAAA,6BAGElB,IAHF;AAAA,UAGEA,IAHF,2BAGS,EAHT;AAAA,sCAIE2B,aAJF;AAAA,UAIEA,aAJF,oCAIkB,EAJlB;AAAA,uCAKEC,cALF;AAAA,UAKEA,cALF,qCAKmB,EALnB;AAAA,sCAMEC,aANF;AAAA,UAMEA,aANF,oCAMkB,EANlB;AAAA,UAOEC,YAPF,SAOEA,YAPF;;AASA,kBAAmBjC,KAAK,IAAI,EAA5B;AAAA,UAAQkC,MAAR,SAAQA,MAAR;;AACA,kBAA+FA,MAAM,IAAI,EAAzG;AAAA,UAAQC,oBAAR,SAAQA,oBAAR;AAAA,UAA8BC,UAA9B,SAA8BA,UAA9B;AAAA,UAA0CC,aAA1C,SAA0CA,aAA1C;AAAA,UAAyDC,aAAzD,SAAyDA,aAAzD;AAAA,UAAwEC,kBAAxE,SAAwEA,kBAAxE;;AAEA,UAAMC,sBAAsB,GAAG,CAACC,iCAAmB,EAApB,EAAwBC,MAAxB,CAC7B,UAACC,CAAD;AAAA,eAAOA,CAAC,KAAK,OAAN,IAAiBA,CAAC,KAAK,eAAvB,IAA0CA,CAAC,KAAK,eAAvD;AAAA,OAD6B,CAA/B;AAIA,UAAMC,oBAAoB,GAAGd,aAAa,IAAIA,aAAa,CAACe,MAA5D;AACA,UAAMC,qBAAqB,GAAGf,cAAc,IAAIA,cAAc,CAACc,MAA/D;AAEA,0BACE;AAAK,QAAA,SAAS,EAAEvB,OAAO,CAAC7D;AAAxB,sBACE,oBAAC,sBAAD;AAAY,QAAA,IAAI,EAAC,OAAjB;AAAyB,QAAA,SAAS,EAAC;AAAnC,mHADF,eAKE;AACE,QAAA,SAAS,EAAE6D,OAAO,CAACrC,QADrB;AAEE,QAAA,KAAK,EAAEwC,aAAa,CAACvD,KAAd,GAAsB;AAAEA,UAAAA,KAAK,EAAEuD,aAAa,CAACvD,KAAvB;AAA8B6E,UAAAA,QAAQ,EAAE;AAAxC,SAAtB,GAA2E;AAFpF,sBAIE;AAAK,QAAA,SAAS,EAAEzB,OAAO,CAACvD;AAAxB,SACGsD,OAAO,CAAC2B,QAAR,IACC,CAAChD,KAAK,CAACqB,OAAN,IAAiB,EAAlB,EAAsB4B,GAAtB,CAA0B,UAACC,MAAD,EAASC,GAAT;AAAA,4BACxB;AACE,UAAA,GAAG,EAAEA,GADP;AAEE,UAAA,SAAS,EAAE,4BAAG7B,OAAO,CAAC9C,OAAX,uCACR8C,OAAO,CAACxC,YADA,EACeqE,GAAG,KAAK,CADvB;AAFb,wBAME,oBAAC,0BAAD;AACE,UAAA,QAAQ,EAAE,MAAI,CAACC,cAAL,CAAoBD,GAApB,CADZ;AAEE,UAAA,MAAM,EAAED,MAFV;AAGE,UAAA,SAAS,EAAEb,aAAa,IAAI,CAACA,aAAa,CAACc,GAAD,CAA/B,GAAuC7B,OAAO,CAAC5D,YAA/C,GAA8D4D,OAAO,CAACpC,WAHnF;AAIE,UAAA,KAAK,EAAE,cAJT;AAKE,UAAA,aAAa,EAAEsD,sBALjB;AAME,UAAA,WAAW,EAAE,2BAAenB,OAAf,aAAeA,OAAf,uBAAeA,OAAO,CAAEgC,kBAAxB,EAA4CxB,sBAA5C,CANf;AAOE,UAAA,gBAAgB,MAPlB;AAQE,UAAA,UAAU,EAAEF,UARd;AASE,UAAA,kBAAkB,EAAEC,kBATtB;AAUE,UAAA,uBAAuB,EAAE,CAAC;AAAE0B,YAAAA,QAAQ,EAAE;AAAZ,WAAD,EAA0B;AAAEA,YAAAA,QAAQ,EAAE;AAAZ,WAA1B,CAV3B;AAWE,UAAA,KAAK,EAAEjB,aAAa,IAAIA,aAAa,CAACc,GAAD;AAXvC,UANF,EAmBGd,aAAa,IAAIA,aAAa,CAACc,GAAD,CAA9B,iBACC;AAAK,UAAA,SAAS,EAAE7B,OAAO,CAAChC;AAAxB,WAA0C+C,aAAa,CAACc,GAAD,CAAvD,CApBJ,CADwB;AAAA,OAA1B,CAFJ,eA2BE;AAAK,QAAA,SAAS,EAAE7B,OAAO,CAAC1C;AAAxB,QA3BF,CAJF,EAkCGoB,KAAK,CAACG,IAAN,CAAW8C,GAAX,CAAe,UAACM,GAAD,EAAMJ,GAAN;AAAA,4BACd,oBAAC,eAAD;AACE,UAAA,GAAG,EAAEA,GADP;AAEE,UAAA,KAAK,EAAEnD,KAFT;AAGE,UAAA,GAAG,EAAEuD,GAHP;AAIE,UAAA,GAAG,EAAEJ,GAJP;AAKE,UAAA,WAAW,EAAE,MAAI,CAACpD,KAAL,CAAWyD,WAL1B;AAME,UAAA,QAAQ,EAAE,MAAI,CAACzD,KAAL,CAAWE,QANvB;AAOE,UAAA,SAAS,EAAE,MAAI,CAACwD,OAPlB;AAQE,UAAA,YAAY,EAAEjC,YARhB;AASE,UAAA,WAAW,EAAEE,WATf;AAUE,UAAA,UAAU,EAAEC,UAVd;AAWE,UAAA,KAAK,EAAES,UAAF,aAAEA,UAAF,uBAAEA,UAAU,CAAGmB,GAAG,CAACG,EAAP,CAXnB;AAYE,UAAA,aAAa,EAAG5B,aAAa,IAAIA,aAAa,CAAC6B,SAAhC,IAA8Cf,oBAZ/D;AAaE,UAAA,cAAc,EAAGb,cAAc,IAAIA,cAAc,CAAC4B,SAAlC,IAAgDb,qBAblE;AAcE,UAAA,kBAAkB,EAAElB,kBAdtB;AAeE,UAAA,aAAa,EAAEI,aAfjB;AAgBE,UAAA,YAAY,EAAEC,YAhBhB;AAiBE,UAAA,kBAAkB,EAAE,2BAAe9B,IAAf,aAAeA,IAAf,uBAAeA,IAAI,CAAEkD,kBAArB,EAAyCxB,sBAAzC;AAjBtB,UADc;AAAA,OAAf,CAlCH,EAwDGM,oBAAoB,iBAAI;AAAK,QAAA,SAAS,EAAEb,OAAO,CAAC3B;AAAxB,SAAoCwC,oBAApC,CAxD3B,EAyDGG,aAAa,iBAAI;AAAK,QAAA,SAAS,EAAEhB,OAAO,CAAC3B;AAAxB,SAAoC2C,aAApC,CAzDpB,EA0DGC,kBAAkB,iBAAI;AAAK,QAAA,SAAS,EAAEjB,OAAO,CAAC3B;AAAxB,SAAoC4C,kBAApC,CA1DzB,eA4DE,oBAAC,kBAAD;AAAQ,QAAA,UAAU,EAAEhB;AAApB,QA5DF,CALF,CADF;AAsED;;;EA5K6BqC,KAAK,CAACC,S;;iCAAhCjE,iB,eACe;AACjB0B,EAAAA,OAAO,EAAEwC,sBAAUC,MAAV,CAAiBC,UADT;AAEjBhE,EAAAA,KAAK,EAAE8D,sBAAUC,MAAV,CAAiBC,UAFP;AAGjBvC,EAAAA,aAAa,EAAEqC,sBAAUC,MAAV,CAAiBC,UAHf;AAIjB/D,EAAAA,QAAQ,EAAE6D,sBAAUG,IAAV,CAAeD,UAJR;AAKjBR,EAAAA,WAAW,EAAEM,sBAAUG,IAAV,CAAeD,UALX;AAMjBzC,EAAAA,QAAQ,EAAEuC,sBAAUG,IAAV,CAAeD,UANR;AAOjBxC,EAAAA,YAAY,EAAEsC,sBAAUI,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEL,sBAAUG,IAAV,CAAeD,UADQ;AAE5B,cAAQF,sBAAUG,IAAV,CAAeD;AAFK,GAAhB,CAPG;AAWjBpC,EAAAA,kBAAkB,EAAEkC,sBAAUI,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAEL,sBAAUG,IAAV,CAAeD,UADc;AAElC,cAAQF,sBAAUG,IAAV,CAAeD;AAFW,GAAhB,CAXH;AAejBtC,EAAAA,WAAW,EAAEoC,sBAAUC,MAfN;AAgBjBpC,EAAAA,UAAU,EAAEmC,sBAAUM;AAhBL,C;;eA8KN,wBAAW7G,MAAX,EAAmBqC,iBAAnB,C","sourcesContent":["import { getPluginProps } from './utils';\nimport * as React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddRow from './add-row';\nimport Row from './row';\nimport debug from 'debug';\nimport lodash from 'lodash';\nimport { EditableHtml, DEFAULT_PLUGINS } from '@pie-lib/pie-toolbox/editable-html';\n\nconst log = debug('pie-elements:match:configure');\n\nconst styles = (theme) => ({\n container: {\n marginBottom: theme.spacing.unit * 2.5,\n display: 'flex',\n flexDirection: 'column',\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n width: '100%',\n borderBottom: `2px solid ${theme.palette.grey['A100']}`,\n paddingBottom: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n '&> div': {\n width: '120px',\n padding: `0 ${theme.spacing.unit}px`,\n textAlign: 'center',\n },\n },\n deleteIcon: {\n flex: 0.5,\n minWidth: '45px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n marginRight: theme.spacing.unit,\n '&> div': {\n width: '100%',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '200px',\n },\n },\n rowTable: {\n display: 'flex',\n flexDirection: 'column',\n },\n headerInput: {\n '&> div': {\n fontWeight: 'bold',\n },\n },\n marginBottom: {\n marginBottom: theme.typography.fontSize - 2 + theme.spacing.unit,\n },\n columnErrorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: `${theme.spacing.unit}px !important`,\n width: 'fit-content !important',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nclass AnswerConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onDeleteRow: PropTypes.func.isRequired,\n onAddRow: 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 moveRow = (from, to) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n const rows = newModel.rows || [];\n\n log('[moveRow]: ', from, to);\n\n const { movedRow, remainingRows } = rows.reduce(\n (acc, item, index) => {\n if (index === from) {\n acc.movedRow = item;\n } else {\n acc.remainingRows.push(item);\n }\n\n return acc;\n },\n { movedRow: null, remainingRows: [] },\n );\n\n const update = [...remainingRows.slice(0, to), movedRow, ...remainingRows.slice(to)];\n\n log('update: ', update);\n\n newModel.rows = update;\n\n onChange(newModel);\n };\n\n onChange =\n (name, isBoolean) =>\n ({ target }) => {\n const { model, onChange } = this.props;\n let value;\n\n if (isBoolean) {\n value = target.checked;\n } else {\n value = target.value;\n }\n\n lodash.set(model, name, value);\n onChange(model, name);\n };\n\n onHeaderChange = (headerIndex) => (value) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (headerIndex === 0) {\n newModel.headers[headerIndex] = value;\n onChange(newModel);\n\n return;\n }\n\n newModel.headers[headerIndex] = value;\n onChange(newModel);\n };\n\n render() {\n const { classes, model, onAddRow, imageSupport, configuration, toolbarOpts, spellCheck, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n headers = {},\n rows = {},\n maxImageWidth = {},\n maxImageHeight = {},\n mathMlOptions = {},\n minQuestions,\n } = configuration || {};\n const { errors } = model || {};\n const { correctResponseError, rowsErrors, columnsErrors, noOfRowsError, columnsLengthError } = errors || {};\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list',\n );\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n return (\n <div className={classes.container}>\n <Typography type=\"body1\" component=\"div\">\n Click on the labels to edit or remove. Set the correct answers by clicking each correct answer per row.\n </Typography>\n\n <div\n className={classes.rowTable}\n style={configuration.width ? { width: configuration.width, overflow: 'scroll' } : {}}\n >\n <div className={classes.rowContainer}>\n {headers.settings &&\n (model.headers || []).map((header, idx) => (\n <div\n key={idx}\n className={cx(classes.rowItem, {\n [classes.questionText]: idx === 0,\n })}\n >\n <EditableHtml\n onChange={this.onHeaderChange(idx)}\n markup={header}\n className={columnsErrors && !columnsErrors[idx] ? classes.marginBottom : classes.headerInput}\n label={'column label'}\n activePlugins={filteredDefaultPlugins}\n pluginProps={getPluginProps(headers?.inputConfiguration, baseInputConfiguration)}\n autoWidthToolbar\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={columnsErrors && columnsErrors[idx]}\n />\n {columnsErrors && columnsErrors[idx] && (\n <div className={classes.columnErrorText}>{columnsErrors[idx]}</div>\n )}\n </div>\n ))}\n <div className={classes.deleteIcon} />\n </div>\n\n {model.rows.map((row, idx) => (\n <Row\n key={idx}\n model={model}\n row={row}\n idx={idx}\n onDeleteRow={this.props.onDeleteRow}\n onChange={this.props.onChange}\n onMoveRow={this.moveRow}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={rowsErrors?.[row.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowTitles) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowTitles) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n minQuestions={minQuestions}\n inputConfiguration={getPluginProps(rows?.inputConfiguration, baseInputConfiguration)}\n />\n ))}\n\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n {noOfRowsError && <div className={classes.errorText}>{noOfRowsError}</div>}\n {columnsLengthError && <div className={classes.errorText}>{columnsLengthError}</div>}\n\n <AddRow onAddClick={onAddRow} />\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AnswerConfigBlock);\n"],"file":"answer-config-block.js"}
1
+ {"version":3,"sources":["../src/answer-config-block.jsx"],"names":["log","styles","theme","container","marginBottom","spacing","unit","display","flexDirection","rowContainer","alignItems","flex","width","borderBottom","palette","grey","paddingBottom","marginTop","rowItem","justifyContent","padding","textAlign","deleteIcon","minWidth","questionText","marginRight","maxWidth","rowTable","headerInput","fontWeight","typography","fontSize","columnErrorText","color","error","main","paddingTop","errorText","AnswerConfigBlock","from","to","props","model","onChange","newModel","rows","reduce","acc","item","index","movedRow","remainingRows","push","update","slice","name","isBoolean","target","value","checked","lodash","set","headerIndex","headers","classes","onAddRow","imageSupport","configuration","toolbarOpts","spellCheck","uploadSoundSupport","baseInputConfiguration","maxImageWidth","maxImageHeight","mathMlOptions","minQuestions","errors","correctResponseError","rowsErrors","columnsErrors","noOfRowsError","columnsLengthError","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","defaultImageMaxWidth","prompt","defaultImageMaxHeight","overflow","settings","map","header","idx","onHeaderChange","inputConfiguration","language","row","onDeleteRow","moveRow","id","rowTitles","React","Component","PropTypes","object","isRequired","func","shape","add","bool"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport * as React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport AddRow from './add-row';\nimport Row from './row';\nimport debug from 'debug';\nimport lodash from 'lodash';\nimport EditableHtml, { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\n\nconst log = debug('pie-elements:match:configure');\n\nconst styles = (theme) => ({\n container: {\n marginBottom: theme.spacing.unit * 2.5,\n display: 'flex',\n flexDirection: 'column',\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n width: '100%',\n borderBottom: `2px solid ${theme.palette.grey['A100']}`,\n paddingBottom: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n '&> div': {\n width: '120px',\n padding: `0 ${theme.spacing.unit}px`,\n textAlign: 'center',\n },\n },\n deleteIcon: {\n flex: 0.5,\n minWidth: '45px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n marginRight: theme.spacing.unit,\n '&> div': {\n width: '100%',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '200px',\n },\n },\n rowTable: {\n display: 'flex',\n flexDirection: 'column',\n },\n headerInput: {\n '&> div': {\n fontWeight: 'bold',\n },\n },\n marginBottom: {\n marginBottom: theme.typography.fontSize - 2 + theme.spacing.unit,\n },\n columnErrorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: `${theme.spacing.unit}px !important`,\n width: 'fit-content !important',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nclass AnswerConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onDeleteRow: PropTypes.func.isRequired,\n onAddRow: 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 moveRow = (from, to) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n const rows = newModel.rows || [];\n\n log('[moveRow]: ', from, to);\n\n const { movedRow, remainingRows } = rows.reduce(\n (acc, item, index) => {\n if (index === from) {\n acc.movedRow = item;\n } else {\n acc.remainingRows.push(item);\n }\n\n return acc;\n },\n { movedRow: null, remainingRows: [] },\n );\n\n const update = [...remainingRows.slice(0, to), movedRow, ...remainingRows.slice(to)];\n\n log('update: ', update);\n\n newModel.rows = update;\n\n onChange(newModel);\n };\n\n onChange =\n (name, isBoolean) =>\n ({ target }) => {\n const { model, onChange } = this.props;\n let value;\n\n if (isBoolean) {\n value = target.checked;\n } else {\n value = target.value;\n }\n\n lodash.set(model, name, value);\n onChange(model, name);\n };\n\n onHeaderChange = (headerIndex) => (value) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (headerIndex === 0) {\n newModel.headers[headerIndex] = value;\n onChange(newModel);\n\n return;\n }\n\n newModel.headers[headerIndex] = value;\n onChange(newModel);\n };\n\n render() {\n const { classes, model, onAddRow, imageSupport, configuration, toolbarOpts, spellCheck, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n headers = {},\n rows = {},\n maxImageWidth = {},\n maxImageHeight = {},\n mathMlOptions = {},\n minQuestions,\n } = configuration || {};\n const { errors } = model || {};\n const { correctResponseError, rowsErrors, columnsErrors, noOfRowsError, columnsLengthError } = errors || {};\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list',\n );\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n return (\n <div className={classes.container}>\n <Typography type=\"body1\" component=\"div\">\n Click on the labels to edit or remove. Set the correct answers by clicking each correct answer per row.\n </Typography>\n\n <div\n className={classes.rowTable}\n style={configuration.width ? { width: configuration.width, overflow: 'scroll' } : {}}\n >\n <div className={classes.rowContainer}>\n {headers.settings &&\n (model.headers || []).map((header, idx) => (\n <div\n key={idx}\n className={cx(classes.rowItem, {\n [classes.questionText]: idx === 0,\n })}\n >\n <EditableHtml\n onChange={this.onHeaderChange(idx)}\n markup={header}\n className={columnsErrors && !columnsErrors[idx] ? classes.marginBottom : classes.headerInput}\n label={'column label'}\n activePlugins={filteredDefaultPlugins}\n pluginProps={getPluginProps(headers?.inputConfiguration, baseInputConfiguration)}\n autoWidthToolbar\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={columnsErrors && columnsErrors[idx]}\n />\n {columnsErrors && columnsErrors[idx] && (\n <div className={classes.columnErrorText}>{columnsErrors[idx]}</div>\n )}\n </div>\n ))}\n <div className={classes.deleteIcon} />\n </div>\n\n {model.rows.map((row, idx) => (\n <Row\n key={idx}\n model={model}\n row={row}\n idx={idx}\n onDeleteRow={this.props.onDeleteRow}\n onChange={this.props.onChange}\n onMoveRow={this.moveRow}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={rowsErrors?.[row.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowTitles) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowTitles) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n minQuestions={minQuestions}\n inputConfiguration={getPluginProps(rows?.inputConfiguration, baseInputConfiguration)}\n />\n ))}\n\n {correctResponseError && <div className={classes.errorText}>{correctResponseError}</div>}\n {noOfRowsError && <div className={classes.errorText}>{noOfRowsError}</div>}\n {columnsLengthError && <div className={classes.errorText}>{columnsLengthError}</div>}\n\n <AddRow onAddClick={onAddRow} />\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AnswerConfigBlock);\n"],"file":"answer-config-block.js"}
@@ -29,11 +29,11 @@ var _react = _interopRequireDefault(require("react"));
29
29
 
30
30
  var _styles = require("@material-ui/core/styles");
31
31
 
32
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
32
+ var _configUi = require("@pie-lib/config-ui");
33
33
 
34
- var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
34
+ var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
35
35
 
36
- var _drag = require("@pie-lib/pie-toolbox/drag");
36
+ var _drag = require("@pie-lib/drag");
37
37
 
38
38
  var _propTypes = _interopRequireDefault(require("prop-types"));
39
39
 
@@ -371,7 +371,7 @@ var Configure = /*#__PURE__*/function (_React$Component) {
371
371
  }, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
372
372
  label: teacherInstructions.label,
373
373
  className: classes.promptHolder
374
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
374
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
375
375
  className: classes.prompt,
376
376
  markup: model.teacherInstructions || '',
377
377
  onChange: this.onTeacherInstructionsChanged,
@@ -394,7 +394,7 @@ var Configure = /*#__PURE__*/function (_React$Component) {
394
394
  }, teacherInstructionsError)), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
395
395
  label: prompt.label,
396
396
  className: classes.promptHolder
397
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
397
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
398
398
  className: classes.prompt,
399
399
  markup: model.prompt,
400
400
  onChange: this.onPromptChanged,
@@ -433,7 +433,7 @@ var Configure = /*#__PURE__*/function (_React$Component) {
433
433
  }), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
434
434
  label: rationale.label,
435
435
  className: classes.promptHolder
436
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
436
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
437
437
  className: classes.prompt,
438
438
  markup: model.rationale || '',
439
439
  onChange: this.onRationaleChanged,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configure.jsx"],"names":["log","Panel","settings","toggle","radio","dropdown","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","errorText","fontSize","typography","color","palette","error","main","Configure","props","event","value","setState","activeTab","index","model","onModelChanged","feedback","rowIndex","newModel","rows","splice","onChange","configuration","maxQuestions","length","dialog","open","text","concat","id","rowIdCounter","title","values","Array","layout","fill","newLayout","oldLayout","i","headers","push","forEach","row","newChoiceMode","trueCount","reduce","total","current","choiceMode","partialScoring","prompt","teacherInstructions","rationale","maxId","Math","max","map","state","validateRowsID","updatedRows","wasChanged","classes","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","contentDimensions","lockChoiceOrder","maxImageWidth","maxImageHeight","settingsPanelDisabled","scoringType","spellCheck","studentInstructions","withRubric","language","languageChoices","errors","extraCSSRules","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","label","enabled","options","panelProperties","studentInstructionsEnabled","rubricEnabled","config","Settings","Properties","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","onResponseTypeChange","onLayoutChange","onAddRow","onDeleteRow","onRationaleChanged","onFeedbackChange","React","Component","PropTypes","func","object","isRequired","shape","add","Config"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, settings, layout, InputContainer, AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { withDragContext } from '@pie-lib/pie-toolbox/drag';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport GeneralConfigBlock from './general-config-block';\nimport AnswerConfigBlock from './answer-config-block';\n\nconst log = debug('@pie-element:match:configure');\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nclass Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.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 };\n\n static defaultProps = {\n classes: {},\n };\n\n constructor(props) {\n super(props);\n\n let maxId = 0;\n\n if (props.model.rows && props.model.rows.length > 0) {\n maxId = Math.max(...props.model.rows.map((row) => row.id));\n }\n\n this.rowIdCounter = maxId + 1;\n\n this.state = {\n activeTab: 0,\n dialog: {\n open: false,\n text: '',\n },\n };\n }\n\n componentDidMount() {\n const { updatedRows, wasChanged } = this.validateRowsID(this.props.model.rows);\n\n if (wasChanged) {\n const newModel = { ...this.props.model, rows: updatedRows };\n this.props.onModelChanged(newModel);\n }\n }\n\n validateRowsID(rows) {\n let wasChanged = false;\n\n const updatedRows = (rows || []).map((row, index) => {\n if (row.id !== index + 1) {\n wasChanged = true;\n\n return { ...row, id: index + 1 };\n }\n\n return row;\n });\n\n return { updatedRows, wasChanged };\n }\n\n onTabChange = (event, value) => {\n this.setState({ activeTab: value });\n };\n\n onChangeTabIndex = (index) => {\n this.setState({ activeTab: index });\n };\n\n onChange = (model) => {\n this.props.onModelChanged(model);\n };\n\n onFeedbackChange = (feedback) => {\n const { model, onModelChanged } = this.props;\n model.feedback = feedback;\n\n onModelChanged(model);\n };\n\n onDeleteRow = (rowIndex) => {\n const { model } = this.props;\n const newModel = { ...model };\n\n newModel.rows.splice(rowIndex, 1);\n\n this.onChange(newModel);\n };\n\n onAddRow = () => {\n const { model, configuration } = this.props;\n const newModel = { ...model };\n const { maxQuestions } = configuration || {};\n\n if (maxQuestions && (newModel.rows || []).length >= maxQuestions) {\n this.setState({\n dialog: {\n open: true,\n text: `There can be maximum ${maxQuestions} question row` + (maxQuestions > 1 ? 's' : '') + '.',\n },\n });\n return;\n }\n\n newModel.rows = newModel.rows.concat({\n id: this.rowIdCounter + 1,\n title: `Question Text ${(newModel.rows || []).length + 1}`,\n values: new Array(model.layout - 1).fill(false),\n });\n\n this.rowIdCounter += 1;\n\n this.onChange(newModel);\n };\n\n onLayoutChange = (newLayout) => {\n const { model } = this.props;\n const oldLayout = model.layout;\n const newModel = { ...model };\n\n if (newLayout > oldLayout) {\n for (let i = 0; i < newLayout - oldLayout; i++) {\n newModel.headers.push(`Column ${newModel.headers.length + 1}`);\n }\n\n newModel.rows.forEach((row) => {\n for (let i = 0; i < newLayout - oldLayout; i++) {\n row.values.push(false);\n }\n });\n } else if (newLayout < oldLayout) {\n newModel.headers.splice(newLayout);\n\n newModel.rows.forEach((row) => {\n row.values.splice(newLayout - 1);\n });\n }\n\n newModel.layout = newLayout;\n\n this.onChange(newModel);\n };\n\n onResponseTypeChange = (newChoiceMode) => {\n const { model } = this.props;\n const newModel = { ...model };\n\n // if we're switching to radio and we have more than one true, reset\n if (newChoiceMode === 'radio') {\n newModel.rows.forEach((row) => {\n const trueCount = row.values.reduce((total, current) => (current === true ? total + 1 : total));\n\n if (trueCount > 1) {\n row.values = new Array(model.layout - 1).fill(false);\n }\n });\n }\n\n newModel.choiceMode = newChoiceMode;\n\n this.onChange(newModel);\n };\n\n onPartialScoringChange = (partialScoring) => {\n this.props.model.partialScoring = partialScoring;\n\n this.props.onModelChanged(this.props.model);\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n render() {\n const { classes, model, imageSupport, onModelChanged, configuration, onConfigurationChanged, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageWidth = {},\n maxImageHeight = {},\n partialScoring = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const { dialog } = this.state;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\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 feedbackEnabled: feedback.settings && toggle(feedback.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.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 log('[render] model', model);\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <GeneralConfigBlock\n model={model}\n configuration={configuration}\n onResponseTypeChange={this.onResponseTypeChange}\n onLayoutChange={this.onLayoutChange}\n />\n\n <AnswerConfigBlock\n model={model}\n configuration={configuration}\n imageSupport={imageSupport}\n onChange={this.onChange}\n onAddRow={this.onAddRow}\n onDeleteRow={this.onDeleteRow}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.onFeedbackChange} toolbarOpts={toolbarOpts} />\n )}\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nexport const Config = Configure;\n\nexport default withDragContext(withStyles(styles)(Configure));\n"],"file":"configure.js"}
1
+ {"version":3,"sources":["../src/configure.jsx"],"names":["log","Panel","settings","toggle","radio","dropdown","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","errorText","fontSize","typography","color","palette","error","main","Configure","props","event","value","setState","activeTab","index","model","onModelChanged","feedback","rowIndex","newModel","rows","splice","onChange","configuration","maxQuestions","length","dialog","open","text","concat","id","rowIdCounter","title","values","Array","layout","fill","newLayout","oldLayout","i","headers","push","forEach","row","newChoiceMode","trueCount","reduce","total","current","choiceMode","partialScoring","prompt","teacherInstructions","rationale","maxId","Math","max","map","state","validateRowsID","updatedRows","wasChanged","classes","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","contentDimensions","lockChoiceOrder","maxImageWidth","maxImageHeight","settingsPanelDisabled","scoringType","spellCheck","studentInstructions","withRubric","language","languageChoices","errors","extraCSSRules","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","label","enabled","options","panelProperties","studentInstructionsEnabled","rubricEnabled","config","Settings","Properties","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","onResponseTypeChange","onLayoutChange","onAddRow","onDeleteRow","onRationaleChanged","onFeedbackChange","React","Component","PropTypes","func","object","isRequired","shape","add","Config"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, settings, layout, InputContainer, AlertDialog } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withDragContext } from '@pie-lib/drag';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport GeneralConfigBlock from './general-config-block';\nimport AnswerConfigBlock from './answer-config-block';\n\nconst log = debug('@pie-element:match:configure');\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nclass Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.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 };\n\n static defaultProps = {\n classes: {},\n };\n\n constructor(props) {\n super(props);\n\n let maxId = 0;\n\n if (props.model.rows && props.model.rows.length > 0) {\n maxId = Math.max(...props.model.rows.map((row) => row.id));\n }\n\n this.rowIdCounter = maxId + 1;\n\n this.state = {\n activeTab: 0,\n dialog: {\n open: false,\n text: '',\n },\n };\n }\n\n componentDidMount() {\n const { updatedRows, wasChanged } = this.validateRowsID(this.props.model.rows);\n\n if (wasChanged) {\n const newModel = { ...this.props.model, rows: updatedRows };\n this.props.onModelChanged(newModel);\n }\n }\n\n validateRowsID(rows) {\n let wasChanged = false;\n\n const updatedRows = (rows || []).map((row, index) => {\n if (row.id !== index + 1) {\n wasChanged = true;\n\n return { ...row, id: index + 1 };\n }\n\n return row;\n });\n\n return { updatedRows, wasChanged };\n }\n\n onTabChange = (event, value) => {\n this.setState({ activeTab: value });\n };\n\n onChangeTabIndex = (index) => {\n this.setState({ activeTab: index });\n };\n\n onChange = (model) => {\n this.props.onModelChanged(model);\n };\n\n onFeedbackChange = (feedback) => {\n const { model, onModelChanged } = this.props;\n model.feedback = feedback;\n\n onModelChanged(model);\n };\n\n onDeleteRow = (rowIndex) => {\n const { model } = this.props;\n const newModel = { ...model };\n\n newModel.rows.splice(rowIndex, 1);\n\n this.onChange(newModel);\n };\n\n onAddRow = () => {\n const { model, configuration } = this.props;\n const newModel = { ...model };\n const { maxQuestions } = configuration || {};\n\n if (maxQuestions && (newModel.rows || []).length >= maxQuestions) {\n this.setState({\n dialog: {\n open: true,\n text: `There can be maximum ${maxQuestions} question row` + (maxQuestions > 1 ? 's' : '') + '.',\n },\n });\n return;\n }\n\n newModel.rows = newModel.rows.concat({\n id: this.rowIdCounter + 1,\n title: `Question Text ${(newModel.rows || []).length + 1}`,\n values: new Array(model.layout - 1).fill(false),\n });\n\n this.rowIdCounter += 1;\n\n this.onChange(newModel);\n };\n\n onLayoutChange = (newLayout) => {\n const { model } = this.props;\n const oldLayout = model.layout;\n const newModel = { ...model };\n\n if (newLayout > oldLayout) {\n for (let i = 0; i < newLayout - oldLayout; i++) {\n newModel.headers.push(`Column ${newModel.headers.length + 1}`);\n }\n\n newModel.rows.forEach((row) => {\n for (let i = 0; i < newLayout - oldLayout; i++) {\n row.values.push(false);\n }\n });\n } else if (newLayout < oldLayout) {\n newModel.headers.splice(newLayout);\n\n newModel.rows.forEach((row) => {\n row.values.splice(newLayout - 1);\n });\n }\n\n newModel.layout = newLayout;\n\n this.onChange(newModel);\n };\n\n onResponseTypeChange = (newChoiceMode) => {\n const { model } = this.props;\n const newModel = { ...model };\n\n // if we're switching to radio and we have more than one true, reset\n if (newChoiceMode === 'radio') {\n newModel.rows.forEach((row) => {\n const trueCount = row.values.reduce((total, current) => (current === true ? total + 1 : total));\n\n if (trueCount > 1) {\n row.values = new Array(model.layout - 1).fill(false);\n }\n });\n }\n\n newModel.choiceMode = newChoiceMode;\n\n this.onChange(newModel);\n };\n\n onPartialScoringChange = (partialScoring) => {\n this.props.model.partialScoring = partialScoring;\n\n this.props.onModelChanged(this.props.model);\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n render() {\n const { classes, model, imageSupport, onModelChanged, configuration, onConfigurationChanged, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageWidth = {},\n maxImageHeight = {},\n partialScoring = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const { dialog } = this.state;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\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 feedbackEnabled: feedback.settings && toggle(feedback.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.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 log('[render] model', model);\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <GeneralConfigBlock\n model={model}\n configuration={configuration}\n onResponseTypeChange={this.onResponseTypeChange}\n onLayoutChange={this.onLayoutChange}\n />\n\n <AnswerConfigBlock\n model={model}\n configuration={configuration}\n imageSupport={imageSupport}\n onChange={this.onChange}\n onAddRow={this.onAddRow}\n onDeleteRow={this.onDeleteRow}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.onFeedbackChange} toolbarOpts={toolbarOpts} />\n )}\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nexport const Config = Configure;\n\nexport default withDragContext(withStyles(styles)(Configure));\n"],"file":"configure.js"}
@@ -25,7 +25,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
25
25
 
26
26
  var React = _interopRequireWildcard(require("react"));
27
27
 
28
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
28
+ var _configUi = require("@pie-lib/config-ui");
29
29
 
30
30
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
31
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/general-config-block.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","display","input","flex","numberTextField","flexDirection","inputContainer","width","flexContainer","alignItems","titleText","fontSize","typography","marginRight","tooltip","whiteSpace","maxWidth","GeneralConfigBlock","name","event","props","model","onResponseTypeChange","newModel","target","value","onLayoutChange","classes","configuration","layout","choiceMode","maxAnswers","validationMessage","settings","label","e","v","onChangeColumns","onChangeResponseType","React","Component","PropTypes","object","isRequired","func"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { InputContainer, NumberTextField } from '@pie-lib/pie-toolbox/config-ui';\nimport PropTypes from 'prop-types';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { generateValidationMessage } from '../utils';\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n },\n input: {\n flex: 1,\n },\n numberTextField: {\n flexDirection: 'unset',\n },\n inputContainer: {\n width: '65%',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n titleText: {\n fontSize: theme.typography.fontSize + 2,\n marginRight: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n});\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onResponseTypeChange: PropTypes.func.isRequired,\n onLayoutChange: PropTypes.func.isRequired,\n };\n\n onChangeResponseType = (name) => (event) => {\n const { model, onResponseTypeChange } = this.props;\n const newModel = { ...model };\n\n newModel[name] = event.target.value;\n\n onResponseTypeChange(newModel[name]);\n };\n\n onChangeColumns = (name, value) => {\n const { model, onLayoutChange } = this.props;\n const newModel = { ...model };\n\n newModel[name] = value;\n\n onLayoutChange(newModel[name]);\n };\n\n render() {\n const { classes, model, configuration } = this.props;\n const { layout = {}, choiceMode = {}, maxAnswers } = configuration || {};\n\n const validationMessage = generateValidationMessage(model, configuration);\n\n return (\n <React.Fragment>\n <div className={classes.flexContainer}>\n <Typography className={classes.titleText} component={'div'}>Define questions</Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n <div className={classes.container}>\n <div className={classes.input}>\n {layout.settings && (\n <InputContainer label={layout.label} className={classes.inputContainer}>\n <NumberTextField\n type=\"number\"\n min={3}\n max={maxAnswers || 10}\n value={model.layout}\n onChange={(e, v) => this.onChangeColumns('layout', v)}\n suffix={'Columns'}\n className={classes.numberTextField}\n />\n </InputContainer>\n )}\n </div>\n\n <div className={classes.input}>\n {choiceMode.settings && (\n <InputContainer label={choiceMode.label} className={classes.inputContainer}>\n <Select onChange={this.onChangeResponseType('choiceMode')} value={model.choiceMode}>\n <MenuItem value=\"radio\">Radio - One Answer</MenuItem>\n <MenuItem value=\"checkbox\">Checkbox - Multiple Answers</MenuItem>\n </Select>\n </InputContainer>\n )}\n </div>\n </div>\n </React.Fragment>\n );\n }\n}\n\nexport default withStyles(styles)(GeneralConfigBlock);\n"],"file":"general-config-block.js"}
1
+ {"version":3,"sources":["../src/general-config-block.jsx"],"names":["styles","theme","container","marginTop","spacing","unit","display","input","flex","numberTextField","flexDirection","inputContainer","width","flexContainer","alignItems","titleText","fontSize","typography","marginRight","tooltip","whiteSpace","maxWidth","GeneralConfigBlock","name","event","props","model","onResponseTypeChange","newModel","target","value","onLayoutChange","classes","configuration","layout","choiceMode","maxAnswers","validationMessage","settings","label","e","v","onChangeColumns","onChangeResponseType","React","Component","PropTypes","object","isRequired","func"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { InputContainer, NumberTextField } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport { generateValidationMessage } from '../utils';\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n },\n input: {\n flex: 1,\n },\n numberTextField: {\n flexDirection: 'unset',\n },\n inputContainer: {\n width: '65%',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n titleText: {\n fontSize: theme.typography.fontSize + 2,\n marginRight: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n});\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n onResponseTypeChange: PropTypes.func.isRequired,\n onLayoutChange: PropTypes.func.isRequired,\n };\n\n onChangeResponseType = (name) => (event) => {\n const { model, onResponseTypeChange } = this.props;\n const newModel = { ...model };\n\n newModel[name] = event.target.value;\n\n onResponseTypeChange(newModel[name]);\n };\n\n onChangeColumns = (name, value) => {\n const { model, onLayoutChange } = this.props;\n const newModel = { ...model };\n\n newModel[name] = value;\n\n onLayoutChange(newModel[name]);\n };\n\n render() {\n const { classes, model, configuration } = this.props;\n const { layout = {}, choiceMode = {}, maxAnswers } = configuration || {};\n\n const validationMessage = generateValidationMessage(model, configuration);\n\n return (\n <React.Fragment>\n <div className={classes.flexContainer}>\n <Typography className={classes.titleText} component={'div'}>\n Define questions\n </Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n <div className={classes.container}>\n <div className={classes.input}>\n {layout.settings && (\n <InputContainer label={layout.label} className={classes.inputContainer}>\n <NumberTextField\n type=\"number\"\n min={3}\n max={maxAnswers || 10}\n value={model.layout}\n onChange={(e, v) => this.onChangeColumns('layout', v)}\n suffix={'Columns'}\n className={classes.numberTextField}\n />\n </InputContainer>\n )}\n </div>\n\n <div className={classes.input}>\n {choiceMode.settings && (\n <InputContainer label={choiceMode.label} className={classes.inputContainer}>\n <Select onChange={this.onChangeResponseType('choiceMode')} value={model.choiceMode}>\n <MenuItem value=\"radio\">Radio - One Answer</MenuItem>\n <MenuItem value=\"checkbox\">Checkbox - Multiple Answers</MenuItem>\n </Select>\n </InputContainer>\n )}\n </div>\n </div>\n </React.Fragment>\n );\n }\n}\n\nexport default withStyles(styles)(GeneralConfigBlock);\n"],"file":"general-config-block.js"}
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -31,7 +33,7 @@ var _styles = require("@material-ui/core/styles");
31
33
 
32
34
  var _classnames = _interopRequireDefault(require("classnames"));
33
35
 
34
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
36
+ var _configUi = require("@pie-lib/config-ui");
35
37
 
36
38
  var _DragHandle = _interopRequireDefault(require("@material-ui/icons/DragHandle"));
37
39
 
@@ -45,9 +47,13 @@ var _reactDnd = require("react-dnd");
45
47
 
46
48
  var _debug = _interopRequireDefault(require("debug"));
47
49
 
48
- var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
50
+ var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
51
+
52
+ var _renderUi = require("@pie-lib/render-ui");
53
+
54
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
49
55
 
50
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
56
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
51
57
 
52
58
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
53
59
 
@@ -190,7 +196,7 @@ var Row = /*#__PURE__*/function (_React$Component) {
190
196
  className: classes.rowContainer
191
197
  }, /*#__PURE__*/_react["default"].createElement("div", {
192
198
  className: (0, _classnames["default"])(classes.rowItem, classes.questionText)
193
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
199
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
194
200
  imageSupport: imageSupport,
195
201
  autoWidthToolbar: true,
196
202
  disableUnderline: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/row.jsx"],"names":["log","canDrag","Row","dialog","open","text","rowIndex","value","props","model","onChange","newModel","rows","title","rowValueIndex","event","choiceMode","i","values","length","target","checked","idx","onDeleteRow","minQuestions","setState","document","addEventListener","onMouseUpOnHandle","classes","imageSupport","connectDragSource","connectDropTarget","isDragging","row","inputConfiguration","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","mathMlOptions","state","opacity","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","content","width","dragHandle","onMouseDownOnHandle","rowContainer","rowItem","questionText","onRowTitleChange","editor","language","map","rowValue","rowIdx","radioButton","customColor","errorResponse","includes","onRowValueChange","deleteIcon","errorText","separator","React","Component","PropTypes","object","isRequired","number","bool","func","onMoveRow","shape","add","string","styles","theme","actions","padding","justifyContent","choice","spacing","unit","overflow","cursor","dragDisabled","container","marginTop","display","flexDirection","alignItems","flex","minWidth","color","tertiary","maxWidth","textAlign","marginRight","border","borderTop","palette","grey","fontSize","typography","main","paddingTop","StyledRow","NAME","choiceSource","beginDrag","id","index","StyledSource","connect","monitor","dragSource","choiceTarget","hover","drop","item","getItem","didDrop","StyledSourceAndTarget","dropTarget"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { AlertDialog, Checkbox } from '@pie-lib/pie-toolbox/config-ui';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport Radio from '@material-ui/core/Radio';\nimport IconButton from '@material-ui/core/IconButton';\nimport Delete from '@material-ui/icons/Delete';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { EditableHtml, DEFAULT_PLUGINS } from '@pie-lib/pie-toolbox/editable-html';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nexport let canDrag = false;\n\nexport class Row extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n row: PropTypes.object.isRequired,\n idx: PropTypes.number.isRequired,\n isDragging: PropTypes.bool.isRequired,\n maxImageWidth: PropTypes.object,\n maxImageHeight: PropTypes.object,\n onDeleteRow: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDropTarget: PropTypes.func.isRequired,\n onMoveRow: 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 inputConfiguration: PropTypes.object,\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n spellCheck: PropTypes.bool,\n minQuestions: PropTypes.number,\n };\n\n static defaultProps = {};\n\n state = {\n dialog: {\n open: false,\n text: '',\n },\n };\n\n componentDidMount() {\n document.addEventListener('mouseup', this.onMouseUpOnHandle);\n }\n\n onRowTitleChange = (rowIndex) => (value) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.rows[rowIndex].title = value;\n onChange(newModel);\n };\n\n onRowValueChange = (rowIndex, rowValueIndex) => (event) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (model.choiceMode === 'radio') {\n for (let i = 0; i < newModel.rows[rowIndex].values.length; i++) {\n newModel.rows[rowIndex].values[i] = false;\n }\n }\n\n newModel.rows[rowIndex].values[rowValueIndex] = event.target.checked;\n\n onChange(newModel);\n };\n\n onDeleteRow = (idx) => () => {\n const { model, onDeleteRow, minQuestions } = this.props;\n\n if (model.rows && model.rows.length === minQuestions) {\n this.setState({\n dialog: {\n open: true,\n text: `There should be at least ${minQuestions} question row` + (minQuestions > 1 ? 's' : '') + '.',\n },\n });\n } else {\n onDeleteRow(idx);\n }\n };\n\n onMouseDownOnHandle = () => {\n canDrag = true;\n };\n\n onMouseUpOnHandle = () => {\n canDrag = false;\n };\n\n render() {\n const {\n classes,\n imageSupport,\n connectDragSource,\n connectDropTarget,\n isDragging,\n model,\n row,\n idx,\n inputConfiguration = {},\n toolbarOpts,\n spellCheck,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n mathMlOptions = {},\n } = this.props;\n const { dialog } = this.state;\n const opacity = isDragging ? 0 : 1;\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'bulleted-list' && p !== 'numbered-list',\n );\n\n const content = (\n <div style={{ opacity: opacity, width: '100%' }}>\n <span itemID={'handle'} className={classes.dragHandle} onMouseDown={this.onMouseDownOnHandle}>\n <DragHandle color={'primary'} />\n </span>\n\n <div className={classes.rowContainer}>\n <div className={classNames(classes.rowItem, classes.questionText)}>\n <EditableHtml\n imageSupport={imageSupport}\n autoWidthToolbar\n disableUnderline\n label={'label'}\n markup={row.title}\n onChange={this.onRowTitleChange(idx)}\n className={classes.editor}\n pluginProps={inputConfiguration}\n toolbarOpts={toolbarOpts}\n activePlugins={filteredDefaultPlugins}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={error && error !== 'No correct response defined.'}\n mathMlOptions={mathMlOptions}\n />\n </div>\n\n {row.values.map((rowValue, rowIdx) => (\n <div key={rowIdx} className={classes.rowItem}>\n {model.choiceMode === 'radio' ? (\n <Radio\n className={classNames(classes.radioButton, classes.customColor, { [classes.errorResponse]: error?.includes('No correct response defined.') })}\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n />\n ) : (\n <Checkbox\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n label={''}\n error={error?.includes('No correct response defined.')}\n />\n )}\n </div>\n ))}\n\n <div className={classes.deleteIcon}>\n <IconButton onClick={this.onDeleteRow(idx)} aria-label=\"Delete\">\n <Delete />\n </IconButton>\n </div>\n </div>\n\n {error && <div className={classes.errorText}>{error}</div>}\n <hr className={classes.separator} />\n\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n </div>\n );\n\n return connectDragSource(connectDropTarget(content));\n }\n}\n\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n },\n rowContainer: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: '120px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n radioButton: {\n '& input': {\n width: '100% !important',\n },\n },\n customColor: {\n color: `${color.tertiary()} !important`\n },\n deleteIcon: {\n flex: 0.5,\n display: 'flex',\n justifyContent: 'center',\n minWidth: '45px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '200px',\n marginRight: theme.spacing.unit,\n '&> div': {\n width: '100%',\n },\n },\n separator: {\n marginTop: theme.spacing.unit * 2,\n border: 0,\n borderTop: `2px solid ${theme.palette.grey['A100']}`,\n width: '100%',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n errorResponse: {\n color: theme.palette.error.main,\n },\n});\n\nconst StyledRow = withStyles(styles)(Row);\n\nconst NAME = 'row-config';\n\nexport const choiceSource = {\n canDrag() {\n return canDrag;\n },\n beginDrag(props) {\n return {\n id: props.row.id,\n index: props.idx,\n };\n },\n};\n\nconst StyledSource = DragSource(NAME, choiceSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(StyledRow);\n\nexport const choiceTarget = {\n hover() {\n log('[hover]');\n },\n drop(props, monitor) {\n const item = monitor.getItem();\n\n log('[drop] item: ', item, 'didDrop?', monitor.didDrop());\n\n props.onMoveRow(item.index, props.idx);\n },\n};\n\nconst StyledSourceAndTarget = DropTarget(NAME, choiceTarget, (connect) => ({\n connectDropTarget: connect.dropTarget(),\n}))(StyledSource);\n\nexport default StyledSourceAndTarget;\n"],"file":"row.js"}
1
+ {"version":3,"sources":["../src/row.jsx"],"names":["log","canDrag","Row","dialog","open","text","rowIndex","value","props","model","onChange","newModel","rows","title","rowValueIndex","event","choiceMode","i","values","length","target","checked","idx","onDeleteRow","minQuestions","setState","document","addEventListener","onMouseUpOnHandle","classes","imageSupport","connectDragSource","connectDropTarget","isDragging","row","inputConfiguration","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","mathMlOptions","state","opacity","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","content","width","dragHandle","onMouseDownOnHandle","rowContainer","rowItem","questionText","onRowTitleChange","editor","language","map","rowValue","rowIdx","radioButton","customColor","errorResponse","includes","onRowValueChange","deleteIcon","errorText","separator","React","Component","PropTypes","object","isRequired","number","bool","func","onMoveRow","shape","add","string","styles","theme","actions","padding","justifyContent","choice","spacing","unit","overflow","cursor","dragDisabled","container","marginTop","display","flexDirection","alignItems","flex","minWidth","color","tertiary","maxWidth","textAlign","marginRight","border","borderTop","palette","grey","fontSize","typography","main","paddingTop","StyledRow","NAME","choiceSource","beginDrag","id","index","StyledSource","connect","monitor","dragSource","choiceTarget","hover","drop","item","getItem","didDrop","StyledSourceAndTarget","dropTarget"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { AlertDialog, Checkbox } from '@pie-lib/config-ui';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport Radio from '@material-ui/core/Radio';\nimport IconButton from '@material-ui/core/IconButton';\nimport Delete from '@material-ui/icons/Delete';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport EditableHtml, { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nexport let canDrag = false;\n\nexport class Row extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n row: PropTypes.object.isRequired,\n idx: PropTypes.number.isRequired,\n isDragging: PropTypes.bool.isRequired,\n maxImageWidth: PropTypes.object,\n maxImageHeight: PropTypes.object,\n onDeleteRow: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDropTarget: PropTypes.func.isRequired,\n onMoveRow: 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 inputConfiguration: PropTypes.object,\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n spellCheck: PropTypes.bool,\n minQuestions: PropTypes.number,\n };\n\n static defaultProps = {};\n\n state = {\n dialog: {\n open: false,\n text: '',\n },\n };\n\n componentDidMount() {\n document.addEventListener('mouseup', this.onMouseUpOnHandle);\n }\n\n onRowTitleChange = (rowIndex) => (value) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.rows[rowIndex].title = value;\n onChange(newModel);\n };\n\n onRowValueChange = (rowIndex, rowValueIndex) => (event) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (model.choiceMode === 'radio') {\n for (let i = 0; i < newModel.rows[rowIndex].values.length; i++) {\n newModel.rows[rowIndex].values[i] = false;\n }\n }\n\n newModel.rows[rowIndex].values[rowValueIndex] = event.target.checked;\n\n onChange(newModel);\n };\n\n onDeleteRow = (idx) => () => {\n const { model, onDeleteRow, minQuestions } = this.props;\n\n if (model.rows && model.rows.length === minQuestions) {\n this.setState({\n dialog: {\n open: true,\n text: `There should be at least ${minQuestions} question row` + (minQuestions > 1 ? 's' : '') + '.',\n },\n });\n } else {\n onDeleteRow(idx);\n }\n };\n\n onMouseDownOnHandle = () => {\n canDrag = true;\n };\n\n onMouseUpOnHandle = () => {\n canDrag = false;\n };\n\n render() {\n const {\n classes,\n imageSupport,\n connectDragSource,\n connectDropTarget,\n isDragging,\n model,\n row,\n idx,\n inputConfiguration = {},\n toolbarOpts,\n spellCheck,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n mathMlOptions = {},\n } = this.props;\n const { dialog } = this.state;\n const opacity = isDragging ? 0 : 1;\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'bulleted-list' && p !== 'numbered-list',\n );\n\n const content = (\n <div style={{ opacity: opacity, width: '100%' }}>\n <span itemID={'handle'} className={classes.dragHandle} onMouseDown={this.onMouseDownOnHandle}>\n <DragHandle color={'primary'} />\n </span>\n\n <div className={classes.rowContainer}>\n <div className={classNames(classes.rowItem, classes.questionText)}>\n <EditableHtml\n imageSupport={imageSupport}\n autoWidthToolbar\n disableUnderline\n label={'label'}\n markup={row.title}\n onChange={this.onRowTitleChange(idx)}\n className={classes.editor}\n pluginProps={inputConfiguration}\n toolbarOpts={toolbarOpts}\n activePlugins={filteredDefaultPlugins}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={error && error !== 'No correct response defined.'}\n mathMlOptions={mathMlOptions}\n />\n </div>\n\n {row.values.map((rowValue, rowIdx) => (\n <div key={rowIdx} className={classes.rowItem}>\n {model.choiceMode === 'radio' ? (\n <Radio\n className={classNames(classes.radioButton, classes.customColor, {\n [classes.errorResponse]: error?.includes('No correct response defined.'),\n })}\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n />\n ) : (\n <Checkbox\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n label={''}\n error={error?.includes('No correct response defined.')}\n />\n )}\n </div>\n ))}\n\n <div className={classes.deleteIcon}>\n <IconButton onClick={this.onDeleteRow(idx)} aria-label=\"Delete\">\n <Delete />\n </IconButton>\n </div>\n </div>\n\n {error && <div className={classes.errorText}>{error}</div>}\n <hr className={classes.separator} />\n\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n </div>\n );\n\n return connectDragSource(connectDropTarget(content));\n }\n}\n\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n },\n rowContainer: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: '120px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n radioButton: {\n '& input': {\n width: '100% !important',\n },\n },\n customColor: {\n color: `${color.tertiary()} !important`,\n },\n deleteIcon: {\n flex: 0.5,\n display: 'flex',\n justifyContent: 'center',\n minWidth: '45px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '200px',\n marginRight: theme.spacing.unit,\n '&> div': {\n width: '100%',\n },\n },\n separator: {\n marginTop: theme.spacing.unit * 2,\n border: 0,\n borderTop: `2px solid ${theme.palette.grey['A100']}`,\n width: '100%',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n errorResponse: {\n color: theme.palette.error.main,\n },\n});\n\nconst StyledRow = withStyles(styles)(Row);\n\nconst NAME = 'row-config';\n\nexport const choiceSource = {\n canDrag() {\n return canDrag;\n },\n beginDrag(props) {\n return {\n id: props.row.id,\n index: props.idx,\n };\n },\n};\n\nconst StyledSource = DragSource(NAME, choiceSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(StyledRow);\n\nexport const choiceTarget = {\n hover() {\n log('[hover]');\n },\n drop(props, monitor) {\n const item = monitor.getItem();\n\n log('[drop] item: ', item, 'didDrop?', monitor.didDrop());\n\n props.onMoveRow(item.index, props.idx);\n },\n};\n\nconst StyledSourceAndTarget = DropTarget(NAME, choiceTarget, (connect) => ({\n connectDropTarget: connect.dropTarget(),\n}))(StyledSource);\n\nexport default StyledSourceAndTarget;\n"],"file":"row.js"}
@@ -10,7 +10,11 @@
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@material-ui/icons": "^3.0.1",
12
12
  "@pie-framework/pie-configure-events": "^1.3.0",
13
- "@pie-lib/pie-toolbox": "2.25.2",
13
+ "@pie-lib/config-ui": "^11.24.0",
14
+ "@pie-lib/editable-html": "^11.16.0",
15
+ "@pie-lib/drag": "^2.17.0",
16
+ "@pie-lib/render-ui": "^4.30.0",
17
+ "@pie-lib/test-utils": "^0.17.0",
14
18
  "classnames": "^2.2.5",
15
19
  "debug": "^3.1.0",
16
20
  "lodash": "^4.17.15",
@@ -24,9 +24,9 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
24
24
 
25
25
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
26
26
 
27
- var _feedback = require("@pie-lib/pie-toolbox/feedback");
27
+ var _feedback = require("@pie-lib/feedback");
28
28
 
29
- var _controllerUtils = require("@pie-lib/pie-toolbox/controller-utils");
29
+ var _controllerUtils = require("@pie-lib/controller-utils");
30
30
 
31
31
  var _debug = _interopRequireDefault(require("debug"));
32
32
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","getResponseCorrectness","model","answers","env","isPartialScoring","partialScoring","enabled","rows","checkboxMode","choiceMode","Object","keys","length","totalCorrectAnswers","getTotalCorrectAnswers","getTotalCorrect","correctAnswers","incorrectAnswers","checkboxes","getCheckboxes","getCorrectRadios","getCorrectness","question","mode","forEach","row","answer","id","values","v","i","matchingTable","layout","noOfTotalCorrectAnswers","value","getPartialScore","totalCorrect","total","extraAnswers","score","parseFloat","toFixed","getOutComeScore","correctness","outcome","session","Promise","resolve","undefined","completed","empty","out","createDefaultModel","defaults","normalize","updateSession","normalizedQuestion","correctResponse","correctInfo","lockChoiceOrder","fb","feedbackEnabled","feedback","then","extraCSSRules","promptEnabled","prompt","essentials","allowFeedback","shuffled","disabled","view","role","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","assign","createCorrectResponseSession","r","getInnerText","html","replaceAll","getContent","replace","validate","config","headers","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","field","required","noOfRowsError","index","title","identicalAnswer","slice","some","hasCorrectResponse","columnsLengthError","headersContent","map","heading","shift","headerIndex","head","hasRowErrors","error","noCorrectAnswer","includes","correctResponseError","hasColumnErrors"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;;;;;;;AAFA,IAAMA,GAAG,GAAG,uBAAM,+BAAN,CAAZ;;AAIA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,KAAD,EAAQC,OAAR,EAA8B;AAAA,MAAbC,GAAa,uEAAP,EAAO;;AAC3D,MAAMC,gBAAgB,GAAGC,gCAAeC,OAAf,CAAuBL,KAAvB,EAA8BE,GAA9B,CAAzB;;AACA,MAAMI,IAAI,GAAGN,KAAK,CAACM,IAAnB;AACA,MAAMC,YAAY,GAAGP,KAAK,CAACQ,UAAN,KAAqB,UAA1C;;AAEA,MAAI,CAACP,OAAD,IAAYQ,MAAM,CAACC,IAAP,CAAYT,OAAZ,EAAqBU,MAArB,KAAgC,CAAhD,EAAmD;AACjD,WAAO,YAAP;AACD;;AAED,MAAMC,mBAAmB,GAAGL,YAAY,GAAGM,sBAAsB,CAACb,KAAD,CAAzB,GAAmCc,eAAe,CAACd,KAAD,CAA1F;AACA,MAAIe,cAAJ;AACA,MAAIC,gBAAgB,GAAG,CAAvB;;AAEA,MAAIT,YAAJ,EAAkB;AAChB,QAAMU,UAAU,GAAGC,aAAa,CAACZ,IAAD,EAAOL,OAAP,CAAhC;AAEAc,IAAAA,cAAc,GAAGE,UAAU,CAACF,cAA5B;AACAC,IAAAA,gBAAgB,GAAGC,UAAU,CAACD,gBAA9B;AACD,GALD,MAKO;AACLD,IAAAA,cAAc,GAAGI,gBAAgB,CAACb,IAAD,EAAOL,OAAP,CAAjC;AACD;;AAED,MAAIW,mBAAmB,KAAKG,cAAxB,IAA0C,CAACC,gBAA/C,EAAiE;AAC/D,WAAO,SAAP;AACD,GAFD,MAEO,IAAID,cAAc,KAAK,CAAvB,EAA0B;AAC/B,WAAO,WAAP;AACD,GAFM,MAEA,IAAIZ,gBAAJ,EAAsB;AAC3B,WAAO,SAAP;AACD;;AAED,SAAO,WAAP;AACD,CA/BD;;AAiCA,IAAMiB,cAAc,GAAG,SAAjBA,cAAiB,CAACC,QAAD,EAAWnB,GAAX,EAAiC;AAAA,MAAjBD,OAAiB,uEAAP,EAAO;;AACtD,MAAIC,GAAG,CAACoB,IAAJ,KAAa,UAAjB,EAA6B;AAC3B,WAAOvB,sBAAsB,CAACsB,QAAD,EAAWpB,OAAX,EAAoBC,GAApB,CAA7B;AACD;AACF,CAJD;;AAMA,IAAMgB,aAAa,GAAG,SAAhBA,aAAgB,CAACZ,IAAD,EAAOL,OAAP,EAAmB;AACvC,MAAIc,cAAc,GAAG,CAArB;AACA,MAAIC,gBAAgB,GAAG,CAAvB;AAEAV,EAAAA,IAAI,CAACiB,OAAL,CAAa,UAACC,GAAD,EAAS;AACpB,QAAMC,MAAM,GAAGxB,OAAO,CAACuB,GAAG,CAACE,EAAL,CAAtB;;AAEA,QAAID,MAAJ,EAAY;AACVD,MAAAA,GAAG,CAACG,MAAJ,CAAWJ,OAAX,CAAmB,UAACK,CAAD,EAAIC,CAAJ,EAAU;AAC3B,YAAIJ,MAAM,CAACI,CAAD,CAAN,IAAaJ,MAAM,CAACI,CAAD,CAAN,KAAcD,CAA/B,EAAkC;AAChCb,UAAAA,cAAc,IAAI,CAAlB;AACD,SAFD,MAEO,IAAIU,MAAM,CAACI,CAAD,CAAN,IAAaJ,MAAM,CAACI,CAAD,CAAN,KAAcD,CAA/B,EAAkC;AACvCZ,UAAAA,gBAAgB,IAAI,CAApB;AACD;AACF,OAND;AAOD;AACF,GAZD;AAcA,SAAO;AAAED,IAAAA,cAAc,EAAdA,cAAF;AAAkBC,IAAAA,gBAAgB,EAAhBA;AAAlB,GAAP;AACD,CAnBD;;AAqBA,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACb,IAAD,EAAOL,OAAP,EAAmB;AAC1C,MAAIc,cAAc,GAAG,CAArB;AAEAT,EAAAA,IAAI,CAACiB,OAAL,CAAa,UAACC,GAAD,EAAS;AACpB,QAAI,yBAAQA,GAAG,CAACG,MAAZ,EAAoB1B,OAAO,CAACuB,GAAG,CAACE,EAAL,CAA3B,CAAJ,EAA0C;AACxCX,MAAAA,cAAc,IAAI,CAAlB;AACD;AACF,GAJD;AAMA,SAAOA,cAAP;AACD,CAVD;;AAYA,IAAMD,eAAe,GAAG,SAAlBA,eAAkB,CAACO,QAAD,EAAc;AACpC,MAAMd,YAAY,GAAGc,QAAQ,CAACb,UAAT,KAAwB,UAA7C;AACA,MAAMsB,aAAa,GAAGvB,YAAY,GAAGc,QAAQ,CAACU,MAAT,GAAkB,CAArB,GAAyB,CAA3D;AACA,SAAO,CAACV,QAAQ,CAACf,IAAT,CAAcK,MAAd,IAAwB,CAAzB,IAA8BmB,aAArC;AACD,CAJD;;AAMA,IAAMjB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACQ,QAAD,EAAc;AAC3C,MAAIW,uBAAuB,GAAG,CAA9B;AAEAX,EAAAA,QAAQ,CAACf,IAAT,CAAciB,OAAd,CAAsB,UAACC,GAAD,EAAS;AAC7BA,IAAAA,GAAG,CAACG,MAAJ,CAAWJ,OAAX,CAAmB,UAACU,KAAD,EAAW;AAC5B,UAAIA,KAAJ,EAAW;AACTD,QAAAA,uBAAuB,IAAI,CAA3B;AACD;AACF,KAJD;AAKD,GAND;AAQA,SAAOA,uBAAP;AACD,CAZD;;AAcA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAACb,QAAD,EAAWpB,OAAX,EAAuB;AAC7C,MAAMM,YAAY,GAAGc,QAAQ,CAACb,UAAT,KAAwB,UAA7C;;AAEA,MAAID,YAAJ,EAAkB;AAChB,yBAA6CW,aAAa,CAACG,QAAQ,CAACf,IAAV,EAAgBL,OAAhB,CAA1D;AAAA,QAAQc,cAAR,kBAAQA,cAAR;AAAA,QAAwBC,gBAAxB,kBAAwBA,gBAAxB;;AACA,QAAMmB,YAAY,GAAGtB,sBAAsB,CAACQ,QAAD,CAA3C;AAEA,QAAMe,KAAK,GAAGD,YAAY,KAAK,CAAjB,GAAqB,CAArB,GAAyBA,YAAvC;;AAEA,QAAIpB,cAAc,GAAGC,gBAAjB,GAAoCmB,YAAxC,EAAsD;AACpD,UAAME,YAAY,GAAGtB,cAAc,GAAGC,gBAAjB,GAAoCmB,YAAzD;AACA,UAAMG,KAAK,GAAGC,UAAU,CAAC,CAAC,CAACxB,cAAc,GAAGsB,YAAlB,IAAkCD,KAAnC,EAA0CI,OAA1C,CAAkD,CAAlD,CAAD,CAAxB;AAEA,aAAOF,KAAK,GAAG,CAAR,GAAY,CAAZ,GAAgBA,KAAvB;AACD,KALD,MAKO;AACL,aAAOC,UAAU,CAAC,CAACxB,cAAc,GAAGqB,KAAlB,EAAyBI,OAAzB,CAAiC,CAAjC,CAAD,CAAjB;AACD;AACF,GAdD,MAcO;AACL,QAAMzB,eAAc,GAAGI,gBAAgB,CAACE,QAAQ,CAACf,IAAV,EAAgBL,OAAhB,CAAvC;;AACA,QAAMkC,aAAY,GAAGrB,eAAe,CAACO,QAAD,CAAf,KAA8B,CAA9B,GAAkC,CAAlC,GAAsCP,eAAe,CAACO,QAAD,CAA1E;;AAEA,WAAOkB,UAAU,CAAC,CAACxB,eAAc,GAAGoB,aAAlB,EAAgCK,OAAhC,CAAwC,CAAxC,CAAD,CAAjB;AACD;AACF,CAvBD;;AAyBA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACpB,QAAD,EAAWnB,GAAX,EAAiC;AAAA,MAAjBD,OAAiB,uEAAP,EAAO;AACvD,MAAMyC,WAAW,GAAGtB,cAAc,CAACC,QAAD,EAAWnB,GAAX,EAAgBD,OAAhB,CAAlC;;AACA,MAAME,gBAAgB,GAAGC,gCAAeC,OAAf,CAAuBgB,QAAvB,EAAiCnB,GAAjC,CAAzB;;AAEA,SAAOwC,WAAW,KAAK,SAAhB,GACH,CADG,GAEHA,WAAW,KAAK,SAAhB,IAA6BvC,gBAA7B,GACA+B,eAAe,CAACb,QAAD,EAAWpB,OAAX,CADf,GAEA,CAJJ;AAKD,CATD;;AAWO,IAAM0C,OAAO,GAAG,SAAVA,OAAU,CAACtB,QAAD,EAAWuB,OAAX,EAAoB1C,GAApB,EAA4B;AACjD,SAAO,IAAI2C,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI5C,GAAG,CAACoB,IAAJ,KAAa,UAAjB,EAA6B;AAC3BwB,MAAAA,OAAO,CAAC;AAAER,QAAAA,KAAK,EAAES,SAAT;AAAoBC,QAAAA,SAAS,EAAED;AAA/B,OAAD,CAAP;AACD,KAFD,MAEO;AACL,UAAI,CAACH,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChCE,QAAAA,OAAO,CAAC;AAAER,UAAAA,KAAK,EAAE,CAAT;AAAYW,UAAAA,KAAK,EAAE;AAAnB,SAAD,CAAP;AACD;;AAED,UAAMC,GAAG,GAAG;AACVZ,QAAAA,KAAK,EAAEG,eAAe,CAACpB,QAAD,EAAWnB,GAAX,EAAgB0C,OAAO,CAAC3C,OAAxB;AADZ,OAAZ;AAIA6C,MAAAA,OAAO,CAACI,GAAD,CAAP;AACD;AACF,GAdM,CAAP;AAeD,CAhBM;;;;AAkBA,SAASC,kBAAT,GAAwC;AAAA,MAAZnD,KAAY,uEAAJ,EAAI;AAC7C,SAAO,IAAI6C,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9BA,IAAAA,OAAO,iCACFM,oBADE,GAEFpD,KAFE,EAAP;AAID,GALM,CAAP;AAMD;;AAEM,IAAMqD,SAAS,GAAG,SAAZA,SAAY,CAAChC,QAAD;AAAA,yCAAoB+B,oBAApB,GAAiC/B,QAAjC;AAAA,CAAlB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASrB,KAAT,CAAeqB,QAAf,EAAyBuB,OAAzB,EAAkC1C,GAAlC,EAAuCoD,aAAvC,EAAsD;AAC3D,SAAO,IAAIT,OAAJ;AAAA,6FAAY,iBAAOC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACXS,cAAAA,kBADW,GACU,2BAAUF,SAAS,CAAChC,QAAD,CAAnB,CADV;;AAIjB,kBAAI,CAAC,CAACuB,OAAD,IAAY,yBAAQA,OAAR,CAAb,KAAkC1C,GAAG,CAACoB,IAAJ,KAAa,UAAnD,EAA+D;AAC7DoB,gBAAAA,WAAW,GAAG,YAAd;AACAJ,gBAAAA,KAAK,GAAG,IAAR;AACD,eAHD,MAGO;AACLI,gBAAAA,WAAW,GAAGtB,cAAc,CAACmC,kBAAD,EAAqBrD,GAArB,EAA0B0C,OAAO,IAAIA,OAAO,CAAC3C,OAA7C,CAA5B;AACAqC,gBAAAA,KAAK,aAAMG,eAAe,CAACc,kBAAD,EAAqBrD,GAArB,EAA0B0C,OAAO,IAAIA,OAAO,CAAC3C,OAA7C,CAAf,GAAuE,GAA7E,MAAL;AACD;;AAEKuD,cAAAA,eAZW,GAYO,EAZP;AAaXC,cAAAA,WAbW,GAaG;AAClBnB,gBAAAA,KAAK,EAALA,KADkB;AAElBI,gBAAAA,WAAW,EAAXA;AAFkB,eAbH;AAkBXgB,cAAAA,eAlBW,GAkBO,kCAAYH,kBAAZ,EAAgCX,OAAhC,EAAyC1C,GAAzC,CAlBP;;AAAA,kBAoBZwD,eApBY;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAqBiB,yCAAmBH,kBAAkB,CAACjD,IAAtC,EAA4CsC,OAA5C,EAAqDU,aAArD,EAAoE,IAApE,CArBjB;;AAAA;AAqBfC,cAAAA,kBAAkB,CAACjD,IArBJ;;AAAA;AAwBjBiD,cAAAA,kBAAkB,CAACjD,IAAnB,CAAwBiB,OAAxB,CAAgC,UAACC,GAAD,EAAS;AACvCgC,gBAAAA,eAAe,CAAChC,GAAG,CAACE,EAAL,CAAf,GAA0BF,GAAG,CAACG,MAA9B;;AAEA,oBAAIzB,GAAG,CAACoB,IAAJ,KAAa,UAAjB,EAA6B;AAC3B,yBAAOE,GAAG,CAACG,MAAX;AACD;AACF,eAND;AAQMgC,cAAAA,EAhCW,GAiCfzD,GAAG,CAACoB,IAAJ,KAAa,UAAb,IAA2BiC,kBAAkB,CAACK,eAA9C,GACI,yCAA0BH,WAAW,CAACf,WAAtC,EAAmDa,kBAAkB,CAACM,QAAtE,CADJ,GAEIhB,OAAO,CAACC,OAAR,CAAgBC,SAAhB,CAnCW;AAqCjBY,cAAAA,EAAE,CAACG,IAAH,CAAQ,UAACD,QAAD,EAAc;AACpB,oBAAQE,aAAR,GAAkGR,kBAAlG,CAAQQ,aAAR;AAAA,oBAAuBH,eAAvB,GAAkGL,kBAAlG,CAAuBK,eAAvB;AAAA,oBAAwCI,aAAxC,GAAkGT,kBAAlG,CAAwCS,aAAxC;AAAA,oBAAuDC,MAAvD,GAAkGV,kBAAlG,CAAuDU,MAAvD;AAAA,oBAA+DP,eAA/D,GAAkGH,kBAAlG,CAA+DG,eAA/D;AAAA,oBAAmFQ,UAAnF,6CAAkGX,kBAAlG;;AACA,oBAAML,GAAG,mCACJgB,UADI;AAEPH,kBAAAA,aAAa,EAAbA,aAFO;AAGPI,kBAAAA,aAAa,EAAEP,eAHR;AAIPK,kBAAAA,MAAM,EAAED,aAAa,GAAGC,MAAH,GAAY,IAJ1B;AAKPG,kBAAAA,QAAQ,EAAE,CAACV,eALJ;AAMPG,kBAAAA,QAAQ,EAARA,QANO;AAOPQ,kBAAAA,QAAQ,EAAEnE,GAAG,CAACoB,IAAJ,KAAa,QAPhB;AAQPgD,kBAAAA,IAAI,EAAEpE,GAAG,CAACoB,IAAJ,KAAa;AARZ,kBAAT;;AAWA,oBAAIpB,GAAG,CAACqE,IAAJ,KAAa,YAAb,KAA8BrE,GAAG,CAACoB,IAAJ,KAAa,MAAb,IAAuBpB,GAAG,CAACoB,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjF4B,kBAAAA,GAAG,CAACsB,mBAAJ,GAA0BjB,kBAAkB,CAACkB,0BAAnB,GACtBlB,kBAAkB,CAACiB,mBADG,GAEtB,IAFJ;AAGAtB,kBAAAA,GAAG,CAACwB,SAAJ,GAAgBnB,kBAAkB,CAACoB,gBAAnB,GAAsCpB,kBAAkB,CAACmB,SAAzD,GAAqE,IAArF;AACD,iBALD,MAKO;AACLxB,kBAAAA,GAAG,CAACwB,SAAJ,GAAgB,IAAhB;AACAxB,kBAAAA,GAAG,CAACsB,mBAAJ,GAA0B,IAA1B;AACD;;AAED,oBAAItE,GAAG,CAACoB,IAAJ,KAAa,UAAjB,EAA6B;AAC3Bb,kBAAAA,MAAM,CAACmE,MAAP,CAAc1B,GAAd,EAAmB;AACjBM,oBAAAA,eAAe,EAAfA,eADiB;AAEjBd,oBAAAA,WAAW,EAAEe;AAFI,mBAAnB;AAID;;AAED3D,gBAAAA,GAAG,CAAC,OAAD,EAAUoD,GAAV,CAAH;AACAJ,gBAAAA,OAAO,CAACI,GAAD,CAAP;AACD,eAhCD;;AArCiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAZ;;AAAA;AAAA;AAAA;AAAA,MAAP;AAuED;;AAEM,IAAM2B,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACxD,QAAD,EAAWnB,GAAX,EAAmB;AAC7D,SAAO,IAAI2C,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI5C,GAAG,CAACoB,IAAJ,KAAa,UAAb,IAA2BpB,GAAG,CAACqE,IAAJ,KAAa,YAA5C,EAA0D;AACxD,UAAQjE,IAAR,GAAiBe,QAAjB,CAAQf,IAAR;AACA,UAAML,OAAO,GAAG,EAAhB;AAEAK,MAAAA,IAAI,CAACiB,OAAL,CAAa,UAACuD,CAAD,EAAO;AAClB7E,QAAAA,OAAO,CAAC6E,CAAC,CAACpD,EAAH,CAAP,GAAgBoD,CAAC,CAACnD,MAAlB;AACD,OAFD;AAIAmB,MAAAA,OAAO,CAAC;AACN7C,QAAAA,OAAO,EAAPA,OADM;AAENyB,QAAAA,EAAE,EAAE;AAFE,OAAD,CAAP;AAID,KAZD,MAYO;AACLoB,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;AACF,GAhBM,CAAP;AAiBD,CAlBM,C,CAoBP;;;;;AACA,IAAMiC,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaC,UAAb,CAAwB,UAAxB,EAAoC,EAApC,CAAV;AAAA,CAArB,C,CAEA;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACF,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaG,OAAb,CAAqB,oCAArB,EAA2D,EAA3D,CAAV;AAAA,CAAnB;;AAEO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5BpF,KAA4B,uEAApB,EAAoB;AAAA,MAAhBqF,MAAgB,uEAAP,EAAO;AACnD,MAAQ/E,IAAR,GAAsCN,KAAtC,CAAQM,IAAR;AAAA,MAAcE,UAAd,GAAsCR,KAAtC,CAAcQ,UAAd;AAAA,MAA0B8E,OAA1B,GAAsCtF,KAAtC,CAA0BsF,OAA1B;AACA,MACEC,YADF,GAOIF,MAPJ,CACEE,YADF;AAAA,MAEEC,YAFF,GAOIH,MAPJ,CAEEG,YAFF;AAAA,MAGEC,yBAHF,GAOIJ,MAPJ,CAGEI,yBAHF;AAAA,MAIEC,UAJF,GAOIL,MAPJ,CAIEK,UAJF;AAAA,MAKEC,gBALF,GAOIN,MAPJ,CAKEM,gBALF;AAAA,MAMEC,2BANF,GAOIP,MAPJ,CAMEO,2BANF;AAQA,MAAMC,UAAU,GAAG,EAAnB;AACA,MAAMC,aAAa,GAAG,EAAtB;AACA,MAAMC,MAAM,GAAG,EAAf;AAEA,GAAC,qBAAD,EAAwB,QAAxB,EAAkC,WAAlC,EAA+CxE,OAA/C,CAAuD,UAACyE,KAAD,EAAW;AAAA;;AAChE,QAAI,iBAAAX,MAAM,CAACW,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACf,UAAU,CAAClF,KAAK,CAACgG,KAAD,CAAN,CAA1C,EAA0D;AACxDD,MAAAA,MAAM,CAACC,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;;AAMA,MAAI1F,IAAI,CAACK,MAAL,GAAc4E,YAAlB,EAAgC;AAC9BQ,IAAAA,MAAM,CAACG,aAAP,sCAAmDX,YAAnD;AACD,GAFD,MAEO,IAAIjF,IAAI,CAACK,MAAL,GAAc6E,YAAlB,EAAgC;AACrCO,IAAAA,MAAM,CAACG,aAAP,0BAAuCV,YAAvC;AACD;;AAED,GAAClF,IAAI,IAAI,EAAT,EAAaiB,OAAb,CAAqB,UAACC,GAAD,EAAM2E,KAAN,EAAgB;AACnC,QAAQzE,EAAR,GAAmCF,GAAnC,CAAQE,EAAR;AAAA,sBAAmCF,GAAnC,CAAYG,MAAZ;AAAA,QAAYA,MAAZ,4BAAqB,EAArB;AAAA,QAAyByE,KAAzB,GAAmC5E,GAAnC,CAAyB4E,KAAzB;AACAP,IAAAA,UAAU,CAACnE,EAAD,CAAV,GAAiB,EAAjB;;AAEA,QAAI+D,yBAAyB,IAAIV,YAAY,CAACqB,KAAD,CAAZ,CAAoBzF,MAApB,GAA6B8E,yBAA9D,EAAyF;AACvFI,MAAAA,UAAU,CAACnE,EAAD,CAAV,+CAAsD+D,yBAAtD;AACD;;AAED,QAAI,CAACP,UAAU,CAACkB,KAAD,CAAf,EAAwB;AACtBP,MAAAA,UAAU,CAACnE,EAAD,CAAV,IAAkB,+BAAlB;AACD,KAFD,MAEO;AACL;AACA,UAAM2E,eAAe,GAAG/F,IAAI,CAACgG,KAAL,CAAW,CAAX,EAAcH,KAAd,EAAqBI,IAArB,CAA0B,UAACzB,CAAD;AAAA,eAAOI,UAAU,CAACJ,CAAC,CAACsB,KAAH,CAAV,KAAwBlB,UAAU,CAACkB,KAAD,CAAzC;AAAA,OAA1B,CAAxB;;AAEA,UAAIC,eAAJ,EAAqB;AACnBR,QAAAA,UAAU,CAACnE,EAAD,CAAV,IAAkB,4BAAlB;AACD;AACF;;AAED,QAAM8E,kBAAkB,GAAG7E,MAAM,CAAC4E,IAAP,CAAY,UAACtE,KAAD;AAAA,aAAW,CAAC,CAACA,KAAb;AAAA,KAAZ,CAA3B;;AAEA,QAAI,CAACuE,kBAAL,EAAyB;AACvBX,MAAAA,UAAU,CAACnE,EAAD,CAAV,IAAkB,8BAAlB;AACD;AACF,GAxBD;;AA0BA,MAAIgE,UAAU,IAAIJ,OAAO,CAAC3E,MAAR,GAAiB,CAAjB,GAAqB+E,UAAvC,EAAmD;AACjDK,IAAAA,MAAM,CAACU,kBAAP,qCAAuDf,UAAvD;AACD;;AAED,MAAIE,2BAA2B,IAAIN,OAAO,CAAC,CAAD,CAAP,CAAW3E,MAAX,GAAoBiF,2BAAvD,EAAoF;AAClFE,IAAAA,aAAa,CAAC,CAAD,CAAb,8CAAuDF,2BAAvD;AACD;;AAED,MAAMc,cAAc,GAAG,CAACpB,OAAO,IAAI,EAAZ,EAAgBqB,GAAhB,CAAoB,UAACC,OAAD;AAAA,WAAa1B,UAAU,CAAC0B,OAAD,CAAvB;AAAA,GAApB,CAAvB;AACAF,EAAAA,cAAc,CAACG,KAAf,GA7DmD,CA6D3B;;AAExBH,EAAAA,cAAc,CAACnF,OAAf,CAAuB,UAACqF,OAAD,EAAUT,KAAV,EAAoB;AACzC,QAAMW,WAAW,GAAGX,KAAK,GAAG,CAA5B,CADyC,CACV;;AAC/BL,IAAAA,aAAa,CAACgB,WAAD,CAAb,GAA6B,EAA7B;;AAEA,QAAInB,gBAAgB,IAAIZ,YAAY,CAAC6B,OAAD,CAAZ,CAAsBjG,MAAtB,GAA+BgF,gBAAvD,EAAyE;AACvEG,MAAAA,aAAa,CAACgB,WAAD,CAAb,+CAAkEnB,gBAAlE;AACD;;AAED,QAAI,CAACiB,OAAL,EAAc;AACZd,MAAAA,aAAa,CAACgB,WAAD,CAAb,IAA8B,8BAA9B;AACD,KAFD,MAEO;AACL;AACA,UAAMT,eAAe,GAAGK,cAAc,CAACJ,KAAf,CAAqB,CAArB,EAAwBH,KAAxB,EAA+BI,IAA/B,CAAoC,UAACQ,IAAD;AAAA,eAAUA,IAAI,KAAKH,OAAnB;AAAA,OAApC,CAAxB;;AAEA,UAAIP,eAAJ,EAAqB;AACnBP,QAAAA,aAAa,CAACK,KAAK,GAAG,CAAT,CAAb,IAA4B,2BAA5B;AACD;AACF;AACF,GAlBD;AAoBA,MAAMa,YAAY,GAAGvG,MAAM,CAACkB,MAAP,CAAckE,UAAd,EAA0BU,IAA1B,CAA+B,UAACU,KAAD;AAAA,WAAW,CAACA,KAAK,IAAI,EAAV,EAActG,MAAzB;AAAA,GAA/B,CAArB;;AAEA,MAAIqG,YAAJ,EAAkB;AAChBjB,IAAAA,MAAM,CAACF,UAAP,GAAoBA,UAApB;AAEA,QAAMqB,eAAe,GAAGzG,MAAM,CAACkB,MAAP,CAAckE,UAAd,EAA0BU,IAA1B,CAA+B,UAACU,KAAD;AAAA,aACrD,CAACA,KAAK,IAAI,EAAV,EAAcE,QAAd,CAAuB,8BAAvB,CADqD;AAAA,KAA/B,CAAxB;;AAIA,QAAID,eAAJ,EAAqB;AACnBnB,MAAAA,MAAM,CAACqB,oBAAP,GACE5G,UAAU,KAAK,OAAf,GACI,2DADJ,GAEI,sEAHN;AAID;AACF;;AAED,MAAM6G,eAAe,GAAG5G,MAAM,CAACkB,MAAP,CAAcmE,aAAd,EAA6BS,IAA7B,CAAkC,UAACU,KAAD;AAAA,WAAW,CAACA,KAAK,IAAI,EAAV,EAActG,MAAzB;AAAA,GAAlC,CAAxB;;AAEA,MAAI0G,eAAJ,EAAqB;AACnBtB,IAAAA,MAAM,CAACD,aAAP,GAAuBA,aAAvB;AACD;;AAED,SAAOC,MAAP;AACD,CA3GM","sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env = {}) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const rows = model.rows;\n const checkboxMode = model.choiceMode === 'checkbox';\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = checkboxMode ? getTotalCorrectAnswers(model) : getTotalCorrect(model);\n let correctAnswers;\n let incorrectAnswers = 0;\n\n if (checkboxMode) {\n const checkboxes = getCheckboxes(rows, answers);\n\n correctAnswers = checkboxes.correctAnswers;\n incorrectAnswers = checkboxes.incorrectAnswers;\n } else {\n correctAnswers = getCorrectRadios(rows, answers);\n }\n\n if (totalCorrectAnswers === correctAnswers && !incorrectAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCheckboxes = (rows, answers) => {\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n\n rows.forEach((row) => {\n const answer = answers[row.id];\n\n if (answer) {\n row.values.forEach((v, i) => {\n if (answer[i] && answer[i] === v) {\n correctAnswers += 1;\n } else if (answer[i] && answer[i] !== v) {\n incorrectAnswers += 1;\n }\n });\n }\n });\n\n return { correctAnswers, incorrectAnswers };\n};\n\nconst getCorrectRadios = (rows, answers) => {\n let correctAnswers = 0;\n\n rows.forEach((row) => {\n if (isEqual(row.values, answers[row.id])) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n const matchingTable = checkboxMode ? question.layout - 1 : 1;\n return (question.rows.length || 0) * matchingTable;\n};\n\nconst getTotalCorrectAnswers = (question) => {\n let noOfTotalCorrectAnswers = 0;\n\n question.rows.forEach((row) => {\n row.values.forEach((value) => {\n if (value) {\n noOfTotalCorrectAnswers += 1;\n }\n });\n });\n\n return noOfTotalCorrectAnswers;\n};\n\nconst getPartialScore = (question, answers) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n\n if (checkboxMode) {\n const { correctAnswers, incorrectAnswers } = getCheckboxes(question.rows, answers);\n const totalCorrect = getTotalCorrectAnswers(question);\n\n const total = totalCorrect === 0 ? 1 : totalCorrect;\n\n if (correctAnswers + incorrectAnswers > totalCorrect) {\n const extraAnswers = correctAnswers + incorrectAnswers - totalCorrect;\n const score = parseFloat(((correctAnswers - extraAnswers) / total).toFixed(2));\n\n return score < 0 ? 0 : score;\n } else {\n return parseFloat((correctAnswers / total).toFixed(2));\n }\n } else {\n const correctAnswers = getCorrectRadios(question.rows, answers);\n const totalCorrect = getTotalCorrect(question) === 0 ? 1 : getTotalCorrect(question);\n\n return parseFloat((correctAnswers / totalCorrect).toFixed(2));\n }\n};\n\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n const isPartialScoring = partialScoring.enabled(question, env);\n\n return correctness === 'correct'\n ? 1\n : correctness === 'partial' && isPartialScoring\n ? getPartialScore(question, answers)\n : 0;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const out = {\n score: getOutComeScore(question, env, session.answers),\n };\n\n resolve(out);\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = cloneDeep(normalize(question));\n let correctness, score;\n\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(normalizedQuestion, env, session && session.answers);\n score = `${getOutComeScore(normalizedQuestion, env, session && session.answers) * 100}%`;\n }\n\n const correctResponse = {};\n const correctInfo = {\n score,\n correctness,\n };\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n normalizedQuestion.rows = await getShuffledChoices(normalizedQuestion.rows, session, updateSession, 'id');\n }\n\n normalizedQuestion.rows.forEach((row) => {\n correctResponse[row.id] = row.values;\n\n if (env.mode !== 'evaluate') {\n delete row.values;\n }\n });\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctInfo.correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const { extraCSSRules, feedbackEnabled, promptEnabled, prompt, lockChoiceOrder, ...essentials } = normalizedQuestion;\n const out = {\n ...essentials,\n extraCSSRules,\n allowFeedback: feedbackEnabled,\n prompt: promptEnabled ? prompt : null,\n shuffled: !lockChoiceOrder,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctResponse,\n correctness: correctInfo,\n });\n }\n\n log('out: ', out);\n resolve(out);\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { rows } = question;\n const answers = {};\n\n rows.forEach((r) => {\n answers[r.id] = r.values;\n });\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { rows, choiceMode, headers } = model;\n const {\n minQuestions,\n maxQuestions,\n maxLengthQuestionsHeading,\n maxAnswers,\n maxLengthAnswers,\n maxLengthFirstColumnHeading,\n } = config;\n const rowsErrors = {};\n const columnsErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n if (rows.length < minQuestions) {\n errors.noOfRowsError = `There should be at least ${minQuestions} question rows.`;\n } else if (rows.length > maxQuestions) {\n errors.noOfRowsError = `No more than ${maxQuestions} question rows should be defined.`;\n }\n\n (rows || []).forEach((row, index) => {\n const { id, values = [], title } = row;\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && getInnerText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Content length should be maximum ${maxLengthQuestionsHeading} characters. `;\n }\n\n if (!getContent(title)) {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n // check for identical content with the previous answers\n const identicalAnswer = rows.slice(0, index).some((r) => getContent(r.title) === getContent(title));\n\n if (identicalAnswer) {\n rowsErrors[id] += 'Content should be unique. ';\n }\n }\n\n const hasCorrectResponse = values.some((value) => !!value);\n\n if (!hasCorrectResponse) {\n rowsErrors[id] += 'No correct response defined.';\n }\n });\n\n if (maxAnswers && headers.length - 1 > maxAnswers) {\n errors.columnsLengthError = `There should be maximum ${maxAnswers} answers.`;\n }\n\n if (maxLengthFirstColumnHeading && headers[0].length > maxLengthFirstColumnHeading) {\n columnsErrors[0] = `Content length should be maximum ${maxLengthFirstColumnHeading} characters.`;\n }\n\n const headersContent = (headers || []).map((heading) => getContent(heading));\n headersContent.shift(); // remove first column since it does not require validation\n\n headersContent.forEach((heading, index) => {\n const headerIndex = index + 1; // we need to add 1 because we removed first header from validation\n columnsErrors[headerIndex] = '';\n\n if (maxLengthAnswers && getInnerText(heading).length > maxLengthAnswers) {\n columnsErrors[headerIndex] += `Content length should be maximum ${maxLengthAnswers} characters. `;\n }\n\n if (!heading) {\n columnsErrors[headerIndex] += 'Content should not be empty.';\n } else {\n // check for identical content with the previous headers\n const identicalAnswer = headersContent.slice(0, index).some((head) => head === heading);\n\n if (identicalAnswer) {\n columnsErrors[index + 1] += 'Content should be unique.';\n }\n }\n });\n\n const hasRowErrors = Object.values(rowsErrors).some((error) => (error || '').length);\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n\n const noCorrectAnswer = Object.values(rowsErrors).some((error) =>\n (error || '').includes('No correct response defined.'),\n );\n\n if (noCorrectAnswer) {\n errors.correctResponseError =\n choiceMode === 'radio'\n ? 'There should be a correct response defined for every row.'\n : 'There should be at least one correct response defined for every row.';\n }\n }\n\n const hasColumnErrors = Object.values(columnsErrors).some((error) => (error || '').length);\n\n if (hasColumnErrors) {\n errors.columnsErrors = columnsErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","getResponseCorrectness","model","answers","env","isPartialScoring","partialScoring","enabled","rows","checkboxMode","choiceMode","Object","keys","length","totalCorrectAnswers","getTotalCorrectAnswers","getTotalCorrect","correctAnswers","incorrectAnswers","checkboxes","getCheckboxes","getCorrectRadios","getCorrectness","question","mode","forEach","row","answer","id","values","v","i","matchingTable","layout","noOfTotalCorrectAnswers","value","getPartialScore","totalCorrect","total","extraAnswers","score","parseFloat","toFixed","getOutComeScore","correctness","outcome","session","Promise","resolve","undefined","completed","empty","out","createDefaultModel","defaults","normalize","updateSession","normalizedQuestion","correctResponse","correctInfo","lockChoiceOrder","fb","feedbackEnabled","feedback","then","extraCSSRules","promptEnabled","prompt","essentials","allowFeedback","shuffled","disabled","view","role","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","assign","createCorrectResponseSession","r","getInnerText","html","replaceAll","getContent","replace","validate","config","headers","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","field","required","noOfRowsError","index","title","identicalAnswer","slice","some","hasCorrectResponse","columnsLengthError","headersContent","map","heading","shift","headerIndex","head","hasRowErrors","error","noCorrectAnswer","includes","correctResponseError","hasColumnErrors"],"mappings":"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","sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env = {}) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const rows = model.rows;\n const checkboxMode = model.choiceMode === 'checkbox';\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = checkboxMode ? getTotalCorrectAnswers(model) : getTotalCorrect(model);\n let correctAnswers;\n let incorrectAnswers = 0;\n\n if (checkboxMode) {\n const checkboxes = getCheckboxes(rows, answers);\n\n correctAnswers = checkboxes.correctAnswers;\n incorrectAnswers = checkboxes.incorrectAnswers;\n } else {\n correctAnswers = getCorrectRadios(rows, answers);\n }\n\n if (totalCorrectAnswers === correctAnswers && !incorrectAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCheckboxes = (rows, answers) => {\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n\n rows.forEach((row) => {\n const answer = answers[row.id];\n\n if (answer) {\n row.values.forEach((v, i) => {\n if (answer[i] && answer[i] === v) {\n correctAnswers += 1;\n } else if (answer[i] && answer[i] !== v) {\n incorrectAnswers += 1;\n }\n });\n }\n });\n\n return { correctAnswers, incorrectAnswers };\n};\n\nconst getCorrectRadios = (rows, answers) => {\n let correctAnswers = 0;\n\n rows.forEach((row) => {\n if (isEqual(row.values, answers[row.id])) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n const matchingTable = checkboxMode ? question.layout - 1 : 1;\n return (question.rows.length || 0) * matchingTable;\n};\n\nconst getTotalCorrectAnswers = (question) => {\n let noOfTotalCorrectAnswers = 0;\n\n question.rows.forEach((row) => {\n row.values.forEach((value) => {\n if (value) {\n noOfTotalCorrectAnswers += 1;\n }\n });\n });\n\n return noOfTotalCorrectAnswers;\n};\n\nconst getPartialScore = (question, answers) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n\n if (checkboxMode) {\n const { correctAnswers, incorrectAnswers } = getCheckboxes(question.rows, answers);\n const totalCorrect = getTotalCorrectAnswers(question);\n\n const total = totalCorrect === 0 ? 1 : totalCorrect;\n\n if (correctAnswers + incorrectAnswers > totalCorrect) {\n const extraAnswers = correctAnswers + incorrectAnswers - totalCorrect;\n const score = parseFloat(((correctAnswers - extraAnswers) / total).toFixed(2));\n\n return score < 0 ? 0 : score;\n } else {\n return parseFloat((correctAnswers / total).toFixed(2));\n }\n } else {\n const correctAnswers = getCorrectRadios(question.rows, answers);\n const totalCorrect = getTotalCorrect(question) === 0 ? 1 : getTotalCorrect(question);\n\n return parseFloat((correctAnswers / totalCorrect).toFixed(2));\n }\n};\n\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n const isPartialScoring = partialScoring.enabled(question, env);\n\n return correctness === 'correct'\n ? 1\n : correctness === 'partial' && isPartialScoring\n ? getPartialScore(question, answers)\n : 0;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const out = {\n score: getOutComeScore(question, env, session.answers),\n };\n\n resolve(out);\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = cloneDeep(normalize(question));\n let correctness, score;\n\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(normalizedQuestion, env, session && session.answers);\n score = `${getOutComeScore(normalizedQuestion, env, session && session.answers) * 100}%`;\n }\n\n const correctResponse = {};\n const correctInfo = {\n score,\n correctness,\n };\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n normalizedQuestion.rows = await getShuffledChoices(normalizedQuestion.rows, session, updateSession, 'id');\n }\n\n normalizedQuestion.rows.forEach((row) => {\n correctResponse[row.id] = row.values;\n\n if (env.mode !== 'evaluate') {\n delete row.values;\n }\n });\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctInfo.correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const { extraCSSRules, feedbackEnabled, promptEnabled, prompt, lockChoiceOrder, ...essentials } =\n normalizedQuestion;\n const out = {\n ...essentials,\n extraCSSRules,\n allowFeedback: feedbackEnabled,\n prompt: promptEnabled ? prompt : null,\n shuffled: !lockChoiceOrder,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctResponse,\n correctness: correctInfo,\n });\n }\n\n log('out: ', out);\n resolve(out);\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { rows } = question;\n const answers = {};\n\n rows.forEach((r) => {\n answers[r.id] = r.values;\n });\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { rows, choiceMode, headers } = model;\n const {\n minQuestions,\n maxQuestions,\n maxLengthQuestionsHeading,\n maxAnswers,\n maxLengthAnswers,\n maxLengthFirstColumnHeading,\n } = config;\n const rowsErrors = {};\n const columnsErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n if (rows.length < minQuestions) {\n errors.noOfRowsError = `There should be at least ${minQuestions} question rows.`;\n } else if (rows.length > maxQuestions) {\n errors.noOfRowsError = `No more than ${maxQuestions} question rows should be defined.`;\n }\n\n (rows || []).forEach((row, index) => {\n const { id, values = [], title } = row;\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && getInnerText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Content length should be maximum ${maxLengthQuestionsHeading} characters. `;\n }\n\n if (!getContent(title)) {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n // check for identical content with the previous answers\n const identicalAnswer = rows.slice(0, index).some((r) => getContent(r.title) === getContent(title));\n\n if (identicalAnswer) {\n rowsErrors[id] += 'Content should be unique. ';\n }\n }\n\n const hasCorrectResponse = values.some((value) => !!value);\n\n if (!hasCorrectResponse) {\n rowsErrors[id] += 'No correct response defined.';\n }\n });\n\n if (maxAnswers && headers.length - 1 > maxAnswers) {\n errors.columnsLengthError = `There should be maximum ${maxAnswers} answers.`;\n }\n\n if (maxLengthFirstColumnHeading && headers[0].length > maxLengthFirstColumnHeading) {\n columnsErrors[0] = `Content length should be maximum ${maxLengthFirstColumnHeading} characters.`;\n }\n\n const headersContent = (headers || []).map((heading) => getContent(heading));\n headersContent.shift(); // remove first column since it does not require validation\n\n headersContent.forEach((heading, index) => {\n const headerIndex = index + 1; // we need to add 1 because we removed first header from validation\n columnsErrors[headerIndex] = '';\n\n if (maxLengthAnswers && getInnerText(heading).length > maxLengthAnswers) {\n columnsErrors[headerIndex] += `Content length should be maximum ${maxLengthAnswers} characters. `;\n }\n\n if (!heading) {\n columnsErrors[headerIndex] += 'Content should not be empty.';\n } else {\n // check for identical content with the previous headers\n const identicalAnswer = headersContent.slice(0, index).some((head) => head === heading);\n\n if (identicalAnswer) {\n columnsErrors[index + 1] += 'Content should be unique.';\n }\n }\n });\n\n const hasRowErrors = Object.values(rowsErrors).some((error) => (error || '').length);\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n\n const noCorrectAnswer = Object.values(rowsErrors).some((error) =>\n (error || '').includes('No correct response defined.'),\n );\n\n if (noCorrectAnswer) {\n errors.correctResponseError =\n choiceMode === 'radio'\n ? 'There should be a correct response defined for every row.'\n : 'There should be at least one correct response defined for every row.';\n }\n }\n\n const hasColumnErrors = Object.values(columnsErrors).some((error) => (error || '').length);\n\n if (hasColumnErrors) {\n errors.columnsErrors = columnsErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
@@ -9,7 +9,8 @@
9
9
  "test": "./node_modules/.bin/jest"
10
10
  },
11
11
  "dependencies": {
12
- "@pie-lib/pie-toolbox": "2.25.2",
12
+ "@pie-lib/feedback": "^0.19.0",
13
+ "@pie-lib/controller-utils": "^0.17.0",
13
14
  "debug": "^3.1.0"
14
15
  },
15
16
  "devDependencies": {
@@ -35,7 +35,7 @@ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography")
35
35
 
36
36
  var _styles = require("@material-ui/core/styles");
37
37
 
38
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
38
+ var _renderUi = require("@pie-lib/render-ui");
39
39
 
40
40
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
41
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/answer-grid.jsx"],"names":["AnswerGrid","rowId","answerIndex","event","props","onAnswerChange","choiceMode","answers","newAnswers","i","length","target","checked","rowValue","rowValueIndex","correctAnswers","classes","showCorrect","headers","rows","disabled","view","Tag","Radio","Checkbox","evaluate","controlsContainer","empty","table","map","header","idx","rowHeader","rowItem","questionText","__html","row","separator","title","id","column","tag","correct","answerIsCorrect","tagDisabled","incorrect","answerIsIncorrect","onRowValueChange","React","Component","PropTypes","object","isRequired","bool","func","string","array","styles","theme","marginLeft","marginRight","marginTop","spacing","unit","marginBottom","padding","color","margin","rowContainer","display","alignItems","textAlign","border","borderTop","primaryLight","width","text","primary","cursor","pointerEvents","opacity","backgroundColor","background","borderCollapse","borderSpacing"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Radio from '@material-ui/core/Radio';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nexport class AnswerGrid extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctAnswers: PropTypes.object,\n view: PropTypes.bool.isRequired,\n showCorrect: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onAnswerChange: PropTypes.func.isRequired,\n choiceMode: PropTypes.string.isRequired,\n rows: PropTypes.array.isRequired,\n headers: PropTypes.array.isRequired,\n answers: PropTypes.object.isRequired,\n };\n\n onRowValueChange = (rowId, answerIndex) => (event) => {\n const { onAnswerChange, choiceMode, answers } = this.props;\n const newAnswers = { ...answers };\n\n if (choiceMode === 'radio') {\n for (let i = 0; i < newAnswers[rowId].length; i++) {\n newAnswers[rowId][i] = false;\n }\n }\n\n newAnswers[rowId][answerIndex] = event.target.checked;\n\n onAnswerChange(newAnswers);\n };\n\n answerIsCorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return correctAnswers[rowId][rowValueIndex] === rowValue && rowValue === true;\n };\n\n // needs a separate method because what isn't correct isn't necessarily incorrect\n answerIsIncorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return (\n (correctAnswers[rowId][rowValueIndex] === true && rowValue === false) ||\n (correctAnswers[rowId][rowValueIndex] === false && rowValue === true)\n );\n };\n\n render() {\n const { classes, showCorrect, headers, rows, choiceMode, answers, disabled, view } = this.props;\n const Tag = choiceMode === 'radio' ? Radio : Checkbox;\n const evaluate = disabled && !view;\n\n if (!rows || rows.length === 0) {\n return (\n <div className={classes.controlsContainer}>\n <Typography className={classes.empty} component=\"div\">\n There are currently no questions to show.\n </Typography>\n </div>\n );\n }\n\n return (\n <div className={classes.controlsContainer}>\n <table className={classes.table}>\n <colgroup>\n {(headers || []).map((header, idx) => (\n <col key={`col-${idx}`} />\n ))}\n </colgroup>\n\n <thead>\n <tr>\n {(headers || []).map((header, idx) => (\n <th className={classes.rowHeader} key={`th-${idx}`} data-colno={`${idx}`} scope=\"row\">\n <div\n className={cx(classes.rowItem, { [classes.questionText]: idx === 0 })}\n dangerouslySetInnerHTML={{ __html: header }}\n />\n </th>\n ))}\n </tr>\n </thead>\n\n {(rows || []).map((row, idx) => (\n <tbody key={`row-${idx}`} role=\"group\">\n <tr className={classes.separator}>\n <td key={`td-title-${idx}`} data-colno={'0'}>\n <div\n className={cx(classes.rowItem, classes.questionText)}\n dangerouslySetInnerHTML={{ __html: row.title }}\n />\n </td>\n\n {(answers[row.id] || []).map((rowItem, answerIndex) => (\n <td key={`td-${idx}-${answerIndex}`} className={classes.column} data-colno={`${answerIndex + 1}`}>\n <div className={classes.rowItem}>\n <Tag\n className={cx(classes.tag, {\n [classes.correct]:\n (showCorrect && rowItem === true) ||\n (evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex)),\n [classes.checked]: rowItem === true && !evaluate,\n [classes.tagDisabled]: disabled,\n [classes.incorrect]: evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex),\n })}\n disabled={disabled}\n onChange={this.onRowValueChange(row.id, answerIndex)}\n checked={rowItem === true}\n />\n </div>\n </td>\n ))}\n </tr>\n </tbody>\n ))}\n </table>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n controlsContainer: {\n marginLeft: 'auto',\n marginRight: 'auto',\n marginTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n },\n column: {\n padding: '5px 0',\n },\n correct: {\n color: `${color.correct()} !important`,\n },\n incorrect: {\n color: `${color.incorrect()} !important`,\n },\n empty: {\n margin: theme.spacing.unit * 2,\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n rowHeader: {\n padding: 0,\n },\n rowItem: {\n padding: theme.spacing.unit * 1.5,\n textAlign: 'center',\n },\n separator: {\n border: 0,\n borderTop: `2.5px solid ${color.primaryLight()}`,\n width: '100%',\n },\n tag: {\n padding: '6px',\n color: color.text(),\n '&:hover': {\n color: color.primaryLight(),\n },\n '& input': {\n width: '100% !important'\n }\n },\n checked: {\n color: `${color.primary()} !important`,\n },\n tagDisabled: {\n color: color.disabled(),\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n opacity: 0.7,\n '&:hover': {\n color: color.disabled(),\n },\n },\n table: {\n color: color.text(),\n backgroundColor: color.background(),\n borderCollapse: 'collapse',\n borderSpacing: 0,\n marginBottom: 0,\n },\n questionText: {\n textAlign: 'left',\n },\n});\n\nexport default withStyles(styles)(AnswerGrid);\n"],"file":"answer-grid.js"}
1
+ {"version":3,"sources":["../src/answer-grid.jsx"],"names":["AnswerGrid","rowId","answerIndex","event","props","onAnswerChange","choiceMode","answers","newAnswers","i","length","target","checked","rowValue","rowValueIndex","correctAnswers","classes","showCorrect","headers","rows","disabled","view","Tag","Radio","Checkbox","evaluate","controlsContainer","empty","table","map","header","idx","rowHeader","rowItem","questionText","__html","row","separator","title","id","column","tag","correct","answerIsCorrect","tagDisabled","incorrect","answerIsIncorrect","onRowValueChange","React","Component","PropTypes","object","isRequired","bool","func","string","array","styles","theme","marginLeft","marginRight","marginTop","spacing","unit","marginBottom","padding","color","margin","rowContainer","display","alignItems","textAlign","border","borderTop","primaryLight","width","text","primary","cursor","pointerEvents","opacity","backgroundColor","background","borderCollapse","borderSpacing"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Radio from '@material-ui/core/Radio';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/render-ui';\n\nexport class AnswerGrid extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctAnswers: PropTypes.object,\n view: PropTypes.bool.isRequired,\n showCorrect: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onAnswerChange: PropTypes.func.isRequired,\n choiceMode: PropTypes.string.isRequired,\n rows: PropTypes.array.isRequired,\n headers: PropTypes.array.isRequired,\n answers: PropTypes.object.isRequired,\n };\n\n onRowValueChange = (rowId, answerIndex) => (event) => {\n const { onAnswerChange, choiceMode, answers } = this.props;\n const newAnswers = { ...answers };\n\n if (choiceMode === 'radio') {\n for (let i = 0; i < newAnswers[rowId].length; i++) {\n newAnswers[rowId][i] = false;\n }\n }\n\n newAnswers[rowId][answerIndex] = event.target.checked;\n\n onAnswerChange(newAnswers);\n };\n\n answerIsCorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return correctAnswers[rowId][rowValueIndex] === rowValue && rowValue === true;\n };\n\n // needs a separate method because what isn't correct isn't necessarily incorrect\n answerIsIncorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return (\n (correctAnswers[rowId][rowValueIndex] === true && rowValue === false) ||\n (correctAnswers[rowId][rowValueIndex] === false && rowValue === true)\n );\n };\n\n render() {\n const { classes, showCorrect, headers, rows, choiceMode, answers, disabled, view } = this.props;\n const Tag = choiceMode === 'radio' ? Radio : Checkbox;\n const evaluate = disabled && !view;\n\n if (!rows || rows.length === 0) {\n return (\n <div className={classes.controlsContainer}>\n <Typography className={classes.empty} component=\"div\">\n There are currently no questions to show.\n </Typography>\n </div>\n );\n }\n\n return (\n <div className={classes.controlsContainer}>\n <table className={classes.table}>\n <colgroup>\n {(headers || []).map((header, idx) => (\n <col key={`col-${idx}`} />\n ))}\n </colgroup>\n\n <thead>\n <tr>\n {(headers || []).map((header, idx) => (\n <th className={classes.rowHeader} key={`th-${idx}`} data-colno={`${idx}`} scope=\"row\">\n <div\n className={cx(classes.rowItem, { [classes.questionText]: idx === 0 })}\n dangerouslySetInnerHTML={{ __html: header }}\n />\n </th>\n ))}\n </tr>\n </thead>\n\n {(rows || []).map((row, idx) => (\n <tbody key={`row-${idx}`} role=\"group\">\n <tr className={classes.separator}>\n <td key={`td-title-${idx}`} data-colno={'0'}>\n <div\n className={cx(classes.rowItem, classes.questionText)}\n dangerouslySetInnerHTML={{ __html: row.title }}\n />\n </td>\n\n {(answers[row.id] || []).map((rowItem, answerIndex) => (\n <td key={`td-${idx}-${answerIndex}`} className={classes.column} data-colno={`${answerIndex + 1}`}>\n <div className={classes.rowItem}>\n <Tag\n className={cx(classes.tag, {\n [classes.correct]:\n (showCorrect && rowItem === true) ||\n (evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex)),\n [classes.checked]: rowItem === true && !evaluate,\n [classes.tagDisabled]: disabled,\n [classes.incorrect]: evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex),\n })}\n disabled={disabled}\n onChange={this.onRowValueChange(row.id, answerIndex)}\n checked={rowItem === true}\n />\n </div>\n </td>\n ))}\n </tr>\n </tbody>\n ))}\n </table>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n controlsContainer: {\n marginLeft: 'auto',\n marginRight: 'auto',\n marginTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n },\n column: {\n padding: '5px 0',\n },\n correct: {\n color: `${color.correct()} !important`,\n },\n incorrect: {\n color: `${color.incorrect()} !important`,\n },\n empty: {\n margin: theme.spacing.unit * 2,\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n rowHeader: {\n padding: 0,\n },\n rowItem: {\n padding: theme.spacing.unit * 1.5,\n textAlign: 'center',\n },\n separator: {\n border: 0,\n borderTop: `2.5px solid ${color.primaryLight()}`,\n width: '100%',\n },\n tag: {\n padding: '6px',\n color: color.text(),\n '&:hover': {\n color: color.primaryLight(),\n },\n '& input': {\n width: '100% !important',\n },\n },\n checked: {\n color: `${color.primary()} !important`,\n },\n tagDisabled: {\n color: color.disabled(),\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n opacity: 0.7,\n '&:hover': {\n color: color.disabled(),\n },\n },\n table: {\n color: color.text(),\n backgroundColor: color.background(),\n borderCollapse: 'collapse',\n borderSpacing: 0,\n marginBottom: 0,\n },\n questionText: {\n textAlign: 'left',\n },\n});\n\nexport default withStyles(styles)(AnswerGrid);\n"],"file":"answer-grid.js"}
package/lib/index.js CHANGED
@@ -35,7 +35,7 @@ var _main = _interopRequireDefault(require("./main"));
35
35
 
36
36
  var _piePlayerEvents = require("@pie-framework/pie-player-events");
37
37
 
38
- var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
38
+ var _mathRendering = require("@pie-lib/math-rendering");
39
39
 
40
40
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
41
 
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["isComplete","session","model","ids","rows","map","r","id","reduce","acc","arr","answers","hasChoice","Array","isArray","includes","Match","m","_model","config","_render","_session","s","complete","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","el","React","createElement","Main","onSessionChange","sessionChanged","bind","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAIO,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD,EAAUC,KAAV,EAAoB;AAAA;;AAC5C,MAAMC,GAAG,GAAG,CAAAD,KAAK,SAAL,IAAAA,KAAK,WAAL,2BAAAA,KAAK,CAAEE,IAAP,4DAAaC,GAAb,CAAiB,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,EAAT;AAAA,GAAjB,MAAiC,EAA7C;AAEA,SAAOJ,GAAG,CAACK,MAAJ,CAAW,UAACC,GAAD,EAAMF,EAAN,EAAa;AAC7B,QAAI,CAACE,GAAL,EAAU;AACR,aAAO,KAAP;AACD;;AAED,QAAMC,GAAG,GAAGT,OAAO,CAACU,OAAR,IAAmBV,OAAO,CAACU,OAAR,CAAgBJ,EAAhB,CAA/B;AACA,QAAMK,SAAS,GAAGC,KAAK,CAACC,OAAN,CAAcJ,GAAd,KAAsBA,GAAG,CAACK,QAAJ,CAAa,IAAb,CAAxC;AAEA,WAAOH,SAAS,IAAIH,GAApB;AACD,GATM,EASJ,IATI,CAAP;AAUD,CAbM;;;;IAecO,K;;;;;AACnB,mBAAc;AAAA;AAAA;AAEb;;;;SAED,aAAUC,CAAV,EAAa;AACX;AACA;AACA,WAAKC,MAAL,mCAAmBD,CAAnB,GAA0B,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEE,MAAH,KAAa,EAAvC;;AACA,WAAKC,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKC,QAAZ;AACD,K;SAPD,aAAYC,CAAZ,EAAe;AACb,WAAKD,QAAL,GAAgBC,CAAhB;;AACA,WAAKF,OAAL;AACD;;;WAMD,wBAAeE,CAAf,EAAkB;AAChB,WAAKD,QAAL,CAAcV,OAAd,GAAwBW,CAAC,CAACX,OAA1B;AACA,UAAMY,QAAQ,GAAGvB,UAAU,CAAC,KAAKqB,QAAN,EAAgB,KAAKH,MAArB,CAA3B;AAEA,WAAKM,aAAL,CAAmB,IAAIC,oCAAJ,CAAwB,KAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoDJ,QAApD,CAAnB;;AAEA,WAAKH,OAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;WAED,mBAAU;AAAA;;AACR,UAAI,CAAC,KAAKF,MAAN,IAAgB,CAAC,KAAKG,QAA1B,EAAoC;AAClC;AACD;;AAED,UAAMO,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACnC7B,QAAAA,KAAK,EAAE,KAAKgB,MADuB;AAEnCjB,QAAAA,OAAO,EAAE,KAAKoB,QAFqB;AAGnCW,QAAAA,eAAe,EAAE,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB;AAHkB,OAA1B,CAAX;;AAMAC,2BAASC,MAAT,CAAgBR,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,uCAAW,KAAX;AACD,OAFD;AAGD;;;kDAhDgCS,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Main from './main';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\n\nexport { Main as Component };\n\nexport const isComplete = (session, model) => {\n const ids = model?.rows?.map((r) => r.id) || [];\n\n return ids.reduce((acc, id) => {\n if (!acc) {\n return false;\n }\n\n const arr = session.answers && session.answers[id];\n const hasChoice = Array.isArray(arr) && arr.includes(true);\n\n return hasChoice && acc;\n }, true);\n};\n\nexport default class Match extends HTMLElement {\n constructor() {\n super();\n }\n\n set model(m) {\n // config object props should be part of the model props\n // model.config should be no longer used\n this._model = { ...m, ...(m?.config || {}) };\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n sessionChanged(s) {\n this._session.answers = s.answers;\n const complete = isComplete(this._session, this._model);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["isComplete","session","model","ids","rows","map","r","id","reduce","acc","arr","answers","hasChoice","Array","isArray","includes","Match","m","_model","config","_render","_session","s","complete","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","el","React","createElement","Main","onSessionChange","sessionChanged","bind","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAIO,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD,EAAUC,KAAV,EAAoB;AAAA;;AAC5C,MAAMC,GAAG,GAAG,CAAAD,KAAK,SAAL,IAAAA,KAAK,WAAL,2BAAAA,KAAK,CAAEE,IAAP,4DAAaC,GAAb,CAAiB,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,EAAT;AAAA,GAAjB,MAAiC,EAA7C;AAEA,SAAOJ,GAAG,CAACK,MAAJ,CAAW,UAACC,GAAD,EAAMF,EAAN,EAAa;AAC7B,QAAI,CAACE,GAAL,EAAU;AACR,aAAO,KAAP;AACD;;AAED,QAAMC,GAAG,GAAGT,OAAO,CAACU,OAAR,IAAmBV,OAAO,CAACU,OAAR,CAAgBJ,EAAhB,CAA/B;AACA,QAAMK,SAAS,GAAGC,KAAK,CAACC,OAAN,CAAcJ,GAAd,KAAsBA,GAAG,CAACK,QAAJ,CAAa,IAAb,CAAxC;AAEA,WAAOH,SAAS,IAAIH,GAApB;AACD,GATM,EASJ,IATI,CAAP;AAUD,CAbM;;;;IAecO,K;;;;;AACnB,mBAAc;AAAA;AAAA;AAEb;;;;SAED,aAAUC,CAAV,EAAa;AACX;AACA;AACA,WAAKC,MAAL,mCAAmBD,CAAnB,GAA0B,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEE,MAAH,KAAa,EAAvC;;AACA,WAAKC,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKC,QAAZ;AACD,K;SAPD,aAAYC,CAAZ,EAAe;AACb,WAAKD,QAAL,GAAgBC,CAAhB;;AACA,WAAKF,OAAL;AACD;;;WAMD,wBAAeE,CAAf,EAAkB;AAChB,WAAKD,QAAL,CAAcV,OAAd,GAAwBW,CAAC,CAACX,OAA1B;AACA,UAAMY,QAAQ,GAAGvB,UAAU,CAAC,KAAKqB,QAAN,EAAgB,KAAKH,MAArB,CAA3B;AAEA,WAAKM,aAAL,CAAmB,IAAIC,oCAAJ,CAAwB,KAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoDJ,QAApD,CAAnB;;AAEA,WAAKH,OAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;WAED,mBAAU;AAAA;;AACR,UAAI,CAAC,KAAKF,MAAN,IAAgB,CAAC,KAAKG,QAA1B,EAAoC;AAClC;AACD;;AAED,UAAMO,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACnC7B,QAAAA,KAAK,EAAE,KAAKgB,MADuB;AAEnCjB,QAAAA,OAAO,EAAE,KAAKoB,QAFqB;AAGnCW,QAAAA,eAAe,EAAE,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB;AAHkB,OAA1B,CAAX;;AAMAC,2BAASC,MAAT,CAAgBR,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,uCAAW,KAAX;AACD,OAFD;AAGD;;;kDAhDgCS,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Main from './main';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nexport { Main as Component };\n\nexport const isComplete = (session, model) => {\n const ids = model?.rows?.map((r) => r.id) || [];\n\n return ids.reduce((acc, id) => {\n if (!acc) {\n return false;\n }\n\n const arr = session.answers && session.answers[id];\n const hasChoice = Array.isArray(arr) && arr.includes(true);\n\n return hasChoice && acc;\n }, true);\n};\n\nexport default class Match extends HTMLElement {\n constructor() {\n super();\n }\n\n set model(m) {\n // config object props should be part of the model props\n // model.config should be no longer used\n this._model = { ...m, ...(m?.config || {}) };\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n sessionChanged(s) {\n this._session.answers = s.answers;\n const complete = isComplete(this._session, this._model);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n}\n"],"file":"index.js"}
package/lib/main.js CHANGED
@@ -25,9 +25,9 @@ var _react = _interopRequireDefault(require("react"));
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
- var _correctAnswerToggle = require("@pie-lib/pie-toolbox/correct-answer-toggle");
28
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
29
29
 
30
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
30
+ var _renderUi = require("@pie-lib/render-ui");
31
31
 
32
32
  var _answerGrid = _interopRequireDefault(require("./answer-grid"));
33
33
 
@@ -167,7 +167,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
167
167
  className: classes.prompt
168
168
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
169
169
  prompt: model.prompt
170
- })), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle.CorrectAnswerToggle, {
170
+ })), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
171
171
  language: language,
172
172
  show: showCorrectAnswerToggle,
173
173
  toggled: showCorrect,
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","model","answers","rows","forEach","row","id","Array","layout","fill","nextProps","choiceMode","session","isRequired","length","Object","keys","onSessionChange","state","show","setState","showCorrect","newAnswers","callOnSessionChange","generateAnswers","regenAnswers","isAnswerRegenerationRequired","disabled","classes","correctness","extraCSSRules","language","showCorrectAnswerToggle","showRationale","rationale","showTeacherInstructions","teacherInstructions","mainContainer","hidden","visible","collapsible","prompt","toggleShowCorrect","correctResponse","view","onAnswerChange","headers","feedback","React","Component","PropTypes","object","func","styles","theme","color","text","backgroundColor","background","main","width","verticalAlign","marginBottom","spacing","unit"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport { color, Collapsible, Feedback, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/pie-toolbox/render-ui';\nimport AnswerGrid from './answer-grid';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n };\n\n this.callOnSessionChange();\n }\n\n generateAnswers = (model) => {\n const answers = {};\n\n model.rows?.forEach((row) => {\n answers[row.id] = new Array(model.layout - 1).fill(false);\n });\n\n return answers;\n };\n\n isAnswerRegenerationRequired = (nextProps) => {\n const { model: { choiceMode, layout, rows } = {} } = this.props;\n const { session: { answers } = {} } = nextProps;\n let isRequired = false;\n\n if (choiceMode !== nextProps.model.choiceMode) {\n isRequired = true;\n }\n\n if (layout !== nextProps.model.layout) {\n isRequired = true;\n }\n\n if (\n rows.length !== nextProps.model.rows.length ||\n (answers && nextProps.model.rows.length !== Object.keys(answers).length)\n ) {\n isRequired = true;\n }\n\n return isRequired || !answers;\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const regenAnswers = this.isAnswerRegenerationRequired(nextProps);\n\n this.setState(\n (state) => ({\n session: {\n ...nextProps.session,\n // regenerate answers if layout or choiceMode change\n answers: regenAnswers ? this.generateAnswers(nextProps.model) : nextProps.session.answers,\n },\n showCorrect:\n this.props.model.disabled && !nextProps.model.disabled && state.showCorrect ? false : state.showCorrect,\n }),\n () => {\n if (regenAnswers) this.callOnSessionChange();\n },\n );\n }\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n onAnswerChange = (newAnswers) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: newAnswers,\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n render() {\n const { model, classes } = this.props;\n const { showCorrect, session } = this.state;\n const { correctness = {}, extraCSSRules, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions = model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions && (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n )}\n\n {model.prompt && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n )}\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerGrid\n showCorrect={showCorrect}\n correctAnswers={model.correctResponse}\n disabled={model.disabled}\n view={model.view}\n onAnswerChange={this.onAnswerChange}\n choiceMode={model.choiceMode}\n answers={showCorrect ? model.correctResponse || {} : session.answers}\n headers={model.headers}\n rows={model.rows}\n />\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }} className={classes.collapsible}>\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n )}\n\n {model.feedback && <Feedback correctness={correctness.correctness} feedback={model.feedback} />}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n main: {\n width: '100%',\n },\n prompt: {\n verticalAlign: 'middle',\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","model","answers","rows","forEach","row","id","Array","layout","fill","nextProps","choiceMode","session","isRequired","length","Object","keys","onSessionChange","state","show","setState","showCorrect","newAnswers","callOnSessionChange","generateAnswers","regenAnswers","isAnswerRegenerationRequired","disabled","classes","correctness","extraCSSRules","language","showCorrectAnswerToggle","showRationale","rationale","showTeacherInstructions","teacherInstructions","mainContainer","hidden","visible","collapsible","prompt","toggleShowCorrect","correctResponse","view","onAnswerChange","headers","feedback","React","Component","PropTypes","object","func","styles","theme","color","text","backgroundColor","background","main","width","verticalAlign","marginBottom","spacing","unit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,I;;;;;AAQX,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,wGAcD,UAACC,KAAD,EAAW;AAAA;;AAC3B,UAAMC,OAAO,GAAG,EAAhB;AAEA,qBAAAD,KAAK,CAACE,IAAN,4DAAYC,OAAZ,CAAoB,UAACC,GAAD,EAAS;AAC3BH,QAAAA,OAAO,CAACG,GAAG,CAACC,EAAL,CAAP,GAAkB,IAAIC,KAAJ,CAAUN,KAAK,CAACO,MAAN,GAAe,CAAzB,EAA4BC,IAA5B,CAAiC,KAAjC,CAAlB;AACD,OAFD;AAIA,aAAOP,OAAP;AACD,KAtBkB;AAAA,qHAwBY,UAACQ,SAAD,EAAe;AAC5C,8BAAqD,MAAKV,KAA1D,CAAQC,KAAR;AAAA,yDAA8C,EAA9C;AAAA,UAAiBU,UAAjB,qBAAiBA,UAAjB;AAAA,UAA6BH,MAA7B,qBAA6BA,MAA7B;AAAA,UAAqCL,IAArC,qBAAqCA,IAArC;AACA,+BAAsCO,SAAtC,CAAQE,OAAR;AAAA,2DAA+B,EAA/B;AAAA,UAAmBV,OAAnB,sBAAmBA,OAAnB;AACA,UAAIW,UAAU,GAAG,KAAjB;;AAEA,UAAIF,UAAU,KAAKD,SAAS,CAACT,KAAV,CAAgBU,UAAnC,EAA+C;AAC7CE,QAAAA,UAAU,GAAG,IAAb;AACD;;AAED,UAAIL,MAAM,KAAKE,SAAS,CAACT,KAAV,CAAgBO,MAA/B,EAAuC;AACrCK,QAAAA,UAAU,GAAG,IAAb;AACD;;AAED,UACEV,IAAI,CAACW,MAAL,KAAgBJ,SAAS,CAACT,KAAV,CAAgBE,IAAhB,CAAqBW,MAArC,IACCZ,OAAO,IAAIQ,SAAS,CAACT,KAAV,CAAgBE,IAAhB,CAAqBW,MAArB,KAAgCC,MAAM,CAACC,IAAP,CAAYd,OAAZ,EAAqBY,MAFnE,EAGE;AACAD,QAAAA,UAAU,GAAG,IAAb;AACD;;AAED,aAAOA,UAAU,IAAI,CAACX,OAAtB;AACD,KA7CkB;AAAA,4GAkEG,YAAM;AAC1B,UAAQe,eAAR,GAA4B,MAAKjB,KAAjC,CAAQiB,eAAR;;AAEA,UAAIA,eAAJ,EAAqB;AACnBA,QAAAA,eAAe,CAAC,MAAKC,KAAL,CAAWN,OAAZ,CAAf;AACD;AACF,KAxEkB;AAAA,0GA0EC,UAACO,IAAD,EAAU;AAC5B,YAAKC,QAAL,CAAc;AAAEC,QAAAA,WAAW,EAAEF;AAAf,OAAd;AACD,KA5EkB;AAAA,uGA8EF,UAACG,UAAD,EAAgB;AAC/B,YAAKF,QAAL,CACE,UAACF,KAAD;AAAA,eAAY;AACVN,UAAAA,OAAO,kCACFM,KAAK,CAACN,OADJ;AAELV,YAAAA,OAAO,EAAEoB;AAFJ;AADG,SAAZ;AAAA,OADF,EAOE,MAAKC,mBAPP;AASD,KAxFkB;AAGjB,UAAKL,KAAL,GAAa;AACXN,MAAAA,OAAO,kCACFZ,KAAK,CAACY,OADJ;AAELV,QAAAA,OAAO,EAAGF,KAAK,CAACY,OAAN,IAAiBZ,KAAK,CAACY,OAAN,CAAcV,OAAhC,IAA4C,MAAKsB,eAAL,CAAqBxB,KAAK,CAACC,KAA3B;AAFhD,QADI;AAKXoB,MAAAA,WAAW,EAAE;AALF,KAAb;;AAQA,UAAKE,mBAAL;;AAXiB;AAYlB;;;;WAmCD,0CAAiCb,SAAjC,EAA4C;AAAA;;AAC1C,UAAMe,YAAY,GAAG,KAAKC,4BAAL,CAAkChB,SAAlC,CAArB;AAEA,WAAKU,QAAL,CACE,UAACF,KAAD;AAAA,eAAY;AACVN,UAAAA,OAAO,kCACFF,SAAS,CAACE,OADR;AAEL;AACAV,YAAAA,OAAO,EAAEuB,YAAY,GAAG,MAAI,CAACD,eAAL,CAAqBd,SAAS,CAACT,KAA/B,CAAH,GAA2CS,SAAS,CAACE,OAAV,CAAkBV;AAH7E,YADG;AAMVmB,UAAAA,WAAW,EACT,MAAI,CAACrB,KAAL,CAAWC,KAAX,CAAiB0B,QAAjB,IAA6B,CAACjB,SAAS,CAACT,KAAV,CAAgB0B,QAA9C,IAA0DT,KAAK,CAACG,WAAhE,GAA8E,KAA9E,GAAsFH,KAAK,CAACG;AAPpF,SAAZ;AAAA,OADF,EAUE,YAAM;AACJ,YAAII,YAAJ,EAAkB,MAAI,CAACF,mBAAL;AACnB,OAZH;AAcD;;;WA0BD,kBAAS;AACP,wBAA2B,KAAKvB,KAAhC;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAe2B,OAAf,eAAeA,OAAf;AACA,wBAAiC,KAAKV,KAAtC;AAAA,UAAQG,WAAR,eAAQA,WAAR;AAAA,UAAqBT,OAArB,eAAqBA,OAArB;AACA,+BAAsDX,KAAtD,CAAQ4B,WAAR;AAAA,UAAQA,WAAR,mCAAsB,EAAtB;AAAA,UAA0BC,aAA1B,GAAsD7B,KAAtD,CAA0B6B,aAA1B;AAAA,UAAyCC,QAAzC,GAAsD9B,KAAtD,CAAyC8B,QAAzC;AACA,UAAMC,uBAAuB,GAAGH,WAAW,CAACA,WAAZ,IAA2BA,WAAW,CAACA,WAAZ,KAA4B,SAAvF;AAEA,UAAMI,aAAa,GAAGhC,KAAK,CAACiC,SAAN,KAAoB,uBAAQjC,KAAK,CAACiC,SAAd,KAA4B,wBAASjC,KAAK,CAACiC,SAAf,CAAhD,CAAtB;AACA,UAAMC,uBAAuB,GAC3BlC,KAAK,CAACmC,mBAAN,KAA8B,uBAAQnC,KAAK,CAACmC,mBAAd,KAAsC,wBAASnC,KAAK,CAACmC,mBAAf,CAApE,CADF;AAGA,0BACE,gCAAC,kBAAD;AAAU,QAAA,aAAa,EAAEN,aAAzB;AAAwC,QAAA,SAAS,EAAEF,OAAO,CAACS;AAA3D,SACGF,uBAAuB,iBACtB,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AACNG,UAAAA,MAAM,EAAE,2BADF;AAENC,UAAAA,OAAO,EAAE;AAFH,SADV;AAKE,QAAA,SAAS,EAAEX,OAAO,CAACY;AALrB,sBAOE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEvC,KAAK,CAACmC;AAA7B,QAPF,CAFJ,EAaGnC,KAAK,CAACwC,MAAN,iBACC;AAAK,QAAA,SAAS,EAAEb,OAAO,CAACa;AAAxB,sBACE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAExC,KAAK,CAACwC;AAA7B,QADF,CAdJ,eAmBE,gCAAC,+BAAD;AACE,QAAA,QAAQ,EAAEV,QADZ;AAEE,QAAA,IAAI,EAAEC,uBAFR;AAGE,QAAA,OAAO,EAAEX,WAHX;AAIE,QAAA,QAAQ,EAAE,KAAKqB;AAJjB,QAnBF,eA0BE,gCAAC,sBAAD;AACE,QAAA,WAAW,EAAErB,WADf;AAEE,QAAA,cAAc,EAAEpB,KAAK,CAAC0C,eAFxB;AAGE,QAAA,QAAQ,EAAE1C,KAAK,CAAC0B,QAHlB;AAIE,QAAA,IAAI,EAAE1B,KAAK,CAAC2C,IAJd;AAKE,QAAA,cAAc,EAAE,KAAKC,cALvB;AAME,QAAA,UAAU,EAAE5C,KAAK,CAACU,UANpB;AAOE,QAAA,OAAO,EAAEU,WAAW,GAAGpB,KAAK,CAAC0C,eAAN,IAAyB,EAA5B,GAAiC/B,OAAO,CAACV,OAP/D;AAQE,QAAA,OAAO,EAAED,KAAK,CAAC6C,OARjB;AASE,QAAA,IAAI,EAAE7C,KAAK,CAACE;AATd,QA1BF,EAsCG8B,aAAa,iBACZ,gCAAC,qBAAD;AAAa,QAAA,MAAM,EAAE;AAAEK,UAAAA,MAAM,EAAE,gBAAV;AAA4BC,UAAAA,OAAO,EAAE;AAArC,SAArB;AAA8E,QAAA,SAAS,EAAEX,OAAO,CAACY;AAAjG,sBACE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEvC,KAAK,CAACiC;AAA7B,QADF,CAvCJ,EA4CGjC,KAAK,CAAC8C,QAAN,iBAAkB,gCAAC,kBAAD;AAAU,QAAA,WAAW,EAAElB,WAAW,CAACA,WAAnC;AAAgD,QAAA,QAAQ,EAAE5B,KAAK,CAAC8C;AAAhE,QA5CrB,CADF;AAgDD;;;EA5JuBC,kBAAMC,S;;;iCAAnBlD,I,eACQ;AACjB6B,EAAAA,OAAO,EAAEsB,sBAAUC,MADF;AAEjBvC,EAAAA,OAAO,EAAEsC,sBAAUC,MAAV,CAAiBtC,UAFT;AAGjBI,EAAAA,eAAe,EAAEiC,sBAAUE,IAHV;AAIjBnD,EAAAA,KAAK,EAAEiD,sBAAUC,MAAV,CAAiBtC;AAJP,C;;AA8JrB,IAAMwC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBjB,IAAAA,aAAa,EAAE;AACbkB,MAAAA,KAAK,EAAEA,gBAAMC,IAAN,EADM;AAEbC,MAAAA,eAAe,EAAEF,gBAAMG,UAAN;AAFJ,KADU;AAKzBC,IAAAA,IAAI,EAAE;AACJC,MAAAA,KAAK,EAAE;AADH,KALmB;AAQzBnB,IAAAA,MAAM,EAAE;AACNoB,MAAAA,aAAa,EAAE;AADT,KARiB;AAWzBrB,IAAAA,WAAW,EAAE;AACXsB,MAAAA,YAAY,EAAER,KAAK,CAACS,OAAN,CAAcC,IAAd,GAAqB;AADxB;AAXY,GAAZ;AAAA,CAAf;;eAgBe,wBAAWX,MAAX,EAAmBtD,IAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, Collapsible, Feedback, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/render-ui';\nimport AnswerGrid from './answer-grid';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n };\n\n this.callOnSessionChange();\n }\n\n generateAnswers = (model) => {\n const answers = {};\n\n model.rows?.forEach((row) => {\n answers[row.id] = new Array(model.layout - 1).fill(false);\n });\n\n return answers;\n };\n\n isAnswerRegenerationRequired = (nextProps) => {\n const { model: { choiceMode, layout, rows } = {} } = this.props;\n const { session: { answers } = {} } = nextProps;\n let isRequired = false;\n\n if (choiceMode !== nextProps.model.choiceMode) {\n isRequired = true;\n }\n\n if (layout !== nextProps.model.layout) {\n isRequired = true;\n }\n\n if (\n rows.length !== nextProps.model.rows.length ||\n (answers && nextProps.model.rows.length !== Object.keys(answers).length)\n ) {\n isRequired = true;\n }\n\n return isRequired || !answers;\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const regenAnswers = this.isAnswerRegenerationRequired(nextProps);\n\n this.setState(\n (state) => ({\n session: {\n ...nextProps.session,\n // regenerate answers if layout or choiceMode change\n answers: regenAnswers ? this.generateAnswers(nextProps.model) : nextProps.session.answers,\n },\n showCorrect:\n this.props.model.disabled && !nextProps.model.disabled && state.showCorrect ? false : state.showCorrect,\n }),\n () => {\n if (regenAnswers) this.callOnSessionChange();\n },\n );\n }\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n onAnswerChange = (newAnswers) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: newAnswers,\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n render() {\n const { model, classes } = this.props;\n const { showCorrect, session } = this.state;\n const { correctness = {}, extraCSSRules, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer}>\n {showTeacherInstructions && (\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n )}\n\n {model.prompt && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n )}\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerGrid\n showCorrect={showCorrect}\n correctAnswers={model.correctResponse}\n disabled={model.disabled}\n view={model.view}\n onAnswerChange={this.onAnswerChange}\n choiceMode={model.choiceMode}\n answers={showCorrect ? model.correctResponse || {} : session.answers}\n headers={model.headers}\n rows={model.rows}\n />\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }} className={classes.collapsible}>\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n )}\n\n {model.feedback && <Feedback correctness={correctness.correctness} feedback={model.feedback} />}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n main: {\n width: '100%',\n },\n prompt: {\n verticalAlign: 'middle',\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "8.7.9",
7
+ "version": "8.7.10-next.86+260752f06",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -13,7 +13,10 @@
13
13
  "dependencies": {
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/pie-player-events": "^0.1.0",
16
- "@pie-lib/pie-toolbox": "2.25.2",
16
+ "@pie-lib/correct-answer-toggle": "^2.20.0",
17
+ "@pie-lib/math-rendering": "^3.17.0",
18
+ "@pie-lib/render-ui": "^4.30.0",
19
+ "@pie-lib/test-utils": "^0.17.0",
17
20
  "classnames": "^2.2.5",
18
21
  "debug": "^4.1.1",
19
22
  "lodash": "^4.17.10",
@@ -23,6 +26,6 @@
23
26
  },
24
27
  "author": "",
25
28
  "license": "ISC",
26
- "gitHead": "c467a0677fd15eec0c1b522a2525e3910d5a79dd",
29
+ "gitHead": "260752f06b5e03f581d3a2533a3007e567d7655a",
27
30
  "module": "src/index.js"
28
31
  }