@pie-element/match 5.11.6-next.7 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.12.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match@5.11.5...@pie-element/match@5.12.0) (2023-09-04)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-libs PD-3051 ([1e1a7a3](https://github.com/pie-framework/pie-elements/commit/1e1a7a38732eff5585ad789aea5a08c5e94720ae))
12
+ * updated pie-libs PD-2765, PD-3051 ([e6f5b17](https://github.com/pie-framework/pie-elements/commit/e6f5b17c95faf426898f897651863089a54ff3ff))
13
+
14
+
15
+ ### Features
16
+
17
+ * **match:** translations PD-2802 PD-2795 ([ff0d065](https://github.com/pie-framework/pie-elements/commit/ff0d065dd15d4f2cca94cf521123b9b466b1d424))
18
+ * **select-text, inline-dropdown:** PD-2797-PD-2802 update documentation ([b8ba6c7](https://github.com/pie-framework/pie-elements/commit/b8ba6c7d12eea9d0d729a38e18e87a21ea496a8b))
19
+
20
+
21
+
22
+
23
+
6
24
  ## [5.11.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/match@5.11.4...@pie-element/match@5.11.5) (2023-08-21)
7
25
 
8
26
 
@@ -3,6 +3,23 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.12.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-configure@5.11.5...@pie-element/match-configure@5.12.0) (2023-09-04)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-libs PD-3051 ([1e1a7a3](https://github.com/pie-framework/pie-elements/commit/1e1a7a38732eff5585ad789aea5a08c5e94720ae))
12
+ * updated pie-libs PD-2765, PD-3051 ([e6f5b17](https://github.com/pie-framework/pie-elements/commit/e6f5b17c95faf426898f897651863089a54ff3ff))
13
+
14
+
15
+ ### Features
16
+
17
+ * **match:** translations PD-2802 PD-2795 ([ff0d065](https://github.com/pie-framework/pie-elements/commit/ff0d065dd15d4f2cca94cf521123b9b466b1d424))
18
+
19
+
20
+
21
+
22
+
6
23
  ## [5.11.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-configure@5.11.4...@pie-element/match-configure@5.11.5) (2023-08-21)
7
24
 
8
25
 
@@ -50,7 +50,8 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
50
50
  var log = (0, _debug["default"])('@pie-element:match:configure');
51
51
  var Panel = _configUi.settings.Panel,
52
52
  toggle = _configUi.settings.toggle,
53
- radio = _configUi.settings.radio;
53
+ radio = _configUi.settings.radio,
54
+ dropdown = _configUi.settings.dropdown;
54
55
 
55
56
  var styles = function styles(theme) {
56
57
  return {
@@ -232,7 +233,11 @@ var Configure = /*#__PURE__*/function (_React$Component) {
232
233
  _ref$teacherInstructi = _ref.teacherInstructions,
233
234
  teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
234
235
  _ref$withRubric = _ref.withRubric,
235
- withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric;
236
+ withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric,
237
+ _ref$language = _ref.language,
238
+ language = _ref$language === void 0 ? {} : _ref$language,
239
+ _ref$languageChoices = _ref.languageChoices,
240
+ languageChoices = _ref$languageChoices === void 0 ? {} : _ref$languageChoices;
236
241
 
237
242
  var _ref2 = model || {},
238
243
  feedbackEnabled = _ref2.feedbackEnabled,
@@ -251,7 +256,9 @@ var Configure = /*#__PURE__*/function (_React$Component) {
251
256
  enableImages: enableImages.settings && toggle(enableImages.label),
252
257
  partialScoring: partialScoring.settings && toggle(partialScoring.label),
253
258
  lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
254
- feedbackEnabled: feedback.settings && toggle(feedback.label)
259
+ feedbackEnabled: feedback.settings && toggle(feedback.label),
260
+ 'language.enabled': language.settings && toggle(language.label, true),
261
+ language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options)
255
262
  };
256
263
  var panelProperties = {
257
264
  teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configure.jsx"],"names":["log","Panel","settings","toggle","radio","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","Configure","props","event","value","setState","activeTab","index","model","onModelChanged","feedback","rowIndex","newModel","rows","splice","onChange","concat","id","rowIdCounter","title","length","values","Array","layout","fill","newLayout","oldLayout","i","headers","push","forEach","row","newChoiceMode","trueCount","reduce","total","current","choiceMode","partialScoring","prompt","teacherInstructions","rationale","state","classes","imageSupport","configuration","onConfigurationChanged","uploadSoundSupport","contentDimensions","enableImages","lockChoiceOrder","maxImageWidth","maxImageHeight","settingsPanelDisabled","scoringType","spellCheck","studentInstructions","withRubric","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","toolbarOpts","position","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","label","panelProperties","studentInstructionsEnabled","rubricEnabled","config","Settings","Properties","onTeacherInstructionsChanged","language","onPromptChanged","onResponseTypeChange","onLayoutChange","onAddRow","onDeleteRow","onRationaleChanged","onFeedbackChange","React","Component","PropTypes","func","object","isRequired","shape","add","Config"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,8BAAN,CAAZ;AACA,IAAQC,KAAR,GAAiCC,kBAAjC,CAAQD,KAAR;AAAA,IAAeE,MAAf,GAAiCD,kBAAjC,CAAeC,MAAf;AAAA,IAAuBC,KAAvB,GAAiCF,kBAAjC,CAAuBE,KAAvB;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,YAAY,EAAE;AACZC,MAAAA,KAAK,EAAE,MADK;AAEZC,MAAAA,UAAU,EAAEH,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB,CAFrB;AAGZC,MAAAA,YAAY,EAAEN,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB;AAHvB;AADW,GAAZ;AAAA,CAAf;;IAQME,S;;;;;AAqBJ,qBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,oGAUL,UAACC,KAAD,EAAQC,KAAR,EAAkB;AAC9B,YAAKC,QAAL,CAAc;AAAEC,QAAAA,SAAS,EAAEF;AAAb,OAAd;AACD,KAZkB;AAAA,yGAcA,UAACG,KAAD,EAAW;AAC5B,YAAKF,QAAL,CAAc;AAAEC,QAAAA,SAAS,EAAEC;AAAb,OAAd;AACD,KAhBkB;AAAA,iGAkBR,UAACC,KAAD,EAAW;AACpB,YAAKN,KAAL,CAAWO,cAAX,CAA0BD,KAA1B;AACD,KApBkB;AAAA,yGAsBA,UAACE,QAAD,EAAc;AAC/B,wBAAkC,MAAKR,KAAvC;AAAA,UAAQM,KAAR,eAAQA,KAAR;AAAA,UAAeC,cAAf,eAAeA,cAAf;AACAD,MAAAA,KAAK,CAACE,QAAN,GAAiBA,QAAjB;AAEAD,MAAAA,cAAc,CAACD,KAAD,CAAd;AACD,KA3BkB;AAAA,oGA6BL,UAACG,QAAD,EAAc;AAC1B,UAAQH,KAAR,GAAkB,MAAKN,KAAvB,CAAQM,KAAR;;AACA,UAAMI,QAAQ,qBAAQJ,KAAR,CAAd;;AAEAI,MAAAA,QAAQ,CAACC,IAAT,CAAcC,MAAd,CAAqBH,QAArB,EAA+B,CAA/B;;AAEA,YAAKI,QAAL,CAAcH,QAAd;AACD,KApCkB;AAAA,iGAsCR,YAAM;AACf,UAAQJ,KAAR,GAAkB,MAAKN,KAAvB,CAAQM,KAAR;;AACA,UAAMI,QAAQ,qBAAQJ,KAAR,CAAd;;AAEAI,MAAAA,QAAQ,CAACC,IAAT,GAAgBD,QAAQ,CAACC,IAAT,CAAcG,MAAd,CAAqB;AACnCC,QAAAA,EAAE,EAAE,MAAKC,YAAL,GAAoB,CADW;AAEnCC,QAAAA,KAAK,0BAAmBP,QAAQ,CAACC,IAAT,CAAcO,MAAd,GAAuB,CAA1C,CAF8B;AAGnCC,QAAAA,MAAM,EAAE,IAAIC,KAAJ,CAAUd,KAAK,CAACe,MAAN,GAAe,CAAzB,EAA4BC,IAA5B,CAAiC,KAAjC;AAH2B,OAArB,CAAhB;AAMA,YAAKN,YAAL,IAAqB,CAArB;;AAEA,YAAKH,QAAL,CAAcH,QAAd;AACD,KAnDkB;AAAA,uGAqDF,UAACa,SAAD,EAAe;AAC9B,UAAQjB,KAAR,GAAkB,MAAKN,KAAvB,CAAQM,KAAR;AACA,UAAMkB,SAAS,GAAGlB,KAAK,CAACe,MAAxB;;AACA,UAAMX,QAAQ,qBAAQJ,KAAR,CAAd;;AAEA,UAAIiB,SAAS,GAAGC,SAAhB,EAA2B;AACzB,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,SAAS,GAAGC,SAAhC,EAA2CC,CAAC,EAA5C,EAAgD;AAC9Cf,UAAAA,QAAQ,CAACgB,OAAT,CAAiBC,IAAjB,kBAAgCjB,QAAQ,CAACgB,OAAT,CAAiBR,MAAjB,GAA0B,CAA1D;AACD;;AAEDR,QAAAA,QAAQ,CAACC,IAAT,CAAciB,OAAd,CAAsB,UAACC,GAAD,EAAS;AAC7B,eAAK,IAAIJ,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGF,SAAS,GAAGC,SAAhC,EAA2CC,EAAC,EAA5C,EAAgD;AAC9CI,YAAAA,GAAG,CAACV,MAAJ,CAAWQ,IAAX,CAAgB,KAAhB;AACD;AACF,SAJD;AAKD,OAVD,MAUO,IAAIJ,SAAS,GAAGC,SAAhB,EAA2B;AAChCd,QAAAA,QAAQ,CAACgB,OAAT,CAAiBd,MAAjB,CAAwBW,SAAxB;AAEAb,QAAAA,QAAQ,CAACC,IAAT,CAAciB,OAAd,CAAsB,UAACC,GAAD,EAAS;AAC7BA,UAAAA,GAAG,CAACV,MAAJ,CAAWP,MAAX,CAAkBW,SAAS,GAAG,CAA9B;AACD,SAFD;AAGD;;AAEDb,MAAAA,QAAQ,CAACW,MAAT,GAAkBE,SAAlB;;AAEA,YAAKV,QAAL,CAAcH,QAAd;AACD,KA/EkB;AAAA,6GAiFI,UAACoB,aAAD,EAAmB;AACxC,UAAQxB,KAAR,GAAkB,MAAKN,KAAvB,CAAQM,KAAR;;AACA,UAAMI,QAAQ,qBAAQJ,KAAR,CAAd,CAFwC,CAIxC;;;AACA,UAAIwB,aAAa,KAAK,OAAtB,EAA+B;AAC7BpB,QAAAA,QAAQ,CAACC,IAAT,CAAciB,OAAd,CAAsB,UAACC,GAAD,EAAS;AAC7B,cAAME,SAAS,GAAGF,GAAG,CAACV,MAAJ,CAAWa,MAAX,CAAkB,UAACC,KAAD,EAAQC,OAAR;AAAA,mBAAqBA,OAAO,KAAK,IAAZ,GAAmBD,KAAK,GAAG,CAA3B,GAA+BA,KAApD;AAAA,WAAlB,CAAlB;;AAEA,cAAIF,SAAS,GAAG,CAAhB,EAAmB;AACjBF,YAAAA,GAAG,CAACV,MAAJ,GAAa,IAAIC,KAAJ,CAAUd,KAAK,CAACe,MAAN,GAAe,CAAzB,EAA4BC,IAA5B,CAAiC,KAAjC,CAAb;AACD;AACF,SAND;AAOD;;AAEDZ,MAAAA,QAAQ,CAACyB,UAAT,GAAsBL,aAAtB;;AAEA,YAAKjB,QAAL,CAAcH,QAAd;AACD,KAnGkB;AAAA,+GAqGM,UAAC0B,cAAD,EAAoB;AAC3C,YAAKpC,KAAL,CAAWM,KAAX,CAAiB8B,cAAjB,GAAkCA,cAAlC;;AAEA,YAAKpC,KAAL,CAAWO,cAAX,CAA0B,MAAKP,KAAL,CAAWM,KAArC;AACD,KAzGkB;AAAA,wGA2GD,UAAC+B,MAAD,EAAY;AAC5B,YAAKrC,KAAL,CAAWO,cAAX,iCAA+B,MAAKP,KAAL,CAAWM,KAA1C;AAAiD+B,QAAAA,MAAM,EAANA;AAAjD;AACD,KA7GkB;AAAA,qHA+GY,UAACC,mBAAD,EAAyB;AACtD,YAAKtC,KAAL,CAAWO,cAAX,iCAA+B,MAAKP,KAAL,CAAWM,KAA1C;AAAiDgC,QAAAA,mBAAmB,EAAnBA;AAAjD;AACD,KAjHkB;AAAA,2GAmHE,UAACC,SAAD,EAAe;AAClC,YAAKvC,KAAL,CAAWO,cAAX,iCAA+B,MAAKP,KAAL,CAAWM,KAA1C;AAAiDiC,QAAAA,SAAS,EAATA;AAAjD;AACD,KArHkB;AAGjB,UAAKvB,YAAL,GAAoBhB,KAAK,CAACM,KAAN,CAAYK,IAAZ,CAAiBX,KAAK,CAACM,KAAN,CAAYK,IAAZ,CAAiBO,MAAjB,GAA0B,CAA3C,EAA8CH,EAA9C,GAAmD,CAAvE;AAEA,UAAKyB,KAAL,GAAa;AACXpC,MAAAA,SAAS,EAAE;AADA,KAAb;AALiB;AAQlB;;;;WA+GD,kBAAS;AACP,yBACE,KAAKJ,KADP;AAAA,UAAQyC,OAAR,gBAAQA,OAAR;AAAA,UAAiBnC,KAAjB,gBAAiBA,KAAjB;AAAA,UAAwBoC,YAAxB,gBAAwBA,YAAxB;AAAA,UAAsCnC,cAAtC,gBAAsCA,cAAtC;AAAA,UAAsDoC,aAAtD,gBAAsDA,aAAtD;AAAA,UAAqEC,sBAArE,gBAAqEA,sBAArE;AAAA,UAA6FC,kBAA7F,gBAA6FA,kBAA7F;;AAEA,iBAgBIF,aAAa,IAAI,EAhBrB;AAAA,uCACEG,iBADF;AAAA,UACEA,iBADF,sCACsB,EADtB;AAAA,mCAEEC,YAFF;AAAA,UAEEA,YAFF,kCAEiB,EAFjB;AAAA,+BAGEvC,QAHF;AAAA,UAGEA,QAHF,8BAGa,EAHb;AAAA,sCAIEwC,eAJF;AAAA,UAIEA,eAJF,qCAIoB,EAJpB;AAAA,oCAKEC,aALF;AAAA,UAKEA,aALF,mCAKkB,EALlB;AAAA,qCAMEC,cANF;AAAA,UAMEA,cANF,oCAMmB,EANnB;AAAA,qCAOEd,cAPF;AAAA,UAOEA,cAPF,oCAOmB,EAPnB;AAAA,6BAQEC,MARF;AAAA,UAQEA,MARF,4BAQW,EARX;AAAA,gCASEE,SATF;AAAA,UASEA,SATF,+BASc,EATd;AAAA,UAUEY,qBAVF,QAUEA,qBAVF;AAAA,kCAWEC,WAXF;AAAA,UAWEA,WAXF,iCAWgB,EAXhB;AAAA,iCAYEC,UAZF;AAAA,UAYEA,UAZF,gCAYe,EAZf;AAAA,uCAaEC,mBAbF;AAAA,UAaEA,mBAbF,sCAawB,EAbxB;AAAA,uCAcEhB,mBAdF;AAAA,UAcEA,mBAdF,sCAcwB,EAdxB;AAAA,iCAeEiB,UAfF;AAAA,UAeEA,UAfF,gCAee,EAff;;AAiBA,kBAOIjD,KAAK,IAAI,EAPb;AAAA,UACEkD,eADF,SACEA,eADF;AAAA,UAEEC,aAFF,SAEEA,aAFF;AAAA,UAGEC,gBAHF,SAGEA,gBAHF;AAAA,UAIEC,iBAJF,SAIEA,iBAJF;AAAA,UAKEC,0BALF,SAKEA,0BALF;AAAA,UAMEC,qBANF,SAMEA,qBANF;;AASA,UAAMC,WAAW,GAAG;AAClBC,QAAAA,QAAQ,EAAEF,qBAAqB,KAAK,KAA1B,GAAkC,KAAlC,GAA0C;AADlC,OAApB;AAIA,UAAMG,oBAAoB,GAAGf,aAAa,IAAIA,aAAa,CAACZ,MAA5D;AACA,UAAM4B,qBAAqB,GAAGf,cAAc,IAAIA,cAAc,CAACb,MAA/D;AAEA,UAAM6B,aAAa,GAAG;AACpBnB,QAAAA,YAAY,EAAEA,YAAY,CAAC3D,QAAb,IAAyBC,MAAM,CAAC0D,YAAY,CAACoB,KAAd,CADzB;AAEpB/B,QAAAA,cAAc,EAAEA,cAAc,CAAChD,QAAf,IAA2BC,MAAM,CAAC+C,cAAc,CAAC+B,KAAhB,CAF7B;AAGpBnB,QAAAA,eAAe,EAAEA,eAAe,CAAC5D,QAAhB,IAA4BC,MAAM,CAAC2D,eAAe,CAACmB,KAAjB,CAH/B;AAIpBX,QAAAA,eAAe,EAAEhD,QAAQ,CAACpB,QAAT,IAAqBC,MAAM,CAACmB,QAAQ,CAAC2D,KAAV;AAJxB,OAAtB;AAMA,UAAMC,eAAe,GAAG;AACtBR,QAAAA,0BAA0B,EAAEtB,mBAAmB,CAAClD,QAApB,IAAgCC,MAAM,CAACiD,mBAAmB,CAAC6B,KAArB,CAD5C;AAEtBE,QAAAA,0BAA0B,EAAEf,mBAAmB,CAAClE,QAApB,IAAgCC,MAAM,CAACiE,mBAAmB,CAACa,KAArB,CAF5C;AAGtBV,QAAAA,aAAa,EAAEpB,MAAM,CAACjD,QAAP,IAAmBC,MAAM,CAACgD,MAAM,CAAC8B,KAAR,CAHlB;AAItBT,QAAAA,gBAAgB,EAAEnB,SAAS,CAACnD,QAAV,IAAsBC,MAAM,CAACkD,SAAS,CAAC4B,KAAX,CAJxB;AAKtBR,QAAAA,iBAAiB,EAAEN,UAAU,CAACjE,QAAX,IAAuBC,MAAM,CAACgE,UAAU,CAACc,KAAZ,CAL1B;AAMtBf,QAAAA,WAAW,EAAEA,WAAW,CAAChE,QAAZ,IAAwBE,KAAK,CAAC8D,WAAW,CAACe,KAAb,EAAoB,CAAC,MAAD,EAAS,QAAT,CAApB,CANpB;AAOtBG,QAAAA,aAAa,EAAE,CAAAf,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEnE,QAAZ,KAAwBC,MAAM,CAACkE,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEY,KAAb;AAPvB,OAAxB;AAUAjF,MAAAA,GAAG,CAAC,gBAAD,EAAmBoB,KAAnB,CAAH;AAEA,0BACE,gCAAC,gBAAD,CAAQ,YAAR;AACE,QAAA,UAAU,EAAEwC,iBADd;AAEE,QAAA,YAAY,EAAEK,qBAFhB;AAGE,QAAA,QAAQ,eACN,gCAAC,KAAD;AACE,UAAA,KAAK,EAAE7C,KADT;AAEE,UAAA,aAAa,EAAEqC,aAFjB;AAGE,UAAA,aAAa,EAAE,uBAACrC,KAAD;AAAA,mBAAWC,cAAc,CAACD,KAAD,CAAzB;AAAA,WAHjB;AAIE,UAAA,qBAAqB,EAAE,+BAACiE,MAAD;AAAA,mBAAY3B,sBAAsB,CAAC2B,MAAD,CAAlC;AAAA,WAJzB;AAKE,UAAA,MAAM,EAAE;AACNC,YAAAA,QAAQ,EAAEN,aADJ;AAENO,YAAAA,UAAU,EAAEL;AAFN;AALV;AAJJ,SAgBGR,0BAA0B,iBACzB,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEtB,mBAAmB,CAAC6B,KAA3C;AAAkD,QAAA,SAAS,EAAE1B,OAAO,CAAChD;AAArE,sBACE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAEgD,OAAO,CAACJ,MADrB;AAEE,QAAA,MAAM,EAAE/B,KAAK,CAACgC,mBAAN,IAA6B,EAFvC;AAGE,QAAA,QAAQ,EAAE,KAAKoC,4BAHjB;AAIE,QAAA,YAAY,EAAEhC,YAJhB;AAKE,QAAA,QAAQ,EAAE,KALZ;AAME,QAAA,WAAW,EAAEoB,WANf;AAOE,QAAA,UAAU,EAAEH,iBAPd;AAQE,QAAA,aAAa,EAAGV,aAAa,IAAIA,aAAa,CAACX,mBAAhC,IAAwD0B,oBARzE;AASE,QAAA,cAAc,EAAGd,cAAc,IAAIA,cAAc,CAACZ,mBAAlC,IAA0D2B,qBAT5E;AAUE,QAAA,kBAAkB,EAAEpB,kBAVtB;AAWE,QAAA,uBAAuB,EAAE,CAAC;AAAE8B,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B;AAX3B,QADF,CAjBJ,EAkCGlB,aAAa,iBACZ,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEpB,MAAM,CAAC8B,KAA9B;AAAqC,QAAA,SAAS,EAAE1B,OAAO,CAAChD;AAAxD,sBACE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAEgD,OAAO,CAACJ,MADrB;AAEE,QAAA,MAAM,EAAE/B,KAAK,CAAC+B,MAFhB;AAGE,QAAA,QAAQ,EAAE,KAAKuC,eAHjB;AAIE,QAAA,YAAY,EAAElC,YAJhB;AAKE,QAAA,QAAQ,EAAE,KALZ;AAME,QAAA,gBAAgB,MANlB;AAOE,QAAA,WAAW,EAAEoB,WAPf;AAQE,QAAA,UAAU,EAAEH,iBARd;AASE,QAAA,aAAa,EAAEV,aAAa,IAAIA,aAAa,CAACZ,MAThD;AAUE,QAAA,cAAc,EAAEa,cAAc,IAAIA,cAAc,CAACb,MAVnD;AAWE,QAAA,kBAAkB,EAAEQ,kBAXtB;AAYE,QAAA,uBAAuB,EAAE,CAAC;AAAE8B,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B;AAZ3B,QADF,CAnCJ,eAqDE,gCAAC,8BAAD;AACE,QAAA,KAAK,EAAErE,KADT;AAEE,QAAA,aAAa,EAAEqC,aAFjB;AAGE,QAAA,oBAAoB,EAAE,KAAKkC,oBAH7B;AAIE,QAAA,cAAc,EAAE,KAAKC;AAJvB,QArDF,eA4DE,gCAAC,6BAAD;AACE,QAAA,KAAK,EAAExE,KADT;AAEE,QAAA,aAAa,EAAEqC,aAFjB;AAGE,QAAA,YAAY,EAAED,YAHhB;AAIE,QAAA,QAAQ,EAAE,KAAK7B,QAJjB;AAKE,QAAA,QAAQ,EAAE,KAAKkE,QALjB;AAME,QAAA,WAAW,EAAE,KAAKC,WANpB;AAOE,QAAA,WAAW,EAAElB,WAPf;AAQE,QAAA,UAAU,EAAEH,iBARd;AASE,QAAA,kBAAkB,EAAEd;AATtB,QA5DF,EAwEGa,gBAAgB,iBACf,gCAAC,wBAAD;AAAgB,QAAA,KAAK,EAAEnB,SAAS,CAAC4B,KAAjC;AAAwC,QAAA,SAAS,EAAE1B,OAAO,CAAChD;AAA3D,sBACE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAEgD,OAAO,CAACJ,MADrB;AAEE,QAAA,MAAM,EAAE/B,KAAK,CAACiC,SAAN,IAAmB,EAF7B;AAGE,QAAA,QAAQ,EAAE,KAAK0C,kBAHjB;AAIE,QAAA,YAAY,EAAEvC,YAJhB;AAKE,QAAA,WAAW,EAAEoB,WALf;AAME,QAAA,UAAU,EAAEH,iBANd;AAOE,QAAA,aAAa,EAAGV,aAAa,IAAIA,aAAa,CAACV,SAAhC,IAA8CyB,oBAP/D;AAQE,QAAA,cAAc,EAAGd,cAAc,IAAIA,cAAc,CAACX,SAAlC,IAAgD0B,qBARlE;AASE,QAAA,kBAAkB,EAAEpB,kBATtB;AAUE,QAAA,uBAAuB,EAAE,CAAC;AAAE8B,UAAAA,QAAQ,EAAE;AAAZ,SAAD,EAA0B;AAAEA,UAAAA,QAAQ,EAAE;AAAZ,SAA1B;AAV3B,QADF,CAzEJ,EAyFGnB,eAAe,iBACd,gCAAC,wBAAD;AAAgB,QAAA,QAAQ,EAAElD,KAAK,CAACE,QAAhC;AAA0C,QAAA,QAAQ,EAAE,KAAK0E,gBAAzD;AAA2E,QAAA,WAAW,EAAEpB;AAAxF,QA1FJ,CADF;AA+FD;;;EAjSqBqB,kBAAMC,S;;iCAAxBrF,S,eACe;AACjBQ,EAAAA,cAAc,EAAE8E,sBAAUC,IADT;AAEjB1C,EAAAA,sBAAsB,EAAEyC,sBAAUC,IAFjB;AAGjB7C,EAAAA,OAAO,EAAE4C,sBAAUE,MAHF;AAIjBjF,EAAAA,KAAK,EAAE+E,sBAAUE,MAAV,CAAiBC,UAJP;AAKjB7C,EAAAA,aAAa,EAAE0C,sBAAUE,MAAV,CAAiBC,UALf;AAMjB9C,EAAAA,YAAY,EAAE2C,sBAAUI,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEL,sBAAUC,IAAV,CAAeE,UADQ;AAE5B,cAAQH,sBAAUC,IAAV,CAAeE;AAFK,GAAhB,CANG;AAUjB3C,EAAAA,kBAAkB,EAAEwC,sBAAUI,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAEL,sBAAUC,IAAV,CAAeE,UADc;AAElC,cAAQH,sBAAUC,IAAV,CAAeE;AAFW,GAAhB;AAVH,C;iCADfzF,S,kBAiBkB;AACpB0C,EAAAA,OAAO,EAAE;AADW,C;AAmRjB,IAAMkD,MAAM,GAAG5F,SAAf;;;eAEQ,2BAAgB,wBAAWR,MAAX,EAAmBQ,SAAnB,CAAhB,C","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, settings, layout, InputContainer } 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 } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\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 this.rowIdCounter = props.model.rows[props.model.rows.length - 1].id + 1;\n\n this.state = {\n activeTab: 0,\n };\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 } = this.props;\n const newModel = { ...model };\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 contentDimensions = {},\n enableImages = {},\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 } = configuration || {};\n const {\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n enableImages: enableImages.settings && toggle(enableImages.label),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\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 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 nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <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 toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.onFeedbackChange} toolbarOpts={toolbarOpts} />\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","Configure","props","event","value","setState","activeTab","index","model","onModelChanged","feedback","rowIndex","newModel","rows","splice","onChange","concat","id","rowIdCounter","title","length","values","Array","layout","fill","newLayout","oldLayout","i","headers","push","forEach","row","newChoiceMode","trueCount","reduce","total","current","choiceMode","partialScoring","prompt","teacherInstructions","rationale","state","classes","imageSupport","configuration","onConfigurationChanged","uploadSoundSupport","contentDimensions","enableImages","lockChoiceOrder","maxImageWidth","maxImageHeight","settingsPanelDisabled","scoringType","spellCheck","studentInstructions","withRubric","language","languageChoices","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","toolbarOpts","position","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","label","enabled","options","panelProperties","studentInstructionsEnabled","rubricEnabled","config","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onResponseTypeChange","onLayoutChange","onAddRow","onDeleteRow","onRationaleChanged","onFeedbackChange","React","Component","PropTypes","func","object","isRequired","shape","add","Config"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, settings, layout, InputContainer } 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});\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 this.rowIdCounter = props.model.rows[props.model.rows.length - 1].id + 1;\n\n this.state = {\n activeTab: 0,\n };\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 } = this.props;\n const newModel = { ...model };\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 contentDimensions = {},\n enableImages = {},\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 feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n enableImages: enableImages.settings && toggle(enableImages.label),\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 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 nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <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 toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.onFeedbackChange} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport const Config = Configure;\n\nexport default withDragContext(withStyles(styles)(Configure));\n"],"file":"configure.js"}
@@ -111,6 +111,15 @@ var _default = {
111
111
  mathMlOptions: {
112
112
  mmlOutput: false,
113
113
  mmlEditing: false
114
+ },
115
+ language: {
116
+ settings: false,
117
+ label: 'Specify Language',
118
+ enabled: false
119
+ },
120
+ languageChoices: {
121
+ label: 'Language Choices',
122
+ options: []
114
123
  }
115
124
  }
116
125
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","enableImages","headers","layout","lockChoiceOrder","partialScoring","choiceMode","prompt","toolbarEditorPosition","rows","id","title","values","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","settings","label","feedback","enabled","rationale","settingsPanelDisabled","spellCheck","studentInstructions","teacherInstructions","maxImageWidth","rowTitles","maxImageHeight","withRubric","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","mathMlOptions","mmlOutput","mmlEditing"],"mappings":"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","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configuration\n */\n\nexport default {\n model: {\n enableImages: true,\n headers: ['Column 1', 'Column 2', 'Column 3'],\n layout: 3,\n lockChoiceOrder: true,\n partialScoring: false,\n choiceMode: 'radio',\n prompt: 'Prompt goes here',\n toolbarEditorPosition: 'bottom',\n rows: [\n {\n id: 1,\n title: 'Question Text 1',\n values: [false, false],\n },\n ],\n scoringType: 'auto',\n feedbackEnabled: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n },\n configuration: {\n enableImages: {\n settings: true,\n label: 'Enable Images',\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n enabled: true,\n },\n headers: {\n settings: true,\n },\n layout: {\n settings: true,\n label: 'Layout',\n },\n lockChoiceOrder: {\n settings: false,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowTitles: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowTitles: 150,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n minQuestions: 2,\n maxQuestions: 5,\n maxLengthQuestionsHeading: 100,\n maxAnswers: 5,\n maxLengthAnswers: 100,\n maxLengthFirstColumnHeading: 100,\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n },\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","enableImages","headers","layout","lockChoiceOrder","partialScoring","choiceMode","prompt","toolbarEditorPosition","rows","id","title","values","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","settings","label","feedback","enabled","rationale","settingsPanelDisabled","spellCheck","studentInstructions","teacherInstructions","maxImageWidth","rowTitles","maxImageHeight","withRubric","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":"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","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configuration\n */\n\nexport default {\n model: {\n enableImages: true,\n headers: ['Column 1', 'Column 2', 'Column 3'],\n layout: 3,\n lockChoiceOrder: true,\n partialScoring: false,\n choiceMode: 'radio',\n prompt: 'Prompt goes here',\n toolbarEditorPosition: 'bottom',\n rows: [\n {\n id: 1,\n title: 'Question Text 1',\n values: [false, false],\n },\n ],\n scoringType: 'auto',\n feedbackEnabled: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n },\n configuration: {\n enableImages: {\n settings: true,\n label: 'Enable Images',\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n enabled: true,\n },\n headers: {\n settings: true,\n },\n layout: {\n settings: true,\n label: 'Layout',\n },\n lockChoiceOrder: {\n settings: false,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowTitles: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowTitles: 150,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n minQuestions: 2,\n maxQuestions: 5,\n maxLengthQuestionsHeading: 100,\n maxAnswers: 5,\n maxLengthAnswers: 100,\n maxLengthFirstColumnHeading: 100,\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"file":"defaults.js"}
@@ -68,7 +68,39 @@ var MatchConfigure = /*#__PURE__*/function (_HTMLElement) {
68
68
  }, {
69
69
  key: "configuration",
70
70
  set: function set(c) {
71
- this._configuration = c;
71
+ var _this2 = this;
72
+
73
+ this._configuration = c; // if language:enabled is true, then the corresponding default item model should include a language value;
74
+ // if it is false, then the language field should be omitted from the item model.
75
+ // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,
76
+ // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).
77
+
78
+ if (c.language.enabled) {
79
+ var _c$languageChoices, _c$languageChoices$op;
80
+
81
+ if ((_c$languageChoices = c.languageChoices) !== null && _c$languageChoices !== void 0 && (_c$languageChoices$op = _c$languageChoices.options) !== null && _c$languageChoices$op !== void 0 && _c$languageChoices$op.length) {
82
+ this._model.language = c.languageChoices.options[0].value;
83
+ }
84
+ } else if (c.language.settings && this._model.language) {
85
+ this._configuration.language.enabled = true;
86
+
87
+ if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {
88
+ this._configuration.languageChoices.options = [];
89
+ } // check if the language is already included in the languageChoices.options array
90
+ // and if not, then add it.
91
+
92
+
93
+ if (!this._configuration.languageChoices.options.find(function (option) {
94
+ return option.value === _this2._model.language;
95
+ })) {
96
+ this._configuration.languageChoices.options.push({
97
+ value: this._model.language,
98
+ label: this._model.language
99
+ });
100
+ }
101
+ } else {
102
+ delete this._model.language;
103
+ }
72
104
 
73
105
  this._render();
74
106
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","MatchConfigure","_model","createDefaultModel","_configuration","defaultValues","configuration","m","_render","c","model","dispatchEvent","ModelUpdatedEvent","config","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","el","React","createElement","Configure","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAOA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,8BAAN,CAAZ;;IAEqBC,c;;;;;AAMnB,4BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,MAAL,GAAcD,cAAc,CAACE,kBAAf,EAAd;AACA,UAAKC,cAAL,GAAsBC,qBAAcC,aAApC;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKL,MAAL,GAAcD,cAAc,CAACE,kBAAf,CAAkCI,CAAlC,CAAd;;AACA,WAAKC,OAAL;AACD;;;SAED,aAAkBC,CAAlB,EAAqB;AACnB,WAAKL,cAAL,GAAsBK,CAAtB;;AACA,WAAKD,OAAL;AACD;;;WAED,wBAAeE,KAAf,EAAsB;AACpB,WAAKR,MAAL,GAAcQ,KAAd;AACAV,MAAAA,GAAG,CAAC,oBAAD,EAAuB,KAAKE,MAA5B,CAAH;;AACA,WAAKM,OAAL;;AACA,WAAKG,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,KAAKV,MAA3B,CAAnB;AACD;;;WAED,gCAAuBW,MAAvB,EAA+B;AAC7B,WAAKT,cAAL,GAAsBS,MAAtB;;AACA,WAAKL,OAAL;AACD;AAED;AACF;AACA;AACA;;;;WACE,qBAAYM,OAAZ,EAAqB;AACnB,WAAKH,aAAL,CAAmB,IAAII,oCAAJ,CAAqBD,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKN,aAAL,CAAmB,IAAIO,oCAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,qBAAYH,OAAZ,EAAqB;AACnB,WAAKH,aAAL,CAAmB,IAAIQ,oCAAJ,CAAqBL,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKN,aAAL,CAAmB,IAAIS,oCAAJ,CAAqBJ,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,mBAAU;AACR,UAAI,KAAKf,MAAT,EAAiB;AACf,YAAMmB,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,qBAApB,EAA+B;AACxCC,UAAAA,cAAc,EAAE,KAAKA,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CADwB;AAExCC,UAAAA,sBAAsB,EAAE,KAAKA,sBAAL,CAA4BD,IAA5B,CAAiC,IAAjC,CAFgB;AAGxChB,UAAAA,KAAK,EAAE,KAAKR,MAH4B;AAIxCI,UAAAA,aAAa,EAAE,KAAKF,cAJoB;AAKxCwB,UAAAA,YAAY,EAAE;AACZC,YAAAA,GAAG,EAAE,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CADO;AAEZ,sBAAQ,KAAKK,aAAL,CAAmBL,IAAnB,CAAwB,IAAxB;AAFI,WAL0B;AASxCM,UAAAA,kBAAkB,EAAE;AAClBH,YAAAA,GAAG,EAAE,KAAKI,WAAL,CAAiBP,IAAjB,CAAsB,IAAtB,CADa;AAElB,sBAAQ,KAAKQ,aAAL,CAAmBR,IAAnB,CAAwB,IAAxB;AAFU;AAToB,SAA/B,CAAX;;AAcAS,6BAASC,MAAT,CAAgBf,EAAhB,EAAoB,IAApB;AACD;AACF;;;kDAxEyCgB,W;;;iCAAvBpC,c,wBACS;AAAA,MAACS,KAAD,uEAAS,EAAT;AAAA,yCACvBL,qBAAcK,KADS,GAEvBA,KAFuB;AAAA,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Configure from './configure';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults';\n\nconst log = debug('pie-elements:match:configure');\n\nexport default class MatchConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaultValues.model,\n ...model,\n });\n\n constructor() {\n super();\n this._model = MatchConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = MatchConfigure.createDefaultModel(m);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this._render();\n }\n\n onModelChanged(model) {\n this._model = model;\n log('[onModelChanged]: ', this._model);\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n }\n\n onConfigurationChanged(config) {\n this._configuration = config;\n this._render();\n }\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","MatchConfigure","_model","createDefaultModel","_configuration","defaultValues","configuration","m","_render","c","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","model","dispatchEvent","ModelUpdatedEvent","config","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","el","React","createElement","Configure","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Configure from './configure';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults';\n\nconst log = debug('pie-elements:match:configure');\n\nexport default class MatchConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaultValues.model,\n ...model,\n });\n\n constructor() {\n super();\n this._model = MatchConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = MatchConfigure.createDefaultModel(m);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = c;\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (c.language.enabled) {\n if (c.languageChoices?.options?.length) {\n this._model.language = c.languageChoices.options[0].value;\n }\n } else if (c.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._render();\n }\n\n onModelChanged(model) {\n this._model = model;\n log('[onModelChanged]: ', this._model);\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n }\n\n onConfigurationChanged(config) {\n this._configuration = config;\n this._render();\n }\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/match-configure",
3
3
  "private": true,
4
- "version": "5.11.5",
4
+ "version": "5.12.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -10,10 +10,10 @@
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/config-ui": "^11.9.4",
13
+ "@pie-lib/config-ui": "^11.9.7",
14
14
  "@pie-lib/drag": "^2.2.4",
15
- "@pie-lib/editable-html": "^9.7.8",
16
- "@pie-lib/scoring-config": "^3.6.45",
15
+ "@pie-lib/editable-html": "^10.0.2",
16
+ "@pie-lib/scoring-config": "^3.6.48",
17
17
  "classnames": "^2.2.5",
18
18
  "debug": "^3.1.0",
19
19
  "prop-types": "^15.6.2",
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.9.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.8.6...@pie-element/match-controller@4.9.0) (2023-09-04)
7
+
8
+
9
+ ### Features
10
+
11
+ * **match:** translations PD-2802 PD-2795 ([ff0d065](https://github.com/pie-framework/pie-elements/commit/ff0d065dd15d4f2cca94cf521123b9b466b1d424))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [4.8.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@4.8.5...@pie-element/match-controller@4.8.6) (2023-07-06)
7
18
 
8
19
 
@@ -273,7 +273,8 @@ function model(question, session, env, updateSession) {
273
273
  }),
274
274
  feedback: feedback,
275
275
  disabled: env.mode !== 'gather',
276
- view: env.mode === 'view'
276
+ view: env.mode === 'view',
277
+ language: normalizedQuestion.language
277
278
  };
278
279
 
279
280
  if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
@@ -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","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","updateSession","normalizedQuestion","correctResponse","correctInfo","lockChoiceOrder","fb","feedback","then","allowFeedback","prompt","config","shuffled","disabled","view","role","teacherInstructions","rationale","assign","createCorrectResponseSession","r","markupToText","s","replace","validate","headers","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","noOfRowsError","index","title","hasCorrectResponse","identicalAnswer","slice","some","columnsLengthError","validateHeaders","map","heading","shift","h","indexOf","hasRowErrors","entries","rowError","noCorrectAnswer","includes","correctResponseError"],"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) => ({\n feedbackEnabled: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\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 out = {\n allowFeedback: normalizedQuestion.feedbackEnabled,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n config: {\n ...normalizedQuestion,\n shuffled: !normalizedQuestion.lockChoiceOrder,\n },\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 out.config.rationale = null;\n out.config.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\nconst markupToText = (s) => {\n return (s || '').replace(/(<([^>]+)>)/ig, '');\n};\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 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 let hasCorrectResponse = false;\n\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && markupToText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Questions rows content length should not be more than ${maxLengthQuestionsHeading} characters. `;\n } else if (title === '' || title === '<div></div>') {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n const identicalAnswer = rows.slice(index + 1).some((r) => {\n return markupToText(r.title) === markupToText(title);\n });\n\n if (identicalAnswer) {\n rowsErrors[id] = 'Content should be unique. ';\n }\n }\n\n values.forEach((value) => {\n if (value) {\n hasCorrectResponse = true;\n }\n });\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] = `The first column heading should have the maximum length of ${maxLengthFirstColumnHeading} characters.`;\n }\n\n //remove first column since it does not require validation\n const validateHeaders = (cloneDeep(headers) || []).map(heading => markupToText(heading));\n validateHeaders.shift();\n\n (validateHeaders || []).forEach((heading, index) => {\n if (heading === '' || heading === '<div></div>') {\n columnsErrors[index + 1] = 'Content should not be empty.';\n } else if (maxLengthAnswers && heading.length > maxLengthAnswers) {\n columnsErrors[index + 1] = `Content length should be maximum ${maxLengthAnswers} characters.`;\n } else {\n const identicalAnswer = validateHeaders.some((h, index) => {\n if (h === heading) {\n return validateHeaders.indexOf(h) !== index;\n }\n });\n\n if (identicalAnswer) {\n columnsErrors[index + 1] = 'Content should be unique.';\n }\n }\n });\n\n let hasRowErrors = false;\n Object.entries(rowsErrors).forEach(([, rowError]) => {\n if (rowError.length) {\n hasRowErrors = true;\n }\n });\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n let noCorrectAnswer = false;\n\n Object.entries(rowsErrors).forEach(([, rowError]) => {\n if ((rowError || '').includes('No correct response defined.')) {\n noCorrectAnswer = true;\n }\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 if (!isEmpty(columnsErrors)) {\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","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","updateSession","normalizedQuestion","correctResponse","correctInfo","lockChoiceOrder","fb","feedback","then","allowFeedback","prompt","config","shuffled","disabled","view","language","role","teacherInstructions","rationale","assign","createCorrectResponseSession","r","markupToText","s","replace","validate","headers","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","noOfRowsError","index","title","hasCorrectResponse","identicalAnswer","slice","some","columnsLengthError","validateHeaders","map","heading","shift","h","indexOf","hasRowErrors","entries","rowError","noCorrectAnswer","includes","correctResponseError"],"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) => ({\n feedbackEnabled: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\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 out = {\n allowFeedback: normalizedQuestion.feedbackEnabled,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n config: {\n ...normalizedQuestion,\n shuffled: !normalizedQuestion.lockChoiceOrder,\n },\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n language: normalizedQuestion.language\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 out.config.rationale = null;\n out.config.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\nconst markupToText = (s) => {\n return (s || '').replace(/(<([^>]+)>)/ig, '');\n};\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 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 let hasCorrectResponse = false;\n\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && markupToText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Questions rows content length should not be more than ${maxLengthQuestionsHeading} characters. `;\n } else if (title === '' || title === '<div></div>') {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n const identicalAnswer = rows.slice(index + 1).some((r) => {\n return markupToText(r.title) === markupToText(title);\n });\n\n if (identicalAnswer) {\n rowsErrors[id] = 'Content should be unique. ';\n }\n }\n\n values.forEach((value) => {\n if (value) {\n hasCorrectResponse = true;\n }\n });\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] = `The first column heading should have the maximum length of ${maxLengthFirstColumnHeading} characters.`;\n }\n\n //remove first column since it does not require validation\n const validateHeaders = (cloneDeep(headers) || []).map(heading => markupToText(heading));\n validateHeaders.shift();\n\n (validateHeaders || []).forEach((heading, index) => {\n if (heading === '' || heading === '<div></div>') {\n columnsErrors[index + 1] = 'Content should not be empty.';\n } else if (maxLengthAnswers && heading.length > maxLengthAnswers) {\n columnsErrors[index + 1] = `Content length should be maximum ${maxLengthAnswers} characters.`;\n } else {\n const identicalAnswer = validateHeaders.some((h, index) => {\n if (h === heading) {\n return validateHeaders.indexOf(h) !== index;\n }\n });\n\n if (identicalAnswer) {\n columnsErrors[index + 1] = 'Content should be unique.';\n }\n }\n });\n\n let hasRowErrors = false;\n Object.entries(rowsErrors).forEach(([, rowError]) => {\n if (rowError.length) {\n hasRowErrors = true;\n }\n });\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n let noCorrectAnswer = false;\n\n Object.entries(rowsErrors).forEach(([, rowError]) => {\n if ((rowError || '').includes('No correct response defined.')) {\n noCorrectAnswer = true;\n }\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 if (!isEmpty(columnsErrors)) {\n errors.columnsErrors = columnsErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/match-controller",
3
3
  "private": true,
4
- "version": "4.8.6",
4
+ "version": "4.9.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -335,6 +335,66 @@
335
335
  }
336
336
  }
337
337
  },
338
+ "language": {
339
+ "title": "ConfigurePropWithEnabled",
340
+ "type": "object",
341
+ "properties": {
342
+ "settings": {
343
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
344
+ "type": "boolean",
345
+ "title": "settings"
346
+ },
347
+ "label": {
348
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
349
+ "type": "string",
350
+ "title": "label"
351
+ },
352
+ "enabled": {
353
+ "description": "Indicates the value of the item if it affects config-ui\n(eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)",
354
+ "type": "boolean",
355
+ "title": "enabled"
356
+ }
357
+ }
358
+ },
359
+ "languageChoices": {
360
+ "description": "Language choices configuration\nOnly available if language is enabled",
361
+ "type": "object",
362
+ "properties": {
363
+ "label": {
364
+ "type": "string",
365
+ "title": "label"
366
+ },
367
+ "options": {
368
+ "type": "array",
369
+ "items": {
370
+ "title": "ConfigureLanguageOptionsProp",
371
+ "type": "object",
372
+ "properties": {
373
+ "value": {
374
+ "description": "Value of the language option",
375
+ "type": "string",
376
+ "title": "value"
377
+ },
378
+ "label": {
379
+ "description": "Label of the language option",
380
+ "type": "string",
381
+ "title": "label"
382
+ }
383
+ },
384
+ "required": [
385
+ "label",
386
+ "value"
387
+ ]
388
+ },
389
+ "title": "options"
390
+ }
391
+ },
392
+ "required": [
393
+ "label",
394
+ "options"
395
+ ],
396
+ "title": "languageChoices"
397
+ },
338
398
  "showPrompt": {
339
399
  "description": "Determines whether prompt field will be displayed or not",
340
400
  "default": true,
@@ -459,6 +519,47 @@
459
519
  "title": "mmlEditing"
460
520
  }
461
521
  }
522
+ },
523
+ "ConfigurePropWithEnabled": {
524
+ "title": "ConfigurePropWithEnabled",
525
+ "type": "object",
526
+ "properties": {
527
+ "settings": {
528
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
529
+ "type": "boolean",
530
+ "title": "settings"
531
+ },
532
+ "label": {
533
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
534
+ "type": "string",
535
+ "title": "label"
536
+ },
537
+ "enabled": {
538
+ "description": "Indicates the value of the item if it affects config-ui\n(eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)",
539
+ "type": "boolean",
540
+ "title": "enabled"
541
+ }
542
+ }
543
+ },
544
+ "ConfigureLanguageOptionsProp": {
545
+ "title": "ConfigureLanguageOptionsProp",
546
+ "type": "object",
547
+ "properties": {
548
+ "value": {
549
+ "description": "Value of the language option",
550
+ "type": "string",
551
+ "title": "value"
552
+ },
553
+ "label": {
554
+ "description": "Label of the language option",
555
+ "type": "string",
556
+ "title": "label"
557
+ }
558
+ },
559
+ "required": [
560
+ "label",
561
+ "value"
562
+ ]
462
563
  }
463
564
  },
464
565
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -254,6 +254,46 @@ Indicates if model should have mathML output instead of latex
254
254
 
255
255
  Indicates if mathML that's already in model should be editable
256
256
 
257
+ # `language` (object)
258
+
259
+ Properties of the `language` object:
260
+
261
+ ## `settings` (boolean)
262
+
263
+ Indicates if the item has to be displayed in the Settings Panel
264
+
265
+ ## `label` (string)
266
+
267
+ Indicates the label for the item that has to be displayed in the Settings Panel
268
+
269
+ ## `enabled` (boolean)
270
+
271
+ Indicates the value of the item if it affects config-ui
272
+ (eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)
273
+
274
+ # `languageChoices` (object)
275
+
276
+ Language choices configuration
277
+ Only available if language is enabled
278
+
279
+ Properties of the `languageChoices` object:
280
+
281
+ ## `label` (string, required)
282
+
283
+ ## `options` (array, required)
284
+
285
+ The object is an array with all elements of the type `object`.
286
+
287
+ The array object has the following properties:
288
+
289
+ ### `value` (string, required)
290
+
291
+ Value of the language option
292
+
293
+ ### `label` (string, required)
294
+
295
+ Label of the language option
296
+
257
297
  # `showPrompt` (boolean)
258
298
 
259
299
  Determines whether prompt field will be displayed or not
@@ -354,4 +394,33 @@ Indicates if model should have mathML output instead of latex
354
394
 
355
395
  ### `mmlEditing` (number)
356
396
 
357
- Indicates if mathML that's already in model should be editable
397
+ Indicates if mathML that's already in model should be editable
398
+
399
+ ## `ConfigurePropWithEnabled` (object)
400
+
401
+ Properties of the `ConfigurePropWithEnabled` object:
402
+
403
+ ### `settings` (boolean)
404
+
405
+ Indicates if the item has to be displayed in the Settings Panel
406
+
407
+ ### `label` (string)
408
+
409
+ Indicates the label for the item that has to be displayed in the Settings Panel
410
+
411
+ ### `enabled` (boolean)
412
+
413
+ Indicates the value of the item if it affects config-ui
414
+ (eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)
415
+
416
+ ## `ConfigureLanguageOptionsProp` (object)
417
+
418
+ Properties of the `ConfigureLanguageOptionsProp` object:
419
+
420
+ ### `value` (string, required)
421
+
422
+ Value of the language option
423
+
424
+ ### `label` (string, required)
425
+
426
+ Label of the language option
@@ -318,6 +318,11 @@
318
318
  "type": "boolean",
319
319
  "title": "rubricEnabled"
320
320
  },
321
+ "language": {
322
+ "description": "Indicates the language of the component\nSupported options: en, es, en_US, en-US, es_ES, es-ES, es_MX, es-MX",
323
+ "type": "string",
324
+ "title": "language"
325
+ },
321
326
  "id": {
322
327
  "description": "Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.",
323
328
  "type": "string",
@@ -403,6 +408,47 @@
403
408
  }
404
409
  }
405
410
  },
411
+ "ConfigurePropWithEnabled": {
412
+ "title": "ConfigurePropWithEnabled",
413
+ "type": "object",
414
+ "properties": {
415
+ "settings": {
416
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
417
+ "type": "boolean",
418
+ "title": "settings"
419
+ },
420
+ "label": {
421
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
422
+ "type": "string",
423
+ "title": "label"
424
+ },
425
+ "enabled": {
426
+ "description": "Indicates the value of the item if it affects config-ui\n(eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)",
427
+ "type": "boolean",
428
+ "title": "enabled"
429
+ }
430
+ }
431
+ },
432
+ "ConfigureLanguageOptionsProp": {
433
+ "title": "ConfigureLanguageOptionsProp",
434
+ "type": "object",
435
+ "properties": {
436
+ "value": {
437
+ "description": "Value of the language option",
438
+ "type": "string",
439
+ "title": "value"
440
+ },
441
+ "label": {
442
+ "description": "Label of the language option",
443
+ "type": "string",
444
+ "title": "label"
445
+ }
446
+ },
447
+ "required": [
448
+ "label",
449
+ "value"
450
+ ]
451
+ },
406
452
  "ComplexFeedbackType": {
407
453
  "title": "ComplexFeedbackType",
408
454
  "type": "object",
@@ -135,6 +135,11 @@ Default: `": 'bottom'"`
135
135
 
136
136
  Indicates if Rubric is enabled
137
137
 
138
+ # `language` (string)
139
+
140
+ Indicates the language of the component
141
+ Supported options: en, es, en_US, en-US, es_ES, es-ES, es_MX, es-MX
142
+
138
143
  # `id` (string, required)
139
144
 
140
145
  Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.
@@ -193,6 +198,35 @@ Indicates if model should have mathML output instead of latex
193
198
 
194
199
  Indicates if mathML that's already in model should be editable
195
200
 
201
+ ## `ConfigurePropWithEnabled` (object)
202
+
203
+ Properties of the `ConfigurePropWithEnabled` object:
204
+
205
+ ### `settings` (boolean)
206
+
207
+ Indicates if the item has to be displayed in the Settings Panel
208
+
209
+ ### `label` (string)
210
+
211
+ Indicates the label for the item that has to be displayed in the Settings Panel
212
+
213
+ ### `enabled` (boolean)
214
+
215
+ Indicates the value of the item if it affects config-ui
216
+ (eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)
217
+
218
+ ## `ConfigureLanguageOptionsProp` (object)
219
+
220
+ Properties of the `ConfigureLanguageOptionsProp` object:
221
+
222
+ ### `value` (string, required)
223
+
224
+ Value of the language option
225
+
226
+ ### `label` (string, required)
227
+
228
+ Label of the language option
229
+
196
230
  ## `ComplexFeedbackType` (object)
197
231
 
198
232
  Properties of the `ComplexFeedbackType` object:
package/lib/main.js CHANGED
@@ -137,7 +137,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
137
137
  showCorrect = _this$state.showCorrect,
138
138
  session = _this$state.session;
139
139
  var _model$correctness = model.correctness,
140
- correctness = _model$correctness === void 0 ? {} : _model$correctness;
140
+ correctness = _model$correctness === void 0 ? {} : _model$correctness,
141
+ language = model.language;
141
142
  var showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';
142
143
  return /*#__PURE__*/_react["default"].createElement("div", {
143
144
  className: classes.mainContainer
@@ -154,6 +155,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
154
155
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
155
156
  prompt: model.prompt
156
157
  })), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
158
+ language: language,
157
159
  show: showCorrectAnswerToggle,
158
160
  toggled: showCorrect,
159
161
  onToggle: this.toggleShowCorrect
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","model","config","answers","rows","forEach","row","id","Array","layout","fill","nextProps","isRequired","choiceMode","length","session","Object","keys","onSessionChange","state","show","setState","showCorrect","newAnswers","callOnSessionChange","generateAnswers","regenAnswers","isAnswerRegenerationRequired","disabled","classes","correctness","showCorrectAnswerToggle","mainContainer","teacherInstructions","hidden","visible","collapsible","prompt","toggleShowCorrect","correctResponse","view","onAnswerChange","headers","rationale","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;AAC3B,UAAQC,MAAR,GAAmBD,KAAnB,CAAQC,MAAR;AACA,UAAMC,OAAO,GAAG,EAAhB;AAEAD,MAAAA,MAAM,CAACE,IAAP,CAAYC,OAAZ,CAAoB,UAACC,GAAD,EAAS;AAC3BH,QAAAA,OAAO,CAACG,GAAG,CAACC,EAAL,CAAP,GAAkB,IAAIC,KAAJ,CAAUN,MAAM,CAACO,MAAP,GAAgB,CAA1B,EAA6BC,IAA7B,CAAkC,KAAlC,CAAlB;AACD,OAFD;AAIA,aAAOP,OAAP;AACD,KAvBkB;AAAA,qHAyBY,UAACQ,SAAD,EAAe;AAC5C,UAAIC,UAAU,GAAG,KAAjB;;AAEA,UAAI,MAAKZ,KAAL,CAAWC,KAAX,CAAiBC,MAAjB,CAAwBW,UAAxB,KAAuCF,SAAS,CAACV,KAAV,CAAgBC,MAAhB,CAAuBW,UAAlE,EAA8E;AAC5ED,QAAAA,UAAU,GAAG,IAAb;AACD;;AAED,UAAI,MAAKZ,KAAL,CAAWC,KAAX,CAAiBC,MAAjB,CAAwBO,MAAxB,KAAmCE,SAAS,CAACV,KAAV,CAAgBC,MAAhB,CAAuBO,MAA9D,EAAsE;AACpEG,QAAAA,UAAU,GAAG,IAAb;AACD;;AAED,UACE,MAAKZ,KAAL,CAAWC,KAAX,CAAiBC,MAAjB,CAAwBE,IAAxB,CAA6BU,MAA7B,KAAwCH,SAAS,CAACV,KAAV,CAAgBC,MAAhB,CAAuBE,IAAvB,CAA4BU,MAApE,IACCH,SAAS,CAACI,OAAV,CAAkBZ,OAAlB,IACCQ,SAAS,CAACV,KAAV,CAAgBC,MAAhB,CAAuBE,IAAvB,CAA4BU,MAA5B,KAAuCE,MAAM,CAACC,IAAP,CAAYN,SAAS,CAACI,OAAV,CAAkBZ,OAA9B,EAAuCW,MAHlF,EAIE;AACAF,QAAAA,UAAU,GAAG,IAAb;AACD;;AAED,aAAOA,UAAU,IAAI,CAACD,SAAS,CAACI,OAAV,CAAkBZ,OAAxC;AACD,KA7CkB;AAAA,4GAkEG,YAAM;AAC1B,UAAQe,eAAR,GAA4B,MAAKlB,KAAjC,CAAQkB,eAAR;;AAEA,UAAIA,eAAJ,EAAqB;AACnBA,QAAAA,eAAe,CAAC,MAAKC,KAAL,CAAWJ,OAAZ,CAAf;AACD;AACF,KAxEkB;AAAA,0GA0EC,UAACK,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;AACVJ,UAAAA,OAAO,kCACFI,KAAK,CAACJ,OADJ;AAELZ,YAAAA,OAAO,EAAEoB;AAFJ;AADG,SAAZ;AAAA,OADF,EAOE,MAAKC,mBAPP;AASD,KAxFkB;AAGjB,UAAKL,KAAL,GAAa;AACXJ,MAAAA,OAAO,kCACFf,KAAK,CAACe,OADJ;AAELZ,QAAAA,OAAO,EAAGH,KAAK,CAACe,OAAN,IAAiBf,KAAK,CAACe,OAAN,CAAcZ,OAAhC,IAA4C,MAAKsB,eAAL,CAAqBzB,KAAK,CAACC,KAA3B;AAFhD,QADI;AAKXqB,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;AACVJ,UAAAA,OAAO,kCACFJ,SAAS,CAACI,OADR;AAEL;AACAZ,YAAAA,OAAO,EAAEuB,YAAY,GAAG,MAAI,CAACD,eAAL,CAAqBd,SAAS,CAACV,KAA/B,CAAH,GAA2CU,SAAS,CAACI,OAAV,CAAkBZ;AAH7E,YADG;AAMVmB,UAAAA,WAAW,EACT,MAAI,CAACtB,KAAL,CAAWC,KAAX,CAAiB2B,QAAjB,IAA6B,CAACjB,SAAS,CAACV,KAAV,CAAgB2B,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,KAAKxB,KAAhC;AAAA,UAAQC,KAAR,eAAQA,KAAR;AAAA,UAAe4B,OAAf,eAAeA,OAAf;AACA,wBAAiC,KAAKV,KAAtC;AAAA,UAAQG,WAAR,eAAQA,WAAR;AAAA,UAAqBP,OAArB,eAAqBA,OAArB;AACA,+BAA6Bd,KAA7B,CAAQ6B,WAAR;AAAA,UAAQA,WAAR,mCAAsB,EAAtB;AACA,UAAMC,uBAAuB,GAAGD,WAAW,CAACA,WAAZ,IAA2BA,WAAW,CAACA,WAAZ,KAA4B,SAAvF;AAEA,0BACE;AAAK,QAAA,SAAS,EAAED,OAAO,CAACG;AAAxB,SACG/B,KAAK,CAACgC,mBAAN,IAA6B,uBAAQhC,KAAK,CAACgC,mBAAd,CAA7B,iBACC,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AACNC,UAAAA,MAAM,EAAE,2BADF;AAENC,UAAAA,OAAO,EAAE;AAFH,SADV;AAKE,QAAA,SAAS,EAAEN,OAAO,CAACO;AALrB,sBAOE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEnC,KAAK,CAACgC;AAA7B,QAPF,CAFJ,EAaGhC,KAAK,CAACoC,MAAN,iBACC;AAAK,QAAA,SAAS,EAAER,OAAO,CAACQ;AAAxB,sBACE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEpC,KAAK,CAACoC;AAA7B,QADF,CAdJ,eAmBE,gCAAC,+BAAD;AAAqB,QAAA,IAAI,EAAEN,uBAA3B;AAAoD,QAAA,OAAO,EAAET,WAA7D;AAA0E,QAAA,QAAQ,EAAE,KAAKgB;AAAzF,QAnBF,eAqBE,gCAAC,sBAAD;AACE,QAAA,WAAW,EAAEhB,WADf;AAEE,QAAA,cAAc,EAAErB,KAAK,CAACsC,eAFxB;AAGE,QAAA,QAAQ,EAAEtC,KAAK,CAAC2B,QAHlB;AAIE,QAAA,IAAI,EAAE3B,KAAK,CAACuC,IAJd;AAKE,QAAA,cAAc,EAAE,KAAKC,cALvB;AAME,QAAA,UAAU,EAAExC,KAAK,CAACC,MAAN,CAAaW,UAN3B;AAOE,QAAA,OAAO,EAAES,WAAW,GAAGrB,KAAK,CAACsC,eAAT,GAA2BxB,OAAO,CAACZ,OAPzD;AAQE,QAAA,OAAO,EAAEF,KAAK,CAACC,MAAN,CAAawC,OARxB;AASE,QAAA,IAAI,EAAEzC,KAAK,CAACC,MAAN,CAAaE;AATrB,QArBF,EAiCGH,KAAK,CAAC0C,SAAN,IAAmB,uBAAQ1C,KAAK,CAAC0C,SAAd,CAAnB,iBACC,gCAAC,qBAAD;AAAa,QAAA,MAAM,EAAE;AAAET,UAAAA,MAAM,EAAE,gBAAV;AAA4BC,UAAAA,OAAO,EAAE;AAArC,SAArB;AAA8E,QAAA,SAAS,EAAEN,OAAO,CAACO;AAAjG,sBACE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEnC,KAAK,CAAC0C;AAA7B,QADF,CAlCJ,EAuCG1C,KAAK,CAAC2C,QAAN,iBAAkB,gCAAC,kBAAD;AAAU,QAAA,WAAW,EAAE3C,KAAK,CAAC6B,WAAN,CAAkBA,WAAzC;AAAsD,QAAA,QAAQ,EAAE7B,KAAK,CAAC2C;AAAtE,QAvCrB,CADF;AA2CD;;;EAnJuBC,kBAAMC,S;;;iCAAnB/C,I,eACQ;AACjB8B,EAAAA,OAAO,EAAEkB,sBAAUC,MADF;AAEjBjC,EAAAA,OAAO,EAAEgC,sBAAUC,MAAV,CAAiBpC,UAFT;AAGjBM,EAAAA,eAAe,EAAE6B,sBAAUE,IAHV;AAIjBhD,EAAAA,KAAK,EAAE8C,sBAAUC,MAAV,CAAiBpC;AAJP,C;;AAqJrB,IAAMsC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBnB,IAAAA,aAAa,EAAE;AACboB,MAAAA,KAAK,EAAEA,gBAAMC,IAAN,EADM;AAEbC,MAAAA,eAAe,EAAEF,gBAAMG,UAAN;AAFJ,KADU;AAKzBC,IAAAA,IAAI,EAAE;AACJC,MAAAA,KAAK,EAAE;AADH,KALmB;AAQzBpB,IAAAA,MAAM,EAAE;AACNqB,MAAAA,aAAa,EAAE;AADT,KARiB;AAWzBtB,IAAAA,WAAW,EAAE;AACXuB,MAAAA,YAAY,EAAER,KAAK,CAACS,OAAN,CAAcC,IAAd,GAAqB;AADxB;AAXY,GAAZ;AAAA,CAAf;;eAgBe,wBAAWX,MAAX,EAAmBnD,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 } 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 { config } = model;\n const answers = {};\n\n config.rows.forEach((row) => {\n answers[row.id] = new Array(config.layout - 1).fill(false);\n });\n\n return answers;\n };\n\n isAnswerRegenerationRequired = (nextProps) => {\n let isRequired = false;\n\n if (this.props.model.config.choiceMode !== nextProps.model.config.choiceMode) {\n isRequired = true;\n }\n\n if (this.props.model.config.layout !== nextProps.model.config.layout) {\n isRequired = true;\n }\n\n if (\n this.props.model.config.rows.length !== nextProps.model.config.rows.length ||\n (nextProps.session.answers &&\n nextProps.model.config.rows.length !== Object.keys(nextProps.session.answers).length)\n ) {\n isRequired = true;\n }\n\n return isRequired || !nextProps.session.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 = {} } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n\n return (\n <div className={classes.mainContainer}>\n {model.teacherInstructions && hasText(model.teacherInstructions) && (\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 show={showCorrectAnswerToggle} toggled={showCorrect} onToggle={this.toggleShowCorrect} />\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.config.choiceMode}\n answers={showCorrect ? model.correctResponse : session.answers}\n headers={model.config.headers}\n rows={model.config.rows}\n />\n\n {model.rationale && hasText(model.rationale) && (\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={model.correctness.correctness} feedback={model.feedback} />}\n </div>\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","config","answers","rows","forEach","row","id","Array","layout","fill","nextProps","isRequired","choiceMode","length","session","Object","keys","onSessionChange","state","show","setState","showCorrect","newAnswers","callOnSessionChange","generateAnswers","regenAnswers","isAnswerRegenerationRequired","disabled","classes","correctness","language","showCorrectAnswerToggle","mainContainer","teacherInstructions","hidden","visible","collapsible","prompt","toggleShowCorrect","correctResponse","view","onAnswerChange","headers","rationale","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/correct-answer-toggle';\nimport { color, Collapsible, Feedback, hasText, PreviewPrompt } 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 { config } = model;\n const answers = {};\n\n config.rows.forEach((row) => {\n answers[row.id] = new Array(config.layout - 1).fill(false);\n });\n\n return answers;\n };\n\n isAnswerRegenerationRequired = (nextProps) => {\n let isRequired = false;\n\n if (this.props.model.config.choiceMode !== nextProps.model.config.choiceMode) {\n isRequired = true;\n }\n\n if (this.props.model.config.layout !== nextProps.model.config.layout) {\n isRequired = true;\n }\n\n if (\n this.props.model.config.rows.length !== nextProps.model.config.rows.length ||\n (nextProps.session.answers &&\n nextProps.model.config.rows.length !== Object.keys(nextProps.session.answers).length)\n ) {\n isRequired = true;\n }\n\n return isRequired || !nextProps.session.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 = {}, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n\n return (\n <div className={classes.mainContainer}>\n {model.teacherInstructions && hasText(model.teacherInstructions) && (\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.config.choiceMode}\n answers={showCorrect ? model.correctResponse : session.answers}\n headers={model.config.headers}\n rows={model.config.rows}\n />\n\n {model.rationale && hasText(model.rationale) && (\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={model.correctness.correctness} feedback={model.feedback} />}\n </div>\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": "5.11.6-next.7+5c3fb1ceb",
7
+ "version": "5.12.0",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -17,6 +17,7 @@
17
17
  "@pie-lib/correct-answer-toggle": "^2.5.2",
18
18
  "@pie-lib/math-rendering": "^2.5.17",
19
19
  "@pie-lib/render-ui": "^4.15.1",
20
+ "@pie-lib/translator": "^2.2.0",
20
21
  "classnames": "^2.2.5",
21
22
  "debug": "^4.1.1",
22
23
  "lodash": "^4.17.10",
@@ -26,6 +27,6 @@
26
27
  },
27
28
  "author": "",
28
29
  "license": "ISC",
29
- "gitHead": "5c3fb1ceb3348b777aa37131cffecefe0e9a4bae",
30
+ "gitHead": "601ddbccecfff533d0670698fe99ce91759165fe",
30
31
  "module": "src/index.js"
31
32
  }