@pie-element/math-inline 7.16.6 → 7.17.1-next.14
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 +11 -0
- package/configure/CHANGELOG.md +11 -0
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +11 -0
- package/controller/lib/index.js +44 -59
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/module/configure.js +1 -1
- package/module/controller.js +96 -63
- package/module/element.js +1 -1
- package/module/index.html +1 -1
- package/module/manifest.json +2 -2
- package/module/print.html +1 -1
- package/module/print.js +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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
|
+
# [7.17.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@7.16.6...@pie-element/math-inline@7.17.0) (2024-05-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-3736, PD-3734, PD-2488 ([3c44f06](https://github.com/pie-framework/pie-elements/commit/3c44f06d96e609246acde257a8223dc16192c2c4))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [7.16.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@7.16.5...@pie-element/math-inline@7.16.6) (2024-05-27)
|
|
7
18
|
|
|
8
19
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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
|
+
# [7.13.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@7.12.6...@pie-element/math-inline-configure@7.13.0) (2024-05-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-3736, PD-3734, PD-2488 ([3c44f06](https://github.com/pie-framework/pie-elements/commit/3c44f06d96e609246acde257a8223dc16192c2c4))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [7.12.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@7.12.5...@pie-element/math-inline-configure@7.12.6) (2024-05-27)
|
|
7
18
|
|
|
8
19
|
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/math-inline-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.13.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@material-ui/icons": "^3.0.1",
|
|
12
12
|
"@pie-framework/mathquill": "^1.1.3",
|
|
13
13
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
14
|
-
"@pie-lib/pie-toolbox": "1.
|
|
14
|
+
"@pie-lib/pie-toolbox": "1.20.1",
|
|
15
15
|
"classnames": "^2.2.5",
|
|
16
16
|
"debug": "^3.1.0",
|
|
17
17
|
"prop-types": "^15.6.2",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
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
|
+
# [6.11.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@6.10.6...@pie-element/math-inline-controller@6.11.0) (2024-05-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-3736, PD-3734, PD-2488 ([3c44f06](https://github.com/pie-framework/pie-elements/commit/3c44f06d96e609246acde257a8223dc16192c2c4))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [6.10.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@6.10.5...@pie-element/math-inline-controller@6.10.6) (2024-05-27)
|
|
7
18
|
|
|
8
19
|
|
package/controller/lib/index.js
CHANGED
|
@@ -9,8 +9,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.createCorrectResponseSession = void 0;
|
|
11
11
|
exports.createDefaultModel = createDefaultModel;
|
|
12
|
-
exports.model =
|
|
13
|
-
exports.validate = exports.outcome = exports.normalize = void 0;
|
|
12
|
+
exports.validate = exports.outcome = exports.normalize = exports.model = void 0;
|
|
14
13
|
|
|
15
14
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
15
|
|
|
@@ -115,6 +114,8 @@ var getCorrectness = function getCorrectness(question, env, session, isOutcome)
|
|
|
115
114
|
if (env.mode === 'evaluate') {
|
|
116
115
|
return getResponseCorrectness(question, question.responseType === _utils.ResponseTypes.advanced ? session && session.completeAnswer || '' : session && session.response, isOutcome);
|
|
117
116
|
}
|
|
117
|
+
|
|
118
|
+
return undefined;
|
|
118
119
|
};
|
|
119
120
|
|
|
120
121
|
function createDefaultModel() {
|
|
@@ -174,75 +175,59 @@ var normalize = function normalize(question) {
|
|
|
174
175
|
|
|
175
176
|
exports.normalize = normalize;
|
|
176
177
|
|
|
177
|
-
function model(question, session, env) {
|
|
178
|
+
var model = function model(question, session, env) {
|
|
178
179
|
return new Promise(function (resolve) {
|
|
180
|
+
var _config$responses;
|
|
181
|
+
|
|
179
182
|
var normalizedQuestion = normalize(question);
|
|
180
183
|
var correctness = getCorrectness(normalizedQuestion, env, session);
|
|
181
184
|
var responses = normalizedQuestion.responses,
|
|
182
185
|
language = normalizedQuestion.language,
|
|
183
186
|
config = (0, _objectWithoutProperties2["default"])(normalizedQuestion, _excluded);
|
|
184
|
-
|
|
187
|
+
config.responses = config.responseType === _utils.ResponseTypes.simple ? responses.slice(0, 1) : responses;
|
|
188
|
+
var feedback = env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled ? (0, _feedback.getActualFeedbackForCorrectness)(correctness === null || correctness === void 0 ? void 0 : correctness.correctness, normalizedQuestion.feedback) : undefined;
|
|
189
|
+
var out = {
|
|
190
|
+
config: config,
|
|
191
|
+
correctness: correctness,
|
|
192
|
+
feedback: feedback,
|
|
193
|
+
disabled: env.mode !== 'gather',
|
|
194
|
+
view: env.mode === 'view'
|
|
195
|
+
};
|
|
196
|
+
var note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', {
|
|
197
|
+
lng: language
|
|
198
|
+
});
|
|
199
|
+
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(function (response) {
|
|
200
|
+
return response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0;
|
|
201
|
+
});
|
|
185
202
|
|
|
186
|
-
if (
|
|
187
|
-
|
|
203
|
+
if (env.mode === 'evaluate') {
|
|
204
|
+
out.correctResponse = {};
|
|
205
|
+
out.config.showNote = showNote;
|
|
206
|
+
out.config.note = note;
|
|
188
207
|
} else {
|
|
189
|
-
config.responses =
|
|
208
|
+
out.config.responses = [];
|
|
209
|
+
out.config.showNote = false;
|
|
190
210
|
}
|
|
191
211
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
view: env.mode === 'view'
|
|
202
|
-
};
|
|
203
|
-
var out = base;
|
|
204
|
-
var showNote = !!((config === null || config === void 0 ? void 0 : (_config$responses = config.responses) === null || _config$responses === void 0 ? void 0 : _config$responses.length) > 1);
|
|
205
|
-
|
|
206
|
-
if (!note) {
|
|
207
|
-
note = translator.t('mathInline.primaryCorrectWithAlternates', {
|
|
208
|
-
lng: language
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
(config && config.responses || []).forEach(function (response) {
|
|
213
|
-
if (response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0) {
|
|
214
|
-
showNote = true;
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
if (env.mode === 'evaluate') {
|
|
220
|
-
out.correctResponse = {};
|
|
221
|
-
out.config.showNote = showNote;
|
|
222
|
-
out.config.note = note;
|
|
223
|
-
} else {
|
|
224
|
-
out.config.responses = [];
|
|
225
|
-
out.config.showNote = false;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
229
|
-
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
230
|
-
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
231
|
-
} else {
|
|
232
|
-
out.rationale = null;
|
|
233
|
-
out.teacherInstructions = null;
|
|
234
|
-
out.config.rationale = null;
|
|
235
|
-
out.config.teacherInstructions = null;
|
|
236
|
-
}
|
|
212
|
+
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
213
|
+
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
214
|
+
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
215
|
+
} else {
|
|
216
|
+
out.rationale = null;
|
|
217
|
+
out.teacherInstructions = null;
|
|
218
|
+
out.config.rationale = null;
|
|
219
|
+
out.config.teacherInstructions = null;
|
|
220
|
+
}
|
|
237
221
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
});
|
|
222
|
+
out.config.env = env;
|
|
223
|
+
out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;
|
|
224
|
+
out.language = language;
|
|
225
|
+
log('out: ', out);
|
|
226
|
+
resolve(out);
|
|
244
227
|
});
|
|
245
|
-
}
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
exports.model = model;
|
|
246
231
|
|
|
247
232
|
var escape = function escape(string) {
|
|
248
233
|
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItem","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","Object","keys","alternates","map","alternateId","i","length","mv","latexEqual","e","getCorrectness","question","env","session","completeAnswer","response","createDefaultModel","Promise","resolve","config","outcome","undefined","completed","empty","normalize","allowTrailingZerosDefault","ignoreOrderDefault","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","normalizedQuestion","language","note","simple","fb","feedback","then","base","disabled","view","out","showNote","t","lng","role","rationale","teacherInstructions","prompt","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","o","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","index","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","some","val","nbOfResponseAreas","responseAreasError"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/pie-toolbox/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(correctResponseItem, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItem || []).forEach((correctResponse) => {\n let 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 if (!answerCorrect) {\n const acceptedValues =\n [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n ) || [];\n\n try {\n for (let i = 0; i < acceptedValues.length; i++) {\n answerCorrect = mv.latexEqual(answerItem, acceptedValues[i], opts);\n\n if (answerCorrect) {\n break;\n }\n }\n } catch (e) {\n log('Parse failure when evaluating math', e, correctResponse, answerItem);\n\n answerCorrect = false;\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\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 {\n ...defaults,\n feedbackEnabled: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n };\n};\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { responses, language, ...config } = normalizedQuestion;\n let { note } = normalizedQuestion;\n\n if (config.responseType === ResponseTypes.simple) {\n config.responses = responses.slice(0, 1);\n } else {\n config.responses = responses;\n }\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const base = {\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const out = base;\n let showNote = !!(config?.responses?.length > 1);\n\n if (!note) {\n note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n }\n ((config && config.responses) || []).forEach((response) => {\n if (response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0) {\n showNote = true;\n return;\n }\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 });\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) => {\n return str.endsWith('\\\\') ? str.slice(0, -1) : str;\n};\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 and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/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"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItem","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","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","outcome","completed","empty","normalize","allowTrailingZerosDefault","ignoreOrderDefault","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","normalizedQuestion","language","simple","feedback","out","disabled","view","note","t","lng","showNote","some","role","rationale","teacherInstructions","prompt","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","o","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","index","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/pie-toolbox/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(correctResponseItem, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItem || []).forEach((correctResponse) => {\n let 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 if (!answerCorrect) {\n const acceptedValues =\n [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n ) || [];\n\n try {\n for (let i = 0; i < acceptedValues.length; i++) {\n answerCorrect = mv.latexEqual(answerItem, acceptedValues[i], opts);\n\n if (answerCorrect) {\n break;\n }\n }\n } catch (e) {\n log('Parse failure when evaluating math', e, correctResponse, answerItem);\n\n answerCorrect = false;\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 {\n ...defaults,\n feedbackEnabled: false,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n };\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 { 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 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 and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/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"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/math-inline-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.11.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@pie-framework/math-validation": "^1.2.2",
|
|
13
|
-
"@pie-lib/pie-toolbox": "1.
|
|
13
|
+
"@pie-lib/pie-toolbox": "1.20.1",
|
|
14
14
|
"debug": "^3.1.0",
|
|
15
15
|
"lodash": "^4.17.15"
|
|
16
16
|
},
|
package/module/configure.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.13.0/module/index.js";
|
|
2
2
|
import {_dll_pie_lib__pie_toolbox_config_ui, _dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_editable_html} from "../../../@pie-lib/pie-toolbox-module@4.12.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
package/module/controller.js
CHANGED
|
@@ -1020,7 +1020,7 @@ var _interopRequireDefault = interopRequireDefault.exports;
|
|
|
1020
1020
|
Object.defineProperty(feedback, "__esModule", {
|
|
1021
1021
|
value: true
|
|
1022
1022
|
});
|
|
1023
|
-
feedback.getFeedbackForCorrectness = feedback.getFeedback = feedback.defaults = void 0;
|
|
1023
|
+
feedback.getFeedbackForCorrectness = feedback.getFeedback = feedback.getActualFeedbackForCorrectness = feedback.getActualFeedback = feedback.defaults = void 0;
|
|
1024
1024
|
|
|
1025
1025
|
var _defineProperty2 = _interopRequireDefault(defineProperty$1.exports);
|
|
1026
1026
|
|
|
@@ -1111,10 +1111,45 @@ var getFeedback = function getFeedback(feedback, fallback) {
|
|
|
1111
1111
|
var out = feedback[feedback.type] || fallback;
|
|
1112
1112
|
resolve(out);
|
|
1113
1113
|
});
|
|
1114
|
-
};
|
|
1114
|
+
}; // TODO: should replace getFeedbackForCorrectness
|
|
1115
|
+
|
|
1116
|
+
/**
|
|
1117
|
+
* Get feedback for correctness
|
|
1118
|
+
* @param {'correct'|'incorrect'|'partial'} correctness
|
|
1119
|
+
* @param {Feedback} feedback
|
|
1120
|
+
*/
|
|
1121
|
+
|
|
1115
1122
|
|
|
1116
1123
|
feedback.getFeedback = getFeedback;
|
|
1117
1124
|
|
|
1125
|
+
var getActualFeedbackForCorrectness = function getActualFeedbackForCorrectness(correctness, feedback) {
|
|
1126
|
+
feedback = _objectSpread$7(_objectSpread$7({}, defaults$1), feedback); // normalize correctness
|
|
1127
|
+
|
|
1128
|
+
correctness = correctness === 'partially-correct' ? 'partial' : correctness;
|
|
1129
|
+
var defaultFeedback = defaults$1[correctness] || {};
|
|
1130
|
+
var fb = feedback[correctness] || defaultFeedback;
|
|
1131
|
+
return getActualFeedback(fb, defaultFeedback[fb.type || 'default']);
|
|
1132
|
+
}; // TODO: should replace getFeedback
|
|
1133
|
+
|
|
1134
|
+
/**
|
|
1135
|
+
* Get the feedback from a {FeedbackConfig}
|
|
1136
|
+
* @param {FeedbackConfig} feedback
|
|
1137
|
+
* @param {string} fallback
|
|
1138
|
+
*/
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
feedback.getActualFeedbackForCorrectness = getActualFeedbackForCorrectness;
|
|
1142
|
+
|
|
1143
|
+
var getActualFeedback = function getActualFeedback(feedback, fallback) {
|
|
1144
|
+
if (!feedback || feedback.type === 'none') {
|
|
1145
|
+
return undefined;
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
return feedback[feedback.type] || fallback;
|
|
1149
|
+
};
|
|
1150
|
+
|
|
1151
|
+
feedback.getActualFeedback = getActualFeedback;
|
|
1152
|
+
|
|
1118
1153
|
(function (exports) {
|
|
1119
1154
|
|
|
1120
1155
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -1126,6 +1161,18 @@ Object.defineProperty(exports, "defaults", {
|
|
|
1126
1161
|
return _feedback.defaults;
|
|
1127
1162
|
}
|
|
1128
1163
|
});
|
|
1164
|
+
Object.defineProperty(exports, "getActualFeedback", {
|
|
1165
|
+
enumerable: true,
|
|
1166
|
+
get: function get() {
|
|
1167
|
+
return _feedback.getActualFeedback;
|
|
1168
|
+
}
|
|
1169
|
+
});
|
|
1170
|
+
Object.defineProperty(exports, "getActualFeedbackForCorrectness", {
|
|
1171
|
+
enumerable: true,
|
|
1172
|
+
get: function get() {
|
|
1173
|
+
return _feedback.getActualFeedbackForCorrectness;
|
|
1174
|
+
}
|
|
1175
|
+
});
|
|
1129
1176
|
Object.defineProperty(exports, "getFeedback", {
|
|
1130
1177
|
enumerable: true,
|
|
1131
1178
|
get: function get() {
|
|
@@ -4282,6 +4329,8 @@ const getCorrectness = (question, env, session, isOutcome) => {
|
|
|
4282
4329
|
isOutcome,
|
|
4283
4330
|
);
|
|
4284
4331
|
}
|
|
4332
|
+
|
|
4333
|
+
return undefined;
|
|
4285
4334
|
};
|
|
4286
4335
|
|
|
4287
4336
|
function createDefaultModel(model = {}) {
|
|
@@ -4333,74 +4382,60 @@ const normalize = (question) => {
|
|
|
4333
4382
|
};
|
|
4334
4383
|
};
|
|
4335
4384
|
|
|
4336
|
-
|
|
4337
|
-
|
|
4385
|
+
const model = (question, session, env) =>
|
|
4386
|
+
new Promise((resolve) => {
|
|
4338
4387
|
const normalizedQuestion = normalize(question);
|
|
4339
4388
|
const correctness = getCorrectness(normalizedQuestion, env, session);
|
|
4340
4389
|
const { responses, language, ...config } = normalizedQuestion;
|
|
4341
|
-
let { note } = normalizedQuestion;
|
|
4342
4390
|
|
|
4343
|
-
|
|
4344
|
-
config.responses = responses.slice(0, 1);
|
|
4345
|
-
} else {
|
|
4346
|
-
config.responses = responses;
|
|
4347
|
-
}
|
|
4391
|
+
config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;
|
|
4348
4392
|
|
|
4349
|
-
const
|
|
4393
|
+
const feedback =
|
|
4350
4394
|
env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled
|
|
4351
|
-
? feedback$1.
|
|
4352
|
-
:
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
};
|
|
4362
|
-
|
|
4363
|
-
const out = base;
|
|
4364
|
-
let showNote = !!(config?.responses?.length > 1);
|
|
4365
|
-
|
|
4366
|
-
if (!note) {
|
|
4367
|
-
note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });
|
|
4368
|
-
}
|
|
4369
|
-
((config && config.responses) || []).forEach((response) => {
|
|
4370
|
-
if (response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0) {
|
|
4371
|
-
showNote = true;
|
|
4372
|
-
return;
|
|
4373
|
-
}
|
|
4374
|
-
});
|
|
4395
|
+
? feedback$1.getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)
|
|
4396
|
+
: undefined;
|
|
4397
|
+
|
|
4398
|
+
const out = {
|
|
4399
|
+
config,
|
|
4400
|
+
correctness,
|
|
4401
|
+
feedback,
|
|
4402
|
+
disabled: env.mode !== 'gather',
|
|
4403
|
+
view: env.mode === 'view',
|
|
4404
|
+
};
|
|
4375
4405
|
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4406
|
+
const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });
|
|
4407
|
+
const showNote =
|
|
4408
|
+
config?.responses?.length > 1 ||
|
|
4409
|
+
(config?.responses || []).some(
|
|
4410
|
+
(response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,
|
|
4411
|
+
);
|
|
4412
|
+
|
|
4413
|
+
if (env.mode === 'evaluate') {
|
|
4414
|
+
out.correctResponse = {};
|
|
4415
|
+
out.config.showNote = showNote;
|
|
4416
|
+
out.config.note = note;
|
|
4417
|
+
} else {
|
|
4418
|
+
out.config.responses = [];
|
|
4419
|
+
out.config.showNote = false;
|
|
4420
|
+
}
|
|
4384
4421
|
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4422
|
+
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
4423
|
+
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
4424
|
+
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled
|
|
4425
|
+
? normalizedQuestion.teacherInstructions
|
|
4426
|
+
: null;
|
|
4427
|
+
} else {
|
|
4428
|
+
out.rationale = null;
|
|
4429
|
+
out.teacherInstructions = null;
|
|
4430
|
+
out.config.rationale = null;
|
|
4431
|
+
out.config.teacherInstructions = null;
|
|
4432
|
+
}
|
|
4396
4433
|
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
});
|
|
4434
|
+
out.config.env = env;
|
|
4435
|
+
out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;
|
|
4436
|
+
out.language = language;
|
|
4437
|
+
resolve(out);
|
|
4402
4438
|
});
|
|
4403
|
-
}
|
|
4404
4439
|
|
|
4405
4440
|
const escape = (string) => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
|
4406
4441
|
|
|
@@ -4417,9 +4452,7 @@ const simpleSessionResponse = (question) =>
|
|
|
4417
4452
|
});
|
|
4418
4453
|
|
|
4419
4454
|
// use this for items like E672793
|
|
4420
|
-
const removeTrailingEscape = (str) =>
|
|
4421
|
-
return str.endsWith('\\') ? str.slice(0, -1) : str;
|
|
4422
|
-
};
|
|
4455
|
+
const removeTrailingEscape = (str) => (str.endsWith('\\') ? str.slice(0, -1) : str);
|
|
4423
4456
|
|
|
4424
4457
|
const advancedSessionResponse = (question) =>
|
|
4425
4458
|
new Promise((resolve) => {
|
package/module/element.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.13.0/module/index.js";
|
|
2
2
|
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@4.12.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
package/module/index.html
CHANGED
package/module/manifest.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/math-inline",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.17.0",
|
|
4
4
|
"modules": [
|
|
5
5
|
{
|
|
6
6
|
"name": "@pie-lib/pie-toolbox-math-rendering-module",
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.13.0"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"name": "@pie-lib/pie-toolbox-module",
|
package/module/print.html
CHANGED
package/module/print.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.13.0/module/index.js";
|
|
2
2
|
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@4.12.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "7.
|
|
7
|
+
"version": "7.17.1-next.14+5684f4f62",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"description": "",
|
|
10
10
|
"scripts": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@material-ui/core": "^3.9.2",
|
|
15
15
|
"@pie-framework/mathquill": "^1.1.3",
|
|
16
16
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
17
|
-
"@pie-lib/pie-toolbox": "1.
|
|
17
|
+
"@pie-lib/pie-toolbox": "1.20.1",
|
|
18
18
|
"classnames": "^2.2.5",
|
|
19
19
|
"debug": "^4.1.1",
|
|
20
20
|
"lodash": "^4.17.10",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"author": "",
|
|
26
26
|
"license": "ISC",
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "5684f4f62514a113e675718a8ae76613004883bf",
|
|
28
28
|
"module": "src/index.js",
|
|
29
29
|
"exports": {
|
|
30
30
|
".": "./src/index.js",
|