@pie-element/ebsr 8.5.1-beta.2 → 8.5.1-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["prepareChoice","model","env","defaultFeedback","choice","out","label","value","role","mode","rationale","rationaleEnabled","correct","feedbackEnabled","feedbackType","feedback","type","parsePart","part","key","session","Object","assign","incorrect","choices","map","disabled","complete","min","filter","c","length","responseCorrect","undefined","normalize","partA","partB","question","partLabels","partLabelType","defaults","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","gridColumns","choicesLayout","verticalMode","updateSession","normalizedQuestion","shuffledValues","us","id","element","update","Promise","resolve","partASession","partALockChoiceOrder","partAChoices","partBChoices","partBSession","partBLockChoiceOrder","e","console","error","partLabel","teacherInstructions","prompt","createDefaultModel","isCorrect","getScore","config","sessionPart","partialScoringEnabled","maxScore","sessionPartValue","chosen","find","v","correctAndNotChosen","incorrectAndChosen","correctChoices","reduce","total","parseFloat","toFixed","outcome","score","scoreA","scoreB","empty","partialScoring","enabled","max","returnPartCorrect","answers","forEach","i","push","createCorrectResponseSession","partACorrect","partBCorrect","validatePart","minAnswerChoices","maxAnswerChoices","reversedChoices","reverse","choicesErrors","hasCorrectResponse","index","identicalAnswer","slice","some","errors","nbOfChoices","answerChoicesError","correctResponseError","validate","partAConfig","partBConfig","partAErrors","partBErrors"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport { isResponseCorrect } from './utils';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nconst prepareChoice = (model, env, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = model.rationaleEnabled ? choice.rationale : null;\n } else {\n out.rationale = null;\n }\n\n if (env.mode === 'evaluate') {\n out.correct = !!choice.correct;\n\n if (model.feedbackEnabled) {\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback[choice.correct ? 'correct' : 'incorrect'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n }\n\n return out;\n};\n\nconst parsePart = (part, key, session, env) => {\n const defaultFeedback = Object.assign({ correct: 'Correct', incorrect: 'Incorrect' }, part.defaultFeedback);\n\n let choices = part.choices ? part.choices.map(prepareChoice(part, env, defaultFeedback)) : [];\n\n return {\n ...part,\n choices,\n disabled: env.mode !== 'gather',\n complete: {\n min: part.choices.filter((c) => c.correct).length,\n },\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(part, key, session) : undefined,\n };\n};\n\nexport const normalize = ({ partA = {}, partB = {}, ...question }) => ({\n partLabels: true,\n partLabelType: 'Letters',\n ...question,\n partA: {\n ...defaults.partA,\n rationaleEnabled: true,\n feedbackEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partA,\n choicesLayout: partA.choicesLayout || (partA.verticalMode === false && 'horizontal') || 'vertical',\n },\n partB: {\n ...defaults.partB,\n rationaleEnabled: true,\n promptEnabled: true,\n feedbackEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partB,\n choicesLayout: partB.choicesLayout || (partB.verticalMode === false && 'horizontal') || 'vertical',\n },\n});\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 async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const partA = parsePart(normalizedQuestion.partA, 'partA', session, env);\n const partB = parsePart(normalizedQuestion.partB, 'partB', session, env);\n\n const shuffledValues = {};\n\n const us = (part) => (id, element, update) =>\n new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n\n const partASession = get(session, 'value.partA');\n const partALockChoiceOrder = lockChoices(normalizedQuestion.partA, partASession, env);\n\n const { choices: partAChoices } = partA || {};\n const { choices: partBChoices } = partB || {};\n\n if (!partALockChoiceOrder && partAChoices && partAChoices.length) {\n partA.choices = await getShuffledChoices(\n partAChoices,\n { shuffledValues: (session.shuffledValues || {}).partA },\n us('partA'),\n 'value',\n );\n }\n\n const partBSession = get(session, 'value.partB');\n const partBLockChoiceOrder = lockChoices(normalizedQuestion.partB, partBSession, env);\n\n if (!partBLockChoiceOrder && partBChoices && partBChoices.length) {\n partB.choices = await getShuffledChoices(\n partBChoices,\n { shuffledValues: (session.shuffledValues || {}).partB },\n us('partB'),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n console.error('update session failed', e);\n });\n }\n }\n\n if (normalizedQuestion.partLabels) {\n partA.partLabel = normalizedQuestion.partLabelType === 'Letters' ? 'Part A' : 'Part 1';\n partB.partLabel = normalizedQuestion.partLabelType === 'Letters' ? 'Part B' : 'Part 2';\n } else {\n partA.partLabel = undefined;\n partB.partLabel = undefined;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n partA.teacherInstructions = normalizedQuestion.partA.teacherInstructionsEnabled\n ? normalizedQuestion.partA.teacherInstructions\n : null;\n partB.teacherInstructions = normalizedQuestion.partB.teacherInstructionsEnabled\n ? normalizedQuestion.partB.teacherInstructions\n : null;\n } else {\n partA.teacherInstructions = null;\n partB.teacherInstructions = null;\n }\n\n partA.prompt = normalizedQuestion.partA.promptEnabled ? normalizedQuestion.partA.prompt : null;\n partB.prompt = normalizedQuestion.partB.promptEnabled ? normalizedQuestion.partB.prompt : null;\n\n return new Promise((resolve) => {\n resolve({\n disabled: env.mode !== 'gather',\n mode: env.mode,\n partA,\n partB,\n });\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nconst isCorrect = (c) => c.correct === true;\n\nconst getScore = (config, sessionPart, key, partialScoringEnabled) => {\n const { choices = [] } = (config && config[key]) || {};\n const maxScore = choices.length;\n const { value: sessionPartValue } = sessionPart || {};\n\n const chosen = (c) => !!(sessionPartValue || []).find((v) => v === c.value);\n const correctAndNotChosen = (c) => isCorrect(c) && !chosen(c);\n const incorrectAndChosen = (c) => !isCorrect(c) && chosen(c);\n const correctChoices = choices.reduce((total, choice) => {\n if (correctAndNotChosen(choice) || incorrectAndChosen(choice)) {\n return total - 1;\n } else {\n return total;\n }\n }, choices.length);\n\n // determine score for a part\n if (!partialScoringEnabled && correctChoices < maxScore) {\n return 0;\n }\n\n return parseFloat(maxScore ? (correctChoices / maxScore).toFixed(2) : 0);\n};\n\nexport function outcome(config, session, env) {\n return new Promise((resolve) => {\n const { value } = session || {};\n\n if (!session || !value) {\n resolve({ score: 0, scoreA: 0, scoreB: 0, empty: true });\n }\n\n if (value) {\n const { partA, partB } = value || {};\n\n const partialScoringEnabled = partialScoring.enabled(config, env);\n\n const scoreA = getScore(config, partA, 'partA', partialScoringEnabled);\n const scoreB = getScore(config, partB, 'partB', partialScoringEnabled);\n\n if (!partialScoringEnabled) {\n // The EBSR item is worth 1 point\n // That point is awarded if and only if both parts are fully correct, otherwise no points are awarded\n resolve({ score: scoreA === 1 && scoreB === 1 ? 1 : 0, scoreA, scoreB, max: 1 });\n } else {\n // The EBSR item is worth 2 points\n if (scoreA === 1) {\n if (scoreB === 1) {\n // If Part A and Part B are both correct, 2 points are awarded\n resolve({ score: 2, scoreA, scoreB, max: 2 });\n } else {\n // If Part A is correct and part B is incorrect, 1 point is awarded\n resolve({ score: 1, scoreA, scoreB, max: 2 });\n }\n } else {\n // For all other combinations, no points are awarded\n resolve({ score: 0, scoreA, scoreB, max: 2 });\n }\n }\n }\n });\n}\n\nconst returnPartCorrect = (choices) => {\n let answers = [];\n\n choices.forEach((i) => {\n const { correct, value } = i;\n if (correct) {\n answers.push(value);\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { partA, partB } = question;\n\n const partACorrect = returnPartCorrect(partA.choices);\n const partBCorrect = returnPartCorrect(partB.choices);\n\n resolve({\n value: {\n partA: {\n id: 'partA',\n value: partACorrect,\n },\n partB: {\n id: 'partB',\n value: partBCorrect,\n },\n },\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\nconst validatePart = (model = {}, config = {}) => {\n const { choices } = model;\n const { minAnswerChoices = 2, maxAnswerChoices } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const choicesErrors = {};\n let hasCorrectResponse = false;\n\n reversedChoices.forEach((choice, index) => {\n const { correct, value, label } = choice;\n\n if (correct) {\n hasCorrectResponse = true;\n }\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 const errors = {};\n const nbOfChoices = (choices || []).length;\n\n if (nbOfChoices < minAnswerChoices) {\n errors.answerChoicesError = `There should be at least ${minAnswerChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.answerChoicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (!hasCorrectResponse) {\n errors.correctResponseError = 'No correct response defined.';\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n return errors;\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { partA, partB } = model || {};\n const { partA: partAConfig, partB: partBConfig } = config || {};\n\n const partAErrors = validatePart(partA, partAConfig);\n const partBErrors = validatePart(partB, partBConfig);\n\n return { partA: partAErrors, partB: partBErrors };\n};\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["_defaults","_interopRequireDefault","require","_controllerUtils","_utils","_get","_isEmpty","_excluded","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","prepareChoice","model","env","defaultFeedback","choice","out","label","value","role","mode","rationale","rationaleEnabled","correct","feedbackEnabled","feedbackType","feedback","type","parsePart","part","session","assign","incorrect","choices","map","disabled","complete","min","c","responseCorrect","isResponseCorrect","undefined","normalize","_ref","_ref$partA","partA","_ref$partB","partB","question","_objectWithoutProperties2","partLabels","partLabelType","defaults","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","gridColumns","choicesLayout","verticalMode","exports","_x","_x2","_x3","_x4","_model","_asyncToGenerator2","_regenerator","mark","_callee","updateSession","normalizedQuestion","shuffledValues","us","partASession","partALockChoiceOrder","_ref8","partAChoices","_ref9","partBChoices","partBSession","partBLockChoiceOrder","wrap","_callee$","_context","prev","next","id","element","update","Promise","resolve","get","lockChoices","getShuffledChoices","sent","isEmpty","e","console","error","partLabel","teacherInstructions","prompt","abrupt","stop","createDefaultModel","isCorrect","getScore","config","sessionPart","partialScoringEnabled","_ref2","_ref2$choices","maxScore","_ref3","sessionPartValue","chosen","find","v","correctAndNotChosen","incorrectAndChosen","correctChoices","reduce","total","parseFloat","toFixed","outcome","_ref4","score","scoreA","scoreB","empty","_ref5","partialScoring","enabled","max","returnPartCorrect","answers","createCorrectResponseSession","partACorrect","partBCorrect","validatePart","_config$minAnswerChoi","minAnswerChoices","maxAnswerChoices","reversedChoices","_toConsumableArray2","reverse","choicesErrors","hasCorrectResponse","index","identicalAnswer","slice","some","errors","nbOfChoices","answerChoicesError","concat","correctResponseError","validate","_ref6","_ref7","partAConfig","partBConfig","partAErrors","partBErrors"],"sources":["../src/index.js"],"sourcesContent":["import defaults from './defaults';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport { isResponseCorrect } from './utils';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nconst prepareChoice = (model, env, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = model.rationaleEnabled ? choice.rationale : null;\n } else {\n out.rationale = null;\n }\n\n if (env.mode === 'evaluate') {\n out.correct = !!choice.correct;\n\n if (model.feedbackEnabled) {\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback[choice.correct ? 'correct' : 'incorrect'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n }\n\n return out;\n};\n\nconst parsePart = (part, key, session, env) => {\n const defaultFeedback = Object.assign({ correct: 'Correct', incorrect: 'Incorrect' }, part.defaultFeedback);\n\n let choices = part.choices ? part.choices.map(prepareChoice(part, env, defaultFeedback)) : [];\n\n return {\n ...part,\n choices,\n disabled: env.mode !== 'gather',\n complete: {\n min: part.choices.filter((c) => c.correct).length,\n },\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(part, key, session) : undefined,\n };\n};\n\nexport const normalize = ({ partA = {}, partB = {}, ...question }) => ({\n partLabels: true,\n partLabelType: 'Letters',\n ...question,\n partA: {\n ...defaults.partA,\n rationaleEnabled: true,\n feedbackEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partA,\n choicesLayout: partA.choicesLayout || (partA.verticalMode === false && 'horizontal') || 'vertical',\n },\n partB: {\n ...defaults.partB,\n rationaleEnabled: true,\n promptEnabled: true,\n feedbackEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partB,\n choicesLayout: partB.choicesLayout || (partB.verticalMode === false && 'horizontal') || 'vertical',\n },\n});\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 async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const partA = parsePart(normalizedQuestion.partA, 'partA', session, env);\n const partB = parsePart(normalizedQuestion.partB, 'partB', session, env);\n\n const shuffledValues = {};\n\n const us = (part) => (id, element, update) =>\n new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n\n const partASession = get(session, 'value.partA');\n const partALockChoiceOrder = lockChoices(normalizedQuestion.partA, partASession, env);\n\n const { choices: partAChoices } = partA || {};\n const { choices: partBChoices } = partB || {};\n\n if (!partALockChoiceOrder && partAChoices && partAChoices.length) {\n partA.choices = await getShuffledChoices(\n partAChoices,\n { shuffledValues: (session.shuffledValues || {}).partA },\n us('partA'),\n 'value',\n );\n }\n\n const partBSession = get(session, 'value.partB');\n const partBLockChoiceOrder = lockChoices(normalizedQuestion.partB, partBSession, env);\n\n if (!partBLockChoiceOrder && partBChoices && partBChoices.length) {\n partB.choices = await getShuffledChoices(\n partBChoices,\n { shuffledValues: (session.shuffledValues || {}).partB },\n us('partB'),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n console.error('update session failed', e);\n });\n }\n }\n\n if (normalizedQuestion.partLabels) {\n partA.partLabel = normalizedQuestion.partLabelType === 'Letters' ? 'Part A' : 'Part 1';\n partB.partLabel = normalizedQuestion.partLabelType === 'Letters' ? 'Part B' : 'Part 2';\n } else {\n partA.partLabel = undefined;\n partB.partLabel = undefined;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n partA.teacherInstructions = normalizedQuestion.partA.teacherInstructionsEnabled\n ? normalizedQuestion.partA.teacherInstructions\n : null;\n partB.teacherInstructions = normalizedQuestion.partB.teacherInstructionsEnabled\n ? normalizedQuestion.partB.teacherInstructions\n : null;\n } else {\n partA.teacherInstructions = null;\n partB.teacherInstructions = null;\n }\n\n partA.prompt = normalizedQuestion.partA.promptEnabled ? normalizedQuestion.partA.prompt : null;\n partB.prompt = normalizedQuestion.partB.promptEnabled ? normalizedQuestion.partB.prompt : null;\n\n return new Promise((resolve) => {\n resolve({\n disabled: env.mode !== 'gather',\n mode: env.mode,\n partA,\n partB,\n });\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nconst isCorrect = (c) => c.correct === true;\n\nconst getScore = (config, sessionPart, key, partialScoringEnabled) => {\n const { choices = [] } = (config && config[key]) || {};\n const maxScore = choices.length;\n const { value: sessionPartValue } = sessionPart || {};\n\n const chosen = (c) => !!(sessionPartValue || []).find((v) => v === c.value);\n const correctAndNotChosen = (c) => isCorrect(c) && !chosen(c);\n const incorrectAndChosen = (c) => !isCorrect(c) && chosen(c);\n const correctChoices = choices.reduce((total, choice) => {\n if (correctAndNotChosen(choice) || incorrectAndChosen(choice)) {\n return total - 1;\n } else {\n return total;\n }\n }, choices.length);\n\n // determine score for a part\n if (!partialScoringEnabled && correctChoices < maxScore) {\n return 0;\n }\n\n return parseFloat(maxScore ? (correctChoices / maxScore).toFixed(2) : 0);\n};\n\nexport function outcome(config, session, env) {\n return new Promise((resolve) => {\n const { value } = session || {};\n\n if (!session || !value) {\n resolve({ score: 0, scoreA: 0, scoreB: 0, empty: true });\n }\n\n if (value) {\n const { partA, partB } = value || {};\n\n const partialScoringEnabled = partialScoring.enabled(config, env);\n\n const scoreA = getScore(config, partA, 'partA', partialScoringEnabled);\n const scoreB = getScore(config, partB, 'partB', partialScoringEnabled);\n\n if (!partialScoringEnabled) {\n // The EBSR item is worth 1 point\n // That point is awarded if and only if both parts are fully correct, otherwise no points are awarded\n resolve({ score: scoreA === 1 && scoreB === 1 ? 1 : 0, scoreA, scoreB, max: 1 });\n } else {\n // The EBSR item is worth 2 points\n if (scoreA === 1) {\n if (scoreB === 1) {\n // If Part A and Part B are both correct, 2 points are awarded\n resolve({ score: 2, scoreA, scoreB, max: 2 });\n } else {\n // If Part A is correct and part B is incorrect, 1 point is awarded\n resolve({ score: 1, scoreA, scoreB, max: 2 });\n }\n } else {\n // For all other combinations, no points are awarded\n resolve({ score: 0, scoreA, scoreB, max: 2 });\n }\n }\n }\n });\n}\n\nconst returnPartCorrect = (choices) => {\n let answers = [];\n\n choices.forEach((i) => {\n const { correct, value } = i;\n if (correct) {\n answers.push(value);\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { partA, partB } = question;\n\n const partACorrect = returnPartCorrect(partA.choices);\n const partBCorrect = returnPartCorrect(partB.choices);\n\n resolve({\n value: {\n partA: {\n id: 'partA',\n value: partACorrect,\n },\n partB: {\n id: 'partB',\n value: partBCorrect,\n },\n },\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\nconst validatePart = (model = {}, config = {}) => {\n const { choices } = model;\n const { minAnswerChoices = 2, maxAnswerChoices } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const choicesErrors = {};\n let hasCorrectResponse = false;\n\n reversedChoices.forEach((choice, index) => {\n const { correct, value, label } = choice;\n\n if (correct) {\n hasCorrectResponse = true;\n }\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 const errors = {};\n const nbOfChoices = (choices || []).length;\n\n if (nbOfChoices < minAnswerChoices) {\n errors.answerChoicesError = `There should be at least ${minAnswerChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.answerChoicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (!hasCorrectResponse) {\n errors.correctResponseError = 'No correct response defined.';\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n return errors;\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { partA, partB } = model || {};\n const { partA: partAConfig, partB: partBConfig } = config || {};\n\n const partAErrors = validatePart(partA, partAConfig);\n const partBErrors = validatePart(partB, partBConfig);\n\n return { partA: partAErrors, partB: partBErrors };\n};\n"],"mappings":"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"}
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.isResponseCorrect = exports.getCorrectResponse = void 0;
9
-
10
8
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
11
-
12
9
  var getCorrectResponse = function getCorrectResponse(choices) {
13
10
  return choices && choices.filter(function (c) {
14
11
  return c.correct;
@@ -16,18 +13,13 @@ var getCorrectResponse = function getCorrectResponse(choices) {
16
13
  return c.value;
17
14
  }).sort();
18
15
  };
19
-
20
16
  exports.getCorrectResponse = getCorrectResponse;
21
-
22
17
  var isResponseCorrect = function isResponseCorrect(question, key, session) {
23
18
  var correctResponse = getCorrectResponse(question.choices);
24
-
25
19
  if (session && session.value) {
26
20
  return (0, _isEqual["default"])((session.value[key].value || []).sort(), correctResponse);
27
21
  }
28
-
29
22
  return false;
30
23
  };
31
-
32
24
  exports.isResponseCorrect = isResponseCorrect;
33
25
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["getCorrectResponse","choices","filter","c","correct","map","value","sort","isResponseCorrect","question","key","session","correctResponse"],"mappings":";;;;;;;;;AAAA;;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,OAAD;AAAA,SAChCA,OAAO,IACPA,OAAO,CACJC,MADH,CACU,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,OAAT;AAAA,GADV,EAEGC,GAFH,CAEO,UAACF,CAAD;AAAA,WAAOA,CAAC,CAACG,KAAT;AAAA,GAFP,EAGGC,IAHH,EAFgC;AAAA,CAA3B;;;;AAOA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,QAAD,EAAWC,GAAX,EAAgBC,OAAhB,EAA4B;AAC3D,MAAIC,eAAe,GAAGZ,kBAAkB,CAACS,QAAQ,CAACR,OAAV,CAAxC;;AAEA,MAAIU,OAAO,IAAIA,OAAO,CAACL,KAAvB,EAA8B;AAC5B,WAAO,yBAAQ,CAACK,OAAO,CAACL,KAAR,CAAcI,GAAd,EAAmBJ,KAAnB,IAA4B,EAA7B,EAAiCC,IAAjC,EAAR,EAAiDK,eAAjD,CAAP;AACD;;AAED,SAAO,KAAP;AACD,CARM","sourcesContent":["import isEqual from 'lodash/isEqual';\n\nexport const getCorrectResponse = (choices) =>\n choices &&\n choices\n .filter((c) => c.correct)\n .map((c) => c.value)\n .sort();\n\nexport const isResponseCorrect = (question, key, session) => {\n let correctResponse = getCorrectResponse(question.choices);\n\n if (session && session.value) {\n return isEqual((session.value[key].value || []).sort(), correctResponse);\n }\n\n return false;\n};\n"],"file":"utils.js"}
1
+ {"version":3,"file":"utils.js","names":["_isEqual","_interopRequireDefault","require","getCorrectResponse","choices","filter","c","correct","map","value","sort","exports","isResponseCorrect","question","key","session","correctResponse","isEqual"],"sources":["../src/utils.js"],"sourcesContent":["import isEqual from 'lodash/isEqual';\n\nexport const getCorrectResponse = (choices) =>\n choices &&\n choices\n .filter((c) => c.correct)\n .map((c) => c.value)\n .sort();\n\nexport const isResponseCorrect = (question, key, session) => {\n let correctResponse = getCorrectResponse(question.choices);\n\n if (session && session.value) {\n return isEqual((session.value[key].value || []).sort(), correctResponse);\n }\n\n return false;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,OAAO;EAAA,OACxCA,OAAO,IACPA,OAAO,CACJC,MAAM,CAAC,UAACC,CAAC;IAAA,OAAKA,CAAC,CAACC,OAAO;EAAA,EAAC,CACxBC,GAAG,CAAC,UAACF,CAAC;IAAA,OAAKA,CAAC,CAACG,KAAK;EAAA,EAAC,CACnBC,IAAI,CAAC,CAAC;AAAA;AAACC,OAAA,CAAAR,kBAAA,GAAAA,kBAAA;AAEL,IAAMS,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,QAAQ,EAAEC,GAAG,EAAEC,OAAO,EAAK;EAC3D,IAAIC,eAAe,GAAGb,kBAAkB,CAACU,QAAQ,CAACT,OAAO,CAAC;EAE1D,IAAIW,OAAO,IAAIA,OAAO,CAACN,KAAK,EAAE;IAC5B,OAAO,IAAAQ,mBAAO,EAAC,CAACF,OAAO,CAACN,KAAK,CAACK,GAAG,CAAC,CAACL,KAAK,IAAI,EAAE,EAAEC,IAAI,CAAC,CAAC,EAAEM,eAAe,CAAC;EAC1E;EAEA,OAAO,KAAK;AACd,CAAC;AAACL,OAAA,CAAAC,iBAAA,GAAAA,iBAAA"}
package/lib/index.js CHANGED
@@ -1,108 +1,73 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.isSessionComplete = exports["default"] = void 0;
9
-
10
8
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
-
12
9
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
-
20
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
16
  var _piePlayerEvents = require("@pie-framework/pie-player-events");
27
-
28
17
  var _multipleChoice = _interopRequireDefault(require("@pie-element/multiple-choice"));
29
-
30
18
  var _get = _interopRequireDefault(require("lodash/get"));
31
-
32
19
  var _debug = _interopRequireDefault(require("debug"));
33
-
34
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
-
36
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
-
38
22
  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
-
40
23
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
-
42
24
  var SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
43
25
  var MC_TAG_NAME = 'ebsr-multiple-choice';
44
26
  var log = (0, _debug["default"])('pie-elements:ebsr');
45
-
46
27
  var EbsrMC = /*#__PURE__*/function (_MultipleChoice) {
47
28
  (0, _inherits2["default"])(EbsrMC, _MultipleChoice);
48
-
49
29
  var _super = _createSuper(EbsrMC);
50
-
51
30
  function EbsrMC() {
52
31
  (0, _classCallCheck2["default"])(this, EbsrMC);
53
32
  return _super.apply(this, arguments);
54
33
  }
55
-
56
34
  return (0, _createClass2["default"])(EbsrMC);
57
35
  }(_multipleChoice["default"]);
58
-
59
36
  var defineMultipleChoice = function defineMultipleChoice() {
60
37
  if (!customElements.get(MC_TAG_NAME)) {
61
38
  customElements.define(MC_TAG_NAME, EbsrMC);
62
39
  }
63
40
  };
64
-
65
41
  defineMultipleChoice();
66
-
67
42
  var isNonEmptyArray = function isNonEmptyArray(a) {
68
43
  return Array.isArray(a) && a.length > 0;
69
44
  };
70
-
71
45
  var isSessionComplete = function isSessionComplete(session) {
72
46
  var a = (0, _get["default"])(session, 'value.partA.value');
73
47
  var b = (0, _get["default"])(session, 'value.partB.value');
74
48
  return isNonEmptyArray(a) && isNonEmptyArray(b);
75
49
  };
76
-
77
50
  exports.isSessionComplete = isSessionComplete;
78
-
79
51
  var Ebsr = /*#__PURE__*/function (_HTMLElement) {
80
52
  (0, _inherits2["default"])(Ebsr, _HTMLElement);
81
-
82
53
  var _super2 = _createSuper(Ebsr);
83
-
84
54
  function Ebsr() {
85
55
  var _this;
86
-
87
56
  (0, _classCallCheck2["default"])(this, Ebsr);
88
57
  _this = _super2.call(this);
89
58
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSessionUpdated", function (e) {
90
59
  if (e.target === (0, _assertThisInitialized2["default"])(_this)) {
91
60
  return;
92
61
  }
93
-
94
62
  e.preventDefault();
95
63
  e.stopImmediatePropagation();
96
64
  var id = e.target.getAttribute('id');
97
-
98
65
  if (id) {
99
66
  var key = "part".concat(id.toUpperCase());
100
-
101
67
  if (e.update) {
102
68
  _this._model[key] = e.update;
103
- } //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
104
-
105
-
69
+ }
70
+ //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
106
71
  _this.dispatchSessionChanged(e.srcElement._session, key);
107
72
  }
108
73
  });
@@ -110,16 +75,13 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
110
75
  _this._session = {};
111
76
  return _this;
112
77
  }
113
-
114
78
  (0, _createClass2["default"])(Ebsr, [{
115
79
  key: "model",
116
80
  set: function set(m) {
117
81
  var _this2 = this;
118
-
119
82
  this._model = m;
120
83
  customElements.whenDefined(MC_TAG_NAME).then(function () {
121
84
  _this2.setPartModel(_this2.partA, 'partA');
122
-
123
85
  _this2.setPartModel(_this2.partB, 'partB');
124
86
  });
125
87
  }
@@ -130,11 +92,9 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
130
92
  },
131
93
  set: function set(s) {
132
94
  var _this3 = this;
133
-
134
95
  this._session = s;
135
96
  customElements.whenDefined(MC_TAG_NAME).then(function () {
136
97
  _this3.setPartSession(_this3.partA, 'partA');
137
-
138
98
  _this3.setPartSession(_this3.partB, 'partB');
139
99
  });
140
100
  }
@@ -181,7 +141,6 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
181
141
  key: "connectedCallback",
182
142
  value: function connectedCallback() {
183
143
  this._render();
184
-
185
144
  this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
186
145
  }
187
146
  }, {
@@ -197,6 +156,5 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
197
156
  }]);
198
157
  return Ebsr;
199
158
  }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
