@pie-element/inline-dropdown 7.0.0 → 8.0.0-hotfix.2
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 +21 -0
- package/configure/CHANGELOG.md +8 -0
- package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +124 -0
- package/configure/lib/__tests__/main.test.js +516 -0
- package/configure/lib/__tests__/markupUtils.test.js +108 -0
- package/configure/lib/index.js +2 -0
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/inline-dropdown-toolbar.js +2 -2
- package/configure/lib/inline-dropdown-toolbar.js.map +1 -1
- package/configure/lib/main.js +2 -2
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/math-rendering-provider.js +26 -0
- package/configure/lib/math-rendering-provider.js.map +1 -0
- package/configure/lib/response-area.js +2 -2
- package/configure/lib/response-area.js.map +1 -1
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +8 -0
- package/controller/lib/__tests__/index.test.js +950 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +41 -13
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +1 -1
- package/controller/package.json +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/inline-dropdown.test.js +121 -0
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/inline-dropdown.js +2 -2
- package/lib/inline-dropdown.js.map +1 -1
- package/lib/math-rendering-provider.js +26 -0
- package/lib/math-rendering-provider.js.map +1 -0
- package/package.json +3 -3
- package/LICENSE.md +0 -5
|
@@ -23,4 +23,4 @@ var _default = {
|
|
|
23
23
|
toolbarEditorPosition: 'bottom'
|
|
24
24
|
};
|
|
25
25
|
exports["default"] = _default;
|
|
26
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0cy5qcyJdLCJuYW1lcyI6WyJhbHRlcm5hdGVSZXNwb25zZSIsImNob2ljZVJhdGlvbmFsZUVuYWJsZWQiLCJjaG9pY2VzIiwiZGlzYWJsZWQiLCJkaXNwbGF5VHlwZSIsIm1hcmt1cCIsIm1vZGUiLCJwcm9tcHQiLCJwcm9tcHRFbmFibGVkIiwicmF0aW9uYWxlIiwicmF0aW9uYWxlRW5hYmxlZCIsInNodWZmbGUiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInRvb2xiYXJFZGl0b3JQb3NpdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQWU7QUFDYkEsRUFBQUEsaUJBQWlCLEVBQUUsRUFETjtBQUViQyxFQUFBQSxzQkFBc0IsRUFBRSxJQUZYO0FBR2JDLEVBQUFBLE9BQU8sRUFBRSxFQUhJO0FBSWJDLEVBQUFBLFFBQVEsRUFBRSxLQUpHO0FBS2JDLEVBQUFBLFdBQVcsRUFBRSxPQUxBO0FBTWJDLEVBQUFBLE1BQU0sRUFBRSxFQU5LO0FBT2JDLEVBQUFBLElBQUksRUFBRSxRQVBPO0FBUWJDLEVBQUFBLE1BQU0sRUFBRSxFQVJLO0FBU2JDLEVBQUFBLGFBQWEsRUFBRSxJQVRGO0FBVWJDLEVBQUFBLFNBQVMsRUFBRSxFQVZFO0FBV2JDLEVBQUFBLGdCQUFnQixFQUFFLElBWEw7QUFZYkMsRUFBQUEsT0FBTyxFQUFFLElBWkk7QUFhYkMsRUFBQUEsMEJBQTBCLEVBQUUsSUFiZjtBQWNiQyxFQUFBQSxtQkFBbUIsRUFBRSxFQWRSO0FBZWJDLEVBQUFBLDBCQUEwQixFQUFFLElBZmY7QUFnQmJDLEVBQUFBLHFCQUFxQixFQUFFO0FBaEJWLEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGFsdGVybmF0ZVJlc3BvbnNlOiB7fSxcbiAgY2hvaWNlUmF0aW9uYWxlRW5hYmxlZDogdHJ1ZSxcbiAgY2hvaWNlczoge30sXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZGlzcGxheVR5cGU6ICdibG9jaycsXG4gIG1hcmt1cDogJycsXG4gIG1vZGU6ICdnYXRoZXInLFxuICBwcm9tcHQ6ICcnLFxuICBwcm9tcHRFbmFibGVkOiB0cnVlLFxuICByYXRpb25hbGU6ICcnLFxuICByYXRpb25hbGVFbmFibGVkOiB0cnVlLFxuICBzaHVmZmxlOiB0cnVlLFxuICBzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgdGVhY2hlckluc3RydWN0aW9uczogJycsXG4gIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkOiB0cnVlLFxuICB0b29sYmFyRWRpdG9yUG9zaXRpb246ICdib3R0b20nLFxufTtcbiJdfQ==
|
package/controller/lib/index.js
CHANGED
|
@@ -58,7 +58,7 @@ exports.normalize = normalize;
|
|
|
58
58
|
function model(question, session, env, updateSession) {
|
|
59
59
|
return new Promise( /*#__PURE__*/function () {
|
|
60
60
|
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve) {
|
|
61
|
-
var normalizedQuestion, _ref2, _ref2$value, value, choices, feedback, allCorrectResponses, respAreaLength, correctResponses, _loop, i, _ret, lockChoiceOrder, keys, _i, key, teacherInstructions, rationale, choicesWillNullRationales, out;
|
|
61
|
+
var normalizedQuestion, _ref2, _ref2$value, value, choices, feedback, allCorrectResponses, respAreaLength, correctResponses, _loop, i, _ret, lockChoiceOrder, shuffledValues, keys, us, _i, _session$shuffledValu, key, storedValues, teacherInstructions, rationale, choicesWillNullRationales, out;
|
|
62
62
|
|
|
63
63
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
64
64
|
while (1) {
|
|
@@ -136,32 +136,60 @@ function model(question, session, env, updateSession) {
|
|
|
136
136
|
lockChoiceOrder = (0, _controllerUtils.lockChoices)(normalizedQuestion, session, env);
|
|
137
137
|
|
|
138
138
|
if (lockChoiceOrder) {
|
|
139
|
-
_context.next =
|
|
139
|
+
_context.next = 33;
|
|
140
140
|
break;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
shuffledValues = {};
|
|
143
144
|
keys = Object.keys(choices);
|
|
145
|
+
|
|
146
|
+
us = function us(part) {
|
|
147
|
+
return function (id, element, update) {
|
|
148
|
+
return new Promise(function (resolve) {
|
|
149
|
+
shuffledValues[part] = update.shuffledValues;
|
|
150
|
+
resolve();
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
|
|
144
155
|
_i = 0;
|
|
145
156
|
|
|
146
|
-
case
|
|
157
|
+
case 23:
|
|
147
158
|
if (!(_i < keys.length)) {
|
|
148
|
-
_context.next =
|
|
159
|
+
_context.next = 32;
|
|
149
160
|
break;
|
|
150
161
|
}
|
|
151
162
|
|
|
152
163
|
key = keys[_i];
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
164
|
+
storedValues = session === null || session === void 0 ? void 0 : (_session$shuffledValu = session.shuffledValues) === null || _session$shuffledValu === void 0 ? void 0 : _session$shuffledValu[key];
|
|
165
|
+
_context.next = 28;
|
|
166
|
+
return (0, _controllerUtils.getShuffledChoices)(choices[key], // the shuffledValues structure was updated to an object like { choice_key: [] }
|
|
167
|
+
// and we need to override shuffledValues if it's not an array
|
|
168
|
+
{
|
|
169
|
+
shuffledValues: Array.isArray(storedValues) ? storedValues : []
|
|
170
|
+
}, us(key), 'value');
|
|
171
|
+
|
|
172
|
+
case 28:
|
|
157
173
|
choices[key] = _context.sent;
|
|
158
174
|
|
|
159
|
-
case
|
|
175
|
+
case 29:
|
|
160
176
|
_i++;
|
|
161
|
-
_context.next =
|
|
177
|
+
_context.next = 23;
|
|
162
178
|
break;
|
|
163
179
|
|
|
164
|
-
case
|
|
180
|
+
case 32:
|
|
181
|
+
if (!(0, _isEmpty["default"])(shuffledValues)) {
|
|
182
|
+
if (session && updateSession && typeof updateSession === 'function') {
|
|
183
|
+
updateSession(session.id, session.element, {
|
|
184
|
+
shuffledValues: shuffledValues
|
|
185
|
+
})["catch"](function (e) {
|
|
186
|
+
// eslint-disable-next-line no-console
|
|
187
|
+
console.error('update session failed', e);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
case 33:
|
|
165
193
|
teacherInstructions = null;
|
|
166
194
|
rationale = null;
|
|
167
195
|
choicesWillNullRationales = (Object.keys(choices) || []).reduce(function (acc, currentValue) {
|
|
@@ -199,7 +227,7 @@ function model(question, session, env, updateSession) {
|
|
|
199
227
|
};
|
|
200
228
|
resolve(out);
|
|
201
229
|
|
|
202
|
-
case
|
|
230
|
+
case 39:
|
|
203
231
|
case "end":
|
|
204
232
|
return _context.stop();
|
|
205
233
|
}
|
|
@@ -357,4 +385,4 @@ var validate = function validate() {
|
|
|
357
385
|
};
|
|
358
386
|
|
|
359
387
|
exports.validate = validate;
|
|
360
|
-
//# sourceMappingURL=index.js.map
|
|
388
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZXRGZWVkYmFjayIsImNvcnJlY3QiLCJub3JtYWxpemUiLCJxdWVzdGlvbiIsImRlZmF1bHRzIiwibW9kZWwiLCJzZXNzaW9uIiwiZW52IiwidXBkYXRlU2Vzc2lvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwibm9ybWFsaXplZFF1ZXN0aW9uIiwidmFsdWUiLCJjaG9pY2VzIiwib2JqIiwiYXJlYSIsImtleSIsImNob2ljZSIsImZlZWRiYWNrIiwibW9kZSIsImFsbENvcnJlY3RSZXNwb25zZXMiLCJyZXNwQXJlYUxlbmd0aCIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJjb3JyZWN0UmVzcG9uc2VzIiwiaSIsInJlc3VsdCIsImFuc3dlciIsImNvcnJlY3RDaG9pY2UiLCJpc0NvcnJlY3QiLCJsb2NrQ2hvaWNlT3JkZXIiLCJzaHVmZmxlZFZhbHVlcyIsInVzIiwicGFydCIsImlkIiwiZWxlbWVudCIsInVwZGF0ZSIsInN0b3JlZFZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwicmF0aW9uYWxlIiwiY2hvaWNlc1dpbGxOdWxsUmF0aW9uYWxlcyIsInJlZHVjZSIsImFjYyIsImN1cnJlbnRWYWx1ZSIsIm1hcCIsInJvbGUiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJjaG9pY2VSYXRpb25hbGVFbmFibGVkIiwib3V0IiwiZGlzYWJsZWQiLCJwcm9tcHQiLCJwcm9tcHRFbmFibGVkIiwiZGlzcGxheVR5cGUiLCJtYXJrdXAiLCJyZXNwb25zZUNvcnJlY3QiLCJnZXRTY29yZSIsInVuZGVmaW5lZCIsImxhbmd1YWdlIiwiZXh0cmFDU1NSdWxlcyIsImNvbmZpZyIsIm1heFNjb3JlIiwiY29ycmVjdENvdW50IiwidG90YWwiLCJzdHIiLCJ0b0ZpeGVkIiwicGFyc2VGbG9hdCIsIm91dGNvbWUiLCJzY29yZSIsImVtcHR5IiwicGFydGlhbFNjb3JpbmdFbmFibGVkIiwicGFydGlhbFNjb3JpbmciLCJlbmFibGVkIiwiTWF0aCIsImZsb29yIiwiY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiIsImZvckVhY2giLCJjb3JyZWN0Q2hvaWNlcyIsImZpbHRlciIsImMiLCJnZXRJbm5lclRleHQiLCJodG1sIiwicmVwbGFjZUFsbCIsImdldENvbnRlbnQiLCJyZXBsYWNlIiwidmFsaWRhdGUiLCJtYXhSZXNwb25zZUFyZWFzIiwibWF4UmVzcG9uc2VBcmVhQ2hvaWNlcyIsImVycm9ycyIsImZpZWxkIiwicmVxdWlyZWQiLCJuYk9mUmVzcG9uc2VBcmVhcyIsIm1hdGNoIiwicmVzcG9uc2VBcmVhc0Vycm9yIiwiY2hvaWNlS2V5IiwicmVzcG9uc2VBcmVhQ2hvaWNlc0Vycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBLElBQU1BLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUNDLE9BQUQsRUFBYTtBQUMvQixNQUFJQSxPQUFKLEVBQWE7QUFDWCxXQUFPLFNBQVA7QUFDRDs7QUFFRCxTQUFPLFdBQVA7QUFDRCxDQU5EOztBQVFPLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNDLFFBQUQ7QUFBQSx5Q0FBb0JDLG9CQUFwQixHQUFpQ0QsUUFBakM7QUFBQSxDQUFsQjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLFNBQVNFLEtBQVQsQ0FBZUYsUUFBZixFQUF5QkcsT0FBekIsRUFBa0NDLEdBQWxDLEVBQXVDQyxhQUF2QyxFQUFzRDtBQUMzRCxTQUFPLElBQUlDLE9BQUo7QUFBQSw2RkFBWSxpQkFBT0MsT0FBUDtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1hDLGNBQUFBLGtCQURXLEdBQ1VULFNBQVMsQ0FBQ0MsUUFBRCxDQURuQjtBQUFBLHNC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RCxDQUFQLElBQXNCdkYsT0FBTyxDQUFDdUYsU0FBRCxDQUFQLENBQW1CNUUsTUFBbkIsR0FBNEJxRSxzQkFBdEQsRUFBOEU7QUFDNUVDLE1BQUFBLE1BQU0sQ0FBQ08sd0JBQVAsMEJBQWtEUixzQkFBbEQ7QUFDRDtBQUNGLEdBSkQ7QUFNQSxTQUFPQyxNQUFQO0FBQ0QsQ0ExQk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuaW1wb3J0IHJlZHVjZSBmcm9tICdsb2Rhc2gvcmVkdWNlJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCB7IGxvY2tDaG9pY2VzLCBnZXRTaHVmZmxlZENob2ljZXMsIHBhcnRpYWxTY29yaW5nIH0gZnJvbSAnQHBpZS1saWIvY29udHJvbGxlci11dGlscyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmltcG9ydCB7IGdldEFsbENvcnJlY3RSZXNwb25zZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgZ2V0RmVlZGJhY2sgPSAoY29ycmVjdCkgPT4ge1xuICBpZiAoY29ycmVjdCkge1xuICAgIHJldHVybiAnY29ycmVjdCc7XG4gIH1cblxuICByZXR1cm4gJ2luY29ycmVjdCc7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gKHF1ZXN0aW9uKSA9PiAoeyAuLi5kZWZhdWx0cywgLi4ucXVlc3Rpb24gfSk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7Kn0gcXVlc3Rpb25cbiAqIEBwYXJhbSB7Kn0gc2Vzc2lvblxuICogQHBhcmFtIHsqfSBlbnZcbiAqIEBwYXJhbSB7Kn0gdXBkYXRlU2Vzc2lvbiAtIG9wdGlvbmFsIC0gYSBmdW5jdGlvbiB0aGF0IHdpbGwgc2V0IHRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIGl0IG9uIHRoZSBzZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWwocXVlc3Rpb24sIHNlc3Npb24sIGVudiwgdXBkYXRlU2Vzc2lvbikge1xuICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlc3Rpb24gPSBub3JtYWxpemUocXVlc3Rpb24pO1xuICAgIGNvbnN0IHsgdmFsdWUgPSB7fSB9ID0gc2Vzc2lvbiB8fCB7fTtcbiAgICBsZXQgY2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VzLFxuICAgICAgKG9iaiwgYXJlYSwga2V5KSA9PiB7XG4gICAgICAgIG9ialtrZXldID0gbWFwKGFyZWEsIChjaG9pY2UpID0+IGNob2ljZSk7XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApO1xuXG4gICAgbGV0IGZlZWRiYWNrID0ge307XG5cbiAgICBpZiAoZW52Lm1vZGUgPT09ICdldmFsdWF0ZScpIHtcbiAgICAgIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKG5vcm1hbGl6ZWRRdWVzdGlvbik7XG4gICAgICBjb25zdCByZXNwQXJlYUxlbmd0aCA9IE9iamVjdC5rZXlzKGFsbENvcnJlY3RSZXNwb25zZXMpLmxlbmd0aDtcbiAgICAgIGxldCBjb3JyZWN0UmVzcG9uc2VzID0gMDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwQXJlYUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgICAgICBhbGxDb3JyZWN0UmVzcG9uc2VzLFxuICAgICAgICAgIChvYmosIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5zd2VyID0gKHZhbHVlICYmIHZhbHVlW2tleV0pIHx8ICcnO1xuICAgICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZSA9IGNob2ljZXNbaV0gfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBpc0NvcnJlY3QgPSBhbnN3ZXIgJiYgY29ycmVjdENob2ljZSAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXI7XG5cbiAgICAgICAgICAgIG9iai5mZWVkYmFja1trZXldID0gZ2V0RmVlZGJhY2soaXNDb3JyZWN0KTtcblxuICAgICAgICAgICAgaWYgKGlzQ29ycmVjdCkge1xuICAgICAgICAgICAgICBvYmouY29ycmVjdFJlc3BvbnNlcyArPSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjb3JyZWN0UmVzcG9uc2VzOiAwLCBmZWVkYmFjazoge30gfSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocmVzdWx0LmNvcnJlY3RSZXNwb25zZXMgPj0gY29ycmVjdFJlc3BvbnNlcykge1xuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZXMgPSByZXN1bHQuY29ycmVjdFJlc3BvbnNlcztcbiAgICAgICAgICBmZWVkYmFjayA9IHJlc3VsdC5mZWVkYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuY29ycmVjdFJlc3BvbnNlcyA9PT0gcmVzcEFyZWFMZW5ndGgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2tDaG9pY2VPcmRlciA9IGxvY2tDaG9pY2VzKG5vcm1hbGl6ZWRRdWVzdGlvbiwgc2Vzc2lvbiwgZW52KTtcblxuICAgIGlmICghbG9ja0Nob2ljZU9yZGVyKSB7XG4gICAgICBjb25zdCBzaHVmZmxlZFZhbHVlcyA9IHt9O1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNob2ljZXMpO1xuXG4gICAgICBjb25zdCB1cyA9IChwYXJ0KSA9PiAoaWQsIGVsZW1lbnQsIHVwZGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICBzaHVmZmxlZFZhbHVlc1twYXJ0XSA9IHVwZGF0ZS5zaHVmZmxlZFZhbHVlcztcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgbGV0IGk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICAgIGNvbnN0IHN0b3JlZFZhbHVlcyA9IHNlc3Npb24/LnNodWZmbGVkVmFsdWVzPy5ba2V5XTtcblxuICAgICAgICBjaG9pY2VzW2tleV0gPSBhd2FpdCBnZXRTaHVmZmxlZENob2ljZXMoXG4gICAgICAgICAgY2hvaWNlc1trZXldLFxuICAgICAgICAgIC8vIHRoZSBzaHVmZmxlZFZhbHVlcyBzdHJ1Y3R1cmUgd2FzIHVwZGF0ZWQgdG8gYW4gb2JqZWN0IGxpa2UgeyBjaG9pY2Vfa2V5OiBbXSB9XG4gICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gb3ZlcnJpZGUgc2h1ZmZsZWRWYWx1ZXMgaWYgaXQncyBub3QgYW4gYXJyYXlcbiAgICAgICAgICB7IHNodWZmbGVkVmFsdWVzOiBBcnJheS5pc0FycmF5KHN0b3JlZFZhbHVlcykgPyBzdG9yZWRWYWx1ZXMgOiBbXSB9LFxuICAgICAgICAgIHVzKGtleSksXG4gICAgICAgICAgJ3ZhbHVlJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0VtcHR5KHNodWZmbGVkVmFsdWVzKSkge1xuICAgICAgICBpZiAoc2Vzc2lvbiAmJiB1cGRhdGVTZXNzaW9uICYmIHR5cGVvZiB1cGRhdGVTZXNzaW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdXBkYXRlU2Vzc2lvbihzZXNzaW9uLmlkLCBzZXNzaW9uLmVsZW1lbnQsIHtcbiAgICAgICAgICAgIHNodWZmbGVkVmFsdWVzLFxuICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcigndXBkYXRlIHNlc3Npb24gZmFpbGVkJywgZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdGVhY2hlckluc3RydWN0aW9ucyA9IG51bGw7XG4gICAgbGV0IHJhdGlvbmFsZSA9IG51bGw7XG5cbiAgICBjb25zdCBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzID0gKE9iamVjdC5rZXlzKGNob2ljZXMpIHx8IFtdKS5yZWR1Y2UoKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICBhY2NbY3VycmVudFZhbHVlXSA9IChjaG9pY2VzW2N1cnJlbnRWYWx1ZV0gfHwgW10pLm1hcCgoY2hvaWNlKSA9PiAoe1xuICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgIHJhdGlvbmFsZTogbnVsbCxcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG5cbiAgICBpZiAoZW52LnJvbGUgPT09ICdpbnN0cnVjdG9yJyAmJiAoZW52Lm1vZGUgPT09ICd2aWV3JyB8fCBlbnYubW9kZSA9PT0gJ2V2YWx1YXRlJykpIHtcbiAgICAgIHJhdGlvbmFsZSA9IG5vcm1hbGl6ZWRRdWVzdGlvbi5yYXRpb25hbGVFbmFibGVkID8gbm9ybWFsaXplZFF1ZXN0aW9uLnJhdGlvbmFsZSA6IG51bGw7XG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNcbiAgICAgICAgOiBudWxsO1xuXG4gICAgICBjaG9pY2VzID0gbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZVJhdGlvbmFsZUVuYWJsZWQgPyBub3JtYWxpemVkUXVlc3Rpb24uY2hvaWNlcyA6IGNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvbmFsZSA9IG51bGw7XG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbnVsbDtcbiAgICAgIGNob2ljZXMgPSBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzO1xuICAgIH1cblxuICAgIGNvbnN0IG91dCA9IHtcbiAgICAgIGRpc2FibGVkOiBlbnYubW9kZSAhPT0gJ2dhdGhlcicsXG4gICAgICBtb2RlOiBlbnYubW9kZSxcbiAgICAgIHByb21wdDogbm9ybWFsaXplZFF1ZXN0aW9uLnByb21wdEVuYWJsZWQgPyBub3JtYWxpemVkUXVlc3Rpb24ucHJvbXB0IDogbnVsbCxcbiAgICAgIGRpc3BsYXlUeXBlOiBub3JtYWxpemVkUXVlc3Rpb24uZGlzcGxheVR5cGUsXG4gICAgICBtYXJrdXA6IG5vcm1hbGl6ZWRRdWVzdGlvbi5tYXJrdXAsXG4gICAgICBjaG9pY2VzLFxuICAgICAgZmVlZGJhY2ssXG5cbiAgICAgIHJlc3BvbnNlQ29ycmVjdDogZW52Lm1vZGUgPT09ICdldmFsdWF0ZScgPyBnZXRTY29yZShub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24pID09PSAxIDogdW5kZWZpbmVkLFxuICAgICAgcmF0aW9uYWxlLFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyxcbiAgICAgIGxhbmd1YWdlOiBub3JtYWxpemVkUXVlc3Rpb24ubGFuZ3VhZ2UsXG4gICAgICBleHRyYUNTU1J1bGVzOiBub3JtYWxpemVkUXVlc3Rpb24uZXh0cmFDU1NSdWxlcyxcbiAgICB9O1xuXG4gICAgcmVzb2x2ZShvdXQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNjb3JlID0gKGNvbmZpZywgc2Vzc2lvbikgPT4ge1xuICBjb25zdCB7IHZhbHVlID0ge30gfSA9IHNlc3Npb24gfHwge307XG4gIGNvbnN0IG1heFNjb3JlID0gY29uZmlnICYmIGNvbmZpZy5jaG9pY2VzID8gT2JqZWN0LmtleXMoY29uZmlnLmNob2ljZXMpLmxlbmd0aCA6IDA7XG4gIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKGNvbmZpZyk7XG4gIGxldCBjb3JyZWN0Q291bnQgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4U2NvcmU7IGkrKykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgIGFsbENvcnJlY3RSZXNwb25zZXMsXG4gICAgICAodG90YWwsIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBhbnN3ZXIgPSAodmFsdWUgJiYgdmFsdWVba2V5XSkgfHwgJyc7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RDaG9pY2UgPSBjaG9pY2VzW2ldIHx8ICcnO1xuXG4gICAgICAgIGlmIChjb3JyZWN0Q2hvaWNlICYmIGFuc3dlciAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG90YWwgLSAxO1xuICAgICAgfSxcbiAgICAgIG1heFNjb3JlLFxuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID4gY29ycmVjdENvdW50KSB7XG4gICAgICBjb3JyZWN0Q291bnQgPSByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gbWF4U2NvcmUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ciA9IChjb3JyZWN0Q291bnQgLyBtYXhTY29yZSkudG9GaXhlZCgyKTtcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpO1xufTtcblxuLyoqXG4gKlxuICogVGhlIHNjb3JlIGlzIHBhcnRpYWwgYnkgZGVmYXVsdCBmb3IgY2hlY2tib3ggbW9kZSwgYWxsT3JOb3RoaW5nIGZvciByYWRpbyBtb2RlLlxuICogVG8gZGlzYWJsZSBwYXJ0aWFsIHNjb3JpbmcgZm9yIGNoZWNrYm94IG1vZGUgeW91IGVpdGhlciBzZXQgbW9kZWwucGFydGlhbFNjb3JpbmcgPSBmYWxzZSBvciBlbnYucGFydGlhbFNjb3JpbmcgPVxuICogZmFsc2UuIHRoZSB2YWx1ZSBpbiBgZW52YCB3aWxsIG92ZXJyaWRlIHRoZSB2YWx1ZSBpbiBgbW9kZWxgLlxuICogQHBhcmFtIHtPYmplY3R9IG1vZGVsIC0gdGhlIG1haW4gbW9kZWxcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbW9kZWwucGFydGlhbFNjb3JpbmcgLSBpcyBwYXJ0aWFsIHNjb3JpbmcgZW5hYmxlZCAoaWYgdW5kZWZpbmVkIHNldCB0byB0byB0cnVlKVxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0ge09iamVjdH0gZW52XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVudi5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgZGVmYXVsdCB0byB0cnVlKSBUaGlzIG92ZXJyaWRlc1xuICogICBgbW9kZWwucGFydGlhbFNjb3JpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3V0Y29tZShtb2RlbCwgc2Vzc2lvbiwgZW52ID0ge30pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uIHx8IGlzRW1wdHkoc2Vzc2lvbikpIHtcbiAgICAgIHJlc29sdmUoeyBzY29yZTogMCwgZW1wdHk6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydGlhbFNjb3JpbmdFbmFibGVkID0gcGFydGlhbFNjb3JpbmcuZW5hYmxlZChtb2RlbCwgZW52KTtcbiAgICBjb25zdCBzY29yZSA9IGdldFNjb3JlKG1vZGVsLCBzZXNzaW9uKTtcblxuICAgIHJlc29sdmUoe1xuICAgICAgc2NvcmU6IHBhcnRpYWxTY29yaW5nRW5hYmxlZCA/IHNjb3JlIDogTWF0aC5mbG9vcihzY29yZSksXG4gICAgICBlbXB0eTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiA9IChxdWVzdGlvbiwgZW52KSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChlbnYubW9kZSAhPT0gJ2V2YWx1YXRlJyAmJiBlbnYucm9sZSA9PT0gJ2luc3RydWN0b3InKSB7XG4gICAgICBjb25zdCB7IGNob2ljZXMgfSA9IHF1ZXN0aW9uO1xuICAgICAgY29uc3QgdmFsdWUgPSB7fTtcblxuICAgICAgaWYgKGNob2ljZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY2hvaWNlcykuZm9yRWFjaCgoa2V5LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZXMgPSBjaG9pY2VzW2tleV0gJiYgY2hvaWNlc1trZXldLmZpbHRlcigoYykgPT4gYy5jb3JyZWN0KTtcblxuICAgICAgICAgIHZhbHVlW2ldID0gY29ycmVjdENob2ljZXMgJiYgY29ycmVjdENob2ljZXNbMF0udmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLy8gcmVtb3ZlIGFsbCBodG1sIHRhZ3NcbmNvbnN0IGdldElubmVyVGV4dCA9IChodG1sKSA9PiAoaHRtbCB8fCAnJykucmVwbGFjZUFsbCgvPFtePl0qPi9nLCAnJyk7XG5cbi8vIHJlbW92ZSBhbGwgaHRtbCB0YWdzIGV4Y2VwdCBpbWcsIGlmcmFtZSBhbmQgc291cmNlIHRhZyBmb3IgYXVkaW9cbmNvbnN0IGdldENvbnRlbnQgPSAoaHRtbCkgPT4gKGh0bWwgfHwgJycpLnJlcGxhY2UoLyg8KD8haW1nfGlmcmFtZXxzb3VyY2UpKFtePl0rKT4pL2dpLCAnJyk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZSA9IChtb2RlbCA9IHt9LCBjb25maWcgPSB7fSkgPT4ge1xuICBjb25zdCB7IG1hcmt1cCwgY2hvaWNlcyB9ID0gbW9kZWw7XG4gIGNvbnN0IHsgbWF4UmVzcG9uc2VBcmVhcywgbWF4UmVzcG9uc2VBcmVhQ2hvaWNlcyB9ID0gY29uZmlnO1xuICBjb25zdCBlcnJvcnMgPSB7fTtcblxuICBbJ3RlYWNoZXJJbnN0cnVjdGlvbnMnLCAncHJvbXB0JywgJ3JhdGlvbmFsZSddLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgaWYgKGNvbmZpZ1tmaWVsZF0/LnJlcXVpcmVkICYmICFnZXRDb250ZW50KG1vZGVsW2ZpZWxkXSkpIHtcbiAgICAgIGVycm9yc1tmaWVsZF0gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbmJPZlJlc3BvbnNlQXJlYXMgPSAoKG1hcmt1cCB8fCAnJykubWF0Y2goL1xce1xceyhcXGQrKVxcfVxcfS9nKSB8fCBbXSkubGVuZ3RoO1xuXG4gIGlmIChuYk9mUmVzcG9uc2VBcmVhcyA+IG1heFJlc3BvbnNlQXJlYXMpIHtcbiAgICBlcnJvcnMucmVzcG9uc2VBcmVhc0Vycm9yID0gYE5vIG1vcmUgdGhhbiAke21heFJlc3BvbnNlQXJlYXN9IHJlc3BvbnNlIGFyZWFzIHNob3VsZCBiZSBkZWZpbmVkLmA7XG4gIH0gZWxzZSBpZiAobmJPZlJlc3BvbnNlQXJlYXMgPCAxKSB7XG4gICAgZXJyb3JzLnJlc3BvbnNlQXJlYXNFcnJvciA9ICdUaGVyZSBzaG91bGQgYmUgZGVmaW5lZCBhdCBsZWFzdCAxIHJlc3BvbnNlIGFyZWEuJztcbiAgfVxuXG4gIChPYmplY3Qua2V5cyhjaG9pY2VzKSB8fCBbXSkuZm9yRWFjaCgoY2hvaWNlS2V5KSA9PiB7XG4gICAgaWYgKGNob2ljZXNbY2hvaWNlS2V5XSAmJiBjaG9pY2VzW2Nob2ljZUtleV0ubGVuZ3RoID4gbWF4UmVzcG9uc2VBcmVhQ2hvaWNlcykge1xuICAgICAgZXJyb3JzLnJlc3BvbnNlQXJlYUNob2ljZXNFcnJvciA9IGBObyBtb3JlIHRoYW4gJHttYXhSZXNwb25zZUFyZWFDaG9pY2VzfSBjaG9pY2VzIHBlciByZXNwb25zZSBhcmVhIHNob3VsZCBiZSBkZWZpbmVkLmA7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZXJyb3JzO1xufTtcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","defaults","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","teacherInstructions","rationale","choicesWillNullRationales","reduce","acc","currentValue","map","role","rationaleEnabled","teacherInstructionsEnabled","choiceRationaleEnabled","out","disabled","prompt","promptEnabled","displayType","markup","responseCorrect","getScore","undefined","language","extraCSSRules","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id","getInnerText","html","replaceAll","getContent","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\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 const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(choices[key], session, updateSession, 'value');\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === 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 = (correctCount / maxScore).toFixed(2);\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 if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\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 defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","defaults","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","shuffledValues","us","part","id","element","update","storedValues","Array","isArray","e","console","error","teacherInstructions","rationale","choicesWillNullRationales","reduce","acc","currentValue","map","role","rationaleEnabled","teacherInstructionsEnabled","choiceRationaleEnabled","out","disabled","prompt","promptEnabled","displayType","markup","responseCorrect","getScore","undefined","language","extraCSSRules","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","getInnerText","html","replaceAll","getContent","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\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 const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const shuffledValues = {};\n const keys = Object.keys(choices);\n\n const us = (part) => (id, element, update) => {\n return new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n };\n\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n const storedValues = session?.shuffledValues?.[key];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n // the shuffledValues structure was updated to an object like { choice_key: [] }\n // and we need to override shuffledValues if it's not an array\n { shuffledValues: Array.isArray(storedValues) ? storedValues : [] },\n us(key),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (session && updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === 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 = (correctCount / maxScore).toFixed(2);\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 if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\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 defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/lib/utils.js
CHANGED
|
@@ -37,4 +37,4 @@ var getAllCorrectResponses = function getAllCorrectResponses(_ref) {
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
exports.getAllCorrectResponses = getAllCorrectResponses;
|
|
40
|
-
//# sourceMappingURL=
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJnZXRBbGxDb3JyZWN0UmVzcG9uc2VzIiwiY2hvaWNlcyIsImFsdGVybmF0ZVJlc3BvbnNlIiwiY29ycmVjdEFuc3dlcnMiLCJyZXNwQXJlYSIsImtleSIsImZvckVhY2giLCJjaG9pY2UiLCJjb3JyZWN0IiwicHVzaCIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUVPLElBQU1BLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBeUIsT0FBb0M7QUFBQSxNQUFqQ0MsT0FBaUMsUUFBakNBLE9BQWlDO0FBQUEsTUFBeEJDLGlCQUF3QixRQUF4QkEsaUJBQXdCO0FBQ3hFQSxFQUFBQSxpQkFBaUIsR0FBR0EsaUJBQWlCLElBQUksRUFBekM7QUFDQSxNQUFNQyxjQUFjLEdBQUcsRUFBdkI7QUFFQSwyQkFBUUYsT0FBUixFQUFpQixVQUFDRyxRQUFELEVBQVdDLEdBQVgsRUFBbUI7QUFDbEMsUUFBSSxDQUFDRixjQUFjLENBQUNFLEdBQUQsQ0FBbkIsRUFBMEI7QUFDeEJGLE1BQUFBLGNBQWMsQ0FBQ0UsR0FBRCxDQUFkLEdBQXNCLEVBQXRCO0FBQ0Q7O0FBRUQsUUFBSUQsUUFBSixFQUFjO0FBQ1pBLE1BQUFBLFFBQVEsQ0FBQ0UsT0FBVCxDQUFpQixVQUFDQyxNQUFELEVBQVk7QUFDM0IsWUFBSUEsTUFBTSxDQUFDQyxPQUFYLEVBQW9CO0FBQ2xCTCxVQUFBQSxjQUFjLENBQUNFLEdBQUQsQ0FBZCxDQUFvQkksSUFBcEIsQ0FBeUJGLE1BQU0sQ0FBQ0csS0FBaEM7O0FBRUEsY0FBSVIsaUJBQWlCLENBQUNHLEdBQUQsQ0FBckIsRUFBNEI7QUFDMUJGLFlBQUFBLGNBQWMsQ0FBQ0UsR0FBRCxDQUFkLGlEQUEwQkYsY0FBYyxDQUFDRSxHQUFELENBQXhDLHVDQUFrREgsaUJBQWlCLENBQUNHLEdBQUQsQ0FBbkU7QUFDRDtBQUNGO0FBQ0YsT0FSRDtBQVNEO0FBQ0YsR0FoQkQ7QUFrQkEsU0FBT0YsY0FBUDtBQUNELENBdkJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZvckVhY2ggZnJvbSAnbG9kYXNoL2ZvckVhY2gnO1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyA9ICh7IGNob2ljZXMsIGFsdGVybmF0ZVJlc3BvbnNlIH0pID0+IHtcbiAgYWx0ZXJuYXRlUmVzcG9uc2UgPSBhbHRlcm5hdGVSZXNwb25zZSB8fCB7fTtcbiAgY29uc3QgY29ycmVjdEFuc3dlcnMgPSB7fTtcblxuICBmb3JFYWNoKGNob2ljZXMsIChyZXNwQXJlYSwga2V5KSA9PiB7XG4gICAgaWYgKCFjb3JyZWN0QW5zd2Vyc1trZXldKSB7XG4gICAgICBjb3JyZWN0QW5zd2Vyc1trZXldID0gW107XG4gICAgfVxuXG4gICAgaWYgKHJlc3BBcmVhKSB7XG4gICAgICByZXNwQXJlYS5mb3JFYWNoKChjaG9pY2UpID0+IHtcbiAgICAgICAgaWYgKGNob2ljZS5jb3JyZWN0KSB7XG4gICAgICAgICAgY29ycmVjdEFuc3dlcnNba2V5XS5wdXNoKGNob2ljZS52YWx1ZSk7XG5cbiAgICAgICAgICBpZiAoYWx0ZXJuYXRlUmVzcG9uc2Vba2V5XSkge1xuICAgICAgICAgICAgY29ycmVjdEFuc3dlcnNba2V5XSA9IFsuLi5jb3JyZWN0QW5zd2Vyc1trZXldLCAuLi5hbHRlcm5hdGVSZXNwb25zZVtrZXldXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNvcnJlY3RBbnN3ZXJzO1xufTtcbiJdfQ==
|
package/controller/package.json
CHANGED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
|
|
7
|
+
var _enzyme = require("enzyme");
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
|
|
11
|
+
var _inlineDropdown = require("../inline-dropdown");
|
|
12
|
+
|
|
13
|
+
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; }
|
|
14
|
+
|
|
15
|
+
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; }
|
|
16
|
+
|
|
17
|
+
describe('InlineDropdown', function () {
|
|
18
|
+
var wrapper;
|
|
19
|
+
var onChange = jest.fn();
|
|
20
|
+
beforeAll(function () {
|
|
21
|
+
wrapper = function wrapper(extra) {
|
|
22
|
+
var props = _objectSpread({
|
|
23
|
+
classes: {},
|
|
24
|
+
prompt: 'Prompt',
|
|
25
|
+
rationale: 'Rationale',
|
|
26
|
+
teacherInstructions: 'Teacher Instructions',
|
|
27
|
+
disabled: false,
|
|
28
|
+
choices: {
|
|
29
|
+
0: [{
|
|
30
|
+
label: 'cow ',
|
|
31
|
+
value: '0',
|
|
32
|
+
correct: true,
|
|
33
|
+
rationale: 'rationale cow'
|
|
34
|
+
}, {
|
|
35
|
+
label: 'dog ',
|
|
36
|
+
value: '1',
|
|
37
|
+
correct: false
|
|
38
|
+
}, {
|
|
39
|
+
label: 'cat ',
|
|
40
|
+
value: '2',
|
|
41
|
+
correct: false
|
|
42
|
+
}],
|
|
43
|
+
1: [{
|
|
44
|
+
label: 'over ',
|
|
45
|
+
value: '0',
|
|
46
|
+
correct: true,
|
|
47
|
+
rationale: 'rationale over'
|
|
48
|
+
}, {
|
|
49
|
+
label: 'under ',
|
|
50
|
+
value: '1',
|
|
51
|
+
correct: false
|
|
52
|
+
}, {
|
|
53
|
+
label: 'across ',
|
|
54
|
+
value: '2',
|
|
55
|
+
correct: false
|
|
56
|
+
}],
|
|
57
|
+
2: [{
|
|
58
|
+
label: 'moon ',
|
|
59
|
+
value: '0',
|
|
60
|
+
correct: true,
|
|
61
|
+
rationale: 'rationale moon'
|
|
62
|
+
}, {
|
|
63
|
+
label: 'sun',
|
|
64
|
+
value: '2',
|
|
65
|
+
correct: false
|
|
66
|
+
}, {
|
|
67
|
+
label: 'house ',
|
|
68
|
+
value: '3',
|
|
69
|
+
correct: false
|
|
70
|
+
}]
|
|
71
|
+
},
|
|
72
|
+
markup: '<div><p>The {{0}} jumped {{1}} the {{2}}</p></div>',
|
|
73
|
+
mode: 'gather',
|
|
74
|
+
feedback: {
|
|
75
|
+
0: 'correct',
|
|
76
|
+
1: 'correct',
|
|
77
|
+
2: 'correct'
|
|
78
|
+
},
|
|
79
|
+
value: {
|
|
80
|
+
0: '1',
|
|
81
|
+
1: '0',
|
|
82
|
+
2: '0'
|
|
83
|
+
},
|
|
84
|
+
onChange: onChange
|
|
85
|
+
}, extra);
|
|
86
|
+
|
|
87
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_inlineDropdown.InlineDropdown, props));
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
describe('render', function () {
|
|
91
|
+
it('should render in gather mode', function () {
|
|
92
|
+
expect(wrapper()).toMatchSnapshot();
|
|
93
|
+
});
|
|
94
|
+
it('should render in view mode', function () {
|
|
95
|
+
expect(wrapper({
|
|
96
|
+
mode: 'view'
|
|
97
|
+
})).toMatchSnapshot();
|
|
98
|
+
});
|
|
99
|
+
it('should render in evaluate mode', function () {
|
|
100
|
+
expect(wrapper({
|
|
101
|
+
mode: 'evaluate'
|
|
102
|
+
})).toMatchSnapshot();
|
|
103
|
+
});
|
|
104
|
+
it('should render without teacher instructions', function () {
|
|
105
|
+
expect(wrapper({
|
|
106
|
+
teacherInstructions: null
|
|
107
|
+
})).toMatchSnapshot();
|
|
108
|
+
});
|
|
109
|
+
it('should render without rationale', function () {
|
|
110
|
+
expect(wrapper({
|
|
111
|
+
rationale: null
|
|
112
|
+
})).toMatchSnapshot();
|
|
113
|
+
});
|
|
114
|
+
it('should render without prompt', function () {
|
|
115
|
+
expect(wrapper({
|
|
116
|
+
prompt: null
|
|
117
|
+
})).toMatchSnapshot();
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5saW5lLWRyb3Bkb3duLnRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwid3JhcHBlciIsIm9uQ2hhbmdlIiwiamVzdCIsImZuIiwiYmVmb3JlQWxsIiwiZXh0cmEiLCJwcm9wcyIsImNsYXNzZXMiLCJwcm9tcHQiLCJyYXRpb25hbGUiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwiZGlzYWJsZWQiLCJjaG9pY2VzIiwibGFiZWwiLCJ2YWx1ZSIsImNvcnJlY3QiLCJtYXJrdXAiLCJtb2RlIiwiZmVlZGJhY2siLCJpdCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBQSxRQUFRLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUMvQixNQUFJQyxPQUFKO0FBQ0EsTUFBSUMsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEVBQUwsRUFBZjtBQUVBQyxFQUFBQSxTQUFTLENBQUMsWUFBTTtBQUNkSixJQUFBQSxPQUFPLEdBQUcsaUJBQUNLLEtBQUQsRUFBVztBQUNuQixVQUFNQyxLQUFLO0FBQ1RDLFFBQUFBLE9BQU8sRUFBRSxFQURBO0FBRVRDLFFBQUFBLE1BQU0sRUFBRSxRQUZDO0FBR1RDLFFBQUFBLFNBQVMsRUFBRSxXQUhGO0FBSVRDLFFBQUFBLG1CQUFtQixFQUFFLHNCQUpaO0FBS1RDLFFBQUFBLFFBQVEsRUFBRSxLQUxEO0FBTVRDLFFBQUFBLE9BQU8sRUFBRTtBQUNQLGFBQUcsQ0FDRDtBQUNFQyxZQUFBQSxLQUFLLEVBQUUsTUFEVDtBQUVFQyxZQUFBQSxLQUFLLEVBQUUsR0FGVDtBQUdFQyxZQUFBQSxPQUFPLEVBQUUsSUFIWDtBQUlFTixZQUFBQSxTQUFTLEVBQUU7QUFKYixXQURDLEVBT0Q7QUFDRUksWUFBQUEsS0FBSyxFQUFFLE1BRFQ7QUFFRUMsWUFBQUEsS0FBSyxFQUFFLEdBRlQ7QUFHRUMsWUFBQUEsT0FBTyxFQUFFO0FB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QUNELEtBRkMsQ0FBRjtBQUlBRixJQUFBQSxFQUFFLENBQUMsOEJBQUQsRUFBaUMsWUFBTTtBQUN2Q0MsTUFBQUEsTUFBTSxDQUFDcEIsT0FBTyxDQUFDO0FBQUVRLFFBQUFBLE1BQU0sRUFBRTtBQUFWLE9BQUQsQ0FBUixDQUFOLENBQWtDYSxlQUFsQztBQUNELEtBRkMsQ0FBRjtBQUdELEdBeEJPLENBQVI7QUF5QkQsQ0F6R08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgSW5saW5lRHJvcGRvd24gfSBmcm9tICcuLi9pbmxpbmUtZHJvcGRvd24nO1xuXG5kZXNjcmliZSgnSW5saW5lRHJvcGRvd24nLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyO1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICB3cmFwcGVyID0gKGV4dHJhKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIHByb21wdDogJ1Byb21wdCcsXG4gICAgICAgIHJhdGlvbmFsZTogJ1JhdGlvbmFsZScsXG4gICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6ICdUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgY2hvaWNlczoge1xuICAgICAgICAgIDA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdjb3cgJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmF0aW9uYWxlOiAncmF0aW9uYWxlIGNvdycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ2RvZyAnLFxuICAgICAgICAgICAgICB2YWx1ZTogJzEnLFxuICAgICAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnY2F0ICcsXG4gICAgICAgICAgICAgIHZhbHVlOiAnMicsXG4gICAgICAgICAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIDE6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdvdmVyICcsXG4gICAgICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgICAgICAgIHJhdGlvbmFsZTogJ3JhdGlvbmFsZSBvdmVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAndW5kZXIgJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ2Fjcm9zcyAnLFxuICAgICAgICAgICAgICB2YWx1ZTogJzInLFxuICAgICAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICAyOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnbW9vbiAnLFxuICAgICAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgICByYXRpb25hbGU6ICdyYXRpb25hbGUgbW9vbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ3N1bicsXG4gICAgICAgICAgICAgIHZhbHVlOiAnMicsXG4gICAgICAgICAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdob3VzZSAnLFxuICAgICAgICAgICAgICB2YWx1ZTogJzMnLFxuICAgICAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbWFya3VwOiAnPGRpdj48cD5UaGUge3swfX0ganVtcGVkIHt7MX19IHRoZSB7ezJ9fTwvcD48L2Rpdj4nLFxuICAgICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgICAgZmVlZGJhY2s6IHsgMDogJ2NvcnJlY3QnLCAxOiAnY29ycmVjdCcsIDI6ICdjb3JyZWN0JyB9LFxuICAgICAgICB2YWx1ZTogeyAwOiAnMScsIDE6ICcwJywgMjogJzAnIH0sXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICAuLi5leHRyYSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzaGFsbG93KDxJbmxpbmVEcm9wZG93biB7Li4ucHJvcHN9IC8+KTtcbiAgICB9O1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIGluIGdhdGhlciBtb2RlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBpbiB2aWV3IG1vZGUnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcih7IG1vZGU6ICd2aWV3JyB9KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBpbiBldmFsdWF0ZSBtb2RlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnIH0pKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGhvdXQgdGVhY2hlciBpbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcih7IHRlYWNoZXJJbnN0cnVjdGlvbnM6IG51bGwgfSkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aG91dCByYXRpb25hbGUnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcih7IHJhdGlvbmFsZTogbnVsbCB9KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciB3aXRob3V0IHByb21wdCcsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKHsgcHJvbXB0OiBudWxsIH0pKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/lib/index.js
CHANGED
|
@@ -25,13 +25,15 @@ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/w
|
|
|
25
25
|
|
|
26
26
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
27
|
|
|
28
|
+
require("./math-rendering-provider");
|
|
29
|
+
|
|
28
30
|
var _react = _interopRequireDefault(require("react"));
|
|
29
31
|
|
|
30
32
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
31
33
|
|
|
32
34
|
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
33
35
|
|
|
34
|
-
var
|
|
36
|
+
var _renderMathBundled = require("@pie-lib/render-math-bundled");
|
|
35
37
|
|
|
36
38
|
var _inlineDropdown = _interopRequireDefault(require("./inline-dropdown"));
|
|
37
39
|
|
|
@@ -70,7 +72,7 @@ var RootInlineDropdown = /*#__PURE__*/function (_HTMLElement) {
|
|
|
70
72
|
_this.setLangAttribute();
|
|
71
73
|
|
|
72
74
|
_reactDom["default"].render(elem, (0, _assertThisInitialized2["default"])(_this), function () {
|
|
73
|
-
(0,
|
|
75
|
+
(0, _renderMathBundled.renderMath)((0, _assertThisInitialized2["default"])(_this));
|
|
74
76
|
});
|
|
75
77
|
}
|
|
76
78
|
});
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","model","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","language","onChange","changeSession","setLangAttribute","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","lang","slice","setAttribute","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGA6BJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,KAAK,EAAE,MAAKN,MADiC;AAE7CO,UAAAA,MAAM,EAAE,MAAKP,MAAL,CAAYO,MAFyB;AAG7CC,UAAAA,SAAS,EAAE,MAAKR,MAAL,CAAYQ,SAHsB;AAI7CC,UAAAA,mBAAmB,EAAE,MAAKT,MAAL,CAAYS,mBAJY;AAK7CC,UAAAA,QAAQ,EAAE,MAAKV,MAAL,CAAYU,QALuB;AAM7CC,UAAAA,WAAW,EAAE,MAAKX,MAAL,CAAYW,WANoB;AAO7CC,UAAAA,MAAM,EAAE,MAAKZ,MAAL,CAAYY,MAPyB;AAQ7CC,UAAAA,IAAI,EAAE,MAAKb,MAAL,CAAYa,IAR2B;AAS7CC,UAAAA,OAAO,EAAE,MAAKd,MAAL,CAAYc,OATwB;AAU7CC,UAAAA,KAAK,EAAE,MAAKd,QAAL,CAAcc,KAVwB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKhB,MAAL,CAAYgB,QAXuB;AAY7CC,UAAAA,QAAQ,EAAE,MAAKjB,MAAL,CAAYiB,QAZuB;AAa7CC,UAAAA,QAAQ,EAAE,MAAKC;AAb8B,SAApC,CAAX;;AAgBA,cAAKC,gBAAL;;AAEAC,6BAASC,MAAT,CAAgBpB,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KArDa;AAAA,6GAuDS,YAAM;AAC3B,YAAKqB,aAAL,CAAmB,IAAIC,oCAAJ,CAAwB,MAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoD,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaZ,KAAnF,CAAnB;AACD,KAzDa;AAAA,sGA2DE,UAACA,KAAD,EAAW;AACzB,YAAKY,OAAL,CAAaZ,KAAb,GAAqBA,KAArB;;AACA,YAAKa,oBAAL;;AACA,YAAKC,OAAL;AACD,KA/Da;AAEZ,UAAK7B,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SACD,aAAU6B,CAAV,EAAa;AACX,WAAK9B,MAAL,GAAc8B,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CAAkB,KAAKN,OAAL,CAAaC,WAAb,EAAlB,EAA8C,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaZ,KAA7E,EAAoF,CAAC,CAAC,KAAKf,MAA3F,CADF;;AAIA,WAAK6B,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAK5B,QAAZ;AACD,K;SAPD,aAAY+B,CAAZ,EAAe;AACb,WAAK/B,QAAL,GAAgB+B,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WAMD,4BAAmB;AACjB,UAAMZ,QAAQ,GAAG,KAAKjB,MAAL,6BAAsB,KAAKA,MAAL,CAAYiB,QAAlC,IAA6C,KAAKjB,MAAL,CAAYiB,QAAzD,GAAoE,EAArF;AACA,UAAMgB,IAAI,GAAGhB,QAAQ,GAAGA,QAAQ,CAACiB,KAAT,CAAe,CAAf,EAAkB,CAAlB,CAAH,GAA0B,IAA/C;AACA,WAAKC,YAAL,CAAkB,MAAlB,EAA0BF,IAA1B;AACD;;;WAsCD,6BAAoB;AAClB,WAAKE,YAAL,CAAkB,YAAlB,EAAgC,0BAAhC;AACA,WAAKA,YAAL,CAAkB,MAAlB,EAA0B,QAA1B;;AAEA,WAAKN,OAAL;AACD;;;kDAvE6CO,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","model","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","language","onChange","changeSession","setLangAttribute","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","lang","slice","setAttribute","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGA6BJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,KAAK,EAAE,MAAKN,MADiC;AAE7CO,UAAAA,MAAM,EAAE,MAAKP,MAAL,CAAYO,MAFyB;AAG7CC,UAAAA,SAAS,EAAE,MAAKR,MAAL,CAAYQ,SAHsB;AAI7CC,UAAAA,mBAAmB,EAAE,MAAKT,MAAL,CAAYS,mBAJY;AAK7CC,UAAAA,QAAQ,EAAE,MAAKV,MAAL,CAAYU,QALuB;AAM7CC,UAAAA,WAAW,EAAE,MAAKX,MAAL,CAAYW,WANoB;AAO7CC,UAAAA,MAAM,EAAE,MAAKZ,MAAL,CAAYY,MAPyB;AAQ7CC,UAAAA,IAAI,EAAE,MAAKb,MAAL,CAAYa,IAR2B;AAS7CC,UAAAA,OAAO,EAAE,MAAKd,MAAL,CAAYc,OATwB;AAU7CC,UAAAA,KAAK,EAAE,MAAKd,QAAL,CAAcc,KAVwB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKhB,MAAL,CAAYgB,QAXuB;AAY7CC,UAAAA,QAAQ,EAAE,MAAKjB,MAAL,CAAYiB,QAZuB;AAa7CC,UAAAA,QAAQ,EAAE,MAAKC;AAb8B,SAApC,CAAX;;AAgBA,cAAKC,gBAAL;;AAEAC,6BAASC,MAAT,CAAgBpB,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KArDa;AAAA,6GAuDS,YAAM;AAC3B,YAAKqB,aAAL,CAAmB,IAAIC,oCAAJ,CAAwB,MAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoD,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaZ,KAAnF,CAAnB;AACD,KAzDa;AAAA,sGA2DE,UAACA,KAAD,EAAW;AACzB,YAAKY,OAAL,CAAaZ,KAAb,GAAqBA,KAArB;;AACA,YAAKa,oBAAL;;AACA,YAAKC,OAAL;AACD,KA/Da;AAEZ,UAAK7B,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SACD,aAAU6B,CAAV,EAAa;AACX,WAAK9B,MAAL,GAAc8B,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CAAkB,KAAKN,OAAL,CAAaC,WAAb,EAAlB,EAA8C,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaZ,KAA7E,EAAoF,CAAC,CAAC,KAAKf,MAA3F,CADF;;AAIA,WAAK6B,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAK5B,QAAZ;AACD,K;SAPD,aAAY+B,CAAZ,EAAe;AACb,WAAK/B,QAAL,GAAgB+B,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WAMD,4BAAmB;AACjB,UAAMZ,QAAQ,GAAG,KAAKjB,MAAL,6BAAsB,KAAKA,MAAL,CAAYiB,QAAlC,IAA6C,KAAKjB,MAAL,CAAYiB,QAAzD,GAAoE,EAArF;AACA,UAAMgB,IAAI,GAAGhB,QAAQ,GAAGA,QAAQ,CAACiB,KAAT,CAAe,CAAf,EAAkB,CAAlB,CAAH,GAA0B,IAA/C;AACA,WAAKC,YAAL,CAAkB,MAAlB,EAA0BF,IAA1B;AACD;;;WAsCD,6BAAoB;AAClB,WAAKE,YAAL,CAAkB,YAAlB,EAAgC,0BAAhC;AACA,WAAKA,YAAL,CAAkB,MAAlB,EAA0B,QAA1B;;AAEA,WAAKN,OAAL;AACD;;;kDAvE6CO,W","sourcesContent":["import './math-rendering-provider';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/render-math-bundled';\nimport InlineDropdown from './inline-dropdown';\n\nexport default class RootInlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\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 setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(InlineDropdown, {\n model: this._model,\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n teacherInstructions: this._model.teacherInstructions,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n markup: this._model.markup,\n mode: this._model.mode,\n choices: this._model.choices,\n value: this._session.value,\n feedback: this._model.feedback,\n language: this._model.language,\n onChange: this.changeSession,\n });\n\n this.setLangAttribute();\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.setAttribute('aria-label', 'Inline Dropdown Question');\n this.setAttribute('role', 'region');\n\n this._render();\n }\n}\n"],"file":"index.js"}
|
package/lib/inline-dropdown.js
CHANGED
|
@@ -37,7 +37,7 @@ var _maskMarkup = require("@pie-lib/mask-markup");
|
|
|
37
37
|
|
|
38
38
|
var _renderUi = require("@pie-lib/render-ui");
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var _renderMathBundled = require("@pie-lib/render-math-bundled");
|
|
41
41
|
|
|
42
42
|
var _styles = require("@material-ui/core/styles");
|
|
43
43
|
|
|
@@ -88,7 +88,7 @@ var InlineDropdown = /*#__PURE__*/function (_React$Component) {
|
|
|
88
88
|
// eslint-disable-next-line
|
|
89
89
|
var domNode = _reactDom["default"].findDOMNode(this);
|
|
90
90
|
|
|
91
|
-
(0,
|
|
91
|
+
(0, _renderMathBundled.renderMath)(domNode);
|
|
92
92
|
}
|
|
93
93
|
}, {
|
|
94
94
|
key: "render",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/inline-dropdown.jsx"],"names":["InlineDropdown","showCorrectAnswer","setState","state","nextProps","feedback","domNode","ReactDOM","findDOMNode","props","classes","prompt","mode","model","rationale","teacherInstructions","choices","displayType","language","extraCSSRules","showCorrectAnswerToggle","choiceRationalesHaveText","showRationale","showTeacherInstructions","choiceRationales","Object","keys","map","key","reduce","acc","currentValue","push","mainContainer","display","srOnly","collapsible","hidden","visible","toggleShowCorrect","index","choiceRationaleWrapper","length","choice","choiceRationale","label","choiceRationaleLabel","correct","__html","React","Component","PropTypes","object","string","disabled","bool","markup","isRequired","value","onChange","func","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit","whiteSpace","incorrectWithIcon","position","left","top","width","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { InlineDropdown as DropDown } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class InlineDropdown extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n prompt: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n displayType: PropTypes.string,\n rationale: PropTypes.string,\n teacherInstructions: PropTypes.string,\n model: PropTypes.object.isRequired,\n choices: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n language: PropTypes.string,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: false,\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n }\n\n componentDidUpdate() {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { classes, prompt, mode, model, rationale, teacherInstructions, choices, displayType, language } = this.props;\n const { extraCSSRules } = model || {};\n const showCorrectAnswerToggle = mode === 'evaluate';\n let choiceRationalesHaveText = false;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const choiceRationales = (Object.keys(choices) || []).map((key) =>\n (choices[key] || []).reduce((acc, currentValue) => {\n if (currentValue.rationale && hasText(currentValue.rationale)) {\n choiceRationalesHaveText = true;\n\n acc.push(currentValue);\n }\n\n return acc;\n }, []),\n );\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer} style={{ display: `${displayType}` }}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Inline Dropdown Question</h2>}\n\n {showTeacherInstructions && (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n\n <DropDown {...this.props} showCorrectAnswer={showCorrectAnswer} />\n\n {choiceRationalesHaveText && (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Rationale for choices', visible: 'Hide Rationale for choices' }}\n >\n {choiceRationales.map((choices, index) => (\n <div key={index} className={classes.choiceRationaleWrapper}>\n {choices?.length > 0 &&\n choices.map((choice) => (\n <div className={classes.choiceRationale} key={choice.label}>\n <div\n className={classNames(classes.choiceRationaleLabel, choice.correct ? 'correct' : 'incorrect')}\n dangerouslySetInnerHTML={{ __html: `${choice.label}: ` }}\n />\n <PreviewPrompt prompt={choice.rationale} />\n </div>\n ))}\n </div>\n ))}\n </Collapsible>\n )}\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n choiceRationaleWrapper: {\n '&:not(:last-child)': {\n marginBottom: theme.spacing.unit * 2,\n },\n },\n choiceRationale: {\n display: 'flex',\n whiteSpace: 'break-spaces',\n },\n choiceRationaleLabel: {\n display: 'flex',\n '&.correct': {\n color: color.correct(),\n },\n '&.incorrect': {\n color: color.incorrectWithIcon(),\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(InlineDropdown);\n"],"file":"inline-dropdown.js"}
|
|
1
|
+
{"version":3,"sources":["../src/inline-dropdown.jsx"],"names":["InlineDropdown","showCorrectAnswer","setState","state","nextProps","feedback","domNode","ReactDOM","findDOMNode","props","classes","prompt","mode","model","rationale","teacherInstructions","choices","displayType","language","extraCSSRules","showCorrectAnswerToggle","choiceRationalesHaveText","showRationale","showTeacherInstructions","choiceRationales","Object","keys","map","key","reduce","acc","currentValue","push","mainContainer","display","srOnly","collapsible","hidden","visible","toggleShowCorrect","index","choiceRationaleWrapper","length","choice","choiceRationale","label","choiceRationaleLabel","correct","__html","React","Component","PropTypes","object","string","disabled","bool","markup","isRequired","value","onChange","func","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit","whiteSpace","incorrectWithIcon","position","left","top","width","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { InlineDropdown as DropDown } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/render-math-bundled';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class InlineDropdown extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n prompt: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n displayType: PropTypes.string,\n rationale: PropTypes.string,\n teacherInstructions: PropTypes.string,\n model: PropTypes.object.isRequired,\n choices: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n language: PropTypes.string,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: false,\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n }\n\n componentDidUpdate() {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { classes, prompt, mode, model, rationale, teacherInstructions, choices, displayType, language } = this.props;\n const { extraCSSRules } = model || {};\n const showCorrectAnswerToggle = mode === 'evaluate';\n let choiceRationalesHaveText = false;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const choiceRationales = (Object.keys(choices) || []).map((key) =>\n (choices[key] || []).reduce((acc, currentValue) => {\n if (currentValue.rationale && hasText(currentValue.rationale)) {\n choiceRationalesHaveText = true;\n\n acc.push(currentValue);\n }\n\n return acc;\n }, []),\n );\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={classes.mainContainer} style={{ display: `${displayType}` }}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Inline Dropdown Question</h2>}\n\n {showTeacherInstructions && (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n\n <DropDown {...this.props} showCorrectAnswer={showCorrectAnswer} />\n\n {choiceRationalesHaveText && (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Rationale for choices', visible: 'Hide Rationale for choices' }}\n >\n {choiceRationales.map((choices, index) => (\n <div key={index} className={classes.choiceRationaleWrapper}>\n {choices?.length > 0 &&\n choices.map((choice) => (\n <div className={classes.choiceRationale} key={choice.label}>\n <div\n className={classNames(classes.choiceRationaleLabel, choice.correct ? 'correct' : 'incorrect')}\n dangerouslySetInnerHTML={{ __html: `${choice.label}: ` }}\n />\n <PreviewPrompt prompt={choice.rationale} />\n </div>\n ))}\n </div>\n ))}\n </Collapsible>\n )}\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n choiceRationaleWrapper: {\n '&:not(:last-child)': {\n marginBottom: theme.spacing.unit * 2,\n },\n },\n choiceRationale: {\n display: 'flex',\n whiteSpace: 'break-spaces',\n },\n choiceRationaleLabel: {\n display: 'flex',\n '&.correct': {\n color: color.correct(),\n },\n '&.incorrect': {\n color: color.incorrectWithIcon(),\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(InlineDropdown);\n"],"file":"inline-dropdown.js"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
+
|
|
9
|
+
var renderMathBundled = _interopRequireWildcard(require("@pie-lib/render-math-bundled"));
|
|
10
|
+
|
|
11
|
+
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); }
|
|
12
|
+
|
|
13
|
+
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; }
|
|
14
|
+
|
|
15
|
+
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; }
|
|
16
|
+
|
|
17
|
+
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; }
|
|
18
|
+
|
|
19
|
+
if (typeof window !== 'undefined') {
|
|
20
|
+
var existing = window['@pie-lib/math-rendering'];
|
|
21
|
+
|
|
22
|
+
if (!existing || typeof existing.renderMath !== 'function') {
|
|
23
|
+
window['@pie-lib/math-rendering'] = _objectSpread({}, renderMathBundled);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=math-rendering-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/math-rendering-provider.js"],"names":["window","existing","renderMath","renderMathBundled"],"mappings":";;;;;;;;AAaA;;;;;;;;;;AAEA,IAAI,OAAOA,MAAP,KAAkB,WAAtB,EAAmC;AACjC,MAAMC,QAAQ,GAAGD,MAAM,CAAC,yBAAD,CAAvB;;AAEA,MAAI,CAACC,QAAD,IAAa,OAAOA,QAAQ,CAACC,UAAhB,KAA+B,UAAhD,EAA4D;AAC1DF,IAAAA,MAAM,CAAC,yBAAD,CAAN,qBAAyCG,iBAAzC;AACD;AACF","sourcesContent":["/**\n * Math-rendering provider (player).\n *\n * The hotfix bundle externalizes `@pie-lib/math-rendering`, expecting the host\n * player to expose it on `window['@pie-lib/math-rendering']`. Older players\n * (e.g. pie-player-components@3.8.3) do not provide it, so `renderMath` ends up\n * undefined at runtime.\n *\n * To stay self-contained we bundle the renamed copy\n * (`@pie-lib/render-math-bundled`) and publish it onto the expected global so\n * any externalized `@pie-lib/math-rendering` consumers resolve to it. This must\n * be imported before any module that uses the externalized math-rendering.\n */\nimport * as renderMathBundled from '@pie-lib/render-math-bundled';\n\nif (typeof window !== 'undefined') {\n const existing = window['@pie-lib/math-rendering'];\n\n if (!existing || typeof existing.renderMath !== 'function') {\n window['@pie-lib/math-rendering'] = { ...renderMathBundled };\n }\n}\n"],"file":"math-rendering-provider.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "
|
|
7
|
+
"version": "8.0.0-hotfix.2",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postpublish": "../../scripts/postpublish"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
15
|
"@pie-lib/correct-answer-toggle": "^2.21.0",
|
|
16
16
|
"@pie-lib/mask-markup": "^1.29.0",
|
|
17
|
-
"@pie-lib/math-
|
|
17
|
+
"@pie-lib/render-math-bundled": "3.18.0-hotfix.0",
|
|
18
18
|
"@pie-lib/render-ui": "^4.31.0",
|
|
19
19
|
"classnames": "^2.2.5",
|
|
20
20
|
"lodash": "^4.17.10",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"author": "",
|
|
26
26
|
"license": "ISC",
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "0e14ff981bcdc8a89a0e58484026496701bfdbc3",
|
|
28
28
|
"main": "lib/index.js",
|
|
29
29
|
"module": "src/index.js"
|
|
30
30
|
}
|