@pie-element/math-inline 7.21.1-next.0 → 7.21.1-next.4

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.
@@ -154,16 +154,14 @@ exports.outcome = outcome;
154
154
 
155
155
  var normalize = function normalize(question) {
156
156
  // making sure that defaults are set
157
- if (!(0, _isEmpty["default"])(question.responses)) {
158
- question.responses = question.responses.map(function (correctResponse) {
159
- return _objectSpread(_objectSpread({}, correctResponse), {}, {
160
- validation: correctResponse.validation || question.validationDefault,
161
- allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,
162
- ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault
163
- });
164
- });
165
- }
166
-
157
+ // if (!isEmpty(question.responses)) {
158
+ // question.responses = question.responses.map((correctResponse) => ({
159
+ // ...correctResponse,
160
+ // validation: correctResponse.validation || question.validationDefault,
161
+ // allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,
162
+ // ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,
163
+ // }));
164
+ // }
167
165
  return _objectSpread(_objectSpread({}, _defaults["default"]), {}, {
168
166
  feedbackEnabled: false,
169
167
  promptEnabled: true,
@@ -177,33 +175,32 @@ exports.normalize = normalize;
177
175
 
178
176
  var model = function model(question, session, env) {
179
177
  return new Promise(function (resolve) {
180
- var _config$responses;
178
+ var normalizedQuestion = normalize(question); // const correctness = getCorrectness(normalizedQuestion, env, session);
181
179
 
182
- var normalizedQuestion = normalize(question);
183
- var correctness = getCorrectness(normalizedQuestion, env, session);
184
180
  var responses = normalizedQuestion.responses,
185
181
  language = normalizedQuestion.language,
186
182
  config = (0, _objectWithoutProperties2["default"])(normalizedQuestion, _excluded);
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;
183
+ config.responses = config.responseType === _utils.ResponseTypes.simple ? responses.slice(0, 1) : responses; // const feedback =
184
+ // env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled
185
+ // ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)
186
+ // : undefined;
187
+
189
188
  var out = {
190
189
  config: config,
191
- correctness: correctness,
192
- feedback: feedback,
190
+ // correctness,
191
+ // feedback,
193
192
  disabled: env.mode !== 'gather',
194
193
  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
- });
194
+ }; // const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });
195
+ // const showNote =
196
+ // config?.responses?.length > 1 ||
197
+ // (config?.responses || []).some(
198
+ // (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,
199
+ // );
202
200
 
203
201
  if (env.mode === 'evaluate') {
204
- out.correctResponse = {};
205
- out.config.showNote = showNote;
206
- out.config.note = note;
202
+ out.correctResponse = {}; // out.config.showNote = showNote;
203
+ // out.config.note = note;
207
204
  } else {
208
205
  out.config.responses = [];
209
206
  out.config.showNote = false;
@@ -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","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"}
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","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","normalizedQuestion","language","simple","out","disabled","view","showNote","role","rationale","teacherInstructions","prompt","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","o","split","to","t","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 { 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"}
@@ -2,10 +2,6 @@ import * as mv from '@pie-framework/math-validation';
2
2
 
3
3
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
4
 
5
- function getDefaultExportFromCjs (x) {
6
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
7
- }
8
-
9
5
  /** Used for built-in method references. */
10
6
 
11
7
  var objectProto$6 = Object.prototype;
@@ -1195,10 +1191,10 @@ const ResponseTypes = {
1195
1191
  simple: 'Simple',
1196
1192
  };
1197
1193
 
1198
- var translator$2 = {};
1199
-
1200
1194
  var translator$1 = {};
1201
1195
 
1196
+ var translator = {};
1197
+
1202
1198
  var _typeof$1 = {exports: {}};
1203
1199
 
1204
1200
  (function (module) {
@@ -1948,7 +1944,7 @@ function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) {
1948
1944
  function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
1949
1945
  function _isNativeReflectConstruct$2() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
1950
1946
  var checkedLoadedFor = {};
1951
- var Translator$1 = function (_EventEmitter) {
1947
+ var Translator = function (_EventEmitter) {
1952
1948
  _inherits__default["default"](Translator, _EventEmitter);
1953
1949
  var _super = _createSuper$2(Translator);
1954
1950
  function Translator(services) {
@@ -3557,7 +3553,7 @@ var I18n = function (_EventEmitter) {
3557
3553
  s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);
3558
3554
  if (s.i18nFormat.init) s.i18nFormat.init(this);
3559
3555
  }
3560
- this.translator = new Translator$1(this.services, this.options);
3556
+ this.translator = new Translator(this.services, this.options);
3561
3557
  this.translator.on('*', function (event) {
3562
3558
  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
3563
3559
  args[_key2 - 1] = arguments[_key2];
@@ -3917,7 +3913,7 @@ var I18n = function (_EventEmitter) {
3917
3913
  clone.services.utils = {
3918
3914
  hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
3919
3915
  };
3920
- clone.translator = new Translator$1(clone.services, clone.options);
3916
+ clone.translator = new Translator(clone.services, clone.options);
3921
3917
  clone.translator.on('*', function (event) {
3922
3918
  for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
3923
3919
  args[_key4 - 1] = arguments[_key4];
@@ -4199,7 +4195,7 @@ var _default = {
4199
4195
  };
4200
4196
  exports["default"] = _default;
4201
4197
 
4202
- }(translator$1));
4198
+ }(translator));
4203
4199
 
4204
4200
  (function (exports) {
4205
4201
 
@@ -4216,14 +4212,12 @@ Object.defineProperty(exports, "Translator", {
4216
4212
  });
4217
4213
  exports["default"] = void 0;
4218
4214
 
4219
- var _translator = _interopRequireDefault(translator$1);
4215
+ var _translator = _interopRequireDefault(translator);
4220
4216
 
4221
4217
  var _default = _translator["default"];
4222
4218
  exports["default"] = _default;
4223
4219
 
4224
- }(translator$2));
4225
-
4226
- var Translator = /*@__PURE__*/getDefaultExportFromCjs(translator$2);
4220
+ }(translator$1));
4227
4221
 
4228
4222
  var defaults = {
4229
4223
  responseType: ResponseTypes.advanced,
@@ -4249,8 +4243,6 @@ var defaults = {
4249
4243
  customKeys: [],
4250
4244
  };
4251
4245
 
4252
- const { translator } = Translator;
4253
-
4254
4246
  const getResponseCorrectness = (model, answerItem, isOutcome) => {
4255
4247
  const correctResponses = model.responses;
4256
4248
  const isAdvanced = model.responseType === ResponseTypes.advanced;
@@ -4362,14 +4354,14 @@ const outcome = (question, session, env) => {
4362
4354
 
4363
4355
  const normalize = (question) => {
4364
4356
  // making sure that defaults are set
4365
- if (!isEmpty_1(question.responses)) {
4366
- question.responses = question.responses.map((correctResponse) => ({
4367
- ...correctResponse,
4368
- validation: correctResponse.validation || question.validationDefault,
4369
- allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,
4370
- ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,
4371
- }));
4372
- }
4357
+ // if (!isEmpty(question.responses)) {
4358
+ // question.responses = question.responses.map((correctResponse) => ({
4359
+ // ...correctResponse,
4360
+ // validation: correctResponse.validation || question.validationDefault,
4361
+ // allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,
4362
+ // ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,
4363
+ // }));
4364
+ // }
4373
4365
 
4374
4366
  return {
4375
4367
  ...defaults,
@@ -4385,35 +4377,35 @@ const normalize = (question) => {
4385
4377
  const model = (question, session, env) =>
4386
4378
  new Promise((resolve) => {
4387
4379
  const normalizedQuestion = normalize(question);
4388
- const correctness = getCorrectness(normalizedQuestion, env, session);
4380
+ // const correctness = getCorrectness(normalizedQuestion, env, session);
4389
4381
  const { responses, language, ...config } = normalizedQuestion;
4390
4382
 
4391
4383
  config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;
4392
4384
 
4393
- const feedback =
4394
- env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled
4395
- ? feedback$1.getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)
4396
- : undefined;
4385
+ // const feedback =
4386
+ // env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled
4387
+ // ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)
4388
+ // : undefined;
4397
4389
 
4398
4390
  const out = {
4399
4391
  config,
4400
- correctness,
4401
- feedback,
4392
+ // correctness,
4393
+ // feedback,
4402
4394
  disabled: env.mode !== 'gather',
4403
4395
  view: env.mode === 'view',
4404
4396
  };
4405
4397
 
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
- );
4398
+ // const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });
4399
+ // const showNote =
4400
+ // config?.responses?.length > 1 ||
4401
+ // (config?.responses || []).some(
4402
+ // (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,
4403
+ // );
4412
4404
 
4413
4405
  if (env.mode === 'evaluate') {
4414
4406
  out.correctResponse = {};
4415
- out.config.showNote = showNote;
4416
- out.config.note = note;
4407
+ // out.config.showNote = showNote;
4408
+ // out.config.note = note;
4417
4409
  } else {
4418
4410
  out.config.responses = [];
4419
4411
  out.config.showNote = false;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "7.21.1-next.0+7d892c822",
7
+ "version": "7.21.1-next.4+7fb2c7aaf",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "author": "",
26
26
  "license": "ISC",
27
- "gitHead": "7d892c8222e5bd9dd9d1973b422f88dd42beffcf",
27
+ "gitHead": "7fb2c7aafd9e948f1f47444fff4e34ce96813267",
28
28
  "module": "src/index.js",
29
29
  "exports": {
30
30
  ".": "./src/index.js",