@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.
- package/configure/lib/defaults.js +0 -8
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +6 -55
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +59 -96
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +1 -1
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +99 -174
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +0 -8
- package/controller/lib/utils.js.map +1 -1
- package/lib/index.js +2 -44
- package/lib/index.js.map +1 -1
- package/lib/print.js +3 -47
- package/lib/print.js.map +1 -1
- package/package.json +3 -3
|
@@ -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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"}
|
package/controller/lib/utils.js
CHANGED
|
@@ -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,"
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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":"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","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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"}
|