@pie-element/placement-ordering 12.3.4-next.3 → 13.0.0-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.
- package/CHANGELOG.md +0 -11
- package/configure/CHANGELOG.md +0 -11
- package/configure/lib/choice-editor.js +189 -414
- package/configure/lib/choice-editor.js.map +1 -1
- package/configure/lib/choice-tile.js +172 -263
- package/configure/lib/choice-tile.js.map +1 -1
- package/configure/lib/defaults.js +2 -4
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/design.js +389 -455
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/help.js +5 -13
- package/configure/lib/help.js.map +1 -1
- package/configure/lib/index.js +118 -193
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +99 -4
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +12 -10
- package/controller/CHANGELOG.md +0 -11
- package/controller/lib/defaults.js +2 -3
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +133 -218
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/scoring.js +35 -78
- package/controller/lib/scoring.js.map +1 -1
- package/controller/package.json +4 -4
- package/lib/index.js +63 -127
- package/lib/index.js.map +1 -1
- package/lib/main.js +20 -57
- package/lib/main.js.map +1 -1
- package/lib/ordering.js +52 -98
- package/lib/ordering.js.map +1 -1
- package/lib/placement-ordering.js +331 -381
- package/lib/placement-ordering.js.map +1 -1
- package/lib/tile.js +193 -267
- package/lib/tile.js.map +1 -1
- package/lib/tiler.js +126 -204
- package/lib/tiler.js.map +1 -1
- package/lib/utils.js +6 -18
- package/lib/utils.js.map +1 -1
- package/package.json +14 -11
- package/esm/configure.js +0 -25814
- package/esm/configure.js.map +0 -1
- package/esm/controller.js +0 -21221
- package/esm/controller.js.map +0 -1
- package/esm/element.js +0 -17874
- package/esm/element.js.map +0 -1
- package/esm/package.json +0 -3
|
@@ -1,470 +1,420 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
exports
|
|
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
|
-
|
|
7
|
+
exports.default = exports.PlacementOrdering = void 0;
|
|
22
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
25
|
-
|
|
26
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
27
|
-
|
|
28
|
-
var _tiler = require("./tiler");
|
|
29
|
-
|
|
30
|
-
var _ordering = require("./ordering");
|
|
31
|
-
|
|
32
|
-
var _renderUi = require("@pie-lib/render-ui");
|
|
33
|
-
|
|
34
|
-
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
35
|
-
|
|
36
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
37
|
-
|
|
38
10
|
var _react = _interopRequireDefault(require("react"));
|
|
39
|
-
|
|
11
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
40
13
|
var _debug = _interopRequireDefault(require("debug"));
|
|
41
|
-
|
|
42
14
|
var _uniqueId = _interopRequireDefault(require("lodash/uniqueId"));
|
|
43
|
-
|
|
44
|
-
var _styles = require("@material-ui/core/styles");
|
|
45
|
-
|
|
46
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
47
|
-
|
|
48
|
-
var _mathRendering = require("@pie-lib/math-rendering");
|
|
49
|
-
|
|
50
15
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
51
|
-
|
|
52
16
|
var _difference = _interopRequireDefault(require("lodash/difference"));
|
|
53
|
-
|
|
17
|
+
var _styles = require("@mui/material/styles");
|
|
18
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
19
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
54
20
|
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
55
|
-
|
|
21
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
22
|
+
var _drag = require("@pie-lib/drag");
|
|
23
|
+
var _tiler = require("./tiler");
|
|
24
|
+
var _ordering = require("./ordering");
|
|
56
25
|
var _utils = require("./utils");
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
26
|
+
const {
|
|
27
|
+
translator
|
|
28
|
+
} = _translator.default;
|
|
29
|
+
const log = (0, _debug.default)('pie-elements:placement-ordering');
|
|
30
|
+
const PlacementOrderingContainer = (0, _styles.styled)('div')({
|
|
31
|
+
color: _renderUi.color.text(),
|
|
32
|
+
backgroundColor: _renderUi.color.background(),
|
|
33
|
+
display: 'flex',
|
|
34
|
+
flexDirection: 'column',
|
|
35
|
+
alignItems: 'center',
|
|
36
|
+
boxSizing: 'border-box'
|
|
37
|
+
});
|
|
38
|
+
const StyledPrompt = (0, _styles.styled)('div')(({
|
|
39
|
+
theme
|
|
40
|
+
}) => ({
|
|
41
|
+
paddingBottom: theme.spacing(1)
|
|
42
|
+
}));
|
|
43
|
+
const StyledNote = (0, _styles.styled)('div')(({
|
|
44
|
+
theme
|
|
45
|
+
}) => ({
|
|
46
|
+
paddingBottom: theme.spacing(2)
|
|
47
|
+
}));
|
|
48
|
+
const StyledToggle = (0, _styles.styled)(_correctAnswerToggle.default)(({
|
|
49
|
+
theme
|
|
50
|
+
}) => ({
|
|
51
|
+
paddingBottom: theme.spacing(1)
|
|
52
|
+
}));
|
|
53
|
+
const StyledCollapsible = (0, _styles.styled)(_renderUi.Collapsible)(({
|
|
54
|
+
theme
|
|
55
|
+
}) => ({
|
|
56
|
+
marginBottom: theme.spacing(2),
|
|
57
|
+
alignSelf: 'flex-start'
|
|
58
|
+
}));
|
|
59
|
+
const OrderingTiler = props => {
|
|
60
|
+
const {
|
|
61
|
+
tiler: Comp,
|
|
62
|
+
ordering,
|
|
63
|
+
onDropChoice,
|
|
64
|
+
onRemoveChoice,
|
|
65
|
+
...compProps
|
|
66
|
+
} = props;
|
|
67
|
+
return /*#__PURE__*/_react.default.createElement(Comp, (0, _extends2.default)({}, compProps, {
|
|
78
68
|
tiles: ordering.tiles,
|
|
79
|
-
onDropChoice:
|
|
80
|
-
|
|
81
|
-
},
|
|
82
|
-
onRemoveChoice: function onRemoveChoice(t) {
|
|
83
|
-
return _onRemoveChoice(t, ordering);
|
|
84
|
-
}
|
|
69
|
+
onDropChoice: (t, s) => onDropChoice(t, s, ordering),
|
|
70
|
+
onRemoveChoice: t => onRemoveChoice(t, ordering)
|
|
85
71
|
}));
|
|
86
72
|
};
|
|
87
|
-
|
|
88
73
|
OrderingTiler.propTypes = {
|
|
89
|
-
tiler: _propTypes
|
|
90
|
-
ordering: _propTypes
|
|
91
|
-
onDropChoice: _propTypes
|
|
92
|
-
onRemoveChoice: _propTypes
|
|
74
|
+
tiler: _propTypes.default.func,
|
|
75
|
+
ordering: _propTypes.default.any,
|
|
76
|
+
onDropChoice: _propTypes.default.func,
|
|
77
|
+
onRemoveChoice: _propTypes.default.func
|
|
93
78
|
};
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
config = _ref2.config,
|
|
117
|
-
choices = _ref2.choices;
|
|
118
|
-
|
|
119
|
-
var _ref3 = config || {},
|
|
120
|
-
includeTargets = _ref3.includeTargets;
|
|
121
|
-
|
|
122
|
-
var choicesIds = choices.map(function (c) {
|
|
123
|
-
return c.id;
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
var _ref4 = session || {},
|
|
127
|
-
value = _ref4.value;
|
|
128
|
-
|
|
129
|
-
var needsReset;
|
|
130
|
-
|
|
79
|
+
class PlacementOrdering extends _react.default.Component {
|
|
80
|
+
constructor(props) {
|
|
81
|
+
super(props);
|
|
82
|
+
(0, _defineProperty2.default)(this, "toggleCorrect", showingCorrect => this.setState({
|
|
83
|
+
showingCorrect
|
|
84
|
+
}));
|
|
85
|
+
(0, _defineProperty2.default)(this, "validateSession", ({
|
|
86
|
+
model,
|
|
87
|
+
session
|
|
88
|
+
}, areChoicesShuffled = false) => {
|
|
89
|
+
const {
|
|
90
|
+
config,
|
|
91
|
+
choices
|
|
92
|
+
} = model || {};
|
|
93
|
+
const {
|
|
94
|
+
includeTargets
|
|
95
|
+
} = config || {};
|
|
96
|
+
const choicesIds = choices.map(c => c.id);
|
|
97
|
+
let {
|
|
98
|
+
value
|
|
99
|
+
} = session || {};
|
|
100
|
+
let needsReset;
|
|
131
101
|
if (!includeTargets) {
|
|
132
102
|
// Use all choice IDs if choices were shuffled or session is missing/invalid
|
|
133
|
-
|
|
134
|
-
|
|
103
|
+
const sessionMissing = !value || !value.length;
|
|
135
104
|
if (sessionMissing || areChoicesShuffled) {
|
|
136
105
|
// if there's no value on session in No Targets Mode, we need to set an initial session
|
|
137
106
|
value = choicesIds;
|
|
138
107
|
} else {
|
|
139
108
|
// in No Targets Mode, all choice ids need to be used
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
109
|
+
const missingChoiceIds = (0, _difference.default)(choicesIds, value);
|
|
110
|
+
// this is the case that handles extra choice ids in session
|
|
111
|
+
const extraChoiceIds = (0, _difference.default)(value, choicesIds);
|
|
144
112
|
if (missingChoiceIds.length || extraChoiceIds.length) {
|
|
145
113
|
value = choicesIds;
|
|
146
114
|
}
|
|
147
115
|
}
|
|
148
|
-
|
|
149
|
-
needsReset = !(0, _isEqual["default"])(session.value, value);
|
|
116
|
+
needsReset = !(0, _isEqual.default)(session.value, value);
|
|
150
117
|
} else {
|
|
151
118
|
// in Targets Area selected, it's important to check the length of session
|
|
152
|
-
|
|
153
|
-
|
|
119
|
+
const sessionIsMismatched = value && value.length !== choicesIds.length;
|
|
154
120
|
if (sessionIsMismatched) {
|
|
155
|
-
needsReset = true;
|
|
121
|
+
needsReset = true;
|
|
156
122
|
|
|
123
|
+
// if choices were added, add value in session
|
|
157
124
|
if (value.length < choicesIds.length) {
|
|
158
125
|
value = value.concat(new Array(choicesIds.length - value.length));
|
|
159
126
|
} else {
|
|
160
127
|
// if choices were removed, make sure to remove from session as well
|
|
161
|
-
value = value.filter(
|
|
162
|
-
return choicesIds.includes(cId);
|
|
163
|
-
});
|
|
128
|
+
value = value.filter(cId => choicesIds.includes(cId));
|
|
164
129
|
}
|
|
165
130
|
}
|
|
166
131
|
}
|
|
167
|
-
|
|
168
132
|
if (needsReset) {
|
|
169
133
|
// eslint-disable-next-line no-console
|
|
170
134
|
console.warn('This session is not valid anymore. It will be reset.');
|
|
171
135
|
}
|
|
172
|
-
|
|
173
136
|
return {
|
|
174
|
-
value
|
|
175
|
-
needsReset
|
|
137
|
+
value,
|
|
138
|
+
needsReset
|
|
176
139
|
};
|
|
177
140
|
});
|
|
178
|
-
(0, _defineProperty2
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
var to = target;
|
|
141
|
+
(0, _defineProperty2.default)(this, "onDropChoice", (target, source, ordering) => {
|
|
142
|
+
const {
|
|
143
|
+
onSessionChange,
|
|
144
|
+
session
|
|
145
|
+
} = this.props;
|
|
146
|
+
const from = ordering.tiles.find(t => t.id === source.id && t.type === source.type);
|
|
147
|
+
const to = target;
|
|
186
148
|
log('[onDropChoice] ', from, to);
|
|
187
|
-
|
|
149
|
+
const update = (0, _ordering.reducer)({
|
|
188
150
|
type: 'move',
|
|
189
|
-
from
|
|
190
|
-
to
|
|
151
|
+
from,
|
|
152
|
+
to
|
|
191
153
|
}, ordering);
|
|
192
|
-
|
|
154
|
+
const sessionUpdate = Object.assign({}, session, {
|
|
193
155
|
value: update.response
|
|
194
156
|
});
|
|
195
157
|
onSessionChange(sessionUpdate);
|
|
196
158
|
});
|
|
197
|
-
(0, _defineProperty2
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
159
|
+
(0, _defineProperty2.default)(this, "onRemoveChoice", (target, ordering) => {
|
|
160
|
+
const {
|
|
161
|
+
onSessionChange,
|
|
162
|
+
session
|
|
163
|
+
} = this.props;
|
|
201
164
|
log('[onRemoveChoice]', target);
|
|
202
|
-
|
|
165
|
+
const update = (0, _ordering.reducer)({
|
|
203
166
|
type: 'remove',
|
|
204
|
-
target
|
|
167
|
+
target
|
|
205
168
|
}, ordering);
|
|
206
|
-
|
|
169
|
+
const sessionUpdate = Object.assign({}, session, {
|
|
207
170
|
value: update.response
|
|
208
171
|
});
|
|
209
172
|
onSessionChange(sessionUpdate);
|
|
210
173
|
});
|
|
211
|
-
(0, _defineProperty2
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
174
|
+
(0, _defineProperty2.default)(this, "createOrdering", () => {
|
|
175
|
+
const {
|
|
176
|
+
model,
|
|
177
|
+
session
|
|
178
|
+
} = this.props;
|
|
179
|
+
const {
|
|
180
|
+
showingCorrect
|
|
181
|
+
} = this.state;
|
|
182
|
+
const config = model.config || {
|
|
217
183
|
orientation: 'vertical',
|
|
218
184
|
includeTargets: true
|
|
219
185
|
};
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
}), {
|
|
227
|
-
includeTargets
|
|
186
|
+
const {
|
|
187
|
+
includeTargets
|
|
188
|
+
} = config;
|
|
189
|
+
return showingCorrect ? (0, _ordering.buildState)(model.choices, model.correctResponse, model.correctResponse.map(id => ({
|
|
190
|
+
id,
|
|
191
|
+
outcome: 'correct'
|
|
192
|
+
})), {
|
|
193
|
+
includeTargets,
|
|
228
194
|
allowSameChoiceInTargets: model.config.allowSameChoiceInTargets
|
|
229
195
|
}) : (0, _ordering.buildState)(model.choices, session.value, model.outcomes, {
|
|
230
|
-
includeTargets
|
|
196
|
+
includeTargets,
|
|
231
197
|
allowSameChoiceInTargets: model.config.allowSameChoiceInTargets
|
|
232
198
|
});
|
|
233
199
|
});
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
200
|
+
(0, _defineProperty2.default)(this, "onDragEnd", event => {
|
|
201
|
+
const {
|
|
202
|
+
over,
|
|
203
|
+
active
|
|
204
|
+
} = event;
|
|
205
|
+
const ordering = this.createOrdering();
|
|
206
|
+
if (over && active) {
|
|
207
|
+
const draggedItem = active.data.current;
|
|
208
|
+
const droppedOnItem = over.data.current;
|
|
209
|
+
if (draggedItem && droppedOnItem && droppedOnItem.type === 'target') {
|
|
210
|
+
this.onDropChoice(droppedOnItem, draggedItem, ordering);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (draggedItem && droppedOnItem) {
|
|
214
|
+
this.onDropChoice(droppedOnItem, draggedItem, ordering);
|
|
215
|
+
}
|
|
216
|
+
} else if (!over && active) {
|
|
217
|
+
const draggedItem = active.data.current;
|
|
218
|
+
if (draggedItem && draggedItem.type === 'target') {
|
|
219
|
+
this.onRemoveChoice(draggedItem, ordering);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
this.instanceId = (0, _uniqueId.default)();
|
|
224
|
+
const {
|
|
225
|
+
value: _value,
|
|
226
|
+
needsReset: _needsReset
|
|
227
|
+
} = this.validateSession(props);
|
|
228
|
+
this.state = {
|
|
241
229
|
showingCorrect: false
|
|
242
230
|
};
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
231
|
+
const {
|
|
232
|
+
model: _model
|
|
233
|
+
} = props || {};
|
|
234
|
+
const {
|
|
235
|
+
env
|
|
236
|
+
} = _model || {};
|
|
237
|
+
const {
|
|
238
|
+
mode
|
|
239
|
+
} = env || {};
|
|
253
240
|
if (_needsReset && mode === 'gather') {
|
|
254
|
-
|
|
241
|
+
this.props.onSessionChange({
|
|
242
|
+
...props.session,
|
|
255
243
|
value: _value
|
|
256
|
-
})
|
|
244
|
+
});
|
|
257
245
|
}
|
|
258
|
-
|
|
259
|
-
return _this;
|
|
260
246
|
}
|
|
247
|
+
componentDidUpdate() {
|
|
248
|
+
//eslint-disable-next-line
|
|
249
|
+
const domNode = _reactDom.default.findDOMNode(this);
|
|
250
|
+
(0, _mathRendering.renderMath)(domNode);
|
|
251
|
+
}
|
|
252
|
+
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
253
|
+
const {
|
|
254
|
+
model: nextModel = {}
|
|
255
|
+
} = nextProps || {};
|
|
256
|
+
const {
|
|
257
|
+
model: currentModel = {}
|
|
258
|
+
} = this.props || {};
|
|
259
|
+
const {
|
|
260
|
+
correctResponse,
|
|
261
|
+
config,
|
|
262
|
+
choices: nextChoices = [],
|
|
263
|
+
env
|
|
264
|
+
} = nextModel;
|
|
265
|
+
const {
|
|
266
|
+
includeTargets
|
|
267
|
+
} = config || {};
|
|
268
|
+
const newState = {};
|
|
269
|
+
const isLanguageChanged = currentModel.language && currentModel.language !== nextModel.language;
|
|
270
|
+
const isDefaultNote = currentModel.note && currentModel.note === translator.t('common:commonCorrectAnswerWithAlternates', {
|
|
271
|
+
lng: currentModel.language
|
|
272
|
+
});
|
|
261
273
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
(0, _mathRendering.renderMath)(domNode);
|
|
269
|
-
}
|
|
270
|
-
}, {
|
|
271
|
-
key: "UNSAFE_componentWillReceiveProps",
|
|
272
|
-
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
273
|
-
var _currentModel$config,
|
|
274
|
-
_this2 = this;
|
|
275
|
-
|
|
276
|
-
var _ref8 = nextProps || {},
|
|
277
|
-
_ref8$model = _ref8.model,
|
|
278
|
-
nextModel = _ref8$model === void 0 ? {} : _ref8$model;
|
|
279
|
-
|
|
280
|
-
var _ref9 = this.props || {},
|
|
281
|
-
_ref9$model = _ref9.model,
|
|
282
|
-
currentModel = _ref9$model === void 0 ? {} : _ref9$model;
|
|
283
|
-
|
|
284
|
-
var correctResponse = nextModel.correctResponse,
|
|
285
|
-
config = nextModel.config,
|
|
286
|
-
_nextModel$choices = nextModel.choices,
|
|
287
|
-
nextChoices = _nextModel$choices === void 0 ? [] : _nextModel$choices,
|
|
288
|
-
env = nextModel.env;
|
|
289
|
-
|
|
290
|
-
var _ref10 = config || {},
|
|
291
|
-
includeTargets = _ref10.includeTargets;
|
|
292
|
-
|
|
293
|
-
var newState = {};
|
|
294
|
-
var isLanguageChanged = currentModel.language && currentModel.language !== nextModel.language;
|
|
295
|
-
var isDefaultNote = currentModel.note && currentModel.note === translator.t('common:commonCorrectAnswerWithAlternates', {
|
|
296
|
-
lng: currentModel.language
|
|
297
|
-
}); // check if the note is the default one for prev language and change to the default one for new language
|
|
298
|
-
// this check is necessary in order to diferanciate between default and authour defined note
|
|
299
|
-
// and only change between languages for default ones
|
|
300
|
-
|
|
301
|
-
if (isLanguageChanged && isDefaultNote) {
|
|
302
|
-
currentModel.note = translator.t('common:commonCorrectAnswerWithAlternates', {
|
|
303
|
-
lng: nextModel.language
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
if (!correctResponse) {
|
|
308
|
-
newState.showingCorrect = false;
|
|
309
|
-
} //PD-4924
|
|
310
|
-
// show student choices same order as in model when teacher changes student choices order
|
|
311
|
-
// for cases when student view and instructor view are on same page
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
var areChoicesShuffled = (0, _utils.haveSameValuesButDifferentOrder)(nextChoices, currentModel.choices);
|
|
315
|
-
var validatedSession = this.validateSession(nextProps, areChoicesShuffled);
|
|
316
|
-
var value = validatedSession.value,
|
|
317
|
-
needsReset = validatedSession.needsReset;
|
|
318
|
-
|
|
319
|
-
var newSession = _objectSpread(_objectSpread({}, nextProps.session), {}, {
|
|
320
|
-
value: value
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
var includeTargetsChanged = ((_currentModel$config = currentModel.config) === null || _currentModel$config === void 0 ? void 0 : _currentModel$config.includeTargets) !== includeTargets;
|
|
324
|
-
|
|
325
|
-
if (includeTargets && includeTargetsChanged) {
|
|
326
|
-
needsReset = true;
|
|
327
|
-
delete newSession.value;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
this.setState(newState, function () {
|
|
331
|
-
var _ref11 = env || {},
|
|
332
|
-
mode = _ref11.mode;
|
|
333
|
-
|
|
334
|
-
if (needsReset && mode === 'gather') {
|
|
335
|
-
_this2.props.onSessionChange(newSession);
|
|
336
|
-
}
|
|
274
|
+
// check if the note is the default one for prev language and change to the default one for new language
|
|
275
|
+
// this check is necessary in order to diferanciate between default and authour defined note
|
|
276
|
+
// and only change between languages for default ones
|
|
277
|
+
if (isLanguageChanged && isDefaultNote) {
|
|
278
|
+
currentModel.note = translator.t('common:commonCorrectAnswerWithAlternates', {
|
|
279
|
+
lng: nextModel.language
|
|
337
280
|
});
|
|
338
281
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
value: function render() {
|
|
342
|
-
var _this$props4 = this.props,
|
|
343
|
-
classes = _this$props4.classes,
|
|
344
|
-
model = _this$props4.model;
|
|
345
|
-
var correctResponse = model.correctResponse,
|
|
346
|
-
correctness = model.correctness,
|
|
347
|
-
extraCSSRules = model.extraCSSRules,
|
|
348
|
-
prompt = model.prompt,
|
|
349
|
-
rationale = model.rationale,
|
|
350
|
-
feedback = model.feedback,
|
|
351
|
-
configs = model.config,
|
|
352
|
-
note = model.note,
|
|
353
|
-
showNote = model.showNote,
|
|
354
|
-
env = model.env,
|
|
355
|
-
disabled = model.disabled,
|
|
356
|
-
teacherInstructions = model.teacherInstructions,
|
|
357
|
-
language = model.language;
|
|
358
|
-
var showToggle = correctResponse && correctResponse.length > 0;
|
|
359
|
-
var showingCorrect = this.state.showingCorrect;
|
|
360
|
-
var config = configs || {
|
|
361
|
-
orientation: 'vertical',
|
|
362
|
-
includeTargets: true
|
|
363
|
-
};
|
|
364
|
-
var orientation = config.orientation,
|
|
365
|
-
includeTargets = config.includeTargets;
|
|
366
|
-
var vertical = orientation === 'vertical';
|
|
367
|
-
var ordering = this.createOrdering();
|
|
368
|
-
|
|
369
|
-
var _ref12 = env || {},
|
|
370
|
-
mode = _ref12.mode,
|
|
371
|
-
role = _ref12.role;
|
|
372
|
-
|
|
373
|
-
var Tiler = vertical ? _tiler.VerticalTiler : _tiler.HorizontalTiler;
|
|
374
|
-
var displayNote = (showingCorrect || mode === 'view' && role === 'instructor') && showNote && note;
|
|
375
|
-
var showRationale = rationale && ((0, _renderUi.hasText)(rationale) || (0, _renderUi.hasMedia)(rationale));
|
|
376
|
-
var showTeacherInstructions = teacherInstructions && ((0, _renderUi.hasText)(teacherInstructions) || (0, _renderUi.hasMedia)(teacherInstructions));
|
|
377
|
-
return /*#__PURE__*/_react["default"].createElement(_renderUi.UiLayout, {
|
|
378
|
-
extraCSSRules: extraCSSRules,
|
|
379
|
-
className: classes.placementOrdering
|
|
380
|
-
}, showTeacherInstructions && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
381
|
-
labels: {
|
|
382
|
-
hidden: 'Show Teacher Instructions',
|
|
383
|
-
visible: 'Hide Teacher Instructions'
|
|
384
|
-
},
|
|
385
|
-
className: classes.collapsible
|
|
386
|
-
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
387
|
-
prompt: teacherInstructions
|
|
388
|
-
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
389
|
-
className: classes.prompt
|
|
390
|
-
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
391
|
-
prompt: prompt
|
|
392
|
-
})), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
393
|
-
className: classes.toggle,
|
|
394
|
-
show: showToggle,
|
|
395
|
-
toggled: showingCorrect,
|
|
396
|
-
onToggle: this.toggleCorrect,
|
|
397
|
-
language: language
|
|
398
|
-
}), /*#__PURE__*/_react["default"].createElement(OrderingTiler, {
|
|
399
|
-
instanceId: this.instanceId,
|
|
400
|
-
choiceLabel: config.choiceLabel,
|
|
401
|
-
targetLabel: config.targetLabel,
|
|
402
|
-
ordering: ordering,
|
|
403
|
-
tiler: Tiler,
|
|
404
|
-
disabled: disabled,
|
|
405
|
-
addGuide: config.showOrdering,
|
|
406
|
-
tileSize: config.tileSize,
|
|
407
|
-
includeTargets: includeTargets,
|
|
408
|
-
choiceLabelEnabled: model.config && model.config.choiceLabelEnabled,
|
|
409
|
-
onDropChoice: this.onDropChoice,
|
|
410
|
-
onRemoveChoice: this.onRemoveChoice
|
|
411
|
-
}), displayNote && /*#__PURE__*/_react["default"].createElement("div", {
|
|
412
|
-
className: classes.note,
|
|
413
|
-
dangerouslySetInnerHTML: {
|
|
414
|
-
__html: note
|
|
415
|
-
}
|
|
416
|
-
}), showRationale && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
417
|
-
labels: {
|
|
418
|
-
hidden: 'Show Rationale',
|
|
419
|
-
visible: 'Hide Rationale'
|
|
420
|
-
},
|
|
421
|
-
className: classes.collapsible
|
|
422
|
-
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
423
|
-
prompt: rationale
|
|
424
|
-
})), !showingCorrect && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
|
|
425
|
-
correctness: correctness,
|
|
426
|
-
feedback: feedback
|
|
427
|
-
}));
|
|
282
|
+
if (!correctResponse) {
|
|
283
|
+
newState.showingCorrect = false;
|
|
428
284
|
}
|
|
429
|
-
}]);
|
|
430
|
-
return PlacementOrdering;
|
|
431
|
-
}(_react["default"].Component);
|
|
432
|
-
|
|
433
|
-
exports.PlacementOrdering = PlacementOrdering;
|
|
434
|
-
(0, _defineProperty2["default"])(PlacementOrdering, "propTypes", {
|
|
435
|
-
onSessionChange: _propTypes["default"].func.isRequired,
|
|
436
|
-
model: _propTypes["default"].object.isRequired,
|
|
437
|
-
session: _propTypes["default"].oneOfType([_propTypes["default"].array.isRequired, _propTypes["default"].object.isRequired]),
|
|
438
|
-
classes: _propTypes["default"].object.isRequired
|
|
439
|
-
});
|
|
440
285
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
286
|
+
//PD-4924
|
|
287
|
+
// show student choices same order as in model when teacher changes student choices order
|
|
288
|
+
// for cases when student view and instructor view are on same page
|
|
289
|
+
const areChoicesShuffled = (0, _utils.haveSameValuesButDifferentOrder)(nextChoices, currentModel.choices);
|
|
290
|
+
const validatedSession = this.validateSession(nextProps, areChoicesShuffled);
|
|
291
|
+
let {
|
|
292
|
+
value,
|
|
293
|
+
needsReset
|
|
294
|
+
} = validatedSession;
|
|
295
|
+
const newSession = {
|
|
296
|
+
...nextProps.session,
|
|
297
|
+
value
|
|
298
|
+
};
|
|
299
|
+
const includeTargetsChanged = currentModel.config?.includeTargets !== includeTargets;
|
|
300
|
+
if (includeTargets && includeTargetsChanged) {
|
|
301
|
+
needsReset = true;
|
|
302
|
+
delete newSession.value;
|
|
303
|
+
}
|
|
304
|
+
this.setState(newState, () => {
|
|
305
|
+
const {
|
|
306
|
+
mode
|
|
307
|
+
} = env || {};
|
|
308
|
+
if (needsReset && mode === 'gather') {
|
|
309
|
+
this.props.onSessionChange(newSession);
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
render() {
|
|
314
|
+
const {
|
|
315
|
+
model
|
|
316
|
+
} = this.props;
|
|
317
|
+
const {
|
|
318
|
+
correctResponse,
|
|
319
|
+
correctness,
|
|
320
|
+
extraCSSRules,
|
|
321
|
+
prompt,
|
|
322
|
+
rationale,
|
|
323
|
+
feedback,
|
|
324
|
+
config: configs,
|
|
325
|
+
note,
|
|
326
|
+
showNote,
|
|
327
|
+
env,
|
|
328
|
+
disabled,
|
|
329
|
+
teacherInstructions,
|
|
330
|
+
language
|
|
331
|
+
} = model;
|
|
332
|
+
const showToggle = correctResponse && correctResponse.length > 0;
|
|
333
|
+
const {
|
|
334
|
+
showingCorrect
|
|
335
|
+
} = this.state;
|
|
336
|
+
const config = configs || {
|
|
337
|
+
orientation: 'vertical',
|
|
338
|
+
includeTargets: true
|
|
339
|
+
};
|
|
340
|
+
const {
|
|
341
|
+
orientation,
|
|
342
|
+
includeTargets
|
|
343
|
+
} = config;
|
|
344
|
+
const vertical = orientation === 'vertical';
|
|
345
|
+
const ordering = this.createOrdering();
|
|
346
|
+
const {
|
|
347
|
+
mode,
|
|
348
|
+
role
|
|
349
|
+
} = env || {};
|
|
350
|
+
const Tiler = vertical ? _tiler.VerticalTiler : _tiler.HorizontalTiler;
|
|
351
|
+
const displayNote = (showingCorrect || mode === 'view' && role === 'instructor') && showNote && note;
|
|
352
|
+
const showRationale = rationale && ((0, _renderUi.hasText)(rationale) || (0, _renderUi.hasMedia)(rationale));
|
|
353
|
+
const showTeacherInstructions = teacherInstructions && ((0, _renderUi.hasText)(teacherInstructions) || (0, _renderUi.hasMedia)(teacherInstructions));
|
|
354
|
+
const containerStyle = {
|
|
444
355
|
color: _renderUi.color.text(),
|
|
445
356
|
backgroundColor: _renderUi.color.background(),
|
|
446
357
|
display: 'flex',
|
|
447
358
|
flexDirection: 'column',
|
|
448
359
|
alignItems: 'center',
|
|
449
360
|
boxSizing: 'border-box'
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
361
|
+
};
|
|
362
|
+
return /*#__PURE__*/_react.default.createElement(_drag.DragProvider, {
|
|
363
|
+
onDragStart: () => {},
|
|
364
|
+
onDragEnd: this.onDragEnd
|
|
365
|
+
}, /*#__PURE__*/_react.default.createElement(PlacementOrderingContainer, null, /*#__PURE__*/_react.default.createElement(_renderUi.UiLayout, {
|
|
366
|
+
extraCSSRules: extraCSSRules,
|
|
367
|
+
style: containerStyle
|
|
368
|
+
}, showTeacherInstructions && /*#__PURE__*/_react.default.createElement(StyledCollapsible, {
|
|
369
|
+
labels: {
|
|
370
|
+
hidden: 'Show Teacher Instructions',
|
|
371
|
+
visible: 'Hide Teacher Instructions'
|
|
372
|
+
},
|
|
373
|
+
className: "collapsible"
|
|
374
|
+
}, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
375
|
+
prompt: teacherInstructions
|
|
376
|
+
})), /*#__PURE__*/_react.default.createElement(StyledPrompt, null, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
377
|
+
prompt: prompt
|
|
378
|
+
})), /*#__PURE__*/_react.default.createElement(StyledToggle, {
|
|
379
|
+
className: "toggle",
|
|
380
|
+
show: showToggle,
|
|
381
|
+
toggled: showingCorrect,
|
|
382
|
+
onToggle: this.toggleCorrect,
|
|
383
|
+
language: language
|
|
384
|
+
}), /*#__PURE__*/_react.default.createElement(OrderingTiler, {
|
|
385
|
+
instanceId: this.instanceId,
|
|
386
|
+
choiceLabel: config.choiceLabel,
|
|
387
|
+
targetLabel: config.targetLabel,
|
|
388
|
+
ordering: ordering,
|
|
389
|
+
tiler: Tiler,
|
|
390
|
+
disabled: disabled,
|
|
391
|
+
addGuide: config.showOrdering,
|
|
392
|
+
tileSize: config.tileSize,
|
|
393
|
+
includeTargets: includeTargets,
|
|
394
|
+
choiceLabelEnabled: model.config && model.config.choiceLabelEnabled
|
|
395
|
+
}), displayNote && /*#__PURE__*/_react.default.createElement(StyledNote, {
|
|
396
|
+
dangerouslySetInnerHTML: {
|
|
397
|
+
__html: note
|
|
398
|
+
}
|
|
399
|
+
}), showRationale && /*#__PURE__*/_react.default.createElement(StyledCollapsible, {
|
|
400
|
+
labels: {
|
|
401
|
+
hidden: 'Show Rationale',
|
|
402
|
+
visible: 'Hide Rationale'
|
|
403
|
+
},
|
|
404
|
+
className: "collapsible"
|
|
405
|
+
}, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
406
|
+
prompt: rationale
|
|
407
|
+
})), !showingCorrect && /*#__PURE__*/_react.default.createElement(_renderUi.Feedback, {
|
|
408
|
+
correctness: correctness,
|
|
409
|
+
feedback: feedback
|
|
410
|
+
}))));
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
exports.PlacementOrdering = PlacementOrdering;
|
|
414
|
+
(0, _defineProperty2.default)(PlacementOrdering, "propTypes", {
|
|
415
|
+
onSessionChange: _propTypes.default.func.isRequired,
|
|
416
|
+
model: _propTypes.default.object.isRequired,
|
|
417
|
+
session: _propTypes.default.oneOfType([_propTypes.default.array.isRequired, _propTypes.default.object.isRequired])
|
|
418
|
+
});
|
|
419
|
+
var _default = exports.default = PlacementOrdering;
|
|
470
420
|
//# sourceMappingURL=placement-ordering.js.map
|