200
-
201
159
  exports["default"] = Ebsr;
202
160
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["_piePlayerEvents","require","_multipleChoice","_interopRequireDefault","_get","_debug","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","debug","EbsrMC","_MultipleChoice","_inherits2","_super","_classCallCheck2","_createClass2","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","isSessionComplete","session","b","exports","Ebsr","_HTMLElement","_super2","_this","_assertThisInitialized2","preventDefault","stopImmediatePropagation","id","getAttribute","concat","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","set","m","_this2","whenDefined","then","setPartModel","partA","partB","s","_this3","setPartSession","value","part","mode","model","keyMode","choicePrefix","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","connectedCallback","_render","addEventListener","onSessionUpdated","disconnectedCallback","removeEventListener","innerHTML","_wrapNativeSuper2","HTMLElement"],"sources":["../src/index.js"],"sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"mappings":"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"}
package/lib/print.js CHANGED
@@ -1,51 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.isSessionComplete = exports["default"] = void 0;
9
-
10
8
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
-
12
9
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
-
20
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
16
  var _react = _interopRequireDefault(require("react"));
27
-
28
17
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
29
-
30
18
  var _multipleChoice = _interopRequireDefault(require("@pie-element/multiple-choice"));
31
-
32
19
  var _debug = _interopRequireDefault(require("debug"));
