@pie-element/match 10.0.1 → 11.0.3-esm.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.
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sources":["../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../controller/src/defaults.js","../controller/src/index.js"],"sourcesContent":["export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default {\n choiceMode: 'radio',\n feedbackEnabled: false,\n headers: ['Column 1', 'Column 2', 'Column 3'],\n layout: 3,\n lockChoiceOrder: true,\n partialScoring: false,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n rows: [],\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n};\n","import isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env = {}) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const rows = model.rows;\n const checkboxMode = model.choiceMode === 'checkbox';\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = checkboxMode ? getTotalCorrectAnswers(model) : getTotalCorrect(model);\n let correctAnswers;\n let incorrectAnswers = 0;\n\n if (checkboxMode) {\n const checkboxes = getCheckboxes(rows, answers);\n\n correctAnswers = checkboxes.correctAnswers;\n incorrectAnswers = checkboxes.incorrectAnswers;\n } else {\n correctAnswers = getCorrectRadios(rows, answers);\n }\n\n if (totalCorrectAnswers === correctAnswers && !incorrectAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCheckboxes = (rows, answers) => {\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n\n rows.forEach((row) => {\n const answer = answers[row.id];\n\n if (answer) {\n row.values.forEach((v, i) => {\n if (answer[i] && answer[i] === v) {\n correctAnswers += 1;\n } else if (answer[i] && answer[i] !== v) {\n incorrectAnswers += 1;\n }\n });\n }\n });\n\n return { correctAnswers, incorrectAnswers };\n};\n\nconst getCorrectRadios = (rows, answers) => {\n let correctAnswers = 0;\n\n rows.forEach((row) => {\n if (isEqual(row.values, answers[row.id])) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n const matchingTable = checkboxMode ? question.layout - 1 : 1;\n return (question.rows.length || 0) * matchingTable;\n};\n\nconst getTotalCorrectAnswers = (question) => {\n let noOfTotalCorrectAnswers = 0;\n\n question.rows.forEach((row) => {\n row.values.forEach((value) => {\n if (value) {\n noOfTotalCorrectAnswers += 1;\n }\n });\n });\n\n return noOfTotalCorrectAnswers;\n};\n\nconst getPartialScore = (question, answers) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n\n if (checkboxMode) {\n const { correctAnswers, incorrectAnswers } = getCheckboxes(question.rows, answers);\n const totalCorrect = getTotalCorrectAnswers(question);\n\n const total = totalCorrect === 0 ? 1 : totalCorrect;\n\n if (correctAnswers + incorrectAnswers > totalCorrect) {\n const extraAnswers = correctAnswers + incorrectAnswers - totalCorrect;\n const score = parseFloat(((correctAnswers - extraAnswers) / total).toFixed(2));\n\n return score < 0 ? 0 : score;\n } else {\n return parseFloat((correctAnswers / total).toFixed(2));\n }\n } else {\n const correctAnswers = getCorrectRadios(question.rows, answers);\n const totalCorrect = getTotalCorrect(question) === 0 ? 1 : getTotalCorrect(question);\n\n return parseFloat((correctAnswers / totalCorrect).toFixed(2));\n }\n};\n\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n const isPartialScoring = partialScoring.enabled(question, env);\n\n return correctness === 'correct'\n ? 1\n : correctness === 'partial' && isPartialScoring\n ? getPartialScore(question, answers)\n : 0;\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 }\n\n const out = {\n score: getOutComeScore(question, env, session.answers),\n };\n\n resolve(out);\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = cloneDeep(normalize(question));\n let correctness, score;\n\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(normalizedQuestion, env, session && session.answers);\n score = `${getOutComeScore(normalizedQuestion, env, session && session.answers) * 100}%`;\n }\n\n const correctResponse = {};\n const correctInfo = {\n score,\n correctness,\n };\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n normalizedQuestion.rows = await getShuffledChoices(normalizedQuestion.rows, session, updateSession, 'id');\n }\n\n normalizedQuestion.rows.forEach((row) => {\n correctResponse[row.id] = row.values;\n\n if (env.mode !== 'evaluate') {\n delete row.values;\n }\n });\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctInfo.correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const { extraCSSRules, feedbackEnabled, promptEnabled, prompt, lockChoiceOrder, ...essentials } =\n normalizedQuestion;\n const out = {\n ...essentials,\n extraCSSRules,\n allowFeedback: feedbackEnabled,\n prompt: promptEnabled ? prompt : null,\n shuffled: !lockChoiceOrder,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctResponse,\n correctness: correctInfo,\n });\n }\n\n log('out: ', out);\n resolve(out);\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { rows } = question;\n const answers = {};\n\n rows.forEach((r) => {\n answers[r.id] = r.values;\n });\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\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 { rows, choiceMode, headers } = model;\n const {\n minQuestions,\n maxQuestions,\n maxLengthQuestionsHeading,\n maxAnswers,\n maxLengthAnswers,\n maxLengthFirstColumnHeading,\n } = config;\n const rowsErrors = {};\n const columnsErrors = {};\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 if (rows.length < minQuestions) {\n errors.noOfRowsError = `There should be at least ${minQuestions} question rows.`;\n } else if (rows.length > maxQuestions) {\n errors.noOfRowsError = `No more than ${maxQuestions} question rows should be defined.`;\n }\n\n (rows || []).forEach((row, index) => {\n const { id, values = [], title } = row;\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && getInnerText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Content length should be maximum ${maxLengthQuestionsHeading} characters. `;\n }\n\n if (!getContent(title)) {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n // check for identical content with the previous answers\n const identicalAnswer = rows.slice(0, index).some((r) => getContent(r.title) === getContent(title));\n\n if (identicalAnswer) {\n rowsErrors[id] += 'Content should be unique. ';\n }\n }\n\n const hasCorrectResponse = values.some((value) => !!value);\n\n if (!hasCorrectResponse) {\n rowsErrors[id] += 'No correct response defined.';\n }\n });\n\n if (maxAnswers && headers.length - 1 > maxAnswers) {\n errors.columnsLengthError = `There should be maximum ${maxAnswers} answers.`;\n }\n\n if (maxLengthFirstColumnHeading && headers[0].length > maxLengthFirstColumnHeading) {\n columnsErrors[0] = `Content length should be maximum ${maxLengthFirstColumnHeading} characters.`;\n }\n\n const headersContent = (headers || []).map((heading) => getContent(heading));\n headersContent.shift(); // remove first column since it does not require validation\n\n headersContent.forEach((heading, index) => {\n const headerIndex = index + 1; // we need to add 1 because we removed first header from validation\n columnsErrors[headerIndex] = '';\n\n if (maxLengthAnswers && getInnerText(heading).length > maxLengthAnswers) {\n columnsErrors[headerIndex] += `Content length should be maximum ${maxLengthAnswers} characters. `;\n }\n\n if (!heading) {\n columnsErrors[headerIndex] += 'Content should not be empty.';\n } else {\n // check for identical content with the previous headers\n const identicalAnswer = headersContent.slice(0, index).some((head) => head === heading);\n\n if (identicalAnswer) {\n columnsErrors[index + 1] += 'Content should be unique.';\n }\n }\n });\n\n const hasRowErrors = Object.values(rowsErrors).some((error) => (error || '').length);\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n\n const noCorrectAnswer = Object.values(rowsErrors).some((error) =>\n (error || '').includes('No correct response defined.'),\n );\n\n if (noCorrectAnswer) {\n errors.correctResponseError =\n choiceMode === 'radio'\n ? 'There should be a correct response defined for every row.'\n : 'There should be at least one correct response defined for every row.';\n }\n }\n\n const hasColumnErrors = Object.values(columnsErrors).some((error) => (error || '').length);\n\n if (hasColumnErrors) {\n errors.columnsErrors = columnsErrors;\n }\n\n return errors;\n};\n"],"names":["objectWithoutPropertiesLoose","choiceMode","feedbackEnabled","headers","layout","lockChoiceOrder","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","rows","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","log","debug","getResponseCorrectness","model","answers","env","isPartialScoring","enabled","checkboxMode","Object","keys","length","totalCorrectAnswers","getTotalCorrectAnswers","getTotalCorrect","correctAnswers","incorrectAnswers","checkboxes","getCheckboxes","getCorrectRadios","getCorrectness","question","mode","forEach","row","answer","id","values","v","i","isEqual","matchingTable","noOfTotalCorrectAnswers","value","getPartialScore","totalCorrect","total","extraAnswers","score","parseFloat","toFixed","getOutComeScore","correctness","outcome","session","Promise","resolve","undefined","completed","isEmpty","empty","out","createDefaultModel","defaults","normalize","updateSession","normalizedQuestion","cloneDeep","correctResponse","correctInfo","lockChoices","getShuffledChoices","fb","getFeedbackForCorrectness","feedback","then","extraCSSRules","essentials","allowFeedback","shuffled","disabled","view","role","assign","createCorrectResponseSession","r","getInnerText","html","replaceAll","getContent","replace","validate","config","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","field","required","noOfRowsError","index","title","identicalAnswer","slice","some","hasCorrectResponse","columnsLengthError","headersContent","map","heading","shift","headerIndex","head","hasRowErrors","error","noCorrectAnswer","includes","correctResponseError","hasColumnErrors"],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sources":["../controller/src/defaults.js","../controller/src/index.js"],"sourcesContent":["export default {\n choiceMode: 'radio',\n feedbackEnabled: false,\n headers: ['Column 1', 'Column 2', 'Column 3'],\n layout: 3,\n lockChoiceOrder: true,\n partialScoring: false,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n rows: [],\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n};\n","import isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env = {}) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const rows = model.rows;\n const checkboxMode = model.choiceMode === 'checkbox';\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = checkboxMode ? getTotalCorrectAnswers(model) : getTotalCorrect(model);\n let correctAnswers;\n let incorrectAnswers = 0;\n\n if (checkboxMode) {\n const checkboxes = getCheckboxes(rows, answers);\n\n correctAnswers = checkboxes.correctAnswers;\n incorrectAnswers = checkboxes.incorrectAnswers;\n } else {\n correctAnswers = getCorrectRadios(rows, answers);\n }\n\n if (totalCorrectAnswers === correctAnswers && !incorrectAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCheckboxes = (rows, answers) => {\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n\n rows.forEach((row) => {\n const answer = answers[row.id];\n\n if (answer) {\n row.values.forEach((v, i) => {\n if (answer[i] && answer[i] === v) {\n correctAnswers += 1;\n } else if (answer[i] && answer[i] !== v) {\n incorrectAnswers += 1;\n }\n });\n }\n });\n\n return { correctAnswers, incorrectAnswers };\n};\n\nconst getCorrectRadios = (rows, answers) => {\n let correctAnswers = 0;\n\n rows.forEach((row) => {\n if (isEqual(row.values, answers[row.id])) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n const matchingTable = checkboxMode ? question.layout - 1 : 1;\n return (question.rows.length || 0) * matchingTable;\n};\n\nconst getTotalCorrectAnswers = (question) => {\n let noOfTotalCorrectAnswers = 0;\n\n question.rows.forEach((row) => {\n row.values.forEach((value) => {\n if (value) {\n noOfTotalCorrectAnswers += 1;\n }\n });\n });\n\n return noOfTotalCorrectAnswers;\n};\n\nconst getPartialScore = (question, answers) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n\n if (checkboxMode) {\n const { correctAnswers, incorrectAnswers } = getCheckboxes(question.rows, answers);\n const totalCorrect = getTotalCorrectAnswers(question);\n\n const total = totalCorrect === 0 ? 1 : totalCorrect;\n\n if (correctAnswers + incorrectAnswers > totalCorrect) {\n const extraAnswers = correctAnswers + incorrectAnswers - totalCorrect;\n const score = parseFloat(((correctAnswers - extraAnswers) / total).toFixed(2));\n\n return score < 0 ? 0 : score;\n } else {\n return parseFloat((correctAnswers / total).toFixed(2));\n }\n } else {\n const correctAnswers = getCorrectRadios(question.rows, answers);\n const totalCorrect = getTotalCorrect(question) === 0 ? 1 : getTotalCorrect(question);\n\n return parseFloat((correctAnswers / totalCorrect).toFixed(2));\n }\n};\n\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n const isPartialScoring = partialScoring.enabled(question, env);\n\n return correctness === 'correct'\n ? 1\n : correctness === 'partial' && isPartialScoring\n ? getPartialScore(question, answers)\n : 0;\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 }\n\n const out = {\n score: getOutComeScore(question, env, session.answers),\n };\n\n resolve(out);\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = cloneDeep(normalize(question));\n let correctness, score;\n\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(normalizedQuestion, env, session && session.answers);\n score = `${getOutComeScore(normalizedQuestion, env, session && session.answers) * 100}%`;\n }\n\n const correctResponse = {};\n const correctInfo = {\n score,\n correctness,\n };\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n normalizedQuestion.rows = await getShuffledChoices(normalizedQuestion.rows, session, updateSession, 'id');\n }\n\n normalizedQuestion.rows.forEach((row) => {\n correctResponse[row.id] = row.values;\n\n if (env.mode !== 'evaluate') {\n delete row.values;\n }\n });\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctInfo.correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const { extraCSSRules, feedbackEnabled, promptEnabled, prompt, lockChoiceOrder, ...essentials } =\n normalizedQuestion;\n const out = {\n ...essentials,\n extraCSSRules,\n allowFeedback: feedbackEnabled,\n prompt: promptEnabled ? prompt : null,\n shuffled: !lockChoiceOrder,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctResponse,\n correctness: correctInfo,\n });\n }\n\n log('out: ', out);\n resolve(out);\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { rows } = question;\n const answers = {};\n\n rows.forEach((r) => {\n answers[r.id] = r.values;\n });\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\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 { rows, choiceMode, headers } = model;\n const {\n minQuestions,\n maxQuestions,\n maxLengthQuestionsHeading,\n maxAnswers,\n maxLengthAnswers,\n maxLengthFirstColumnHeading,\n } = config;\n const rowsErrors = {};\n const columnsErrors = {};\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 if (rows.length < minQuestions) {\n errors.noOfRowsError = `There should be at least ${minQuestions} question rows.`;\n } else if (rows.length > maxQuestions) {\n errors.noOfRowsError = `No more than ${maxQuestions} question rows should be defined.`;\n }\n\n (rows || []).forEach((row, index) => {\n const { id, values = [], title } = row;\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && getInnerText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Content length should be maximum ${maxLengthQuestionsHeading} characters. `;\n }\n\n if (!getContent(title)) {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n // check for identical content with the previous answers\n const identicalAnswer = rows.slice(0, index).some((r) => getContent(r.title) === getContent(title));\n\n if (identicalAnswer) {\n rowsErrors[id] += 'Content should be unique. ';\n }\n }\n\n const hasCorrectResponse = values.some((value) => !!value);\n\n if (!hasCorrectResponse) {\n rowsErrors[id] += 'No correct response defined.';\n }\n });\n\n if (maxAnswers && headers.length - 1 > maxAnswers) {\n errors.columnsLengthError = `There should be maximum ${maxAnswers} answers.`;\n }\n\n if (maxLengthFirstColumnHeading && headers[0].length > maxLengthFirstColumnHeading) {\n columnsErrors[0] = `Content length should be maximum ${maxLengthFirstColumnHeading} characters.`;\n }\n\n const headersContent = (headers || []).map((heading) => getContent(heading));\n headersContent.shift(); // remove first column since it does not require validation\n\n headersContent.forEach((heading, index) => {\n const headerIndex = index + 1; // we need to add 1 because we removed first header from validation\n columnsErrors[headerIndex] = '';\n\n if (maxLengthAnswers && getInnerText(heading).length > maxLengthAnswers) {\n columnsErrors[headerIndex] += `Content length should be maximum ${maxLengthAnswers} characters. `;\n }\n\n if (!heading) {\n columnsErrors[headerIndex] += 'Content should not be empty.';\n } else {\n // check for identical content with the previous headers\n const identicalAnswer = headersContent.slice(0, index).some((head) => head === heading);\n\n if (identicalAnswer) {\n columnsErrors[index + 1] += 'Content should be unique.';\n }\n }\n });\n\n const hasRowErrors = Object.values(rowsErrors).some((error) => (error || '').length);\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n\n const noCorrectAnswer = Object.values(rowsErrors).some((error) =>\n (error || '').includes('No correct response defined.'),\n );\n\n if (noCorrectAnswer) {\n errors.correctResponseError =\n choiceMode === 'radio'\n ? 'There should be a correct response defined for every row.'\n : 'There should be at least one correct response defined for every row.';\n }\n }\n\n const hasColumnErrors = Object.values(columnsErrors).some((error) => (error || '').length);\n\n if (hasColumnErrors) {\n errors.columnsErrors = columnsErrors;\n }\n\n return errors;\n};\n"],"names":["choiceMode","feedbackEnabled","headers","layout","lockChoiceOrder","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","rows","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","log","debug","getResponseCorrectness","model","answers","env","isPartialScoring","enabled","checkboxMode","Object","keys","length","totalCorrectAnswers","getTotalCorrectAnswers","getTotalCorrect","correctAnswers","incorrectAnswers","checkboxes","getCheckboxes","getCorrectRadios","getCorrectness","question","mode","forEach","row","answer","id","values","v","i","isEqual","matchingTable","noOfTotalCorrectAnswers","value","getPartialScore","totalCorrect","total","extraAnswers","score","parseFloat","toFixed","getOutComeScore","correctness","outcome","session","Promise","resolve","undefined","completed","isEmpty","empty","out","createDefaultModel","defaults","normalize","updateSession","normalizedQuestion","cloneDeep","correctResponse","correctInfo","lockChoices","getShuffledChoices","fb","getFeedbackForCorrectness","feedback","then","extraCSSRules","essentials","allowFeedback","shuffled","disabled","view","role","assign","createCorrectResponseSession","r","getInnerText","html","replaceAll","getContent","replace","validate","config","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","field","required","noOfRowsError","index","title","identicalAnswer","slice","some","hasCorrectResponse","columnsLengthError","headersContent","map","heading","shift","headerIndex","head","hasRowErrors","error","noCorrectAnswer","includes","correctResponseError","hasColumnErrors"],"mappings":"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"}