@magmamath/students-features 1.3.12-rc.2 → 1.3.13

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 (95) hide show
  1. package/dist/commonjs/features/chatbot/helpers.js +5 -1
  2. package/dist/commonjs/features/chatbot/helpers.js.map +1 -1
  3. package/dist/commonjs/features/chatbot/model/ChatBotModel.js +1 -0
  4. package/dist/commonjs/features/chatbot/model/ChatBotModel.js.map +1 -1
  5. package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -1
  6. package/dist/commonjs/features/pmProgress/components/chart/components/SlicesPaths.js +1 -1
  7. package/dist/commonjs/features/pmProgress/components/chart/components/SlicesPaths.js.map +1 -1
  8. package/dist/commonjs/features/pmProgress/components/header/NextUp.js +9 -5
  9. package/dist/commonjs/features/pmProgress/components/header/NextUp.js.map +1 -1
  10. package/dist/commonjs/features/pmProgress/components/insights/PmInsights.js +1 -1
  11. package/dist/commonjs/features/pmProgress/components/insights/PmInsights.js.map +1 -1
  12. package/dist/commonjs/features/pmProgress/components/list/PmDomainList.js +1 -1
  13. package/dist/commonjs/features/pmProgress/components/list/PmDomainList.js.map +1 -1
  14. package/dist/commonjs/features/pmProgress/components/standard/StandardTag.js +1 -1
  15. package/dist/commonjs/features/pmProgress/components/standard/StandardTag.js.map +1 -1
  16. package/dist/commonjs/features/pmProgress/model/PmTreeModel.js +16 -18
  17. package/dist/commonjs/features/pmProgress/model/PmTreeModel.js.map +1 -1
  18. package/dist/commonjs/features/pmProgress/shared/pmProgress.constants.js +1 -1
  19. package/dist/commonjs/features/pmProgress/shared/pmProgress.helpers.js +2 -6
  20. package/dist/commonjs/features/pmProgress/shared/pmProgress.helpers.js.map +1 -1
  21. package/dist/commonjs/features/voice/recording/components/VoiceRecordButton.js +14 -4
  22. package/dist/commonjs/features/voice/recording/components/VoiceRecordButton.js.map +1 -1
  23. package/dist/module/features/chatbot/helpers.js +5 -1
  24. package/dist/module/features/chatbot/helpers.js.map +1 -1
  25. package/dist/module/features/chatbot/model/ChatBotModel.js +1 -0
  26. package/dist/module/features/chatbot/model/ChatBotModel.js.map +1 -1
  27. package/dist/module/features/chatbot/types/model.types.js.map +1 -1
  28. package/dist/module/features/pmProgress/components/chart/components/SlicesPaths.js +1 -1
  29. package/dist/module/features/pmProgress/components/chart/components/SlicesPaths.js.map +1 -1
  30. package/dist/module/features/pmProgress/components/header/NextUp.js +10 -6
  31. package/dist/module/features/pmProgress/components/header/NextUp.js.map +1 -1
  32. package/dist/module/features/pmProgress/components/insights/PmInsights.js +1 -1
  33. package/dist/module/features/pmProgress/components/insights/PmInsights.js.map +1 -1
  34. package/dist/module/features/pmProgress/components/list/PmDomainList.js +1 -1
  35. package/dist/module/features/pmProgress/components/list/PmDomainList.js.map +1 -1
  36. package/dist/module/features/pmProgress/components/standard/StandardTag.js +1 -1
  37. package/dist/module/features/pmProgress/components/standard/StandardTag.js.map +1 -1
  38. package/dist/module/features/pmProgress/model/PmTreeModel.js +18 -20
  39. package/dist/module/features/pmProgress/model/PmTreeModel.js.map +1 -1
  40. package/dist/module/features/pmProgress/shared/pmProgress.constants.js +1 -1
  41. package/dist/module/features/pmProgress/shared/pmProgress.helpers.js +0 -2
  42. package/dist/module/features/pmProgress/shared/pmProgress.helpers.js.map +1 -1
  43. package/dist/module/features/voice/recording/components/VoiceRecordButton.js +16 -6
  44. package/dist/module/features/voice/recording/components/VoiceRecordButton.js.map +1 -1
  45. package/dist/typescript/commonjs/features/chatbot/helpers.d.ts.map +1 -1
  46. package/dist/typescript/commonjs/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  47. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +2 -0
  48. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
  49. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +1 -0
  50. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -1
  51. package/dist/typescript/commonjs/features/pmProgress/components/header/NextUp.d.ts.map +1 -1
  52. package/dist/typescript/commonjs/features/pmProgress/model/PmTreeModel.d.ts +3 -3
  53. package/dist/typescript/commonjs/features/pmProgress/model/PmTreeModel.d.ts.map +1 -1
  54. package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.constants.d.ts +1 -1
  55. package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.constants.d.ts.map +1 -1
  56. package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.helpers.d.ts +0 -4
  57. package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.helpers.d.ts.map +1 -1
  58. package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordButton.d.ts.map +1 -1
  59. package/dist/typescript/module/features/chatbot/helpers.d.ts.map +1 -1
  60. package/dist/typescript/module/features/chatbot/model/ChatBotModel.d.ts.map +1 -1
  61. package/dist/typescript/module/features/chatbot/types/api.types.d.ts +2 -0
  62. package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
  63. package/dist/typescript/module/features/chatbot/types/model.types.d.ts +1 -0
  64. package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -1
  65. package/dist/typescript/module/features/pmProgress/components/header/NextUp.d.ts.map +1 -1
  66. package/dist/typescript/module/features/pmProgress/model/PmTreeModel.d.ts +3 -3
  67. package/dist/typescript/module/features/pmProgress/model/PmTreeModel.d.ts.map +1 -1
  68. package/dist/typescript/module/features/pmProgress/shared/pmProgress.constants.d.ts +1 -1
  69. package/dist/typescript/module/features/pmProgress/shared/pmProgress.constants.d.ts.map +1 -1
  70. package/dist/typescript/module/features/pmProgress/shared/pmProgress.helpers.d.ts +0 -4
  71. package/dist/typescript/module/features/pmProgress/shared/pmProgress.helpers.d.ts.map +1 -1
  72. package/dist/typescript/module/features/voice/recording/components/VoiceRecordButton.d.ts.map +1 -1
  73. package/package.json +1 -1
  74. package/src/features/chatbot/helpers.ts +2 -0
  75. package/src/features/chatbot/model/ChatBotModel.ts +1 -0
  76. package/src/features/chatbot/types/api.types.ts +2 -0
  77. package/src/features/chatbot/types/model.types.ts +1 -0
  78. package/src/features/pmProgress/components/chart/components/SlicesPaths.tsx +1 -1
  79. package/src/features/pmProgress/components/header/NextUp.tsx +13 -6
  80. package/src/features/pmProgress/components/insights/PmInsights.tsx +1 -1
  81. package/src/features/pmProgress/components/list/PmDomainList.tsx +1 -1
  82. package/src/features/pmProgress/components/standard/StandardTag.tsx +1 -1
  83. package/src/features/pmProgress/model/PmTreeModel.ts +17 -26
  84. package/src/features/pmProgress/shared/pmProgress.constants.ts +1 -1
  85. package/src/features/pmProgress/shared/pmProgress.helpers.ts +0 -11
  86. package/src/features/voice/recording/components/VoiceRecordButton.tsx +24 -10
  87. package/dist/commonjs/features/pmProgress/hooks/useNextUpDomain.js +0 -42
  88. package/dist/commonjs/features/pmProgress/hooks/useNextUpDomain.js.map +0 -1
  89. package/dist/module/features/pmProgress/hooks/useNextUpDomain.js +0 -37
  90. package/dist/module/features/pmProgress/hooks/useNextUpDomain.js.map +0 -1
  91. package/dist/typescript/commonjs/features/pmProgress/hooks/useNextUpDomain.d.ts +0 -5
  92. package/dist/typescript/commonjs/features/pmProgress/hooks/useNextUpDomain.d.ts.map +0 -1
  93. package/dist/typescript/module/features/pmProgress/hooks/useNextUpDomain.d.ts +0 -5
  94. package/dist/typescript/module/features/pmProgress/hooks/useNextUpDomain.d.ts.map +0 -1
  95. package/src/features/pmProgress/hooks/useNextUpDomain.ts +0 -31
