@magmamath/students-features 1.8.2-rc.1 → 1.8.3-rc.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.
Files changed (139) hide show
  1. package/dist/commonjs/features/pmProgress/shared/TreeNormalizer.js +5 -1
  2. package/dist/commonjs/features/pmProgress/shared/TreeNormalizer.js.map +1 -1
  3. package/dist/commonjs/i18n/i18n.js +1 -3
  4. package/dist/commonjs/i18n/i18n.js.map +1 -1
  5. package/dist/commonjs/index.js +10 -22
  6. package/dist/commonjs/index.js.map +1 -1
  7. package/dist/module/features/pmProgress/shared/TreeNormalizer.js +5 -1
  8. package/dist/module/features/pmProgress/shared/TreeNormalizer.js.map +1 -1
  9. package/dist/module/i18n/i18n.js +1 -3
  10. package/dist/module/i18n/i18n.js.map +1 -1
  11. package/dist/module/index.js +0 -1
  12. package/dist/module/index.js.map +1 -1
  13. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts +2 -1
  14. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -1
  15. package/dist/typescript/commonjs/features/pmProgress/shared/TreeNormalizer.d.ts +4 -0
  16. package/dist/typescript/commonjs/features/pmProgress/shared/TreeNormalizer.d.ts.map +1 -1
  17. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts +1 -1
  18. package/dist/typescript/commonjs/i18n/i18n.d.ts.map +1 -1
  19. package/dist/typescript/commonjs/index.d.ts +0 -1
  20. package/dist/typescript/commonjs/index.d.ts.map +1 -1
  21. package/dist/typescript/commonjs/lib/helpers/helpers.d.ts +1 -1
  22. package/dist/typescript/commonjs/lib/helpers/helpers.d.ts.map +1 -1
  23. package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts +2 -1
  24. package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -1
  25. package/dist/typescript/module/features/pmProgress/shared/TreeNormalizer.d.ts +4 -0
  26. package/dist/typescript/module/features/pmProgress/shared/TreeNormalizer.d.ts.map +1 -1
  27. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts +1 -1
  28. package/dist/typescript/module/i18n/i18n.d.ts.map +1 -1
  29. package/dist/typescript/module/index.d.ts +0 -1
  30. package/dist/typescript/module/index.d.ts.map +1 -1
  31. package/dist/typescript/module/lib/helpers/helpers.d.ts +1 -1
  32. package/dist/typescript/module/lib/helpers/helpers.d.ts.map +1 -1
  33. package/package.json +4 -4
  34. package/src/features/pmProgress/shared/TreeNormalizer.ts +5 -1
  35. package/src/i18n/.generated/schema.json +178 -0
  36. package/src/i18n/i18n.ts +1 -2
  37. package/src/index.ts +0 -1
  38. package/dist/commonjs/features/exampleSolution/ExampleSolutionModal.js +0 -29
  39. package/dist/commonjs/features/exampleSolution/ExampleSolutionModal.js.map +0 -1
  40. package/dist/commonjs/features/exampleSolution/assets/grid.webp +0 -0
  41. package/dist/commonjs/features/exampleSolution/components/ExampleSolutionModalContent.js +0 -97
  42. package/dist/commonjs/features/exampleSolution/components/ExampleSolutionModalContent.js.map +0 -1
  43. package/dist/commonjs/features/exampleSolution/components/QuestionSection.js +0 -70
  44. package/dist/commonjs/features/exampleSolution/components/QuestionSection.js.map +0 -1
  45. package/dist/commonjs/features/exampleSolution/components/SolutionSection.js +0 -104
  46. package/dist/commonjs/features/exampleSolution/components/SolutionSection.js.map +0 -1
  47. package/dist/commonjs/features/exampleSolution/constants.js +0 -13
  48. package/dist/commonjs/features/exampleSolution/constants.js.map +0 -1
  49. package/dist/commonjs/features/exampleSolution/hooks/useExampleSolution.js +0 -61
  50. package/dist/commonjs/features/exampleSolution/hooks/useExampleSolution.js.map +0 -1
  51. package/dist/commonjs/features/exampleSolution/index.js +0 -39
  52. package/dist/commonjs/features/exampleSolution/index.js.map +0 -1
  53. package/dist/commonjs/features/exampleSolution/model/ExampleSolution.model.js +0 -24
  54. package/dist/commonjs/features/exampleSolution/model/ExampleSolution.model.js.map +0 -1
  55. package/dist/commonjs/features/exampleSolution/model/ExampleSolutionApi.js +0 -28
  56. package/dist/commonjs/features/exampleSolution/model/ExampleSolutionApi.js.map +0 -1
  57. package/dist/commonjs/features/exampleSolution/model/ExampleSolutionCache.js +0 -18
  58. package/dist/commonjs/features/exampleSolution/model/ExampleSolutionCache.js.map +0 -1
  59. package/dist/commonjs/features/exampleSolution/types.js +0 -6
  60. package/dist/commonjs/features/exampleSolution/types.js.map +0 -1
  61. package/dist/module/features/exampleSolution/ExampleSolutionModal.js +0 -23
  62. package/dist/module/features/exampleSolution/ExampleSolutionModal.js.map +0 -1
  63. package/dist/module/features/exampleSolution/assets/grid.webp +0 -0
  64. package/dist/module/features/exampleSolution/components/ExampleSolutionModalContent.js +0 -91
  65. package/dist/module/features/exampleSolution/components/ExampleSolutionModalContent.js.map +0 -1
  66. package/dist/module/features/exampleSolution/components/QuestionSection.js +0 -62
  67. package/dist/module/features/exampleSolution/components/QuestionSection.js.map +0 -1
  68. package/dist/module/features/exampleSolution/components/SolutionSection.js +0 -96
  69. package/dist/module/features/exampleSolution/components/SolutionSection.js.map +0 -1
  70. package/dist/module/features/exampleSolution/constants.js +0 -9
  71. package/dist/module/features/exampleSolution/constants.js.map +0 -1
  72. package/dist/module/features/exampleSolution/hooks/useExampleSolution.js +0 -56
  73. package/dist/module/features/exampleSolution/hooks/useExampleSolution.js.map +0 -1
  74. package/dist/module/features/exampleSolution/index.js +0 -6
  75. package/dist/module/features/exampleSolution/index.js.map +0 -1
  76. package/dist/module/features/exampleSolution/model/ExampleSolution.model.js +0 -19
  77. package/dist/module/features/exampleSolution/model/ExampleSolution.model.js.map +0 -1
  78. package/dist/module/features/exampleSolution/model/ExampleSolutionApi.js +0 -23
  79. package/dist/module/features/exampleSolution/model/ExampleSolutionApi.js.map +0 -1
  80. package/dist/module/features/exampleSolution/model/ExampleSolutionCache.js +0 -13
  81. package/dist/module/features/exampleSolution/model/ExampleSolutionCache.js.map +0 -1
  82. package/dist/module/features/exampleSolution/types.js +0 -4
  83. package/dist/module/features/exampleSolution/types.js.map +0 -1
  84. package/dist/typescript/commonjs/features/exampleSolution/ExampleSolutionModal.d.ts +0 -11
  85. package/dist/typescript/commonjs/features/exampleSolution/ExampleSolutionModal.d.ts.map +0 -1
  86. package/dist/typescript/commonjs/features/exampleSolution/components/ExampleSolutionModalContent.d.ts +0 -8
  87. package/dist/typescript/commonjs/features/exampleSolution/components/ExampleSolutionModalContent.d.ts.map +0 -1
  88. package/dist/typescript/commonjs/features/exampleSolution/components/QuestionSection.d.ts +0 -10
  89. package/dist/typescript/commonjs/features/exampleSolution/components/QuestionSection.d.ts.map +0 -1
  90. package/dist/typescript/commonjs/features/exampleSolution/components/SolutionSection.d.ts +0 -9
  91. package/dist/typescript/commonjs/features/exampleSolution/components/SolutionSection.d.ts.map +0 -1
  92. package/dist/typescript/commonjs/features/exampleSolution/constants.d.ts +0 -6
  93. package/dist/typescript/commonjs/features/exampleSolution/constants.d.ts.map +0 -1
  94. package/dist/typescript/commonjs/features/exampleSolution/hooks/useExampleSolution.d.ts +0 -9
  95. package/dist/typescript/commonjs/features/exampleSolution/hooks/useExampleSolution.d.ts.map +0 -1
  96. package/dist/typescript/commonjs/features/exampleSolution/index.d.ts +0 -4
  97. package/dist/typescript/commonjs/features/exampleSolution/index.d.ts.map +0 -1
  98. package/dist/typescript/commonjs/features/exampleSolution/model/ExampleSolution.model.d.ts +0 -10
  99. package/dist/typescript/commonjs/features/exampleSolution/model/ExampleSolution.model.d.ts.map +0 -1
  100. package/dist/typescript/commonjs/features/exampleSolution/model/ExampleSolutionApi.d.ts +0 -13
  101. package/dist/typescript/commonjs/features/exampleSolution/model/ExampleSolutionApi.d.ts.map +0 -1
  102. package/dist/typescript/commonjs/features/exampleSolution/model/ExampleSolutionCache.d.ts +0 -11
  103. package/dist/typescript/commonjs/features/exampleSolution/model/ExampleSolutionCache.d.ts.map +0 -1
  104. package/dist/typescript/commonjs/features/exampleSolution/types.d.ts +0 -27
  105. package/dist/typescript/commonjs/features/exampleSolution/types.d.ts.map +0 -1
  106. package/dist/typescript/module/features/exampleSolution/ExampleSolutionModal.d.ts +0 -11
  107. package/dist/typescript/module/features/exampleSolution/ExampleSolutionModal.d.ts.map +0 -1
  108. package/dist/typescript/module/features/exampleSolution/components/ExampleSolutionModalContent.d.ts +0 -8
  109. package/dist/typescript/module/features/exampleSolution/components/ExampleSolutionModalContent.d.ts.map +0 -1
  110. package/dist/typescript/module/features/exampleSolution/components/QuestionSection.d.ts +0 -10
  111. package/dist/typescript/module/features/exampleSolution/components/QuestionSection.d.ts.map +0 -1
  112. package/dist/typescript/module/features/exampleSolution/components/SolutionSection.d.ts +0 -9
  113. package/dist/typescript/module/features/exampleSolution/components/SolutionSection.d.ts.map +0 -1
  114. package/dist/typescript/module/features/exampleSolution/constants.d.ts +0 -6
  115. package/dist/typescript/module/features/exampleSolution/constants.d.ts.map +0 -1
  116. package/dist/typescript/module/features/exampleSolution/hooks/useExampleSolution.d.ts +0 -9
  117. package/dist/typescript/module/features/exampleSolution/hooks/useExampleSolution.d.ts.map +0 -1
  118. package/dist/typescript/module/features/exampleSolution/index.d.ts +0 -4
  119. package/dist/typescript/module/features/exampleSolution/index.d.ts.map +0 -1
  120. package/dist/typescript/module/features/exampleSolution/model/ExampleSolution.model.d.ts +0 -10
  121. package/dist/typescript/module/features/exampleSolution/model/ExampleSolution.model.d.ts.map +0 -1
  122. package/dist/typescript/module/features/exampleSolution/model/ExampleSolutionApi.d.ts +0 -13
  123. package/dist/typescript/module/features/exampleSolution/model/ExampleSolutionApi.d.ts.map +0 -1
  124. package/dist/typescript/module/features/exampleSolution/model/ExampleSolutionCache.d.ts +0 -11
  125. package/dist/typescript/module/features/exampleSolution/model/ExampleSolutionCache.d.ts.map +0 -1
  126. package/dist/typescript/module/features/exampleSolution/types.d.ts +0 -27
  127. package/dist/typescript/module/features/exampleSolution/types.d.ts.map +0 -1
  128. package/src/features/exampleSolution/ExampleSolutionModal.tsx +0 -23
  129. package/src/features/exampleSolution/assets/grid.webp +0 -0
  130. package/src/features/exampleSolution/components/ExampleSolutionModalContent.tsx +0 -80
  131. package/src/features/exampleSolution/components/QuestionSection.tsx +0 -61
  132. package/src/features/exampleSolution/components/SolutionSection.tsx +0 -117
  133. package/src/features/exampleSolution/constants.ts +0 -5
  134. package/src/features/exampleSolution/hooks/useExampleSolution.ts +0 -66
  135. package/src/features/exampleSolution/index.ts +0 -3
  136. package/src/features/exampleSolution/model/ExampleSolution.model.ts +0 -15
  137. package/src/features/exampleSolution/model/ExampleSolutionApi.ts +0 -29
  138. package/src/features/exampleSolution/model/ExampleSolutionCache.ts +0 -20
  139. package/src/features/exampleSolution/types.ts +0 -27
