@cuemath/leap 3.4.6-m-t → 3.4.6

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 (27) hide show
  1. package/dist/features/stickers/hooks/use-handle-sticker-send.js +44 -0
  2. package/dist/features/stickers/hooks/use-handle-sticker-send.js.map +1 -0
  3. package/dist/features/stickers/hooks/use-stickers-error-logger.js +17 -0
  4. package/dist/features/stickers/hooks/use-stickers-error-logger.js.map +1 -0
  5. package/dist/features/stickers/{sticker-selector/hooks → hooks}/use-stickers-journey/use-stickers-journey.js +7 -7
  6. package/dist/features/stickers/hooks/use-stickers-journey/use-stickers-journey.js.map +1 -0
  7. package/dist/features/stickers/sticker-selector/comps/sticker/sticker.js +27 -26
  8. package/dist/features/stickers/sticker-selector/comps/sticker/sticker.js.map +1 -1
  9. package/dist/features/stickers/sticker-selector/sticker-selector.js +12 -12
  10. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -1
  11. package/dist/features/stickers/stickers-analytics-events.js +8 -0
  12. package/dist/features/stickers/stickers-analytics-events.js.map +1 -0
  13. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js +52 -119
  14. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +1 -1
  15. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js +17 -21
  16. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +1 -1
  17. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js +27 -33
  18. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js.map +1 -1
  19. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  20. package/dist/features/worksheet/worksheet/worksheet.js +153 -161
  21. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  22. package/dist/index.d.ts +0 -4
  23. package/dist/index.js +2 -2
  24. package/package.json +1 -1
  25. package/dist/features/stickers/sticker-selector/hooks/use-handle-sticker-send.js +0 -33
  26. package/dist/features/stickers/sticker-selector/hooks/use-handle-sticker-send.js.map +0 -1
  27. package/dist/features/stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js.map +0 -1
@@ -0,0 +1,44 @@
1
+ import { useCallback as i } from "react";
2
+ import m from "../../communication/hooks/use-inclass-message-broker/use-inclass-message-broker.js";
3
+ import { useUIContext as E } from "../../ui/context/context.js";
4
+ import { STICKERS_ANALYTICS_EVENT as d } from "../stickers-analytics-events.js";
5
+ import { useStickers as k } from "../stickers-effects/hooks/use-stickers.js";
6
+ import { useStickersErrorLogger as f } from "./use-stickers-error-logger.js";
7
+ const u = (t) => {
8
+ const { publish: e } = m({
9
+ studentClassroomId: t
10
+ }), { onEvent: c } = E(), n = f(), { showSticker: s } = k();
11
+ return i(
12
+ (o, S) => {
13
+ const a = {
14
+ classroom_id: t,
15
+ sticker: o.id
16
+ };
17
+ try {
18
+ const r = {
19
+ message: {
20
+ data: {
21
+ selectedSticker: {
22
+ id: o.id,
23
+ name: o.name
24
+ },
25
+ effectId: S
26
+ }
27
+ },
28
+ type: "STICKERS"
29
+ };
30
+ s(r), e == null || e({
31
+ eventName: "STICKERS",
32
+ eventPayload: r
33
+ }), c(d.STICKER_SENT, a);
34
+ } catch (r) {
35
+ n(r, { baseEventData: a });
36
+ }
37
+ },
38
+ [n, e, s, t, c]
39
+ );
40
+ };
41
+ export {
42
+ u as useHandleStickerSend
43
+ };
44
+ //# sourceMappingURL=use-handle-sticker-send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-handle-sticker-send.js","sources":["../../../../src/features/stickers/hooks/use-handle-sticker-send.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nimport useInClassMessageBroker from '../../communication/hooks/use-inclass-message-broker/use-inclass-message-broker';\nimport { useUIContext } from '../../ui/context/context';\nimport { STICKERS_ANALYTICS_EVENT } from '../stickers-analytics-events';\nimport { useStickers } from '../stickers-effects/hooks/use-stickers';\nimport type { IStickerData, TStickerAnimationEffects, TStickersPayload } from '../stickers-types';\nimport { useStickersErrorLogger } from './use-stickers-error-logger';\n\nexport const useHandleStickerSend = (studentClassroomId?: string) => {\n const { publish } = useInClassMessageBroker({\n studentClassroomId,\n });\n\n const { onEvent: trackEvent } = useUIContext();\n const logError = useStickersErrorLogger();\n\n const { showSticker } = useStickers();\n\n const sendSticker = useCallback(\n (sticker: IStickerData, effect: TStickerAnimationEffects) => {\n const baseEventData = {\n classroom_id: studentClassroomId,\n sticker: sticker.id,\n };\n\n try {\n const payload: TStickersPayload = {\n message: {\n data: {\n selectedSticker: {\n id: sticker.id,\n name: sticker.name,\n },\n effectId: effect,\n },\n },\n type: 'STICKERS',\n };\n\n showSticker(payload);\n\n publish?.({\n eventName: 'STICKERS',\n eventPayload: payload,\n });\n\n trackEvent(STICKERS_ANALYTICS_EVENT.STICKER_SENT, baseEventData);\n } catch (error) {\n logError(error, { baseEventData });\n }\n },\n [logError, publish, showSticker, studentClassroomId, trackEvent],\n );\n\n return sendSticker;\n};\n"],"names":["useHandleStickerSend","studentClassroomId","publish","useInClassMessageBroker","trackEvent","useUIContext","logError","useStickersErrorLogger","showSticker","useStickers","useCallback","sticker","effect","baseEventData","payload","STICKERS_ANALYTICS_EVENT","error"],"mappings":";;;;;;AASa,MAAAA,IAAuB,CAACC,MAAgC;AAC7D,QAAA,EAAE,SAAAC,EAAQ,IAAIC,EAAwB;AAAA,IAC1C,oBAAAF;AAAA,EAAA,CACD,GAEK,EAAE,SAASG,EAAW,IAAIC,EAAa,GACvCC,IAAWC,KAEX,EAAE,aAAAC,MAAgBC;AAsCjB,SApCaC;AAAA,IAClB,CAACC,GAAuBC,MAAqC;AAC3D,YAAMC,IAAgB;AAAA,QACpB,cAAcZ;AAAA,QACd,SAASU,EAAQ;AAAA,MAAA;AAGf,UAAA;AACF,cAAMG,IAA4B;AAAA,UAChC,SAAS;AAAA,YACP,MAAM;AAAA,cACJ,iBAAiB;AAAA,gBACf,IAAIH,EAAQ;AAAA,gBACZ,MAAMA,EAAQ;AAAA,cAChB;AAAA,cACA,UAAUC;AAAA,YACZ;AAAA,UACF;AAAA,UACA,MAAM;AAAA,QAAA;AAGR,QAAAJ,EAAYM,CAAO,GAETZ,KAAA,QAAAA,EAAA;AAAA,UACR,WAAW;AAAA,UACX,cAAcY;AAAA,QAAA,IAGLV,EAAAW,EAAyB,cAAcF,CAAa;AAAA,eACxDG,GAAO;AACL,QAAAV,EAAAU,GAAO,EAAE,eAAAH,EAAA,CAAe;AAAA,MACnC;AAAA,IACF;AAAA,IACA,CAACP,GAAUJ,GAASM,GAAaP,GAAoBG,CAAU;AAAA,EAAA;AAInE;"}
@@ -0,0 +1,17 @@
1
+ import { useUIContext as E } from "../../ui/context/context.js";
2
+ import { STICKERS_ANALYTICS_EVENT as i } from "../stickers-analytics-events.js";
3
+ function f() {
4
+ const { onEvent: s } = E();
5
+ return (t, o) => {
6
+ let e = "Unknown error", n;
7
+ t instanceof Error ? (e = t.message, n = t.stack) : typeof t == "string" && (e = t), s(i.STICKER_LOG_ERROR, {
8
+ message: e,
9
+ stack: n,
10
+ ...o
11
+ });
12
+ };
13
+ }
14
+ export {
15
+ f as useStickersErrorLogger
16
+ };
17
+ //# sourceMappingURL=use-stickers-error-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stickers-error-logger.js","sources":["../../../../src/features/stickers/hooks/use-stickers-error-logger.ts"],"sourcesContent":["import { useUIContext } from '../../ui/context/context';\nimport { STICKERS_ANALYTICS_EVENT } from '../stickers-analytics-events';\n\nexport function useStickersErrorLogger() {\n const { onEvent: trackEvent } = useUIContext();\n\n return (error: unknown, context?: Record<string, unknown>) => {\n let message = 'Unknown error';\n let stack: string | undefined;\n\n if (error instanceof Error) {\n message = error.message;\n stack = error.stack;\n } else if (typeof error === 'string') {\n message = error;\n }\n\n trackEvent(STICKERS_ANALYTICS_EVENT.STICKER_LOG_ERROR, {\n message,\n stack,\n ...context,\n });\n };\n}\n"],"names":["useStickersErrorLogger","trackEvent","useUIContext","error","context","message","stack","STICKERS_ANALYTICS_EVENT"],"mappings":";;AAGO,SAASA,IAAyB;AACvC,QAAM,EAAE,SAASC,EAAW,IAAIC,EAAa;AAEtC,SAAA,CAACC,GAAgBC,MAAsC;AAC5D,QAAIC,IAAU,iBACVC;AAEJ,IAAIH,aAAiB,SACnBE,IAAUF,EAAM,SAChBG,IAAQH,EAAM,SACL,OAAOA,KAAU,aAChBE,IAAAF,IAGZF,EAAWM,EAAyB,mBAAmB;AAAA,MACrD,SAAAF;AAAA,MACA,OAAAC;AAAA,MACA,GAAGF;AAAA,IAAA,CACJ;AAAA,EAAA;AAEL;"}
@@ -1,12 +1,12 @@
1
1
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
2
  import { useCallback as m, useMemo as h } from "react";
