@cuemath/leap 3.5.52-as1 → 3.5.53-j1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/homework/homework-card.js +122 -121
- package/dist/features/homework/homework-card.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
- package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +56 -55
- package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
- package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +16 -15
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
- package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
- package/dist/features/milestone/create/comps/body-layout/body-layout.js +30 -29
- package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +77 -74
- package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
- package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +82 -79
- package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
- package/dist/features/milestone/create/milestone-create-styled.js +8 -8
- package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
- package/dist/features/milestone/create/milestone-create.js +48 -46
- package/dist/features/milestone/create/milestone-create.js.map +1 -1
- package/dist/features/milestone/edit/goal-draft-edit-sync.js +26 -0
- package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
- package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +72 -66
- package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
- package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
- package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
- package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
- package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +109 -105
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +2 -2
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +21 -16
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +106 -98
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +136 -117
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +96 -92
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
- package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +78 -81
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -25
- package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +39 -33
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +50 -0
- package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +25 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +43 -53
- package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +218 -174
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +198 -0
- package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +69 -67
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +46 -45
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +34 -32
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +52 -0
- package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +51 -41
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +85 -71
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +5 -5
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +25 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +150 -89
- package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
- package/dist/features/sheet-v2/resource-list/resource-list.js +26 -24
- package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/index.js +218 -91
- package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
- package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
- package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
- package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js +125 -115
- package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js +3 -2
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +69 -54
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +44 -33
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +25 -22
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +48 -44
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
- package/dist/index.d.ts +138 -2
- package/dist/node_modules/decode-uri-component/index.js.map +1 -0
- package/dist/node_modules/query-string/base.js +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
- package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
- package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
- package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
- package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
- package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
- package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
- package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
- package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
- package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
- package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
- package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
- /package/dist/node_modules/{query-string/node_modules/decode-uri-component → decode-uri-component}/index.js +0 -0
|
@@ -1,110 +1,124 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { memo as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { TESTS_CREATION_ANALYTICS_EVENTS as
|
|
9
|
-
import { ButtonWrapper as
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { jsx as t, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import { memo as N, useState as L, useMemo as G, useCallback as p, useEffect as x } from "react";
|
|
3
|
+
import O from "../../../../../ui/arrow-tooltip/arrow-tooltip.js";
|
|
4
|
+
import P from "../../../../../ui/buttons/button/button.js";
|
|
5
|
+
import l from "../../../../../ui/layout/flex-view.js";
|
|
6
|
+
import T from "../../../../../ui/text/text.js";
|
|
7
|
+
import k from "../../../../create/comps/body-layout/body-layout.js";
|
|
8
|
+
import { TESTS_CREATION_ANALYTICS_EVENTS as V } from "../../tests-creation-analytics-events.js";
|
|
9
|
+
import { ButtonWrapper as W } from "../../tests-creation-styled.js";
|
|
10
|
+
import { ETestsStage as S } from "../../tests-creation-types.js";
|
|
11
|
+
import { getDifficultyLevelCards as j, getTestDurationCards as H, getRecommendedTestDuration as K } from "../../utils/index.js";
|
|
12
|
+
import _ from "./test-radio-card/test-radio-card.js";
|
|
13
|
+
const oe = N(
|
|
14
|
+
function(v) {
|
|
15
|
+
var D;
|
|
16
|
+
const { onTestStageChange: s, testFormData: e, userType: A, isTrialSession: g, onFormDataChange: n } = v, a = A === "STUDENT", [r, h] = L(
|
|
17
|
+
e.difficultyLevel
|
|
18
|
+
), [o, y] = L(e.duration || 0), b = G(
|
|
18
19
|
() => ({
|
|
19
20
|
step: "difficulty_and_duration_selection",
|
|
20
|
-
duration:
|
|
21
|
-
difficulty_level:
|
|
21
|
+
duration: o * 60,
|
|
22
|
+
difficulty_level: r
|
|
22
23
|
}),
|
|
23
|
-
[
|
|
24
|
-
),
|
|
25
|
-
|
|
26
|
-
...
|
|
24
|
+
[o, r]
|
|
25
|
+
), R = p(() => {
|
|
26
|
+
s(S.CHAPTER_SELECTION, {
|
|
27
|
+
...e,
|
|
27
28
|
difficultyLevel: null,
|
|
28
29
|
duration: null
|
|
29
30
|
});
|
|
30
|
-
}, [
|
|
31
|
-
|
|
32
|
-
...
|
|
33
|
-
difficultyLevel:
|
|
34
|
-
duration:
|
|
31
|
+
}, [e, s]), X = p(() => {
|
|
32
|
+
r && o && s(S.PREVIEW, {
|
|
33
|
+
...e,
|
|
34
|
+
difficultyLevel: r,
|
|
35
|
+
duration: o
|
|
35
36
|
});
|
|
36
|
-
}, [
|
|
37
|
-
(
|
|
38
|
-
typeof
|
|
37
|
+
}, [r, o, e, s]), C = p(
|
|
38
|
+
(i) => {
|
|
39
|
+
a || (typeof i == "number" ? (y(i), n == null || n({
|
|
40
|
+
...e,
|
|
41
|
+
difficultyLevel: r,
|
|
42
|
+
duration: i
|
|
43
|
+
})) : (h(i), n == null || n({
|
|
44
|
+
...e,
|
|
45
|
+
difficultyLevel: i,
|
|
46
|
+
duration: o
|
|
47
|
+
})));
|
|
39
48
|
},
|
|
40
|
-
[
|
|
41
|
-
),
|
|
42
|
-
return
|
|
43
|
-
|
|
49
|
+
[a, n, e, r, o]
|
|
50
|
+
), $ = ((D = e.selectedChapters) == null ? void 0 : D.length) || 0, E = K($), w = j(), B = H();
|
|
51
|
+
return x(() => {
|
|
52
|
+
e.difficultyLevel !== void 0 && h(e.difficultyLevel);
|
|
53
|
+
}, [e.difficultyLevel]), x(() => {
|
|
54
|
+
e.duration !== void 0 && e.duration !== null && y(e.duration);
|
|
55
|
+
}, [e.duration]), /* @__PURE__ */ t(l, { children: /* @__PURE__ */ t(
|
|
56
|
+
k,
|
|
44
57
|
{
|
|
58
|
+
isTrialSession: g,
|
|
45
59
|
bodyHeight: "100%",
|
|
46
|
-
headerElement: /* @__PURE__ */
|
|
47
|
-
|
|
60
|
+
headerElement: /* @__PURE__ */ t(l, { $flexDirection: "row", $alignItems: "center", $flexGapX: 1, children: /* @__PURE__ */ c(T, { $renderAs: "ab2", children: [
|
|
61
|
+
$,
|
|
48
62
|
" Chapters selected"
|
|
49
63
|
] }) }),
|
|
50
|
-
onBackButtonClick:
|
|
51
|
-
bodyElement: /* @__PURE__ */
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
-
/* @__PURE__ */
|
|
54
|
-
/* @__PURE__ */
|
|
55
|
-
const { title:
|
|
56
|
-
return /* @__PURE__ */
|
|
57
|
-
|
|
64
|
+
onBackButtonClick: R,
|
|
65
|
+
bodyElement: /* @__PURE__ */ c(l, { $gapX: 3, $gutterX: 1, $flexWrap: !0, $flexGapX: 4, children: [
|
|
66
|
+
/* @__PURE__ */ c(l, { $flexGapX: 1.5, children: [
|
|
67
|
+
/* @__PURE__ */ t(T, { $renderAs: "ac3", $color: "BLACK_T_60", children: "Difficulty" }),
|
|
68
|
+
/* @__PURE__ */ t(l, { $flexDirection: "row", $flexGapX: 1.5, children: w.map((i, f) => {
|
|
69
|
+
const { title: u, value: d } = i;
|
|
70
|
+
return /* @__PURE__ */ t(
|
|
71
|
+
_,
|
|
58
72
|
{
|
|
59
73
|
widthX: 12.5,
|
|
60
|
-
...
|
|
61
|
-
selected:
|
|
74
|
+
...i,
|
|
75
|
+
selected: r === d,
|
|
62
76
|
isTestDifficultRendering: !0,
|
|
63
|
-
onTestRadioCardChange:
|
|
77
|
+
onTestRadioCardChange: C
|
|
64
78
|
},
|
|
65
|
-
`${
|
|
79
|
+
`${u}_${f}`
|
|
66
80
|
);
|
|
67
81
|
}) })
|
|
68
82
|
] }),
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
-
/* @__PURE__ */
|
|
71
|
-
/* @__PURE__ */
|
|
72
|
-
const { title:
|
|
73
|
-
return /* @__PURE__ */
|
|
74
|
-
|
|
83
|
+
/* @__PURE__ */ c(l, { $flexGapX: 1.5, children: [
|
|
84
|
+
/* @__PURE__ */ t(T, { $renderAs: "ac3", $color: "BLACK_T_60", children: "Duration" }),
|
|
85
|
+
/* @__PURE__ */ t(l, { $flexDirection: "row", $flexGapX: 1.5, children: B.map((i, f) => {
|
|
86
|
+
const { title: u, value: d = "" } = i, m = E === Number(d), I = d === o;
|
|
87
|
+
return /* @__PURE__ */ t(
|
|
88
|
+
O,
|
|
75
89
|
{
|
|
76
90
|
renderAs: "primary",
|
|
77
91
|
position: "bottom",
|
|
78
|
-
tooltipItem: Number(
|
|
92
|
+
tooltipItem: Number(d) > E ? "Too much time. Shorten duration or add chapters." : "Too less time. Extend duration or reduce chapters.",
|
|
79
93
|
widthX: 10.875,
|
|
80
|
-
hidden:
|
|
81
|
-
children: /* @__PURE__ */
|
|
82
|
-
|
|
94
|
+
hidden: m,
|
|
95
|
+
children: /* @__PURE__ */ t(
|
|
96
|
+
_,
|
|
83
97
|
{
|
|
84
98
|
widthX: 10.875,
|
|
85
|
-
...
|
|
86
|
-
selected:
|
|
87
|
-
isRecommended:
|
|
88
|
-
onTestRadioCardChange:
|
|
99
|
+
...i,
|
|
100
|
+
selected: I,
|
|
101
|
+
isRecommended: m,
|
|
102
|
+
onTestRadioCardChange: C
|
|
89
103
|
}
|
|
90
104
|
)
|
|
91
105
|
},
|
|
92
|
-
`${
|
|
106
|
+
`${u}_${f}`
|
|
93
107
|
);
|
|
94
108
|
}) })
|
|
95
109
|
] })
|
|
96
110
|
] }),
|
|
97
|
-
footerElement: /* @__PURE__ */
|
|
98
|
-
|
|
111
|
+
footerElement: a ? void 0 : /* @__PURE__ */ t(W, { children: /* @__PURE__ */ t(
|
|
112
|
+
P,
|
|
99
113
|
{
|
|
100
114
|
renderAs: "primary",
|
|
101
115
|
label: "Preview",
|
|
102
116
|
size: "small",
|
|
103
117
|
shape: "square",
|
|
104
|
-
onClick:
|
|
105
|
-
disabled: !
|
|
106
|
-
analyticsLabel:
|
|
107
|
-
analyticsProps:
|
|
118
|
+
onClick: X,
|
|
119
|
+
disabled: !o || !r,
|
|
120
|
+
analyticsLabel: V.CUSTOM_TEST_PREVIEWED,
|
|
121
|
+
analyticsProps: b
|
|
108
122
|
}
|
|
109
123
|
) })
|
|
110
124
|
}
|
|
@@ -112,6 +126,6 @@ const J = R(
|
|
|
112
126
|
}
|
|
113
127
|
);
|
|
114
128
|
export {
|
|
115
|
-
|
|
129
|
+
oe as default
|
|
116
130
|
};
|
|
117
131
|
//# sourceMappingURL=difficulty-and-duration-selection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"difficulty-and-duration-selection.js","sources":["../../../../../../../src/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.tsx"],"sourcesContent":["import { type FC, useState, memo, useCallback, useMemo } from 'react';\n\nimport ArrowTooltip from '../../../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../../../ui/buttons/button/button';\nimport FlexView from '../../../../../ui/layout/flex-view';\nimport Text from '../../../../../ui/text/text';\nimport BodyLayout from '../../../../create/comps/body-layout/body-layout';\nimport { TESTS_CREATION_ANALYTICS_EVENTS } from '../../tests-creation-analytics-events';\nimport { ButtonWrapper } from '../../tests-creation-styled';\nimport type { TTestDifficultyLevel } from '../../tests-creation-types';\nimport {\n getDifficultyLevelCards,\n getRecommendedTestDuration,\n getTestDurationCards,\n} from '../../utils';\nimport type { IDifficultyAndDurationSelectionProps } from './difficulty-and-duration-selection-types';\nimport TestRadioCard from './test-radio-card/test-radio-card';\n\nconst DifficultyAndDurationSelection: FC<IDifficultyAndDurationSelectionProps> = memo(\n function DifficultyAndDurationSelection(props) {\n const { onTestStageChange, testFormData } = props;\n\n const [testDifficultyLevel, setTestDifficultyLevel] = useState<TTestDifficultyLevel | null>(\n testFormData.difficultyLevel,\n );\n const [testDuration, setTestDuration] = useState(testFormData.duration || 0);\n\n const analyticsProps = useMemo(\n () => ({\n step: 'difficulty_and_duration_selection',\n duration: testDuration * 60,\n difficulty_level: testDifficultyLevel,\n }),\n [testDuration, testDifficultyLevel],\n );\n\n const handleOnBack = useCallback(() => {\n onTestStageChange('CHAPTER_SELECTION', {\n ...testFormData,\n difficultyLevel: null,\n duration: null,\n });\n }, [testFormData, onTestStageChange]);\n\n const handleOnPreview = useCallback(() => {\n if (testDifficultyLevel && testDuration) {\n onTestStageChange('PREVIEW', {\n ...testFormData,\n difficultyLevel: testDifficultyLevel,\n duration: testDuration,\n });\n }\n }, [testDifficultyLevel, testDuration, testFormData, onTestStageChange]);\n\n const handleOnTestRadioCardChange = useCallback(\n (value: TTestDifficultyLevel | number) => {\n if (typeof value === 'number') {\n setTestDuration(value);\n } else {\n setTestDifficultyLevel(value);\n }\n },\n [setTestDifficultyLevel, setTestDuration],\n );\n\n const selectedChaptersCount = testFormData.selectedChapters?.length || 0;\n const recommendedTestDuration = getRecommendedTestDuration(selectedChaptersCount);\n\n const difficultyCards = getDifficultyLevelCards();\n const durationCards = getTestDurationCards();\n\n return (\n <FlexView>\n <BodyLayout\n bodyHeight=\"100%\"\n headerElement={\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={1}>\n <Text $renderAs=\"ab2\">{selectedChaptersCount} Chapters selected</Text>\n </FlexView>\n }\n onBackButtonClick={handleOnBack}\n bodyElement={\n <FlexView $gapX={3} $gutterX={1} $flexWrap $flexGapX={4}>\n <FlexView $flexGapX={1.5}>\n <Text $renderAs=\"ac3\" $color=\"BLACK_T_60\">\n Difficulty\n </Text>\n\n <FlexView $flexDirection=\"row\" $flexGapX={1.5}>\n {difficultyCards.map((item, idx) => {\n const { title, value } = item;\n const selected = testDifficultyLevel === value;\n\n return (\n <TestRadioCard\n key={`${title}_${idx}`}\n widthX={12.5}\n {...item}\n selected={selected}\n isTestDifficultRendering\n onTestRadioCardChange={handleOnTestRadioCardChange}\n />\n );\n })}\n </FlexView>\n </FlexView>\n\n <FlexView $flexGapX={1.5}>\n <Text $renderAs=\"ac3\" $color=\"BLACK_T_60\">\n Duration\n </Text>\n\n <FlexView $flexDirection=\"row\" $flexGapX={1.5}>\n {durationCards.map((item, idx) => {\n const { title, value = '' } = item;\n const isRecommended = recommendedTestDuration === Number(value);\n const selected = value === testDuration;\n\n return (\n <ArrowTooltip\n key={`${title}_${idx}`}\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={\n Number(value) > recommendedTestDuration\n ? 'Too much time. Shorten duration or add chapters.'\n : 'Too less time. Extend duration or reduce chapters.'\n }\n widthX={10.875}\n hidden={isRecommended}\n >\n <TestRadioCard\n widthX={10.875}\n {...item}\n selected={selected}\n isRecommended={isRecommended}\n onTestRadioCardChange={handleOnTestRadioCardChange}\n />\n </ArrowTooltip>\n );\n })}\n </FlexView>\n </FlexView>\n </FlexView>\n }\n footerElement={\n <ButtonWrapper>\n <Button\n renderAs=\"primary\"\n label=\"Preview\"\n size=\"small\"\n shape=\"square\"\n onClick={handleOnPreview}\n disabled={!testDuration || !testDifficultyLevel}\n analyticsLabel={TESTS_CREATION_ANALYTICS_EVENTS.CUSTOM_TEST_PREVIEWED}\n analyticsProps={analyticsProps}\n />\n </ButtonWrapper>\n }\n />\n </FlexView>\n );\n },\n);\n\nexport default DifficultyAndDurationSelection;\n"],"names":["DifficultyAndDurationSelection","memo","props","onTestStageChange","testFormData","testDifficultyLevel","setTestDifficultyLevel","useState","testDuration","setTestDuration","analyticsProps","useMemo","handleOnBack","useCallback","handleOnPreview","handleOnTestRadioCardChange","value","selectedChaptersCount","_a","recommendedTestDuration","getRecommendedTestDuration","difficultyCards","getDifficultyLevelCards","durationCards","getTestDurationCards","FlexView","jsx","BodyLayout","jsxs","Text","item","idx","title","TestRadioCard","isRecommended","selected","ArrowTooltip","ButtonWrapper","Button","TESTS_CREATION_ANALYTICS_EVENTS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"difficulty-and-duration-selection.js","sources":["../../../../../../../src/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.tsx"],"sourcesContent":["import { type FC, useState, memo, useCallback, useMemo, useEffect } from 'react';\n\nimport ArrowTooltip from '../../../../../ui/arrow-tooltip/arrow-tooltip';\nimport Button from '../../../../../ui/buttons/button/button';\nimport FlexView from '../../../../../ui/layout/flex-view';\nimport Text from '../../../../../ui/text/text';\nimport BodyLayout from '../../../../create/comps/body-layout/body-layout';\nimport { TESTS_CREATION_ANALYTICS_EVENTS } from '../../tests-creation-analytics-events';\nimport { ButtonWrapper } from '../../tests-creation-styled';\nimport { ETestsStage, type TTestDifficultyLevel } from '../../tests-creation-types';\nimport {\n getDifficultyLevelCards,\n getRecommendedTestDuration,\n getTestDurationCards,\n} from '../../utils';\nimport type { IDifficultyAndDurationSelectionProps } from './difficulty-and-duration-selection-types';\nimport TestRadioCard from './test-radio-card/test-radio-card';\n\nconst DifficultyAndDurationSelection: FC<IDifficultyAndDurationSelectionProps> = memo(\n function DifficultyAndDurationSelection(props) {\n const { onTestStageChange, testFormData, userType, isTrialSession, onFormDataChange } = props;\n\n const isStudent = userType === 'STUDENT';\n const [testDifficultyLevel, setTestDifficultyLevel] = useState<TTestDifficultyLevel | null>(\n testFormData.difficultyLevel,\n );\n const [testDuration, setTestDuration] = useState(testFormData.duration || 0);\n\n const analyticsProps = useMemo(\n () => ({\n step: 'difficulty_and_duration_selection',\n duration: testDuration * 60,\n difficulty_level: testDifficultyLevel,\n }),\n [testDuration, testDifficultyLevel],\n );\n\n const handleOnBack = useCallback(() => {\n onTestStageChange(ETestsStage.CHAPTER_SELECTION, {\n ...testFormData,\n difficultyLevel: null,\n duration: null,\n });\n }, [testFormData, onTestStageChange]);\n\n const handleOnPreview = useCallback(() => {\n if (testDifficultyLevel && testDuration) {\n onTestStageChange(ETestsStage.PREVIEW, {\n ...testFormData,\n difficultyLevel: testDifficultyLevel,\n duration: testDuration,\n });\n }\n }, [testDifficultyLevel, testDuration, testFormData, onTestStageChange]);\n\n const handleOnTestRadioCardChange = useCallback(\n (value: TTestDifficultyLevel | number) => {\n if (isStudent) return;\n\n if (typeof value === 'number') {\n setTestDuration(value);\n onFormDataChange?.({\n ...testFormData,\n difficultyLevel: testDifficultyLevel,\n duration: value,\n });\n } else {\n setTestDifficultyLevel(value);\n onFormDataChange?.({\n ...testFormData,\n difficultyLevel: value,\n duration: testDuration,\n });\n }\n },\n [isStudent, onFormDataChange, testFormData, testDifficultyLevel, testDuration],\n );\n\n const selectedChaptersCount = testFormData.selectedChapters?.length || 0;\n const recommendedTestDuration = getRecommendedTestDuration(selectedChaptersCount);\n\n const difficultyCards = getDifficultyLevelCards();\n const durationCards = getTestDurationCards();\n\n useEffect(() => {\n if (testFormData.difficultyLevel !== undefined) {\n setTestDifficultyLevel(testFormData.difficultyLevel);\n }\n }, [testFormData.difficultyLevel]);\n\n useEffect(() => {\n if (testFormData.duration !== undefined && testFormData.duration !== null) {\n setTestDuration(testFormData.duration);\n }\n }, [testFormData.duration]);\n\n return (\n <FlexView>\n <BodyLayout\n isTrialSession={isTrialSession}\n bodyHeight=\"100%\"\n headerElement={\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={1}>\n <Text $renderAs=\"ab2\">{selectedChaptersCount} Chapters selected</Text>\n </FlexView>\n }\n onBackButtonClick={handleOnBack}\n bodyElement={\n <FlexView $gapX={3} $gutterX={1} $flexWrap $flexGapX={4}>\n <FlexView $flexGapX={1.5}>\n <Text $renderAs=\"ac3\" $color=\"BLACK_T_60\">\n Difficulty\n </Text>\n\n <FlexView $flexDirection=\"row\" $flexGapX={1.5}>\n {difficultyCards.map((item, idx) => {\n const { title, value } = item;\n const selected = testDifficultyLevel === value;\n\n return (\n <TestRadioCard\n key={`${title}_${idx}`}\n widthX={12.5}\n {...item}\n selected={selected}\n isTestDifficultRendering\n onTestRadioCardChange={handleOnTestRadioCardChange}\n />\n );\n })}\n </FlexView>\n </FlexView>\n\n <FlexView $flexGapX={1.5}>\n <Text $renderAs=\"ac3\" $color=\"BLACK_T_60\">\n Duration\n </Text>\n\n <FlexView $flexDirection=\"row\" $flexGapX={1.5}>\n {durationCards.map((item, idx) => {\n const { title, value = '' } = item;\n const isRecommended = recommendedTestDuration === Number(value);\n const selected = value === testDuration;\n\n return (\n <ArrowTooltip\n key={`${title}_${idx}`}\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={\n Number(value) > recommendedTestDuration\n ? 'Too much time. Shorten duration or add chapters.'\n : 'Too less time. Extend duration or reduce chapters.'\n }\n widthX={10.875}\n hidden={isRecommended}\n >\n <TestRadioCard\n widthX={10.875}\n {...item}\n selected={selected}\n isRecommended={isRecommended}\n onTestRadioCardChange={handleOnTestRadioCardChange}\n />\n </ArrowTooltip>\n );\n })}\n </FlexView>\n </FlexView>\n </FlexView>\n }\n footerElement={\n !isStudent ? (\n <ButtonWrapper>\n <Button\n renderAs=\"primary\"\n label=\"Preview\"\n size=\"small\"\n shape=\"square\"\n onClick={handleOnPreview}\n disabled={!testDuration || !testDifficultyLevel}\n analyticsLabel={TESTS_CREATION_ANALYTICS_EVENTS.CUSTOM_TEST_PREVIEWED}\n analyticsProps={analyticsProps}\n />\n </ButtonWrapper>\n ) : undefined\n }\n />\n </FlexView>\n );\n },\n);\n\nexport default DifficultyAndDurationSelection;\n"],"names":["DifficultyAndDurationSelection","memo","props","onTestStageChange","testFormData","userType","isTrialSession","onFormDataChange","isStudent","testDifficultyLevel","setTestDifficultyLevel","useState","testDuration","setTestDuration","analyticsProps","useMemo","handleOnBack","useCallback","ETestsStage","handleOnPreview","handleOnTestRadioCardChange","value","selectedChaptersCount","_a","recommendedTestDuration","getRecommendedTestDuration","difficultyCards","getDifficultyLevelCards","durationCards","getTestDurationCards","useEffect","FlexView","jsx","BodyLayout","jsxs","Text","item","idx","title","TestRadioCard","isRecommended","selected","ArrowTooltip","ButtonWrapper","Button","TESTS_CREATION_ANALYTICS_EVENTS"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import o from "styled-components";
|
|
2
|
-
import
|
|
3
|
-
const
|
|
4
|
-
position: fixed;
|
|
2
|
+
import r from "../../../../../ui/layout/flex-view.js";
|
|
3
|
+
const p = o(r)(({ $isTrialSession: t }) => `
|
|
4
|
+
position: ${t ? "absolute" : "fixed"};
|
|
5
5
|
bottom: 42px;
|
|
6
6
|
right: 46px;
|
|
7
7
|
z-index: 2;
|
|
8
|
-
|
|
8
|
+
`);
|
|
9
9
|
export {
|
|
10
|
-
|
|
10
|
+
p as ButtonWrapper
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=test-preview-styled.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-preview-styled.js","sources":["../../../../../../../src/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../../ui/layout/flex-view';\n\nconst ButtonWrapper = styled(FlexView)`\n position: fixed;\n bottom: 42px;\n right: 46px;\n z-index: 2;\n`;\n\nexport { ButtonWrapper };\n"],"names":["ButtonWrapper","styled","FlexView"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"test-preview-styled.js","sources":["../../../../../../../src/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../../ui/layout/flex-view';\n\nconst ButtonWrapper = styled(FlexView)<{ $isTrialSession?: boolean }>(({ $isTrialSession }) => {\n return `\n position: ${$isTrialSession ? 'absolute' : 'fixed'};\n bottom: 42px;\n right: 46px;\n z-index: 2;\n`;\n});\n\nexport { ButtonWrapper };\n"],"names":["ButtonWrapper","styled","FlexView","$isTrialSession"],"mappings":";;AAIA,MAAMA,IAAgBC,EAAOC,CAAQ,EAAiC,CAAC,EAAE,iBAAAC,QAChE;AAAA,cACKA,IAAkB,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA,CAKnD;"}
|
|
@@ -1,58 +1,68 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { memo as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { TESTS_CREATION_ANALYTICS_EVENTS as
|
|
6
|
-
import { ButtonWrapper as
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { jsxs as v, Fragment as w, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { memo as A, useState as E, useMemo as a, useCallback as T } from "react";
|
|
3
|
+
import C from "../../../../../ui/buttons/button/button.js";
|
|
4
|
+
import g from "../../../../../worksheet/worksheet-preview/worksheet-preview.js";
|
|
5
|
+
import { TESTS_CREATION_ANALYTICS_EVENTS as y } from "../../tests-creation-analytics-events.js";
|
|
6
|
+
import { ButtonWrapper as P } from "./test-preview-styled.js";
|
|
7
|
+
import { ETestsStage as k } from "../../tests-creation-types.js";
|
|
8
|
+
const x = A(function(l) {
|
|
9
|
+
const {
|
|
10
|
+
studentId: d,
|
|
11
|
+
items: e,
|
|
12
|
+
testNumber: o,
|
|
13
|
+
isAssignInProgress: m,
|
|
14
|
+
onTestStageChange: i,
|
|
15
|
+
onTestSheetAssign: c,
|
|
16
|
+
userType: p,
|
|
17
|
+
isTrialSession: u
|
|
18
|
+
} = l, S = p === "STUDENT", [f, n] = E(!1), t = a(() => e == null ? void 0 : e.map((s) => s.ref), [e]), h = a(
|
|
9
19
|
() => ({
|
|
10
20
|
step: "preview",
|
|
11
21
|
items: e,
|
|
12
|
-
title: `Test ${
|
|
22
|
+
title: `Test ${o}`
|
|
13
23
|
}),
|
|
14
|
-
[
|
|
15
|
-
),
|
|
16
|
-
|
|
17
|
-
}, [
|
|
24
|
+
[o, e]
|
|
25
|
+
), I = T(() => {
|
|
26
|
+
i(k.DIFFICULTY_AND_DURATION_SELECTION);
|
|
27
|
+
}, [i]), N = T(
|
|
18
28
|
(s) => {
|
|
19
|
-
|
|
29
|
+
n(s);
|
|
20
30
|
},
|
|
21
|
-
[
|
|
31
|
+
[n]
|
|
22
32
|
);
|
|
23
|
-
return !t || t.length === 0 ? null : /* @__PURE__ */
|
|
33
|
+
return !t || t.length === 0 ? null : /* @__PURE__ */ v(w, { children: [
|
|
24
34
|
/* @__PURE__ */ r(
|
|
25
|
-
|
|
35
|
+
g,
|
|
26
36
|
{
|
|
27
37
|
activityReference: "test",
|
|
28
38
|
mode: "preview",
|
|
29
39
|
nodeType: "DYNAMIC",
|
|
30
40
|
userType: "STUDENT",
|
|
31
|
-
studentId:
|
|
41
|
+
studentId: d ?? "student-id",
|
|
32
42
|
activityType: null,
|
|
33
43
|
worksheetName: "Preview test",
|
|
34
44
|
items: t,
|
|
35
|
-
onBackIconClick:
|
|
36
|
-
onWorksheetLoaded:
|
|
45
|
+
onBackIconClick: I,
|
|
46
|
+
onWorksheetLoaded: N
|
|
37
47
|
}
|
|
38
48
|
),
|
|
39
|
-
|
|
40
|
-
|
|
49
|
+
f && !S && /* @__PURE__ */ r(P, { $isTrialSession: u, children: /* @__PURE__ */ r(
|
|
50
|
+
C,
|
|
41
51
|
{
|
|
42
52
|
widthX: 6,
|
|
43
53
|
renderAs: "primary",
|
|
44
54
|
size: "small",
|
|
45
55
|
shape: "square",
|
|
46
56
|
label: "Assign",
|
|
47
|
-
analyticsLabel:
|
|
48
|
-
analyticsProps:
|
|
57
|
+
analyticsLabel: y.CUSTOM_TEST_ASSIGNED,
|
|
58
|
+
analyticsProps: h,
|
|
49
59
|
onClick: c,
|
|
50
|
-
disabled: !!
|
|
60
|
+
disabled: !!m
|
|
51
61
|
}
|
|
52
62
|
) })
|
|
53
63
|
] });
|
|
54
64
|
});
|
|
55
65
|
export {
|
|
56
|
-
|
|
66
|
+
x as default
|
|
57
67
|
};
|
|
58
68
|
//# sourceMappingURL=test-preview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-preview.js","sources":["../../../../../../../src/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.tsx"],"sourcesContent":["import { type FC, memo, useCallback, useMemo, useState } from 'react';\n\nimport Button from '../../../../../ui/buttons/button/button';\nimport PreviewWorksheet from '../../../../../worksheet/worksheet-preview/worksheet-preview';\nimport { TESTS_CREATION_ANALYTICS_EVENTS } from '../../tests-creation-analytics-events';\nimport * as Styled from './test-preview-styled';\nimport type { ITestPreviewProps } from './test-preview-types';\n\nconst TestPreview: FC<ITestPreviewProps> = memo(function TestPreview(props) {\n const {
|
|
1
|
+
{"version":3,"file":"test-preview.js","sources":["../../../../../../../src/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.tsx"],"sourcesContent":["import { type FC, memo, useCallback, useMemo, useState } from 'react';\n\nimport Button from '../../../../../ui/buttons/button/button';\nimport PreviewWorksheet from '../../../../../worksheet/worksheet-preview/worksheet-preview';\nimport { TESTS_CREATION_ANALYTICS_EVENTS } from '../../tests-creation-analytics-events';\nimport * as Styled from './test-preview-styled';\nimport type { ITestPreviewProps } from './test-preview-types';\nimport { ETestsStage } from '../../tests-creation-types';\n\nconst TestPreview: FC<ITestPreviewProps> = memo(function TestPreview(props) {\n const {\n studentId,\n items,\n testNumber,\n isAssignInProgress,\n onTestStageChange,\n onTestSheetAssign,\n userType,\n isTrialSession,\n } = props;\n const isStudent = userType === 'STUDENT';\n const [testPreviewLoaded, setTestPreviewLoaded] = useState(false);\n\n const itemRefs = useMemo(() => items?.map(item => item.ref), [items]);\n const analyticsProps = useMemo(\n () => ({\n step: 'preview',\n items,\n title: `Test ${testNumber}`,\n }),\n [testNumber, items],\n );\n\n const handleOnBack = useCallback(() => {\n onTestStageChange(ETestsStage.DIFFICULTY_AND_DURATION_SELECTION);\n }, [onTestStageChange]);\n\n const handleOnPreviewLoad = useCallback(\n (loaded: boolean) => {\n setTestPreviewLoaded(loaded);\n },\n [setTestPreviewLoaded],\n );\n\n if (!itemRefs || itemRefs.length === 0) return null;\n\n return (\n <>\n <PreviewWorksheet\n activityReference=\"test\"\n mode=\"preview\"\n nodeType=\"DYNAMIC\"\n userType=\"STUDENT\"\n studentId={studentId ?? 'student-id'}\n activityType={null}\n worksheetName=\"Preview test\"\n items={itemRefs}\n onBackIconClick={handleOnBack}\n onWorksheetLoaded={handleOnPreviewLoad}\n />\n\n {testPreviewLoaded && !isStudent && (\n <Styled.ButtonWrapper $isTrialSession={isTrialSession}>\n <Button\n widthX={6}\n renderAs={'primary'}\n size=\"small\"\n shape=\"square\"\n label=\"Assign\"\n analyticsLabel={TESTS_CREATION_ANALYTICS_EVENTS.CUSTOM_TEST_ASSIGNED}\n analyticsProps={analyticsProps}\n onClick={onTestSheetAssign}\n disabled={!!isAssignInProgress}\n />\n </Styled.ButtonWrapper>\n )}\n </>\n );\n});\n\nexport default TestPreview;\n"],"names":["TestPreview","memo","props","studentId","items","testNumber","isAssignInProgress","onTestStageChange","onTestSheetAssign","userType","isTrialSession","isStudent","testPreviewLoaded","setTestPreviewLoaded","useState","itemRefs","useMemo","item","analyticsProps","handleOnBack","useCallback","ETestsStage","handleOnPreviewLoad","loaded","jsxs","Fragment","jsx","PreviewWorksheet","Styled.ButtonWrapper","Button","TESTS_CREATION_ANALYTICS_EVENTS"],"mappings":";;;;;;;AASA,MAAMA,IAAqCC,EAAK,SAAqBC,GAAO;AACpE,QAAA;AAAA,IACJ,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,EACE,IAAAR,GACES,IAAYF,MAAa,WACzB,CAACG,GAAmBC,CAAoB,IAAIC,EAAS,EAAK,GAE1DC,IAAWC,EAAQ,MAAMZ,KAAA,gBAAAA,EAAO,IAAI,CAAQa,MAAAA,EAAK,MAAM,CAACb,CAAK,CAAC,GAC9Dc,IAAiBF;AAAA,IACrB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAAZ;AAAA,MACA,OAAO,QAAQC,CAAU;AAAA,IAAA;AAAA,IAE3B,CAACA,GAAYD,CAAK;AAAA,EAAA,GAGde,IAAeC,EAAY,MAAM;AACrC,IAAAb,EAAkBc,EAAY,iCAAiC;AAAA,EAAA,GAC9D,CAACd,CAAiB,CAAC,GAEhBe,IAAsBF;AAAA,IAC1B,CAACG,MAAoB;AACnB,MAAAV,EAAqBU,CAAM;AAAA,IAC7B;AAAA,IACA,CAACV,CAAoB;AAAA,EAAA;AAGvB,SAAI,CAACE,KAAYA,EAAS,WAAW,IAAU,OAI3C,gBAAAS,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,mBAAkB;AAAA,QAClB,MAAK;AAAA,QACL,UAAS;AAAA,QACT,UAAS;AAAA,QACT,WAAWxB,KAAa;AAAA,QACxB,cAAc;AAAA,QACd,eAAc;AAAA,QACd,OAAOY;AAAA,QACP,iBAAiBI;AAAA,QACjB,mBAAmBG;AAAA,MAAA;AAAA,IACrB;AAAA,IAECV,KAAqB,CAACD,KACrB,gBAAAe,EAACE,GAAA,EAAqB,iBAAiBlB,GACrC,UAAA,gBAAAgB;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAK;AAAA,QACL,OAAM;AAAA,QACN,OAAM;AAAA,QACN,gBAAgBC,EAAgC;AAAA,QAChD,gBAAAZ;AAAA,QACA,SAASV;AAAA,QACT,UAAU,CAAC,CAACF;AAAA,MAAA;AAAA,IAAA,GAEhB;AAAA,EAEJ,EAAA,CAAA;AAEJ,CAAC;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { memo as m, useEffect as f } from "react";
|
|
3
|
+
import { useTestsCreationSync as C } from "./hooks/use-tests-creation-sync.js";
|
|
4
|
+
import p from "./tests-creation.js";
|
|
5
|
+
const h = m(function(s) {
|
|
6
|
+
const { channelId: n, userType: e, ...r } = s, t = e === "TEACHER", { syncedState: a, setSyncState: c, closeChannel: o } = C({
|
|
7
|
+
channelId: n,
|
|
8
|
+
isTeacher: t
|
|
9
|
+
});
|
|
10
|
+
return f(() => () => {
|
|
11
|
+
o();
|
|
12
|
+
}, [o]), /* @__PURE__ */ i(
|
|
13
|
+
p,
|
|
14
|
+
{
|
|
15
|
+
...r,
|
|
16
|
+
userType: e,
|
|
17
|
+
state: t ? void 0 : a,
|
|
18
|
+
onStateChange: t ? c : void 0
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
});
|
|
22
|
+
export {
|
|
23
|
+
h as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=tests-creation-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tests-creation-sync.js","sources":["../../../../../src/features/milestone/milestone-tests/tests-creation/tests-creation-sync.tsx"],"sourcesContent":["import { memo, useEffect, type FC } from 'react';\n\nimport type { TUserTypes } from '../../../ui/types';\nimport { useTestsCreationSync } from './hooks/use-tests-creation-sync';\nimport TestsCreation from './tests-creation';\nimport type { ITestsCreationProps } from './tests-creation-types';\n\ninterface ITestsCreationSync extends Omit<ITestsCreationProps, 'state' | 'onStateChange'> {\n channelId: string;\n userType: TUserTypes;\n}\n\nconst TestsCreationSync: FC<ITestsCreationSync> = memo(function TestsCreationSync(props) {\n const { channelId, userType, ...testsCreationProps } = props;\n\n const isTeacher = userType === 'TEACHER';\n\n const { syncedState, setSyncState, closeChannel } = useTestsCreationSync({\n channelId,\n isTeacher,\n });\n\n useEffect(() => {\n return () => {\n closeChannel();\n };\n }, [closeChannel]);\n\n return (\n <TestsCreation\n {...testsCreationProps}\n userType={userType}\n state={isTeacher ? undefined : syncedState}\n onStateChange={isTeacher ? setSyncState : undefined}\n />\n );\n});\n\nexport default TestsCreationSync;\n"],"names":["TestsCreationSync","memo","props","channelId","userType","testsCreationProps","isTeacher","syncedState","setSyncState","closeChannel","useTestsCreationSync","useEffect","jsx","TestsCreation"],"mappings":";;;;AAYA,MAAMA,IAA4CC,EAAK,SAA2BC,GAAO;AACvF,QAAM,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,MAAuBH,GAEjDI,IAAYF,MAAa,WAEzB,EAAE,aAAAG,GAAa,cAAAC,GAAc,cAAAC,EAAA,IAAiBC,EAAqB;AAAA,IACvE,WAAAP;AAAA,IACA,WAAAG;AAAA,EAAA,CACD;AAED,SAAAK,EAAU,MACD,MAAM;AACE,IAAAF;EAAA,GAEd,CAACA,CAAY,CAAC,GAGf,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,UAAAD;AAAA,MACA,OAAOE,IAAY,SAAYC;AAAA,MAC/B,eAAeD,IAAYE,IAAe;AAAA,IAAA;AAAA,EAAA;AAGhD,CAAC;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
var I = /* @__PURE__ */ ((E) => (E.CHAPTER_SELECTION = "CHAPTER_SELECTION", E.DIFFICULTY_AND_DURATION_SELECTION = "DIFFICULTY_AND_DURATION_SELECTION", E.PREVIEW = "PREVIEW", E))(I || {});
|
|
2
|
+
export {
|
|
3
|
+
I as ETestsStage
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=tests-creation-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tests-creation-types.js","sources":["../../../../../src/features/milestone/milestone-tests/tests-creation/tests-creation-types.ts"],"sourcesContent":["import type { TCourseStream } from '../../create/milestone-create-types';\nimport type { TUserTypes } from '../../../ui/types';\nimport type { ITestHelpPreviewResponse } from './api/preview-test-sheet';\nimport type { IChapterDataProps } from '../../../chapters/chapter/chapter-types';\n\nexport enum ETestsStage {\n CHAPTER_SELECTION = 'CHAPTER_SELECTION',\n DIFFICULTY_AND_DURATION_SELECTION = 'DIFFICULTY_AND_DURATION_SELECTION',\n PREVIEW = 'PREVIEW',\n}\n\nexport type TTestDifficultyLevel = 'EASY' | 'MODERATE' | 'DIFFICULT';\n\nexport interface ITestFormData {\n selectedChapters: string[] | null;\n difficultyLevel: TTestDifficultyLevel | null;\n title: string | null;\n duration: number | null;\n chapters?: IChapterDataProps[] | null;\n}\n\nexport interface ITestsCreationState {\n testStage: ETestsStage;\n testFormData: ITestFormData;\n testPreviewItems?: ITestHelpPreviewResponse[];\n}\n\nexport interface ITestsCreationProps {\n courseStream: TCourseStream;\n milestoneId: string;\n studentId: string;\n testNumber: number;\n userType?: TUserTypes;\n state?: Partial<ITestsCreationState>;\n isTrialSession?: boolean;\n onStateChange?: (state: ITestsCreationState) => void;\n onTestAssign: () => void;\n onExit: () => void;\n onError: (errorMessage?: string) => void;\n}\n"],"names":["ETestsStage"],"mappings":"AAKY,IAAAA,sBAAAA,OACVA,EAAA,oBAAoB,qBACpBA,EAAA,oCAAoC,qCACpCA,EAAA,UAAU,WAHAA,IAAAA,KAAA,CAAA,CAAA;"}
|