@@ -9,6 +9,10 @@ exports.TreeNormalizer = void 0;
9
9
  * making them impossible to open in the solving flow. This normalizer strips those skills
10
10
  * and cascades the cleanup - removing standards, domains, etc. that end up empty.
11
11
  *
12
+ * It also de-duplicates skill ids within a node: the API tree can list the same skill twice,
13
+ * which inflates a standard's denominator (achieved/total) and leaves a finished standard
14
+ * stuck below 100%, e.g. 18 unique skills counted as 18/19. (students-web#4038)
15
+ *
12
16
  * Acts as a single place to sanitize the tree API response before it enters the app.
13
17
  * Can be extended with additional normalizations as new edge cases arise.
14
18
  */
@@ -33,7 +37,7 @@ class TreeNormalizer {
33
37
  const emptyIds = this.getEmptyNodeIds(treeMapping, validIds);
34
38
  return Object.fromEntries(Object.entries(treeMapping).filter(([id]) => !emptyIds.has(id)).map(([id, node]) => [id, {
35
39
  ...node,
36
- skills: node.skills.filter(sid => validIds.has(sid)),
40
+ skills: [...new Set(node.skills.filter(sid => validIds.has(sid)))],
37
41
  children: node.children.filter(cid => !emptyIds.has(cid))
38
42
  }]));
39
43
  }
@@ -1 +1 @@
1
- {"version":3,"names":["TreeNormalizer","normalize","response","skillsMapping","getOnlyValidSkills","validIds","Set","Object","keys","treeMapping","removeEmptyNodes","isSkillValid","skill","Boolean","ability","sectionId","functionName","mapping","fromEntries","entries","filter","emptyIds","getEmptyNodeIds","id","has","map","node","skills","sid","children","cid","empty","leafToRoot","sort","a","b","parents","length","isEmptyLeaf","every","s","isEmptyParent","c","add","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/TreeNormalizer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["TreeNormalizer","normalize","response","skillsMapping","getOnlyValidSkills","validIds","Set","Object","keys","treeMapping","removeEmptyNodes","isSkillValid","skill","Boolean","ability","sectionId","functionName","mapping","fromEntries","entries","filter","emptyIds","getEmptyNodeIds","id","has","map","node","skills","sid","children","cid","empty","leafToRoot","sort","a","b","parents","length","isEmptyLeaf","every","s","isEmptyParent","c","add","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/TreeNormalizer.ts"],"mappings":"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","ignoreList":[]}
@@ -9,9 +9,7 @@ var _reactI18next = require("react-i18next");
9
9
  var _constants = require("@magmamath/frontend-config/translation/constants");
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  const NAMESPACE = exports.NAMESPACE = _constants.TranslationNamespace.STUDENTS_FEATURES;
12
- const getText = (key, options) =>
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- _i18next.default.t(key, {
12
+ const getText = (key, options) => _i18next.default.t(key, {
15
13
  ns: NAMESPACE,
16
14
  ...options
17
15
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_i18next","_interopRequireDefault","require","_reactI18next","_constants","e","__esModule","default","NAMESPACE","exports","TranslationNamespace","STUDENTS_FEATURES","getText","key","options","i18next","t","ns","useText","useTranslation"],"sourceRoot":"../../../src","sources":["i18n/i18n.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAAuF,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhF,MAAMG,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,+BAAoB,CAACC,iBAAiB;AAKxD,MAAMC,OAAgB,GAAIA,CAACC,GAAmB,EAAEC,OAAgB;AACrE;AACCC,gBAAO,CAACC,CAAC,CAASH,GAAG,EAAE;EAAEI,EAAE,EAAET,SAAS;EAAE,GAAGM;AAAQ,CAAC,CAAa;AAAAL,OAAA,CAAAG,OAAA,GAAAA,OAAA;AAE7D,MAAMM,OAAO,GAAGA,CAAA,KAAe,IAAAC,4BAAc,EAACX,SAAS,CAAC,CAACQ,CAAC;AAAAP,OAAA,CAAAS,OAAA,GAAAA,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_i18next","_interopRequireDefault","require","_reactI18next","_constants","e","__esModule","default","NAMESPACE","exports","TranslationNamespace","STUDENTS_FEATURES","getText","key","options","i18next","t","ns","useText","useTranslation"],"sourceRoot":"../../../src","sources":["i18n/i18n.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAAuF,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhF,MAAMG,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,+BAAoB,CAACC,iBAAiB;AAKxD,MAAMC,OAAgB,GAAIA,CAACC,GAAmB,EAAEC,OAAgB,KACrEC,gBAAO,CAACC,CAAC,CAACH,GAAG,EAAE;EAAEI,EAAE,EAAET,SAAS;EAAE,GAAGM;AAAQ,CAAC,CAAa;AAAAL,OAAA,CAAAG,OAAA,GAAAA,OAAA;AAEpD,MAAMM,OAAO,GAAGA,CAAA,KAAe,IAAAC,4BAAc,EAACX,SAAS,CAAC,CAACQ,CAAC;AAAAP,OAAA,CAAAS,OAAA,GAAAA,OAAA","ignoreList":[]}
@@ -97,7 +97,7 @@ Object.keys(_index7).forEach(function (key) {
97
97
  }
98
98
  });
99
99
  });
100
- var _index8 = require("./features/exampleSolution/index.js");
100
+ var _index8 = require("./features/keyboard/index.js");
101
101
  Object.keys(_index8).forEach(function (key) {
102
102
  if (key === "default" || key === "__esModule") return;
103
103
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -109,7 +109,7 @@ Object.keys(_index8).forEach(function (key) {
109
109
  }
110
110
  });
111
111
  });
112
- var _index9 = require("./features/keyboard/index.js");
112
+ var _index9 = require("./features/pmProgress/index.js");
113
113
  Object.keys(_index9).forEach(function (key) {
114
114
  if (key === "default" || key === "__esModule") return;
115
115
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -121,7 +121,7 @@ Object.keys(_index9).forEach(function (key) {
121
121
  }
122
122
  });
123
123
  });
124
- var _index10 = require("./features/pmProgress/index.js");
124
+ var _index10 = require("./features/openEnded/index.js");
125
125
  Object.keys(_index10).forEach(function (key) {
126
126
  if (key === "default" || key === "__esModule") return;
127
127
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -133,7 +133,7 @@ Object.keys(_index10).forEach(function (key) {
133
133
  }
134
134
  });
135
135
  });
136
- var _index11 = require("./features/openEnded/index.js");
136
+ var _index11 = require("./shared/icons/index.js");
137
137
  Object.keys(_index11).forEach(function (key) {
138
138
  if (key === "default" || key === "__esModule") return;
139
139
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -145,7 +145,7 @@ Object.keys(_index11).forEach(function (key) {
145
145
  }
146
146
  });
147
147
  });
