@pie-element/charting 12.2.2-beta.6 → 12.2.2-beta.7

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_defaults","_controllerUtils","log","debug","lowerCase","string","toLowerCase","checkLabelsEquality","givenAnswerLabel","correctAnswerLabel","exports","setCorrectness","answers","partialScoring","map","answer","correctness","value","label","normalize","question","defaults","getScore","session","env","correctAnswer","data","initialData","scoringType","correctResponses","isPartialScoring","enabled","undefined","correctAnswers","defaultAnswers","filterCategories","result","maxScore","score","scoreForLabelAndValueEditable","corrAnswer","index","valueIsCorrect","labelIsCorrect","push","forEach","defaultAnswer","editable","interactive","length","parseFloat","toFixed","extraProps","correctResponseEnabled","getLogTrace","model","traceLog","studentAnswers","correct","initial","student","valueCorrect","labelCorrect","valueChanged","labelChanged","parts","join","extra","scoreObject","categories","deletable","rest","Promise","resolve","normalizedQuestion","addCategoryEnabled","chartType","domain","graph","prompt","promptEnabled","range","rationale","title","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","studentNewCategoryDefaultLabel","language","extraCSSRules","correctInfo","base","size","showToggle","disabled","mode","correctedAnswer","showKeyLegend","role","outcome","empty","isEmpty","correctResponse","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","correctData","errors","correctAnswerErrors","categoryErrors","field","required","category","identicalAnswer","some","c","i","categoriesError","isEqual","pick","identicalError"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty, isEqual, pick } from 'lodash-es';\nimport defaults from './defaults';\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) =>\n answers\n ? 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) => ({ ...defaults, ...question });\n\nexport const getScore = (question, session, env = {}) => {\n const { correctAnswer, data: initialData = [], scoringType } = question;\n let correctResponses = [];\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);\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, index } = answer;\n const valueIsCorrect = value === corrAnswer.value;\n const labelIsCorrect = checkLabelsEquality(label, corrAnswer.label);\n maxScore += 2;\n\n if (valueIsCorrect) {\n score += 1;\n answer.correctness.value = 'correct';\n }\n\n if (labelIsCorrect) {\n score += 1;\n answer.correctness.label = 'correct';\n }\n\n if (valueIsCorrect && labelIsCorrect) {\n correctResponses.push({ label: label, index: index });\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 correctResponses.push({ label: answer.label, index: index });\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 correctResponses.push({ label: answer.label, index: index });\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 // all-or-nothing scoring: overall score is 1 only if lengths and all values/labels match\n result = correctAnswers.length === answers.length ? 1 : 0;\n\n // regardless of overall result, mark each answer individually for user feedback\n answers = answers.map((answer, index) => {\n const correctAnswer = correctAnswers[index];\n const valueIsCorrect = correctAnswer ? answer.value === correctAnswer.value : false;\n const labelIsCorrect = correctAnswer ? lowerCase(answer.label) === lowerCase(correctAnswer.label) : false;\n\n if (!valueIsCorrect || !labelIsCorrect) {\n result = 0;\n }\n\n if (valueIsCorrect && labelIsCorrect) {\n correctResponses.push({ label: answer.label, index });\n }\n\n return {\n ...answer,\n correctness: {\n value: valueIsCorrect ? 'correct' : 'incorrect',\n label: labelIsCorrect ? 'correct' : 'incorrect',\n },\n };\n });\n }\n\n const score = {\n score: parseFloat(result.toFixed(2)),\n answers,\n };\n\n if (env.extraProps && env.extraProps.correctResponseEnabled) {\n score.correctResponses = correctResponses;\n }\n\n return score;\n};\n\n/**\n * Generates detailed trace log for scoring evaluation\n * @param {Object} model - the question model\n * @param {Object} session - the student session\n * @param {Object} env - the environment\n * @returns {Array} traceLog - array of trace messages\n */\nexport const getLogTrace = (model, session, env) => {\n const traceLog = [];\n\n const { correctAnswer, data: initialData = [], scoringType } = model || {};\n const { data: correctAnswers = [] } = correctAnswer || {};\n const studentAnswers = (session && session.answer) || [];\n\n const isPartialScoring = partialScoring.enabled(\n { partialScoring: scoringType !== undefined ? scoringType === 'partial scoring' : scoringType },\n env\n );\n\n const defaultAnswers = filterCategories(initialData);\n const answers = studentAnswers.length > 0 ? filterCategories(studentAnswers) : defaultAnswers;\n\n if (!studentAnswers.length) {\n traceLog.push(`Student did not modify the chart. Initial chart is scored.`);\n }\n\n correctAnswers.forEach((correct, index) => {\n const initial = defaultAnswers[index];\n const student = answers[index];\n\n if (!student) {\n traceLog.push(`Category ${index + 1}: missing (expected value '${correct.value}', label '${correct.label}').`);\n return;\n }\n\n const valueCorrect = student.value === correct.value;\n const labelCorrect = checkLabelsEquality(student.label, correct.label);\n\n if (!student.interactive) {\n traceLog.push(`Category ${index + 1}: non-interactive category treated as correct.`);\n return;\n }\n\n if (studentAnswers.length > 0) {\n const valueChanged = initial ? student.value !== initial.value : true;\n const labelChanged = initial ? !checkLabelsEquality(student.label, initial.label) : true;\n\n if (!valueChanged && !labelChanged) {\n if (valueCorrect && labelCorrect) {\n traceLog.push(`Category ${index + 1}: unchanged from initial value and correct.`);\n } else {\n traceLog.push(`Category ${index + 1}: unchanged from initial value but incorrect.`);\n }\n return;\n }\n\n const parts = [];\n if (valueChanged) {\n parts.push(`value ${valueCorrect ? 'correct' : 'incorrect'}`);\n }\n if (labelChanged) {\n parts.push(`label ${labelCorrect ? 'correct' : 'incorrect'}`);\n }\n traceLog.push(`Category ${index + 1}: modified - ${parts.join(', ')}.`);\n } else {\n if (valueCorrect && labelCorrect) {\n traceLog.push(`Category ${index + 1}: initial values are correct.`);\n } else if (valueCorrect) {\n traceLog.push(`Category ${index + 1}: initial value correct, label incorrect.`);\n } else if (labelCorrect) {\n traceLog.push(`Category ${index + 1}: initial value incorrect, label correct.`);\n } else {\n traceLog.push(`Category ${index + 1}: initial value and label incorrect.`);\n }\n }\n });\n\n if (answers.length > correctAnswers.length) {\n const extra = answers.length - correctAnswers.length;\n traceLog.push(`${extra} extra category(ies) provided beyond expected number.`);\n }\n\n if (isPartialScoring) {\n traceLog.push('Score calculated using partial scoring.');\n traceLog.push('Student receives credit for each correct value and label independently.');\n } else {\n traceLog.push('Score calculated using all-or-nothing scoring.');\n traceLog.push('Student must match all category values and labels exactly for full credit.');\n }\n\n const scoreObject = getScore(model, session, env);\n traceLog.push(`Score: ${scoreObject.score}.`);\n\n return traceLog;\n};\n\n\n// eslint-disable-next-line no-unused-vars\nexport const filterCategories = (categories) => (categories ? categories.map(({ deletable, ...rest }) => rest) : []);\n\nexport function model(question, session, env) {\n return new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const {\n addCategoryEnabled,\n chartType,\n data,\n domain,\n graph,\n prompt,\n promptEnabled,\n range,\n rationale,\n title,\n rationaleEnabled,\n teacherInstructions,\n teacherInstructionsEnabled,\n correctAnswer,\n scoringType,\n studentNewCategoryDefaultLabel,\n language,\n extraCSSRules,\n } = normalizedQuestion;\n\n const correctInfo = { correctness: 'incorrect', score: '0%' };\n\n const base = {\n addCategoryEnabled,\n chartType,\n data: filterCategories(data),\n domain,\n graph,\n prompt: promptEnabled ? prompt : null,\n range,\n rationale,\n title,\n size: graph,\n showToggle: false,\n correctness: correctInfo,\n disabled: env.mode !== 'gather',\n scoringType,\n studentNewCategoryDefaultLabel,\n language,\n env,\n extraCSSRules,\n };\n\n const scoreObject = getScore(normalizedQuestion, session, env);\n const answers = filterCategories(scoreObject.answers);\n\n if (env.mode === 'view') {\n // eslint-disable-next-line no-unused-vars\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.showToggle = !!correctAnswer?.data?.length && scoreObject.score !== 1;\n base.addCategoryEnabled = false;\n base.showKeyLegend = true;\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 const traceLog = getLogTrace(model, session, env);\n const scoreObject = getScore(model, session, env);\n \n const result = {\n score: scoreObject.score,\n empty: !session || isEmpty(session),\n traceLog\n };\n \n if (env.extraProps && env.extraProps.correctResponseEnabled) {\n result.extraProps = { correctResponse: scoreObject.correctResponses };\n }\n \n resolve(result);\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 let answers = correctAnswer && correctAnswer.data;\n\n // for IBX preview mode\n if (env.mode === 'gather') {\n const { data } = question;\n\n answers = ((correctAnswer && correctAnswer.data) || []).map((answer, index) => {\n return {\n ...data[index],\n ...answer,\n };\n });\n }\n\n resolve({\n answer: answers,\n id: '1',\n });\n } else {\n return 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, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { correctAnswer, data } = model || {};\n const { data: correctData } = correctAnswer || {};\n const categories = correctData || [];\n\n const errors = {};\n const correctAnswerErrors = {};\n const categoryErrors = {};\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 categories.forEach((category, index) => {\n const { label } = category;\n\n if (!getInnerText(label)) {\n categoryErrors[index] = 'Content should not be empty. ';\n } else {\n const identicalAnswer = categories.some((c, i) => c.label === label && index !== i);\n\n if (identicalAnswer) {\n categoryErrors[index] = 'Category names should be unique. ';\n }\n }\n });\n\n if (categories.length < 1 || categories.length > 20) {\n correctAnswerErrors.categoriesError = 'The correct answer should include between 1 and 20 categories.';\n } else if (\n isEqual(\n data.map((category) => pick(category, 'value', 'label')),\n correctData.map((category) => pick(category, 'value', 'label')),\n )\n ) {\n correctAnswerErrors.identicalError = 'Correct answer should not be identical to the chart’s initial state';\n }\n\n if (!isEmpty(categoryErrors)) {\n errors.categoryErrors = categoryErrors;\n }\n\n if (!isEmpty(correctAnswerErrors)) {\n errors.correctAnswerErrors = correctAnswerErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/charting-controller",
3
3
  "private": true,
