@pie-element/graphing 9.0.0-beta.0 → 9.0.0-next.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.
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.sortedAnswers = exports.removeInvalidSegments = exports.removeDuplicateSegments = exports.equalVector = exports.equalSine = exports.equalSegment = exports.equalRay = exports.equalPolygon = exports.equalPoint = exports.equalParabola = exports.equalMarks = exports.equalLine = exports.equalExponential = exports.equalCircle = exports.equalAbsolute = exports.constructSegmentsFromPoints = void 0;
8
- var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
9
- var _lodash = _interopRequireDefault(require("lodash"));
10
- var _uniqWith = _interopRequireDefault(require("lodash/uniqWith"));
11
- var _differenceWith = _interopRequireDefault(require("lodash/differenceWith"));
7
+ var _lodashEs = require("lodash-es");
12
8
  var _graphingUtils = require("@pie-lib/graphing-utils");
13
9
  const equalPoint = (A, B) => {
14
10
  // x1 = x2 & y1 = y2
@@ -20,21 +16,21 @@ const equalPoint = (A, B) => {
20
16
  ...B
21
17
  };
22
18
  if (A.label || B.label) {
23
- equalLabel = (0, _isEqual.default)(A.label, B.label);
19
+ equalLabel = (0, _lodashEs.isEqual)(A.label, B.label);
24
20
  }
25
- return (0, _isEqual.default)(A.x, B.x) && (0, _isEqual.default)(A.y, B.y);
21
+ return (0, _lodashEs.isEqual)(A.x, B.x) && (0, _lodashEs.isEqual)(A.y, B.y);
26
22
  };
27
23
  exports.equalPoint = equalPoint;
28
24
  const equalSegment = (segment1, segment2) => {
29
25
  // A.from = B.from, A.to = B.to OR A.from = B.to, A.to = B.from
30
26
  // x1 = x3 & y1 = y3 & x2 = x4 & y2 = y4
31
- return (0, _isEqual.default)(segment1.from, segment2.from) && (0, _isEqual.default)(segment1.to, segment2.to) || (0, _isEqual.default)(segment1.to, segment2.from) && (0, _isEqual.default)(segment1.from, segment2.to);
27
+ return (0, _lodashEs.isEqual)(segment1.from, segment2.from) && (0, _lodashEs.isEqual)(segment1.to, segment2.to) || (0, _lodashEs.isEqual)(segment1.to, segment2.from) && (0, _lodashEs.isEqual)(segment1.from, segment2.to);
32
28
  };
33
29
  exports.equalSegment = equalSegment;
34
30
  const equalVector = (vector1, vector2) => {
35
31
  // A.from = B.from, A.to = B.to;
36
32
  // x1 = x3 & y1 = y3 & x2 = x4 & y2 = y4
37
- return (0, _isEqual.default)(vector1.from, vector2.from) && (0, _isEqual.default)(vector1.to, vector2.to);
33
+ return (0, _lodashEs.isEqual)(vector1.from, vector2.from) && (0, _lodashEs.isEqual)(vector1.to, vector2.to);
38
34
  };
39
35
 
40
36
  // this function is implemented in configure as well
@@ -101,7 +97,7 @@ const equalLine = (line1, line2) => {
101
97
  } else if (c1 !== c2) {
102
98
  return false;
103
99
  }
104
- return _lodash.default.uniq(proportions).length === 1;
100
+ return (0, _lodashEs.uniq)(proportions).length === 1;
105
101
 
106
102
  // (y2 - y1)/(x2 - x1) = (y4 - y3)/(x4 - x3);
107
103
  // return ((Math.abs((line1.to.y - line1.from.y) / (line1.to.x - line1.from.x))) === (Math.abs((line2.to.y - line2.from.y) / (line2.to.x - line2.from.x))));
@@ -150,14 +146,14 @@ const removeDuplicateSegments = segments => {
150
146
  // removes segments that are duplicates; eg. These segments are the same, so one will be removed:
151
147
  // segment1: from: { x: 1, y: 1 }, to: { x: 2, y: 1 }
152
148
  // segment2: from: { x: 2, y: 1 }, to: { x: 1, y: 1 }
153
- return (0, _uniqWith.default)(segments, (s1, s2) => equalSegment(s1, s2));
149
+ return (0, _lodashEs.uniqWith)(segments, (s1, s2) => equalSegment(s1, s2));
154
150
  };
155
151
  exports.removeDuplicateSegments = removeDuplicateSegments;
156
152
  const removeInvalidSegments = segments => {
157
153
  segments = segments || [];
158
154
  // removes segments that start in a point and end in the same point (eg.: from: { x: 1, y: 1 }, to: { x: 1, y: 1 })
159
155
 
160
- return segments.filter(segment => !(0, _isEqual.default)(segment.from, segment.to));
156
+ return segments.filter(segment => !(0, _lodashEs.isEqual)(segment.from, segment.to));
161
157
  };
162
158
  exports.removeInvalidSegments = removeInvalidSegments;
163
159
  const equalPolygon = (poly1, poly2) => {
@@ -173,8 +169,8 @@ const equalPolygon = (poly1, poly2) => {
173
169
  const segments2 = constructSegmentsFromPoints(points2);
174
170
  const segments1NoDuplicates = removeDuplicateSegments(removeInvalidSegments(segments1));
175
171
  const segments2NoDuplicates = removeDuplicateSegments(removeInvalidSegments(segments2));
176
- const differentSegments1 = (0, _differenceWith.default)(segments1NoDuplicates, segments2NoDuplicates, equalSegment);
177
- const differentSegments2 = (0, _differenceWith.default)(segments2NoDuplicates, segments1NoDuplicates, equalSegment);
172
+ const differentSegments1 = (0, _lodashEs.differenceWith)(segments1NoDuplicates, segments2NoDuplicates, equalSegment);
173
+ const differentSegments2 = (0, _lodashEs.differenceWith)(segments2NoDuplicates, segments1NoDuplicates, equalSegment);
178
174
  return (!differentSegments1 || !differentSegments1.length) && (!differentSegments2 || !differentSegments2.length);
179
175
  };
180
176
  exports.equalPolygon = equalPolygon;
@@ -197,7 +193,7 @@ const equalCircle = (c1, c2) => {
197
193
  ...c2.edge
198
194
  }
199
195
  };
200
- const equalRootAndEdge = (0, _isEqual.default)(c2.edge, c1.edge) && (0, _isEqual.default)(c2.root, c1.root);
196
+ const equalRootAndEdge = (0, _lodashEs.isEqual)(c2.edge, c1.edge) && (0, _lodashEs.isEqual)(c2.root, c1.root);
201
197
 
