@pie-element/graphing-solution-set 6.1.2-next.1 → 6.1.2

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.
Files changed (88) hide show
  1. package/CHANGELOG.json +1 -0
  2. package/CHANGELOG.md +856 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +20 -0
  5. package/configure/CHANGELOG.json +1 -0
  6. package/configure/CHANGELOG.md +816 -0
  7. package/configure/lib/configure.js +312 -0
  8. package/configure/lib/configure.js.map +1 -0
  9. package/configure/lib/correct-response.js +435 -0
  10. package/configure/lib/correct-response.js.map +1 -0
  11. package/configure/lib/defaults.js +357 -0
  12. package/configure/lib/defaults.js.map +1 -0
  13. package/configure/lib/graphing-config.js +408 -0
  14. package/configure/lib/graphing-config.js.map +1 -0
  15. package/configure/lib/index.js +163 -0
  16. package/configure/lib/index.js.map +1 -0
  17. package/configure/lib/utils.js +630 -0
  18. package/configure/lib/utils.js.map +1 -0
  19. package/configure/package.json +29 -0
  20. package/controller/CHANGELOG.json +1 -0
  21. package/controller/CHANGELOG.md +675 -0
  22. package/controller/lib/defaults.js +69 -0
  23. package/controller/lib/defaults.js.map +1 -0
  24. package/controller/lib/index.js +351 -0
  25. package/controller/lib/index.js.map +1 -0
  26. package/controller/lib/utils.js +212 -0
  27. package/controller/lib/utils.js.map +1 -0
  28. package/controller/package.json +22 -0
  29. package/demo-gss.gif +0 -0
  30. package/docs/config-schema.json +1560 -0
  31. package/docs/config-schema.json.md +1114 -0
  32. package/docs/demo/config.js +8 -0
  33. package/docs/demo/generate.js +54 -0
  34. package/docs/demo/index.html +1 -0
  35. package/docs/demo/session.js +6 -0
  36. package/docs/pie-schema.json +1800 -0
  37. package/docs/pie-schema.json.md +952 -0
  38. package/lib/index.js +164 -0
  39. package/lib/index.js.map +1 -0
  40. package/lib/main.js +355 -0
  41. package/lib/main.js.map +1 -0
  42. package/lib/utils.js +515 -0
  43. package/lib/utils.js.map +1 -0
  44. package/package.json +23 -86
  45. package/configure.js +0 -2
  46. package/controller.js +0 -1
  47. package/dist/author/configure.d.ts +0 -26
  48. package/dist/author/configure.js +0 -190
  49. package/dist/author/correct-response.d.ts +0 -33
  50. package/dist/author/correct-response.js +0 -206
  51. package/dist/author/defaults.d.ts +0 -238
  52. package/dist/author/defaults.js +0 -339
  53. package/dist/author/graphing-config.d.ts +0 -33
  54. package/dist/author/graphing-config.js +0 -237
  55. package/dist/author/index.d.ts +0 -62
  56. package/dist/author/index.js +0 -87
  57. package/dist/author/utils.d.ts +0 -46
  58. package/dist/author/utils.js +0 -474
  59. package/dist/browser/author/index.js +0 -1942
  60. package/dist/browser/author/index.js.map +0 -1
  61. package/dist/browser/browser-pUycHh7Y.js +0 -348
  62. package/dist/browser/browser-pUycHh7Y.js.map +0 -1
  63. package/dist/browser/controller/index.js +0 -193
  64. package/dist/browser/controller/index.js.map +0 -1
  65. package/dist/browser/delivery/index.js +0 -782
  66. package/dist/browser/delivery/index.js.map +0 -1
  67. package/dist/browser/dist-BxTk7Laj.js +0 -57671
  68. package/dist/browser/dist-BxTk7Laj.js.map +0 -1
  69. package/dist/browser/graphing-solution-set.css +0 -2
  70. package/dist/controller/defaults.d.ts +0 -64
  71. package/dist/controller/defaults.js +0 -54
  72. package/dist/controller/index.d.ts +0 -24
  73. package/dist/controller/index.js +0 -110
  74. package/dist/controller/utils.d.ts +0 -20
  75. package/dist/controller/utils.js +0 -39
  76. package/dist/delivery/index.d.ts +0 -22
  77. package/dist/delivery/index.js +0 -62
  78. package/dist/delivery/main.d.ts +0 -31
  79. package/dist/delivery/main.js +0 -198
  80. package/dist/delivery/utils.d.ts +0 -12
  81. package/dist/delivery/utils.js +0 -220
  82. package/dist/graphing-solution-set.css +0 -2
  83. package/dist/index.d.ts +0 -1
  84. package/dist/index.iife.d.ts +0 -8
  85. package/dist/index.iife.js +0 -405
  86. package/dist/index.js +0 -2
  87. package/dist/runtime-support.d.ts +0 -12
  88. package/dist/runtime-support.js +0 -12
