@pie-element/explicit-constructed-response 10.0.0-beta.0 → 10.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -11
- package/configure/CHANGELOG.md +0 -11
- package/configure/lib/alternateResponses.js +7 -10
- package/configure/lib/alternateResponses.js.map +1 -1
- package/configure/lib/alternateSection.js +12 -8
- package/configure/lib/alternateSection.js.map +1 -1
- package/configure/lib/defaults.js +3 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/ecr-toolbar.js +16 -18
- package/configure/lib/ecr-toolbar.js.map +1 -1
- package/configure/lib/index.js +6 -7
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +20 -23
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +2 -3
- package/configure/lib/markupUtils.js.map +1 -1
- package/configure/package.json +7 -7
- package/controller/CHANGELOG.md +0 -11
- package/controller/lib/index.js +15 -15
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +5 -5
- package/lib/main.js +4 -6
- package/lib/main.js.map +1 -1
- package/lib/print.js +2 -2
- package/lib/print.js.map +1 -1
- package/module/configure.js +1 -0
- package/module/controller.js +6450 -0
- package/module/demo.js +45 -0
- package/module/element.js +1 -0
- package/module/index.html +21 -0
- package/module/manifest.json +18 -0
- package/module/print-demo.js +83 -0
- package/module/print.html +18 -0
- package/module/print.js +1 -0
- package/package.json +15 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_map","_reduce","_find","_isEmpty","_he","_controllerUtils","_translator","_defaults","translator","Translator","log","debug","prepareChoice","mode","defaultFeedback","choice","out","label","value","correct","feedbackType","feedback","type","exports","getFeedback","getAdjustedLength","length","decodeHtmlEntities","str","replace","normalize","question","defaults","model","session","env","choices","Object","keys","forEach","key","map","item","index","normalizedQuestion","assign","incorrect","prepareChoiceFn","reduce","obj","area","respArea","chosenValue","val","isEmpty","find","c","prepareVal","showNote","values","some","note","t","lng","language","maxLengthPerChoice","maxLengthPerChoiceEnabled","undefinedLengths","labelLengthsArr","Math","max","disabled","displayType","role","markup","playerSpellCheckEnabled","prompt","promptEnabled","rationale","responseCorrect","getScore","undefined","teacherInstructions","responseAreaInputConfiguration","extraCSSRules","rationaleEnabled","teacherInstructionsEnabled","html","decodeHTML","getInnerText","trim","config","responseAreas","match","maxScore","correctCount","total","toFixed","parseFloat","outcome","Promise","resolve","partialScoringEnabled","partialScoring","enabled","score","empty","createCorrectResponseSession","i","id","replaceAll","decode","getContent","validate","maxResponseAreas","allChoicesErrors","errors","field","required","entries","reversedChoices","reverse","choicesErrors","identicalAnswer","slice","nbOfResponseAreas"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport { decode } from 'he';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport Translator from '@pie-lib/translator';\nimport defaults from './defaults';\n\nconst { translator } = Translator;\n\nconst log = debug('explicit-constructed-response:controller');\n\nexport const prepareChoice = (mode, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (mode === 'evaluate') {\n out.correct = true;\n\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback['correct'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n\n return out;\n};\n\nconst getFeedback = (value) => {\n if (value) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\n// also used in configure/src/markupUtils.js\nconst getAdjustedLength = (length) => {\n if (length <= 2) {\n return length + 2;\n }\n\n if (length <= 4) {\n return length + 3;\n }\n\n if (length <= 6) {\n return length + 4;\n }\n\n return length + 5;\n};\n\n// we can't use the dom parser here because it is not available in the node environment\nconst decodeHtmlEntities = (str) => {\n if (!str) return '';\n return str\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'|'/g, '\\'')\n .replace(/&/g, '&');\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n // this was added to treat an exception, when the model has choices without\n // the \"value\" property like: { label: 'test' }\n if (question.choices) {\n Object.keys(question.choices).forEach((key) => {\n question.choices[key] = (question.choices[key] || []).map((item, index) => {\n if (!item.value) {\n log('Choice does not contain \"value\" property, which is required.', item);\n return { value: `${index}`, ...item };\n }\n\n return item;\n });\n });\n }\n\n const normalizedQuestion = normalize(question);\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n normalizedQuestion.defaultFeedback,\n );\n const prepareChoiceFn = prepareChoice(env.mode, defaultFeedback);\n const choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, prepareChoiceFn);\n\n return obj;\n },\n {},\n );\n\n const { value = {} } = session || {};\n const feedback =\n env.mode === 'evaluate'\n ? reduce(\n normalizedQuestion.choices,\n (obj, respArea, key) => {\n const chosenValue = value && value[key];\n const val =\n !isEmpty(chosenValue) && find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue));\n\n obj[key] = getFeedback(val);\n\n return obj;\n },\n {},\n )\n : {};\n\n // check if at least one choice has an alternate\n const showNote = Object.values(choices).some((choice) => choice?.length > 1);\n const note =\n normalizedQuestion.note ||\n translator.t('common:commonCorrectAnswerWithAlternates', { lng: normalizedQuestion.language });\n\n const { maxLengthPerChoice = [], maxLengthPerChoiceEnabled } = normalizedQuestion;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = (choice || []).map((choice) => decodeHtmlEntities(choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n const out = {\n choices,\n disabled: env.mode !== 'gather',\n displayType: normalizedQuestion.displayType,\n mode: env.mode,\n role: env.role,\n feedback,\n language: normalizedQuestion.language,\n markup: normalizedQuestion.markup,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled: normalizedQuestion.playerSpellCheckEnabled,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : defaults.prompt,\n rationale: defaults.rationale,\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n showNote,\n teacherInstructions: defaults.teacherInstructions,\n responseAreaInputConfiguration: normalizedQuestion.responseAreaInputConfiguration,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : defaults.rationale;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : defaults.teacherInstructions;\n }\n\n return out;\n}\n\nexport const prepareVal = (html) => {\n return decodeHTML(getInnerText(html).trim());\n};\n\nexport const getScore = (config, session) => {\n const { value } = session || {};\n\n if (!session || isEmpty(session) || !value) {\n return 0;\n }\n\n const responseAreas = config.markup && config.markup.match(/\\{\\{(.+?)\\}\\}/g);\n const maxScore = responseAreas ? responseAreas.length : 0;\n const correctCount = reduce(\n config.choices,\n (total, respArea, key) => {\n const chosenValue = value && value[key];\n\n if (isEmpty(chosenValue) || !find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue))) {\n return total;\n }\n\n return total + 1;\n },\n 0,\n );\n\n const str = maxScore ? (correctCount / maxScore).toFixed(2) : 0;\n\n return parseFloat(str);\n};\n\n/**\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0, empty: isEmpty(session) });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n Object.keys(choices).forEach((key, i) => {\n value[i] = choices[key][0].label;\n });\n\n resolve({ id: '1', value });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\n// const getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\nconst getInnerText = (html) => {\n if (typeof html !== 'string') {\n return '';\n }\n if (typeof html.replaceAll === 'function') {\n return html.replaceAll(/<[^>]*>/g, '');\n } else {\n // Polyfill for replaceAll using replace and a global regex\n return html.replace(/<[^>]*>/g, '');\n }\n};\n\nconst decodeHTML = (html) => decode(html);\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 { choices, markup } = model;\n const { maxResponseAreas } = config;\n const allChoicesErrors = {};\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 Object.entries(choices || {}).forEach(([key, values]) => {\n const reversedChoices = [...(values || [])].reverse();\n const choicesErrors = {};\n\n reversedChoices.forEach((choice, index) => {\n const { value, label } = choice;\n\n if (label === '' || label === '<div></div>') {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(choicesErrors)) {\n allChoicesErrors[key] = choicesErrors;\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(allChoicesErrors)) {\n errors.choices = allChoicesErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_he","_controllerUtils","_translator","_defaults","translator","Translator","log","debug","prepareChoice","mode","defaultFeedback","choice","out","label","value","correct","feedbackType","feedback","type","exports","getFeedback","getAdjustedLength","length","Math","abs","Infinity","decodeHtmlEntities","str","replace","normalize","question","defaults","model","session","env","choices","Object","keys","forEach","key","map","item","index","normalizedQuestion","assign","incorrect","prepareChoiceFn","reduce","obj","area","respArea","chosenValue","val","isEmpty","find","c","prepareVal","showNote","values","some","note","t","lng","language","maxLengthPerChoice","maxLengthPerChoiceEnabled","undefinedLengths","labelLengthsArr","max","disabled","displayType","role","markup","playerSpellCheckEnabled","prompt","promptEnabled","rationale","responseCorrect","getScore","undefined","teacherInstructions","responseAreaInputConfiguration","extraCSSRules","rationaleEnabled","teacherInstructionsEnabled","html","decodeHTML","getInnerText","trim","config","responseAreas","match","maxScore","correctCount","total","toFixed","parseFloat","outcome","Promise","resolve","partialScoringEnabled","partialScoring","enabled","score","empty","createCorrectResponseSession","i","id","replaceAll","decode","getContent","validate","maxResponseAreas","allChoicesErrors","errors","field","required","entries","reversedChoices","reverse","choicesErrors","identicalAnswer","slice","nbOfResponseAreas"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { find, isEmpty, map, reduce } from 'lodash-es';\nimport { decode } from 'he';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport Translator from '@pie-lib/translator';\nimport defaults from './defaults';\n\nconst { translator } = Translator;\n\nconst log = debug('explicit-constructed-response:controller');\n\nexport const prepareChoice = (mode, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (mode === 'evaluate') {\n out.correct = true;\n\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback['correct'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n\n return out;\n};\n\nconst getFeedback = (value) => {\n if (value) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\n// also used in configure/src/markupUtils.js\nconst getAdjustedLength = (length) => {\n if (Math.abs(length) === Infinity) {\n return 2;\n }\n\n if (length <= 2) {\n return length + 2;\n }\n\n if (length <= 4) {\n return length + 3;\n }\n\n if (length <= 6) {\n return length + 4;\n }\n\n return length + 5;\n};\n\n// we can't use the dom parser here because it is not available in the node environment\nconst decodeHtmlEntities = (str) => {\n if (!str) return '';\n return str\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'|'/g, \"'\")\n .replace(/&/g, '&');\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n // this was added to treat an exception, when the model has choices without\n // the \"value\" property like: { label: 'test' }\n if (question.choices) {\n Object.keys(question.choices).forEach((key) => {\n question.choices[key] = (question.choices[key] || []).map((item, index) => {\n if (!item.value) {\n log('Choice does not contain \"value\" property, which is required.', item);\n return { value: `${index}`, ...item };\n }\n\n return item;\n });\n });\n }\n\n const normalizedQuestion = normalize(question);\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n normalizedQuestion.defaultFeedback,\n );\n const prepareChoiceFn = prepareChoice(env.mode, defaultFeedback);\n const choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, prepareChoiceFn);\n\n return obj;\n },\n {},\n );\n\n const { value = {} } = session || {};\n const feedback =\n env.mode === 'evaluate'\n ? reduce(\n normalizedQuestion.choices,\n (obj, respArea, key) => {\n const chosenValue = value && value[key];\n const val = !isEmpty(chosenValue) && find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue));\n\n obj[key] = getFeedback(val);\n\n return obj;\n },\n {},\n )\n : {};\n\n // check if at least one choice has an alternate\n const showNote = Object.values(choices).some((choice) => choice?.length > 1);\n const note =\n normalizedQuestion.note ||\n translator.t('common:commonCorrectAnswerWithAlternates', { lng: normalizedQuestion.language });\n\n const { maxLengthPerChoice = [], maxLengthPerChoiceEnabled } = normalizedQuestion;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = (choice || []).map((choice) => decodeHtmlEntities(choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n const out = {\n choices,\n disabled: env.mode !== 'gather',\n displayType: normalizedQuestion.displayType,\n mode: env.mode,\n role: env.role,\n feedback,\n language: normalizedQuestion.language,\n markup: normalizedQuestion.markup,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled: normalizedQuestion.playerSpellCheckEnabled,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : defaults.prompt,\n rationale: defaults.rationale,\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n showNote,\n teacherInstructions: defaults.teacherInstructions,\n responseAreaInputConfiguration: normalizedQuestion.responseAreaInputConfiguration,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : defaults.rationale;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : defaults.teacherInstructions;\n }\n\n return out;\n}\n\nexport const prepareVal = (html) => {\n return decodeHTML(getInnerText(html).trim());\n};\n\nexport const getScore = (config, session) => {\n const { value } = session || {};\n\n if (!session || isEmpty(session) || !value) {\n return 0;\n }\n\n const responseAreas = config.markup && config.markup.match(/\\{\\{(.+?)\\}\\}/g);\n const maxScore = responseAreas ? responseAreas.length : 0;\n const correctCount = reduce(\n config.choices,\n (total, respArea, key) => {\n const chosenValue = value && value[key];\n\n if (isEmpty(chosenValue) || !find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue))) {\n return total;\n }\n\n return total + 1;\n },\n 0,\n );\n\n const str = maxScore ? (correctCount / maxScore).toFixed(2) : 0;\n\n return parseFloat(str);\n};\n\n/**\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0, empty: isEmpty(session) });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n Object.keys(choices).forEach((key, i) => {\n value[i] = choices[key][0].label;\n });\n\n resolve({ id: '1', value });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\n// const getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\nconst getInnerText = (html) => {\n if (typeof html !== 'string') {\n return '';\n }\n if (typeof html.replaceAll === 'function') {\n return html.replaceAll(/<[^>]*>/g, '');\n } else {\n // Polyfill for replaceAll using replace and a global regex\n return html.replace(/<[^>]*>/g, '');\n }\n};\n\nconst decodeHTML = (html) => decode(html);\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 { choices, markup } = model;\n const { maxResponseAreas } = config;\n const allChoicesErrors = {};\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 Object.entries(choices || {}).forEach(([key, values]) => {\n const reversedChoices = [...(values || [])].reverse();\n const choicesErrors = {};\n\n reversedChoices.forEach((choice, index) => {\n const { value, label } = choice;\n\n if (label === '' || label === '<div></div>') {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(choicesErrors)) {\n allChoicesErrors[key] = choicesErrors;\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(allChoicesErrors)) {\n errors.choices = allChoicesErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/controller/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/explicit-constructed-response-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "7.0.0-beta.
|
|
4
|
+
"version": "7.0.0-beta.1",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"author": "",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@pie-lib/controller-utils": "
|
|
12
|
-
"@pie-lib/translator": "
|
|
13
|
-
"debug": "^
|
|
11
|
+
"@pie-lib/controller-utils": "1.1.1-next.1",
|
|
12
|
+
"@pie-lib/translator": "3.1.1-next.1",
|
|
13
|
+
"debug": "^4.1.1",
|
|
14
14
|
"he": "^1.2.0",
|
|
15
|
-
"lodash": "^4.17.
|
|
15
|
+
"lodash-es": "^4.17.23",
|
|
16
16
|
"type-of": "^2.0.1"
|
|
17
17
|
}
|
|
18
18
|
}
|
package/lib/main.js
CHANGED
|
@@ -9,9 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
-
var
|
|
13
|
-
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
14
|
-
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
12
|
+
var _lodashEs = require("lodash-es");
|
|
15
13
|
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
16
14
|
var _maskMarkup = require("@pie-lib/mask-markup");
|
|
17
15
|
var _renderUi = require("@pie-lib/render-ui");
|
|
@@ -56,7 +54,7 @@ class Main extends _react.default.Component {
|
|
|
56
54
|
showCorrectAnswer: this.props.alwaysShowCorrect || false
|
|
57
55
|
});
|
|
58
56
|
// if for all responses max length is 1, call onChange for each keystroke
|
|
59
|
-
(0, _defineProperty2.default)(this, "getChangeSession", maxLengthPerChoice => maxLengthPerChoice && maxLengthPerChoice.every((val, _i, arr) => val === arr[0] && val === 1) ? this.props.onChange : (0,
|
|
57
|
+
(0, _defineProperty2.default)(this, "getChangeSession", maxLengthPerChoice => maxLengthPerChoice && maxLengthPerChoice.every((val, _i, arr) => val === arr[0] && val === 1) ? this.props.onChange : (0, _lodashEs.debounce)(this.props.onChange, 200, {
|
|
60
58
|
maxWait: 200
|
|
61
59
|
}));
|
|
62
60
|
(0, _defineProperty2.default)(this, "toggleShowCorrect", () => {
|
|
@@ -77,7 +75,7 @@ class Main extends _react.default.Component {
|
|
|
77
75
|
let {
|
|
78
76
|
note
|
|
79
77
|
} = this.props;
|
|
80
|
-
if ((0,
|
|
78
|
+
if ((0, _lodashEs.isEmpty)(nextProps.feedback)) {
|
|
81
79
|
this.setState({
|
|
82
80
|
showCorrectAnswer: false
|
|
83
81
|
});
|
|
@@ -87,7 +85,7 @@ class Main extends _react.default.Component {
|
|
|
87
85
|
showCorrectAnswer: true
|
|
88
86
|
});
|
|
89
87
|
}
|
|
90
|
-
if (maxLengthPerChoice && !(0,
|
|
88
|
+
if (maxLengthPerChoice && !(0, _lodashEs.isEqual)(maxLengthPerChoice, nextProps.maxLengthPerChoice)) {
|
|
91
89
|
this.changeSession = this.getChangeSession(nextProps.maxLengthPerChoice);
|
|
92
90
|
}
|
|
93
91
|
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_debounce","_isEmpty","_isEqual","_correctAnswerToggle","_maskMarkup","_renderUi","_styles","_translator","translator","Translator","MainContainer","styled","UiLayout","alwaysShowCorrect","color","text","backgroundColor","background","borderColor","NoteContainer","theme","marginBottom","spacing","CollapsibleContainer","SrOnly","position","left","top","width","height","overflow","Main","React","Component","constructor","args","_defineProperty2","default","showCorrectAnswer","props","maxLengthPerChoice","every","val","_i","arr","onChange","debounce","maxWait","setState","state","getChangeSession","value","changeSession","UNSAFE_componentWillReceiveProps","nextProps","language","note","isEmpty","feedback","isEqual","t","lng","render","animationsDisabled","mode","displayType","role","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","rationale","showNote","teacherInstructions","responseAreaInputConfiguration","model","extraCSSRules","displayNote","teacherInstructionsDiv","createElement","PreviewPrompt","defaultClassName","rationaleDiv","showRationale","hasText","hasMedia","showTeacherInstructions","style","display","Collapsible","labels","hidden","visible","show","toggled","onToggle","toggleShowCorrect","ConstructedResponse","_extends2","maxLength","adjustedLimit","spellCheck","pluginProps","dangerouslySetInnerHTML","__html","exports","PropTypes","bool","disabled","string","object","markup","array","func","isRequired","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { styled } from '@mui/material/styles';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst MainContainer = styled(UiLayout)(({ alwaysShowCorrect }) => ({\n color: color.text(),\n backgroundColor: color.background(),\n ...(alwaysShowCorrect && {\n '& *': {\n borderColor: `${color.text()} !important`,\n },\n }),\n}));\n\nconst NoteContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst CollapsibleContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst SrOnly = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n disabled: PropTypes.bool,\n displayType: PropTypes.string,\n feedback: PropTypes.object,\n language: PropTypes.string,\n markup: PropTypes.string,\n maxLengthPerChoice: PropTypes.array,\n maxLengthPerChoiceEnabled: PropTypes.bool,\n mode: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n playerSpellCheckEnabled: PropTypes.bool,\n prompt: PropTypes.string,\n rationale: PropTypes.string,\n role: PropTypes.string,\n showNote: PropTypes.bool,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\n responseAreaInputConfiguration: PropTypes.object,\n model: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: this.props.alwaysShowCorrect || false,\n };\n\n // if for all responses max length is 1, call onChange for each keystroke\n getChangeSession = (maxLengthPerChoice) =>\n maxLengthPerChoice && maxLengthPerChoice.every((val, _i, arr) => val === arr[0] && val === 1)\n ? this.props.onChange\n : debounce(this.props.onChange, 200, { maxWait: 200 });\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { maxLengthPerChoice, language } = this.props;\n let { note } = this.props;\n\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrectAnswer: true });\n }\n\n if (maxLengthPerChoice && !isEqual(maxLengthPerChoice, nextProps.maxLengthPerChoice)) {\n this.changeSession = this.getChangeSession(nextProps.maxLengthPerChoice);\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 note &&\n language &&\n language !== nextProps.language &&\n note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: language })\n ) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextProps.language });\n }\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n changeSession = this.getChangeSession(this.props.maxLengthPerChoice);\n\n onChange = (value) => {\n this.changeSession(value);\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const {\n alwaysShowCorrect,\n animationsDisabled,\n mode,\n displayType,\n role,\n language,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled,\n prompt,\n rationale,\n showNote,\n teacherInstructions,\n responseAreaInputConfiguration,\n model,\n value,\n } = this.props;\n\n const { extraCSSRules } = model || {};\n const displayNote = (showCorrectAnswer || (mode === 'view' && role === 'instructor')) && showNote && note;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const rationaleDiv = <PreviewPrompt prompt={rationale} />;\n\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n return (\n <MainContainer\n extraCSSRules={extraCSSRules}\n alwaysShowCorrect={alwaysShowCorrect}\n style={{ display: `${displayType}` }}\n >\n {mode === 'gather' && <SrOnly>Fill in the Blank Question</SrOnly>}\n\n {showTeacherInstructions && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </CollapsibleContainer>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n )}\n\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n adjustedLimit={maxLengthPerChoiceEnabled}\n spellCheck={playerSpellCheckEnabled}\n pluginProps={responseAreaInputConfiguration}\n />\n\n {displayNote && <NoteContainer dangerouslySetInnerHTML={{ __html: note }} />}\n\n {showRationale && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </CollapsibleContainer>\n )}\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_correctAnswerToggle","_maskMarkup","_renderUi","_styles","_translator","translator","Translator","MainContainer","styled","UiLayout","alwaysShowCorrect","color","text","backgroundColor","background","borderColor","NoteContainer","theme","marginBottom","spacing","CollapsibleContainer","SrOnly","position","left","top","width","height","overflow","Main","React","Component","constructor","args","_defineProperty2","default","showCorrectAnswer","props","maxLengthPerChoice","every","val","_i","arr","onChange","debounce","maxWait","setState","state","getChangeSession","value","changeSession","UNSAFE_componentWillReceiveProps","nextProps","language","note","isEmpty","feedback","isEqual","t","lng","render","animationsDisabled","mode","displayType","role","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","rationale","showNote","teacherInstructions","responseAreaInputConfiguration","model","extraCSSRules","displayNote","teacherInstructionsDiv","createElement","PreviewPrompt","defaultClassName","rationaleDiv","showRationale","hasText","hasMedia","showTeacherInstructions","style","display","Collapsible","labels","hidden","visible","show","toggled","onToggle","toggleShowCorrect","ConstructedResponse","_extends2","maxLength","adjustedLimit","spellCheck","pluginProps","dangerouslySetInnerHTML","__html","exports","PropTypes","bool","disabled","string","object","markup","array","func","isRequired","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmpty, isEqual, debounce } from 'lodash-es';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { styled } from '@mui/material/styles';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst MainContainer = styled(UiLayout)(({ alwaysShowCorrect }) => ({\n color: color.text(),\n backgroundColor: color.background(),\n ...(alwaysShowCorrect && {\n '& *': {\n borderColor: `${color.text()} !important`,\n },\n }),\n}));\n\nconst NoteContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst CollapsibleContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst SrOnly = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n disabled: PropTypes.bool,\n displayType: PropTypes.string,\n feedback: PropTypes.object,\n language: PropTypes.string,\n markup: PropTypes.string,\n maxLengthPerChoice: PropTypes.array,\n maxLengthPerChoiceEnabled: PropTypes.bool,\n mode: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n playerSpellCheckEnabled: PropTypes.bool,\n prompt: PropTypes.string,\n rationale: PropTypes.string,\n role: PropTypes.string,\n showNote: PropTypes.bool,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\n responseAreaInputConfiguration: PropTypes.object,\n model: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: this.props.alwaysShowCorrect || false,\n };\n\n // if for all responses max length is 1, call onChange for each keystroke\n getChangeSession = (maxLengthPerChoice) =>\n maxLengthPerChoice && maxLengthPerChoice.every((val, _i, arr) => val === arr[0] && val === 1)\n ? this.props.onChange\n : debounce(this.props.onChange, 200, { maxWait: 200 });\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { maxLengthPerChoice, language } = this.props;\n let { note } = this.props;\n\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrectAnswer: true });\n }\n\n if (maxLengthPerChoice && !isEqual(maxLengthPerChoice, nextProps.maxLengthPerChoice)) {\n this.changeSession = this.getChangeSession(nextProps.maxLengthPerChoice);\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 note &&\n language &&\n language !== nextProps.language &&\n note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: language })\n ) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextProps.language });\n }\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n changeSession = this.getChangeSession(this.props.maxLengthPerChoice);\n\n onChange = (value) => {\n this.changeSession(value);\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const {\n alwaysShowCorrect,\n animationsDisabled,\n mode,\n displayType,\n role,\n language,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled,\n prompt,\n rationale,\n showNote,\n teacherInstructions,\n responseAreaInputConfiguration,\n model,\n value,\n } = this.props;\n\n const { extraCSSRules } = model || {};\n const displayNote = (showCorrectAnswer || (mode === 'view' && role === 'instructor')) && showNote && note;\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const rationaleDiv = <PreviewPrompt prompt={rationale} />;\n\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n return (\n <MainContainer\n extraCSSRules={extraCSSRules}\n alwaysShowCorrect={alwaysShowCorrect}\n style={{ display: `${displayType}` }}\n >\n {mode === 'gather' && <SrOnly>Fill in the Blank Question</SrOnly>}\n\n {showTeacherInstructions && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </CollapsibleContainer>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n )}\n\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n adjustedLimit={maxLengthPerChoiceEnabled}\n spellCheck={playerSpellCheckEnabled}\n pluginProps={responseAreaInputConfiguration}\n />\n\n {displayNote && <NoteContainer dangerouslySetInnerHTML={{ __html: note }} />}\n\n {showRationale && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </CollapsibleContainer>\n )}\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/print.js
CHANGED
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _client = require("react-dom/client");
|
|
10
|
-
var
|
|
10
|
+
var _lodashEs = require("lodash-es");
|
|
11
11
|
var _main = _interopRequireDefault(require("./main"));
|
|
12
12
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
13
13
|
var _debug = _interopRequireDefault(require("debug"));
|
|
@@ -30,7 +30,7 @@ class ExplicitConstructedResponsePrint extends HTMLElement {
|
|
|
30
30
|
this._model = null;
|
|
31
31
|
this._session = [];
|
|
32
32
|
this._root = null;
|
|
33
|
-
this._rerender = (0,
|
|
33
|
+
this._rerender = (0, _lodashEs.debounce)(() => {
|
|
34
34
|
if (this._model && this._session) {
|
|
35
35
|
const printModel = preparePrintModel(this._model, this._options);
|
|
36
36
|
const element = this._options && /*#__PURE__*/_react.default.createElement(_main.default, {
|
package/lib/print.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print.js","names":["_react","_interopRequireDefault","require","_client","
|
|
1
|
+
{"version":3,"file":"print.js","names":["_react","_interopRequireDefault","require","_client","_lodashEs","_main","_mathRendering","_debug","log","debug","preparePrintModel","model","opts","isInstructor","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","alwaysShowCorrect","mode","disabled","animationsDisabled","ExplicitConstructedResponsePrint","HTMLElement","constructor","_options","_model","_session","_root","_rerender","debounce","printModel","element","React","createElement","Main","onChange","createRoot","render","queueMicrotask","renderMath","leading","trailing","options","o","s","connectedCallback","disconnectedCallback","unmount","exports","default"],"sources":["../src/print.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { debounce } from 'lodash-es';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:explicit-constructed-response:print');\n\nconst preparePrintModel = (model, opts) => {\n const isInstructor = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n isInstructor && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.rationale = isInstructor && model.rationaleEnabled !== false ? model.rationale : undefined;\n model.alwaysShowCorrect = isInstructor;\n model.mode = isInstructor ? 'evaluate' : model.mode;\n model.disabled = true;\n model.animationsDisabled = true;\n\n return model;\n};\n\nexport default class ExplicitConstructedResponsePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._root = null;\n\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 ...printModel,\n onChange: () => {},\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(element);\n queueMicrotask(() => {\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\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 disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|