@pie-element/categorize 7.7.1 → 7.7.2-beta.1

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 (59) hide show
  1. package/configure/package.json +6 -6
  2. package/controller/package.json +4 -4
  3. package/package.json +8 -7
  4. package/configure/lib/defaults.js +0 -115
  5. package/configure/lib/defaults.js.map +0 -1
  6. package/configure/lib/design/builder.js +0 -74
  7. package/configure/lib/design/builder.js.map +0 -1
  8. package/configure/lib/design/buttons.js +0 -127
  9. package/configure/lib/design/buttons.js.map +0 -1
  10. package/configure/lib/design/categories/alternateResponses.js +0 -251
  11. package/configure/lib/design/categories/alternateResponses.js.map +0 -1
  12. package/configure/lib/design/categories/category.js +0 -204
  13. package/configure/lib/design/categories/category.js.map +0 -1
  14. package/configure/lib/design/categories/choice-preview.js +0 -128
  15. package/configure/lib/design/categories/choice-preview.js.map +0 -1
  16. package/configure/lib/design/categories/droppable-placeholder.js +0 -187
  17. package/configure/lib/design/categories/droppable-placeholder.js.map +0 -1
  18. package/configure/lib/design/categories/index.js +0 -430
  19. package/configure/lib/design/categories/index.js.map +0 -1
  20. package/configure/lib/design/choices/choice.js +0 -287
  21. package/configure/lib/design/choices/choice.js.map +0 -1
  22. package/configure/lib/design/choices/config.js +0 -146
  23. package/configure/lib/design/choices/config.js.map +0 -1
  24. package/configure/lib/design/choices/index.js +0 -277
  25. package/configure/lib/design/choices/index.js.map +0 -1
  26. package/configure/lib/design/header.js +0 -104
  27. package/configure/lib/design/header.js.map +0 -1
  28. package/configure/lib/design/index.js +0 -470
  29. package/configure/lib/design/index.js.map +0 -1
  30. package/configure/lib/design/input-header.js +0 -159
  31. package/configure/lib/design/input-header.js.map +0 -1
  32. package/configure/lib/index.js +0 -139
  33. package/configure/lib/index.js.map +0 -1
  34. package/configure/lib/main.js +0 -94
  35. package/configure/lib/main.js.map +0 -1
  36. package/configure/lib/utils.js +0 -27
  37. package/configure/lib/utils.js.map +0 -1
  38. package/controller/lib/defaults.js +0 -31
  39. package/controller/lib/defaults.js.map +0 -1
  40. package/controller/lib/index.js +0 -434
  41. package/controller/lib/index.js.map +0 -1
  42. package/controller/lib/utils.js +0 -60
  43. package/controller/lib/utils.js.map +0 -1
  44. package/lib/categorize/categories.js +0 -164
  45. package/lib/categorize/categories.js.map +0 -1
  46. package/lib/categorize/category.js +0 -134
  47. package/lib/categorize/category.js.map +0 -1
  48. package/lib/categorize/choice.js +0 -226
  49. package/lib/categorize/choice.js.map +0 -1
  50. package/lib/categorize/choices.js +0 -160
  51. package/lib/categorize/choices.js.map +0 -1
  52. package/lib/categorize/droppable-placeholder.js +0 -110
  53. package/lib/categorize/droppable-placeholder.js.map +0 -1
  54. package/lib/categorize/grid-content.js +0 -103
  55. package/lib/categorize/grid-content.js.map +0 -1
  56. package/lib/categorize/index.js +0 -325
  57. package/lib/categorize/index.js.map +0 -1
  58. package/lib/index.js +0 -110
  59. package/lib/index.js.map +0 -1
