@pie-element/number-line 6.6.0 → 6.6.1-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/configure/package.json +3 -3
- package/controller/package.json +3 -3
- package/package.json +8 -7
- package/configure/lib/arrows.js +0 -117
- package/configure/lib/arrows.js.map +0 -1
- package/configure/lib/card-bar.js +0 -79
- package/configure/lib/card-bar.js.map +0 -1
- package/configure/lib/defaults.js +0 -68
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/domain.js +0 -106
- package/configure/lib/domain.js.map +0 -1
- package/configure/lib/index.js +0 -148
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/main.js +0 -630
- package/configure/lib/main.js.map +0 -1
- package/configure/lib/number-text-field.js +0 -97
- package/configure/lib/number-text-field.js.map +0 -1
- package/configure/lib/point-config.js +0 -145
- package/configure/lib/point-config.js.map +0 -1
- package/configure/lib/size.js +0 -58
- package/configure/lib/size.js.map +0 -1
- package/configure/lib/ticks.js +0 -92
- package/configure/lib/ticks.js.map +0 -1
- package/configure/lib/utils.js +0 -14
- package/configure/lib/utils.js.map +0 -1
- package/controller/lib/defaults.js +0 -47
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -443
- package/controller/lib/index.js.map +0 -1
- package/lib/data-converter.js +0 -100
- package/lib/data-converter.js.map +0 -1
- package/lib/draggable/index.js +0 -53
- package/lib/draggable/index.js.map +0 -1
- package/lib/index.js +0 -241
- package/lib/index.js.map +0 -1
- package/lib/number-line/colors.js +0 -21
- package/lib/number-line/colors.js.map +0 -1
- package/lib/number-line/feedback.js +0 -108
- package/lib/number-line/feedback.js.map +0 -1
- package/lib/number-line/graph/arrow.js +0 -63
- package/lib/number-line/graph/arrow.js.map +0 -1
- package/lib/number-line/graph/elements/base.js +0 -26
- package/lib/number-line/graph/elements/base.js.map +0 -1
- package/lib/number-line/graph/elements/builder.js +0 -38
- package/lib/number-line/graph/elements/builder.js.map +0 -1
- package/lib/number-line/graph/elements/line.js +0 -317
- package/lib/number-line/graph/elements/line.js.map +0 -1
- package/lib/number-line/graph/elements/point.js +0 -233
- package/lib/number-line/graph/elements/point.js.map +0 -1
- package/lib/number-line/graph/elements/ray.js +0 -227
- package/lib/number-line/graph/elements/ray.js.map +0 -1
- package/lib/number-line/graph/index.js +0 -326
- package/lib/number-line/graph/index.js.map +0 -1
- package/lib/number-line/graph/line.js +0 -48
- package/lib/number-line/graph/line.js.map +0 -1
- package/lib/number-line/graph/stacks.js +0 -101
- package/lib/number-line/graph/stacks.js.map +0 -1
- package/lib/number-line/graph/tick-utils.js +0 -295
- package/lib/number-line/graph/tick-utils.js.map +0 -1
- package/lib/number-line/graph/ticks.js +0 -244
- package/lib/number-line/graph/ticks.js.map +0 -1
- package/lib/number-line/index.js +0 -401
- package/lib/number-line/index.js.map +0 -1
- package/lib/number-line/point-chooser/button.js +0 -74
- package/lib/number-line/point-chooser/button.js.map +0 -1
- package/lib/number-line/point-chooser/img.js +0 -9
- package/lib/number-line/point-chooser/img.js.map +0 -1
- package/lib/number-line/point-chooser/index.js +0 -181
- package/lib/number-line/point-chooser/index.js.map +0 -1
- package/lib/number-line/point-chooser/styles.js +0 -98
- package/lib/number-line/point-chooser/styles.js.map +0 -1
- package/lib/number-line/transitions/fade.js +0 -67
- package/lib/number-line/transitions/fade.js.map +0 -1
- package/lib/number-line/transitions/index.js +0 -16
- package/lib/number-line/transitions/index.js.map +0 -1
package/controller/lib/index.js
DELETED
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.createCorrectResponseSession = exports.closeTo = exports.CLOSE_TO_PRECISION = void 0;
|
|
11
|
-
exports.createDefaultModel = createDefaultModel;
|
|
12
|
-
exports.getCorrectness = exports.getCorrected = void 0;
|
|
13
|
-
exports.getScore = getScore;
|
|
14
|
-
exports.model = model;
|
|
15
|
-
exports.normalize = normalize;
|
|
16
|
-
exports.outcome = outcome;
|
|
17
|
-
exports.validate = void 0;
|
|
18
|
-
|
|
19
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
20
|
-
|
|
21
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
22
|
-
|
|
23
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
24
|
-
|
|
25
|
-
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
26
|
-
|
|
27
|
-
var _find = _interopRequireDefault(require("lodash/find"));
|
|
28
|
-
|
|
29
|
-
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
30
|
-
|
|
31
|
-
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
32
|
-
|
|
33
|
-
var _isEqualWith = _interopRequireDefault(require("lodash/isEqualWith"));
|
|
34
|
-
|
|
35
|
-
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
36
|
-
|
|
37
|
-
var _omitBy = _interopRequireDefault(require("lodash/omitBy"));
|
|
38
|
-
|
|
39
|
-
var _feedback = require("@pie-lib/feedback");
|
|
40
|
-
|
|
41
|
-
var _controllerUtils = require("@pie-lib/controller-utils");
|
|
42
|
-
|
|
43
|
-
var math = _interopRequireWildcard(require("mathjs"));
|
|
44
|
-
|
|
45
|
-
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
46
|
-
|
|
47
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
48
|
-
|
|
49
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
50
|
-
|
|
51
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
52
|
-
|
|
53
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
54
|
-
|
|
55
|
-
var score = function score(number) {
|
|
56
|
-
return {
|
|
57
|
-
score: {
|
|
58
|
-
scaled: number
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
var getPartialScore = function getPartialScore(corrected, ps) {
|
|
64
|
-
var correct = corrected.correct;
|
|
65
|
-
var rule = ps.find(function (r) {
|
|
66
|
-
return r.numberOfCorrect === correct.length;
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
if (rule) {
|
|
70
|
-
return 1.0 * (rule.scorePercentage / 100);
|
|
71
|
-
} else {
|
|
72
|
-
return 0;
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
var accumulateAnswer = function accumulateAnswer(correctResponse) {
|
|
77
|
-
return function (total, answer) {
|
|
78
|
-
var isCorrectResponse = correctResponse.some(function (cr) {
|
|
79
|
-
return matches(cr)(answer);
|
|
80
|
-
});
|
|
81
|
-
return total + (isCorrectResponse ? 1 : 0);
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
function outcome(model, session, env) {
|
|
89
|
-
return new Promise(function (resolve) {
|
|
90
|
-
if (!session || (0, _isEmpty["default"])(session)) {
|
|
91
|
-
resolve({
|
|
92
|
-
score: 0,
|
|
93
|
-
empty: true
|
|
94
|
-
});
|
|
95
|
-
} else {
|
|
96
|
-
var partialScoringEnabled = _controllerUtils.partialScoring.enabled(model, env);
|
|
97
|
-
|
|
98
|
-
var numCorrect = (session.answer || []).reduce(accumulateAnswer(model.correctResponse), 0);
|
|
99
|
-
var total = model.correctResponse.length;
|
|
100
|
-
var numIncorrect = 0;
|
|
101
|
-
|
|
102
|
-
if ((session.answer || []).length > total) {
|
|
103
|
-
numIncorrect = (session.answer || []).length - total;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (total === 0) {
|
|
107
|
-
total = 1;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
var _score = numCorrect < 0 ? 0 : (numCorrect - numIncorrect) / total;
|
|
111
|
-
|
|
112
|
-
if (_score < 0) {
|
|
113
|
-
_score = 0;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
resolve({
|
|
117
|
-
score: partialScoringEnabled ? _score : _score === 1 ? 1 : 0
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function getScore(question, session) {
|
|
124
|
-
return new Promise(function (resolve) {
|
|
125
|
-
if (!session || (0, _isEmpty["default"])(session)) {
|
|
126
|
-
resolve({
|
|
127
|
-
score: {
|
|
128
|
-
scaled: 0
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
} else {
|
|
132
|
-
session.answer = session.answer || [];
|
|
133
|
-
var corrected = getCorrected(session.answer, (0, _cloneDeep["default"])(question.correctResponse));
|
|
134
|
-
var correctness = getCorrectness(corrected);
|
|
135
|
-
|
|
136
|
-
if (correctness === 'correct') {
|
|
137
|
-
resolve(score(1.0));
|
|
138
|
-
} else if (correctness === 'incorrect') {
|
|
139
|
-
resolve(score(0.0));
|
|
140
|
-
} else if (correctness === 'partial') {
|
|
141
|
-
var allowPartialScoring = question.allowPartialScoring,
|
|
142
|
-
_partialScoring = question.partialScoring;
|
|
143
|
-
|
|
144
|
-
var ps = (_partialScoring || []).filter(function (o) {
|
|
145
|
-
return !(0, _isEmpty["default"])(o);
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
var canDoPartialScoring = allowPartialScoring && ps.length > 0;
|
|
149
|
-
|
|
150
|
-
if (canDoPartialScoring) {
|
|
151
|
-
resolve(score(getPartialScore(corrected, ps)));
|
|
152
|
-
} else {
|
|
153
|
-
resolve(score(0.0));
|
|
154
|
-
}
|
|
155
|
-
} else {
|
|
156
|
-
resolve({
|
|
157
|
-
score: {
|
|
158
|
-
scaled: -1
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
var CLOSE_TO_PRECISION = 3;
|
|
167
|
-
exports.CLOSE_TO_PRECISION = CLOSE_TO_PRECISION;
|
|
168
|
-
|
|
169
|
-
var closeTo = function closeTo(a, b, precision) {
|
|
170
|
-
precision = precision || 5;
|
|
171
|
-
var expectedDiff = Math.pow(10, -precision) / 2;
|
|
172
|
-
var receivedDiff = Math.abs(a - b);
|
|
173
|
-
var close = receivedDiff <= expectedDiff;
|
|
174
|
-
return close;
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
exports.closeTo = closeTo;
|
|
178
|
-
|
|
179
|
-
var matches = function matches(a) {
|
|
180
|
-
return function (v) {
|
|
181
|
-
return (0, _isEqualWith["default"])(a, v, function (v, ov) {
|
|
182
|
-
if (typeof v === 'number' && typeof ov === 'number') {
|
|
183
|
-
return closeTo(v, ov, CLOSE_TO_PRECISION);
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
};
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
var getCorrected = function getCorrected(answer, correctResponse) {
|
|
190
|
-
if ((0, _isEmpty["default"])(correctResponse) && answer.length > 0) {
|
|
191
|
-
return {
|
|
192
|
-
correct: [],
|
|
193
|
-
incorrect: [],
|
|
194
|
-
notInAnswer: [],
|
|
195
|
-
noCorrectResponse: true
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
return answer.reduce(function (acc, a, index) {
|
|
200
|
-
var correct = acc.correct,
|
|
201
|
-
incorrect = acc.incorrect,
|
|
202
|
-
notInAnswer = acc.notInAnswer;
|
|
203
|
-
var match = (0, _find["default"])(notInAnswer, matches(a));
|
|
204
|
-
|
|
205
|
-
if (match) {
|
|
206
|
-
correct.push(index);
|
|
207
|
-
notInAnswer.splice(notInAnswer.indexOf(match), 1);
|
|
208
|
-
} else {
|
|
209
|
-
incorrect.push(index);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return {
|
|
213
|
-
correct: correct,
|
|
214
|
-
incorrect: incorrect,
|
|
215
|
-
notInAnswer: notInAnswer
|
|
216
|
-
};
|
|
217
|
-
}, {
|
|
218
|
-
correct: [],
|
|
219
|
-
incorrect: [],
|
|
220
|
-
notInAnswer: correctResponse
|
|
221
|
-
});
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
exports.getCorrected = getCorrected;
|
|
225
|
-
|
|
226
|
-
var getCorrectness = function getCorrectness(corrected) {
|
|
227
|
-
var incorrect = corrected.incorrect,
|
|
228
|
-
correct = corrected.correct,
|
|
229
|
-
notInAnswer = corrected.notInAnswer,
|
|
230
|
-
noCorrectResponse = corrected.noCorrectResponse;
|
|
231
|
-
|
|
232
|
-
if (noCorrectResponse) {
|
|
233
|
-
return 'unknown';
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
if (incorrect.length === 0 && correct.length === 0) {
|
|
237
|
-
return 'unanswered';
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
if (incorrect.length === 0 && notInAnswer.length === 0) {
|
|
241
|
-
return 'correct';
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
if (incorrect.length > 0 || notInAnswer.length > 0) {
|
|
245
|
-
if (correct.length > 0) {
|
|
246
|
-
return 'partial';
|
|
247
|
-
} else {
|
|
248
|
-
return 'incorrect';
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
return 'unknown';
|
|
253
|
-
};
|
|
254
|
-
/**
|
|
255
|
-
* A sample of a normalize function see:
|
|
256
|
-
* https://github.com/pie-framework/pie-elements/issues/21
|
|
257
|
-
*/
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
exports.getCorrectness = getCorrectness;
|
|
261
|
-
|
|
262
|
-
function normalize(question) {
|
|
263
|
-
return new Promise(function (resolve) {
|
|
264
|
-
var feedback = (0, _merge["default"])(_defaults["default"].feedback, question.feedback);
|
|
265
|
-
|
|
266
|
-
if ((0, _isEqual["default"])(feedback, question.feedback)) {
|
|
267
|
-
return resolve(_objectSpread({}, question));
|
|
268
|
-
} else {
|
|
269
|
-
resolve(_objectSpread(_objectSpread({}, question), {}, {
|
|
270
|
-
feedback: feedback
|
|
271
|
-
}));
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
function createDefaultModel() {
|
|
277
|
-
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
278
|
-
return new Promise(function (resolve) {
|
|
279
|
-
var out = _objectSpread(_objectSpread({}, model), {}, {
|
|
280
|
-
graph: _objectSpread(_objectSpread({}, _defaults["default"].graph), model.graph),
|
|
281
|
-
colorContrast: 'black_on_white'
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
resolve((0, _omitBy["default"])(out, function (v) {
|
|
285
|
-
return !v;
|
|
286
|
-
}));
|
|
287
|
-
});
|
|
288
|
-
} // this function is duplicated in configure; at some point, use the same shared function
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
var updateTicks = function updateTicks(model) {
|
|
292
|
-
var _model$graph = model.graph;
|
|
293
|
-
_model$graph = _model$graph === void 0 ? {} : _model$graph;
|
|
294
|
-
var domain = _model$graph.domain,
|
|
295
|
-
labelStep = _model$graph.labelStep,
|
|
296
|
-
_model$graph$ticks = _model$graph.ticks,
|
|
297
|
-
ticks = _model$graph$ticks === void 0 ? {} : _model$graph$ticks;
|
|
298
|
-
var minor = ticks.minor,
|
|
299
|
-
major = ticks.major;
|
|
300
|
-
|
|
301
|
-
if (domain) {
|
|
302
|
-
domain.min = Number((domain.min || 0).toFixed(2));
|
|
303
|
-
domain.max = Number((domain.max || 0).toFixed(2));
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\/[1-9][0-9]*$/g)) {
|
|
307
|
-
model.graph.fraction = true; // update the ticks frequency and label value to match the label step if needed
|
|
308
|
-
|
|
309
|
-
var step = math.evaluate(labelStep);
|
|
310
|
-
|
|
311
|
-
if (step !== major) {
|
|
312
|
-
ticks.major = step;
|
|
313
|
-
ticks.minor = step / (major / minor);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
return model;
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
function model(question, session, env) {
|
|
321
|
-
if (!question) {
|
|
322
|
-
return Promise.reject(new Error('question is null'));
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
return new Promise( /*#__PURE__*/function () {
|
|
326
|
-
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve, reject) {
|
|
327
|
-
var normalizedQuestion, _updateTicks, graph, evaluateMode, correctResponse, corrected, correctness, exhibitOnly, disabled, fb;
|
|
328
|
-
|
|
329
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
330
|
-
while (1) {
|
|
331
|
-
switch (_context.prev = _context.next) {
|
|
332
|
-
case 0:
|
|
333
|
-
_context.next = 2;
|
|
334
|
-
return normalize(question);
|
|
335
|
-
|
|
336
|
-
case 2:
|
|
337
|
-
normalizedQuestion = _context.sent;
|
|
338
|
-
_updateTicks = updateTicks(normalizedQuestion), graph = _updateTicks.graph;
|
|
339
|
-
|
|
340
|
-
if (graph) {
|
|
341
|
-
evaluateMode = env.mode === 'evaluate';
|
|
342
|
-
correctResponse = (0, _cloneDeep["default"])(normalizedQuestion.correctResponse);
|
|
343
|
-
corrected = evaluateMode && getCorrected(session ? session.answer || [] : [], correctResponse);
|
|
344
|
-
correctness = evaluateMode && getCorrectness(corrected);
|
|
345
|
-
exhibitOnly = graph.exhibitOnly;
|
|
346
|
-
disabled = env.mode !== 'gather' || exhibitOnly === true;
|
|
347
|
-
fb = evaluateMode ? (0, _feedback.getFeedbackForCorrectness)(correctness, normalizedQuestion.feedback) : Promise.resolve(undefined);
|
|
348
|
-
fb.then(function (feedbackMessage) {
|
|
349
|
-
var out = {
|
|
350
|
-
prompt: normalizedQuestion.prompt,
|
|
351
|
-
graph: graph,
|
|
352
|
-
disabled: disabled,
|
|
353
|
-
corrected: corrected,
|
|
354
|
-
correctResponse: evaluateMode && ['unanswered', 'correct'].indexOf(correctness) === -1 && normalizedQuestion.correctResponse,
|
|
355
|
-
feedback: feedbackMessage && {
|
|
356
|
-
type: correctness,
|
|
357
|
-
message: feedbackMessage
|
|
358
|
-
},
|
|
359
|
-
colorContrast: env.accessibility && env.accessibility.colorContrast || 'black_on_white'
|
|
360
|
-
};
|
|
361
|
-
resolve((0, _omitBy["default"])(out, function (v) {
|
|
362
|
-
return !v;
|
|
363
|
-
}));
|
|
364
|
-
});
|
|
365
|
-
} else {
|
|
366
|
-
reject(new Error('graph is undefined'));
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
case 5:
|
|
370
|
-
case "end":
|
|
371
|
-
return _context.stop();
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}, _callee);
|
|
375
|
-
}));
|
|
376
|
-
|
|
377
|
-
return function (_x, _x2) {
|
|
378
|
-
return _ref.apply(this, arguments);
|
|
379
|
-
};
|
|
380
|
-
}());
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
var createCorrectResponseSession = function createCorrectResponseSession(question, env) {
|
|
384
|
-
return new Promise(function (resolve) {
|
|
385
|
-
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
386
|
-
var answer = question.correctResponse;
|
|
387
|
-
resolve({
|
|
388
|
-
answer: answer,
|
|
389
|
-
id: '1'
|
|
390
|
-
});
|
|
391
|
-
} else {
|
|
392
|
-
resolve(null);
|
|
393
|
-
}
|
|
394
|
-
});
|
|
395
|
-
};
|
|
396
|
-
|
|
397
|
-
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
398
|
-
|
|
399
|
-
var validate = function validate() {
|
|
400
|
-
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
401
|
-
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
402
|
-
|
|
403
|
-
// TODO: add configurable validation props after authoring is updated
|
|
404
|
-
var _ref2 = model || {},
|
|
405
|
-
graph = _ref2.graph,
|
|
406
|
-
correctResponse = _ref2.correctResponse;
|
|
407
|
-
|
|
408
|
-
var _ref3 = graph || {},
|
|
409
|
-
width = _ref3.width,
|
|
410
|
-
domain = _ref3.domain,
|
|
411
|
-
maxNumberOfPoints = _ref3.maxNumberOfPoints;
|
|
412
|
-
|
|
413
|
-
var _ref4 = domain || {},
|
|
414
|
-
min = _ref4.min,
|
|
415
|
-
max = _ref4.max;
|
|
416
|
-
|
|
417
|
-
var errors = {};
|
|
418
|
-
|
|
419
|
-
if (width < 200 || width > 800) {
|
|
420
|
-
errors.widthError = 'Width should be a value between 200 and 800.';
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
if (min < -100000 || min > 10000 || max < -100000 || max > 10000) {
|
|
424
|
-
errors.domainError = 'Min and max must both be in the range [-100000, 10000].';
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
if (min >= max) {
|
|
428
|
-
errors.maxError = 'Max must be greater than min.';
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
if (maxNumberOfPoints < 1 || maxNumberOfPoints > 20) {
|
|
432
|
-
errors.pointsError = 'Max number of elements should be between 1 and 20.';
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
if (correctResponse && correctResponse.length === 0) {
|
|
436
|
-
errors.correctResponseError = 'The correct answer should include at least one number line object.';
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
return errors;
|
|
440
|
-
};
|
|
441
|
-
|
|
442
|
-
exports.validate = validate;
|
|
443
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["score","number","scaled","getPartialScore","corrected","ps","correct","rule","find","r","numberOfCorrect","length","scorePercentage","accumulateAnswer","correctResponse","total","answer","isCorrectResponse","some","cr","matches","outcome","model","session","env","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","numCorrect","reduce","numIncorrect","getScore","question","getCorrected","correctness","getCorrectness","allowPartialScoring","filter","o","canDoPartialScoring","CLOSE_TO_PRECISION","closeTo","a","b","precision","expectedDiff","Math","pow","receivedDiff","abs","close","v","ov","incorrect","notInAnswer","noCorrectResponse","acc","index","match","push","splice","indexOf","normalize","feedback","defaults","createDefaultModel","out","graph","colorContrast","updateTicks","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","fraction","step","math","evaluate","reject","Error","normalizedQuestion","evaluateMode","mode","exhibitOnly","disabled","fb","undefined","then","feedbackMessage","prompt","type","message","accessibility","createCorrectResponseSession","role","id","validate","config","width","maxNumberOfPoints","errors","widthError","domainError","maxError","pointsError","correctResponseError"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport isEqualWith from 'lodash/isEqualWith';\nimport merge from 'lodash/merge';\nimport omitBy from 'lodash/omitBy';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport * as math from 'mathjs';\n\nimport defaults from './defaults';\n\nconst score = (number) => {\n return {\n score: {\n scaled: number,\n },\n };\n};\n\nconst getPartialScore = (corrected, ps) => {\n const { correct } = corrected;\n const rule = ps.find((r) => r.numberOfCorrect === correct.length);\n\n if (rule) {\n return 1.0 * (rule.scorePercentage / 100);\n } else {\n return 0;\n }\n};\n\nconst accumulateAnswer = (correctResponse) => (total, answer) => {\n const isCorrectResponse = correctResponse.some((cr) => matches(cr)(answer));\n return total + (isCorrectResponse ? 1 : 0);\n};\n\n/**\n */\nexport function outcome(model, session, env) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const numCorrect = (session.answer || []).reduce(accumulateAnswer(model.correctResponse), 0);\n\n let total = model.correctResponse.length;\n let numIncorrect = 0;\n\n if ((session.answer || []).length > total) {\n numIncorrect = (session.answer || []).length - total;\n }\n\n if (total === 0) {\n total = 1;\n }\n\n let score = numCorrect < 0 ? 0 : (numCorrect - numIncorrect) / total;\n\n if (score < 0) {\n score = 0;\n }\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n}\n\nexport function getScore(question, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: { scaled: 0 } });\n } else {\n session.answer = session.answer || [];\n\n const corrected = getCorrected(session.answer, cloneDeep(question.correctResponse));\n\n const correctness = getCorrectness(corrected);\n\n if (correctness === 'correct') {\n resolve(score(1.0));\n } else if (correctness === 'incorrect') {\n resolve(score(0.0));\n } else if (correctness === 'partial') {\n const { allowPartialScoring, partialScoring } = question;\n const ps = (partialScoring || []).filter((o) => !isEmpty(o));\n const canDoPartialScoring = allowPartialScoring && ps.length > 0;\n if (canDoPartialScoring) {\n resolve(score(getPartialScore(corrected, ps)));\n } else {\n resolve(score(0.0));\n }\n } else {\n resolve({ score: { scaled: -1 } });\n }\n }\n });\n}\n\nexport const CLOSE_TO_PRECISION = 3;\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 5;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n const close = receivedDiff <= expectedDiff;\n return close;\n};\n\nconst matches = (a) => (v) => {\n return isEqualWith(a, v, (v, ov) => {\n if (typeof v === 'number' && typeof ov === 'number') {\n return closeTo(v, ov, CLOSE_TO_PRECISION);\n }\n });\n};\n\nexport const getCorrected = (answer, correctResponse) => {\n if (isEmpty(correctResponse) && answer.length > 0) {\n return {\n correct: [],\n incorrect: [],\n notInAnswer: [],\n noCorrectResponse: true,\n };\n }\n\n return answer.reduce(\n (acc, a, index) => {\n const { correct, incorrect, notInAnswer } = acc;\n\n const match = find(notInAnswer, matches(a));\n if (match) {\n correct.push(index);\n notInAnswer.splice(notInAnswer.indexOf(match), 1);\n } else {\n incorrect.push(index);\n }\n\n return {\n correct: correct,\n incorrect: incorrect,\n notInAnswer: notInAnswer,\n };\n },\n {\n correct: [],\n incorrect: [],\n notInAnswer: correctResponse,\n },\n );\n};\n\nexport const getCorrectness = (corrected) => {\n const { incorrect, correct, notInAnswer, noCorrectResponse } = corrected;\n\n if (noCorrectResponse) {\n return 'unknown';\n }\n\n if (incorrect.length === 0 && correct.length === 0) {\n return 'unanswered';\n }\n\n if (incorrect.length === 0 && notInAnswer.length === 0) {\n return 'correct';\n }\n\n if (incorrect.length > 0 || notInAnswer.length > 0) {\n if (correct.length > 0) {\n return 'partial';\n } else {\n return 'incorrect';\n }\n }\n\n return 'unknown';\n};\n\n/**\n * A sample of a normalize function see:\n * https://github.com/pie-framework/pie-elements/issues/21\n */\nexport function normalize(question) {\n return new Promise((resolve) => {\n const feedback = merge(defaults.feedback, question.feedback);\n\n if (isEqual(feedback, question.feedback)) {\n return resolve({ ...question });\n } else {\n resolve({ ...question, feedback });\n }\n });\n}\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n const out = {\n ...model,\n graph: {\n ...defaults.graph,\n ...model.graph,\n },\n colorContrast: 'black_on_white',\n };\n\n resolve(omitBy(out, (v) => !v));\n });\n}\n\n// this function is duplicated in configure; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport function model(question, session, env) {\n if (!question) {\n return Promise.reject(new Error('question is null'));\n }\n\n return new Promise(async (resolve, reject) => {\n const normalizedQuestion = await normalize(question);\n const { graph } = updateTicks(normalizedQuestion);\n\n if (graph) {\n const evaluateMode = env.mode === 'evaluate';\n\n const correctResponse = cloneDeep(normalizedQuestion.correctResponse);\n const corrected = evaluateMode && getCorrected(session ? session.answer || [] : [], correctResponse);\n const correctness = evaluateMode && getCorrectness(corrected);\n\n const { exhibitOnly } = graph;\n const disabled = env.mode !== 'gather' || exhibitOnly === true;\n\n const fb = evaluateMode\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedbackMessage) => {\n const out = {\n prompt: normalizedQuestion.prompt,\n graph,\n disabled,\n corrected,\n correctResponse:\n evaluateMode && ['unanswered', 'correct'].indexOf(correctness) === -1 && normalizedQuestion.correctResponse,\n feedback: feedbackMessage && {\n type: correctness,\n message: feedbackMessage,\n },\n colorContrast: (env.accessibility && env.accessibility.colorContrast) || 'black_on_white',\n };\n\n resolve(omitBy(out, (v) => !v));\n });\n } else {\n reject(new Error('graph is undefined'));\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctResponse: answer } = question;\n\n resolve({\n answer,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\nexport const validate = (model = {}, config = {}) => {\n // TODO: add configurable validation props after authoring is updated\n const { graph, correctResponse } = model || {};\n const { width, domain, maxNumberOfPoints } = graph || {};\n const { min, max } = domain || {};\n const errors = {};\n\n if (width < 200 || width > 800) {\n errors.widthError = 'Width should be a value between 200 and 800.';\n }\n\n if (min < -100000 || min > 10000 || max < -100000 || max > 10000) {\n errors.domainError = 'Min and max must both be in the range [-100000, 10000].';\n }\n\n if (min >= max) {\n errors.maxError = 'Max must be greater than min.';\n }\n\n if (maxNumberOfPoints < 1 || maxNumberOfPoints > 20) {\n errors.pointsError = 'Max number of elements should be between 1 and 20.';\n }\n\n if (correctResponse && correctResponse.length === 0) {\n errors.correctResponseError = 'The correct answer should include at least one number line object.';\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/lib/data-converter.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.toSessionFormat = exports.toGraphFormat = exports.switchPosition = exports.switchGraphLine = exports.lineIsSwitched = void 0;
|
|
7
|
-
|
|
8
|
-
var lineIsSwitched = function lineIsSwitched(line) {
|
|
9
|
-
var position = line.position;
|
|
10
|
-
return position.left > position.right;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
exports.lineIsSwitched = lineIsSwitched;
|
|
14
|
-
|
|
15
|
-
var switchGraphLine = function switchGraphLine(line) {
|
|
16
|
-
var position = line.position;
|
|
17
|
-
|
|
18
|
-
if (position.left < position.right) {
|
|
19
|
-
return line;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
var newRightPoint = line.leftPoint,
|
|
23
|
-
newLeftPoint = line.rightPoint;
|
|
24
|
-
return {
|
|
25
|
-
leftPoint: newLeftPoint,
|
|
26
|
-
rightPoint: newRightPoint,
|
|
27
|
-
position: switchPosition(position),
|
|
28
|
-
type: 'line'
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
exports.switchGraphLine = switchGraphLine;
|
|
33
|
-
|
|
34
|
-
var switchPosition = function switchPosition(p) {
|
|
35
|
-
var newRight = p.left,
|
|
36
|
-
newLeft = p.right;
|
|
37
|
-
return {
|
|
38
|
-
left: newLeft,
|
|
39
|
-
right: newRight
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
exports.switchPosition = switchPosition;
|
|
44
|
-
|
|
45
|
-
var toSessionFormat = function toSessionFormat(gf) {
|
|
46
|
-
if (gf.type === 'point') {
|
|
47
|
-
return {
|
|
48
|
-
type: 'point',
|
|
49
|
-
pointType: gf.pointType,
|
|
50
|
-
domainPosition: gf.position
|
|
51
|
-
};
|
|
52
|
-
} else if (gf.type === 'line') {
|
|
53
|
-
return {
|
|
54
|
-
type: 'line',
|
|
55
|
-
size: gf.position.right - gf.position.left,
|
|
56
|
-
domainPosition: gf.position.left,
|
|
57
|
-
leftPoint: gf.leftPoint,
|
|
58
|
-
rightPoint: gf.rightPoint
|
|
59
|
-
};
|
|
60
|
-
} else if (gf.type === 'ray') {
|
|
61
|
-
return {
|
|
62
|
-
type: 'ray',
|
|
63
|
-
domainPosition: gf.position,
|
|
64
|
-
pointType: gf.pointType,
|
|
65
|
-
direction: gf.direction
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
exports.toSessionFormat = toSessionFormat;
|
|
71
|
-
|
|
72
|
-
var toGraphFormat = function toGraphFormat(sf) {
|
|
73
|
-
if (sf.type === 'point') {
|
|
74
|
-
return {
|
|
75
|
-
type: 'point',
|
|
76
|
-
pointType: sf.pointType,
|
|
77
|
-
position: sf.domainPosition
|
|
78
|
-
};
|
|
79
|
-
} else if (sf.type === 'line') {
|
|
80
|
-
return {
|
|
81
|
-
type: 'line',
|
|
82
|
-
position: {
|
|
83
|
-
left: sf.domainPosition,
|
|
84
|
-
right: sf.domainPosition + sf.size
|
|
85
|
-
},
|
|
86
|
-
leftPoint: sf.leftPoint,
|
|
87
|
-
rightPoint: sf.rightPoint
|
|
88
|
-
};
|
|
89
|
-
} else if (sf.type === 'ray') {
|
|
90
|
-
return {
|
|
91
|
-
type: 'ray',
|
|
92
|
-
position: sf.domainPosition,
|
|
93
|
-
pointType: sf.pointType,
|
|
94
|
-
direction: sf.direction
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
exports.toGraphFormat = toGraphFormat;
|
|
100
|
-
//# sourceMappingURL=data-converter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data-converter.js"],"names":["lineIsSwitched","line","position","left","right","switchGraphLine","newRightPoint","leftPoint","newLeftPoint","rightPoint","switchPosition","type","p","newRight","newLeft","toSessionFormat","gf","pointType","domainPosition","size","direction","toGraphFormat","sf"],"mappings":"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","sourcesContent":["export const lineIsSwitched = (line) => {\n let { position } = line;\n return position.left > position.right;\n};\n\nexport const switchGraphLine = (line) => {\n let { position } = line;\n\n if (position.left < position.right) {\n return line;\n }\n\n let { leftPoint: newRightPoint, rightPoint: newLeftPoint } = line;\n\n return {\n leftPoint: newLeftPoint,\n rightPoint: newRightPoint,\n position: switchPosition(position),\n type: 'line',\n };\n};\n\nexport const switchPosition = (p) => {\n let { left: newRight, right: newLeft } = p;\n return { left: newLeft, right: newRight };\n};\n\nexport const toSessionFormat = (gf) => {\n if (gf.type === 'point') {\n return {\n type: 'point',\n pointType: gf.pointType,\n domainPosition: gf.position,\n };\n } else if (gf.type === 'line') {\n return {\n type: 'line',\n size: gf.position.right - gf.position.left,\n domainPosition: gf.position.left,\n leftPoint: gf.leftPoint,\n rightPoint: gf.rightPoint,\n };\n } else if (gf.type === 'ray') {\n return {\n type: 'ray',\n domainPosition: gf.position,\n pointType: gf.pointType,\n direction: gf.direction,\n };\n }\n};\n\nexport const toGraphFormat = (sf) => {\n if (sf.type === 'point') {\n return {\n type: 'point',\n pointType: sf.pointType,\n position: sf.domainPosition,\n };\n } else if (sf.type === 'line') {\n return {\n type: 'line',\n position: {\n left: sf.domainPosition,\n right: sf.domainPosition + sf.size,\n },\n leftPoint: sf.leftPoint,\n rightPoint: sf.rightPoint,\n };\n } else if (sf.type === 'ray') {\n return {\n type: 'ray',\n position: sf.domainPosition,\n pointType: sf.pointType,\n direction: sf.direction,\n };\n }\n};\n"],"file":"data-converter.js"}
|
package/lib/draggable/index.js
DELETED
|
@@ -1,53 +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 _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
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 _reactDraggable = _interopRequireDefault(require("react-draggable"));
|
|
23
|
-
|
|
24
|
-
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); }; }
|
|
25
|
-
|
|
26
|
-
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; } }
|
|
27
|
-
|
|
28
|
-
var LocalDraggable = /*#__PURE__*/function (_Draggable) {
|
|
29
|
-
(0, _inherits2["default"])(LocalDraggable, _Draggable);
|
|
30
|
-
|
|
31
|
-
var _super = _createSuper(LocalDraggable);
|
|
32
|
-
|
|
33
|
-
function LocalDraggable() {
|
|
34
|
-
(0, _classCallCheck2["default"])(this, LocalDraggable);
|
|
35
|
-
return _super.apply(this, arguments);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
(0, _createClass2["default"])(LocalDraggable, [{
|
|
39
|
-
key: "componentWillReceiveProps",
|
|
40
|
-
value: function componentWillReceiveProps(next) {
|
|
41
|
-
(0, _get2["default"])((0, _getPrototypeOf2["default"])(LocalDraggable.prototype), "componentWillReceiveProps", this).call(this, next); //Remove the x/y state as these values have now been updated and will come through as props.
|
|
42
|
-
|
|
43
|
-
this.setState({
|
|
44
|
-
x: 0,
|
|
45
|
-
y: 0
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}]);
|
|
49
|
-
return LocalDraggable;
|
|
50
|
-
}(_reactDraggable["default"]);
|
|
51
|
-
|
|
52
|
-
exports["default"] = LocalDraggable;
|
|
53
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/draggable/index.js"],"names":["LocalDraggable","next","setState","x","y","Draggable"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;IAEqBA,c;;;;;;;;;;;;WACnB,mCAA0BC,IAA1B,EAAgC;AAC9B,sIAAgCA,IAAhC,EAD8B,CAE9B;;AACA,WAAKC,QAAL,CAAc;AAAEC,QAAAA,CAAC,EAAE,CAAL;AAAQC,QAAAA,CAAC,EAAE;AAAX,OAAd;AACD;;;EALyCC,0B","sourcesContent":["import Draggable from 'react-draggable';\n\nexport default class LocalDraggable extends Draggable {\n componentWillReceiveProps(next) {\n super.componentWillReceiveProps(next);\n //Remove the x/y state as these values have now been updated and will come through as props.\n this.setState({ x: 0, y: 0 });\n }\n}\n"],"file":"index.js"}
|