@pie-element/categorize 8.15.1-next.0 → 8.15.1-next.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.
- package/configure/package.json +1 -1
- package/controller/package.json +1 -1
- package/package.json +3 -3
- package/configure/lib/defaults.js +0 -207
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/design/builder.js +0 -74
- package/configure/lib/design/builder.js.map +0 -1
- package/configure/lib/design/buttons.js +0 -127
- package/configure/lib/design/buttons.js.map +0 -1
- package/configure/lib/design/categories/RowLabel.js +0 -78
- package/configure/lib/design/categories/RowLabel.js.map +0 -1
- package/configure/lib/design/categories/alternateResponses.js +0 -293
- package/configure/lib/design/categories/alternateResponses.js.map +0 -1
- package/configure/lib/design/categories/category.js +0 -219
- package/configure/lib/design/categories/category.js.map +0 -1
- package/configure/lib/design/categories/choice-preview.js +0 -136
- package/configure/lib/design/categories/choice-preview.js.map +0 -1
- package/configure/lib/design/categories/droppable-placeholder.js +0 -187
- package/configure/lib/design/categories/droppable-placeholder.js.map +0 -1
- package/configure/lib/design/categories/index.js +0 -408
- package/configure/lib/design/categories/index.js.map +0 -1
- package/configure/lib/design/choices/choice.js +0 -297
- package/configure/lib/design/choices/choice.js.map +0 -1
- package/configure/lib/design/choices/config.js +0 -114
- package/configure/lib/design/choices/config.js.map +0 -1
- package/configure/lib/design/choices/index.js +0 -276
- package/configure/lib/design/choices/index.js.map +0 -1
- package/configure/lib/design/header.js +0 -107
- package/configure/lib/design/header.js.map +0 -1
- package/configure/lib/design/index.js +0 -538
- package/configure/lib/design/index.js.map +0 -1
- package/configure/lib/design/input-header.js +0 -166
- package/configure/lib/design/input-header.js.map +0 -1
- package/configure/lib/design/utils.js +0 -23
- package/configure/lib/design/utils.js.map +0 -1
- package/configure/lib/index.js +0 -196
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/main.js +0 -88
- package/configure/lib/main.js.map +0 -1
- package/configure/lib/utils.js +0 -40
- package/configure/lib/utils.js.map +0 -1
- package/controller/lib/defaults.js +0 -31
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -484
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/utils.js +0 -60
- package/controller/lib/utils.js.map +0 -1
- package/lib/categorize/categories.js +0 -193
- package/lib/categorize/categories.js.map +0 -1
- package/lib/categorize/category.js +0 -135
- package/lib/categorize/category.js.map +0 -1
- package/lib/categorize/choice.js +0 -228
- package/lib/categorize/choice.js.map +0 -1
- package/lib/categorize/choices.js +0 -162
- package/lib/categorize/choices.js.map +0 -1
- package/lib/categorize/droppable-placeholder.js +0 -111
- package/lib/categorize/droppable-placeholder.js.map +0 -1
- package/lib/categorize/grid-content.js +0 -103
- package/lib/categorize/grid-content.js.map +0 -1
- package/lib/categorize/index.js +0 -368
- package/lib/categorize/index.js.map +0 -1
- package/lib/index.js +0 -137
- package/lib/index.js.map +0 -1
package/lib/categorize/index.js
DELETED
|
@@ -1,368 +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 = require("@pie-lib/pie-toolbox/correct-answer-toggle");
|
|
33
|
-
|
|
34
|
-
var _styles = require("@material-ui/core/styles");
|
|
35
|
-
|
|
36
|
-
var _categorize = require("@pie-lib/pie-toolbox/categorize");
|
|
37
|
-
|
|
38
|
-
var _drag = require("@pie-lib/pie-toolbox/drag");
|
|
39
|
-
|
|
40
|
-
var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
|
|
41
|
-
|
|
42
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
43
|
-
|
|
44
|
-
var _translator = _interopRequireDefault(require("@pie-lib/pie-toolbox/translator"));
|
|
45
|
-
|
|
46
|
-
var _configUi = require("@pie-lib/pie-toolbox/config-ui");
|
|
47
|
-
|
|
48
|
-
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); }; }
|
|
49
|
-
|
|
50
|
-
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; } }
|
|
51
|
-
|
|
52
|
-
var translator = _translator["default"].translator;
|
|
53
|
-
var log = (0, _debug["default"])('@pie-ui:categorize');
|
|
54
|
-
|
|
55
|
-
var Categorize = /*#__PURE__*/function (_React$Component) {
|
|
56
|
-
(0, _inherits2["default"])(Categorize, _React$Component);
|
|
57
|
-
|
|
58
|
-
var _super = _createSuper(Categorize);
|
|
59
|
-
|
|
60
|
-
function Categorize(props) {
|
|
61
|
-
var _this;
|
|
62
|
-
|
|
63
|
-
(0, _classCallCheck2["default"])(this, Categorize);
|
|
64
|
-
_this = _super.call(this, props);
|
|
65
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "removeChoice", function (c) {
|
|
66
|
-
log('[removeChoice]: ', c);
|
|
67
|
-
var _this$props = _this.props,
|
|
68
|
-
onAnswersChange = _this$props.onAnswersChange,
|
|
69
|
-
session = _this$props.session;
|
|
70
|
-
var answers = (0, _categorize.removeChoiceFromCategory)(c.id, c.categoryId, c.choiceIndex, session.answers);
|
|
71
|
-
onAnswersChange(answers);
|
|
72
|
-
});
|
|
73
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dropChoice", function (categoryId, draggedChoice) {
|
|
74
|
-
var _this$props2 = _this.props,
|
|
75
|
-
session = _this$props2.session,
|
|
76
|
-
onAnswersChange = _this$props2.onAnswersChange,
|
|
77
|
-
model = _this$props2.model;
|
|
78
|
-
|
|
79
|
-
var _ref = model || {},
|
|
80
|
-
_ref$maxChoicesPerCat = _ref.maxChoicesPerCategory,
|
|
81
|
-
maxChoicesPerCategory = _ref$maxChoicesPerCat === void 0 ? 0 : _ref$maxChoicesPerCat;
|
|
82
|
-
|
|
83
|
-
var _ref2 = session || {},
|
|
84
|
-
_ref2$answers = _ref2.answers,
|
|
85
|
-
answers = _ref2$answers === void 0 ? [] : _ref2$answers;
|
|
86
|
-
|
|
87
|
-
var newAnswers;
|
|
88
|
-
|
|
89
|
-
if (draggedChoice) {
|
|
90
|
-
log('[dropChoice] category: ', draggedChoice.categoryId, 'choice: ', draggedChoice);
|
|
91
|
-
} else {
|
|
92
|
-
log('[dropChoice] category: ', undefined, 'choice: ', undefined);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
var answer = answers.find(function (answer) {
|
|
96
|
-
return answer.category === categoryId;
|
|
97
|
-
}); // treat special case to replace the existing choice with the new one when maxChoicesPerCategory = 1
|
|
98
|
-
|
|
99
|
-
if (draggedChoice && maxChoicesPerCategory === 1 && answer && answer.choices && answer.choices.length === 1) {
|
|
100
|
-
newAnswers = (0, _categorize.moveChoiceToCategory)(draggedChoice.id, draggedChoice.categoryId, categoryId, draggedChoice.choiceIndex, answers);
|
|
101
|
-
newAnswers = (0, _categorize.removeChoiceFromCategory)(answer.choices[0], categoryId, 0, answers);
|
|
102
|
-
} // treat special case when there are as many choices as maxChoicesPerCategory is
|
|
103
|
-
else if (draggedChoice && maxChoicesPerCategory > 1 && answer && answer.choices && answer.choices.length === maxChoicesPerCategory) {
|
|
104
|
-
newAnswers = draggedChoice.categoryId ? (0, _categorize.moveChoiceToCategory)(draggedChoice.id, draggedChoice.categoryId, draggedChoice.categoryId, draggedChoice.choiceIndex, answers) : (0, _categorize.removeChoiceFromCategory)(draggedChoice.id, draggedChoice.categoryId, draggedChoice.choiceIndex, answers);
|
|
105
|
-
|
|
106
|
-
_this.setState({
|
|
107
|
-
showMaxChoiceAlert: true
|
|
108
|
-
});
|
|
109
|
-
} // treat special case when there are more choices that maxChoicesPerCategory is (testing purpose in pits)
|
|
110
|
-
else if (maxChoicesPerCategory !== 0 && answer && answer.choices && answer.choices.length > maxChoicesPerCategory) {
|
|
111
|
-
newAnswers = answers;
|
|
112
|
-
|
|
113
|
-
_this.setState({
|
|
114
|
-
showMaxChoiceAlert: true
|
|
115
|
-
});
|
|
116
|
-
} else {
|
|
117
|
-
newAnswers = draggedChoice ? (0, _categorize.moveChoiceToCategory)(draggedChoice.id, draggedChoice.categoryId, categoryId, draggedChoice.choiceIndex, answers) : _this.removeChoice(categoryId);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (draggedChoice) {
|
|
121
|
-
onAnswersChange(newAnswers);
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShowCorrect", function () {
|
|
125
|
-
return _this.setState({
|
|
126
|
-
showCorrect: !_this.state.showCorrect
|
|
127
|
-
}, function () {
|
|
128
|
-
_this.props.onShowCorrectToggle();
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPositionDirection", function (choicePosition) {
|
|
132
|
-
var flexDirection;
|
|
133
|
-
|
|
134
|
-
switch (choicePosition) {
|
|
135
|
-
case 'left':
|
|
136
|
-
flexDirection = 'row-reverse';
|
|
137
|
-
break;
|
|
138
|
-
|
|
139
|
-
case 'right':
|
|
140
|
-
flexDirection = 'row';
|
|
141
|
-
break;
|
|
142
|
-
|
|
143
|
-
case 'below':
|
|
144
|
-
flexDirection = 'column';
|
|
145
|
-
break;
|
|
146
|
-
|
|
147
|
-
default:
|
|
148
|
-
// above
|
|
149
|
-
flexDirection = 'column-reverse';
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return flexDirection;
|
|
154
|
-
});
|
|
155
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "existAlternateResponse", function (correctResponse) {
|
|
156
|
-
return correctResponse === null || correctResponse === void 0 ? void 0 : correctResponse.some(function (correctRes) {
|
|
157
|
-
var _correctRes$alternate;
|
|
158
|
-
|
|
159
|
-
return ((_correctRes$alternate = correctRes.alternateResponses) === null || _correctRes$alternate === void 0 ? void 0 : _correctRes$alternate.length) > 0;
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
_this.state = {
|
|
163
|
-
showCorrect: false,
|
|
164
|
-
showMaxChoiceAlert: false
|
|
165
|
-
};
|
|
166
|
-
return _this;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
(0, _createClass2["default"])(Categorize, [{
|
|
170
|
-
key: "UNSAFE_componentWillReceiveProps",
|
|
171
|
-
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
172
|
-
var model = this.props.model;
|
|
173
|
-
var nextModel = nextProps.model; // check if the note is the default one for prev language and change to the default one for new language
|
|
174
|
-
// this check is necessary in order to diferanciate between default and authour defined note
|
|
175
|
-
// and only change between languages for default ones
|
|
176
|
-
|
|
177
|
-
if (model.note && model.language && model.language !== nextModel.language && model.note === translator.t('common:commonCorrectAnswerWithAlternates', {
|
|
178
|
-
lng: model.language
|
|
179
|
-
})) {
|
|
180
|
-
model.note = translator.t('common:commonCorrectAnswerWithAlternates', {
|
|
181
|
-
lng: nextModel.language
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
this.setState({
|
|
186
|
-
showCorrect: false
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
}, {
|
|
190
|
-
key: "render",
|
|
191
|
-
value: function render() {
|
|
192
|
-
var _this2 = this;
|
|
193
|
-
|
|
194
|
-
var _this$props3 = this.props,
|
|
195
|
-
classes = _this$props3.classes,
|
|
196
|
-
model = _this$props3.model,
|
|
197
|
-
session = _this$props3.session;
|
|
198
|
-
var _this$state = this.state,
|
|
199
|
-
showCorrect = _this$state.showCorrect,
|
|
200
|
-
showMaxChoiceAlert = _this$state.showMaxChoiceAlert;
|
|
201
|
-
var choicesPosition = model.choicesPosition,
|
|
202
|
-
note = model.note,
|
|
203
|
-
showNote = model.showNote,
|
|
204
|
-
env = model.env,
|
|
205
|
-
language = model.language,
|
|
206
|
-
maxChoicesPerCategory = model.maxChoicesPerCategory;
|
|
207
|
-
|
|
208
|
-
var _ref3 = env || {},
|
|
209
|
-
mode = _ref3.mode,
|
|
210
|
-
role = _ref3.role;
|
|
211
|
-
|
|
212
|
-
var choicePosition = choicesPosition || 'above';
|
|
213
|
-
var style = {
|
|
214
|
-
flexDirection: this.getPositionDirection(choicePosition)
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
var _buildState = (0, _categorize.buildState)(model.categories, model.choices, showCorrect ? model.correctResponse : session.answers, model.correctResponse),
|
|
218
|
-
categories = _buildState.categories,
|
|
219
|
-
choices = _buildState.choices,
|
|
220
|
-
correct = _buildState.correct;
|
|
221
|
-
|
|
222
|
-
log('[render] disabled: ', model.disabled);
|
|
223
|
-
var rowLabels = model.rowLabels,
|
|
224
|
-
categoriesPerRow = model.categoriesPerRow,
|
|
225
|
-
correctResponse = model.correctResponse;
|
|
226
|
-
var nbOfRows = categories && Math.ceil(categories.length / categoriesPerRow) || 0;
|
|
227
|
-
var existAlternate = this.existAlternateResponse(correctResponse) || false;
|
|
228
|
-
var displayNote = (showCorrect || mode === 'view' && role === 'instructor') && showNote && note && existAlternate;
|
|
229
|
-
var alertMessage = translator.t('translation:categorize:limitMaxChoicesPerCategory', {
|
|
230
|
-
lng: model.language,
|
|
231
|
-
maxChoicesPerCategory: maxChoicesPerCategory
|
|
232
|
-
});
|
|
233
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
234
|
-
className: classes.mainContainer
|
|
235
|
-
}, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
236
|
-
labels: {
|
|
237
|
-
hidden: 'Show Teacher Instructions',
|
|
238
|
-
visible: 'Hide Teacher Instructions'
|
|
239
|
-
},
|
|
240
|
-
className: classes.collapsible
|
|
241
|
-
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
242
|
-
prompt: model.teacherInstructions
|
|
243
|
-
}))), model.prompt && /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
244
|
-
prompt: model.prompt
|
|
245
|
-
}), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle.CorrectAnswerToggle, {
|
|
246
|
-
show: showCorrect || correct === false,
|
|
247
|
-
toggled: showCorrect,
|
|
248
|
-
onToggle: this.toggleShowCorrect,
|
|
249
|
-
language: language
|
|
250
|
-
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
251
|
-
className: classes.categorize,
|
|
252
|
-
style: style
|
|
253
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
254
|
-
style: {
|
|
255
|
-
display: 'flex',
|
|
256
|
-
flex: 1
|
|
257
|
-
}
|
|
258
|
-
}, /*#__PURE__*/_react["default"].createElement(_categories["default"], {
|
|
259
|
-
model: model,
|
|
260
|
-
disabled: model.disabled,
|
|
261
|
-
categories: categories,
|
|
262
|
-
onDropChoice: this.dropChoice,
|
|
263
|
-
onRemoveChoice: this.removeChoice,
|
|
264
|
-
rowLabels: (rowLabels || []).slice(0, nbOfRows)
|
|
265
|
-
})), /*#__PURE__*/_react["default"].createElement(_choices["default"], {
|
|
266
|
-
disabled: model.disabled,
|
|
267
|
-
model: model,
|
|
268
|
-
choices: choices,
|
|
269
|
-
choicePosition: choicePosition,
|
|
270
|
-
onDropChoice: this.dropChoice,
|
|
271
|
-
onRemoveChoice: this.removeChoice
|
|
272
|
-
})), displayNote && /*#__PURE__*/_react["default"].createElement("div", {
|
|
273
|
-
className: classes.note,
|
|
274
|
-
dangerouslySetInnerHTML: {
|
|
275
|
-
__html: note
|
|
276
|
-
}
|
|
277
|
-
}), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
278
|
-
labels: {
|
|
279
|
-
hidden: 'Show Rationale',
|
|
280
|
-
visible: 'Hide Rationale'
|
|
281
|
-
},
|
|
282
|
-
className: classes.collapsible
|
|
283
|
-
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
284
|
-
prompt: model.rationale
|
|
285
|
-
})), model.correctness && model.feedback && !showCorrect && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
|
|
286
|
-
correctness: model.correctness,
|
|
287
|
-
feedback: model.feedback
|
|
288
|
-
}), /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
|
|
289
|
-
title: 'Warning',
|
|
290
|
-
text: alertMessage,
|
|
291
|
-
open: showMaxChoiceAlert,
|
|
292
|
-
onClose: function onClose() {
|
|
293
|
-
return _this2.setState({
|
|
294
|
-
showMaxChoiceAlert: false
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
}));
|
|
298
|
-
}
|
|
299
|
-
}]);
|
|
300
|
-
return Categorize;
|
|
301
|
-
}(_react["default"].Component);
|
|
302
|
-
|
|
303
|
-
exports.Categorize = Categorize;
|
|
304
|
-
(0, _defineProperty2["default"])(Categorize, "propTypes", {
|
|
305
|
-
classes: _propTypes["default"].object.isRequired,
|
|
306
|
-
model: _propTypes["default"].object,
|
|
307
|
-
session: _propTypes["default"].shape({
|
|
308
|
-
answers: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
309
|
-
choice: _propTypes["default"].string,
|
|
310
|
-
category: _propTypes["default"].string
|
|
311
|
-
}))
|
|
312
|
-
}),
|
|
313
|
-
onAnswersChange: _propTypes["default"].func.isRequired,
|
|
314
|
-
onShowCorrectToggle: _propTypes["default"].func.isRequired
|
|
315
|
-
});
|
|
316
|
-
(0, _defineProperty2["default"])(Categorize, "defaultProps", {
|
|
317
|
-
disabled: false
|
|
318
|
-
});
|
|
319
|
-
|
|
320
|
-
var CategorizeProvider = /*#__PURE__*/function (_React$Component2) {
|
|
321
|
-
(0, _inherits2["default"])(CategorizeProvider, _React$Component2);
|
|
322
|
-
|
|
323
|
-
var _super2 = _createSuper(CategorizeProvider);
|
|
324
|
-
|
|
325
|
-
function CategorizeProvider(props) {
|
|
326
|
-
var _this3;
|
|
327
|
-
|
|
328
|
-
(0, _classCallCheck2["default"])(this, CategorizeProvider);
|
|
329
|
-
_this3 = _super2.call(this, props);
|
|
330
|
-
_this3.uid = _drag.uid.generateId();
|
|
331
|
-
return _this3;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
(0, _createClass2["default"])(CategorizeProvider, [{
|
|
335
|
-
key: "render",
|
|
336
|
-
value: function render() {
|
|
337
|
-
return /*#__PURE__*/_react["default"].createElement(_drag.uid.Provider, {
|
|
338
|
-
value: this.uid
|
|
339
|
-
}, /*#__PURE__*/_react["default"].createElement(Categorize, this.props));
|
|
340
|
-
}
|
|
341
|
-
}]);
|
|
342
|
-
return CategorizeProvider;
|
|
343
|
-
}(_react["default"].Component);
|
|
344
|
-
|
|
345
|
-
var styles = function styles(theme) {
|
|
346
|
-
return {
|
|
347
|
-
mainContainer: {
|
|
348
|
-
color: _renderUi.color.text(),
|
|
349
|
-
backgroundColor: _renderUi.color.background()
|
|
350
|
-
},
|
|
351
|
-
note: {
|
|
352
|
-
marginBottom: theme.spacing.unit * 2
|
|
353
|
-
},
|
|
354
|
-
categorize: {
|
|
355
|
-
marginBottom: theme.spacing.unit,
|
|
356
|
-
display: 'flex',
|
|
357
|
-
flexDirection: 'column'
|
|
358
|
-
},
|
|
359
|
-
collapsible: {
|
|
360
|
-
paddingBottom: theme.spacing.unit * 2
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
};
|
|
364
|
-
|
|
365
|
-
var _default = (0, _drag.withDragContext)((0, _styles.withStyles)(styles)(CategorizeProvider));
|
|
366
|
-
|
|
367
|
-
exports["default"] = _default;
|
|
368
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/categorize/index.jsx"],"names":["translator","Translator","log","Categorize","props","c","onAnswersChange","session","answers","id","categoryId","choiceIndex","draggedChoice","model","maxChoicesPerCategory","newAnswers","undefined","answer","find","category","choices","length","setState","showMaxChoiceAlert","removeChoice","showCorrect","state","onShowCorrectToggle","choicePosition","flexDirection","correctResponse","some","correctRes","alternateResponses","nextProps","nextModel","note","language","t","lng","classes","choicesPosition","showNote","env","mode","role","style","getPositionDirection","categories","correct","disabled","rowLabels","categoriesPerRow","nbOfRows","Math","ceil","existAlternate","existAlternateResponse","displayNote","alertMessage","mainContainer","teacherInstructions","hidden","visible","collapsible","prompt","toggleShowCorrect","categorize","display","flex","dropChoice","slice","__html","rationale","correctness","feedback","React","Component","PropTypes","object","isRequired","shape","arrayOf","choice","string","func","CategorizeProvider","uid","generateId","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit","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/pie-toolbox/correct-answer-toggle';\nimport { withStyles } from '@material-ui/core/styles';\nimport { buildState, removeChoiceFromCategory, moveChoiceToCategory } from '@pie-lib/pie-toolbox/categorize';\nimport { withDragContext, uid } from '@pie-lib/pie-toolbox/drag';\nimport { color, Feedback, Collapsible, hasText, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport debug from 'debug';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nconst { translator } = Translator;\n\nconst log = debug('@pie-ui:categorize');\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 showMaxChoiceAlert: false,\n };\n }\n\n removeChoice = (c) => {\n log('[removeChoice]: ', c);\n const { onAnswersChange, session } = this.props;\n const answers = removeChoiceFromCategory(c.id, c.categoryId, c.choiceIndex, session.answers);\n onAnswersChange(answers);\n };\n\n dropChoice = (categoryId, draggedChoice) => {\n const { session, onAnswersChange, model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const { answers = [] } = session || {};\n let newAnswers;\n if (draggedChoice) {\n log('[dropChoice] category: ', draggedChoice.categoryId, 'choice: ', draggedChoice);\n } else {\n log('[dropChoice] category: ', undefined, 'choice: ', undefined);\n }\n\n const answer = answers.find(answer => answer.category === categoryId);\n\n // treat special case to replace the existing choice with the new one when maxChoicesPerCategory = 1\n if (draggedChoice && maxChoicesPerCategory === 1 && answer && answer.choices && answer.choices.length === 1) {\n newAnswers = moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n );\n newAnswers = removeChoiceFromCategory(answer.choices[0], categoryId, 0, answers)\n }\n\n // treat special case when there are as many choices as maxChoicesPerCategory is\n else if (draggedChoice && maxChoicesPerCategory > 1 && answer && answer.choices && answer.choices.length === maxChoicesPerCategory ) {\n newAnswers = draggedChoice.categoryId ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n draggedChoice.categoryId,\n draggedChoice.choiceIndex,\n answers,\n ) : removeChoiceFromCategory(draggedChoice.id, draggedChoice.categoryId, draggedChoice.choiceIndex, answers);\n this.setState({ showMaxChoiceAlert: true })\n }\n\n // treat special case when there are more choices that maxChoicesPerCategory is (testing purpose in pits)\n else if (maxChoicesPerCategory !== 0 && answer && answer.choices && answer.choices.length > maxChoicesPerCategory) {\n newAnswers = answers;\n this.setState({ showMaxChoiceAlert: true });\n }\n else {\n newAnswers = draggedChoice\n ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n )\n : this.removeChoice(categoryId);\n }\n\n if (draggedChoice) {\n onAnswersChange(newAnswers);\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model } = this.props;\n const { model: nextModel } = nextProps;\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (model.note && model.language && model.language !== nextModel.language\n && model.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: model.language })) {\n model.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\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) =>\n correctResponse?.some((correctRes) => correctRes.alternateResponses?.length > 0);\n\n render() {\n const { classes, model, session } = this.props;\n const { showCorrect, showMaxChoiceAlert } = this.state;\n const { choicesPosition, note, showNote, env, language, maxChoicesPerCategory } = 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 =\n (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note && existAlternate;\n const alertMessage = translator.t('translation:categorize:limitMaxChoicesPerCategory', { lng: model.language, maxChoicesPerCategory });\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 </React.Fragment>\n )}\n\n {model.prompt && <PreviewPrompt prompt={model.prompt} />}\n\n <CorrectAnswerToggle\n show={showCorrect || correct === false}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n\n <div className={classes.categorize} style={style}>\n <div style={{ display: 'flex', flex: 1 }}>\n <Categories\n model={model}\n disabled={model.disabled}\n categories={categories}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n rowLabels={(rowLabels || []).slice(0, nbOfRows)}\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\n {displayNote && (\n <div\n className={classes.note}\n dangerouslySetInnerHTML={{\n __html: note,\n }}\n />\n )}\n\n {model.rationale && hasText(model.rationale) && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }} className={classes.collapsible}>\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n )}\n\n {model.correctness && model.feedback && !showCorrect && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n <AlertDialog\n title={'Warning'}\n text={alertMessage}\n open={showMaxChoiceAlert}\n onClose={() => this.setState({ showMaxChoiceAlert: false })}\n >\n </AlertDialog>\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 color: color.text(),\n backgroundColor: color.background(),\n },\n note: {\n marginBottom: theme.spacing.unit * 2,\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,137 +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 _mathRenderingAccessible = require("@pie-lib/pie-toolbox/math-rendering-accessible");
|
|
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.eliminateBlindAnswersFromSession();
|
|
51
|
-
this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));
|
|
52
|
-
this.render();
|
|
53
|
-
}
|
|
54
|
-
}, {
|
|
55
|
-
key: "isComplete",
|
|
56
|
-
value: function isComplete() {
|
|
57
|
-
if (!this._session) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return Array.isArray(this._session.answers) && this._session.answers.length > 0;
|
|
62
|
-
}
|
|
63
|
-
}, {
|
|
64
|
-
key: "session",
|
|
65
|
-
get: function get() {
|
|
66
|
-
return this._session;
|
|
67
|
-
},
|
|
68
|
-
set: function set(s) {
|
|
69
|
-
if (s && !s.answers) {
|
|
70
|
-
s.answers = [];
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
this._session = s;
|
|
74
|
-
this.render();
|
|
75
|
-
}
|
|
76
|
-
}, {
|
|
77
|
-
key: "eliminateBlindAnswersFromSession",
|
|
78
|
-
value: function eliminateBlindAnswersFromSession() {
|
|
79
|
-
var _ref = this._session || {},
|
|
80
|
-
_ref$answers = _ref.answers,
|
|
81
|
-
answers = _ref$answers === void 0 ? [] : _ref$answers;
|
|
82
|
-
|
|
83
|
-
var _ref2 = this._model || {},
|
|
84
|
-
_ref2$choices = _ref2.choices,
|
|
85
|
-
choices = _ref2$choices === void 0 ? [] : _ref2$choices;
|
|
86
|
-
|
|
87
|
-
var mappedChoices = choices.map(function (c) {
|
|
88
|
-
return c.id;
|
|
89
|
-
}) || [];
|
|
90
|
-
var filteredAnswers = answers.map(function (answer) {
|
|
91
|
-
var answerChoices = (answer === null || answer === void 0 ? void 0 : answer.choices) || [];
|
|
92
|
-
answer.choices = answerChoices.filter(function (c) {
|
|
93
|
-
return mappedChoices.includes(c);
|
|
94
|
-
});
|
|
95
|
-
return answer;
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
if (filteredAnswers.length > 0) {
|
|
99
|
-
this.changeAnswers(filteredAnswers);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}, {
|
|
103
|
-
key: "changeAnswers",
|
|
104
|
-
value: function changeAnswers(answers) {
|
|
105
|
-
this._session.answers = answers;
|
|
106
|
-
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));
|
|
107
|
-
this.render();
|
|
108
|
-
}
|
|
109
|
-
}, {
|
|
110
|
-
key: "onShowCorrectToggle",
|
|
111
|
-
value: function onShowCorrectToggle() {
|
|
112
|
-
(0, _mathRenderingAccessible.renderMath)(this);
|
|
113
|
-
}
|
|
114
|
-
}, {
|
|
115
|
-
key: "render",
|
|
116
|
-
value: function render() {
|
|
117
|
-
var _this = this;
|
|
118
|
-
|
|
119
|
-
if (this._model && this._session) {
|
|
120
|
-
var el = /*#__PURE__*/_react["default"].createElement(_categorize["default"], {
|
|
121
|
-
model: this._model,
|
|
122
|
-
session: this._session,
|
|
123
|
-
onAnswersChange: this.changeAnswers.bind(this),
|
|
124
|
-
onShowCorrectToggle: this.onShowCorrectToggle.bind(this)
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
_reactDom["default"].render(el, this, function () {
|
|
128
|
-
(0, _mathRenderingAccessible.renderMath)(_this);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}]);
|
|
133
|
-
return Categorize;
|
|
134
|
-
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
135
|
-
|
|
136
|
-
exports["default"] = Categorize;
|
|
137
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["Categorize","m","_model","eliminateBlindAnswersFromSession","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","render","_session","Array","isArray","answers","length","s","choices","mappedChoices","map","c","id","filteredAnswers","answer","answerChoices","filter","includes","changeAnswers","SessionChangedEvent","el","React","createElement","CategorizeComponent","model","session","onAnswersChange","bind","onShowCorrectToggle","ReactDOM","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering-accessible';\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.eliminateBlindAnswersFromSession();\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 eliminateBlindAnswersFromSession(){\n const { answers = [] } = this._session || {};\n const { choices = [] } = this._model || {};\n const mappedChoices = choices.map(c => c.id) || [];\n const filteredAnswers = answers.map(answer => {\n const answerChoices = answer?.choices || [];\n answer.choices = answerChoices.filter(c => mappedChoices.includes(c));\n return answer;\n })\n if(filteredAnswers.length > 0){\n this.changeAnswers(filteredAnswers);\n }\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"}
|