202
198
  // if both edge and root are the same, it means the shapes are exactly the same
203
199
  if (equalRootAndEdge) return true;
@@ -205,7 +201,7 @@ const equalCircle = (c1, c2) => {
205
201
  const rC2 = Math.sqrt((c2.edge.x - c2.root.x) ** 2 + (c2.edge.y - c2.root.y) ** 2);
206
202
 
207
203
  // if both root and radius are the same, it means the shapes are equal
208
- return (0, _isEqual.default)(c2.root, c1.root) && (0, _isEqual.default)(rC1, rC2);
204
+ return (0, _lodashEs.isEqual)(c2.root, c1.root) && (0, _lodashEs.isEqual)(rC1, rC2);
209
205
  };
210
206
  exports.equalCircle = equalCircle;
211
207
  const equalSine = (sine1, sine2) => {
@@ -361,7 +357,7 @@ const equalAbsolute = (p1, p2) => {
361
357
  const p2a2 = (0, _graphingUtils.pointsToAForAbsolute)(rootP2, p2edge);
362
358
 
363
359
  // if both root and a value are equal
364
- return (0, _isEqual.default)(rootP2, rootP1) && (0, _isEqual.default)(p2a2, p1a1);
360
+ return (0, _lodashEs.isEqual)(rootP2, rootP1) && (0, _lodashEs.isEqual)(p2a2, p1a1);
365
361
  };
366
362
 
367
363
  /*
@@ -406,7 +402,7 @@ const equalExponential = (p1, p2) => {
406
402
  } = (0, _graphingUtils.pointsToABForExponential)(rootP2, p2edge);
407
403
 
408
404
  // if both a and b value are equal
409
- return (0, _isEqual.default)(a2, a1) && (0, _isEqual.default)(b2, b1);
405
+ return (0, _lodashEs.isEqual)(a2, a1) && (0, _lodashEs.isEqual)(b2, b1);
410
406
  };
411
407
  exports.equalExponential = equalExponential;
412
408
  const equalMarks = exports.equalMarks = {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_isEqual","_interopRequireDefault","require","_lodash","_uniqWith","_differenceWith","_graphingUtils","equalPoint","A","B","equalLabel","label","isEqual","x","y","exports","equalSegment","segment1","segment2","from","to","equalVector","vector1","vector2","sortedAnswers","answers","Object","keys","sort","reduce","result","key","returnLineEquationCoefficients","line","xA","yA","xB","yB","a","b","c","getSignificantDecimals","number","Math","round","equalLine","line1","line2","a1","b1","c1","a2","b2","c2","proportions","push","lodash","uniq","length","equalRay","ray1","ray2","mRay1","mRay2","angleRay1","atan2","PI","angleRay2","constructSegmentsFromPoints","points","map","point","index","removeDuplicateSegments","segments","uniqWith","s1","s2","removeInvalidSegments","filter","segment","equalPolygon","poly1","poly2","points1","points2","segments1","segments2","segments1NoDuplicates","segments2NoDuplicates","differentSegments1","differenceWith","differentSegments2","equalCircle","root","edge","equalRootAndEdge","rC1","sqrt","rC2","equalSine","sine1","sine2","getPoints","amplitude","freq","getAmplitudeAndFreq","tY","abs","tXRoot","tX","edgeAboveZeroX","edgeAboveZeroY","min","max","studentAnswerBpY","correctAnswerBpY","amplitude1","freq1","min1","max1","edgeAboveZeroX1","edgeAboveZeroY1","amplitude2","freq2","min2","max2","edgeAboveZeroX2","edgeAboveZeroY2","equalParabola","p1","p2","edgeP1","edgeP2","rootP1","rootP2","p1edge","p2edge","p1mirrorEdge","p2mirrorEdge","pointsToABC","equalAbsolute","p1a1","pointsToAForAbsolute","p2a2","equalExponential","pointsToABForExponential","equalMarks","circle","sessAnswer","mark","parabola","absolute","exponential","polygon","poly","ray","sine","vector","completePoint","Number","isFinite","completeFromTo","item","completeMark","completeRootEdge","completePoints"],"sources":["../src/utils.js"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport lodash from 'lodash';\nimport uniqWith from 'lodash/uniqWith';\nimport differenceWith from 'lodash/differenceWith';\nimport {\n getAmplitudeAndFreq,\n pointsToABC,\n pointsToAForAbsolute,\n pointsToABForExponential,\n} from '@pie-lib/graphing-utils';\n\nexport const equalPoint = (A, B) => {\n // x1 = x2 & y1 = y2\n let equalLabel = true;\n\n A = { ...A };\n B = { ...B };\n\n if (A.label || B.label) {\n equalLabel = isEqual(A.label, B.label);\n }\n\n return isEqual(A.x, B.x) && isEqual(A.y, B.y);\n};\n\nexport const equalSegment = (segment1, segment2) => {\n // A.from = B.from, A.to = B.to OR A.from = B.to, A.to = B.from\n // x1 = x3 & y1 = y3 & x2 = x4 & y2 = y4\n return (\n (isEqual(segment1.from, segment2.from) && isEqual(segment1.to, segment2.to)) ||\n (isEqual(segment1.to, segment2.from) && isEqual(segment1.from, segment2.to))\n );\n};\n\nexport const equalVector = (vector1, vector2) => {\n // A.from = B.from, A.to = B.to;\n // x1 = x3 & y1 = y3 & x2 = x4 & y2 = y4\n return isEqual(vector1.from, vector2.from) && isEqual(vector1.to, vector2.to);\n};\n\n// this function is implemented in configure as well\nexport const sortedAnswers = (answers) =>\n Object.keys(answers || {})\n .sort()\n .reduce((result, key) => {\n if (key !== 'correctAnswer') {\n result[key] = answers[key];\n }\n\n return result;\n }, {});\n\nconst returnLineEquationCoefficients = (line) => {\n line = { ...line, to: { ...line.to }, from: { ...line.from } };\n\n const xA = line.from.x;\n const yA = line.from.y;\n const xB = line.to.x;\n const yB = line.to.y;\n\n return {\n a: yB - yA,\n b: xA - xB,\n c: xB * yA - xA * yB,\n };\n};\n\nconst getSignificantDecimals = (number) => Math.round(number * 10000) / 10000;\n\nexport const equalLine = (line1, line2) => {\n // line equation: ax + by + c = 0\n // 2 lines are equal if a1/a2 = b1/b2 = c1/c2, where a, b, c are the coefficients in line equation\n\n // line equation knowing 2 points: (y - yA) / (yB - yA) = (x - xA) / (xB - xA)\n // extending this equation, we get: x * (yB - yA) + y * (xA - xB) + (xB * yA - xA * yB) = 0\n // where a = yB - yA; b = xA - xB; c = xB * yA - xA * yB\n\n const { a: a1, b: b1, c: c1 } = returnLineEquationCoefficients(line1);\n const { a: a2, b: b2, c: c2 } = returnLineEquationCoefficients(line2);\n\n const proportions = [];\n\n if (a2 !== 0) {\n proportions.push(getSignificantDecimals(a1 / a2));\n } else if (a1 !== a2) {\n return false;\n }\n\n if (b2 !== 0) {\n proportions.push(getSignificantDecimals(b1 / b2));\n } else if (b1 !== b2) {\n return false;\n }\n\n if (c2 !== 0) {\n proportions.push(getSignificantDecimals(c1 / c2));\n } else if (c1 !== c2) {\n return false;\n }\n\n return lodash.uniq(proportions).length === 1;\n\n // (y2 - y1)/(x2 - x1) = (y4 - y3)/(x4 - x3);\n // return ((Math.abs((line1.to.y - line1.from.y) / (line1.to.x - line1.from.x))) === (Math.abs((line2.to.y - line2.from.y) / (line2.to.x - line2.from.x))));\n};\n\nexport const equalRay = (ray1, ray2) => {\n ray1 = { ...ray1, to: { ...ray1.to }, from: { ...ray1.from } };\n ray2 = { ...ray2, to: { ...ray2.to }, from: { ...ray2.from } };\n\n // slope: m = (y2-y1)/(x2-x1)\n // slope & x1 = x3 & y1 = y3 & angle between (x1, y1) (x2, y2) is same as angle between (x3, y3) (x4, y4)\n const mRay1 = (ray1.to.y - ray1.from.y) / (ray1.to.x - ray1.from.x);\n const mRay2 = (ray2.to.y - ray2.from.y) / (ray2.to.x - ray2.from.x);\n const angleRay1 = (Math.atan2(ray1.to.y - ray1.from.y, ray1.to.x - ray1.from.x) * 180) / Math.PI;\n const angleRay2 = (Math.atan2(ray2.to.y - ray2.from.y, ray2.to.x - ray2.from.x) * 180) / Math.PI;\n\n return mRay1 === mRay2 && ray1.from.x === ray2.from.x && ray1.from.y === ray2.from.y && angleRay1 === angleRay2;\n};\n\nexport const constructSegmentsFromPoints = (points) => {\n // takes the list of points that represent a polygon and transforms it into a list of segments; eg.:\n // points: A, B, C, D => segments: AB, BC, CD, DA\n return (points || []).map((point, index) => ({ from: point, to: points[(index + 1) % points.length] }));\n};\n\nexport const removeDuplicateSegments = (segments) => {\n segments = segments || [];\n // removes segments that are duplicates; eg. These segments are the same, so one will be removed:\n // segment1: from: { x: 1, y: 1 }, to: { x: 2, y: 1 }\n // segment2: from: { x: 2, y: 1 }, to: { x: 1, y: 1 }\n return uniqWith(segments, (s1, s2) => equalSegment(s1, s2));\n};\n\nexport const removeInvalidSegments = (segments) => {\n segments = segments || [];\n // removes segments that start in a point and end in the same point (eg.: from: { x: 1, y: 1 }, to: { x: 1, y: 1 })\n\n return segments.filter((segment) => !isEqual(segment.from, segment.to));\n};\n\nexport const equalPolygon = (poly1, poly2) => {\n const { points: points1 } = poly1;\n const { points: points2 } = poly2;\n\n // generate segments\n const segments1 = constructSegmentsFromPoints(points1);\n const segments2 = constructSegmentsFromPoints(points2);\n\n const segments1NoDuplicates = removeDuplicateSegments(removeInvalidSegments(segments1));\n const segments2NoDuplicates = removeDuplicateSegments(removeInvalidSegments(segments2));\n\n const differentSegments1 = differenceWith(segments1NoDuplicates, segments2NoDuplicates, equalSegment);\n const differentSegments2 = differenceWith(segments2NoDuplicates, segments1NoDuplicates, equalSegment);\n\n return (!differentSegments1 || !differentSegments1.length) && (!differentSegments2 || !differentSegments2.length);\n};\n\nexport const equalCircle = (c1, c2) => {\n c1 = { ...c1, root: { ...c1.root }, edge: { ...c1.edge } };\n c2 = { ...c2, root: { ...c2.root }, edge: { ...c2.edge } };\n const equalRootAndEdge = isEqual(c2.edge, c1.edge) && isEqual(c2.root, c1.root);\n\n // if both edge and root are the same, it means the shapes are exactly the same\n if (equalRootAndEdge) return true;\n\n const rC1 = Math.sqrt((c1.edge.x - c1.root.x) ** 2 + (c1.edge.y - c1.root.y) ** 2);\n const rC2 = Math.sqrt((c2.edge.x - c2.root.x) ** 2 + (c2.edge.y - c2.root.y) ** 2);\n\n // if both root and radius are the same, it means the shapes are equal\n return isEqual(c2.root, c1.root) && isEqual(rC1, rC2);\n};\n\nexport const equalSine = (sine1, sine2) => {\n const getPoints = ({ root, edge }) => {\n root = { ...root };\n edge = { ...edge };\n\n const { amplitude, freq } = getAmplitudeAndFreq(root, edge);\n // the height of the sine wave\n const tY = Math.abs(root.y - edge.y) * 2;\n // the distance on x axis between edge and root\n const tXRoot = Math.abs(root.x - edge.x);\n // the distance on x axis between 2 edges for sine wave (min & max)\n const tX = tXRoot * 2;\n // the first edge placed east side of root\n let edgeAboveZeroX = edge.x;\n let edgeAboveZeroY = edge.y;\n\n // if edge less then 0, find out the appropriate edge placed east side of zero (0)\n while (edgeAboveZeroX < 0 && tX !== 0) {\n edgeAboveZeroX = edgeAboveZeroX + tX;\n edgeAboveZeroY = edgeAboveZeroY < root.y ? edgeAboveZeroY + tY : edgeAboveZeroY - tY;\n }\n\n // if edge more then 0, find out the appropriate edge placed east side of zero (0)\n while (edgeAboveZeroX - tX > 0 && tX !== 0) {\n edgeAboveZeroX = edgeAboveZeroX - tX;\n edgeAboveZeroY = edgeAboveZeroY < root.y ? edgeAboveZeroY + tY : edgeAboveZeroY - tY;\n }\n\n return {\n amplitude: getSignificantDecimals(amplitude),\n freq: getSignificantDecimals(freq),\n min: getSignificantDecimals(edge.y < root.y ? edge.y : edge.y - tY),\n max: getSignificantDecimals(edge.y < root.y ? edge.y + tY : edge.y),\n edgeAboveZeroX: getSignificantDecimals(edgeAboveZeroX),\n edgeAboveZeroY: getSignificantDecimals(edgeAboveZeroY),\n };\n };\n\n const studentAnswerBpY = getPoints(sine1);\n const correctAnswerBpY = getPoints(sine2);\n\n const {\n amplitude: amplitude1,\n freq: freq1,\n min: min1,\n max: max1,\n edgeAboveZeroX: edgeAboveZeroX1,\n edgeAboveZeroY: edgeAboveZeroY1,\n } = studentAnswerBpY;\n const {\n amplitude: amplitude2,\n freq: freq2,\n min: min2,\n max: max2,\n edgeAboveZeroX: edgeAboveZeroX2,\n edgeAboveZeroY: edgeAboveZeroY2,\n } = correctAnswerBpY;\n\n return (\n Math.abs(amplitude1) === Math.abs(amplitude2) &&\n Math.abs(freq1) === Math.abs(freq2) &&\n min1 === min2 &&\n max1 === max2 &&\n edgeAboveZeroX1 === edgeAboveZeroX2 &&\n edgeAboveZeroY1 === edgeAboveZeroY2\n );\n // rootDiff1 === rootDiff2);\n};\n\nexport const equalParabola = (p1, p2) => {\n const { edge: edgeP1 } = p1;\n const { edge: edgeP2 } = p2;\n let { root: rootP1 } = p1;\n let { root: rootP2 } = p2;\n\n rootP1 = { ...rootP1 };\n rootP2 = { ...rootP2 };\n\n const p1edge = edgeP1 || { ...rootP1 };\n const p2edge = edgeP2 || { ...rootP2 };\n\n const p1mirrorEdge = { x: rootP1.x - (p1edge.x - rootP1.x), y: p1edge.y };\n const p2mirrorEdge = { x: rootP2.x - (p2edge.x - rootP2.x), y: p2edge.y };\n\n if (!edgeP1 || !edgeP2) return false;\n\n const { a: a1, b: b1, c: c1 } = pointsToABC(rootP1, edgeP1, p1mirrorEdge);\n const { a: a2, b: b2, c: c2 } = pointsToABC(rootP2, edgeP2, p2mirrorEdge);\n\n // sometimes numbers have this form: 1.00000000002 because of calculations, we have to round them\n const round = (number) => Math.round(number * 10000) / 10000;\n\n return round(a1) === round(a2) && round(b1) === round(b2) && round(c1) === round(c2);\n};\n\n/*\n * Function to check if given two points for absolute function\n * for correct answer and student answer are equal or not.\n * @param p1 - student answer\n * @param p2 - correct answer\n * */\nexport const equalAbsolute = (p1, p2) => {\n const { edge: edgeP1 } = p1;\n const { edge: edgeP2 } = p2;\n let { root: rootP1 } = p1;\n let { root: rootP2 } = p2;\n\n rootP1 = { ...rootP1 };\n rootP2 = { ...rootP2 };\n\n const p1edge = edgeP1 || { ...rootP1 };\n const p2edge = edgeP2 || { ...rootP2 };\n\n const p1a1 = pointsToAForAbsolute(rootP1, p1edge);\n const p2a2 = pointsToAForAbsolute(rootP2, p2edge);\n\n // if both root and a value are equal\n return isEqual(rootP2, rootP1) && isEqual(p2a2, p1a1);\n};\n\n/*\n * Function to check if given two points for exponential function\n * for correct answer and student answer are equal or not.\n * @param p1 - student answer\n * @param p2 - correct answer\n * */\nexport const equalExponential = (p1, p2) => {\n const { edge: edgeP1 } = p1;\n const { edge: edgeP2 } = p2;\n let { root: rootP1 } = p1;\n let { root: rootP2 } = p2;\n\n rootP1 = { ...rootP1 };\n rootP2 = { ...rootP2 };\n\n const p1edge = edgeP1 || { ...rootP1 };\n const p2edge = edgeP2 || { ...rootP2 };\n\n const { a1, b1 } = pointsToABForExponential(rootP1, p1edge);\n const { a2, b2 } = pointsToABForExponential(rootP2, p2edge);\n\n // if both a and b value are equal\n return isEqual(a2, a1) && isEqual(b2, b1);\n};\n\nexport const equalMarks = {\n circle: (sessAnswer, mark) => equalCircle(sessAnswer, mark),\n line: (sessAnswer, mark) => equalLine(sessAnswer, mark),\n parabola: (sessAnswer, mark) => equalParabola(sessAnswer, mark),\n absolute: (sessAnswer, mark) => equalAbsolute(sessAnswer, mark),\n exponential: (sessAnswer, mark) => equalExponential(sessAnswer, mark),\n point: (sessAnswer, mark) => equalPoint(sessAnswer, mark),\n polygon: (sessAnswer, poly) => equalPolygon(sessAnswer, poly),\n ray: (sessAnswer, mark) => equalRay(sessAnswer, mark),\n segment: (sessAnswer, mark) => equalSegment(sessAnswer, mark),\n sine: (sessAnswer, mark) => equalSine(sessAnswer, mark),\n vector: (sessAnswer, mark) => equalVector(sessAnswer, mark),\n};\n\nconst completePoint = (point) => point && Number.isFinite(point.x) && Number.isFinite(point.y);\nconst completeFromTo = (item) => item && completeMark.point(item.from) && completeMark.point(item.to);\nconst completeRootEdge = (item) => item && completeMark.point(item.edge) && completeMark.point(item.root);\nconst completePoints = (item) =>\n item &&\n item.points &&\n item.points.length &&\n (item.points.filter((point) => completePoint(point)) || []).length === item.points.length;\n\nconst completeMark = {\n point: completePoint,\n line: completeFromTo,\n ray: completeFromTo,\n segment: completeFromTo,\n vector: completeFromTo,\n circle: completeRootEdge,\n parabola: completeRootEdge,\n absolute: completeRootEdge,\n exponential: completeRootEdge,\n sine: completeRootEdge,\n polygon: completePoints,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_lodashEs","require","_graphingUtils","equalPoint","A","B","equalLabel","label","isEqual","x","y","exports","equalSegment","segment1","segment2","from","to","equalVector","vector1","vector2","sortedAnswers","answers","Object","keys","sort","reduce","result","key","returnLineEquationCoefficients","line","xA","yA","xB","yB","a","b","c","getSignificantDecimals","number","Math","round","equalLine","line1","line2","a1","b1","c1","a2","b2","c2","proportions","push","uniq","length","equalRay","ray1","ray2","mRay1","mRay2","angleRay1","atan2","PI","angleRay2","constructSegmentsFromPoints","points","map","point","index","removeDuplicateSegments","segments","uniqWith","s1","s2","removeInvalidSegments","filter","segment","equalPolygon","poly1","poly2","points1","points2","segments1","segments2","segments1NoDuplicates","segments2NoDuplicates","differentSegments1","differenceWith","differentSegments2","equalCircle","root","edge","equalRootAndEdge","rC1","sqrt","rC2","equalSine","sine1","sine2","getPoints","amplitude","freq","getAmplitudeAndFreq","tY","abs","tXRoot","tX","edgeAboveZeroX","edgeAboveZeroY","min","max","studentAnswerBpY","correctAnswerBpY","amplitude1","freq1","min1","max1","edgeAboveZeroX1","edgeAboveZeroY1","amplitude2","freq2","min2","max2","edgeAboveZeroX2","edgeAboveZeroY2","equalParabola","p1","p2","edgeP1","edgeP2","rootP1","rootP2","p1edge","p2edge","p1mirrorEdge","p2mirrorEdge","pointsToABC","equalAbsolute","p1a1","pointsToAForAbsolute","p2a2","equalExponential","pointsToABForExponential","equalMarks","circle","sessAnswer","mark","parabola","absolute","exponential","polygon","poly","ray","sine","vector","completePoint","Number","isFinite","completeFromTo","item","completeMark","completeRootEdge","completePoints"],"sources":["../src/utils.js"],"sourcesContent":["import { differenceWith, isEqual, uniq, uniqWith } from 'lodash-es';\nimport {\n getAmplitudeAndFreq,\n pointsToABC,\n pointsToAForAbsolute,\n pointsToABForExponential,\n} from '@pie-lib/graphing-utils';\n\nexport const equalPoint = (A, B) => {\n // x1 = x2 & y1 = y2\n let equalLabel = true;\n\n A = { ...A };\n B = { ...B };\n\n if (A.label || B.label) {\n equalLabel = isEqual(A.label, B.label);\n }\n\n return isEqual(A.x, B.x) && isEqual(A.y, B.y);\n};\n\nexport const equalSegment = (segment1, segment2) => {\n // A.from = B.from, A.to = B.to OR A.from = B.to, A.to = B.from\n // x1 = x3 & y1 = y3 & x2 = x4 & y2 = y4\n return (\n (isEqual(segment1.from, segment2.from) && isEqual(segment1.to, segment2.to)) ||\n (isEqual(segment1.to, segment2.from) && isEqual(segment1.from, segment2.to))\n );\n};\n\nexport const equalVector = (vector1, vector2) => {\n // A.from = B.from, A.to = B.to;\n // x1 = x3 & y1 = y3 & x2 = x4 & y2 = y4\n return isEqual(vector1.from, vector2.from) && isEqual(vector1.to, vector2.to);\n};\n\n// this function is implemented in configure as well\nexport const sortedAnswers = (answers) =>\n Object.keys(answers || {})\n .sort()\n .reduce((result, key) => {\n if (key !== 'correctAnswer') {\n result[key] = answers[key];\n }\n\n return result;\n }, {});\n\nconst returnLineEquationCoefficients = (line) => {\n line = { ...line, to: { ...line.to }, from: { ...line.from } };\n\n const xA = line.from.x;\n const yA = line.from.y;\n const xB = line.to.x;\n const yB = line.to.y;\n\n return {\n a: yB - yA,\n b: xA - xB,\n c: xB * yA - xA * yB,\n };\n};\n\nconst getSignificantDecimals = (number) => Math.round(number * 10000) / 10000;\n\nexport const equalLine = (line1, line2) => {\n // line equation: ax + by + c = 0\n // 2 lines are equal if a1/a2 = b1/b2 = c1/c2, where a, b, c are the coefficients in line equation\n\n // line equation knowing 2 points: (y - yA) / (yB - yA) = (x - xA) / (xB - xA)\n // extending this equation, we get: x * (yB - yA) + y * (xA - xB) + (xB * yA - xA * yB) = 0\n // where a = yB - yA; b = xA - xB; c = xB * yA - xA * yB\n\n const { a: a1, b: b1, c: c1 } = returnLineEquationCoefficients(line1);\n const { a: a2, b: b2, c: c2 } = returnLineEquationCoefficients(line2);\n\n const proportions = [];\n\n if (a2 !== 0) {\n proportions.push(getSignificantDecimals(a1 / a2));\n } else if (a1 !== a2) {\n return false;\n }\n\n if (b2 !== 0) {\n proportions.push(getSignificantDecimals(b1 / b2));\n } else if (b1 !== b2) {\n return false;\n }\n\n if (c2 !== 0) {\n proportions.push(getSignificantDecimals(c1 / c2));\n } else if (c1 !== c2) {\n return false;\n }\n\n return uniq(proportions).length === 1;\n\n // (y2 - y1)/(x2 - x1) = (y4 - y3)/(x4 - x3);\n // return ((Math.abs((line1.to.y - line1.from.y) / (line1.to.x - line1.from.x))) === (Math.abs((line2.to.y - line2.from.y) / (line2.to.x - line2.from.x))));\n};\n\nexport const equalRay = (ray1, ray2) => {\n ray1 = { ...ray1, to: { ...ray1.to }, from: { ...ray1.from } };\n ray2 = { ...ray2, to: { ...ray2.to }, from: { ...ray2.from } };\n\n // slope: m = (y2-y1)/(x2-x1)\n // slope & x1 = x3 & y1 = y3 & angle between (x1, y1) (x2, y2) is same as angle between (x3, y3) (x4, y4)\n const mRay1 = (ray1.to.y - ray1.from.y) / (ray1.to.x - ray1.from.x);\n const mRay2 = (ray2.to.y - ray2.from.y) / (ray2.to.x - ray2.from.x);\n const angleRay1 = (Math.atan2(ray1.to.y - ray1.from.y, ray1.to.x - ray1.from.x) * 180) / Math.PI;\n const angleRay2 = (Math.atan2(ray2.to.y - ray2.from.y, ray2.to.x - ray2.from.x) * 180) / Math.PI;\n\n return mRay1 === mRay2 && ray1.from.x === ray2.from.x && ray1.from.y === ray2.from.y && angleRay1 === angleRay2;\n};\n\nexport const constructSegmentsFromPoints = (points) => {\n // takes the list of points that represent a polygon and transforms it into a list of segments; eg.:\n // points: A, B, C, D => segments: AB, BC, CD, DA\n return (points || []).map((point, index) => ({ from: point, to: points[(index + 1) % points.length] }));\n};\n\nexport const removeDuplicateSegments = (segments) => {\n segments = segments || [];\n // removes segments that are duplicates; eg. These segments are the same, so one will be removed:\n // segment1: from: { x: 1, y: 1 }, to: { x: 2, y: 1 }\n // segment2: from: { x: 2, y: 1 }, to: { x: 1, y: 1 }\n return uniqWith(segments, (s1, s2) => equalSegment(s1, s2));\n};\n\nexport const removeInvalidSegments = (segments) => {\n segments = segments || [];\n // removes segments that start in a point and end in the same point (eg.: from: { x: 1, y: 1 }, to: { x: 1, y: 1 })\n\n return segments.filter((segment) => !isEqual(segment.from, segment.to));\n};\n\nexport const equalPolygon = (poly1, poly2) => {\n const { points: points1 } = poly1;\n const { points: points2 } = poly2;\n\n // generate segments\n const segments1 = constructSegmentsFromPoints(points1);\n const segments2 = constructSegmentsFromPoints(points2);\n\n const segments1NoDuplicates = removeDuplicateSegments(removeInvalidSegments(segments1));\n const segments2NoDuplicates = removeDuplicateSegments(removeInvalidSegments(segments2));\n\n const differentSegments1 = differenceWith(segments1NoDuplicates, segments2NoDuplicates, equalSegment);\n const differentSegments2 = differenceWith(segments2NoDuplicates, segments1NoDuplicates, equalSegment);\n\n return (!differentSegments1 || !differentSegments1.length) && (!differentSegments2 || !differentSegments2.length);\n};\n\nexport const equalCircle = (c1, c2) => {\n c1 = { ...c1, root: { ...c1.root }, edge: { ...c1.edge } };\n c2 = { ...c2, root: { ...c2.root }, edge: { ...c2.edge } };\n const equalRootAndEdge = isEqual(c2.edge, c1.edge) && isEqual(c2.root, c1.root);\n\n // if both edge and root are the same, it means the shapes are exactly the same\n if (equalRootAndEdge) return true;\n\n const rC1 = Math.sqrt((c1.edge.x - c1.root.x) ** 2 + (c1.edge.y - c1.root.y) ** 2);\n const rC2 = Math.sqrt((c2.edge.x - c2.root.x) ** 2 + (c2.edge.y - c2.root.y) ** 2);\n\n // if both root and radius are the same, it means the shapes are equal\n return isEqual(c2.root, c1.root) && isEqual(rC1, rC2);\n};\n\nexport const equalSine = (sine1, sine2) => {\n const getPoints = ({ root, edge }) => {\n root = { ...root };\n edge = { ...edge };\n\n const { amplitude, freq } = getAmplitudeAndFreq(root, edge);\n // the height of the sine wave\n const tY = Math.abs(root.y - edge.y) * 2;\n // the distance on x axis between edge and root\n const tXRoot = Math.abs(root.x - edge.x);\n // the distance on x axis between 2 edges for sine wave (min & max)\n const tX = tXRoot * 2;\n // the first edge placed east side of root\n let edgeAboveZeroX = edge.x;\n let edgeAboveZeroY = edge.y;\n\n // if edge less then 0, find out the appropriate edge placed east side of zero (0)\n while (edgeAboveZeroX < 0 && tX !== 0) {\n edgeAboveZeroX = edgeAboveZeroX + tX;\n edgeAboveZeroY = edgeAboveZeroY < root.y ? edgeAboveZeroY + tY : edgeAboveZeroY - tY;\n }\n\n // if edge more then 0, find out the appropriate edge placed east side of zero (0)\n while (edgeAboveZeroX - tX > 0 && tX !== 0) {\n edgeAboveZeroX = edgeAboveZeroX - tX;\n edgeAboveZeroY = edgeAboveZeroY < root.y ? edgeAboveZeroY + tY : edgeAboveZeroY - tY;\n }\n\n return {\n amplitude: getSignificantDecimals(amplitude),\n freq: getSignificantDecimals(freq),\n min: getSignificantDecimals(edge.y < root.y ? edge.y : edge.y - tY),\n max: getSignificantDecimals(edge.y < root.y ? edge.y + tY : edge.y),\n edgeAboveZeroX: getSignificantDecimals(edgeAboveZeroX),\n edgeAboveZeroY: getSignificantDecimals(edgeAboveZeroY),\n };\n };\n\n const studentAnswerBpY = getPoints(sine1);\n const correctAnswerBpY = getPoints(sine2);\n\n const {\n amplitude: amplitude1,\n freq: freq1,\n min: min1,\n max: max1,\n edgeAboveZeroX: edgeAboveZeroX1,\n edgeAboveZeroY: edgeAboveZeroY1,\n } = studentAnswerBpY;\n const {\n amplitude: amplitude2,\n freq: freq2,\n min: min2,\n max: max2,\n edgeAboveZeroX: edgeAboveZeroX2,\n edgeAboveZeroY: edgeAboveZeroY2,\n } = correctAnswerBpY;\n\n return (\n Math.abs(amplitude1) === Math.abs(amplitude2) &&\n Math.abs(freq1) === Math.abs(freq2) &&\n min1 === min2 &&\n max1 === max2 &&\n edgeAboveZeroX1 === edgeAboveZeroX2 &&\n edgeAboveZeroY1 === edgeAboveZeroY2\n );\n // rootDiff1 === rootDiff2);\n};\n\nexport const equalParabola = (p1, p2) => {\n const { edge: edgeP1 } = p1;\n const { edge: edgeP2 } = p2;\n let { root: rootP1 } = p1;\n let { root: rootP2 } = p2;\n\n rootP1 = { ...rootP1 };\n rootP2 = { ...rootP2 };\n\n const p1edge = edgeP1 || { ...rootP1 };\n const p2edge = edgeP2 || { ...rootP2 };\n\n const p1mirrorEdge = { x: rootP1.x - (p1edge.x - rootP1.x), y: p1edge.y };\n const p2mirrorEdge = { x: rootP2.x - (p2edge.x - rootP2.x), y: p2edge.y };\n\n if (!edgeP1 || !edgeP2) return false;\n\n const { a: a1, b: b1, c: c1 } = pointsToABC(rootP1, edgeP1, p1mirrorEdge);\n const { a: a2, b: b2, c: c2 } = pointsToABC(rootP2, edgeP2, p2mirrorEdge);\n\n // sometimes numbers have this form: 1.00000000002 because of calculations, we have to round them\n const round = (number) => Math.round(number * 10000) / 10000;\n\n return round(a1) === round(a2) && round(b1) === round(b2) && round(c1) === round(c2);\n};\n\n/*\n * Function to check if given two points for absolute function\n * for correct answer and student answer are equal or not.\n * @param p1 - student answer\n * @param p2 - correct answer\n * */\nexport const equalAbsolute = (p1, p2) => {\n const { edge: edgeP1 } = p1;\n const { edge: edgeP2 } = p2;\n let { root: rootP1 } = p1;\n let { root: rootP2 } = p2;\n\n rootP1 = { ...rootP1 };\n rootP2 = { ...rootP2 };\n\n const p1edge = edgeP1 || { ...rootP1 };\n const p2edge = edgeP2 || { ...rootP2 };\n\n const p1a1 = pointsToAForAbsolute(rootP1, p1edge);\n const p2a2 = pointsToAForAbsolute(rootP2, p2edge);\n\n // if both root and a value are equal\n return isEqual(rootP2, rootP1) && isEqual(p2a2, p1a1);\n};\n\n/*\n * Function to check if given two points for exponential function\n * for correct answer and student answer are equal or not.\n * @param p1 - student answer\n * @param p2 - correct answer\n * */\nexport const equalExponential = (p1, p2) => {\n const { edge: edgeP1 } = p1;\n const { edge: edgeP2 } = p2;\n let { root: rootP1 } = p1;\n let { root: rootP2 } = p2;\n\n rootP1 = { ...rootP1 };\n rootP2 = { ...rootP2 };\n\n const p1edge = edgeP1 || { ...rootP1 };\n const p2edge = edgeP2 || { ...rootP2 };\n\n const { a1, b1 } = pointsToABForExponential(rootP1, p1edge);\n const { a2, b2 } = pointsToABForExponential(rootP2, p2edge);\n\n // if both a and b value are equal\n return isEqual(a2, a1) && isEqual(b2, b1);\n};\n\nexport const equalMarks = {\n circle: (sessAnswer, mark) => equalCircle(sessAnswer, mark),\n line: (sessAnswer, mark) => equalLine(sessAnswer, mark),\n parabola: (sessAnswer, mark) => equalParabola(sessAnswer, mark),\n absolute: (sessAnswer, mark) => equalAbsolute(sessAnswer, mark),\n exponential: (sessAnswer, mark) => equalExponential(sessAnswer, mark),\n point: (sessAnswer, mark) => equalPoint(sessAnswer, mark),\n polygon: (sessAnswer, poly) => equalPolygon(sessAnswer, poly),\n ray: (sessAnswer, mark) => equalRay(sessAnswer, mark),\n segment: (sessAnswer, mark) => equalSegment(sessAnswer, mark),\n sine: (sessAnswer, mark) => equalSine(sessAnswer, mark),\n vector: (sessAnswer, mark) => equalVector(sessAnswer, mark),\n};\n\nconst completePoint = (point) => point && Number.isFinite(point.x) && Number.isFinite(point.y);\nconst completeFromTo = (item) => item && completeMark.point(item.from) && completeMark.point(item.to);\nconst completeRootEdge = (item) => item && completeMark.point(item.edge) && completeMark.point(item.root);\nconst completePoints = (item) =>\n item &&\n item.points &&\n item.points.length &&\n (item.points.filter((point) => completePoint(point)) || []).length === item.points.length;\n\nconst completeMark = {\n point: completePoint,\n line: completeFromTo,\n ray: completeFromTo,\n segment: completeFromTo,\n vector: completeFromTo,\n circle: completeRootEdge,\n parabola: completeRootEdge,\n absolute: completeRootEdge,\n exponential: completeRootEdge,\n sine: completeRootEdge,\n polygon: completePoints,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/graphing-controller",
3
3
  "private": true,
4
- "version": "8.0.0-beta.0",
4
+ "version": "8.0.0-beta.1",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -9,8 +9,8 @@
9
9
  "test": "./node_modules/.bin/jest"
10
10
  },
11
11
  "dependencies": {
12
- "@pie-lib/controller-utils": "0.22.4-next.0",
13
- "@pie-lib/graphing-utils": "1.21.3-next.0",
12
+ "@pie-lib/controller-utils": "1.1.1-next.1",
13
+ "@pie-lib/graphing-utils": "2.1.1-next.1",
14
14
  "debug": "^4.1.1"
15
15
  },
16
16
  "devDependencies": {
package/lib/utils.js CHANGED
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.completeMark = void 0;
3
7
  const completePoint = point => point && Number.isFinite(point.x) && Number.isFinite(point.y);
4
8
  const completeFromTo = item => item && completeMark.point(item.from) && completeMark.point(item.to);
5
9
  const completeRootEdge = item => item && completeMark.point(item.edge) && completeMark.point(item.root);
6
10
  const completePoints = item => item && item.points && item.points.length && (item.points.filter(point => completePoint(point)) || []).length === item.points.length;
7
- const completeMark = {
11
+ const completeMark = exports.completeMark = {
8
12
  point: completePoint,
9
13
  line: completeFromTo,
10
14
  ray: completeFromTo,
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["completePoint","point","Number","isFinite","x","y","completeFromTo","item","completeMark","from","to","completeRootEdge","edge","root","completePoints","points","length","filter","line","ray","segment","vector","circle","parabola","absolute","exponential","sine","polygon"],"sources":["../src/utils.js"],"sourcesContent":["const completePoint = (point) => point && Number.isFinite(point.x) && Number.isFinite(point.y);\nconst completeFromTo = (item) => item && completeMark.point(item.from) && completeMark.point(item.to);\nconst completeRootEdge = (item) => item && completeMark.point(item.edge) && completeMark.point(item.root);\nconst completePoints = (item) =>\n item &&\n item.points &&\n item.points.length &&\n (item.points.filter((point) => completePoint(point)) || []).length === item.points.length;\n\nconst completeMark = {\n point: completePoint,\n line: completeFromTo,\n ray: completeFromTo,\n segment: completeFromTo,\n vector: completeFromTo,\n circle: completeRootEdge,\n parabola: completeRootEdge,\n absolute: completeRootEdge,\n exponential: completeRootEdge,\n sine: completeRootEdge,\n polygon: completePoints,\n};\n"],"mappings":";;AAAA,MAAMA,aAAa,GAAIC,KAAK,IAAKA,KAAK,IAAIC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAACG,CAAC,CAAC,IAAIF,MAAM,CAACC,QAAQ,CAACF,KAAK,CAACI,CAAC,CAAC;AAC9F,MAAMC,cAAc,GAAIC,IAAI,IAAKA,IAAI,IAAIC,YAAY,CAACP,KAAK,CAACM,IAAI,CAACE,IAAI,CAAC,IAAID,YAAY,CAACP,KAAK,CAACM,IAAI,CAACG,EAAE,CAAC;AACrG,MAAMC,gBAAgB,GAAIJ,IAAI,IAAKA,IAAI,IAAIC,YAAY,CAACP,KAAK,CAACM,IAAI,CAACK,IAAI,CAAC,IAAIJ,YAAY,CAACP,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;AACzG,MAAMC,cAAc,GAAIP,IAAI,IAC1BA,IAAI,IACJA,IAAI,CAACQ,MAAM,IACXR,IAAI,CAACQ,MAAM,CAACC,MAAM,IAClB,CAACT,IAAI,CAACQ,MAAM,CAACE,MAAM,CAAEhB,KAAK,IAAKD,aAAa,CAACC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAEe,MAAM,KAAKT,IAAI,CAACQ,MAAM,CAACC,MAAM;AAE3F,MAAMR,YAAY,GAAG;EACnBP,KAAK,EAAED,aAAa;EACpBkB,IAAI,EAAEZ,cAAc;EACpBa,GAAG,EAAEb,cAAc;EACnBc,OAAO,EAAEd,cAAc;EACvBe,MAAM,EAAEf,cAAc;EACtBgB,MAAM,EAAEX,gBAAgB;EACxBY,QAAQ,EAAEZ,gBAAgB;EAC1Ba,QAAQ,EAAEb,gBAAgB;EAC1Bc,WAAW,EAAEd,gBAAgB;EAC7Be,IAAI,EAAEf,gBAAgB;EACtBgB,OAAO,EAAEb;AACX,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["completePoint","point","Number","isFinite","x","y","completeFromTo","item","completeMark","from","to","completeRootEdge","edge","root","completePoints","points","length","filter","exports","line","ray","segment","vector","circle","parabola","absolute","exponential","sine","polygon"],"sources":["../src/utils.js"],"sourcesContent":["const completePoint = (point) => point && Number.isFinite(point.x) && Number.isFinite(point.y);\nconst completeFromTo = (item) => item && completeMark.point(item.from) && completeMark.point(item.to);\nconst completeRootEdge = (item) => item && completeMark.point(item.edge) && completeMark.point(item.root);\nconst completePoints = (item) =>\n item &&\n item.points &&\n item.points.length &&\n (item.points.filter((point) => completePoint(point)) || []).length === item.points.length;\n\nconst completeMark = {\n point: completePoint,\n line: completeFromTo,\n ray: completeFromTo,\n segment: completeFromTo,\n vector: completeFromTo,\n circle: completeRootEdge,\n parabola: completeRootEdge,\n absolute: completeRootEdge,\n exponential: completeRootEdge,\n sine: completeRootEdge,\n polygon: completePoints,\n};\n\nexport { completeMark };\n"],"mappings":";;;;;;AAAA,MAAMA,aAAa,GAAIC,KAAK,IAAKA,KAAK,IAAIC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAACG,CAAC,CAAC,IAAIF,MAAM,CAACC,QAAQ,CAACF,KAAK,CAACI,CAAC,CAAC;AAC9F,MAAMC,cAAc,GAAIC,IAAI,IAAKA,IAAI,IAAIC,YAAY,CAACP,KAAK,CAACM,IAAI,CAACE,IAAI,CAAC,IAAID,YAAY,CAACP,KAAK,CAACM,IAAI,CAACG,EAAE,CAAC;AACrG,MAAMC,gBAAgB,GAAIJ,IAAI,IAAKA,IAAI,IAAIC,YAAY,CAACP,KAAK,CAACM,IAAI,CAACK,IAAI,CAAC,IAAIJ,YAAY,CAACP,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;AACzG,MAAMC,cAAc,GAAIP,IAAI,IAC1BA,IAAI,IACJA,IAAI,CAACQ,MAAM,IACXR,IAAI,CAACQ,MAAM,CAACC,MAAM,IAClB,CAACT,IAAI,CAACQ,MAAM,CAACE,MAAM,CAAEhB,KAAK,IAAKD,aAAa,CAACC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAEe,MAAM,KAAKT,IAAI,CAACQ,MAAM,CAACC,MAAM;AAE3F,MAAMR,YAAY,GAAAU,OAAA,CAAAV,YAAA,GAAG;EACnBP,KAAK,EAAED,aAAa;EACpBmB,IAAI,EAAEb,cAAc;EACpBc,GAAG,EAAEd,cAAc;EACnBe,OAAO,EAAEf,cAAc;EACvBgB,MAAM,EAAEhB,cAAc;EACtBiB,MAAM,EAAEZ,gBAAgB;EACxBa,QAAQ,EAAEb,gBAAgB;EAC1Bc,QAAQ,EAAEd,gBAAgB;EAC1Be,WAAW,EAAEf,gBAAgB;EAC7BgB,IAAI,EAAEhB,gBAAgB;EACtBiB,OAAO,EAAEd;AACX,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "9.0.0-beta.0",
7
+ "version": "9.0.0-next.0+67da381",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "postpublish": "../../scripts/postpublish"
@@ -15,18 +15,19 @@
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/correct-answer-toggle": "2.25.4-next.0",
19
- "@pie-lib/graphing": "2.34.4-next.0",
20
- "@pie-lib/math-rendering": "3.22.3-next.0",
21
- "@pie-lib/render-ui": "4.35.4-next.0",
18
+ "@pie-lib/correct-answer-toggle": "3.1.1-next.1",
19
+ "@pie-lib/graphing": "3.1.1-next.1",
20
+ "@pie-lib/math-rendering": "4.1.1-next.1",
21
+ "@pie-lib/render-ui": "5.1.1-next.1",
22
22
  "classnames": "^2.2.5",
23
+ "core-js": "^3.40.0",
23
24
  "debug": "^4.1.1",
24
- "react": "18.2.0",
25
- "react-dom": "18.2.0"
25
+ "react": "18.3.1",
26
+ "react-dom": "18.3.1"
26
27
  },
27
28
  "author": "",
28
29
  "license": "ISC",
29
- "gitHead": "152071b68dd68e003f320561a30f681987f50b65",
30
+ "gitHead": "67da3818d2af966110c6e85f6e8e238b79515eb2",
30
31
  "main": "lib/index.js",
31
32
  "module": "src/index.js"
32
33
  }