@pie-element/math-inline 9.0.0 → 10.0.1-esm.0
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/package.json +1 -1
- package/controller/CHANGELOG.md +8 -0
- package/controller/package.json +1 -1
- package/esm/controller.js +468 -0
- package/esm/controller.js.map +1 -0
- package/package.json +7 -4
- package/module/configure.js +0 -1
- package/module/controller.js +0 -4278
- package/module/demo.js +0 -66
- package/module/element.js +0 -1
- package/module/index.html +0 -21
- package/module/manifest.json +0 -18
- package/module/print-demo.js +0 -104
- package/module/print.html +0 -18
- package/module/print.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,27 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [10.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@8.8.11...@pie-element/math-inline@10.0.0) (2025-10-02)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* publish majors to adopt pie-toolbox split without breaking legacy bundles PD-5242 ([50ede62](https://github.com/pie-framework/pie-elements/commit/50ede624eff05e2bc52fa80e453d561c505ab38d))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Performance Improvements
|
|
15
|
+
|
|
16
|
+
* **multiple-choice:** adopt pie-toolbox split ([b4b8f45](https://github.com/pie-framework/pie-elements/commit/b4b8f45b68b71622b314c3d80fdc180832a640e1))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### BREAKING CHANGES
|
|
20
|
+
|
|
21
|
+
* **multiple-choice:** publish majors to carry the pie-toolbox split without breaking legacy bundles
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
6
27
|
# [9.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@8.8.11...@pie-element/math-inline@9.0.0) (2025-10-01)
|
|
7
28
|
|
|
8
29
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [9.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@8.7.0...@pie-element/math-inline-configure@9.0.1) (2025-10-02)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/math-inline-configure
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
# [9.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@8.7.0...@pie-element/math-inline-configure@9.0.0) (2025-10-01)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @pie-element/math-inline-configure
|
package/configure/package.json
CHANGED
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [8.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@7.4.11...@pie-element/math-inline-controller@8.0.1) (2025-10-02)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/math-inline-controller
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
# [8.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@7.4.11...@pie-element/math-inline-controller@8.0.0) (2025-10-01)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @pie-element/math-inline-controller
|
package/controller/package.json
CHANGED
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import isEmpty from 'lodash/isEmpty';
|
|
3
|
+
import { getActualFeedbackForCorrectness } from '@pie-lib/feedback';
|
|
4
|
+
import Translator from '@pie-lib/translator';
|
|
5
|
+
import * as mv from '@pie-framework/math-validation';
|
|
6
|
+
|
|
7
|
+
function ownKeys(object, enumerableOnly) {
|
|
8
|
+
var keys = Object.keys(object);
|
|
9
|
+
|
|
10
|
+
if (Object.getOwnPropertySymbols) {
|
|
11
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
12
|
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
13
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
14
|
+
})), keys.push.apply(keys, symbols);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return keys;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function _objectSpread2(target) {
|
|
21
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
22
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
23
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
24
|
+
_defineProperty(target, key, source[key]);
|
|
25
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
26
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return target;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function _defineProperty(obj, key, value) {
|
|
34
|
+
if (key in obj) {
|
|
35
|
+
Object.defineProperty(obj, key, {
|
|
36
|
+
value: value,
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
obj[key] = value;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return obj;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
49
|
+
if (source == null) return {};
|
|
50
|
+
var target = {};
|
|
51
|
+
var sourceKeys = Object.keys(source);
|
|
52
|
+
var key, i;
|
|
53
|
+
|
|
54
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
55
|
+
key = sourceKeys[i];
|
|
56
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
57
|
+
target[key] = source[key];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return target;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function _objectWithoutProperties(source, excluded) {
|
|
64
|
+
if (source == null) return {};
|
|
65
|
+
|
|
66
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
67
|
+
|
|
68
|
+
var key, i;
|
|
69
|
+
|
|
70
|
+
if (Object.getOwnPropertySymbols) {
|
|
71
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
72
|
+
|
|
73
|
+
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
74
|
+
key = sourceSymbolKeys[i];
|
|
75
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
76
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
77
|
+
target[key] = source[key];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return target;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var ResponseTypes = {
|
|
85
|
+
advanced: 'Advanced Multi',
|
|
86
|
+
simple: 'Simple'
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
var defaults = {
|
|
90
|
+
allowTrailingZerosDefault: false,
|
|
91
|
+
customKeys: [],
|
|
92
|
+
equationEditor: '8',
|
|
93
|
+
expression: '',
|
|
94
|
+
feedback: {
|
|
95
|
+
correct: {
|
|
96
|
+
default: 'Correct',
|
|
97
|
+
type: 'none'
|
|
98
|
+
},
|
|
99
|
+
incorrect: {
|
|
100
|
+
default: 'Incorrect',
|
|
101
|
+
type: 'none'
|
|
102
|
+
},
|
|
103
|
+
partial: {
|
|
104
|
+
default: 'Nearly',
|
|
105
|
+
type: 'none'
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
feedbackEnabled: false,
|
|
109
|
+
ignoreOrderDefault: false,
|
|
110
|
+
partialScoring: true,
|
|
111
|
+
prompt: '',
|
|
112
|
+
promptEnabled: true,
|
|
113
|
+
rationale: '',
|
|
114
|
+
rationaleEnabled: true,
|
|
115
|
+
responseType: ResponseTypes.advanced,
|
|
116
|
+
responses: [],
|
|
117
|
+
scoringType: 'auto',
|
|
118
|
+
studentInstructionsEnabled: true,
|
|
119
|
+
teacherInstructions: '',
|
|
120
|
+
teacherInstructionsEnabled: true,
|
|
121
|
+
toolbarEditorPosition: 'bottom',
|
|
122
|
+
validationDefault: 'literal'
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
var _excluded = ["extraCSSRules", "responses", "language"];
|
|
126
|
+
var {
|
|
127
|
+
translator
|
|
128
|
+
} = Translator;
|
|
129
|
+
var log = debug('@pie-element:math-inline:controller');
|
|
130
|
+
|
|
131
|
+
var getResponseCorrectness = (model, answerItem, isOutcome) => {
|
|
132
|
+
var correctResponses = model.responses;
|
|
133
|
+
var isAdvanced = model.responseType === ResponseTypes.advanced;
|
|
134
|
+
|
|
135
|
+
if (!answerItem) {
|
|
136
|
+
return {
|
|
137
|
+
correctness: 'unanswered',
|
|
138
|
+
score: isOutcome ? 0 : '0%',
|
|
139
|
+
correct: false
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
var isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);
|
|
144
|
+
var correctnessObject = {
|
|
145
|
+
correctness: 'incorrect',
|
|
146
|
+
score: isOutcome ? 0 : '0%',
|
|
147
|
+
correct: false
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
if (isAnswerCorrect) {
|
|
151
|
+
correctnessObject.correctness = 'correct';
|
|
152
|
+
correctnessObject.score = isOutcome ? 1 : '100%';
|
|
153
|
+
correctnessObject.correct = true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return correctnessObject;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
function getIsAnswerCorrect(correctResponseItems, answerItem) {
|
|
160
|
+
var answerCorrect = false;
|
|
161
|
+
(correctResponseItems || []).forEach(correctResponse => {
|
|
162
|
+
if (answerCorrect) return;
|
|
163
|
+
var opts = {
|
|
164
|
+
mode: correctResponse.validation || defaults.validationDefault
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
if (opts.mode === 'literal') {
|
|
168
|
+
opts.literal = {
|
|
169
|
+
allowTrailingZeros: correctResponse.allowTrailingZeros || false,
|
|
170
|
+
ignoreOrder: correctResponse.ignoreOrder || false
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
var acceptedValues = [correctResponse.answer].concat(Object.keys(correctResponse.alternates || {}).map(alternateId => correctResponse.alternates[alternateId]));
|
|
175
|
+
|
|
176
|
+
for (var i = 0; i < acceptedValues.length; i++) {
|
|
177
|
+
try {
|
|
178
|
+
if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {
|
|
179
|
+
answerCorrect = true;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
} catch (e) {
|
|
183
|
+
log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return answerCorrect;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
var getCorrectness = (question, env, session, isOutcome) => {
|
|
192
|
+
if (env.mode === 'evaluate') {
|
|
193
|
+
return getResponseCorrectness(question, question.responseType === ResponseTypes.advanced ? session && session.completeAnswer || '' : session && session.response, isOutcome);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return undefined;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
function createDefaultModel() {
|
|
200
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
201
|
+
return new Promise(resolve => {
|
|
202
|
+
resolve({
|
|
203
|
+
config: _objectSpread2(_objectSpread2({}, defaults), model)
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
var outcome = (question, session, env) => {
|
|
208
|
+
return new Promise(resolve => {
|
|
209
|
+
if (env.mode !== 'evaluate') {
|
|
210
|
+
resolve({
|
|
211
|
+
score: undefined,
|
|
212
|
+
completed: undefined
|
|
213
|
+
});
|
|
214
|
+
} else {
|
|
215
|
+
if (!session || isEmpty(session)) {
|
|
216
|
+
resolve({
|
|
217
|
+
score: 0,
|
|
218
|
+
empty: true
|
|
219
|
+
});
|
|
220
|
+
} else {
|
|
221
|
+
var correctness = getCorrectness(question, env, session, true);
|
|
222
|
+
resolve({
|
|
223
|
+
score: correctness.score
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
var normalize = question => {
|
|
230
|
+
// making sure that defaults are set
|
|
231
|
+
if (!isEmpty(question.responses)) {
|
|
232
|
+
question.responses = question.responses.map(correctResponse => _objectSpread2(_objectSpread2({}, correctResponse), {}, {
|
|
233
|
+
validation: correctResponse.validation || question.validationDefault,
|
|
234
|
+
allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,
|
|
235
|
+
ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
return _objectSpread2(_objectSpread2({}, defaults), question);
|
|
240
|
+
};
|
|
241
|
+
var model = (question, session, env) => new Promise(resolve => {
|
|
242
|
+
var _config$responses;
|
|
243
|
+
|
|
244
|
+
var normalizedQuestion = normalize(question);
|
|
245
|
+
var correctness = getCorrectness(normalizedQuestion, env, session);
|
|
246
|
+
|
|
247
|
+
var {
|
|
248
|
+
extraCSSRules,
|
|
249
|
+
responses,
|
|
250
|
+
language
|
|
251
|
+
} = normalizedQuestion,
|
|
252
|
+
config = _objectWithoutProperties(normalizedQuestion, _excluded);
|
|
253
|
+
|
|
254
|
+
config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;
|
|
255
|
+
var feedback = env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled ? getActualFeedbackForCorrectness(correctness === null || correctness === void 0 ? void 0 : correctness.correctness, normalizedQuestion.feedback) : undefined;
|
|
256
|
+
var out = {
|
|
257
|
+
extraCSSRules,
|
|
258
|
+
config,
|
|
259
|
+
correctness,
|
|
260
|
+
feedback,
|
|
261
|
+
disabled: env.mode !== 'gather',
|
|
262
|
+
view: env.mode === 'view'
|
|
263
|
+
};
|
|
264
|
+
var note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', {
|
|
265
|
+
lng: language
|
|
266
|
+
});
|
|
267
|
+
var showNote = (config === null || config === void 0 ? void 0 : (_config$responses = config.responses) === null || _config$responses === void 0 ? void 0 : _config$responses.length) > 1 || ((config === null || config === void 0 ? void 0 : config.responses) || []).some(response => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0);
|
|
268
|
+
|
|
269
|
+
if (env.mode === 'evaluate') {
|
|
270
|
+
out.correctResponse = {};
|
|
271
|
+
out.config.showNote = showNote;
|
|
272
|
+
out.config.note = note;
|
|
273
|
+
} else {
|
|
274
|
+
out.config.responses = [];
|
|
275
|
+
out.config.showNote = false;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
279
|
+
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
280
|
+
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
281
|
+
} else {
|
|
282
|
+
out.rationale = null;
|
|
283
|
+
out.teacherInstructions = null;
|
|
284
|
+
out.config.rationale = null;
|
|
285
|
+
out.config.teacherInstructions = null;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
out.config.env = env;
|
|
289
|
+
out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;
|
|
290
|
+
out.language = language;
|
|
291
|
+
log('out: ', out);
|
|
292
|
+
resolve(out);
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
var escape = string => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
var simpleSessionResponse = question => new Promise(resolve => {
|
|
299
|
+
var {
|
|
300
|
+
responses,
|
|
301
|
+
id
|
|
302
|
+
} = question;
|
|
303
|
+
var {
|
|
304
|
+
answer
|
|
305
|
+
} = responses && responses.length ? responses[0] : {};
|
|
306
|
+
resolve({
|
|
307
|
+
id,
|
|
308
|
+
response: answer || '',
|
|
309
|
+
completeAnswer: answer || ''
|
|
310
|
+
});
|
|
311
|
+
}); // use this for items like E672793
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
var removeTrailingEscape = str => str.endsWith('\\') ? str.slice(0, -1) : str;
|
|
315
|
+
|
|
316
|
+
var advancedSessionResponse = question => new Promise(resolve => {
|
|
317
|
+
var {
|
|
318
|
+
responses,
|
|
319
|
+
id
|
|
320
|
+
} = question;
|
|
321
|
+
var {
|
|
322
|
+
answer
|
|
323
|
+
} = responses && responses.length ? responses[0] : {};
|
|
324
|
+
|
|
325
|
+
if (!answer) {
|
|
326
|
+
resolve({
|
|
327
|
+
id,
|
|
328
|
+
answers: {},
|
|
329
|
+
completeAnswer: ''
|
|
330
|
+
});
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
try {
|
|
335
|
+
var e = question.expression;
|
|
336
|
+
var RESPONSE_TOKEN = /\\{\\{\s*response\s*\\}\\}/g;
|
|
337
|
+
var o = escape(e).split(RESPONSE_TOKEN);
|
|
338
|
+
var to = o.map(t => t === '' ? t : t.replace(/\s+/g, () => '\\s*'));
|
|
339
|
+
var tt = to.join('(.*)');
|
|
340
|
+
var m = answer.match(new RegExp(tt));
|
|
341
|
+
var count = o.length - 1;
|
|
342
|
+
|
|
343
|
+
if (!m) {
|
|
344
|
+
resolve({
|
|
345
|
+
id,
|
|
346
|
+
answers: {},
|
|
347
|
+
completeAnswer: answer
|
|
348
|
+
}); // eslint-disable-next-line no-console
|
|
349
|
+
|
|
350
|
+
console.log("can not find match: ".concat(o, " in ").concat(answer));
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
m.shift();
|
|
355
|
+
var answers = {};
|
|
356
|
+
|
|
357
|
+
for (var i = 0; i < count; i++) {
|
|
358
|
+
answers["r".concat(i + 1)] = {
|
|
359
|
+
value: removeTrailingEscape(m[i].trim())
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
resolve({
|
|
364
|
+
id,
|
|
365
|
+
answers,
|
|
366
|
+
completeAnswer: answer
|
|
367
|
+
});
|
|
368
|
+
} catch (e) {
|
|
369
|
+
resolve({
|
|
370
|
+
id,
|
|
371
|
+
answers: {},
|
|
372
|
+
completeAnswer: answer
|
|
373
|
+
}); // eslint-disable-next-line no-console
|
|
374
|
+
|
|
375
|
+
console.error(e.toString());
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
var createCorrectResponseSession = (question, env) => {
|
|
380
|
+
if (env.mode === 'evaluate' || env.role !== 'instructor') {
|
|
381
|
+
// eslint-disable-next-line no-console
|
|
382
|
+
console.error('can not create correct response session if mode is evaluate or role is not instructor');
|
|
383
|
+
return Promise.resolve(null);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
if ((question.responseType || '').toLowerCase() === 'simple') {
|
|
387
|
+
return simpleSessionResponse(question);
|
|
388
|
+
} else {
|
|
389
|
+
return advancedSessionResponse(question);
|
|
390
|
+
}
|
|
391
|
+
}; // remove all html tags
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
var getContent = html => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
395
|
+
|
|
396
|
+
var validate = function validate() {
|
|
397
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
398
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
399
|
+
var {
|
|
400
|
+
expression = '',
|
|
401
|
+
responses,
|
|
402
|
+
responseType
|
|
403
|
+
} = model;
|
|
404
|
+
var {
|
|
405
|
+
maxResponseAreas
|
|
406
|
+
} = config;
|
|
407
|
+
var responsesErrors = {};
|
|
408
|
+
var errors = {};
|
|
409
|
+
['teacherInstructions', 'prompt', 'rationale'].forEach(field => {
|
|
410
|
+
var _config$field;
|
|
411
|
+
|
|
412
|
+
if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
|
|
413
|
+
errors[field] = 'This field is required.';
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
(responses || []).forEach((response, index) => {
|
|
417
|
+
var {
|
|
418
|
+
answer
|
|
419
|
+
} = response;
|
|
420
|
+
var reversedAlternates = [...Object.entries(response.alternates || {})].reverse();
|
|
421
|
+
var alternatesErrors = {};
|
|
422
|
+
var responseError = {};
|
|
423
|
+
|
|
424
|
+
if (answer === '') {
|
|
425
|
+
responseError.answer = 'Content should not be empty.';
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
reversedAlternates.forEach((_ref, index) => {
|
|
429
|
+
var [key, value] = _ref;
|
|
430
|
+
|
|
431
|
+
if (value === '') {
|
|
432
|
+
alternatesErrors[key] = 'Content should not be empty.';
|
|
433
|
+
} else {
|
|
434
|
+
var identicalAnswer = answer === value || reversedAlternates.slice(index + 1).some(_ref2 => {
|
|
435
|
+
var [, val] = _ref2;
|
|
436
|
+
return val === value;
|
|
437
|
+
});
|
|
438
|
+
|
|
439
|
+
if (identicalAnswer) {
|
|
440
|
+
alternatesErrors[key] = 'Content should be unique.';
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {
|
|
446
|
+
responsesErrors[index] = _objectSpread2(_objectSpread2({}, responseError), alternatesErrors);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
if (responseType === 'Advanced Multi') {
|
|
451
|
+
var nbOfResponseAreas = (expression.match(/\{\{response\}\}/g) || []).length;
|
|
452
|
+
|
|
453
|
+
if (nbOfResponseAreas > maxResponseAreas) {
|
|
454
|
+
errors.responseAreasError = "No more than ".concat(maxResponseAreas, " response areas should be defined.");
|
|
455
|
+
} else if (nbOfResponseAreas < 1) {
|
|
456
|
+
errors.responseAreasError = 'There should be at least 1 response area defined.';
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
if (!isEmpty(responsesErrors)) {
|
|
461
|
+
errors.responsesErrors = responsesErrors;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
return errors;
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
export { createCorrectResponseSession, createDefaultModel, model, normalize, outcome, validate };
|
|
468
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sources":["../controller/src/utils.js","../controller/src/defaults.js","../controller/src/index.js"],"sourcesContent":["export const ResponseTypes = {\n advanced: 'Advanced Multi',\n simple: 'Simple',\n};\n","import { ResponseTypes } from './utils';\n\nexport default {\n allowTrailingZerosDefault: false,\n customKeys: [],\n equationEditor: '8',\n expression: '',\n feedback: {\n correct: { default: 'Correct', type: 'none' },\n incorrect: { default: 'Incorrect', type: 'none' },\n partial: { default: 'Nearly', type: 'none' },\n },\n feedbackEnabled: false,\n ignoreOrderDefault: false,\n partialScoring: true,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n responseType: ResponseTypes.advanced,\n responses: [],\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n validationDefault: 'literal',\n};\n","import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\n}\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.showNote = false;\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 out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\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 { expression = '', responses, responseType } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\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 (responses || []).forEach((response, index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/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 at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"names":["ResponseTypes","advanced","simple","allowTrailingZerosDefault","customKeys","equationEditor","expression","feedback","correct","default","type","incorrect","partial","feedbackEnabled","ignoreOrderDefault","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","responseType","responses","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","validationDefault","translator","Translator","log","debug","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","isAdvanced","correctness","score","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItems","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","Object","keys","alternates","map","alternateId","i","length","mv","latexEqual","e","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","_objectSpread","outcome","completed","isEmpty","empty","normalize","normalizedQuestion","extraCSSRules","language","getActualFeedbackForCorrectness","out","disabled","view","note","t","lng","showNote","some","role","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","RESPONSE_TOKEN","o","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getContent","html","validate","maxResponseAreas","responsesErrors","errors","field","required","index","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"mappings":"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"}
|
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": "10.0.1-esm.0",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"description": "",
|
|
10
10
|
"scripts": {
|
|
@@ -29,10 +29,13 @@
|
|
|
29
29
|
},
|
|
30
30
|
"author": "",
|
|
31
31
|
"license": "ISC",
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "8a8ab6fc8351e5021a69230889157a4a38d80e83",
|
|
33
33
|
"module": "src/index.js",
|
|
34
34
|
"exports": {
|
|
35
|
-
"
|
|
36
|
-
|
|
35
|
+
"./controller": {
|
|
36
|
+
"import": "./esm/controller.js",
|
|
37
|
+
"require": "./controller/lib/index.js",
|
|
38
|
+
"default": "./esm/controller.js"
|
|
39
|
+
}
|
|
37
40
|
}
|
|
38
41
|
}
|