@magmamath/students-features 1.2.1-rc.44 → 1.2.1-rc.46

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 (54) hide show
  1. package/dist/commonjs/features/pmProgress/components/header/NextUp.js +127 -0
  2. package/dist/commonjs/features/pmProgress/components/header/NextUp.js.map +1 -0
  3. package/dist/commonjs/features/pmProgress/components/header/PmProgressHeader.js +6 -103
  4. package/dist/commonjs/features/pmProgress/components/header/PmProgressHeader.js.map +1 -1
  5. package/dist/commonjs/features/pmProgress/components/list/ListItem.js +4 -8
  6. package/dist/commonjs/features/pmProgress/components/list/ListItem.js.map +1 -1
  7. package/dist/commonjs/features/pmProgress/model/PmSolvingFlowModel.js +1 -2
  8. package/dist/commonjs/features/pmProgress/model/PmSolvingFlowModel.js.map +1 -1
  9. package/dist/commonjs/features/pmProgress/model/PmTreeModel.js +6 -3
  10. package/dist/commonjs/features/pmProgress/model/PmTreeModel.js.map +1 -1
  11. package/dist/commonjs/features/pmProgress/shared/pmProgress.helpers.js +71 -68
  12. package/dist/commonjs/features/pmProgress/shared/pmProgress.helpers.js.map +1 -1
  13. package/dist/commonjs/features/pmProgress/shared/pmProgress.types.js +1 -1
  14. package/dist/commonjs/features/pmProgress/shared/pmProgress.types.js.map +1 -1
  15. package/dist/module/features/pmProgress/components/header/NextUp.js +121 -0
  16. package/dist/module/features/pmProgress/components/header/NextUp.js.map +1 -0
  17. package/dist/module/features/pmProgress/components/header/PmProgressHeader.js +8 -105
  18. package/dist/module/features/pmProgress/components/header/PmProgressHeader.js.map +1 -1
  19. package/dist/module/features/pmProgress/components/list/ListItem.js +4 -8
  20. package/dist/module/features/pmProgress/components/list/ListItem.js.map +1 -1
  21. package/dist/module/features/pmProgress/model/PmSolvingFlowModel.js +2 -3
  22. package/dist/module/features/pmProgress/model/PmSolvingFlowModel.js.map +1 -1
  23. package/dist/module/features/pmProgress/model/PmTreeModel.js +6 -3
  24. package/dist/module/features/pmProgress/model/PmTreeModel.js.map +1 -1
  25. package/dist/module/features/pmProgress/shared/pmProgress.helpers.js +56 -53
  26. package/dist/module/features/pmProgress/shared/pmProgress.helpers.js.map +1 -1
  27. package/dist/module/features/pmProgress/shared/pmProgress.types.js +0 -2
  28. package/dist/module/features/pmProgress/shared/pmProgress.types.js.map +1 -1
  29. package/dist/typescript/commonjs/features/pmProgress/components/header/NextUp.d.ts +3 -0
  30. package/dist/typescript/commonjs/features/pmProgress/components/header/NextUp.d.ts.map +1 -0
  31. package/dist/typescript/commonjs/features/pmProgress/components/header/PmProgressHeader.d.ts.map +1 -1
  32. package/dist/typescript/commonjs/features/pmProgress/components/list/ListItem.d.ts.map +1 -1
  33. package/dist/typescript/commonjs/features/pmProgress/model/PmSolvingFlowModel.d.ts.map +1 -1
  34. package/dist/typescript/commonjs/features/pmProgress/model/PmTreeModel.d.ts.map +1 -1
  35. package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.helpers.d.ts +21 -14
  36. package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.helpers.d.ts.map +1 -1
  37. package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.types.d.ts.map +1 -1
  38. package/dist/typescript/module/features/pmProgress/components/header/NextUp.d.ts +3 -0
  39. package/dist/typescript/module/features/pmProgress/components/header/NextUp.d.ts.map +1 -0
  40. package/dist/typescript/module/features/pmProgress/components/header/PmProgressHeader.d.ts.map +1 -1
  41. package/dist/typescript/module/features/pmProgress/components/list/ListItem.d.ts.map +1 -1
  42. package/dist/typescript/module/features/pmProgress/model/PmSolvingFlowModel.d.ts.map +1 -1
  43. package/dist/typescript/module/features/pmProgress/model/PmTreeModel.d.ts.map +1 -1
  44. package/dist/typescript/module/features/pmProgress/shared/pmProgress.helpers.d.ts +21 -14
  45. package/dist/typescript/module/features/pmProgress/shared/pmProgress.helpers.d.ts.map +1 -1
  46. package/dist/typescript/module/features/pmProgress/shared/pmProgress.types.d.ts.map +1 -1
  47. package/package.json +1 -1
  48. package/src/features/pmProgress/components/header/NextUp.tsx +109 -0
  49. package/src/features/pmProgress/components/header/PmProgressHeader.tsx +9 -98
  50. package/src/features/pmProgress/components/list/ListItem.tsx +4 -8
  51. package/src/features/pmProgress/model/PmSolvingFlowModel.ts +5 -2
  52. package/src/features/pmProgress/model/PmTreeModel.ts +8 -3
  53. package/src/features/pmProgress/shared/pmProgress.helpers.ts +71 -47
  54. package/src/features/pmProgress/shared/pmProgress.types.ts +0 -1