33
-
34
20
  var _get = _interopRequireDefault(require("lodash/get"));
35
-
36
21
  var _piePlayerEvents = require("@pie-framework/pie-player-events");
37
-
38
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
39
-
40
23
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
-
42
24
  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); }; }
43
-
44
25
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
45
-
46
26
  var MC_TAG_NAME = 'ebsr-multiple-choice';
47
27
  var SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
48
28
  var log = (0, _debug["default"])('pie-element:ebsr:print');
29
+
49
30
  /**
50
31
  * Live in same package as main element - so we can access some of the shared comps!
51
32
  *
@@ -75,67 +56,50 @@ var preparePrintModel = function preparePrintModel(model, opts) {
75
56
  model.keyMode = model.choicePrefix || 'letters';
76
57
  return model;
77
58
  };
78
-
79
59
  var EbsrMC = /*#__PURE__*/function (_MultipleChoice) {
80
60
  (0, _inherits2["default"])(EbsrMC, _MultipleChoice);
81
-
82
61
  var _super = _createSuper(EbsrMC);
83
-
84
62
  function EbsrMC() {
85
63
  (0, _classCallCheck2["default"])(this, EbsrMC);
86
64
  return _super.apply(this, arguments);
87
65
  }
88
-
89
66
  return (0, _createClass2["default"])(EbsrMC);
90
67
  }(_multipleChoice["default"]);
