@cuemath/leap 3.0.31-link.0 → 3.1.0-aa0
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 +0 -1
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/assets/line-icons/icons/check.js +3 -3
- package/dist/assets/line-icons/icons/check.js.map +1 -1
- package/dist/assets/line-icons/icons/puzzle-icon.js +51 -0
- package/dist/assets/line-icons/icons/puzzle-icon.js.map +1 -0
- package/dist/assets/line-icons/icons/share.js +48 -0
- package/dist/assets/line-icons/icons/share.js.map +1 -0
- package/dist/assets/line-icons/icons/tile.js +54 -0
- package/dist/assets/line-icons/icons/tile.js.map +1 -0
- package/dist/features/cue-canvas/bottombar/homework-controls.js +73 -0
- package/dist/features/cue-canvas/bottombar/homework-controls.js.map +1 -0
- package/dist/features/cue-canvas/cue-canvas-context.js +8 -5
- package/dist/features/cue-canvas/cue-canvas-context.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-core.js +68 -70
- package/dist/features/cue-canvas/cue-canvas-core.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-helpers.js +31 -25
- package/dist/features/cue-canvas/cue-canvas-helpers.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas-provider.js +14 -12
- package/dist/features/cue-canvas/cue-canvas-provider.js.map +1 -1
- package/dist/features/cue-canvas/cue-canvas.js +86 -66
- package/dist/features/cue-canvas/cue-canvas.js.map +1 -1
- package/dist/features/cue-canvas/cue-cavas-styled.js +45 -42
- package/dist/features/cue-canvas/cue-cavas-styled.js.map +1 -1
- package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js +61 -54
- package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js.map +1 -1
- package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js +18 -14
- package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js.map +1 -1
- package/dist/features/cue-canvas/hooks/use-upload-helper.js +23 -0
- package/dist/features/cue-canvas/hooks/use-upload-helper.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/homework/helper.js +20 -0
- package/dist/features/cue-canvas/sidebar/homework/helper.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/homework/homework-menu.js +33 -0
- package/dist/features/cue-canvas/sidebar/homework/homework-menu.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/homework/homework-request.js +68 -0
- package/dist/features/cue-canvas/sidebar/homework/homework-request.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/homework/homework-styled.js +25 -0
- package/dist/features/cue-canvas/sidebar/homework/homework-styled.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/homework/homework.js +39 -0
- package/dist/features/cue-canvas/sidebar/homework/homework.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js +13 -0
- package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js +60 -0
- package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js +44 -0
- package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/filters.js +107 -0
- package/dist/features/cue-canvas/sidebar/puzzles/filters.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js +42 -0
- package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js +84 -0
- package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js +36 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js +133 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js +96 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js +29 -0
- package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/puzzles/utils.js +120 -0
- package/dist/features/cue-canvas/sidebar/puzzles/utils.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/sidebar-styled.js +32 -0
- package/dist/features/cue-canvas/sidebar/sidebar-styled.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/sidebar.js +29 -0
- package/dist/features/cue-canvas/sidebar/sidebar.js.map +1 -0
- package/dist/features/cue-canvas/sidebar/tiles/tile.js +16 -0
- package/dist/features/cue-canvas/sidebar/tiles/tile.js.map +1 -0
- package/dist/features/cue-canvas/toolbar/grid-menu.js +13 -13
- package/dist/features/cue-canvas/toolbar/grid-menu.js.map +1 -1
- package/dist/features/homework/styles.js +4 -5
- package/dist/features/homework/styles.js.map +1 -1
- package/dist/features/hooks/use-debounce.js +16 -0
- package/dist/features/hooks/use-debounce.js.map +1 -0
- package/dist/features/trial-session/comps/pricing/pricing.js +35 -36
- package/dist/features/trial-session/comps/pricing/pricing.js.map +1 -1
- package/dist/features/ui/stepper/stepper.js +7 -7
- package/dist/features/worksheet/worksheet/hooks/use-s3-helper.js +22 -19
- package/dist/features/worksheet/worksheet/hooks/use-s3-helper.js.map +1 -1
- package/dist/index.d.ts +48 -3
- package/dist/index.js +184 -180
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/trial-session/comps/pricing/india-pricing/index.js +0 -96
- package/dist/features/trial-session/comps/pricing/india-pricing/index.js.map +0 -1
- package/dist/features/trial-session/comps/pricing/india-pricing/india-pricing-styled.js +0 -59
- package/dist/features/trial-session/comps/pricing/india-pricing/india-pricing-styled.js.map +0 -1
- package/dist/static/ellipse-clip.dfb25608.svg +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-canvas-sync-broker.js","sources":["../../../../src/features/cue-canvas/hooks/use-canvas-sync-broker.ts"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"file":"use-canvas-sync-broker.js","sources":["../../../../src/features/cue-canvas/hooks/use-canvas-sync-broker.ts"],"sourcesContent":["import type {\n IActionData,\n ICanvasUpdateConfig,\n IPublishData,\n IViewport,\n TCueCanvasChangeDataObject,\n TCueCanvasGridName,\n TRenderAs,\n} from '../types/cue-canvas';\n\nimport { useMessageBrokerChannel, type IChannelMessage } from '@cuemath/cue-message-broker';\nimport { useMemo, useCallback, useState, useRef } from 'react';\n\ninterface IMessage {\n eventName: string;\n eventPayload: {\n responseId: string;\n data: TCueCanvasChangeDataObject;\n userId: string;\n height: number;\n gridName?: TCueCanvasGridName;\n dimension?: IViewport;\n };\n}\n\nconst extractStrokeData = (payload: IMessage['eventPayload']): IActionData => ({\n userId: payload.userId,\n data: payload.data,\n height: payload.height,\n responseId: payload.responseId,\n gridName: payload.gridName,\n dimension: payload.dimension,\n});\n\nconst useCanvasSyncBroker = (\n channelId: string,\n logEvent: (type: string, payload?: Record<string, unknown>) => void,\n initialCanvasData?: Array<IChannelMessage>,\n type: TRenderAs = 'canvas',\n) => {\n const [initialStrokesData, setInitialStrokesData] = useState<Record<string, IActionData[]>>(\n () => {\n const map: Record<string, IActionData[]> = {};\n\n if (!initialCanvasData) return map;\n\n for (const { message } of initialCanvasData) {\n const payload = (message.payload as IMessage)?.eventPayload;\n const qrId = payload?.responseId;\n\n if (!payload?.responseId) continue;\n\n const strokeData = extractStrokeData(payload);\n\n if (qrId && map[qrId]) {\n map[qrId]?.push(strokeData);\n } else {\n map[qrId] = [strokeData];\n }\n }\n\n return map;\n },\n );\n const callbacksMapRef = useRef<Record<string, (data: IActionData) => void>>({});\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: type === 'canvas' ? 0 : 24,\n logger: logEvent,\n }),\n [channelId, logEvent, type],\n );\n\n const registerCallback = useCallback((qrId: string, cb: (data: IActionData) => void) => {\n callbacksMapRef.current = { ...callbacksMapRef.current, [qrId]: cb };\n }, []);\n\n const onMessageReceive = useCallback(\n (messages: Array<IChannelMessage>, initialData?: boolean) => {\n const strokesPerWidgetMap: Record<string, Array<IActionData>> = {};\n\n messages.forEach(message => {\n const { payload } = message.message;\n const { eventPayload } = payload as IMessage;\n const qrId = eventPayload?.responseId as string;\n const strokes = eventPayload?.data;\n const userId = eventPayload?.userId;\n const canvasHeight = eventPayload?.height;\n const widgetOnReceiveCallback = callbacksMapRef.current[qrId];\n\n if (!initialData && widgetOnReceiveCallback) {\n widgetOnReceiveCallback({\n data: strokes,\n height: canvasHeight,\n userId,\n responseId: qrId,\n gridName: eventPayload?.gridName,\n dimension: eventPayload?.dimension,\n });\n } else {\n const strokeData = extractStrokeData(eventPayload);\n\n if (qrId && strokesPerWidgetMap[qrId]) {\n strokesPerWidgetMap[qrId]?.push(strokeData);\n } else {\n strokesPerWidgetMap[qrId] = [strokeData];\n }\n }\n });\n\n if (Object.keys(strokesPerWidgetMap).length > 0) {\n setInitialStrokesData(prevData => {\n const currentData = { ...prevData };\n\n Object.keys(strokesPerWidgetMap).forEach(key => {\n if (key && currentData[key]) {\n currentData[key]?.push(...(strokesPerWidgetMap[key] ?? []));\n } else {\n currentData[key] = strokesPerWidgetMap[key] ?? [];\n }\n });\n\n return currentData;\n });\n }\n },\n [],\n );\n\n const { publish, channelStatus, channel, channelMetadata, setChannelMetadata } =\n useMessageBrokerChannel<IPublishData, ICanvasUpdateConfig>({\n channelOptions,\n consumerFn: onMessageReceive,\n metadataRequired: type === 'whiteboard',\n });\n\n const closeChannel = useCallback(() => {\n if (channel) {\n channel.destroyChannel();\n }\n }, [channel]);\n\n return {\n publishStrokes: publish,\n channelStatus,\n closeChannel,\n initialStrokesData,\n registerCallback,\n setChannelMetadata,\n channelMetadata,\n };\n};\n\nexport default useCanvasSyncBroker;\n"],"names":["extractStrokeData","payload","useCanvasSyncBroker","channelId","logEvent","initialCanvasData","type","initialStrokesData","setInitialStrokesData","useState","map","message","_a","qrId","strokeData","_b","callbacksMapRef","useRef","channelOptions","useMemo","registerCallback","useCallback","cb","onMessageReceive","messages","initialData","strokesPerWidgetMap","eventPayload","strokes","userId","canvasHeight","widgetOnReceiveCallback","prevData","currentData","key","publish","channelStatus","channel","channelMetadata","setChannelMetadata","useMessageBrokerChannel","closeChannel","useCanvasSyncBroker$1"],"mappings":";;AAyBA,MAAMA,IAAoB,CAACC,OAAoD;AAAA,EAC7E,QAAQA,EAAQ;AAAA,EAChB,MAAMA,EAAQ;AAAA,EACd,QAAQA,EAAQ;AAAA,EAChB,YAAYA,EAAQ;AAAA,EACpB,UAAUA,EAAQ;AAAA,EAClB,WAAWA,EAAQ;AACrB,IAEMC,IAAsB,CAC1BC,GACAC,GACAC,GACAC,IAAkB,aACf;AACG,QAAA,CAACC,GAAoBC,CAAqB,IAAIC;AAAA,IAClD,MAAM;;AACJ,YAAMC,IAAqC,CAAA;AAEvC,UAAA,CAACL,EAA0B,QAAAK;AAEpB,iBAAA,EAAE,SAAAC,EAAQ,KAAKN,GAAmB;AACrC,cAAAJ,KAAWW,IAAAD,EAAQ,YAAR,gBAAAC,EAA8B,cACzCC,IAAOZ,KAAA,gBAAAA,EAAS;AAElB,YAAA,EAACA,KAAA,QAAAA,EAAS,YAAY;AAEpB,cAAAa,IAAad,EAAkBC,CAAO;AAExC,QAAAY,KAAQH,EAAIG,CAAI,KACdE,IAAAL,EAAAG,CAAI,MAAJ,QAAAE,EAAO,KAAKD,KAEZJ,EAAAG,CAAI,IAAI,CAACC,CAAU;AAAA,MAE3B;AAEO,aAAAJ;AAAA,IACT;AAAA,EAAA,GAEIM,IAAkBC,EAAoD,CAAA,CAAE,GAExEC,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,WAAAhB;AAAA,MACA,KAAKG,MAAS,WAAW,IAAI;AAAA,MAC7B,QAAQF;AAAA,IAAA;AAAA,IAEV,CAACD,GAAWC,GAAUE,CAAI;AAAA,EAAA,GAGtBc,IAAmBC,EAAY,CAACR,GAAcS,MAAoC;AACtE,IAAAN,EAAA,UAAU,EAAE,GAAGA,EAAgB,SAAS,CAACH,CAAI,GAAGS;EAClE,GAAG,CAAE,CAAA,GAECC,IAAmBF;AAAA,IACvB,CAACG,GAAkCC,MAA0B;AAC3D,YAAMC,IAA0D,CAAA;AAEhE,MAAAF,EAAS,QAAQ,CAAWb,MAAA;;AACpB,cAAA,EAAE,SAAAV,EAAQ,IAAIU,EAAQ,SACtB,EAAE,cAAAgB,EAAiB,IAAA1B,GACnBY,IAAOc,KAAA,gBAAAA,EAAc,YACrBC,IAAUD,KAAA,gBAAAA,EAAc,MACxBE,IAASF,KAAA,gBAAAA,EAAc,QACvBG,IAAeH,KAAA,gBAAAA,EAAc,QAC7BI,IAA0Bf,EAAgB,QAAQH,CAAI;AAExD,YAAA,CAACY,KAAeM;AACM,UAAAA,EAAA;AAAA,YACtB,MAAMH;AAAA,YACN,QAAQE;AAAA,YACR,QAAAD;AAAA,YACA,YAAYhB;AAAA,YACZ,UAAUc,KAAA,gBAAAA,EAAc;AAAA,YACxB,WAAWA,KAAA,gBAAAA,EAAc;AAAA,UAAA,CAC1B;AAAA,aACI;AACC,gBAAAb,IAAad,EAAkB2B,CAAY;AAE7C,UAAAd,KAAQa,EAAoBb,CAAI,KACdD,IAAAc,EAAAb,CAAI,MAAJ,QAAAD,EAAO,KAAKE,KAEZY,EAAAb,CAAI,IAAI,CAACC,CAAU;AAAA,QAE3C;AAAA,MAAA,CACD,GAEG,OAAO,KAAKY,CAAmB,EAAE,SAAS,KAC5ClB,EAAsB,CAAYwB,MAAA;AAC1B,cAAAC,IAAc,EAAE,GAAGD;AAEzB,sBAAO,KAAKN,CAAmB,EAAE,QAAQ,CAAOQ,MAAA;;AAC1C,UAAAA,KAAOD,EAAYC,CAAG,KACZtB,IAAAqB,EAAAC,CAAG,MAAH,QAAAtB,EAAM,KAAK,GAAIc,EAAoBQ,CAAG,KAAK,CAAA,KAEvDD,EAAYC,CAAG,IAAIR,EAAoBQ,CAAG,KAAK,CAAA;AAAA,QACjD,CACD,GAEMD;AAAA,MAAA,CACR;AAAA,IAEL;AAAA,IACA,CAAC;AAAA,EAAA,GAGG,EAAE,SAAAE,GAAS,eAAAC,GAAe,SAAAC,GAAS,iBAAAC,GAAiB,oBAAAC,MACxDC,EAA2D;AAAA,IACzD,gBAAAtB;AAAA,IACA,YAAYK;AAAA,IACZ,kBAAkBjB,MAAS;AAAA,EAAA,CAC5B,GAEGmC,IAAepB,EAAY,MAAM;AACrC,IAAIgB,KACFA,EAAQ,eAAe;AAAA,EACzB,GACC,CAACA,CAAO,CAAC;AAEL,SAAA;AAAA,IACL,gBAAgBF;AAAA,IAChB,eAAAC;AAAA,IACA,cAAAK;AAAA,IACA,oBAAAlC;AAAA,IACA,kBAAAa;AAAA,IACA,oBAAAmB;AAAA,IACA,iBAAAD;AAAA,EAAA;AAEJ,GAEAI,IAAexC;"}
|
@@ -1,28 +1,32 @@
|
|
1
|
-
import { useContext as
|
2
|
-
import
|
3
|
-
const
|
1
|
+
import { useContext as a, useMemo as m } from "react";
|
2
|
+
import v from "../cue-canvas-context.js";
|
3
|
+
const A = () => {
|
4
4
|
const {
|
5
|
-
activeInstance:
|
6
|
-
setActiveTool:
|
5
|
+
activeInstance: o,
|
6
|
+
setActiveTool: t,
|
7
7
|
activeTool: e,
|
8
|
-
setActiveInstance:
|
8
|
+
setActiveInstance: r,
|
9
9
|
activeColor: s,
|
10
|
-
setActiveColor:
|
11
|
-
|
10
|
+
setActiveColor: i,
|
11
|
+
homeworkId: n,
|
12
|
+
setHomeworkId: c
|
13
|
+
} = a(v), l = m(
|
12
14
|
() => e ? ["pen", "ruler", "highlighter", "marker"].includes(e) : !1,
|
13
15
|
[e]
|
14
16
|
);
|
15
17
|
return {
|
16
|
-
activeInstance:
|
17
|
-
setActiveTool:
|
18
|
+
activeInstance: o,
|
19
|
+
setActiveTool: t,
|
18
20
|
activeTool: e,
|
19
|
-
setActiveInstance:
|
21
|
+
setActiveInstance: r,
|
20
22
|
activeColor: s,
|
21
|
-
setActiveColor:
|
22
|
-
isWritingToolActive:
|
23
|
+
setActiveColor: i,
|
24
|
+
isWritingToolActive: l,
|
25
|
+
homeworkId: n,
|
26
|
+
setHomeworkId: c
|
23
27
|
};
|
24
28
|
};
|
25
29
|
export {
|
26
|
-
|
30
|
+
A as useCueCanvasActions
|
27
31
|
};
|
28
32
|
//# sourceMappingURL=use-cue-canvas-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-cue-canvas-actions.js","sources":["../../../../src/features/cue-canvas/hooks/use-cue-canvas-actions.ts"],"sourcesContent":["import { useContext, useMemo } from 'react';\n\nimport PolyContext from '../cue-canvas-context';\n\nexport const useCueCanvasActions = () => {\n const {\n activeInstance,\n setActiveTool,\n activeTool,\n setActiveInstance,\n activeColor,\n setActiveColor,\n } = useContext(PolyContext);\n\n const isWritingToolActive = useMemo(\n () => (activeTool ? ['pen', 'ruler', 'highlighter', 'marker'].includes(activeTool) : false),\n [activeTool],\n );\n\n return {\n activeInstance,\n setActiveTool,\n activeTool,\n setActiveInstance,\n activeColor,\n setActiveColor,\n isWritingToolActive,\n };\n};\n"],"names":["useCueCanvasActions","activeInstance","setActiveTool","activeTool","setActiveInstance","activeColor","setActiveColor","useContext","PolyContext","isWritingToolActive","useMemo"],"mappings":";;AAIO,MAAMA,IAAsB,MAAM;AACjC,QAAA;AAAA,IACJ,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,IACEC,EAAWC,CAAW,GAEpBC,IAAsBC;AAAA,IAC1B,
|
1
|
+
{"version":3,"file":"use-cue-canvas-actions.js","sources":["../../../../src/features/cue-canvas/hooks/use-cue-canvas-actions.ts"],"sourcesContent":["import { useContext, useMemo } from 'react';\n\nimport PolyContext from '../cue-canvas-context';\n\nexport const useCueCanvasActions = () => {\n const {\n activeInstance,\n setActiveTool,\n activeTool,\n setActiveInstance,\n activeColor,\n setActiveColor,\n homeworkId,\n setHomeworkId,\n } = useContext(PolyContext);\n\n const isWritingToolActive = useMemo(\n () => (activeTool ? ['pen', 'ruler', 'highlighter', 'marker'].includes(activeTool) : false),\n [activeTool],\n );\n\n return {\n activeInstance,\n setActiveTool,\n activeTool,\n setActiveInstance,\n activeColor,\n setActiveColor,\n isWritingToolActive,\n homeworkId,\n setHomeworkId,\n };\n};\n"],"names":["useCueCanvasActions","activeInstance","setActiveTool","activeTool","setActiveInstance","activeColor","setActiveColor","homeworkId","setHomeworkId","useContext","PolyContext","isWritingToolActive","useMemo"],"mappings":";;AAIO,MAAMA,IAAsB,MAAM;AACjC,QAAA;AAAA,IACJ,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,EAAA,IACEC,EAAWC,CAAW,GAEpBC,IAAsBC;AAAA,IAC1B,MAAOT,IAAa,CAAC,OAAO,SAAS,eAAe,QAAQ,EAAE,SAASA,CAAU,IAAI;AAAA,IACrF,CAACA,CAAU;AAAA,EAAA;AAGN,SAAA;AAAA,IACL,gBAAAF;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,qBAAAK;AAAA,IACA,YAAAJ;AAAA,IACA,eAAAC;AAAA,EAAA;AAEJ;"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { useRef as d, useCallback as c } from "react";
|
2
|
+
import m from "../../worksheet/worksheet/hooks/use-s3-helper.js";
|
3
|
+
const p = { type: "cuemath_whiteboard" }, h = (a) => {
|
4
|
+
const { userId: o, renderAs: u, userType: s } = a, l = d(), r = m({
|
5
|
+
studentId: o,
|
6
|
+
query: p,
|
7
|
+
enabled: u === "whiteboard" && s === "TEACHER"
|
8
|
+
}), t = c(
|
9
|
+
async (n) => {
|
10
|
+
const e = await r({
|
11
|
+
fileKey: "media/cuemath-whiteboard/",
|
12
|
+
images: [{ file: n, url: "" }]
|
13
|
+
});
|
14
|
+
return e && e.length > 0 ? e[0] ?? "error" : "error";
|
15
|
+
},
|
16
|
+
[r]
|
17
|
+
);
|
18
|
+
return l.current = t, t;
|
19
|
+
};
|
20
|
+
export {
|
21
|
+
h as default
|
22
|
+
};
|
23
|
+
//# sourceMappingURL=use-upload-helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-upload-helper.js","sources":["../../../../src/features/cue-canvas/hooks/use-upload-helper.ts"],"sourcesContent":["import type { TUserTypes } from '../../ui/types';\nimport type { TRenderAs } from '../types/cue-canvas';\n\nimport { useCallback } from 'react';\nimport { useRef } from 'react';\n\nimport useS3ImageUploadHelper from '../../worksheet/worksheet/hooks/use-s3-helper';\n\ninterface IUseUploadHelper {\n userId: string;\n renderAs: TRenderAs;\n userType: TUserTypes;\n}\nconst QUERY = { type: 'cuemath_whiteboard' };\n\nconst useUploadHelper = (props: IUseUploadHelper) => {\n const { userId, renderAs, userType } = props;\n const uploadImageRef = useRef<(file: File) => Promise<string>>();\n const uploadImages = useS3ImageUploadHelper({\n studentId: userId,\n query: QUERY,\n enabled: renderAs === 'whiteboard' && userType === 'TEACHER',\n });\n\n const uploadImageToS3 = useCallback(\n async (file: File) => {\n const urls = await uploadImages({\n fileKey: `media/cuemath-whiteboard/`,\n images: [{ file: file, url: '' }],\n });\n\n if (urls && urls.length > 0) {\n const url = urls[0] ?? 'error';\n\n return url;\n }\n\n return 'error';\n },\n [uploadImages],\n );\n\n uploadImageRef.current = uploadImageToS3;\n\n return uploadImageToS3;\n};\n\nexport default useUploadHelper;\n"],"names":["QUERY","useUploadHelper","props","userId","renderAs","userType","uploadImageRef","useRef","uploadImages","useS3ImageUploadHelper","uploadImageToS3","useCallback","file","urls"],"mappings":";;AAaA,MAAMA,IAAQ,EAAE,MAAM,wBAEhBC,IAAkB,CAACC,MAA4B;AACnD,QAAM,EAAE,QAAAC,GAAQ,UAAAC,GAAU,UAAAC,EAAA,IAAaH,GACjCI,IAAiBC,KACjBC,IAAeC,EAAuB;AAAA,IAC1C,WAAWN;AAAA,IACX,OAAOH;AAAA,IACP,SAASI,MAAa,gBAAgBC,MAAa;AAAA,EAAA,CACpD,GAEKK,IAAkBC;AAAA,IACtB,OAAOC,MAAe;AACd,YAAAC,IAAO,MAAML,EAAa;AAAA,QAC9B,SAAS;AAAA,QACT,QAAQ,CAAC,EAAE,MAAAI,GAAY,KAAK,IAAI;AAAA,MAAA,CACjC;AAEG,aAAAC,KAAQA,EAAK,SAAS,IACZA,EAAK,CAAC,KAAK,UAKlB;AAAA,IACT;AAAA,IACA,CAACL,CAAY;AAAA,EAAA;AAGf,SAAAF,EAAe,UAAUI,GAElBA;AACT;"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
const m = (t) => {
|
2
|
+
const e = typeof t == "string" ? new Date(t) : new Date(t * 1e3), o = e.getDate(), r = e.getMonth() + 1;
|
3
|
+
return { year: e.getFullYear(), month: r, date: o };
|
4
|
+
};
|
5
|
+
function a(t) {
|
6
|
+
const n = /* @__PURE__ */ new Date();
|
7
|
+
return n.setMonth(t - 1), n.toLocaleString("en-US", {
|
8
|
+
month: "short"
|
9
|
+
});
|
10
|
+
}
|
11
|
+
const c = (t) => {
|
12
|
+
var e;
|
13
|
+
return (e = a(+t)) == null ? void 0 : e.toUpperCase();
|
14
|
+
};
|
15
|
+
export {
|
16
|
+
m as getDateInInputFormat,
|
17
|
+
c as getMonthNameforNumber,
|
18
|
+
a as toMonthName
|
19
|
+
};
|
20
|
+
//# sourceMappingURL=helper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helper.js","sources":["../../../../../src/features/cue-canvas/sidebar/homework/helper.ts"],"sourcesContent":["export const getDateInInputFormat = (inputDate: number | string) => {\n const isDateInString = typeof inputDate === 'string';\n const dateToBeConverted = isDateInString ? new Date(inputDate) : new Date(inputDate * 1000);\n\n const dateNum = dateToBeConverted.getDate();\n const monthNum = dateToBeConverted.getMonth() + 1;\n const year = dateToBeConverted.getFullYear();\n\n return { year, month: monthNum, date: dateNum };\n};\n\nexport function toMonthName(monthNumber: number) {\n const date = new Date();\n\n date.setMonth(monthNumber - 1);\n\n return date.toLocaleString('en-US', {\n month: 'short',\n });\n}\nexport const getMonthNameforNumber = (num: number) => {\n const monthName = toMonthName(+num)?.toUpperCase();\n\n return monthName;\n};\n"],"names":["getDateInInputFormat","inputDate","dateToBeConverted","dateNum","monthNum","toMonthName","monthNumber","date","getMonthNameforNumber","num","_a"],"mappings":"AAAa,MAAAA,IAAuB,CAACC,MAA+B;AAE5D,QAAAC,IADiB,OAAOD,KAAc,WACD,IAAI,KAAKA,CAAS,IAAI,IAAI,KAAKA,IAAY,GAAI,GAEpFE,IAAUD,EAAkB,WAC5BE,IAAWF,EAAkB,SAAA,IAAa;AAGhD,SAAO,EAAE,MAFIA,EAAkB,eAEhB,OAAOE,GAAU,MAAMD,EAAQ;AAChD;AAEO,SAASE,EAAYC,GAAqB;AACzC,QAAAC,wBAAW;AAEZ,SAAAA,EAAA,SAASD,IAAc,CAAC,GAEtBC,EAAK,eAAe,SAAS;AAAA,IAClC,OAAO;AAAA,EAAA,CACR;AACH;AACa,MAAAC,IAAwB,CAACC,MAAgB;AApBzC,MAAAC;AAuBJ,UAFWA,IAAAL,EAAY,CAACI,CAAG,MAAhB,gBAAAC,EAAmB;AAGvC;"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
2
|
+
import { memo as l } from "react";
|
3
|
+
import m from "../../../../assets/line-icons/icons/cross.js";
|
4
|
+
import s from "../../../ui/buttons/clickable/clickable.js";
|
5
|
+
import r from "../../../ui/layout/flex-view.js";
|
6
|
+
import i from "../../../ui/text/text.js";
|
7
|
+
import $ from "./homework-request.js";
|
8
|
+
import { MenuContainer as d } from "./homework-styled.js";
|
9
|
+
const a = ({ onSelect: n, hwRequests: c }) => /* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(r, { children: /* @__PURE__ */ t(
|
10
|
+
r,
|
11
|
+
{
|
12
|
+
$flexDirection: "row",
|
13
|
+
$alignItems: "center",
|
14
|
+
$justifyContent: "center",
|
15
|
+
$flexWrap: !0,
|
16
|
+
$gutterX: 0.5,
|
17
|
+
$gapX: 0.5,
|
18
|
+
children: [
|
19
|
+
/* @__PURE__ */ t(r, { $flexDirection: "row", $gapX: 0.5, children: [
|
20
|
+
/* @__PURE__ */ t(r, { $width: "184px", $gutterX: 1, children: [
|
21
|
+
/* @__PURE__ */ e(i, { $color: "WHITE", $renderAs: "eyebrow2", children: "HOMEWORK" }),
|
22
|
+
/* @__PURE__ */ e(i, { $color: "WHITE", $renderAs: "eyebrow2", children: "HELP REQUESTS" })
|
23
|
+
] }),
|
24
|
+
/* @__PURE__ */ e(s, { onClick: n, label: "close activities menu", children: /* @__PURE__ */ e(m, { color: "WHITE" }) })
|
25
|
+
] }),
|
26
|
+
c.map((o) => /* @__PURE__ */ e(r, { $gutterX: 0.25, $gapX: 0.5, children: /* @__PURE__ */ e($, { hwRequest: o, onSelect: n, studentName: o.student_name }) }, o.created_on_ts))
|
27
|
+
]
|
28
|
+
}
|
29
|
+
) }) }), w = l(a);
|
30
|
+
export {
|
31
|
+
w as default
|
32
|
+
};
|
33
|
+
//# sourceMappingURL=homework-menu.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"homework-menu.js","sources":["../../../../../src/features/cue-canvas/sidebar/homework/homework-menu.tsx"],"sourcesContent":["import type { IHomeWorkMenuProps } from './homework-types';\n\nimport { memo } from 'react';\n\nimport CrossIcon from '../../../../assets/line-icons/icons/cross';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport HWRequest from './homework-request';\nimport * as Styled from './homework-styled';\n\nconst HomeWorkMenu: React.FC<IHomeWorkMenuProps> = ({ onSelect, hwRequests }) => {\n return (\n <Styled.MenuContainer>\n <FlexView>\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $flexWrap\n $gutterX={0.5}\n $gapX={0.5}\n >\n <FlexView $flexDirection=\"row\" $gapX={0.5}>\n <FlexView $width={'184px'} $gutterX={1}>\n <Text $color=\"WHITE\" $renderAs=\"eyebrow2\">\n HOMEWORK\n </Text>\n <Text $color=\"WHITE\" $renderAs=\"eyebrow2\">\n HELP REQUESTS\n </Text>\n </FlexView>\n <Clickable onClick={onSelect} label=\"close activities menu\">\n <CrossIcon color=\"WHITE\" />\n </Clickable>\n </FlexView>\n\n {hwRequests.map(item => (\n <FlexView $gutterX={0.25} $gapX={0.5} key={item.created_on_ts}>\n <HWRequest hwRequest={item} onSelect={onSelect} studentName={item.student_name} />\n </FlexView>\n ))}\n </FlexView>\n </FlexView>\n </Styled.MenuContainer>\n );\n};\n\nexport default memo(HomeWorkMenu);\n"],"names":["HomeWorkMenu","onSelect","hwRequests","jsx","Styled.MenuContainer","FlexView","jsxs","Text","Clickable","CrossIcon","item","HWRequest","HomeWorkMenu$1","memo"],"mappings":";;;;;;;;AAWA,MAAMA,IAA6C,CAAC,EAAE,UAAAC,GAAU,YAAAC,QAE3D,gBAAAC,EAAAC,GAAA,EACC,4BAACC,GACC,EAAA,UAAA,gBAAAC;AAAA,EAACD;AAAA,EAAA;AAAA,IACC,gBAAe;AAAA,IACf,aAAY;AAAA,IACZ,iBAAgB;AAAA,IAChB,WAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IAEP,UAAA;AAAA,MAAA,gBAAAC,EAACD,GAAS,EAAA,gBAAe,OAAM,OAAO,KACpC,UAAA;AAAA,QAAA,gBAAAC,EAACD,GAAS,EAAA,QAAQ,SAAS,UAAU,GACnC,UAAA;AAAA,UAAA,gBAAAF,EAACI,GAAK,EAAA,QAAO,SAAQ,WAAU,YAAW,UAE1C,YAAA;AAAA,4BACCA,GAAK,EAAA,QAAO,SAAQ,WAAU,YAAW,UAE1C,iBAAA;AAAA,QAAA,GACF;AAAA,QACA,gBAAAJ,EAACK,GAAU,EAAA,SAASP,GAAU,OAAM,yBAClC,UAAC,gBAAAE,EAAAM,GAAA,EAAU,OAAM,QAAA,CAAQ,EAC3B,CAAA;AAAA,MAAA,GACF;AAAA,MAECP,EAAW,IAAI,CACdQ,MAAA,gBAAAP,EAACE,KAAS,UAAU,MAAM,OAAO,KAC/B,UAAA,gBAAAF,EAACQ,KAAU,WAAWD,GAAM,UAAAT,GAAoB,aAAaS,EAAK,cAAc,EADvC,GAAAA,EAAK,aAEhD,CACD;AAAA,IAAA;AAAA,EAAA;AAAA,EAEL,CAAA,EACF,CAAA,GAIWE,IAAAC,EAAKb,CAAY;"}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import { jsx as o, jsxs as R } from "react/jsx-runtime";
|
2
|
+
import { h as c } from "../../../../node_modules/humanize-plus/dist/humanize.js";
|
3
|
+
import { memo as q, useCallback as k } from "react";
|
4
|
+
import y from "../../../ui/buttons/clickable/clickable.js";
|
5
|
+
import $ from "../../../ui/layout/flex-view.js";
|
6
|
+
import d from "../../../ui/text/text.js";
|
7
|
+
import { useCueCanvasActions as W } from "../../hooks/use-cue-canvas-actions.js";
|
8
|
+
import { getDateInInputFormat as _, getMonthNameforNumber as E } from "./helper.js";
|
9
|
+
import { HWImageContainer as T } from "./homework-styled.js";
|
10
|
+
import l from "../../../../node_modules/uuid/dist/esm-browser/v4.js";
|
11
|
+
const v = (u) => {
|
12
|
+
var a;
|
13
|
+
const { hwRequest: p, onSelect: r, studentName: h } = u, {
|
14
|
+
problem_description: m,
|
15
|
+
problem_image_urls: e,
|
16
|
+
created_on_ts: f,
|
17
|
+
homework_id: s
|
18
|
+
} = p, { setHomeworkId: n, activeInstance: t } = W(), g = k(() => {
|
19
|
+
const x = l();
|
20
|
+
if (e && e.length > 0) {
|
21
|
+
const i = {
|
22
|
+
data: {
|
23
|
+
[x]: [
|
24
|
+
void 0,
|
25
|
+
{
|
26
|
+
name: "text",
|
27
|
+
html: m,
|
28
|
+
x: 500,
|
29
|
+
y: 75,
|
30
|
+
rot: 0
|
31
|
+
}
|
32
|
+
]
|
33
|
+
}
|
34
|
+
};
|
35
|
+
e.forEach((C) => {
|
36
|
+
const H = l();
|
37
|
+
i.data[H] = [
|
38
|
+
void 0,
|
39
|
+
{
|
40
|
+
name: "image",
|
41
|
+
href: C + "?dummyProp=true",
|
42
|
+
x: 48,
|
43
|
+
y: 72,
|
44
|
+
rot: 0,
|
45
|
+
width: 400
|
46
|
+
}
|
47
|
+
];
|
48
|
+
}), t == null || t.replaceCanvas(i);
|
49
|
+
}
|
50
|
+
r(), n(s);
|
51
|
+
}, [t, m, s, e, r, n]), { date: I, month: w } = _(f), b = `${c.ordinal(I)} ${c.titleCase((a = E(w)) == null ? void 0 : a.toLowerCase())}`;
|
52
|
+
return /* @__PURE__ */ o(y, { label: "HW Request Item", onClick: g, children: /* @__PURE__ */ R($, { $alignItems: "center", $justifyContent: "center", $borderRadius: 8, $background: "WHITE", children: [
|
53
|
+
/* @__PURE__ */ o(
|
54
|
+
T,
|
55
|
+
{
|
56
|
+
src: e[0] + "?dummyProp=true",
|
57
|
+
alt: "Homework Request",
|
58
|
+
crossOrigin: "anonymous"
|
59
|
+
}
|
60
|
+
),
|
61
|
+
/* @__PURE__ */ o(d, { $renderAs: "body3", color: "WHITE", children: h }),
|
62
|
+
/* @__PURE__ */ o(d, { $renderAs: "body3", color: "WHITE", children: b })
|
63
|
+
] }) });
|
64
|
+
}, M = q(v);
|
65
|
+
export {
|
66
|
+
M as default
|
67
|
+
};
|
68
|
+
//# sourceMappingURL=homework-request.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"homework-request.js","sources":["../../../../../src/features/cue-canvas/sidebar/homework/homework-request.tsx"],"sourcesContent":["import type { IReplaceCanvas } from '../../types/cue-canvas';\nimport type { IHomeWorkRequestProps } from './homework-types';\n\nimport { ordinal, titleCase } from 'humanize-plus';\nimport { memo, useCallback } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport { useCueCanvasActions } from '../../hooks/use-cue-canvas-actions';\nimport { getDateInInputFormat, getMonthNameforNumber } from './helper';\nimport * as Styled from './homework-styled';\n\nconst HomeWorkRequest: React.FC<IHomeWorkRequestProps> = props => {\n const { hwRequest, onSelect, studentName } = props;\n const {\n problem_description: hwRequestDesc,\n problem_image_urls: hwRequestImages,\n created_on_ts: createdOnTs,\n homework_id: hwRequestId,\n } = hwRequest;\n const { setHomeworkId, activeInstance } = useCueCanvasActions();\n\n const onSelectHwRequest = useCallback(() => {\n const textId = uuidv4();\n\n if (hwRequestImages && hwRequestImages.length > 0) {\n const actionData: IReplaceCanvas = {\n data: {\n [textId]: [\n undefined,\n {\n name: 'text',\n html: hwRequestDesc,\n x: 500,\n y: 75,\n rot: 0,\n },\n ],\n },\n };\n\n hwRequestImages.forEach(image => {\n const imgId = uuidv4();\n\n actionData.data[imgId] = [\n undefined,\n {\n name: 'image',\n href: image + '?dummyProp=true',\n x: 48,\n y: 72,\n rot: 0,\n width: 400,\n },\n ];\n });\n\n activeInstance?.replaceCanvas(actionData);\n }\n onSelect();\n setHomeworkId(hwRequestId);\n }, [activeInstance, hwRequestDesc, hwRequestId, hwRequestImages, onSelect, setHomeworkId]);\n\n const { date, month } = getDateInInputFormat(createdOnTs);\n\n const dateString = `${ordinal(date)} ${titleCase(getMonthNameforNumber(month)?.toLowerCase())}`;\n\n return (\n <Clickable label=\"HW Request Item\" onClick={onSelectHwRequest}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" $borderRadius={8} $background=\"WHITE\">\n <Styled.HWImageContainer\n src={hwRequestImages[0] + '?dummyProp=true'}\n alt=\"Homework Request\"\n crossOrigin=\"anonymous\"\n />\n <Text $renderAs=\"body3\" color=\"WHITE\">\n {studentName}\n </Text>\n <Text $renderAs=\"body3\" color=\"WHITE\">\n {dateString}\n </Text>\n </FlexView>\n </Clickable>\n );\n};\n\nexport default memo(HomeWorkRequest);\n"],"names":["HomeWorkRequest","props","hwRequest","onSelect","studentName","hwRequestDesc","hwRequestImages","createdOnTs","hwRequestId","setHomeworkId","activeInstance","useCueCanvasActions","onSelectHwRequest","useCallback","textId","uuidv4","actionData","image","imgId","date","month","getDateInInputFormat","dateString","ordinal","titleCase","_a","getMonthNameforNumber","jsx","Clickable","jsxs","FlexView","Styled.HWImageContainer","Text","HWRequest","memo"],"mappings":";;;;;;;;;;AAcA,MAAMA,IAAmD,CAASC,MAAA;;AAChE,QAAM,EAAE,WAAAC,GAAW,UAAAC,GAAU,aAAAC,EAAA,IAAgBH,GACvC;AAAA,IACJ,qBAAqBI;AAAA,IACrB,oBAAoBC;AAAA,IACpB,eAAeC;AAAA,IACf,aAAaC;AAAA,EACX,IAAAN,GACE,EAAE,eAAAO,GAAe,gBAAAC,EAAe,IAAIC,EAAoB,GAExDC,IAAoBC,EAAY,MAAM;AAC1C,UAAMC,IAASC;AAEX,QAAAT,KAAmBA,EAAgB,SAAS,GAAG;AACjD,YAAMU,IAA6B;AAAA,QACjC,MAAM;AAAA,UACJ,CAACF,CAAM,GAAG;AAAA,YACR;AAAA,YACA;AAAA,cACE,MAAM;AAAA,cACN,MAAMT;AAAA,cACN,GAAG;AAAA,cACH,GAAG;AAAA,cACH,KAAK;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,MAAA;AAGF,MAAAC,EAAgB,QAAQ,CAASW,MAAA;AAC/B,cAAMC,IAAQH;AAEH,QAAAC,EAAA,KAAKE,CAAK,IAAI;AAAA,UACvB;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,MAAMD,IAAQ;AAAA,YACd,GAAG;AAAA,YACH,GAAG;AAAA,YACH,KAAK;AAAA,YACL,OAAO;AAAA,UACT;AAAA,QAAA;AAAA,MACF,CACD,GAEDP,KAAA,QAAAA,EAAgB,cAAcM;AAAA,IAChC;AACS,IAAAb,KACTM,EAAcD,CAAW;AAAA,EAAA,GACxB,CAACE,GAAgBL,GAAeG,GAAaF,GAAiBH,GAAUM,CAAa,CAAC,GAEnF,EAAE,MAAAU,GAAM,OAAAC,EAAM,IAAIC,EAAqBd,CAAW,GAElDe,IAAa,GAAGC,UAAQJ,CAAI,CAAC,IAAIK,aAAUC,IAAAC,EAAsBN,CAAK,MAA3B,gBAAAK,EAA8B,aAAa,CAAC;AAE7F,SACG,gBAAAE,EAAAC,GAAA,EAAU,OAAM,mBAAkB,SAAShB,GAC1C,UAAA,gBAAAiB,EAACC,GAAS,EAAA,aAAY,UAAS,iBAAgB,UAAS,eAAe,GAAG,aAAY,SACpF,UAAA;AAAA,IAAA,gBAAAH;AAAA,MAACI;AAAAA,MAAA;AAAA,QACC,KAAKzB,EAAgB,CAAC,IAAI;AAAA,QAC1B,KAAI;AAAA,QACJ,aAAY;AAAA,MAAA;AAAA,IACd;AAAA,sBACC0B,GAAK,EAAA,WAAU,SAAQ,OAAM,SAC3B,UACH5B,GAAA;AAAA,sBACC4B,GAAK,EAAA,WAAU,SAAQ,OAAM,SAC3B,UACHV,GAAA;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ,GAEeW,IAAAC,EAAKlC,CAAe;"}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import o from "styled-components";
|
2
|
+
import t from "../../../ui/layout/flex-view.js";
|
3
|
+
const i = o(t)`
|
4
|
+
position: absolute;
|
5
|
+
top: 38px;
|
6
|
+
left: -87px; //32px + 32 px for icon +8+8(separator) +7 gutter
|
7
|
+
width: 248px;
|
8
|
+
height: 438px;
|
9
|
+
border-radius: 6px;
|
10
|
+
background: #292734;
|
11
|
+
box-shadow: 0px 4px 8px ${({ theme: r }) => r.colors.BLACK_T_20};
|
12
|
+
overflow-y: auto;
|
13
|
+
`, a = o.img.attrs({ loading: "lazy" })`
|
14
|
+
width: 184px;
|
15
|
+
height: 128px;
|
16
|
+
border-top-left-radius: 8px;
|
17
|
+
border-top-right-radius: 8px;
|
18
|
+
border-bottom-left-radius: 0;
|
19
|
+
border-bottom-right-radius: 0;
|
20
|
+
`;
|
21
|
+
export {
|
22
|
+
a as HWImageContainer,
|
23
|
+
i as MenuContainer
|
24
|
+
};
|
25
|
+
//# sourceMappingURL=homework-styled.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"homework-styled.js","sources":["../../../../../src/features/cue-canvas/sidebar/homework/homework-styled.ts"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nconst MenuContainer = styled(FlexView)`\n position: absolute;\n top: 38px;\n left: -87px; //32px + 32 px for icon +8+8(separator) +7 gutter\n width: 248px;\n height: 438px;\n border-radius: 6px;\n background: #292734;\n box-shadow: 0px 4px 8px ${({ theme }) => theme.colors.BLACK_T_20};\n overflow-y: auto;\n`;\nconst HWImageContainer = styled.img.attrs({ loading: 'lazy' })`\n width: 184px;\n height: 128px;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n`;\n\nexport { MenuContainer, HWImageContainer };\n"],"names":["MenuContainer","styled","FlexView","theme","HWImageContainer"],"mappings":";;AAIM,MAAAA,IAAgBC,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAQT,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,UAAU;AAAA;AAAA,GAG5DC,IAAmBH,EAAO,IAAI,MAAM,EAAE,SAAS,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { jsxs as a, jsx as o } from "react/jsx-runtime";
|
2
|
+
import { memo as u, useRef as d, useCallback as f, useEffect as k } from "react";
|
3
|
+
import p from "../../../ui/buttons/clickable/clickable.js";
|
4
|
+
import h from "../../../ui/hooks/use-context-menu-click-handler.js";
|
5
|
+
import C from "../../../ui/layout/flex-view.js";
|
6
|
+
import b from "../../../ui/text/text.js";
|
7
|
+
import { StyledWrapper as w, HWWrapper as W } from "../../cue-cavas-styled.js";
|
8
|
+
import { useCueCanvasActions as H } from "../../hooks/use-cue-canvas-actions.js";
|
9
|
+
import $ from "./homework-menu.js";
|
10
|
+
const v = (m) => {
|
11
|
+
const { activeSidebar: e, setActiveSidebar: n, hwRequests: s } = m, { activeInstance: r } = H(), c = d(null), { menuVisible: i, onMenuClick: t } = h(
|
12
|
+
c,
|
13
|
+
void 0,
|
14
|
+
!0,
|
15
|
+
void 0
|
16
|
+
), l = f(() => {
|
17
|
+
e === "tile" && (r == null || r.toggleTiles(!1)), n(e === "homework" ? void 0 : "homework"), t();
|
18
|
+
}, [e, r, t, n]);
|
19
|
+
return k(() => {
|
20
|
+
(e === "tile" || e === "puzzle") && i && t();
|
21
|
+
}, [e, i, t]), /* @__PURE__ */ a(C, { $position: "relative", children: [
|
22
|
+
/* @__PURE__ */ o(p, { onClick: l, label: "homework help", children: /* @__PURE__ */ o(w, { $active: e === "homework", children: /* @__PURE__ */ o(
|
23
|
+
W,
|
24
|
+
{
|
25
|
+
$background: e === "homework" ? "BLACK" : "WHITE",
|
26
|
+
$borderColor: e === "homework" ? "WHITE" : "BLACK",
|
27
|
+
$borderRadius: 4,
|
28
|
+
$alignItems: "center",
|
29
|
+
$justifyContent: "center",
|
30
|
+
children: /* @__PURE__ */ o(b, { $color: e === "homework" ? "WHITE" : "BLACK", $renderAs: "ub3-bold", children: "HW" })
|
31
|
+
}
|
32
|
+
) }) }),
|
33
|
+
i && /* @__PURE__ */ o($, { onSelect: l, hwRequests: s })
|
34
|
+
] });
|
35
|
+
}, j = u(v);
|
36
|
+
export {
|
37
|
+
j as default
|
38
|
+
};
|
39
|
+
//# sourceMappingURL=homework.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"homework.js","sources":["../../../../../src/features/cue-canvas/sidebar/homework/homework.tsx"],"sourcesContent":["import type { IHomeWorkRequestsContainerProps } from './homework-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useRef } from 'react';\n\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 Text from '../../../ui/text/text';\nimport { StyledWrapper, HWWrapper } from '../../cue-cavas-styled';\nimport { useCueCanvasActions } from '../../hooks/use-cue-canvas-actions';\nimport HomeWorkMenu from './homework-menu';\n\nconst HomeWorkRequestsContainer: FC<IHomeWorkRequestsContainerProps> = props => {\n const { activeSidebar, setActiveSidebar, hwRequests } = props;\n const { activeInstance: cueCanvas } = useCueCanvasActions();\n const homeWorkMenuRef = useRef(null);\n\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(\n homeWorkMenuRef,\n undefined,\n true,\n undefined,\n );\n\n const handleClick = useCallback(() => {\n if (activeSidebar === 'tile') {\n cueCanvas?.toggleTiles(false);\n }\n setActiveSidebar(activeSidebar === 'homework' ? undefined : 'homework');\n onMenuClick();\n }, [activeSidebar, cueCanvas, onMenuClick, setActiveSidebar]);\n\n useEffect(() => {\n if ((activeSidebar === 'tile' || activeSidebar === 'puzzle') && menuVisible) {\n onMenuClick();\n }\n }, [activeSidebar, menuVisible, onMenuClick]);\n\n return (\n <FlexView $position=\"relative\">\n <Clickable onClick={handleClick} label=\"homework help\">\n <StyledWrapper $active={activeSidebar === 'homework'}>\n <HWWrapper\n $background={activeSidebar === 'homework' ? 'BLACK' : 'WHITE'}\n $borderColor={activeSidebar === 'homework' ? 'WHITE' : 'BLACK'}\n $borderRadius={4}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <Text $color={activeSidebar === 'homework' ? 'WHITE' : 'BLACK'} $renderAs=\"ub3-bold\">\n HW\n </Text>\n </HWWrapper>\n </StyledWrapper>\n </Clickable>\n {menuVisible && <HomeWorkMenu onSelect={handleClick} hwRequests={hwRequests} />}\n </FlexView>\n );\n};\n\nexport default memo(HomeWorkRequestsContainer);\n"],"names":["HomeWorkRequestsContainer","props","activeSidebar","setActiveSidebar","hwRequests","cueCanvas","useCueCanvasActions","homeWorkMenuRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","handleClick","useCallback","useEffect","jsxs","FlexView","jsx","Clickable","StyledWrapper","HWWrapper","Text","HomeWorkMenu","Homework","memo"],"mappings":";;;;;;;;;AAaA,MAAMA,IAAiE,CAASC,MAAA;AAC9E,QAAM,EAAE,eAAAC,GAAe,kBAAAC,GAAkB,YAAAC,EAAA,IAAeH,GAClD,EAAE,gBAAgBI,EAAU,IAAIC,EAAoB,GACpDC,IAAkBC,EAAO,IAAI,GAE7B,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,aAAa,SAAY,UAAU,GAC1DQ;KACX,CAACR,GAAeG,GAAWK,GAAaP,CAAgB,CAAC;AAE5D,SAAAW,EAAU,MAAM;AACd,KAAKZ,MAAkB,UAAUA,MAAkB,aAAaO,KAClDC;EAEb,GAAA,CAACR,GAAeO,GAAaC,CAAW,CAAC,GAG1C,gBAAAK,EAACC,GAAS,EAAA,WAAU,YAClB,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAU,SAASN,GAAa,OAAM,iBACrC,UAAC,gBAAAK,EAAAE,GAAA,EAAc,SAASjB,MAAkB,YACxC,UAAA,gBAAAe;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,aAAalB,MAAkB,aAAa,UAAU;AAAA,QACtD,cAAcA,MAAkB,aAAa,UAAU;AAAA,QACvD,eAAe;AAAA,QACf,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAEhB,UAAA,gBAAAe,EAACI,KAAK,QAAQnB,MAAkB,aAAa,UAAU,SAAS,WAAU,YAAW,UAErF,KAAA,CAAA;AAAA,MAAA;AAAA,OAEJ,EACF,CAAA;AAAA,IACCO,KAAe,gBAAAQ,EAACK,GAAa,EAAA,UAAUV,GAAa,YAAAR,GAAwB;AAAA,EAC/E,EAAA,CAAA;AAEJ,GAEemB,IAAAC,EAAKxB,CAAyB;"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { createGetAPI as e } from "@cuemath/rest-api";
|
2
|
+
import { BASE_URL_V3 as r, BASE_URL_V2 as c } from "../../../../../constants/api.js";
|
3
|
+
import { stringify as o } from "../../../../../helpers/query-string.js";
|
4
|
+
const { get: g } = e({
|
5
|
+
getURL: (t, i) => `${r}/curriculum/cueboard-activities/?${o(i)}`
|
6
|
+
}), { useGet: _ } = e({
|
7
|
+
getURL: (t) => `${c}/curriculum/wb-activities/${t}`
|
8
|
+
});
|
9
|
+
export {
|
10
|
+
g as getPuzzles,
|
11
|
+
_ as useGetActivity
|
12
|
+
};
|
13
|
+
//# sourceMappingURL=get-puzzles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-puzzles.js","sources":["../../../../../../src/features/cue-canvas/sidebar/puzzles/api/get-puzzles.ts"],"sourcesContent":["import { createGetAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V2, BASE_URL_V3 } from '../../../../../constants/api';\nimport { stringify } from '../../../../../helpers/query-string';\n\nexport interface IFilterOption {\n applied: boolean;\n code: string;\n name: string;\n}\n\nexport interface IFilterData {\n activity_tiles: IFilterOption[];\n activity_topics: IFilterOption[];\n activity_types: IFilterOption[];\n grades: IFilterOption[];\n search: string;\n}\n\nexport interface IPuzzlesResultData {\n activity_tiles: string[];\n activity_topics: string[];\n activity_types: string[];\n activity_url: string;\n created_on: string;\n created_on_ts: number;\n grades: string[];\n id: string;\n is_live: boolean;\n name: string;\n node_id: string;\n updated_on: string;\n updated_on_ts: number;\n}\nexport interface IPuzzlesResponses {\n filters: IFilterData;\n results: IPuzzlesResultData[];\n}\nexport interface IGetPuzzles {\n activity_tiles?: string[];\n activity_topics?: string[];\n activity_types?: string[];\n grades?: string[];\n search?: string;\n}\n\nexport interface ActivityMetadata {\n code: string;\n description: string | null;\n id: string;\n is_live: boolean;\n name: string;\n priority: number | null;\n type: 'ACTIVITY_TILE' | 'ACTIVITY_TOPIC' | 'ACTIVITY_TYPE' | string;\n}\n\nexport interface IActivityGrade {\n code: string;\n description: string;\n id: string;\n is_live: boolean;\n name: string;\n priority: number;\n type: 'GRADE';\n}\n\nexport interface ActivityData {\n activity_tiles: ActivityMetadata[];\n activity_topics: ActivityMetadata[];\n activity_types: ActivityMetadata[];\n grades: IActivityGrade[];\n worksheet: Worksheet;\n}\n\ninterface Worksheet {\n code: string;\n complete_in: number | null;\n course_type: string;\n description: string | null;\n desmos_calculator_enabled: boolean;\n id: string;\n instructions_ref: string | null;\n is_lesson_v3_enabled: boolean;\n is_live: boolean;\n is_subjective: boolean;\n is_turing: boolean;\n learnosity_activity_ref: string | null;\n name: string;\n points_available: number;\n project_name: string;\n sheet_time: number | null;\n student_instructions_ref: string | null;\n target_accuracy: number;\n thumbnail_url: string | null;\n total_questions: number | null;\n visible_in_mpr: boolean;\n worksheet_type: string;\n}\n\nconst { get: getPuzzles } = createGetAPI<IPuzzlesResponses, IGetPuzzles>({\n getURL: (_, query) => `${BASE_URL_V3}/curriculum/cueboard-activities/?${stringify(query)}`,\n});\n\nconst { useGet: useGetActivity } = createGetAPI<ActivityData>({\n getURL: nodeId => `${BASE_URL_V2}/curriculum/wb-activities/${nodeId}`,\n});\n\nexport { getPuzzles, useGetActivity };\n"],"names":["getPuzzles","createGetAPI","_","query","BASE_URL_V3","stringify","useGetActivity","nodeId","BASE_URL_V2"],"mappings":";;;AAmGA,MAAM,EAAE,KAAKA,EAAW,IAAIC,EAA6C;AAAA,EACvE,QAAQ,CAACC,GAAGC,MAAU,GAAGC,CAAW,oCAAoCC,EAAUF,CAAK,CAAC;AAC1F,CAAC,GAEK,EAAE,QAAQG,EAAe,IAAIL,EAA2B;AAAA,EAC5D,QAAQ,CAAAM,MAAU,GAAGC,CAAW,6BAA6BD,CAAM;AACrE,CAAC;"}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
2
|
+
import { memo as h, useState as u, useCallback as m } from "react";
|
3
|
+
import b from "../../../../assets/line-icons/icons/back.js";
|
4
|
+
import C from "../../../../assets/line-icons/icons/cross.js";
|
5
|
+
import s from "../../../ui/buttons/clickable/clickable.js";
|
6
|
+
import x from "../../../ui/buttons/text-button/text-button.js";
|
7
|
+
import k from "../../../ui/inputs/checkbox-input-list/checkbox-input-list.js";
|
8
|
+
import i from "../../../ui/layout/flex-view.js";
|
9
|
+
import d from "../../../ui/text/text.js";
|
10
|
+
import { MenuContainer as g, CheckboxWrapper as I } from "./puzzles-styled.js";
|
11
|
+
const T = ({
|
12
|
+
closeAllPopups: t,
|
13
|
+
menuItems: c,
|
14
|
+
onFiltersChange: a,
|
15
|
+
type: n
|
16
|
+
}) => {
|
17
|
+
const [o, p] = u(
|
18
|
+
c.filter((r) => r.applied).map((r) => r.name)
|
19
|
+
), f = m((r) => {
|
20
|
+
p(r);
|
21
|
+
}, []), $ = m(() => {
|
22
|
+
a({
|
23
|
+
[n]: o
|
24
|
+
}), t();
|
25
|
+
}, [a, t, o, n]);
|
26
|
+
return /* @__PURE__ */ l(g, { children: [
|
27
|
+
/* @__PURE__ */ l(i, { $justifyContent: "space-between", $flexDirection: "row", $gutterX: 1, $gapX: 0.5, children: [
|
28
|
+
/* @__PURE__ */ l(i, { $flexDirection: "row", $alignItems: "center", $flexColumnGapX: 1, children: [
|
29
|
+
/* @__PURE__ */ e(s, { onClick: t, label: "back", children: /* @__PURE__ */ e(b, { color: "WHITE" }) }),
|
30
|
+
/* @__PURE__ */ l(d, { $color: "WHITE", $renderAs: "eyebrow2", children: [
|
31
|
+
"Select ",
|
32
|
+
n === "grades" ? n : n.split("_")[1],
|
33
|
+
o.length > 0 && /* @__PURE__ */ e("span", { children: ` (${o.length})` })
|
34
|
+
] })
|
35
|
+
] }),
|
36
|
+
/* @__PURE__ */ l(i, { $flexDirection: "row", $alignItems: "center", $flexColumnGapX: 1, children: [
|
37
|
+
/* @__PURE__ */ e(x, { color: "WHITE", label: "Apply", onClick: $ }),
|
38
|
+
/* @__PURE__ */ e(s, { onClick: t, label: "close filter menu", children: /* @__PURE__ */ e(C, { color: "WHITE" }) })
|
39
|
+
] })
|
40
|
+
] }),
|
41
|
+
/* @__PURE__ */ e(I, { $gutterX: 1, $gapX: 1, children: /* @__PURE__ */ e(
|
42
|
+
k,
|
43
|
+
{
|
44
|
+
size: "medium",
|
45
|
+
renderAs: "black-dark",
|
46
|
+
numColumns: 3,
|
47
|
+
options: c.map((r) => ({
|
48
|
+
id: r.name,
|
49
|
+
label: /* @__PURE__ */ e(d, { $renderAs: "ub3-bold", $color: "WHITE", $inline: !0, children: r.name })
|
50
|
+
})),
|
51
|
+
value: o,
|
52
|
+
onChange: f
|
53
|
+
}
|
54
|
+
) })
|
55
|
+
] });
|
56
|
+
}, A = h(T);
|
57
|
+
export {
|
58
|
+
A as default
|
59
|
+
};
|
60
|
+
//# sourceMappingURL=filter-selection-menu.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"filter-selection-menu.js","sources":["../../../../../src/features/cue-canvas/sidebar/puzzles/filter-selection-menu.tsx"],"sourcesContent":["import type { IFilterOption } from './api/get-puzzles';\nimport type { FilterSelectionMenuProps } from './puzzles-type';\n\nimport { memo, useCallback, useState } from 'react';\n\nimport BackIcon from '../../../../assets/line-icons/icons/back';\nimport CrossIcon from '../../../../assets/line-icons/icons/cross';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport CheckboxInputList from '../../../ui/inputs/checkbox-input-list/checkbox-input-list';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport * as Styled from './puzzles-styled';\n\nconst FilterSelectionMenu: React.FC<FilterSelectionMenuProps> = ({\n closeAllPopups,\n menuItems,\n onFiltersChange,\n type,\n}) => {\n const [selectedOptions, setSelectedOptions] = useState<string[]>(\n menuItems.filter((ele: IFilterOption) => ele.applied).map((ele: IFilterOption) => ele.name),\n );\n\n const handleFilterChange = useCallback((selectedCodes: string[]) => {\n setSelectedOptions(selectedCodes);\n }, []);\n\n const handleApplyFilters = useCallback(() => {\n onFiltersChange({\n [type]: selectedOptions,\n });\n\n closeAllPopups();\n }, [onFiltersChange, closeAllPopups, selectedOptions, type]);\n\n return (\n <Styled.MenuContainer>\n <FlexView $justifyContent=\"space-between\" $flexDirection=\"row\" $gutterX={1} $gapX={0.5}>\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexColumnGapX={1}>\n <Clickable onClick={closeAllPopups} label=\"back\">\n <BackIcon color=\"WHITE\" />\n </Clickable>\n <Text $color=\"WHITE\" $renderAs=\"eyebrow2\">\n Select {type === 'grades' ? type : type.split('_')[1]}\n {selectedOptions.length > 0 && <span>{` (${selectedOptions.length})`}</span>}\n </Text>\n </FlexView>\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexColumnGapX={1}>\n <TextButton color=\"WHITE\" label=\"Apply\" onClick={handleApplyFilters} />\n <Clickable onClick={closeAllPopups} label=\"close filter menu\">\n <CrossIcon color=\"WHITE\" />\n </Clickable>\n </FlexView>\n </FlexView>\n <Styled.CheckboxWrapper $gutterX={1} $gapX={1}>\n <CheckboxInputList\n size=\"medium\"\n renderAs=\"black-dark\"\n numColumns={3}\n options={menuItems.map(ele => ({\n id: ele.name,\n label: (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\" $inline>\n {ele.name}\n </Text>\n ),\n }))}\n value={selectedOptions}\n onChange={handleFilterChange}\n />\n </Styled.CheckboxWrapper>\n </Styled.MenuContainer>\n );\n};\n\nexport default memo(FilterSelectionMenu);\n"],"names":["FilterSelectionMenu","closeAllPopups","menuItems","onFiltersChange","type","selectedOptions","setSelectedOptions","useState","ele","handleFilterChange","useCallback","selectedCodes","handleApplyFilters","jsxs","Styled.MenuContainer","FlexView","jsx","Clickable","BackIcon","Text","TextButton","CrossIcon","Styled.CheckboxWrapper","CheckboxInputList","FilterSelectionMenu$1","memo"],"mappings":";;;;;;;;;;AAcA,MAAMA,IAA0D,CAAC;AAAA,EAC/D,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,MAAAC;AACF,MAAM;AACE,QAAA,CAACC,GAAiBC,CAAkB,IAAIC;AAAA,IAC5CL,EAAU,OAAO,CAACM,MAAuBA,EAAI,OAAO,EAAE,IAAI,CAACA,MAAuBA,EAAI,IAAI;AAAA,EAAA,GAGtFC,IAAqBC,EAAY,CAACC,MAA4B;AAClE,IAAAL,EAAmBK,CAAa;AAAA,EAClC,GAAG,CAAE,CAAA,GAECC,IAAqBF,EAAY,MAAM;AAC3B,IAAAP,EAAA;AAAA,MACd,CAACC,CAAI,GAAGC;AAAA,IAAA,CACT,GAEcJ;KACd,CAACE,GAAiBF,GAAgBI,GAAiBD,CAAI,CAAC;AAGzD,SAAA,gBAAAS,EAACC,GAAA,EACC,UAAA;AAAA,IAAC,gBAAAD,EAAAE,GAAA,EAAS,iBAAgB,iBAAgB,gBAAe,OAAM,UAAU,GAAG,OAAO,KACjF,UAAA;AAAA,MAAA,gBAAAF,EAACE,KAAS,gBAAe,OAAM,aAAY,UAAS,iBAAiB,GACnE,UAAA;AAAA,QAAC,gBAAAC,EAAAC,GAAA,EAAU,SAAShB,GAAgB,OAAM,QACxC,UAAC,gBAAAe,EAAAE,GAAA,EAAS,OAAM,QAAA,CAAQ,EAC1B,CAAA;AAAA,QACC,gBAAAL,EAAAM,GAAA,EAAK,QAAO,SAAQ,WAAU,YAAW,UAAA;AAAA,UAAA;AAAA,UAChCf,MAAS,WAAWA,IAAOA,EAAK,MAAM,GAAG,EAAE,CAAC;AAAA,UACnDC,EAAgB,SAAS,KAAK,gBAAAW,EAAC,UAAM,UAAK,KAAAX,EAAgB,MAAM,IAAI,CAAA;AAAA,QAAA,GACvE;AAAA,MAAA,GACF;AAAA,wBACCU,GAAS,EAAA,gBAAe,OAAM,aAAY,UAAS,iBAAiB,GACnE,UAAA;AAAA,QAAA,gBAAAC,EAACI,KAAW,OAAM,SAAQ,OAAM,SAAQ,SAASR,GAAoB;AAAA,QACrE,gBAAAI,EAACC,GAAU,EAAA,SAAShB,GAAgB,OAAM,qBACxC,UAAC,gBAAAe,EAAAK,GAAA,EAAU,OAAM,QAAA,CAAQ,EAC3B,CAAA;AAAA,MAAA,GACF;AAAA,IAAA,GACF;AAAA,sBACCC,GAAA,EAAuB,UAAU,GAAG,OAAO,GAC1C,UAAA,gBAAAN;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAS;AAAA,QACT,YAAY;AAAA,QACZ,SAASrB,EAAU,IAAI,CAAQM,OAAA;AAAA,UAC7B,IAAIA,EAAI;AAAA,UACR,OACG,gBAAAQ,EAAAG,GAAA,EAAK,WAAU,YAAW,QAAO,SAAQ,SAAO,IAC9C,UAAAX,EAAI,KACP,CAAA;AAAA,QAAA,EAEF;AAAA,QACF,OAAOH;AAAA,QACP,UAAUI;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,EACF,EAAA,CAAA;AAEJ,GAEee,IAAAC,EAAKzB,CAAmB;"}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { jsxs as l, Fragment as s, jsx as r } from "react/jsx-runtime";
|
2
|
+
import { memo as a } from "react";
|
3
|
+
import d from "../../../ui/buttons/text-button/text-button.js";
|
4
|
+
import p from "../../../ui/inputs/checkbox-input-list/checkbox-input-list.js";
|
5
|
+
import u from "../../../ui/layout/flex-view.js";
|
6
|
+
import t from "../../../ui/text/text.js";
|
7
|
+
const $ = ({
|
8
|
+
title: n,
|
9
|
+
items: e,
|
10
|
+
selectedItems: i,
|
11
|
+
onChange: m,
|
12
|
+
openSelector: c
|
13
|
+
}) => /* @__PURE__ */ l(s, { children: [
|
14
|
+
/* @__PURE__ */ r(t, { $renderAs: "eyebrow2", $color: "WHITE", children: n }),
|
15
|
+
/* @__PURE__ */ l(u, { $gutterX: 0.5, $gapX: 0.5, $flexRowGapX: 0.25, children: [
|
16
|
+
e.length > 0 && /* @__PURE__ */ r(
|
17
|
+
p,
|
18
|
+
{
|
19
|
+
size: "medium",
|
20
|
+
renderAs: "black-dark",
|
21
|
+
numColumns: 1,
|
22
|
+
options: e.slice(0, 3).map((o) => ({
|
23
|
+
id: o,
|
24
|
+
label: /* @__PURE__ */ r(t, { $renderAs: "ub3-bold", $color: "WHITE", $inline: !0, children: o })
|
25
|
+
})),
|
26
|
+
value: i,
|
27
|
+
onChange: m
|
28
|
+
}
|
29
|
+
),
|
30
|
+
e.length > 3 && /* @__PURE__ */ r(
|
31
|
+
d,
|
32
|
+
{
|
33
|
+
size: "small",
|
34
|
+
color: "GREY_2",
|
35
|
+
onClick: c,
|
36
|
+
label: `${e.length - 3}+ more`
|
37
|
+
}
|
38
|
+
)
|
39
|
+
] })
|
40
|
+
] }), F = a($);
|
41
|
+
export {
|
42
|
+
F as default
|
43
|
+
};
|
44
|
+
//# sourceMappingURL=filters-section.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"filters-section.js","sources":["../../../../../src/features/cue-canvas/sidebar/puzzles/filters-section.tsx"],"sourcesContent":["import type { IFilterSectionProps } from './puzzles-type';\n\nimport React, { memo } from 'react';\n\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport CheckboxInputList from '../../../ui/inputs/checkbox-input-list/checkbox-input-list';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\n\nconst FilterSection: React.FC<IFilterSectionProps> = ({\n title,\n items,\n selectedItems,\n onChange,\n openSelector,\n}) => {\n return (\n <>\n <Text $renderAs=\"eyebrow2\" $color=\"WHITE\">\n {title}\n </Text>\n <FlexView $gutterX={0.5} $gapX={0.5} $flexRowGapX={0.25}>\n {items.length > 0 && (\n <CheckboxInputList\n size=\"medium\"\n renderAs=\"black-dark\"\n numColumns={1}\n options={items.slice(0, 3).map(ele => ({\n id: ele,\n label: (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\" $inline>\n {ele}\n </Text>\n ),\n }))}\n value={selectedItems}\n onChange={onChange}\n />\n )}\n {items.length > 3 && (\n <TextButton\n size=\"small\"\n color=\"GREY_2\"\n onClick={openSelector}\n label={`${items.length - 3}+ more`}\n />\n )}\n </FlexView>\n </>\n );\n};\n\nexport default memo(FilterSection);\n"],"names":["FilterSection","title","items","selectedItems","onChange","openSelector","jsxs","Fragment","jsx","Text","FlexView","CheckboxInputList","ele","TextButton","FilterSection$1","memo"],"mappings":";;;;;;AASA,MAAMA,IAA+C,CAAC;AAAA,EACpD,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AACF,MAGM,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,EAAA,gBAAAC,EAACC,GAAK,EAAA,WAAU,YAAW,QAAO,SAC/B,UACHR,GAAA;AAAA,oBACCS,GAAS,EAAA,UAAU,KAAK,OAAO,KAAK,cAAc,MAChD,UAAA;AAAA,IAAAR,EAAM,SAAS,KACd,gBAAAM;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAS;AAAA,QACT,YAAY;AAAA,QACZ,SAAST,EAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAAQU,OAAA;AAAA,UACrC,IAAIA;AAAA,UACJ,yBACGH,GAAK,EAAA,WAAU,YAAW,QAAO,SAAQ,SAAO,IAC9C,UACHG,EAAA,CAAA;AAAA,QAAA,EAEF;AAAA,QACF,OAAOT;AAAA,QACP,UAAAC;AAAA,MAAA;AAAA,IACF;AAAA,IAEDF,EAAM,SAAS,KACd,gBAAAM;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAASR;AAAA,QACT,OAAO,GAAGH,EAAM,SAAS,CAAC;AAAA,MAAA;AAAA,IAC5B;AAAA,EAAA,GAEJ;AACF,EAAA,CAAA,GAIWY,IAAAC,EAAKf,CAAa;"}
|
@@ -0,0 +1,107 @@
|
|
1
|
+
import { jsxs as h, Fragment as B, jsx as o } from "react/jsx-runtime";
|
2
|
+
import { memo as L, useState as T, useMemo as u, useCallback as r, useEffect as g } from "react";
|
3
|
+
import I from "../../../ui/buttons/text-button/text-button.js";
|
4
|
+
import A from "../../../ui/layout/flex-view.js";
|
5
|
+
import M from "../../../ui/tab/tab.js";
|
6
|
+
import b from "../../../ui/text/text.js";
|
7
|
+
import w from "./filters-section.js";
|
8
|
+
import { SelectedGrades as R } from "./puzzles-styled.js";
|
9
|
+
import { GRADE_DISPLAY_NAMES as Y } from "./utils.js";
|
10
|
+
const l = (n) => n.filter((t) => t.applied).map((t) => t.name), $ = (n) => n.map((t) => t.name), q = (n) => {
|
11
|
+
const { handleFiltersChange: t, filterGrades: f, filterTypes: i, filterTiles: c, filterTopics: a, togglePopup: s } = n, [d, x] = T(l(f)), [F, y] = T(l(c)), [G, S] = T(l(a)), [p, E] = T(l(i)), P = u(() => $(i), [i]), W = u(() => $(c), [c]), D = u(() => $(a), [a]), H = r(
|
12
|
+
(e) => {
|
13
|
+
const m = p.includes(e) ? p.filter((X) => X !== e) : [...p, e];
|
14
|
+
E(m), t({
|
15
|
+
activity_types: m
|
16
|
+
});
|
17
|
+
},
|
18
|
+
[t, p]
|
19
|
+
), _ = r(
|
20
|
+
(e) => {
|
21
|
+
y(e), t({
|
22
|
+
activity_tiles: e
|
23
|
+
});
|
24
|
+
},
|
25
|
+
[t]
|
26
|
+
), k = r(
|
27
|
+
(e) => {
|
28
|
+
S(e), t({
|
29
|
+
activity_topics: e
|
30
|
+
});
|
31
|
+
},
|
32
|
+
[t]
|
33
|
+
), C = r(() => {
|
34
|
+
s("grades");
|
35
|
+
}, [s]), j = r(() => {
|
36
|
+
s("tiles");
|
37
|
+
}, [s]), v = r(() => {
|
38
|
+
s("topics");
|
39
|
+
}, [s]);
|
40
|
+
return g(() => {
|
41
|
+
x(l(f));
|
42
|
+
}, [f]), g(() => {
|
43
|
+
y(l(c));
|
44
|
+
}, [c]), g(() => {
|
45
|
+
S(l(a));
|
46
|
+
}, [a]), g(() => {
|
47
|
+
E(l(i));
|
48
|
+
}, [i]), /* @__PURE__ */ h(B, { children: [
|
49
|
+
/* @__PURE__ */ o(b, { $renderAs: "eyebrow2", $color: "WHITE", children: "GRADE" }),
|
50
|
+
/* @__PURE__ */ h(
|
51
|
+
A,
|
52
|
+
{
|
53
|
+
$flexDirection: "row",
|
54
|
+
$justifyContent: "space-between",
|
55
|
+
$alignItems: "center",
|
56
|
+
$gutterX: 0.5,
|
57
|
+
$gapX: 0.25,
|
58
|
+
$marginBottomX: 0.5,
|
59
|
+
children: [
|
60
|
+
d.length ? /* @__PURE__ */ o(R, { $renderAs: "eyebrow2", $color: "WHITE", children: d.map((e, m) => /* @__PURE__ */ h("span", { children: [
|
61
|
+
Y[e],
|
62
|
+
m < d.length - 1 ? ", " : ""
|
63
|
+
] }, e)) }) : /* @__PURE__ */ o(I, { color: "WHITE", onClick: C, label: "Select Grade" }),
|
64
|
+
d.length > 0 && /* @__PURE__ */ o(I, { color: "WHITE", onClick: C, label: "Edit" })
|
65
|
+
]
|
66
|
+
}
|
67
|
+
),
|
68
|
+
/* @__PURE__ */ o(b, { $renderAs: "eyebrow2", $color: "WHITE", children: "TYPE" }),
|
69
|
+
/* @__PURE__ */ o(A, { $flexDirection: "row", $flexWrap: !0, children: P.map((e) => /* @__PURE__ */ o(
|
70
|
+
M,
|
71
|
+
{
|
72
|
+
$width: "fit-content",
|
73
|
+
$renderAs: "secondary",
|
74
|
+
label: e,
|
75
|
+
$selected: p.includes(e),
|
76
|
+
shape: "square",
|
77
|
+
$size: "small",
|
78
|
+
onClick: () => H(e)
|
79
|
+
},
|
80
|
+
e
|
81
|
+
)) }),
|
82
|
+
/* @__PURE__ */ o(
|
83
|
+
w,
|
84
|
+
{
|
85
|
+
title: "TOPIC",
|
86
|
+
items: D,
|
87
|
+
selectedItems: G,
|
88
|
+
onChange: k,
|
89
|
+
openSelector: v
|
90
|
+
}
|
91
|
+
),
|
92
|
+
/* @__PURE__ */ o(
|
93
|
+
w,
|
94
|
+
{
|
95
|
+
title: "TILE",
|
96
|
+
items: W,
|
97
|
+
onChange: _,
|
98
|
+
selectedItems: F,
|
99
|
+
openSelector: j
|
100
|
+
}
|
101
|
+
)
|
102
|
+
] });
|
103
|
+
}, ee = L(q);
|
104
|
+
export {
|
105
|
+
ee as default
|
106
|
+
};
|
107
|
+
//# sourceMappingURL=filters.js.map
|