@pie-element/graphing-solution-set 4.3.4-next.0 → 5.0.0-beta.0

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/lib/index.js CHANGED
@@ -1,214 +1,164 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  Object.defineProperty(exports, "Component", {
9
8
  enumerable: true,
10
- get: function get() {
11
- return _main["default"];
9
+ get: function () {
10
+ return _main.default;
12
11
  }
13
12
  });
14
- exports["default"] = void 0;
15
-
16
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
-
22
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
-
24
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
-
26
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
-
28
- var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
29
-
13
+ exports.default = void 0;
30
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
-
32
15
  var _react = _interopRequireDefault(require("react"));
33
-
34
- var _reactDom = _interopRequireDefault(require("react-dom"));
35
-
16
+ var _client = require("react-dom/client");
36
17
  var _piePlayerEvents = require("@pie-framework/pie-player-events");
37
-
38
18
  var _mathRendering = require("@pie-lib/math-rendering");
39
-
40
19
  var _utils = require("./utils");
41
-
42
20
  var _main = _interopRequireDefault(require("./main"));
43
-
44
- var _lodash = require("lodash");
45
-
46
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
47
-
48
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
49
-
50
- var Graphing = /*#__PURE__*/function (_HTMLElement) {
51
- (0, _inherits2["default"])(Graphing, _HTMLElement);
52
-
53
- var _super = _createSuper(Graphing);
54
-
55
- function Graphing() {
56
- var _this;
57
-
58
- (0, _classCallCheck2["default"])(this, Graphing);
59
- _this = _super.call(this);
60
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "isComplete", function (answer) {
61
- return Array.isArray(answer) && answer.length > 0;
62
- });
63
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeAnswers", function (answer, isUndoOperation) {
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) => {
64
35
  // avoid removeInvalidObjects when undo or redo operations are executed
65
36
  // in order to preserve the logic of undo and redo
66
- var gssData = _this._model.gssData;
67
-
37
+ const {
38
+ gssData
39
+ } = this._model;
68
40
  if (gssData.selectedTool === 'lineA' && answer.length > 0) {
69
41
  answer[0].fill = gssData['lineA'].lineType;
70
42
  }
71
-
72
43
  if (gssData.selectedTool === 'lineB' && answer.length > 1) {
73
44
  answer[1].fill = gssData['lineB'].lineType;
74
45
  }
75
-
76
46
  if (answer.length === 0) {
77
47
  gssData.selectedTool = 'lineA';
78
- _this._model.gssData = gssData;
48
+ this._model.gssData = gssData;
79
49
  }
80
-
81
50
  if (!isUndoOperation) {
82
- _this._session.answer = (0, _utils.removeInvalidAnswers)(answer);
51
+ this._session.answer = (0, _utils.removeInvalidAnswers)(answer);
83
52
  } else {
84
- _this._session.answer = answer;
53
+ this._session.answer = answer;
85
54
  }
86
-
87
- _this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(_this.tagName.toLowerCase(), _this.isComplete(_this._session.answer)));
88
-
89
- _this._render();
55
+ this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete(this._session.answer)));
56
+ this._render();
90
57
  });
91
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setGssData", function (gssData, session) {
92
- _this._model.gssData = gssData;
93
- _this._session = session;
94
-
95
- _this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(_this.tagName.toLowerCase(), _this.isComplete(_this._session.answer)));
96
-
97
- _this._render();
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();
98
68
  });
99
- return _this;
69
+ this._root = null;
100
70
  }
71
+
101
72
  /*
102
73
  * Function to set model
103
74
  * @param {object} m - Model object
104
75
  * */
76
+ set model(m) {
77
+ this._model = m;
78
+ this._render();
79
+ }
105
80
 
106
-
107
- (0, _createClass2["default"])(Graphing, [{
108
- key: "model",
109
- set: function set(m) {
110
- this._model = m;
111
-
112
- this._render();
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 = [];
113
89
  }
114
- /*
115
- * Function to set session
116
- * @param {object} s - Session object
117
- * */
118
-
119
- }, {
120
- key: "session",
121
- get:
122
- /*
123
- * Function to get session
124
- * */
125
- function get() {
126
- return this._session;
127
- },
128
- set: function set(s) {
129
- this._session = s;
130
-
131
- if (!this._session.answer) {
132
- this._session.answer = [];
133
- }
134
-
135
- var _ref = this._session || {},
136
- answer = _ref.answer;
137
-
138
- var _this$_model = this._model,
139
- gssLineData = _this$_model.gssLineData,
140
- domain = _this$_model.domain,
141
- range = _this$_model.range;
142
- var section = answer && answer.filter(function (mark) {
143
- return mark.type === 'polygon';
144
- }).length > 0;
145
-
146
- if (gssLineData.numberOfLines === 1) {
147
- this._model.gssData = {
148
- numberOfLines: 1,
149
- selectedTool: section ? 'solutionSet' : 'lineA',
150
- sections: [],
151
- lineA: {
152
- lineType: answer && answer.length > 0 ? answer[0].fill : 'Solid'
153
- }
154
- };
155
- } else {
156
- this._model.gssData = {
157
- numberOfLines: 2,
158
- selectedTool: section ? 'solutionSet' : 'lineA',
159
- sections: [],
160
- lineA: {
161
- lineType: answer && answer.length > 0 ? answer[0].fill : 'Solid'
162
- },
163
- lineB: {
164
- lineType: answer && answer.length > 1 ? answer[1].fill : 'Solid'
165
- }
166
- };
167
- }
168
-
169
- if (section) {
170
- this._model.gssData = (0, _utils.findSectionsInSolutionSet)(this._model.gssData, answer, domain, range);
171
- }
172
-
173
- this._render();
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
+ };
174
120
  }
175
- }, {
176
- key: "connectedCallback",
177
- value: function connectedCallback() {
178
- this._render();
121
+ if (section) {
122
+ this._model.gssData = (0, _utils.findSectionsInSolutionSet)(this._model.gssData, answer, domain, range);
179
123
  }
180
- /*
181
- * Is complete function
182
- * @param {object} answer - Answer object
183
- * */
184
-
185
- }, {
186
- key: "_render",
187
- value:
188
- /*
189
- * Render function
190
- * */
191
- function _render() {
192
- var _this2 = this;
193
-
194
- if (!this._model || !this._session) {
195
- return;
196
- }
197
-
198
- var el = /*#__PURE__*/_react["default"].createElement(_main["default"], {
199
- model: this._model,
200
- session: this._session,
201
- onAnswersChange: this.changeAnswers,
202
- setGssData: this.setGssData
203
- });
124
+ this._render();
125
+ }
204
126
 
205
- _reactDom["default"].render(el, this, function () {
206
- (0, _mathRendering.renderMath)(_this2);
207
- });
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;
208
142
  }
209
- }]);
210
- return Graphing;
211
- }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
212
-
213
- exports["default"] = Graphing;
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;
214
164
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["Graphing","answer","Array","isArray","length","isUndoOperation","gssData","_model","selectedTool","fill","lineType","_session","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","isComplete","_render","session","m","s","gssLineData","domain","range","section","filter","mark","type","numberOfLines","sections","lineA","lineB","el","React","createElement","Main","model","onAnswersChange","changeAnswers","setGssData","ReactDOM","render","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { findSectionsInSolutionSet, removeInvalidAnswers } from './utils';\nimport Main from './main';\nimport { set } from 'lodash';\n\nexport { Main as Component };\n\nexport default class Graphing extends HTMLElement {\n constructor() {\n super();\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 ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n}\n"],"file":"index.js"}
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":[]}