package/lib/index.js ADDED
@@ -0,0 +1,164 @@
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 _piePlayerEvents = require("@pie-framework/pie-player-events");
18
+ var _mathRendering = require("@pie-lib/math-rendering");
19
+ var _utils = require("./utils");
20
+ var _main = _interopRequireDefault(require("./main"));
21
+ class Graphing extends HTMLElement {
22
+ constructor() {
23
+ super();
24
+ /*
25
+ * Is complete function
26
+ * @param {object} answer - Answer object
27
+ * */
28
+ (0, _defineProperty2.default)(this, "isComplete", answer => Array.isArray(answer) && answer.length > 0);
29
+ /*
30
+ * Callback function to change answers
31
+ * @param {object} answer - Answer object
32
+ * @param {boolean} isUndoOperation - Boolean value to check if undo operation is performed
33
+ * */
34
+ (0, _defineProperty2.default)(this, "changeAnswers", (answer, isUndoOperation) => {
35
+ // avoid removeInvalidObjects when undo or redo operations are executed
36
+ // in order to preserve the logic of undo and redo
37
+ const {
38
+ gssData
39
+ } = this._model;
40
+ if (gssData.selectedTool === 'lineA' && answer.length > 0) {
41
+ answer[0].fill = gssData['lineA'].lineType;
42
+ }
43
+ if (gssData.selectedTool === 'lineB' && answer.length > 1) {
44
+ answer[1].fill = gssData['lineB'].lineType;
45
+ }
46
+ if (answer.length === 0) {
47
+ gssData.selectedTool = 'lineA';
48
+ this._model.gssData = gssData;
49
+ }
50
+ if (!isUndoOperation) {
51
+ this._session.answer = (0, _utils.removeInvalidAnswers)(answer);
52
+ } else {
53
+ this._session.answer = answer;
54
+ }
55
+ this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete(this._session.answer)));
56
+ this._render();
57
+ });
58
+ /*
59
+ * Function to set gssData object and session object
60
+ * @param {object} gssData - GSS Data object
61
+ * @param {object} session - Session object
62
+ * */
63
+ (0, _defineProperty2.default)(this, "setGssData", (gssData, session) => {
64
+ this._model.gssData = gssData;
65
+ this._session = session;
66
+ this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete(this._session.answer)));
67
+ this._render();
68
+ });
69
+ this._root = null;
70
+ }
71
+
72
+ /*
73
+ * Function to set model
74
+ * @param {object} m - Model object
75
+ * */
76
+ set model(m) {
77
+ this._model = m;
78
+ this._render();
79
+ }
80
+
81
+ /*
82
+ * Function to set session
83
+ * @param {object} s - Session object
84
+ * */
85
+ set session(s) {
86
+ this._session = s;
87
+ if (!this._session.answer) {
88
+ this._session.answer = [];
89
+ }
90
+ const {
91
+ answer
92
+ } = this._session || {};
93
+ const {
94
+ gssLineData,
95
+ domain,
96
+ range
97
+ } = this._model;
98
+ let section = answer && answer.filter(mark => mark.type === 'polygon').length > 0;
99
+ if (gssLineData.numberOfLines === 1) {
100
+ this._model.gssData = {
101
+ numberOfLines: 1,
102
+ selectedTool: section ? 'solutionSet' : 'lineA',
103
+ sections: [],
104
+ lineA: {
105
+ lineType: answer && answer.length > 0 ? answer[0].fill : 'Solid'
106
+ }
107
+ };
108
+ } else {
109
+ this._model.gssData = {
110
+ numberOfLines: 2,
111
+ selectedTool: section ? 'solutionSet' : 'lineA',
112
+ sections: [],
113
+ lineA: {
114
+ lineType: answer && answer.length > 0 ? answer[0].fill : 'Solid'
115
+ },
116
+ lineB: {
117
+ lineType: answer && answer.length > 1 ? answer[1].fill : 'Solid'
118
+ }
119
+ };
120
+ }
121
+ if (section) {
122
+ this._model.gssData = (0, _utils.findSectionsInSolutionSet)(this._model.gssData, answer, domain, range);
123
+ }
124
+ this._render();
125
+ }
126
+
127
+ /*
128
+ * Function to get session
129
+ * */
130
+ get session() {
131
+ return this._session;
132
+ }
133
+ connectedCallback() {
134
+ this._render();
135
+ }
136
+ /*
137
+ * Render function
138
+ * */
139
+ _render() {
140
+ if (!this._model || !this._session) {
141
+ return;
142
+ }
143
+ const el = /*#__PURE__*/_react.default.createElement(_main.default, {
144
+ model: this._model,
145
+ session: this._session,
146
+ onAnswersChange: this.changeAnswers,
147
+ setGssData: this.setGssData
148
+ });
149
+ if (!this._root) {
150
+ this._root = (0, _client.createRoot)(this);
151
+ }
152
+ this._root.render(el);
153
+ queueMicrotask(() => {
154
+ (0, _mathRendering.renderMath)(this);
155
+ });
156
+ }
157
+ disconnectedCallback() {
158
+ if (this._root) {
159
+ this._root.unmount();
160
+ }
161
+ }
162
+ }
163
+ exports.default = Graphing;
164
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_piePlayerEvents","_mathRendering","_utils","_main","Graphing","HTMLElement","constructor","_defineProperty2","default","answer","Array","isArray","length","isUndoOperation","gssData","_model","selectedTool","fill","lineType","_session","removeInvalidAnswers","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_render","session","_root","model","m","s","gssLineData","domain","range","section","filter","mark","type","numberOfLines","sections","lineA","lineB","findSectionsInSolutionSet","connectedCallback","el","React","createElement","Main","onAnswersChange","changeAnswers","setGssData","createRoot","render","queueMicrotask","renderMath","disconnectedCallback","unmount","exports"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { findSectionsInSolutionSet, removeInvalidAnswers } from './utils';\nimport Main from './main';\n\nexport { Main as Component };\n\nexport default class Graphing extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n }\n\n /*\n * Function to set model\n * @param {object} m - Model object\n * */\n set model(m) {\n this._model = m;\n this._render();\n }\n\n /*\n * Function to set session\n * @param {object} s - Session object\n * */\n set session(s) {\n this._session = s;\n if (!this._session.answer) {\n this._session.answer = [];\n }\n const { answer } = this._session || {};\n const { gssLineData, domain, range } = this._model;\n let section = answer && answer.filter((mark) => mark.type === 'polygon').length > 0;\n if (gssLineData.numberOfLines === 1) {\n this._model.gssData = {\n numberOfLines: 1,\n selectedTool: section ? 'solutionSet' : 'lineA',\n sections: [],\n lineA: {\n lineType: answer && answer.length > 0 ? answer[0].fill : 'Solid',\n },\n };\n } else {\n this._model.gssData = {\n numberOfLines: 2,\n selectedTool: section ? 'solutionSet' : 'lineA',\n sections: [],\n lineA: {\n lineType: answer && answer.length > 0 ? answer[0].fill : 'Solid',\n },\n lineB: {\n lineType: answer && answer.length > 1 ? answer[1].fill : 'Solid',\n },\n };\n }\n if (section) {\n this._model.gssData = findSectionsInSolutionSet(this._model.gssData, answer, domain, range);\n }\n this._render();\n }\n\n /*\n * Function to get session\n * */\n get session() {\n return this._session;\n }\n\n connectedCallback() {\n this._render();\n }\n\n /*\n * Is complete function\n * @param {object} answer - Answer object\n * */\n isComplete = (answer) => Array.isArray(answer) && answer.length > 0;\n\n /*\n * Callback function to change answers\n * @param {object} answer - Answer object\n * @param {boolean} isUndoOperation - Boolean value to check if undo operation is performed\n * */\n changeAnswers = (answer, isUndoOperation) => {\n // avoid removeInvalidObjects when undo or redo operations are executed\n // in order to preserve the logic of undo and redo\n const { gssData } = this._model;\n if (gssData.selectedTool === 'lineA' && answer.length > 0) {\n answer[0].fill = gssData['lineA'].lineType;\n }\n if (gssData.selectedTool === 'lineB' && answer.length > 1) {\n answer[1].fill = gssData['lineB'].lineType;\n }\n if (answer.length === 0) {\n gssData.selectedTool = 'lineA';\n this._model.gssData = gssData;\n }\n if (!isUndoOperation) {\n this._session.answer = removeInvalidAnswers(answer);\n } else {\n this._session.answer = answer;\n }\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete(this._session.answer)));\n this._render();\n };\n\n /*\n * Function to set gssData object and session object\n * @param {object} gssData - GSS Data object\n * @param {object} session - Session object\n * */\n setGssData = (gssData, session) => {\n this._model.gssData = gssData;\n this._session = session;\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete(this._session.answer)));\n this._render();\n };\n\n /*\n * Render function\n * */\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onAnswersChange: this.changeAnswers,\n setGssData: this.setGssData,\n });\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/main.js ADDED
@@ -0,0 +1,355 @@
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 _graphingSolutionSet = require("@pie-lib/graphing-solution-set");
13
+ var _renderUi = require("@pie-lib/render-ui");
14
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
15
+ var _utils = require("./utils");
16
+ var _configUi = require("@pie-lib/config-ui");
17
+ const MainContainer = (0, _styles.styled)(_renderUi.UiLayout)({
18
+ color: _renderUi.color.text(),
19
+ backgroundColor: _renderUi.color.background()
20
+ });
21
+ const TeacherInstructions = (0, _styles.styled)(_renderUi.Collapsible)(({
22
+ theme
23
+ }) => ({
24
+ marginBottom: theme.spacing(2)
25
+ }));
26
+ const Graph = (0, _styles.styled)(_graphingSolutionSet.GraphContainer)(({
27
+ theme
28
+ }) => ({
29
+ marginTop: theme.spacing(2),
30
+ marginBottom: theme.spacing(2)
31
+ }));
32
+ class Main extends _react.default.Component {
33
+ constructor(...args) {
34
+ super(...args);
35
+ (0, _defineProperty2.default)(this, "state", {
36
+ showingCorrect: false,
37
+ dialog: {
38
+ open: false
39
+ }
40
+ });
41
+ /*
42
+ * Function to handle the AlertDialog
43
+ * @param {boolean} open - open state of the dialog
44
+ * @param {function} callback - callback function to be called after setting the state
45
+ * */
46
+ (0, _defineProperty2.default)(this, "handleAlertDialog", (open, callback) => this.setState({
47
+ dialog: {
48
+ open
49
+ }
50
+ }, callback));
51
+ /*
52
+ * Function to toggle the correct answer
53
+ * @param {boolean} showingCorrect - state of the correct answer
54
+ * */
55
+ (0, _defineProperty2.default)(this, "toggleCorrect", showingCorrect => this.setState({
56
+ showingCorrect
57
+ }));
58
+ /*
59
+ * Reset the graph to original state
60
+ * */
61
+ (0, _defineProperty2.default)(this, "onResetClick", () => {
62
+ const {
63
+ model,
64
+ session,
65
+ setGssData
66
+ } = this.props;
67
+ let {
68
+ gssData
69
+ } = model;
70
+ this.setState({
71
+ dialog: {
72
+ open: true,
73
+ title: 'Warning',
74
+ text: `This will remove all the elements added on the graph and reset graph to original state. Are you sure you want to continue?`,
75
+ onConfirm: () => {
76
+ // Reset the graph to original state
77
+ session.answer = [];
78
+ gssData.selectedTool = 'lineA';
79
+ gssData.lineA.lineType = 'Solid';
80
+ if (gssData.lineB) gssData.lineB.lineType = 'Solid';
81
+ // Set the gssData and session
82
+ setGssData(gssData, session);
83
+ this.handleAlertDialog(false);
84
+ },
85
+ onClose: () => this.handleAlertDialog(false)
86
+ }
87
+ });
88
+ });
89
+ /*
90
+ * Function to handle the event of solution set selected
91
+ * @param {object} point - point selected on the graph
92
+ * */
93
+ (0, _defineProperty2.default)(this, "onSolutionSetSelected", point => {
94
+ const {
95
+ model,
96
+ session,
97
+ setGssData
98
+ } = this.props;
99
+ const {
100
+ gssData,
101
+ disabled
102
+ } = model;
103
+ if (disabled) {
104
+ return;
105
+ }
106
+ for (const section of gssData.sections) {
107
+ if ((0, _utils.pointInsidePolygon)(point, section)) {
108
+ let polygon = {
109
+ points: section,
110
+ building: false,
111
+ type: 'polygon',
112
+ closed: true,
113
+ isSolution: true
114
+ };
115
+ session.answer = session.answer.filter(mark => mark.type !== 'polygon');
116
+ session.answer.push(polygon);
117
+ break;
118
+ }
119
+ }
120
+ setGssData(gssData, session);
121
+ });
122
+ /*
123
+ * Function to handle the event of change in GSS Line Data
124
+ * @param {object} gssData - GSS Line Data
125
+ * @param {string} oldSelectedTool - old selected tool
126
+ * */
127
+ (0, _defineProperty2.default)(this, "onChangeGssLineData", (gssData, oldSelectedTool) => {
128
+ const {
129
+ model,
130
+ session
131
+ } = this.props;
132
+ const {
133
+ domain,
134
+ range,
135
+ disabled
136
+ } = model;
137
+ if (disabled) {
138
+ return;
139
+ }
140
+ if (gssData.selectedTool === 'solutionSet') {
141
+ let lines = session.answer.filter(mark => mark.type !== 'polygon');
142
+ if (!(0, _utils.checkIfLinesAreAdded)(gssData, lines)) {
143
+ gssData.selectedTool = oldSelectedTool;
144
+ this.setState({
145
+ dialog: {
146
+ open: true,
147
+ title: 'Warning',
148
+ text: 'Please define the line(s) and then select a solution set for the item.',
149
+ onConfirm: () => this.handleAlertDialog(false)
150
+ }
151
+ });
152
+ } else {
153
+ let lines = session.answer.filter(mark => mark.type !== 'polygon');
154
+ gssData = (0, _utils.findSectionsInSolutionSet)(gssData, lines, domain, range);
155
+ }
156
+ this.handleGssDataChange(gssData, session);
157
+ } else {
158
+ let polygons = session.answer.filter(mark => mark.type === 'polygon');
159
+ if (oldSelectedTool === 'solutionSet' && polygons.length > 0) {
160
+ this.setState({
161
+ dialog: {
162
+ open: true,
163
+ title: 'Warning',
164
+ text: 'Changing a line after adding a solution set will clear your selected solution set. Click \'Clear Solution Set\' to change the line. Otherwise, click \'Cancel\'.',
165
+ onConfirm: () => {
166
+ session.answer = session.answer.filter(mark => mark.type !== 'polygon');
167
+ this.handleGssDataChange(gssData, session);
168
+ this.handleAlertDialog(false);
169
+ },
170
+ onConfirmText: 'CLEAR SOLUTION SET',
171
+ onClose: () => {
172
+ gssData.selectedTool = oldSelectedTool;
173
+ this.handleGssDataChange(gssData, session);
174
+ this.handleAlertDialog(false);
175
+ }
176
+ }
177
+ });
178
+ } else {
179
+ this.handleGssDataChange(gssData, session);
180
+ }
181
+ }
182
+ });
183
+ /*
184
+ * Function to handle the event of change in GSS Data
185
+ * @param {object} gssData - GSS Data
186
+ * @param {object} session - session data
187
+ * */
188
+ (0, _defineProperty2.default)(this, "handleGssDataChange", (gssData, session) => {
189
+ const {
190
+ setGssData
191
+ } = this.props;
192
+ if (session.answer && session.answer.length > 0 && session.answer[0] && gssData.lineA) {
193
+ session.answer[0].fill = gssData.lineA.lineType;
194
+ }
195
+ if (session.answer && session.answer.length > 1 && session.answer[1] && gssData.lineB) {
196
+ session.answer[1].fill = gssData.lineB.lineType;
197
+ }
198
+ if (gssData.selectedTool === 'lineB' && session.answer.length === 0 || gssData.selectedTool === 'lineB' && session.answer[0].building) {
199
+ this.setState({
200
+ dialog: {
201
+ open: true,
202
+ title: 'Warning',
203
+ text: 'Please add Line A to the graph before adding Line B',
204
+ onConfirm: () => this.handleAlertDialog(false)
205
+ }
206
+ });
207
+ gssData.selectedTool = 'lineA';
208
+ }
209
+ if (gssData.selectedTool === 'lineA' && session.answer.length > 1 && session.answer[1].building) {
210
+ this.setState({
211
+ dialog: {
212
+ open: true,
213
+ title: 'Warning',
214
+ text: 'Please add Line B to the graph before switching to Line A',
215
+ onConfirm: () => this.handleAlertDialog(false)
216
+ }
217
+ });
218
+ gssData.selectedTool = 'lineB';
219
+ }
220
+ setGssData(gssData, session);
221
+ });
222
+ }
223
+ /*
224
+ * Render the component
225
+ * */
226
+ render() {
227
+ const {
228
+ model,
229
+ onAnswersChange,
230
+ session
231
+ } = this.props;
232
+ const {
233
+ showingCorrect,
234
+ dialog
235
+ } = this.state;
236
+ const {
237
+ answer
238
+ } = session || {};
239
+ const {
240
+ answersCorrected,
241
+ arrows,
242
+ coordinatesOnHover,
243
+ correctResponse,
244
+ defaultTool,
245
+ disabled,
246
+ domain,
247
+ extraCSSRules,
248
+ labels,
249
+ labelsEnabled,
250
+ prompt,
251
+ range,
252
+ rationale,
253
+ size,
254
+ showToggle,
255
+ title,
256
+ titleEnabled,
257
+ teacherInstructions,
258
+ language,
259
+ gssLineData,
260
+ gssData
261
+ } = model || {};
262
+ const marks = answersCorrected || answer || [];
263
+ const showRationale = model.rationale && ((0, _renderUi.hasText)(model.rationale) || (0, _renderUi.hasMedia)(model.rationale));
264
+ const showTeacherInstructions = model.teacherInstructions && ((0, _renderUi.hasText)(model.teacherInstructions) || (0, _renderUi.hasMedia)(model.teacherInstructions));
265
+ return /*#__PURE__*/_react.default.createElement(MainContainer, {
266
+ extraCSSRules: extraCSSRules
267
+ }, showTeacherInstructions && /*#__PURE__*/_react.default.createElement(TeacherInstructions, {
268
+ labels: {
269
+ hidden: 'Show Teacher Instructions',
270
+ visible: 'Hide Teacher Instructions'
271
+ }
272
+ }, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
273
+ prompt: teacherInstructions
274
+ })), prompt && /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
275
+ className: "prompt",
276
+ prompt: prompt
277
+ }), /*#__PURE__*/_react.default.createElement(_correctAnswerToggle.default, {
278
+ show: showToggle,
279
+ toggled: showingCorrect,
280
+ onToggle: this.toggleCorrect,
281
+ language: language
282
+ }), showingCorrect && showToggle ? /*#__PURE__*/_react.default.createElement(Graph, {
283
+ axesSettings: {
284
+ includeArrows: arrows
285
+ },
286
+ coordinatesOnHover: coordinatesOnHover,
287
+ disabled: true,
288
+ disabledLabels: true,
289
+ disabledTitle: true,
290
+ domain: domain,
291
+ labels: labels,
292
+ marks: correctResponse.map(i => ({
293
+ ...i,
294
+ correctness: 'correct'
295
+ })),
296
+ onChangeMarks: onAnswersChange,
297
+ range: range,
298
+ showLabels: labelsEnabled,
299
+ showTitle: titleEnabled,
300
+ size: size,
301
+ title: title,
302
+ language: language,
303
+ gssLineData: gssLineData,
304
+ onChangeGssLineData: this.onChangeGssLineData,
305
+ onSolutionSetSelected: this.onSolutionSetSelected,
306
+ toolbarTools: ['line', 'polygon']
307
+ }) : /*#__PURE__*/_react.default.createElement(Graph, {
308
+ axesSettings: {
309
+ includeArrows: arrows
310
+ },
311
+ coordinatesOnHover: coordinatesOnHover,
312
+ defaultTool: defaultTool,
313
+ disabled: disabled,
314
+ disabledLabels: true,
315
+ disabledTitle: true,
316
+ domain: domain,
317
+ labels: labels,
318
+ marks: marks,
319
+ onChangeMarks: onAnswersChange,
320
+ onCustomReset: this.onResetClick,
321
+ range: range,
322
+ showLabels: labelsEnabled,
323
+ showTitle: titleEnabled,
324
+ size: size,
325
+ title: title,
326
+ language: language,
327
+ gssLineData: gssData,
328
+ onChangeGssLineData: this.onChangeGssLineData,
329
+ onSolutionSetSelected: this.onSolutionSetSelected,
330
+ toolbarTools: ['line', 'polygon']
331
+ }), showRationale && /*#__PURE__*/_react.default.createElement(_renderUi.Collapsible, {
332
+ labels: {
333
+ hidden: 'Show Rationale',
334
+ visible: 'Hide Rationale'
335
+ }
336
+ }, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
337
+ prompt: rationale
338
+ })), /*#__PURE__*/_react.default.createElement(_configUi.AlertDialog, {
339
+ open: dialog.open,
340
+ title: dialog.title,
341
+ text: dialog.text,
342
+ onClose: dialog.onClose,
343
+ onConfirm: dialog.onConfirm,
344
+ onConfirmText: dialog.onConfirmText ? dialog.onConfirmText : 'OK'
345
+ }));
346
+ }
347
+ }
348
+ exports.Main = Main;
349
+ (0, _defineProperty2.default)(Main, "propTypes", {
350
+ model: _propTypes.default.object.isRequired,
351
+ session: _propTypes.default.object.isRequired,
352
+ onAnswersChange: _propTypes.default.func
353
+ });
354
+ var _default = exports.default = Main;
355
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_graphingSolutionSet","_renderUi","_correctAnswerToggle","_utils","_configUi","MainContainer","styled","UiLayout","color","text","backgroundColor","background","TeacherInstructions","Collapsible","theme","marginBottom","spacing","Graph","GraphContainer","marginTop","Main","React","Component","constructor","args","_defineProperty2","default","showingCorrect","dialog","open","callback","setState","model","session","setGssData","props","gssData","title","onConfirm","answer","selectedTool","lineA","lineType","lineB","handleAlertDialog","onClose","point","disabled","section","sections","pointInsidePolygon","polygon","points","building","type","closed","isSolution","filter","mark","push","oldSelectedTool","domain","range","lines","checkIfLinesAreAdded","findSectionsInSolutionSet","handleGssDataChange","polygons","length","onConfirmText","fill","render","onAnswersChange","state","answersCorrected","arrows","coordinatesOnHover","correctResponse","defaultTool","extraCSSRules","labels","labelsEnabled","prompt","rationale","size","showToggle","titleEnabled","teacherInstructions","language","gssLineData","marks","showRationale","hasText","hasMedia","showTeacherInstructions","createElement","hidden","visible","PreviewPrompt","className","show","toggled","onToggle","toggleCorrect","axesSettings","includeArrows","disabledLabels","disabledTitle","map","i","correctness","onChangeMarks","showLabels","showTitle","onChangeGssLineData","onSolutionSetSelected","toolbarTools","onCustomReset","onResetClick","AlertDialog","exports","PropTypes","object","isRequired","func","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { GraphContainer } from '@pie-lib/graphing-solution-set';\nimport { color, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { findSectionsInSolutionSet, pointInsidePolygon, checkIfLinesAreAdded } from './utils';\nimport { AlertDialog } from '@pie-lib/config-ui';\n\nconst MainContainer = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n});\n\nconst TeacherInstructions = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst Graph = styled(GraphContainer)(({ theme }) => ({\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n session: PropTypes.object.isRequired,\n onAnswersChange: PropTypes.func,\n };\n\n state = {\n showingCorrect: false,\n dialog: {\n open: false,\n },\n };\n\n /*\n * Function to handle the AlertDialog\n * @param {boolean} open - open state of the dialog\n * @param {function} callback - callback function to be called after setting the state\n * */\n handleAlertDialog = (open, callback) =>\n this.setState(\n {\n dialog: { open },\n },\n callback,\n );\n\n /*\n * Function to toggle the correct answer\n * @param {boolean} showingCorrect - state of the correct answer\n * */\n toggleCorrect = (showingCorrect) => this.setState({ showingCorrect });\n\n /*\n * Reset the graph to original state\n * */\n onResetClick = () => {\n const { model, session, setGssData } = this.props;\n let { gssData } = model;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `This will remove all the elements added on the graph and reset graph to original state. Are you sure you want to continue?`,\n onConfirm: () => {\n // Reset the graph to original state\n session.answer = [];\n gssData.selectedTool = 'lineA';\n gssData.lineA.lineType = 'Solid';\n if (gssData.lineB) gssData.lineB.lineType = 'Solid';\n // Set the gssData and session\n setGssData(gssData, session);\n this.handleAlertDialog(false);\n },\n onClose: () => this.handleAlertDialog(false),\n },\n });\n };\n\n /*\n * Function to handle the event of solution set selected\n * @param {object} point - point selected on the graph\n * */\n onSolutionSetSelected = (point) => {\n const { model, session, setGssData } = this.props;\n const { gssData, disabled } = model;\n if (disabled) {\n return;\n }\n for (const section of gssData.sections) {\n if (pointInsidePolygon(point, section)) {\n let polygon = {\n points: section,\n building: false,\n type: 'polygon',\n closed: true,\n isSolution: true,\n };\n session.answer = session.answer.filter((mark) => mark.type !== 'polygon');\n session.answer.push(polygon);\n break;\n }\n }\n setGssData(gssData, session);\n };\n\n /*\n * Function to handle the event of change in GSS Line Data\n * @param {object} gssData - GSS Line Data\n * @param {string} oldSelectedTool - old selected tool\n * */\n onChangeGssLineData = (gssData, oldSelectedTool) => {\n const { model, session } = this.props;\n const { domain, range, disabled } = model;\n if (disabled) {\n return;\n }\n if (gssData.selectedTool === 'solutionSet') {\n let lines = session.answer.filter((mark) => mark.type !== 'polygon');\n if (!checkIfLinesAreAdded(gssData, lines)) {\n gssData.selectedTool = oldSelectedTool;\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please define the line(s) and then select a solution set for the item.',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n } else {\n let lines = session.answer.filter((mark) => mark.type !== 'polygon');\n gssData = findSectionsInSolutionSet(gssData, lines, domain, range);\n }\n this.handleGssDataChange(gssData, session);\n } else {\n let polygons = session.answer.filter((mark) => mark.type === 'polygon');\n if (oldSelectedTool === 'solutionSet' && polygons.length > 0) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Changing a line after adding a solution set will clear your selected solution set. Click \\'Clear Solution Set\\' to change the line. Otherwise, click \\'Cancel\\'.',\n onConfirm: () => {\n session.answer = session.answer.filter((mark) => mark.type !== 'polygon');\n this.handleGssDataChange(gssData, session);\n this.handleAlertDialog(false);\n },\n onConfirmText: 'CLEAR SOLUTION SET',\n onClose: () => {\n gssData.selectedTool = oldSelectedTool;\n this.handleGssDataChange(gssData, session);\n this.handleAlertDialog(false);\n },\n },\n });\n } else {\n this.handleGssDataChange(gssData, session);\n }\n }\n };\n\n /*\n * Function to handle the event of change in GSS Data\n * @param {object} gssData - GSS Data\n * @param {object} session - session data\n * */\n handleGssDataChange = (gssData, session) => {\n const { setGssData } = this.props;\n if (session.answer && session.answer.length > 0 && session.answer[0] && gssData.lineA) {\n session.answer[0].fill = gssData.lineA.lineType;\n }\n if (session.answer && session.answer.length > 1 && session.answer[1] && gssData.lineB) {\n session.answer[1].fill = gssData.lineB.lineType;\n }\n if (\n (gssData.selectedTool === 'lineB' && session.answer.length === 0) ||\n (gssData.selectedTool === 'lineB' && session.answer[0].building)\n ) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line A to the graph before adding Line B',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssData.selectedTool = 'lineA';\n }\n if (gssData.selectedTool === 'lineA' && session.answer.length > 1 && session.answer[1].building) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: 'Please add Line B to the graph before switching to Line A',\n onConfirm: () => this.handleAlertDialog(false),\n },\n });\n gssData.selectedTool = 'lineB';\n }\n setGssData(gssData, session);\n };\n\n /*\n * Render the component\n * */\n render() {\n const { model, onAnswersChange, session } = this.props;\n const { showingCorrect, dialog } = this.state;\n const { answer } = session || {};\n const {\n answersCorrected,\n arrows,\n coordinatesOnHover,\n correctResponse,\n defaultTool,\n disabled,\n domain,\n extraCSSRules,\n labels,\n labelsEnabled,\n prompt,\n range,\n rationale,\n size,\n showToggle,\n title,\n titleEnabled,\n teacherInstructions,\n language,\n gssLineData,\n gssData,\n } = model || {};\n const marks = answersCorrected || answer || [];\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n return (\n <MainContainer extraCSSRules={extraCSSRules}>\n {showTeacherInstructions && (\n <TeacherInstructions\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </TeacherInstructions>\n )}\n {prompt && <PreviewPrompt className=\"prompt\" prompt={prompt} />}\n <CorrectAnswerToggle\n show={showToggle}\n toggled={showingCorrect}\n onToggle={this.toggleCorrect}\n language={language}\n />\n {showingCorrect && showToggle ? (\n <Graph\n axesSettings={{ includeArrows: arrows }}\n coordinatesOnHover={coordinatesOnHover}\n disabled={true}\n disabledLabels={true}\n disabledTitle={true}\n domain={domain}\n labels={labels}\n marks={correctResponse.map((i) => ({ ...i, correctness: 'correct' }))}\n onChangeMarks={onAnswersChange}\n range={range}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n size={size}\n title={title}\n language={language}\n gssLineData={gssLineData}\n onChangeGssLineData={this.onChangeGssLineData}\n onSolutionSetSelected={this.onSolutionSetSelected}\n toolbarTools={['line', 'polygon']}\n />\n ) : (\n <Graph\n axesSettings={{ includeArrows: arrows }}\n coordinatesOnHover={coordinatesOnHover}\n defaultTool={defaultTool}\n disabled={disabled}\n disabledLabels={true}\n disabledTitle={true}\n domain={domain}\n labels={labels}\n marks={marks}\n onChangeMarks={onAnswersChange}\n onCustomReset={this.onResetClick}\n range={range}\n showLabels={labelsEnabled}\n showTitle={titleEnabled}\n size={size}\n title={title}\n language={language}\n gssLineData={gssData}\n onChangeGssLineData={this.onChangeGssLineData}\n onSolutionSetSelected={this.onSolutionSetSelected}\n toolbarTools={['line', 'polygon']}\n />\n )}\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n onConfirmText={dialog.onConfirmText ? dialog.onConfirmText : 'OK'}\n />\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}