@pie-element/categorize 7.7.2-beta.0 → 7.7.2-beta.3

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 (60) hide show
  1. package/configure/package.json +2 -2
  2. package/package.json +2 -2
  3. package/configure/lib/defaults.js +0 -115
  4. package/configure/lib/defaults.js.map +0 -1
  5. package/configure/lib/design/builder.js +0 -74
  6. package/configure/lib/design/builder.js.map +0 -1
  7. package/configure/lib/design/buttons.js +0 -127
  8. package/configure/lib/design/buttons.js.map +0 -1
  9. package/configure/lib/design/categories/RowLabel.js +0 -68
  10. package/configure/lib/design/categories/RowLabel.js.map +0 -1
  11. package/configure/lib/design/categories/alternateResponses.js +0 -284
  12. package/configure/lib/design/categories/alternateResponses.js.map +0 -1
  13. package/configure/lib/design/categories/category.js +0 -205
  14. package/configure/lib/design/categories/category.js.map +0 -1
  15. package/configure/lib/design/categories/choice-preview.js +0 -128
  16. package/configure/lib/design/categories/choice-preview.js.map +0 -1
  17. package/configure/lib/design/categories/droppable-placeholder.js +0 -187
  18. package/configure/lib/design/categories/droppable-placeholder.js.map +0 -1
  19. package/configure/lib/design/categories/index.js +0 -396
  20. package/configure/lib/design/categories/index.js.map +0 -1
  21. package/configure/lib/design/choices/choice.js +0 -287
  22. package/configure/lib/design/choices/choice.js.map +0 -1
  23. package/configure/lib/design/choices/config.js +0 -146
  24. package/configure/lib/design/choices/config.js.map +0 -1
  25. package/configure/lib/design/choices/index.js +0 -277
  26. package/configure/lib/design/choices/index.js.map +0 -1
  27. package/configure/lib/design/header.js +0 -106
  28. package/configure/lib/design/header.js.map +0 -1
  29. package/configure/lib/design/index.js +0 -475
  30. package/configure/lib/design/index.js.map +0 -1
  31. package/configure/lib/design/input-header.js +0 -162
  32. package/configure/lib/design/input-header.js.map +0 -1
  33. package/configure/lib/index.js +0 -139
  34. package/configure/lib/index.js.map +0 -1
  35. package/configure/lib/main.js +0 -94
  36. package/configure/lib/main.js.map +0 -1
  37. package/configure/lib/utils.js +0 -27
  38. package/configure/lib/utils.js.map +0 -1
  39. package/controller/lib/defaults.js +0 -31
  40. package/controller/lib/defaults.js.map +0 -1
  41. package/controller/lib/index.js +0 -434
  42. package/controller/lib/index.js.map +0 -1
  43. package/controller/lib/utils.js +0 -60
  44. package/controller/lib/utils.js.map +0 -1
  45. package/lib/categorize/categories.js +0 -165
  46. package/lib/categorize/categories.js.map +0 -1
  47. package/lib/categorize/category.js +0 -134
  48. package/lib/categorize/category.js.map +0 -1
  49. package/lib/categorize/choice.js +0 -226
  50. package/lib/categorize/choice.js.map +0 -1
  51. package/lib/categorize/choices.js +0 -160
  52. package/lib/categorize/choices.js.map +0 -1
  53. package/lib/categorize/droppable-placeholder.js +0 -110
  54. package/lib/categorize/droppable-placeholder.js.map +0 -1
  55. package/lib/categorize/grid-content.js +0 -103
  56. package/lib/categorize/grid-content.js.map +0 -1
  57. package/lib/categorize/index.js +0 -324
  58. package/lib/categorize/index.js.map +0 -1
  59. package/lib/index.js +0 -110
  60. package/lib/index.js.map +0 -1
@@ -1,324 +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
- }
207
- }, rowLabels.slice(0, nbOfRows).map(function (label, index) {
208
- return /*#__PURE__*/_react["default"].createElement("div", {
209
- key: index,
210
- style: {
211
- alignItems: 'center',
212
- display: 'flex',
213
- justifyContent: 'center'
214
- },
215
- dangerouslySetInnerHTML: {
216
- __html: label
217
- }
218
- });
219
- })), /*#__PURE__*/_react["default"].createElement(_categories["default"], {
220
- model: model,
221
- disabled: model.disabled,
222
- categories: categories,
223
- onDropChoice: this.dropChoice,
224
- onRemoveChoice: this.removeChoice
225
- })), /*#__PURE__*/_react["default"].createElement(_choices["default"], {
226
- disabled: model.disabled,
227
- model: model,
228
- choices: choices,
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, {
238
- labels: {
239
- hidden: 'Show Rationale',
240
- visible: 'Hide Rationale'
241
- },
242
- className: classes.collapsible
243
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
244
- prompt: model.rationale
245
- })), model.correctness && model.feedback && !showCorrect && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
246
- correctness: model.correctness,
247
- feedback: model.feedback
248
- }));
249
- }
250
- }]);
251
- return Categorize;
252
- }(_react["default"].Component);
253
-
254
- exports.Categorize = Categorize;
255
- (0, _defineProperty2["default"])(Categorize, "propTypes", {
256
- classes: _propTypes["default"].object.isRequired,
257
- model: _propTypes["default"].object,
258
- session: _propTypes["default"].shape({
259
- answers: _propTypes["default"].arrayOf(_propTypes["default"].shape({
260
- choice: _propTypes["default"].string,
261
- category: _propTypes["default"].string
262
- }))
263
- }),
264
- onAnswersChange: _propTypes["default"].func.isRequired,
265
- onShowCorrectToggle: _propTypes["default"].func.isRequired
266
- });
267
- (0, _defineProperty2["default"])(Categorize, "defaultProps", {
268
- disabled: false
269
- });
270
-
271
- var CategorizeProvider = /*#__PURE__*/function (_React$Component2) {
272
- (0, _inherits2["default"])(CategorizeProvider, _React$Component2);
273
-
274
- var _super2 = _createSuper(CategorizeProvider);
275
-
276
- function CategorizeProvider(props) {
277
- var _this2;
278
-
279
- (0, _classCallCheck2["default"])(this, CategorizeProvider);
280
- _this2 = _super2.call(this, props);
281
- _this2.uid = _drag.uid.generateId();
282
- return _this2;
283
- }
284
-
285
- (0, _createClass2["default"])(CategorizeProvider, [{
286
- key: "render",
287
- value: function render() {
288
- return /*#__PURE__*/_react["default"].createElement(_drag.uid.Provider, {
289
- value: this.uid
290
- }, /*#__PURE__*/_react["default"].createElement(Categorize, this.props));
291
- }
292
- }]);
293
- return CategorizeProvider;
294
- }(_react["default"].Component);
295
-
296
- var styles = function styles(theme) {
297
- return {
298
- mainContainer: {
299
- padding: theme.spacing.unit,
300
- color: _renderUi.color.text(),
301
- backgroundColor: _renderUi.color.background()
302
- },
303
- prompt: {
304
- marginBottom: '35px',
305
- verticalAlign: 'middle'
306
- },
307
- note: {
308
- padding: '5px 0'
309
- },
310
- categorize: {
311
- marginBottom: theme.spacing.unit,
312
- display: 'flex',
313
- flexDirection: 'column'
314
- },
315
- collapsible: {
316
- paddingBottom: theme.spacing.unit * 2
317
- }
318
- };
319
- };
320
-
321
- var _default = (0, _drag.withDragContext)((0, _styles.withStyles)(styles)(CategorizeProvider));
322
-
323
- exports["default"] = _default;
324
- //# 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","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 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"}