@cuemath/leap 2.8.53-as1 → 2.8.53-as2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/assets/line-icons/icons/puzzle-icon.js +51 -0
  2. package/dist/assets/line-icons/icons/puzzle-icon.js.map +1 -0
  3. package/dist/assets/line-icons/icons/tile.js +54 -0
  4. package/dist/assets/line-icons/icons/tile.js.map +1 -0
  5. package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js +13 -0
  6. package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +1 -0
  7. package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js +60 -0
  8. package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js.map +1 -0
  9. package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js +44 -0
  10. package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js.map +1 -0
  11. package/dist/features/cue-canvas/sidebar/puzzles/filters.js +107 -0
  12. package/dist/features/cue-canvas/sidebar/puzzles/filters.js.map +1 -0
  13. package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js +49 -0
  14. package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js.map +1 -0
  15. package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js +84 -0
  16. package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js.map +1 -0
  17. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js +36 -0
  18. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js.map +1 -0
  19. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js +133 -0
  20. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js.map +1 -0
  21. package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js +96 -0
  22. package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js.map +1 -0
  23. package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js +29 -0
  24. package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js.map +1 -0
  25. package/dist/features/cue-canvas/sidebar/puzzles/utils.js +124 -0
  26. package/dist/features/cue-canvas/sidebar/puzzles/utils.js.map +1 -0
  27. package/dist/features/cue-canvas/sidebar/sidebar.js +16 -0
  28. package/dist/features/cue-canvas/sidebar/sidebar.js.map +1 -0
  29. package/dist/features/cue-canvas/sidebar/tiles/tile.js +16 -0
  30. package/dist/features/cue-canvas/sidebar/tiles/tile.js.map +1 -0
  31. package/dist/features/hooks/use-debounce.js +16 -0
  32. package/dist/features/hooks/use-debounce.js.map +1 -0
  33. package/dist/features/whiteboard/whiteboard.js +48 -0
  34. package/dist/features/whiteboard/whiteboard.js.map +1 -0
  35. package/dist/features/whiteboard/whiteboard.styled.js +35 -0
  36. package/dist/features/whiteboard/whiteboard.styled.js.map +1 -0
  37. package/dist/index.d.ts +11 -0
  38. package/dist/index.js +304 -302
  39. package/dist/index.js.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,133 @@
