@pie-element/charting 2.7.16 → 2.7.20

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 CHANGED
@@ -3,6 +3,43 @@
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
+ ## [2.7.20](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@2.7.19...@pie-element/charting@2.7.20) (2022-02-04)
7
+
8
+ **Note:** Version bump only for package @pie-element/charting
9
+
10
+
11
+
12
+
13
+
14
+ ## [2.7.19](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@2.7.18...@pie-element/charting@2.7.19) (2022-01-24)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **charting:** view mode should not show correctness PD-1480 ([9d5e4c7](https://github.com/pie-framework/pie-elements/commit/9d5e4c76cbe02f63a5aa4cef39f1276173692634))
20
+ * use preview prompt for prompt, rationale and teacher instructions to fix table rendering PD-1456 ([f330601](https://github.com/pie-framework/pie-elements/commit/f3306019a2d1c8ce3e2783823dfe9ef0a0394e4f))
21
+ * **charting:** improve styling for PRB PD-1362 ([5079579](https://github.com/pie-framework/pie-elements/commit/50795796f0991cfe5e60c37ffc3804d03184bbb0))
22
+
23
+
24
+
25
+
26
+
27
+ ## [2.7.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@2.7.17...@pie-element/charting@2.7.18) (2022-01-10)
28
+
29
+ **Note:** Version bump only for package @pie-element/charting
30
+
31
+
32
+
33
+
34
+
35
+ ## [2.7.17](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@2.7.16...@pie-element/charting@2.7.17) (2021-12-23)
36
+
37
+ **Note:** Version bump only for package @pie-element/charting
38
+
39
+
40
+
41
+
42
+
6
43
  ## [2.7.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting@2.7.14...@pie-element/charting@2.7.15) (2021-12-13)
7
44
 
8
45
  **Note:** Version bump only for package @pie-element/charting
@@ -3,6 +3,38 @@
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
+ ## [2.1.39](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@2.1.38...@pie-element/charting-configure@2.1.39) (2022-02-04)
7
+
8
+ **Note:** Version bump only for package @pie-element/charting-configure
9
+
10
+
11
+
12
+
13
+
14
+ ## [2.1.38](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@2.1.37...@pie-element/charting-configure@2.1.38) (2022-01-24)
15
+
16
+ **Note:** Version bump only for package @pie-element/charting-configure
17
+
18
+
19
+
20
+
21
+
22
+ ## [2.1.37](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@2.1.36...@pie-element/charting-configure@2.1.37) (2022-01-10)
23
+
24
+ **Note:** Version bump only for package @pie-element/charting-configure
25
+
26
+
27
+
28
+
29
+
30
+ ## [2.1.36](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@2.1.35...@pie-element/charting-configure@2.1.36) (2021-12-23)
31
+
32
+ **Note:** Version bump only for package @pie-element/charting-configure
33
+
34
+
35
+
36
+
37
+
6
38
  ## [2.1.34](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-configure@2.1.33...@pie-element/charting-configure@2.1.34) (2021-12-13)
7
39
 
8
40
  **Note:** Version bump only for package @pie-element/charting-configure
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-configure",
3
3
  "private": true,
4
- "version": "2.1.35",
4
+ "version": "2.1.39",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -10,8 +10,8 @@
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-framework/pie-configure-events": "^1.2.0",
12
12
  "@pie-lib/charting": "^4.5.13",
13
- "@pie-lib/config-ui": "^10.10.13",
14
- "@pie-lib/editable-html": "^7.17.13",
13
+ "@pie-lib/config-ui": "^10.10.18",
14
+ "@pie-lib/editable-html": "^7.17.18",
15
15
  "classnames": "^2.2.5",
16
16
  "debug": "^4.1.1",
17
17
  "prop-types": "^15.6.2",
@@ -3,6 +3,14 @@
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
+ ## [2.2.22](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.21...@pie-element/charting-controller@2.2.22) (2022-01-10)
7
+
8
+ **Note:** Version bump only for package @pie-element/charting-controller
9
+
10
+
11
+
12
+
13
+
6
14
  ## [2.2.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/charting-controller@2.2.16...@pie-element/charting-controller@2.2.18) (2021-11-11)
7
15
 
8
16
  **Note:** Version bump only for package @pie-element/charting-controller
@@ -9,6 +9,8 @@ exports.model = model;
9
9
  exports.outcome = outcome;
10
10
  exports.createCorrectResponseSession = exports.filterCategories = exports.getScore = exports.normalize = exports.setCorrectness = exports.checkLabelsEquality = void 0;
11
11
 
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
12
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
15
 
14
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -19,6 +21,8 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
19
21
 
20
22
  var _controllerUtils = require("@pie-lib/controller-utils");
21
23
 
24
+ var _excluded = ["correctness"];
25
+
22
26
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
23
27
 
24
28
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -230,14 +234,23 @@ function model(question, session, env) {
230
234
  disabled: env.mode !== 'gather',
231
235
  scoringType: scoringType
232
236
  };
233
-
234
- if (env.mode === 'evaluate' || env.mode === 'view') {
235
- base.correctedAnswer = filterCategories(getScore(normalizedQuestion, session, env).answers, false);
237
+ var answers = filterCategories(getScore(normalizedQuestion, session, env).answers, false);
238
+
239
+ if (env.mode === 'view') {
240
+ base.correctedAnswer = answers.map(function (_ref2) {
241
+ var correctness = _ref2.correctness,
242
+ rest = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
243
+ return _objectSpread(_objectSpread({}, rest), {}, {
244
+ interactive: false
245
+ });
246
+ });
236
247
  base.addCategoryEnabled = false;
237
248
  }
238
249
 
239
250
  if (env.mode === 'evaluate') {
251
+ base.correctedAnswer = answers;
240
252
  base.correctAnswer = correctAnswer;
253
+ base.addCategoryEnabled = false;
241
254
  }
242
255
 
243
256
  if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","lowerCase","string","toLowerCase","checkLabelsEquality","givenAnswerLabel","correctAnswerLabel","setCorrectness","answers","partialScoring","map","answer","correctness","value","label","normalize","question","addCategoryEnabled","editCategoryEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","getScore","session","env","correctAnswer","data","initialData","scoringType","isPartialScoring","enabled","undefined","correctAnswers","defaultAnswers","filterCategories","result","maxScore","score","scoreForLabelAndValueEditable","corrAnswer","forEach","index","defaultAnswer","editable","interactive","length","slice","parseFloat","toFixed","categories","category","deletable","initial","model","Promise","resolve","normalizedQuestion","categoryDefaultLabel","chartType","domain","graph","prompt","range","rationale","title","teacherInstructions","correctInfo","base","size","disabled","mode","correctedAnswer","role","outcome","empty","createCorrectResponseSession","id"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst lowerCase = string => (string || '').toLowerCase();\n\nexport const checkLabelsEquality = (givenAnswerLabel, correctAnswerLabel) =>\n lowerCase(givenAnswerLabel) === lowerCase(correctAnswerLabel);\n\nexport const setCorrectness = (answers, partialScoring) => answers ? answers.map(answer => ({\n ...answer,\n correctness: {\n value: partialScoring ? 'incorrect' : 'correct',\n label: partialScoring ? 'incorrect' : 'correct'\n }\n})) : [];\n\n\nexport const normalize = question => ({\n addCategoryEnabled: true,\n editCategoryEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport const getScore = (question, session, env = {}) => {\n const { correctAnswer, data: initialData = [], scoringType, editCategoryEnabled } = question;\n\n const isPartialScoring = partialScoring.enabled(\n { partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType },\n env\n );\n\n const { data: correctAnswers = [] } = correctAnswer || {};\n const defaultAnswers = filterCategories(initialData, editCategoryEnabled);\n\n let answers = setCorrectness((session && session.answer) || defaultAnswers, isPartialScoring);\n\n let result = 0;\n\n if (isPartialScoring) {\n // if score type is \"partial scoring\"\n // maxScore is calculated based on the correct response\n // score is calculated based on the given response\n let maxScore = 0;\n let score = 0;\n\n const scoreForLabelAndValueEditable = (answer, corrAnswer) => {\n const { value, label } = answer;\n\n maxScore += 2;\n\n if (value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n\n if (checkLabelsEquality(label, corrAnswer.label)) {\n score += 1;\n answer.correctness.label = 'correct';\n }\n };\n\n // if given answer has more categories than the correct answers, the \"extra\" will be ignored\n correctAnswers.forEach((corrAnswer, index) => {\n const defaultAnswer = defaultAnswers[index];\n const answer = answers[index];\n\n // if there is a corresponding category at the same position in the given answer\n if (answer) {\n // if there is a corresponding category at the same position in the default answer\n if (defaultAnswer) {\n // if category's label (in default answer) was not editable\n // it means that this category values only one point (only the value can be changed)\n if (!defaultAnswer.editable && answer.interactive) {\n maxScore += 1;\n\n if (answer.value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n answer.correctness.label = 'correct';\n\n // if category's label (in default answer) was editable\n // it means that this category values 2 points (both label and value can be changed)\n } else if (defaultAnswer.editable && answer.interactive) {\n scoreForLabelAndValueEditable(answer, corrAnswer);\n } else if (!answer.interactive) {\n answer.correctness.value = 'correct';\n answer.correctness.label = 'correct';\n }\n } else {\n // if there is not a corresponding category at the same position in the default answer\n scoreForLabelAndValueEditable(answer, corrAnswer);\n }\n } else {\n // if there is not a corresponding category at the same position in the given answer\n // it means that the given answer has less categories than the correct answer\n maxScore += 2;\n }\n });\n\n result = maxScore ? score / maxScore : 0;\n } else {\n // if scoring type is \"all or nothing\"\n // the length on correct answers and length of given answer have to match\n result = correctAnswers.length === answers.length ? 1 : 0;\n\n if (result) {\n // if there is at least one difference between the correct answer and the given answer\n // the result will be incorrect\n correctAnswers.forEach((corrAnswer, index) => {\n const { value, label } = answers[index];\n\n if (value !== corrAnswer.value) {\n result = 0;\n answers[index].correctness.value = 'incorrect';\n }\n if (lowerCase(label) !== lowerCase(corrAnswer.label)) {\n result = 0;\n answers[index].correctness.label = 'incorrect';\n }\n });\n } else {\n answers = [\n ...answers.slice(0, correctAnswers.length),\n ...setCorrectness(answers.slice(correctAnswers.length), true)\n ];\n }\n }\n\n return {\n score: parseFloat(result.toFixed(2)),\n answers\n };\n};\n\nexport const filterCategories = (categories, editable) => categories ? categories.map(category => ({\n ...category,\n deletable: false,\n editable,\n initial: true\n})) : [];\n\nexport function model(question, session, env) {\n return new Promise(resolve => {\n const normalizedQuestion = normalize(question);\n const {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data,\n domain,\n editCategoryEnabled,\n graph,\n prompt,\n promptEnabled,\n range,\n rationale,\n title,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n correctAnswer,\n scoringType\n } = normalizedQuestion;\n\n const correctInfo = { correctness: 'incorrect', score: '0%' };\n\n const base = {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data: filterCategories(data, editCategoryEnabled),\n domain,\n editCategoryEnabled,\n graph,\n prompt: promptEnabled ? prompt : null,\n range,\n rationale,\n title,\n size: graph,\n correctness: correctInfo,\n disabled: env.mode !== 'gather',\n scoringType\n };\n\n if (env.mode === 'evaluate' || env.mode === 'view') {\n base.correctedAnswer = filterCategories(getScore(normalizedQuestion, session, env).answers, false);\n base.addCategoryEnabled = false;\n }\n\n if (env.mode === 'evaluate') {\n base.correctAnswer = correctAnswer;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n base.rationale = null;\n base.teacherInstructions = null;\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(model, session, env) {\n return new Promise(resolve => {\n resolve({\n score: getScore(model, session, env).score,\n empty: !session || isEmpty(session)\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctAnswer } = question;\n\n resolve({\n answer: correctAnswer && correctAnswer.data,\n id: '1'\n });\n } else {\n return resolve(null);\n }\n });\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","lowerCase","string","toLowerCase","checkLabelsEquality","givenAnswerLabel","correctAnswerLabel","setCorrectness","answers","partialScoring","map","answer","correctness","value","label","normalize","question","addCategoryEnabled","editCategoryEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","getScore","session","env","correctAnswer","data","initialData","scoringType","isPartialScoring","enabled","undefined","correctAnswers","defaultAnswers","filterCategories","result","maxScore","score","scoreForLabelAndValueEditable","corrAnswer","forEach","index","defaultAnswer","editable","interactive","length","slice","parseFloat","toFixed","categories","category","deletable","initial","model","Promise","resolve","normalizedQuestion","categoryDefaultLabel","chartType","domain","graph","prompt","range","rationale","title","teacherInstructions","correctInfo","base","size","disabled","mode","correctedAnswer","rest","role","outcome","empty","createCorrectResponseSession","id"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst log = debug('@pie-element:graphing:controller');\n\nconst lowerCase = string => (string || '').toLowerCase();\n\nexport const checkLabelsEquality = (givenAnswerLabel, correctAnswerLabel) =>\n lowerCase(givenAnswerLabel) === lowerCase(correctAnswerLabel);\n\nexport const setCorrectness = (answers, partialScoring) => answers ? answers.map(answer => ({\n ...answer,\n correctness: {\n value: partialScoring ? 'incorrect' : 'correct',\n label: partialScoring ? 'incorrect' : 'correct'\n }\n})) : [];\n\n\nexport const normalize = question => ({\n addCategoryEnabled: true,\n editCategoryEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport const getScore = (question, session, env = {}) => {\n const { correctAnswer, data: initialData = [], scoringType, editCategoryEnabled } = question;\n\n const isPartialScoring = partialScoring.enabled(\n { partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType },\n env\n );\n\n const { data: correctAnswers = [] } = correctAnswer || {};\n const defaultAnswers = filterCategories(initialData, editCategoryEnabled);\n\n let answers = setCorrectness((session && session.answer) || defaultAnswers, isPartialScoring);\n\n let result = 0;\n\n if (isPartialScoring) {\n // if score type is \"partial scoring\"\n // maxScore is calculated based on the correct response\n // score is calculated based on the given response\n let maxScore = 0;\n let score = 0;\n\n const scoreForLabelAndValueEditable = (answer, corrAnswer) => {\n const { value, label } = answer;\n\n maxScore += 2;\n\n if (value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n\n if (checkLabelsEquality(label, corrAnswer.label)) {\n score += 1;\n answer.correctness.label = 'correct';\n }\n };\n\n // if given answer has more categories than the correct answers, the \"extra\" will be ignored\n correctAnswers.forEach((corrAnswer, index) => {\n const defaultAnswer = defaultAnswers[index];\n const answer = answers[index];\n\n // if there is a corresponding category at the same position in the given answer\n if (answer) {\n // if there is a corresponding category at the same position in the default answer\n if (defaultAnswer) {\n // if category's label (in default answer) was not editable\n // it means that this category values only one point (only the value can be changed)\n if (!defaultAnswer.editable && answer.interactive) {\n maxScore += 1;\n\n if (answer.value === corrAnswer.value) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n answer.correctness.label = 'correct';\n\n // if category's label (in default answer) was editable\n // it means that this category values 2 points (both label and value can be changed)\n } else if (defaultAnswer.editable && answer.interactive) {\n scoreForLabelAndValueEditable(answer, corrAnswer);\n } else if (!answer.interactive) {\n answer.correctness.value = 'correct';\n answer.correctness.label = 'correct';\n }\n } else {\n // if there is not a corresponding category at the same position in the default answer\n scoreForLabelAndValueEditable(answer, corrAnswer);\n }\n } else {\n // if there is not a corresponding category at the same position in the given answer\n // it means that the given answer has less categories than the correct answer\n maxScore += 2;\n }\n });\n\n result = maxScore ? score / maxScore : 0;\n } else {\n // if scoring type is \"all or nothing\"\n // the length on correct answers and length of given answer have to match\n result = correctAnswers.length === answers.length ? 1 : 0;\n\n if (result) {\n // if there is at least one difference between the correct answer and the given answer\n // the result will be incorrect\n correctAnswers.forEach((corrAnswer, index) => {\n const { value, label } = answers[index];\n\n if (value !== corrAnswer.value) {\n result = 0;\n answers[index].correctness.value = 'incorrect';\n }\n if (lowerCase(label) !== lowerCase(corrAnswer.label)) {\n result = 0;\n answers[index].correctness.label = 'incorrect';\n }\n });\n } else {\n answers = [\n ...answers.slice(0, correctAnswers.length),\n ...setCorrectness(answers.slice(correctAnswers.length), true)\n ];\n }\n }\n\n return {\n score: parseFloat(result.toFixed(2)),\n answers\n };\n};\n\nexport const filterCategories = (categories, editable) => categories ? categories.map(category => ({\n ...category,\n deletable: false,\n editable,\n initial: true\n})) : [];\n\nexport function model(question, session, env) {\n return new Promise(resolve => {\n const normalizedQuestion = normalize(question);\n const {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data,\n domain,\n editCategoryEnabled,\n graph,\n prompt,\n promptEnabled,\n range,\n rationale,\n title,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n correctAnswer,\n scoringType\n } = normalizedQuestion;\n\n const correctInfo = { correctness: 'incorrect', score: '0%' };\n\n const base = {\n addCategoryEnabled,\n categoryDefaultLabel,\n chartType,\n data: filterCategories(data, editCategoryEnabled),\n domain,\n editCategoryEnabled,\n graph,\n prompt: promptEnabled ? prompt : null,\n range,\n rationale,\n title,\n size: graph,\n correctness: correctInfo,\n disabled: env.mode !== 'gather',\n scoringType\n };\n\n const answers = filterCategories(getScore(normalizedQuestion, session, env).answers, false);\n\n if (env.mode === 'view') {\n base.correctedAnswer = answers.map(({correctness, ...rest}) => {\n return { ...rest, interactive: false };\n });\n\n base.addCategoryEnabled = false;\n }\n\n if (env.mode === 'evaluate') {\n base.correctedAnswer = answers;\n base.correctAnswer = correctAnswer;\n base.addCategoryEnabled = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = rationaleEnabled ? rationale : null;\n base.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n base.rationale = null;\n base.teacherInstructions = null;\n }\n\n log('base: ', base);\n resolve(base);\n });\n}\n\nexport function outcome(model, session, env) {\n return new Promise(resolve => {\n resolve({\n score: getScore(model, session, env).score,\n empty: !session || isEmpty(session)\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { correctAnswer } = question;\n\n resolve({\n answer: correctAnswer && correctAnswer.data,\n id: '1'\n });\n } else {\n return resolve(null);\n }\n });\n};\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-controller",
3
3
  "private": true,
4
- "version": "2.2.21",
4
+ "version": "2.2.22",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/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": "2.7.16",
7
+ "version": "2.7.20",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -14,7 +14,7 @@
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/pie-player-events": "^0.1.0",
16
16
  "@pie-lib/charting": "^4.5.13",
17
- "@pie-lib/correct-answer-toggle": "^2.3.33",
17
+ "@pie-lib/correct-answer-toggle": "^2.3.34",
18
18
  "@pie-lib/math-rendering": "^2.3.12",
19
19
  "@pie-lib/render-ui": "^4.12.4",
20
20
  "classnames": "^2.2.5",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "author": "",
27
27
  "license": "ISC",
28
- "gitHead": "ff7c86a6e386b71b47fdd28890d5a977fff15e17",
28
+ "gitHead": "820dc9994e5f621018ca2c262f9a999996fd2079",
29
29
  "main": "lib/index.js",
30
30
  "module": "src/index.js"
31
31
  }