91
-
92
68
  var defineMultipleChoice = function defineMultipleChoice() {
93
69
  if (!customElements.get(MC_TAG_NAME)) {
94
70
  customElements.define(MC_TAG_NAME, EbsrMC);
95
71
  }
96
72
  };
97
-
98
73
  defineMultipleChoice();
99
-
100
74
  var isNonEmptyArray = function isNonEmptyArray(a) {
101
75
  return Array.isArray(a) && a.length > 0;
102
76
  };
103
-
104
77
  var isSessionComplete = function isSessionComplete(session) {
105
78
  var a = (0, _get["default"])(session, 'value.partA.value');
106
79
  var b = (0, _get["default"])(session, 'value.partB.value');
107
80
  return isNonEmptyArray(a) && isNonEmptyArray(b);
108
81
  };
109
-
110
82
  exports.isSessionComplete = isSessionComplete;
111
-
112
83
  var Ebsr = /*#__PURE__*/function (_HTMLElement) {
113
84
  (0, _inherits2["default"])(Ebsr, _HTMLElement);
114
-
115
85
  var _super2 = _createSuper(Ebsr);
116
-
117
86
  function Ebsr() {
118
87
  var _this;
119
-
120
88
  (0, _classCallCheck2["default"])(this, Ebsr);
121
89
  _this = _super2.call(this);
122
90
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSessionUpdated", function (e) {
123
91
  if (e.target === (0, _assertThisInitialized2["default"])(_this)) {
124
92
  return;
125
93
  }
126
-
127
94
  e.preventDefault();
128
95
  e.stopImmediatePropagation();
129
96
  var id = e.target.getAttribute('id');
130
-
131
97
  if (id) {
132
98
  var key = "part".concat(id.toUpperCase());
133
-
134
99
  if (e.update) {
135
100
  _this._model[key] = e.update;
136
- } //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
137
-
138
-
101
+ }
102
+ //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
139
103
  _this.dispatchSessionChanged(e.srcElement._session, key);
140
104
  }
141
105
  });