@@ -1,325 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = exports.Categorize = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
- var _react = _interopRequireDefault(require("react"));
25
-
26
- var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
- var _choices = _interopRequireDefault(require("./choices"));
29
-
30
- var _categories = _interopRequireDefault(require("./categories"));
31
-
32
- var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
33
-
34
- var _styles = require("@material-ui/core/styles");
35
-
36
- var _categorize = require("@pie-lib/categorize");
37
-
38
- var _drag = require("@pie-lib/drag");
39
-
40
- var _renderUi = require("@pie-lib/render-ui");
41
-
42
- var _debug = _interopRequireDefault(require("debug"));
43
-
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
-
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
-
48
- var log = (0, _debug["default"])('@pie-ui:categorize');
49
-
50
- var removeHTMLTags = function removeHTMLTags(html) {
51
- var tmp = document.createElement('DIV');
52
- tmp.innerHTML = html;
53
- var value = tmp.textContent || tmp.innerText || '';
54
- return value.trim();
55
- };
56
-
57
- var Categorize = /*#__PURE__*/function (_React$Component) {
58
- (0, _inherits2["default"])(Categorize, _React$Component);
59
-
60
- var _super = _createSuper(Categorize);
61
-
62
- function Categorize(props) {
63
- var _this;
64
-
65
- (0, _classCallCheck2["default"])(this, Categorize);
66
- _this = _super.call(this, props);
67
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "removeChoice", function (c) {
68
- log('[removeChoice]: ', c);
69
- var _this$props = _this.props,
70
- onAnswersChange = _this$props.onAnswersChange,
71
- session = _this$props.session;
72
- var answers = (0, _categorize.removeChoiceFromCategory)(c.id, c.categoryId, c.choiceIndex, session.answers);
73
- onAnswersChange(answers);
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
- });
92
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShowCorrect", function () {
93
- return _this.setState({
94
- showCorrect: !_this.state.showCorrect
95
- }, function () {
96
- _this.props.onShowCorrectToggle();
97
- });
98
- });
99
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPositionDirection", function (choicePosition) {
100
- var flexDirection;
101
-
102
- switch (choicePosition) {
103
- case 'left':
104
- flexDirection = 'row-reverse';
105
- break;
106
-
107
- case 'right':
108
- flexDirection = 'row';
109
- break;
110
-
111
- case 'below':
112
- flexDirection = 'column';
113
- break;
114
-
115
- default:
116
- // above
117
- flexDirection = 'column-reverse';
118
- break;
119
- }
120
-
121
- return flexDirection;
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
- });
130
- _this.state = {
131
- showCorrect: false
132
- };
133
- return _this;
134
- }
135
-
136
- (0, _createClass2["default"])(Categorize, [{
137
- key: "UNSAFE_componentWillReceiveProps",
138
- value: function UNSAFE_componentWillReceiveProps() {
139
- this.setState({
140
- showCorrect: false
141
- });
142
- }
143
- }, {
144
- key: "render",
145
- value: function render() {
146
- var _this$props3 = this.props,
147
- classes = _this$props3.classes,
148
- model = _this$props3.model,
149
- session = _this$props3.session;
150
- var showCorrect = this.state.showCorrect;
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
-
160
- var choicePosition = choicesPosition || 'above';
161
- var style = {
162
- flexDirection: this.getPositionDirection(choicePosition)
163
- };
164
-
165
- var _buildState = (0, _categorize.buildState)(model.categories, model.choices, showCorrect ? model.correctResponse : session.answers, model.correctResponse),
166
- categories = _buildState.categories,
167
- choices = _buildState.choices,
168
- correct = _buildState.correct;
169
-
170
- log('[render] disabled: ', model.disabled);
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;
177
- return /*#__PURE__*/_react["default"].createElement("div", {
178
- className: classes.mainContainer
179
- }, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
180
- labels: {
181
- hidden: 'Show Teacher Instructions',
182
- visible: 'Hide Teacher Instructions'
183
- },
184
- className: classes.collapsible
185
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
186
- prompt: model.teacherInstructions
187
- })), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
188
- show: showCorrect || correct === false,
189
- toggled: showCorrect,
190
- onToggle: this.toggleShowCorrect
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", {
196
- className: classes.categorize,
197
- style: style
198
- }, /*#__PURE__*/_react["default"].createElement("div", {
199
- style: {
200
- display: 'flex',
201
- flex: 1
202
- }
203
- }, !!(rowLabels && nbOfRows) && /*#__PURE__*/_react["default"].createElement("div", {
204
- style: {
205
- display: 'grid',
206
- marginRight: '20px'
207
- }
208
- }, rowLabels.slice(0, nbOfRows).map(function (label, index) {
209
- return /*#__PURE__*/_react["default"].createElement("div", {
210
- key: index,
211
- style: {
212
- alignItems: 'center',
213
- display: 'flex',
214
- justifyContent: 'center'
215
- },
216
- dangerouslySetInnerHTML: {
217
- __html: label
218
- }
219
- });
220
- })), /*#__PURE__*/_react["default"].createElement(_categories["default"], {
221
- model: model,
222
- disabled: model.disabled,
223
- categories: categories,
224
- onDropChoice: this.dropChoice,
225
- onRemoveChoice: this.removeChoice
226
- })), /*#__PURE__*/_react["default"].createElement(_choices["default"], {
227
- disabled: model.disabled,
228
- model: model,
229
- choices: choices,
230
- choicePosition: choicePosition,
231
- onDropChoice: this.dropChoice,
232
- onRemoveChoice: this.removeChoice
233
- })), displayNote && /*#__PURE__*/_react["default"].createElement("div", {
234
- className: classes.note,
235
- dangerouslySetInnerHTML: {
236
- __html: "<strong>Note:</strong> ".concat(note)
237
- }
238
- }), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
239
- labels: {
240
- hidden: 'Show Rationale',
241
- visible: 'Hide Rationale'
242
- },
243
- className: classes.collapsible
244
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
245
- prompt: model.rationale
246
- })), model.correctness && model.feedback && !showCorrect && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
247
- correctness: model.correctness,
248
- feedback: model.feedback
249
- }));
250
- }
251
- }]);
252
- return Categorize;
253
- }(_react["default"].Component);
254
-
255
- exports.Categorize = Categorize;
256
- (0, _defineProperty2["default"])(Categorize, "propTypes", {
257
- classes: _propTypes["default"].object.isRequired,
258
- model: _propTypes["default"].object,
259
- session: _propTypes["default"].shape({
260
- answers: _propTypes["default"].arrayOf(_propTypes["default"].shape({
261
- choice: _propTypes["default"].string,
262
- category: _propTypes["default"].string
263
- }))
264
- }),
265
- onAnswersChange: _propTypes["default"].func.isRequired,
266
- onShowCorrectToggle: _propTypes["default"].func.isRequired
267
- });
268
- (0, _defineProperty2["default"])(Categorize, "defaultProps", {
269
- disabled: false
270
- });
271
-
272
- var CategorizeProvider = /*#__PURE__*/function (_React$Component2) {
273
- (0, _inherits2["default"])(CategorizeProvider, _React$Component2);
274
-
275
- var _super2 = _createSuper(CategorizeProvider);
276
-
277
- function CategorizeProvider(props) {
278
- var _this2;
279
-
280
- (0, _classCallCheck2["default"])(this, CategorizeProvider);
281
- _this2 = _super2.call(this, props);
282
- _this2.uid = _drag.uid.generateId();
283
- return _this2;
284
- }
285
-
286
- (0, _createClass2["default"])(CategorizeProvider, [{
287
- key: "render",
288
- value: function render() {
289
- return /*#__PURE__*/_react["default"].createElement(_drag.uid.Provider, {
290
- value: this.uid
291
- }, /*#__PURE__*/_react["default"].createElement(Categorize, this.props));
292
- }
293
- }]);
294
- return CategorizeProvider;
295
- }(_react["default"].Component);
296
-
297
- var styles = function styles(theme) {
298
- return {
299
- mainContainer: {
300
- padding: theme.spacing.unit,
301
- color: _renderUi.color.text(),
302
- backgroundColor: _renderUi.color.background()
303
- },
304
- prompt: {
305
- marginBottom: '35px',
306
- verticalAlign: 'middle'
307
- },
308
- note: {
309
- padding: '5px 0'
310
- },
311
- categorize: {
312
- marginBottom: theme.spacing.unit,
313
- display: 'flex',
314
- flexDirection: 'column'
315
- },
316
- collapsible: {
317
- paddingBottom: theme.spacing.unit * 2
318
- }
319
- };
320
- };
321
-
322
- var _default = (0, _drag.withDragContext)((0, _styles.withStyles)(styles)(CategorizeProvider));
323
-
324
- exports["default"] = _default;
325
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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","marginRight","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', marginRight: '20px' }}>\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 DELETED
@@ -1,110 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
-
16
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
-
18
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
-
20
- var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
21
-
22
- var _react = _interopRequireDefault(require("react"));
23
-
24
- var _reactDom = _interopRequireDefault(require("react-dom"));
25
-
26
- var _mathRendering = require("@pie-lib/math-rendering");
27
-
28
- var _piePlayerEvents = require("@pie-framework/pie-player-events");
29
-
30
- var _categorize = _interopRequireDefault(require("./categorize"));
31
-
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
-
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
-
36
- var Categorize = /*#__PURE__*/function (_HTMLElement) {
37
- (0, _inherits2["default"])(Categorize, _HTMLElement);
38
-
39
- var _super = _createSuper(Categorize);
40
-
41
- function Categorize() {
42
- (0, _classCallCheck2["default"])(this, Categorize);
43
- return _super.apply(this, arguments);
44
- }
45
-
46
- (0, _createClass2["default"])(Categorize, [{
47
- key: "model",
48
- set: function set(m) {
49
- this._model = m;
50
- this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));
51
- this.render();
52
- }
53
- }, {
54
- key: "isComplete",
55
- value: function isComplete() {
56
- if (!this._session) {
57
- return false;
58
- }
59
-
60
- return Array.isArray(this._session.answers) && this._session.answers.length > 0;
61
- }
62
- }, {
63
- key: "session",
64
- get: function get() {
65
- return this._session;
66
- },
67
- set: function set(s) {
68
- if (s && !s.answers) {
69
- s.answers = [];
70
- }
71
-
72
- this._session = s;
73
- this.render();
74
- }
75
- }, {
76
- key: "changeAnswers",
77
- value: function changeAnswers(answers) {
78
- this._session.answers = answers;
79
- this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));
80
- this.render();
81
- }
82
- }, {
83
- key: "onShowCorrectToggle",
84
- value: function onShowCorrectToggle() {
85
- (0, _mathRendering.renderMath)(this);
86
- }
87
- }, {
88
- key: "render",
89
- value: function render() {
90
- var _this = this;
91
-
92
- if (this._model && this._session) {
93
- var el = /*#__PURE__*/_react["default"].createElement(_categorize["default"], {
94
- model: this._model,
95
- session: this._session,
96
- onAnswersChange: this.changeAnswers.bind(this),
97
- onShowCorrectToggle: this.onShowCorrectToggle.bind(this)
98
- });
99
-
100
- _reactDom["default"].render(el, this, function () {
101
- (0, _mathRendering.renderMath)(_this);
102
- });
103
- }
104
- }
105
- }]);
106
- return Categorize;
107
- }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
108
-
109
- exports["default"] = Categorize;
110
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
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"}