@pie-element/graphing 4.4.4-next.92 → 4.4.4-next.95

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.
@@ -170,8 +170,6 @@ var Configure = /*#__PURE__*/function (_React$Component) {
170
170
  classes = _this$props5.classes,
171
171
  model = _this$props5.model,
172
172
  configuration = _this$props5.configuration,
173
- _this$props5$errors = _this$props5.errors,
174
- errors = _this$props5$errors === void 0 ? {} : _this$props5$errors,
175
173
  onConfigurationChanged = _this$props5.onConfigurationChanged,
176
174
  onModelChanged = _this$props5.onModelChanged,
177
175
  imageSupport = _this$props5.imageSupport,
@@ -216,6 +214,8 @@ var Configure = /*#__PURE__*/function (_React$Component) {
216
214
  withRubric = _ref3$withRubric === void 0 ? {} : _ref3$withRubric;
217
215
 
218
216
  var _ref4 = model || {},
217
+ _ref4$errors = _ref4.errors,
218
+ errors = _ref4$errors === void 0 ? {} : _ref4$errors,
219
219
  labelsEnabled = _ref4.labelsEnabled,
220
220
  promptEnabled = _ref4.promptEnabled,
221
221
  rationaleEnabled = _ref4.rationaleEnabled,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configure.jsx"],"names":["Panel","settings","toggle","radio","checkboxes","log","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingBottom","prompt","paddingTop","Configure","rationale","props","onModelChanged","model","teacherInstructions","configuration","availableTools","arrows","left","right","up","down","toolbarTools","classes","errors","onConfigurationChanged","imageSupport","uploadSoundSupport","authoring","coordinatesOnHover","gridConfigurations","graphDimensions","labels","padding","scoringType","spellCheck","studentInstructions","maxImageWidth","maxImageHeight","withRubric","labelsEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","titleEnabled","defaultImageMaxWidth","defaultImageMaxHeight","labelsPlaceholders","top","bottom","label","Properties","studentInstructionsEnabled","rubricEnabled","onTeacherInstructionsChange","language","onPromptChange","onRationaleChange","placeholder","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport Typography from '@material-ui/core/Typography';\nimport EditableHtml from '@pie-lib/editable-html';\nimport GraphingConfig from './graphing-config';\nimport CorrectResponse from './correct-response';\nimport intersection from 'lodash/intersection';\nimport isEmpty from 'lodash/isEmpty';\n\nconst { Panel, toggle, radio, checkboxes } = settings;\nconst log = debug('@pie-element:graphing:configure');\n\nconst styles = (theme) => ({\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n content: {\n marginTop: theme.spacing.unit * 2,\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n };\n\n static defaultProps = { classes: {} };\n\n componentDidMount() {\n const { configuration, onModelChanged, model } = this.props;\n const { availableTools } = configuration || {};\n let { arrows } = model || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in the controller: packages/graphing/controller/src/index.js - model\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true,\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false,\n };\n }\n }\n\n const toolbarTools = intersection(\n availableTools || [],\n model.toolbarTools || []\n );\n\n onModelChanged && onModelChanged({ ...model, arrows, toolbarTools });\n }\n\n onRationaleChange = (rationale) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, rationale });\n };\n\n onPromptChange = (prompt) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, prompt });\n };\n\n onTeacherInstructionsChange = (teacherInstructions) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n render() {\n const {\n classes,\n model,\n configuration,\n errors = {},\n onConfigurationChanged,\n onModelChanged,\n imageSupport,\n uploadSoundSupport,\n } = this.props;\n const {\n arrows = {},\n authoring = {},\n availableTools = [],\n coordinatesOnHover = {},\n gridConfigurations = [],\n graphDimensions = {},\n labels = {},\n padding = {},\n prompt = {},\n title = {},\n rationale = {},\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n } = configuration || {};\n const {\n labelsEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n titleEnabled,\n } = model || {};\n\n log('[render] model', model);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n const labelsPlaceholders = {\n top: labels.top,\n right: labels.right,\n bottom: labels.bottom,\n left: labels.left,\n };\n\n return (\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={onModelChanged}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Item Type': {\n arrows:\n arrows.settings &&\n checkboxes(arrows.label, {\n left: arrows.left,\n right: arrows.right,\n up: arrows.up,\n down: arrows.down,\n }),\n titleEnabled: title.settings && toggle(title.label),\n padding: padding.settings && toggle(padding.label),\n labelsEnabled: labels.settings && toggle(labels.label),\n coordinatesOnHover:\n coordinatesOnHover.settings &&\n toggle(coordinatesOnHover.label),\n },\n Properties: {\n 'authoring.enabled': authoring.settings && toggle(authoring.label, true),\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['dichotomous', 'partial scoring']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n },\n }}\n />\n }\n >\n <div className={classes.content}>\n <Typography component=\"div\" type=\"body1\">\n <span>\n This interaction asks a student to draw a line that meets specific criteria. The student will draw the\n line by clicking on two points on the graph.\n </span>\n </Typography>\n\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.teacherInstructions) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.teacherInstructions) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n disableUnderline\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label || 'Rationale'} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChange}\n imageSupport={imageSupport}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.rationale) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.rationale) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n />\n </InputContainer>\n )}\n\n <GraphingConfig\n authoring={authoring}\n availableTools={availableTools}\n gridConfigurations={gridConfigurations}\n graphDimensions={graphDimensions}\n labelsPlaceholders={labelsPlaceholders}\n model={model}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n titlePlaceholder={title.placeholder}\n onChange={this.props.onModelChanged}\n />\n\n <CorrectResponse\n availableTools={availableTools}\n errors={errors}\n model={model}\n onChange={this.props.onModelChanged}\n />\n </div>\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles)(Configure);\n"],"file":"configure.js"}
1
+ {"version":3,"sources":["../src/configure.jsx"],"names":["Panel","settings","toggle","radio","checkboxes","log","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingBottom","prompt","paddingTop","Configure","rationale","props","onModelChanged","model","teacherInstructions","configuration","availableTools","arrows","left","right","up","down","toolbarTools","classes","onConfigurationChanged","imageSupport","uploadSoundSupport","authoring","coordinatesOnHover","gridConfigurations","graphDimensions","labels","padding","scoringType","spellCheck","studentInstructions","maxImageWidth","maxImageHeight","withRubric","errors","labelsEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","titleEnabled","defaultImageMaxWidth","defaultImageMaxHeight","labelsPlaceholders","top","bottom","label","Properties","studentInstructionsEnabled","rubricEnabled","onTeacherInstructionsChange","language","onPromptChange","onRationaleChange","placeholder","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport Typography from '@material-ui/core/Typography';\nimport EditableHtml from '@pie-lib/editable-html';\nimport GraphingConfig from './graphing-config';\nimport CorrectResponse from './correct-response';\nimport intersection from 'lodash/intersection';\nimport isEmpty from 'lodash/isEmpty';\n\nconst { Panel, toggle, radio, checkboxes } = settings;\nconst log = debug('@pie-element:graphing:configure');\n\nconst styles = (theme) => ({\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n content: {\n marginTop: theme.spacing.unit * 2,\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n };\n\n static defaultProps = { classes: {} };\n\n componentDidMount() {\n const { configuration, onModelChanged, model } = this.props;\n const { availableTools } = configuration || {};\n let { arrows } = model || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in the controller: packages/graphing/controller/src/index.js - model\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true,\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false,\n };\n }\n }\n\n const toolbarTools = intersection(\n availableTools || [],\n model.toolbarTools || []\n );\n\n onModelChanged && onModelChanged({ ...model, arrows, toolbarTools });\n }\n\n onRationaleChange = (rationale) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, rationale });\n };\n\n onPromptChange = (prompt) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, prompt });\n };\n\n onTeacherInstructionsChange = (teacherInstructions) => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n render() {\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n onModelChanged,\n imageSupport,\n uploadSoundSupport,\n } = this.props;\n const {\n arrows = {},\n authoring = {},\n availableTools = [],\n coordinatesOnHover = {},\n gridConfigurations = [],\n graphDimensions = {},\n labels = {},\n padding = {},\n prompt = {},\n title = {},\n rationale = {},\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n } = configuration || {};\n const {\n errors = {},\n labelsEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n titleEnabled,\n } = model || {};\n\n log('[render] model', model);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n const labelsPlaceholders = {\n top: labels.top,\n right: labels.right,\n bottom: labels.bottom,\n left: labels.left,\n };\n\n return (\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={onModelChanged}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Item Type': {\n arrows:\n arrows.settings &&\n checkboxes(arrows.label, {\n left: arrows.left,\n right: arrows.right,\n up: arrows.up,\n down: arrows.down,\n }),\n titleEnabled: title.settings && toggle(title.label),\n padding: padding.settings && toggle(padding.label),\n labelsEnabled: labels.settings && toggle(labels.label),\n coordinatesOnHover:\n coordinatesOnHover.settings &&\n toggle(coordinatesOnHover.label),\n },\n Properties: {\n 'authoring.enabled': authoring.settings && toggle(authoring.label, true),\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['dichotomous', 'partial scoring']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n },\n }}\n />\n }\n >\n <div className={classes.content}>\n <Typography component=\"div\" type=\"body1\">\n <span>\n This interaction asks a student to draw a line that meets specific criteria. The student will draw the\n line by clicking on two points on the graph.\n </span>\n </Typography>\n\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.teacherInstructions) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.teacherInstructions) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n disableUnderline\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label || 'Rationale'} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChange}\n imageSupport={imageSupport}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.rationale) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.rationale) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n />\n </InputContainer>\n )}\n\n <GraphingConfig\n authoring={authoring}\n availableTools={availableTools}\n gridConfigurations={gridConfigurations}\n graphDimensions={graphDimensions}\n labelsPlaceholders={labelsPlaceholders}\n model={model}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n titlePlaceholder={title.placeholder}\n onChange={this.props.onModelChanged}\n />\n\n <CorrectResponse\n availableTools={availableTools}\n errors={errors}\n model={model}\n onChange={this.props.onModelChanged}\n />\n </div>\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles)(Configure);\n"],"file":"configure.js"}
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-framework/pie-configure-events": "^1.3.0",
12
- "@pie-lib/config-ui": "^11.1.1",
12
+ "@pie-lib/config-ui": "^11.1.2",
13
13
  "@pie-lib/editable-html": "^9.2.9",
14
14
  "@pie-lib/graphing": "^2.11.6",
15
15
  "@pie-lib/math-rendering": "^2.5.1",
@@ -339,8 +339,11 @@ var validate = function validate() {
339
339
  toolbarTools = model.toolbarTools;
340
340
  var errors = {};
341
341
  var correctAnswerErrors = {};
342
+ var toolbarToolsNoLabel = (toolbarTools || []).filter(function (tool) {
343
+ return tool !== 'label';
344
+ });
342
345
 
343
- if (!toolbarTools.length) {
346
+ if (!toolbarToolsNoLabel.length) {
344
347
  errors.toolbarToolsError = 'There should be at least 1 tool defined.';
345
348
  }
346
349
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","initializeGraphMap","point","segment","line","ray","vector","polygon","circle","sine","parabola","compareMarks","mark1","mark2","type","equalMarks","getAnswerCorrected","sessionAnswers","correctAnswers","marks","reduce","correctedAnswer","answer","answerIsCorrect","find","mark","correctness","getPartialScoring","scoringType","env","pS","partialScoring","enabled","getBestAnswer","question","session","answers","questionPossibleAnswers","correctAnswer","partialScoringEnabled","possibleAnswers","Object","entries","acc","entry","possibleAnswerKey","possibleAnswer","length","correctMarks","filter","maxScore","score","bestScore","foundOneSolution","parseFloat","toFixed","Math","floor","bestScoreAnswerKey","answersCorrected","map","normalize","defaults","model","Promise","resolve","normalizedQuestion","defaultTool","prompt","promptEnabled","graph","toolbarTools","questionProps","arrows","mode","role","left","right","up","down","toolbarToolsNoLabel","tool","normalizedDefaultTool","base","disabled","rationale","size","showToggle","teacherInstructions","rationaleEnabled","teacherInstructionsEnabled","correctResponse","outcome","empty","createCorrectResponseSession","values","firstCorrectAnswer","id","validate","config","errors","correctAnswerErrors","toolbarToolsError","forEach","key","value"],"mappings":"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","sourcesContent":["import debug from 'debug';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport uniqWith from 'lodash/uniqWith';\nimport isEmpty from 'lodash/isEmpty';\nimport defaults from './defaults';\nimport { equalMarks, sortedAnswers } from './utils';\n\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst initializeGraphMap = () => ({\n point: [],\n segment: [],\n line: [],\n ray: [],\n vector: [],\n polygon: [],\n circle: [],\n sine: [],\n parabola: [],\n});\n\nexport const compareMarks = (mark1, mark2) => {\n // marks can be compared with equalMarks[type] function only if they have the same type;\n // if type is different, they are clearly not equal\n return !!(\n mark1 &&\n mark2 &&\n mark1.type === mark2.type &&\n equalMarks[mark1.type] &&\n equalMarks[mark1.type](mark1, mark2)\n );\n};\n\nexport const getAnswerCorrected = ({\n sessionAnswers,\n marks: correctAnswers,\n}) => {\n sessionAnswers = sessionAnswers || [];\n correctAnswers = correctAnswers || [];\n\n return cloneDeep(sessionAnswers).reduce((correctedAnswer, answer) => {\n const answerIsCorrect = correctAnswers.find((mark) =>\n compareMarks(answer, mark)\n );\n\n answer.correctness = answerIsCorrect ? 'correct' : 'incorrect';\n\n return [...correctedAnswer, answer];\n }, []);\n};\n\nconst getPartialScoring = ({ scoringType, env }) => {\n let pS = scoringType;\n\n // if scoringType is undefined, partialScoring should be considered undefined (not set)\n // because partialScoring.enabled is using that information\n // if it has a value, we check if it is partial scoring or dichotomous\n if (scoringType) {\n pS = scoringType === 'partial scoring';\n }\n\n return partialScoring.enabled({ partialScoring: pS }, env);\n};\n\nexport const getBestAnswer = (question, session, env = {}) => {\n // questionPossibleAnswers contains all possible answers (correct response and alternates);\n let { answers: questionPossibleAnswers = {}, scoringType } = question || {};\n let { answer } = session || {};\n\n // initialize answer if no values\n answer = answer || [];\n\n // initialize one possible answer if no values\n if (isEmpty(questionPossibleAnswers)) {\n questionPossibleAnswers = { correctAnswer: initializeGraphMap() };\n } else {\n questionPossibleAnswers = {\n correctAnswer: questionPossibleAnswers.correctAnswer,\n ...sortedAnswers(questionPossibleAnswers),\n };\n }\n\n const partialScoringEnabled = getPartialScoring({ scoringType, env });\n\n // student's answers without DUPLICATES\n const sessionAnswers = uniqWith(answer, compareMarks);\n // array of possible answers entries\n const possibleAnswers = Object.entries(questionPossibleAnswers);\n\n return possibleAnswers.reduce(\n (acc, entry) => {\n // iterating each possible answer (main + alternates)\n const possibleAnswerKey = entry[0];\n const possibleAnswer = entry[1] || {};\n let { marks } = possibleAnswer;\n\n if (!marks || !marks.length) {\n return acc;\n }\n\n // returns array of marks, each having 'correctness' property\n const correctedAnswer = getAnswerCorrected({ sessionAnswers, marks });\n const correctMarks = correctedAnswer.filter(\n (answer) => answer.correctness === 'correct'\n );\n\n const maxScore = marks.length;\n let score = correctMarks.length;\n\n // if extra placements\n if (correctedAnswer.length > maxScore) {\n score -= correctedAnswer.length - maxScore;\n }\n\n if (score < 0) {\n score = 0;\n }\n\n if (score / maxScore > acc.bestScore || !acc.foundOneSolution) {\n if (partialScoringEnabled) {\n acc.bestScore = parseFloat((score / maxScore).toFixed(2));\n } else {\n acc.bestScore = Math.floor(score / maxScore);\n }\n\n acc.bestScoreAnswerKey = possibleAnswerKey;\n acc.answersCorrected = correctedAnswer;\n acc.foundOneSolution = true;\n }\n\n return acc;\n },\n {\n bestScore: 0,\n bestScoreAnswerKey: null,\n // initially we just suppose all the answers are incorrect\n answersCorrected: cloneDeep(sessionAnswers).map((answer) => ({ ...answer, correctness: 'incorrect' })),\n foundOneSolution: false,\n },\n );\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const { defaultTool, prompt, promptEnabled, graph, answers, toolbarTools, ...questionProps } =\n normalizedQuestion || {};\n let { arrows } = normalizedQuestion;\n const { mode, role } = env || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in authoring : packages/graphing/configure/src/configure.jsx - componentDidMount\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true,\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false,\n };\n }\n }\n\n // added support for models without defaultTool defined; also used in packages/graphing/configure/src/index.js\n const toolbarToolsNoLabel = (toolbarTools || []).filter(\n (tool) => tool !== 'label'\n );\n const normalizedDefaultTool =\n defaultTool ||\n (toolbarToolsNoLabel.length && toolbarToolsNoLabel[0]) ||\n '';\n\n const base = {\n ...questionProps,\n answers,\n arrows,\n defaultTool: normalizedDefaultTool,\n disabled: env.mode !== 'gather',\n prompt: promptEnabled ? prompt : null,\n rationale: null,\n size: graph,\n showToggle: env.mode === 'evaluate' && !isEmpty(answers),\n teacherInstructions: null,\n toolbarTools,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n const {\n rationale,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n } = normalizedQuestion || {};\n\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled\n ? teacherInstructions\n : null;\n }\n\n if (mode === 'evaluate') {\n if (!isEmpty(answers)) {\n const { answersCorrected, bestScoreAnswerKey, bestScore } =\n getBestAnswer(normalizedQuestion, session, env);\n\n // array of marks from session with 'correctness' property set\n base.answersCorrected = answersCorrected;\n base.correctResponse = bestScoreAnswerKey\n ? (answers[bestScoreAnswerKey] || {}).marks\n : [];\n base.showToggle = base.showToggle && bestScore !== 1;\n } else {\n base.answersCorrected = (session && session.answer) || [];\n base.correctResponse = [];\n }\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(question, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n if (env.mode !== 'evaluate' || isEmpty(question.answers)) {\n resolve({ score: 0 });\n }\n\n const { bestScore } = getBestAnswer(question, session, env);\n\n resolve({ score: bestScore });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { answers } = question || {};\n let marks = [];\n\n if (answers && Object.values(answers)) {\n const firstCorrectAnswer = Object.values(answers)[0] || {};\n\n marks = firstCorrectAnswer.marks || [];\n }\n\n resolve({\n answer: marks,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { answers, toolbarTools } = model;\n const errors = {};\n const correctAnswerErrors = {};\n\n if (!toolbarTools.length) {\n errors.toolbarToolsError = 'There should be at least 1 tool defined.';\n }\n\n Object.entries(answers || {}).forEach(([key, value]) => {\n if (!value.marks.length) {\n correctAnswerErrors[key] = 'At least 1 graph object should be defined.';\n }\n });\n\n if (!isEmpty(correctAnswerErrors)) {\n errors.correctAnswerErrors = correctAnswerErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","initializeGraphMap","point","segment","line","ray","vector","polygon","circle","sine","parabola","compareMarks","mark1","mark2","type","equalMarks","getAnswerCorrected","sessionAnswers","correctAnswers","marks","reduce","correctedAnswer","answer","answerIsCorrect","find","mark","correctness","getPartialScoring","scoringType","env","pS","partialScoring","enabled","getBestAnswer","question","session","answers","questionPossibleAnswers","correctAnswer","partialScoringEnabled","possibleAnswers","Object","entries","acc","entry","possibleAnswerKey","possibleAnswer","length","correctMarks","filter","maxScore","score","bestScore","foundOneSolution","parseFloat","toFixed","Math","floor","bestScoreAnswerKey","answersCorrected","map","normalize","defaults","model","Promise","resolve","normalizedQuestion","defaultTool","prompt","promptEnabled","graph","toolbarTools","questionProps","arrows","mode","role","left","right","up","down","toolbarToolsNoLabel","tool","normalizedDefaultTool","base","disabled","rationale","size","showToggle","teacherInstructions","rationaleEnabled","teacherInstructionsEnabled","correctResponse","outcome","empty","createCorrectResponseSession","values","firstCorrectAnswer","id","validate","config","errors","correctAnswerErrors","toolbarToolsError","forEach","key","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,kCAAN,CAAZ;;AAEA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,SAAO;AAChCC,IAAAA,KAAK,EAAE,EADyB;AAEhCC,IAAAA,OAAO,EAAE,EAFuB;AAGhCC,IAAAA,IAAI,EAAE,EAH0B;AAIhCC,IAAAA,GAAG,EAAE,EAJ2B;AAKhCC,IAAAA,MAAM,EAAE,EALwB;AAMhCC,IAAAA,OAAO,EAAE,EANuB;AAOhCC,IAAAA,MAAM,EAAE,EAPwB;AAQhCC,IAAAA,IAAI,EAAE,EAR0B;AAShCC,IAAAA,QAAQ,EAAE;AATsB,GAAP;AAAA,CAA3B;;AAYO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAAQC,KAAR,EAAkB;AAC5C;AACA;AACA,SAAO,CAAC,EACND,KAAK,IACLC,KADA,IAEAD,KAAK,CAACE,IAAN,KAAeD,KAAK,CAACC,IAFrB,IAGAC,kBAAWH,KAAK,CAACE,IAAjB,CAHA,IAIAC,kBAAWH,KAAK,CAACE,IAAjB,EAAuBF,KAAvB,EAA8BC,KAA9B,CALM,CAAR;AAOD,CAVM;;;;AAYA,IAAMG,kBAAkB,GAAG,SAArBA,kBAAqB,OAG5B;AAAA,MAFJC,cAEI,QAFJA,cAEI;AAAA,MADGC,cACH,QADJC,KACI;AACJF,EAAAA,cAAc,GAAGA,cAAc,IAAI,EAAnC;AACAC,EAAAA,cAAc,GAAGA,cAAc,IAAI,EAAnC;AAEA,SAAO,2BAAUD,cAAV,EAA0BG,MAA1B,CAAiC,UAACC,eAAD,EAAkBC,MAAlB,EAA6B;AACnE,QAAMC,eAAe,GAAGL,cAAc,CAACM,IAAf,CAAoB,UAACC,IAAD;AAAA,aAC1Cd,YAAY,CAACW,MAAD,EAASG,IAAT,CAD8B;AAAA,KAApB,CAAxB;AAIAH,IAAAA,MAAM,CAACI,WAAP,GAAqBH,eAAe,GAAG,SAAH,GAAe,WAAnD;AAEA,yDAAWF,eAAX,IAA4BC,MAA5B;AACD,GARM,EAQJ,EARI,CAAP;AASD,CAhBM;;;;AAkBP,IAAMK,iBAAiB,GAAG,SAApBA,iBAAoB,QAA0B;AAAA,MAAvBC,WAAuB,SAAvBA,WAAuB;AAAA,MAAVC,GAAU,SAAVA,GAAU;AAClD,MAAIC,EAAE,GAAGF,WAAT,CADkD,CAGlD;AACA;AACA;;AACA,MAAIA,WAAJ,EAAiB;AACfE,IAAAA,EAAE,GAAGF,WAAW,KAAK,iBAArB;AACD;;AAED,SAAOG,gCAAeC,OAAf,CAAuB;AAAED,IAAAA,cAAc,EAAED;AAAlB,GAAvB,EAA+CD,GAA/C,CAAP;AACD,CAXD;;AAaO,IAAMI,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAWC,OAAX,EAAiC;AAAA,MAAbN,GAAa,uEAAP,EAAO;;AAC5D;AACA,cAA6DK,QAAQ,IAAI,EAAzE;AAAA,4BAAME,OAAN;AAAA,MAAeC,uBAAf,8BAAyC,EAAzC;AAAA,MAA6CT,WAA7C,SAA6CA,WAA7C;;AACA,cAAiBO,OAAO,IAAI,EAA5B;AAAA,MAAMb,MAAN,SAAMA,MAAN,CAH4D,CAK5D;;;AACAA,EAAAA,MAAM,GAAGA,MAAM,IAAI,EAAnB,CAN4D,CAQ5D;;AACA,MAAI,yBAAQe,uBAAR,CAAJ,EAAsC;AACpCA,IAAAA,uBAAuB,GAAG;AAAEC,MAAAA,aAAa,EAAErC,kBAAkB;AAAnC,KAA1B;AACD,GAFD,MAEO;AACLoC,IAAAA,uBAAuB;AACrBC,MAAAA,aAAa,EAAED,uBAAuB,CAACC;AADlB,OAElB,0BAAcD,uBAAd,CAFkB,CAAvB;AAID;;AAED,MAAME,qBAAqB,GAAGZ,iBAAiB,CAAC;AAAEC,IAAAA,WAAW,EAAXA,WAAF;AAAeC,IAAAA,GAAG,EAAHA;AAAf,GAAD,CAA/C,CAlB4D,CAoB5D;;AACA,MAAMZ,cAAc,GAAG,0BAASK,MAAT,EAAiBX,YAAjB,CAAvB,CArB4D,CAsB5D;;AACA,MAAM6B,eAAe,GAAGC,MAAM,CAACC,OAAP,CAAeL,uBAAf,CAAxB;AAEA,SAAOG,eAAe,CAACpB,MAAhB,CACL,UAACuB,GAAD,EAAMC,KAAN,EAAgB;AACd;AACA,QAAMC,iBAAiB,GAAGD,KAAK,CAAC,CAAD,CAA/B;AACA,QAAME,cAAc,GAAGF,KAAK,CAAC,CAAD,CAAL,IAAY,EAAnC;AACA,QAAMzB,KAAN,GAAgB2B,cAAhB,CAAM3B,KAAN;;AAEA,QAAI,CAACA,KAAD,IAAU,CAACA,KAAK,CAAC4B,MAArB,EAA6B;AAC3B,aAAOJ,GAAP;AACD,KARa,CAUd;;;AACA,QAAMtB,eAAe,GAAGL,kBAAkB,CAAC;AAAEC,MAAAA,cAAc,EAAdA,cAAF;AAAkBE,MAAAA,KAAK,EAALA;AAAlB,KAAD,CAA1C;AACA,QAAM6B,YAAY,GAAG3B,eAAe,CAAC4B,MAAhB,CACnB,UAAC3B,MAAD;AAAA,aAAYA,MAAM,CAACI,WAAP,KAAuB,SAAnC;AAAA,KADmB,CAArB;AAIA,QAAMwB,QAAQ,GAAG/B,KAAK,CAAC4B,MAAvB;AACA,QAAII,KAAK,GAAGH,YAAY,CAACD,MAAzB,CAjBc,CAmBd;;AACA,QAAI1B,eAAe,CAAC0B,MAAhB,GAAyBG,QAA7B,EAAuC;AACrCC,MAAAA,KAAK,IAAI9B,eAAe,CAAC0B,MAAhB,GAAyBG,QAAlC;AACD;;AAED,QAAIC,KAAK,GAAG,CAAZ,EAAe;AACbA,MAAAA,KAAK,GAAG,CAAR;AACD;;AAED,QAAIA,KAAK,GAAGD,QAAR,GAAmBP,GAAG,CAACS,SAAvB,IAAoC,CAACT,GAAG,CAACU,gBAA7C,EAA+D;AAC7D,UAAId,qBAAJ,EAA2B;AACzBI,QAAAA,GAAG,CAACS,SAAJ,GAAgBE,UAAU,CAAC,CAACH,KAAK,GAAGD,QAAT,EAAmBK,OAAnB,CAA2B,CAA3B,CAAD,CAA1B;AACD,OAFD,MAEO;AACLZ,QAAAA,GAAG,CAACS,SAAJ,GAAgBI,IAAI,CAACC,KAAL,CAAWN,KAAK,GAAGD,QAAnB,CAAhB;AACD;;AAEDP,MAAAA,GAAG,CAACe,kBAAJ,GAAyBb,iBAAzB;AACAF,MAAAA,GAAG,CAACgB,gBAAJ,GAAuBtC,eAAvB;AACAsB,MAAAA,GAAG,CAACU,gBAAJ,GAAuB,IAAvB;AACD;;AAED,WAAOV,GAAP;AACD,GA1CI,EA2CL;AACES,IAAAA,SAAS,EAAE,CADb;AAEEM,IAAAA,kBAAkB,EAAE,IAFtB;AAGE;AACAC,IAAAA,gBAAgB,EAAE,2BAAU1C,cAAV,EAA0B2C,GAA1B,CAA8B,UAACtC,MAAD;AAAA,6CAAkBA,MAAlB;AAA0BI,QAAAA,WAAW,EAAE;AAAvC;AAAA,KAA9B,CAJpB;AAKE2B,IAAAA,gBAAgB,EAAE;AALpB,GA3CK,CAAP;AAmDD,CA5EM;;;;AA8EA,IAAMQ,SAAS,GAAG,SAAZA,SAAY,CAAC3B,QAAD;AAAA,yCAAoB4B,oBAApB,GAAiC5B,QAAjC;AAAA,CAAlB;;;;AAEA,SAAS6B,KAAT,CAAe7B,QAAf,EAAyBC,OAAzB,EAAkCN,GAAlC,EAAuC;AAC5C,SAAO,IAAImC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAMC,kBAAkB,GAAGL,SAAS,CAAC3B,QAAD,CAApC;;AACA,gBACEgC,kBAAkB,IAAI,EADxB;AAAA,QAAQC,WAAR,SAAQA,WAAR;AAAA,QAAqBC,MAArB,SAAqBA,MAArB;AAAA,QAA6BC,aAA7B,SAA6BA,aAA7B;AAAA,QAA4CC,KAA5C,SAA4CA,KAA5C;AAAA,QAAmDlC,OAAnD,SAAmDA,OAAnD;AAAA,QAA4DmC,YAA5D,SAA4DA,YAA5D;AAAA,QAA6EC,aAA7E;;AAEA,QAAMC,MAAN,GAAiBP,kBAAjB,CAAMO,MAAN;;AACA,gBAAuB5C,GAAG,IAAI,EAA9B;AAAA,QAAQ6C,IAAR,SAAQA,IAAR;AAAA,QAAcC,IAAd,SAAcA,IAAd,CAL8B,CAO9B;AACA;;;AACA,QAAI,OAAOF,MAAP,KAAkB,SAAtB,EAAiC;AAC/B,UAAIA,MAAJ,EAAY;AACVA,QAAAA,MAAM,GAAG;AACPG,UAAAA,IAAI,EAAE,IADC;AAEPC,UAAAA,KAAK,EAAE,IAFA;AAGPC,UAAAA,EAAE,EAAE,IAHG;AAIPC,UAAAA,IAAI,EAAE;AAJC,SAAT;AAMD,OAPD,MAOO;AACLN,QAAAA,MAAM,GAAG;AACPG,UAAAA,IAAI,EAAE,KADC;AAEPC,UAAAA,KAAK,EAAE,KAFA;AAGPC,UAAAA,EAAE,EAAE,KAHG;AAIPC,UAAAA,IAAI,EAAE;AAJC,SAAT;AAMD;AACF,KAzB6B,CA2B9B;;;AACA,QAAMC,mBAAmB,GAAG,CAACT,YAAY,IAAI,EAAjB,EAAqBtB,MAArB,CAC1B,UAACgC,IAAD;AAAA,aAAUA,IAAI,KAAK,OAAnB;AAAA,KAD0B,CAA5B;AAGA,QAAMC,qBAAqB,GACzBf,WAAW,IACVa,mBAAmB,CAACjC,MAApB,IAA8BiC,mBAAmB,CAAC,CAAD,CADlD,IAEA,EAHF;;AAKA,QAAMG,IAAI,mCACLX,aADK;AAERpC,MAAAA,OAAO,EAAPA,OAFQ;AAGRqC,MAAAA,MAAM,EAANA,MAHQ;AAIRN,MAAAA,WAAW,EAAEe,qBAJL;AAKRE,MAAAA,QAAQ,EAAEvD,GAAG,CAAC6C,IAAJ,KAAa,QALf;AAMRN,MAAAA,MAAM,EAAEC,aAAa,GAAGD,MAAH,GAAY,IANzB;AAORiB,MAAAA,SAAS,EAAE,IAPH;AAQRC,MAAAA,IAAI,EAAEhB,KARE;AASRiB,MAAAA,UAAU,EAAE1D,GAAG,CAAC6C,IAAJ,KAAa,UAAb,IAA2B,CAAC,yBAAQtC,OAAR,CAThC;AAURoD,MAAAA,mBAAmB,EAAE,IAVb;AAWRjB,MAAAA,YAAY,EAAZA;AAXQ,MAAV;;AAcA,QAAII,IAAI,KAAK,YAAT,KAA0BD,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,UAAtD,CAAJ,EAAuE;AACrE,kBAKIR,kBAAkB,IAAI,EAL1B;AAAA,UACEmB,SADF,SACEA,SADF;AAAA,UAEEI,gBAFF,SAEEA,gBAFF;AAAA,UAGED,mBAHF,SAGEA,mBAHF;AAAA,UAIEE,0BAJF,SAIEA,0BAJF;;AAOAP,MAAAA,IAAI,CAACE,SAAL,GAAiBI,gBAAgB,GAAGJ,SAAH,GAAe,IAAhD;AACAF,MAAAA,IAAI,CAACK,mBAAL,GAA2BE,0BAA0B,GACjDF,mBADiD,GAEjD,IAFJ;AAGD;;AAED,QAAId,IAAI,KAAK,UAAb,EAAyB;AACvB,UAAI,CAAC,yBAAQtC,OAAR,CAAL,EAAuB;AACrB,6BACEH,aAAa,CAACiC,kBAAD,EAAqB/B,OAArB,EAA8BN,GAA9B,CADf;AAAA,YAAQ8B,gBAAR,kBAAQA,gBAAR;AAAA,YAA0BD,kBAA1B,kBAA0BA,kBAA1B;AAAA,YAA8CN,SAA9C,kBAA8CA,SAA9C,CADqB,CAIrB;;;AACA+B,QAAAA,IAAI,CAACxB,gBAAL,GAAwBA,gBAAxB;AACAwB,QAAAA,IAAI,CAACQ,eAAL,GAAuBjC,kBAAkB,GACrC,CAACtB,OAAO,CAACsB,kBAAD,CAAP,IAA+B,EAAhC,EAAoCvC,KADC,GAErC,EAFJ;AAGAgE,QAAAA,IAAI,CAACI,UAAL,GAAkBJ,IAAI,CAACI,UAAL,IAAmBnC,SAAS,KAAK,CAAnD;AACD,OAVD,MAUO;AACL+B,QAAAA,IAAI,CAACxB,gBAAL,GAAyBxB,OAAO,IAAIA,OAAO,CAACb,MAApB,IAA+B,EAAvD;AACA6D,QAAAA,IAAI,CAACQ,eAAL,GAAuB,EAAvB;AACD;AACF;;AAED3F,IAAAA,GAAG,CAAC,QAAD,EAAWmF,IAAX,CAAH;AACAlB,IAAAA,OAAO,CAACkB,IAAD,CAAP;AACD,GAnFM,CAAP;AAoFD;;AAEM,SAASS,OAAT,CAAiB1D,QAAjB,EAA2BC,OAA3B,EAA8C;AAAA,MAAVN,GAAU,uEAAJ,EAAI;AACnD,SAAO,IAAImC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI,CAAC9B,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChC8B,MAAAA,OAAO,CAAC;AAAEd,QAAAA,KAAK,EAAE,CAAT;AAAY0C,QAAAA,KAAK,EAAE;AAAnB,OAAD,CAAP;AACD;;AAED,QAAIhE,GAAG,CAAC6C,IAAJ,KAAa,UAAb,IAA2B,yBAAQxC,QAAQ,CAACE,OAAjB,CAA/B,EAA0D;AACxD6B,MAAAA,OAAO,CAAC;AAAEd,QAAAA,KAAK,EAAE;AAAT,OAAD,CAAP;AACD;;AAED,0BAAsBlB,aAAa,CAACC,QAAD,EAAWC,OAAX,EAAoBN,GAApB,CAAnC;AAAA,QAAQuB,SAAR,mBAAQA,SAAR;;AAEAa,IAAAA,OAAO,CAAC;AAAEd,MAAAA,KAAK,EAAEC;AAAT,KAAD,CAAP;AACD,GAZM,CAAP;AAaD;;AAEM,IAAM0C,4BAA4B,GAAG,SAA/BA,4BAA+B,CAAC5D,QAAD,EAAWL,GAAX,EAAmB;AAC7D,SAAO,IAAImC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAIpC,GAAG,CAAC6C,IAAJ,KAAa,UAAb,IAA2B7C,GAAG,CAAC8C,IAAJ,KAAa,YAA5C,EAA0D;AACxD,kBAAoBzC,QAAQ,IAAI,EAAhC;AAAA,UAAQE,OAAR,SAAQA,OAAR;;AACA,UAAIjB,KAAK,GAAG,EAAZ;;AAEA,UAAIiB,OAAO,IAAIK,MAAM,CAACsD,MAAP,CAAc3D,OAAd,CAAf,EAAuC;AACrC,YAAM4D,kBAAkB,GAAGvD,MAAM,CAACsD,MAAP,CAAc3D,OAAd,EAAuB,CAAvB,KAA6B,EAAxD;AAEAjB,QAAAA,KAAK,GAAG6E,kBAAkB,CAAC7E,KAAnB,IAA4B,EAApC;AACD;;AAED8C,MAAAA,OAAO,CAAC;AACN3C,QAAAA,MAAM,EAAEH,KADF;AAEN8E,QAAAA,EAAE,EAAE;AAFE,OAAD,CAAP;AAID,KAdD,MAcO;AACLhC,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;AACF,GAlBM,CAAP;AAmBD,CApBM;;;;AAsBA,IAAMiC,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5BnC,KAA4B,uEAApB,EAAoB;AAAA,MAAhBoC,MAAgB,uEAAP,EAAO;AACnD,MAAQ/D,OAAR,GAAkC2B,KAAlC,CAAQ3B,OAAR;AAAA,MAAiBmC,YAAjB,GAAkCR,KAAlC,CAAiBQ,YAAjB;AACA,MAAM6B,MAAM,GAAG,EAAf;AACA,MAAMC,mBAAmB,GAAG,EAA5B;AACA,MAAMrB,mBAAmB,GAAG,CAACT,YAAY,IAAI,EAAjB,EAAqBtB,MAArB,CAC1B,UAACgC,IAAD;AAAA,WAAUA,IAAI,KAAK,OAAnB;AAAA,GAD0B,CAA5B;;AAIA,MAAI,CAACD,mBAAmB,CAACjC,MAAzB,EAAiC;AAC/BqD,IAAAA,MAAM,CAACE,iBAAP,GAA2B,0CAA3B;AACD;;AAED7D,EAAAA,MAAM,CAACC,OAAP,CAAeN,OAAO,IAAI,EAA1B,EAA8BmE,OAA9B,CAAsC,iBAAkB;AAAA;AAAA,QAAhBC,GAAgB;AAAA,QAAXC,KAAW;;AACtD,QAAI,CAACA,KAAK,CAACtF,KAAN,CAAY4B,MAAjB,EAAyB;AACvBsD,MAAAA,mBAAmB,CAACG,GAAD,CAAnB,GAA2B,4CAA3B;AACD;AACF,GAJD;;AAMA,MAAI,CAAC,yBAAQH,mBAAR,CAAL,EAAmC;AACjCD,IAAAA,MAAM,CAACC,mBAAP,GAA6BA,mBAA7B;AACD;;AAED,SAAOD,MAAP;AACD,CAvBM","sourcesContent":["import debug from 'debug';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport uniqWith from 'lodash/uniqWith';\nimport isEmpty from 'lodash/isEmpty';\nimport defaults from './defaults';\nimport { equalMarks, sortedAnswers } from './utils';\n\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst initializeGraphMap = () => ({\n point: [],\n segment: [],\n line: [],\n ray: [],\n vector: [],\n polygon: [],\n circle: [],\n sine: [],\n parabola: [],\n});\n\nexport const compareMarks = (mark1, mark2) => {\n // marks can be compared with equalMarks[type] function only if they have the same type;\n // if type is different, they are clearly not equal\n return !!(\n mark1 &&\n mark2 &&\n mark1.type === mark2.type &&\n equalMarks[mark1.type] &&\n equalMarks[mark1.type](mark1, mark2)\n );\n};\n\nexport const getAnswerCorrected = ({\n sessionAnswers,\n marks: correctAnswers,\n}) => {\n sessionAnswers = sessionAnswers || [];\n correctAnswers = correctAnswers || [];\n\n return cloneDeep(sessionAnswers).reduce((correctedAnswer, answer) => {\n const answerIsCorrect = correctAnswers.find((mark) =>\n compareMarks(answer, mark)\n );\n\n answer.correctness = answerIsCorrect ? 'correct' : 'incorrect';\n\n return [...correctedAnswer, answer];\n }, []);\n};\n\nconst getPartialScoring = ({ scoringType, env }) => {\n let pS = scoringType;\n\n // if scoringType is undefined, partialScoring should be considered undefined (not set)\n // because partialScoring.enabled is using that information\n // if it has a value, we check if it is partial scoring or dichotomous\n if (scoringType) {\n pS = scoringType === 'partial scoring';\n }\n\n return partialScoring.enabled({ partialScoring: pS }, env);\n};\n\nexport const getBestAnswer = (question, session, env = {}) => {\n // questionPossibleAnswers contains all possible answers (correct response and alternates);\n let { answers: questionPossibleAnswers = {}, scoringType } = question || {};\n let { answer } = session || {};\n\n // initialize answer if no values\n answer = answer || [];\n\n // initialize one possible answer if no values\n if (isEmpty(questionPossibleAnswers)) {\n questionPossibleAnswers = { correctAnswer: initializeGraphMap() };\n } else {\n questionPossibleAnswers = {\n correctAnswer: questionPossibleAnswers.correctAnswer,\n ...sortedAnswers(questionPossibleAnswers),\n };\n }\n\n const partialScoringEnabled = getPartialScoring({ scoringType, env });\n\n // student's answers without DUPLICATES\n const sessionAnswers = uniqWith(answer, compareMarks);\n // array of possible answers entries\n const possibleAnswers = Object.entries(questionPossibleAnswers);\n\n return possibleAnswers.reduce(\n (acc, entry) => {\n // iterating each possible answer (main + alternates)\n const possibleAnswerKey = entry[0];\n const possibleAnswer = entry[1] || {};\n let { marks } = possibleAnswer;\n\n if (!marks || !marks.length) {\n return acc;\n }\n\n // returns array of marks, each having 'correctness' property\n const correctedAnswer = getAnswerCorrected({ sessionAnswers, marks });\n const correctMarks = correctedAnswer.filter(\n (answer) => answer.correctness === 'correct'\n );\n\n const maxScore = marks.length;\n let score = correctMarks.length;\n\n // if extra placements\n if (correctedAnswer.length > maxScore) {\n score -= correctedAnswer.length - maxScore;\n }\n\n if (score < 0) {\n score = 0;\n }\n\n if (score / maxScore > acc.bestScore || !acc.foundOneSolution) {\n if (partialScoringEnabled) {\n acc.bestScore = parseFloat((score / maxScore).toFixed(2));\n } else {\n acc.bestScore = Math.floor(score / maxScore);\n }\n\n acc.bestScoreAnswerKey = possibleAnswerKey;\n acc.answersCorrected = correctedAnswer;\n acc.foundOneSolution = true;\n }\n\n return acc;\n },\n {\n bestScore: 0,\n bestScoreAnswerKey: null,\n // initially we just suppose all the answers are incorrect\n answersCorrected: cloneDeep(sessionAnswers).map((answer) => ({ ...answer, correctness: 'incorrect' })),\n foundOneSolution: false,\n },\n );\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const { defaultTool, prompt, promptEnabled, graph, answers, toolbarTools, ...questionProps } =\n normalizedQuestion || {};\n let { arrows } = normalizedQuestion;\n const { mode, role } = env || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in authoring : packages/graphing/configure/src/configure.jsx - componentDidMount\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true,\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false,\n };\n }\n }\n\n // added support for models without defaultTool defined; also used in packages/graphing/configure/src/index.js\n const toolbarToolsNoLabel = (toolbarTools || []).filter(\n (tool) => tool !== 'label'\n );\n const normalizedDefaultTool =\n defaultTool ||\n (toolbarToolsNoLabel.length && toolbarToolsNoLabel[0]) ||\n '';\n\n const base = {\n ...questionProps,\n answers,\n arrows,\n defaultTool: normalizedDefaultTool,\n disabled: env.mode !== 'gather',\n prompt: promptEnabled ? prompt : null,\n rationale: null,\n size: graph,\n showToggle: env.mode === 'evaluate' && !isEmpty(answers),\n teacherInstructions: null,\n toolbarTools,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n const {\n rationale,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n } = normalizedQuestion || {};\n\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled\n ? teacherInstructions\n : null;\n }\n\n if (mode === 'evaluate') {\n if (!isEmpty(answers)) {\n const { answersCorrected, bestScoreAnswerKey, bestScore } =\n getBestAnswer(normalizedQuestion, session, env);\n\n // array of marks from session with 'correctness' property set\n base.answersCorrected = answersCorrected;\n base.correctResponse = bestScoreAnswerKey\n ? (answers[bestScoreAnswerKey] || {}).marks\n : [];\n base.showToggle = base.showToggle && bestScore !== 1;\n } else {\n base.answersCorrected = (session && session.answer) || [];\n base.correctResponse = [];\n }\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(question, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n if (env.mode !== 'evaluate' || isEmpty(question.answers)) {\n resolve({ score: 0 });\n }\n\n const { bestScore } = getBestAnswer(question, session, env);\n\n resolve({ score: bestScore });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { answers } = question || {};\n let marks = [];\n\n if (answers && Object.values(answers)) {\n const firstCorrectAnswer = Object.values(answers)[0] || {};\n\n marks = firstCorrectAnswer.marks || [];\n }\n\n resolve({\n answer: marks,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { answers, toolbarTools } = model;\n const errors = {};\n const correctAnswerErrors = {};\n const toolbarToolsNoLabel = (toolbarTools || []).filter(\n (tool) => tool !== 'label'\n );\n\n if (!toolbarToolsNoLabel.length) {\n errors.toolbarToolsError = 'There should be at least 1 tool defined.';\n }\n\n Object.entries(answers || {}).forEach(([key, value]) => {\n if (!value.marks.length) {\n correctAnswerErrors[key] = 'At least 1 graph object should be defined.';\n }\n });\n\n if (!isEmpty(correctAnswerErrors)) {\n errors.correctAnswerErrors = correctAnswerErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "4.4.4-next.92+0eed79a32",
7
+ "version": "4.4.4-next.95+7d4c6aeb3",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "author": "",
26
26
  "license": "ISC",
27
- "gitHead": "0eed79a32c3b777c16c8cabf201513fc1d2726a0",
27
+ "gitHead": "7d4c6aeb3f05504e9e771403c77b61590bc5e2d9",
28
28
  "main": "lib/index.js",
29
29
  "module": "src/index.js"
30
30
  }