1
+ import { jsxs as o, jsx as t } from "react/jsx-runtime";
2
+ import { memo as j, useState as f, useCallback as c } from "react";
3
+ import { ILLUSTRATIONS as O } from "../../../../assets/illustrations/illustrations.js";
4
+ import V from "../../../hooks/use-debounce.js";
5
+ import { Loader as Y } from "../../../ui/buttons/button/button-styled.js";
6
+ import G from "../../../ui/buttons/clickable/clickable.js";
7
+ import X from "../../../ui/inputs/searchable-input/searchable-input.js";
8
+ import h from "../../../ui/layout/flex-view.js";
9
+ import H from "../../../ui/text/text.js";
10
+ import N from "./filter-selection-menu.js";
11
+ import U from "./filters.js";
12
+ import W from "./hooks/use-fetch-cue-canvas-activity.js";
13
+ import K from "./launch-puzzle.js";
14
+ import q from "./puzzle-menu-header.js";
15
+ import { MenuContainer as x, FilterSidebar as B, SearchHeaderWrapper as J, ActivitiesList as Q, ActivityImage as Z, ActivityTitle as ee, EmptyStateContainer as te } from "./puzzles-styled.js";
16
+ import { FILTER_KEYS as p } from "./utils.js";
17
+ const re = ({ toggleMenu: y, studentGrade: F }) => {
18
+ const { isPuzzlesProcessing: P, setActivityFilters: a, puzzlesData: _ } = W(F), { filters: L, results: i } = _ || {}, {
19
+ activity_tiles: n,
20
+ activity_topics: l,
21
+ activity_types: g,
22
+ grades: m,
23
+ search: z
24
+ } = L || {}, [$, C] = f(), [S, T] = f(
25
+ null
26
+ ), [I, b] = f(z || ""), v = V((e) => {
27
+ e !== z && d({ search: e });
28
+ }, 300), D = c(
29
+ (e) => {
30
+ b(e), v(e);
31
+ },
32
+ [v]
33
+ ), k = c((e) => {
34
+ T((r) => r === e ? null : e);
35
+ }, []), w = c(() => {
36
+ T(null);
37
+ }, []), d = c(
38
+ (e) => {
39
+ const r = Object.keys(e)[0], s = r && e[r];
40
+ a((u) => ({
41
+ ...u,
42
+ [r]: s
43
+ }));
44
+ },
45
+ [a]
46
+ ), E = c(() => {
47
+ a({}), b("");
48
+ }, [a]), M = c(() => {
49
+ C(void 0);
50
+ }, []);
51
+ if (P && (!n || (n == null ? void 0 : n.length) === 0) && (!l || (l == null ? void 0 : l.length) === 0))
52
+ return /* @__PURE__ */ o(x, { $justifyContent: "center", $alignItems: "center", children: [
53
+ /* @__PURE__ */ t(Y, { src: O.LOADER, alt: "Loader", $size: "small" }),
54
+ ";"
55
+ ] });
56
+ if ($)
57
+ return /* @__PURE__ */ t(
58
+ K,
59
+ {
60
+ launchPuzzleData: $,
61
+ onMenuVisibilityChange: M,
62
+ toggleMenu: y
63
+ }
64
+ );
65
+ if (S) {
66
+ let e, r;
67
+ switch (S) {
68
+ case "grades":
69
+ e = m, r = p.ACTIVITY_GRADES;
70
+ break;
71
+ case "topics":
72
+ e = l, r = p.ACTIVITY_TOPICS;
73
+ break;
74
+ case "tiles":
75
+ e = n, r = p.ACTIVITY_TILES;
76
+ break;
77
+ default:
78
+ return null;
79
+ }
80
+ return e ? /* @__PURE__ */ t(
81
+ N,
82
+ {
83
+ closeAllPopups: w,
84
+ menuItems: e,
85
+ onFiltersChange: d,
86
+ type: r
87
+ }
88
+ ) : null;
89
+ }
90
+ return /* @__PURE__ */ o(x, { children: [
91
+ /* @__PURE__ */ t(q, { toggleMenu: y, onReset: E }),
92
+ /* @__PURE__ */ o(h, { $flexDirection: "row", $alignItems: "flex-start", children: [
93
+ /* @__PURE__ */ t(B, { $width: "35%", $gutterX: 1, children: m && n && l && g && /* @__PURE__ */ t(
94
+ U,
95
+ {
96
+ handleFiltersChange: d,
97
+ filterGrades: m,
98
+ filterTiles: n,
99
+ filterTypes: g,
100
+ filterTopics: l,
101
+ togglePopup: k
102
+ }
103
+ ) }),
104
+ /* @__PURE__ */ o(h, { $width: "65%", children: [
105
+ /* @__PURE__ */ t(J, { $heightX: 4, $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ t(
106
+ X,
107
+ {
108
+ value: I,
109
+ onSearchTextChange: D,
110
+ renderAs: "secondary",
111
+ width: "99%",
112
+ size: "regular",
113
+ label: "Type topic name...",
114
+ searchOnClear: !0
115
+ }
116
+ ) }),
117
+ /* @__PURE__ */ t(h, { $gutterX: 1, children: /* @__PURE__ */ t(H, { $renderAs: "body3", $color: "GREY_2", children: i && i.length > 0 ? `${i.length} activities found` : I ? "No activities found" : null }) }),
118
+ /* @__PURE__ */ t(Q, { $flexDirection: "row", $flexWrap: !0, $justifyContent: "space-evenly", children: i && (i == null ? void 0 : i.length) > 0 ? i.map((e) => {
119
+ var A;
120
+ const { activity_url: r, name: s, id: u } = e, R = (A = r.split("_")[0]) == null ? void 0 : A.concat("_thumbnail.png");
121
+ return r ? /* @__PURE__ */ t(G, { onClick: () => C(e), label: "puzzle", children: /* @__PURE__ */ o(h, { $alignItems: "center", children: [
122
+ /* @__PURE__ */ t(Z, { title: s, id: u, src: R }),
123
+ s && /* @__PURE__ */ t(ee, { children: s })
124
+ ] }) }, u) : null;
125
+ }) : /* @__PURE__ */ t(te, { children: "Use Filters or Search to find activities" }) })
126
+ ] })
127
+ ] })
128
+ ] });
129
+ }, $e = j(re);
130
+ export {
131
+ $e as default
132
+ };
133
+ //# sourceMappingURL=puzzle-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puzzle-menu.js","sources":["../../../../../src/features/cue-canvas/sidebar/puzzles/puzzle-menu.tsx"],"sourcesContent":["import type { IGetPuzzles, IPuzzlesResultData } from './api/get-puzzles';\nimport type { FilterType, PuzzleMenuProps, TActiveFilterMenuType } from './puzzles-type';\n\nimport { memo, useCallback, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport useDebounce from '../../../hooks/use-debounce';\nimport { Loader } from '../../../ui/buttons/button/button-styled';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport SearchableInput from '../../../ui/inputs/searchable-input/searchable-input';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport FilterSelectionMenu from './filter-selection-menu';\nimport Filters from './filters';\nimport useFetchCueCanvasActivity from './hooks/use-fetch-cue-canvas-activity';\nimport LaunchPuzzle from './launch-puzzle';\nimport PuzzleMenuHeader from './puzzle-menu-header';\nimport * as Styled from './puzzles-styled';\nimport { FILTER_KEYS } from './utils';\n\nconst PuzzleMenu: React.FC<PuzzleMenuProps> = ({ toggleMenu, studentGrade }) => {\n const { isPuzzlesProcessing, setActivityFilters, puzzlesData } =\n useFetchCueCanvasActivity(studentGrade);\n\n const { filters, results: puzzles } = puzzlesData || {};\n const {\n activity_tiles: filterTiles,\n activity_topics: filterTopics,\n activity_types: filterTypes,\n grades: filterGrades,\n search: filterSearch,\n } = filters || {};\n\n const [launchPuzzleData, setLaunchPuzzlesData] = useState<IPuzzlesResultData | undefined>();\n const [activeFilterMenuType, setActiveFilterMenuType] = useState<TActiveFilterMenuType | null>(\n null,\n );\n const [searchText, setSearchText] = useState(filterSearch || '');\n\n const debouncedSearch = useDebounce((value: string) => {\n if (value !== filterSearch) {\n handleFiltersChange({ search: value });\n }\n }, 300);\n\n const handleSearchChange = useCallback(\n (value: string) => {\n setSearchText(value);\n debouncedSearch(value);\n },\n [debouncedSearch],\n );\n\n const togglePopup = useCallback((popupType: TActiveFilterMenuType) => {\n setActiveFilterMenuType(prev => (prev === popupType ? null : popupType));\n }, []);\n\n const closeAllPopups = useCallback(() => {\n setActiveFilterMenuType(null);\n }, []);\n\n const handleFiltersChange = useCallback(\n (filterChange: IGetPuzzles) => {\n const filterType = Object.keys(filterChange)[0] as FilterType;\n const value = filterType && filterChange[filterType];\n\n setActivityFilters(prevFilters => ({\n ...prevFilters,\n [filterType]: value,\n }));\n },\n [setActivityFilters],\n );\n\n const handleReset = useCallback(() => {\n setActivityFilters({});\n setSearchText('');\n }, [setActivityFilters]);\n\n const clearPuzzleData = useCallback(() => {\n setLaunchPuzzlesData(undefined);\n }, []);\n\n if (\n isPuzzlesProcessing &&\n (!filterTiles || filterTiles?.length === 0) &&\n (!filterTopics || filterTopics?.length === 0)\n ) {\n return (\n <Styled.MenuContainer $justifyContent=\"center\" $alignItems=\"center\">\n <Loader src={ILLUSTRATIONS.LOADER} alt=\"Loader\" $size=\"small\" />;\n </Styled.MenuContainer>\n );\n }\n\n if (launchPuzzleData) {\n return (\n <LaunchPuzzle\n launchPuzzleData={launchPuzzleData}\n onMenuVisibilityChange={clearPuzzleData}\n toggleMenu={toggleMenu}\n />\n );\n }\n\n if (activeFilterMenuType) {\n let menuItems;\n let filterType: FilterType;\n\n switch (activeFilterMenuType) {\n case 'grades':\n menuItems = filterGrades;\n filterType = FILTER_KEYS.ACTIVITY_GRADES as FilterType;\n break;\n case 'topics':\n menuItems = filterTopics;\n filterType = FILTER_KEYS.ACTIVITY_TOPICS as FilterType;\n break;\n case 'tiles':\n menuItems = filterTiles;\n filterType = FILTER_KEYS.ACTIVITY_TILES as FilterType;\n break;\n default:\n return null;\n }\n\n if (!menuItems) return null;\n\n return (\n <FilterSelectionMenu\n closeAllPopups={closeAllPopups}\n menuItems={menuItems}\n onFiltersChange={handleFiltersChange}\n type={filterType}\n />\n );\n }\n\n return (\n <Styled.MenuContainer>\n <PuzzleMenuHeader toggleMenu={toggleMenu} onReset={handleReset} />\n <FlexView $flexDirection=\"row\" $alignItems=\"flex-start\">\n <Styled.FilterSidebar $width=\"35%\" $gutterX={1}>\n {filterGrades && filterTiles && filterTopics && filterTypes && (\n <Filters\n handleFiltersChange={handleFiltersChange}\n filterGrades={filterGrades}\n filterTiles={filterTiles}\n filterTypes={filterTypes}\n filterTopics={filterTopics}\n togglePopup={togglePopup}\n />\n )}\n </Styled.FilterSidebar>\n <FlexView $width=\"65%\">\n <Styled.SearchHeaderWrapper $heightX={4} $alignItems=\"center\" $justifyContent=\"center\">\n <SearchableInput\n value={searchText}\n onSearchTextChange={handleSearchChange}\n renderAs=\"secondary\"\n width=\"99%\"\n size=\"regular\"\n label=\"Type topic name...\"\n searchOnClear\n />\n </Styled.SearchHeaderWrapper>\n <FlexView $gutterX={1}>\n <Text $renderAs=\"body3\" $color=\"GREY_2\">\n {puzzles && puzzles.length > 0\n ? `${puzzles.length} activities found`\n : searchText\n ? 'No activities found'\n : null}\n </Text>\n </FlexView>\n <Styled.ActivitiesList $flexDirection=\"row\" $flexWrap $justifyContent=\"space-evenly\">\n {puzzles && puzzles?.length > 0 ? (\n puzzles.map(activity => {\n const { activity_url: reference, name, id } = activity;\n const thumbnailSrc = reference.split('_')[0]?.concat('_thumbnail.png');\n\n if (!reference) return null;\n\n return (\n <Clickable onClick={() => setLaunchPuzzlesData(activity)} key={id} label=\"puzzle\">\n <FlexView $alignItems=\"center\">\n <Styled.ActivityImage title={name} id={id} src={thumbnailSrc} />\n {name && <Styled.ActivityTitle>{name}</Styled.ActivityTitle>}\n </FlexView>\n </Clickable>\n );\n })\n ) : (\n <Styled.EmptyStateContainer>\n Use Filters or Search to find activities\n </Styled.EmptyStateContainer>\n )}\n </Styled.ActivitiesList>\n </FlexView>\n </FlexView>\n </Styled.MenuContainer>\n );\n};\n\nexport default memo(PuzzleMenu);\n"],"names":["PuzzleMenu","toggleMenu","studentGrade","isPuzzlesProcessing","setActivityFilters","puzzlesData","useFetchCueCanvasActivity","filters","puzzles","filterTiles","filterTopics","filterTypes","filterGrades","filterSearch","launchPuzzleData","setLaunchPuzzlesData","useState","activeFilterMenuType","setActiveFilterMenuType","searchText","setSearchText","debouncedSearch","useDebounce","value","handleFiltersChange","handleSearchChange","useCallback","togglePopup","popupType","prev","closeAllPopups","filterChange","filterType","prevFilters","handleReset","clearPuzzleData","Styled.MenuContainer","jsx","Loader","ILLUSTRATIONS","LaunchPuzzle","menuItems","FILTER_KEYS","FilterSelectionMenu","jsxs","PuzzleMenuHeader","FlexView","Styled.FilterSidebar","Filters","Styled.SearchHeaderWrapper","SearchableInput","Text","Styled.ActivitiesList","activity","reference","name","id","thumbnailSrc","_a","Clickable","Styled.ActivityImage","Styled.ActivityTitle","Styled.EmptyStateContainer","PuzzleMenu$1","memo"],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import r from "styled-components";
2
+ import e from "../../../ui/layout/flex-view.js";
3
+ import t from "../../../ui/text/text.js";
4
+ const s = r(e)`
5
+ position: absolute;
6
+ top: 38px;
7
+ left: 16px;
8
+ width: 650px;
9
+ height: 438px;
10
+ border-radius: 6px;
11
+ background: #292734;
12
+ box-shadow: 0px 4px 8px ${({ theme: o }) => o.colors.BLACK_T_20};
13
+ `, d = r.img`
14
+ position: relative;
15
+ width: 160px;
16
+ height: 120px;
17
+ border: 1px solid white;
18
+ border-radius: 8px;
19
+ margin: 16px;
20
+ background-color: black;
21
+ cursor: pointer;
22
+ `, a = r.div`
23
+ color: white;
24
+ cursor: pointer;
25
+ width: 150px;
26
+ overflow: hidden;
27
+ white-space: nowrap;
28
+ text-overflow: ellipsis;
29
+ `, p = r.div`
30
+ width: 336px;
31
+ height: 300px;
32
+ display: flex;
33
+ justify-content: center;
34
+ align-items: center;
35
+ color: ${({ theme: o }) => o.colors.GREY_4};
36
+ `, b = r(e)`
37
+ max-height: 300px;
38
+ width: 100%;
39
+ overflow-y: auto;
40
+ &::-webkit-scrollbar {
41
+ border-radius: 6px;
42
+ background-color: ${({ theme: o }) => o.colors.WHITE};
43
+ }
44
+
45
+ &::-webkit-scrollbar-thumb {
46
+ border-radius: 6px;
47
+ background: ${({ theme: o }) => o.colors.REAL_BLACK_60};
48
+ }
49
+ `, n = r(e)`
50
+ background: #292734;
51
+
52
+ & > div {
53
+ width: calc(100% - 32px);
54
+ }
55
+ `, x = r(e)`
56
+ overflow-y: auto;
57
+ &::-webkit-scrollbar {
58
+ border-radius: 6px;
59
+ background-color: ${({ theme: o }) => o.colors.WHITE};
60
+ }
61
+
62
+ &::-webkit-scrollbar-thumb {
63
+ border-radius: 6px;
64
+ background: ${({ theme: o }) => o.colors.REAL_BLACK_60};
65
+ }
66
+ `, h = r(e)`
67
+ border-right: 1px solid ${({ theme: o }) => o.colors.GREY_4};
68
+ height: 385px;
69
+ overflow-y: auto;
70
+ &::-webkit-scrollbar {
71
+ border-radius: 6px;
72
+ background-color: ${({ theme: o }) => o.colors.WHITE};
73
+ }
74
+
75
+ &::-webkit-scrollbar-thumb {
76
+ border-radius: 6px;
77
+ background: ${({ theme: o }) => o.colors.REAL_BLACK_60};
78
+ }
79
+ `, u = r(t)`
80
+ width: 130px;
81
+ white-space: nowrap;
82
+ text-overflow: ellipsis;
83
+ overflow: hidden;
84
+ `;
85
+ export {
86
+ b as ActivitiesList,
87
+ d as ActivityImage,
88
+ a as ActivityTitle,
89
+ x as CheckboxWrapper,
90
+ p as EmptyStateContainer,
91
+ h as FilterSidebar,
92
+ s as MenuContainer,
93
+ n as SearchHeaderWrapper,
94
+ u as SelectedGrades
95
+ };
96
+ //# sourceMappingURL=puzzles-styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puzzles-styled.js","sources":["../../../../../src/features/cue-canvas/sidebar/puzzles/puzzles-styled.ts"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\n\nconst MenuContainer = styled(FlexView)`\n position: absolute;\n top: 38px;\n left: 16px;\n width: 650px;\n height: 438px;\n border-radius: 6px;\n background: #292734;\n box-shadow: 0px 4px 8px ${({ theme }) => theme.colors.BLACK_T_20};\n`;\n\nconst ActivityImage = styled.img`\n position: relative;\n width: 160px;\n height: 120px;\n border: 1px solid white;\n border-radius: 8px;\n margin: 16px;\n background-color: black;\n cursor: pointer;\n`;\n\nconst ActivityTitle = styled.div`\n color: white;\n cursor: pointer;\n width: 150px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nconst EmptyStateContainer = styled.div`\n width: 336px;\n height: 300px;\n display: flex;\n justify-content: center;\n align-items: center;\n color: ${({ theme }) => theme.colors.GREY_4};\n`;\n\nconst ActivitiesList = styled(FlexView)`\n max-height: 300px;\n width: 100%;\n overflow-y: auto;\n &::-webkit-scrollbar {\n border-radius: 6px;\n background-color: ${({ theme }) => theme.colors.WHITE};\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 6px;\n background: ${({ theme }) => theme.colors.REAL_BLACK_60};\n }\n`;\n\nconst SearchHeaderWrapper = styled(FlexView)<{ $noBorder?: boolean }>`\n background: #292734;\n\n & > div {\n width: calc(100% - 32px);\n }\n`;\n\nconst CheckboxWrapper = styled(FlexView)`\n overflow-y: auto;\n &::-webkit-scrollbar {\n border-radius: 6px;\n background-color: ${({ theme }) => theme.colors.WHITE};\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 6px;\n background: ${({ theme }) => theme.colors.REAL_BLACK_60};\n }\n`;\n\nconst FilterSidebar = styled(FlexView)`\n border-right: 1px solid ${({ theme }) => theme.colors.GREY_4};\n height: 385px;\n overflow-y: auto;\n &::-webkit-scrollbar {\n border-radius: 6px;\n background-color: ${({ theme }) => theme.colors.WHITE};\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 6px;\n background: ${({ theme }) => theme.colors.REAL_BLACK_60};\n }\n`;\n\nconst SelectedGrades = styled(Text)`\n width: 130px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nexport {\n MenuContainer,\n ActivityImage,\n ActivityTitle,\n EmptyStateContainer,\n ActivitiesList,\n SearchHeaderWrapper,\n CheckboxWrapper,\n FilterSidebar,\n SelectedGrades,\n};\n"],"names":["MenuContainer","styled","FlexView","theme","ActivityImage","ActivityTitle","EmptyStateContainer","ActivitiesList","SearchHeaderWrapper","CheckboxWrapper","FilterSidebar","SelectedGrades","Text"],"mappings":";;;AAKM,MAAAA,IAAgBC,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAQT,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,UAAU;AAAA,GAG5DC,IAAgBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWvBI,IAAgBJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASvBK,IAAsBL,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAMxB,CAAC,EAAE,OAAAE,EAAA,MAAYA,EAAM,OAAO,MAAM;AAAA,GAGvCI,IAAiBN,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMd,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKvC,CAAC,EAAE,OAAAA,EAAA,MAAYA,EAAM,OAAO,aAAa;AAAA;AAAA,GAIrDK,IAAsBP,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQrCO,IAAkBR,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA,wBAIf,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKvC,CAAC,EAAE,OAAAA,EAAA,MAAYA,EAAM,OAAO,aAAa;AAAA;AAAA,GAIrDO,IAAgBT,EAAOC,CAAQ;AAAA,4BACT,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKtC,CAAC,EAAE,OAAAA,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKvC,CAAC,EAAE,OAAAA,EAAA,MAAYA,EAAM,OAAO,aAAa;AAAA;AAAA,GAIrDQ,IAAiBV,EAAOW,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,29 @@
1
+ import { jsxs as m, jsx as o } from "react/jsx-runtime";
2
+ import { memo as a, useRef as d, useCallback as f, useEffect as p } from "react";
3
+ import z from "../../../../assets/line-icons/icons/puzzle-icon.js";
4
+ import C from "../../../ui/buttons/clickable/clickable.js";
5
+ import v from "../../../ui/hooks/use-context-menu-click-handler.js";
6
+ import g from "../../../ui/layout/flex-view.js";
7
+ import { StyledWrapper as h } from "../../cue-cavas-styled.js";
8
+ import { useCueCanvasActions as b } from "../../hooks/use-cue-canvas-actions.js";
9
+ import k from "./puzzle-menu.js";
10
+ const x = (s) => {
11
+ const { activeSidebar: e, setActiveSidebar: r, grade: u } = s, { activeInstance: i } = b(), c = d(null), { menuVisible: l, onMenuClick: t } = v(
12
+ c,
13
+ void 0,
14
+ !0,
15
+ void 0
16
+ ), n = f(() => {
17
+ e === "tile" && (i == null || i.toggleTiles(!1)), r(e === "puzzle" ? void 0 : "puzzle"), t();
18
+ }, [e, i, t, r]);
19
+ return p(() => {
20
+ e === "tile" && l && t();
21
+ }, [e, l, t]), /* @__PURE__ */ m(g, { $position: "relative", $width: "100%", $height: "100%", children: [
22
+ /* @__PURE__ */ o(C, { onClick: n, label: "grid", children: /* @__PURE__ */ o(h, { $active: e === "puzzle", children: /* @__PURE__ */ o(z, {}) }) }),
23
+ l && /* @__PURE__ */ o(k, { toggleMenu: n, studentGrade: u })
24
+ ] });
25
+ }, V = a(x);
26
+ export {
27
+ V as default
28
+ };
29
+ //# sourceMappingURL=puzzles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puzzles.js","sources":["../../../../../src/features/cue-canvas/sidebar/puzzles/puzzles.tsx"],"sourcesContent":["import type { IPuzzlesContainer } from './puzzles-type';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useRef } from 'react';\n\nimport PuzzleIcon from '../../../../assets/line-icons/icons/puzzle-icon';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport useContextMenuClickHandler from '../../../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { StyledWrapper } from '../../cue-cavas-styled';\nimport { useCueCanvasActions } from '../../hooks/use-cue-canvas-actions';\nimport PuzzleMenu from './puzzle-menu';\n\nconst PuzzlesContainer: FC<IPuzzlesContainer> = props => {\n const { activeSidebar, setActiveSidebar, grade } = props;\n const { activeInstance: cueCanvas } = useCueCanvasActions();\n const puzzleMenuRef = useRef(null);\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(\n puzzleMenuRef,\n undefined,\n true,\n undefined,\n );\n\n const handleClick = useCallback(() => {\n if (activeSidebar === 'tile') {\n cueCanvas?.toggleTiles(false);\n }\n setActiveSidebar(activeSidebar === 'puzzle' ? undefined : 'puzzle');\n onMenuClick();\n }, [activeSidebar, cueCanvas, onMenuClick, setActiveSidebar]);\n\n useEffect(() => {\n if (activeSidebar === 'tile' && menuVisible) {\n onMenuClick();\n }\n }, [activeSidebar, menuVisible, onMenuClick]);\n\n return (\n <FlexView $position=\"relative\" $width=\"100%\" $height=\"100%\">\n <Clickable onClick={handleClick} label=\"grid\">\n <StyledWrapper $active={activeSidebar === 'puzzle'}>\n <PuzzleIcon />\n </StyledWrapper>\n </Clickable>\n {menuVisible && <PuzzleMenu toggleMenu={handleClick} studentGrade={grade} />}\n </FlexView>\n );\n};\n\nexport default memo(PuzzlesContainer);\n"],"names":["PuzzlesContainer","props","activeSidebar","setActiveSidebar","grade","cueCanvas","useCueCanvasActions","puzzleMenuRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","handleClick","useCallback","useEffect","FlexView","jsx","Clickable","StyledWrapper","PuzzleIcon","PuzzleMenu","Puzzles","memo"],"mappings":";;;;;;;;;AAaA,MAAMA,IAA0C,CAASC,MAAA;AACvD,QAAM,EAAE,eAAAC,GAAe,kBAAAC,GAAkB,OAAAC,EAAA,IAAUH,GAC7C,EAAE,gBAAgBI,EAAU,IAAIC,EAAoB,GACpDC,IAAgBC,EAAO,IAAI,GAC3B,EAAE,aAAAC,GAAa,aAAAC,EAAA,IAAgBC;AAAA,IACnCJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAGIK,IAAcC,EAAY,MAAM;AACpC,IAAIX,MAAkB,WACpBG,KAAA,QAAAA,EAAW,YAAY,MAERF,EAAAD,MAAkB,WAAW,SAAY,QAAQ,GACtDQ;KACX,CAACR,GAAeG,GAAWK,GAAaP,CAAgB,CAAC;AAE5D,SAAAW,EAAU,MAAM;AACV,IAAAZ,MAAkB,UAAUO,KAClBC;EAEb,GAAA,CAACR,GAAeO,GAAaC,CAAW,CAAC,qBAGzCK,GAAS,EAAA,WAAU,YAAW,QAAO,QAAO,SAAQ,QACnD,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAU,EAAA,SAASL,GAAa,OAAM,QACrC,UAAA,gBAAAI,EAACE,GAAc,EAAA,SAAShB,MAAkB,UACxC,UAAC,gBAAAc,EAAAG,GAAA,CAAA,CAAW,EACd,CAAA,GACF;AAAA,IACCV,KAAgB,gBAAAO,EAAAI,GAAA,EAAW,YAAYR,GAAa,cAAcR,GAAO;AAAA,EAC5E,EAAA,CAAA;AAEJ,GAEeiB,IAAAC,EAAKtB,CAAgB;"}
@@ -0,0 +1,124 @@
1
+ const L = (f) => {
2
+ const { grid: o, strokes: m, tiles: v } = f || {}, n = {};
3
+ (v || []).forEach((i) => {
4
+ var r, G, y, D, _, T;
5
+ const { name: e, options: a, id: p, size: I } = i || {};
6
+ if (p) {
7
+ if (e === "text") {
8
+ const t = { ...i, html: a };
9
+ delete t.options, delete t.id, n[p] = [void 0, t];
10
+ }
11
+ if (e === "equation" || e === "algebra-tile") {
12
+ const t = { ...i, expr: a };
13
+ e === "algebra-tile" && (t.name = "algebra"), delete t.options, delete t.id, n[p] = [void 0, t];
14
+ }
15
+ if (e === "image") {
16
+ const t = { ...i, href: a, width: I };
17
+ delete t.options, delete t.id, n[p] = [void 0, t];
18
+ }
19
+ if (e === "polygon" || e === "token" || e === "custom-polygon") {
20
+ const t = { ...i, shape: a };
21
+ delete t.options, delete t.id, n[p] = [void 0, t];
22
+ }
23
+ if (e === "dice") {
24
+ const t = (r = a == null ? void 0 : a.trim()) == null ? void 0 : r.split(":")[0], l = { ...i, value: t };
25
+ delete l.options, delete l.id, n[p] = [void 0, l];
26
+ }
27
+ if (e === "number-tile") {
28
+ const [t, l] = ((G = a == null ? void 0 : a.trim()) == null ? void 0 : G.split(":")) || [], s = { ...i, value: l || 0, width: t || 0 };
29
+ delete s.options, delete s.id, n[p] = [void 0, s];
30
+ }
31
+ if (e === "geo") {
32
+ const [t, l] = ((y = a == null ? void 0 : a.trim()) == null ? void 0 : y.split("=")) || [], s = { ...i, key: t || "", expr: l || 0 };
33
+ delete s.options, delete s.id, n[p] = [void 0, s];
34
+ }
35
+ if (e === "number-line") {
36
+ const [t, l, s, c, E] = ((D = a == null ? void 0 : a.trim()) == null ? void 0 : D.split(":")) || [], h = {
37
+ ...i,
38
+ start: t || 0,
39
+ step: l || 0,
40
+ width: s || 0,
41
+ size: c || 0,
42
+ minor: E || 0
43
+ };
44
+ delete h.options, delete h.id, n[p] = [void 0, h];
45
+ }
46
+ if (e === "fraction-bar") {
47
+ const [t, l, s] = ((_ = a == null ? void 0 : a.trim()) == null ? void 0 : _.split(":")) || [], c = { ...i };
48
+ t && (c.denominator = +t), l && (c.count = +l), s && (c.active = +s), delete c.options, delete c.id, n[p] = [void 0, c];
49
+ }
50
+ if (e === "fraction-circle") {
51
+ const [t, l, s] = ((T = a == null ? void 0 : a.trim()) == null ? void 0 : T.split(":")) || [], c = { ...i };
52
+ t && (c.denominator = +t), l && (c.count = +l), s && (c.active = +s), delete c.options, delete c.id, n[p] = [void 0, c];
53
+ }
54
+ if (e === "number-card" || e === "number-bar" || e === "tantrix") {
55
+ const t = { ...i, value: a };
56
+ delete t.options, delete t.id, n[p] = [void 0, t];
57
+ }
58
+ if (e === "tangram" || e === "garden" || e === "kolam" || e === "penrose" || e === "polyomino") {
59
+ const t = { ...i, index: a };
60
+ delete t.options, delete t.id, n[p] = [void 0, t];
61
+ }
62
+ if (e === "ruler" || e === "protractor" || e === "set-triangle" || e === "compass") {
63
+ const t = { ...i, width: a };
64
+ delete t.options, delete t.id, n[p] = [void 0, t];
65
+ }
66
+ }
67
+ });
68
+ const g = {};
69
+ return m.forEach((i) => {
70
+ const { id: e } = i || {};
71
+ if (e) {
72
+ const a = { ...i };
73
+ delete a.id, g[e] = [void 0, a];
74
+ }
75
+ }), {
76
+ gridName: o,
77
+ data: { ...g, ...n }
78
+ };
79
+ }, d = (f, o = "") => {
80
+ const m = [];
81
+ return f && f.length > 0 && f.forEach((v) => {
82
+ if (o === "grades") {
83
+ const n = `G${v.name}`;
84
+ m.push(n);
85
+ } else
86
+ m.push(v.name);
87
+ }), m;
88
+ }, C = (f, o) => {
89
+ var m, v, n, g;
90
+ return ((m = f.grades) == null ? void 0 : m.length) !== (o == null ? void 0 : o.grades.filter((i) => i.applied).map((i) => i.code).length) || ((v = f.activity_tiles) == null ? void 0 : v.length) !== (o == null ? void 0 : o.activity_tiles.filter((i) => i.applied).map((i) => i.code).length) || ((n = f.activity_topics) == null ? void 0 : n.length) !== (o == null ? void 0 : o.activity_topics.filter((i) => i.applied).map((i) => i.code).length) || ((g = f.activity_types) == null ? void 0 : g.length) !== (o == null ? void 0 : o.activity_types.filter((i) => i.applied).map((i) => i.code).length) || f.search !== (o == null ? void 0 : o.search) ? !0 : !o;
91
+ }, b = {
92
+ ACTIVITY_TILES: "activity_tiles",
93
+ ACTIVITY_TOPICS: "activity_topics",
94
+ ACTIVITY_TYPES: "activity_types",
95
+ ACTIVITY_GRADES: "grades"
96
+ }, S = {
97
+ "-1": "LKG",
98
+ 0: "UKG",
99
+ 1: "G1",
100
+ 2: "G2",
101
+ 3: "G3",
102
+ 4: "G4",
103
+ 5: "G5",
104
+ 6: "G6",
105
+ 7: "G7",
106
+ 8: "G8",
107
+ 9: "G9",
108
+ 10: "G10",
109
+ 11: "G11",
110
+ 12: "G12",
111
+ ALG1: "ALG1",
112
+ ALG2: "ALG2",
113
+ PCAL: "PCAL",
114
+ GEO: "GEO",
115
+ CAL: "CAL"
116
+ };
117
+ export {
118
+ b as FILTER_KEYS,
119
+ S as GRADE_DISPLAY_NAMES,
120
+ C as checkIfFilterChanges,
121
+ d as getTags,
122
+ L as serializeData
123
+ };
124
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../../src/features/cue-canvas/sidebar/puzzles/utils.ts"],"sourcesContent":["import type { TCueCanvasChangeDataObject, TCueCanvasGridName } from '../../types/cue-canvas';\nimport type {\n ActivityMetadata,\n IActivityGrade,\n IFilterData,\n IFilterOption,\n IGetPuzzles,\n} from './api/get-puzzles';\nimport type { ITypeStroke, ITypeTile } from './puzzles-type';\n\nexport const serializeData = (jsonOBJ: {\n grid: TCueCanvasGridName;\n strokes: ITypeStroke[];\n tiles: ITypeTile[];\n}) => {\n const { grid, strokes, tiles } = jsonOBJ || {};\n const newTilesArray = {} as TCueCanvasChangeDataObject;\n\n (tiles || []).forEach(tile => {\n const { name, options, id, size } = tile || {};\n\n if (id) {\n if (name === 'text') {\n const tileData = { ...tile, html: options };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'equation' || name === 'algebra-tile') {\n const tileData = { ...tile, expr: options };\n\n if (name === 'algebra-tile') {\n tileData.name = 'algebra';\n }\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'image') {\n const tileData = { ...tile, href: options, width: size };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'polygon' || name === 'token' || name === 'custom-polygon') {\n const tileData = { ...tile, shape: options };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'dice') {\n const val = options?.trim()?.split(':')[0];\n const tileData = { ...tile, value: val };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'number-tile') {\n const [width, value] = options?.trim()?.split(':') || [];\n const tileData = { ...tile, value: value || 0, width: width || 0 };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'geo') {\n const [key, expr] = options?.trim()?.split('=') || [];\n const tileData = { ...tile, key: key || '', expr: expr || 0 };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'number-line') {\n const [start, step, width, stepSize, minor] = options?.trim()?.split(':') || [];\n const tileData = {\n ...tile,\n start: start || 0,\n step: step || 0,\n width: width || 0,\n size: stepSize || 0,\n minor: minor || 0,\n };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'fraction-bar') {\n const [denominator, count, active] = options?.trim()?.split(':') || [];\n\n const tileData = { ...tile };\n\n if (denominator) {\n tileData.denominator = +denominator;\n }\n\n if (count) {\n tileData.count = +count;\n }\n\n if (active) {\n tileData.active = +active;\n }\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'fraction-circle') {\n const [denominator, count, active] = options?.trim()?.split(':') || [];\n\n const tileData = { ...tile };\n\n if (denominator) {\n tileData.denominator = +denominator;\n }\n\n if (count) {\n tileData.count = +count;\n }\n\n if (active) {\n tileData.active = +active;\n }\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (name === 'number-card' || name === 'number-bar' || name === 'tantrix') {\n const tileData = { ...tile, value: options };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (\n name === 'tangram' ||\n name === 'garden' ||\n name === 'kolam' ||\n name === 'penrose' ||\n name === 'polyomino'\n ) {\n const tileData = { ...tile, index: options };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n\n if (\n name === 'ruler' ||\n name === 'protractor' ||\n name === 'set-triangle' ||\n name === 'compass'\n ) {\n const tileData = { ...tile, width: options };\n\n delete tileData.options;\n delete tileData.id;\n newTilesArray[id] = [undefined, tileData];\n }\n }\n });\n const newStrokeMap = {} as TCueCanvasChangeDataObject;\n\n strokes.forEach((stroke: ITypeStroke) => {\n const { id } = stroke || {};\n\n if (id) {\n const strokeData = { ...stroke };\n\n delete strokeData.id;\n newStrokeMap[id] = [undefined, strokeData];\n }\n });\n\n return {\n gridName: grid,\n data: { ...newStrokeMap, ...newTilesArray },\n };\n};\n\nexport const getTags = (data: ActivityMetadata[] | IActivityGrade[], type = '') => {\n const arr: string[] = [];\n\n if (data && data.length > 0) {\n data.forEach(res => {\n if (type === 'grades') {\n const grade = `G${res.name}`;\n\n arr.push(grade);\n } else {\n arr.push(res.name);\n }\n });\n }\n\n return arr;\n};\n\nexport const checkIfFilterChanges = (flts: IGetPuzzles, curentAddedFilters?: IFilterData) => {\n if (\n flts.grades?.length !==\n curentAddedFilters?.grades\n .filter((grade: IFilterOption) => grade.applied)\n .map((grade: IFilterOption) => grade.code).length ||\n flts.activity_tiles?.length !==\n curentAddedFilters?.activity_tiles\n .filter((grade: IFilterOption) => grade.applied)\n .map((tile: IFilterOption) => tile.code).length ||\n flts.activity_topics?.length !==\n curentAddedFilters?.activity_topics\n .filter((grade: IFilterOption) => grade.applied)\n .map((tile: IFilterOption) => tile.code).length ||\n flts.activity_types?.length !==\n curentAddedFilters?.activity_types\n .filter((grade: IFilterOption) => grade.applied)\n .map((tile: IFilterOption) => tile.code).length ||\n flts.search !== curentAddedFilters?.search\n ) {\n return true;\n }\n\n return !curentAddedFilters;\n};\n\nexport const FILTER_KEYS = {\n ACTIVITY_TILES: 'activity_tiles',\n ACTIVITY_TOPICS: 'activity_topics',\n ACTIVITY_TYPES: 'activity_types',\n ACTIVITY_GRADES: 'grades',\n} as const;\n\nexport const GRADE_DISPLAY_NAMES: Record<string, string> = {\n '-1': 'LKG',\n '0': 'UKG',\n '1': 'G1',\n '2': 'G2',\n '3': 'G3',\n '4': 'G4',\n '5': 'G5',\n '6': 'G6',\n '7': 'G7',\n '8': 'G8',\n '9': 'G9',\n '10': 'G10',\n '11': 'G11',\n '12': 'G12',\n 'ALG1': 'ALG1',\n 'ALG2': 'ALG2',\n 'PCAL': 'PCAL',\n 'GEO': 'GEO',\n 'CAL': 'CAL',\n};\n"],"names":["serializeData","jsonOBJ","grid","strokes","tiles","newTilesArray","tile","_a","_b","_c","_d","_e","_f","name","options","id","size","tileData","val","width","value","key","expr","start","step","stepSize","minor","denominator","count","active","newStrokeMap","stroke","strokeData","getTags","data","type","arr","res","grade","checkIfFilterChanges","flts","curentAddedFilters","FILTER_KEYS","GRADE_DISPLAY_NAMES"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { jsxs as o, jsx as t } from "react/jsx-runtime";
2
+ import { useState as a } from "react";
3
+ import { StyledTileContainer as m } from "../../whiteboard/whiteboard.styled.js";
4
+ import s from "./puzzles/puzzles.js";
5
+ import c from "./tiles/tile.js";
6
+ const S = ({ grade: i }) => {
7
+ const [r, e] = a();
8
+ return /* @__PURE__ */ o(m, { $activeSidebar: r, $flexDirection: "row", children: [
9
+ /* @__PURE__ */ t(c, { activeSidebar: r, setActiveSidebar: e }),
10
+ /* @__PURE__ */ t(s, { grade: i, activeSidebar: r, setActiveSidebar: e })
11
+ ] });
12
+ };
13
+ export {
14
+ S as default
15
+ };
16
+ //# sourceMappingURL=sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.js","sources":["../../../../src/features/cue-canvas/sidebar/sidebar.tsx"],"sourcesContent":["import type { TActiveSidebar } from './puzzles/puzzles-type';\nimport type { FC } from 'react';\n\nimport { useState } from 'react';\n\nimport { StyledTileContainer } from '../../whiteboard/whiteboard.styled';\nimport Puzzles from './puzzles/puzzles';\nimport TileBar from './tiles/tile';\n\ninterface ISidebar {\n grade?: string;\n}\n\nconst Sidebar: FC<ISidebar> = ({ grade }) => {\n const [activeSidebar, setActiveSidebar] = useState<TActiveSidebar | undefined>();\n\n return (\n <StyledTileContainer $activeSidebar={activeSidebar} $flexDirection=\"row\">\n <TileBar activeSidebar={activeSidebar} setActiveSidebar={setActiveSidebar} />\n <Puzzles grade={grade} activeSidebar={activeSidebar} setActiveSidebar={setActiveSidebar} />\n </StyledTileContainer>\n );\n};\n\nexport default Sidebar;\n"],"names":["Sidebar","grade","activeSidebar","setActiveSidebar","useState","jsxs","StyledTileContainer","jsx","TileBar","Puzzles"],"mappings":";;;;;AAaA,MAAMA,IAAwB,CAAC,EAAE,OAAAC,QAAY;AAC3C,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAqC;AAE/E,SACG,gBAAAC,EAAAC,GAAA,EAAoB,gBAAgBJ,GAAe,gBAAe,OACjE,UAAA;AAAA,IAAC,gBAAAK,EAAAC,GAAA,EAAQ,eAAAN,GAA8B,kBAAAC,EAAoC,CAAA;AAAA,IAC1E,gBAAAI,EAAAE,GAAA,EAAQ,OAAAR,GAAc,eAAAC,GAA8B,kBAAAC,EAAoC,CAAA;AAAA,EAC3F,EAAA,CAAA;AAEJ;"}
@@ -0,0 +1,16 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { memo as c, useCallback as a } from "react";
3
+ import n from "../../../../assets/line-icons/icons/tile.js";
4
+ import { StyledWrapper as p } from "../../cue-cavas-styled.js";
5
+ import { useCueCanvasActions as d } from "../../hooks/use-cue-canvas-actions.js";
6
+ const C = c((s) => {
7
+ const { setActiveSidebar: t, activeSidebar: o } = s, { activeInstance: e, setActiveTool: i } = d(), m = a(() => {
8
+ const r = o !== "tile";
9
+ e == null || e.toggleTiles(r), t(r ? "tile" : void 0), i("move");
10
+ }, [o, e, t, i]);
11
+ return /* @__PURE__ */ l(p, { $active: o === "tile", onClick: m, children: /* @__PURE__ */ l(n, {}) });
12
+ });
13
+ export {
14
+ C as default
15
+ };
16
+ //# sourceMappingURL=tile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile.js","sources":["../../../../../src/features/cue-canvas/sidebar/tiles/tile.tsx"],"sourcesContent":["import type { TActiveSidebar } from '../puzzles/puzzles-type';\nimport type { Dispatch, FC, SetStateAction } from 'react';\n\nimport { memo, useCallback } from 'react';\n\nimport TileIcon from '../../../../assets/line-icons/icons/tile';\nimport { StyledWrapper } from '../../cue-cavas-styled';\nimport { useCueCanvasActions } from '../../hooks/use-cue-canvas-actions';\n\ninterface ITileBar {\n setActiveSidebar: Dispatch<SetStateAction<TActiveSidebar | undefined>>;\n activeSidebar?: TActiveSidebar;\n}\n\nconst TileBar: FC<ITileBar> = memo(props => {\n const { setActiveSidebar, activeSidebar } = props;\n const { activeInstance, setActiveTool } = useCueCanvasActions();\n\n const toggleTiles = useCallback(() => {\n const newTileState = activeSidebar !== 'tile';\n\n activeInstance?.toggleTiles(newTileState);\n setActiveSidebar(newTileState ? 'tile' : undefined);\n setActiveTool('move');\n }, [activeSidebar, activeInstance, setActiveSidebar, setActiveTool]);\n\n return (\n <StyledWrapper $active={activeSidebar === 'tile'} onClick={toggleTiles}>\n <TileIcon />\n </StyledWrapper>\n );\n});\n\nexport default TileBar;\n"],"names":["TileBar","memo","props","setActiveSidebar","activeSidebar","activeInstance","setActiveTool","useCueCanvasActions","toggleTiles","useCallback","newTileState","jsx","StyledWrapper","TileIcon"],"mappings":";;;;;AAcM,MAAAA,IAAwBC,EAAK,CAASC,MAAA;AACpC,QAAA,EAAE,kBAAAC,GAAkB,eAAAC,EAAkB,IAAAF,GACtC,EAAE,gBAAAG,GAAgB,eAAAC,EAAc,IAAIC,EAAoB,GAExDC,IAAcC,EAAY,MAAM;AACpC,UAAMC,IAAeN,MAAkB;AAEvC,IAAAC,KAAA,QAAAA,EAAgB,YAAYK,IACXP,EAAAO,IAAe,SAAS,MAAS,GAClDJ,EAAc,MAAM;AAAA,KACnB,CAACF,GAAeC,GAAgBF,GAAkBG,CAAa,CAAC;AAGjE,SAAA,gBAAAK,EAACC,KAAc,SAASR,MAAkB,QAAQ,SAASI,GACzD,UAAC,gBAAAG,EAAAE,GAAA,CAAS,CAAA,EACZ,CAAA;AAEJ,CAAC;"}
@@ -0,0 +1,16 @@
1
+ import { useRef as n, useCallback as c } from "react";
2
+ function a(u, r) {
3
+ const e = n(null);
4
+ return c(
5
+ (t) => (e.current && clearTimeout(e.current), e.current = setTimeout(() => {
6
+ u(t);
7
+ }, r), () => {
8
+ e.current && clearTimeout(e.current);
9
+ }),
10
+ [u, r]
11
+ );
12
+ }
13
+ export {
14
+ a as default
15
+ };
16
+ //# sourceMappingURL=use-debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-debounce.js","sources":["../../../src/features/hooks/use-debounce.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nfunction useDebounce<T>(callback: (arg: T) => void, wait: number) {\n const timeoutIdRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const debouncedCallback = useCallback(\n (val: T) => {\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = setTimeout(() => {\n callback(val);\n }, wait);\n\n return () => {\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n };\n },\n [callback, wait],\n );\n\n return debouncedCallback;\n}\n\nexport default useDebounce;\n"],"names":["useDebounce","callback","wait","timeoutIdRef","useRef","useCallback","val"],"mappings":";AAEA,SAASA,EAAeC,GAA4BC,GAAc;AAC1D,QAAAC,IAAeC,EAA6C,IAAI;AAgB/D,SAdmBC;AAAA,IACxB,CAACC,OACKH,EAAa,WAAsB,aAAAA,EAAa,OAAO,GAC9CA,EAAA,UAAU,WAAW,MAAM;AACtC,MAAAF,EAASK,CAAG;AAAA,OACXJ,CAAI,GAEA,MAAM;AACX,MAAIC,EAAa,WAAsB,aAAAA,EAAa,OAAO;AAAA,IAAA;AAAA,IAG/D,CAACF,GAAUC,CAAI;AAAA,EAAA;AAInB;"}
@@ -0,0 +1,48 @@
1
+ import { jsxs as a, jsx as o } from "react/jsx-runtime";
2
+ import s from "../cue-canvas/cue-canvas.js";
3
+ import b from "../cue-canvas/cue-canvas-provider.js";
4
+ import l from "../cue-canvas/sidebar/sidebar.js";
5
+ import m from "../cue-canvas/toolbar/toolbar.js";
6
+ import { StyledToolContainer as h } from "./whiteboard.styled.js";
7
+ const p = ({
8
+ userType: r,
9
+ userId: e,
10
+ grade: t,
11
+ initialData: i,
12
+ handlePublish: n,
13
+ handleSubscribe: d
14
+ }) => /* @__PURE__ */ a(b, { userType: r, children: [
15
+ r === "TEACHER" && /* @__PURE__ */ o(l, { grade: t }),
16
+ /* @__PURE__ */ o(
17
+ s,
18
+ {
19
+ responseId: "responseId",
20
+ userId: e,
21
+ width: 700,
22
+ height: 400,
23
+ canScribble: !0,
24
+ canRender: !0,
25
+ onUpdateHeight: () => null,
26
+ appended: !0,
27
+ initialData: i,
28
+ onPublish: n,
29
+ onSubscribe: d,
30
+ userType: r,
31
+ renderAs: "whiteboard"
32
+ }
33
+ ),
34
+ /* @__PURE__ */ o(
35
+ h,
36
+ {
37
+ $gutterX: 0.5,
38
+ $borderColor: "BLACK_10",
39
+ $background: "WHITE",
40
+ $position: "absolute",
41
+ children: /* @__PURE__ */ o(m, { userType: r, renderAs: "whiteboard" })
42
+ }
43
+ )
44
+ ] }), A = p;
45
+ export {
46
+ A as default
47
+ };
48
+ //# sourceMappingURL=whiteboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whiteboard.js","sources":["../../../src/features/whiteboard/whiteboard.tsx"],"sourcesContent":["import type { WhiteboardProps } from './whiteboard.types';\n\nimport CueCanvas from '../cue-canvas/cue-canvas';\nimport CueCanvasProvider from '../cue-canvas/cue-canvas-provider';\nimport Sidebar from '../cue-canvas/sidebar/sidebar';\nimport Toolbar from '../cue-canvas/toolbar/toolbar';\nimport * as Styled from './whiteboard.styled';\n\nconst Whiteboard = ({\n userType,\n userId,\n grade,\n initialData,\n handlePublish,\n handleSubscribe,\n}: WhiteboardProps) => {\n return (\n <CueCanvasProvider userType={userType}>\n {userType === 'TEACHER' && <Sidebar grade={grade} />}\n <CueCanvas\n responseId=\"responseId\"\n userId={userId}\n width={700}\n height={400}\n canScribble={true}\n canRender={true}\n onUpdateHeight={() => null}\n appended={true}\n initialData={initialData}\n onPublish={handlePublish}\n onSubscribe={handleSubscribe}\n userType={userType}\n renderAs=\"whiteboard\"\n />\n <Styled.StyledToolContainer\n $gutterX={0.5}\n $borderColor=\"BLACK_10\"\n $background=\"WHITE\"\n $position=\"absolute\"\n >\n <Toolbar userType={userType} renderAs=\"whiteboard\" />\n </Styled.StyledToolContainer>\n </CueCanvasProvider>\n );\n};\n\nexport default Whiteboard;\n"],"names":["Whiteboard","userType","userId","grade","initialData","handlePublish","handleSubscribe","jsxs","CueCanvasProvider","jsx","Sidebar","CueCanvas","Styled.StyledToolContainer","Toolbar","Whiteboard$1"],"mappings":";;;;;;AAQA,MAAMA,IAAa,CAAC;AAAA,EAClB,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AACF,MAEI,gBAAAC,EAACC,KAAkB,UAAAP,GAChB,UAAA;AAAA,EAAaA,MAAA,aAAc,gBAAAQ,EAAAC,GAAA,EAAQ,OAAAP,EAAc,CAAA;AAAA,EAClD,gBAAAM;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,QAAAT;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,WAAW;AAAA,MACX,gBAAgB,MAAM;AAAA,MACtB,UAAU;AAAA,MACV,aAAAE;AAAA,MACA,WAAWC;AAAA,MACX,aAAaC;AAAA,MACb,UAAAL;AAAA,MACA,UAAS;AAAA,IAAA;AAAA,EACX;AAAA,EACA,gBAAAQ;AAAA,IAACG;AAAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,cAAa;AAAA,MACb,aAAY;AAAA,MACZ,WAAU;AAAA,MAEV,UAAC,gBAAAH,EAAAI,GAAA,EAAQ,UAAAZ,GAAoB,UAAS,cAAa;AAAA,IAAA;AAAA,EACrD;AACF,EAAA,CAAA,GAIJa,IAAed;"}
@@ -0,0 +1,35 @@
1
+ import p, { css as r } from "styled-components";
2
+ import t from "../ui/layout/flex-view.js";
3
+ const e = p(t)(({
4
+ theme: o,
5
+ $activeSidebar: x
6
+ }) => r`
7
+ position: absolute;
8
+ left: 8px;
9
+ top: 8px;
10
+ z-index: ${o.zIndex.TILE_CONTAINER};
11
+ background-color: ${o.colors.WHITE};
12
+ padding: 7px;
13
+ gap: 4px;
14
+ border-radius: 8px;
15
+ border: 1px solid ${o.colors.BLACK_10};
16
+ box-shadow: 0px 1px 5px 0px ${o.colors.BLACK_10};
17
+
18
+ ${x === "tile" && r`
19
+ border: none;
20
+ box-shadow: none;
21
+ `}
22
+ `), n = p(t)`
23
+ margin: auto;
24
+ box-shadow: 0px 1px 5px 0px ${({ theme: o }) => o.colors.BLACK_10};
25
+ border-top-left-radius: 8px;
26
+ border-top-right-radius: 8px;
27
+ bottom: 0;
28
+ left: 50%;
29
+ transform: translateX(-50%);
30
+ `;
31
+ export {
32
+ e as StyledTileContainer,
33
+ n as StyledToolContainer
34
+ };
35
+ //# sourceMappingURL=whiteboard.styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whiteboard.styled.js","sources":["../../../src/features/whiteboard/whiteboard.styled.tsx"],"sourcesContent":["import type { TActiveSidebar } from '../cue-canvas/sidebar/puzzles/puzzles-type';\n\nimport styled, { css } from 'styled-components';\n\nimport FlexView from '../ui/layout/flex-view';\n\ninterface IStyledTileContainer {\n $activeSidebar?: TActiveSidebar;\n}\n\nexport const StyledTileContainer = styled(FlexView)<IStyledTileContainer>(({\n theme,\n $activeSidebar,\n}) => {\n return css`\n position: absolute;\n left: 8px;\n top: 8px;\n z-index: ${theme.zIndex.TILE_CONTAINER};\n background-color: ${theme.colors.WHITE};\n padding: 7px;\n gap: 4px;\n border-radius: 8px;\n border: 1px solid ${theme.colors.BLACK_10};\n box-shadow: 0px 1px 5px 0px ${theme.colors.BLACK_10};\n\n ${$activeSidebar === 'tile' &&\n css`\n border: none;\n box-shadow: none;\n `}\n `;\n});\n\nexport const StyledToolContainer = styled(FlexView)`\n margin: auto;\n box-shadow: 0px 1px 5px 0px ${({ theme }) => theme.colors.BLACK_10};\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n`;\n"],"names":["StyledTileContainer","styled","FlexView","theme","$activeSidebar","css","StyledToolContainer"],"mappings":";;AAUO,MAAMA,IAAsBC,EAAOC,CAAQ,EAAwB,CAAC;AAAA,EACzE,OAAAC;AAAA,EACA,gBAAAC;AACF,MACSC;AAAA;AAAA;AAAA;AAAA,eAIMF,EAAM,OAAO,cAAc;AAAA,wBAClBA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,wBAIlBA,EAAM,OAAO,QAAQ;AAAA,kCACXA,EAAM,OAAO,QAAQ;AAAA;AAAA,MAEjDC,MAAmB,UACrBC;AAAA;AAAA;AAAA,KAGC;AAAA,GAEJ,GAEYC,IAAsBL,EAAOC,CAAQ;AAAA;AAAA,gCAElB,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}