@@ -144,16 +108,13 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
144
108
  _this._options = null;
145
109
  return _this;
146
110
  }
147
-
148
111
  (0, _createClass2["default"])(Ebsr, [{
149
112
  key: "model",
150
113
  set: function set(m) {
151
114
  var _this2 = this;
152
-
153
115
  this._model = m;
154
116
  customElements.whenDefined(MC_TAG_NAME).then(function () {
155
117
  _this2.setPartModel(_this2.partA, 'partA');
156
-
157
118
  _this2.setPartModel(_this2.partB, 'partB');
158
119
  });
159
120
  }
@@ -161,11 +122,9 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
161
122
  key: "session",
162
123
  set: function set(s) {
163
124
  var _this3 = this;
164
-
165
125
  this._session = s;
166
126
  customElements.whenDefined(MC_TAG_NAME).then(function () {
167
127
  _this3.setPartSession(_this3.partA, 'partA');
168
-
169
128
  _this3.setPartSession(_this3.partB, 'partB');
170
129
  });
171
130
  }
@@ -176,7 +135,6 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
176
135
  part.model = _objectSpread(_objectSpread({}, preparePrintModel(this._model[key], this._options)), {}, {
177
136
  keyMode: this._model[key].choicePrefix
178
137
  });
179
-
180
138
  if (!part._session) {
181
139
  // for print, "set session" is not called,
182
140
  // but ebsr needs sessions in order to render the elements,
@@ -222,7 +180,6 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
222
180
  key: "connectedCallback",
223
181
  value: function connectedCallback() {
224
182
  this._render();
225
-
226
183
  this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
227
184
  }
228
185
  }, {
@@ -238,6 +195,5 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
238
195
  }]);
239
196
  return Ebsr;
240
197
  }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