148
- var _index12 = require("./shared/icons/index.js");
148
+ var _index12 = require("./features/voice/index.js");
149
149
  Object.keys(_index12).forEach(function (key) {
150
150
  if (key === "default" || key === "__esModule") return;
151
151
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -157,7 +157,7 @@ Object.keys(_index12).forEach(function (key) {
157
157
  }
158
158
  });
159
159
  });
160
- var _index13 = require("./features/voice/index.js");
160
+ var _index13 = require("./features/featureUsage/index.js");
161
161
  Object.keys(_index13).forEach(function (key) {
162
162
  if (key === "default" || key === "__esModule") return;
163
163
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -169,7 +169,7 @@ Object.keys(_index13).forEach(function (key) {
169
169
  }
170
170
  });
171
171
  });
172
- var _index14 = require("./features/featureUsage/index.js");
172
+ var _index14 = require("./features/uiMode/index.js");
173
173
  Object.keys(_index14).forEach(function (key) {
174
174
  if (key === "default" || key === "__esModule") return;
175
175
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -181,7 +181,7 @@ Object.keys(_index14).forEach(function (key) {
181
181
  }
182
182
  });
183
183
  });
184
- var _index15 = require("./features/uiMode/index.js");
184
+ var _index15 = require("./features/fluency/index.js");
185
185
  Object.keys(_index15).forEach(function (key) {
186
186
  if (key === "default" || key === "__esModule") return;
187
187
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -193,7 +193,7 @@ Object.keys(_index15).forEach(function (key) {
193
193
  }
194
194
  });
195
195
  });
