@pie-element/drag-in-the-blank 4.6.0 → 4.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 +24 -6
- package/controller/package.json +2 -2
- package/package.json +9 -7
- package/configure/lib/choice.js +0 -126
- package/configure/lib/choice.js.map +0 -1
- package/configure/lib/choices.js +0 -350
- package/configure/lib/choices.js.map +0 -1
- package/configure/lib/defaults.js +0 -77
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/index.js +0 -179
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/main.js +0 -413
- package/configure/lib/main.js.map +0 -1
- package/configure/lib/markupUtils.js +0 -105
- package/configure/lib/markupUtils.js.map +0 -1
- package/controller/lib/defaults.js +0 -14
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -277
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/utils.js +0 -53
- package/controller/lib/utils.js.map +0 -1
- package/lib/index.js +0 -106
- package/lib/index.js.map +0 -1
- package/lib/main.js +0 -156
- package/lib/main.js.map +0 -1
package/controller/lib/index.js
DELETED
|
@@ -1,277 +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.getScore = exports.createCorrectResponseSession = void 0;
|
|
9
|
-
exports.model = model;
|
|
10
|
-
exports.normalize = void 0;
|
|
11
|
-
exports.outcome = outcome;
|
|
12
|
-
exports.validate = void 0;
|
|
13
|
-
|
|
14
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
|
|
16
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
|
|
18
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
|
-
|
|
20
|
-
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
21
|
-
|
|
22
|
-
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
23
|
-
|
|
24
|
-
var _utils = require("./utils");
|
|
25
|
-
|
|
26
|
-
var _controllerUtils = require("@pie-lib/controller-utils");
|
|
27
|
-
|
|
28
|
-
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; }
|
|
29
|
-
|
|
30
|
-
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; }
|
|
31
|
-
|
|
32
|
-
var normalize = function normalize(question) {
|
|
33
|
-
return _objectSpread({
|
|
34
|
-
rationaleEnabled: true,
|
|
35
|
-
promptEnabled: true,
|
|
36
|
-
teacherInstructionsEnabled: true,
|
|
37
|
-
studentInstructionsEnabled: true
|
|
38
|
-
}, question);
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* @param {*} question
|
|
43
|
-
* @param {*} session
|
|
44
|
-
* @param {*} env
|
|
45
|
-
* @param {*} updateSession - optional - a function that will set the properties passed into it on the session.
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
exports.normalize = normalize;
|
|
50
|
-
|
|
51
|
-
function model(question, session, env, updateSession) {
|
|
52
|
-
return new Promise( /*#__PURE__*/function () {
|
|
53
|
-
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve) {
|
|
54
|
-
var normalizedQuestion, feedback, choices, lockChoiceOrder, out;
|
|
55
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
56
|
-
while (1) {
|
|
57
|
-
switch (_context.prev = _context.next) {
|
|
58
|
-
case 0:
|
|
59
|
-
normalizedQuestion = normalize(question);
|
|
60
|
-
feedback = {};
|
|
61
|
-
|
|
62
|
-
if (env.mode === 'evaluate') {
|
|
63
|
-
(function () {
|
|
64
|
-
var responses = (0, _utils.getAllCorrectResponses)(normalizedQuestion) || {};
|
|
65
|
-
var allCorrectResponses = responses.possibleResponses;
|
|
66
|
-
var numberOfPossibleResponses = responses.numberOfPossibleResponses || 0;
|
|
67
|
-
var correctResponses = undefined;
|
|
68
|
-
|
|
69
|
-
var _ref2 = session || {},
|
|
70
|
-
value = _ref2.value;
|
|
71
|
-
|
|
72
|
-
var _loop = function _loop(i) {
|
|
73
|
-
var result = (0, _reduce["default"])(allCorrectResponses, function (obj, choices, key) {
|
|
74
|
-
var answer = value && value[key] || '';
|
|
75
|
-
obj.feedback[key] = choices[i] === answer;
|
|
76
|
-
|
|
77
|
-
if (obj.feedback[key]) {
|
|
78
|
-
obj.correctResponses += 1;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return obj;
|
|
82
|
-
}, {
|
|
83
|
-
correctResponses: 0,
|
|
84
|
-
feedback: {}
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
if (correctResponses === undefined || result.correctResponses > correctResponses) {
|
|
88
|
-
correctResponses = result.correctResponses;
|
|
89
|
-
feedback = result.feedback;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (result.correctResponses === numberOfPossibleResponses) {
|
|
93
|
-
return "break";
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
for (var i = 0; i < numberOfPossibleResponses; i++) {
|
|
98
|
-
var _ret = _loop(i);
|
|
99
|
-
|
|
100
|
-
if (_ret === "break") break;
|
|
101
|
-
}
|
|
102
|
-
})();
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
choices = normalizedQuestion.choices && normalizedQuestion.choices.filter(function (choice) {
|
|
106
|
-
return !(0, _utils.choiceIsEmpty)(choice);
|
|
107
|
-
});
|
|
108
|
-
lockChoiceOrder = (0, _controllerUtils.lockChoices)(normalizedQuestion, session, env);
|
|
109
|
-
|
|
110
|
-
if (lockChoiceOrder) {
|
|
111
|
-
_context.next = 9;
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
_context.next = 8;
|
|
116
|
-
return (0, _controllerUtils.getShuffledChoices)(choices, session, updateSession, 'id');
|
|
117
|
-
|
|
118
|
-
case 8:
|
|
119
|
-
choices = _context.sent;
|
|
120
|
-
|
|
121
|
-
case 9:
|
|
122
|
-
out = _objectSpread(_objectSpread({}, normalizedQuestion), {}, {
|
|
123
|
-
prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,
|
|
124
|
-
choices: choices,
|
|
125
|
-
feedback: feedback,
|
|
126
|
-
mode: env.mode,
|
|
127
|
-
disabled: env.mode !== 'gather',
|
|
128
|
-
responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
132
|
-
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
133
|
-
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
134
|
-
} else {
|
|
135
|
-
out.rationale = null;
|
|
136
|
-
out.teacherInstructions = null;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
resolve(out);
|
|
140
|
-
|
|
141
|
-
case 12:
|
|
142
|
-
case "end":
|
|
143
|
-
return _context.stop();
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}, _callee);
|
|
147
|
-
}));
|
|
148
|
-
|
|
149
|
-
return function (_x) {
|
|
150
|
-
return _ref.apply(this, arguments);
|
|
151
|
-
};
|
|
152
|
-
}());
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
var getScore = function getScore(config, session) {
|
|
156
|
-
var responses = (0, _utils.getAllCorrectResponses)(config);
|
|
157
|
-
var allCorrectResponses = responses.possibleResponses;
|
|
158
|
-
var maxScore = Object.keys(config.correctResponse).length;
|
|
159
|
-
var numberOfPossibleResponses = responses.numberOfPossibleResponses || 0;
|
|
160
|
-
var correctCount = 0;
|
|
161
|
-
|
|
162
|
-
var _ref3 = session || {},
|
|
163
|
-
value = _ref3.value;
|
|
164
|
-
|
|
165
|
-
var _loop2 = function _loop2(i) {
|
|
166
|
-
var result = (0, _reduce["default"])(allCorrectResponses, function (total, choices, key) {
|
|
167
|
-
var answer = value && value[key] || '';
|
|
168
|
-
|
|
169
|
-
if (choices[i] === answer) {
|
|
170
|
-
return total;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
return total - 1;
|
|
174
|
-
}, maxScore);
|
|
175
|
-
|
|
176
|
-
if (result > correctCount) {
|
|
177
|
-
correctCount = result;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (result === maxScore) {
|
|
181
|
-
return "break";
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
|
|
185
|
-
for (var i = 0; i < numberOfPossibleResponses; i++) {
|
|
186
|
-
var _ret2 = _loop2(i);
|
|
187
|
-
|
|
188
|
-
if (_ret2 === "break") break;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
var str = maxScore ? (correctCount / maxScore).toFixed(2) : 0;
|
|
192
|
-
return parseFloat(str);
|
|
193
|
-
};
|
|
194
|
-
/**
|
|
195
|
-
*
|
|
196
|
-
* The score is partial by default for checkbox mode, allOrNothing for radio mode.
|
|
197
|
-
* To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =
|
|
198
|
-
* false. the value in `env` will override the value in `model`.
|
|
199
|
-
* @param {Object} model - the main model
|
|
200
|
-
* @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)
|
|
201
|
-
* @param {*} session
|
|
202
|
-
* @param {Object} env
|
|
203
|
-
* @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides
|
|
204
|
-
* `model.partialScoring`.
|
|
205
|
-
*/
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
exports.getScore = getScore;
|
|
209
|
-
|
|
210
|
-
function outcome(model, session) {
|
|
211
|
-
var env = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
212
|
-
return new Promise(function (resolve) {
|
|
213
|
-
var partialScoringEnabled = _controllerUtils.partialScoring.enabled(model, env);
|
|
214
|
-
|
|
215
|
-
var score = getScore(model, session);
|
|
216
|
-
resolve({
|
|
217
|
-
score: partialScoringEnabled ? score : score === 1 ? 1 : 0,
|
|
218
|
-
empty: !session || (0, _isEmpty["default"])(session)
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
var createCorrectResponseSession = function createCorrectResponseSession(question, env) {
|
|
224
|
-
return new Promise(function (resolve) {
|
|
225
|
-
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
226
|
-
resolve({
|
|
227
|
-
value: question.correctResponse,
|
|
228
|
-
id: '1'
|
|
229
|
-
});
|
|
230
|
-
} else {
|
|
231
|
-
resolve(null);
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
237
|
-
|
|
238
|
-
var validate = function validate() {
|
|
239
|
-
var _Object$values;
|
|
240
|
-
|
|
241
|
-
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
242
|
-
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
243
|
-
var choices = model.choices,
|
|
244
|
-
correctResponse = model.correctResponse,
|
|
245
|
-
markup = model.markup;
|
|
246
|
-
var _config$minChoices = config.minChoices,
|
|
247
|
-
minChoices = _config$minChoices === void 0 ? 2 : _config$minChoices,
|
|
248
|
-
maxChoices = config.maxChoices,
|
|
249
|
-
maxResponseAreas = config.maxResponseAreas;
|
|
250
|
-
var errors = {};
|
|
251
|
-
var nbOfResponseAreas = ((markup || '').match(/\{\{(\d+)\}\}/g) || []).length;
|
|
252
|
-
var nbOfChoices = (choices || []).length;
|
|
253
|
-
var emptyResponseAreas = (_Object$values = Object.values(correctResponse)) === null || _Object$values === void 0 ? void 0 : _Object$values.filter(function (response) {
|
|
254
|
-
return !response;
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
if (emptyResponseAreas.length) {
|
|
258
|
-
errors.correctResponseError = 'There should be a choice defined for each response area.';
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
if (nbOfResponseAreas > maxResponseAreas) {
|
|
262
|
-
errors.responseAreasError = "No more than ".concat(maxResponseAreas, " response areas should be defined.");
|
|
263
|
-
} else if (nbOfResponseAreas < 1) {
|
|
264
|
-
errors.responseAreasError = 'There should be at least 1 response area defined.';
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
if (nbOfChoices < minChoices) {
|
|
268
|
-
errors.choicesError = "There should be at least ".concat(minChoices, " tokens defined.");
|
|
269
|
-
} else if (nbOfChoices > maxChoices) {
|
|
270
|
-
errors.choicesError = "No more than ".concat(maxChoices, " tokens should be defined.");
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
return errors;
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
exports.validate = validate;
|
|
277
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["normalize","question","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","updateSession","Promise","resolve","normalizedQuestion","feedback","mode","responses","allCorrectResponses","possibleResponses","numberOfPossibleResponses","correctResponses","undefined","value","i","result","obj","choices","key","answer","filter","choice","lockChoiceOrder","out","prompt","disabled","responseCorrect","getScore","role","rationale","teacherInstructions","config","maxScore","Object","keys","correctResponse","length","correctCount","total","str","toFixed","parseFloat","outcome","partialScoringEnabled","partialScoring","enabled","score","empty","createCorrectResponseSession","id","validate","markup","minChoices","maxChoices","maxResponseAreas","errors","nbOfResponseAreas","match","nbOfChoices","emptyResponseAreas","values","response","correctResponseError","responseAreasError","choicesError"],"mappings":"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","sourcesContent":["import reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport { getAllCorrectResponses, choiceIsEmpty } from './utils';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\n\nexport const normalize = (question) => ({\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const responses = getAllCorrectResponses(normalizedQuestion) || {};\n const allCorrectResponses = responses.possibleResponses;\n const numberOfPossibleResponses = responses.numberOfPossibleResponses || 0;\n let correctResponses = undefined;\n const { value } = session || {};\n\n for (let i = 0; i < numberOfPossibleResponses; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n\n obj.feedback[key] = choices[i] === answer;\n\n if (obj.feedback[key]) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (correctResponses === undefined || result.correctResponses > correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === numberOfPossibleResponses) {\n break;\n }\n }\n }\n\n let choices = normalizedQuestion.choices && normalizedQuestion.choices.filter((choice) => !choiceIsEmpty(choice));\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n const out = {\n ...normalizedQuestion,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n choices,\n feedback,\n mode: env.mode,\n disabled: env.mode !== 'gather',\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const responses = getAllCorrectResponses(config);\n const allCorrectResponses = responses.possibleResponses;\n const maxScore = Object.keys(config.correctResponse).length;\n const numberOfPossibleResponses = responses.numberOfPossibleResponses || 0;\n let correctCount = 0;\n const { value } = session || {};\n\n for (let i = 0; i < numberOfPossibleResponses; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n\n if (choices[i] === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = maxScore ? (correctCount / maxScore).toFixed(2) : 0;\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : score === 1 ? 1 : 0,\n empty: !session || isEmpty(session),\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n resolve({\n value: question.correctResponse,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { choices, correctResponse, markup } = model;\n const { minChoices = 2, maxChoices, maxResponseAreas } = config;\n const errors = {};\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n const nbOfChoices = (choices || []).length;\n const emptyResponseAreas = Object.values(correctResponse)?.filter((response) => !response);\n\n if (emptyResponseAreas.length) {\n errors.correctResponseError = 'There should be a choice defined for each response area.';\n }\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} tokens defined.`;\n } else if (nbOfChoices > maxChoices) {\n errors.choicesError = `No more than ${maxChoices} tokens should be defined.`;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/lib/utils.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.getAllCorrectResponses = exports.choiceIsEmpty = void 0;
|
|
9
|
-
|
|
10
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
|
-
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
13
|
-
|
|
14
|
-
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
15
|
-
|
|
16
|
-
var replaceHtmlRegex = /<(?!img)[^>]*>?/gm;
|
|
17
|
-
|
|
18
|
-
var getAllCorrectResponses = function getAllCorrectResponses(_ref) {
|
|
19
|
-
var correctResponse = _ref.correctResponse,
|
|
20
|
-
alternateResponses = _ref.alternateResponses;
|
|
21
|
-
return (0, _reduce["default"])(correctResponse || {}, function (obj, val, key) {
|
|
22
|
-
obj.possibleResponses[key] = [val];
|
|
23
|
-
|
|
24
|
-
if (alternateResponses && alternateResponses[key]) {
|
|
25
|
-
obj.possibleResponses[key] = [].concat((0, _toConsumableArray2["default"])(obj.possibleResponses[key]), (0, _toConsumableArray2["default"])((0, _cloneDeep["default"])(alternateResponses[key])));
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (obj.numberOfPossibleResponses === undefined || obj.numberOfPossibleResponses > obj.possibleResponses[key].length) {
|
|
29
|
-
obj.numberOfPossibleResponses = obj.possibleResponses[key].length;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return obj;
|
|
33
|
-
}, {
|
|
34
|
-
possibleResponses: {},
|
|
35
|
-
numberOfPossibleResponses: undefined
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
exports.getAllCorrectResponses = getAllCorrectResponses;
|
|
40
|
-
|
|
41
|
-
var choiceIsEmpty = function choiceIsEmpty(choice) {
|
|
42
|
-
if (choice) {
|
|
43
|
-
var _choice$value = choice.value,
|
|
44
|
-
value = _choice$value === void 0 ? '' : _choice$value;
|
|
45
|
-
var withoutEmptyTags = value.replace(replaceHtmlRegex, '') || '';
|
|
46
|
-
return withoutEmptyTags.trim() === '';
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return false;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
exports.choiceIsEmpty = choiceIsEmpty;
|
|
53
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.js"],"names":["replaceHtmlRegex","getAllCorrectResponses","correctResponse","alternateResponses","obj","val","key","possibleResponses","numberOfPossibleResponses","undefined","length","choiceIsEmpty","choice","value","withoutEmptyTags","replace","trim"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,gBAAgB,GAAG,mBAAzB;;AAEO,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,OAA6C;AAAA,MAA1CC,eAA0C,QAA1CA,eAA0C;AAAA,MAAzBC,kBAAyB,QAAzBA,kBAAyB;AACjF,SAAO,wBACLD,eAAe,IAAI,EADd,EAEL,UAACE,GAAD,EAAMC,GAAN,EAAWC,GAAX,EAAmB;AACjBF,IAAAA,GAAG,CAACG,iBAAJ,CAAsBD,GAAtB,IAA6B,CAACD,GAAD,CAA7B;;AAEA,QAAIF,kBAAkB,IAAIA,kBAAkB,CAACG,GAAD,CAA5C,EAAmD;AACjDF,MAAAA,GAAG,CAACG,iBAAJ,CAAsBD,GAAtB,kDAAiCF,GAAG,CAACG,iBAAJ,CAAsBD,GAAtB,CAAjC,uCAAgE,2BAAUH,kBAAkB,CAACG,GAAD,CAA5B,CAAhE;AACD;;AAED,QACEF,GAAG,CAACI,yBAAJ,KAAkCC,SAAlC,IACAL,GAAG,CAACI,yBAAJ,GAAgCJ,GAAG,CAACG,iBAAJ,CAAsBD,GAAtB,EAA2BI,MAF7D,EAGE;AACAN,MAAAA,GAAG,CAACI,yBAAJ,GAAgCJ,GAAG,CAACG,iBAAJ,CAAsBD,GAAtB,EAA2BI,MAA3D;AACD;;AAED,WAAON,GAAP;AACD,GAjBI,EAkBL;AACEG,IAAAA,iBAAiB,EAAE,EADrB;AAEEC,IAAAA,yBAAyB,EAAEC;AAF7B,GAlBK,CAAP;AAuBD,CAxBM;;;;AA0BA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACC,MAAD,EAAY;AACvC,MAAIA,MAAJ,EAAY;AACV,wBAAuBA,MAAvB,CAAQC,KAAR;AAAA,QAAQA,KAAR,8BAAgB,EAAhB;AACA,QAAMC,gBAAgB,GAAGD,KAAK,CAACE,OAAN,CAAcf,gBAAd,EAAgC,EAAhC,KAAuC,EAAhE;AAEA,WAAOc,gBAAgB,CAACE,IAAjB,OAA4B,EAAnC;AACD;;AAED,SAAO,KAAP;AACD,CATM","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport reduce from 'lodash/reduce';\n\nconst replaceHtmlRegex = /<(?!img)[^>]*>?/gm;\n\nexport const getAllCorrectResponses = ({ correctResponse, alternateResponses }) => {\n return reduce(\n correctResponse || {},\n (obj, val, key) => {\n obj.possibleResponses[key] = [val];\n\n if (alternateResponses && alternateResponses[key]) {\n obj.possibleResponses[key] = [...obj.possibleResponses[key], ...cloneDeep(alternateResponses[key])];\n }\n\n if (\n obj.numberOfPossibleResponses === undefined ||\n obj.numberOfPossibleResponses > obj.possibleResponses[key].length\n ) {\n obj.numberOfPossibleResponses = obj.possibleResponses[key].length;\n }\n\n return obj;\n },\n {\n possibleResponses: {},\n numberOfPossibleResponses: undefined,\n },\n );\n};\n\nexport const choiceIsEmpty = (choice) => {\n if (choice) {\n const { value = '' } = choice;\n const withoutEmptyTags = value.replace(replaceHtmlRegex, '') || '';\n\n return withoutEmptyTags.trim() === '';\n }\n\n return false;\n};\n"],"file":"utils.js"}
|
package/lib/index.js
DELETED
|
@@ -1,106 +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 _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 _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
23
|
-
|
|
24
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
|
-
var _react = _interopRequireDefault(require("react"));
|
|
27
|
-
|
|
28
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
29
|
-
|
|
30
|
-
var _mathRendering = require("@pie-lib/math-rendering");
|
|
31
|
-
|
|
32
|
-
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
33
|
-
|
|
34
|
-
var _main = _interopRequireDefault(require("./main"));
|
|
35
|
-
|
|
36
|
-
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); }; }
|
|
37
|
-
|
|
38
|
-
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; } }
|
|
39
|
-
|
|
40
|
-
var InlineDropdown = /*#__PURE__*/function (_HTMLElement) {
|
|
41
|
-
(0, _inherits2["default"])(InlineDropdown, _HTMLElement);
|
|
42
|
-
|
|
43
|
-
var _super = _createSuper(InlineDropdown);
|
|
44
|
-
|
|
45
|
-
function InlineDropdown() {
|
|
46
|
-
var _this;
|
|
47
|
-
|
|
48
|
-
(0, _classCallCheck2["default"])(this, InlineDropdown);
|
|
49
|
-
_this = _super.call(this);
|
|
50
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_render", function () {
|
|
51
|
-
if (_this._model && _this._session) {
|
|
52
|
-
var elem = /*#__PURE__*/_react["default"].createElement(_main["default"], {
|
|
53
|
-
model: _this._model,
|
|
54
|
-
value: _this._session.value,
|
|
55
|
-
onChange: _this.changeSession
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
_reactDom["default"].render(elem, (0, _assertThisInitialized2["default"])(_this), function () {
|
|
59
|
-
(0, _mathRendering.renderMath)((0, _assertThisInitialized2["default"])(_this));
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dispatchChangedEvent", function () {
|
|
64
|
-
_this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(_this.tagName.toLowerCase(), _this.session && !!_this.session.value));
|
|
65
|
-
});
|
|
66
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeSession", function (value) {
|
|
67
|
-
_this.session.value = value;
|
|
68
|
-
|
|
69
|
-
_this.dispatchChangedEvent();
|
|
70
|
-
|
|
71
|
-
_this._render();
|
|
72
|
-
});
|
|
73
|
-
_this._model = null;
|
|
74
|
-
_this._session = null;
|
|
75
|
-
return _this;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
(0, _createClass2["default"])(InlineDropdown, [{
|
|
79
|
-
key: "model",
|
|
80
|
-
set: function set(m) {
|
|
81
|
-
this._model = m;
|
|
82
|
-
this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model));
|
|
83
|
-
|
|
84
|
-
this._render();
|
|
85
|
-
}
|
|
86
|
-
}, {
|
|
87
|
-
key: "session",
|
|
88
|
-
get: function get() {
|
|
89
|
-
return this._session;
|
|
90
|
-
},
|
|
91
|
-
set: function set(s) {
|
|
92
|
-
this._session = s;
|
|
93
|
-
|
|
94
|
-
this._render();
|
|
95
|
-
}
|
|
96
|
-
}, {
|
|
97
|
-
key: "connectedCallback",
|
|
98
|
-
value: function connectedCallback() {
|
|
99
|
-
this._render();
|
|
100
|
-
}
|
|
101
|
-
}]);
|
|
102
|
-
return InlineDropdown;
|
|
103
|
-
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
104
|
-
|
|
105
|
-
exports["default"] = InlineDropdown;
|
|
106
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["InlineDropdown","_model","_session","elem","React","createElement","Main","model","value","onChange","changeSession","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEqBA,c;;;;;AACnB,4BAAc;AAAA;;AAAA;AACZ;AADY,gGAwBJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACnCC,UAAAA,KAAK,EAAE,MAAKN,MADuB;AAEnCO,UAAAA,KAAK,EAAE,MAAKN,QAAL,CAAcM,KAFc;AAGnCC,UAAAA,QAAQ,EAAE,MAAKC;AAHoB,SAA1B,CAAX;;AAMAC,6BAASC,MAAT,CAAgBT,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KApCa;AAAA,6GAsCS,YAAM;AAC3B,YAAKU,aAAL,CAAmB,IAAIC,oCAAJ,CAAwB,MAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoD,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaT,KAAnF,CAAnB;AACD,KAxCa;AAAA,sGA0CE,UAACA,KAAD,EAAW;AACzB,YAAKS,OAAL,CAAaT,KAAb,GAAqBA,KAArB;;AACA,YAAKU,oBAAL;;AACA,YAAKC,OAAL;AACD,KA9Ca;AAEZ,UAAKlB,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SAED,aAAUkB,CAAV,EAAa;AACX,WAAKnB,MAAL,GAAcmB,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CAAkB,KAAKN,OAAL,CAAaC,WAAb,EAAlB,EAA8C,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaT,KAA7E,EAAoF,CAAC,CAAC,KAAKP,MAA3F,CADF;;AAIA,WAAKkB,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKjB,QAAZ;AACD,K;SAPD,aAAYoB,CAAZ,EAAe;AACb,WAAKpB,QAAL,GAAgBoB,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WA8BD,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;kDAnDyCI,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport Main from './main';\n\nexport default class InlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model),\n );\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(Main, {\n model: this._model,\n value: this._session.value,\n onChange: this.changeSession,\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.session && !!this.session.value));\n };\n\n changeSession = (value) => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this._render();\n }\n}\n"],"file":"index.js"}
|
package/lib/main.js
DELETED
|
@@ -1,156 +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.Main = void 0;
|
|
9
|
-
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
24
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
|
-
var _react = _interopRequireDefault(require("react"));
|
|
27
|
-
|
|
28
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
29
|
-
|
|
30
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
|
-
|
|
32
|
-
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
33
|
-
|
|
34
|
-
var _maskMarkup = require("@pie-lib/mask-markup");
|
|
35
|
-
|
|
36
|
-
var _drag = require("@pie-lib/drag");
|
|
37
|
-
|
|
38
|
-
var _renderUi = require("@pie-lib/render-ui");
|
|
39
|
-
|
|
40
|
-
var _mathRendering = require("@pie-lib/math-rendering");
|
|
41
|
-
|
|
42
|
-
var _styles = require("@material-ui/core/styles");
|
|
43
|
-
|
|
44
|
-
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; }
|
|
45
|
-
|
|
46
|
-
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; }
|
|
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 DraggableDragInTheBlank = (0, _drag.withDragContext)(_maskMarkup.DragInTheBlank);
|
|
53
|
-
|
|
54
|
-
var Main = /*#__PURE__*/function (_React$Component) {
|
|
55
|
-
(0, _inherits2["default"])(Main, _React$Component);
|
|
56
|
-
|
|
57
|
-
var _super = _createSuper(Main);
|
|
58
|
-
|
|
59
|
-
function Main() {
|
|
60
|
-
var _this;
|
|
61
|
-
|
|
62
|
-
(0, _classCallCheck2["default"])(this, Main);
|
|
63
|
-
|
|
64
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
65
|
-
args[_key] = arguments[_key];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
69
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
70
|
-
showCorrectAnswer: false
|
|
71
|
-
});
|
|
72
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShowCorrect", function () {
|
|
73
|
-
_this.setState({
|
|
74
|
-
showCorrectAnswer: !_this.state.showCorrectAnswer
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
return _this;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
(0, _createClass2["default"])(Main, [{
|
|
81
|
-
key: "render",
|
|
82
|
-
value: function render() {
|
|
83
|
-
var showCorrectAnswer = this.state.showCorrectAnswer;
|
|
84
|
-
var _this$props = this.props,
|
|
85
|
-
model = _this$props.model,
|
|
86
|
-
onChange = _this$props.onChange,
|
|
87
|
-
value = _this$props.value,
|
|
88
|
-
classes = _this$props.classes;
|
|
89
|
-
var prompt = model.prompt,
|
|
90
|
-
mode = model.mode;
|
|
91
|
-
|
|
92
|
-
var modelWithValue = _objectSpread(_objectSpread({}, model), {}, {
|
|
93
|
-
value: value
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
var showCorrectAnswerToggle = mode === 'evaluate';
|
|
97
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
98
|
-
className: classes.mainContainer
|
|
99
|
-
}, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
100
|
-
labels: {
|
|
101
|
-
hidden: 'Show Teacher Instructions',
|
|
102
|
-
visible: 'Hide Teacher Instructions'
|
|
103
|
-
}
|
|
104
|
-
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
105
|
-
prompt: model.teacherInstructions
|
|
106
|
-
})), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
107
|
-
show: showCorrectAnswerToggle,
|
|
108
|
-
toggled: showCorrectAnswer,
|
|
109
|
-
onToggle: this.toggleShowCorrect
|
|
110
|
-
}), showCorrectAnswerToggle && /*#__PURE__*/_react["default"].createElement("br", null), prompt && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
111
|
-
prompt: prompt
|
|
112
|
-
}), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(DraggableDragInTheBlank, (0, _extends2["default"])({}, modelWithValue, {
|
|
113
|
-
onChange: onChange,
|
|
114
|
-
showCorrectAnswer: showCorrectAnswer
|
|
115
|
-
})), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
116
|
-
labels: {
|
|
117
|
-
hidden: 'Show Rationale',
|
|
118
|
-
visible: 'Hide Rationale'
|
|
119
|
-
}
|
|
120
|
-
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
121
|
-
prompt: model.rationale
|
|
122
|
-
})), /*#__PURE__*/_react["default"].createElement("br", null)));
|
|
123
|
-
}
|
|
124
|
-
}]);
|
|
125
|
-
return Main;
|
|
126
|
-
}(_react["default"].Component);
|
|
127
|
-
|
|
128
|
-
exports.Main = Main;
|
|
129
|
-
(0, _defineProperty2["default"])(Main, "propTypes", {
|
|
130
|
-
classes: _propTypes["default"].object,
|
|
131
|
-
model: _propTypes["default"].object,
|
|
132
|
-
value: _propTypes["default"].object,
|
|
133
|
-
feedback: _propTypes["default"].object,
|
|
134
|
-
onChange: _propTypes["default"].func
|
|
135
|
-
});
|
|
136
|
-
(0, _defineProperty2["default"])(Main, "defaultProps", {
|
|
137
|
-
value: {}
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
var styles = function styles(theme) {
|
|
141
|
-
return {
|
|
142
|
-
mainContainer: {
|
|
143
|
-
padding: theme.spacing.unit,
|
|
144
|
-
color: _renderUi.color.text(),
|
|
145
|
-
backgroundColor: _renderUi.color.background(),
|
|
146
|
-
'& tr > td': {
|
|
147
|
-
color: _renderUi.color.text()
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
var _default = (0, _styles.withStyles)(styles)(Main);
|
|
154
|
-
|
|
155
|
-
exports["default"] = _default;
|
|
156
|
-
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.js"],"names":["DraggableDragInTheBlank","DragInTheBlank","Main","showCorrectAnswer","setState","state","props","model","onChange","value","classes","prompt","mode","modelWithValue","showCorrectAnswerToggle","mainContainer","teacherInstructions","hidden","visible","toggleShowCorrect","rationale","React","Component","PropTypes","object","feedback","func","styles","theme","padding","spacing","unit","color","text","backgroundColor","background"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { DragInTheBlank } from '@pie-lib/mask-markup';\nimport { withDragContext } from '@pie-lib/drag';\nimport { color, Collapsible, hasText, PreviewPrompt } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst DraggableDragInTheBlank = withDragContext(DragInTheBlank);\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: false,\n };\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { model, onChange, value, classes } = this.props;\n const { prompt, mode } = model;\n const modelWithValue = {\n ...model,\n value,\n };\n const showCorrectAnswerToggle = mode === 'evaluate';\n\n return (\n <div className={classes.mainContainer}>\n {model.teacherInstructions && hasText(model.teacherInstructions) && (\n <React.Fragment>\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n <br />\n </React.Fragment>\n )}\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n {showCorrectAnswerToggle && <br />}\n {prompt && (\n <React.Fragment>\n <PreviewPrompt prompt={prompt} />\n <br />\n </React.Fragment>\n )}\n <DraggableDragInTheBlank {...modelWithValue} onChange={onChange} showCorrectAnswer={showCorrectAnswer} />\n {model.rationale && hasText(model.rationale) && (\n <React.Fragment>\n <br />\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n <br />\n </React.Fragment>\n )}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background(),\n '& tr > td': {\n color: color.text(),\n },\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|