3
- import { JOURNEY_ID_TEACHER as t } from "../../../../journey/journey-id/journey-id-teacher.js";
4
- import { IndicatorType as C } from "../../../../journey/use-journey/constants.js";
5
- import { useJourney as T } from "../../../../journey/use-journey/use-journey.js";
6
- import y from "../../../../ui/buttons/button/button.js";
7
- import O from "../../../../ui/layout/flex-view.js";
8
- import S from "../../../../ui/separator/separator.js";
9
- import u from "../../../../ui/text/text.js";
3
+ import { JOURNEY_ID_TEACHER as t } from "../../../journey/journey-id/journey-id-teacher.js";
4
+ import { IndicatorType as C } from "../../../journey/use-journey/constants.js";
5
+ import { useJourney as T } from "../../../journey/use-journey/use-journey.js";
6
+ import y from "../../../ui/buttons/button/button.js";
7
+ import O from "../../../ui/layout/flex-view.js";
8
+ import S from "../../../ui/separator/separator.js";
9
+ import u from "../../../ui/text/text.js";
10
10
  const x = ({
11
11
  triggerRef: o,
12
12
  triggerElement: n,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stickers-journey.js","sources":["../../../../../src/features/stickers/hooks/use-stickers-journey/use-stickers-journey.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { JOURNEY_ID_TEACHER } from '../../../journey/journey-id/journey-id-teacher';\nimport { IndicatorType } from '../../../journey/use-journey/constants';\nimport { useJourney } from '../../../journey/use-journey/use-journey';\nimport type { IArrowTooltipProps } from '../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport type { IUseTeacherStickersJourneyProps } from './use-stickers-journey-types';\n\nexport const useStickersJourney = ({\n triggerRef,\n triggerElement,\n tooltipConfig,\n}: IUseTeacherStickersJourneyProps) => {\n const { setJourney, nextCoachmark, endJourney } = useJourney();\n\n const endTeacherStickersOnboarding = useCallback(() => {\n endJourney(JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY);\n }, [endJourney]);\n\n const startTeacherStickersJourney = useCallback(() => {\n if (!triggerRef.current) return;\n\n const indicatorPayload = {\n position: tooltipConfig.position,\n tooltipXCoOrdinates: tooltipConfig.tooltipXCoOrdinates,\n tooltipYCoOrdinates: tooltipConfig.tooltipYCoOrdinates,\n arrowXCoOrdinates: tooltipConfig.arrowXCoOrdinates,\n arrowYCoOrdinates: tooltipConfig.arrowYCoOrdinates,\n borderColor: 'BLACK',\n arrowColor: 'BLACK',\n backgroundColor: 'PURPLE_4',\n tooltipItem: (\n <FlexView>\n <FlexView>\n <Text\n $renderOnMobileAs=\"ab3\"\n $renderAs=\"ab3\"\n as=\"span\"\n $inline={true}\n $whiteSpace=\"normal\"\n >\n <Text $renderAs=\"ab3-bold\" as=\"span\" $inline={true}>\n New Stickers\n </Text>{' '}\n - Use them to celebrate little moments of joy!\n </Text>\n </FlexView>\n <Separator height={10} />\n <Button\n renderAs=\"secondary\"\n label=\"Got It\"\n size=\"xsmall\"\n width=\"50%\"\n onClick={endTeacherStickersOnboarding}\n />\n </FlexView>\n ),\n } as IArrowTooltipProps;\n\n setJourney(\n JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY,\n [\n {\n originalElementToHighlightRef: triggerRef,\n type: IndicatorType.TOOLTIP,\n elementToHighlight: triggerElement,\n indicator: indicatorPayload,\n },\n ],\n undefined,\n false,\n );\n\n nextCoachmark(JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY);\n }, [\n triggerRef,\n triggerElement,\n tooltipConfig.position,\n tooltipConfig.tooltipXCoOrdinates,\n tooltipConfig.tooltipYCoOrdinates,\n tooltipConfig.arrowXCoOrdinates,\n tooltipConfig.arrowYCoOrdinates,\n endTeacherStickersOnboarding,\n setJourney,\n nextCoachmark,\n ]);\n\n const stickerJourney = useMemo(\n () => ({\n startTeacherStickersJourney,\n }),\n [startTeacherStickersJourney],\n );\n\n return stickerJourney;\n};\n"],"names":["useStickersJourney","triggerRef","triggerElement","tooltipConfig","setJourney","nextCoachmark","endJourney","useJourney","endTeacherStickersOnboarding","useCallback","JOURNEY_ID_TEACHER","startTeacherStickersJourney","indicatorPayload","FlexView","jsx","jsxs","Text","Separator","Button","IndicatorType","useMemo"],"mappings":";;;;;;;;;AAYO,MAAMA,IAAqB,CAAC;AAAA,EACjC,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AACF,MAAuC;AACrC,QAAM,EAAE,YAAAC,GAAY,eAAAC,GAAe,YAAAC,MAAeC,EAAW,GAEvDC,IAA+BC,EAAY,MAAM;AACrD,IAAAH,EAAWI,EAAmB,sBAAsB;AAAA,EAAA,GACnD,CAACJ,CAAU,CAAC,GAETK,IAA8BF,EAAY,MAAM;AAChD,QAAA,CAACR,EAAW,QAAS;AAEzB,UAAMW,IAAmB;AAAA,MACvB,UAAUT,EAAc;AAAA,MACxB,qBAAqBA,EAAc;AAAA,MACnC,qBAAqBA,EAAc;AAAA,MACnC,mBAAmBA,EAAc;AAAA,MACjC,mBAAmBA,EAAc;AAAA,MACjC,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,+BACGU,GACC,EAAA,UAAA;AAAA,QAAA,gBAAAC,EAACD,GACC,EAAA,UAAA,gBAAAE;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,mBAAkB;AAAA,YAClB,WAAU;AAAA,YACV,IAAG;AAAA,YACH,SAAS;AAAA,YACT,aAAY;AAAA,YAEZ,UAAA;AAAA,cAAA,gBAAAF,EAACE,KAAK,WAAU,YAAW,IAAG,QAAO,SAAS,IAAM,UAEpD,eAAA,CAAA;AAAA,cAAQ;AAAA,cAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAGhB;AAAA,QACA,gBAAAF,EAACG,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,QACvB,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,OAAM;AAAA,YACN,MAAK;AAAA,YACL,OAAM;AAAA,YACN,SAASV;AAAA,UAAA;AAAA,QACX;AAAA,MAAA,GACF;AAAA,IAAA;AAIJ,IAAAJ;AAAA,MACEM,EAAmB;AAAA,MACnB;AAAA,QACE;AAAA,UACE,+BAA+BT;AAAA,UAC/B,MAAMkB,EAAc;AAAA,UACpB,oBAAoBjB;AAAA,UACpB,WAAWU;AAAA,QACb;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GAGFP,EAAcK,EAAmB,sBAAsB;AAAA,EAAA,GACtD;AAAA,IACDT;AAAA,IACAC;AAAA,IACAC,EAAc;AAAA,IACdA,EAAc;AAAA,IACdA,EAAc;AAAA,IACdA,EAAc;AAAA,IACdA,EAAc;AAAA,IACdK;AAAA,IACAJ;AAAA,IACAC;AAAA,EAAA,CACD;AASM,SAPgBe;AAAA,IACrB,OAAO;AAAA,MACL,6BAAAT;AAAA,IAAA;AAAA,IAEF,CAACA,CAA2B;AAAA,EAAA;AAIhC;"}
@@ -1,49 +1,50 @@
1
- import { jsxs as $, jsx as s } from "react/jsx-runtime";
2
- import { memo as E, useState as u, useRef as k, useCallback as r } from "react";
3
- import g from "../../../../ui/lottie-animation/lottie-animation.js";
4
- import { StickerContainer as j, StaticEmoji as C, LottieContainer as R } from "./sticker-styled.js";
5
- const x = {
1
+ import { jsxs as L, jsx as s } from "react/jsx-runtime";
2
+ import { memo as $, useState as f, useRef as k, useCallback as r } from "react";
3
+ import j from "../../../../ui/lottie-animation/lottie-animation.js";
4
+ import { useStickersErrorLogger as C } from "../../../hooks/use-stickers-error-logger.js";
5
+ import { StickerContainer as R, StaticEmoji as x, LottieContainer as y } from "./sticker-styled.js";
6
+ const A = {
6
7
  renderer: "canvas"
7
- }, y = ({ emoji: f, lottieUrl: a, size: n = 48, onClick: h, disabled: t = !1 }) => {
8
- const [c, d] = u(!1), [i, l] = u("idle"), o = k(null), v = r(() => {
8
+ }, H = ({ emoji: h, lottieUrl: a, size: n = 48, onClick: S, disabled: t = !1 }) => {
9
+ const [c, l] = f(!1), [i, d] = f("idle"), o = k(null), m = C(), v = r(() => {
9
10
  var e;
10
- l("loaded"), (e = o.current) == null || e.play();
11
- }, []), S = r(() => {
12
- l("error");
11
+ d("loaded"), (e = o.current) == null || e.play();
13
12
  }, []), p = r(() => {
13
+ d("error"), m("Error in loading the lottie");
14
+ }, [m]), E = r(() => {
14
15
  var e;
15
- d(!0), i === "loaded" && ((e = o.current) == null || e.play());
16
- }, [i]), L = r(() => {
16
+ l(!0), i === "loaded" && ((e = o.current) == null || e.play());
17
+ }, [i]), g = r(() => {
17
18
  var e;
18
- d(!1), (e = o.current) == null || e.goToAndStop(0, !0);
19
- }, []), m = c && i === "loaded";
20
- return /* @__PURE__ */ $(
21
- j,
19
+ l(!1), (e = o.current) == null || e.goToAndStop(0, !0);
20
+ }, []), u = c && i === "loaded";
21
+ return /* @__PURE__ */ L(
22
+ R,
22
23
  {
23
24
  $size: n,
24
25
  $disabled: t,
25
- onPointerEnter: t ? void 0 : p,
26
- onPointerLeave: t ? void 0 : L,
27
- onClick: t ? void 0 : h,
26
+ onPointerEnter: t ? void 0 : E,
27
+ onPointerLeave: t ? void 0 : g,
28
+ onClick: t ? void 0 : S,
28
29
  children: [
29
- /* @__PURE__ */ s(C, { $size: n, $visible: !m, children: f }),
30
- /* @__PURE__ */ s(R, { $size: n, $visible: m, children: c && a && /* @__PURE__ */ s(
31
- g,
30
+ /* @__PURE__ */ s(x, { $size: n, $visible: !u, children: h }),
31
+ /* @__PURE__ */ s(y, { $size: n, $visible: u, children: c && a && /* @__PURE__ */ s(
32
+ j,
32
33
  {
33
34
  ref: o,
34
35
  src: a,
35
36
  width: "100%",
36
37
  height: "100%",
37
- settings: x,
38
+ settings: A,
38
39
  onRender: v,
39
- onError: S
40
+ onError: p
40
41
  }
41
42
  ) })
42
43
  ]
43
44
  }
44
45
  );
45
- }, b = E(y);
46
+ }, I = $(H);
46
47
  export {
47
- b as default
48
+ I as default
48
49
  };
49
50
  //# sourceMappingURL=sticker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sticker.js","sources":["../../../../../../src/features/stickers/sticker-selector/comps/sticker/sticker.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { memo, useCallback, useRef, useState } from 'react';\n\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport type { ILottieAnimationRef } from '../../../../ui/lottie-animation/types';\nimport * as Styled from './sticker-styled';\nimport type { IStickerProps } from './sticker-types';\n\nconst renderSettings = {\n renderer: 'canvas' as const,\n};\n\nconst Sticker: FC<IStickerProps> = ({ emoji, lottieUrl, size = 48, onClick, disabled = false }) => {\n const [isHovered, setIsHovered] = useState(false);\n const [lottieState, setLottieState] = useState<'idle' | 'loaded' | 'error'>('idle');\n const lottieRef = useRef<ILottieAnimationRef>(null);\n\n const handleLottieReady = useCallback(() => {\n setLottieState('loaded');\n lottieRef.current?.play();\n }, []);\n\n const handleLottieError = useCallback(() => {\n setLottieState('error');\n }, []);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n\n if (lottieState === 'loaded') {\n lottieRef.current?.play();\n }\n }, [lottieState]);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n lottieRef.current?.goToAndStop(0, true);\n }, []);\n\n const hideStaticEmoji = isHovered && lottieState === 'loaded';\n\n return (\n <Styled.StickerContainer\n $size={size}\n $disabled={disabled}\n onPointerEnter={disabled ? undefined : handleMouseEnter}\n onPointerLeave={disabled ? undefined : handleMouseLeave}\n onClick={disabled ? undefined : onClick}\n >\n <Styled.StaticEmoji $size={size} $visible={!hideStaticEmoji}>\n {emoji}\n </Styled.StaticEmoji>\n\n <Styled.LottieContainer $size={size} $visible={hideStaticEmoji}>\n {isHovered && lottieUrl && (\n <LottieAnimation\n ref={lottieRef}\n src={lottieUrl}\n width=\"100%\"\n height=\"100%\"\n settings={renderSettings}\n onRender={handleLottieReady}\n onError={handleLottieError}\n />\n )}\n </Styled.LottieContainer>\n </Styled.StickerContainer>\n );\n};\n\nexport default memo(Sticker);\n"],"names":["renderSettings","Sticker","emoji","lottieUrl","size","onClick","disabled","isHovered","setIsHovered","useState","lottieState","setLottieState","lottieRef","useRef","handleLottieReady","useCallback","_a","handleLottieError","handleMouseEnter","handleMouseLeave","hideStaticEmoji","jsxs","Styled.StickerContainer","jsx","Styled.StaticEmoji","Styled.LottieContainer","LottieAnimation","Sticker$1","memo"],"mappings":";;;;AAQA,MAAMA,IAAiB;AAAA,EACrB,UAAU;AACZ,GAEMC,IAA6B,CAAC,EAAE,OAAAC,GAAO,WAAAC,GAAW,MAAAC,IAAO,IAAI,SAAAC,GAAS,UAAAC,IAAW,SAAY;AACjG,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAaC,CAAc,IAAIF,EAAsC,MAAM,GAC5EG,IAAYC,EAA4B,IAAI,GAE5CC,IAAoBC,EAAY,MAAM;;AAC1C,IAAAJ,EAAe,QAAQ,IACvBK,IAAAJ,EAAU,YAAV,QAAAI,EAAmB;AAAA,EACrB,GAAG,CAAE,CAAA,GAECC,IAAoBF,EAAY,MAAM;AAC1C,IAAAJ,EAAe,OAAO;AAAA,EACxB,GAAG,CAAE,CAAA,GAECO,IAAmBH,EAAY,MAAM;;AACzC,IAAAP,EAAa,EAAI,GAEbE,MAAgB,cAClBM,IAAAJ,EAAU,YAAV,QAAAI,EAAmB;AAAA,EACrB,GACC,CAACN,CAAW,CAAC,GAEVS,IAAmBJ,EAAY,MAAM;;AACzC,IAAAP,EAAa,EAAK,IACRQ,IAAAJ,EAAA,YAAA,QAAAI,EAAS,YAAY,GAAG;AAAA,EACpC,GAAG,CAAE,CAAA,GAECI,IAAkBb,KAAaG,MAAgB;AAGnD,SAAA,gBAAAW;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,OAAOlB;AAAA,MACP,WAAWE;AAAA,MACX,gBAAgBA,IAAW,SAAYY;AAAA,MACvC,gBAAgBZ,IAAW,SAAYa;AAAA,MACvC,SAASb,IAAW,SAAYD;AAAA,MAEhC,UAAA;AAAA,QAAC,gBAAAkB,EAAAC,GAAA,EAAmB,OAAOpB,GAAM,UAAU,CAACgB,GACzC,UACHlB,GAAA;AAAA,QAEA,gBAAAqB,EAACE,GAAA,EAAuB,OAAOrB,GAAM,UAAUgB,GAC5C,UAAAb,KAAaJ,KACZ,gBAAAoB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,KAAKd;AAAA,YACL,KAAKT;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,UAAUH;AAAA,YACV,UAAUc;AAAA,YACV,SAASG;AAAA,UAAA;AAAA,QAAA,GAGf;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEeU,IAAAC,EAAK3B,CAAO;"}
1
+ {"version":3,"file":"sticker.js","sources":["../../../../../../src/features/stickers/sticker-selector/comps/sticker/sticker.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { memo, useCallback, useRef, useState } from 'react';\n\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport type { ILottieAnimationRef } from '../../../../ui/lottie-animation/types';\nimport { useStickersErrorLogger } from '../../../hooks/use-stickers-error-logger';\nimport * as Styled from './sticker-styled';\nimport type { IStickerProps } from './sticker-types';\n\nconst renderSettings = {\n renderer: 'canvas' as const,\n};\n\nconst Sticker: FC<IStickerProps> = ({ emoji, lottieUrl, size = 48, onClick, disabled = false }) => {\n const [isHovered, setIsHovered] = useState(false);\n const [lottieState, setLottieState] = useState<'idle' | 'loaded' | 'error'>('idle');\n const lottieRef = useRef<ILottieAnimationRef>(null);\n\n const logError = useStickersErrorLogger();\n\n const handleLottieReady = useCallback(() => {\n setLottieState('loaded');\n lottieRef.current?.play();\n }, []);\n\n const handleLottieError = useCallback(() => {\n setLottieState('error');\n logError('Error in loading the lottie');\n }, [logError]);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n\n if (lottieState === 'loaded') {\n lottieRef.current?.play();\n }\n }, [lottieState]);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n lottieRef.current?.goToAndStop(0, true);\n }, []);\n\n const hideStaticEmoji = isHovered && lottieState === 'loaded';\n\n return (\n <Styled.StickerContainer\n $size={size}\n $disabled={disabled}\n onPointerEnter={disabled ? undefined : handleMouseEnter}\n onPointerLeave={disabled ? undefined : handleMouseLeave}\n onClick={disabled ? undefined : onClick}\n >\n <Styled.StaticEmoji $size={size} $visible={!hideStaticEmoji}>\n {emoji}\n </Styled.StaticEmoji>\n\n <Styled.LottieContainer $size={size} $visible={hideStaticEmoji}>\n {isHovered && lottieUrl && (\n <LottieAnimation\n ref={lottieRef}\n src={lottieUrl}\n width=\"100%\"\n height=\"100%\"\n settings={renderSettings}\n onRender={handleLottieReady}\n onError={handleLottieError}\n />\n )}\n </Styled.LottieContainer>\n </Styled.StickerContainer>\n );\n};\n\nexport default memo(Sticker);\n"],"names":["renderSettings","Sticker","emoji","lottieUrl","size","onClick","disabled","isHovered","setIsHovered","useState","lottieState","setLottieState","lottieRef","useRef","logError","useStickersErrorLogger","handleLottieReady","useCallback","_a","handleLottieError","handleMouseEnter","handleMouseLeave","hideStaticEmoji","jsxs","Styled.StickerContainer","jsx","Styled.StaticEmoji","Styled.LottieContainer","LottieAnimation","Sticker$1","memo"],"mappings":";;;;;AASA,MAAMA,IAAiB;AAAA,EACrB,UAAU;AACZ,GAEMC,IAA6B,CAAC,EAAE,OAAAC,GAAO,WAAAC,GAAW,MAAAC,IAAO,IAAI,SAAAC,GAAS,UAAAC,IAAW,SAAY;AACjG,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAaC,CAAc,IAAIF,EAAsC,MAAM,GAC5EG,IAAYC,EAA4B,IAAI,GAE5CC,IAAWC,KAEXC,IAAoBC,EAAY,MAAM;;AAC1C,IAAAN,EAAe,QAAQ,IACvBO,IAAAN,EAAU,YAAV,QAAAM,EAAmB;AAAA,EACrB,GAAG,CAAE,CAAA,GAECC,IAAoBF,EAAY,MAAM;AAC1C,IAAAN,EAAe,OAAO,GACtBG,EAAS,6BAA6B;AAAA,EAAA,GACrC,CAACA,CAAQ,CAAC,GAEPM,IAAmBH,EAAY,MAAM;;AACzC,IAAAT,EAAa,EAAI,GAEbE,MAAgB,cAClBQ,IAAAN,EAAU,YAAV,QAAAM,EAAmB;AAAA,EACrB,GACC,CAACR,CAAW,CAAC,GAEVW,IAAmBJ,EAAY,MAAM;;AACzC,IAAAT,EAAa,EAAK,IACRU,IAAAN,EAAA,YAAA,QAAAM,EAAS,YAAY,GAAG;AAAA,EACpC,GAAG,CAAE,CAAA,GAECI,IAAkBf,KAAaG,MAAgB;AAGnD,SAAA,gBAAAa;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,OAAOpB;AAAA,MACP,WAAWE;AAAA,MACX,gBAAgBA,IAAW,SAAYc;AAAA,MACvC,gBAAgBd,IAAW,SAAYe;AAAA,MACvC,SAASf,IAAW,SAAYD;AAAA,MAEhC,UAAA;AAAA,QAAC,gBAAAoB,EAAAC,GAAA,EAAmB,OAAOtB,GAAM,UAAU,CAACkB,GACzC,UACHpB,GAAA;AAAA,QAEA,gBAAAuB,EAACE,GAAA,EAAuB,OAAOvB,GAAM,UAAUkB,GAC5C,UAAAf,KAAaJ,KACZ,gBAAAsB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,KAAKhB;AAAA,YACL,KAAKT;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,UAAUH;AAAA,YACV,UAAUgB;AAAA,YACV,SAASG;AAAA,UAAA;AAAA,QAAA,GAGf;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEeU,IAAAC,EAAK7B,CAAO;"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { memo as j, useState as B, useCallback as G, useMemo as c } from "react";
3
- import H from "../../ui/arrow-tooltip/arrow-tooltip.js";
4
- import K from "./comps/stiker-selector-grid/sticker-selector-grid.js";
5
- import { useHandleStickerSend as R } from "./hooks/use-handle-sticker-send.js";
6
- import { TriggerWrapper as _ } from "./sticker-selector-styled.js";
2
+ import { memo as B, useState as G, useCallback as H, useMemo as c } from "react";
3
+ import K from "../../ui/arrow-tooltip/arrow-tooltip.js";
4
+ import { useHandleStickerSend as R } from "../hooks/use-handle-sticker-send.js";
5
+ import _ from "./comps/stiker-selector-grid/sticker-selector-grid.js";
6
+ import { TriggerWrapper as $ } from "./sticker-selector-styled.js";
7
7
  const q = ({
8
8
  triggerNode: e,
9
9
  studentClassroomId: m,
@@ -30,20 +30,20 @@ const q = ({
30
30
  zIndex: M,
31
31
  parentWidth: X,
32
32
  isBlocking: D = !1
33
- } = f, [o, n] = B(!1), r = R(m), l = G(
33
+ } = f, [o, n] = G(!1), r = R(m), l = H(
34
34
  (W) => {
35
35
  if (o) return;
36
36
  const d = ["burst-from-edges", "pop-expand", "float-up", "fall-down"], Y = d[Math.floor(Math.random() * d.length)];
37
37
  r == null || r(W, Y), n(!0);
38
- const $ = setTimeout(() => {
38
+ const j = setTimeout(() => {
39
39
  n(!1);
40
40
  }, 5e3);
41
- return () => clearTimeout($);
41
+ return () => clearTimeout(j);
42
42
  },
43
43
  [r, o]
44
44
  ), F = c(
45
45
  () => /* @__PURE__ */ t(
46
- K,
46
+ _,
47
47
  {
48
48
  columns: i,
49
49
  gap: s,
@@ -53,9 +53,9 @@ const q = ({
53
53
  }
54
54
  ),
55
55
  [i, s, a, l, o]
56
- ), V = c(() => /* @__PURE__ */ t(_, { $disabled: o, children: e }), [o, e]);
56
+ ), V = c(() => /* @__PURE__ */ t($, { $disabled: o, children: e }), [o, e]);
57
57
  return /* @__PURE__ */ t(
58
- H,
58
+ K,
59
59
  {
60
60
  children: V,
61
61
  alwaysVisible: !0,
@@ -81,7 +81,7 @@ const q = ({
81
81
  tooltipYCoOrdinates: I
82
82
  }
83
83
  );
84
- }, Z = j(q);
84
+ }, Z = B(q);
85
85
  export {
86
86
  Z as default
87
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sticker-selector.js","sources":["../../../../src/features/stickers/sticker-selector/sticker-selector.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { memo, useMemo, useState, useCallback } from 'react';\n\nimport ArrowTooltip from '../../ui/arrow-tooltip/arrow-tooltip';\nimport type { IStickerData, TStickerAnimationEffects } from '../stickers-types';\nimport StickerSelectorGrid from './comps/stiker-selector-grid/sticker-selector-grid';\nimport { useHandleStickerSend } from './hooks/use-handle-sticker-send';\nimport * as Styled from './sticker-selector-styled';\nimport type { IStickerSelectorProps } from './sticker-selector-types';\n\nconst StickerSelector: FC<IStickerSelectorProps> = ({\n triggerNode,\n studentClassroomId,\n gridConfig,\n tooltipConfig,\n visible,\n}) => {\n const { columns = 4, gap = 8, stickerSize = 48 } = gridConfig;\n const {\n isAnimated,\n arrowColor,\n arrowSize,\n arrowXCoOrdinates,\n arrowYCoOrdinates,\n backgroundColor,\n borderColor,\n position = 'bottom',\n renderAs = 'primary',\n textVariant,\n tooltipOffset,\n tooltipXCoOrdinates,\n tooltipYCoOrdinates,\n width,\n widthX,\n zIndex,\n parentWidth,\n isBlocking = false,\n } = tooltipConfig;\n\n const [isTemporarilyDisabled, setIsTemporarilyDisabled] = useState(false);\n\n const sendSticker = useHandleStickerSend(studentClassroomId);\n\n const handleStickerSend = useCallback(\n (sticker: IStickerData) => {\n if (isTemporarilyDisabled) return;\n\n const STICKER_EFFECTS = ['burst-from-edges', 'pop-expand', 'float-up', 'fall-down'] as const;\n\n const randomEffect: TStickerAnimationEffects =\n STICKER_EFFECTS[Math.floor(Math.random() * STICKER_EFFECTS.length)]!;\n\n sendSticker?.(sticker, randomEffect);\n setIsTemporarilyDisabled(true);\n\n const timeout = setTimeout(() => {\n setIsTemporarilyDisabled(false);\n }, 5000);\n\n return () => clearTimeout(timeout);\n },\n [sendSticker, isTemporarilyDisabled],\n );\n\n const tooltipItem = useMemo(\n () => (\n <StickerSelectorGrid\n columns={columns}\n gap={gap}\n stickerSize={stickerSize}\n onStickerClick={handleStickerSend}\n disabled={isTemporarilyDisabled}\n />\n ),\n [columns, gap, stickerSize, handleStickerSend, isTemporarilyDisabled],\n );\n\n const triggerEle = useMemo(() => {\n return (\n <Styled.TriggerWrapper $disabled={isTemporarilyDisabled}>{triggerNode}</Styled.TriggerWrapper>\n );\n }, [isTemporarilyDisabled, triggerNode]);\n\n return (\n <ArrowTooltip\n children={triggerEle}\n alwaysVisible\n hidden={!visible}\n tooltipItem={tooltipItem}\n renderAs={renderAs}\n position={position}\n isBlocking={isBlocking}\n isAnimated={isAnimated}\n zIndex={zIndex}\n width={width}\n widthX={widthX}\n parentWidth={parentWidth}\n backgroundColor={backgroundColor}\n borderColor={borderColor}\n textVariant={textVariant}\n tooltipOffset={tooltipOffset}\n arrowColor={arrowColor}\n arrowSize={arrowSize}\n arrowXCoOrdinates={arrowXCoOrdinates}\n arrowYCoOrdinates={arrowYCoOrdinates}\n tooltipXCoOrdinates={tooltipXCoOrdinates}\n tooltipYCoOrdinates={tooltipYCoOrdinates}\n />\n );\n};\n\nexport default memo(StickerSelector);\n"],"names":["StickerSelector","triggerNode","studentClassroomId","gridConfig","tooltipConfig","visible","columns","gap","stickerSize","isAnimated","arrowColor","arrowSize","arrowXCoOrdinates","arrowYCoOrdinates","backgroundColor","borderColor","position","renderAs","textVariant","tooltipOffset","tooltipXCoOrdinates","tooltipYCoOrdinates","width","widthX","zIndex","parentWidth","isBlocking","isTemporarilyDisabled","setIsTemporarilyDisabled","useState","sendSticker","useHandleStickerSend","handleStickerSend","useCallback","sticker","STICKER_EFFECTS","randomEffect","timeout","tooltipItem","useMemo","jsx","StickerSelectorGrid","triggerEle","Styled.TriggerWrapper","ArrowTooltip","StickerSelector$1","memo"],"mappings":";;;;;;AAUA,MAAMA,IAA6C,CAAC;AAAA,EAClD,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,SAAAC;AACF,MAAM;AACJ,QAAM,EAAE,SAAAC,IAAU,GAAG,KAAAC,IAAM,GAAG,aAAAC,IAAc,GAAO,IAAAL,GAC7C;AAAA,IACJ,YAAAM;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,UAAAC,IAAW;AAAA,IACX,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,EACX,IAAAtB,GAEE,CAACuB,GAAuBC,CAAwB,IAAIC,EAAS,EAAK,GAElEC,IAAcC,EAAqB7B,CAAkB,GAErD8B,IAAoBC;AAAA,IACxB,CAACC,MAA0B;AACzB,UAAIP,EAAuB;AAE3B,YAAMQ,IAAkB,CAAC,oBAAoB,cAAc,YAAY,WAAW,GAE5EC,IACJD,EAAgB,KAAK,MAAM,KAAK,WAAWA,EAAgB,MAAM,CAAC;AAEpE,MAAAL,KAAA,QAAAA,EAAcI,GAASE,IACvBR,EAAyB,EAAI;AAEvB,YAAAS,IAAU,WAAW,MAAM;AAC/B,QAAAT,EAAyB,EAAK;AAAA,SAC7B,GAAI;AAEA,aAAA,MAAM,aAAaS,CAAO;AAAA,IACnC;AAAA,IACA,CAACP,GAAaH,CAAqB;AAAA,EAAA,GAG/BW,IAAcC;AAAA,IAClB,MACE,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAAnC;AAAA,QACA,KAAAC;AAAA,QACA,aAAAC;AAAA,QACA,gBAAgBwB;AAAA,QAChB,UAAUL;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,CAACrB,GAASC,GAAKC,GAAawB,GAAmBL,CAAqB;AAAA,EAAA,GAGhEe,IAAaH,EAAQ,wBAEtBI,GAAA,EAAsB,WAAWhB,GAAwB,UAAY1B,EAAA,CAAA,GAEvE,CAAC0B,GAAuB1B,CAAW,CAAC;AAGrC,SAAA,gBAAAuC;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,UAAUF;AAAA,MACV,eAAa;AAAA,MACb,QAAQ,CAACrC;AAAA,MACT,aAAAiC;AAAA,MACA,UAAArB;AAAA,MACA,UAAAD;AAAA,MACA,YAAAU;AAAA,MACA,YAAAjB;AAAA,MACA,QAAAe;AAAA,MACA,OAAAF;AAAA,MACA,QAAAC;AAAA,MACA,aAAAE;AAAA,MACA,iBAAAX;AAAA,MACA,aAAAC;AAAA,MACA,aAAAG;AAAA,MACA,eAAAC;AAAA,MACA,YAAAT;AAAA,MACA,WAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,qBAAAO;AAAA,MACA,qBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN,GAEewB,IAAAC,EAAK9C,CAAe;"}
1
+ {"version":3,"file":"sticker-selector.js","sources":["../../../../src/features/stickers/sticker-selector/sticker-selector.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { memo, useMemo, useState, useCallback } from 'react';\n\nimport ArrowTooltip from '../../ui/arrow-tooltip/arrow-tooltip';\nimport { useHandleStickerSend } from '../hooks/use-handle-sticker-send';\nimport type { IStickerData, TStickerAnimationEffects } from '../stickers-types';\nimport StickerSelectorGrid from './comps/stiker-selector-grid/sticker-selector-grid';\nimport * as Styled from './sticker-selector-styled';\nimport type { IStickerSelectorProps } from './sticker-selector-types';\n\nconst StickerSelector: FC<IStickerSelectorProps> = ({\n triggerNode,\n studentClassroomId,\n gridConfig,\n tooltipConfig,\n visible,\n}) => {\n const { columns = 4, gap = 8, stickerSize = 48 } = gridConfig;\n const {\n isAnimated,\n arrowColor,\n arrowSize,\n arrowXCoOrdinates,\n arrowYCoOrdinates,\n backgroundColor,\n borderColor,\n position = 'bottom',\n renderAs = 'primary',\n textVariant,\n tooltipOffset,\n tooltipXCoOrdinates,\n tooltipYCoOrdinates,\n width,\n widthX,\n zIndex,\n parentWidth,\n isBlocking = false,\n } = tooltipConfig;\n\n const [isTemporarilyDisabled, setIsTemporarilyDisabled] = useState(false);\n\n const sendSticker = useHandleStickerSend(studentClassroomId);\n\n const handleStickerSend = useCallback(\n (sticker: IStickerData) => {\n if (isTemporarilyDisabled) return;\n\n const STICKER_EFFECTS = ['burst-from-edges', 'pop-expand', 'float-up', 'fall-down'] as const;\n\n const randomEffect: TStickerAnimationEffects =\n STICKER_EFFECTS[Math.floor(Math.random() * STICKER_EFFECTS.length)]!;\n\n sendSticker?.(sticker, randomEffect);\n setIsTemporarilyDisabled(true);\n\n const timeout = setTimeout(() => {\n setIsTemporarilyDisabled(false);\n }, 5000);\n\n return () => clearTimeout(timeout);\n },\n [sendSticker, isTemporarilyDisabled],\n );\n\n const tooltipItem = useMemo(\n () => (\n <StickerSelectorGrid\n columns={columns}\n gap={gap}\n stickerSize={stickerSize}\n onStickerClick={handleStickerSend}\n disabled={isTemporarilyDisabled}\n />\n ),\n [columns, gap, stickerSize, handleStickerSend, isTemporarilyDisabled],\n );\n\n const triggerEle = useMemo(() => {\n return (\n <Styled.TriggerWrapper $disabled={isTemporarilyDisabled}>{triggerNode}</Styled.TriggerWrapper>\n );\n }, [isTemporarilyDisabled, triggerNode]);\n\n return (\n <ArrowTooltip\n children={triggerEle}\n alwaysVisible\n hidden={!visible}\n tooltipItem={tooltipItem}\n renderAs={renderAs}\n position={position}\n isBlocking={isBlocking}\n isAnimated={isAnimated}\n zIndex={zIndex}\n width={width}\n widthX={widthX}\n parentWidth={parentWidth}\n backgroundColor={backgroundColor}\n borderColor={borderColor}\n textVariant={textVariant}\n tooltipOffset={tooltipOffset}\n arrowColor={arrowColor}\n arrowSize={arrowSize}\n arrowXCoOrdinates={arrowXCoOrdinates}\n arrowYCoOrdinates={arrowYCoOrdinates}\n tooltipXCoOrdinates={tooltipXCoOrdinates}\n tooltipYCoOrdinates={tooltipYCoOrdinates}\n />\n );\n};\n\nexport default memo(StickerSelector);\n"],"names":["StickerSelector","triggerNode","studentClassroomId","gridConfig","tooltipConfig","visible","columns","gap","stickerSize","isAnimated","arrowColor","arrowSize","arrowXCoOrdinates","arrowYCoOrdinates","backgroundColor","borderColor","position","renderAs","textVariant","tooltipOffset","tooltipXCoOrdinates","tooltipYCoOrdinates","width","widthX","zIndex","parentWidth","isBlocking","isTemporarilyDisabled","setIsTemporarilyDisabled","useState","sendSticker","useHandleStickerSend","handleStickerSend","useCallback","sticker","STICKER_EFFECTS","randomEffect","timeout","tooltipItem","useMemo","jsx","StickerSelectorGrid","triggerEle","Styled.TriggerWrapper","ArrowTooltip","stickerSelector","memo"],"mappings":";;;;;;AAUA,MAAMA,IAA6C,CAAC;AAAA,EAClD,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,SAAAC;AACF,MAAM;AACJ,QAAM,EAAE,SAAAC,IAAU,GAAG,KAAAC,IAAM,GAAG,aAAAC,IAAc,GAAO,IAAAL,GAC7C;AAAA,IACJ,YAAAM;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,UAAAC,IAAW;AAAA,IACX,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,EACX,IAAAtB,GAEE,CAACuB,GAAuBC,CAAwB,IAAIC,EAAS,EAAK,GAElEC,IAAcC,EAAqB7B,CAAkB,GAErD8B,IAAoBC;AAAA,IACxB,CAACC,MAA0B;AACzB,UAAIP,EAAuB;AAE3B,YAAMQ,IAAkB,CAAC,oBAAoB,cAAc,YAAY,WAAW,GAE5EC,IACJD,EAAgB,KAAK,MAAM,KAAK,WAAWA,EAAgB,MAAM,CAAC;AAEpE,MAAAL,KAAA,QAAAA,EAAcI,GAASE,IACvBR,EAAyB,EAAI;AAEvB,YAAAS,IAAU,WAAW,MAAM;AAC/B,QAAAT,EAAyB,EAAK;AAAA,SAC7B,GAAI;AAEA,aAAA,MAAM,aAAaS,CAAO;AAAA,IACnC;AAAA,IACA,CAACP,GAAaH,CAAqB;AAAA,EAAA,GAG/BW,IAAcC;AAAA,IAClB,MACE,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAAnC;AAAA,QACA,KAAAC;AAAA,QACA,aAAAC;AAAA,QACA,gBAAgBwB;AAAA,QAChB,UAAUL;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,CAACrB,GAASC,GAAKC,GAAawB,GAAmBL,CAAqB;AAAA,EAAA,GAGhEe,IAAaH,EAAQ,wBAEtBI,GAAA,EAAsB,WAAWhB,GAAwB,UAAY1B,EAAA,CAAA,GAEvE,CAAC0B,GAAuB1B,CAAW,CAAC;AAGrC,SAAA,gBAAAuC;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,UAAUF;AAAA,MACV,eAAa;AAAA,MACb,QAAQ,CAACrC;AAAA,MACT,aAAAiC;AAAA,MACA,UAAArB;AAAA,MACA,UAAAD;AAAA,MACA,YAAAU;AAAA,MACA,YAAAjB;AAAA,MACA,QAAAe;AAAA,MACA,OAAAF;AAAA,MACA,QAAAC;AAAA,MACA,aAAAE;AAAA,MACA,iBAAAX;AAAA,MACA,aAAAC;AAAA,MACA,aAAAG;AAAA,MACA,eAAAC;AAAA,MACA,YAAAT;AAAA,MACA,WAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,qBAAAO;AAAA,MACA,qBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN,GAEewB,IAAAC,EAAK9C,CAAe;"}
@@ -0,0 +1,8 @@
1
+ const _ = {
2
+ STICKER_SENT: "sticker_sent",
3
+ STICKER_LOG_ERROR: "sticker_log_error"
4
+ };
5
+ export {
6
+ _ as STICKERS_ANALYTICS_EVENT
7
+ };
8
+ //# sourceMappingURL=stickers-analytics-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickers-analytics-events.js","sources":["../../../src/features/stickers/stickers-analytics-events.ts"],"sourcesContent":["export const STICKERS_ANALYTICS_EVENT = {\n STICKER_SENT: 'sticker_sent',\n STICKER_LOG_ERROR: 'sticker_log_error',\n};\n"],"names":["STICKERS_ANALYTICS_EVENT"],"mappings":"AAAO,MAAMA,IAA2B;AAAA,EACtC,cAAc;AAAA,EACd,mBAAmB;AACrB;"}
@@ -1,147 +1,80 @@
1
- import { jsx as e, jsxs as o } from "react/jsx-runtime";
2
- import { memo as q, useState as S, useRef as C, useCallback as s, useMemo as m, useEffect as z } from "react";
3
- import { useGetEligibleJourneysViaRoute as D } from "../../../journey/hooks/use-get-eligible-journeys-via-route.js";
4
- import { JOURNEY_ID_TEACHER as F } from "../../../journey/journey-id/journey-id-teacher.js";
5
- import { useJourney as Q } from "../../../journey/use-journey/use-journey.js";
6
- import { useStickersJourney as Z } from "../../../stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey.js";
7
- import ee from "../../../stickers/sticker-selector/sticker-selector.js";
8
- import f from "../../../ui/buttons/clickable/clickable.js";
9
- import i from "../../../ui/layout/flex-view.js";
10
- import A from "../../../ui/separator/separator.js";
11
- import d from "../../../ui/text/text.js";
12
- import G from "../../constants/events.js";
13
- import { StickersIcon as te, GuideContainer as oe, HintIcon as ie, SolIcon as ne, Pointer as re, SectionContainer as ce, Section as le, CloseIcon as se, Guide as de } from "./worksheet-sidebar-styled.js";
14
- const Te = q(
15
- ({
16
- questionWidth: E,
17
- questions: v,
18
- activeQuestionIndex: Y,
19
- learnosity: I,
20
- actionbarHeight: b,
21
- loggerRef: a,
22
- studentId: L,
23
- enableStickers: X
24
- }) => {
25
- var y;
26
- const [t, h] = S(), [J, B] = S({
1
+ import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
+ import { memo as L, useState as T, useCallback as h, useMemo as v, useRef as H, useEffect as X } from "react";
3
+ import $ from "../../../ui/buttons/clickable/clickable.js";
4
+ import c from "../../../ui/layout/flex-view.js";
5
+ import y from "../../../ui/separator/separator.js";
6
+ import u from "../../../ui/text/text.js";
7
+ import N from "../../constants/events.js";
8
+ import { GuideContainer as P, HintIcon as V, SolIcon as j, Pointer as x, SectionContainer as B, Section as W, CloseIcon as K, Guide as M } from "./worksheet-sidebar-styled.js";
9
+ const Z = L(
10
+ ({ questionWidth: f, questions: _, activeQuestionIndex: O, learnosity: S, actionbarHeight: p, loggerRef: l }) => {
11
+ var C;
12
+ const [t, s] = T(), [k, A] = T({
27
13
  top: 0,
28
14
  left: 0
29
- }), [u, K] = S(!1), T = C(null), { top: k, left: O } = J, V = s(() => {
30
- h("HINT"), a.current(G.WORKSHEET_V3_HINT_SEEN);
31
- }, [a]), j = s(() => {
32
- h("SOL"), a.current(G.WORKSHEET_V3_SOLUTION_SEEN);
33
- }, [a]), x = s(() => {
34
- h(() => {
15
+ }), { top: g, left: b } = k, R = h(() => {
16
+ s("HINT"), l.current(N.WORKSHEET_V3_HINT_SEEN);
17
+ }, [l]), w = h(() => {
18
+ s("SOL"), l.current(N.WORKSHEET_V3_SOLUTION_SEEN);
19
+ }, [l]), G = h(() => {
20
+ s(() => {
35
21
  });
36
- }, []), p = s(() => {
37
- K((c) => !c);
38
- }, []), { hints: n, solution: g } = ((y = v[Y]) == null ? void 0 : y.metadata) || {}, r = m(() => t === void 0 ? void 0 : t === "HINT" ? n : g, [t, n, g]), R = C(null), _ = C(null), $ = s((c) => {
39
- if (c.current) {
40
- const l = c.current.getBoundingClientRect();
41
- B({
42
- top: l.top + l.height / 2 - 8,
43
- left: l.right - 78
22
+ }, []), { hints: n, solution: d } = ((C = _[O]) == null ? void 0 : C.metadata) || {}, o = v(() => t === void 0 ? void 0 : t === "HINT" ? n : d, [t, n, d]), E = H(null), I = H(null), m = h((a) => {
23
+ if (a.current) {
24
+ const i = a.current.getBoundingClientRect();
25
+ A({
26
+ top: i.top + i.height / 2 - 8,
27
+ left: i.right - 78
44
28
  // 52px (sidebar width) + 16px (gutter) + 10px
45
29
  });
46
30
  }
47
- }, []), N = m(
48
- () => /* @__PURE__ */ e("div", { ref: T, children: /* @__PURE__ */ e(f, { label: "teacher-badges", onClick: p, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", children: [
49
- /* @__PURE__ */ e(te, { width: 32, height: 32, $disabled: !u }),
50
- /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: u ? "BLACK" : "GREY_4", children: "STICKERS" }),
51
- /* @__PURE__ */ e(i, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(A, { width: 24, height: 1, background: "GREY_2" }) })
52
- ] }) }) }),
53
- [u, p]
54
- ), P = m(
55
- () => ({
56
- stickerSize: 48,
57
- columns: 4,
58
- gap: 8
59
- }),
60
- []
61
- ), W = m(
62
- () => ({
63
- position: "left",
64
- zIndex: 1e3,
65
- arrowYCoOrdinates: -175,
66
- tooltipXCoOrdinates: "7.5%",
67
- tooltipYCoOrdinates: "40%"
68
- }),
69
- []
70
- ), U = {
71
- position: "left",
72
- tooltipXCoOrdinates: 20,
73
- tooltipYCoOrdinates: -20
74
- }, M = D([
75
- F.STICKERS_INTRO_JOURNEY
76
- ]), { isJourneyActive: H } = Q(), { startTeacherStickersJourney: w } = Z({
77
- triggerRef: T,
78
- triggerElement: N,
79
- tooltipConfig: U
80
- });
81
- return t && r && I && I.renderMath("mathjax"), z(() => {
82
- t === "HINT" ? $(_) : t === "SOL" ? $(R) : r || h(void 0), H || w();
83
- }, [
84
- t,
85
- $,
86
- r,
87
- M,
88
- H,
89
- w
90
- ]), /* @__PURE__ */ o(oe, { $background: "WHITE", children: [
91
- X && /* @__PURE__ */ e(
92
- ee,
93
- {
94
- triggerNode: N,
95
- studentClassroomId: L,
96
- gridConfig: P,
97
- tooltipConfig: W,
98
- visible: u,
99
- onToggle: p
100
- }
101
- ),
102
- /* @__PURE__ */ e(f, { label: "hints", onClick: V, disabled: !n, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", ref: _, children: [
103
- /* @__PURE__ */ e(ie, { width: 32, height: 32, $disabled: !n }),
104
- /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "HINT" }),
105
- /* @__PURE__ */ e(i, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(A, { width: 24, height: 1, background: "GREY_2" }) })
31
+ }, []);
32
+ return t && o && S && S.renderMath("mathjax"), X(() => {
33
+ t === "HINT" ? m(I) : t === "SOL" ? m(E) : o || s(void 0);
34
+ }, [t, m, o]), /* @__PURE__ */ r(P, { $background: "WHITE", children: [
35
+ /* @__PURE__ */ e($, { label: "hints", onClick: R, disabled: !n, children: /* @__PURE__ */ r(c, { $alignItems: "center", $justifyContent: "center", ref: I, children: [
36
+ /* @__PURE__ */ e(V, { width: 32, height: 32, $disabled: !n }),
37
+ /* @__PURE__ */ e(u, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "HINT" }),
38
+ /* @__PURE__ */ e(c, { $gap: 8, $alignItems: "center", children: /* @__PURE__ */ e(y, { width: 24, height: 1, background: "GREY_2" }) })
106
39
  ] }) }),
107
- /* @__PURE__ */ e(f, { label: "solution", onClick: j, disabled: !g, children: /* @__PURE__ */ o(i, { $alignItems: "center", $justifyContent: "center", ref: R, children: [
108
- /* @__PURE__ */ e(ne, { width: 32, height: 32, $disabled: !g }),
109
- /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "SOL" })
40
+ /* @__PURE__ */ e($, { label: "solution", onClick: w, disabled: !d, children: /* @__PURE__ */ r(c, { $alignItems: "center", $justifyContent: "center", ref: E, children: [
41
+ /* @__PURE__ */ e(j, { width: 32, height: 32, $disabled: !d }),
42
+ /* @__PURE__ */ e(u, { $renderAs: "eyebrow2", $color: n ? "BLACK" : "GREY_4", children: "SOL" })
110
43
  ] }) }),
111
- t && k && O && /* @__PURE__ */ e(re, { topValue: k, leftValue: O }),
44
+ t && g && b && /* @__PURE__ */ e(x, { topValue: g, leftValue: b }),
112
45
  t && /* @__PURE__ */ e(
113
- ce,
46
+ B,
114
47
  {
115
48
  $background: "WHITE",
116
- $questionWidth: E,
117
- $actionbarHeight: b,
49
+ $questionWidth: f,
50
+ $actionbarHeight: p,
118
51
  $borderRadius: 10,
119
- children: /* @__PURE__ */ o(
120
- le,
52
+ children: /* @__PURE__ */ r(
53
+ W,
121
54
  {
122
55
  $gutterX: 1,
123
56
  $gapX: 1,
124
- $questionWidth: E,
125
- $actionbarHeight: b,
57
+ $questionWidth: f,
58
+ $actionbarHeight: p,
126
59
  children: [
127
- /* @__PURE__ */ e(f, { label: "close", onClick: x, children: /* @__PURE__ */ e(se, {}) }),
128
- /* @__PURE__ */ e(i, { $gutterX: 0.5, children: /* @__PURE__ */ e(d, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: t === "HINT" ? "HINTS:" : "SOLUTION:" }) }),
129
- r && r.map((c, l) => /* @__PURE__ */ o(i, { $gutterX: 0.5, $gapX: 0.5, children: [
130
- r.length > 1 && /* @__PURE__ */ o(d, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: [
60
+ /* @__PURE__ */ e($, { label: "close", onClick: G, children: /* @__PURE__ */ e(K, {}) }),
61
+ /* @__PURE__ */ e(c, { $gutterX: 0.5, children: /* @__PURE__ */ e(u, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: t === "HINT" ? "HINTS:" : "SOLUTION:" }) }),
62
+ o && o.map((a, i) => /* @__PURE__ */ r(c, { $gutterX: 0.5, $gapX: 0.5, children: [
63
+ o.length > 1 && /* @__PURE__ */ r(u, { $renderAs: "eyebrow2", $color: "ORANGE_5", $marginBottomX: 0.25, children: [
131
64
  t,
132
65
  " ",
133
- l + 1,
66
+ i + 1,
134
67
  ":"
135
68
  ] }),
136
69
  /* @__PURE__ */ e(
137
- de,
70
+ M,
138
71
  {
139
72
  dangerouslySetInnerHTML: {
140
- __html: c
73
+ __html: a
141
74
  }
142
75
  }
143
76
  )
144
- ] }, l.toString()))
77
+ ] }, i.toString()))
145
78
  ]
146
79
  }
147
80
  )
@@ -151,6 +84,6 @@ const Te = q(
151
84
  }
152
85
  );
153
86
  export {
154
- Te as default
87
+ Z as default
155
88
  };
156
89
  //# sourceMappingURL=question-guide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"question-guide.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/question-guide.tsx"],"sourcesContent":["import React, {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef,\n type ReactElement,\n type RefObject,\n} from 'react';\n\nimport { useGetEligibleJourneysViaRoute } from '../../../journey/hooks/use-get-eligible-journeys-via-route';\nimport { JOURNEY_ID_TEACHER } from '../../../journey/journey-id/journey-id-teacher';\nimport { useJourney } from '../../../journey/use-journey/use-journey';\nimport { useStickersJourney } from '../../../stickers/sticker-selector/hooks/use-stickers-journey/use-stickers-journey';\nimport StickerSelector from '../../../stickers/sticker-selector/sticker-selector';\nimport {\n type IArrowTooltipProps,\n type TPositionProps,\n} from '../../../ui/arrow-tooltip/arrow-tooltip-types';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport EVENTS from '../../constants/events';\nimport type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\nimport {\n Section,\n GuideContainer,\n CloseIcon,\n SolIcon,\n HintIcon,\n StickersIcon,\n SectionContainer,\n Guide,\n Pointer,\n} from './worksheet-sidebar-styled';\n\ntype TSections = 'HINT' | 'SOL';\n\ninterface IQuestionGuideProps extends Pick<IWorksheetProps, 'loggerRef'> {\n questionWidth: number;\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n learnosity: ILearnosity;\n actionbarHeight: number;\n studentId: string;\n enableStickers?: boolean;\n}\n\nconst QuestionGuide: React.FC<IQuestionGuideProps> = memo(\n ({\n questionWidth,\n questions,\n activeQuestionIndex,\n learnosity,\n actionbarHeight,\n loggerRef,\n studentId,\n enableStickers,\n }) => {\n const [activeSection, setActiveSection] = useState<TSections | undefined>();\n const [pointerPosition, setPointerPosition] = useState({\n top: 0,\n left: 0,\n });\n const [showStickers, setShowStickers] = useState(false);\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const { top, left } = pointerPosition;\n\n const handleHintClick = useCallback(() => {\n setActiveSection('HINT');\n loggerRef.current(EVENTS.WORKSHEET_V3_HINT_SEEN);\n }, [loggerRef]);\n const handleSolClick = useCallback(() => {\n setActiveSection('SOL');\n loggerRef.current(EVENTS.WORKSHEET_V3_SOLUTION_SEEN);\n }, [loggerRef]);\n const handleClose = useCallback(() => {\n setActiveSection(() => undefined);\n }, []);\n const handleBadgeToggle = useCallback(() => {\n setShowStickers(prev => !prev);\n }, []);\n\n const { hints, solution } = questions[activeQuestionIndex]?.metadata || {};\n\n const activeSectionData = useMemo(() => {\n return activeSection === undefined ? undefined : activeSection === 'HINT' ? hints : solution;\n }, [activeSection, hints, solution]);\n\n const sqlRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n const hintRef = useRef<HTMLDivElement>(null) as React.RefObject<HTMLDivElement>;\n\n const updatePointerPosition = useCallback((ref: React.RefObject<HTMLDivElement>) => {\n if (ref.current) {\n const rect = ref.current.getBoundingClientRect();\n\n setPointerPosition({\n top: rect.top + rect.height / 2 - 8,\n left: rect.right - 78, // 52px (sidebar width) + 16px (gutter) + 10px\n });\n }\n }, []);\n\n const stickerTrigger = useMemo(\n () => (\n <div ref={triggerRef}>\n <Clickable label=\"teacher-badges\" onClick={handleBadgeToggle}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\">\n <StickersIcon width={32} height={32} $disabled={!showStickers} />\n <Text $renderAs=\"eyebrow2\" $color={!showStickers ? 'GREY_4' : 'BLACK'}>\n STICKERS\n </Text>\n <FlexView $gap={8} $alignItems=\"center\">\n <Separator width={24} height={1} background=\"GREY_2\" />\n </FlexView>\n </FlexView>\n </Clickable>\n </div>\n ),\n [showStickers, handleBadgeToggle],\n );\n\n const stickerGridConfig = useMemo(\n () => ({\n stickerSize: 48,\n columns: 4,\n gap: 8,\n }),\n [],\n );\n\n const stickerTooltipConfig = useMemo(\n () => ({\n position: 'left' as TPositionProps,\n zIndex: 1000,\n arrowYCoOrdinates: -175,\n tooltipXCoOrdinates: '7.5%',\n tooltipYCoOrdinates: '40%',\n }),\n [],\n );\n\n const coachmarkConfig = {\n position: 'left',\n tooltipXCoOrdinates: 20,\n tooltipYCoOrdinates: -20,\n };\n\n const eligibleJourneyIds = useGetEligibleJourneysViaRoute([\n JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY,\n ]);\n\n const { isJourneyActive } = useJourney();\n\n const { startTeacherStickersJourney } = useStickersJourney({\n triggerRef: triggerRef as RefObject<HTMLDivElement>,\n triggerElement: stickerTrigger as ReactElement,\n tooltipConfig: coachmarkConfig as IArrowTooltipProps,\n });\n\n if (activeSection && activeSectionData && learnosity) {\n learnosity.renderMath('mathjax');\n }\n\n useEffect(() => {\n if (activeSection === 'HINT') {\n updatePointerPosition(hintRef);\n } else if (activeSection === 'SOL') {\n updatePointerPosition(sqlRef);\n } else if (!activeSectionData) {\n setActiveSection(undefined);\n }\n\n if (\n // eligibleJourneyIds.includes(JOURNEY_ID_TEACHER.STICKERS_INTRO_JOURNEY) &&\n !isJourneyActive\n ) {\n startTeacherStickersJourney();\n }\n }, [\n activeSection,\n updatePointerPosition,\n activeSectionData,\n eligibleJourneyIds,\n isJourneyActive,\n startTeacherStickersJourney,\n ]);\n\n return (\n <GuideContainer $background=\"WHITE\">\n {enableStickers && (\n <StickerSelector\n triggerNode={stickerTrigger}\n studentClassroomId={studentId}\n gridConfig={stickerGridConfig}\n tooltipConfig={stickerTooltipConfig}\n visible={showStickers}\n onToggle={handleBadgeToggle}\n />\n )}\n <Clickable label=\"hints\" onClick={handleHintClick} disabled={!hints}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={hintRef}>\n <HintIcon width={32} height={32} $disabled={!hints} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n HINT\n </Text>\n <FlexView $gap={8} $alignItems=\"center\">\n <Separator width={24} height={1} background=\"GREY_2\" />\n </FlexView>\n </FlexView>\n </Clickable>\n <Clickable label=\"solution\" onClick={handleSolClick} disabled={!solution}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={sqlRef}>\n <SolIcon width={32} height={32} $disabled={!solution} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n SOL\n </Text>\n </FlexView>\n </Clickable>\n {activeSection && top && left && <Pointer topValue={top} leftValue={left} />}\n {activeSection && (\n <SectionContainer\n $background=\"WHITE\"\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n $borderRadius={10}\n >\n <Section\n $gutterX={1}\n $gapX={1}\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n >\n <Clickable label=\"close\" onClick={handleClose}>\n <CloseIcon />\n </Clickable>\n <FlexView $gutterX={0.5}>\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection === 'HINT' ? 'HINTS:' : 'SOLUTION:'}\n </Text>\n </FlexView>\n {activeSectionData &&\n activeSectionData.map((item, index) => (\n <FlexView $gutterX={0.5} $gapX={0.5} key={index.toString()}>\n {activeSectionData.length > 1 && (\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection} {index + 1}:\n </Text>\n )}\n <Guide\n dangerouslySetInnerHTML={{\n __html: item,\n }}\n />\n </FlexView>\n ))}\n </Section>\n </SectionContainer>\n )}\n </GuideContainer>\n );\n },\n);\n\nexport default QuestionGuide;\n"],"names":["QuestionGuide","memo","questionWidth","questions","activeQuestionIndex","learnosity","actionbarHeight","loggerRef","studentId","enableStickers","activeSection","setActiveSection","useState","pointerPosition","setPointerPosition","showStickers","setShowStickers","triggerRef","useRef","top","left","handleHintClick","useCallback","EVENTS","handleSolClick","handleClose","handleBadgeToggle","prev","hints","solution","_a","activeSectionData","useMemo","sqlRef","hintRef","updatePointerPosition","ref","rect","stickerTrigger","jsx","Clickable","jsxs","FlexView","StickersIcon","Text","Separator","stickerGridConfig","stickerTooltipConfig","coachmarkConfig","eligibleJourneyIds","useGetEligibleJourneysViaRoute","JOURNEY_ID_TEACHER","isJourneyActive","useJourney","startTeacherStickersJourney","useStickersJourney","useEffect","GuideContainer","StickerSelector","HintIcon","SolIcon","Pointer","SectionContainer","Section","CloseIcon","item","index","Guide"],"mappings":"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"}
1
+ {"version":3,"file":"question-guide.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/question-guide.tsx"],"sourcesContent":["import {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef,\n type FC,\n type RefObject,\n} from 'react';\n\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport EVENTS from '../../constants/events';\nimport type { ILearnosity, IWorksheetProps, IWorksheetQuestion } from '../worksheet-types';\nimport {\n Section,\n GuideContainer,\n CloseIcon,\n SolIcon,\n HintIcon,\n SectionContainer,\n Guide,\n Pointer,\n} from './worksheet-sidebar-styled';\n\ntype TSections = 'HINT' | 'SOL';\n\ninterface IQuestionGuideProps extends Pick<IWorksheetProps, 'loggerRef'> {\n questionWidth: number;\n questions: IWorksheetQuestion[];\n activeQuestionIndex: number;\n learnosity: ILearnosity;\n actionbarHeight: number;\n}\n\nconst QuestionGuide: FC<IQuestionGuideProps> = memo(\n ({ questionWidth, questions, activeQuestionIndex, learnosity, actionbarHeight, loggerRef }) => {\n const [activeSection, setActiveSection] = useState<TSections | undefined>();\n const [pointerPosition, setPointerPosition] = useState({\n top: 0,\n left: 0,\n });\n const { top, left } = pointerPosition;\n\n const handleHintClick = useCallback(() => {\n setActiveSection('HINT');\n loggerRef.current(EVENTS.WORKSHEET_V3_HINT_SEEN);\n }, [loggerRef]);\n const handleSolClick = useCallback(() => {\n setActiveSection('SOL');\n loggerRef.current(EVENTS.WORKSHEET_V3_SOLUTION_SEEN);\n }, [loggerRef]);\n const handleClose = useCallback(() => {\n setActiveSection(() => undefined);\n }, []);\n\n const { hints, solution } = questions[activeQuestionIndex]?.metadata || {};\n\n const activeSectionData = useMemo(() => {\n return activeSection === undefined ? undefined : activeSection === 'HINT' ? hints : solution;\n }, [activeSection, hints, solution]);\n\n const sqlRef = useRef<HTMLDivElement>(null) as RefObject<HTMLDivElement>;\n const hintRef = useRef<HTMLDivElement>(null) as RefObject<HTMLDivElement>;\n\n const updatePointerPosition = useCallback((ref: RefObject<HTMLDivElement>) => {\n if (ref.current) {\n const rect = ref.current.getBoundingClientRect();\n\n setPointerPosition({\n top: rect.top + rect.height / 2 - 8,\n left: rect.right - 78, // 52px (sidebar width) + 16px (gutter) + 10px\n });\n }\n }, []);\n\n if (activeSection && activeSectionData && learnosity) {\n learnosity.renderMath('mathjax');\n }\n\n useEffect(() => {\n if (activeSection === 'HINT') {\n updatePointerPosition(hintRef);\n } else if (activeSection === 'SOL') {\n updatePointerPosition(sqlRef);\n } else if (!activeSectionData) {\n setActiveSection(undefined);\n }\n }, [activeSection, updatePointerPosition, activeSectionData]);\n\n return (\n <GuideContainer $background=\"WHITE\">\n <Clickable label=\"hints\" onClick={handleHintClick} disabled={!hints}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={hintRef}>\n <HintIcon width={32} height={32} $disabled={!hints} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n HINT\n </Text>\n <FlexView $gap={8} $alignItems=\"center\">\n <Separator width={24} height={1} background=\"GREY_2\" />\n </FlexView>\n </FlexView>\n </Clickable>\n <Clickable label=\"solution\" onClick={handleSolClick} disabled={!solution}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\" ref={sqlRef}>\n <SolIcon width={32} height={32} $disabled={!solution} />\n <Text $renderAs=\"eyebrow2\" $color={!hints ? 'GREY_4' : 'BLACK'}>\n SOL\n </Text>\n </FlexView>\n </Clickable>\n {activeSection && top && left && <Pointer topValue={top} leftValue={left} />}\n {activeSection && (\n <SectionContainer\n $background=\"WHITE\"\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n $borderRadius={10}\n >\n <Section\n $gutterX={1}\n $gapX={1}\n $questionWidth={questionWidth}\n $actionbarHeight={actionbarHeight}\n >\n <Clickable label=\"close\" onClick={handleClose}>\n <CloseIcon />\n </Clickable>\n <FlexView $gutterX={0.5}>\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection === 'HINT' ? 'HINTS:' : 'SOLUTION:'}\n </Text>\n </FlexView>\n {activeSectionData &&\n activeSectionData.map((item, index) => (\n <FlexView $gutterX={0.5} $gapX={0.5} key={index.toString()}>\n {activeSectionData.length > 1 && (\n <Text $renderAs=\"eyebrow2\" $color=\"ORANGE_5\" $marginBottomX={0.25}>\n {activeSection} {index + 1}:\n </Text>\n )}\n <Guide\n dangerouslySetInnerHTML={{\n __html: item,\n }}\n />\n </FlexView>\n ))}\n </Section>\n </SectionContainer>\n )}\n </GuideContainer>\n );\n },\n);\n\nexport default QuestionGuide;\n"],"names":["QuestionGuide","memo","questionWidth","questions","activeQuestionIndex","learnosity","actionbarHeight","loggerRef","activeSection","setActiveSection","useState","pointerPosition","setPointerPosition","top","left","handleHintClick","useCallback","EVENTS","handleSolClick","handleClose","hints","solution","_a","activeSectionData","useMemo","sqlRef","useRef","hintRef","updatePointerPosition","ref","rect","useEffect","jsxs","GuideContainer","jsx","Clickable","FlexView","HintIcon","Text","Separator","SolIcon","Pointer","SectionContainer","Section","CloseIcon","item","index","Guide"],"mappings":"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"}