196
- var _index16 = require("./features/fluency/index.js");
196
+ var _index16 = require("./features/fluency-teacher/index.js");
197
197
  Object.keys(_index16).forEach(function (key) {
198
198
  if (key === "default" || key === "__esModule") return;
199
199
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -205,7 +205,7 @@ Object.keys(_index16).forEach(function (key) {
205
205
  }
206
206
  });
207
207
  });
208
- var _index17 = require("./features/fluency-teacher/index.js");
208
+ var _index17 = require("./features/translation/index.js");
209
209
  Object.keys(_index17).forEach(function (key) {
210
210
  if (key === "default" || key === "__esModule") return;
211
211
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -217,16 +217,4 @@ Object.keys(_index17).forEach(function (key) {
217
217
  }
218
218
  });
219
219
  });
220
- var _index18 = require("./features/translation/index.js");
221
- Object.keys(_index18).forEach(function (key) {
222
- if (key === "default" || key === "__esModule") return;
223
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
224
- if (key in exports && exports[key] === _index18[key]) return;
225
- Object.defineProperty(exports, key, {
226
- enumerable: true,
227
- get: function () {
228
- return _index18[key];
229
- }
230
- });
231
- });
232
220
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_helpers","require","_index","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_index2","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index10","_index11","_index12","_index13","_index14","_index15","_index16","_index17","_index18"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_helpers","require","_index","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_index2","_index3","_index4","_index5","_index6","_index7","_index8","_index9","_index10","_index11","_index12","_index13","_index14","_index15","_index16","_index17"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,10 @@
5
5
  * making them impossible to open in the solving flow. This normalizer strips those skills