@@ -66,6 +66,7 @@ export function prepareChatRequestPayload(
66
66
  answerOptions,
67
67
  answer,
68
68
  chatHistory,
69
+ assignmentGrade,
69
70
  } = payload
70
71
 
71
72
  if (freeTextMessage) {
@@ -106,6 +107,7 @@ export function prepareChatRequestPayload(
106
107
  ...(imageAltText && { altText: imageAltText }),
107
108
  ...(!!problemStandards?.length && { problemStandards }),
108
109
  ...(!!answerOptions?.length && { answerOptions }),
110
+ ...(assignmentGrade !== undefined && { assignmentGrade }),
109
111
  },
110
112
  }
111
113
  }
@@ -245,6 +245,7 @@ export class ChatbotModel {
245
245
  imageAltText: context.imageDescription,
246
246
  imageCdnId: context.imageCdnId,
247
247
  conversationId: cache[key].conversationId,
248
+ assignmentGrade: context.assignmentGrade,
248
249
  ...(isFreeText && { freeTextMessage: message }),
249
250
  ...(context.assignmentId && {
250
251
  chatHistory: {
@@ -64,6 +64,7 @@ export type PostMessagePayload = {
64
64
  freeTextMessage?: string
65
65
  conversationId?: string | null
66
66
  chatHistory?: ChatHistory
67
+ assignmentGrade?: number
67
68
  }
68
69
 
69
70
  export type PostMessageResponse = {
@@ -128,6 +129,7 @@ export type ChatHintPayload = {
128
129
  hintNumber: number
129
130
  studentInput: string
130
131
  answerOptions?: string[]
132
+ assignmentGrade?: number
131
133
  }
132
134
 
133
135
  export type ChatHintResponse = {
@@ -152,6 +152,7 @@ export type ChatbotContext = {
152
152
  problemStandards?: ProblemStandard[]
153
153
  assignmentId?: string
154
154
  problemId?: string
155
+ assignmentGrade?: number
155
156
  }
156
157
 
157
158
  export type ReinitConversationProps = {
@@ -20,7 +20,7 @@ export const SlicesPaths = ({ slices, pieChartManager, config }: SlicesPathsProp
20
20
  const [hoveredId, expandedId, domains] = useUnit([
21
21
  model.highlight.$hoveredId,
22
22
  model.highlight.$expandedId,
23
- model.tree.$domainsInGrade,
23
+ model.tree.$domains,
24
24
  ])
25
25
 
26
26
  const highlightedId = hoveredId ?? expandedId
@@ -4,26 +4,33 @@ import { COLORS, HeadingVariants, SPACING, Typography } from '@magmamath/react-n
4
4
  import { SketchArrowRight } from '../../../../shared/icons/SketchArrowRight'
5
5
  import { SliceDiamondIcon } from '../../../../shared/icons/SliceDiamondIcon'
6
6
  import { useText } from '../../../../shared/translation'
7
- import { useUnit } from 'effector-react'
7
+ import { useUnit, useStoreMap } from 'effector-react'
8
8
  import { usePmProgress } from '../../context/PmProgressContext'
9
+ import { isFluencyDomain } from '../../shared/pmProgress.helpers'
9
10
  import { OpeningLoaderId, SolvingFlow } from '../../shared/pmProgress.constants'
10
11
  import { StartButton } from './StartButton'
11
- import { useNextUpDomain } from '../../hooks/useNextUpDomain'
12
12
 
13
13
  export const NextUp = () => {
14
14
  const t = useText()
15
15
  const { model, onStartPress } = usePmProgress()
16
- const nextUp = useNextUpDomain()
17
16
 
18
17
  const status = useUnit(model.tree.$status)
19
18
  const loaderOpeningId = useUnit(model.solving.$loaderOpeningId)
20
19
 
20
+ const nextUp = useStoreMap(model.tree.$domains, (domains) =>
21
+ domains.find((domain) => {
22
+ const isFluency = isFluencyDomain(domain.title)
23
+ const isDomainCompleted = domain.standards.every((standard) => standard.isCompleted)
24
+ return !isFluency && !isDomainCompleted
25
+ }),
26
+ )
27
+
21
28
  const isLoading = loaderOpeningId === OpeningLoaderId.START_BUTTON
22
29
  const isSkillOpeningActionPending = !!(loaderOpeningId !== null || status)
23
30
 
24
31
  return (
25
32
  <View style={styles.container}>
26
- {nextUp.domain && !status && (
33
+ {nextUp && !status && (
27
34
  <>
28
35
  <View style={styles.content}>
29
36
  <View style={styles.subtitle}>
@@ -33,10 +40,10 @@ export const NextUp = () => {
33
40
  </View>
34
41
  <View style={[styles.row, styles.tilted]}>
35
42
  <Typography variant={HeadingVariants.H7} style={styles.muted}>
36
- {nextUp.domain.title}
43
+ {nextUp?.title}
37
44
  </Typography>
38
45
  <View style={styles.diamond}>
39
- <SliceDiamondIcon color={nextUp.domain.color} />
46
+ <SliceDiamondIcon color={nextUp?.color} />
40
47
  </View>
41
48
  </View>
42
49
  </View>
@@ -15,7 +15,7 @@ import {
15
15
  export const PmInsights = () => {
16
16
  const { model } = usePmProgress()
17
17
  const [chartSize, setChartSize] = useState(MAX_PIE_CHART_SIZE)
18
- const chartData = useStoreMap(model.tree.$domainsInGrade, (domains) =>
18
+ const chartData = useStoreMap(model.tree.$domains, (domains) =>
19
19
  domains.map((domain) => ({
20
20
  value: 1,
21
21
  fillPercent: Math.round(domain.scorePercentage),
@@ -11,7 +11,7 @@ import { SolvingFlow } from '../../shared/pmProgress.constants'
11
11
 
12
12
  export const PmDomainList = () => {
13
13
  const { model, onStandardPress } = usePmProgress()
14
- const domains = useUnit(model.tree.$domainsInGrade)
14
+ const domains = useUnit(model.tree.$domains)
15
15
  const expandedId = useUnit(model.highlight.$expandedId)
16
16
  const hoveredId = useUnit(model.highlight.$hoveredId)
17
17
  const loaderOpeningId = useUnit(model.solving.$loaderOpeningId)
@@ -118,7 +118,7 @@ type StandardTagProps = {
118
118
 
119
119
  export const StandardTag = ({ skillId, model }: StandardTagProps) => {
120
120
  const standardInfo = useStoreMap({
121
- store: model.tree.$domainsInGrade,
121
+ store: model.tree.$domains,
122
122
  keys: [skillId],
123
123
  fn: (domains, [skillId]) => {
124
124
  const domain = domains.find((d) => d.standards.some((s) => s.skillIds.includes(skillId)))
@@ -1,4 +1,4 @@
1
- import { attach, combine, createEffect, createEvent, createStore, restore, sample } from 'effector'
1
+ import { attach, createEffect, createEvent, createStore, restore, sample } from 'effector'
2
2
  import { createAction } from 'effector-action'
3
3
  import {
4
4
  Domain,
@@ -18,7 +18,6 @@ import {
18
18
  getInitialPmGrade,
19
19
  getTreeGrades,
20
20
  isTreeDataReady,
21
- isTreeDataWithoutGradeReady,
22
21
  } from '../shared/pmProgress.helpers'
23
22
  import { TreeNormalizer } from '../shared/TreeNormalizer'
24
23
  import { persist } from 'effector-storage/session'
@@ -31,14 +30,12 @@ export class PmTreeModel {
31
30
  private readonly $user = createStore<User | null>(null)
32
31
 
33
32
  private readonly setupInitialGrade = createEvent<SetupInitialGradeProps>()
33
+ private readonly setDomains = createEvent<Domain[]>()
34
34
  public readonly setGrade = createEvent<number | null>()
35
35
 
36
36
  public readonly $isInitialized = createStore(false)
37
37
  public readonly $grade = restore(this.setGrade, null)
38
- public readonly $domains = createStore<Record<number, Domain[]>>({})
39
- public readonly $domainsInGrade = combine(this.$domains, this.$grade, (domains, grade) =>
40
- grade !== null ? (domains[grade] ?? []) : [],
41
- )
38
+ public readonly $domains = restore(this.setDomains, [])
42
39
  public readonly $grades = createStore<Grade[]>([])
43
40
  public readonly $status = createStore<PmProgressStatus | null>(null)
44
41
 
@@ -51,7 +48,7 @@ export class PmTreeModel {
51
48
  this.setupFailedAndLockedStatus()
52
49
  this.setupTreeInit()
53
50
  this.setupGradeInit()
54
- this.setupDomainsInTree()
51
+ this.setupDomainStructure()
55
52
  }
56
53
 
57
54
  public readonly initTreeFx = createEffect(async ({ user }: PmProgressGateProps) => {
@@ -153,28 +150,22 @@ export class PmTreeModel {
153
150
  })
154
151
  }
155
152
 
156
- private setupDomainsInTree() {
153
+ private setupDomainStructure() {
157
154
  sample({
158
- clock: this.initTreeFx.doneData,
159
- source: { tree: this.$tree, stats: this.$stats, user: this.$user },
160
- filter: isTreeDataWithoutGradeReady,
161
- fn: ({ tree, stats, user }) => {
162
- const treeNodes = Object.values(tree.treeMapping)
163
- const grades = getTreeGrades(tree, user).filter((g) => !g.isLocked)
164
-
165
- return Object.fromEntries(
166
- grades.map((grade) => {
167
- const [treeWithStats] = enhanceProgressMatrixData(
168
- treeNodes,
169
- stats,
170
- [{ entityId: user._id, name: user.fullName }],
171
- grade.value,
172
- )
173
- return [grade.value, getDomainStructure(treeWithStats, tree.treeMapping)]
174
- }),
155
+ clock: [this.$grade, this.initTreeFx.doneData],
156
+ source: { tree: this.$tree, stats: this.$stats, user: this.$user, grade: this.$grade },
157
+ filter: isTreeDataReady,
158
+ fn: ({ tree, stats, user, grade }) => {
159
+ const [treeWithUserStats] = enhanceProgressMatrixData(
160
+ Object.values(tree.treeMapping),
161
+ stats,
162
+ [{ entityId: user._id, name: user.fullName }],
163
+ grade as number,
175
164
  )
165
+
166
+ return getDomainStructure(treeWithUserStats, tree.treeMapping)
176
167
  },
177
- target: this.$domains,
168
+ target: this.setDomains,
178
169
  })
179
170
  }
180
171
  }
@@ -35,7 +35,7 @@ export enum PmProgressStatus {
35
35
  export enum SessionStorageKeys {
36
36
  SOLVING_QUEUE = 'PM_SOLVING_QUEUE',
37
37
  GRADE = 'PM_GRADE',
38
- DOMAINS = 'PM_DOMAINS_IN_TREE',
38
+ DOMAINS = 'PM_DOMAINS',
39
39
  }
40
40
 
41
41
  /**
@@ -171,14 +171,6 @@ type TreeDataReady = {
171
171
  export const isTreeDataReady = (source: TreeDataSource): source is TreeDataReady =>
172
172
  source.tree !== null && source.stats !== null && source.user !== null && source.grade !== null
173
173
 
174
- type TreeDataWithoutGrade = Omit<TreeDataSource, 'grade'>
175
- type TreeDataWithoutGradeReady = Omit<TreeDataReady, 'grade'>
176
-
177
- export const isTreeDataWithoutGradeReady = (
178
- source: TreeDataWithoutGrade,
179
- ): source is TreeDataWithoutGradeReady =>
180
- source.tree !== null && source.stats !== null && source.user !== null
181
-
182
174
  export const createChartConfig = (size: number): PieChartManagerConfig => {
183
175
  const OUTER_MARGIN = 5
184
176
  return {
@@ -269,9 +261,6 @@ export const withoutDuplicates = (skills: (Skill | undefined)[]): Skill[] => {
269
261
  })
270
262
  }
271
263
 
272
- export const findDomainBySkillId = (skillId: string, domains: Domain[]): Domain | undefined =>
273
- domains.find((d) => d.standards.some((s) => s.skillIds.includes(skillId)))
274
-
275
264
  // Reorders grades starting from the given grade, wrapping around. [1,2,3] with start=2 → [2,3,1]
276
265
  export const startGradesFrom = (grades: Grade[], startGrade: number): Grade[] => {
277
266
  const index = grades.findIndex(({ value }) => value === startGrade)
@@ -4,6 +4,7 @@ import {
4
4
  Button,
5
5
  ButtonColor,
6
6
  ButtonSize,
7
+ ButtonStates,
7
8
  ButtonStyle,
8
9
  ButtonVariant,
9
10
  CheckIcon,
@@ -95,16 +96,29 @@ const AdvancedButton = ({ isRecording, isIdle, disabled, onPressIn }: AdvancedBu
95
96
  onPressIn={onPressIn}
96
97
  disabled={disabled}
97
98
  >
98
- <View style={[styles.advancedIconContainer, !isIdle && styles.advancedIconContainerActive]}>
99
- {isRecording ? (
100
- <CheckIcon size={18} color={COLORS.NEUTRAL_1} />
101
- ) : (
102
- <MicrophoneIcon
103
- style={styles.advancedMicrophoneIcon}
104
- color={disabled ? COLORS.NEUTRAL_5 : isIdle ? COLORS.NEUTRAL_9 : COLORS.NEUTRAL_1}
105
- />
106
- )}
107
- </View>
99
+ <Button
100
+ customColorScheme={{
101
+ [ButtonStates.ACTIVE]: {
102
+ backgroundColor: COLORS.PRIMARY_BLUE,
103
+ borderColor: COLORS.PRIMARY_BLUE,
104
+ raiseColor: COLORS.PRIMARY_BLUE,
105
+ color: COLORS.PRIMARY_BLUE,
106
+ },
107
+ }}
108
+ isActive={isRecording}
109
+ variant={ButtonVariant.TERTIARY}
110
+ onPressIn={onPressIn}
111
+ icon={
112
+ isRecording ? (
113
+ <CheckIcon size={25} color={COLORS.NEUTRAL_1} />
114
+ ) : (
115
+ <MicrophoneIcon
116
+ style={styles.advancedMicrophoneIcon}
117
+ color={disabled ? COLORS.NEUTRAL_5 : isIdle ? COLORS.NEUTRAL_9 : COLORS.NEUTRAL_1}
118
+ />
119
+ )
120
+ }
121
+ />
108
122
  </Pressable>
109
123
  )
110
124
 
@@ -1,42 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useNextUpDomain = void 0;
7
- var _effectorReact = require("effector-react");
8
- var _PmProgressContext = require("../context/PmProgressContext.js");
9
- var _pmProgressHelpers = require("../shared/pmProgress.helpers.js");
10
- const useNextUpDomain = () => {
11
- const {
12
- model
13
- } = (0, _PmProgressContext.usePmProgress)();
14
- const magmaRecs = (0, _effectorReact.useUnit)(model.recommendations.$magma);
15
- const domainsInTree = (0, _effectorReact.useUnit)(model.tree.$domains);
16
- return (0, _effectorReact.useStoreMap)({
17
- store: model.tree.$domainsInGrade,
18
- keys: [magmaRecs, domainsInTree],
19
- fn: domainsInGrade => {
20
- const firstRec = magmaRecs.items[0];
21
- if (firstRec) {
22
- const allDomains = Object.values(domainsInTree).flat();
23
- const domain = (0, _pmProgressHelpers.findDomainBySkillId)(firstRec._id, allDomains) ?? null;
24
- return {
25
- domain,
26
- isFromRecommendation: true
27
- };
28
- }
29
- const domain = domainsInGrade.find(domain => {
30
- const isFluency = (0, _pmProgressHelpers.isFluencyDomain)(domain.title);
31
- const isDomainCompleted = domain.standards.every(standard => standard.isCompleted);
32
- return !isFluency && !isDomainCompleted;
33
- }) ?? null;
34
- return {
35
- domain,
36
- isFromRecommendation: false
37
- };
38
- }
39
- });
40
- };
41
- exports.useNextUpDomain = useNextUpDomain;
42
- //# sourceMappingURL=useNextUpDomain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_effectorReact","require","_PmProgressContext","_pmProgressHelpers","useNextUpDomain","model","usePmProgress","magmaRecs","useUnit","recommendations","$magma","domainsInTree","tree","$domains","useStoreMap","store","$domainsInGrade","keys","fn","domainsInGrade","firstRec","items","allDomains","Object","values","flat","domain","findDomainBySkillId","_id","isFromRecommendation","find","isFluency","isFluencyDomain","title","isDomainCompleted","standards","every","standard","isCompleted","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/hooks/useNextUpDomain.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAEO,MAAMG,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAM;IAAEC;EAAM,CAAC,GAAG,IAAAC,gCAAa,EAAC,CAAC;EACjC,MAAMC,SAAS,GAAG,IAAAC,sBAAO,EAACH,KAAK,CAACI,eAAe,CAACC,MAAM,CAAC;EACvD,MAAMC,aAAa,GAAG,IAAAH,sBAAO,EAACH,KAAK,CAACO,IAAI,CAACC,QAAQ,CAAC;EAElD,OAAO,IAAAC,0BAAW,EAAC;IACjBC,KAAK,EAAEV,KAAK,CAACO,IAAI,CAACI,eAAe;IACjCC,IAAI,EAAE,CAACV,SAAS,EAAEI,aAAa,CAAC;IAChCO,EAAE,EAAGC,cAAc,IAAK;MACtB,MAAMC,QAAQ,GAAGb,SAAS,CAACc,KAAK,CAAC,CAAC,CAAC;MACnC,IAAID,QAAQ,EAAE;QACZ,MAAME,UAAU,GAAGC,MAAM,CAACC,MAAM,CAACb,aAAa,CAAC,CAACc,IAAI,CAAC,CAAC;QACtD,MAAMC,MAAM,GAAG,IAAAC,sCAAmB,EAACP,QAAQ,CAACQ,GAAG,EAAEN,UAAU,CAAC,IAAI,IAAI;QACpE,OAAO;UAAEI,MAAM;UAAEG,oBAAoB,EAAE;QAAK,CAAC;MAC/C;MAEA,MAAMH,MAAM,GACVP,cAAc,CAACW,IAAI,CAAEJ,MAAM,IAAK;QAC9B,MAAMK,SAAS,GAAG,IAAAC,kCAAe,EAACN,MAAM,CAACO,KAAK,CAAC;QAC/C,MAAMC,iBAAiB,GAAGR,MAAM,CAACS,SAAS,CAACC,KAAK,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,WAAW,CAAC;QACpF,OAAO,CAACP,SAAS,IAAI,CAACG,iBAAiB;MACzC,CAAC,CAAC,IAAI,IAAI;MAEZ,OAAO;QAAER,MAAM;QAAEG,oBAAoB,EAAE;MAAM,CAAC;IAChD;EACF,CAAC,CAAC;AACJ,CAAC;AAAAU,OAAA,CAAAnC,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -1,37 +0,0 @@
1
- "use strict";
2
-
3
- import { useUnit, useStoreMap } from 'effector-react';
4
- import { usePmProgress } from "../context/PmProgressContext.js";
5
- import { findDomainBySkillId, isFluencyDomain } from "../shared/pmProgress.helpers.js";
6
- export const useNextUpDomain = () => {
7
- const {
8
- model
9
- } = usePmProgress();
10
- const magmaRecs = useUnit(model.recommendations.$magma);
11
- const domainsInTree = useUnit(model.tree.$domains);
12
- return useStoreMap({
13
- store: model.tree.$domainsInGrade,
14
- keys: [magmaRecs, domainsInTree],
15
- fn: domainsInGrade => {
16
- const firstRec = magmaRecs.items[0];
17
- if (firstRec) {
18
- const allDomains = Object.values(domainsInTree).flat();
19
- const domain = findDomainBySkillId(firstRec._id, allDomains) ?? null;
20
- return {
21
- domain,
22
- isFromRecommendation: true
23
- };
24
- }
25
- const domain = domainsInGrade.find(domain => {
26
- const isFluency = isFluencyDomain(domain.title);
27
- const isDomainCompleted = domain.standards.every(standard => standard.isCompleted);
28
- return !isFluency && !isDomainCompleted;
29
- }) ?? null;
30
- return {
31
- domain,
32
- isFromRecommendation: false
33
- };
34
- }
35
- });
36
- };
37
- //# sourceMappingURL=useNextUpDomain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useUnit","useStoreMap","usePmProgress","findDomainBySkillId","isFluencyDomain","useNextUpDomain","model","magmaRecs","recommendations","$magma","domainsInTree","tree","$domains","store","$domainsInGrade","keys","fn","domainsInGrade","firstRec","items","allDomains","Object","values","flat","domain","_id","isFromRecommendation","find","isFluency","title","isDomainCompleted","standards","every","standard","isCompleted"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/hooks/useNextUpDomain.ts"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,WAAW,QAAQ,gBAAgB;AACrD,SAASC,aAAa,QAAQ,iCAA8B;AAC5D,SAASC,mBAAmB,EAAEC,eAAe,QAAQ,iCAA8B;AAEnF,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAM;IAAEC;EAAM,CAAC,GAAGJ,aAAa,CAAC,CAAC;EACjC,MAAMK,SAAS,GAAGP,OAAO,CAACM,KAAK,CAACE,eAAe,CAACC,MAAM,CAAC;EACvD,MAAMC,aAAa,GAAGV,OAAO,CAACM,KAAK,CAACK,IAAI,CAACC,QAAQ,CAAC;EAElD,OAAOX,WAAW,CAAC;IACjBY,KAAK,EAAEP,KAAK,CAACK,IAAI,CAACG,eAAe;IACjCC,IAAI,EAAE,CAACR,SAAS,EAAEG,aAAa,CAAC;IAChCM,EAAE,EAAGC,cAAc,IAAK;MACtB,MAAMC,QAAQ,GAAGX,SAAS,CAACY,KAAK,CAAC,CAAC,CAAC;MACnC,IAAID,QAAQ,EAAE;QACZ,MAAME,UAAU,GAAGC,MAAM,CAACC,MAAM,CAACZ,aAAa,CAAC,CAACa,IAAI,CAAC,CAAC;QACtD,MAAMC,MAAM,GAAGrB,mBAAmB,CAACe,QAAQ,CAACO,GAAG,EAAEL,UAAU,CAAC,IAAI,IAAI;QACpE,OAAO;UAAEI,MAAM;UAAEE,oBAAoB,EAAE;QAAK,CAAC;MAC/C;MAEA,MAAMF,MAAM,GACVP,cAAc,CAACU,IAAI,CAAEH,MAAM,IAAK;QAC9B,MAAMI,SAAS,GAAGxB,eAAe,CAACoB,MAAM,CAACK,KAAK,CAAC;QAC/C,MAAMC,iBAAiB,GAAGN,MAAM,CAACO,SAAS,CAACC,KAAK,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,WAAW,CAAC;QACpF,OAAO,CAACN,SAAS,IAAI,CAACE,iBAAiB;MACzC,CAAC,CAAC,IAAI,IAAI;MAEZ,OAAO;QAAEN,MAAM;QAAEE,oBAAoB,EAAE;MAAM,CAAC;IAChD;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -1,5 +0,0 @@
1
- export declare const useNextUpDomain: () => {
2
- domain: import("..").Domain | null;
3
- isFromRecommendation: boolean;
4
- };
5
- //# sourceMappingURL=useNextUpDomain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useNextUpDomain.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/hooks/useNextUpDomain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;CA0B3B,CAAA"}
@@ -1,5 +0,0 @@
1
- export declare const useNextUpDomain: () => {
2
- domain: import("..").Domain | null;
3
- isFromRecommendation: boolean;
4
- };
5
- //# sourceMappingURL=useNextUpDomain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useNextUpDomain.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/hooks/useNextUpDomain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;CA0B3B,CAAA"}
@@ -1,31 +0,0 @@
1
- import { useUnit, useStoreMap } from 'effector-react'
2
- import { usePmProgress } from '../context/PmProgressContext'
3
- import { findDomainBySkillId, isFluencyDomain } from '../shared/pmProgress.helpers'
4
-
5
- export const useNextUpDomain = () => {
6
- const { model } = usePmProgress()
7
- const magmaRecs = useUnit(model.recommendations.$magma)
8
- const domainsInTree = useUnit(model.tree.$domains)
9
-
10
- return useStoreMap({
11
- store: model.tree.$domainsInGrade,
12
- keys: [magmaRecs, domainsInTree],
13
- fn: (domainsInGrade) => {
14
- const firstRec = magmaRecs.items[0]
15
- if (firstRec) {
16
- const allDomains = Object.values(domainsInTree).flat()
17
- const domain = findDomainBySkillId(firstRec._id, allDomains) ?? null
18
- return { domain, isFromRecommendation: true }
19
- }
20
-
21
- const domain =
22
- domainsInGrade.find((domain) => {
23
- const isFluency = isFluencyDomain(domain.title)
24
- const isDomainCompleted = domain.standards.every((standard) => standard.isCompleted)
25
- return !isFluency && !isDomainCompleted
26
- }) ?? null
27
-
28
- return { domain, isFromRecommendation: false }
29
- },
30
- })
31
- }