@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.
@@ -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"}
@@ -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"}