@cuemath/leap 3.5.10-mb → 3.5.11-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 +4 -0
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/assets/images/images.js +12 -0
- package/dist/assets/images/images.js.map +1 -1
- package/dist/features/circle-games/hooks/use-circle-sounds/constants.js +7 -5
- package/dist/features/circle-games/hooks/use-circle-sounds/constants.js.map +1 -1
- package/dist/features/circle-games/hooks/use-circle-sounds/helper.js +19 -0
- package/dist/features/circle-games/hooks/use-circle-sounds/helper.js.map +1 -0
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +72 -73
- package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
- package/dist/features/timeline/api/use-daily-timeline-get.js +10 -0
- package/dist/features/timeline/api/use-daily-timeline-get.js.map +1 -0
- package/dist/features/timeline/comps/accordion-item/accordion-item.js +67 -0
- package/dist/features/timeline/comps/accordion-item/accordion-item.js.map +1 -0
- package/dist/features/timeline/comps/constants.js +30 -0
- package/dist/features/timeline/comps/constants.js.map +1 -0
- package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items-styled.js +31 -0
- package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items-styled.js.map +1 -0
- package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items.js +117 -0
- package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items.js.map +1 -0
- package/dist/features/timeline/comps/month-break/month-break-styled.js +12 -0
- package/dist/features/timeline/comps/month-break/month-break-styled.js.map +1 -0
- package/dist/features/timeline/comps/month-break/month-break.js +21 -0
- package/dist/features/timeline/comps/month-break/month-break.js.map +1 -0
- package/dist/features/timeline/comps/no-activity.js +30 -0
- package/dist/features/timeline/comps/no-activity.js.map +1 -0
- package/dist/features/timeline/comps/utils.js +40 -0
- package/dist/features/timeline/comps/utils.js.map +1 -0
- package/dist/features/timeline/comps/year-break/year-break-styled.js +9 -0
- package/dist/features/timeline/comps/year-break/year-break-styled.js.map +1 -0
- package/dist/features/timeline/comps/year-break/year-break.js +14 -0
- package/dist/features/timeline/comps/year-break/year-break.js.map +1 -0
- package/dist/features/timeline/daily-timeline-styled.js +18 -0
- package/dist/features/timeline/daily-timeline-styled.js.map +1 -0
- package/dist/features/timeline/daily-timeline-types.js +7 -0
- package/dist/features/timeline/daily-timeline-types.js.map +1 -0
- package/dist/features/timeline/daily-timeline-view.js +78 -0
- package/dist/features/timeline/daily-timeline-view.js.map +1 -0
- package/dist/features/timeline/daily-timeline.js +108 -0
- package/dist/features/timeline/daily-timeline.js.map +1 -0
- package/dist/features/ui/intersection-loader/intersection-loader.js +47 -0
- package/dist/features/ui/intersection-loader/intersection-loader.js.map +1 -0
- package/dist/features/ui/theme/text.js +15 -0
- package/dist/features/ui/theme/text.js.map +1 -1
- package/dist/index.d.ts +37 -4
- package/dist/index.js +243 -239
- package/dist/index.js.map +1 -1
- package/dist/node_modules/date-fns/endOfDay.js +10 -0
- package/dist/node_modules/date-fns/endOfDay.js.map +1 -0
- package/dist/node_modules/date-fns/endOfMonth.js +10 -0
- package/dist/node_modules/date-fns/endOfMonth.js.map +1 -0
- package/dist/node_modules/date-fns/isLastDayOfMonth.js +12 -0
- package/dist/node_modules/date-fns/isLastDayOfMonth.js.map +1 -0
- package/dist/node_modules/date-fns/parseISO.js +123 -0
- package/dist/node_modules/date-fns/parseISO.js.map +1 -0
- package/dist/static/apr.09a50ff7.png +0 -0
- package/dist/static/aug.7179d37e.png +0 -0
- package/dist/static/circle-icon.1027df3c.svg +1 -0
- package/dist/static/cw-icon.c61f9779.svg +1 -0
- package/dist/static/dec.09f7e315.png +0 -0
- package/dist/static/feb.9e72504d.png +0 -0
- package/dist/static/hw-icon.6d78e885.svg +1 -0
- package/dist/static/jan.da91944a.png +0 -0
- package/dist/static/jul.5a1c4932.png +0 -0
- package/dist/static/jun.62639c2f.png +0 -0
- package/dist/static/mar.f51bcfa6.png +0 -0
- package/dist/static/may.7c542020.png +0 -0
- package/dist/static/no-activity.0451dcbb.svg +1 -0
- package/dist/static/nov.058343e7.png +0 -0
- package/dist/static/oct.573ee19d.png +0 -0
- package/dist/static/sep.3ccb6468.png +0 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/features/timeline/comps/constants.ts"],"sourcesContent":["import { IMAGES } from '../../../assets/images/images';\nimport { NODE_TYPE } from '../../sheets/constants/sheet';\n\nexport const INITIAL_PAGE = 1;\n\nexport const monthImageMap = {\n '01': IMAGES.JAN,\n '02': IMAGES.FEB,\n '03': IMAGES.MAR,\n '04': IMAGES.APR,\n '05': IMAGES.MAY,\n '06': IMAGES.JUN,\n '07': IMAGES.JUL,\n '08': IMAGES.AUG,\n '09': IMAGES.SEP,\n '10': IMAGES.OCT,\n '11': IMAGES.NOV,\n '12': IMAGES.DEC,\n};\n\nexport const CODING_ACTIVITY_NODE_TYPES = [\n NODE_TYPE.TURING_BASIC,\n NODE_TYPE.TURING_LINK,\n NODE_TYPE.TURING_SHARE,\n NODE_TYPE.PYTHON_BASIC,\n NODE_TYPE.PYTHON_VISUAL,\n];\n\nexport enum TIMELINE_EVENTS {\n TIMELINE_VIEWED = 'timeline_viewed',\n TIMELINE_CLOSED = 'timeline_closed',\n TIMELINE_SCROLLED = 'timeline_scrolled',\n TIMELINE_VIEW_EXPANDED = 'timeline_view_expanded',\n TIMELINE_VIEW_COLLAPSED = 'timeline_view_collapsed',\n}\n"],"names":["INITIAL_PAGE","monthImageMap","IMAGES","CODING_ACTIVITY_NODE_TYPES","NODE_TYPE","TIMELINE_EVENTS"],"mappings":";;AAGO,MAAMA,IAAe,GAEfC,IAAgB;AAAA,EAC3B,MAAMC,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AACf,GAEaC,IAA6B;AAAA,EACxCC,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AACZ;AAEY,IAAAC,sBAAAA,OACVA,EAAA,kBAAkB,mBAClBA,EAAA,kBAAkB,mBAClBA,EAAA,oBAAoB,qBACpBA,EAAA,yBAAyB,0BACzBA,EAAA,0BAA0B,2BALhBA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import e from "styled-components";
|
|
2
|
+
import n from "../../../ui/layout/flex-view.js";
|
|
3
|
+
const i = e(n)`
|
|
4
|
+
border-bottom: ${({ $shouldAddBorder: o, theme: t }) => o ? `1px solid ${t.colors.BLACK}` : "none"};
|
|
5
|
+
`, p = e(n)`
|
|
6
|
+
border-top: none;
|
|
7
|
+
border-bottom: ${({ $isExpanded: o }) => o && "none"};
|
|
8
|
+
padding-bottom: 24px;
|
|
9
|
+
`, s = e(n)`
|
|
10
|
+
position: absolute;
|
|
11
|
+
top: 0px;
|
|
12
|
+
left: 0px;
|
|
13
|
+
z-index: 2;
|
|
14
|
+
`;
|
|
15
|
+
e(n)`
|
|
16
|
+
border-bottom: ${({ $isLastItem: o, theme: t }) => o ? `1px solid ${t.colors.BLACK}` : "none"};
|
|
17
|
+
`;
|
|
18
|
+
const b = e(n)`
|
|
19
|
+
border-left: ${({ $isLastCard: o, theme: t }) => o ? "none" : `1px dashed ${t.colors.GREY_3}`};
|
|
20
|
+
padding-bottom: ${({ $isLastCard: o }) => o ? "0" : "20px"};
|
|
21
|
+
> div {
|
|
22
|
+
margin-left: -8px;
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
export {
|
|
26
|
+
b as Card,
|
|
27
|
+
i as SectionContainer,
|
|
28
|
+
p as SectionFooter,
|
|
29
|
+
s as TagContainer
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=daily-timeline-items-styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-timeline-items-styled.js","sources":["../../../../../src/features/timeline/comps/daily-timeline-items/daily-timeline-items-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nexport const SectionContainer = styled(FlexView)<{ $shouldAddBorder?: boolean }>`\n border-bottom: ${({ $shouldAddBorder, theme }) =>\n $shouldAddBorder ? `1px solid ${theme.colors.BLACK}` : 'none'};\n`;\n\nexport const SectionFooter = styled(FlexView)<{ $isExpanded?: boolean }>`\n border-top: none;\n border-bottom: ${({ $isExpanded }) => $isExpanded && 'none'};\n padding-bottom: 24px;\n`;\n\nexport const TagContainer = styled(FlexView)`\n position: absolute;\n top: 0px;\n left: 0px;\n z-index: 2;\n`;\n\nexport const SectionChild = styled(FlexView)<{ $isLastItem?: boolean }>`\n border-bottom: ${({ $isLastItem, theme }) =>\n $isLastItem ? `1px solid ${theme.colors.BLACK}` : 'none'};\n`;\n\nexport const Card = styled(FlexView)<{ $isLastCard: boolean }>`\n border-left: ${({ $isLastCard, theme }) =>\n $isLastCard ? 'none' : `1px dashed ${theme.colors.GREY_3}`};\n padding-bottom: ${({ $isLastCard }) => ($isLastCard ? '0' : '20px')};\n > div {\n margin-left: -8px;\n }\n`;\n"],"names":["SectionContainer","styled","FlexView","$shouldAddBorder","theme","SectionFooter","$isExpanded","TagContainer","$isLastItem","Card","$isLastCard"],"mappings":";;AAIa,MAAAA,IAAmBC,EAAOC,CAAQ;AAAA,mBAC5B,CAAC,EAAE,kBAAAC,GAAkB,OAAAC,EAAM,MAC1CD,IAAmB,aAAaC,EAAM,OAAO,KAAK,KAAK,MAAM;AAAA,GAGpDC,IAAgBJ,EAAOC,CAAQ;AAAA;AAAA,mBAEzB,CAAC,EAAE,aAAAI,QAAkBA,KAAe,MAAM;AAAA;AAAA,GAIhDC,IAAeN,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAOfD,EAAOC,CAAQ;AAAA,mBACxB,CAAC,EAAE,aAAAM,GAAa,OAAAJ,EAAM,MACrCI,IAAc,aAAaJ,EAAM,OAAO,KAAK,KAAK,MAAM;AAAA;AAG/C,MAAAK,IAAOR,EAAOC,CAAQ;AAAA,iBAClB,CAAC,EAAE,aAAAQ,GAAa,OAAAN,EAAM,MACnCM,IAAc,SAAS,cAAcN,EAAM,OAAO,MAAM,EAAE;AAAA,oBAC1C,CAAC,EAAE,aAAAM,EAAA,MAAmBA,IAAc,MAAM,MAAO;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { jsx as e, jsxs as m, Fragment as y } from "react/jsx-runtime";
|
|
2
|
+
import { memo as T, useState as A, useMemo as L, useCallback as w } from "react";
|
|
3
|
+
import D from "../../../../assets/line-icons/icons/plus.js";
|
|
4
|
+
import S from "../../../ui/accordion-section/accordion-section.js";
|
|
5
|
+
import s from "../../../ui/layout/flex-view.js";
|
|
6
|
+
import k from "../../../../assets/line-icons/icons/minus.js";
|
|
7
|
+
import B from "../../../ui/image/image.js";
|
|
8
|
+
import $ from "../../../ui/text/text.js";
|
|
9
|
+
import N from "../accordion-item/accordion-item.js";
|
|
10
|
+
import { SectionContainer as V, TagContainer as X, SectionFooter as j, Card as M } from "./daily-timeline-items-styled.js";
|
|
11
|
+
import { getTimelineCardIcon as K } from "../utils.js";
|
|
12
|
+
import { useUIContext as P } from "../../../ui/context/context.js";
|
|
13
|
+
import { TIMELINE_EVENTS as f } from "../constants.js";
|
|
14
|
+
const F = T((I) => {
|
|
15
|
+
const {
|
|
16
|
+
type: t,
|
|
17
|
+
summary: i,
|
|
18
|
+
cards: r,
|
|
19
|
+
onPuzzleClick: E,
|
|
20
|
+
onReviewClick: C,
|
|
21
|
+
courseStream: l,
|
|
22
|
+
shouldShowTag: g,
|
|
23
|
+
userType: _,
|
|
24
|
+
isLastItem: d,
|
|
25
|
+
fromDate: c,
|
|
26
|
+
studentId: a
|
|
27
|
+
} = I, [n, b] = A(!1), p = L(() => K(t), [t]), { onEvent: h } = P(), x = w(
|
|
28
|
+
(o) => {
|
|
29
|
+
b(o), h(
|
|
30
|
+
o ? f.TIMELINE_VIEW_EXPANDED : f.TIMELINE_VIEW_COLLAPSED,
|
|
31
|
+
{
|
|
32
|
+
timeline_date: c,
|
|
33
|
+
student_id: a,
|
|
34
|
+
timeline_section_type: t,
|
|
35
|
+
timeline_section_subject: i
|
|
36
|
+
},
|
|
37
|
+
{ mixpanel: !0 }
|
|
38
|
+
);
|
|
39
|
+
},
|
|
40
|
+
[c, h, a, t, i]
|
|
41
|
+
);
|
|
42
|
+
return /* @__PURE__ */ e(
|
|
43
|
+
S,
|
|
44
|
+
{
|
|
45
|
+
headerElement: /* @__PURE__ */ m(
|
|
46
|
+
V,
|
|
47
|
+
{
|
|
48
|
+
$borderColor: "BLACK_1",
|
|
49
|
+
$shouldAddBorder: d && !n,
|
|
50
|
+
children: [
|
|
51
|
+
g && l && /* @__PURE__ */ e(X, { $position: "absolute", $background: "BLACK_5", $gutter: 4, children: /* @__PURE__ */ e($, { $renderAs: "ab4-black", $color: "WHITE", children: l }) }),
|
|
52
|
+
/* @__PURE__ */ m(
|
|
53
|
+
s,
|
|
54
|
+
{
|
|
55
|
+
$flexDirection: "row",
|
|
56
|
+
$alignItems: "center",
|
|
57
|
+
$justifyContent: "space-between",
|
|
58
|
+
$heightX: 4,
|
|
59
|
+
$widthX: 30,
|
|
60
|
+
$gutterX: 1,
|
|
61
|
+
$gapX: 1.32,
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ m(
|
|
64
|
+
s,
|
|
65
|
+
{
|
|
66
|
+
$flexDirection: "row",
|
|
67
|
+
$alignItems: "center",
|
|
68
|
+
$justifyContent: "center",
|
|
69
|
+
$flexGapX: 1.125,
|
|
70
|
+
children: [
|
|
71
|
+
/* @__PURE__ */ e(s, { children: p && /* @__PURE__ */ e(B, { src: p }) }),
|
|
72
|
+
/* @__PURE__ */ e($, { $renderAs: "ab2", $color: "BLACK_1", children: i ?? "" })
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
n ? /* @__PURE__ */ e(k, { width: 20, height: 20 }) : /* @__PURE__ */ e(D, { width: 20, height: 20 })
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
bodyElement: r.length > 0 ? /* @__PURE__ */ e(
|
|
84
|
+
j,
|
|
85
|
+
{
|
|
86
|
+
$gutter: 32,
|
|
87
|
+
$borderColor: "BLACK_1",
|
|
88
|
+
$isExpanded: n && !d,
|
|
89
|
+
children: r.map((o, u) => /* @__PURE__ */ e(
|
|
90
|
+
M,
|
|
91
|
+
{
|
|
92
|
+
$isLastCard: u === r.length - 1,
|
|
93
|
+
children: /* @__PURE__ */ e(
|
|
94
|
+
N,
|
|
95
|
+
{
|
|
96
|
+
card: o,
|
|
97
|
+
onPuzzleClick: E,
|
|
98
|
+
onReviewClick: C,
|
|
99
|
+
type: t,
|
|
100
|
+
userType: _
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
},
|
|
104
|
+
`${o.node_id}-${u}`
|
|
105
|
+
))
|
|
106
|
+
}
|
|
107
|
+
) : /* @__PURE__ */ e(y, {}),
|
|
108
|
+
defaultVisible: !1,
|
|
109
|
+
onBodyVisibilityChange: x
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
});
|
|
113
|
+
F.displayName = "DailyTimelineItems";
|
|
114
|
+
export {
|
|
115
|
+
F as default
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=daily-timeline-items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-timeline-items.js","sources":["../../../../../src/features/timeline/comps/daily-timeline-items/daily-timeline-items.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useState, type FC } from 'react';\n\nimport PlusIcon from '../../../../assets/line-icons/icons/plus';\nimport AccordionSection from '../../../ui/accordion-section/accordion-section';\nimport FlexView from '../../../ui/layout/flex-view';\nimport MinusIcon from '../../../../assets/line-icons/icons/minus';\nimport Image from '../../../ui/image/image';\nimport Text from '../../../ui/text/text';\nimport AccordionItem from '../accordion-item/accordion-item';\nimport * as Styled from './daily-timeline-items-styled';\nimport { getTimelineCardIcon } from '../utils';\nimport { type IDailyTimelineItemsProps } from './daily-timeline-items.types';\nimport { useUIContext } from '../../../ui/context/context';\nimport { TIMELINE_EVENTS } from '../constants';\n\nconst DailyTimelineItems: FC<IDailyTimelineItemsProps> = memo(props => {\n const {\n type,\n summary,\n cards,\n onPuzzleClick,\n onReviewClick,\n courseStream,\n shouldShowTag,\n userType,\n isLastItem,\n fromDate,\n studentId,\n } = props;\n const [isExpended, setIsExpended] = useState(false);\n\n const timelineIcon = useMemo(() => getTimelineCardIcon(type), [type]);\n const { onEvent: trackEvent } = useUIContext();\n\n const handleExpand = useCallback(\n (val: boolean) => {\n setIsExpended(val);\n\n trackEvent(\n val ? TIMELINE_EVENTS.TIMELINE_VIEW_EXPANDED : TIMELINE_EVENTS.TIMELINE_VIEW_COLLAPSED,\n {\n timeline_date: fromDate,\n student_id: studentId,\n timeline_section_type: type,\n timeline_section_subject: summary,\n },\n { mixpanel: true },\n );\n },\n [fromDate, trackEvent, studentId, type, summary],\n );\n\n return (\n <AccordionSection\n headerElement={\n <Styled.SectionContainer\n $borderColor=\"BLACK_1\"\n $shouldAddBorder={isLastItem && !isExpended}\n >\n {shouldShowTag && courseStream && (\n <Styled.TagContainer $position=\"absolute\" $background=\"BLACK_5\" $gutter={4}>\n <Text $renderAs=\"ab4-black\" $color=\"WHITE\">\n {courseStream}\n </Text>\n </Styled.TagContainer>\n )}\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n $heightX={4}\n $widthX={30}\n $gutterX={1}\n $gapX={1.32}\n >\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $flexGapX={1.125}\n >\n <FlexView>{timelineIcon && <Image src={timelineIcon} />}</FlexView>\n <Text $renderAs=\"ab2\" $color=\"BLACK_1\">\n {summary ?? ''}\n </Text>\n </FlexView>\n {isExpended ? (\n <MinusIcon width={20} height={20} />\n ) : (\n <PlusIcon width={20} height={20} />\n )}\n </FlexView>\n </Styled.SectionContainer>\n }\n bodyElement={\n cards.length > 0 ? (\n <Styled.SectionFooter\n $gutter={32}\n $borderColor={'BLACK_1'}\n $isExpanded={isExpended && !isLastItem}\n >\n {cards.map((card, index) => (\n <Styled.Card\n key={`${card.node_id}-${index}`}\n $isLastCard={index === cards.length - 1}\n >\n <AccordionItem\n card={card}\n onPuzzleClick={onPuzzleClick}\n onReviewClick={onReviewClick}\n type={type}\n userType={userType}\n />\n </Styled.Card>\n ))}\n </Styled.SectionFooter>\n ) : (\n <></>\n )\n }\n defaultVisible={false}\n onBodyVisibilityChange={handleExpand}\n />\n );\n});\n\nDailyTimelineItems.displayName = 'DailyTimelineItems';\n\nexport default DailyTimelineItems;\n"],"names":["DailyTimelineItems","memo","props","type","summary","cards","onPuzzleClick","onReviewClick","courseStream","shouldShowTag","userType","isLastItem","fromDate","studentId","isExpended","setIsExpended","useState","timelineIcon","useMemo","getTimelineCardIcon","trackEvent","useUIContext","handleExpand","useCallback","val","TIMELINE_EVENTS","jsx","AccordionSection","jsxs","Styled.SectionContainer","Styled.TagContainer","Text","FlexView","Image","MinusIcon","PlusIcon","Styled.SectionFooter","card","index","Styled.Card","AccordionItem","Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import r from "styled-components";
|
|
2
|
+
import e from "../../../ui/layout/flex-view.js";
|
|
3
|
+
const n = r(e)`
|
|
4
|
+
margin-top: ${({ $isLastYear: o }) => o ? "-46px" : "0"};
|
|
5
|
+
background-image: url(${({ $img: o }) => o});
|
|
6
|
+
background-size: cover;
|
|
7
|
+
background-position: center;
|
|
8
|
+
`;
|
|
9
|
+
export {
|
|
10
|
+
n as MonthImageWrapper
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=month-break-styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-break-styled.js","sources":["../../../../../src/features/timeline/comps/month-break/month-break-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nexport const MonthImageWrapper = styled(FlexView)<{ $isLastYear: boolean; $img: string }>`\n margin-top: ${({ $isLastYear }) => ($isLastYear ? '-46px' : '0')};\n background-image: url(${({ $img }) => $img});\n background-size: cover;\n background-position: center;\n`;\n"],"names":["MonthImageWrapper","styled","FlexView","$isLastYear","$img"],"mappings":";;AAIa,MAAAA,IAAoBC,EAAOC,CAAQ;AAAA,gBAChC,CAAC,EAAE,aAAAC,EAAA,MAAmBA,IAAc,UAAU,GAAI;AAAA,0BACxC,CAAC,EAAE,MAAAC,EAAK,MAAMA,CAAI;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { memo as o } from "react";
|
|
3
|
+
import { MonthImageWrapper as i } from "./month-break-styled.js";
|
|
4
|
+
import { monthImageMap as p } from "../constants.js";
|
|
5
|
+
const n = o(({ fromMonth: r, isLastDayOfMth: t, isLastDayOfYear: a }) => {
|
|
6
|
+
const m = p[String(r).padStart(2, "0")];
|
|
7
|
+
return r && t ? /* @__PURE__ */ e(
|
|
8
|
+
i,
|
|
9
|
+
{
|
|
10
|
+
$isLastYear: a,
|
|
11
|
+
$img: m,
|
|
12
|
+
$width: "100%",
|
|
13
|
+
$height: 246
|
|
14
|
+
}
|
|
15
|
+
) : null;
|
|
16
|
+
});
|
|
17
|
+
n.displayName = "MonthBreak";
|
|
18
|
+
export {
|
|
19
|
+
n as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=month-break.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-break.js","sources":["../../../../../src/features/timeline/comps/month-break/month-break.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport { type IMonthBreakProps } from './month-break-types';\nimport * as Styled from './month-break-styled';\nimport { monthImageMap } from '../constants';\n\nconst MonthBreak = memo(({ fromMonth, isLastDayOfMth, isLastDayOfYear }: IMonthBreakProps) => {\n const Image = monthImageMap[String(fromMonth).padStart(2, '0') as keyof typeof monthImageMap];\n\n if (fromMonth && isLastDayOfMth)\n return (\n <Styled.MonthImageWrapper\n $isLastYear={isLastDayOfYear}\n $img={Image}\n $width=\"100%\"\n $height={246}\n />\n );\n\n return null;\n});\n\nMonthBreak.displayName = 'MonthBreak';\n\nexport default MonthBreak;\n"],"names":["MonthBreak","memo","fromMonth","isLastDayOfMth","isLastDayOfYear","Image","monthImageMap","jsx","Styled.MonthImageWrapper"],"mappings":";;;;AAMA,MAAMA,IAAaC,EAAK,CAAC,EAAE,WAAAC,GAAW,gBAAAC,GAAgB,iBAAAC,QAAwC;AACtF,QAAAC,IAAQC,EAAc,OAAOJ,CAAS,EAAE,SAAS,GAAG,GAAG,CAA+B;AAE5F,SAAIA,KAAaC,IAEb,gBAAAI;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,aAAaJ;AAAA,MACb,MAAMC;AAAA,MACN,QAAO;AAAA,MACP,SAAS;AAAA,IAAA;AAAA,EAAA,IAIR;AACT,CAAC;AAEDL,EAAW,cAAc;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsxs as t, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { memo as i } from "react";
|
|
3
|
+
import e from "../../ui/image/image.js";
|
|
4
|
+
import m from "../../ui/layout/flex-view.js";
|
|
5
|
+
import c from "../../ui/text/text.js";
|
|
6
|
+
import { ILLUSTRATIONS as $ } from "../../../assets/illustrations/illustrations.js";
|
|
7
|
+
const o = () => /* @__PURE__ */ t(
|
|
8
|
+
m,
|
|
9
|
+
{
|
|
10
|
+
$flexDirection: "row",
|
|
11
|
+
$flexGapX: 0.75,
|
|
12
|
+
$alignItems: "center",
|
|
13
|
+
$gutterX: 1,
|
|
14
|
+
$gapX: 1.32,
|
|
15
|
+
$heightX: 4,
|
|
16
|
+
$widthX: 30,
|
|
17
|
+
$borderColor: "BLACK_T_15",
|
|
18
|
+
$background: "BLACK_T_04",
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ r(e, { src: $.NO_ACTIVITY }),
|
|
21
|
+
/* @__PURE__ */ r(c, { $renderAs: "ab2", $color: "BLACK_T_38", children: "No Activity" })
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
o.displayName = "NoActivity";
|
|
26
|
+
const f = i(o);
|
|
27
|
+
export {
|
|
28
|
+
f as default
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=no-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-activity.js","sources":["../../../../src/features/timeline/comps/no-activity.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport Image from '../../ui/image/image';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\n\nconst NoActivity = () => {\n return (\n <FlexView\n $flexDirection=\"row\"\n $flexGapX={0.75}\n $alignItems=\"center\"\n $gutterX={1}\n $gapX={1.32}\n $heightX={4}\n $widthX={30}\n $borderColor=\"BLACK_T_15\"\n $background=\"BLACK_T_04\"\n >\n <Image src={ILLUSTRATIONS.NO_ACTIVITY} />\n <Text $renderAs=\"ab2\" $color=\"BLACK_T_38\">\n No Activity\n </Text>\n </FlexView>\n );\n};\n\nNoActivity.displayName = 'NoActivity';\n\nexport default memo(NoActivity);\n"],"names":["NoActivity","jsxs","FlexView","jsx","Image","ILLUSTRATIONS","Text","NoActivity$1","memo"],"mappings":";;;;;;AAOA,MAAMA,IAAa,MAEf,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,gBAAe;AAAA,IACf,WAAW;AAAA,IACX,aAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,cAAa;AAAA,IACb,aAAY;AAAA,IAEZ,UAAA;AAAA,MAAC,gBAAAC,EAAAC,GAAA,EAAM,KAAKC,EAAc,YAAa,CAAA;AAAA,wBACtCC,GAAK,EAAA,WAAU,OAAM,QAAO,cAAa,UAE1C,eAAA;AAAA,IAAA;AAAA,EAAA;AAAA;AAKNN,EAAW,cAAc;AAEzB,MAAeO,IAAAC,EAAKR,CAAU;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ILLUSTRATIONS as r } from "../../../assets/illustrations/illustrations.js";
|
|
2
|
+
import a from "../../../assets/line-icons/icons/check2.js";
|
|
3
|
+
import m from "../../../assets/line-icons/icons/cross.js";
|
|
4
|
+
import n from "../../../assets/line-icons/icons/status.js";
|
|
5
|
+
import { CARD_TYPE as e, NODE_STATE as o } from "../daily-timeline-types.js";
|
|
6
|
+
import { formatDate as c } from "../../../node_modules/date-fns/format.js";
|
|
7
|
+
const N = (t) => {
|
|
8
|
+
switch (t) {
|
|
9
|
+
case o.COMPLETED:
|
|
10
|
+
return [a, "GREEN_2"];
|
|
11
|
+
case o.IN_PROGRESS:
|
|
12
|
+
return [n, "YELLOW_2"];
|
|
13
|
+
case o.PENDING:
|
|
14
|
+
return [m, "ORANGE_2"];
|
|
15
|
+
default:
|
|
16
|
+
return [n, "GREY_2"];
|
|
17
|
+
}
|
|
18
|
+
}, i = (t) => {
|
|
19
|
+
switch (t) {
|
|
20
|
+
case e.CW:
|
|
21
|
+
return r.CW_ICON;
|
|
22
|
+
case e.HW:
|
|
23
|
+
return r.HW_ICON;
|
|
24
|
+
case e.CIRCLE:
|
|
25
|
+
return r.CIRCLE_ICON;
|
|
26
|
+
default:
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}, _ = (t) => ({
|
|
30
|
+
day: t.getDate(),
|
|
31
|
+
month: t.getMonth() + 1,
|
|
32
|
+
year: t.getFullYear(),
|
|
33
|
+
monthName: c(t, "MMM")
|
|
34
|
+
});
|
|
35
|
+
export {
|
|
36
|
+
_ as getDayMonthYear,
|
|
37
|
+
N as getStateConf,
|
|
38
|
+
i as getTimelineCardIcon
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/features/timeline/comps/utils.ts"],"sourcesContent":["import { format } from 'date-fns';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport StatusIcon from '../../../assets/line-icons/icons/status';\nimport { CARD_TYPE, NODE_STATE } from '../daily-timeline-types';\n\nexport const getStateConf = (state: NODE_STATE) => {\n switch (state) {\n case NODE_STATE.COMPLETED:\n return [Check2Icon, 'GREEN_2'];\n case NODE_STATE.IN_PROGRESS:\n return [StatusIcon, 'YELLOW_2'];\n case NODE_STATE.PENDING:\n return [CrossIcon, 'ORANGE_2'];\n default:\n return [StatusIcon, 'GREY_2'];\n }\n};\n\nexport const getTimelineCardIcon = (type: CARD_TYPE) => {\n switch (type) {\n case CARD_TYPE.CW:\n return ILLUSTRATIONS.CW_ICON;\n case CARD_TYPE.HW:\n return ILLUSTRATIONS.HW_ICON;\n case CARD_TYPE.CIRCLE:\n return ILLUSTRATIONS.CIRCLE_ICON;\n default:\n return null;\n }\n};\n\nexport const getDayMonthYear = (dateObj: Date) => ({\n day: dateObj.getDate(),\n month: dateObj.getMonth() + 1,\n year: dateObj.getFullYear(),\n monthName: format(dateObj, 'MMM'),\n});\n"],"names":["getStateConf","state","NODE_STATE","Check2Icon","StatusIcon","CrossIcon","getTimelineCardIcon","type","CARD_TYPE","ILLUSTRATIONS","getDayMonthYear","dateObj","format"],"mappings":";;;;;;AAQa,MAAAA,IAAe,CAACC,MAAsB;AACjD,UAAQA,GAAO;AAAA,IACb,KAAKC,EAAW;AACP,aAAA,CAACC,GAAY,SAAS;AAAA,IAC/B,KAAKD,EAAW;AACP,aAAA,CAACE,GAAY,UAAU;AAAA,IAChC,KAAKF,EAAW;AACP,aAAA,CAACG,GAAW,UAAU;AAAA,IAC/B;AACS,aAAA,CAACD,GAAY,QAAQ;AAAA,EAChC;AACF,GAEaE,IAAsB,CAACC,MAAoB;AACtD,UAAQA,GAAM;AAAA,IACZ,KAAKC,EAAU;AACb,aAAOC,EAAc;AAAA,IACvB,KAAKD,EAAU;AACb,aAAOC,EAAc;AAAA,IACvB,KAAKD,EAAU;AACb,aAAOC,EAAc;AAAA,IACvB;AACS,aAAA;AAAA,EACX;AACF,GAEaC,IAAkB,CAACC,OAAmB;AAAA,EACjD,KAAKA,EAAQ,QAAQ;AAAA,EACrB,OAAOA,EAAQ,SAAA,IAAa;AAAA,EAC5B,MAAMA,EAAQ,YAAY;AAAA,EAC1B,WAAWC,EAAOD,GAAS,KAAK;AAClC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"year-break-styled.js","sources":["../../../../../src/features/timeline/comps/year-break/year-break-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nexport const YearWrapper = styled(FlexView)`\n z-index: 1;\n`;\n"],"names":["YearWrapper","styled","FlexView"],"mappings":";;AAIa,MAAAA,IAAcC,EAAOC,CAAQ;AAAA;AAAA;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsxs as t, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { memo as a } from "react";
|
|
3
|
+
import m from "../../../ui/separator/separator.js";
|
|
4
|
+
import i from "../../../ui/text/text.js";
|
|
5
|
+
import { YearWrapper as p } from "./year-break-styled.js";
|
|
6
|
+
const l = a(({ toYear: e, isLastDayOfYear: o }) => o ? /* @__PURE__ */ t(p, { $gutterX: 1, children: [
|
|
7
|
+
/* @__PURE__ */ r(m, { heightX: 1 }),
|
|
8
|
+
/* @__PURE__ */ r(i, { $renderAs: "ac4-black", $color: "BLACK_T_60", children: e })
|
|
9
|
+
] }) : null);
|
|
10
|
+
l.displayName = "YearBreak";
|
|
11
|
+
export {
|
|
12
|
+
l as default
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=year-break.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"year-break.js","sources":["../../../../../src/features/timeline/comps/year-break/year-break.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport * as Styled from './year-break-styled';\nimport { type IYearBreakProps } from './year-break-types';\n\nconst YearBreak = memo(({ toYear, isLastDayOfYear }: IYearBreakProps) => {\n if (isLastDayOfYear) {\n return (\n <Styled.YearWrapper $gutterX={1}>\n <Separator heightX={1} />\n <Text $renderAs=\"ac4-black\" $color=\"BLACK_T_60\">\n {toYear}\n </Text>\n </Styled.YearWrapper>\n );\n }\n\n return null;\n});\n\nYearBreak.displayName = 'YearBreak';\n\nexport default YearBreak;\n"],"names":["YearBreak","memo","toYear","isLastDayOfYear","jsxs","Styled.YearWrapper","jsx","Separator","Text"],"mappings":";;;;;AAOA,MAAMA,IAAYC,EAAK,CAAC,EAAE,QAAAC,GAAQ,iBAAAC,QAC5BA,IAEC,gBAAAC,EAAAC,GAAA,EAAmB,UAAU,GAC5B,UAAA;AAAA,EAAC,gBAAAC,EAAAC,GAAA,EAAU,SAAS,EAAG,CAAA;AAAA,oBACtBC,GAAK,EAAA,WAAU,aAAY,QAAO,cAChC,UACHN,GAAA;AACF,EAAA,CAAA,IAIG,IACR;AAEDF,EAAU,cAAc;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import o from "styled-components";
|
|
2
|
+
import t from "../ui/layout/flex-view.js";
|
|
3
|
+
const l = o(t)`
|
|
4
|
+
overflow-y: auto;
|
|
5
|
+
width: 100%;
|
|
6
|
+
`, m = o(t)`
|
|
7
|
+
max-width: 512px;
|
|
8
|
+
width: 100%;
|
|
9
|
+
`, n = o(t)`
|
|
10
|
+
margin-top: ${({ $addedMonthBreak: i }) => i ? "-108px" : "0"};
|
|
11
|
+
z-index: 1;
|
|
12
|
+
`;
|
|
13
|
+
export {
|
|
14
|
+
n as DailyItems,
|
|
15
|
+
m as DailyTimelineContainer,
|
|
16
|
+
l as ScrollWrapper
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=daily-timeline-styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-timeline-styled.js","sources":["../../../src/features/timeline/daily-timeline-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../ui/layout/flex-view';\n\nconst ScrollWrapper = styled(FlexView)`\n overflow-y: auto;\n width: 100%;\n`;\n\nconst DailyTimelineContainer = styled(FlexView)`\n max-width: 512px;\n width: 100%;\n`;\n\nconst DailyItems = styled(FlexView)<{ $addedMonthBreak?: boolean }>`\n margin-top: ${({ $addedMonthBreak }) =>\n $addedMonthBreak\n ? '-108px' // 64px card height + 16px(separator) + 16(date text) + 12(separator)\n : '0'};\n z-index: 1;\n`;\n\nexport { DailyTimelineContainer, DailyItems, ScrollWrapper };\n"],"names":["ScrollWrapper","styled","FlexView","DailyTimelineContainer","DailyItems","$addedMonthBreak"],"mappings":";;AAIM,MAAAA,IAAgBC,EAAOC,CAAQ;AAAA;AAAA;AAAA,GAK/BC,IAAyBF,EAAOC,CAAQ;AAAA;AAAA;AAAA,GAKxCE,IAAaH,EAAOC,CAAQ;AAAA,gBAClB,CAAC,EAAE,kBAAAG,EAAA,MACfA,IACI,WACA,GAAG;AAAA;AAAA;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
var C = /* @__PURE__ */ ((r) => (r.COMPLETED = "COMPLETED", r.IN_PROGRESS = "IN_PROGRESS", r.PENDING = "PENDING", r))(C || {}), E = /* @__PURE__ */ ((r) => (r.TEACHER = "TEACHER", r.STUDENT = "STUDENT", r.PARENT = "PARENT", r))(E || {}), N = /* @__PURE__ */ ((r) => (r.CW = "CW", r.HW = "HW", r.CIRCLE = "CIRCLE", r))(N || {});
|
|
2
|
+
export {
|
|
3
|
+
N as CARD_TYPE,
|
|
4
|
+
C as NODE_STATE,
|
|
5
|
+
E as USER_TYPE
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=daily-timeline-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-timeline-types.js","sources":["../../../src/features/timeline/daily-timeline-types.ts"],"sourcesContent":["import { type TCourseStream } from '../milestone/create/milestone-create-types';\nimport { type ITimelineData } from './api/use-daily-timeline-get';\n\nexport enum NODE_STATE {\n COMPLETED = 'COMPLETED',\n IN_PROGRESS = 'IN_PROGRESS',\n PENDING = 'PENDING',\n}\n\nexport enum USER_TYPE {\n TEACHER = 'TEACHER',\n STUDENT = 'STUDENT',\n PARENT = 'PARENT',\n}\n\nexport enum CARD_TYPE {\n CW = 'CW',\n HW = 'HW',\n CIRCLE = 'CIRCLE',\n}\n\nexport interface IDailyTimelineProps {\n userType: USER_TYPE;\n studentId: string;\n courseStreams?: TCourseStream[];\n onPuzzlesClick: (userNodeId: string) => void;\n onReviewClick?: (\n userNodeId: string | null,\n isSatMockTestBlock: boolean,\n userBlockId: string | null,\n ) => void;\n scrollAreaHeight?: string | number;\n}\n\nexport interface IDailyTimelineItemsProps extends IDailyTimelineProps {\n entry: ITimelineData;\n index: number;\n shouldShowTag: boolean;\n}\n"],"names":["NODE_STATE","USER_TYPE","CARD_TYPE"],"mappings":"AAGY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,cAAc,eACdA,EAAA,UAAU,WAHAA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,UAAU,WACVA,EAAA,SAAS,UAHCA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,SAAS,UAHCA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsxs as n, Fragment as X, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { getDayMonthYear as D } from "./comps/utils.js";
|
|
3
|
+
import Y from "../ui/layout/flex-view.js";
|
|
4
|
+
import j from "./comps/year-break/year-break.js";
|
|
5
|
+
import m from "../ui/separator/separator.js";
|
|
6
|
+
import k from "./comps/month-break/month-break.js";
|
|
7
|
+
import { DailyItems as A } from "./daily-timeline-styled.js";
|
|
8
|
+
import B from "../ui/text/text.js";
|
|
9
|
+
import S from "./comps/daily-timeline-items/daily-timeline-items.js";
|
|
10
|
+
import b from "./comps/no-activity.js";
|
|
11
|
+
import { CARD_TYPE as w } from "./daily-timeline-types.js";
|
|
12
|
+
import { parseISO as u } from "../../node_modules/date-fns/parseISO.js";
|
|
13
|
+
import { isLastDayOfMonth as x } from "../../node_modules/date-fns/isLastDayOfMonth.js";
|
|
14
|
+
const z = ({
|
|
15
|
+
entry: $,
|
|
16
|
+
index: a,
|
|
17
|
+
shouldShowTag: M,
|
|
18
|
+
userType: _,
|
|
19
|
+
studentId: g,
|
|
20
|
+
onPuzzlesClick: C,
|
|
21
|
+
onReviewClick: L
|
|
22
|
+
}) => {
|
|
23
|
+
const { daily_logs: o, from_date: i, to_date: h } = $, I = u(i), f = u(h), { day: y, month: c, monthName: N } = D(I), {
|
|
24
|
+
day: l,
|
|
25
|
+
month: p,
|
|
26
|
+
year: O,
|
|
27
|
+
monthName: T
|
|
28
|
+
} = D(f), s = x(f), e = s && p === 12 && l === 31;
|
|
29
|
+
return o ? /* @__PURE__ */ n(Y, { children: [
|
|
30
|
+
a !== 0 && /* @__PURE__ */ n(X, { children: [
|
|
31
|
+
/* @__PURE__ */ t(j, { toYear: O, isLastDayOfYear: e }),
|
|
32
|
+
!e && c && e && /* @__PURE__ */ t(m, { heightX: 1 }),
|
|
33
|
+
/* @__PURE__ */ t(
|
|
34
|
+
k,
|
|
35
|
+
{
|
|
36
|
+
fromMonth: c,
|
|
37
|
+
isLastDayOfMth: s,
|
|
38
|
+
isLastDayOfYear: e
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
] }),
|
|
42
|
+
/* @__PURE__ */ n(
|
|
43
|
+
A,
|
|
44
|
+
{
|
|
45
|
+
$gutterX: 1,
|
|
46
|
+
$addedMonthBreak: !!(s && p && a !== 0),
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ t(m, { heightX: 1 }),
|
|
49
|
+
/* @__PURE__ */ t(B, { $renderAs: "ac4", $color: "BLACK_T_60", children: i === h ? `${y} ${N}` : `${y} - ${l} ${T}` }),
|
|
50
|
+
/* @__PURE__ */ t(m, { heightX: 0.75 }),
|
|
51
|
+
o.length > 0 ? o.map((r, d) => /* @__PURE__ */ t(
|
|
52
|
+
S,
|
|
53
|
+
{
|
|
54
|
+
type: r.type,
|
|
55
|
+
summary: r.summary ?? "",
|
|
56
|
+
courseStream: r.course_stream,
|
|
57
|
+
cards: r.cards,
|
|
58
|
+
onPuzzleClick: C,
|
|
59
|
+
onReviewClick: L,
|
|
60
|
+
userType: _,
|
|
61
|
+
shouldShowTag: M && r.course_stream !== w.CIRCLE,
|
|
62
|
+
isLastItem: d === o.length - 1,
|
|
63
|
+
fromDate: i,
|
|
64
|
+
studentId: g
|
|
65
|
+
},
|
|
66
|
+
`timeline-${d}`
|
|
67
|
+
)) : /* @__PURE__ */ t(b, {}),
|
|
68
|
+
/* @__PURE__ */ t(m, { heightX: 1 })
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
] }, `timeline-entry-${a}`) : null;
|
|
73
|
+
};
|
|
74
|
+
z.displayName = "DailyItemsContainer";
|
|
75
|
+
export {
|
|
76
|
+
z as default
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=daily-timeline-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-timeline-view.js","sources":["../../../src/features/timeline/daily-timeline-view.tsx"],"sourcesContent":["import { isLastDayOfMonth, parseISO } from 'date-fns';\nimport { type FC } from 'react';\n\nimport { getDayMonthYear } from './comps/utils';\nimport FlexView from '../ui/layout/flex-view';\nimport YearBreak from './comps/year-break/year-break';\nimport Separator from '../ui/separator/separator';\nimport MonthBreak from './comps/month-break/month-break';\nimport * as Styled from './daily-timeline-styled';\nimport Text from '../ui/text/text';\nimport DailyTimelineItems from './comps/daily-timeline-items/daily-timeline-items';\nimport NoActivity from './comps/no-activity';\nimport { CARD_TYPE, type IDailyTimelineItemsProps } from './daily-timeline-types';\n\nconst DailyItemsContainer: FC<IDailyTimelineItemsProps> = ({\n entry,\n index,\n shouldShowTag,\n userType,\n studentId,\n onPuzzlesClick,\n onReviewClick,\n}) => {\n const { daily_logs: dailyLogs, from_date: fromDate, to_date: toDate } = entry;\n const fromDateObj = parseISO(fromDate);\n const toDateObj = parseISO(toDate);\n\n const { day: fromDay, month: fromMonth, monthName: fromMonthName } = getDayMonthYear(fromDateObj);\n\n const {\n day: toDay,\n month: toMonth,\n year: toYear,\n monthName: toMonthName,\n } = getDayMonthYear(toDateObj);\n\n const isLastDayOfMth = isLastDayOfMonth(toDateObj);\n const isLastDayOfYear = isLastDayOfMth && toMonth === 12 && toDay === 31;\n\n if (!dailyLogs) {\n return null;\n }\n\n return (\n <FlexView key={`timeline-entry-${index}`}>\n {index !== 0 && (\n <>\n <YearBreak toYear={toYear} isLastDayOfYear={isLastDayOfYear} />\n {!isLastDayOfYear && fromMonth && isLastDayOfYear && <Separator heightX={1} />}\n <MonthBreak\n fromMonth={fromMonth}\n isLastDayOfMth={isLastDayOfMth}\n isLastDayOfYear={isLastDayOfYear}\n />\n </>\n )}\n <Styled.DailyItems\n $gutterX={1}\n $addedMonthBreak={!!(isLastDayOfMth && toMonth && index !== 0)}\n >\n <Separator heightX={1} />\n <Text $renderAs=\"ac4\" $color=\"BLACK_T_60\">\n {fromDate === toDate\n ? `${fromDay} ${fromMonthName}`\n : `${fromDay} - ${toDay} ${toMonthName}`}\n </Text>\n <Separator heightX={0.75} />\n {dailyLogs.length > 0 ? (\n dailyLogs.map((log, logIndex) => (\n <DailyTimelineItems\n key={`timeline-${logIndex}`}\n type={log.type}\n summary={log.summary ?? ''}\n courseStream={log.course_stream}\n cards={log.cards}\n onPuzzleClick={onPuzzlesClick}\n onReviewClick={onReviewClick}\n userType={userType}\n shouldShowTag={shouldShowTag && log.course_stream !== CARD_TYPE.CIRCLE}\n isLastItem={logIndex === dailyLogs.length - 1}\n fromDate={fromDate}\n studentId={studentId}\n />\n ))\n ) : (\n <NoActivity />\n )}\n <Separator heightX={1} />\n </Styled.DailyItems>\n </FlexView>\n );\n};\n\nDailyItemsContainer.displayName = 'DailyItemsContainer';\n\nexport default DailyItemsContainer;\n"],"names":["DailyItemsContainer","entry","index","shouldShowTag","userType","studentId","onPuzzlesClick","onReviewClick","dailyLogs","fromDate","toDate","fromDateObj","parseISO","toDateObj","fromDay","fromMonth","fromMonthName","getDayMonthYear","toDay","toMonth","toYear","toMonthName","isLastDayOfMth","isLastDayOfMonth","isLastDayOfYear","FlexView","jsxs","Fragment","jsx","YearBreak","Separator","MonthBreak","Styled.DailyItems","Text","log","logIndex","DailyTimelineItems","CARD_TYPE","NoActivity"],"mappings":";;;;;;;;;;;;;AAcA,MAAMA,IAAoD,CAAC;AAAA,EACzD,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AACF,MAAM;AACJ,QAAM,EAAE,YAAYC,GAAW,WAAWC,GAAU,SAASC,EAAW,IAAAT,GAClEU,IAAcC,EAASH,CAAQ,GAC/BI,IAAYD,EAASF,CAAM,GAE3B,EAAE,KAAKI,GAAS,OAAOC,GAAW,WAAWC,EAAkB,IAAAC,EAAgBN,CAAW,GAE1F;AAAA,IACJ,KAAKO;AAAA,IACL,OAAOC;AAAA,IACP,MAAMC;AAAA,IACN,WAAWC;AAAA,EAAA,IACTJ,EAAgBJ,CAAS,GAEvBS,IAAiBC,EAAiBV,CAAS,GAC3CW,IAAkBF,KAAkBH,MAAY,MAAMD,MAAU;AAEtE,SAAKV,sBAKFiB,GACE,EAAA,UAAA;AAAA,IAAAvB,MAAU,KAEP,gBAAAwB,EAAAC,GAAA,EAAA,UAAA;AAAA,MAAC,gBAAAC,EAAAC,GAAA,EAAU,QAAAT,GAAgB,iBAAAI,EAAkC,CAAA;AAAA,MAC5D,CAACA,KAAmBT,KAAaS,KAAoB,gBAAAI,EAAAE,GAAA,EAAU,SAAS,GAAG;AAAA,MAC5E,gBAAAF;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,WAAAhB;AAAA,UACA,gBAAAO;AAAA,UACA,iBAAAE;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GACF;AAAA,IAEF,gBAAAE;AAAA,MAACM;AAAAA,MAAA;AAAA,QACC,UAAU;AAAA,QACV,kBAAkB,CAAC,EAAEV,KAAkBH,KAAWjB,MAAU;AAAA,QAE5D,UAAA;AAAA,UAAC,gBAAA0B,EAAAE,GAAA,EAAU,SAAS,EAAG,CAAA;AAAA,4BACtBG,GAAK,EAAA,WAAU,OAAM,QAAO,cAC1B,gBAAavB,IACV,GAAGI,CAAO,IAAIE,CAAa,KAC3B,GAAGF,CAAO,MAAMI,CAAK,IAAIG,CAAW,IAC1C;AAAA,UACA,gBAAAO,EAACE,GAAU,EAAA,SAAS,KAAM,CAAA;AAAA,UACzBtB,EAAU,SAAS,IAClBA,EAAU,IAAI,CAAC0B,GAAKC,MAClB,gBAAAP;AAAA,YAACQ;AAAA,YAAA;AAAA,cAEC,MAAMF,EAAI;AAAA,cACV,SAASA,EAAI,WAAW;AAAA,cACxB,cAAcA,EAAI;AAAA,cAClB,OAAOA,EAAI;AAAA,cACX,eAAe5B;AAAA,cACf,eAAAC;AAAA,cACA,UAAAH;AAAA,cACA,eAAeD,KAAiB+B,EAAI,kBAAkBG,EAAU;AAAA,cAChE,YAAYF,MAAa3B,EAAU,SAAS;AAAA,cAC5C,UAAAC;AAAA,cACA,WAAAJ;AAAA,YAAA;AAAA,YAXK,YAAY8B,CAAQ;AAAA,UAAA,CAa5B,IAED,gBAAAP,EAACU,GAAW,EAAA;AAAA,UAEd,gBAAAV,EAACE,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACzB;AAAA,EA5Ca,EAAA,GAAA,kBAAkB5B,CAAK,EA6CtC,IAjDO;AAmDX;AAEAF,EAAoB,cAAc;"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { jsx as t, jsxs as N } from "react/jsx-runtime";
|
|
2
|
+
import { memo as P, useState as C, useCallback as y, useMemo as $, useEffect as c, Fragment as R } from "react";
|
|
3
|
+
import w from "../ui/error/error.js";
|
|
4
|
+
import D from "../ui/layout/flex-view.js";
|
|
5
|
+
import j from "../ui/loader/app-loader/app-loader.js";
|
|
6
|
+
import F from "../ui/intersection-loader/intersection-loader.js";
|
|
7
|
+
import { useDailyTimelineGet as V } from "./api/use-daily-timeline-get.js";
|
|
8
|
+
import { ScrollWrapper as k, DailyTimelineContainer as G } from "./daily-timeline-styled.js";
|
|
9
|
+
import { USER_TYPE as O, CARD_TYPE as I } from "./daily-timeline-types.js";
|
|
10
|
+
import { INITIAL_PAGE as U, TIMELINE_EVENTS as _ } from "./comps/constants.js";
|
|
11
|
+
import { getTimezone as W } from "../../helpers/date-time.js";
|
|
12
|
+
import { useUIContext as Y } from "../ui/context/context.js";
|
|
13
|
+
import b from "../hooks/use-previous.js";
|
|
14
|
+
import X from "./daily-timeline-view.js";
|
|
15
|
+
const x = P(
|
|
16
|
+
({ userType: p, studentId: i, courseStreams: m, onPuzzlesClick: M, onReviewClick: S, scrollAreaHeight: u }) => {
|
|
17
|
+
const [l, h] = C([]), [g, T] = C(!1), { onEvent: s } = Y(), {
|
|
18
|
+
get: L,
|
|
19
|
+
data: e,
|
|
20
|
+
isProcessingFailed: d,
|
|
21
|
+
isProcessing: z
|
|
22
|
+
} = V(i), f = b(e == null ? void 0 : e.curr_page), a = y(
|
|
23
|
+
(r = U, o = !1) => {
|
|
24
|
+
o && T(!0), L(i, {
|
|
25
|
+
page: r,
|
|
26
|
+
timezone: W(),
|
|
27
|
+
course_stream: p === O.TEACHER ? m : []
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
[L, i, p, m]
|
|
31
|
+
), v = $(() => {
|
|
32
|
+
const r = /* @__PURE__ */ new Set();
|
|
33
|
+
l.forEach((n) => {
|
|
34
|
+
n.daily_logs && n.daily_logs.forEach((E) => {
|
|
35
|
+
E.course_stream && E.course_stream !== I.CIRCLE && r.add(E.course_stream);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
const o = new Set(
|
|
39
|
+
(m || []).filter((n) => String(n) !== I.CIRCLE)
|
|
40
|
+
);
|
|
41
|
+
return o.size > 1 || r.size > 1 || o.size > 0 && r.size > 0 && (o.size !== r.size || !Array.from(o).every((n) => r.has(n)));
|
|
42
|
+
}, [l, m]), A = y(() => {
|
|
43
|
+
e != null && e.next_page && !g && (a(e.next_page, !0), s(
|
|
44
|
+
_.TIMELINE_SCROLLED,
|
|
45
|
+
{
|
|
46
|
+
student_id: i
|
|
47
|
+
},
|
|
48
|
+
{ mixpanel: !0 }
|
|
49
|
+
));
|
|
50
|
+
}, [e, i, s, g, a]);
|
|
51
|
+
return c(() => {
|
|
52
|
+
e && (e.curr_page === 1 ? h((e == null ? void 0 : e.user_logs) ?? []) : e.curr_page && f !== e.curr_page && (h((r) => [...r, ...e.user_logs ?? []]), T(!1)));
|
|
53
|
+
}, [e, f]), c(() => {
|
|
54
|
+
s(
|
|
55
|
+
_.TIMELINE_VIEWED,
|
|
56
|
+
{
|
|
57
|
+
student_id: i
|
|
58
|
+
},
|
|
59
|
+
{ mixpanel: !0 }
|
|
60
|
+
);
|
|
61
|
+
}, [i, s]), c(() => () => {
|
|
62
|
+
s(
|
|
63
|
+
_.TIMELINE_CLOSED,
|
|
64
|
+
{
|
|
65
|
+
student_id: i
|
|
66
|
+
},
|
|
67
|
+
{ mixpanel: !0 }
|
|
68
|
+
);
|
|
69
|
+
}, [i, s]), c(() => {
|
|
70
|
+
f || a(1, !1);
|
|
71
|
+
}, [a, f]), d ? /* @__PURE__ */ t(w, { height: u || "100vh", onTryAgain: a }) : z && !l.length ? /* @__PURE__ */ t(
|
|
72
|
+
D,
|
|
73
|
+
{
|
|
74
|
+
$alignItems: "center",
|
|
75
|
+
$justifyContent: "center",
|
|
76
|
+
$height: u || "100vh",
|
|
77
|
+
children: /* @__PURE__ */ t(j, { width: "100%", height: "100%" })
|
|
78
|
+
}
|
|
79
|
+
) : /* @__PURE__ */ t(k, { $alignItems: "center", $gapX: 1, children: /* @__PURE__ */ N(G, { children: [
|
|
80
|
+
l.map((r, o) => /* @__PURE__ */ t(R, { children: /* @__PURE__ */ t(
|
|
81
|
+
X,
|
|
82
|
+
{
|
|
83
|
+
entry: r,
|
|
84
|
+
index: o,
|
|
85
|
+
shouldShowTag: v,
|
|
86
|
+
onPuzzlesClick: M,
|
|
87
|
+
onReviewClick: S,
|
|
88
|
+
userType: p,
|
|
89
|
+
studentId: i
|
|
90
|
+
}
|
|
91
|
+
) }, `timeline-entry-${o}`)),
|
|
92
|
+
/* @__PURE__ */ t(
|
|
93
|
+
F,
|
|
94
|
+
{
|
|
95
|
+
onLoadMore: A,
|
|
96
|
+
isLoading: g,
|
|
97
|
+
hasMore: !!(e != null && e.next_page)
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
] }) });
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
x.displayName = "DailyTimeline";
|
|
104
|
+
const ae = x;
|
|
105
|
+
export {
|
|
106
|
+
ae as default
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=daily-timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daily-timeline.js","sources":["../../../src/features/timeline/daily-timeline.tsx"],"sourcesContent":["import { Fragment, memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport Error from '../ui/error/error';\nimport FlexView from '../ui/layout/flex-view';\nimport AppLoader from '../ui/loader/app-loader/app-loader';\nimport IntersectionLoader from '../ui/intersection-loader/intersection-loader';\nimport { type ITimelineData, useDailyTimelineGet } from './api/use-daily-timeline-get';\nimport * as Styled from './daily-timeline-styled';\nimport { CARD_TYPE, USER_TYPE, type IDailyTimelineProps } from './daily-timeline-types';\nimport { INITIAL_PAGE, TIMELINE_EVENTS } from './comps/constants';\nimport { getTimezone } from '../../helpers/date-time';\nimport { useUIContext } from '../ui/context/context';\nimport usePrevious from '../hooks/use-previous';\nimport DailyItemsContainer from './daily-timeline-view';\n\nconst DailyTimeline: FC<IDailyTimelineProps> = memo(\n ({ userType, studentId, courseStreams, onPuzzlesClick, onReviewClick, scrollAreaHeight }) => {\n const [allTimelineData, setAllTimelineData] = useState<ITimelineData[]>([]);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const { onEvent: trackEvent } = useUIContext();\n const {\n get: getTimeline,\n data: timelineData,\n isProcessingFailed,\n isProcessing,\n } = useDailyTimelineGet(studentId);\n\n const prevCurrentPage = usePrevious(timelineData?.curr_page);\n\n const fetchTimeline = useCallback(\n (page = INITIAL_PAGE, append = false) => {\n if (append) {\n setIsLoadingMore(true);\n }\n\n getTimeline(studentId, {\n page,\n timezone: getTimezone(),\n course_stream: userType === USER_TYPE.TEACHER ? courseStreams : [],\n });\n },\n [getTimeline, studentId, userType, courseStreams],\n );\n\n const shouldShowTag = useMemo(() => {\n const allCourseStreams = new Set<string>();\n\n allTimelineData.forEach(entry => {\n if (entry.daily_logs) {\n entry.daily_logs.forEach(log => {\n if (log.course_stream && log.course_stream !== CARD_TYPE.CIRCLE) {\n allCourseStreams.add(log.course_stream);\n }\n });\n }\n });\n\n const courseStreamsSet = new Set(\n (courseStreams || []).filter(stream => String(stream) !== CARD_TYPE.CIRCLE),\n );\n\n return (\n courseStreamsSet.size > 1 ||\n allCourseStreams.size > 1 ||\n (courseStreamsSet.size > 0 &&\n allCourseStreams.size > 0 &&\n (courseStreamsSet.size !== allCourseStreams.size ||\n !Array.from(courseStreamsSet).every(stream => allCourseStreams.has(stream))))\n );\n }, [allTimelineData, courseStreams]);\n\n const handleLoadMore = useCallback(() => {\n if (timelineData?.next_page && !isLoadingMore) {\n fetchTimeline(timelineData.next_page, true);\n trackEvent(\n TIMELINE_EVENTS.TIMELINE_SCROLLED,\n {\n student_id: studentId,\n },\n { mixpanel: true },\n );\n }\n }, [timelineData, studentId, trackEvent, isLoadingMore, fetchTimeline]);\n\n useEffect(() => {\n if (timelineData) {\n if (timelineData.curr_page === 1) {\n setAllTimelineData(timelineData?.user_logs ?? []);\n } else if (timelineData.curr_page && prevCurrentPage !== timelineData.curr_page) {\n setAllTimelineData(prev => [...prev, ...(timelineData.user_logs ?? [])]);\n setIsLoadingMore(false);\n }\n }\n }, [timelineData, prevCurrentPage]);\n\n useEffect(() => {\n trackEvent(\n TIMELINE_EVENTS.TIMELINE_VIEWED,\n {\n student_id: studentId,\n },\n { mixpanel: true },\n );\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n return () => {\n trackEvent(\n TIMELINE_EVENTS.TIMELINE_CLOSED,\n {\n student_id: studentId,\n },\n { mixpanel: true },\n );\n };\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n if (!prevCurrentPage) {\n fetchTimeline(1, false);\n }\n }, [fetchTimeline, prevCurrentPage]);\n\n if (isProcessingFailed) {\n return <Error height={scrollAreaHeight || '100vh'} onTryAgain={fetchTimeline} />;\n }\n\n if (isProcessing && !allTimelineData.length) {\n return (\n <FlexView\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $height={scrollAreaHeight || '100vh'}\n >\n <AppLoader width=\"100%\" height=\"100%\" />\n </FlexView>\n );\n }\n\n return (\n <Styled.ScrollWrapper $alignItems=\"center\" $gapX={1}>\n <Styled.DailyTimelineContainer>\n {allTimelineData.map((entry, index) => (\n <Fragment key={`timeline-entry-${index}`}>\n <DailyItemsContainer\n entry={entry}\n index={index}\n shouldShowTag={shouldShowTag}\n onPuzzlesClick={onPuzzlesClick}\n onReviewClick={onReviewClick}\n userType={userType}\n studentId={studentId}\n />\n </Fragment>\n ))}\n <IntersectionLoader\n onLoadMore={handleLoadMore}\n isLoading={isLoadingMore}\n hasMore={!!timelineData?.next_page}\n />\n </Styled.DailyTimelineContainer>\n </Styled.ScrollWrapper>\n );\n },\n);\n\nDailyTimeline.displayName = 'DailyTimeline';\n\nexport default DailyTimeline;\n"],"names":["DailyTimeline","memo","userType","studentId","courseStreams","onPuzzlesClick","onReviewClick","scrollAreaHeight","allTimelineData","setAllTimelineData","useState","isLoadingMore","setIsLoadingMore","trackEvent","useUIContext","getTimeline","timelineData","isProcessingFailed","isProcessing","useDailyTimelineGet","prevCurrentPage","usePrevious","fetchTimeline","useCallback","page","INITIAL_PAGE","append","getTimezone","USER_TYPE","shouldShowTag","useMemo","allCourseStreams","entry","log","CARD_TYPE","courseStreamsSet","stream","handleLoadMore","TIMELINE_EVENTS","useEffect","prev","Error","jsx","FlexView","AppLoader","Styled.ScrollWrapper","jsxs","Styled.DailyTimelineContainer","index","Fragment","DailyItemsContainer","IntersectionLoader","DailyTimeline$1"],"mappings":"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"}
|