4
- "version": "8.4.0-beta.12",
4
+ "version": "8.4.0-beta.13",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
package/lib/index.js ADDED
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "Component", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _main.default;
11
+ }
12
+ });
13
+ exports.default = void 0;
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _react = _interopRequireDefault(require("react"));
16
+ var _client = require("react-dom/client");
17
+ var _main = _interopRequireDefault(require("./main"));
18
+ var _piePlayerEvents = require("@pie-framework/pie-player-events");
19
+ var _mathRendering = require("@pie-lib/math-rendering");
20
+ class Graphing extends HTMLElement {
21
+ constructor() {
22
+ super();
23
+ // The title and axis labels are injected synchronously via dangerouslySetInnerHTML,
24
+ // but createRoot().render() commits asynchronously, so a queueMicrotask(renderMath)
25
+ // would run before the LaTeX spans are in the DOM and leave raw LaTeX on first render.
26
+ // Observing the DOM and typesetting after each commit keeps math in sync regardless of timing.
27
+ (0, _defineProperty2.default)(this, "_scheduleMathRender", () => {
28
+ if (this._mathRenderPending) return;
29
+ this._mathRenderPending = true;
30
+ requestAnimationFrame(() => {
31
+ if (this._mathObserver) {
32
+ this._mathObserver.disconnect();
33
+ }
34
+ (0, _mathRendering.renderMath)(this);
35
+ this._mathRenderPending = false;
36
+ setTimeout(() => {
37
+ if (this._mathObserver) {
38
+ this._mathObserver.observe(this, {
39
+ childList: true,
40
+ subtree: true
41
+ });
42
+ }
43
+ }, 50);
44
+ });
45
+ });
46
+ (0, _defineProperty2.default)(this, "isComplete", answer => Array.isArray(answer) && answer.length > 0);
47
+ (0, _defineProperty2.default)(this, "changeAnswers", answer => {
48
+ this._session.answer = answer;
49
+ this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete(this._session.answer)));
50
+ this._render();
51
+ });
52
+ this._root = null;
53
+ this._mathObserver = null;
54
+ this._mathRenderPending = false;
55
+ }
56
+ _initMathObserver() {
57
+ if (this._mathObserver) return;
58
+ this._mathObserver = new MutationObserver(this._scheduleMathRender);
59
+ this._mathObserver.observe(this, {
60
+ childList: true,
61
+ subtree: true
62
+ });
63
+ }
64
+ _disconnectMathObserver() {
65
+ if (this._mathObserver) {
66
+ this._mathObserver.disconnect();
67
+ this._mathObserver = null;
68
+ }
69
+ }
70
+ set model(m) {
71
+ this._model = m;
72
+ if (this._session && this.isComplete(this._session.answer)) {
73
+ this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(this.tagName.toLowerCase(), true, !!this._model));
74
+ } else {
75
+ this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(this.tagName.toLowerCase(), false, !!this._model));
76
+ }
77
+ this._render();
78
+ }
79
+ set session(s) {
80
+ this._session = s;
81
+ this._render();
82
+ }
83
+ get session() {
84
+ return this._session;
85
+ }
86
+ connectedCallback() {
87
+ this._initMathObserver();
88
+ this._render();
89
+ }
90
+ _render() {
91
+ if (!this._model || !this._session) {
92
+ return;
93
+ }
94
+ this._initMathObserver();
95
+ const modelClone = {
96
+ ...this._model,
97
+ data: this._model.data ? [...this._model.data] : this._model.data
98
+ };
99
+ const el = /*#__PURE__*/_react.default.createElement(_main.default, {
100
+ model: modelClone,
101
+ categories: this._session.answer,
102
+ onAnswersChange: this.changeAnswers
103
+ });
104
+ if (!this._root) {
105
+ this._root = (0, _client.createRoot)(this);
106
+ }
107
+ this._root.render(el);
108
+ }
109
+ disconnectedCallback() {
110
+ this._disconnectMathObserver();
111
+ if (this._root) {
112
+ this._root.unmount();
113
+ this._root = null;
114
+ }
115
+ }
116
+ }
117
+ exports.default = Graphing;
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_main","_piePlayerEvents","_mathRendering","Graphing","HTMLElement","constructor","_defineProperty2","default","_mathRenderPending","requestAnimationFrame","_mathObserver","disconnect","renderMath","setTimeout","observe","childList","subtree","answer","Array","isArray","length","_session","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_render","_root","_initMathObserver","MutationObserver","_scheduleMathRender","_disconnectMathObserver","model","m","_model","ModelSetEvent","session","s","connectedCallback","modelClone","data","el","React","createElement","Main","categories","onAnswersChange","changeAnswers","createRoot","render","disconnectedCallback","unmount","exports"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport Main from './main';\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nexport { Main as Component };\n\nexport default class Graphing extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n this._mathObserver = null;\n this._mathRenderPending = false;\n }\n\n // The title and axis labels are injected synchronously via dangerouslySetInnerHTML,\n // but createRoot().render() commits asynchronously, so a queueMicrotask(renderMath)\n // would run before the LaTeX spans are in the DOM and leave raw LaTeX on first render.\n // Observing the DOM and typesetting after each commit keeps math in sync regardless of timing.\n _scheduleMathRender = () => {\n if (this._mathRenderPending) return;\n this._mathRenderPending = true;\n\n requestAnimationFrame(() => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n }\n renderMath(this);\n this._mathRenderPending = false;\n setTimeout(() => {\n if (this._mathObserver) {\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n }, 50);\n });\n };\n\n _initMathObserver() {\n if (this._mathObserver) return;\n this._mathObserver = new MutationObserver(this._scheduleMathRender);\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n\n _disconnectMathObserver() {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserver = null;\n }\n }\n\n set model(m) {\n this._model = m;\n\n if (this._session && this.isComplete(this._session.answer)) {\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), true, !!this._model));\n } else {\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), false, !!this._model));\n }\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n connectedCallback() {\n this._initMathObserver();\n this._render();\n }\n\n isComplete = (answer) => Array.isArray(answer) && answer.length > 0;\n\n changeAnswers = (answer) => {\n this._session.answer = answer;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete(this._session.answer)));\n\n this._render();\n };\n\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n\n this._initMathObserver();\n\n const modelClone = {\n ...this._model,\n data: this._model.data ? [...this._model.data] : this._model.data,\n };\n\n const el = React.createElement(Main, {\n model: modelClone,\n categories: this._session.answer,\n onAnswersChange: this.changeAnswers,\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n }\n\n disconnectedCallback() {\n this._disconnectMathObserver();\n if (this._root) {\n this._root.unmount();\n this._root = null;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/main.js ADDED
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.Main = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _styles = require("@mui/material/styles");
12
+ var _renderUi = require("@pie-lib/render-ui");
13
+ var _charting = require("@pie-lib/charting");
14
+ var _lodashEs = require("lodash-es");
15
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
16
+ const StyledUiLayout = (0, _styles.styled)(_renderUi.UiLayout)({
17
+ color: _renderUi.color.text(),
18
+ backgroundColor: _renderUi.color.background(),
19
+ overflowX: 'scroll',
20
+ overflowY: 'hidden'
21
+ });
22
+ const StyledChart = (0, _styles.styled)(_charting.Chart)(({
23
+ theme
24
+ }) => ({
25
+ marginTop: theme.spacing(2),
26
+ marginBottom: theme.spacing(2)
27
+ }));
28
+ const StyledCollapsible = (0, _styles.styled)(_renderUi.Collapsible)(({
29
+ theme
30
+ }) => ({
31
+ marginBottom: theme.spacing(2)
32
+ }));
33
+ class Main extends _react.default.Component {
34
+ constructor(props) {
35
+ super(props);
36
+ (0, _defineProperty2.default)(this, "changeData", data => this.setState({
37
+ categories: data
38
+ }, () => this.props.onAnswersChange(data)));
39
+ (0, _defineProperty2.default)(this, "toggleCorrect", showingCorrect => this.setState({
40
+ showingCorrect
41
+ }));
42
+ this.state = {
43
+ categories: props.categories || props.model.data,
44
+ showingCorrect: false
45
+ };
46
+ }
47
+ componentDidUpdate(prevProps) {
48
+ if (!(0, _lodashEs.isEqual)(prevProps.categories, this.props.categories)) {
49
+ this.setState({
50
+ categories: this.props.categories
51
+ });
52
+ } else if (!(0, _lodashEs.isEqual)(prevProps.model.data, this.props.model.data)) {
53
+ this.setState({
54
+ categories: this.props.model.data
55
+ });
56
+ }
57
+ }
58
+ render() {
59
+ const {
60
+ categories,
61
+ showingCorrect
62
+ } = this.state;
63
+ const {
64
+ model
65
+ } = this.props;
66
+ const {
67
+ teacherInstructions,
68
+ prompt,
69
+ chartType,
70
+ size,
71
+ domain,
72
+ range,
73
+ title,
74
+ addCategoryEnabled,
75
+ studentNewCategoryDefaultLabel,
76
+ showToggle,
77
+ rationale,
78
+ correctAnswer,
79
+ language,
80
+ env,
81
+ showKeyLegend
82
+ } = model;
83
+ let {
84
+ correctedAnswer,
85
+ extraCSSRules
86
+ } = model;
87
+ const correctData = (correctAnswer?.data || []).map(data => ({
88
+ ...data,
89
+ interactive: false,
90
+ editable: false
91
+ }));
92
+ const {
93
+ mode
94
+ } = env || {};
95
+ // need to make labels disabled in view mode PD-3928
96
+ if (mode === 'view') {
97
+ correctedAnswer = (correctedAnswer || []).map(data => ({
98
+ ...data,
99
+ editable: false
100
+ }));
101
+ }
102
+ const showRationale = model.rationale && ((0, _renderUi.hasText)(model.rationale) || (0, _renderUi.hasMedia)(model.rationale));
103
+ const showTeacherInstructions = model.teacherInstructions && ((0, _renderUi.hasText)(model.teacherInstructions) || (0, _renderUi.hasMedia)(model.teacherInstructions));
104
+ return /*#__PURE__*/_react.default.createElement(StyledUiLayout, {
105
+ extraCSSRules: extraCSSRules
106
+ }, showTeacherInstructions && /*#__PURE__*/_react.default.createElement(StyledCollapsible, {
107
+ labels: {
108
+ hidden: 'Show Teacher Instructions',
109
+ visible: 'Hide Teacher Instructions'
110
+ }
111
+ }, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
112
+ prompt: teacherInstructions
113
+ })), prompt && /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
114
+ className: "prompt",
115
+ prompt: prompt
116
+ }), /*#__PURE__*/_react.default.createElement(_correctAnswerToggle.default, {
117
+ show: showToggle,
118
+ toggled: showingCorrect,
119
+ onToggle: this.toggleCorrect,
120
+ language: language
121
+ }), showingCorrect && showToggle ? /*#__PURE__*/_react.default.createElement(StyledChart, {
122
+ chartType: chartType,
123
+ size: size,
124
+ domain: domain,
125
+ range: range,
126
+ charts: [_charting.chartTypes.Bar(), _charting.chartTypes.Histogram(), _charting.chartTypes.LineDot(), _charting.chartTypes.LineCross(), _charting.chartTypes.DotPlot(), _charting.chartTypes.LinePlot()],
127
+ data: correctData || categories,
128
+ title: title,
129
+ onDataChange: this.changeData,
130
+ addCategoryEnabled: false,
131
+ categoryDefaultLabel: studentNewCategoryDefaultLabel,
132
+ language: language,
133
+ labelsPlaceholders: {}
134
+ }) : /*#__PURE__*/_react.default.createElement(StyledChart, {
135
+ chartType: chartType,
136
+ size: size,
137
+ domain: domain,
138
+ range: range,
139
+ charts: [_charting.chartTypes.Bar(), _charting.chartTypes.Histogram(), _charting.chartTypes.LineDot(), _charting.chartTypes.LineCross(), _charting.chartTypes.DotPlot(), _charting.chartTypes.LinePlot()],
140
+ data: correctedAnswer || categories,
141
+ title: title,
142
+ onDataChange: this.changeData,
143
+ addCategoryEnabled: addCategoryEnabled,
144
+ categoryDefaultLabel: studentNewCategoryDefaultLabel,
145
+ language: language,
146
+ labelsPlaceholders: {},
147
+ correctData: showToggle ? correctData : undefined
148
+ }), !showingCorrect && showKeyLegend && /*#__PURE__*/_react.default.createElement(_charting.KeyLegend, {
149
+ language: language
150
+ }), showRationale && /*#__PURE__*/_react.default.createElement(_renderUi.Collapsible, {
151
+ labels: {
152
+ hidden: 'Show Rationale',
153
+ visible: 'Hide Rationale'
154
+ }
155
+ }, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
156
+ prompt: rationale
157
+ })));
158
+ }
159
+ }
160
+ exports.Main = Main;
161
+ (0, _defineProperty2.default)(Main, "propTypes", {
162
+ model: _propTypes.default.object.isRequired,
163
+ onAnswersChange: _propTypes.default.func,
164
+ categories: _propTypes.default.array
165
+ });
166
+ var _default = exports.default = Main;
167
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_renderUi","_charting","_lodashEs","_correctAnswerToggle","StyledUiLayout","styled","UiLayout","color","text","backgroundColor","background","overflowX","overflowY","StyledChart","Chart","theme","marginTop","spacing","marginBottom","StyledCollapsible","Collapsible","Main","React","Component","constructor","props","_defineProperty2","default","data","setState","categories","onAnswersChange","showingCorrect","state","model","componentDidUpdate","prevProps","isEqual","render","teacherInstructions","prompt","chartType","size","domain","range","title","addCategoryEnabled","studentNewCategoryDefaultLabel","showToggle","rationale","correctAnswer","language","env","showKeyLegend","correctedAnswer","extraCSSRules","correctData","map","interactive","editable","mode","showRationale","hasText","hasMedia","showTeacherInstructions","createElement","labels","hidden","visible","PreviewPrompt","className","show","toggled","onToggle","toggleCorrect","charts","chartTypes","Bar","Histogram","LineDot","LineCross","DotPlot","LinePlot","onDataChange","changeData","categoryDefaultLabel","labelsPlaceholders","undefined","KeyLegend","exports","PropTypes","object","isRequired","func","array","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { color, Collapsible, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/render-ui';\nimport { Chart, chartTypes, KeyLegend } from '@pie-lib/charting';\nimport { isEqual } from 'lodash-es';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\n\nconst StyledUiLayout = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n overflowX: 'scroll',\n overflowY: 'hidden',\n});\n\nconst StyledChart = styled(Chart)(({ theme }) => ({\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n onAnswersChange: PropTypes.func,\n categories: PropTypes.array,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n categories: props.categories || props.model.data,\n showingCorrect: false,\n };\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(prevProps.categories, this.props.categories)) {\n this.setState({ categories: this.props.categories });\n } else if (!isEqual(prevProps.model.data, this.props.model.data)) {\n this.setState({ categories: this.props.model.data });\n }\n }\n\n changeData = (data) =>\n this.setState(\n {\n categories: data,\n },\n () => this.props.onAnswersChange(data),\n );\n\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n render() {\n const { categories, showingCorrect } = this.state;\n const { model } = this.props;\n const {\n teacherInstructions,\n prompt,\n chartType,\n size,\n domain,\n range,\n title,\n addCategoryEnabled,\n studentNewCategoryDefaultLabel,\n showToggle,\n rationale,\n correctAnswer,\n language,\n env,\n showKeyLegend,\n } = model;\n\n let { correctedAnswer, extraCSSRules } = model;\n\n const correctData = (correctAnswer?.data || []).map((data) => ({ ...data, interactive: false, editable: false }));\n const { mode } = env || {};\n // need to make labels disabled in view mode PD-3928\n if (mode === 'view') {\n correctedAnswer = (correctedAnswer || []).map((data) => ({ ...data, editable: false }));\n }\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <StyledUiLayout extraCSSRules={extraCSSRules}>\n {showTeacherInstructions && (\n <StyledCollapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n {prompt && <PreviewPrompt className=\"prompt\" prompt={prompt} />}\n\n <CorrectAnswerToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n\n {showingCorrect && showToggle ? (\n <StyledChart\n chartType={chartType}\n size={size}\n domain={domain}\n range={range}\n charts={[\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot(),\n ]}\n data={correctData || categories}\n title={title}\n onDataChange={this.changeData}\n addCategoryEnabled={false}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n language={language}\n labelsPlaceholders={{}}\n />\n ) : (\n <StyledChart\n chartType={chartType}\n size={size}\n domain={domain}\n range={range}\n charts={[\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot(),\n ]}\n data={correctedAnswer || categories}\n title={title}\n onDataChange={this.changeData}\n addCategoryEnabled={addCategoryEnabled}\n categoryDefaultLabel={studentNewCategoryDefaultLabel}\n language={language}\n labelsPlaceholders={{}}\n correctData={showToggle ? correctData : undefined}\n />\n )}\n {!showingCorrect && showKeyLegend && <KeyLegend language={language}></KeyLegend>}\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </StyledUiLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "12.2.2-beta.6",
7
+ "version": "12.2.2-beta.7",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "postpublish": "../../scripts/postpublish"
@@ -15,7 +15,7 @@
15
15
  "@mui/icons-material": "^7.3.4",
16
16
  "@mui/material": "^7.3.4",
17
17
  "@pie-framework/pie-player-events": "^0.1.0",
18
- "@pie-lib/charting": "7.0.22-beta.1",
18
+ "@pie-lib/charting": "7.0.22-beta.2",
19
19
  "@pie-lib/correct-answer-toggle": "4.0.5",
20
20
  "@pie-lib/math-rendering": "5.1.0",
21
21
  "@pie-lib/render-ui": "6.1.3",
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "author": "",
28
28
  "license": "ISC",
29
- "gitHead": "c6bbb21417c58eaf8f617143437fb3ff85ae1cb4",
29
+ "gitHead": "5f941f4fe6387747a9a7465feaff7f6e54c1ed29",
30
30
  "main": "lib/index.js",
31
31
  "module": "src/index.js"
32
32
  }