6
6
  * and cascades the cleanup - removing standards, domains, etc. that end up empty.
7
7
  *
8
+ * It also de-duplicates skill ids within a node: the API tree can list the same skill twice,
9
+ * which inflates a standard's denominator (achieved/total) and leaves a finished standard
10
+ * stuck below 100%, e.g. 18 unique skills counted as 18/19. (students-web#4038)
11
+ *
8
12
  * Acts as a single place to sanitize the tree API response before it enters the app.
9
13
  * Can be extended with additional normalizations as new edge cases arise.
10
14
  */
@@ -29,7 +33,7 @@ export class TreeNormalizer {
29
33
  const emptyIds = this.getEmptyNodeIds(treeMapping, validIds);
30
34
  return Object.fromEntries(Object.entries(treeMapping).filter(([id]) => !emptyIds.has(id)).map(([id, node]) => [id, {
31
35
  ...node,
32
- skills: node.skills.filter(sid => validIds.has(sid)),
36
+ skills: [...new Set(node.skills.filter(sid => validIds.has(sid)))],
33
37
  children: node.children.filter(cid => !emptyIds.has(cid))
34
38
  }]));
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"names":["TreeNormalizer","normalize","response","skillsMapping","getOnlyValidSkills","validIds","Set","Object","keys","treeMapping","removeEmptyNodes","isSkillValid","skill","Boolean","ability","sectionId","functionName","mapping","fromEntries","entries","filter","emptyIds","getEmptyNodeIds","id","has","map","node","skills","sid","children","cid","empty","leafToRoot","sort","a","b","parents","length","isEmptyLeaf","every","s","isEmptyParent","c","add"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/TreeNormalizer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["TreeNormalizer","normalize","response","skillsMapping","getOnlyValidSkills","validIds","Set","Object","keys","treeMapping","removeEmptyNodes","isSkillValid","skill","Boolean","ability","sectionId","functionName","mapping","fromEntries","entries","filter","emptyIds","getEmptyNodeIds","id","has","map","node","skills","sid","children","cid","empty","leafToRoot","sort","a","b","parents","length","isEmptyLeaf","every","s","isEmptyParent","c","add"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/shared/TreeNormalizer.ts"],"mappings":";;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,cAAc,CAAC;EAC1B,OAAOC,SAASA,CAACC,QAA6B,EAAuB;IACnE,MAAMC,aAAa,GAAG,IAAI,CAACC,kBAAkB,CAACF,QAAQ,CAACC,aAAa,CAAC;IACrE,MAAME,QAAQ,GAAG,IAAIC,GAAG,CAACC,MAAM,CAACC,IAAI,CAACL,aAAa,CAAC,CAAC;IACpD,MAAMM,WAAW,GAAG,IAAI,CAACC,gBAAgB,CAACR,QAAQ,CAACO,WAAW,EAAEJ,QAAQ,CAAC;IACzE,OAAO;MAAE,GAAGH,QAAQ;MAAEC,aAAa;MAAEM;IAAY,CAAC;EACpD;EAEA,OAAOE,YAAYA,CAACC,KAAY,EAAE;IAChC,OAAOC,OAAO,CAACD,KAAK,EAAEE,OAAO,KAAKF,KAAK,CAACE,OAAO,CAACC,SAAS,IAAIH,KAAK,CAACE,OAAO,CAACE,YAAY,CAAC,CAAC;EAC3F;EAEA,OAAeZ,kBAAkBA,CAACa,OAAsB,EAAiB;IACvE,OAAOV,MAAM,CAACW,WAAW,CACvBX,MAAM,CAACY,OAAO,CAACF,OAAO,CAAC,CAACG,MAAM,CAAC,CAAC,GAAGR,KAAK,CAAC,KAAK,IAAI,CAACD,YAAY,CAACC,KAAK,CAAC,CACxE,CAAC;EACH;EAEA,OAAeF,gBAAgBA,CAACD,WAAwB,EAAEJ,QAAqB,EAAe;IAC5F,MAAMgB,QAAQ,GAAG,IAAI,CAACC,eAAe,CAACb,WAAW,EAAEJ,QAAQ,CAAC;IAE5D,OAAOE,MAAM,CAACW,WAAW,CACvBX,MAAM,CAACY,OAAO,CAACV,WAAW,CAAC,CACxBW,MAAM,CAAC,CAAC,CAACG,EAAE,CAAC,KAAK,CAACF,QAAQ,CAACG,GAAG,CAACD,EAAE,CAAC,CAAC,CACnCE,GAAG,CAAC,CAAC,CAACF,EAAE,EAAEG,IAAI,CAAC,KAAK,CACnBH,EAAE,EACF;MACE,GAAGG,IAAI;MACPC,MAAM,EAAE,CAAC,GAAG,IAAIrB,GAAG,CAACoB,IAAI,CAACC,MAAM,CAACP,MAAM,CAAEQ,GAAG,IAAKvB,QAAQ,CAACmB,GAAG,CAACI,GAAG,CAAC,CAAC,CAAC,CAAC;MACpEC,QAAQ,EAAEH,IAAI,CAACG,QAAQ,CAACT,MAAM,CAAEU,GAAG,IAAK,CAACT,QAAQ,CAACG,GAAG,CAACM,GAAG,CAAC;IAC5D,CAAC,CACF,CACL,CAAC;EACH;EAEA,OAAeR,eAAeA,CAACb,WAAwB,EAAEJ,QAAqB,EAAE;IAC9E,MAAM0B,KAAK,GAAG,IAAIzB,GAAG,CAAS,CAAC;IAE/B,MAAM0B,UAAU,GAAGzB,MAAM,CAACY,OAAO,CAACV,WAAW,CAAC,CAACwB,IAAI,CACjD,CAAC,GAAGC,CAAC,CAAC,EAAE,GAAGC,CAAC,CAAC,KAAKA,CAAC,CAACC,OAAO,CAACC,MAAM,GAAGH,CAAC,CAACE,OAAO,CAACC,MACjD,CAAC;IAED,KAAK,MAAM,CAACd,EAAE,EAAEG,IAAI,CAAC,IAAIM,UAAU,EAAE;MACnC,MAAMM,WAAW,GAAGZ,IAAI,CAACC,MAAM,CAACU,MAAM,GAAG,CAAC,IAAIX,IAAI,CAACC,MAAM,CAACY,KAAK,CAAEC,CAAC,IAAK,CAACnC,QAAQ,CAACmB,GAAG,CAACgB,CAAC,CAAC,CAAC;MACxF,MAAMC,aAAa,GAAGf,IAAI,CAACG,QAAQ,CAACQ,MAAM,GAAG,CAAC,IAAIX,IAAI,CAACG,QAAQ,CAACU,KAAK,CAAEG,CAAC,IAAKX,KAAK,CAACP,GAAG,CAACkB,CAAC,CAAC,CAAC;MAE1F,IAAIJ,WAAW,IAAIG,aAAa,EAAEV,KAAK,CAACY,GAAG,CAACpB,EAAE,CAAC;IACjD;IAEA,OAAOQ,KAAK;EACd;AACF","ignoreList":[]}
@@ -4,9 +4,7 @@ import i18next from 'i18next';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import { TranslationNamespace } from '@magmamath/frontend-config/translation/constants';
6
6
  export const NAMESPACE = TranslationNamespace.STUDENTS_FEATURES;
7
- export const getText = (key, options) =>
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
- i18next.t(key, {
7
+ export const getText = (key, options) => i18next.t(key, {
10
8
  ns: NAMESPACE,
11
9
  ...options
12
10
  });
@@ -1 +1 @@
1
- {"version":3,"names":["i18next","useTranslation","TranslationNamespace","NAMESPACE","STUDENTS_FEATURES","getText","key","options","t","ns","useText"],"sourceRoot":"../../../src","sources":["i18n/i18n.ts"],"mappings":";;AAAA,OAAOA,OAAO,MAAgC,SAAS;AACvD,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,oBAAoB,QAAQ,kDAAkD;AAEvF,OAAO,MAAMC,SAAS,GAAGD,oBAAoB,CAACE,iBAAiB;AAK/D,OAAO,MAAMC,OAAgB,GAAIA,CAACC,GAAmB,EAAEC,OAAgB;AACrE;AACCP,OAAO,CAACQ,CAAC,CAASF,GAAG,EAAE;EAAEG,EAAE,EAAEN,SAAS;EAAE,GAAGI;AAAQ,CAAC,CAAa;AAEpE,OAAO,MAAMG,OAAO,GAAGA,CAAA,KAAeT,cAAc,CAACE,SAAS,CAAC,CAACK,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["i18next","useTranslation","TranslationNamespace","NAMESPACE","STUDENTS_FEATURES","getText","key","options","t","ns","useText"],"sourceRoot":"../../../src","sources":["i18n/i18n.ts"],"mappings":";;AAAA,OAAOA,OAAO,MAAgC,SAAS;AACvD,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,oBAAoB,QAAQ,kDAAkD;AAEvF,OAAO,MAAMC,SAAS,GAAGD,oBAAoB,CAACE,iBAAiB;AAK/D,OAAO,MAAMC,OAAgB,GAAIA,CAACC,GAAmB,EAAEC,OAAgB,KACrEP,OAAO,CAACQ,CAAC,CAACF,GAAG,EAAE;EAAEG,EAAE,EAAEN,SAAS;EAAE,GAAGI;AAAQ,CAAC,CAAa;AAE3D,OAAO,MAAMG,OAAO,GAAGA,CAAA,KAAeT,cAAc,CAACE,SAAS,CAAC,CAACK,CAAC","ignoreList":[]}
@@ -8,7 +8,6 @@ export * from "./features/endOfAssignment/index.js";
8
8
  export * from "./features/formulaSheet/index.js";
9
9
  export * from "./features/problemSelector/index.js";
10
10
  export * from "./features/gifCelebrations/index.js";
11
- export * from "./features/exampleSolution/index.js";
12
11
  export * from "./features/keyboard/index.js";
13
12
  export * from "./features/pmProgress/index.js";
14
13
  export * from "./features/openEnded/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["generateRandomId"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,0BAAuB;AACxD,cAAc,6BAAoB;AAClC,cAAc,8BAAqB;AACnC,cAAc,kCAAyB;AACvC,cAAc,qCAA4B;AAC1C,cAAc,kCAAyB;AACvC,cAAc,qCAA4B;AAC1C,cAAc,qCAA4B;AAC1C,cAAc,qCAA4B;AAC1C,cAAc,8BAAqB;AACnC,cAAc,gCAAuB;AACrC,cAAc,+BAAsB;AACpC,cAAc,yBAAgB;AAC9B,cAAc,2BAAkB;AAChC,cAAc,kCAAyB;AACvC,cAAc,4BAAmB;AACjC,cAAc,6BAAoB;AAClC,cAAc,qCAA4B;AAC1C,cAAc,iCAAwB","ignoreList":[]}
1
+ {"version":3,"names":["generateRandomId"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,0BAAuB;AACxD,cAAc,6BAAoB;AAClC,cAAc,8BAAqB;AACnC,cAAc,kCAAyB;AACvC,cAAc,qCAA4B;AAC1C,cAAc,kCAAyB;AACvC,cAAc,qCAA4B;AAC1C,cAAc,qCAA4B;AAC1C,cAAc,8BAAqB;AACnC,cAAc,gCAAuB;AACrC,cAAc,+BAAsB;AACpC,cAAc,yBAAgB;AAC9B,cAAc,2BAAkB;AAChC,cAAc,kCAAyB;AACvC,cAAc,4BAAmB;AACjC,cAAc,6BAAoB;AAClC,cAAc,qCAA4B;AAC1C,cAAc,iCAAwB","ignoreList":[]}
@@ -1,9 +1,10 @@
1
+ import React from 'react';
1
2
  type UseFluencyNumpadProps = {
2
3
  onSubmit: () => void;
3
4
  };
4
5
  export declare const useFluencyNumpad: ({ onSubmit }: UseFluencyNumpadProps) => {
5
6
  options: {
6
- title: any;
7
+ title: React.ReactNode;
7
8
  selected: boolean;
8
9
  customColorScheme: {
9
10
  1: {
@@ -1 +1 @@
1
- {"version":3,"file":"useFluencyNumpad.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencyNumpad.tsx"],"names":[],"mappings":"AAWA,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AA4ED,eAAO,MAAM,gBAAgB,iBAAkB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAzE7D,MAAM;;CA4HZ,CAAA"}
1
+ {"version":3,"file":"useFluencyNumpad.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencyNumpad.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAW1D,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AA4ED,eAAO,MAAM,gBAAgB,iBAAkB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAzE7D,MAAM;;CA4HZ,CAAA"}
@@ -4,6 +4,10 @@ import type { Skill, TreeMappingResponse } from './pmProgress.types';
4
4
  * making them impossible to open in the solving flow. This normalizer strips those skills
5
5
  * and cascades the cleanup - removing standards, domains, etc. that end up empty.
6
6
  *
7
+ * It also de-duplicates skill ids within a node: the API tree can list the same skill twice,
8
+ * which inflates a standard's denominator (achieved/total) and leaves a finished standard
9
+ * stuck below 100%, e.g. 18 unique skills counted as 18/19. (students-web#4038)
10
+ *
7
11
  * Acts as a single place to sanitize the tree API response before it enters the app.
8
12
  * Can be extended with additional normalizations as new edge cases arise.
9
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNormalizer.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/shared/TreeNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAiB,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAInF;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB;IAOpE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK;IAIhC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAMjC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,eAAe;CAgB/B"}
1
+ {"version":3,"file":"TreeNormalizer.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/shared/TreeNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAiB,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAInF;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB;IAOpE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK;IAIhC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAMjC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,eAAe;CAgB/B"}
@@ -11,7 +11,7 @@ type Params = {
11
11
  export type VoiceTranscriptionController = ReturnType<typeof useVoiceTranscriptionController>;
12
12
  export declare const useVoiceTranscriptionController: ({ model, answers, attemptOffset, attemptsCount, problemId, }: Params) => {
13
13
  display: {
14
- text: any;
14
+ text: string;
15
15
  isLoading: boolean;
16
16
  };
17
17
  flags: {
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/i18n/i18n.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAEvF,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAE/D,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,OAAO,EAAE,OAE8C,CAAA;AAEpE,eAAO,MAAM,OAAO,QAAO,OAAsC,CAAA"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/i18n/i18n.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAEvF,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAE/D,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,OAAO,EAAE,OACqC,CAAA;AAE3D,eAAO,MAAM,OAAO,QAAO,OAAsC,CAAA"}
@@ -6,7 +6,6 @@ export * from './features/endOfAssignment';
6
6
  export * from './features/formulaSheet';
7
7
  export * from './features/problemSelector';
8
8
  export * from './features/gifCelebrations';
9
- export * from './features/exampleSolution';
10
9
  export * from './features/keyboard';
11
10
  export * from './features/pmProgress';
12
11
  export * from './features/openEnded';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  export declare const noop: () => void;
2
2
  export declare const generateRandomId: () => string;
3
- export declare const getRelativeTimeText: (date: Date) => any;
3
+ export declare const getRelativeTimeText: (date: Date) => string;
4
4
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,YAAW,CAAA;AAE5B,eAAO,MAAM,gBAAgB,cACsC,CAAA;AASnE,eAAO,MAAM,mBAAmB,SAAU,IAAI,QAsC7C,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,YAAW,CAAA;AAE5B,eAAO,MAAM,gBAAgB,cACsC,CAAA;AASnE,eAAO,MAAM,mBAAmB,SAAU,IAAI,WAsC7C,CAAA"}
@@ -1,9 +1,10 @@
1
+ import React from 'react';
1
2
  type UseFluencyNumpadProps = {
2
3
  onSubmit: () => void;
3
4
  };
4
5
  export declare const useFluencyNumpad: ({ onSubmit }: UseFluencyNumpadProps) => {
5
6
  options: {
6
- title: any;
7
+ title: React.ReactNode;
7
8
  selected: boolean;
8
9
  customColorScheme: {
9
10
  1: {
@@ -1 +1 @@
1
- {"version":3,"file":"useFluencyNumpad.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencyNumpad.tsx"],"names":[],"mappings":"AAWA,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AA4ED,eAAO,MAAM,gBAAgB,iBAAkB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAzE7D,MAAM;;CA4HZ,CAAA"}
1
+ {"version":3,"file":"useFluencyNumpad.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencyNumpad.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAW1D,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AA4ED,eAAO,MAAM,gBAAgB,iBAAkB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAzE7D,MAAM;;CA4HZ,CAAA"}
@@ -4,6 +4,10 @@ import type { Skill, TreeMappingResponse } from './pmProgress.types';
4
4
  * making them impossible to open in the solving flow. This normalizer strips those skills
5
5
  * and cascades the cleanup - removing standards, domains, etc. that end up empty.
6
6
  *
7
+ * It also de-duplicates skill ids within a node: the API tree can list the same skill twice,
8
+ * which inflates a standard's denominator (achieved/total) and leaves a finished standard
9
+ * stuck below 100%, e.g. 18 unique skills counted as 18/19. (students-web#4038)
10
+ *
7
11
  * Acts as a single place to sanitize the tree API response before it enters the app.
8
12
  * Can be extended with additional normalizations as new edge cases arise.
9
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNormalizer.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/shared/TreeNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAiB,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAInF;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB;IAOpE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK;IAIhC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAMjC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,eAAe;CAgB/B"}
1
+ {"version":3,"file":"TreeNormalizer.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/shared/TreeNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAiB,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAInF;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB;IAOpE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK;IAIhC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAMjC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,eAAe;CAgB/B"}
@@ -11,7 +11,7 @@ type Params = {
11
11
  export type VoiceTranscriptionController = ReturnType<typeof useVoiceTranscriptionController>;
12
12
  export declare const useVoiceTranscriptionController: ({ model, answers, attemptOffset, attemptsCount, problemId, }: Params) => {
13
13
  display: {
14
- text: any;
14
+ text: string;
15
15
  isLoading: boolean;
16
16
  };
17
17
  flags: {
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/i18n/i18n.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAEvF,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAE/D,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,OAAO,EAAE,OAE8C,CAAA;AAEpE,eAAO,MAAM,OAAO,QAAO,OAAsC,CAAA"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/i18n/i18n.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAEvF,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAE/D,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,OAAO,EAAE,OACqC,CAAA;AAE3D,eAAO,MAAM,OAAO,QAAO,OAAsC,CAAA"}
@@ -6,7 +6,6 @@ export * from './features/endOfAssignment';
6
6
  export * from './features/formulaSheet';
7
7
  export * from './features/problemSelector';
8
8
  export * from './features/gifCelebrations';
9
- export * from './features/exampleSolution';
10
9
  export * from './features/keyboard';
11
10
  export * from './features/pmProgress';
12
11
  export * from './features/openEnded';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  export declare const noop: () => void;
2
2
  export declare const generateRandomId: () => string;
3
- export declare const getRelativeTimeText: (date: Date) => any;
3
+ export declare const getRelativeTimeText: (date: Date) => string;
4
4
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,YAAW,CAAA;AAE5B,eAAO,MAAM,gBAAgB,cACsC,CAAA;AASnE,eAAO,MAAM,mBAAmB,SAAU,IAAI,QAsC7C,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,YAAW,CAAA;AAE5B,eAAO,MAAM,gBAAgB,cACsC,CAAA;AASnE,eAAO,MAAM,mBAAmB,SAAU,IAAI,WAsC7C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "1.8.2-rc.1",
3
+ "version": "1.8.3-rc.0",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -46,7 +46,7 @@
46
46
  "pull-translations": "node scripts/pullTranslations.mjs"
47
47
  },
48
48
  "peerDependencies": {
49
- "@magmamath/frontend-config": ">=1.7.1",
49
+ "@magmamath/frontend-config": ">=1.7.2",
50
50
  "@magmamath/react-native-draw-board": "*",
51
51
  "@magmamath/react-native-ui": "*",
52
52
  "@magmamath/students-qa": "*",
@@ -72,7 +72,7 @@
72
72
  "react-native-svg": "^15.10.0"
73
73
  },
74
74
  "devDependencies": {
75
- "@magmamath/frontend-config": "1.7.1",
75
+ "@magmamath/frontend-config": "1.7.2",
76
76
  "@magmamath/react-native-draw-board": "1.8.3",
77
77
  "@magmamath/react-native-ui": "0.5.9",
78
78
  "@magmamath/students-qa": "0.2.3",
@@ -145,4 +145,4 @@
145
145
  "type": "library",
146
146
  "version": "0.44.3"
147
147
  }
148
- }
148
+ }
@@ -7,6 +7,10 @@ type TreeMapping = TreeMappingResponse['treeMapping']
7
7
  * making them impossible to open in the solving flow. This normalizer strips those skills
8
8
  * and cascades the cleanup - removing standards, domains, etc. that end up empty.
9
9
  *
10
+ * It also de-duplicates skill ids within a node: the API tree can list the same skill twice,
11
+ * which inflates a standard's denominator (achieved/total) and leaves a finished standard
12
+ * stuck below 100%, e.g. 18 unique skills counted as 18/19. (students-web#4038)
13
+ *
10
14
  * Acts as a single place to sanitize the tree API response before it enters the app.
11
15
  * Can be extended with additional normalizations as new edge cases arise.
12
16
  */
@@ -38,7 +42,7 @@ export class TreeNormalizer {
38
42
  id,
39
43
  {
40
44
  ...node,
41
- skills: node.skills.filter((sid) => validIds.has(sid)),
45
+ skills: [...new Set(node.skills.filter((sid) => validIds.has(sid)))],
42
46
  children: node.children.filter((cid) => !emptyIds.has(cid)),
43
47
  },
44
48
  ]),