@pie-element/math-inline 12.1.1-next.39 → 12.1.1-next.41
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/author.js +2 -0
- package/configure.js +2 -0
- package/controller.js +1 -0
- package/dist/author/configure.d.ts +25 -0
- package/dist/author/configure.js +114 -0
- package/dist/author/defaults.d.ts +186 -0
- package/dist/author/defaults.js +145 -0
- package/dist/author/general-config-block.d.ts +35 -0
- package/dist/author/general-config-block.js +390 -0
- package/dist/author/index.d.ts +61 -0
- package/dist/author/index.js +80 -0
- package/dist/author/response.d.ts +40 -0
- package/dist/author/response.js +238 -0
- package/dist/author/utils.d.ts +14 -0
- package/dist/author/utils.js +13 -0
- package/dist/browser/assets/Symbola-4c507403.woff2 +0 -0
- package/dist/browser/author/index.js +28235 -0
- package/dist/browser/author/index.js.map +1 -0
- package/dist/browser/controller/index.js +37791 -0
- package/dist/browser/controller/index.js.map +1 -0
- package/dist/browser/delivery/index.js +134 -0
- package/dist/browser/delivery/index.js.map +1 -0
- package/dist/browser/dist--pvq7WNe.js +324 -0
- package/dist/browser/dist--pvq7WNe.js.map +1 -0
- package/dist/browser/dist-DCmVXYeO.js +1528 -0
- package/dist/browser/dist-DCmVXYeO.js.map +1 -0
- package/dist/browser/dist-gqdwfIdp.js +16888 -0
- package/dist/browser/dist-gqdwfIdp.js.map +1 -0
- package/dist/browser/editor-runtime/assets/Symbola-4c507403.woff2 +0 -0
- package/dist/browser/editor-runtime/author/index.js +11826 -0
- package/dist/browser/editor-runtime/author/index.js.map +1 -0
- package/dist/browser/editor-runtime/controller/index.js +37791 -0
- package/dist/browser/editor-runtime/controller/index.js.map +1 -0
- package/dist/browser/editor-runtime/delivery/index.js +134 -0
- package/dist/browser/editor-runtime/delivery/index.js.map +1 -0
- package/dist/browser/editor-runtime/dist-CiHbVK7d.js +324 -0
- package/dist/browser/editor-runtime/dist-CiHbVK7d.js.map +1 -0
- package/dist/browser/editor-runtime/dist-DCmVXYeO.js +1528 -0
- package/dist/browser/editor-runtime/dist-DCmVXYeO.js.map +1 -0
- package/dist/browser/editor-runtime/dist-Dpdlv54W.js +16888 -0
- package/dist/browser/editor-runtime/dist-Dpdlv54W.js.map +1 -0
- package/dist/browser/editor-runtime/main-BUVI2Mb9.js +973 -0
- package/dist/browser/editor-runtime/main-BUVI2Mb9.js.map +1 -0
- package/dist/browser/editor-runtime/print/index.js +52 -0
- package/dist/browser/editor-runtime/print/index.js.map +1 -0
- package/dist/browser/main-BO4lvRCJ.js +973 -0
- package/dist/browser/main-BO4lvRCJ.js.map +1 -0
- package/dist/browser/print/index.js +52 -0
- package/dist/browser/print/index.js.map +1 -0
- package/dist/controller/defaults.d.ts +44 -0
- package/dist/controller/defaults.js +39 -0
- package/dist/controller/index.d.ts +22 -0
- package/dist/controller/index.js +171 -0
- package/dist/controller/utils.d.ts +12 -0
- package/dist/controller/utils.js +7 -0
- package/dist/delivery/index.d.ts +22 -0
- package/dist/delivery/index.js +54 -0
- package/dist/delivery/main.d.ts +44 -0
- package/dist/delivery/main.js +606 -0
- package/dist/delivery/simple-question-block.d.ts +27 -0
- package/dist/delivery/simple-question-block.js +94 -0
- package/dist/delivery/utils.d.ts +12 -0
- package/dist/delivery/utils.js +7 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.iife.d.ts +8 -0
- package/dist/index.iife.js +224 -0
- package/dist/index.js +2 -0
- package/dist/math-inline.css +2 -0
- package/dist/print/index.d.ts +15 -0
- package/dist/print/index.js +52 -0
- package/dist/runtime-support.d.ts +12 -0
- package/dist/runtime-support.js +12 -0
- package/module/assets/Symbola-4c507403.woff2 +0 -0
- package/module/print.js +25525 -0
- package/module/print.js.map +1 -0
- package/package.json +110 -26
- package/print.js +2 -0
- package/CHANGELOG.json +0 -2627
- package/CHANGELOG.md +0 -2473
- package/LICENSE.md +0 -5
- package/README.md +0 -3
- package/configure/CHANGELOG.json +0 -1652
- package/configure/CHANGELOG.md +0 -2101
- package/configure/lib/configure.js +0 -186
- package/configure/lib/configure.js.map +0 -1
- package/configure/lib/defaults.js +0 -185
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/general-config-block.js +0 -525
- package/configure/lib/general-config-block.js.map +0 -1
- package/configure/lib/index.js +0 -136
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/response.js +0 -369
- package/configure/lib/response.js.map +0 -1
- package/configure/lib/utils.js +0 -31
- package/configure/lib/utils.js.map +0 -1
- package/configure/package.json +0 -29
- package/controller/CHANGELOG.json +0 -1002
- package/controller/CHANGELOG.md +0 -1536
- package/controller/lib/defaults.js +0 -43
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -383
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/utils.js +0 -11
- package/controller/lib/utils.js.map +0 -1
- package/controller/package.json +0 -26
- package/docs/config-schema.json +0 -2071
- package/docs/config-schema.json.md +0 -1533
- package/docs/demo/config.js +0 -8
- package/docs/demo/generate.js +0 -41
- package/docs/demo/index.html +0 -1
- package/docs/demo/session.js +0 -11
- package/docs/pie-schema.json +0 -1472
- package/docs/pie-schema.json.md +0 -845
- package/lib/index.js +0 -93
- package/lib/index.js.map +0 -1
- package/lib/main.js +0 -1030
- package/lib/main.js.map +0 -1
- package/lib/print.js +0 -92
- package/lib/print.js.map +0 -1
- package/lib/simple-question-block.js +0 -148
- package/lib/simple-question-block.js.map +0 -1
- package/lib/utils.js +0 -11
- package/lib/utils.js.map +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _utils = require("./utils");
|
|
8
|
-
var _default = exports.default = {
|
|
9
|
-
allowTrailingZerosDefault: false,
|
|
10
|
-
customKeys: [],
|
|
11
|
-
equationEditor: '8',
|
|
12
|
-
expression: '',
|
|
13
|
-
feedback: {
|
|
14
|
-
correct: {
|
|
15
|
-
default: 'Correct',
|
|
16
|
-
type: 'none'
|
|
17
|
-
},
|
|
18
|
-
incorrect: {
|
|
19
|
-
default: 'Incorrect',
|
|
20
|
-
type: 'none'
|
|
21
|
-
},
|
|
22
|
-
partial: {
|
|
23
|
-
default: 'Nearly',
|
|
24
|
-
type: 'none'
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
feedbackEnabled: false,
|
|
28
|
-
ignoreOrderDefault: false,
|
|
29
|
-
partialScoring: true,
|
|
30
|
-
prompt: '',
|
|
31
|
-
promptEnabled: true,
|
|
32
|
-
rationale: '',
|
|
33
|
-
rationaleEnabled: true,
|
|
34
|
-
responseType: _utils.ResponseTypes.advanced,
|
|
35
|
-
responses: [],
|
|
36
|
-
scoringType: 'auto',
|
|
37
|
-
studentInstructionsEnabled: true,
|
|
38
|
-
teacherInstructions: '',
|
|
39
|
-
teacherInstructionsEnabled: true,
|
|
40
|
-
toolbarEditorPosition: 'bottom',
|
|
41
|
-
validationDefault: 'literal'
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","names":["_utils","require","_default","exports","default","allowTrailingZerosDefault","customKeys","equationEditor","expression","feedback","correct","type","incorrect","partial","feedbackEnabled","ignoreOrderDefault","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","responseType","ResponseTypes","advanced","responses","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","validationDefault"],"sources":["../src/defaults.js"],"sourcesContent":["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"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAwC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEzB;EACbC,yBAAyB,EAAE,KAAK;EAChCC,UAAU,EAAE,EAAE;EACdC,cAAc,EAAE,GAAG;EACnBC,UAAU,EAAE,EAAE;EACdC,QAAQ,EAAE;IACRC,OAAO,EAAE;MAAEN,OAAO,EAAE,SAAS;MAAEO,IAAI,EAAE;IAAO,CAAC;IAC7CC,SAAS,EAAE;MAAER,OAAO,EAAE,WAAW;MAAEO,IAAI,EAAE;IAAO,CAAC;IACjDE,OAAO,EAAE;MAAET,OAAO,EAAE,QAAQ;MAAEO,IAAI,EAAE;IAAO;EAC7C,CAAC;EACDG,eAAe,EAAE,KAAK;EACtBC,kBAAkB,EAAE,KAAK;EACzBC,cAAc,EAAE,IAAI;EACpBC,MAAM,EAAE,EAAE;EACVC,aAAa,EAAE,IAAI;EACnBC,SAAS,EAAE,EAAE;EACbC,gBAAgB,EAAE,IAAI;EACtBC,YAAY,EAAEC,oBAAa,CAACC,QAAQ;EACpCC,SAAS,EAAE,EAAE;EACbC,WAAW,EAAE,MAAM;EACnBC,0BAA0B,EAAE,IAAI;EAChCC,mBAAmB,EAAE,EAAE;EACvBC,0BAA0B,EAAE,IAAI;EAChCC,qBAAqB,EAAE,QAAQ;EAC/BC,iBAAiB,EAAE;AACrB,CAAC","ignoreList":[]}
|
package/controller/lib/index.js
DELETED
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.createCorrectResponseSession = void 0;
|
|
8
|
-
exports.createDefaultModel = createDefaultModel;
|
|
9
|
-
exports.validate = exports.outcome = exports.normalize = exports.model = exports.getLogTrace = void 0;
|
|
10
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
11
|
-
var _lodashEs = require("lodash-es");
|
|
12
|
-
var _feedback = require("@pie-lib/feedback");
|
|
13
|
-
var _utils = require("./utils");
|
|
14
|
-
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
15
|
-
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
16
|
-
var mv = _interopRequireWildcard(require("@pie-framework/math-validation"));
|
|
17
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
18
|
-
const {
|
|
19
|
-
translator
|
|
20
|
-
} = _translator.default;
|
|
21
|
-
const log = (0, _debug.default)('@pie-element:math-inline:controller');
|
|
22
|
-
const getResponseCorrectness = (model, answerItem, isOutcome) => {
|
|
23
|
-
const correctResponses = model.responses;
|
|
24
|
-
const isAdvanced = model.responseType === _utils.ResponseTypes.advanced;
|
|
25
|
-
if (!answerItem) {
|
|
26
|
-
return {
|
|
27
|
-
correctness: 'unanswered',
|
|
28
|
-
score: isOutcome ? 0 : '0%',
|
|
29
|
-
correct: false
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);
|
|
33
|
-
const correctnessObject = {
|
|
34
|
-
correctness: 'incorrect',
|
|
35
|
-
score: isOutcome ? 0 : '0%',
|
|
36
|
-
correct: false
|
|
37
|
-
};
|
|
38
|
-
if (isAnswerCorrect) {
|
|
39
|
-
correctnessObject.correctness = 'correct';
|
|
40
|
-
correctnessObject.score = isOutcome ? 1 : '100%';
|
|
41
|
-
correctnessObject.correct = true;
|
|
42
|
-
}
|
|
43
|
-
return correctnessObject;
|
|
44
|
-
};
|
|
45
|
-
function getIsAnswerCorrect(correctResponseItems, answerItem) {
|
|
46
|
-
let answerCorrect = false;
|
|
47
|
-
(correctResponseItems || []).forEach(correctResponse => {
|
|
48
|
-
if (answerCorrect) return;
|
|
49
|
-
const opts = {
|
|
50
|
-
mode: correctResponse.validation || _defaults.default.validationDefault
|
|
51
|
-
};
|
|
52
|
-
if (opts.mode === 'literal') {
|
|
53
|
-
opts.literal = {
|
|
54
|
-
allowTrailingZeros: correctResponse.allowTrailingZeros || false,
|
|
55
|
-
ignoreOrder: correctResponse.ignoreOrder || false
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
const acceptedValues = [correctResponse.answer].concat(Object.keys(correctResponse.alternates || {}).map(alternateId => correctResponse.alternates[alternateId]));
|
|
59
|
-
for (let i = 0; i < acceptedValues.length; i++) {
|
|
60
|
-
try {
|
|
61
|
-
if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {
|
|
62
|
-
answerCorrect = true;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
} catch (e) {
|
|
66
|
-
log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return answerCorrect;
|
|
72
|
-
}
|
|
73
|
-
const getCorrectness = (question, env, session, isOutcome) => {
|
|
74
|
-
if (env.mode === 'evaluate') {
|
|
75
|
-
return getResponseCorrectness(question, question.responseType === _utils.ResponseTypes.advanced ? session && session.completeAnswer || '' : session && session.response, isOutcome);
|
|
76
|
-
}
|
|
77
|
-
return undefined;
|
|
78
|
-
};
|
|
79
|
-
function createDefaultModel(model = {}) {
|
|
80
|
-
return new Promise(resolve => {
|
|
81
|
-
resolve({
|
|
82
|
-
config: {
|
|
83
|
-
..._defaults.default,
|
|
84
|
-
...model
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Generates detailed trace log for math-inline scoring evaluation
|
|
92
|
-
* @param {Object} question
|
|
93
|
-
* @param {Object} session
|
|
94
|
-
* @param {Object} env
|
|
95
|
-
* @returns {Array<string>} traceLog
|
|
96
|
-
*/
|
|
97
|
-
const getLogTrace = (question, session, env) => {
|
|
98
|
-
const traceLog = [];
|
|
99
|
-
if (!session || !session.response && !session.completeAnswer) {
|
|
100
|
-
traceLog.push('Student did not enter a response.');
|
|
101
|
-
return traceLog;
|
|
102
|
-
}
|
|
103
|
-
const responseType = question?.responseType;
|
|
104
|
-
const isAdvanced = responseType === _utils.ResponseTypes.advanced;
|
|
105
|
-
const studentAnswer = isAdvanced ? session.completeAnswer : session.response;
|
|
106
|
-
const cleanStudentAnswer = studentAnswer ? studentAnswer.replace(/\\/g, '') : '';
|
|
107
|
-
if (!cleanStudentAnswer) {
|
|
108
|
-
traceLog.push('Student entered a response, but then it was removed.');
|
|
109
|
-
return traceLog;
|
|
110
|
-
}
|
|
111
|
-
traceLog.push(`Student entered response: ${cleanStudentAnswer}.`);
|
|
112
|
-
traceLog.push(`Response type: ${isAdvanced ? 'advanced' : 'simple'}.`);
|
|
113
|
-
const responses = question.responses || [];
|
|
114
|
-
const responsesToCheck = isAdvanced ? responses : responses.slice(0, 1);
|
|
115
|
-
responsesToCheck.forEach((response, index) => {
|
|
116
|
-
const validation = response.validation || question.validationDefault;
|
|
117
|
-
traceLog.push(`Response ${index + 1} validation mode: ${validation}.`);
|
|
118
|
-
if (validation === 'literal') {
|
|
119
|
-
const allowTrailingZeros = response.allowTrailingZeros || false;
|
|
120
|
-
const ignoreOrder = response.ignoreOrder || false;
|
|
121
|
-
traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);
|
|
122
|
-
traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);
|
|
123
|
-
}
|
|
124
|
-
const acceptedValues = [response.answer].concat(Object.keys(response.alternates || {}).map(alternateId => response.alternates[alternateId]));
|
|
125
|
-
if (acceptedValues.length > 1) {
|
|
126
|
-
traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
const correctness = getCorrectness(question, env, session, true);
|
|
130
|
-
if (correctness.correctness === 'correct') {
|
|
131
|
-
traceLog.push('Student answer matches one of the accepted responses.');
|
|
132
|
-
} else if (correctness.correctness === 'incorrect') {
|
|
133
|
-
traceLog.push('Student answer does not match any of the accepted responses.');
|
|
134
|
-
} else {
|
|
135
|
-
traceLog.push('Student answer could not be evaluated.');
|
|
136
|
-
}
|
|
137
|
-
traceLog.push(`Response evaluated as ${correctness.correctness}.`);
|
|
138
|
-
traceLog.push(`Final score: ${correctness.score}.`);
|
|
139
|
-
return traceLog;
|
|
140
|
-
};
|
|
141
|
-
exports.getLogTrace = getLogTrace;
|
|
142
|
-
const outcome = (question, session, env) => {
|
|
143
|
-
return new Promise(resolve => {
|
|
144
|
-
if (env.mode !== 'evaluate') {
|
|
145
|
-
resolve({
|
|
146
|
-
score: undefined,
|
|
147
|
-
completed: undefined,
|
|
148
|
-
logTrace: []
|
|
149
|
-
});
|
|
150
|
-
} else {
|
|
151
|
-
if (!session || (0, _lodashEs.isEmpty)(session)) {
|
|
152
|
-
resolve({
|
|
153
|
-
score: 0,
|
|
154
|
-
empty: true,
|
|
155
|
-
logTrace: ['Student did not enter a response.']
|
|
156
|
-
});
|
|
157
|
-
} else {
|
|
158
|
-
const correctness = getCorrectness(question, env, session, true);
|
|
159
|
-
resolve({
|
|
160
|
-
score: correctness.score,
|
|
161
|
-
logTrace: getLogTrace(question, session, env)
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
};
|
|
167
|
-
exports.outcome = outcome;
|
|
168
|
-
const normalize = question => {
|
|
169
|
-
// making sure that defaults are set
|
|
170
|
-
if (!(0, _lodashEs.isEmpty)(question.responses)) {
|
|
171
|
-
question.responses = question.responses.map(correctResponse => ({
|
|
172
|
-
...correctResponse,
|
|
173
|
-
validation: correctResponse.validation || question.validationDefault,
|
|
174
|
-
allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,
|
|
175
|
-
ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault
|
|
176
|
-
}));
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
..._defaults.default,
|
|
180
|
-
...question
|
|
181
|
-
};
|
|
182
|
-
};
|
|
183
|
-
exports.normalize = normalize;
|
|
184
|
-
const model = (question, session, env) => new Promise(resolve => {
|
|
185
|
-
const normalizedQuestion = normalize(question);
|
|
186
|
-
const correctness = getCorrectness(normalizedQuestion, env, session);
|
|
187
|
-
const {
|
|
188
|
-
extraCSSRules,
|
|
189
|
-
responses,
|
|
190
|
-
language,
|
|
191
|
-
...config
|
|
192
|
-
} = normalizedQuestion;
|
|
193
|
-
config.responses = config.responseType === _utils.ResponseTypes.simple ? responses.slice(0, 1) : responses;
|
|
194
|
-
const feedback = env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled ? (0, _feedback.getActualFeedbackForCorrectness)(correctness?.correctness, normalizedQuestion.feedback) : undefined;
|
|
195
|
-
const out = {
|
|
196
|
-
extraCSSRules,
|
|
197
|
-
config,
|
|
198
|
-
correctness,
|
|
199
|
-
feedback,
|
|
200
|
-
disabled: env.mode !== 'gather',
|
|
201
|
-
view: env.mode === 'view'
|
|
202
|
-
};
|
|
203
|
-
const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', {
|
|
204
|
-
lng: language
|
|
205
|
-
});
|
|
206
|
-
const showNote = config?.responses?.length > 1 || (config?.responses || []).some(response => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0);
|
|
207
|
-
if (env.mode === 'evaluate') {
|
|
208
|
-
out.correctResponse = {};
|
|
209
|
-
out.config.showNote = showNote;
|
|
210
|
-
out.config.note = note;
|
|
211
|
-
} else {
|
|
212
|
-
out.config.responses = [];
|
|
213
|
-
out.config.showNote = false;
|
|
214
|
-
}
|
|
215
|
-
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
216
|
-
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
217
|
-
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
218
|
-
} else {
|
|
219
|
-
out.rationale = null;
|
|
220
|
-
out.teacherInstructions = null;
|
|
221
|
-
out.config.rationale = null;
|
|
222
|
-
out.config.teacherInstructions = null;
|
|
223
|
-
}
|
|
224
|
-
out.config.env = env;
|
|
225
|
-
out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;
|
|
226
|
-
out.language = language;
|
|
227
|
-
log('out: ', out);
|
|
228
|
-
resolve(out);
|
|
229
|
-
});
|
|
230
|
-
exports.model = model;
|
|
231
|
-
const escape = string => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
|
232
|
-
|
|
233
|
-
const simpleSessionResponse = question => new Promise(resolve => {
|
|
234
|
-
const {
|
|
235
|
-
responses,
|
|
236
|
-
id
|
|
237
|
-
} = question;
|
|
238
|
-
const {
|
|
239
|
-
answer
|
|
240
|
-
} = responses && responses.length ? responses[0] : {};
|
|
241
|
-
resolve({
|
|
242
|
-
id,
|
|
243
|
-
response: answer || '',
|
|
244
|
-
completeAnswer: answer || ''
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
// use this for items like E672793
|
|
249
|
-
const removeTrailingEscape = str => str.endsWith('\\') ? str.slice(0, -1) : str;
|
|
250
|
-
const advancedSessionResponse = question => new Promise(resolve => {
|
|
251
|
-
const {
|
|
252
|
-
responses,
|
|
253
|
-
id
|
|
254
|
-
} = question;
|
|
255
|
-
const {
|
|
256
|
-
answer
|
|
257
|
-
} = responses && responses.length ? responses[0] : {};
|
|
258
|
-
if (!answer) {
|
|
259
|
-
resolve({
|
|
260
|
-
id,
|
|
261
|
-
answers: {},
|
|
262
|
-
completeAnswer: ''
|
|
263
|
-
});
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
try {
|
|
267
|
-
const e = question.expression;
|
|
268
|
-
const RESPONSE_TOKEN = /\\{\\{\s*response\s*\\}\\}/g;
|
|
269
|
-
const o = escape(e).split(RESPONSE_TOKEN);
|
|
270
|
-
const to = o.map(t => t === '' ? t : t.replace(/\s+/g, () => '\\s*'));
|
|
271
|
-
const tt = to.join('(.*)');
|
|
272
|
-
const m = answer.match(new RegExp(tt));
|
|
273
|
-
const count = o.length - 1;
|
|
274
|
-
if (!m) {
|
|
275
|
-
resolve({
|
|
276
|
-
id,
|
|
277
|
-
answers: {},
|
|
278
|
-
completeAnswer: answer
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
// eslint-disable-next-line no-console
|
|
282
|
-
console.log(`can not find match: ${o} in ${answer}`);
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
m.shift();
|
|
286
|
-
const answers = {};
|
|
287
|
-
for (var i = 0; i < count; i++) {
|
|
288
|
-
answers[`r${i + 1}`] = {
|
|
289
|
-
value: removeTrailingEscape(m[i].trim())
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
resolve({
|
|
293
|
-
id,
|
|
294
|
-
answers,
|
|
295
|
-
completeAnswer: answer
|
|
296
|
-
});
|
|
297
|
-
} catch (e) {
|
|
298
|
-
resolve({
|
|
299
|
-
id,
|
|
300
|
-
answers: {},
|
|
301
|
-
completeAnswer: answer
|
|
302
|
-
});
|
|
303
|
-
// eslint-disable-next-line no-console
|
|
304
|
-
console.error(e.toString());
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
const createCorrectResponseSession = (question, env) => {
|
|
308
|
-
if (env.mode === 'evaluate' || env.role !== 'instructor') {
|
|
309
|
-
// eslint-disable-next-line no-console
|
|
310
|
-
console.error('can not create correct response session if mode is evaluate or role is not instructor');
|
|
311
|
-
return Promise.resolve(null);
|
|
312
|
-
}
|
|
313
|
-
if ((question.responseType || '').toLowerCase() === 'simple') {
|
|
314
|
-
return simpleSessionResponse(question, env);
|
|
315
|
-
} else {
|
|
316
|
-
return advancedSessionResponse(question, env);
|
|
317
|
-
}
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
// remove all html tags
|
|
321
|
-
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
322
|
-
const getInnerText = html => (html || '').replaceAll(/<[^>]*>/g, '');
|
|
323
|
-
|
|
324
|
-
// remove all html tags except img, iframe and source tag for audio
|
|
325
|
-
const getContent = html => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
326
|
-
const validate = (model = {}, config = {}) => {
|
|
327
|
-
const {
|
|
328
|
-
expression = '',
|
|
329
|
-
responses,
|
|
330
|
-
responseType
|
|
331
|
-
} = model;
|
|
332
|
-
const {
|
|
333
|
-
maxResponseAreas
|
|
334
|
-
} = config;
|
|
335
|
-
const responsesErrors = {};
|
|
336
|
-
const errors = {};
|
|
337
|
-
['teacherInstructions', 'prompt', 'rationale'].forEach(field => {
|
|
338
|
-
if (config[field]?.required && !getContent(model[field])) {
|
|
339
|
-
errors[field] = 'This field is required.';
|
|
340
|
-
}
|
|
341
|
-
});
|
|
342
|
-
(responses || []).forEach((response, index) => {
|
|
343
|
-
const {
|
|
344
|
-
answer
|
|
345
|
-
} = response;
|
|
346
|
-
const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();
|
|
347
|
-
const alternatesErrors = {};
|
|
348
|
-
const responseError = {};
|
|
349
|
-
if (answer === '') {
|
|
350
|
-
responseError.answer = 'Content should not be empty.';
|
|
351
|
-
}
|
|
352
|
-
reversedAlternates.forEach(([key, value], index) => {
|
|
353
|
-
if (value === '') {
|
|
354
|
-
alternatesErrors[key] = 'Content should not be empty.';
|
|
355
|
-
} else {
|
|
356
|
-
const identicalAnswer = answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);
|
|
357
|
-
if (identicalAnswer) {
|
|
358
|
-
alternatesErrors[key] = 'Content should be unique.';
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
});
|
|
362
|
-
if (!(0, _lodashEs.isEmpty)(responseError) || !(0, _lodashEs.isEmpty)(alternatesErrors)) {
|
|
363
|
-
responsesErrors[index] = {
|
|
364
|
-
...responseError,
|
|
365
|
-
...alternatesErrors
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
if (responseType === 'Advanced Multi') {
|
|
370
|
-
const nbOfResponseAreas = (expression.match(/\{\{response\}\}/g) || []).length;
|
|
371
|
-
if (nbOfResponseAreas > maxResponseAreas) {
|
|
372
|
-
errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;
|
|
373
|
-
} else if (nbOfResponseAreas < 1) {
|
|
374
|
-
errors.responseAreasError = 'There should be at least 1 response area defined.';
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
if (!(0, _lodashEs.isEmpty)(responsesErrors)) {
|
|
378
|
-
errors.responsesErrors = responsesErrors;
|
|
379
|
-
}
|
|
380
|
-
return errors;
|
|
381
|
-
};
|
|
382
|
-
exports.validate = validate;
|
|
383
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_feedback","_utils","_translator","_defaults","mv","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","translator","Translator","log","debug","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItems","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","keys","alternates","map","alternateId","length","latexEqual","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","getLogTrace","traceLog","push","studentAnswer","cleanStudentAnswer","replace","responsesToCheck","index","exports","outcome","completed","logTrace","isEmpty","empty","normalize","allowTrailingZerosDefault","ignoreOrderDefault","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","getActualFeedbackForCorrectness","out","disabled","view","note","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","escape","string","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getInnerText","html","replaceAll","getContent","validate","maxResponseAreas","responsesErrors","errors","field","required","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\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\n/**\n * Generates detailed trace log for math-inline scoring evaluation\n * @param {Object} question\n * @param {Object} session\n * @param {Object} env\n * @returns {Array<string>} traceLog\n */\nexport const getLogTrace = (question, session, env) => {\n const traceLog = [];\n\n if (!session || (!session.response && !session.completeAnswer)) {\n traceLog.push('Student did not enter a response.');\n return traceLog;\n }\n\n const responseType = question?.responseType;\n const isAdvanced = responseType === ResponseTypes.advanced;\n const studentAnswer = isAdvanced ? session.completeAnswer : session.response;\n\n const cleanStudentAnswer = studentAnswer ? studentAnswer.replace(/\\\\/g, '') : '';\n\n if (!cleanStudentAnswer) {\n traceLog.push('Student entered a response, but then it was removed.');\n return traceLog;\n }\n\n traceLog.push(`Student entered response: ${cleanStudentAnswer}.`);\n traceLog.push(`Response type: ${isAdvanced ? 'advanced' : 'simple'}.`);\n\n const responses = question.responses || [];\n const responsesToCheck = isAdvanced ? responses : responses.slice(0, 1);\n \n responsesToCheck.forEach((response, index) => {\n const validation = response.validation || question.validationDefault;\n traceLog.push(`Response ${index + 1} validation mode: ${validation}.`);\n \n if (validation === 'literal') {\n const allowTrailingZeros = response.allowTrailingZeros || false;\n const ignoreOrder = response.ignoreOrder || false;\n\n traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);\n traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);\n }\n \n const acceptedValues = [response.answer].concat(\n Object.keys(response.alternates || {}).map((alternateId) => response.alternates[alternateId])\n );\n \n if (acceptedValues.length > 1) {\n traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);\n }\n });\n\n const correctness = getCorrectness(question, env, session, true);\n\n if (correctness.correctness === 'correct') {\n traceLog.push('Student answer matches one of the accepted responses.');\n } else if (correctness.correctness === 'incorrect') {\n traceLog.push('Student answer does not match any of the accepted responses.');\n } else {\n traceLog.push('Student answer could not be evaluated.');\n }\n\n traceLog.push(`Response evaluated as ${correctness.correctness}.`);\n traceLog.push(`Final score: ${correctness.score}.`);\n\n return traceLog;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined, logTrace: [] });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true, logTrace: ['Student did not enter a response.'] });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score, logTrace: getLogTrace(question, session, env) });\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"],"mappings":"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","ignoreList":[]}
|
package/controller/lib/utils.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ResponseTypes = void 0;
|
|
7
|
-
const ResponseTypes = exports.ResponseTypes = {
|
|
8
|
-
advanced: 'Advanced Multi',
|
|
9
|
-
simple: 'Simple'
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["ResponseTypes","exports","advanced","simple"],"sources":["../src/utils.js"],"sourcesContent":["export const ResponseTypes = {\n advanced: 'Advanced Multi',\n simple: 'Simple',\n};\n"],"mappings":";;;;;;AAAO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC3BE,QAAQ,EAAE,gBAAgB;EAC1BC,MAAM,EAAE;AACV,CAAC","ignoreList":[]}
|
package/controller/package.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@pie-element/math-inline-controller",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "10.1.0",
|
|
5
|
-
"description": "",
|
|
6
|
-
"main": "lib/index.js",
|
|
7
|
-
"module": "src/index.js",
|
|
8
|
-
"scripts": {
|
|
9
|
-
"test": "./node_modules/.bin/jest"
|
|
10
|
-
},
|
|
11
|
-
"dependencies": {
|
|
12
|
-
"@pie-framework/math-validation": "^1.4.2",
|
|
13
|
-
"@pie-lib/feedback": "2.0.2",
|
|
14
|
-
"@pie-lib/translator": "4.0.2",
|
|
15
|
-
"debug": "^4.1.1",
|
|
16
|
-
"lodash-es": "^4.17.23"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"babel-jest": "^29.7.0",
|
|
20
|
-
"babel-preset-env": "^1.6.1",
|
|
21
|
-
"babel-preset-stage-0": "^6.24.1",
|
|
22
|
-
"jest": "^29.7.0"
|
|
23
|
-
},
|
|
24
|
-
"author": "",
|
|
25
|
-
"license": "ISC"
|
|
26
|
-
}
|