@pie-element/categorize 9.15.2 → 9.15.4-next.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/configure/CHANGELOG.md +11 -0
  3. package/configure/lib/design/categories/RowLabel.js +3 -3
  4. package/configure/lib/design/categories/RowLabel.js.map +1 -1
  5. package/configure/lib/design/categories/alternateResponses.js +1 -1
  6. package/configure/lib/design/categories/alternateResponses.js.map +1 -1
  7. package/configure/lib/design/categories/choice-preview.js +2 -2
  8. package/configure/lib/design/categories/choice-preview.js.map +1 -1
  9. package/configure/lib/design/categories/droppable-placeholder.js +1 -1
  10. package/configure/lib/design/categories/droppable-placeholder.js.map +1 -1
  11. package/configure/lib/design/categories/index.js +3 -3
  12. package/configure/lib/design/categories/index.js.map +1 -1
  13. package/configure/lib/design/choices/choice.js +2 -2
  14. package/configure/lib/design/choices/choice.js.map +1 -1
  15. package/configure/lib/design/choices/index.js +2 -2
  16. package/configure/lib/design/choices/index.js.map +1 -1
  17. package/configure/lib/design/index.js +8 -8
  18. package/configure/lib/design/index.js.map +1 -1
  19. package/configure/lib/design/input-header.js +2 -2
  20. package/configure/lib/design/input-header.js.map +1 -1
  21. package/configure/lib/index.js +1 -1
  22. package/configure/lib/index.js.map +1 -1
  23. package/configure/package.json +8 -2
  24. package/controller/CHANGELOG.md +11 -0
  25. package/controller/lib/index.js +4 -4
  26. package/controller/lib/index.js.map +1 -1
  27. package/controller/package.json +5 -2
  28. package/lib/categorize/categories.js +1 -1
  29. package/lib/categorize/categories.js.map +1 -1
  30. package/lib/categorize/category.js +1 -1
  31. package/lib/categorize/category.js.map +1 -1
  32. package/lib/categorize/choice.js +2 -2
  33. package/lib/categorize/choice.js.map +1 -1
  34. package/lib/categorize/droppable-placeholder.js +1 -1
  35. package/lib/categorize/droppable-placeholder.js.map +1 -1
  36. package/lib/categorize/index.js +7 -7
  37. package/lib/categorize/index.js.map +1 -1
  38. package/lib/index.js +2 -2
  39. package/lib/index.js.map +1 -1
  40. package/package.json +9 -3
package/CHANGELOG.md CHANGED
@@ -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
+ ## [9.15.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@9.15.2...@pie-element/categorize@9.15.3) (2025-09-11)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-5198, PD-5187 ([f04a94c](https://github.com/pie-framework/pie-elements/commit/f04a94c62a29d77fcb17b473b7de1022ad65eeb4))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [9.15.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@9.15.1...@pie-element/categorize@9.15.2) (2025-09-09)
7
18
 
8
19
 
@@ -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
+ ## [8.7.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@8.7.8...@pie-element/categorize-configure@8.7.9) (2025-09-11)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update pie-lib/pie-toolbox PD-5198, PD-5187 ([f04a94c](https://github.com/pie-framework/pie-elements/commit/f04a94c62a29d77fcb17b473b7de1022ad65eeb4))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [8.7.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@8.7.7...@pie-element/categorize-configure@8.7.8) (2025-09-09)
7
18
 
8
19
 
@@ -13,9 +13,9 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _styles = require("@material-ui/core/styles");
15
15
 
16
- var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
16
+ var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
17
17
 
18
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
18
+ var _renderUi = require("@pie-lib/render-ui");
19
19
 