@@ -3,25 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createChartConfig = void 0;
7
- exports.formatGradeLabel = formatGradeLabel;
8
- exports.formatGradeName = formatGradeName;
9
- exports.formatTime = formatTime;
10
- exports.getAllUncompletedSkills = getAllUncompletedSkills;
11
- exports.getDomainStructure = getDomainStructure;
12
- exports.getInitialPmGrade = getInitialPmGrade;
13
- exports.getTreeGrades = getTreeGrades;
14
- exports.getUncompletedSkillsFromDomain = getUncompletedSkillsFromDomain;
15
- exports.getUncompletedSkillsFromStandard = getUncompletedSkillsFromStandard;
16
- exports.isTreeDataReady = exports.isFluencyDomain = void 0;
17
- exports.shiftToBeginningOfArray = shiftToBeginningOfArray;
18
- exports.startGradesFrom = startGradesFrom;
19
- exports.withoutDuplicates = withoutDuplicates;
6
+ exports.withoutDuplicates = exports.startGradesFrom = exports.shiftToBeginningOfArray = exports.isTreeDataReady = exports.isFluencyDomain = exports.getUncompletedSkillsFromStandard = exports.getUncompletedSkillsFromDomain = exports.getTreeGrades = exports.getInitialPmGrade = exports.getDomainStructure = exports.getAllUncompletedSkills = exports.getAllSkillsFromStandard = exports.formatTime = exports.formatGradeName = exports.formatGradeLabel = exports.createChartConfig = void 0;
20
7
  var _reactNativeUi = require("@magmamath/react-native-ui");
21
8
  var _pmProgressConstants = require("./pmProgress.constants.js");
22
9
  var _chartHelpers = require("../components/chart/chart.helpers.js");
23
10
  var _helpers = require("../../../shared/translation/helpers.js");
24
- function groupStandardsByDomain(standardStats, treeMapping) {
11
+ const groupStandardsByDomain = (standardStats, treeMapping) => {
25
12
  const grouped = new Map();
26
13
  for (const [standardId, stat] of Object.entries(standardStats)) {
27
14
  const {
@@ -49,12 +36,12 @@ function groupStandardsByDomain(standardStats, treeMapping) {
49
36
  });
50
37
  }
51
38
  return grouped;
52
- }
53
- function averageScorePercentage(standards) {
39
+ };
40
+ const averageScorePercentage = standards => {
54
41
  const sum = standards.reduce((acc, s) => acc + s.scorePercentage, 0);
55
42
  return Math.round(sum / standards.length * 10) / 10;
56
- }
57
- function resolveDomainColors(nonFluencyIndex) {
43
+ };
44
+ const resolveDomainColors = nonFluencyIndex => {
58
45
  if (nonFluencyIndex < 0) {
59
46
  return {
60
47
  color: _reactNativeUi.COLORS.PRIMARY_ORANGE,
@@ -65,8 +52,8 @@ function resolveDomainColors(nonFluencyIndex) {
65
52
  color: _pmProgressConstants.DOMAIN_COLORS[nonFluencyIndex] ?? _pmProgressConstants.DOMAIN_COLORS[_pmProgressConstants.DOMAIN_COLORS.length - 1],
66
53
  borderColor: _pmProgressConstants.DOMAIN_BORDER_COLORS[nonFluencyIndex] ?? _pmProgressConstants.DOMAIN_BORDER_COLORS[_pmProgressConstants.DOMAIN_BORDER_COLORS.length - 1]
67
54
  };
68
- }
69
- function getDomainStructure(data, treeMapping) {
55
+ };
56
+ const getDomainStructure = (data, treeMapping) => {
70
57
  const grouped = groupStandardsByDomain(data.standardStats, treeMapping);
71
58
  const entries = Array.from(grouped.entries());
72
59
  const nonFluencyDomainIds = entries.map(([id]) => id).filter(id => !isFluencyDomain(treeMapping[id].nameTranslations));
@@ -82,7 +69,8 @@ function getDomainStructure(data, treeMapping) {
82
69
  scorePercentage: averageScorePercentage(standards)
83
70
  };
84
71
  });
85
- }
72
+ };
73
+ exports.getDomainStructure = getDomainStructure;
86
74
  /**
87
75
  * Resolves which grade a student should practice on.
88
76
  *
@@ -99,13 +87,12 @@ function getDomainStructure(data, treeMapping) {
99
87
  * locked=[0,1,2,3], enrolled=[3,9], grade=-1 → 9 (lowest unlocked enrolled)
100
88
  * locked=[1,2,3], enrolled=[2,5], grade=2 → 4 (grade locked, closest below=none, above=4)
101
89
  */
