@cuemath/leap 2.8.55 → 2.8.56-as1
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/assets/illustrations/illustrations.js +9 -0
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/assets/line-icons/icons/alarm.js +41 -0
- package/dist/assets/line-icons/icons/alarm.js.map +1 -0
- package/dist/assets/line-icons/icons/dart.js +23 -0
- package/dist/assets/line-icons/icons/dart.js.map +1 -0
- package/dist/assets/line-icons/icons/exclamation.js +26 -0
- package/dist/assets/line-icons/icons/exclamation.js.map +1 -0
- package/dist/assets/line-icons/icons/home2.js +25 -0
- package/dist/assets/line-icons/icons/home2.js.map +1 -0
- package/dist/assets/line-icons/icons/important.js +23 -0
- package/dist/assets/line-icons/icons/important.js.map +1 -0
- package/dist/assets/line-icons/icons/puzzle.js +25 -0
- package/dist/assets/line-icons/icons/puzzle.js.map +1 -0
- package/dist/assets/line-icons/icons/recap.js +32 -0
- package/dist/assets/line-icons/icons/recap.js.map +1 -0
- package/dist/assets/line-icons/icons/status.js +41 -0
- package/dist/assets/line-icons/icons/status.js.map +1 -0
- package/dist/assets/line-icons/icons/testtube.js +33 -0
- package/dist/assets/line-icons/icons/testtube.js.map +1 -0
- package/dist/features/analytics-events/whitelist-events.js +7 -9
- package/dist/features/analytics-events/whitelist-events.js.map +1 -1
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js +98 -33
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js.map +1 -1
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +76 -47
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
- package/dist/features/chapters/chapters-list/chapters-list-styled.js +5 -5
- package/dist/features/chapters/chapters-list/chapters-list-styled.js.map +1 -1
- package/dist/features/chapters/chapters-list/chapters-list.js +65 -70
- package/dist/features/chapters/chapters-list/chapters-list.js.map +1 -1
- package/dist/features/chapters-v2/api/chapter.js +10 -0
- package/dist/features/chapters-v2/api/chapter.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js +112 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections-styled.js +26 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections-styled.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +69 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner-styled.js +90 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner-styled.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js +97 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details-styled.js +52 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details-styled.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details.js +103 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/border-path-animation.js +13 -0
- package/dist/features/chapters-v2/comps/node-card/border-path-animation.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-styled.js +153 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-styled.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-tags.js +16 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-tags.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-card.js +12 -0
- package/dist/features/chapters-v2/comps/node-card/node-card.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js +32 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js +31 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js +160 -0
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +184 -0
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -0
- package/dist/features/chapters-v2/comps/tag/tag-styled.js +13 -0
- package/dist/features/chapters-v2/comps/tag/tag-styled.js.map +1 -0
- package/dist/features/chapters-v2/comps/tag/tag.js +28 -0
- package/dist/features/chapters-v2/comps/tag/tag.js.map +1 -0
- package/dist/features/chapters-v2/constants/block-constants.js +20 -0
- package/dist/features/chapters-v2/constants/block-constants.js.map +1 -0
- package/dist/features/chapters-v2/constants/node-constants.js +15 -0
- package/dist/features/chapters-v2/constants/node-constants.js.map +1 -0
- package/dist/features/chapters-v2/utils/index.js +41 -0
- package/dist/features/chapters-v2/utils/index.js.map +1 -0
- package/dist/features/chapters-v2/utils/node-card-utils.js +106 -0
- package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -0
- package/dist/features/circle-games/games/tutorial/tutorial.js +14 -13
- package/dist/features/circle-games/games/tutorial/tutorial.js.map +1 -1
- package/dist/features/homework/card-menu-options.js +36 -0
- package/dist/features/homework/card-menu-options.js.map +1 -0
- package/dist/features/homework/homework-card.js +136 -0
- package/dist/features/homework/homework-card.js.map +1 -0
- package/dist/features/homework/styles.js +114 -0
- package/dist/features/homework/styles.js.map +1 -0
- package/dist/features/homework/utils.js +28 -0
- package/dist/features/homework/utils.js.map +1 -0
- package/dist/features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.js +10 -10
- package/dist/features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.js.map +1 -1
- package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js +51 -53
- package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/api/get-milestones.js +9 -17
- package/dist/features/milestone/milestone-list-container/api/get-milestones.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +116 -91
- 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 +105 -121
- 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-info.js +145 -173
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +24 -10
- 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 +76 -81
- 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-utils.js +10 -22
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-utils.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js +70 -37
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +114 -174
- 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/milestone-widget/outcome/outcome-rank.js +29 -16
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-rank.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-styled.js +19 -23
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-styled.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome.js +23 -35
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +34 -36
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-list/resources-list-styled.js +1 -1
- package/dist/features/milestone/milestone-resources/resources-list/resources-list-styled.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +96 -78
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-utils.js +6 -34
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-utils.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item.js +73 -73
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheets-list-styled.js +8 -7
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheets-list-styled.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-list/tests-list.js +77 -68
- package/dist/features/milestone/milestone-tests/tests-list/tests-list.js.map +1 -1
- package/dist/features/recent-chapters/api/get-recent-chapters.js +9 -0
- package/dist/features/recent-chapters/api/get-recent-chapters.js.map +1 -0
- package/dist/features/recent-chapters/recent-chapters-styled.js +23 -0
- package/dist/features/recent-chapters/recent-chapters-styled.js.map +1 -0
- package/dist/features/recent-chapters/recent-chapters.js +49 -0
- package/dist/features/recent-chapters/recent-chapters.js.map +1 -0
- package/dist/features/sheets/resources-list/resource-item/resource-item.js +65 -179
- package/dist/features/sheets/resources-list/resource-item/resource-item.js.map +1 -1
- package/dist/features/sheets/resources-list/resources-list.js +5 -5
- package/dist/features/sheets/resources-list/resources-list.js.map +1 -1
- package/dist/features/sheets/resources-list/styled.js +9 -13
- package/dist/features/sheets/resources-list/styled.js.map +1 -1
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant.js +4 -3
- package/dist/features/sheets/sheets-list/sheet-item/reward-n-actions/teacher-actions/teacher-actions-constant.js.map +1 -1
- package/dist/features/sheets/utils/is-v3-worksheet.js.map +1 -1
- package/dist/features/ui/arrow-tooltip/arrow-tooltip.js +30 -29
- package/dist/features/ui/arrow-tooltip/arrow-tooltip.js.map +1 -1
- package/dist/features/ui/constants/z-index.js +1 -1
- package/dist/features/ui/constants/z-index.js.map +1 -1
- package/dist/features/ui/context-menu/context-menu-styled.js +28 -14
- package/dist/features/ui/context-menu/context-menu-styled.js.map +1 -1
- package/dist/features/ui/context-menu/context-menu.js +30 -15
- package/dist/features/ui/context-menu/context-menu.js.map +1 -1
- package/dist/features/ui/theme/button.js +17 -102
- package/dist/features/ui/theme/button.js.map +1 -1
- package/dist/index.d.ts +200 -12
- package/dist/index.js +487 -469
- package/dist/index.js.map +1 -1
- package/dist/static/chapter-header-bg-2.c8d96894.svg +1 -0
- package/dist/static/node-custom-test-bg.d3b757be.svg +1 -0
- package/dist/static/node-learn-bg.b61f815c.svg +1 -0
- package/dist/static/node-practice-bg.16cbaf2a.svg +1 -0
- package/dist/static/node-project-bg.e6a33e28.svg +1 -0
- package/dist/static/node-puzzle-bg.3422135c.svg +1 -0
- package/dist/static/node-recap-bg.546154e4.svg +1 -0
- package/dist/static/node-test-prep-bg.42c0b9c4.svg +1 -0
- package/dist/static/node-video-bg.3df3f73a.svg +1 -0
- package/package.json +1 -1
- package/dist/assets/line-icons/icons/closed-eye.js +0 -23
- package/dist/assets/line-icons/icons/closed-eye.js.map +0 -1
- package/dist/features/milestone/create/comps/milestone-progress-v2/milestone-progress-v2.js +0 -92
- package/dist/features/milestone/create/comps/milestone-progress-v2/milestone-progress-v2.js.map +0 -1
- package/dist/features/milestone/create/comps/milestone-progress-v2/styled.js +0 -25
- package/dist/features/milestone/create/comps/milestone-progress-v2/styled.js.map +0 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element-styled.js +0 -13
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element-styled.js.map +0 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element.js +0 -38
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/context-menu-helper/menu-element.js.map +0 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-status.js +0 -53
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-status.js.map +0 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-info.js +0 -25
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/outcome/outcome-info.js.map +0 -1
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-cta.js +0 -71
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-cta.js.map +0 -1
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-styled.js +0 -31
- package/dist/features/milestone/milestone-tests/tests-list/test-sheets-list/test-sheet-item/test-sheet-item-styled.js.map +0 -1
- package/dist/features/sheets/resources-list/resource-item/context-menu-helper/menu-element-styled.js +0 -15
- package/dist/features/sheets/resources-list/resource-item/context-menu-helper/menu-element-styled.js.map +0 -1
- package/dist/features/sheets/resources-list/resource-item/context-menu-helper/menu-element.js +0 -26
- package/dist/features/sheets/resources-list/resource-item/context-menu-helper/menu-element.js.map +0 -1
- package/dist/features/sheets/resources-list/resource-item/styled.js +0 -38
- package/dist/features/sheets/resources-list/resource-item/styled.js.map +0 -1
- package/dist/features/sheets/resources-list/resource-item/utils.js +0 -23
- package/dist/features/sheets/resources-list/resource-item/utils.js.map +0 -1
- package/dist/features/sheets/sheets-analytics-events.js +0 -11
- package/dist/features/sheets/sheets-analytics-events.js.map +0 -1
@@ -0,0 +1,136 @@
|
|
1
|
+
import { jsx as e, jsxs as i } from "react/jsx-runtime";
|
2
|
+
import { useRef as u, useState as E, useLayoutEffect as M } from "react";
|
3
|
+
import R from "../../assets/line-icons/icons/eye2.js";
|
4
|
+
import W from "../../assets/line-icons/icons/more-vertical.js";
|
5
|
+
import y from "../chapters-v2/comps/node-card/node-card-tags.js";
|
6
|
+
import { getNodeTypeBasedBgImage as B } from "../chapters-v2/utils/index.js";
|
7
|
+
import { getNodeCardBasedIcon as O } from "../chapters-v2/utils/node-card-utils.js";
|
8
|
+
import $ from "../ui/arrow-tooltip/arrow-tooltip.js";
|
9
|
+
import j from "../ui/hooks/use-context-menu-click-handler.js";
|
10
|
+
import n from "../ui/layout/flex-view.js";
|
11
|
+
import S from "../ui/text/text.js";
|
12
|
+
import _ from "./card-menu-options.js";
|
13
|
+
import { CardContainer as G, CardWrapper as K, IconWrapper as L, BannerImageWrapper as z, BannerImage as F, HeaderText as q, SubHeaderText as J, CardKebabMenuWrapper as P, CardMenuOptionsWrapper as Q, StyledMinus2Icon as Y } from "./styles.js";
|
14
|
+
const ae = ({
|
15
|
+
accuracy: f,
|
16
|
+
cardHeader: g,
|
17
|
+
dueDateTs: b,
|
18
|
+
header: a,
|
19
|
+
imageHue: C = "ORANGE",
|
20
|
+
imageUrl: s,
|
21
|
+
nodeData: r,
|
22
|
+
nodeType: l,
|
23
|
+
onNodeUnassign: o,
|
24
|
+
onNodeView: c,
|
25
|
+
state: w,
|
26
|
+
subHeader: I,
|
27
|
+
userType: x
|
28
|
+
}) => {
|
29
|
+
const T = B(l), d = O(l), p = u(null), { menuVisible: k, onMenuClick: X } = j(p), t = u(null), [A, H] = E(!1);
|
30
|
+
M(() => {
|
31
|
+
t.current && t.current.scrollHeight > t.current.clientHeight && H(!0);
|
32
|
+
}, [t]);
|
33
|
+
const h = (m) => {
|
34
|
+
switch (m) {
|
35
|
+
case "card-view":
|
36
|
+
r && (c == null || c(r));
|
37
|
+
return;
|
38
|
+
case "card-unassign":
|
39
|
+
r && (o == null || o(r));
|
40
|
+
return;
|
41
|
+
default:
|
42
|
+
throw new Error(`No callback function for ${m}`);
|
43
|
+
}
|
44
|
+
}, v = [
|
45
|
+
{
|
46
|
+
id: "card-view",
|
47
|
+
label: "View",
|
48
|
+
icon: R,
|
49
|
+
disabled: !1,
|
50
|
+
onClick: h
|
51
|
+
},
|
52
|
+
{
|
53
|
+
id: "card-unassign",
|
54
|
+
label: "Unassign",
|
55
|
+
icon: Y,
|
56
|
+
disabled: !1,
|
57
|
+
onClick: h
|
58
|
+
}
|
59
|
+
];
|
60
|
+
return /* @__PURE__ */ e(G, { $widthX: 12.5, $position: "relative", children: /* @__PURE__ */ i(n, { $background: `${C}_2`, children: [
|
61
|
+
/* @__PURE__ */ i(
|
62
|
+
K,
|
63
|
+
{
|
64
|
+
$flexDirection: "row",
|
65
|
+
$alignItems: "center",
|
66
|
+
$width: "100%",
|
67
|
+
$heightX: 3.5,
|
68
|
+
$bgImage: T,
|
69
|
+
$gutterX: 0.78125,
|
70
|
+
$flexGap: 8.5,
|
71
|
+
$position: "relative",
|
72
|
+
children: [
|
73
|
+
/* @__PURE__ */ e(
|
74
|
+
L,
|
75
|
+
{
|
76
|
+
$width: 31,
|
77
|
+
$height: 31,
|
78
|
+
$borderRadiusX: 2,
|
79
|
+
$background: "WHITE_1",
|
80
|
+
$position: "relative",
|
81
|
+
$alignItems: "center",
|
82
|
+
$justifyContent: "center",
|
83
|
+
children: d && /* @__PURE__ */ e(d, { width: 20, height: 20 })
|
84
|
+
}
|
85
|
+
),
|
86
|
+
/* @__PURE__ */ e(S, { $renderAs: "ac4-black", children: g }),
|
87
|
+
!!s && /* @__PURE__ */ e(z, { children: /* @__PURE__ */ e(F, { src: s, alt: "Chapter image" }) })
|
88
|
+
]
|
89
|
+
}
|
90
|
+
),
|
91
|
+
/* @__PURE__ */ e(y, { nodeType: l, state: w, accuracy: f, dueDateTs: b }),
|
92
|
+
/* @__PURE__ */ i(n, { $gutterX: 0.75, $gapX: 1, $flexRowGapX: 0.5, $background: "WHITE", children: [
|
93
|
+
/* @__PURE__ */ e(
|
94
|
+
$,
|
95
|
+
{
|
96
|
+
renderAs: "primary",
|
97
|
+
position: "bottom",
|
98
|
+
tooltipItem: a || "",
|
99
|
+
hidden: !A,
|
100
|
+
widthX: 21.75,
|
101
|
+
children: /* @__PURE__ */ e(n, { $heightX: 2.5, children: /* @__PURE__ */ e(q, { ref: t, $renderAs: "ab3", children: a }) })
|
102
|
+
}
|
103
|
+
),
|
104
|
+
/* @__PURE__ */ i(
|
105
|
+
n,
|
106
|
+
{
|
107
|
+
$flexDirection: "row",
|
108
|
+
$heightX: 1.25,
|
109
|
+
$alignItems: "center",
|
110
|
+
$justifyContent: "space-between",
|
111
|
+
children: [
|
112
|
+
/* @__PURE__ */ e(J, { $renderAs: "ub3", $color: "BLACK_T_60", children: I }),
|
113
|
+
x === "TEACHER" && r && (c || o) && /* @__PURE__ */ i(n, { $position: "relative", $width: "fit-content", children: [
|
114
|
+
/* @__PURE__ */ e(
|
115
|
+
$,
|
116
|
+
{
|
117
|
+
renderAs: "primary",
|
118
|
+
tooltipItem: "Review",
|
119
|
+
position: "bottom",
|
120
|
+
zIndex: 5,
|
121
|
+
parentWidth: "100%",
|
122
|
+
children: /* @__PURE__ */ e(P, { ref: p, onClick: X, children: /* @__PURE__ */ e(W, { width: 16, height: 16 }) })
|
123
|
+
}
|
124
|
+
),
|
125
|
+
/* @__PURE__ */ e(Q, { $visible: k, children: /* @__PURE__ */ e(_, { options: v }) })
|
126
|
+
] })
|
127
|
+
]
|
128
|
+
}
|
129
|
+
)
|
130
|
+
] })
|
131
|
+
] }) });
|
132
|
+
};
|
133
|
+
export {
|
134
|
+
ae as default
|
135
|
+
};
|
136
|
+
//# sourceMappingURL=homework-card.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"homework-card.js","sources":["../../../src/features/homework/homework-card.tsx"],"sourcesContent":["import type { INodeDataProps, TSheetStates } from '../chapters-v2/comps/node-card/node-card-types';\nimport type { TNodeTypeProps } from '../sheets/sheets-list/sheet-item/sheet-item-types';\nimport type { THueNames } from '../ui/types';\nimport type { ICardMenuOption } from './card-menu-options';\n\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nimport Eye2Icon from '../../assets/line-icons/icons/eye2';\nimport MoreVerticalIcon from '../../assets/line-icons/icons/more-vertical';\nimport NodeCardTags from '../chapters-v2/comps/node-card/node-card-tags';\nimport { getNodeTypeBasedBgImage } from '../chapters-v2/utils';\nimport { getNodeCardBasedIcon } from '../chapters-v2/utils/node-card-utils';\nimport ArrowTooltip from '../ui/arrow-tooltip/arrow-tooltip';\nimport useContextMenuClickHandler from '../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../ui/layout/flex-view';\nimport Text from '../ui/text/text';\nimport CardMenuOptions from './card-menu-options';\nimport * as Styled from './styles';\n\ninterface IHomeworkCardProps {\n accuracy: number | null;\n cardHeader: string;\n dueDateTs?: number | null;\n header: string;\n imageHue?: THueNames;\n imageUrl?: string;\n nodeData?: INodeDataProps;\n nodeType: TNodeTypeProps;\n onNodeUnassign?: (nodeData: INodeDataProps) => void;\n onNodeView?: (nodeData: INodeDataProps) => void;\n state: TSheetStates;\n subHeader: string;\n userType: 'TEACHER' | 'STUDENT';\n}\n\nconst HomeworkCard = ({\n accuracy,\n cardHeader,\n dueDateTs,\n header,\n imageHue = 'ORANGE',\n imageUrl,\n nodeData,\n nodeType,\n onNodeUnassign,\n onNodeView,\n state,\n subHeader,\n userType,\n}: IHomeworkCardProps) => {\n const bgImage = getNodeTypeBasedBgImage(nodeType);\n const NodeCardIcon = getNodeCardBasedIcon(nodeType);\n const containerRef = useRef<HTMLDivElement>(null);\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(containerRef);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, [titleTextRef]);\n const handleOnMenuOptionClick = (optionId: string) => {\n switch (optionId) {\n case 'card-view':\n nodeData && onNodeView?.(nodeData);\n\n return;\n\n case 'card-unassign':\n nodeData && onNodeUnassign?.(nodeData);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n };\n\n const menuOptions: ICardMenuOption[] = [\n {\n id: 'card-view',\n label: 'View',\n icon: Eye2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'card-unassign',\n label: 'Unassign',\n icon: Styled.StyledMinus2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n return (\n <Styled.CardContainer $widthX={12.5} $position=\"relative\">\n <FlexView $background={`${imageHue}_2`}>\n <Styled.CardWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={bgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n $position=\"relative\"\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $borderRadiusX={2}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n {NodeCardIcon && <NodeCardIcon width={20} height={20} />}\n </Styled.IconWrapper>\n <Text $renderAs=\"ac4-black\">{cardHeader}</Text>\n {!!imageUrl && (\n <Styled.BannerImageWrapper>\n <Styled.BannerImage src={imageUrl} alt=\"Chapter image\" />\n </Styled.BannerImageWrapper>\n )}\n </Styled.CardWrapper>\n <NodeCardTags nodeType={nodeType} state={state} accuracy={accuracy} dueDateTs={dueDateTs} />\n <FlexView $gutterX={0.75} $gapX={1} $flexRowGapX={0.5} $background=\"WHITE\">\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={header || ''}\n hidden={!showTitleTooltip}\n widthX={21.75}\n >\n <FlexView $heightX={2.5}>\n <Styled.HeaderText ref={titleTextRef} $renderAs=\"ab3\">\n {header}\n </Styled.HeaderText>\n </FlexView>\n </ArrowTooltip>\n <FlexView\n $flexDirection=\"row\"\n $heightX={1.25}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <Styled.SubHeaderText $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {subHeader}\n </Styled.SubHeaderText>\n {userType === 'TEACHER' && nodeData && (onNodeView || onNodeUnassign) && (\n <FlexView $position=\"relative\" $width=\"fit-content\">\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Review\"\n position=\"bottom\"\n zIndex={5}\n parentWidth=\"100%\"\n >\n <Styled.CardKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.CardKebabMenuWrapper>\n </ArrowTooltip>\n <Styled.CardMenuOptionsWrapper $visible={menuVisible}>\n <CardMenuOptions options={menuOptions} />\n </Styled.CardMenuOptionsWrapper>\n </FlexView>\n )}\n </FlexView>\n </FlexView>\n </FlexView>\n </Styled.CardContainer>\n );\n};\n\nexport default HomeworkCard;\n"],"names":["HomeworkCard","accuracy","cardHeader","dueDateTs","header","imageHue","imageUrl","nodeData","nodeType","onNodeUnassign","onNodeView","state","subHeader","userType","bgImage","getNodeTypeBasedBgImage","NodeCardIcon","getNodeCardBasedIcon","containerRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","titleTextRef","showTitleTooltip","setShowTitleTooltip","useState","useLayoutEffect","handleOnMenuOptionClick","optionId","menuOptions","Eye2Icon","Styled.StyledMinus2Icon","jsx","Styled.CardContainer","jsxs","FlexView","Styled.CardWrapper","Styled.IconWrapper","Text","Styled.BannerImageWrapper","Styled.BannerImage","NodeCardTags","ArrowTooltip","Styled.HeaderText","Styled.SubHeaderText","Styled.CardKebabMenuWrapper","MoreVerticalIcon","Styled.CardMenuOptionsWrapper","CardMenuOptions"],"mappings":"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"}
|
@@ -0,0 +1,114 @@
|
|
1
|
+
import r from "styled-components";
|
2
|
+
import i from "../../assets/line-icons/icons/minus2.js";
|
3
|
+
import t from "../ui/layout/flex-view.js";
|
4
|
+
import n from "../ui/text/text.js";
|
5
|
+
const l = r(t)(({ theme: o }) => `
|
6
|
+
cursor: pointer;
|
7
|
+
width: fit-content;
|
8
|
+
|
9
|
+
&:hover {
|
10
|
+
border-radius: 50%;
|
11
|
+
background: ${o.colors.WHITE_5};
|
12
|
+
}
|
13
|
+
`), d = r(n)`
|
14
|
+
display: -webkit-box;
|
15
|
+
-webkit-line-clamp: 1;
|
16
|
+
-webkit-box-orient: vertical;
|
17
|
+
overflow: hidden;
|
18
|
+
text-overflow: ellipsis;
|
19
|
+
`, u = r(t)(({
|
20
|
+
theme: o,
|
21
|
+
$visible: e
|
22
|
+
}) => `
|
23
|
+
cursor: pointer;
|
24
|
+
position: absolute;
|
25
|
+
z-index: 6;
|
26
|
+
top: calc(100% + 4px);
|
27
|
+
left: 0;
|
28
|
+
transform-origin: top;
|
29
|
+
transform: scaleY(${e ? 1 : 0});
|
30
|
+
opacity: ${e ? 1 : 0};
|
31
|
+
transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;
|
32
|
+
|
33
|
+
&:hover {
|
34
|
+
border-radius: 50%;
|
35
|
+
background: ${o.colors.WHITE_5};
|
36
|
+
}
|
37
|
+
`), x = r(t)`
|
38
|
+
border: 1px solid ${({ theme: o }) => o.colors.BLACK_T_15};
|
39
|
+
|
40
|
+
/* :hover {
|
41
|
+
border: 1px solid ${({ theme: o }) => o.colors.BLACK};
|
42
|
+
} */
|
43
|
+
`, b = r(t)(({ $bgImage: o }) => `
|
44
|
+
background-image: url(${o});
|
45
|
+
background-repeat: no-repeat;
|
46
|
+
background-size: cover;
|
47
|
+
background-position: center;
|
48
|
+
overflow: hidden;
|
49
|
+
`), w = r(t)`
|
50
|
+
display: flex;
|
51
|
+
align-items: center;
|
52
|
+
justify-content: center;
|
53
|
+
`, f = r(t)`
|
54
|
+
position: absolute;
|
55
|
+
right: -18px;
|
56
|
+
top: -4px;
|
57
|
+
`, g = r.img(({ theme: o }) => {
|
58
|
+
const { gutter: e } = o.layout;
|
59
|
+
return `
|
60
|
+
border: 1px solid ${o.colors.BLACK_T_15};
|
61
|
+
width: ${e * 4}px;
|
62
|
+
height: ${e * 4}px;
|
63
|
+
border-radius: 50%;
|
64
|
+
`;
|
65
|
+
}), h = r(i)`
|
66
|
+
path {
|
67
|
+
stroke: ${({ theme: o }) => o.colors.WHITE};
|
68
|
+
}
|
69
|
+
`, m = r(n)`
|
70
|
+
display: -webkit-box;
|
71
|
+
-webkit-line-clamp: 2;
|
72
|
+
-webkit-box-orient: vertical;
|
73
|
+
overflow: hidden;
|
74
|
+
text-overflow: ellipsis;
|
75
|
+
`, k = r(t)`
|
76
|
+
box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.4);
|
77
|
+
width: 180px;
|
78
|
+
position: relative;
|
79
|
+
left: 0;
|
80
|
+
top: 0;
|
81
|
+
`, v = r(t)(({
|
82
|
+
theme: o,
|
83
|
+
$disabled: e
|
84
|
+
}) => `
|
85
|
+
cursor: ${e ? "not-allowed" : "pointer"};
|
86
|
+
|
87
|
+
&:hover {
|
88
|
+
background: ${e ? "transparent" : o.colors.BLACK};
|
89
|
+
};
|
90
|
+
|
91
|
+
path {
|
92
|
+
fill: ${o.colors.WHITE_1};
|
93
|
+
}
|
94
|
+
`), $ = r(n)`
|
95
|
+
white-space: nowrap;
|
96
|
+
overflow: hidden;
|
97
|
+
text-overflow: ellipsis;
|
98
|
+
`;
|
99
|
+
export {
|
100
|
+
g as BannerImage,
|
101
|
+
f as BannerImageWrapper,
|
102
|
+
x as CardContainer,
|
103
|
+
l as CardKebabMenuWrapper,
|
104
|
+
u as CardMenuOptionsWrapper,
|
105
|
+
v as CardOptionWrapper,
|
106
|
+
k as CardOptions,
|
107
|
+
b as CardWrapper,
|
108
|
+
m as HeaderText,
|
109
|
+
w as IconWrapper,
|
110
|
+
$ as OptionText,
|
111
|
+
h as StyledMinus2Icon,
|
112
|
+
d as SubHeaderText
|
113
|
+
};
|
114
|
+
//# sourceMappingURL=styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../src/features/homework/styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nimport Minus2Icon from '../../assets/line-icons/icons/minus2';\nimport FlexView from '../ui/layout/flex-view';\nimport Text from '../ui/text/text';\n\nexport interface ICardWrapperProps {\n $bgImage: string;\n}\n\nexport interface ICardOptionsMenuWrapperProps {\n $visible: boolean;\n}\n\nexport const CardKebabMenuWrapper = styled(FlexView)(({ theme }) => {\n return `\n cursor: pointer;\n width: fit-content;\n \n &:hover {\n border-radius: 50%;\n background: ${theme.colors.WHITE_5}; \n }\n `;\n});\n\nexport const SubHeaderText = styled(Text)`\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const CardMenuOptionsWrapper = styled(FlexView)<ICardOptionsMenuWrapperProps>(({\n theme,\n $visible,\n}) => {\n return `\n cursor: pointer;\n position: absolute;\n z-index: 6;\n top: calc(100% + 4px);\n left: 0;\n transform-origin: top;\n transform: scaleY(${$visible ? 1 : 0});\n opacity: ${$visible ? 1 : 0};\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n \n &:hover {\n border-radius: 50%;\n background: ${theme.colors.WHITE_5}; \n }\n `;\n});\n\nexport const CardContainer = styled(FlexView)`\n border: 1px solid ${({ theme }) => theme.colors.BLACK_T_15};\n\n /* :hover {\n border: 1px solid ${({ theme }) => theme.colors.BLACK};\n } */\n`;\n\nexport const CardWrapper = styled(FlexView)<ICardWrapperProps>(({ $bgImage }) => {\n return `\n background-image: url(${$bgImage});\n background-repeat: no-repeat;\n background-size: cover;\n background-position: center;\n overflow: hidden;\n `;\n});\n\nexport const IconWrapper = styled(FlexView)`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const BannerImageWrapper = styled(FlexView)`\n position: absolute;\n right: -18px;\n top: -4px;\n`;\n\nexport const BannerImage = styled.img(({ theme }) => {\n const { gutter } = theme.layout;\n\n return `\n border: 1px solid ${theme.colors.BLACK_T_15};\n width: ${gutter * 4}px;\n height: ${gutter * 4}px;\n border-radius: 50%;\n `;\n});\n\nexport const StyledMinus2Icon = styled(Minus2Icon)`\n path {\n stroke: ${({ theme }) => theme.colors.WHITE};\n }\n`;\n\nexport const HeaderText = styled(Text)`\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport interface ICardOptionWrapperProps {\n $disabled?: boolean;\n}\n\nexport const CardOptions = styled(FlexView)`\n box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.4);\n width: 180px;\n position: relative;\n left: 0;\n top: 0;\n`;\n\nexport const CardOptionWrapper = styled(FlexView)<ICardOptionWrapperProps>(({\n theme,\n $disabled,\n}) => {\n return `\n cursor: ${$disabled ? 'not-allowed' : 'pointer'};\n \n &:hover {\n background: ${$disabled ? 'transparent' : theme.colors.BLACK};\n };\n \n path {\n fill: ${theme.colors.WHITE_1};\n }\n `;\n});\n\nexport const OptionText = styled(Text)`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n"],"names":["CardKebabMenuWrapper","styled","FlexView","theme","SubHeaderText","Text","CardMenuOptionsWrapper","$visible","CardContainer","CardWrapper","$bgImage","IconWrapper","BannerImageWrapper","BannerImage","gutter","StyledMinus2Icon","Minus2Icon","HeaderText","CardOptions","CardOptionWrapper","$disabled","OptionText"],"mappings":";;;;AAcO,MAAMA,IAAuBC,EAAOC,CAAQ,EAAE,CAAC,EAAE,OAAAC,QAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMWA,EAAM,OAAO,OAAO;AAAA;AAAA,GAGvC,GAEYC,IAAgBH,EAAOI,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQ3BC,IAAyBL,EAAOC,CAAQ,EAAgC,CAAC;AAAA,EACpF,OAAAC;AAAA,EACA,UAAAI;AACF,MACS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAOeA,IAAW,IAAI,CAAC;AAAA,eACzBA,IAAW,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKXJ,EAAM,OAAO,OAAO;AAAA;AAAA,GAGvC,GAEYK,IAAgBP,EAAOC,CAAQ;AAAA,sBACtB,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,UAAU;AAAA;AAAA;AAAA,wBAGpC,CAAC,EAAE,OAAAA,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA,GAI5CM,IAAcR,EAAOC,CAAQ,EAAqB,CAAC,EAAE,UAAAQ,QACzD;AAAA,4BACmBA,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,GAMnC,GAEYC,IAAcV,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA,GAM7BU,IAAqBX,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA,GAMpCW,IAAcZ,EAAO,IAAI,CAAC,EAAE,OAAAE,QAAY;AAC7C,QAAA,EAAE,QAAAW,EAAO,IAAIX,EAAM;AAElB,SAAA;AAAA,wBACeA,EAAM,OAAO,UAAU;AAAA,aAClCW,IAAS,CAAC;AAAA,cACTA,IAAS,CAAC;AAAA;AAAA;AAGxB,CAAC,GAEYC,IAAmBd,EAAOe,CAAU;AAAA;AAAA,cAEnC,CAAC,EAAE,OAAAb,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA,GAIlCc,IAAahB,EAAOI,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYxBa,IAAcjB,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQ7BiB,IAAoBlB,EAAOC,CAAQ,EAA2B,CAAC;AAAA,EAC1E,OAAAC;AAAA,EACA,WAAAiB;AACF,MACS;AAAA,cACKA,IAAY,gBAAgB,SAAS;AAAA;AAAA;AAAA,oBAG/BA,IAAY,gBAAgBjB,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,cAIpDA,EAAM,OAAO,OAAO;AAAA;AAAA,GAGjC,GAEYkB,IAAapB,EAAOI,CAAI;AAAA;AAAA;AAAA;AAAA;"}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
const r = (e) => {
|
2
|
+
switch (e) {
|
3
|
+
case "LEARNING":
|
4
|
+
return "LEARN";
|
5
|
+
case "RECAP":
|
6
|
+
return "Recap";
|
7
|
+
case "DYNAMIC":
|
8
|
+
case "ASSESSMENT":
|
9
|
+
return "Test";
|
10
|
+
case "PRACTICE":
|
11
|
+
case "EXTRA_PRACTICE":
|
12
|
+
return "Practice";
|
13
|
+
case "MASTERY":
|
14
|
+
return "Smart Practice";
|
15
|
+
case "PUZZLE_EASY":
|
16
|
+
case "PUZZLE_MEDIUM":
|
17
|
+
case "PUZZLE_HARD":
|
18
|
+
return "Puzzle";
|
19
|
+
case "VIDEO":
|
20
|
+
return "Video";
|
21
|
+
default:
|
22
|
+
return "Practice";
|
23
|
+
}
|
24
|
+
};
|
25
|
+
export {
|
26
|
+
r as getNodeTypeBasedHWCardTitle
|
27
|
+
};
|
28
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/features/homework/utils.ts"],"sourcesContent":["export const getNodeTypeBasedHWCardTitle = (nodeType: string) => {\n switch (nodeType) {\n case 'LEARNING':\n return 'LEARN';\n case 'RECAP':\n return 'Recap';\n case 'DYNAMIC':\n case 'ASSESSMENT':\n return 'Test';\n case 'PRACTICE':\n case 'EXTRA_PRACTICE':\n return 'Practice';\n case 'MASTERY':\n return 'Smart Practice';\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return 'Puzzle';\n case 'VIDEO':\n return 'Video';\n default:\n return 'Practice';\n }\n};\n"],"names":["getNodeTypeBasedHWCardTitle","nodeType"],"mappings":"AAAa,MAAAA,IAA8B,CAACC,MAAqB;AAC/D,UAAQA,GAAU;AAAA,IAChB,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT;AACS,aAAA;AAAA,EACX;AACF;"}
|
package/dist/features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.js
CHANGED
@@ -7,7 +7,7 @@ const v = E({
|
|
7
7
|
canAutoPlayAudio: !1,
|
8
8
|
canAutoPlayVideo: !1
|
9
9
|
}), O = ({ children: u }) => {
|
10
|
-
const [l, a] = s(!1), [A, c] = s(!1), { onEvent:
|
10
|
+
const [l, a] = s(!1), [A, c] = s(!1), { onEvent: o } = f();
|
11
11
|
return d(() => {
|
12
12
|
const n = () => {
|
13
13
|
a(!0), c(!0), r.forEach((e) => {
|
@@ -17,36 +17,36 @@ const v = E({
|
|
17
17
|
r.forEach((e) => {
|
18
18
|
document.addEventListener(e, n);
|
19
19
|
});
|
20
|
-
const
|
21
|
-
e instanceof DOMException ? e.name !== "NotAllowedError" &&
|
20
|
+
const t = (e) => {
|
21
|
+
e instanceof DOMException ? e.name !== "NotAllowedError" && o(i.ERROR_LOADING_MEDIA, {
|
22
22
|
name: e.name
|
23
|
-
}) : (console.log(e),
|
23
|
+
}) : (console.log(e), o(i.ERROR_LOADING_MEDIA, {
|
24
24
|
error: e
|
25
25
|
}));
|
26
26
|
};
|
27
27
|
try {
|
28
28
|
new Audio(y).play().then(() => {
|
29
29
|
a(!0);
|
30
|
-
}).catch(
|
30
|
+
}).catch(t);
|
31
31
|
} catch (e) {
|
32
|
-
|
32
|
+
t(e);
|
33
33
|
}
|
34
34
|
try {
|
35
35
|
const e = document.createElement("video");
|
36
|
-
e.src = P, e.play().then(() => {
|
36
|
+
e.src = P, e.setAttribute("playsinline", "true"), e.play().then(() => {
|
37
37
|
c(!0);
|
38
|
-
}).catch(
|
38
|
+
}).catch(t).finally(() => {
|
39
39
|
e.remove();
|
40
40
|
});
|
41
41
|
} catch (e) {
|
42
|
-
|
42
|
+
t(e);
|
43
43
|
}
|
44
44
|
return () => {
|
45
45
|
r.forEach((e) => {
|
46
46
|
document.removeEventListener(e, n);
|
47
47
|
});
|
48
48
|
};
|
49
|
-
}, [
|
49
|
+
}, [o]), /* @__PURE__ */ m(v.Provider, { value: { canAutoPlayAudio: l, canAutoPlayVideo: A }, children: u });
|
50
50
|
};
|
51
51
|
export {
|
52
52
|
v as AutoPlayPermissionContext,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-auto-play-permission-context-provider.js","sources":["../../../../src/features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.tsx"],"sourcesContent":["import type { IAutoPlayPermissionContextType } from './use-auto-play-permission-context-types';\nimport type { FC, ReactNode } from 'react';\n\nimport { useState, useEffect, createContext } from 'react';\n\nimport { useUIContext } from '../../ui/context/context';\nimport { EVENTS, SMALL_AUDIO, SMALL_VIDEO } from './constants';\nimport { USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS } from './use-auto-play-permission-analytics-events';\n\nexport const AutoPlayPermissionContext = createContext<IAutoPlayPermissionContextType>({\n canAutoPlayAudio: false,\n canAutoPlayVideo: false,\n});\n\nexport const AutoPlayPermissionProvider: FC<{ children: ReactNode }> = ({ children }) => {\n const [canAutoPlayAudio, setCanAutoPlayAudio] = useState(false);\n const [canAutoPlayVideo, setCanAutoPlayVideo] = useState(false);\n const { onEvent } = useUIContext();\n\n useEffect(() => {\n const enableAutoplay = () => {\n setCanAutoPlayAudio(true);\n setCanAutoPlayVideo(true);\n EVENTS.forEach(event => {\n document.removeEventListener(event, enableAutoplay);\n });\n };\n\n EVENTS.forEach(event => {\n document.addEventListener(event, enableAutoplay);\n });\n\n const handleError = (err: unknown) => {\n if (err instanceof DOMException) {\n err.name !== 'NotAllowedError' &&\n onEvent(USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS.ERROR_LOADING_MEDIA, {\n name: err.name,\n });\n } else {\n // eslint-disable-next-line no-console\n console.log(err);\n onEvent(USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS.ERROR_LOADING_MEDIA, {\n error: err,\n });\n }\n };\n\n // audio autoplay check\n // way to check if autoplay is allowed by the browser for audio\n try {\n new Audio(SMALL_AUDIO) // smallest silent audio file\n .play()\n .then(() => {\n setCanAutoPlayAudio(true);\n })\n .catch(handleError);\n } catch (err) {\n handleError(err);\n }\n\n // video autoplay check\n // way to check if autoplay is allowed by the browserfor video\n try {\n const video = document.createElement('video');\n\n video.src = SMALL_VIDEO; // smallest silent video file\n\n video\n .play()\n .then(() => {\n setCanAutoPlayVideo(true);\n })\n .catch(handleError)\n .finally(() => {\n video.remove();\n });\n } catch (err) {\n handleError(err);\n }\n\n return () => {\n EVENTS.forEach(event => {\n document.removeEventListener(event, enableAutoplay);\n });\n };\n }, [onEvent]);\n\n return (\n <AutoPlayPermissionContext.Provider value={{ canAutoPlayAudio, canAutoPlayVideo }}>\n {children}\n </AutoPlayPermissionContext.Provider>\n );\n};\n"],"names":["AutoPlayPermissionContext","createContext","AutoPlayPermissionProvider","children","canAutoPlayAudio","setCanAutoPlayAudio","useState","canAutoPlayVideo","setCanAutoPlayVideo","onEvent","useUIContext","useEffect","enableAutoplay","EVENTS","event","handleError","err","USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS","SMALL_AUDIO","video","SMALL_VIDEO","jsx"],"mappings":";;;;;AASO,MAAMA,IAA4BC,EAA8C;AAAA,EACrF,kBAAkB;AAAA,EAClB,kBAAkB;AACpB,CAAC,GAEYC,IAA0D,CAAC,EAAE,UAAAC,QAAe;AACvF,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAS,EAAK,GACxD,CAACC,GAAkBC,CAAmB,IAAIF,EAAS,EAAK,GACxD,EAAE,SAAAG,MAAYC;AAEpB,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAiB,MAAM;AAC3B,MAAAP,EAAoB,EAAI,GACxBG,EAAoB,EAAI,GACxBK,EAAO,QAAQ,CAASC,MAAA;AACb,iBAAA,oBAAoBA,GAAOF,CAAc;AAAA,MAAA,CACnD;AAAA,IAAA;AAGH,IAAAC,EAAO,QAAQ,CAASC,MAAA;AACb,eAAA,iBAAiBA,GAAOF,CAAc;AAAA,IAAA,CAChD;AAEK,UAAAG,IAAc,CAACC,MAAiB;AACpC,MAAIA,aAAe,eACjBA,EAAI,SAAS,qBACXP,EAAQQ,EAA0C,qBAAqB;AAAA,QACrE,MAAMD,EAAI;AAAA,MAAA,CACX,KAGH,QAAQ,IAAIA,CAAG,GACfP,EAAQQ,EAA0C,qBAAqB;AAAA,QACrE,OAAOD;AAAA,MAAA,CACR;AAAA,IACH;AAKE,QAAA;AACF,UAAI,MAAME,CAAW,EAClB,KAAK,EACL,KAAK,MAAM;AACV,QAAAb,EAAoB,EAAI;AAAA,MAAA,CACzB,EACA,MAAMU,CAAW;AAAA,aACbC,GAAK;AACZ,MAAAD,EAAYC,CAAG;AAAA,IACjB;AAII,QAAA;AACI,YAAAG,IAAQ,SAAS,cAAc,OAAO;AAE5C,MAAAA,EAAM,MAAMC,
|
1
|
+
{"version":3,"file":"use-auto-play-permission-context-provider.js","sources":["../../../../src/features/hooks/use-auto-play-permission/use-auto-play-permission-context-provider.tsx"],"sourcesContent":["import type { IAutoPlayPermissionContextType } from './use-auto-play-permission-context-types';\nimport type { FC, ReactNode } from 'react';\n\nimport { useState, useEffect, createContext } from 'react';\n\nimport { useUIContext } from '../../ui/context/context';\nimport { EVENTS, SMALL_AUDIO, SMALL_VIDEO } from './constants';\nimport { USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS } from './use-auto-play-permission-analytics-events';\n\nexport const AutoPlayPermissionContext = createContext<IAutoPlayPermissionContextType>({\n canAutoPlayAudio: false,\n canAutoPlayVideo: false,\n});\n\nexport const AutoPlayPermissionProvider: FC<{ children: ReactNode }> = ({ children }) => {\n const [canAutoPlayAudio, setCanAutoPlayAudio] = useState(false);\n const [canAutoPlayVideo, setCanAutoPlayVideo] = useState(false);\n const { onEvent } = useUIContext();\n\n useEffect(() => {\n const enableAutoplay = () => {\n setCanAutoPlayAudio(true);\n setCanAutoPlayVideo(true);\n EVENTS.forEach(event => {\n document.removeEventListener(event, enableAutoplay);\n });\n };\n\n EVENTS.forEach(event => {\n document.addEventListener(event, enableAutoplay);\n });\n\n const handleError = (err: unknown) => {\n if (err instanceof DOMException) {\n err.name !== 'NotAllowedError' &&\n onEvent(USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS.ERROR_LOADING_MEDIA, {\n name: err.name,\n });\n } else {\n // eslint-disable-next-line no-console\n console.log(err);\n onEvent(USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS.ERROR_LOADING_MEDIA, {\n error: err,\n });\n }\n };\n\n // audio autoplay check\n // way to check if autoplay is allowed by the browser for audio\n try {\n new Audio(SMALL_AUDIO) // smallest silent audio file\n .play()\n .then(() => {\n setCanAutoPlayAudio(true);\n })\n .catch(handleError);\n } catch (err) {\n handleError(err);\n }\n\n // video autoplay check\n // way to check if autoplay is allowed by the browserfor video\n try {\n const video = document.createElement('video');\n\n video.src = SMALL_VIDEO; // smallest silent video file\n video.setAttribute('playsinline', 'true');\n\n video\n .play()\n .then(() => {\n setCanAutoPlayVideo(true);\n })\n .catch(handleError)\n .finally(() => {\n video.remove();\n });\n } catch (err) {\n handleError(err);\n }\n\n return () => {\n EVENTS.forEach(event => {\n document.removeEventListener(event, enableAutoplay);\n });\n };\n }, [onEvent]);\n\n return (\n <AutoPlayPermissionContext.Provider value={{ canAutoPlayAudio, canAutoPlayVideo }}>\n {children}\n </AutoPlayPermissionContext.Provider>\n );\n};\n"],"names":["AutoPlayPermissionContext","createContext","AutoPlayPermissionProvider","children","canAutoPlayAudio","setCanAutoPlayAudio","useState","canAutoPlayVideo","setCanAutoPlayVideo","onEvent","useUIContext","useEffect","enableAutoplay","EVENTS","event","handleError","err","USE_AUTO_PLAY_PERMISSION_ANALYTICS_EVENTS","SMALL_AUDIO","video","SMALL_VIDEO","jsx"],"mappings":";;;;;AASO,MAAMA,IAA4BC,EAA8C;AAAA,EACrF,kBAAkB;AAAA,EAClB,kBAAkB;AACpB,CAAC,GAEYC,IAA0D,CAAC,EAAE,UAAAC,QAAe;AACvF,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAS,EAAK,GACxD,CAACC,GAAkBC,CAAmB,IAAIF,EAAS,EAAK,GACxD,EAAE,SAAAG,MAAYC;AAEpB,SAAAC,EAAU,MAAM;AACd,UAAMC,IAAiB,MAAM;AAC3B,MAAAP,EAAoB,EAAI,GACxBG,EAAoB,EAAI,GACxBK,EAAO,QAAQ,CAASC,MAAA;AACb,iBAAA,oBAAoBA,GAAOF,CAAc;AAAA,MAAA,CACnD;AAAA,IAAA;AAGH,IAAAC,EAAO,QAAQ,CAASC,MAAA;AACb,eAAA,iBAAiBA,GAAOF,CAAc;AAAA,IAAA,CAChD;AAEK,UAAAG,IAAc,CAACC,MAAiB;AACpC,MAAIA,aAAe,eACjBA,EAAI,SAAS,qBACXP,EAAQQ,EAA0C,qBAAqB;AAAA,QACrE,MAAMD,EAAI;AAAA,MAAA,CACX,KAGH,QAAQ,IAAIA,CAAG,GACfP,EAAQQ,EAA0C,qBAAqB;AAAA,QACrE,OAAOD;AAAA,MAAA,CACR;AAAA,IACH;AAKE,QAAA;AACF,UAAI,MAAME,CAAW,EAClB,KAAK,EACL,KAAK,MAAM;AACV,QAAAb,EAAoB,EAAI;AAAA,MAAA,CACzB,EACA,MAAMU,CAAW;AAAA,aACbC,GAAK;AACZ,MAAAD,EAAYC,CAAG;AAAA,IACjB;AAII,QAAA;AACI,YAAAG,IAAQ,SAAS,cAAc,OAAO;AAE5C,MAAAA,EAAM,MAAMC,GACND,EAAA,aAAa,eAAe,MAAM,GAGrCA,EAAA,OACA,KAAK,MAAM;AACV,QAAAX,EAAoB,EAAI;AAAA,MACzB,CAAA,EACA,MAAMO,CAAW,EACjB,QAAQ,MAAM;AACb,QAAAI,EAAM,OAAO;AAAA,MAAA,CACd;AAAA,aACIH,GAAK;AACZ,MAAAD,EAAYC,CAAG;AAAA,IACjB;AAEA,WAAO,MAAM;AACX,MAAAH,EAAO,QAAQ,CAASC,MAAA;AACb,iBAAA,oBAAoBA,GAAOF,CAAc;AAAA,MAAA,CACnD;AAAA,IAAA;AAAA,EACH,GACC,CAACH,CAAO,CAAC,GAGV,gBAAAY,EAACrB,EAA0B,UAA1B,EAAmC,OAAO,EAAE,kBAAAI,GAAkB,kBAAAG,EAAiB,GAC7E,UAAAJ,EACH,CAAA;AAEJ;"}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { jsxs as $, jsx as
|
2
|
-
import { memo as q, useState as s, useMemo as f, useCallback as
|
1
|
+
import { jsxs as $, jsx as N } from "react/jsx-runtime";
|
2
|
+
import { memo as q, useState as s, useMemo as f, useCallback as n } from "react";
|
3
3
|
import { EVENTS as z } from "../../../../communication/pub-sub/constants.js";
|
4
4
|
import { useInClassActionDispatcher as B } from "../../../../communication/pub-sub/hooks.js";
|
5
5
|
import G from "../../../../ui/context/context.js";
|
@@ -10,45 +10,43 @@ import X from "../delete-milestone/confirm-delete.js";
|
|
10
10
|
import { useMilestonePatch as Z } from "./api/patch-milestone.js";
|
11
11
|
import ee from "./edit-milestone.js";
|
12
12
|
import { parse as te } from "../../../../../node_modules/date-fns/parse.js";
|
13
|
-
const
|
13
|
+
const P = {
|
14
14
|
DELETE_CONFIRM: "delete_confirm",
|
15
15
|
EDIT: "edit"
|
16
16
|
}, oe = q(
|
17
17
|
({
|
18
|
-
milestoneName:
|
18
|
+
milestoneName: v,
|
19
19
|
milestoneId: e,
|
20
|
-
milestoneDueDate:
|
21
|
-
studentId:
|
22
|
-
isMilestoneChaptersListEditable:
|
20
|
+
milestoneDueDate: p,
|
21
|
+
studentId: u,
|
22
|
+
isMilestoneChaptersListEditable: I,
|
23
23
|
isMilestoneDateEditable: x,
|
24
|
-
isClassOngoing:
|
24
|
+
isClassOngoing: E,
|
25
25
|
onDelete: F,
|
26
|
-
analyticsProps:
|
27
|
-
canDelete:
|
28
|
-
milestoneState:
|
29
|
-
studentClassroomId:
|
30
|
-
courseStream:
|
26
|
+
analyticsProps: M,
|
27
|
+
canDelete: O,
|
28
|
+
milestoneState: w,
|
29
|
+
studentClassroomId: A,
|
30
|
+
courseStream: _
|
31
31
|
}) => {
|
32
|
-
const [D,
|
32
|
+
const [D, L] = s("edit"), [t, R] = s(p), [i, h] = s(!1), [r, C] = s(!1), [c, l] = s(""), o = f(
|
33
33
|
() => Math.floor((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0) / 1e3),
|
34
34
|
[]
|
35
|
-
),
|
35
|
+
), a = f(
|
36
36
|
() => o + K,
|
37
37
|
[o]
|
38
|
-
), { dispatchInClassAction: T } = B({ studentClassroomId:
|
39
|
-
|
40
|
-
}, [
|
41
|
-
(
|
42
|
-
if (
|
38
|
+
), { dispatchInClassAction: T } = B({ studentClassroomId: A }), V = t !== p, g = n(() => {
|
39
|
+
i && h(!1), r && C(!1);
|
40
|
+
}, [i, r]), k = n(
|
41
|
+
(m) => {
|
42
|
+
if (m) {
|
43
43
|
C(!0);
|
44
44
|
return;
|
45
45
|
}
|
46
46
|
Q({
|
47
47
|
milestone_state_group: "LIVE",
|
48
|
-
|
49
|
-
|
50
|
-
student_id: E,
|
51
|
-
in_class: a
|
48
|
+
course_stream: _,
|
49
|
+
student_id: u
|
52
50
|
}), h(!0), T({
|
53
51
|
eventName: z.MILESTONE_EDITED,
|
54
52
|
eventPayload: {
|
@@ -56,59 +54,59 @@ const v = {
|
|
56
54
|
}
|
57
55
|
});
|
58
56
|
},
|
59
|
-
[T,
|
60
|
-
), { patch:
|
57
|
+
[T, e, u, _]
|
58
|
+
), { patch: S, isProcessing: b } = Z({
|
61
59
|
onComplete: k
|
62
|
-
}), j =
|
63
|
-
(
|
64
|
-
|
65
|
-
const
|
66
|
-
if (!
|
67
|
-
const
|
68
|
-
|
60
|
+
}), j = n(
|
61
|
+
(m) => {
|
62
|
+
g();
|
63
|
+
const y = m.target.value;
|
64
|
+
if (!y) return;
|
65
|
+
const d = te(y, "yyyy-MM-dd", /* @__PURE__ */ new Date()).getTime() / 1e3;
|
66
|
+
c && d >= o && d < a && l(""), R(d);
|
69
67
|
},
|
70
|
-
[
|
71
|
-
), U =
|
72
|
-
if (t < o || t >
|
73
|
-
t < o ?
|
68
|
+
[c, g, a, o]
|
69
|
+
), U = n(() => {
|
70
|
+
if (t < o || t > a) {
|
71
|
+
t < o ? l("Please enter a future date") : l("Please select a date within the next year");
|
74
72
|
return;
|
75
73
|
}
|
76
|
-
|
74
|
+
S(e, {
|
77
75
|
milestone_date_ts: t
|
78
76
|
});
|
79
77
|
}, [
|
80
78
|
e,
|
81
79
|
t,
|
82
|
-
|
80
|
+
a,
|
83
81
|
o,
|
84
|
-
|
82
|
+
S
|
85
83
|
]), Y = () => {
|
86
|
-
|
84
|
+
L(P.DELETE_CONFIRM);
|
87
85
|
}, H = f(() => ({
|
88
|
-
...
|
86
|
+
...M,
|
89
87
|
milestone_id: e,
|
90
88
|
temporary_milestone_id: e,
|
91
|
-
is_student_class_ongoing:
|
92
|
-
}), [
|
89
|
+
is_student_class_ongoing: E
|
90
|
+
}), [M, E, e]), W = J(H);
|
93
91
|
return /* @__PURE__ */ $(G.Provider, { value: W, children: [
|
94
|
-
D ===
|
95
|
-
D === "edit" && /* @__PURE__ */
|
92
|
+
D === P.DELETE_CONFIRM && /* @__PURE__ */ N(X, { milestoneId: e, onDelete: F }),
|
93
|
+
D === "edit" && /* @__PURE__ */ N(
|
96
94
|
ee,
|
97
95
|
{
|
98
|
-
inputMilestoneName:
|
96
|
+
inputMilestoneName: v,
|
99
97
|
areDateUpdatesDisabled: !x,
|
100
98
|
handleDateChange: j,
|
101
99
|
inputMilestoneDate: t,
|
102
100
|
anyFieldChanged: V,
|
103
101
|
isProcessing: b,
|
104
|
-
isDataPatched:
|
105
|
-
isMilestoneChaptersListEditable:
|
102
|
+
isDataPatched: i,
|
103
|
+
isMilestoneChaptersListEditable: I,
|
106
104
|
onSave: U,
|
107
|
-
isPatchingFailed:
|
105
|
+
isPatchingFailed: r,
|
108
106
|
onDeleteOptionClick: Y,
|
109
|
-
errorMessage:
|
110
|
-
canDelete:
|
111
|
-
milestoneState:
|
107
|
+
errorMessage: c,
|
108
|
+
canDelete: O,
|
109
|
+
milestoneState: w
|
112
110
|
}
|
113
111
|
)
|
114
112
|
] });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/features/milestone/edit/comps/edit-milestone-modal/index.tsx"],"sourcesContent":["import type { IEditMilestoneModalProps } from './edit-milestone-modal-types';\nimport type { ChangeEvent } from 'react';\n\nimport { parse } from 'date-fns';\nimport React, { memo, useCallback, useMemo, useState } from 'react';\n\nimport { EVENTS } from '../../../../communication/pub-sub/constants';\nimport { useInClassActionDispatcher } from '../../../../communication/pub-sub/hooks';\nimport UIContext from '../../../../ui/context/context';\nimport useTrackingContext from '../../../../ui/context/use-tracking-context';\nimport { ONE_YEAR_TIMESTAMP_IN_SECONDS } from '../../../constants';\nimport { invalidateMilestonesData } from '../../../milestone-list-container/api/get-milestones';\nimport ConfirmDelete from '../delete-milestone/confirm-delete';\nimport { useMilestonePatch } from './api/patch-milestone';\nimport EditMilestone from './edit-milestone';\n\nconst VIEWS = {\n DELETE_CONFIRM: 'delete_confirm',\n EDIT: 'edit',\n};\n\n// https://github.com/cuemath/package-leap/issues/409\nconst EditDeleteMilestone: React.FC<IEditMilestoneModalProps> = memo(\n ({\n milestoneName,\n milestoneId,\n milestoneDueDate,\n studentId,\n isMilestoneChaptersListEditable,\n isMilestoneDateEditable,\n isClassOngoing,\n onDelete,\n analyticsProps,\n canDelete,\n milestoneState,\n studentClassroomId,\n courseStream,\n }) => {\n const [view, setView] = useState<(typeof VIEWS)[keyof typeof VIEWS]>('edit');\n\n const [inputMilestoneDate, setMilestoneDate] = useState(milestoneDueDate);\n const [isDataPatched, setIsDataPatched] = useState(false);\n const [isPatchingFailed, setIsPatchingFailed] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const todayTimestampSeconds = useMemo(\n () => Math.floor(new Date().setHours(0, 0, 0, 0) / 1000),\n [],\n );\n const oneYearFutureTimestampSeconds = useMemo(\n () => todayTimestampSeconds + ONE_YEAR_TIMESTAMP_IN_SECONDS,\n [todayTimestampSeconds],\n );\n\n const { dispatchInClassAction } = useInClassActionDispatcher({ studentClassroomId });\n\n const anyFieldChanged = inputMilestoneDate !== milestoneDueDate;\n\n const handleClearState = useCallback(() => {\n if (isDataPatched) {\n setIsDataPatched(false);\n }\n\n if (isPatchingFailed) {\n setIsPatchingFailed(false);\n }\n }, [isDataPatched, isPatchingFailed]);\n\n const handleOnComplete = useCallback(\n (errorMsg: string | null) => {\n if (errorMsg) {\n setIsPatchingFailed(true);\n\n return;\n }\n\n invalidateMilestonesData({\n milestone_state_group: 'LIVE',\n
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/features/milestone/edit/comps/edit-milestone-modal/index.tsx"],"sourcesContent":["import type { IEditMilestoneModalProps } from './edit-milestone-modal-types';\nimport type { ChangeEvent } from 'react';\n\nimport { parse } from 'date-fns';\nimport React, { memo, useCallback, useMemo, useState } from 'react';\n\nimport { EVENTS } from '../../../../communication/pub-sub/constants';\nimport { useInClassActionDispatcher } from '../../../../communication/pub-sub/hooks';\nimport UIContext from '../../../../ui/context/context';\nimport useTrackingContext from '../../../../ui/context/use-tracking-context';\nimport { ONE_YEAR_TIMESTAMP_IN_SECONDS } from '../../../constants';\nimport { invalidateMilestonesData } from '../../../milestone-list-container/api/get-milestones';\nimport ConfirmDelete from '../delete-milestone/confirm-delete';\nimport { useMilestonePatch } from './api/patch-milestone';\nimport EditMilestone from './edit-milestone';\n\nconst VIEWS = {\n DELETE_CONFIRM: 'delete_confirm',\n EDIT: 'edit',\n};\n\n// https://github.com/cuemath/package-leap/issues/409\nconst EditDeleteMilestone: React.FC<IEditMilestoneModalProps> = memo(\n ({\n milestoneName,\n milestoneId,\n milestoneDueDate,\n studentId,\n isMilestoneChaptersListEditable,\n isMilestoneDateEditable,\n isClassOngoing,\n onDelete,\n analyticsProps,\n canDelete,\n milestoneState,\n studentClassroomId,\n courseStream,\n }) => {\n const [view, setView] = useState<(typeof VIEWS)[keyof typeof VIEWS]>('edit');\n\n const [inputMilestoneDate, setMilestoneDate] = useState(milestoneDueDate);\n const [isDataPatched, setIsDataPatched] = useState(false);\n const [isPatchingFailed, setIsPatchingFailed] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const todayTimestampSeconds = useMemo(\n () => Math.floor(new Date().setHours(0, 0, 0, 0) / 1000),\n [],\n );\n const oneYearFutureTimestampSeconds = useMemo(\n () => todayTimestampSeconds + ONE_YEAR_TIMESTAMP_IN_SECONDS,\n [todayTimestampSeconds],\n );\n\n const { dispatchInClassAction } = useInClassActionDispatcher({ studentClassroomId });\n\n const anyFieldChanged = inputMilestoneDate !== milestoneDueDate;\n\n const handleClearState = useCallback(() => {\n if (isDataPatched) {\n setIsDataPatched(false);\n }\n\n if (isPatchingFailed) {\n setIsPatchingFailed(false);\n }\n }, [isDataPatched, isPatchingFailed]);\n\n const handleOnComplete = useCallback(\n (errorMsg: string | null) => {\n if (errorMsg) {\n setIsPatchingFailed(true);\n\n return;\n }\n\n invalidateMilestonesData({\n milestone_state_group: 'LIVE',\n course_stream: courseStream,\n student_id: studentId,\n });\n setIsDataPatched(true);\n dispatchInClassAction({\n eventName: EVENTS.MILESTONE_EDITED,\n eventPayload: {\n milestoneId,\n },\n });\n },\n [dispatchInClassAction, milestoneId, studentId, courseStream],\n );\n\n const { patch: updateMilestone, isProcessing } = useMilestonePatch({\n onComplete: handleOnComplete,\n });\n\n const handleDateChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n handleClearState();\n const value = e.target.value;\n\n if (!value) return;\n\n const timestampInSeconds = parse(value, 'yyyy-MM-dd', new Date()).getTime() / 1000;\n\n if (\n errorMessage &&\n timestampInSeconds >= todayTimestampSeconds &&\n timestampInSeconds < oneYearFutureTimestampSeconds\n ) {\n setErrorMessage('');\n }\n\n setMilestoneDate(timestampInSeconds);\n },\n [errorMessage, handleClearState, oneYearFutureTimestampSeconds, todayTimestampSeconds],\n );\n\n const onSave = useCallback(() => {\n if (\n inputMilestoneDate < todayTimestampSeconds ||\n inputMilestoneDate > oneYearFutureTimestampSeconds\n ) {\n if (inputMilestoneDate < todayTimestampSeconds) {\n setErrorMessage('Please enter a future date');\n } else {\n setErrorMessage('Please select a date within the next year');\n }\n\n return;\n }\n\n updateMilestone(milestoneId, {\n milestone_date_ts: inputMilestoneDate,\n });\n }, [\n milestoneId,\n inputMilestoneDate,\n oneYearFutureTimestampSeconds,\n todayTimestampSeconds,\n updateMilestone,\n ]);\n\n const onDeleteOptionClick = () => {\n setView(VIEWS.DELETE_CONFIRM);\n };\n\n const commonAnalytics = useMemo(() => {\n return {\n ...analyticsProps,\n milestone_id: milestoneId,\n temporary_milestone_id: milestoneId,\n is_student_class_ongoing: isClassOngoing,\n };\n }, [analyticsProps, isClassOngoing, milestoneId]);\n\n const analyticsContext = useTrackingContext(commonAnalytics);\n\n return (\n <UIContext.Provider value={analyticsContext}>\n {view === VIEWS.DELETE_CONFIRM && (\n <ConfirmDelete milestoneId={milestoneId} onDelete={onDelete} />\n )}\n\n {view === 'edit' && (\n <EditMilestone\n inputMilestoneName={milestoneName}\n areDateUpdatesDisabled={!isMilestoneDateEditable}\n handleDateChange={handleDateChange}\n inputMilestoneDate={inputMilestoneDate}\n anyFieldChanged={anyFieldChanged}\n isProcessing={isProcessing}\n isDataPatched={isDataPatched}\n isMilestoneChaptersListEditable={isMilestoneChaptersListEditable}\n onSave={onSave}\n isPatchingFailed={isPatchingFailed}\n onDeleteOptionClick={onDeleteOptionClick}\n errorMessage={errorMessage}\n canDelete={canDelete}\n milestoneState={milestoneState}\n />\n )}\n </UIContext.Provider>\n );\n },\n);\n\nexport default EditDeleteMilestone;\n"],"names":["VIEWS","EditDeleteMilestone","memo","milestoneName","milestoneId","milestoneDueDate","studentId","isMilestoneChaptersListEditable","isMilestoneDateEditable","isClassOngoing","onDelete","analyticsProps","canDelete","milestoneState","studentClassroomId","courseStream","view","setView","useState","inputMilestoneDate","setMilestoneDate","isDataPatched","setIsDataPatched","isPatchingFailed","setIsPatchingFailed","errorMessage","setErrorMessage","todayTimestampSeconds","useMemo","oneYearFutureTimestampSeconds","ONE_YEAR_TIMESTAMP_IN_SECONDS","dispatchInClassAction","useInClassActionDispatcher","anyFieldChanged","handleClearState","useCallback","handleOnComplete","errorMsg","invalidateMilestonesData","EVENTS","updateMilestone","isProcessing","useMilestonePatch","handleDateChange","e","value","timestampInSeconds","parse","onSave","onDeleteOptionClick","commonAnalytics","analyticsContext","useTrackingContext","jsxs","UIContext","jsx","ConfirmDelete","EditMilestone","EditDeleteMilestone$1"],"mappings":"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"}
|