20
20
  var styles = function styles(theme) {
21
21
  return {
@@ -54,7 +54,7 @@ var RowLabel = (0, _styles.withStyles)(styles)(function (_ref) {
54
54
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.InputContainer, {
55
55
  label: "Row Label",
56
56
  className: classes.rowLabelHolder
57
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
57
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
58
58
  disabled: disabled,
59
59
  markup: markup,
60
60
  onChange: onChange,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/RowLabel.jsx"],"names":["styles","theme","rowLabel","gridColumn","rowLabelHolder","paddingTop","spacing","unit","width","RowLabel","categoriesPerRow","classes","configuration","disabled","markup","imageSupport","onChange","toolbarOpts","spellCheck","maxImageWidth","maxImageHeight","uploadSoundSupport","mathMlOptions","rowLabels","baseInputConfiguration","inputConfiguration","language"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,UAAU,EAAE;AADJ,KADe;AAIzBC,IAAAA,cAAc,EAAE;AACdC,MAAAA,UAAU,EAAEJ,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CADnB;AAEdC,MAAAA,KAAK,EAAE;AAFO;AAJS,GAAZ;AAAA,CAAf;;AAUO,IAAMC,QAAQ,GAAG,wBAAWT,MAAX,EACtB,gBAcM;AAAA,MAbJU,gBAaI,QAbJA,gBAaI;AAAA,MAZJC,OAYI,QAZJA,OAYI;AAAA,MAXJC,aAWI,QAXJA,aAWI;AAAA,MAVJC,QAUI,QAVJA,QAUI;AAAA,MATJC,MASI,QATJA,MASI;AAAA,MARJC,YAQI,QARJA,YAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,WAMI,QANJA,WAMI;AAAA,MALJC,UAKI,QALJA,UAKI;AAAA,MAJJC,aAII,QAJJA,aAII;AAAA,MAHJC,cAGI,QAHJA,cAGI;AAAA,MAFJC,kBAEI,QAFJA,kBAEI;AAAA,gCADJC,aACI;AAAA,MADJA,aACI,mCADY,EACZ;AACJ,MAAQC,SAAR,GAA8CX,aAA9C,CAAQW,SAAR;AAAA,MAAmBC,sBAAnB,GAA8CZ,aAA9C,CAAmBY,sBAAnB;AAEA,sBACE;AACE,IAAA,KAAK,EAAE;AACLrB,MAAAA,UAAU,cAAOO,gBAAgB,GAAG,CAA1B,CADL;AAELF,MAAAA,KAAK,EAAE;AAFF;AADT,kBAME,gCAAC,wBAAD;AAAgB,IAAA,KAAK,EAAC,WAAtB;AAAkC,IAAA,SAAS,EAAEG,OAAO,CAACP;AAArD,kBACE,gCAAC,0BAAD;AACE,IAAA,QAAQ,EAAES,QADZ;AAEE,IAAA,MAAM,EAAEC,MAFV;AAGE,IAAA,QAAQ,EAAEE,QAHZ;AAIE,IAAA,YAAY,EAAED,YAJhB;AAKE,IAAA,QAAQ,EAAE,KALZ;AAME,IAAA,WAAW,EAAEE,WANf;AAOE,IAAA,WAAW,EAAE,2BAAeM,SAAf,aAAeA,SAAf,uBAAeA,SAAS,CAAEE,kBAA1B,EAA8CD,sBAA9C,CAPf;AAQE,IAAA,UAAU,EAAEN,UARd;AASE,IAAA,aAAa,EAAEC,aATjB;AAUE,IAAA,cAAc,EAAEC,cAVlB;AAWE,IAAA,kBAAkB,EAAEC,kBAXtB;AAYE,IAAA,uBAAuB,EAAE,CAAC;AAAEK,MAAAA,QAAQ,EAAE;AAAZ,KAAD,EAA0B;AAAEA,MAAAA,QAAQ,EAAE;AAAZ,KAA1B,CAZ3B;AAaE,IAAA,aAAa,EAAEJ;AAbjB,IADF,CANF,CADF;AA0BD,CA5CqB,CAAjB","sourcesContent":["import { getPluginProps } from '../utils';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { InputContainer } from '@pie-lib/pie-toolbox/render-ui';\n\nconst styles = (theme) => ({\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nexport const RowLabel = withStyles(styles)(\n ({\n categoriesPerRow,\n classes,\n configuration,\n disabled,\n markup,\n imageSupport,\n onChange,\n toolbarOpts,\n spellCheck,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n mathMlOptions = {},\n }) => {\n const { rowLabels, baseInputConfiguration } = configuration;\n\n return (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n >\n <InputContainer label=\"Row Label\" className={classes.rowLabelHolder}>\n <EditableHtml\n disabled={disabled}\n markup={markup}\n onChange={onChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rowLabels?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n </div>\n );\n },\n);\n"],"file":"RowLabel.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/RowLabel.jsx"],"names":["styles","theme","rowLabel","gridColumn","rowLabelHolder","paddingTop","spacing","unit","width","RowLabel","categoriesPerRow","classes","configuration","disabled","markup","imageSupport","onChange","toolbarOpts","spellCheck","maxImageWidth","maxImageHeight","uploadSoundSupport","mathMlOptions","rowLabels","baseInputConfiguration","inputConfiguration","language"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,UAAU,EAAE;AADJ,KADe;AAIzBC,IAAAA,cAAc,EAAE;AACdC,MAAAA,UAAU,EAAEJ,KAAK,CAACK,OAAN,CAAcC,IAAd,GAAqB,CADnB;AAEdC,MAAAA,KAAK,EAAE;AAFO;AAJS,GAAZ;AAAA,CAAf;;AAUO,IAAMC,QAAQ,GAAG,wBAAWT,MAAX,EACtB,gBAcM;AAAA,MAbJU,gBAaI,QAbJA,gBAaI;AAAA,MAZJC,OAYI,QAZJA,OAYI;AAAA,MAXJC,aAWI,QAXJA,aAWI;AAAA,MAVJC,QAUI,QAVJA,QAUI;AAAA,MATJC,MASI,QATJA,MASI;AAAA,MARJC,YAQI,QARJA,YAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,WAMI,QANJA,WAMI;AAAA,MALJC,UAKI,QALJA,UAKI;AAAA,MAJJC,aAII,QAJJA,aAII;AAAA,MAHJC,cAGI,QAHJA,cAGI;AAAA,MAFJC,kBAEI,QAFJA,kBAEI;AAAA,gCADJC,aACI;AAAA,MADJA,aACI,mCADY,EACZ;AACJ,MAAQC,SAAR,GAA8CX,aAA9C,CAAQW,SAAR;AAAA,MAAmBC,sBAAnB,GAA8CZ,aAA9C,CAAmBY,sBAAnB;AAEA,sBACE;AACE,IAAA,KAAK,EAAE;AACLrB,MAAAA,UAAU,cAAOO,gBAAgB,GAAG,CAA1B,CADL;AAELF,MAAAA,KAAK,EAAE;AAFF;AADT,kBAME,gCAAC,wBAAD;AAAgB,IAAA,KAAK,EAAC,WAAtB;AAAkC,IAAA,SAAS,EAAEG,OAAO,CAACP;AAArD,kBACE,gCAAC,wBAAD;AACE,IAAA,QAAQ,EAAES,QADZ;AAEE,IAAA,MAAM,EAAEC,MAFV;AAGE,IAAA,QAAQ,EAAEE,QAHZ;AAIE,IAAA,YAAY,EAAED,YAJhB;AAKE,IAAA,QAAQ,EAAE,KALZ;AAME,IAAA,WAAW,EAAEE,WANf;AAOE,IAAA,WAAW,EAAE,2BAAeM,SAAf,aAAeA,SAAf,uBAAeA,SAAS,CAAEE,kBAA1B,EAA8CD,sBAA9C,CAPf;AAQE,IAAA,UAAU,EAAEN,UARd;AASE,IAAA,aAAa,EAAEC,aATjB;AAUE,IAAA,cAAc,EAAEC,cAVlB;AAWE,IAAA,kBAAkB,EAAEC,kBAXtB;AAYE,IAAA,uBAAuB,EAAE,CAAC;AAAEK,MAAAA,QAAQ,EAAE;AAAZ,KAAD,EAA0B;AAAEA,MAAAA,QAAQ,EAAE;AAAZ,KAA1B,CAZ3B;AAaE,IAAA,aAAa,EAAEJ;AAbjB,IADF,CANF,CADF;AA0BD,CA5CqB,CAAjB","sourcesContent":["import { getPluginProps } from '../utils';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { InputContainer } from '@pie-lib/render-ui';\n\nconst styles = (theme) => ({\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nexport const RowLabel = withStyles(styles)(\n ({\n categoriesPerRow,\n classes,\n configuration,\n disabled,\n markup,\n imageSupport,\n onChange,\n toolbarOpts,\n spellCheck,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n mathMlOptions = {},\n }) => {\n const { rowLabels, baseInputConfiguration } = configuration;\n\n return (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n >\n <InputContainer label=\"Row Label\" className={classes.rowLabelHolder}>\n <EditableHtml\n disabled={disabled}\n markup={markup}\n onChange={onChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rowLabels?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n </InputContainer>\n </div>\n );\n },\n);\n"],"file":"RowLabel.js"}
@@ -29,7 +29,7 @@ var _styles = require("@material-ui/core/styles");
29
29
 
30
30
  var _classnames = _interopRequireDefault(require("classnames"));
31
31
 
32
- var _categorize = require("@pie-lib/pie-toolbox/categorize");
32
+ var _categorize = require("@pie-lib/categorize");
33
33
 
34
34
  var _category = _interopRequireDefault(require("./category"));
35
35
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/alternateResponses.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","AlternateResponses","addedChoice","categoryId","props","altIndex","model","correctResponse","choices","maxChoicesPerCategory","onModelChanged","choice","find","c","id","forEach","a","category","alternateResponses","push","categoryCount","reduce","acc","currentValue","foundIndex","findIndex","filter","maxCategoryChoices","choiceId","from","to","choiceIndex","alternateIndex","configuration","classes","className","imageSupport","spellCheck","uploadSoundSupport","mathMlOptions","categoriesPerRow","errors","rowLabels","duplicateAlternate","holderStyle","isDuplicated","index","map","hasRowLabel","rowIndex","__html","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","object","shape","add","func","string","array","bool"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,UAAU,EAAE;AACVC,MAAAA,YAAY,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB;AADzB,KADa;AAIzBC,IAAAA,gBAAgB,EAAE;AAChBC,MAAAA,OAAO,EAAE,MADO;AAEhBC,MAAAA,UAAU,YAAKP,KAAK,CAACG,OAAN,CAAcC,IAAnB,OAFM;AAGhBI,MAAAA,aAAa,YAAKR,KAAK,CAACG,OAAN,CAAcC,IAAnB;AAHG,KAJO;AASzBK,IAAAA,GAAG,EAAE;AACHH,MAAAA,OAAO,EAAE,MADN;AAEHI,MAAAA,mBAAmB,EAAE,gBAFlB;AAGHF,MAAAA,aAAa,YAAKR,KAAK,CAACG,OAAN,CAAcC,IAAnB,OAHV;AAIHO,MAAAA,UAAU,EAAE,UAJT;AAKHC,MAAAA,KAAK,EAAE,MALJ;AAMHC,MAAAA,SAAS,EAAEb,KAAK,CAACG,OAAN,CAAcC,IANtB;AAOHF,MAAAA,YAAY,EAAE,IAAIF,KAAK,CAACG,OAAN,CAAcC;AAP7B,KAToB;AAkBzBU,IAAAA,QAAQ,EAAE;AACRC,MAAAA,UAAU,EAAE;AADJ;AAlBe,GAAZ;AAAA,CAAf;;IAuBaC,kB;;;;;;;;;;;;;;;4GAoBW,UAACC,WAAD,EAAcC,UAAd,EAA6B;AACjD,wBAII,MAAKC,KAJT;AAAA,UACEC,QADF,eACEA,QADF;AAAA,0CAEEC,KAFF;AAAA,UAEWC,eAFX,qBAEWA,eAFX;AAAA,UAE4BC,OAF5B,qBAE4BA,OAF5B;AAAA,oDAEqCC,qBAFrC;AAAA,UAEqCA,qBAFrC,sCAE6D,CAF7D;AAAA,UAGEC,cAHF,eAGEA,cAHF;AAMA,UAAMC,MAAM,GAAGH,OAAO,CAACI,IAAR,CAAa,UAACC,CAAD;AAAA,eAAOA,CAAC,CAACC,EAAF,KAASZ,WAAW,CAACY,EAA5B;AAAA,OAAb,CAAf;AAEAP,MAAAA,eAAe,CAACQ,OAAhB,CAAwB,UAACC,CAAD,EAAO;AAC7B,YAAIA,CAAC,CAACC,QAAF,KAAed,UAAnB,EAA+B;AAC7Ba,UAAAA,CAAC,CAACE,kBAAF,GAAuBF,CAAC,CAACE,kBAAF,IAAwB,EAA/C;;AAEA,cAAI,CAACF,CAAC,CAACE,kBAAF,CAAqBb,QAArB,CAAL,EAAqC;AACnCW,YAAAA,CAAC,CAACE,kBAAF,CAAqBb,QAArB,IAAiC,EAAjC;AACD;;AAEDW,UAAAA,CAAC,CAACE,kBAAF,CAAqBb,QAArB,EAA+Bc,IAA/B,CAAoCjB,WAAW,CAACY,EAAhD;;AACA,cAAIH,MAAM,CAACS,aAAP,IAAwBT,MAAM,CAACS,aAAP,KAAyB,CAArD,EAAwD;AACtDJ,YAAAA,CAAC,CAACE,kBAAF,CAAqBb,QAArB,IAAiCW,CAAC,CAACE,kBAAF,CAAqBb,QAArB,EAA+BgB,MAA/B,CAAsC,UAACC,GAAD,EAAMC,YAAN,EAAuB;AAC5F,kBAAIA,YAAY,KAAKZ,MAAM,CAACG,EAA5B,EAAgC;AAC9B,oBAAMU,UAAU,GAAGF,GAAG,CAACG,SAAJ,CAAc,UAACZ,CAAD;AAAA,yBAAOA,CAAC,KAAKF,MAAM,CAACG,EAApB;AAAA,iBAAd,CAAnB;;AACA,oBAAIU,UAAU,KAAK,CAAC,CAApB,EAAuB;AACrBF,kBAAAA,GAAG,CAACH,IAAJ,CAASI,YAAT;AACD;AACF,eALD,MAKO;AACLD,gBAAAA,GAAG,CAACH,IAAJ,CAASI,YAAT;AACD;;AAED,qBAAOD,GAAP;AACD,aAXgC,EAW9B,EAX8B,CAAjC;AAYD;;AAED,iBAAON,CAAP;AACD,SAxBD,MAwBO;AACL,cAAIA,CAAC,CAACE,kBAAF,CAAqBb,QAArB,KAAkCM,MAAM,CAACS,aAAP,KAAyB,CAA/D,EAAkE;AAChEJ,YAAAA,CAAC,CAACE,kBAAF,CAAqBb,QAArB,IAAiCW,CAAC,CAACE,kBAAF,CAAqBb,QAArB,EAA+BqB,MAA/B,CAAsC,UAACb,CAAD;AAAA,qBAAOA,CAAC,KAAKX,WAAW,CAACY,EAAzB;AAAA,aAAtC,CAAjC;AACA,mBAAOE,CAAP;AACD;AACF;;AAED,eAAOA,CAAP;AACD,OAjCD;AAmCA,UAAMW,kBAAkB,GAAG,kCAAsB,MAAKvB,KAAL,CAAWE,KAAjC,CAA3B,CA5CiD,CA6CjD;;AACAI,MAAAA,cAAc,CAAC;AACbH,QAAAA,eAAe,EAAfA,eADa;AAEbE,QAAAA,qBAAqB,EACnBA,qBAAqB,KAAK,CAA1B,IAA+BA,qBAAqB,GAAGkB,kBAAvD,GACIlB,qBAAqB,GAAG,CAD5B,GAEIA;AALO,OAAD,CAAd;AAOD,K;mGAEY,UAACmB,QAAD,EAAWC,IAAX,EAAiBC,EAAjB,EAAqBC,WAArB,EAAkCC,cAAlC,EAAqD;AAChE,yBAAkC,MAAK5B,KAAvC;AAAA,UAAQE,KAAR,gBAAQA,KAAR;AAAA,UAAeI,cAAf,gBAAeA,cAAf;;AACA,iBAAmEJ,KAAK,IAAI,EAA5E;AAAA,UAAME,OAAN,QAAMA,OAAN;AAAA,sCAAeD,eAAf;AAAA,UAAeA,eAAf,qCAAiC,EAAjC;AAAA,uCAAqCE,qBAArC;AAAA,UAAqCA,qBAArC,sCAA6D,CAA7D;;AACA,UAAME,MAAM,GAAG,CAACH,OAAO,IAAI,EAAZ,EAAgBI,IAAhB,CAAqB,UAACD,MAAD;AAAA,eAAYA,MAAM,CAACG,EAAP,KAAcc,QAA1B;AAAA,OAArB,CAAf;AACArB,MAAAA,eAAe,GAAG,uCAChBqB,QADgB,EAEhBC,IAFgB,EAGhBC,EAHgB,EAIhBC,WAJgB,EAKhBxB,eALgB,EAMhByB,cANgB,EAOhBrB,MAPgB,aAOhBA,MAPgB,uBAOhBA,MAAM,CAAES,aAPQ,CAAlB;AAUA,UAAMO,kBAAkB,GAAG,kCAAsB,MAAKvB,KAAL,CAAWE,KAAjC,CAA3B,CAdgE,CAehE;;AACAI,MAAAA,cAAc,CAAC;AACbH,QAAAA,eAAe,EAAfA,eADa;AAEbE,QAAAA,qBAAqB,EACnBA,qBAAqB,KAAK,CAA1B,IAA+BA,qBAAqB,GAAGkB,kBAAvD,GACIlB,qBAAqB,GAAG,CAD5B,GAEIA;AALO,OAAD,CAAd;AAOD,K;iHAE0B,UAACQ,QAAD,EAAWN,MAAX,EAAmBoB,WAAnB,EAAmC;AAC5D,yBAA4C,MAAK3B,KAAjD;AAAA,UAAQE,KAAR,gBAAQA,KAAR;AAAA,UAAeD,QAAf,gBAAeA,QAAf;AAAA,UAAyBK,cAAzB,gBAAyBA,cAAzB;AAEA,UAAMH,eAAe,GAAG,2CACtBI,MAAM,CAACG,EADe,EAEtBG,QAAQ,CAACH,EAFa,EAGtBiB,WAHsB,EAItB1B,QAJsB,EAKtBC,KAAK,CAACC,eALgB,CAAxB;AAQAG,MAAAA,cAAc,CAAC;AAAEH,QAAAA,eAAe,EAAfA;AAAF,OAAD,CAAd;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAWI,KAAKH,KAXT;AAAA,UACEC,QADF,gBACEA,QADF;AAAA,UAEEC,KAFF,gBAEEA,KAFF;AAAA,UAGE2B,aAHF,gBAGEA,aAHF;AAAA,UAIEC,OAJF,gBAIEA,OAJF;AAAA,UAKEC,SALF,gBAKEA,SALF;AAAA,UAMEjD,UANF,gBAMEA,UANF;AAAA,UAOEkD,YAPF,gBAOEA,YAPF;AAAA,UAQEC,UARF,gBAQEA,UARF;AAAA,UASEC,kBATF,gBASEA,kBATF;AAAA,+CAUEC,aAVF;AAAA,UAUEA,aAVF,sCAUkB,EAVlB;AAYA,UAAQC,gBAAR,GAAgDlC,KAAhD,CAAQkC,gBAAR;AAAA,UAA0BC,MAA1B,GAAgDnC,KAAhD,CAA0BmC,MAA1B;AAAA,UAAkCC,SAAlC,GAAgDpC,KAAhD,CAAkCoC,SAAlC;;AACA,kBAA+BD,MAAM,IAAI,EAAzC;AAAA,UAAQE,kBAAR,SAAQA,kBAAR;;AAEA,UAAMC,WAAW,GAAG;AAClBjD,QAAAA,mBAAmB,mBAAY6C,gBAAZ;AADD,OAApB;AAGA,UAAMK,YAAY,GAAGF,kBAAkB,GAAGA,kBAAkB,CAACG,KAAnB,KAA6BzC,QAAhC,GAA2C,KAAlF;AAEA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAW6B,OAAO,CAAChD,UAAnB,EAA+BiD,SAA/B;AAAhB,sBACE;AAAK,QAAA,SAAS,EAAED,OAAO,CAAC5C,gBAAxB;AAA0C,QAAA,KAAK,EAAEsD;AAAjD,SACG1D,UAAU,CAAC6D,GAAX,CAAe,UAAC9B,QAAD,EAAW6B,KAAX,EAAqB;AACnC,YAAME,WAAW,GAAGF,KAAK,GAAGN,gBAAR,KAA6B,CAAjD;AACA,YAAMS,QAAQ,GAAGH,KAAK,GAAGN,gBAAzB;AAEA,4BACE,gCAAC,iBAAD,CAAO,QAAP;AAAgB,UAAA,GAAG,EAAEM;AAArB,WACGE,WAAW,iBACV;AACE,UAAA,KAAK,EAAE;AACLhD,YAAAA,UAAU,cAAOwC,gBAAgB,GAAG,CAA1B,CADL;AAEL3C,YAAAA,KAAK,EAAE;AAFF,WADT;AAKE,UAAA,SAAS,EAAEqC,OAAO,CAACnC,QALrB;AAME,UAAA,uBAAuB,EAAE;AACvBmD,YAAAA,MAAM,EAAER,SAAS,CAACO,QAAD,CAAT,IAAuB;AADR;AAN3B,UAFJ,eAcE,gCAAC,oBAAD;AACE,UAAA,GAAG,EAAEH,KADP;AAEE,UAAA,sBAAsB,EAAEzC,QAF1B;AAGE,UAAA,YAAY,EAAE+B,YAHhB;AAIE,UAAA,YAAY,EAAES,YAAY,IAAIF,kBAAkB,CAAC1B,QAAnB,KAAgCA,QAAQ,CAACH,EAJzE;AAKE,UAAA,QAAQ,EAAEG,QALZ;AAME,UAAA,UAAU,EAAEoB,UANd;AAOE,UAAA,WAAW,EAAE,MAAI,CAACc,mBAPpB;AAQE,UAAA,cAAc,EAAE,wBAACxC,MAAD,EAASoB,WAAT;AAAA,mBAAyB,MAAI,CAACqB,wBAAL,CAA8BnC,QAA9B,EAAwCN,MAAxC,EAAgDoB,WAAhD,CAAzB;AAAA,WARlB;AASE,UAAA,YAAY,EAAE,sBAACH,QAAD,EAAWC,IAAX,EAAiBC,EAAjB,EAAqBC,WAArB,EAAkCC,cAAlC;AAAA,mBACZ,MAAI,CAACqB,UAAL,CAAgBzB,QAAhB,EAA0BC,IAA1B,EAAgCC,EAAhC,EAAoCC,WAApC,EAAiDC,cAAjD,CADY;AAAA,WAThB;AAYE,UAAA,kBAAkB,EAAEM,kBAZtB;AAaE,UAAA,aAAa,EAAEC,aAbjB;AAcE,UAAA,aAAa,EAAEN;AAdjB,UAdF,CADF;AAiCD,OArCA,CADH,CADF,CADF;AA4CD;;;EAnLqCqB,kBAAMC,S;;;iCAAjCtD,kB,eACQ;AACjBI,EAAAA,QAAQ,EAAEmD,sBAAUC,MAAV,CAAiBC,UADV;AAEjBzB,EAAAA,aAAa,EAAEuB,sBAAUG,MAFR;AAGjBvB,EAAAA,YAAY,EAAEoB,sBAAUI,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEL,sBAAUM,IAAV,CAAeJ,UADQ;AAE5B,cAAQF,sBAAUM,IAAV,CAAeJ;AAFK,GAAhB,CAHG;AAOjBxB,EAAAA,OAAO,EAAEsB,sBAAUG,MAAV,CAAiBD,UAPT;AAQjBvB,EAAAA,SAAS,EAAEqB,sBAAUO,MARJ;AASjB7E,EAAAA,UAAU,EAAEsE,sBAAUQ,KATL;AAUjBtD,EAAAA,cAAc,EAAE8C,sBAAUM,IAVT;AAWjBxD,EAAAA,KAAK,EAAEkD,sBAAUG,MAAV,CAAiBD,UAXP;AAYjBpB,EAAAA,kBAAkB,EAAEkB,sBAAUI,KAAV,CAAgB;AAClCC,IAAAA,GAAG,EAAEL,sBAAUM,IAAV,CAAeJ,UADc;AAElC,cAAQF,sBAAUM,IAAV,CAAeJ;AAFW,GAAhB,CAZH;AAgBjBrB,EAAAA,UAAU,EAAEmB,sBAAUS;AAhBL,C;;eAqLN,wBAAWjF,MAAX,EAAmBiB,kBAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { moveChoiceToAlternate, removeChoiceFromAlternate } from '@pie-lib/pie-toolbox/categorize';\n\nimport Category from './category';\nimport { getMaxCategoryChoices } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n configuration: PropTypes.object,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n spellCheck: PropTypes.bool,\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse, choices, maxChoicesPerCategory = 0 },\n onModelChanged,\n } = this.props;\n\n const choice = choices.find((c) => c.id === addedChoice.id);\n\n correctResponse.forEach((a) => {\n if (a.category === categoryId) {\n a.alternateResponses = a.alternateResponses || [];\n\n if (!a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = [];\n }\n\n a.alternateResponses[altIndex].push(addedChoice.id);\n if (choice.categoryCount && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce((acc, currentValue) => {\n if (currentValue === choice.id) {\n const foundIndex = acc.findIndex((c) => c === choice.id);\n if (foundIndex === -1) {\n acc.push(currentValue);\n }\n } else {\n acc.push(currentValue);\n }\n\n return acc;\n }, []);\n }\n\n return a;\n } else {\n if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((c) => c !== addedChoice.id);\n return a;\n }\n }\n\n return a;\n });\n\n const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n correctResponse = moveChoiceToAlternate(\n choiceId,\n from,\n to,\n choiceIndex,\n correctResponse,\n alternateIndex,\n choice?.categoryCount,\n );\n\n const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, altIndex, onModelChanged } = this.props;\n\n const correctResponse = removeChoiceFromAlternate(\n choice.id,\n category.id,\n choiceIndex,\n altIndex,\n model.correctResponse,\n );\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const {\n altIndex,\n model,\n configuration,\n classes,\n className,\n categories,\n imageSupport,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n } = this.props;\n const { categoriesPerRow, errors, rowLabels } = model;\n const { duplicateAlternate } = errors || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n className={classes.rowLabel}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n ></div>\n )}\n\n <Category\n key={index}\n alternateResponseIndex={altIndex}\n imageSupport={imageSupport}\n isDuplicated={isDuplicated && duplicateAlternate.category === category.id}\n category={category}\n spellCheck={spellCheck}\n onAddChoice={this.addChoiceToCategory}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n onMoveChoice={(choiceId, from, to, choiceIndex, alternateIndex) =>\n this.moveChoice(choiceId, from, to, choiceIndex, alternateIndex)\n }\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/alternateResponses.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","AlternateResponses","addedChoice","categoryId","props","altIndex","model","correctResponse","choices","maxChoicesPerCategory","onModelChanged","choice","find","c","id","forEach","a","category","alternateResponses","push","categoryCount","reduce","acc","currentValue","foundIndex","findIndex","filter","maxCategoryChoices","choiceId","from","to","choiceIndex","alternateIndex","configuration","classes","className","imageSupport","spellCheck","uploadSoundSupport","mathMlOptions","categoriesPerRow","errors","rowLabels","duplicateAlternate","holderStyle","isDuplicated","index","map","hasRowLabel","rowIndex","__html","addChoiceToCategory","deleteChoiceFromCategory","moveChoice","React","Component","PropTypes","number","isRequired","object","shape","add","func","string","array","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { moveChoiceToAlternate, removeChoiceFromAlternate } from '@pie-lib/categorize';\n\nimport Category from './category';\nimport { getMaxCategoryChoices } from '../../utils';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n});\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n altIndex: PropTypes.number.isRequired,\n configuration: PropTypes.object,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n spellCheck: PropTypes.bool,\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const {\n altIndex,\n model: { correctResponse, choices, maxChoicesPerCategory = 0 },\n onModelChanged,\n } = this.props;\n\n const choice = choices.find((c) => c.id === addedChoice.id);\n\n correctResponse.forEach((a) => {\n if (a.category === categoryId) {\n a.alternateResponses = a.alternateResponses || [];\n\n if (!a.alternateResponses[altIndex]) {\n a.alternateResponses[altIndex] = [];\n }\n\n a.alternateResponses[altIndex].push(addedChoice.id);\n if (choice.categoryCount && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce((acc, currentValue) => {\n if (currentValue === choice.id) {\n const foundIndex = acc.findIndex((c) => c === choice.id);\n if (foundIndex === -1) {\n acc.push(currentValue);\n }\n } else {\n acc.push(currentValue);\n }\n\n return acc;\n }, []);\n }\n\n return a;\n } else {\n if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((c) => c !== addedChoice.id);\n return a;\n }\n }\n\n return a;\n });\n\n const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n correctResponse = moveChoiceToAlternate(\n choiceId,\n from,\n to,\n choiceIndex,\n correctResponse,\n alternateIndex,\n choice?.categoryCount,\n );\n\n const maxCategoryChoices = getMaxCategoryChoices(this.props.model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, altIndex, onModelChanged } = this.props;\n\n const correctResponse = removeChoiceFromAlternate(\n choice.id,\n category.id,\n choiceIndex,\n altIndex,\n model.correctResponse,\n );\n\n onModelChanged({ correctResponse });\n };\n\n render() {\n const {\n altIndex,\n model,\n configuration,\n classes,\n className,\n categories,\n imageSupport,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n } = this.props;\n const { categoriesPerRow, errors, rowLabels } = model;\n const { duplicateAlternate } = errors || {};\n\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n const isDuplicated = duplicateAlternate ? duplicateAlternate.index === altIndex : false;\n\n return (\n <div className={classNames(classes.categories, className)}>\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <div\n style={{\n gridColumn: `1/${categoriesPerRow + 1}`,\n width: '100%',\n }}\n className={classes.rowLabel}\n dangerouslySetInnerHTML={{\n __html: rowLabels[rowIndex] || '',\n }}\n ></div>\n )}\n\n <Category\n key={index}\n alternateResponseIndex={altIndex}\n imageSupport={imageSupport}\n isDuplicated={isDuplicated && duplicateAlternate.category === category.id}\n category={category}\n spellCheck={spellCheck}\n onAddChoice={this.addChoiceToCategory}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n onMoveChoice={(choiceId, from, to, choiceIndex, alternateIndex) =>\n this.moveChoice(choiceId, from, to, choiceIndex, alternateIndex)\n }\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(AlternateResponses);\n"],"file":"alternateResponses.js"}
@@ -29,13 +29,13 @@ var _styles = require("@material-ui/core/styles");
29
29
 
30
30
  var _classnames = _interopRequireDefault(require("classnames"));
31
31
 
32
- var _drag = require("@pie-lib/pie-toolbox/drag");
32
+ var _drag = require("@pie-lib/drag");
33
33
 
34
34
  var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
35
35
 
36
36
  var _RemoveCircleOutline = _interopRequireDefault(require("@material-ui/icons/RemoveCircleOutline"));
37
37
 
38
- var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
38
+ var _renderUi = require("@pie-lib/render-ui");
39
39
 
40
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
41
41
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","overflowChoice","content","breakWord","customColor","React","Component","PropTypes","number","object","isRequired","string","func","styles","position","overflow","right","top","maxWidth","wordBreak","color","tertiary"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAGaA,a;;;;;;;;;;;;;;;+FAYF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAsF,KAAKF,KAA3F;AAAA,UAAQG,sBAAR,gBAAQA,sBAAR;AAAA,UAAgCC,QAAhC,gBAAgCA,QAAhC;AAAA,UAA0CC,OAA1C,gBAA0CA,OAA1C;AAAA,UAAmDC,SAAnD,gBAAmDA,SAAnD;AAAA,UAA8DJ,MAA9D,gBAA8DA,MAA9D;AAAA,UAAsEK,WAAtE,gBAAsEA,WAAtE;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWF,OAAO,CAACG,aAAnB,EAAkCF,SAAlC;AAAhB,SACGJ,MAAM,gBACL,gCAAC,YAAD;AACE,QAAA,sBAAsB,EAAEC,sBAD1B;AAEE,QAAA,QAAQ,EAAEC,QAFZ;AAGE,QAAA,MAAM,EAAEF,MAHV;AAIE,QAAA,WAAW,EAAEK,WAJf;AAKE,QAAA,SAAS,EAAEF,OAAO,CAACI,cALrB;AAME,QAAA,cAAc,EAAE;AAAA,iBAAM,MAAI,UAAJ,EAAN;AAAA;AANlB,sBAQE,gCAAC,qBAAD;AAAa,QAAA,IAAI,EAAEP,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEQ,OAA3B;AAAoC,QAAA,SAAS,YAAKL,OAAO,CAACM,SAAb;AAA7C,QARF,eASE,gCAAC,sBAAD;AAAY,sBAAW,QAAvB;AAAgC,QAAA,SAAS,EAAE,4BAAWN,OAAO,UAAlB,EAA2BA,OAAO,CAACO,WAAnC,CAA3C;AAA4F,QAAA,OAAO,EAAE;AAArG,sBACE,gCAAC,+BAAD,OADF,CATF,CADK,GAcH,IAfN,CADF;AAmBD;;;EAtCgCC,kBAAMC,S;;;iCAA5Bf,a,eACQ;AACjBI,EAAAA,sBAAsB,EAAEY,sBAAUC,MADjB;AAEjBZ,EAAAA,QAAQ,EAAEW,sBAAUE,MAFH;AAGjBZ,EAAAA,OAAO,EAAEU,sBAAUE,MAAV,CAAiBC,UAHT;AAIjBZ,EAAAA,SAAS,EAAES,sBAAUI,MAJJ;AAKjBjB,EAAAA,MAAM,EAAEa,sBAAUE,MAAV,CAAiBC,UALR;AAMjBX,EAAAA,WAAW,EAAEQ,sBAAUC,MANN;AAOjBf,EAAAA,QAAQ,EAAEc,sBAAUK,IAAV,CAAeF;AAPR,C;iCADRnB,a,kBAUW,E;;AA8BxB,IAAMsB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBb,IAAAA,aAAa,EAAE;AACbc,MAAAA,QAAQ,EAAE,UADG;AAEbC,MAAAA,QAAQ,EAAE;AAFG,KADK;AAKpB,cAAQ;AACND,MAAAA,QAAQ,EAAE,UADJ;AAENE,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC,KALY;AAUpBd,IAAAA,SAAS,EAAE;AACTe,MAAAA,QAAQ,EAAE,KADD;AAETC,MAAAA,SAAS,EAAE;AAFF,KAVS;AAcpBf,IAAAA,WAAW,EAAE;AACXgB,MAAAA,KAAK,YAAKA,gBAAMC,QAAN,EAAL;AADM,KAdO;AAiBpBpB,IAAAA,cAAc,EAAE;AACdc,MAAAA,QAAQ,EAAE;AADI;AAjBI,GAAP;AAAA,CAAf;;eAqBe,wBAAWF,MAAX,EAAmBtB,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Choice } from '@pie-lib/pie-toolbox/drag';\nimport IconButton from '@material-ui/core/IconButton';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport { HtmlAndMath } from '@pie-lib/pie-toolbox/render-ui';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nexport class ChoicePreview extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n choiceIndex: PropTypes.number,\n onDelete: PropTypes.func.isRequired,\n };\n static defaultProps = {};\n\n delete = () => {\n const { onDelete, choice } = this.props;\n onDelete(choice);\n };\n\n render() {\n const { alternateResponseIndex, category, classes, className, choice, choiceIndex } = this.props;\n return (\n <div className={classNames(classes.choicePreview, className)}>\n {choice ? (\n <Choice\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={choice}\n choiceIndex={choiceIndex}\n className={classes.overflowChoice}\n onRemoveChoice={() => this.delete()}\n >\n <HtmlAndMath html={choice?.content} className={`${classes.breakWord}`} />\n <IconButton aria-label=\"delete\" className={classNames(classes.delete, classes.customColor)} onClick={this.delete}>\n <RemoveCircleOutlineIcon />\n </IconButton>\n </Choice>\n ) : null}\n </div>\n );\n }\n}\nconst styles = () => ({\n choicePreview: {\n position: 'relative',\n overflow: 'auto',\n },\n delete: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n breakWord: {\n maxWidth: '90%',\n wordBreak: 'break-all',\n },\n customColor: {\n color: `${color.tertiary()} !important`\n },\n overflowChoice: {\n overflow: 'auto',\n }\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/choice-preview.jsx"],"names":["ChoicePreview","props","onDelete","choice","alternateResponseIndex","category","classes","className","choiceIndex","choicePreview","overflowChoice","content","breakWord","customColor","React","Component","PropTypes","number","object","isRequired","string","func","styles","position","overflow","right","top","maxWidth","wordBreak","color","tertiary"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAGaA,a;;;;;;;;;;;;;;;+FAYF,YAAM;AACb,wBAA6B,MAAKC,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkBC,MAAlB,eAAkBA,MAAlB;AACAD,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,yBAAsF,KAAKF,KAA3F;AAAA,UAAQG,sBAAR,gBAAQA,sBAAR;AAAA,UAAgCC,QAAhC,gBAAgCA,QAAhC;AAAA,UAA0CC,OAA1C,gBAA0CA,OAA1C;AAAA,UAAmDC,SAAnD,gBAAmDA,SAAnD;AAAA,UAA8DJ,MAA9D,gBAA8DA,MAA9D;AAAA,UAAsEK,WAAtE,gBAAsEA,WAAtE;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWF,OAAO,CAACG,aAAnB,EAAkCF,SAAlC;AAAhB,SACGJ,MAAM,gBACL,gCAAC,YAAD;AACE,QAAA,sBAAsB,EAAEC,sBAD1B;AAEE,QAAA,QAAQ,EAAEC,QAFZ;AAGE,QAAA,MAAM,EAAEF,MAHV;AAIE,QAAA,WAAW,EAAEK,WAJf;AAKE,QAAA,SAAS,EAAEF,OAAO,CAACI,cALrB;AAME,QAAA,cAAc,EAAE;AAAA,iBAAM,MAAI,UAAJ,EAAN;AAAA;AANlB,sBAQE,gCAAC,qBAAD;AAAa,QAAA,IAAI,EAAEP,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEQ,OAA3B;AAAoC,QAAA,SAAS,YAAKL,OAAO,CAACM,SAAb;AAA7C,QARF,eASE,gCAAC,sBAAD;AACE,sBAAW,QADb;AAEE,QAAA,SAAS,EAAE,4BAAWN,OAAO,UAAlB,EAA2BA,OAAO,CAACO,WAAnC,CAFb;AAGE,QAAA,OAAO,EAAE;AAHX,sBAKE,gCAAC,+BAAD,OALF,CATF,CADK,GAkBH,IAnBN,CADF;AAuBD;;;EA1CgCC,kBAAMC,S;;;iCAA5Bf,a,eACQ;AACjBI,EAAAA,sBAAsB,EAAEY,sBAAUC,MADjB;AAEjBZ,EAAAA,QAAQ,EAAEW,sBAAUE,MAFH;AAGjBZ,EAAAA,OAAO,EAAEU,sBAAUE,MAAV,CAAiBC,UAHT;AAIjBZ,EAAAA,SAAS,EAAES,sBAAUI,MAJJ;AAKjBjB,EAAAA,MAAM,EAAEa,sBAAUE,MAAV,CAAiBC,UALR;AAMjBX,EAAAA,WAAW,EAAEQ,sBAAUC,MANN;AAOjBf,EAAAA,QAAQ,EAAEc,sBAAUK,IAAV,CAAeF;AAPR,C;iCADRnB,a,kBAUW,E;;AAkCxB,IAAMsB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBb,IAAAA,aAAa,EAAE;AACbc,MAAAA,QAAQ,EAAE,UADG;AAEbC,MAAAA,QAAQ,EAAE;AAFG,KADK;AAKpB,cAAQ;AACND,MAAAA,QAAQ,EAAE,UADJ;AAENE,MAAAA,KAAK,EAAE,CAFD;AAGNC,MAAAA,GAAG,EAAE;AAHC,KALY;AAUpBd,IAAAA,SAAS,EAAE;AACTe,MAAAA,QAAQ,EAAE,KADD;AAETC,MAAAA,SAAS,EAAE;AAFF,KAVS;AAcpBf,IAAAA,WAAW,EAAE;AACXgB,MAAAA,KAAK,YAAKA,gBAAMC,QAAN,EAAL;AADM,KAdO;AAiBpBpB,IAAAA,cAAc,EAAE;AACdc,MAAAA,QAAQ,EAAE;AADI;AAjBI,GAAP;AAAA,CAAf;;eAqBe,wBAAWF,MAAX,EAAmBtB,aAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { Choice } from '@pie-lib/drag';\nimport IconButton from '@material-ui/core/IconButton';\nimport RemoveCircleOutlineIcon from '@material-ui/icons/RemoveCircleOutline';\nimport { HtmlAndMath } from '@pie-lib/render-ui';\nimport { color } from '@pie-lib/render-ui';\n\nexport class ChoicePreview extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choice: PropTypes.object.isRequired,\n choiceIndex: PropTypes.number,\n onDelete: PropTypes.func.isRequired,\n };\n static defaultProps = {};\n\n delete = () => {\n const { onDelete, choice } = this.props;\n onDelete(choice);\n };\n\n render() {\n const { alternateResponseIndex, category, classes, className, choice, choiceIndex } = this.props;\n return (\n <div className={classNames(classes.choicePreview, className)}>\n {choice ? (\n <Choice\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={choice}\n choiceIndex={choiceIndex}\n className={classes.overflowChoice}\n onRemoveChoice={() => this.delete()}\n >\n <HtmlAndMath html={choice?.content} className={`${classes.breakWord}`} />\n <IconButton\n aria-label=\"delete\"\n className={classNames(classes.delete, classes.customColor)}\n onClick={this.delete}\n >\n <RemoveCircleOutlineIcon />\n </IconButton>\n </Choice>\n ) : null}\n </div>\n );\n }\n}\nconst styles = () => ({\n choicePreview: {\n position: 'relative',\n overflow: 'auto',\n },\n delete: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n breakWord: {\n maxWidth: '90%',\n wordBreak: 'break-all',\n },\n customColor: {\n color: `${color.tertiary()} !important`,\n },\n overflowChoice: {\n overflow: 'auto',\n },\n});\nexport default withStyles(styles)(ChoicePreview);\n"],"file":"choice-preview.js"}
@@ -31,7 +31,7 @@ var _choicePreview = _interopRequireDefault(require("./choice-preview"));
31
31
 
32
32
  var _reactDnd = require("react-dnd");
33
33
 
34
- var _drag = require("@pie-lib/pie-toolbox/drag");
34
+ var _drag = require("@pie-lib/drag");
35
35
 
36
36
  var _debug = _interopRequireDefault(require("debug"));
37
37
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/droppable-placeholder.jsx"],"names":["log","Helper","theme","helper","display","alignItems","fontSize","typography","color","palette","common","black","width","height","classes","Previews","alternateResponseIndex","category","choices","onDeleteChoice","map","c","index","choice","propTypes","PropTypes","number","object","array","func","DroppablePlaceHolder","props","isOver","className","connectDropTarget","droppablePlaceholder","placeHolder","length","React","Component","isRequired","string","onDropChoice","onMoveChoice","bool","categoryId","styles","minHeight","Styled","spec","drop","monitor","item","getItem","from","choiceId","choiceIndex","canDrop","disabled","WithTarget","uid","connect","dropTarget","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport ChoicePreview from './choice-preview';\nimport { DropTarget } from 'react-dnd';\nimport { uid, PlaceHolder } from '@pie-lib/pie-toolbox/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:categorize:configure');\n\nconst Helper = withStyles((theme) => ({\n helper: {\n display: 'flex',\n alignItems: 'center',\n fontSize: theme.typography.fontSize - 2,\n color: `rgba(${theme.palette.common.black}, 0.4)`,\n width: '100%',\n height: '100%',\n },\n}))(({ classes }) => <div className={classes.helper}>Drag your correct answers here</div>);\n\nconst Previews = ({ alternateResponseIndex, category, choices, onDeleteChoice }) => (\n <React.Fragment>\n {choices.map(\n (c, index) =>\n c && (\n <ChoicePreview\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={c}\n key={index}\n choiceIndex={index}\n onDelete={(choice) => onDeleteChoice(choice, index)}\n />\n ),\n )}\n </React.Fragment>\n);\n\nPreviews.propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n choices: PropTypes.array,\n onDeleteChoice: PropTypes.func,\n};\n\nexport class DroppablePlaceHolder extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n connectDropTarget: PropTypes.func.isRequired,\n choices: PropTypes.array,\n onDropChoice: PropTypes.func.isRequired,\n onMoveChoice: PropTypes.func,\n isOver: PropTypes.bool,\n onDeleteChoice: PropTypes.func,\n categoryId: PropTypes.string.isRequired,\n };\n\n static defaultProps = {};\n render() {\n const { alternateResponseIndex, isOver, category, choices, classes, className, connectDropTarget, onDeleteChoice } =\n this.props;\n\n return connectDropTarget(\n <div className={classNames(classes.droppablePlaceholder, className)}>\n <PlaceHolder isOver={isOver} className={classes.placeHolder}>\n {(choices || []).length === 0 ? (\n <Helper />\n ) : (\n <Previews\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={choices}\n onDeleteChoice={onDeleteChoice}\n />\n )}\n </PlaceHolder>\n </div>,\n );\n }\n}\nconst styles = () => ({\n droppablePlaceholder: {\n minHeight: '100px',\n },\n placeHolder: {\n width: '100%',\n minHeight: '100px',\n height: 'auto',\n },\n});\n\nconst Styled = withStyles(styles)(DroppablePlaceHolder);\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n\n if (item.from && item.alternateResponseIndex === props.alternateResponseIndex) {\n props.onMoveChoice(item.choiceId, item.from, props.categoryId, item.choiceIndex, item.alternateResponseIndex);\n } else if (!item.from) {\n // avoid dropping choice when user tries to move it to an alternate with other index\n props.onDropChoice(item, props.categoryId);\n }\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(Styled);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/droppable-placeholder.jsx"],"names":["log","Helper","theme","helper","display","alignItems","fontSize","typography","color","palette","common","black","width","height","classes","Previews","alternateResponseIndex","category","choices","onDeleteChoice","map","c","index","choice","propTypes","PropTypes","number","object","array","func","DroppablePlaceHolder","props","isOver","className","connectDropTarget","droppablePlaceholder","placeHolder","length","React","Component","isRequired","string","onDropChoice","onMoveChoice","bool","categoryId","styles","minHeight","Styled","spec","drop","monitor","item","getItem","from","choiceId","choiceIndex","canDrop","disabled","WithTarget","uid","connect","dropTarget","withUid"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport ChoicePreview from './choice-preview';\nimport { DropTarget } from 'react-dnd';\nimport { uid, PlaceHolder } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:categorize:configure');\n\nconst Helper = withStyles((theme) => ({\n helper: {\n display: 'flex',\n alignItems: 'center',\n fontSize: theme.typography.fontSize - 2,\n color: `rgba(${theme.palette.common.black}, 0.4)`,\n width: '100%',\n height: '100%',\n },\n}))(({ classes }) => <div className={classes.helper}>Drag your correct answers here</div>);\n\nconst Previews = ({ alternateResponseIndex, category, choices, onDeleteChoice }) => (\n <React.Fragment>\n {choices.map(\n (c, index) =>\n c && (\n <ChoicePreview\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choice={c}\n key={index}\n choiceIndex={index}\n onDelete={(choice) => onDeleteChoice(choice, index)}\n />\n ),\n )}\n </React.Fragment>\n);\n\nPreviews.propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n choices: PropTypes.array,\n onDeleteChoice: PropTypes.func,\n};\n\nexport class DroppablePlaceHolder extends React.Component {\n static propTypes = {\n alternateResponseIndex: PropTypes.number,\n category: PropTypes.object,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n connectDropTarget: PropTypes.func.isRequired,\n choices: PropTypes.array,\n onDropChoice: PropTypes.func.isRequired,\n onMoveChoice: PropTypes.func,\n isOver: PropTypes.bool,\n onDeleteChoice: PropTypes.func,\n categoryId: PropTypes.string.isRequired,\n };\n\n static defaultProps = {};\n render() {\n const { alternateResponseIndex, isOver, category, choices, classes, className, connectDropTarget, onDeleteChoice } =\n this.props;\n\n return connectDropTarget(\n <div className={classNames(classes.droppablePlaceholder, className)}>\n <PlaceHolder isOver={isOver} className={classes.placeHolder}>\n {(choices || []).length === 0 ? (\n <Helper />\n ) : (\n <Previews\n alternateResponseIndex={alternateResponseIndex}\n category={category}\n choices={choices}\n onDeleteChoice={onDeleteChoice}\n />\n )}\n </PlaceHolder>\n </div>,\n );\n }\n}\nconst styles = () => ({\n droppablePlaceholder: {\n minHeight: '100px',\n },\n placeHolder: {\n width: '100%',\n minHeight: '100px',\n height: 'auto',\n },\n});\n\nconst Styled = withStyles(styles)(DroppablePlaceHolder);\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n\n if (item.from && item.alternateResponseIndex === props.alternateResponseIndex) {\n props.onMoveChoice(item.choiceId, item.from, props.categoryId, item.choiceIndex, item.alternateResponseIndex);\n } else if (!item.from) {\n // avoid dropping choice when user tries to move it to an alternate with other index\n props.onDropChoice(item, props.categoryId);\n }\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(Styled);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
@@ -31,7 +31,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
31
31
 
32
32
  var _styles = require("@material-ui/core/styles");
33
33
 
34
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
34
+ var _configUi = require("@pie-lib/config-ui");
35
35
 
36
36
  var _classnames = _interopRequireDefault(require("classnames"));
37
37
 
@@ -39,7 +39,7 @@ var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
39
39
 
40
40
  var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
41
41
 
42
- var _categorize = require("@pie-lib/pie-toolbox/categorize");
42
+ var _categorize = require("@pie-lib/categorize");
43
43
 
44
44
  var _category = _interopRequireDefault(require("./category"));
45
45
 
@@ -49,7 +49,7 @@ var _utils = require("../../utils");
49
49
 
50
50
  var _RowLabel = require("./RowLabel");
51
51
 
52
- var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
52
+ var _mathRendering = require("@pie-lib/math-rendering");
53
53
 
54
54
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
55
55
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","Categories","focusedEl","props","model","oldCategories","categoriesPerRow","correctResponse","allowAlternateEnabled","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","choices","alternateResponses","index","findIndex","splice","c","addedChoice","categoryId","maxChoicesPerCategory","choice","find","undefined","categoryCount","maxCategoryChoices","choiceIndex","choiceId","from","to","val","newRowLabels","domNode","ReactDOM","findDOMNode","e","console","classes","className","imageSupport","uploadSoundSupport","toolbarOpts","spellCheck","configuration","defaultImageMaxHeight","defaultImageMaxWidth","mathMlOptions","errors","associationError","categoriesError","categoriesErrors","maxCategories","maxImageWidth","maxImageHeight","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","number","shape","func","isRequired","object","string","array","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n moveChoiceToCategory,\n removeCategory,\n removeChoiceFromCategory,\n verifyAllowMultiplePlacements,\n} from '@pie-lib/pie-toolbox/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage, getMaxCategoryChoices } from '../../utils';\nimport { RowLabel } from './RowLabel';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 3,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport class Categories extends React.Component {\n static propTypes = {\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n state = {\n focusedEl: null,\n };\n\n componentDidMount() {\n try {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n } catch (e) {\n // Added try-catch block to handle \"Unable to find node on an unmounted component\" error from tests, thrown because of the usage of shallow\n console.error('DOM not mounted');\n }\n }\n\n componentDidUpdate() {\n try {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n } catch (e) {\n // Added try-catch block to handle \"Unable to find node on an unmounted component\" error from tests, thrown because of the usage of shallow\n console.error('DOM not mounted');\n }\n }\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow, correctResponse, allowAlternateEnabled } = model;\n\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 1,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n correctResponse: allowAlternateEnabled\n ? [...correctResponse, { category: id, choices: [], alternateResponses: [] }]\n : correctResponse,\n });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const { model, onModelChanged } = this.props;\n let { choices = [], correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === addedChoice.id);\n correctResponse = moveChoiceToCategory(addedChoice.id, undefined, categoryId, 0, model.correctResponse);\n // if multiplePlacements not allowed, ensure the consistency in the other categories\n if (choice.categoryCount !== 0) {\n correctResponse = verifyAllowMultiplePlacements(addedChoice, categoryId, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n if (to === from || !choice) {\n return;\n }\n if (choice.categoryCount !== 0) {\n correctResponse = moveChoiceToCategory(choice.id, from, to, choiceIndex, correctResponse);\n correctResponse = verifyAllowMultiplePlacements(choice, to, correctResponse);\n } else if (choice.categoryCount === 0) {\n correctResponse = moveChoiceToCategory(choice.id, undefined, to, 0, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n mathMlOptions = {},\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const { maxCategories, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n disabled={false}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n )}\n\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n onMoveChoice={(choiceId, from, to, choiceIndex) => this.moveChoice(choiceId, from, to, choiceIndex)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n </React.Fragment>\n );\n })}\n </div>\n\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","Categories","focusedEl","props","model","oldCategories","categoriesPerRow","correctResponse","allowAlternateEnabled","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","choices","alternateResponses","index","findIndex","splice","c","addedChoice","categoryId","maxChoicesPerCategory","choice","find","undefined","categoryCount","maxCategoryChoices","choiceIndex","choiceId","from","to","val","newRowLabels","domNode","ReactDOM","findDOMNode","e","console","classes","className","imageSupport","uploadSoundSupport","toolbarOpts","spellCheck","configuration","defaultImageMaxHeight","defaultImageMaxWidth","mathMlOptions","errors","associationError","categoriesError","categoriesErrors","maxCategories","maxImageWidth","maxImageHeight","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","number","shape","func","isRequired","object","string","array","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n moveChoiceToCategory,\n removeCategory,\n removeChoiceFromCategory,\n verifyAllowMultiplePlacements,\n} from '@pie-lib/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage, getMaxCategoryChoices } from '../../utils';\nimport { RowLabel } from './RowLabel';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 3,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport class Categories extends React.Component {\n static propTypes = {\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n state = {\n focusedEl: null,\n };\n\n componentDidMount() {\n try {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n } catch (e) {\n // Added try-catch block to handle \"Unable to find node on an unmounted component\" error from tests, thrown because of the usage of shallow\n console.error('DOM not mounted');\n }\n }\n\n componentDidUpdate() {\n try {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n } catch (e) {\n // Added try-catch block to handle \"Unable to find node on an unmounted component\" error from tests, thrown because of the usage of shallow\n console.error('DOM not mounted');\n }\n }\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow, correctResponse, allowAlternateEnabled } = model;\n\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 1,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n correctResponse: allowAlternateEnabled\n ? [...correctResponse, { category: id, choices: [], alternateResponses: [] }]\n : correctResponse,\n });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const { model, onModelChanged } = this.props;\n let { choices = [], correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === addedChoice.id);\n correctResponse = moveChoiceToCategory(addedChoice.id, undefined, categoryId, 0, model.correctResponse);\n // if multiplePlacements not allowed, ensure the consistency in the other categories\n if (choice.categoryCount !== 0) {\n correctResponse = verifyAllowMultiplePlacements(addedChoice, categoryId, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n if (to === from || !choice) {\n return;\n }\n if (choice.categoryCount !== 0) {\n correctResponse = moveChoiceToCategory(choice.id, from, to, choiceIndex, correctResponse);\n correctResponse = verifyAllowMultiplePlacements(choice, to, correctResponse);\n } else if (choice.categoryCount === 0) {\n correctResponse = moveChoiceToCategory(choice.id, undefined, to, 0, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n mathMlOptions = {},\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const { maxCategories, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n disabled={false}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n )}\n\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n onMoveChoice={(choiceId, from, to, choiceIndex) => this.moveChoice(choiceId, from, to, choiceIndex)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n </React.Fragment>\n );\n })}\n </div>\n\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
@@ -35,7 +35,7 @@ var _CardActions = _interopRequireDefault(require("@material-ui/core/CardActions
35
35
 
36
36
  var _inputHeader = _interopRequireDefault(require("../input-header"));
37
37
 
38
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
38
+ var _configUi = require("@pie-lib/config-ui");
39
39
 
40
40
  var _buttons = require("../buttons");
41
41
 
@@ -45,7 +45,7 @@ var _reactDnd = require("react-dnd");
45
45
 
46
46
  var _debug = _interopRequireDefault(require("debug"));
47
47
 
48
- var _drag = require("@pie-lib/pie-toolbox/drag");
48
+ var _drag = require("@pie-lib/drag");
49
49
 
50
50
  var _utils = require("../../utils");
51
51
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","configuration","deleteFocusedEl","focusedEl","index","onDelete","connectDropTarget","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","showRemoveAfterPlacing","isCheckboxShown","draggable","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","number","bool","shape","add","styles","theme","padding","justifyContent","minWidth","spacing","unit","overflow","cursor","fontSize","typography","color","palette","main","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/pie-toolbox/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/pie-toolbox/drag';\nimport { multiplePlacements } from '../../utils';\nimport flow from 'lodash/flow';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = (props) => {\n if (props.lockChoiceOrder) {\n return true;\n }\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n allowMultiplePlacements: PropTypes.string,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n configuration: PropTypes.object.isRequired,\n choice: PropTypes.object.isRequired,\n connectDropTarget: PropTypes.func,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n lockChoiceOrder: PropTypes.bool,\n maxImageHeight: PropTypes.object,\n maxImageWidth: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n configuration,\n choice,\n deleteFocusedEl,\n focusedEl,\n index,\n onDelete,\n connectDropTarget,\n connectDragSource,\n connectDragPreview,\n imageSupport,\n spellCheck,\n toolbarOpts,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n\n const showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);\n const draggable = canDrag(this.props);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n connectDropTarget(\n <span className={classNames(classes.dragHandle, draggable === false && classes.dragDisabled)}>\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>,\n ),\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>,\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n {showRemoveAfterPlacing && (\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n )}\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n minWidth: '196px',\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
1
+ {"version":3,"sources":["../../../src/design/choices/choice.jsx"],"names":["log","canDrag","props","lockChoiceOrder","count","choice","categoryCount","correctResponseCount","Choice","content","onChange","allowMultiplePlacements","multiplePlacements","perChoice","classes","className","configuration","deleteFocusedEl","focusedEl","index","onDelete","connectDropTarget","connectDragSource","connectDragPreview","imageSupport","spellCheck","toolbarOpts","error","maxImageWidth","maxImageHeight","uploadSoundSupport","showRemoveAfterPlacing","isCheckboxShown","draggable","actions","dragHandle","dragDisabled","changeContent","errorText","changeCategoryCount","React","Component","PropTypes","string","object","isRequired","func","number","bool","shape","add","styles","theme","padding","justifyContent","minWidth","spacing","unit","overflow","cursor","fontSize","typography","color","palette","main","paddingBottom","StyledChoice","spec","beginDrag","out","id","endDrag","monitor","didDrop","item","getItem","categoryId","onRemoveChoice","specTarget","drop","rearrangeChoices","canDrop","uid","withUid","connect","dragSource","dragPreview","isDragging","dropTarget","isOver"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport InputHeader from '../input-header';\nimport { Checkbox } from '@pie-lib/config-ui';\nimport { DeleteButton } from '../buttons';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { uid } from '@pie-lib/drag';\nimport { multiplePlacements } from '../../utils';\nimport flow from 'lodash/flow';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nconst canDrag = (props) => {\n if (props.lockChoiceOrder) {\n return true;\n }\n const count = props.choice.categoryCount || 0;\n if (count === 0) {\n return true;\n } else {\n return props.correctResponseCount < count;\n }\n};\n\nexport class Choice extends React.Component {\n static propTypes = {\n allowMultiplePlacements: PropTypes.string,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n configuration: PropTypes.object.isRequired,\n choice: PropTypes.object.isRequired,\n connectDropTarget: PropTypes.func,\n deleteFocusedEl: PropTypes.func,\n focusedEl: PropTypes.number,\n index: PropTypes.number,\n lockChoiceOrder: PropTypes.bool,\n maxImageHeight: PropTypes.object,\n maxImageWidth: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n correctResponseCount: PropTypes.number.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n changeContent = (content) => {\n const { onChange, choice } = this.props;\n choice.content = content;\n onChange(choice);\n };\n\n changeCategoryCount = () => {\n const { onChange, choice } = this.props;\n if (choice.categoryCount === 1) {\n choice.categoryCount = 0;\n } else {\n choice.categoryCount = 1;\n }\n onChange(choice);\n };\n\n isCheckboxShown = (allowMultiplePlacements) => allowMultiplePlacements === multiplePlacements.perChoice;\n\n render() {\n const {\n allowMultiplePlacements,\n classes,\n className,\n configuration,\n choice,\n deleteFocusedEl,\n focusedEl,\n index,\n onDelete,\n connectDropTarget,\n connectDragSource,\n connectDragPreview,\n imageSupport,\n spellCheck,\n toolbarOpts,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n } = this.props;\n\n const showRemoveAfterPlacing = this.isCheckboxShown(allowMultiplePlacements);\n const draggable = canDrag(this.props);\n\n return (\n <Card className={classNames(classes.choice, className)}>\n <CardActions className={classes.actions}>\n {connectDragSource(\n connectDropTarget(\n <span className={classNames(classes.dragHandle, draggable === false && classes.dragDisabled)}>\n <DragHandle color={draggable ? 'primary' : 'disabled'} />\n </span>,\n ),\n )}\n </CardActions>\n {connectDragPreview(\n <span>\n <InputHeader\n imageSupport={imageSupport}\n focusedEl={focusedEl}\n deleteFocusedEl={deleteFocusedEl}\n index={index}\n label={choice.content}\n onChange={this.changeContent}\n onDelete={onDelete}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n {error && <div className={classes.errorText}>{error}</div>}\n </span>,\n )}\n\n <CardActions className={classes.actions}>\n <DeleteButton label={'delete'} onClick={onDelete} />\n {showRemoveAfterPlacing && (\n <Checkbox\n mini\n label={'Remove after placing'}\n checked={choice.categoryCount === 1}\n onChange={this.changeCategoryCount}\n />\n )}\n </CardActions>\n </Card>\n );\n }\n}\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n minWidth: '196px',\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingBottom: theme.spacing.unit,\n },\n});\n\nconst StyledChoice = withStyles(styles)(Choice);\n\nexport const spec = {\n canDrag,\n beginDrag: (props) => {\n const out = {\n id: props.choice.id,\n index: props.index,\n };\n log('[beginDrag] out:', out);\n return out;\n },\n endDrag: (props, monitor) => {\n if (!monitor.didDrop()) {\n const item = monitor.getItem();\n if (item.categoryId) {\n log('wasnt droppped - what to do?');\n props.onRemoveChoice(item);\n }\n }\n },\n};\n\nexport const specTarget = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.rearrangeChoices(item.index, props.index);\n },\n canDrop: (props, monitor) => {\n const item = monitor.getItem();\n return props.choice.id !== item.id;\n },\n};\n\nexport default uid.withUid(\n flow(\n DragSource(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n }),\n ),\n DropTarget(\n ({ uid }) => uid,\n specTarget,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n ),\n )(StyledChoice),\n);\n"],"file":"choice.js"}
@@ -35,9 +35,9 @@ var _header = _interopRequireDefault(require("../header"));
35
35
 
36
36
  var _config = _interopRequireDefault(require("./config"));
37
37
 
38
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
38
+ var _configUi = require("@pie-lib/config-ui");
39
39
 
40
- var _categorize = require("@pie-lib/pie-toolbox/categorize");
40
+ var _categorize = require("@pie-lib/categorize");
41
41
 
42
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
43
43