102
-
103
- function getInitialPmGrade({
90
+ const getInitialPmGrade = ({
104
91
  treeGrades,
105
92
  lockedGrades,
106
93
  enrolledGrades,
107
94
  userGrade
108
- }) {
95
+ }) => {
109
96
  const locked = new Set(lockedGrades);
110
97
  const unlocked = treeGrades.filter(g => !locked.has(g)).sort((a, b) => a - b);
111
98
  if (unlocked.length === 0) {
@@ -120,70 +107,81 @@ function getInitialPmGrade({
120
107
  const nearestBelow = [...unlocked].reverse().find(grade => grade < userGrade);
121
108
  const nearestAbove = unlocked.find(grade => grade > userGrade);
122
109
  return nearestBelow ?? nearestAbove ?? unlocked[0] ?? 0;
123
- }
124
- function formatTime(ms) {
110
+ };
111
+ exports.getInitialPmGrade = getInitialPmGrade;
112
+ const formatTime = ms => {
125
113
  const totalMinutes = Math.floor(ms / 60_000);
126
114
  if (totalMinutes < 60) return `${totalMinutes}m`;
127
115
  const hours = Math.round(totalMinutes / 60);
128
116
  return `${hours}h`;
129
- }
117
+ };
118
+ exports.formatTime = formatTime;
130
119
  const isTreeDataReady = source => source.tree !== null && source.stats !== null && source.user !== null && source.grade !== null;
131
120
  exports.isTreeDataReady = isTreeDataReady;
132
- const MARGIN = 5;
133
- const createChartConfig = size => ({
134
- size,
135
- outerRadius: size / 2 - MARGIN,
136
- innerRadius: _chartHelpers.dynamicInnerRadius,
137
- gapBetweenSlices: 8,
138
- cornerRadius: _chartHelpers.dynamicCornerRadius,
139
- pressOffset: 4,
140
- borderWidth: 4,
141
- colors: {
142
- background: 'white',
143
- highlightedBackground: _reactNativeUi.COLORS.NEUTRAL_6
144
- },
145
- outerArc: {
146
- color: '#FFFFFF40',
147
- strokeWidth: 11.75,
148
- dashWidth: 22
149
- }
150
- });
121
+ const createChartConfig = size => {
122
+ const OUTER_MARGIN = 5;
123
+ return {
124
+ size,
125
+ outerRadius: size / 2 - OUTER_MARGIN,
126
+ innerRadius: _chartHelpers.dynamicInnerRadius,
127
+ cornerRadius: _chartHelpers.dynamicCornerRadius,
128
+ gapBetweenSlices: 8,
129
+ pressOffset: 4,
130
+ borderWidth: 4,
131
+ colors: {
132
+ background: _reactNativeUi.COLORS.NEUTRAL_1,
133
+ highlightedBackground: _reactNativeUi.COLORS.NEUTRAL_6
134
+ },
135
+ outerArc: {
136
+ color: '#FFFFFF40',
137
+ strokeWidth: 11.75,
138
+ dashWidth: 22
139
+ }
140
+ };
141
+ };
142
+
143
+ /**
144
+ * Returns all skills from a standard, sorted by difficulty.
145
+ * Used when the standard is fully completed to allow revisiting.
146
+ */
147
+ exports.createChartConfig = createChartConfig;
148
+ const getAllSkillsFromStandard = (standard, skillsMapping) => standard.skillIds.map(id => skillsMapping[id]).filter(Boolean).sort((a, b) => skillsMapping[a._id]?.difficulty - skillsMapping[b._id]?.difficulty);
151
149
 
152
150
  /**
153
151
  * Returns uncompleted skills from a single standard.
154
152
  * Failed skills come first, then unattempted.
155
153
  */
156
- exports.createChartConfig = createChartConfig;
157
- function getUncompletedSkillsFromStandard(standard, skillsMapping) {
154
+ exports.getAllSkillsFromStandard = getAllSkillsFromStandard;
155
+ const getUncompletedSkillsFromStandard = (standard, skillsMapping) => {
158
156
  if (!standard.skillsToPractice) return [];
159
157
  return [...standard.skillsToPractice.failed, ...standard.skillsToPractice.unattempted].map(({
160
158
  skillId
161
159
  }) => skillsMapping[skillId]).filter(Boolean).sort((a, b) => skillsMapping[a._id]?.difficulty - skillsMapping[b._id]?.difficulty);
162
- }
160
+ };
163
161
 
164
162
  /**
165
163
  * Returns uncompleted skills from a domain, scanning standards from the beginning.
166
164
  * Optionally excludes a standard (used when student selected a specific one).
167
165
  */
168
- function getUncompletedSkillsFromDomain(domain, skillsMapping, excludeStandardId) {
169
- return domain.standards.filter(s => !s.isCompleted && s.standardId !== excludeStandardId).flatMap(s => getUncompletedSkillsFromStandard(s, skillsMapping));
170
- }
166
+ exports.getUncompletedSkillsFromStandard = getUncompletedSkillsFromStandard;
167
+ const getUncompletedSkillsFromDomain = (domain, skillsMapping, excludeStandardId) => domain.standards.filter(s => !s.isCompleted && s.standardId !== excludeStandardId).flatMap(s => getUncompletedSkillsFromStandard(s, skillsMapping));
171
168
 
172
169
  /**
173
170
  * Returns all uncompleted skills across all domains in list order.
174
171
  * Used as a fallback when recommendation arrays are empty.
175
172
  */
176
- function getAllUncompletedSkills(domains, skillsMapping) {
177
- return domains.filter(d => d.standards.some(s => !s.isCompleted)).flatMap(d => getUncompletedSkillsFromDomain(d, skillsMapping));
178
- }
173
+ exports.getUncompletedSkillsFromDomain = getUncompletedSkillsFromDomain;
174
+ const getAllUncompletedSkills = (domains, skillsMapping) => domains.filter(d => d.standards.some(s => !s.isCompleted)).flatMap(d => getUncompletedSkillsFromDomain(d, skillsMapping));
179
175
 
180
176
  /** Moves item with the given id to the front: [0,1,2,3,4] with id of 3rd → [3,0,1,2,4] */
181
- function shiftToBeginningOfArray(id, items) {
177
+ exports.getAllUncompletedSkills = getAllUncompletedSkills;
178
+ const shiftToBeginningOfArray = (id, items) => {
182
179
  const index = items.findIndex(item => item._id === id);
183
180
  if (index <= 0) return items;
184
181
  return [items[index], ...items.slice(0, index), ...items.slice(index + 1)];
185
- }
186
- function withoutDuplicates(skills) {
182
+ };
183
+ exports.shiftToBeginningOfArray = shiftToBeginningOfArray;
184
+ const withoutDuplicates = skills => {
187
185
  const seen = new Set();
188
186
  return skills.filter(skill => {
189
187
  if (!skill) return false;
@@ -191,33 +189,37 @@ function withoutDuplicates(skills) {
191
189
  seen.add(skill._id);
192
190
  return true;
193
191
  });
194
- }
192
+ };
195
193
 
196
194
  // Reorders grades starting from the given grade, wrapping around. [1,2,3] with start=2 → [2,3,1]
197
- function startGradesFrom(grades, startGrade) {
195
+ exports.withoutDuplicates = withoutDuplicates;
196
+ const startGradesFrom = (grades, startGrade) => {
198
197
  const index = grades.findIndex(({
199
198
  value
200
199
  }) => value === startGrade);
201
200
  if (index <= 0) return grades;
202
201
  return [...grades.slice(index), ...grades.slice(0, index)];
203
- }
202
+ };
203
+ exports.startGradesFrom = startGradesFrom;
204
204
  const isFluencyDomain = title => {
205
205
  return title.toLowerCase() === _pmProgressConstants.CustomDomain.FLUENCY.toLowerCase();
206
206
  };
207
207
  exports.isFluencyDomain = isFluencyDomain;
208
- function formatGradeName(grade) {
208
+ const formatGradeName = grade => {
209
209
  if (grade === -1) return (0, _helpers.getText)('pmProgress.gradeOther');
210
210
  if (grade === 0) return `${(0, _helpers.getText)('pmProgress.grade')} ${(0, _helpers.getText)('pmProgress.gradeK')}`;
211
211
  return `${(0, _helpers.getText)('pmProgress.grade')} ${grade}`;
212
- }
213
- function formatGradeLabel(grade, customLabelsMap) {
212
+ };
213
+ exports.formatGradeName = formatGradeName;
214
+ const formatGradeLabel = (grade, customLabelsMap) => {
214
215
  if (!customLabelsMap) return formatGradeName(grade);
215
216
  const label = customLabelsMap[String(grade)];
216
217
  if (!label) return formatGradeName(grade);
217
218
  if (label.noPrefix) return label.name;
218
219
  return `${(0, _helpers.getText)('pmProgress.grade')} ${label.name}`;
219
- }
220
- function getTreeGrades(tree, user) {
220
+ };
221
+ exports.formatGradeLabel = formatGradeLabel;
222
+ const getTreeGrades = (tree, user) => {
221
223
  const lockedGrades = new Set(user.setting.practiceModeLockedGrades);
222
224
  const gradeNodes = Object.values(tree.treeMapping).filter(node => node?.type === 'grade' && node.attributes.grade !== null);
223
225
  const uniqueSortedGrades = [...new Set(gradeNodes.map(node => node.attributes.grade))].sort((a, b) => a - b);
@@ -226,5 +228,6 @@ function getTreeGrades(tree, user) {
226
228
  value: grade,
227
229
  isLocked: lockedGrades.has(grade)
228
230
  }));
229
- }
231
+ };
232
+ exports.getTreeGrades = getTreeGrades;
230
233
  //# sourceMappingURL=pmProgress.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeUi","require","_pmProgressConstants","_chartHelpers","_helpers","groupStandardsByDomain","standardStats","treeMapping","grouped","Map","standardId","stat","Object","entries","domainId","skillIds","skillsCount","scorePercentage","skillsToPractice","has","set","completed","failed","length","unattempted","left","get","push","title","shortDescriptionTranslations","nameTranslations","subtitle","originalId","isCompleted","skillsLeft","averageScorePercentage","standards","sum","reduce","acc","s","Math","round","resolveDomainColors","nonFluencyIndex","color","COLORS","PRIMARY_ORANGE","borderColor","ORANGE_6","DOMAIN_COLORS","DOMAIN_BORDER_COLORS","getDomainStructure","data","Array","from","nonFluencyDomainIds","map","id","filter","isFluencyDomain","indexOf","backgroundColor","NEUTRAL_4","getInitialPmGrade","treeGrades","lockedGrades","enrolledGrades","userGrade","locked","Set","unlocked","g","sort","a","b","isUserGradeMissing","undefined","unlockedEnrolled","includes","min","nearestBelow","reverse","find","grade","nearestAbove","formatTime","ms","totalMinutes","floor","hours","isTreeDataReady","source","tree","stats","user","exports","MARGIN","createChartConfig","size","outerRadius","innerRadius","dynamicInnerRadius","gapBetweenSlices","cornerRadius","dynamicCornerRadius","pressOffset","borderWidth","colors","background","highlightedBackground","NEUTRAL_6","outerArc","strokeWidth","dashWidth","getUncompletedSkillsFromStandard","standard","skillsMapping","skillId","Boolean","_id","difficulty","getUncompletedSkillsFromDomain","domain","excludeStandardId","flatMap","getAllUncompletedSkills","domains","d","some","shiftToBeginningOfArray","items","index","findIndex","item","slice","withoutDuplicates","skills","seen","skill","add","startGradesFrom","grades","startGrade","value","toLowerCase","CustomDomain","FLUENCY","formatGradeName","getText","formatGradeLabel","customLabelsMap","label","String","noPrefix","name","getTreeGrades","setting","practiceModeLockedGrades","gradeNodes","values","node","type","attributes","uniqueSortedGrades","isLocked"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/pmProgress.helpers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeUi","require","_pmProgressConstants","_chartHelpers","_helpers","groupStandardsByDomain","standardStats","treeMapping","grouped","Map","standardId","stat","Object","entries","domainId","skillIds","skillsCount","scorePercentage","skillsToPractice","has","set","completed","failed","length","unattempted","left","get","push","title","shortDescriptionTranslations","nameTranslations","subtitle","originalId","isCompleted","skillsLeft","averageScorePercentage","standards","sum","reduce","acc","s","Math","round","resolveDomainColors","nonFluencyIndex","color","COLORS","PRIMARY_ORANGE","borderColor","ORANGE_6","DOMAIN_COLORS","DOMAIN_BORDER_COLORS","getDomainStructure","data","Array","from","nonFluencyDomainIds","map","id","filter","isFluencyDomain","indexOf","backgroundColor","NEUTRAL_4","exports","getInitialPmGrade","treeGrades","lockedGrades","enrolledGrades","userGrade","locked","Set","unlocked","g","sort","a","b","isUserGradeMissing","undefined","unlockedEnrolled","includes","min","nearestBelow","reverse","find","grade","nearestAbove","formatTime","ms","totalMinutes","floor","hours","isTreeDataReady","source","tree","stats","user","createChartConfig","size","OUTER_MARGIN","outerRadius","innerRadius","dynamicInnerRadius","cornerRadius","dynamicCornerRadius","gapBetweenSlices","pressOffset","borderWidth","colors","background","NEUTRAL_1","highlightedBackground","NEUTRAL_6","outerArc","strokeWidth","dashWidth","getAllSkillsFromStandard","standard","skillsMapping","Boolean","_id","difficulty","getUncompletedSkillsFromStandard","skillId","getUncompletedSkillsFromDomain","domain","excludeStandardId","flatMap","getAllUncompletedSkills","domains","d","some","shiftToBeginningOfArray","items","index","findIndex","item","slice","withoutDuplicates","skills","seen","skill","add","startGradesFrom","grades","startGrade","value","toLowerCase","CustomDomain","FLUENCY","formatGradeName","getText","formatGradeLabel","customLabelsMap","label","String","noPrefix","name","getTreeGrades","setting","practiceModeLockedGrades","gradeNodes","values","node","type","attributes","uniqueSortedGrades","isLocked"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/pmProgress.helpers.ts"],"mappings":"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","ignoreList":[]}
@@ -8,5 +8,5 @@ let RecommendationType = exports.RecommendationType = /*#__PURE__*/function (Rec
8
8
  RecommendationType["MAGMA"] = "magma";
9
9
  RecommendationType["TEACHER"] = "teacher";
10
10
  return RecommendationType;
11
- }({}); // TODO: to /shared/user.types.ts and create full type? any sense to duplicate it??
11
+ }({});
12
12
  //# sourceMappingURL=pmProgress.types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RecommendationType","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/pmProgress.types.ts"],"mappings":";;;;;;IAqEYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OA8E9B","ignoreList":[]}
1
+ {"version":3,"names":["RecommendationType","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/pmProgress.types.ts"],"mappings":";;;;;;IAqEYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { StyleSheet, View } from 'react-native';
5
+ import { COLORS, HeadingVariants, SPACING, Typography } from '@magmamath/react-native-ui';
6
+ import { SketchArrowRight } from "../../../../shared/icons/SketchArrowRight.js";
7
+ import { SliceDiamondIcon } from "../../../../shared/icons/SliceDiamondIcon.js";
8
+ import { useText } from "../../../../shared/translation/index.js";
9
+ import { useUnit, useStoreMap } from 'effector-react';
10
+ import { usePmProgress } from "../../context/PmProgressContext.js";
11
+ import { isFluencyDomain } from "../../shared/pmProgress.helpers.js";
12
+ import { OpeningLoaderId, SolvingFlow } from "../../shared/pmProgress.constants.js";
13
+ import { StartButton } from "./StartButton.js";
14
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
+ export const NextUp = () => {
16
+ const t = useText();
17
+ const {
18
+ model,
19
+ onStartPress
20
+ } = usePmProgress();
21
+ const status = useUnit(model.tree.$status);
22
+ const loaderOpeningId = useUnit(model.solving.$loaderOpeningId);
23
+ const nextUp = useStoreMap(model.tree.$domains, domains => domains.find(domain => {
24
+ const isFluency = isFluencyDomain(domain.title);
25
+ const isDomainCompleted = domain.standards.every(standard => standard.isCompleted);
26
+ return !isFluency && !isDomainCompleted;
27
+ }));
28
+ const isLoading = loaderOpeningId === OpeningLoaderId.START_BUTTON;
29
+ const isSkillOpeningActionPending = !!(loaderOpeningId !== null || status);
30
+ return /*#__PURE__*/_jsxs(View, {
31
+ style: styles.container,
32
+ children: [nextUp && !status && /*#__PURE__*/_jsxs(_Fragment, {
33
+ children: [/*#__PURE__*/_jsxs(View, {
34
+ style: styles.content,
35
+ children: [/*#__PURE__*/_jsx(View, {
36
+ style: styles.subtitle,
37
+ children: /*#__PURE__*/_jsx(Typography, {
38
+ variant: HeadingVariants.H2,
39
+ style: styles.dark,
40
+ children: t('pmProgress.nextUp')
41
+ })
42
+ }), /*#__PURE__*/_jsxs(View, {
43
+ style: [styles.row, styles.tilted],
44
+ children: [/*#__PURE__*/_jsx(Typography, {
45
+ variant: HeadingVariants.H7,
46
+ style: styles.muted,
47
+ children: nextUp?.title
48
+ }), /*#__PURE__*/_jsx(View, {
49
+ style: styles.diamond,
50
+ children: /*#__PURE__*/_jsx(SliceDiamondIcon, {
51
+ color: nextUp?.color
52
+ })
53
+ })]
54
+ })]
55
+ }), /*#__PURE__*/_jsx(View, {
56
+ style: styles.arrow,
57
+ children: /*#__PURE__*/_jsx(SketchArrowRight, {})
58
+ })]
59
+ }), /*#__PURE__*/_jsx(StartButton, {
60
+ onPress: async () => {
61
+ try {
62
+ model.solving.setLoaderOpeningId(OpeningLoaderId.START_BUTTON);
63
+ const skill = await model.solving.start({
64
+ type: SolvingFlow.MAGMA
65
+ });
66
+ await onStartPress?.(skill);
67
+ } finally {
68
+ model.solving.setLoaderOpeningId(null);
69
+ }
70
+ },
71
+ disabled: isSkillOpeningActionPending,
72
+ isLoading: isLoading,
73
+ isActive: isLoading,
74
+ withPulsation: !!nextUp && !isLoading && !isSkillOpeningActionPending && !status
75
+ })]
76
+ });
77
+ };
78
+ const styles = StyleSheet.create({
79
+ container: {
80
+ flexDirection: 'row',
81
+ alignItems: 'center',
82
+ gap: SPACING[400]
83
+ },
84
+ content: {
85
+ alignItems: 'center',
86
+ gap: SPACING[100]
87
+ },
88
+ dark: {
89
+ color: COLORS.NEUTRAL_9
90
+ },
91
+ subtitle: {
92
+ transform: [{
93
+ rotate: '355deg'
94
+ }],
95
+ marginRight: SPACING[300]
96
+ },
97
+ tilted: {
98
+ transform: [{
99
+ rotate: '355deg'
100
+ }]
101
+ },
102
+ row: {
103
+ flexDirection: 'row',
104
+ gap: SPACING[100]
105
+ },
106
+ muted: {
107
+ color: COLORS.NEUTRAL_8
108
+ },
109
+ diamond: {
110
+ bottom: 10,
111
+ transform: [{
112
+ rotate: '5deg'
113
+ }]
114
+ },
115
+ arrow: {
116
+ transform: [{
117
+ rotate: '358deg'
118
+ }]
119
+ }
120
+ });
121
+ //# sourceMappingURL=NextUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","View","COLORS","HeadingVariants","SPACING","Typography","SketchArrowRight","SliceDiamondIcon","useText","useUnit","useStoreMap","usePmProgress","isFluencyDomain","OpeningLoaderId","SolvingFlow","StartButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","NextUp","t","model","onStartPress","status","tree","$status","loaderOpeningId","solving","$loaderOpeningId","nextUp","$domains","domains","find","domain","isFluency","title","isDomainCompleted","standards","every","standard","isCompleted","isLoading","START_BUTTON","isSkillOpeningActionPending","style","styles","container","children","content","subtitle","variant","H2","dark","row","tilted","H7","muted","diamond","color","arrow","onPress","setLoaderOpeningId","skill","start","type","MAGMA","disabled","isActive","withPulsation","create","flexDirection","alignItems","gap","NEUTRAL_9","transform","rotate","marginRight","NEUTRAL_8","bottom"],"sourceRoot":"../../../../../../src","sources":["features/pmProgress/components/header/NextUp.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,16 +4,13 @@ import React, { useState } from 'react';
4
4
  import { Dimensions, Platform, StyleSheet, useWindowDimensions, View } from 'react-native';
5
5
  import { Button, ButtonVariant, CaretDownIcon, CaretUpIcon, COLORS, Dropdown, HeadingVariants, Menu, SPACING, Typography } from '@magmamath/react-native-ui';
6
6
  import { isWeb } from "../../../../shared/common.constants.js";
7
- import { SketchArrowRight } from "../../../../shared/icons/SketchArrowRight.js";
8
- import { SliceDiamondIcon } from "../../../../shared/icons/SliceDiamondIcon.js";
9
7
  import { useText } from "../../../../shared/translation/index.js";
10
8
  import { useUnit, useStoreMap } from 'effector-react';
11
9
  import { usePmProgress } from "../../context/PmProgressContext.js";
12
- import { formatGradeLabel, isFluencyDomain } from "../../shared/pmProgress.helpers.js";
13
- import { OpeningLoaderId, SolvingFlow } from "../../shared/pmProgress.constants.js";
14
- import { StartButton } from "./StartButton.js";
10
+ import { formatGradeLabel } from "../../shared/pmProgress.helpers.js";
15
11
  import { MenuIcon } from "../../../../shared/icons/MenuIcon.js";
16
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
12
+ import { NextUp } from "./NextUp.js";
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
14
  const menuItemProps = {
18
15
  style: {
19
16
  text: {
@@ -22,17 +19,19 @@ const menuItemProps = {
22
19
  }
23
20
  };
24
21
  const BURGER_MENU_BREAKPOINT = 1024;
22
+ const SMALL_SCREEN_THRESHOLD = 568;
23
+ const SMALL_SCREEN_MENU_MAX_HEIGHT = 300;
24
+ const WINDOW_HEIGHT = Dimensions.get('window').height;
25
+ const MENU_MAX_HEIGHT = WINDOW_HEIGHT <= SMALL_SCREEN_THRESHOLD ? SMALL_SCREEN_MENU_MAX_HEIGHT : WINDOW_HEIGHT * 0.8;
25
26
  export const PmProgressHeader = () => {
26
27
  const t = useText();
27
28
  const {
28
29
  model,
29
- onStartPress,
30
30
  customGradeLabels,
31
31
  readOnly,
32
32
  onMenuPress
33
33
  } = usePmProgress();
34
34
  const [isDropdownOpen, setIsDropdownOpen] = useState(false);
35
- const status = useUnit(model.tree.$status);
36
35
  const dimensions = useWindowDimensions();
37
36
  const withMenuButton = isWeb && dimensions.width <= BURGER_MENU_BREAKPOINT;
38
37
  const grade = useUnit(model.tree.$grade);
@@ -46,14 +45,6 @@ export const PmProgressHeader = () => {
46
45
  ...menuItemProps
47
46
  }))
48
47
  });
49
- const loaderOpeningId = useUnit(model.solving.$loaderOpeningId);
50
- const nextUp = useStoreMap(model.tree.$domains, domains => domains.find(domain => {
51
- const isFluency = isFluencyDomain(domain.title);
52
- const isDomainCompleted = domain.standards.every(standard => standard.isCompleted);
53
- return !isFluency && !isDomainCompleted;
54
- }));
55
- const isLoading = loaderOpeningId === OpeningLoaderId.START_BUTTON;
56
- const isSkillOpeningActionPending = !!(loaderOpeningId !== null || status);
57
48
  return /*#__PURE__*/_jsxs(View, {
58
49
  style: styles.container,
59
50
  children: [/*#__PURE__*/_jsxs(View, {
@@ -99,59 +90,9 @@ export const PmProgressHeader = () => {
99
90
  }
100
91
  })
101
92
  })]
102
- }), !readOnly && /*#__PURE__*/_jsxs(View, {
103
- style: styles.nextUp,
104
- children: [nextUp && !status && /*#__PURE__*/_jsxs(_Fragment, {
105
- children: [/*#__PURE__*/_jsxs(View, {
106
- style: styles.content,
107
- children: [/*#__PURE__*/_jsx(View, {
108
- style: styles.subtitle,
109
- children: /*#__PURE__*/_jsx(Typography, {
110
- variant: HeadingVariants.H2,
111
- style: styles.dark,
112
- children: t('pmProgress.nextUp')
113
- })
114
- }), /*#__PURE__*/_jsxs(View, {
115
- style: [styles.row, styles.tilted],
116
- children: [/*#__PURE__*/_jsx(Typography, {
117
- variant: HeadingVariants.H7,
118
- style: styles.muted,
119
- children: nextUp?.title
120
- }), /*#__PURE__*/_jsx(View, {
121
- style: styles.diamond,
122
- children: /*#__PURE__*/_jsx(SliceDiamondIcon, {
123
- color: nextUp?.color
124
- })
125
- })]
126
- })]
127
- }), /*#__PURE__*/_jsx(View, {
128
- style: styles.arrow,
129
- children: /*#__PURE__*/_jsx(SketchArrowRight, {})
130
- })]
131
- }), /*#__PURE__*/_jsx(StartButton, {
132
- onPress: async () => {
133
- try {
134
- model.solving.setLoaderOpeningId(OpeningLoaderId.START_BUTTON);
135
- const skill = await model.solving.start({
136
- type: SolvingFlow.MAGMA
137
- });
138
- await onStartPress?.(skill);
139
- } finally {
140
- model.solving.setLoaderOpeningId(null);
141
- }
142
- },
143
- disabled: isSkillOpeningActionPending,
144
- isLoading: isLoading,
145
- isActive: isLoading,
146
- withPulsation: !!nextUp && !isLoading && !isSkillOpeningActionPending && !status
147
- })]
148
- })]
93
+ }), !readOnly && /*#__PURE__*/_jsx(NextUp, {})]
149
94
  });
