@pie-element/math-inline 8.8.9 → 8.8.11-next.86
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/lib/configure.js +3 -3
- package/configure/lib/configure.js.map +1 -1
- package/configure/lib/general-config-block.js +5 -5
- package/configure/lib/general-config-block.js.map +1 -1
- package/configure/lib/response.js +3 -3
- package/configure/lib/response.js.map +1 -1
- package/configure/package.json +7 -2
- package/controller/CHANGELOG.md +11 -0
- package/controller/lib/index.js +2 -2
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +3 -2
- package/lib/main.js +6 -6
- package/lib/main.js.map +1 -1
- package/lib/print.js +1 -1
- package/lib/print.js.map +1 -1
- package/lib/simple-question-block.js +3 -3
- package/lib/simple-question-block.js.map +1 -1
- package/module/configure.js +1 -16645
- package/module/controller.js +171 -521
- package/module/element.js +1 -12966
- package/module/index.html +1 -1
- package/module/manifest.json +9 -5
- package/module/print.html +1 -1
- package/module/print.js +1 -12696
- package/package.json +8 -3
|
@@ -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","correctResponseItems","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","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","out","disabled","view","note","t","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","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(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\n}\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\n }\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { expression = '', responses, responseType } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (responses || []).forEach((response, index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"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","correctResponseItems","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","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","out","disabled","view","note","t","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","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/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\n}\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\n }\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { expression = '', responses, responseType } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n (responses || []).forEach((response, index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"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": "7.4.
|
|
4
|
+
"version": "7.4.10",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@pie-framework/math-validation": "^1.4.2",
|
|
13
|
-
"@pie-lib/
|
|
13
|
+
"@pie-lib/translator": "^2.18.0",
|
|
14
|
+
"@pie-lib/feedback": "^0.19.0",
|
|
14
15
|
"debug": "^3.1.0",
|
|
15
16
|
"lodash": "^4.17.15"
|
|
16
17
|
},
|
package/lib/main.js
CHANGED
|
@@ -25,13 +25,13 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
25
25
|
|
|
26
26
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
27
|
|
|
28
|
-
var _correctAnswerToggle = require("@pie-lib/
|
|
28
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
29
29
|
|
|
30
|
-
var _mathInput = require("@pie-lib/
|
|
30
|
+
var _mathInput = require("@pie-lib/math-input");
|
|
31
31
|
|
|
32
|
-
var _renderUi = require("@pie-lib/
|
|
32
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
33
33
|
|
|
34
|
-
var _mathRendering = require("@pie-lib/
|
|
34
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
35
35
|
|
|
36
36
|
var _styles = require("@material-ui/core/styles");
|
|
37
37
|
|
|
@@ -49,7 +49,7 @@ var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
|
|
|
49
49
|
|
|
50
50
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
51
51
|
|
|
52
|
-
var _translator = _interopRequireDefault(require("@pie-lib/
|
|
52
|
+
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
53
53
|
|
|
54
54
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
55
55
|
|
|
@@ -846,7 +846,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
846
846
|
},
|
|
847
847
|
title: /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
848
848
|
className: classes.main
|
|
849
|
-
}, showCorrectAnswerToggle && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle
|
|
849
|
+
}, showCorrectAnswerToggle && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
850
850
|
language: language,
|
|
851
851
|
className: classes.toggle,
|
|
852
852
|
show: true,
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","isChildOfCurrentPieElement","child","parent","node","parentNode","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","parseAnswers","Main","props","classes","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","correct","incorrect","StaticMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","index","instructionsId","closest","instructionsElement","document","createElement","id","className","srOnly","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","React","createRef","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","nextSession","note","language","t","lng","env","mode","countResponseOccurrences","updateAria","newAnswers","nextState","sameModel","sameState","prevProps","prevState","prevResponseType","responseType","currentResponseType","ref","div","firstChild","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","showRationale","showTeacherInstructions","printView","printContainer","subFieldChanged","getFieldName","setInput","onBlur","midContent","main","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","container","undefined","placement","modifiers","preventOverflow","enabled","boundariesElement","flip","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","domNode","ReactDOM","findDOMNode","Component","PropTypes","object","isRequired","func","styles","theme","color","backgroundColor","background","display","primaryLight","padding","spacing","unit","border","secondary","fontSize","opacity","marginTop","paddingTop","marginBottom","position","title","paddingBottom","zIndex","minWidth","maxWidth","paddingRight","paddingLeft","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","margin","palette","grey","alignItems","justifyContent","borderRight","flexShrink","flexGrow","flexBasis","pointerEvents","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CorrectAnswerToggle } from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport { mq, HorizontalKeypad, updateSpans } from '@pie-lib/pie-toolbox/math-input';\nimport {\n Feedback,\n Collapsible,\n Readable,\n hasText,\n hasMedia,\n PreviewPrompt,\n UiLayout,\n} from '@pie-lib/pie-toolbox/render-ui';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { ResponseTypes } from './utils';\nimport isEqual from 'lodash/isEqual';\nimport cx from 'classnames';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nimport ReactDOM from 'react-dom';\nconst { translator } = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const { config, disabled } = model || {};\n const { expression, responses, printMode, alwaysShowCorrect } = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction parseAnswers(session, model) {\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { model, session } = props;\n const answers = parseAnswers(session, model);\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n const { classes } = this.props;\n\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n return {\n htmlString: `<div class=\"${classes.blockContainer}\">\n <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classes.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model, classes } = this.props;\n const { session, showCorrect } = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n let MQ = MathQuill.getInterface(2);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? classes.correct : classes.incorrect\n // );\n } else {\n el.parentElement.parentElement.classList.remove(classes.correct);\n el.parentElement.parentElement.classList.remove(classes.incorrect);\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { config } = this.props.model;\n const { config: nextConfig = {} } = nextProps.model || {};\n\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: { ...nextSession, answers: parseAnswers(nextSession, this.props.model) },\n });\n }\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', { lng: config.language })\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: nextConfig.language });\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({ ...this.state.session, showCorrect: false });\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\n }\n\n updateAria = () => {\n const { classes } = this.props;\n\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach((elem) => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements and add aria-describedby\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach((elem, index) => {\n elem.setAttribute('aria-label', 'Enter answer.');\n\n // Create a unique id for each instructions element\n const instructionsId = `instructions-${index}`;\n\n // Find the parent element that contains the textarea\n const parent = elem.closest('.mq-textarea');\n\n if (parent) {\n // Create or find the instructions element within the parent\n let instructionsElement = parent.querySelector(`#${instructionsId}`);\n\n if (!instructionsElement) {\n instructionsElement = document.createElement('span');\n instructionsElement.id = instructionsId;\n instructionsElement.className = classes.srOnly;\n instructionsElement.textContent =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused =\n this.mqStatic && this.mqStatic.inputRef?.current\n ? this.mqStatic.inputRef?.current.contains(document.activeElement)\n : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n } else if (event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n if (!this.handleEvent) {\n this.handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', this.handleEvent);\n document.addEventListener('click', this.handleEvent);\n document.addEventListener('touchstart', this.handleEvent);\n }\n };\n\n cleanupKeyDownListener = () => {\n if (this.handleEvent) {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n this.handleEvent = null;\n }\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const c = this.toNodeData(data);\n\n if (c.type === 'clear') {\n this.input.clear();\n } else if (c.type === 'command') {\n if (Array.isArray(c.value)) {\n c.value.forEach((vv) => {\n this.input.cmd(vv);\n });\n } else {\n this.input.cmd(c.value);\n }\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else {\n this.input.write(c.value);\n }\n\n this.input.focus();\n };\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show }, this.handleAnswerBlockDomUpdate);\n };\n\n subFieldChanged = (name, subfieldValue) => {\n updateSpans();\n\n if (name) {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const { model, classes } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n config,\n correctness,\n disabled,\n extraCSSRules,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n id,\n env: { mode, role } = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions = teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const printView = (\n <div className={classes.printContainer}>\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n );\n\n const midContent = (\n <div className={classes.main}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Math Equation Response Question</h2>}\n\n {viewMode &&\n showTeacherInstructions &&\n (!animationsDisabled ? (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n ))}\n\n {prompt && (\n <div className={classes.promptContainer}>\n <PreviewPrompt prompt={prompt} />\n </div>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <div className={classes.inputAndKeypadContainer} tabIndex={0}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n ref={tooltipContainerRef}\n className={cx(classes.expression, {\n [classes.incorrect]: !emptyResponse && !correct && !showCorrect,\n [classes.correct]: !emptyResponse && (correct || showCorrect),\n [classes.showCorrectness]: !emptyResponse && disabled && correctness && !view,\n [classes.correctAnswerShown]: showCorrect,\n [classes.printCorrect]: printMode && alwaysShowCorrect,\n })}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n classes={{\n tooltip: classes.keypadTooltip,\n popper: classes.keypadTooltipPopper,\n }}\n PopperProps={{\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'body',\n },\n flip: {\n enabled: false,\n },\n },\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <div\n data-keypad={true}\n key={answerId}\n className={classes.responseContainer}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </div>\n )) ||\n null,\n )}\n >\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </Tooltip>\n </div>\n )}\n </div>\n </Readable>\n )}\n\n {viewMode && displayNote && (\n <div className={classes.note} dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }} />\n )}\n\n {viewMode &&\n showRationale &&\n (!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n ))}\n </div>\n );\n\n if (\n tooltipModeEnabled &&\n (showCorrectAnswerToggle ||\n showTeacherInstructions ||\n showRationale ||\n feedback)\n ) {\n return (\n <UiLayout extraCSSRules={extraCSSRules}>\n <Tooltip\n interactive\n enterTouchDelay={0}\n classes={{\n tooltip: classes.tooltip,\n popper: classes.tooltipPopper,\n }}\n title={\n <div>\n <div className={classes.main}>\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n language={language}\n className={classes.toggle}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </div>\n\n {showTeacherInstructions && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n {displayNote && hasText(note) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', { lng: language }),\n visible: translator.t('common:hideNote', { lng: language }),\n }}\n >\n <PreviewPrompt prompt={note} />\n </Collapsible>\n )}\n\n {showRationale && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback} />}\n </div>\n }\n >\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n </Tooltip>\n </UiLayout>\n );\n }\n\n return (\n <UiLayout\n id={id}\n extraCSSRules={extraCSSRules}\n className={classes.mainContainer}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n {midContent}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n },\n tooltip: {\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing.unit * 2,\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n },\n tooltipPopper: {\n opacity: 1,\n },\n keypadTooltip: {\n fontSize: 'initial',\n background: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n },\n keypadTooltipPopper: {\n background: 'transparent',\n width: '650px',\n opacity: 1,\n },\n promptContainer: {\n marginBottom: theme.spacing.unit * 2,\n },\n main: {\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n },\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n note: {\n paddingBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n responseContainer: {\n zIndex: 10,\n // position: 'absolute',\n // right: 0,\n minWidth: '400px',\n marginTop: theme.spacing.unit * 2,\n },\n expression: {\n maxWidth: 'fit-content',\n padding: theme.spacing.unit / 4,\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n // PD-4803 unset padding as events are not correctly propagated in the proximity of math input\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& > .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n printCorrect: {\n border: `2px solid ${color.correct()} !important`,\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n flexShrink: 0,\n flexGrow: 0,\n flexBasis: 'auto', // take only the space needed for content + padding\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexGrow: 1, // take all the remaining space\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","isChildOfCurrentPieElement","child","parent","node","parentNode","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","parseAnswers","Main","props","classes","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","correct","incorrect","StaticMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","index","instructionsId","closest","instructionsElement","document","createElement","id","className","srOnly","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","React","createRef","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","nextSession","note","language","t","lng","env","mode","countResponseOccurrences","updateAria","newAnswers","nextState","sameModel","sameState","prevProps","prevState","prevResponseType","responseType","currentResponseType","ref","div","firstChild","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","showRationale","showTeacherInstructions","printView","printContainer","subFieldChanged","getFieldName","setInput","onBlur","midContent","main","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","container","undefined","placement","modifiers","preventOverflow","enabled","boundariesElement","flip","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","domNode","ReactDOM","findDOMNode","Component","PropTypes","object","isRequired","func","styles","theme","color","backgroundColor","background","display","primaryLight","padding","spacing","unit","border","secondary","fontSize","opacity","marginTop","paddingTop","marginBottom","position","title","paddingBottom","zIndex","minWidth","maxWidth","paddingRight","paddingLeft","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","margin","palette","grey","alignItems","justifyContent","borderRight","flexShrink","flexGrow","flexBasis","pointerEvents","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { mq, HorizontalKeypad, updateSpans } from '@pie-lib/math-input';\nimport { Feedback, Collapsible, Readable, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { ResponseTypes } from './utils';\nimport isEqual from 'lodash/isEqual';\nimport cx from 'classnames';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport { color } from '@pie-lib/render-ui';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/translator';\nimport ReactDOM from 'react-dom';\nconst { translator } = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const { config, disabled } = model || {};\n const { expression, responses, printMode, alwaysShowCorrect } = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction parseAnswers(session, model) {\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { model, session } = props;\n const answers = parseAnswers(session, model);\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n const { classes } = this.props;\n\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n return {\n htmlString: `<div class=\"${classes.blockContainer}\">\n <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classes.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model, classes } = this.props;\n const { session, showCorrect } = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n let MQ = MathQuill.getInterface(2);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? classes.correct : classes.incorrect\n // );\n } else {\n el.parentElement.parentElement.classList.remove(classes.correct);\n el.parentElement.parentElement.classList.remove(classes.incorrect);\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { config } = this.props.model;\n const { config: nextConfig = {} } = nextProps.model || {};\n\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: { ...nextSession, answers: parseAnswers(nextSession, this.props.model) },\n });\n }\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', { lng: config.language })\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: nextConfig.language });\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({ ...this.state.session, showCorrect: false });\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\n }\n\n updateAria = () => {\n const { classes } = this.props;\n\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach((elem) => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements and add aria-describedby\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach((elem, index) => {\n elem.setAttribute('aria-label', 'Enter answer.');\n\n // Create a unique id for each instructions element\n const instructionsId = `instructions-${index}`;\n\n // Find the parent element that contains the textarea\n const parent = elem.closest('.mq-textarea');\n\n if (parent) {\n // Create or find the instructions element within the parent\n let instructionsElement = parent.querySelector(`#${instructionsId}`);\n\n if (!instructionsElement) {\n instructionsElement = document.createElement('span');\n instructionsElement.id = instructionsId;\n instructionsElement.className = classes.srOnly;\n instructionsElement.textContent =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused =\n this.mqStatic && this.mqStatic.inputRef?.current\n ? this.mqStatic.inputRef?.current.contains(document.activeElement)\n : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n } else if (event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n if (!this.handleEvent) {\n this.handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', this.handleEvent);\n document.addEventListener('click', this.handleEvent);\n document.addEventListener('touchstart', this.handleEvent);\n }\n };\n\n cleanupKeyDownListener = () => {\n if (this.handleEvent) {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n this.handleEvent = null;\n }\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const c = this.toNodeData(data);\n\n if (c.type === 'clear') {\n this.input.clear();\n } else if (c.type === 'command') {\n if (Array.isArray(c.value)) {\n c.value.forEach((vv) => {\n this.input.cmd(vv);\n });\n } else {\n this.input.cmd(c.value);\n }\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else {\n this.input.write(c.value);\n }\n\n this.input.focus();\n };\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show }, this.handleAnswerBlockDomUpdate);\n };\n\n subFieldChanged = (name, subfieldValue) => {\n updateSpans();\n\n if (name) {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const { model, classes } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n config,\n correctness,\n disabled,\n extraCSSRules,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n id,\n env: { mode, role } = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const printView = (\n <div className={classes.printContainer}>\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n );\n\n const midContent = (\n <div className={classes.main}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Math Equation Response Question</h2>}\n\n {viewMode &&\n showTeacherInstructions &&\n (!animationsDisabled ? (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n ))}\n\n {prompt && (\n <div className={classes.promptContainer}>\n <PreviewPrompt prompt={prompt} />\n </div>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <div className={classes.inputAndKeypadContainer} tabIndex={0}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n ref={tooltipContainerRef}\n className={cx(classes.expression, {\n [classes.incorrect]: !emptyResponse && !correct && !showCorrect,\n [classes.correct]: !emptyResponse && (correct || showCorrect),\n [classes.showCorrectness]: !emptyResponse && disabled && correctness && !view,\n [classes.correctAnswerShown]: showCorrect,\n [classes.printCorrect]: printMode && alwaysShowCorrect,\n })}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n classes={{\n tooltip: classes.keypadTooltip,\n popper: classes.keypadTooltipPopper,\n }}\n PopperProps={{\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'body',\n },\n flip: {\n enabled: false,\n },\n },\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <div\n data-keypad={true}\n key={answerId}\n className={classes.responseContainer}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </div>\n )) ||\n null,\n )}\n >\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </Tooltip>\n </div>\n )}\n </div>\n </Readable>\n )}\n\n {viewMode && displayNote && (\n <div className={classes.note} dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }} />\n )}\n\n {viewMode &&\n showRationale &&\n (!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n ))}\n </div>\n );\n\n if (tooltipModeEnabled && (showCorrectAnswerToggle || showTeacherInstructions || showRationale || feedback)) {\n return (\n <UiLayout extraCSSRules={extraCSSRules}>\n <Tooltip\n interactive\n enterTouchDelay={0}\n classes={{\n tooltip: classes.tooltip,\n popper: classes.tooltipPopper,\n }}\n title={\n <div>\n <div className={classes.main}>\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n language={language}\n className={classes.toggle}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </div>\n\n {showTeacherInstructions && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n {displayNote && hasText(note) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', { lng: language }),\n visible: translator.t('common:hideNote', { lng: language }),\n }}\n >\n <PreviewPrompt prompt={note} />\n </Collapsible>\n )}\n\n {showRationale && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback} />}\n </div>\n }\n >\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n </Tooltip>\n </UiLayout>\n );\n }\n\n return (\n <UiLayout\n id={id}\n extraCSSRules={extraCSSRules}\n className={classes.mainContainer}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n {midContent}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n },\n tooltip: {\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing.unit * 2,\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n },\n tooltipPopper: {\n opacity: 1,\n },\n keypadTooltip: {\n fontSize: 'initial',\n background: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n },\n keypadTooltipPopper: {\n background: 'transparent',\n width: '650px',\n opacity: 1,\n },\n promptContainer: {\n marginBottom: theme.spacing.unit * 2,\n },\n main: {\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n },\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n note: {\n paddingBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n responseContainer: {\n zIndex: 10,\n // position: 'absolute',\n // right: 0,\n minWidth: '400px',\n marginTop: theme.spacing.unit * 2,\n },\n expression: {\n maxWidth: 'fit-content',\n padding: theme.spacing.unit / 4,\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n // PD-4803 unset padding as events are not correctly propagated in the proximity of math input\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& > .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n printCorrect: {\n border: `2px solid ${color.correct()} !important`,\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n flexShrink: 0,\n flexGrow: 0,\n flexBasis: 'auto', // take only the space needed for content + padding\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexGrow: 1, // take all the remaining space\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
package/lib/print.js
CHANGED
|
@@ -31,7 +31,7 @@ var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
|
31
31
|
|
|
32
32
|
var _main = _interopRequireDefault(require("./main"));
|
|
33
33
|
|
|
34
|
-
var _mathRendering = require("@pie-lib/
|
|
34
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
35
35
|
|
|
36
36
|
var _debug = _interopRequireDefault(require("debug"));
|
|
37
37
|
|
package/lib/print.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","showTeacherInstructions","alwaysShowCorrect","printMode","feedback","expression","animationsDisabled","disabled","config","env","mode","MathInlinePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,+BAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,MAAN,GAAeJ,KAAK,CAACK,aAAN,KAAwB,KAAxB,GAAgCL,KAAK,CAACI,MAAtC,GAA+CE,SAA9D;AACAN,EAAAA,KAAK,CAACO,mBAAN,GACEL,KAAK,IAAIF,KAAK,CAACQ,0BAAN,KAAqC,KAA9C,GAAsDR,KAAK,CAACO,mBAA5D,GAAkFD,SADpF;AAEAN,EAAAA,KAAK,CAACS,SAAN,GAAkBP,KAAK,IAAIF,KAAK,CAACU,gBAAN,KAA2B,KAApC,GAA4CV,KAAK,CAACS,SAAlD,GAA8DH,SAAhF;AACAN,EAAAA,KAAK,CAACW,uBAAN,GAAgCT,KAAhC;AACAF,EAAAA,KAAK,CAACY,iBAAN,GAA0BV,KAA1B;AACAF,EAAAA,KAAK,CAACa,SAAN,GAAkB,IAAlB;AACAb,EAAAA,KAAK,CAACc,QAAN,GAAiBR,SAAjB;AACAN,EAAAA,KAAK,CAACe,UAAN,GAAmBf,KAAK,CAACe,UAAN,IAAoB,cAAvC;AAEAf,EAAAA,KAAK,CAACgB,kBAAN,GAA2B,IAA3B;AACA,yCACKhB,KADL;AAEEiB,IAAAA,QAAQ,EAAE,IAFZ;AAGEC,IAAAA,MAAM,kCACDlB,KADC;AAEJmB,MAAAA,GAAG,EAAE;AAAEC,QAAAA,IAAI,EAAElB,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACoB,IAAnC;AAAyCjB,QAAAA,IAAI,EAAEF,IAAI,CAACE;AAApD;AAFD;AAHR;AAQD,CAtBD;;IAwBqBkB,e;;;;;AACnB,6BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAG3B,iBAAiB,CAAC,MAAKwB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB9B,UAAAA,KAAK,EAAE0B,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAFe,SAA1B,CAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnC7B,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAEoC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AALY;AA4Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAvCqBa,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/
|
|
1
|
+
{"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","showTeacherInstructions","alwaysShowCorrect","printMode","feedback","expression","animationsDisabled","disabled","config","env","mode","MathInlinePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","session","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,+BAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,MAAN,GAAeJ,KAAK,CAACK,aAAN,KAAwB,KAAxB,GAAgCL,KAAK,CAACI,MAAtC,GAA+CE,SAA9D;AACAN,EAAAA,KAAK,CAACO,mBAAN,GACEL,KAAK,IAAIF,KAAK,CAACQ,0BAAN,KAAqC,KAA9C,GAAsDR,KAAK,CAACO,mBAA5D,GAAkFD,SADpF;AAEAN,EAAAA,KAAK,CAACS,SAAN,GAAkBP,KAAK,IAAIF,KAAK,CAACU,gBAAN,KAA2B,KAApC,GAA4CV,KAAK,CAACS,SAAlD,GAA8DH,SAAhF;AACAN,EAAAA,KAAK,CAACW,uBAAN,GAAgCT,KAAhC;AACAF,EAAAA,KAAK,CAACY,iBAAN,GAA0BV,KAA1B;AACAF,EAAAA,KAAK,CAACa,SAAN,GAAkB,IAAlB;AACAb,EAAAA,KAAK,CAACc,QAAN,GAAiBR,SAAjB;AACAN,EAAAA,KAAK,CAACe,UAAN,GAAmBf,KAAK,CAACe,UAAN,IAAoB,cAAvC;AAEAf,EAAAA,KAAK,CAACgB,kBAAN,GAA2B,IAA3B;AACA,yCACKhB,KADL;AAEEiB,IAAAA,QAAQ,EAAE,IAFZ;AAGEC,IAAAA,MAAM,kCACDlB,KADC;AAEJmB,MAAAA,GAAG,EAAE;AAAEC,QAAAA,IAAI,EAAElB,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACoB,IAAnC;AAAyCjB,QAAAA,IAAI,EAAEF,IAAI,CAACE;AAApD;AAFD;AAHR;AAQD,CAtBD;;IAwBqBkB,e;;;;;AACnB,6BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAG3B,iBAAiB,CAAC,MAAKwB,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACxB9B,UAAAA,KAAK,EAAE0B,UADiB;AAExBK,UAAAA,OAAO,EAAE;AAFe,SAA1B,CAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnC7B,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAEoC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AALY;AA4Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAvCqBa,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:math-inline:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.rationale = instr && model.rationaleEnabled !== false ? model.rationale : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.printMode = true;\n model.feedback = undefined;\n model.expression = model.expression || '{{response}}';\n\n model.animationsDisabled = true;\n return {\n ...model,\n disabled: true,\n config: {\n ...model,\n env: { mode: instr ? 'evaluate' : model.mode, role: opts.role },\n },\n };\n};\n\nexport default class MathInlinePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n model: printModel,\n session: {},\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true },\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.js"}
|
|
@@ -23,9 +23,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
23
23
|
|
|
24
24
|
var _react = _interopRequireDefault(require("react"));
|
|
25
25
|
|
|
26
|
-
var _mathToolbar = require("@pie-lib/
|
|
26
|
+
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
27
27
|
|
|
28
|
-
var _mathInput = require("@pie-lib/
|
|
28
|
+
var _mathInput = require("@pie-lib/math-input");
|
|
29
29
|
|
|
30
30
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ var _styles = require("@material-ui/core/styles");
|
|
|
33
33
|
|
|
34
34
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
35
35
|
|
|
36
|
-
var _renderUi = require("@pie-lib/
|
|
36
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
37
37
|
|
|
38
38
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
39
39
|
|