@pie-element/categorize 6.6.0 → 6.6.1-beta.587
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +538 -0
- package/configure/CHANGELOG.md +474 -0
- package/configure/lib/defaults.js +56 -5
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/design/builder.js +8 -5
- package/configure/lib/design/builder.js.map +1 -1
- package/configure/lib/design/buttons.js +6 -4
- package/configure/lib/design/buttons.js.map +1 -1
- package/configure/lib/design/categories/RowLabel.js +68 -0
- package/configure/lib/design/categories/RowLabel.js.map +1 -0
- package/configure/lib/design/categories/alternateResponses.js +122 -18
- package/configure/lib/design/categories/alternateResponses.js.map +1 -1
- package/configure/lib/design/categories/category.js +53 -6
- package/configure/lib/design/categories/category.js.map +1 -1
- package/configure/lib/design/categories/choice-preview.js +19 -6
- package/configure/lib/design/categories/choice-preview.js.map +1 -1
- package/configure/lib/design/categories/droppable-placeholder.js +25 -5
- package/configure/lib/design/categories/droppable-placeholder.js.map +1 -1
- package/configure/lib/design/categories/index.js +172 -82
- package/configure/lib/design/categories/index.js.map +1 -1
- package/configure/lib/design/choices/choice.js +83 -13
- package/configure/lib/design/choices/choice.js.map +1 -1
- package/configure/lib/design/choices/config.js +10 -136
- package/configure/lib/design/choices/config.js.map +1 -1
- package/configure/lib/design/choices/index.js +89 -13
- package/configure/lib/design/choices/index.js.map +1 -1
- package/configure/lib/design/header.js +18 -6
- package/configure/lib/design/header.js.map +1 -1
- package/configure/lib/design/index.js +165 -50
- package/configure/lib/design/index.js.map +1 -1
- package/configure/lib/design/input-header.js +69 -11
- package/configure/lib/design/input-header.js.map +1 -1
- package/configure/lib/index.js +18 -4
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +4 -2
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/utils.js +27 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +9 -9
- package/controller/CHANGELOG.md +128 -0
- package/controller/lib/defaults.js +20 -1
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +173 -30
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +60 -0
- package/controller/lib/utils.js.map +1 -0
- package/controller/package.json +4 -4
- package/docs/config-schema.json +181 -0
- package/docs/config-schema.json.md +141 -1
- package/docs/demo/config.js +2 -2
- package/docs/demo/generate.js +5 -8
- package/docs/demo/index.html +1 -1
- package/docs/pie-schema.json +63 -11
- package/docs/pie-schema.json.md +51 -11
- package/lib/categorize/categories.js +30 -24
- package/lib/categorize/categories.js.map +1 -1
- package/lib/categorize/category.js +15 -12
- package/lib/categorize/category.js.map +1 -1
- package/lib/categorize/choice.js +19 -12
- package/lib/categorize/choice.js.map +1 -1
- package/lib/categorize/choices.js +35 -16
- package/lib/categorize/choices.js.map +1 -1
- package/lib/categorize/droppable-placeholder.js +6 -4
- package/lib/categorize/droppable-placeholder.js.map +1 -1
- package/lib/categorize/grid-content.js +3 -3
- package/lib/categorize/grid-content.js.map +1 -1
- package/lib/categorize/index.js +71 -37
- package/lib/categorize/index.js.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/package.json +9 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/categorize/droppable-placeholder.jsx"],"names":["log","DroppablePlaceholder","props","children","connectDropTarget","isOver","className","grid","disabled","flex","React","Component","PropTypes","func","isRequired","bool","oneOfType","arrayOf","node","string","object","spec","drop","monitor","item","getItem","onDropChoice","canDrop","WithTarget","uid","connect","dropTarget","withUid"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;IAEaC,oB;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/categorize/droppable-placeholder.jsx"],"names":["log","DroppablePlaceholder","props","children","connectDropTarget","isOver","className","grid","disabled","choiceBoard","flex","React","Component","PropTypes","func","isRequired","bool","oneOfType","arrayOf","node","string","object","spec","drop","monitor","item","getItem","onDropChoice","canDrop","WithTarget","uid","connect","dropTarget","withUid"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;IAEaC,oB;;;;;;;;;;;;WASX,kBAAS;AACP,wBAQI,KAAKC,KART;AAAA,UACEC,QADF,eACEA,QADF;AAAA,UAEEC,iBAFF,eAEEA,iBAFF;AAAA,UAGEC,MAHF,eAGEA,MAHF;AAAA,UAIEC,SAJF,eAIEA,SAJF;AAAA,UAKEC,IALF,eAKEA,IALF;AAAA,UAMEC,QANF,eAMEA,QANF;AAAA,UAOEC,WAPF,eAOEA,WAPF;AAUA,aAAOL,iBAAiB,eACtB;AAAK,QAAA,KAAK,EAAE;AAAEM,UAAAA,IAAI,EAAE;AAAR;AAAZ,sBACE,gCAAC,iBAAD;AACE,QAAA,SAAS,EAAEJ,SADb;AAEE,QAAA,MAAM,EAAED,MAFV;AAGE,QAAA,IAAI,EAAEE,IAHR;AAIE,QAAA,QAAQ,EAAEC,QAJZ;AAKE,QAAA,WAAW,EAAEC;AALf,SAOGN,QAPH,CADF,CADsB,CAAxB;AAaD;;;EAjCuCQ,kBAAMC,S;;;iCAAnCX,oB,eACQ;AACjBG,EAAAA,iBAAiB,EAAES,sBAAUC,IAAV,CAAeC,UADjB;AAEjBV,EAAAA,MAAM,EAAEQ,sBAAUG,IAFD;AAGjBb,EAAAA,QAAQ,EAAEU,sBAAUI,SAAV,CAAoB,CAACJ,sBAAUK,OAAV,CAAkBL,sBAAUM,IAA5B,CAAD,EAAoCN,sBAAUM,IAA9C,CAApB,EAAyEJ,UAHlE;AAIjBT,EAAAA,SAAS,EAAEO,sBAAUO,MAJJ;AAKjBb,EAAAA,IAAI,EAAEM,sBAAUQ,MALC;AAMjBb,EAAAA,QAAQ,EAAEK,sBAAUG;AANH,C;AAmCd,IAAMM,IAAI,GAAG;AAClBC,EAAAA,IAAI,EAAE,cAACrB,KAAD,EAAQsB,OAAR,EAAoB;AACxBxB,IAAAA,GAAG,CAAC,gBAAD,EAAmBE,KAAnB,CAAH;AACA,QAAMuB,IAAI,GAAGD,OAAO,CAACE,OAAR,EAAb;AACAxB,IAAAA,KAAK,CAACyB,YAAN,CAAmBF,IAAnB;AACD,GALiB;AAMlBG,EAAAA,OAAO,EAAE,iBAAC1B;AAAM;AAAP,IAAyB;AAChC,WAAO,CAACA,KAAK,CAACM,QAAd;AACD;AARiB,CAAb;;AAWP,IAAMqB,UAAU,GAAG,0BACjB;AAAA,MAAGC,GAAH,QAAGA,GAAH;AAAA,SAAaA,GAAb;AAAA,CADiB,EAEjBR,IAFiB,EAGjB,UAACS,OAAD,EAAUP,OAAV;AAAA,SAAuB;AACrBpB,IAAAA,iBAAiB,EAAE2B,OAAO,CAACC,UAAR,EADE;AAErB3B,IAAAA,MAAM,EAAEmB,OAAO,CAACnB,MAAR;AAFa,GAAvB;AAAA,CAHiB,EAOjBJ,oBAPiB,CAAnB;;eASe6B,UAAIG,OAAJ,CAAYJ,UAAZ,C","sourcesContent":["import React from 'react';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from 'react-dnd';\nimport { uid } from '@pie-lib/drag';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize:droppable-placeholder');\n\nexport class DroppablePlaceholder extends React.Component {\n static propTypes = {\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n className: PropTypes.string,\n grid: PropTypes.object,\n disabled: PropTypes.bool,\n };\n render() {\n const {\n children,\n connectDropTarget,\n isOver,\n className,\n grid,\n disabled,\n choiceBoard\n } = this.props;\n\n return connectDropTarget(\n <div style={{ flex: 1 }}>\n <PlaceHolder\n className={className}\n isOver={isOver}\n grid={grid}\n disabled={disabled}\n choiceBoard={choiceBoard}\n >\n {children}\n </PlaceHolder>\n </div>,\n );\n }\n}\n\nexport const spec = {\n drop: (props, monitor) => {\n log('[drop] props: ', props);\n const item = monitor.getItem();\n props.onDropChoice(item);\n },\n canDrop: (props /*, monitor*/) => {\n return !props.disabled;\n },\n};\n\nconst WithTarget = DropTarget(\n ({ uid }) => uid,\n spec,\n (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n }),\n)(DroppablePlaceholder);\n\nexport default uid.withUid(WithTarget);\n"],"file":"droppable-placeholder.js"}
|
|
@@ -27,13 +27,13 @@ var _styles = require("@material-ui/core/styles");
|
|
|
27
27
|
|
|
28
28
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
29
29
|
|
|
30
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
30
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
31
31
|
|
|
32
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
33
33
|
|
|
34
34
|
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); }; }
|
|
35
35
|
|
|
36
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
36
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
37
37
|
|
|
38
38
|
var GridContent = /*#__PURE__*/function (_React$Component) {
|
|
39
39
|
(0, _inherits2["default"])(GridContent, _React$Component);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/categorize/grid-content.jsx"],"names":["GridContent","props","classes","className","children","columns","extraStyle","rows","style","gridTemplateColumns","gridTemplateRows","gridContent","React","Component","PropTypes","object","isRequired","string","oneOfType","arrayOf","node","number","styles","theme","display","columnGap","spacing","unit","gridColumnGap","rowGap","gridRowGap","gridAutoRows"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,W;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/categorize/grid-content.jsx"],"names":["GridContent","props","classes","className","children","columns","extraStyle","rows","style","gridTemplateColumns","gridTemplateRows","gridContent","React","Component","PropTypes","object","isRequired","string","oneOfType","arrayOf","node","number","styles","theme","display","columnGap","spacing","unit","gridColumnGap","rowGap","gridRowGap","gridAutoRows"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;IAEaA,W;;;;;;;;;;;;WAcX,kBAAS;AACP,wBAAoE,KAAKC,KAAzE;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,QAA5B,eAA4BA,QAA5B;AAAA,UAAsCC,OAAtC,eAAsCA,OAAtC;AAAA,UAA+CC,UAA/C,eAA+CA,UAA/C;AAAA,UAA2DC,IAA3D,eAA2DA,IAA3D;;AACA,UAAMC,KAAK;AACTC,QAAAA,mBAAmB,mBAAYJ,OAAZ,WADV;AAETK,QAAAA,gBAAgB,mBAAYH,IAAZ;AAFP,SAGND,UAHM,CAAX;;AAMA,0BACE;AAAK,QAAA,KAAK,EAAEE,KAAZ;AAAmB,QAAA,SAAS,EAAE,4BAAWN,OAAO,CAACS,WAAnB,EAAgCR,SAAhC;AAA9B,SACGC,QADH,CADF;AAKD;;;EA3B8BQ,kBAAMC,S;;;iCAA1Bb,W,eACQ;AACjBE,EAAAA,OAAO,EAAEY,sBAAUC,MAAV,CAAiBC,UADT;AAEjBb,EAAAA,SAAS,EAAEW,sBAAUG,MAFJ;AAGjBb,EAAAA,QAAQ,EAAEU,sBAAUI,SAAV,CAAoB,CAACJ,sBAAUK,OAAV,CAAkBL,sBAAUM,IAA5B,CAAD,EAAoCN,sBAAUM,IAA9C,CAApB,EAAyEJ,UAHlE;AAIjBX,EAAAA,OAAO,EAAES,sBAAUO,MAJF;AAKjBd,EAAAA,IAAI,EAAEO,sBAAUO,MALC;AAMjBf,EAAAA,UAAU,EAAEQ,sBAAUC;AANL,C;iCADRf,W,kBASW;AACpBK,EAAAA,OAAO,EAAE,CADW;AAEpBE,EAAAA,IAAI,EAAE;AAFc,C;;AAqBxB,IAAMe,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBZ,IAAAA,WAAW,EAAE;AACXa,MAAAA,OAAO,EAAE,MADE;AAEXC,MAAAA,SAAS,YAAKF,KAAK,CAACG,OAAN,CAAcC,IAAnB,OAFE;AAGXC,MAAAA,aAAa,YAAKL,KAAK,CAACG,OAAN,CAAcC,IAAnB,OAHF;AAIXE,MAAAA,MAAM,YAAKN,KAAK,CAACG,OAAN,CAAcC,IAAnB,OAJK;AAKXG,MAAAA,UAAU,YAAKP,KAAK,CAACG,OAAN,CAAcC,IAAnB,OALC;AAMXI,MAAAA,YAAY,EAAE;AANH;AADY,GAAZ;AAAA,CAAf;;eAWe,wBAAWT,MAAX,EAAmBtB,WAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class GridContent extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n columns: PropTypes.number,\n rows: PropTypes.number,\n extraStyle: PropTypes.object,\n };\n static defaultProps = {\n columns: 2,\n rows: 2,\n };\n\n render() {\n const { classes, className, children, columns, extraStyle, rows } = this.props;\n const style = {\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gridTemplateRows: `repeat(${rows}, auto)`,\n ...extraStyle,\n };\n\n return (\n <div style={style} className={classNames(classes.gridContent, className)}>\n {children}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n gridContent: {\n display: 'grid',\n columnGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n rowGap: `${theme.spacing.unit}px`,\n gridRowGap: `${theme.spacing.unit}px`,\n gridAutoRows: '1fr',\n },\n});\n\nexport default withStyles(styles)(GridContent);\n"],"file":"grid-content.js"}
|
package/lib/categorize/index.js
CHANGED
|
@@ -43,7 +43,7 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
43
43
|
|
|
44
44
|
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); }; }
|
|
45
45
|
|
|
46
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
46
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
47
|
|
|
48
48
|
var log = (0, _debug["default"])('@pie-ui:categorize');
|
|
49
49
|
|
|
@@ -64,22 +64,31 @@ var Categorize = /*#__PURE__*/function (_React$Component) {
|
|
|
64
64
|
|
|
65
65
|
(0, _classCallCheck2["default"])(this, Categorize);
|
|
66
66
|
_this = _super.call(this, props);
|
|
67
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dropChoice", function (categoryId, draggedChoice) {
|
|
68
|
-
var _this$props = _this.props,
|
|
69
|
-
session = _this$props.session,
|
|
70
|
-
onAnswersChange = _this$props.onAnswersChange;
|
|
71
|
-
log('[dropChoice] category: ', draggedChoice.categoryId, 'choice: ', draggedChoice);
|
|
72
|
-
var answers = (0, _categorize.moveChoiceToCategory)(draggedChoice.id, draggedChoice.categoryId, categoryId, draggedChoice.choiceIndex, session.answers);
|
|
73
|
-
onAnswersChange(answers);
|
|
74
|
-
});
|
|
75
67
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "removeChoice", function (c) {
|
|
76
68
|
log('[removeChoice]: ', c);
|
|
77
|
-
var _this$
|
|
78
|
-
onAnswersChange = _this$
|
|
79
|
-
session = _this$
|
|
69
|
+
var _this$props = _this.props,
|
|
70
|
+
onAnswersChange = _this$props.onAnswersChange,
|
|
71
|
+
session = _this$props.session;
|
|
80
72
|
var answers = (0, _categorize.removeChoiceFromCategory)(c.id, c.categoryId, c.choiceIndex, session.answers);
|
|
81
73
|
onAnswersChange(answers);
|
|
82
74
|
});
|
|
75
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dropChoice", function (categoryId, draggedChoice) {
|
|
76
|
+
var _this$props2 = _this.props,
|
|
77
|
+
session = _this$props2.session,
|
|
78
|
+
onAnswersChange = _this$props2.onAnswersChange;
|
|
79
|
+
|
|
80
|
+
if (draggedChoice) {
|
|
81
|
+
log('[dropChoice] category: ', draggedChoice.categoryId, 'choice: ', draggedChoice);
|
|
82
|
+
} else {
|
|
83
|
+
log('[dropChoice] category: ', undefined, 'choice: ', undefined);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
var answers = draggedChoice ? (0, _categorize.moveChoiceToCategory)(draggedChoice.id, draggedChoice.categoryId, categoryId, draggedChoice.choiceIndex, session.answers) : _this.removeChoice(categoryId);
|
|
87
|
+
|
|
88
|
+
if (draggedChoice) {
|
|
89
|
+
onAnswersChange(answers);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
83
92
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShowCorrect", function () {
|
|
84
93
|
return _this.setState({
|
|
85
94
|
showCorrect: !_this.state.showCorrect
|
|
@@ -111,6 +120,13 @@ var Categorize = /*#__PURE__*/function (_React$Component) {
|
|
|
111
120
|
|
|
112
121
|
return flexDirection;
|
|
113
122
|
});
|
|
123
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "existAlternateResponse", function (correctResponse) {
|
|
124
|
+
return correctResponse === null || correctResponse === void 0 ? void 0 : correctResponse.some(function (correctRes) {
|
|
125
|
+
var _correctRes$alternate;
|
|
126
|
+
|
|
127
|
+
return ((_correctRes$alternate = correctRes.alternateResponses) === null || _correctRes$alternate === void 0 ? void 0 : _correctRes$alternate.length) > 0;
|
|
128
|
+
});
|
|
129
|
+
});
|
|
114
130
|
_this.state = {
|
|
115
131
|
showCorrect: false
|
|
116
132
|
};
|
|
@@ -132,7 +148,15 @@ var Categorize = /*#__PURE__*/function (_React$Component) {
|
|
|
132
148
|
model = _this$props3.model,
|
|
133
149
|
session = _this$props3.session;
|
|
134
150
|
var showCorrect = this.state.showCorrect;
|
|
135
|
-
var choicesPosition = model.choicesPosition
|
|
151
|
+
var choicesPosition = model.choicesPosition,
|
|
152
|
+
note = model.note,
|
|
153
|
+
showNote = model.showNote,
|
|
154
|
+
env = model.env;
|
|
155
|
+
|
|
156
|
+
var _ref = env || {},
|
|
157
|
+
mode = _ref.mode,
|
|
158
|
+
role = _ref.role;
|
|
159
|
+
|
|
136
160
|
var choicePosition = choicesPosition || 'above';
|
|
137
161
|
var style = {
|
|
138
162
|
flexDirection: this.getPositionDirection(choicePosition)
|
|
@@ -144,41 +168,43 @@ var Categorize = /*#__PURE__*/function (_React$Component) {
|
|
|
144
168
|
correct = _buildState.correct;
|
|
145
169
|
|
|
146
170
|
log('[render] disabled: ', model.disabled);
|
|
147
|
-
var rowLabels = model.rowLabels
|
|
171
|
+
var rowLabels = model.rowLabels,
|
|
172
|
+
categoriesPerRow = model.categoriesPerRow,
|
|
173
|
+
correctResponse = model.correctResponse;
|
|
174
|
+
var nbOfRows = categories && Math.ceil(categories.length / categoriesPerRow) || 0;
|
|
175
|
+
var existAlternate = this.existAlternateResponse(correctResponse) || false;
|
|
176
|
+
var displayNote = (showCorrect || mode === 'view' && role === 'instructor') && showNote && note && existAlternate;
|
|
148
177
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
149
178
|
className: classes.mainContainer
|
|
150
|
-
}, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
179
|
+
}, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
151
180
|
labels: {
|
|
152
181
|
hidden: 'Show Teacher Instructions',
|
|
153
182
|
visible: 'Hide Teacher Instructions'
|
|
154
183
|
},
|
|
155
184
|
className: classes.collapsible
|
|
156
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
})), /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
185
|
+
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
186
|
+
prompt: model.teacherInstructions
|
|
187
|
+
})), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
161
188
|
show: showCorrect || correct === false,
|
|
162
189
|
toggled: showCorrect,
|
|
163
190
|
onToggle: this.toggleShowCorrect
|
|
164
|
-
}), removeHTMLTags(model.prompt) && /*#__PURE__*/_react["default"].createElement("div", {
|
|
165
|
-
className: classes.prompt
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
191
|
+
}), model.prompt && removeHTMLTags(model.prompt) && /*#__PURE__*/_react["default"].createElement("div", {
|
|
192
|
+
className: classes.prompt
|
|
193
|
+
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
194
|
+
prompt: model.prompt
|
|
195
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
170
196
|
className: classes.categorize,
|
|
171
197
|
style: style
|
|
172
198
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
173
199
|
style: {
|
|
174
|
-
display: 'flex'
|
|
200
|
+
display: 'flex',
|
|
201
|
+
flex: 1
|
|
175
202
|
}
|
|
176
|
-
}, rowLabels && /*#__PURE__*/_react["default"].createElement("div", {
|
|
203
|
+
}, !!(rowLabels && nbOfRows) && /*#__PURE__*/_react["default"].createElement("div", {
|
|
177
204
|
style: {
|
|
178
|
-
display: 'grid'
|
|
179
|
-
marginRight: '20px'
|
|
205
|
+
display: 'grid'
|
|
180
206
|
}
|
|
181
|
-
}, rowLabels.map(function (label, index) {
|
|
207
|
+
}, rowLabels.slice(0, nbOfRows).map(function (label, index) {
|
|
182
208
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
183
209
|
key: index,
|
|
184
210
|
style: {
|
|
@@ -200,17 +226,22 @@ var Categorize = /*#__PURE__*/function (_React$Component) {
|
|
|
200
226
|
disabled: model.disabled,
|
|
201
227
|
model: model,
|
|
202
228
|
choices: choices,
|
|
203
|
-
choicePosition: choicePosition
|
|
204
|
-
|
|
229
|
+
choicePosition: choicePosition,
|
|
230
|
+
onDropChoice: this.dropChoice,
|
|
231
|
+
onRemoveChoice: this.removeChoice
|
|
232
|
+
})), displayNote && /*#__PURE__*/_react["default"].createElement("div", {
|
|
233
|
+
className: classes.note,
|
|
234
|
+
dangerouslySetInnerHTML: {
|
|
235
|
+
__html: "<strong>Note:</strong> ".concat(note)
|
|
236
|
+
}
|
|
237
|
+
}), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
205
238
|
labels: {
|
|
206
239
|
hidden: 'Show Rationale',
|
|
207
240
|
visible: 'Hide Rationale'
|
|
208
241
|
},
|
|
209
242
|
className: classes.collapsible
|
|
210
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
211
|
-
|
|
212
|
-
__html: model.rationale
|
|
213
|
-
}
|
|
243
|
+
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
244
|
+
prompt: model.rationale
|
|
214
245
|
})), model.correctness && model.feedback && !showCorrect && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
|
|
215
246
|
correctness: model.correctness,
|
|
216
247
|
feedback: model.feedback
|
|
@@ -273,6 +304,9 @@ var styles = function styles(theme) {
|
|
|
273
304
|
marginBottom: '35px',
|
|
274
305
|
verticalAlign: 'middle'
|
|
275
306
|
},
|
|
307
|
+
note: {
|
|
308
|
+
padding: '5px 0'
|
|
309
|
+
},
|
|
276
310
|
categorize: {
|
|
277
311
|
marginBottom: theme.spacing.unit,
|
|
278
312
|
display: 'flex',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/categorize/index.jsx"],"names":["log","removeHTMLTags","html","tmp","document","createElement","innerHTML","value","textContent","innerText","trim","Categorize","props","categoryId","draggedChoice","session","onAnswersChange","answers","id","choiceIndex","c","setState","showCorrect","state","onShowCorrectToggle","choicePosition","flexDirection","classes","model","choicesPosition","style","getPositionDirection","categories","choices","correctResponse","correct","disabled","rowLabels","mainContainer","teacherInstructions","hidden","visible","collapsible","__html","toggleShowCorrect","prompt","categorize","display","marginRight","map","label","index","alignItems","justifyContent","dropChoice","removeChoice","rationale","correctness","feedback","React","Component","PropTypes","object","isRequired","shape","arrayOf","choice","string","category","func","CategorizeProvider","uid","generateId","styles","theme","padding","spacing","unit","color","text","backgroundColor","background","marginBottom","verticalAlign","paddingBottom"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,oBAAN,CAAZ;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAAC,IAAI,EAAI;AAC7B,MAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AAEAF,EAAAA,GAAG,CAACG,SAAJ,GAAgBJ,IAAhB;AAEA,MAAMK,KAAK,GAAGJ,GAAG,CAACK,WAAJ,IAAmBL,GAAG,CAACM,SAAvB,IAAoC,EAAlD;AAEA,SAAOF,KAAK,CAACG,IAAN,EAAP;AACD,CARD;;IAUaC,U;;;;;AAoBX,sBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,mGAQN,UAACC,UAAD,EAAaC,aAAb,EAA+B;AAAA,wBACL,MAAKF,KADA;AAAA,UAClCG,OADkC,eAClCA,OADkC;AAAA,UACzBC,eADyB,eACzBA,eADyB;AAE1ChB,MAAAA,GAAG,CACD,yBADC,EAEDc,aAAa,CAACD,UAFb,EAGD,UAHC,EAIDC,aAJC,CAAH;AAOA,UAAMG,OAAO,GAAG,sCACdH,aAAa,CAACI,EADA,EAEdJ,aAAa,CAACD,UAFA,EAGdA,UAHc,EAIdC,aAAa,CAACK,WAJA,EAKdJ,OAAO,CAACE,OALM,CAAhB;AAQAD,MAAAA,eAAe,CAACC,OAAD,CAAf;AACD,KA1BkB;AAAA,qGA4BJ,UAAAG,CAAC,EAAI;AAClBpB,MAAAA,GAAG,CAAC,kBAAD,EAAqBoB,CAArB,CAAH;AADkB,yBAEmB,MAAKR,KAFxB;AAAA,UAEVI,eAFU,gBAEVA,eAFU;AAAA,UAEOD,OAFP,gBAEOA,OAFP;AAGlB,UAAME,OAAO,GAAG,0CACdG,CAAC,CAACF,EADY,EAEdE,CAAC,CAACP,UAFY,EAGdO,CAAC,CAACD,WAHY,EAIdJ,OAAO,CAACE,OAJM,CAAhB;AAMAD,MAAAA,eAAe,CAACC,OAAD,CAAf;AACD,KAtCkB;AAAA,0GA4CC;AAAA,aAClB,MAAKI,QAAL,CAAc;AAAEC,QAAAA,WAAW,EAAE,CAAC,MAAKC,KAAL,CAAWD;AAA3B,OAAd,EAAwD,YAAM;AAC5D,cAAKV,KAAL,CAAWY,mBAAX;AACD,OAFD,CADkB;AAAA,KA5CD;AAAA,6GAiDI,UAACC,cAAD,EAAoB;AACzC,UAAIC,aAAJ;;AAEA,cAAQD,cAAR;AACE,aAAK,MAAL;AACEC,UAAAA,aAAa,GAAG,aAAhB;AACA;;AACF,aAAK,OAAL;AACEA,UAAAA,aAAa,GAAG,KAAhB;AACA;;AACF,aAAK,OAAL;AACEA,UAAAA,aAAa,GAAG,QAAhB;AACA;;AACF;AACE;AACAA,UAAAA,aAAa,GAAG,gBAAhB;AACA;AAbJ;;AAgBA,aAAOA,aAAP;AACD,KArEkB;AAGjB,UAAKH,KAAL,GAAa;AACXD,MAAAA,WAAW,EAAE;AADF,KAAb;AAHiB;AAMlB;;;;WAkCD,4CAAmC;AACjC,WAAKD,QAAL,CAAc;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAd;AACD;;;WA6BD,kBAAS;AAAA,yBAC6B,KAAKV,KADlC;AAAA,UACCe,OADD,gBACCA,OADD;AAAA,UACUC,KADV,gBACUA,KADV;AAAA,UACiBb,OADjB,gBACiBA,OADjB;AAAA,UAECO,WAFD,GAEiB,KAAKC,KAFtB,CAECD,WAFD;AAAA,UAGCO,eAHD,GAGqBD,KAHrB,CAGCC,eAHD;AAKP,UAAMJ,cAAc,GAAGI,eAAe,IAAI,OAA1C;AAEA,UAAMC,KAAK,GAAG;AACZJ,QAAAA,aAAa,EAAE,KAAKK,oBAAL,CAA0BN,cAA1B;AADH,OAAd;;AAPO,wBAWkC,4BACvCG,KAAK,CAACI,UADiC,EAEvCJ,KAAK,CAACK,OAFiC,EAGvCX,WAAW,GAAGM,KAAK,CAACM,eAAT,GAA2BnB,OAAO,CAACE,OAHP,EAIvCW,KAAK,CAACM,eAJiC,CAXlC;AAAA,UAWCF,UAXD,eAWCA,UAXD;AAAA,UAWaC,OAXb,eAWaA,OAXb;AAAA,UAWsBE,OAXtB,eAWsBA,OAXtB;;AAkBPnC,MAAAA,GAAG,CAAC,qBAAD,EAAwB4B,KAAK,CAACQ,QAA9B,CAAH;AAlBO,UAoBCC,SApBD,GAoBeT,KApBf,CAoBCS,SApBD;AAsBP,0BACE;AAAK,QAAA,SAAS,EAAEV,OAAO,CAACW;AAAxB,SAEIV,KAAK,CAACW,mBAAN,IAA6B,uBAAQX,KAAK,CAACW,mBAAd,CAA7B,iBACE,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AAAEC,UAAAA,MAAM,EAAE,2BAAV;AAAuCC,UAAAA,OAAO,EAAE;AAAhD,SADV;AAEE,QAAA,SAAS,EAAEd,OAAO,CAACe;AAFrB,sBAIE;AAAK,QAAA,uBAAuB,EAAE;AAAEC,UAAAA,MAAM,EAAEf,KAAK,CAACW;AAAhB;AAA9B,QAJF,CAHN,eAWE,2CAXF,eAYE,gCAAC,+BAAD;AACE,QAAA,IAAI,EAAEjB,WAAW,IAAIa,OAAO,KAAK,KADnC;AAEE,QAAA,OAAO,EAAEb,WAFX;AAGE,QAAA,QAAQ,EAAE,KAAKsB;AAHjB,QAZF,EAkBI3C,cAAc,CAAC2B,KAAK,CAACiB,MAAP,CAAd,iBACA;AACE,QAAA,SAAS,EAAElB,OAAO,CAACkB,MADrB;AAEE,QAAA,uBAAuB,EAAE;AAAEF,UAAAA,MAAM,EAAEf,KAAK,CAACiB;AAAhB;AAF3B,QAnBJ,eAwBE;AAAK,QAAA,SAAS,EAAElB,OAAO,CAACmB,UAAxB;AAAoC,QAAA,KAAK,EAAEhB;AAA3C,sBACE;AAAK,QAAA,KAAK,EAAE;AAAEiB,UAAAA,OAAO,EAAE;AAAX;AAAZ,SAEIV,SAAS,iBACP;AAAK,QAAA,KAAK,EAAE;AAAEU,UAAAA,OAAO,EAAE,MAAX;AAAmBC,UAAAA,WAAW,EAAE;AAAhC;AAAZ,SACGX,SAAS,CAACY,GAAV,CAAc,UAACC,KAAD,EAAQC,KAAR;AAAA,4BACb;AACE,UAAA,GAAG,EAAEA,KADP;AAEE,UAAA,KAAK,EAAE;AACLC,YAAAA,UAAU,EAAE,QADP;AAELL,YAAAA,OAAO,EAAE,MAFJ;AAGLM,YAAAA,cAAc,EAAE;AAHX,WAFT;AAOE,UAAA,uBAAuB,EAAE;AACvBV,YAAAA,MAAM,EAAEO;AADe;AAP3B,UADa;AAAA,OAAd,CADH,CAHN,eAoBE,gCAAC,sBAAD;AACE,QAAA,KAAK,EAAEtB,KADT;AAEE,QAAA,QAAQ,EAAEA,KAAK,CAACQ,QAFlB;AAGE,QAAA,UAAU,EAAEJ,UAHd;AAIE,QAAA,YAAY,EAAE,KAAKsB,UAJrB;AAKE,QAAA,cAAc,EAAE,KAAKC;AALvB,QApBF,CADF,eA6BE,gCAAC,mBAAD;AACE,QAAA,QAAQ,EAAE3B,KAAK,CAACQ,QADlB;AAEE,QAAA,KAAK,EAAER,KAFT;AAGE,QAAA,OAAO,EAAEK,OAHX;AAIE,QAAA,cAAc,EAAER;AAJlB,QA7BF,CAxBF,EA6DIG,KAAK,CAAC4B,SAAN,IAAmB,uBAAQ5B,KAAK,CAAC4B,SAAd,CAAnB,iBACE,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AAAEhB,UAAAA,MAAM,EAAE,gBAAV;AAA4BC,UAAAA,OAAO,EAAE;AAArC,SADV;AAEE,QAAA,SAAS,EAAEd,OAAO,CAACe;AAFrB,sBAIE;AAAK,QAAA,uBAAuB,EAAE;AAAEC,UAAAA,MAAM,EAAEf,KAAK,CAAC4B;AAAhB;AAA9B,QAJF,CA9DN,EAuEI5B,KAAK,CAAC6B,WAAN,IACA7B,KAAK,CAAC8B,QADN,IAEA,CAACpC,WAFD,iBAGE,gCAAC,kBAAD;AACE,QAAA,WAAW,EAAEM,KAAK,CAAC6B,WADrB;AAEE,QAAA,QAAQ,EAAE7B,KAAK,CAAC8B;AAFlB,QA1EN,CADF;AAmFD;;;EApM6BC,kBAAMC,S;;;iCAAzBjD,U,eACQ;AACjBgB,EAAAA,OAAO,EAAEkC,sBAAUC,MAAV,CAAiBC,UADT;AAEjBnC,EAAAA,KAAK,EAAEiC,sBAAUC,MAFA;AAGjB/C,EAAAA,OAAO,EAAE8C,sBAAUG,KAAV,CAAgB;AACvB/C,IAAAA,OAAO,EAAE4C,sBAAUI,OAAV,CACPJ,sBAAUG,KAAV,CAAgB;AACdE,MAAAA,MAAM,EAAEL,sBAAUM,MADJ;AAEdC,MAAAA,QAAQ,EAAEP,sBAAUM;AAFN,KAAhB,CADO;AADc,GAAhB,CAHQ;AAWjBnD,EAAAA,eAAe,EAAE6C,sBAAUQ,IAAV,CAAeN,UAXf;AAYjBvC,EAAAA,mBAAmB,EAAEqC,sBAAUQ,IAAV,CAAeN;AAZnB,C;iCADRpD,U,kBAgBW;AACpByB,EAAAA,QAAQ,EAAE;AADU,C;;IAuLlBkC,kB;;;;;AACJ,8BAAY1D,KAAZ,EAAmB;AAAA;;AAAA;AACjB,gCAAMA,KAAN;AACA,WAAK2D,GAAL,GAAWA,UAAIC,UAAJ,EAAX;AAFiB;AAGlB;;;;WAED,kBAAS;AACP,0BACE,gCAAC,SAAD,CAAK,QAAL;AAAc,QAAA,KAAK,EAAE,KAAKD;AAA1B,sBACE,gCAAC,UAAD,EAAiB,KAAK3D,KAAtB,CADF,CADF;AAKD;;;EAZ8B+C,kBAAMC,S;;AAevC,IAAMa,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBpC,IAAAA,aAAa,EAAE;AACbqC,MAAAA,OAAO,EAAED,KAAK,CAACE,OAAN,CAAcC,IADV;AAEbC,MAAAA,KAAK,EAAEA,gBAAMC,IAAN,EAFM;AAGbC,MAAAA,eAAe,EAAEF,gBAAMG,UAAN;AAHJ,KADU;AAMzBpC,IAAAA,MAAM,EAAE;AACNqC,MAAAA,YAAY,EAAE,MADR;AAENC,MAAAA,aAAa,EAAE;AAFT,KANiB;AAUzBrC,IAAAA,UAAU,EAAE;AACVoC,MAAAA,YAAY,EAAER,KAAK,CAACE,OAAN,CAAcC,IADlB;AAEV9B,MAAAA,OAAO,EAAE,MAFC;AAGVrB,MAAAA,aAAa,EAAE;AAHL,KAVa;AAezBgB,IAAAA,WAAW,EAAE;AACX0C,MAAAA,aAAa,EAAEV,KAAK,CAACE,OAAN,CAAcC,IAAd,GAAqB;AADzB;AAfY,GAAZ;AAAA,CAAf;;eAmBe,2BAAgB,wBAAWJ,MAAX,EAAmBH,kBAAnB,CAAhB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Choices from './choices';\nimport Categories from './categories';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n buildState,\n removeChoiceFromCategory,\n moveChoiceToCategory\n} from '@pie-lib/categorize';\nimport { withDragContext, uid } from '@pie-lib/drag';\nimport { color, Feedback, Collapsible, hasText } from '@pie-lib/render-ui';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize');\n\nconst removeHTMLTags = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Categorize extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string\n })\n )\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired\n };\n\n static defaultProps = {\n disabled: false\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: false\n };\n }\n\n dropChoice = (categoryId, draggedChoice) => {\n const { session, onAnswersChange } = this.props;\n log(\n '[dropChoice] category: ',\n draggedChoice.categoryId,\n 'choice: ',\n draggedChoice\n );\n\n const answers = moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n session.answers\n );\n\n onAnswersChange(answers);\n };\n\n removeChoice = c => {\n log('[removeChoice]: ', c);\n const { onAnswersChange, session } = this.props;\n const answers = removeChoiceFromCategory(\n c.id,\n c.categoryId,\n c.choiceIndex,\n session.answers\n );\n onAnswersChange(answers);\n };\n\n UNSAFE_componentWillReceiveProps() {\n this.setState({ showCorrect: false });\n }\n\n toggleShowCorrect = () =>\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n this.props.onShowCorrectToggle();\n });\n\n getPositionDirection = (choicePosition) => {\n let flexDirection;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row-reverse';\n break;\n case 'right':\n flexDirection = 'row';\n break;\n case 'below':\n flexDirection = 'column';\n break;\n default:\n // above\n flexDirection = 'column-reverse';\n break;\n }\n\n return flexDirection;\n };\n\n render() {\n const { classes, model, session } = this.props;\n const { showCorrect } = this.state;\n const { choicesPosition } = model;\n\n const choicePosition = choicesPosition || 'above';\n\n const style = {\n flexDirection: this.getPositionDirection(choicePosition)\n };\n\n const { categories, choices, correct } = buildState(\n model.categories,\n model.choices,\n showCorrect ? model.correctResponse : session.answers,\n model.correctResponse\n );\n\n log('[render] disabled: ', model.disabled);\n\n const { rowLabels } = model;\n\n return (\n <div className={classes.mainContainer}>\n {\n model.teacherInstructions && hasText(model.teacherInstructions) && (\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n <div dangerouslySetInnerHTML={{ __html: model.teacherInstructions }}/>\n </Collapsible>\n )\n }\n <br />\n <CorrectAnswerToggle\n show={showCorrect || correct === false}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n {\n removeHTMLTags(model.prompt) &&\n <div\n className={classes.prompt}\n dangerouslySetInnerHTML={{ __html: model.prompt }}\n />\n }\n <div className={classes.categorize} style={style}>\n <div style={{ display: 'flex' }}>\n {\n rowLabels && (\n <div style={{ display: 'grid', marginRight: '20px' }}>\n {rowLabels.map((label, index) => (\n <div\n key={index}\n style={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center'\n }}\n dangerouslySetInnerHTML={{\n __html: label\n }}\n />\n ))}\n </div>\n )\n }\n <Categories\n model={model}\n disabled={model.disabled}\n categories={categories}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n />\n </div>\n <Choices\n disabled={model.disabled}\n model={model}\n choices={choices}\n choicePosition={choicePosition}\n />\n </div>\n {\n model.rationale && hasText(model.rationale) && (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className={classes.collapsible}\n >\n <div dangerouslySetInnerHTML={{ __html: model.rationale }}/>\n </Collapsible>\n )\n }\n {\n model.correctness &&\n model.feedback &&\n !showCorrect && (\n <Feedback\n correctness={model.correctness}\n feedback={model.feedback}\n />\n )\n }\n </div>\n );\n }\n}\n\nclass CategorizeProvider extends React.Component {\n constructor(props) {\n super(props);\n this.uid = uid.generateId();\n }\n\n render() {\n return (\n <uid.Provider value={this.uid}>\n <Categorize { ...this.props } />\n </uid.Provider>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background()\n },\n prompt: {\n marginBottom: '35px',\n verticalAlign: 'middle'\n },\n categorize: {\n marginBottom: theme.spacing.unit,\n display: 'flex',\n flexDirection: 'column'\n },\n collapsible: {\n paddingBottom: theme.spacing.unit * 2\n }\n});\nexport default withDragContext(withStyles(styles)(CategorizeProvider));\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/categorize/index.jsx"],"names":["log","removeHTMLTags","html","tmp","document","createElement","innerHTML","value","textContent","innerText","trim","Categorize","props","c","onAnswersChange","session","answers","id","categoryId","choiceIndex","draggedChoice","undefined","removeChoice","setState","showCorrect","state","onShowCorrectToggle","choicePosition","flexDirection","correctResponse","some","correctRes","alternateResponses","length","classes","model","choicesPosition","note","showNote","env","mode","role","style","getPositionDirection","categories","choices","correct","disabled","rowLabels","categoriesPerRow","nbOfRows","Math","ceil","existAlternate","existAlternateResponse","displayNote","mainContainer","teacherInstructions","hidden","visible","collapsible","toggleShowCorrect","prompt","categorize","display","flex","slice","map","label","index","alignItems","justifyContent","__html","dropChoice","rationale","correctness","feedback","React","Component","PropTypes","object","isRequired","shape","arrayOf","choice","string","category","func","CategorizeProvider","uid","generateId","styles","theme","padding","spacing","unit","color","text","backgroundColor","background","marginBottom","verticalAlign","paddingBottom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Choices from './choices';\nimport Categories from './categories';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n buildState,\n removeChoiceFromCategory,\n moveChoiceToCategory,\n} from '@pie-lib/categorize';\nimport { withDragContext, uid } from '@pie-lib/drag';\nimport {\n color,\n Feedback,\n Collapsible,\n hasText,\n PreviewPrompt,\n} from '@pie-lib/render-ui';\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:categorize');\n\nconst removeHTMLTags = (html) => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Categorize extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string,\n })\n ),\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: false,\n };\n }\n\n removeChoice = (c) => {\n log('[removeChoice]: ', c);\n const { onAnswersChange, session } = this.props;\n const answers = removeChoiceFromCategory(\n c.id,\n c.categoryId,\n c.choiceIndex,\n session.answers\n );\n onAnswersChange(answers);\n };\n\n dropChoice = (categoryId, draggedChoice) => {\n const { session, onAnswersChange } = this.props;\n if (draggedChoice) {\n log(\n '[dropChoice] category: ',\n draggedChoice.categoryId,\n 'choice: ',\n draggedChoice\n );\n } else {\n log('[dropChoice] category: ', undefined, 'choice: ', undefined);\n }\n\n const answers = draggedChoice ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n session.answers\n ) : this.removeChoice(categoryId)\n\n if (draggedChoice) {\n onAnswersChange(answers);\n } \n };\n\n UNSAFE_componentWillReceiveProps() {\n this.setState({ showCorrect: false });\n }\n\n toggleShowCorrect = () =>\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n this.props.onShowCorrectToggle();\n });\n\n getPositionDirection = (choicePosition) => {\n let flexDirection;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row-reverse';\n break;\n case 'right':\n flexDirection = 'row';\n break;\n case 'below':\n flexDirection = 'column';\n break;\n default:\n // above\n flexDirection = 'column-reverse';\n break;\n }\n\n return flexDirection;\n };\n\n existAlternateResponse = (correctResponse) => correctResponse?.some(correctRes => correctRes.alternateResponses?.length > 0);\n\n render() {\n const { classes, model, session } = this.props;\n const { showCorrect } = this.state;\n const { choicesPosition, note, showNote, env } = model;\n const { mode, role } = env || {};\n const choicePosition = choicesPosition || 'above';\n\n const style = {\n flexDirection: this.getPositionDirection(choicePosition),\n };\n\n const { categories, choices, correct } = buildState(\n model.categories,\n model.choices,\n showCorrect ? model.correctResponse : session.answers,\n model.correctResponse\n );\n\n log('[render] disabled: ', model.disabled);\n \n const { rowLabels, categoriesPerRow, correctResponse } = model;\n const nbOfRows = categories && Math.ceil(categories.length / categoriesPerRow) || 0;\n const existAlternate = this.existAlternateResponse(correctResponse) || false;\n const displayNote = (showCorrect || mode === 'view' && role === 'instructor') && showNote && note && existAlternate;\n\n return (\n <div className={classes.mainContainer}>\n {model.teacherInstructions && hasText(model.teacherInstructions) && (\n <React.Fragment>\n <Collapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n <br />\n </React.Fragment>\n )}\n <CorrectAnswerToggle\n show={showCorrect || correct === false}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n {model.prompt && removeHTMLTags(model.prompt) && (\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n )}\n <div className={classes.categorize} style={style}>\n <div style={{ display: 'flex', flex: 1 }}>\n\n {\n !!(rowLabels && nbOfRows) && (\n <div style={{ display: 'grid'}}>\n {rowLabels.slice(0, nbOfRows).map((label, index) => (\n <div\n key={index}\n style={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center'\n }}\n dangerouslySetInnerHTML={{\n __html: label\n }}\n />\n ))}\n </div>\n )\n }\n <Categories\n model={model}\n disabled={model.disabled}\n categories={categories}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n />\n </div>\n <Choices\n disabled={model.disabled}\n model={model}\n choices={choices}\n choicePosition={choicePosition}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n />\n </div>\n {displayNote && (\n <div\n className={classes.note}\n dangerouslySetInnerHTML={{\n __html: `<strong>Note:</strong> ${note}`,\n }}\n />\n )}\n {model.rationale && hasText(model.rationale) && (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n )}\n {model.correctness && model.feedback && !showCorrect && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n </div>\n );\n }\n}\n\nclass CategorizeProvider extends React.Component {\n constructor(props) {\n super(props);\n this.uid = uid.generateId();\n }\n\n render() {\n return (\n <uid.Provider value={this.uid}>\n <Categorize {...this.props} />\n </uid.Provider>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background(),\n },\n prompt: {\n marginBottom: '35px',\n verticalAlign: 'middle',\n },\n note: {\n padding: '5px 0',\n },\n categorize: {\n marginBottom: theme.spacing.unit,\n display: 'flex',\n flexDirection: 'column',\n },\n collapsible: {\n paddingBottom: theme.spacing.unit * 2,\n },\n});\n\nexport default withDragContext(withStyles(styles)(CategorizeProvider));\n"],"file":"index.js"}
|
package/lib/index.js
CHANGED
|
@@ -31,7 +31,7 @@ var _categorize = _interopRequireDefault(require("./categorize"));
|
|
|
31
31
|
|
|
32
32
|
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); }; }
|
|
33
33
|
|
|
34
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
34
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
35
35
|
|
|
36
36
|
var Categorize = /*#__PURE__*/function (_HTMLElement) {
|
|
37
37
|
(0, _inherits2["default"])(Categorize, _HTMLElement);
|
|
@@ -61,6 +61,9 @@ var Categorize = /*#__PURE__*/function (_HTMLElement) {
|
|
|
61
61
|
}
|
|
62
62
|
}, {
|
|
63
63
|
key: "session",
|
|
64
|
+
get: function get() {
|
|
65
|
+
return this._session;
|
|
66
|
+
},
|
|
64
67
|
set: function set(s) {
|
|
65
68
|
if (s && !s.answers) {
|
|
66
69
|
s.answers = [];
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["Categorize","m","_model","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","render","_session","Array","isArray","answers","length","s","SessionChangedEvent","el","React","createElement","CategorizeComponent","model","session","onAnswersChange","changeAnswers","bind","onShowCorrectToggle","ReactDOM","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["Categorize","m","_model","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","render","_session","Array","isArray","answers","length","s","SessionChangedEvent","el","React","createElement","CategorizeComponent","model","session","onAnswersChange","changeAnswers","bind","onShowCorrectToggle","ReactDOM","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEqBA,U;;;;;;;;;;;;SACnB,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;AAEA,WAAKE,aAAL,CAAmB,IAAIC,8BAAJ,CAAkB,KAAKC,OAAL,CAAaC,WAAb,EAAlB,EAA8C,KAAKC,UAAL,EAA9C,EAAiE,CAAC,CAAC,KAAKL,MAAxE,CAAnB;AACA,WAAKM,MAAL;AACD;;;WAED,sBAAa;AACX,UAAI,CAAC,KAAKC,QAAV,EAAoB;AAClB,eAAO,KAAP;AACD;;AAED,aAAOC,KAAK,CAACC,OAAN,CAAc,KAAKF,QAAL,CAAcG,OAA5B,KAAwC,KAAKH,QAAL,CAAcG,OAAd,CAAsBC,MAAtB,GAA+B,CAA9E;AACD;;;SAWD,eAAc;AACZ,aAAO,KAAKJ,QAAZ;AACD,K;SAXD,aAAYK,CAAZ,EAAe;AACb,UAAIA,CAAC,IAAI,CAACA,CAAC,CAACF,OAAZ,EAAqB;AACnBE,QAAAA,CAAC,CAACF,OAAF,GAAY,EAAZ;AACD;;AAED,WAAKH,QAAL,GAAgBK,CAAhB;AACA,WAAKN,MAAL;AACD;;;WAMD,uBAAcI,OAAd,EAAuB;AACrB,WAAKH,QAAL,CAAcG,OAAd,GAAwBA,OAAxB;AAEA,WAAKT,aAAL,CAAmB,IAAIY,oCAAJ,CAAwB,KAAKV,OAAL,CAAaC,WAAb,EAAxB,EAAoD,KAAKC,UAAL,EAApD,CAAnB;AAEA,WAAKC,MAAL;AACD;;;WAED,+BAAsB;AACpB,qCAAW,IAAX;AACD;;;WAED,kBAAS;AAAA;;AACP,UAAI,KAAKN,MAAL,IAAe,KAAKO,QAAxB,EAAkC;AAChC,YAAMO,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,sBAApB,EAAyC;AAClDC,UAAAA,KAAK,EAAE,KAAKlB,MADsC;AAElDmB,UAAAA,OAAO,EAAE,KAAKZ,QAFoC;AAGlDa,UAAAA,eAAe,EAAE,KAAKC,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAHiC;AAIlDC,UAAAA,mBAAmB,EAAE,KAAKA,mBAAL,CAAyBD,IAAzB,CAA8B,IAA9B;AAJ6B,SAAzC,CAAX;;AAOAE,6BAASlB,MAAT,CAAgBQ,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,yCAAW,KAAX;AACD,SAFD;AAGD;AACF;;;kDAtDqCW,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-framework/pie-player-events';\nimport CategorizeComponent from './categorize';\n\nexport default class Categorize extends HTMLElement {\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n this.render();\n }\n\n isComplete() {\n if (!this._session) {\n return false;\n }\n\n return Array.isArray(this._session.answers) && this._session.answers.length > 0;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n changeAnswers(answers) {\n this._session.answers = answers;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this.render();\n }\n\n onShowCorrectToggle() {\n renderMath(this);\n }\n\n render() {\n if (this._model && this._session) {\n const el = React.createElement(CategorizeComponent, {\n model: this._model,\n session: this._session,\n onAnswersChange: this.changeAnswers.bind(this),\n onShowCorrectToggle: this.onShowCorrectToggle.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
|
package/package.json
CHANGED
|
@@ -4,27 +4,28 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "6.6.
|
|
7
|
+
"version": "6.6.1-beta.587+40df32c2f",
|
|
8
8
|
"description": "",
|
|
9
9
|
"author": "pie framework developers",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@material-ui/core": "^3.9.2",
|
|
13
13
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
14
|
-
"@pie-lib/categorize": "^0.
|
|
15
|
-
"@pie-lib/correct-answer-toggle": "^2.3.
|
|
16
|
-
"@pie-lib/drag": "^
|
|
17
|
-
"@pie-lib/math-rendering": "^2.
|
|
18
|
-
"@pie-lib/render-ui": "^4.
|
|
14
|
+
"@pie-lib/categorize": "^0.8.12",
|
|
15
|
+
"@pie-lib/correct-answer-toggle": "^2.3.62",
|
|
16
|
+
"@pie-lib/drag": "^2.1.12",
|
|
17
|
+
"@pie-lib/math-rendering": "^2.5.12",
|
|
18
|
+
"@pie-lib/render-ui": "^4.14.12",
|
|
19
19
|
"classnames": "^2.2.5",
|
|
20
20
|
"debug": "^4.1.1",
|
|
21
|
+
"is-plain-object": "^5.0.0",
|
|
21
22
|
"lodash": "^4.17.15",
|
|
22
23
|
"prop-types": "^15.6.1",
|
|
23
24
|
"react": "^16.8.1",
|
|
24
|
-
"react-dnd": "^
|
|
25
|
+
"react-dnd": "^14.0.5",
|
|
25
26
|
"react-dom": "^16.8.1"
|
|
26
27
|
},
|
|
27
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "40df32c2f78966706cb168843567c9df174f1d88",
|
|
28
29
|
"scripts": {
|
|
29
30
|
"postpublish": "../../scripts/postpublish"
|
|
30
31
|
},
|