@pie-element/explicit-constructed-response 6.10.2-next.7 → 6.10.3-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/configure/package.json +1 -1
- package/controller/CHANGELOG.md +11 -0
- package/controller/lib/defaults.js +8 -10
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +1 -6
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/module/configure.js +1 -1
- package/module/controller.js +9 -21
- package/module/element.js +24 -22
- package/module/index.html +1 -1
- package/module/manifest.json +2 -2
- package/module/print.html +1 -1
- package/module/print.js +24 -22
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.10.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response@6.10.1...@pie-element/explicit-constructed-response@6.10.2) (2024-04-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **explicit-constructed-respone:** update controller defaults PD-3544 ([749610d](https://github.com/pie-framework/pie-elements/commit/749610daae86c8c14a248cadfea09b5d1bab71e5))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [6.10.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response@6.10.0...@pie-element/explicit-constructed-response@6.10.1) (2024-04-01)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @pie-element/explicit-constructed-response
|
package/configure/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@material-ui/icons": "^3.0.1",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
11
|
-
"@pie-lib/pie-toolbox": "1.
|
|
11
|
+
"@pie-lib/pie-toolbox": "1.15.0",
|
|
12
12
|
"classnames": "^2.2.6",
|
|
13
13
|
"debug": "^3.1.0",
|
|
14
14
|
"lodash": "^4.17.15",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.8.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-controller@4.8.1...@pie-element/explicit-constructed-response-controller@4.8.2) (2024-04-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **explicit-constructed-respone:** update controller defaults PD-3544 ([749610d](https://github.com/pie-framework/pie-elements/commit/749610daae86c8c14a248cadfea09b5d1bab71e5))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [4.8.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-controller@4.8.0...@pie-element/explicit-constructed-response-controller@4.8.1) (2024-04-01)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @pie-element/explicit-constructed-response-controller
|
|
@@ -5,16 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _default = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
label: 'Iceland'
|
|
17
|
-
}]
|
|
8
|
+
markup: '',
|
|
9
|
+
prompt: '',
|
|
10
|
+
promptEnabled: true,
|
|
11
|
+
rationale: '',
|
|
12
|
+
rationaleEnabled: true,
|
|
13
|
+
teacherInstructions: '',
|
|
14
|
+
teacherInstructionsEnabled: true,
|
|
15
|
+
studentInstructionsEnabled: true
|
|
18
16
|
};
|
|
19
17
|
exports["default"] = _default;
|
|
20
18
|
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["prompt","
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["markup","prompt","promptEnabled","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","studentInstructionsEnabled"],"mappings":";;;;;;eAAe;AACbA,EAAAA,MAAM,EAAE,EADK;AAEbC,EAAAA,MAAM,EAAE,EAFK;AAGbC,EAAAA,aAAa,EAAE,IAHF;AAIbC,EAAAA,SAAS,EAAE,EAJE;AAKbC,EAAAA,gBAAgB,EAAE,IALL;AAMbC,EAAAA,mBAAmB,EAAE,EANR;AAObC,EAAAA,0BAA0B,EAAE,IAPf;AAQbC,EAAAA,0BAA0B,EAAE;AARf,C","sourcesContent":["export default {\n markup: '',\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n};\n"],"file":"defaults.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -94,12 +94,7 @@ var getAdjustedLength = function getAdjustedLength(length) {
|
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
var normalize = function normalize(question) {
|
|
97
|
-
return _objectSpread(_objectSpread({}, _defaults["default"]),
|
|
98
|
-
rationaleEnabled: true,
|
|
99
|
-
promptEnabled: true,
|
|
100
|
-
teacherInstructionsEnabled: true,
|
|
101
|
-
studentInstructionsEnabled: true
|
|
102
|
-
}, question);
|
|
97
|
+
return _objectSpread(_objectSpread({}, _defaults["default"]), question);
|
|
103
98
|
};
|
|
104
99
|
/**
|
|
105
100
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","prepareChoice","mode","defaultFeedback","choice","out","label","value","correct","feedbackType","feedback","type","getFeedback","getAdjustedLength","length","normalize","question","defaults","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","Promise","resolve","choices","Object","keys","forEach","key","map","item","index","normalizedQuestion","assign","incorrect","preparChoiceFn","obj","area","respArea","chosenValue","val","c","prepareVal","showNote","values","note","t","lng","language","maxLengthPerChoice","maxLengthPerChoiceEnabled","undefinedLengths","labelLengthsArr","Math","max","disabled","prompt","markup","displayType","playerSpellCheckEnabled","responseCorrect","getScore","undefined","role","rationale","teacherInstructions","getTextFromHTML","html","replace","trim","config","responseAreas","match","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","partialScoringEnabled","partialScoring","enabled","score","empty","createCorrectResponseSession","i","id","getInnerText","replaceAll","getContent","validate","maxResponseAreas","allChoicesErrors","errors","field","required","entries","reversedChoices","reverse","choicesErrors","identicalAnswer","slice","some","nbOfResponseAreas"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport debug from 'debug';\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport defaults from './defaults';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nconst log = debug('explicit-constructed-response:controller');\n\nexport const prepareChoice = (mode, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (mode === 'evaluate') {\n out.correct = true;\n\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback['correct'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n\n return out;\n};\n\nconst getFeedback = (value) => {\n if (value) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\n// also used in configure/src/markupUtils.js\nconst getAdjustedLength = (length) => {\n if (length <= 2) {\n return length + 2;\n }\n\n if (length <= 4) {\n return length + 3;\n }\n\n if (length <= 6) {\n return length + 4;\n }\n\n return length + 5;\n};\n\nexport const normalize = (question) => ({\n ...defaults,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport function model(question, session, env) {\n return new Promise(async (resolve) => {\n // this was added to treat an exception, when the model has choices without the \"value\" property\n // like: { label: 'test' }\n if (question.choices) {\n Object.keys(question.choices).forEach((key) => {\n question.choices[key] = (question.choices[key] || []).map((item, index) => {\n if (!item.value) {\n log('Choice does not contain \"value\" property, which is required.', item);\n return { value: `${index}`, ...item };\n }\n\n return item;\n });\n });\n }\n\n const normalizedQuestion = normalize(question);\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n normalizedQuestion.defaultFeedback,\n );\n\n const { value = {} } = session || {};\n\n const preparChoiceFn = prepareChoice(env.mode, defaultFeedback);\n\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, preparChoiceFn);\n\n return obj;\n },\n {},\n );\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n feedback = reduce(\n normalizedQuestion.choices,\n (obj, respArea, key) => {\n const chosenValue = value && value[key];\n const val = !isEmpty(chosenValue) && find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue));\n\n obj[key] = getFeedback(val);\n\n return obj;\n },\n {},\n );\n }\n\n let showNote = false;\n // check if a choice has an alternate\n Object.values(choices).forEach((choice) => {\n if (choice && choice.length > 1) {\n showNote = true;\n }\n });\n\n let { note } = normalizedQuestion;\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: normalizedQuestion.language });\n }\n\n const { maxLengthPerChoice = [], maxLengthPerChoiceEnabled } = normalizedQuestion;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = (choice || []).map((choice) => (choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n env,\n note,\n showNote,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n displayType: normalizedQuestion.displayType,\n playerSpellCheckEnabled: normalizedQuestion.playerSpellCheckEnabled,\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n language: normalizedQuestion.language,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nconst getTextFromHTML = (html) => {\n return (html || '').replace(/<\\/?[^>]+(>|$)/g, '');\n};\n\nexport const prepareVal = (html) => {\n const value = getTextFromHTML(html);\n\n return value.trim();\n};\n\nexport const getScore = (config, session) => {\n const { value } = session || {};\n\n if (!session || isEmpty(session) || !value) {\n return 0;\n }\n\n const responseAreas = config.markup && config.markup.match(/\\{\\{(.)\\}\\}/g);\n const maxScore = responseAreas ? responseAreas.length : 0;\n const correctCount = reduce(\n config.choices,\n (total, respArea, key) => {\n const chosenValue = value && value[key];\n\n if (isEmpty(chosenValue) || !find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue))) {\n return total;\n }\n\n return total + 1;\n },\n 0,\n );\n\n const str = maxScore ? (correctCount / maxScore).toFixed(2) : 0;\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0, empty: isEmpty(session) });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n Object.keys(choices).forEach((key, i) => {\n value[i] = choices[key][0].label;\n });\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { choices, markup } = model;\n const { maxResponseAreas } = config;\n const allChoicesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(choices || {}).forEach(([key, values]) => {\n const reversedChoices = [...(values || [])].reverse();\n const choicesErrors = {};\n\n reversedChoices.forEach((choice, index) => {\n const { value, label } = choice;\n\n if (label === '' || label === '<div></div>') {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(choicesErrors)) {\n allChoicesErrors[key] = choicesErrors;\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(allChoicesErrors)) {\n errors.choices = allChoicesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","prepareChoice","mode","defaultFeedback","choice","out","label","value","correct","feedbackType","feedback","type","getFeedback","getAdjustedLength","length","normalize","question","defaults","model","session","env","Promise","resolve","choices","Object","keys","forEach","key","map","item","index","normalizedQuestion","assign","incorrect","preparChoiceFn","obj","area","respArea","chosenValue","val","c","prepareVal","showNote","values","note","t","lng","language","maxLengthPerChoice","maxLengthPerChoiceEnabled","undefinedLengths","labelLengthsArr","Math","max","disabled","prompt","promptEnabled","markup","displayType","playerSpellCheckEnabled","responseCorrect","getScore","undefined","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","getTextFromHTML","html","replace","trim","config","responseAreas","match","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","partialScoringEnabled","partialScoring","enabled","score","empty","createCorrectResponseSession","i","id","getInnerText","replaceAll","getContent","validate","maxResponseAreas","allChoicesErrors","errors","field","required","entries","reversedChoices","reverse","choicesErrors","identicalAnswer","slice","some","nbOfResponseAreas"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\nimport debug from 'debug';\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport defaults from './defaults';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nconst log = debug('explicit-constructed-response:controller');\n\nexport const prepareChoice = (mode, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (mode === 'evaluate') {\n out.correct = true;\n\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback['correct'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n\n return out;\n};\n\nconst getFeedback = (value) => {\n if (value) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\n// also used in configure/src/markupUtils.js\nconst getAdjustedLength = (length) => {\n if (length <= 2) {\n return length + 2;\n }\n\n if (length <= 4) {\n return length + 3;\n }\n\n if (length <= 6) {\n return length + 4;\n }\n\n return length + 5;\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport function model(question, session, env) {\n return new Promise(async (resolve) => {\n // this was added to treat an exception, when the model has choices without the \"value\" property\n // like: { label: 'test' }\n if (question.choices) {\n Object.keys(question.choices).forEach((key) => {\n question.choices[key] = (question.choices[key] || []).map((item, index) => {\n if (!item.value) {\n log('Choice does not contain \"value\" property, which is required.', item);\n return { value: `${index}`, ...item };\n }\n\n return item;\n });\n });\n }\n\n const normalizedQuestion = normalize(question);\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n normalizedQuestion.defaultFeedback,\n );\n\n const { value = {} } = session || {};\n\n const preparChoiceFn = prepareChoice(env.mode, defaultFeedback);\n\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, preparChoiceFn);\n\n return obj;\n },\n {},\n );\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n feedback = reduce(\n normalizedQuestion.choices,\n (obj, respArea, key) => {\n const chosenValue = value && value[key];\n const val = !isEmpty(chosenValue) && find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue));\n\n obj[key] = getFeedback(val);\n\n return obj;\n },\n {},\n );\n }\n\n let showNote = false;\n // check if a choice has an alternate\n Object.values(choices).forEach((choice) => {\n if (choice && choice.length > 1) {\n showNote = true;\n }\n });\n\n let { note } = normalizedQuestion;\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: normalizedQuestion.language });\n }\n\n const { maxLengthPerChoice = [], maxLengthPerChoiceEnabled } = normalizedQuestion;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = (choice || []).map((choice) => (choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n env,\n note,\n showNote,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n displayType: normalizedQuestion.displayType,\n playerSpellCheckEnabled: normalizedQuestion.playerSpellCheckEnabled,\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n language: normalizedQuestion.language,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nconst getTextFromHTML = (html) => {\n return (html || '').replace(/<\\/?[^>]+(>|$)/g, '');\n};\n\nexport const prepareVal = (html) => {\n const value = getTextFromHTML(html);\n\n return value.trim();\n};\n\nexport const getScore = (config, session) => {\n const { value } = session || {};\n\n if (!session || isEmpty(session) || !value) {\n return 0;\n }\n\n const responseAreas = config.markup && config.markup.match(/\\{\\{(.)\\}\\}/g);\n const maxScore = responseAreas ? responseAreas.length : 0;\n const correctCount = reduce(\n config.choices,\n (total, respArea, key) => {\n const chosenValue = value && value[key];\n\n if (isEmpty(chosenValue) || !find(respArea, (c) => prepareVal(c.label) === prepareVal(chosenValue))) {\n return total;\n }\n\n return total + 1;\n },\n 0,\n );\n\n const str = maxScore ? (correctCount / maxScore).toFixed(2) : 0;\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0, empty: isEmpty(session) });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n Object.keys(choices).forEach((key, i) => {\n value[i] = choices[key][0].label;\n });\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { choices, markup } = model;\n const { maxResponseAreas } = config;\n const allChoicesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(choices || {}).forEach(([key, values]) => {\n const reversedChoices = [...(values || [])].reverse();\n const choicesErrors = {};\n\n reversedChoices.forEach((choice, index) => {\n const { value, label } = choice;\n\n if (label === '' || label === '<div></div>') {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(choicesErrors)) {\n allChoicesErrors[key] = choicesErrors;\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(allChoicesErrors)) {\n errors.choices = allChoicesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/explicit-constructed-response-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "4.8.
|
|
4
|
+
"version": "4.8.2",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"author": "",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@pie-lib/pie-toolbox": "1.
|
|
11
|
+
"@pie-lib/pie-toolbox": "1.15.0",
|
|
12
12
|
"debug": "^3.1.0",
|
|
13
13
|
"lodash": "^4.17.15",
|
|
14
14
|
"type-of": "^2.0.1"
|
package/module/configure.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.7.1/module/index.js";
|
|
2
2
|
import {_dll_pie_lib__pie_toolbox_editable_html, _dll_pie_lib__pie_toolbox_config_ui} from "../../../@pie-lib/pie-toolbox-module@4.0.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
package/module/controller.js
CHANGED
|
@@ -21575,19 +21575,14 @@ var _controllerUtils = controllerUtils;
|
|
|
21575
21575
|
}(controllerUtils$1));
|
|
21576
21576
|
|
|
21577
21577
|
var defaults = {
|
|
21578
|
-
|
|
21579
|
-
|
|
21580
|
-
|
|
21581
|
-
|
|
21582
|
-
|
|
21583
|
-
|
|
21584
|
-
|
|
21585
|
-
|
|
21586
|
-
{
|
|
21587
|
-
value: 'iceland',
|
|
21588
|
-
label: 'Iceland',
|
|
21589
|
-
},
|
|
21590
|
-
],
|
|
21578
|
+
markup: '',
|
|
21579
|
+
prompt: '',
|
|
21580
|
+
promptEnabled: true,
|
|
21581
|
+
rationale: '',
|
|
21582
|
+
rationaleEnabled: true,
|
|
21583
|
+
teacherInstructions: '',
|
|
21584
|
+
teacherInstructionsEnabled: true,
|
|
21585
|
+
studentInstructionsEnabled: true,
|
|
21591
21586
|
};
|
|
21592
21587
|
|
|
21593
21588
|
var translator$2 = {};
|
|
@@ -24689,14 +24684,7 @@ const getAdjustedLength = (length) => {
|
|
|
24689
24684
|
return length + 5;
|
|
24690
24685
|
};
|
|
24691
24686
|
|
|
24692
|
-
const normalize = (question) => ({
|
|
24693
|
-
...defaults,
|
|
24694
|
-
rationaleEnabled: true,
|
|
24695
|
-
promptEnabled: true,
|
|
24696
|
-
teacherInstructionsEnabled: true,
|
|
24697
|
-
studentInstructionsEnabled: true,
|
|
24698
|
-
...question,
|
|
24699
|
-
});
|
|
24687
|
+
const normalize = (question) => ({ ...defaults, ...question });
|
|
24700
24688
|
|
|
24701
24689
|
/**
|
|
24702
24690
|
*
|
package/module/element.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_debug, _dll_lodash, _dll_react_dom_server, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_debug, _dll_lodash, _dll_react_dom_server, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.7.1/module/index.js";
|
|
2
2
|
import {_dll_pie_lib__pie_toolbox_correct_answer_toggle, _dll_pie_lib__pie_toolbox_render_ui} from "../../../@pie-lib/pie-toolbox-module@4.0.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
@@ -120609,31 +120609,33 @@ const require$$11$2 = _dll_prop_types;
|
|
|
120609
120609
|
}, {
|
|
120610
120610
|
key: "alignImages",
|
|
120611
120611
|
value: function alignImages() {
|
|
120612
|
-
var
|
|
120613
|
-
|
|
120614
|
-
|
|
120615
|
-
|
|
120616
|
-
|
|
120617
|
-
|
|
120618
|
-
|
|
120619
|
-
|
|
120620
|
-
|
|
120621
|
-
|
|
120622
|
-
|
|
120623
|
-
|
|
120624
|
-
|
|
120625
|
-
|
|
120626
|
-
|
|
120627
|
-
|
|
120612
|
+
var previewPrompts = document.querySelectorAll('#preview-prompt');
|
|
120613
|
+
previewPrompts.forEach(function (previewPrompt) {
|
|
120614
|
+
var images = previewPrompt.getElementsByTagName('img');
|
|
120615
|
+
if (images && images.length) {
|
|
120616
|
+
var _iterator = _createForOfIteratorHelper(images), _step;
|
|
120617
|
+
try {
|
|
120618
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
120619
|
+
var image = _step.value;
|
|
120620
|
+
if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {
|
|
120621
|
+
var parentNode = image.parentElement;
|
|
120622
|
+
if (!(parentNode.tagName === 'DIV' && parentNode.style.display === 'flex' && parentNode.style.width === '100%')) {
|
|
120623
|
+
var div = document.createElement('div');
|
|
120624
|
+
div.style.display = 'flex';
|
|
120625
|
+
div.style.width = '100%';
|
|
120626
|
+
var copyImage = image.cloneNode(true);
|
|
120627
|
+
div.appendChild(copyImage);
|
|
120628
|
+
parentNode.replaceChild(div, image);
|
|
120629
|
+
}
|
|
120628
120630
|
}
|
|
120629
120631
|
}
|
|
120632
|
+
} catch (err) {
|
|
120633
|
+
_iterator.e(err);
|
|
120634
|
+
} finally {
|
|
120635
|
+
_iterator.f();
|
|
120630
120636
|
}
|
|
120631
|
-
} catch (err) {
|
|
120632
|
-
_iterator.e(err);
|
|
120633
|
-
} finally {
|
|
120634
|
-
_iterator.f();
|
|
120635
120637
|
}
|
|
120636
|
-
}
|
|
120638
|
+
});
|
|
120637
120639
|
}
|
|
120638
120640
|
}, {
|
|
120639
120641
|
key: "render",
|
package/module/index.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<!doctype html>
|
|
3
3
|
<html>
|
|
4
4
|
<head>
|
|
5
|
-
<title>@pie-element/explicit-constructed-response@6.10.
|
|
5
|
+
<title>@pie-element/explicit-constructed-response@6.10.2</title>
|
|
6
6
|
<script
|
|
7
7
|
type="module"
|
|
8
8
|
src="https://cdn.jsdelivr.net/npm/@pslb/demo-el@^1.0.0/dist/demo-el/demo-el.esm.js"></script>
|
package/module/manifest.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/explicit-constructed-response",
|
|
3
|
-
"version": "6.10.
|
|
3
|
+
"version": "6.10.2",
|
|
4
4
|
"modules": [
|
|
5
5
|
{
|
|
6
6
|
"name": "@pie-lib/pie-toolbox-math-rendering-module",
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.7.1"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"name": "@pie-lib/pie-toolbox-module",
|
package/module/print.html
CHANGED
package/module/print.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_debug, _dll_lodash, _dll_react_dom_server, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_debug, _dll_lodash, _dll_react_dom_server, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@1.7.1/module/index.js";
|
|
2
2
|
import {_dll_pie_lib__pie_toolbox_correct_answer_toggle, _dll_pie_lib__pie_toolbox_render_ui} from "../../../@pie-lib/pie-toolbox-module@4.0.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
@@ -120572,31 +120572,33 @@ const require$$11$2 = _dll_prop_types;
|
|
|
120572
120572
|
}, {
|
|
120573
120573
|
key: "alignImages",
|
|
120574
120574
|
value: function alignImages() {
|
|
120575
|
-
var
|
|
120576
|
-
|
|
120577
|
-
|
|
120578
|
-
|
|
120579
|
-
|
|
120580
|
-
|
|
120581
|
-
|
|
120582
|
-
|
|
120583
|
-
|
|
120584
|
-
|
|
120585
|
-
|
|
120586
|
-
|
|
120587
|
-
|
|
120588
|
-
|
|
120589
|
-
|
|
120590
|
-
|
|
120575
|
+
var previewPrompts = document.querySelectorAll('#preview-prompt');
|
|
120576
|
+
previewPrompts.forEach(function (previewPrompt) {
|
|
120577
|
+
var images = previewPrompt.getElementsByTagName('img');
|
|
120578
|
+
if (images && images.length) {
|
|
120579
|
+
var _iterator = _createForOfIteratorHelper(images), _step;
|
|
120580
|
+
try {
|
|
120581
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
120582
|
+
var image = _step.value;
|
|
120583
|
+
if (image.attributes && image.attributes.alignment && image.attributes.alignment.value) {
|
|
120584
|
+
var parentNode = image.parentElement;
|
|
120585
|
+
if (!(parentNode.tagName === 'DIV' && parentNode.style.display === 'flex' && parentNode.style.width === '100%')) {
|
|
120586
|
+
var div = document.createElement('div');
|
|
120587
|
+
div.style.display = 'flex';
|
|
120588
|
+
div.style.width = '100%';
|
|
120589
|
+
var copyImage = image.cloneNode(true);
|
|
120590
|
+
div.appendChild(copyImage);
|
|
120591
|
+
parentNode.replaceChild(div, image);
|
|
120592
|
+
}
|
|
120591
120593
|
}
|
|
120592
120594
|
}
|
|
120595
|
+
} catch (err) {
|
|
120596
|
+
_iterator.e(err);
|
|
120597
|
+
} finally {
|
|
120598
|
+
_iterator.f();
|
|
120593
120599
|
}
|
|
120594
|
-
} catch (err) {
|
|
120595
|
-
_iterator.e(err);
|
|
120596
|
-
} finally {
|
|
120597
|
-
_iterator.f();
|
|
120598
120600
|
}
|
|
120599
|
-
}
|
|
120601
|
+
});
|
|
120600
120602
|
}
|
|
120601
120603
|
}, {
|
|
120602
120604
|
key: "render",
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "6.10.
|
|
7
|
+
"version": "6.10.3-next.10+5fa3e462b",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postpublish": "../../scripts/postpublish"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@material-ui/core": "^3.9.2",
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
|
-
"@pie-lib/pie-toolbox": "1.
|
|
15
|
+
"@pie-lib/pie-toolbox": "1.15.0",
|
|
16
16
|
"classnames": "^2.2.5",
|
|
17
17
|
"lodash": "^4.17.10",
|
|
18
18
|
"prop-types": "^15.6.1",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"author": "",
|
|
23
23
|
"license": "ISC",
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "5fa3e462b8fe802214f4540b571f9ef9213356d0",
|
|
25
25
|
"main": "lib/index.js",
|
|
26
26
|
"module": "src/index.js",
|
|
27
27
|
"exports": {
|