150
95
  };
151
- const SMALL_SCREEN_THRESHOLD = 568;
152
- const SMALL_SCREEN_MENU_MAX_HEIGHT = 300;
153
- const WINDOW_HEIGHT = Dimensions.get('window').height;
154
- const MENU_MAX_HEIGHT = WINDOW_HEIGHT <= SMALL_SCREEN_THRESHOLD ? SMALL_SCREEN_MENU_MAX_HEIGHT : WINDOW_HEIGHT * 0.8;
155
96
  const styles = StyleSheet.create({
156
97
  container: {
157
98
  flexDirection: 'row',
@@ -184,44 +125,6 @@ const styles = StyleSheet.create({
184
125
  scrollbarWidth: 'none'
185
126
  }
186
127
  })
187
- },
188
- nextUp: {
189
- flexDirection: 'row',
190
- alignItems: 'center',
191
- gap: SPACING[400]
192
- },
193
- content: {
194
- alignItems: 'center',
195
- gap: SPACING[100]
196
- },
197
- subtitle: {
198
- transform: [{
199
- rotate: '355deg'
200
- }],
201
- marginRight: SPACING[300]
202
- },
203
- tilted: {
204
- transform: [{
205
- rotate: '355deg'
206
- }]
207
- },
208
- row: {
209
- flexDirection: 'row',
210
- gap: SPACING[100]
211
- },
212
- muted: {
213
- color: COLORS.NEUTRAL_8
214
- },
215
- diamond: {
216
- bottom: 10,
217
- transform: [{
218
- rotate: '5deg'
219
- }]
220
- },
221
- arrow: {
222
- transform: [{
223
- rotate: '358deg'
224
- }]
225
128
  }
226
129
  });
227
130
  //# sourceMappingURL=PmProgressHeader.js.map