241
-
242
198
  exports["default"] = Ebsr;
243
199
  //# sourceMappingURL=print.js.map
package/lib/print.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/print.js"],"names":["MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","o","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;AACA,IAAMA,WAAW,GAAG,sBAApB;AACA,IAAMC,eAAe,GAAGC,qCAAoBC,IAA5C;AAEA,IAAMC,GAAG,GAAG,uBAAM,wBAAN,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,uBAAN,GAAgCP,KAAhC;AACAF,EAAAA,KAAK,CAACU,iBAAN,GAA0BR,KAA1B;AACAF,EAAAA,KAAK,CAACW,IAAN,GAAaT,KAAK,GAAG,UAAH,GAAgB,QAAlC;AAEAF,EAAAA,KAAK,CAACY,QAAN,GAAiB,IAAjB;AACAZ,EAAAA,KAAK,CAACa,kBAAN,GAA2B,IAA3B;AACAb,EAAAA,KAAK,CAACc,eAAN,GAAwB,IAAxB;AACAd,EAAAA,KAAK,CAACe,aAAN,GAAsBf,KAAK,CAACe,aAAN,IAAuB,UAA7C;AAEA,MAAMC,OAAO,GAAG,2BAAUhB,KAAK,CAACgB,OAAhB,CAAhB;AAEAhB,EAAAA,KAAK,CAACgB,OAAN,GAAgBA,OAAO,CAACC,GAAR,CAAY,UAACC,CAAD,EAAO;AACjCA,IAAAA,CAAC,CAACC,SAAF,GAAcjB,KAAK,IAAIF,KAAK,CAACoB,gBAAN,KAA2B,KAApC,GAA4CF,CAAC,CAACC,SAA9C,GAA0Db,SAAxE;AACAY,IAAAA,CAAC,CAACG,QAAF,GAAanB,KAAb;AACAgB,IAAAA,CAAC,CAACI,QAAF,GAAahB,SAAb;AACA,WAAOY,CAAP;AACD,GALe,CAAhB;AAOAlB,EAAAA,KAAK,CAACuB,OAAN,GAAgBvB,KAAK,CAACwB,YAAN,IAAsB,SAAtC;AAEA,SAAOxB,KAAP;AACD,CA3BD;;IA6BMyB,M;;;;;;;;;;;EAAeC,0B;;AAErB,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACjC,MAAI,CAACC,cAAc,CAACC,GAAf,CAAmBnC,WAAnB,CAAL,EAAsC;AACpCkC,IAAAA,cAAc,CAACE,MAAf,CAAsBpC,WAAtB,EAAmC+B,MAAnC;AACD;AACF,CAJD;;AAMAE,oBAAoB;;AAEpB,IAAMI,eAAe,GAAG,SAAlBA,eAAkB,CAACC,CAAD;AAAA,SAAOC,KAAK,CAACC,OAAN,CAAcF,CAAd,KAAoBA,CAAC,CAACG,MAAF,GAAW,CAAtC;AAAA,CAAxB;;AAEO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,OAAD,EAAa;AAC5C,MAAML,CAAC,GAAG,qBAAIK,OAAJ,EAAa,mBAAb,CAAV;AACA,MAAMC,CAAC,GAAG,qBAAID,OAAJ,EAAa,mBAAb,CAAV;AAEA,SAAON,eAAe,CAACC,CAAD,CAAf,IAAsBD,eAAe,CAACO,CAAD,CAA5C;AACD,CALM;;;;IAOcC,I;;;;;AACnB,kBAAc;AAAA;;AAAA;AACZ;AADY,yGAOK,UAACC,CAAD,EAAO;AACxB,UAAIA,CAAC,CAACC,MAAF,mDAAJ,EAAuB;AACrB;AACD;;AAEDD,MAAAA,CAAC,CAACE,cAAF;AACAF,MAAAA,CAAC,CAACG,wBAAF;AAEA,UAAMC,EAAE,GAAGJ,CAAC,CAACC,MAAF,CAASI,YAAT,CAAsB,IAAtB,CAAX;;AAEA,UAAID,EAAJ,EAAQ;AACN,YAAME,GAAG,iBAAUF,EAAE,CAACG,WAAH,EAAV,CAAT;;AAEA,YAAIP,CAAC,CAACQ,MAAN,EAAc;AACZ,gBAAKC,MAAL,CAAYH,GAAZ,IAAmBN,CAAC,CAACQ,MAArB;AACD,SALK,CAMN;;;AACA,cAAKE,sBAAL,CAA4BV,CAAC,CAACW,UAAF,CAAaC,QAAzC,EAAmDN,GAAnD;AACD;AACF,KA1Ba;AAEZ,UAAKG,MAAL,GAAc,EAAd;AACA,UAAKG,QAAL,GAAgB,EAAhB;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAJY;AAKb;;;;SAuBD,aAAUC,CAAV,EAAa;AAAA;;AACX,WAAKL,MAAL,GAAcK,CAAd;AAEA1B,MAAAA,cAAc,CAAC2B,WAAf,CAA2B7D,WAA3B,EAAwC8D,IAAxC,CAA6C,YAAM;AACjD,QAAA,MAAI,CAACC,YAAL,CAAkB,MAAI,CAACC,KAAvB,EAA8B,OAA9B;;AACA,QAAA,MAAI,CAACD,YAAL,CAAkB,MAAI,CAACE,KAAvB,EAA8B,OAA9B;AACD,OAHD;AAID;;;SAED,aAAYC,CAAZ,EAAe;AAAA;;AACb,WAAKR,QAAL,GAAgBQ,CAAhB;AAEAhC,MAAAA,cAAc,CAAC2B,WAAf,CAA2B7D,WAA3B,EAAwC8D,IAAxC,CAA6C,YAAM;AACjD,QAAA,MAAI,CAACK,cAAL,CAAoB,MAAI,CAACH,KAAzB,EAAgC,OAAhC;;AACA,QAAA,MAAI,CAACG,cAAL,CAAoB,MAAI,CAACF,KAAzB,EAAgC,OAAhC;AACD,OAHD;AAID;;;WAED,sBAAaG,IAAb,EAAmBhB,GAAnB,EAAwB;AACtB,UAAI,KAAKG,MAAL,IAAe,KAAKA,MAAL,CAAYH,GAAZ,CAAf,IAAmCgB,IAAvC,EAA6C;AAC3CA,QAAAA,IAAI,CAAC9D,KAAL,mCACKD,iBAAiB,CAAC,KAAKkD,MAAL,CAAYH,GAAZ,CAAD,EAAmB,KAAKO,QAAxB,CADtB;AAEE9B,UAAAA,OAAO,EAAE,KAAK0B,MAAL,CAAYH,GAAZ,EAAiBtB;AAF5B;;AAKA,YAAI,CAACsC,IAAI,CAACV,QAAV,EAAoB;AAClB;AACA;AACA;AACAU,UAAAA,IAAI,CAACzB,OAAL,GAAe,EAAf;AACD;AACF;AACF;;;SAED,aAAY0B,CAAZ,EAAe;AACb,WAAKV,QAAL,GAAgBU,CAAhB;AACD;;;WAED,wBAAeD,IAAf,EAAqBhB,GAArB,EAA0B;AACxB,UAAI,KAAKM,QAAL,IAAiB,KAAKH,MAAtB,IAAgCa,IAApC,EAA0C;AACxC,YAAQE,KAAR,GAAkB,KAAKZ,QAAvB,CAAQY,KAAR;AACAF,QAAAA,IAAI,CAACzB,OAAL,GAAe2B,KAAK,IAAIA,KAAK,CAAClB,GAAD,CAAd,GAAsBkB,KAAK,CAAClB,GAAD,CAA3B,GAAmC;AAAEF,UAAAA,EAAE,EAAEE;AAAN,SAAlD;AACD;AACF;;;WAED,gCAAuBmB,WAAvB,EAAoCnB,GAApC,EAAyC;AACvC,WAAKM,QAAL,CAAcY,KAAd,mCACK,KAAKZ,QAAL,CAAcY,KADnB,4CAEGlB,GAFH,EAESmB,WAFT;AAKAnE,MAAAA,GAAG,CAAC,8BAAD,EAAiC,KAAKsD,QAAtC,CAAH;AACA,UAAMc,QAAQ,GAAG9B,iBAAiB,CAAC,KAAKgB,QAAN,CAAlC;AACA,WAAKe,aAAL,CAAmB,IAAIvE,oCAAJ,CAAwB,KAAKwE,OAAL,CAAaC,WAAb,EAAxB,EAAoDH,QAApD,CAAnB;AACD;;;SAED,eAAY;AACV,aAAO,KAAKI,aAAL,WAAsB5E,WAAtB,QAAP;AACD;;;SAED,eAAY;AACV,aAAO,KAAK4E,aAAL,WAAsB5E,WAAtB,QAAP;AACD;;;WAED,6BAAoB;AAClB,WAAK6E,OAAL;;AACA,WAAKC,gBAAL,CAAsB7E,eAAtB,EAAuC,KAAK8E,gBAA5C;AACD;;;WAED,gCAAuB;AACrB,WAAKC,mBAAL,CAAyB/E,eAAzB,EAA0C,KAAK8E,gBAA/C;AACD;;;WAED,mBAAU;AACR,WAAKE,SAAL,qCAEOjF,WAFP,yBAE+BA,WAF/B,yBAGOA,WAHP,yBAG+BA,WAH/B;AAMD;;;kDA7G+BkF,W","sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\n\nconst log = debug('pie-element:ebsr: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.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : 'gather';\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n keyMode: this._model[key].choicePrefix,\n };\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"print.js"}
1
+ {"version":3,"file":"print.js","names":["_react","_interopRequireDefault","require","_cloneDeep","_multipleChoice","_debug","_get","_piePlayerEvents","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","log","debug","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","cloneDeep","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","_MultipleChoice","_inherits2","_super","_classCallCheck2","_createClass2","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","isSessionComplete","session","b","exports","Ebsr","_HTMLElement","_super2","_this","_assertThisInitialized2","preventDefault","stopImmediatePropagation","id","getAttribute","concat","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","set","m","_this2","whenDefined","then","setPartModel","partA","partB","s","_this3","setPartSession","value","part","o","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","connectedCallback","_render","addEventListener","onSessionUpdated","disconnectedCallback","removeEventListener","innerHTML","_wrapNativeSuper2","HTMLElement"],"sources":["../src/print.js"],"sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\n\nconst log = debug('pie-element:ebsr: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.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : 'gather';\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n keyMode: this._model[key].choicePrefix,\n };\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"mappings":"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"}