@cuemath/leap 3.2.22-m → 3.2.23-mb

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 (44) hide show
  1. package/dist/features/stickers/sticker-data.js +234 -0
  2. package/dist/features/stickers/sticker-data.js.map +1 -0
  3. package/dist/features/{ui/sticker-grid/sticker-grid-styles.js → stickers/sticker-selector/sticker-selector-styles.js} +21 -31
  4. package/dist/features/stickers/sticker-selector/sticker-selector-styles.js.map +1 -0
  5. package/dist/features/stickers/sticker-selector/sticker-selector.js +27 -0
  6. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -0
  7. package/dist/features/stickers/sticker-selector/sticker.js +57 -0
  8. package/dist/features/stickers/sticker-selector/sticker.js.map +1 -0
  9. package/dist/features/{ui/stickers/stickers-effects.js → stickers/stickers-effects/effects.js} +6 -6
  10. package/dist/features/stickers/stickers-effects/effects.js.map +1 -0
  11. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js +86 -0
  12. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js.map +1 -0
  13. package/dist/features/{ui/stickers/stickers-styled.js → stickers/stickers-effects/stickers-effects-styled.js} +2 -2
  14. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +1 -0
  15. package/dist/features/stickers/stickers-effects/stickers-effects.js +43 -0
  16. package/dist/features/stickers/stickers-effects/stickers-effects.js.map +1 -0
  17. package/dist/features/ui/lottie-animation/lottie-animation.js +36 -31
  18. package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
  19. package/dist/features/ui/modals/modal-styled.js +39 -8
  20. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  21. package/dist/features/ui/modals/modal.js +31 -31
  22. package/dist/features/ui/modals/modal.js.map +1 -1
  23. package/dist/index.d.ts +38 -41
  24. package/dist/index.js +316 -316
  25. package/package.json +1 -2
  26. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation-styled.js +0 -9
  27. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation-styled.js.map +0 -1
  28. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js +0 -65
  29. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js.map +0 -1
  30. package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +0 -1
  31. package/dist/features/ui/sticker-grid/sticker-grid.js +0 -24
  32. package/dist/features/ui/sticker-grid/sticker-grid.js.map +0 -1
  33. package/dist/features/ui/sticker-grid/sticker.js +0 -57
  34. package/dist/features/ui/sticker-grid/sticker.js.map +0 -1
  35. package/dist/features/ui/stickers/constants.js +0 -6
  36. package/dist/features/ui/stickers/constants.js.map +0 -1
  37. package/dist/features/ui/stickers/stickers-effects.js.map +0 -1
  38. package/dist/features/ui/stickers/stickers-styled.js.map +0 -1
  39. package/dist/features/ui/stickers/stickers-utils.js +0 -91
  40. package/dist/features/ui/stickers/stickers-utils.js.map +0 -1
  41. package/dist/features/ui/stickers/stickers.js +0 -40
  42. package/dist/features/ui/stickers/stickers.js.map +0 -1
  43. package/dist/node_modules/@lottiefiles/dotlottie-web/dist/index.js +0 -1881
  44. package/dist/node_modules/@lottiefiles/dotlottie-web/dist/index.js.map +0 -1
@@ -0,0 +1,43 @@
1
+ import { jsx as o, Fragment as D } from "react/jsx-runtime";
2
+ import { memo as f, useState as l, useEffect as E } from "react";
3
+ import g from "../../ui/lottie-animation/lottie-animation.js";
4
+ import { generateStickerData as F } from "./stickers-effects-helper.js";
5
+ import { Container as z, Sticker as T } from "./stickers-effects-styled.js";
6
+ const $ = f(({ lottie: t, sticker: e, size: r }) => {
7
+ const [i, s] = l(!1);
8
+ return !t || i ? /* @__PURE__ */ o(D, { children: e }) : /* @__PURE__ */ o(g, { src: t, width: r, height: r, onError: () => s(!0) });
9
+ }), b = ({ stickers: t, effect: e, count: r, duration: i }) => {
10
+ const [s, a] = l([]);
11
+ return E(() => {
12
+ const c = F({
13
+ count: r,
14
+ effect: e,
15
+ stickers: t,
16
+ minSize: 32,
17
+ maxSize: 48
18
+ });
19
+ a(c);
20
+ const m = setTimeout(() => a([]), i);
21
+ return () => clearTimeout(m);
22
+ }, [t, e, r, i]), /* @__PURE__ */ o(z, { children: s.map((c, m) => {
23
+ const { id: k, sticker: u, lottie: S, x: h, y: p, size: n, fromX: d, fromY: x } = c;
24
+ return /* @__PURE__ */ o(
25
+ T,
26
+ {
27
+ effect: e,
28
+ duration: i,
29
+ fromX: d,
30
+ fromY: x,
31
+ x: h,
32
+ y: p,
33
+ size: n,
34
+ children: /* @__PURE__ */ o($, { lottie: S, sticker: u, size: n })
35
+ },
36
+ `${k}-${m}`
37
+ );
38
+ }) });
39
+ }, L = f(b);
40
+ export {
41
+ L as default
42
+ };
43
+ //# sourceMappingURL=stickers-effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickers-effects.js","sources":["../../../../src/features/stickers/stickers-effects/stickers-effects.tsx"],"sourcesContent":["import type { TStickerData, IStickersProps } from './stickers-effects-types';\n\nimport React, { memo, useEffect, useState } from 'react';\n\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport { generateStickerData } from './stickers-effects-helper';\nimport * as S from './stickers-effects-styled';\n\nconst StickerWithFallback: React.FC<{\n lottie?: string;\n sticker: string;\n size: number;\n}> = memo(({ lottie, sticker, size }) => {\n const [failed, setFailed] = useState(false);\n\n if (!lottie || failed) return <>{sticker}</>;\n\n return (\n <LottieAnimation src={lottie} width={size} height={size} onError={() => setFailed(true)} />\n );\n});\n\nconst StickersEffects: React.FC<IStickersProps> = ({ stickers, effect, count, duration }) => {\n const [stickersData, setStickersData] = useState<ReturnType<typeof generateStickerData>>([]);\n\n useEffect(() => {\n const stickerData = generateStickerData({\n count,\n effect,\n stickers,\n minSize: 32,\n maxSize: 48,\n });\n\n setStickersData(stickerData);\n\n const timeout = setTimeout(() => setStickersData([]), duration);\n\n return () => clearTimeout(timeout);\n }, [stickers, effect, count, duration]);\n\n return (\n <S.Container>\n {stickersData.map((data: TStickerData, i) => {\n const { id, sticker, lottie, x, y, size, fromX, fromY } = data;\n\n return (\n <S.Sticker\n key={`${id}-${i}`}\n effect={effect}\n duration={duration}\n fromX={fromX}\n fromY={fromY}\n x={x}\n y={y}\n size={size}\n >\n <StickerWithFallback lottie={lottie} sticker={sticker} size={size} />\n </S.Sticker>\n );\n })}\n </S.Container>\n );\n};\n\nexport default memo(StickersEffects);\n"],"names":["StickerWithFallback","memo","lottie","sticker","size","failed","setFailed","useState","jsx","LottieAnimation","StickersEffects","stickers","effect","count","duration","stickersData","setStickersData","useEffect","stickerData","generateStickerData","timeout","S.Container","data","i","id","x","y","fromX","fromY","S.Sticker","stickersEffects"],"mappings":";;;;;AAQA,MAAMA,IAIDC,EAAK,CAAC,EAAE,QAAAC,GAAQ,SAAAC,GAAS,MAAAC,QAAW;AACvC,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK;AAE1C,SAAI,CAACL,KAAUG,2BAAkB,UAAQF,EAAA,CAAA,IAGtC,gBAAAK,EAAAC,GAAA,EAAgB,KAAKP,GAAQ,OAAOE,GAAM,QAAQA,GAAM,SAAS,MAAME,EAAU,EAAI,EAAG,CAAA;AAE7F,CAAC,GAEKI,IAA4C,CAAC,EAAE,UAAAC,GAAU,QAAAC,GAAQ,OAAAC,GAAO,UAAAC,QAAe;AAC3F,QAAM,CAACC,GAAcC,CAAe,IAAIT,EAAiD,CAAE,CAAA;AAE3F,SAAAU,EAAU,MAAM;AACd,UAAMC,IAAcC,EAAoB;AAAA,MACtC,OAAAN;AAAA,MACA,QAAAD;AAAA,MACA,UAAAD;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,IAAA,CACV;AAED,IAAAK,EAAgBE,CAAW;AAE3B,UAAME,IAAU,WAAW,MAAMJ,EAAgB,CAAE,CAAA,GAAGF,CAAQ;AAEvD,WAAA,MAAM,aAAaM,CAAO;AAAA,KAChC,CAACT,GAAUC,GAAQC,GAAOC,CAAQ,CAAC,GAGpC,gBAAAN,EAACa,GAAA,EACE,YAAa,IAAI,CAACC,GAAoBC,MAAM;AACrC,UAAA,EAAE,IAAAC,GAAI,SAAArB,GAAS,QAAAD,GAAQ,GAAAuB,GAAG,GAAAC,GAAG,MAAAtB,GAAM,OAAAuB,GAAO,OAAAC,EAAU,IAAAN;AAGxD,WAAA,gBAAAd;AAAA,MAACqB;AAAAA,MAAA;AAAA,QAEC,QAAAjB;AAAA,QACA,UAAAE;AAAA,QACA,OAAAa;AAAA,QACA,OAAAC;AAAA,QACA,GAAAH;AAAA,QACA,GAAAC;AAAA,QACA,MAAAtB;AAAA,QAEA,UAAC,gBAAAI,EAAAR,GAAA,EAAoB,QAAAE,GAAgB,SAAAC,GAAkB,MAAAC,GAAY;AAAA,MAAA;AAAA,MAT9D,GAAGoB,CAAE,IAAID,CAAC;AAAA,IAAA;AAAA,EAYpB,CAAA,EACH,CAAA;AAEJ,GAEeO,IAAA7B,EAAKS,CAAe;"}
@@ -1,32 +1,33 @@
1
- import { jsx as E } from "react/jsx-runtime";
2
- import g from "lottie-web";
3
- import { memo as w, forwardRef as A, useRef as u, useImperativeHandle as b, useEffect as I } from "react";
1
+ import { jsx as A } from "react/jsx-runtime";
2
+ import E from "lottie-web";
3
+ import { memo as w, forwardRef as b, useRef as m, useImperativeHandle as I, useEffect as S } from "react";
4
4
  import $ from "../layout/flex-view.js";
5
5
  import { fetchLottie as x } from "./helper.js";
6
- const O = A((v, L) => {
6
+ const O = b((L, h) => {
7
7
  const {
8
- src: m,
9
- width: h = "100%",
8
+ src: l,
9
+ width: g = "100%",
10
10
  height: y = "100%",
11
- settings: l,
12
- eventListener: n,
13
- onRender: o,
14
- animateOnIntersect: c
15
- } = v, a = u(null), r = u(null), s = u(null);
16
- return b(
17
- L,
11
+ settings: d,
12
+ eventListener: o,
13
+ onRender: i,
14
+ onError: a,
15
+ animateOnIntersect: s
16
+ } = L, c = m(null), r = m(null), u = m(null);
17
+ return I(
18
+ h,
18
19
  () => ({
19
- playSegments: (t, i) => {
20
+ playSegments: (t, n) => {
20
21
  var e;
21
- return (e = r.current) == null ? void 0 : e.playSegments(t, i);
22
+ return (e = r.current) == null ? void 0 : e.playSegments(t, n);
22
23
  },
23
- addEventListener: (t, i) => {
24
+ addEventListener: (t, n) => {
24
25
  var e;
25
- return (e = r.current) == null ? void 0 : e.addEventListener(t, i);
26
+ return (e = r.current) == null ? void 0 : e.addEventListener(t, n);
26
27
  },
27
- removeEventListener: (t, i) => {
28
+ removeEventListener: (t, n) => {
28
29
  var e;
29
- return (e = r.current) == null ? void 0 : e.removeEventListener(t, i);
30
+ return (e = r.current) == null ? void 0 : e.removeEventListener(t, n);
30
31
  },
31
32
  play: () => {
32
33
  var t;
@@ -35,37 +36,41 @@ const O = A((v, L) => {
35
36
  stop: () => {
36
37
  var t;
37
38
  return (t = r.current) == null ? void 0 : t.stop();
39
+ },
40
+ goToAndStop: (t, n) => {
41
+ var e;
42
+ return (e = r.current) == null ? void 0 : e.goToAndStop(t, n);
38
43
  }
39
44
  }),
40
45
  []
41
- ), I(() => {
46
+ ), S(() => {
42
47
  let t = !1;
43
48
  return (async () => {
44
49
  try {
45
- const e = await x(m);
50
+ const e = await x(l);
46
51
  requestAnimationFrame(() => {
47
- !a.current || t || (r.current = g.loadAnimation({
48
- container: a.current,
52
+ !c.current || t || (r.current = E.loadAnimation({
53
+ container: c.current,
49
54
  animationData: e,
50
55
  loop: !0,
51
56
  autoplay: !0,
52
- ...l
53
- }), c && (s.current = new IntersectionObserver(
57
+ ...d
58
+ }), s && (u.current = new IntersectionObserver(
54
59
  ([f]) => {
55
- var d, p;
56
- f && f.isIntersecting ? (d = r.current) == null || d.play() : (p = r.current) == null || p.pause();
60
+ var p, v;
61
+ f && f.isIntersecting ? (p = r.current) == null || p.play() : (v = r.current) == null || v.pause();
57
62
  },
58
63
  { threshold: 0 }
59
- ), s.current.observe(a.current)), o == null || o(), n && r.current.addEventListener(n.name, n.callback));
64
+ ), u.current.observe(c.current)), i == null || i(), o && r.current.addEventListener(o.name, o.callback));
60
65
  });
61
66
  } catch (e) {
62
- throw Error(`Error loading Lottie animation: ${e}`);
67
+ throw a == null || a(), Error(`Error loading Lottie animation: ${e}`);
63
68
  }
64
69
  })(), () => {
65
70
  var e;
66
- t = !0, r.current && (n && r.current.removeEventListener(n.name, n.callback), c && ((e = s.current) == null || e.disconnect()), r.current.destroy());
71
+ t = !0, r.current && (o && r.current.removeEventListener(o.name, o.callback), s && ((e = u.current) == null || e.disconnect()), r.current.destroy());
67
72
  };
68
- }, [m, n, o, c, l]), /* @__PURE__ */ E($, { ref: a, $width: h, $height: y });
73
+ }, [l, o, i, s, d, a]), /* @__PURE__ */ A($, { ref: c, $width: g, $height: y });
69
74
  }), D = w(O);
70
75
  export {
71
76
  D as default
@@ -1 +1 @@
1
- {"version":3,"file":"lottie-animation.js","sources":["../../../../src/features/ui/lottie-animation/lottie-animation.tsx"],"sourcesContent":["import type { ILottieAnimationProps, ILottieAnimationRef } from './types';\nimport type { AnimationEventName, AnimationItem, AnimationSegment } from 'lottie-web';\n\nimport lottie from 'lottie-web';\nimport { forwardRef, memo, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport { fetchLottie } from './helper';\n\nconst LottieAnimation = forwardRef<ILottieAnimationRef, ILottieAnimationProps>((props, ref) => {\n const {\n src,\n width = '100%',\n height = '100%',\n settings,\n eventListener,\n onRender,\n animateOnIntersect,\n } = props;\n\n const container = useRef<HTMLDivElement>(null);\n const animationInstance = useRef<AnimationItem | null>(null);\n const intersectionObserver = useRef<IntersectionObserver | null>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n playSegments: (segments: AnimationSegment, forceFlag?: boolean) =>\n animationInstance.current?.playSegments(segments, forceFlag),\n addEventListener: (eventName: string, callback: () => void) =>\n animationInstance.current?.addEventListener(eventName as AnimationEventName, callback),\n removeEventListener: (eventName: string, callback: () => void) =>\n animationInstance.current?.removeEventListener(eventName as AnimationEventName, callback),\n play: () => animationInstance.current?.play(),\n stop: () => animationInstance.current?.stop(),\n }),\n [],\n );\n\n useEffect(() => {\n let destroyed = false;\n\n const loadAnimation = async () => {\n try {\n const animationData = await fetchLottie(src);\n\n // Wait for layout\n // NOTE: Do not remove this as this is needed to fix canvas rendering on first layout.\n requestAnimationFrame(() => {\n if (!container.current || destroyed) return;\n\n animationInstance.current = lottie.loadAnimation({\n container: container.current,\n animationData,\n loop: true,\n autoplay: true,\n ...settings,\n });\n\n if (animateOnIntersect) {\n intersectionObserver.current = new IntersectionObserver(\n ([entry]) => {\n if (entry && entry.isIntersecting) {\n animationInstance.current?.play();\n } else {\n animationInstance.current?.pause();\n }\n },\n { threshold: 0 },\n );\n\n intersectionObserver.current.observe(container.current);\n }\n\n onRender?.();\n if (eventListener) {\n animationInstance.current.addEventListener(eventListener.name, eventListener.callback);\n }\n });\n } catch (error) {\n throw Error(`Error loading Lottie animation: ${error}`);\n }\n };\n\n loadAnimation();\n\n return () => {\n destroyed = true;\n if (animationInstance.current) {\n if (eventListener) {\n animationInstance.current.removeEventListener(eventListener.name, eventListener.callback);\n }\n\n if (animateOnIntersect) {\n intersectionObserver.current?.disconnect();\n }\n animationInstance.current.destroy();\n }\n };\n }, [src, eventListener, onRender, animateOnIntersect, settings]);\n\n return <FlexView ref={container} $width={width} $height={height} />;\n});\n\nexport default memo(LottieAnimation);\n"],"names":["LottieAnimation","forwardRef","props","ref","src","width","height","settings","eventListener","onRender","animateOnIntersect","container","useRef","animationInstance","intersectionObserver","useImperativeHandle","segments","forceFlag","_a","eventName","callback","useEffect","destroyed","animationData","fetchLottie","lottie","entry","_b","error","FlexView","LottieAnimation$1","memo"],"mappings":";;;;;AASA,MAAMA,IAAkBC,EAAuD,CAACC,GAAOC,MAAQ;AACvF,QAAA;AAAA,IACJ,KAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,QAAAC,IAAS;AAAA,IACT,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,oBAAAC;AAAA,EACE,IAAAR,GAEES,IAAYC,EAAuB,IAAI,GACvCC,IAAoBD,EAA6B,IAAI,GACrDE,IAAuBF,EAAoC,IAAI;AAErE,SAAAG;AAAA,IACEZ;AAAA,IACA,OAAO;AAAA,MACL,cAAc,CAACa,GAA4BC,MACzC;;AAAA,gBAAAC,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B,aAAaF,GAAUC;AAAA;AAAA,MACpD,kBAAkB,CAACE,GAAmBC,MACpC;;AAAA,gBAAAF,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B,iBAAiBC,GAAiCC;AAAA;AAAA,MAC/E,qBAAqB,CAACD,GAAmBC,MACvC;;AAAA,gBAAAF,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B,oBAAoBC,GAAiCC;AAAA;AAAA,MAClF,MAAM,MAAM;;AAAA,gBAAAF,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B;AAAA;AAAA,MACvC,MAAM,MAAM;;AAAA,gBAAAA,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B;AAAA;AAAA,IAAK;AAAA,IAE9C,CAAC;AAAA,EAAA,GAGHG,EAAU,MAAM;AACd,QAAIC,IAAY;AA4CF,YA1CQ,YAAY;AAC5B,UAAA;AACI,cAAAC,IAAgB,MAAMC,EAAYpB,CAAG;AAI3C,8BAAsB,MAAM;AACtB,UAAA,CAACO,EAAU,WAAWW,MAERT,EAAA,UAAUY,EAAO,cAAc;AAAA,YAC/C,WAAWd,EAAU;AAAA,YACrB,eAAAY;AAAA,YACA,MAAM;AAAA,YACN,UAAU;AAAA,YACV,GAAGhB;AAAA,UAAA,CACJ,GAEGG,MACFI,EAAqB,UAAU,IAAI;AAAA,YACjC,CAAC,CAACY,CAAK,MAAM;;AACP,cAAAA,KAASA,EAAM,kBACjBR,IAAAL,EAAkB,YAAlB,QAAAK,EAA2B,UAE3BS,IAAAd,EAAkB,YAAlB,QAAAc,EAA2B;AAAA,YAE/B;AAAA,YACA,EAAE,WAAW,EAAE;AAAA,UAAA,GAGIb,EAAA,QAAQ,QAAQH,EAAU,OAAO,IAG7CF,KAAA,QAAAA,KACPD,KACFK,EAAkB,QAAQ,iBAAiBL,EAAc,MAAMA,EAAc,QAAQ;AAAA,QACvF,CACD;AAAA,eACMoB,GAAO;AACR,cAAA,MAAM,mCAAmCA,CAAK,EAAE;AAAA,MACxD;AAAA,IAAA,MAKK,MAAM;;AACC,MAAAN,IAAA,IACRT,EAAkB,YAChBL,KACFK,EAAkB,QAAQ,oBAAoBL,EAAc,MAAMA,EAAc,QAAQ,GAGtFE,OACFQ,IAAAJ,EAAqB,YAArB,QAAAI,EAA8B,eAEhCL,EAAkB,QAAQ;IAC5B;AAAA,EACF,GACC,CAACT,GAAKI,GAAeC,GAAUC,GAAoBH,CAAQ,CAAC,qBAEvDsB,GAAS,EAAA,KAAKlB,GAAW,QAAQN,GAAO,SAASC,EAAQ,CAAA;AACnE,CAAC,GAEcwB,IAAAC,EAAK/B,CAAe;"}
1
+ {"version":3,"file":"lottie-animation.js","sources":["../../../../src/features/ui/lottie-animation/lottie-animation.tsx"],"sourcesContent":["import type { ILottieAnimationProps, ILottieAnimationRef } from './types';\nimport type { AnimationEventName, AnimationItem, AnimationSegment } from 'lottie-web';\n\nimport lottie from 'lottie-web';\nimport { forwardRef, memo, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport { fetchLottie } from './helper';\n\nconst LottieAnimation = forwardRef<ILottieAnimationRef, ILottieAnimationProps>((props, ref) => {\n const {\n src,\n width = '100%',\n height = '100%',\n settings,\n eventListener,\n onRender,\n onError,\n animateOnIntersect,\n } = props;\n\n const container = useRef<HTMLDivElement>(null);\n const animationInstance = useRef<AnimationItem | null>(null);\n const intersectionObserver = useRef<IntersectionObserver | null>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n playSegments: (segments: AnimationSegment, forceFlag?: boolean) =>\n animationInstance.current?.playSegments(segments, forceFlag),\n addEventListener: (eventName: string, callback: () => void) =>\n animationInstance.current?.addEventListener(eventName as AnimationEventName, callback),\n removeEventListener: (eventName: string, callback: () => void) =>\n animationInstance.current?.removeEventListener(eventName as AnimationEventName, callback),\n play: () => animationInstance.current?.play(),\n stop: () => animationInstance.current?.stop(),\n goToAndStop: (v, f) => animationInstance.current?.goToAndStop(v, f),\n }),\n [],\n );\n\n useEffect(() => {\n let destroyed = false;\n\n const loadAnimation = async () => {\n try {\n const animationData = await fetchLottie(src);\n\n // Wait for layout\n // NOTE: Do not remove this as this is needed to fix canvas rendering on first layout.\n requestAnimationFrame(() => {\n if (!container.current || destroyed) return;\n\n animationInstance.current = lottie.loadAnimation({\n container: container.current,\n animationData,\n loop: true,\n autoplay: true,\n ...settings,\n });\n\n if (animateOnIntersect) {\n intersectionObserver.current = new IntersectionObserver(\n ([entry]) => {\n if (entry && entry.isIntersecting) {\n animationInstance.current?.play();\n } else {\n animationInstance.current?.pause();\n }\n },\n { threshold: 0 },\n );\n\n intersectionObserver.current.observe(container.current);\n }\n\n onRender?.();\n if (eventListener) {\n animationInstance.current.addEventListener(eventListener.name, eventListener.callback);\n }\n });\n } catch (error) {\n onError?.();\n throw Error(`Error loading Lottie animation: ${error}`);\n }\n };\n\n loadAnimation();\n\n return () => {\n destroyed = true;\n if (animationInstance.current) {\n if (eventListener) {\n animationInstance.current.removeEventListener(eventListener.name, eventListener.callback);\n }\n\n if (animateOnIntersect) {\n intersectionObserver.current?.disconnect();\n }\n animationInstance.current.destroy();\n }\n };\n }, [src, eventListener, onRender, animateOnIntersect, settings, onError]);\n\n return <FlexView ref={container} $width={width} $height={height} />;\n});\n\nexport default memo(LottieAnimation);\n"],"names":["LottieAnimation","forwardRef","props","ref","src","width","height","settings","eventListener","onRender","onError","animateOnIntersect","container","useRef","animationInstance","intersectionObserver","useImperativeHandle","segments","forceFlag","_a","eventName","callback","v","f","useEffect","destroyed","animationData","fetchLottie","lottie","entry","_b","error","FlexView","LottieAnimation$1","memo"],"mappings":";;;;;AASA,MAAMA,IAAkBC,EAAuD,CAACC,GAAOC,MAAQ;AACvF,QAAA;AAAA,IACJ,KAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,QAAAC,IAAS;AAAA,IACT,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,oBAAAC;AAAA,EACE,IAAAT,GAEEU,IAAYC,EAAuB,IAAI,GACvCC,IAAoBD,EAA6B,IAAI,GACrDE,IAAuBF,EAAoC,IAAI;AAErE,SAAAG;AAAA,IACEb;AAAA,IACA,OAAO;AAAA,MACL,cAAc,CAACc,GAA4BC,MACzC;;AAAA,gBAAAC,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B,aAAaF,GAAUC;AAAA;AAAA,MACpD,kBAAkB,CAACE,GAAmBC,MACpC;;AAAA,gBAAAF,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B,iBAAiBC,GAAiCC;AAAA;AAAA,MAC/E,qBAAqB,CAACD,GAAmBC,MACvC;;AAAA,gBAAAF,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B,oBAAoBC,GAAiCC;AAAA;AAAA,MAClF,MAAM,MAAM;;AAAA,gBAAAF,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B;AAAA;AAAA,MACvC,MAAM,MAAM;;AAAA,gBAAAA,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B;AAAA;AAAA,MACvC,aAAa,CAACG,GAAGC,MAAM;;AAAA,gBAAAJ,IAAAL,EAAkB,YAAlB,gBAAAK,EAA2B,YAAYG,GAAGC;AAAA;AAAA,IAAC;AAAA,IAEpE,CAAC;AAAA,EAAA,GAGHC,EAAU,MAAM;AACd,QAAIC,IAAY;AA6CF,YA3CQ,YAAY;AAC5B,UAAA;AACI,cAAAC,IAAgB,MAAMC,EAAYvB,CAAG;AAI3C,8BAAsB,MAAM;AACtB,UAAA,CAACQ,EAAU,WAAWa,MAERX,EAAA,UAAUc,EAAO,cAAc;AAAA,YAC/C,WAAWhB,EAAU;AAAA,YACrB,eAAAc;AAAA,YACA,MAAM;AAAA,YACN,UAAU;AAAA,YACV,GAAGnB;AAAA,UAAA,CACJ,GAEGI,MACFI,EAAqB,UAAU,IAAI;AAAA,YACjC,CAAC,CAACc,CAAK,MAAM;;AACP,cAAAA,KAASA,EAAM,kBACjBV,IAAAL,EAAkB,YAAlB,QAAAK,EAA2B,UAE3BW,IAAAhB,EAAkB,YAAlB,QAAAgB,EAA2B;AAAA,YAE/B;AAAA,YACA,EAAE,WAAW,EAAE;AAAA,UAAA,GAGIf,EAAA,QAAQ,QAAQH,EAAU,OAAO,IAG7CH,KAAA,QAAAA,KACPD,KACFM,EAAkB,QAAQ,iBAAiBN,EAAc,MAAMA,EAAc,QAAQ;AAAA,QACvF,CACD;AAAA,eACMuB,GAAO;AACJ,cAAArB,KAAA,QAAAA,KACJ,MAAM,mCAAmCqB,CAAK,EAAE;AAAA,MACxD;AAAA,IAAA,MAKK,MAAM;;AACC,MAAAN,IAAA,IACRX,EAAkB,YAChBN,KACFM,EAAkB,QAAQ,oBAAoBN,EAAc,MAAMA,EAAc,QAAQ,GAGtFG,OACFQ,IAAAJ,EAAqB,YAArB,QAAAI,EAA8B,eAEhCL,EAAkB,QAAQ;IAC5B;AAAA,EACF,GACC,CAACV,GAAKI,GAAeC,GAAUE,GAAoBJ,GAAUG,CAAO,CAAC,qBAEhEsB,GAAS,EAAA,KAAKpB,GAAW,QAAQP,GAAO,SAASC,EAAQ,CAAA;AACnE,CAAC,GAEc2B,IAAAC,EAAKlC,CAAe;"}
@@ -73,7 +73,7 @@ const p = a.div(
73
73
  }
74
74
  }
75
75
  `
76
- ), c = a.div(
76
+ ), d = a.div(
77
77
  ({ $modalWidth: t }) => `
78
78
  max-height: calc(100vh - 142px);
79
79
  overflow-y: auto;
@@ -82,7 +82,7 @@ const p = a.div(
82
82
  max-height: 100vh;
83
83
  }
84
84
  }`
85
- ), m = a.div(
85
+ ), c = a.div(
86
86
  ({ theme: { colors: t }, $modalWidth: o }) => `
87
87
  position: absolute;
88
88
  top: -56px;
@@ -100,7 +100,7 @@ const p = a.div(
100
100
  color: ${t.BLACK_1};
101
101
  }
102
102
  `
103
- ), d = a.div`
103
+ ), m = a.div`
104
104
  display: flex;
105
105
  align-items: center;
106
106
  justify-content: center;
@@ -151,6 +151,36 @@ const p = a.div(
151
151
  }
152
152
  `
153
153
  ), h = a.div(
154
+ ({ theme: { colors: t, zIndex: o }, $isClosing: e }) => `
155
+ position: fixed;
156
+ top: 0;
157
+ left: 0;
158
+ right: 0;
159
+ bottom: 0;
160
+ background-color: ${t.TRANSPARENT};
161
+ display: flex;
162
+ animation: ${e ? "backdropFadeOut" : "backdropFadeIn"} 0.2s ease-out forwards;
163
+ z-index: ${o.MODAL};
164
+
165
+ @keyframes backdropFadeIn {
166
+ from {
167
+ opacity: 0;
168
+ }
169
+ to {
170
+ opacity: 1;
171
+ }
172
+ }
173
+
174
+ @keyframes backdropFadeOut {
175
+ from {
176
+ opacity: 1;
177
+ }
178
+ to {
179
+ opacity: 0;
180
+ }
181
+ }
182
+ `
183
+ ), x = a.div(
154
184
  ({ $isClosing: t }) => `
155
185
  width: 100%;
156
186
  height: max-content;
@@ -186,11 +216,12 @@ const p = a.div(
186
216
  );
187
217
  export {
188
218
  l as BaseModal,
189
- c as BaseModalContent,
190
- h as BottomSheetModal,
191
- m as CloseButtonContainer,
219
+ d as BaseModalContent,
220
+ x as BottomSheetModal,
221
+ c as CloseButtonContainer,
192
222
  p as ModalContainer,
193
- d as ModalLoaderWrapper,
194
- f as SpotlightModal
223
+ m as ModalLoaderWrapper,
224
+ f as SpotlightModal,
225
+ h as TransparentModalContainer
195
226
  };
196
227
  //# sourceMappingURL=modal-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-styled.js","sources":["../../../../src/features/ui/modals/modal-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nconst ModalContainer = styled.div<{ $isClosing?: boolean }>(\n ({ theme: { colors, zIndex }, $isClosing }) => `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${colors.BLACK_T_60};\n backdrop-filter: blur(40px);\n display: flex;\n animation: ${$isClosing ? 'backdropFadeOut' : 'backdropFadeIn'} 0.2s ease-out forwards;\n z-index: ${zIndex.MODAL};\n\n @keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n \n @keyframes backdropFadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n`,\n);\n\n/**\n * Base modal container with customizable width and animation state\n */\nconst BaseModal = styled.div<{\n $isClosing?: boolean;\n $width: string;\n}>(\n ({ theme: { colors }, $isClosing, $width }) => `\n position: relative;\n align-self: center;\n margin: 0 auto;\n width: ${$width};\n background-color: ${colors.WHITE_1};\n border: 1px solid ${colors.BLACK_1};\n transform-origin: center center;\n animation: ${\n $isClosing ? 'modalDisappear' : 'modalAppear'\n } 0.5s cubic-bezier(0.19, 1, 0.22, 1) forwards;\n box-shadow: 0px 10px 20px 0px rgba(0, 0, 0, 0.20);\n \n /* Responsive behavior for smaller screens */\n @media (max-width: calc(${$width} + 80px)) {\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n border: none;\n }\n \n @keyframes modalAppear {\n 0% {\n opacity: 0;\n transform: perspective(1200px) translateZ(-50px) translateY(10px) scale(0.98);\n }\n 100% {\n opacity: 1;\n transform: perspective(1200px) translateZ(0) translateY(0) scale(1);\n }\n }\n \n @keyframes modalDisappear {\n 0% {\n opacity: 1;\n transform: perspective(1200px) translateZ(0) translateY(0) scale(1);\n }\n 100% {\n opacity: 0;\n transform: perspective(1200px) translateZ(-50px) translateY(10px) scale(0.98);\n }\n }\n`,\n);\n\n/**\n * Scrollable content container inside the modal\n */\nconst BaseModalContent = styled.div<{ $modalWidth: string }>(\n ({ $modalWidth }) => `\n max-height: calc(100vh - 142px);\n overflow-y: auto;\n\n @media (max-width: calc(${$modalWidth} + 80px)) {\n max-height: 100vh;\n }\n}`,\n);\n\n/**\n * Container for the close button with responsive positioning\n */\nconst CloseButtonContainer = styled.div<{ $modalWidth: string }>(\n ({ theme: { colors }, $modalWidth }) => `\n position: absolute;\n top: -56px;\n right: -40px;\n color: ${colors.WHITE_1};\n transition: all 0.2s ease;\n \n &:hover {\n transform: scale(1.05);\n }\n\n @media (max-width: calc(${$modalWidth} + 80px)) {\n top: 16px;\n right: 16px;\n color: ${colors.BLACK_1};\n }\n`,\n);\n\nconst ModalLoaderWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n width: 100%;\n`;\n\nconst spotlightWidth = 720;\nconst spotlightAnimationStartDuration = 800;\nconst spotlightAnimationEndDuration = 500;\n\nconst SpotlightModal = styled.div<{\n $isClosing?: boolean;\n}>(\n ({ $isClosing }) => `\n position: absolute;\n width: ${spotlightWidth}px;\n height: 100%;\n left: 50%;\n margin-left: ${-(spotlightWidth / 2)}px;\n clip-path: polygon(calc(50% - 100px) 0, calc(50% + 100px) 0, 100% 100%, 0 100%);\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 1) 0%,\n rgba(0, 0, 0, 0) 100%\n );\n animation: openSpotlight;\n animation-duration: ${spotlightAnimationStartDuration}ms;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n opacity: 0;\n ${\n $isClosing\n ? `\n animation: closeSpotlight;\n animation-duration: ${spotlightAnimationEndDuration}ms;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n opacity: 1;\n `\n : ''\n }\n\n @keyframes openSpotlight {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes closeSpotlight {\n from {\n transform: rotateY(0);\n }\n to {\n transform: rotateY(90deg);\n }\n }\n`,\n);\n\nconst BottomSheetModal = styled.div<{ $isClosing?: boolean }>(\n ({ $isClosing }) => `\n width: 100%;\n height: max-content;\n overflow: auto;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n animation: ${$isClosing ? 'slideOut' : 'slideIn'} 0.3s forwards;\n\n @keyframes slideIn {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0%);\n opacity: 1;\n }\n }\n\n @keyframes slideOut {\n from {\n transform: translateY(0%);\n opacity: 1;\n }\n to {\n transform: translateY(100%);\n opacity: 0;\n }\n }\n `,\n);\n\nexport {\n ModalContainer,\n BaseModal,\n BaseModalContent,\n CloseButtonContainer,\n SpotlightModal,\n ModalLoaderWrapper,\n BottomSheetModal,\n};\n"],"names":["ModalContainer","styled","colors","zIndex","$isClosing","BaseModal","$width","BaseModalContent","$modalWidth","CloseButtonContainer","ModalLoaderWrapper","spotlightWidth","spotlightAnimationStartDuration","spotlightAnimationEndDuration","SpotlightModal","BottomSheetModal"],"mappings":";AAEA,MAAMA,IAAiBC,EAAO;AAAA,EAC5B,CAAC,EAAE,OAAO,EAAE,QAAAC,GAAQ,QAAAC,EAAO,GAAG,YAAAC,QAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAM3BF,EAAO,UAAU;AAAA;AAAA;AAAA,eAGxBE,IAAa,oBAAoB,gBAAgB;AAAA,aACnDD,EAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBzB,GAKME,IAAYJ,EAAO;AAAA,EAIvB,CAAC,EAAE,OAAO,EAAE,QAAAC,EAAU,GAAA,YAAAE,GAAY,QAAAE,QAAa;AAAA;AAAA;AAAA;AAAA,WAItCA,CAAM;AAAA,sBACKJ,EAAO,OAAO;AAAA,sBACdA,EAAO,OAAO;AAAA;AAAA,eAGhCE,IAAa,mBAAmB,aAClC;AAAA;AAAA;AAAA;AAAA,4BAI0BE,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BlC,GAKMC,IAAmBN,EAAO;AAAA,EAC9B,CAAC,EAAE,aAAAO,EAAA,MAAkB;AAAA;AAAA;AAAA;AAAA,4BAIKA,CAAW;AAAA;AAAA;AAAA;AAIvC,GAKMC,IAAuBR,EAAO;AAAA,EAClC,CAAC,EAAE,OAAO,EAAE,QAAAC,EAAO,GAAG,aAAAM,EAAkB,MAAA;AAAA;AAAA;AAAA;AAAA,WAI/BN,EAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAOGM,CAAW;AAAA;AAAA;AAAA,aAG1BN,EAAO,OAAO;AAAA;AAAA;AAG3B,GAEMQ,IAAqBT,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQ5BU,IAAiB,KACjBC,IAAkC,KAClCC,IAAgC,KAEhCC,IAAiBb,EAAO;AAAA,EAG5B,CAAC,EAAE,YAAAG,EAAA,MAAiB;AAAA;AAAA,WAEXO,CAAc;AAAA;AAAA;AAAA,iBAGR,EAAEA,IAAiB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAQdC,CAA+B;AAAA;AAAA;AAAA;AAAA,IAKnDR,IACI;AAAA;AAAA,4BAEoBS,CAA6B;AAAA;AAAA;AAAA;AAAA,QAKjD,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBF,GAEME,IAAmBd,EAAO;AAAA,EAC9B,CAAC,EAAE,YAAAG,EAAA,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAQLA,IAAa,aAAa,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBpD;"}
1
+ {"version":3,"file":"modal-styled.js","sources":["../../../../src/features/ui/modals/modal-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nconst ModalContainer = styled.div<{ $isClosing?: boolean }>(\n ({ theme: { colors, zIndex }, $isClosing }) => `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${colors.BLACK_T_60};\n backdrop-filter: blur(40px);\n display: flex;\n animation: ${$isClosing ? 'backdropFadeOut' : 'backdropFadeIn'} 0.2s ease-out forwards;\n z-index: ${zIndex.MODAL};\n\n @keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n \n @keyframes backdropFadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n`,\n);\n\n/**\n * Base modal container with customizable width and animation state\n */\nconst BaseModal = styled.div<{\n $isClosing?: boolean;\n $width: string;\n}>(\n ({ theme: { colors }, $isClosing, $width }) => `\n position: relative;\n align-self: center;\n margin: 0 auto;\n width: ${$width};\n background-color: ${colors.WHITE_1};\n border: 1px solid ${colors.BLACK_1};\n transform-origin: center center;\n animation: ${\n $isClosing ? 'modalDisappear' : 'modalAppear'\n } 0.5s cubic-bezier(0.19, 1, 0.22, 1) forwards;\n box-shadow: 0px 10px 20px 0px rgba(0, 0, 0, 0.20);\n \n /* Responsive behavior for smaller screens */\n @media (max-width: calc(${$width} + 80px)) {\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n border: none;\n }\n \n @keyframes modalAppear {\n 0% {\n opacity: 0;\n transform: perspective(1200px) translateZ(-50px) translateY(10px) scale(0.98);\n }\n 100% {\n opacity: 1;\n transform: perspective(1200px) translateZ(0) translateY(0) scale(1);\n }\n }\n \n @keyframes modalDisappear {\n 0% {\n opacity: 1;\n transform: perspective(1200px) translateZ(0) translateY(0) scale(1);\n }\n 100% {\n opacity: 0;\n transform: perspective(1200px) translateZ(-50px) translateY(10px) scale(0.98);\n }\n }\n`,\n);\n\n/**\n * Scrollable content container inside the modal\n */\nconst BaseModalContent = styled.div<{ $modalWidth: string }>(\n ({ $modalWidth }) => `\n max-height: calc(100vh - 142px);\n overflow-y: auto;\n\n @media (max-width: calc(${$modalWidth} + 80px)) {\n max-height: 100vh;\n }\n}`,\n);\n\n/**\n * Container for the close button with responsive positioning\n */\nconst CloseButtonContainer = styled.div<{ $modalWidth: string }>(\n ({ theme: { colors }, $modalWidth }) => `\n position: absolute;\n top: -56px;\n right: -40px;\n color: ${colors.WHITE_1};\n transition: all 0.2s ease;\n \n &:hover {\n transform: scale(1.05);\n }\n\n @media (max-width: calc(${$modalWidth} + 80px)) {\n top: 16px;\n right: 16px;\n color: ${colors.BLACK_1};\n }\n`,\n);\n\nconst ModalLoaderWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n width: 100%;\n`;\n\nconst spotlightWidth = 720;\nconst spotlightAnimationStartDuration = 800;\nconst spotlightAnimationEndDuration = 500;\n\nconst SpotlightModal = styled.div<{\n $isClosing?: boolean;\n}>(\n ({ $isClosing }) => `\n position: absolute;\n width: ${spotlightWidth}px;\n height: 100%;\n left: 50%;\n margin-left: ${-(spotlightWidth / 2)}px;\n clip-path: polygon(calc(50% - 100px) 0, calc(50% + 100px) 0, 100% 100%, 0 100%);\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 1) 0%,\n rgba(0, 0, 0, 0) 100%\n );\n animation: openSpotlight;\n animation-duration: ${spotlightAnimationStartDuration}ms;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n opacity: 0;\n ${\n $isClosing\n ? `\n animation: closeSpotlight;\n animation-duration: ${spotlightAnimationEndDuration}ms;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n opacity: 1;\n `\n : ''\n }\n\n @keyframes openSpotlight {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes closeSpotlight {\n from {\n transform: rotateY(0);\n }\n to {\n transform: rotateY(90deg);\n }\n }\n`,\n);\n\nconst TransparentModalContainer = styled.div<{ $isClosing?: boolean }>(\n ({ theme: { colors, zIndex }, $isClosing }) => `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${colors.TRANSPARENT};\n display: flex;\n animation: ${$isClosing ? 'backdropFadeOut' : 'backdropFadeIn'} 0.2s ease-out forwards;\n z-index: ${zIndex.MODAL};\n\n @keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n \n @keyframes backdropFadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n`,\n);\n\nconst BottomSheetModal = styled.div<{ $isClosing?: boolean }>(\n ({ $isClosing }) => `\n width: 100%;\n height: max-content;\n overflow: auto;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n animation: ${$isClosing ? 'slideOut' : 'slideIn'} 0.3s forwards;\n\n @keyframes slideIn {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0%);\n opacity: 1;\n }\n }\n\n @keyframes slideOut {\n from {\n transform: translateY(0%);\n opacity: 1;\n }\n to {\n transform: translateY(100%);\n opacity: 0;\n }\n }\n `,\n);\n\nexport {\n ModalContainer,\n BaseModal,\n BaseModalContent,\n CloseButtonContainer,\n TransparentModalContainer,\n SpotlightModal,\n ModalLoaderWrapper,\n BottomSheetModal,\n};\n"],"names":["ModalContainer","styled","colors","zIndex","$isClosing","BaseModal","$width","BaseModalContent","$modalWidth","CloseButtonContainer","ModalLoaderWrapper","spotlightWidth","spotlightAnimationStartDuration","spotlightAnimationEndDuration","SpotlightModal","TransparentModalContainer","BottomSheetModal"],"mappings":";AAEA,MAAMA,IAAiBC,EAAO;AAAA,EAC5B,CAAC,EAAE,OAAO,EAAE,QAAAC,GAAQ,QAAAC,EAAO,GAAG,YAAAC,QAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAM3BF,EAAO,UAAU;AAAA;AAAA;AAAA,eAGxBE,IAAa,oBAAoB,gBAAgB;AAAA,aACnDD,EAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBzB,GAKME,IAAYJ,EAAO;AAAA,EAIvB,CAAC,EAAE,OAAO,EAAE,QAAAC,EAAU,GAAA,YAAAE,GAAY,QAAAE,QAAa;AAAA;AAAA;AAAA;AAAA,WAItCA,CAAM;AAAA,sBACKJ,EAAO,OAAO;AAAA,sBACdA,EAAO,OAAO;AAAA;AAAA,eAGhCE,IAAa,mBAAmB,aAClC;AAAA;AAAA;AAAA;AAAA,4BAI0BE,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BlC,GAKMC,IAAmBN,EAAO;AAAA,EAC9B,CAAC,EAAE,aAAAO,EAAA,MAAkB;AAAA;AAAA;AAAA;AAAA,4BAIKA,CAAW;AAAA;AAAA;AAAA;AAIvC,GAKMC,IAAuBR,EAAO;AAAA,EAClC,CAAC,EAAE,OAAO,EAAE,QAAAC,EAAO,GAAG,aAAAM,EAAkB,MAAA;AAAA;AAAA;AAAA;AAAA,WAI/BN,EAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAOGM,CAAW;AAAA;AAAA;AAAA,aAG1BN,EAAO,OAAO;AAAA;AAAA;AAG3B,GAEMQ,IAAqBT,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQ5BU,IAAiB,KACjBC,IAAkC,KAClCC,IAAgC,KAEhCC,IAAiBb,EAAO;AAAA,EAG5B,CAAC,EAAE,YAAAG,EAAA,MAAiB;AAAA;AAAA,WAEXO,CAAc;AAAA;AAAA;AAAA,iBAGR,EAAEA,IAAiB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAQdC,CAA+B;AAAA;AAAA;AAAA;AAAA,IAKnDR,IACI;AAAA;AAAA,4BAEoBS,CAA6B;AAAA;AAAA;AAAA;AAAA,QAKjD,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBF,GAEME,IAA4Bd,EAAO;AAAA,EACvC,CAAC,EAAE,OAAO,EAAE,QAAAC,GAAQ,QAAAC,EAAO,GAAG,YAAAC,QAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAM3BF,EAAO,WAAW;AAAA;AAAA,eAEzBE,IAAa,oBAAoB,gBAAgB;AAAA,aACnDD,EAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBzB,GAEMa,IAAmBf,EAAO;AAAA,EAC9B,CAAC,EAAE,YAAAG,EAAA,MAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAQLA,IAAa,aAAa,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBpD;"}
@@ -1,35 +1,35 @@
1
1
  import { jsx as r, jsxs as f } from "react/jsx-runtime";
2
- import { captureException as u } from "@sentry/browser";
3
- import { memo as $, useCallback as g, Suspense as n } from "react";
4
- import { ErrorBoundary as a } from "react-error-boundary";
5
- import E from "../../../assets/line-icons/icons/cross.js";
6
- import h from "../error/error.js";
7
- import M from "../buttons/clickable/clickable.js";
2
+ import { captureException as k } from "@sentry/browser";
3
+ import { memo as $, useCallback as g, Suspense as a } from "react";
4
+ import { ErrorBoundary as h } from "react-error-boundary";
5
+ import M from "../../../assets/line-icons/icons/cross.js";
6
+ import c from "../error/error.js";
7
+ import E from "../buttons/clickable/clickable.js";
8
8
  import x from "../layout/flex-view.js";
9
- import c from "../loader/app-loader/app-loader.js";
10
- import { ModalContainer as d, BottomSheetModal as v, ModalLoaderWrapper as C, SpotlightModal as B, BaseModal as S, CloseButtonContainer as W, BaseModalContent as w } from "./modal-styled.js";
11
- const q = $(({ modal: b, isClosing: o = !1, onClose: m }) => {
12
- const { renderAs: s, element: e, modalWidth: l, isDismissable: p } = b, i = g((t) => {
13
- u(t);
14
- }, []), k = g((t) => {
15
- t.stopPropagation();
9
+ import d from "../loader/app-loader/app-loader.js";
10
+ import { ModalContainer as s, BottomSheetModal as v, ModalLoaderWrapper as u, SpotlightModal as B, TransparentModalContainer as S, BaseModal as W, CloseButtonContainer as w, BaseModalContent as j } from "./modal-styled.js";
11
+ const q = $(({ modal: C, isClosing: o = !1, onClose: m }) => {
12
+ const { renderAs: l, element: e, modalWidth: i, isDismissable: p } = C, t = g((n) => {
13
+ k(n);
14
+ }, []), b = g((n) => {
15
+ n.stopPropagation();
16
16
  }, []);
17
- return s === "bottom-sheet" ? /* @__PURE__ */ r(d, { $isClosing: o, onClick: p ? m : () => null, children: /* @__PURE__ */ r(v, { $isClosing: o, onClick: k, children: /* @__PURE__ */ r(
18
- a,
17
+ return l === "bottom-sheet" ? /* @__PURE__ */ r(s, { $isClosing: o, onClick: p ? m : () => null, children: /* @__PURE__ */ r(v, { $isClosing: o, onClick: b, children: /* @__PURE__ */ r(
18
+ h,
19
19
  {
20
- fallback: /* @__PURE__ */ r(x, { $gap: 24, children: /* @__PURE__ */ r(h, { height: "100%" }) }),
21
- onError: i,
22
- children: /* @__PURE__ */ r(n, { fallback: /* @__PURE__ */ r(c, { height: "50vh" }), children: e })
20
+ fallback: /* @__PURE__ */ r(x, { $gap: 24, children: /* @__PURE__ */ r(c, { height: "100%" }) }),
21
+ onError: t,
22
+ children: /* @__PURE__ */ r(a, { fallback: /* @__PURE__ */ r(d, { height: "50vh" }), children: e })
23
23
  }
24
- ) }) }) : s === "spotlight" ? /* @__PURE__ */ r(d, { $isClosing: o, children: /* @__PURE__ */ r(
25
- a,
24
+ ) }) }) : l === "spotlight" ? /* @__PURE__ */ r(s, { $isClosing: o, children: /* @__PURE__ */ r(
25
+ h,
26
26
  {
27
- fallback: /* @__PURE__ */ r(C, { children: /* @__PURE__ */ r(h, { height: "100vh" }) }),
28
- onError: i,
27
+ fallback: /* @__PURE__ */ r(u, { children: /* @__PURE__ */ r(c, { height: "100vh" }) }),
28
+ onError: t,
29
29
  children: /* @__PURE__ */ f(
30
- n,
30
+ a,
31
31
  {
32
- fallback: /* @__PURE__ */ r(C, { children: /* @__PURE__ */ r(c, { height: "100vh" }) }),
32
+ fallback: /* @__PURE__ */ r(u, { children: /* @__PURE__ */ r(d, { height: "100vh" }) }),
33
33
  children: [
34
34
  /* @__PURE__ */ r(B, { $isClosing: o }),
35
35
  e
@@ -37,14 +37,14 @@ const q = $(({ modal: b, isClosing: o = !1, onClose: m }) => {
37
37
  }
38
38
  )
39
39
  }
40
- ) }) : /* @__PURE__ */ r(d, { $isClosing: o, children: /* @__PURE__ */ f(S, { $isClosing: o, $width: l, children: [
41
- p !== !1 && /* @__PURE__ */ r(W, { $modalWidth: l, children: /* @__PURE__ */ r(M, { label: "Close", onClick: m, children: /* @__PURE__ */ r(E, { width: 40, height: 40 }) }) }),
42
- /* @__PURE__ */ r(w, { $modalWidth: l, children: /* @__PURE__ */ r(
43
- a,
40
+ ) }) : l === "fullscreen-transparent" ? /* @__PURE__ */ r(S, { $isClosing: o, children: e }) : /* @__PURE__ */ r(s, { $isClosing: o, children: /* @__PURE__ */ f(W, { $isClosing: o, $width: i, children: [
41
+ p !== !1 && /* @__PURE__ */ r(w, { $modalWidth: i, children: /* @__PURE__ */ r(E, { label: "Close", onClick: m, children: /* @__PURE__ */ r(M, { width: 40, height: 40 }) }) }),
42
+ /* @__PURE__ */ r(j, { $modalWidth: i, children: /* @__PURE__ */ r(
43
+ h,
44
44
  {
45
- fallback: /* @__PURE__ */ r(h, { height: "50vh", size: "compact" }),
46
- onError: i,
47
- children: /* @__PURE__ */ r(n, { fallback: /* @__PURE__ */ r(c, { height: "50vh" }), children: e })
45
+ fallback: /* @__PURE__ */ r(c, { height: "50vh", size: "compact" }),
46
+ onError: t,
47
+ children: /* @__PURE__ */ r(a, { fallback: /* @__PURE__ */ r(d, { height: "50vh" }), children: e })
48
48
  }
49
49
  ) })
50
50
  ] }) });
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sources":["../../../../src/features/ui/modals/modal.tsx"],"sourcesContent":["import type { IModalProps } from './modal-types';\nimport type { FC } from 'react';\n\nimport { captureException } from '@sentry/browser';\nimport { memo, Suspense, useCallback } from 'react';\nimport { ErrorBoundary } from 'react-error-boundary';\n\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport Error from '../../ui/error/error';\nimport Clickable from '../buttons/clickable/clickable';\nimport FlexView from '../layout/flex-view';\nimport AppLoader from '../loader/app-loader/app-loader';\nimport * as Styled from './modal-styled';\n\n/**\n * Modal component that renders modal content with close button\n * Handles animation state for entry and exit transitions\n */\nconst Modal: FC<IModalProps> = memo(({ modal, isClosing = false, onClose }) => {\n const { renderAs, element, modalWidth, isDismissable } = modal;\n\n const sentryCaptureException = useCallback((error: Error) => {\n captureException(error);\n }, []);\n\n const handleStopPropagation = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n if (renderAs === 'bottom-sheet') {\n return (\n <Styled.ModalContainer $isClosing={isClosing} onClick={isDismissable ? onClose : () => null}>\n <Styled.BottomSheetModal $isClosing={isClosing} onClick={handleStopPropagation}>\n <ErrorBoundary\n fallback={\n <FlexView $gap={24}>\n <Error height=\"100%\" />\n </FlexView>\n }\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BottomSheetModal>\n </Styled.ModalContainer>\n );\n }\n\n if (renderAs === 'spotlight') {\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <ErrorBoundary\n fallback={\n <Styled.ModalLoaderWrapper>\n <Error height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n onError={sentryCaptureException}\n >\n <Suspense\n fallback={\n <Styled.ModalLoaderWrapper>\n <AppLoader height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n >\n <Styled.SpotlightModal $isClosing={isClosing} />\n {element}\n </Suspense>\n </ErrorBoundary>\n </Styled.ModalContainer>\n );\n }\n\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <Styled.BaseModal $isClosing={isClosing} $width={modalWidth}>\n {isDismissable !== false && (\n <Styled.CloseButtonContainer $modalWidth={modalWidth}>\n <Clickable label=\"Close\" onClick={onClose}>\n <CrossIcon width={40} height={40} />\n </Clickable>\n </Styled.CloseButtonContainer>\n )}\n <Styled.BaseModalContent $modalWidth={modalWidth}>\n <ErrorBoundary\n fallback={<Error height=\"50vh\" size=\"compact\" />}\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BaseModalContent>\n </Styled.BaseModal>\n </Styled.ModalContainer>\n );\n});\n\nexport default Modal;\n"],"names":["Modal","memo","modal","isClosing","onClose","renderAs","element","modalWidth","isDismissable","sentryCaptureException","useCallback","error","captureException","handleStopPropagation","e","Styled.ModalContainer","Styled.BottomSheetModal","jsx","ErrorBoundary","FlexView","Error","Suspense","AppLoader","Styled.ModalLoaderWrapper","jsxs","Styled.SpotlightModal","Styled.BaseModal","Styled.CloseButtonContainer","Clickable","CrossIcon","Styled.BaseModalContent"],"mappings":";;;;;;;;;;AAkBM,MAAAA,IAAyBC,EAAK,CAAC,EAAE,OAAAC,GAAO,WAAAC,IAAY,IAAO,SAAAC,QAAc;AAC7E,QAAM,EAAE,UAAAC,GAAU,SAAAC,GAAS,YAAAC,GAAY,eAAAC,MAAkBN,GAEnDO,IAAyBC,EAAY,CAACC,MAAiB;AAC3D,IAAAC,EAAiBD,CAAK;AAAA,EACxB,GAAG,CAAE,CAAA,GAECE,IAAwBH,EAAY,CAACI,MAAwB;AACjE,IAAAA,EAAE,gBAAgB;AAAA,EACpB,GAAG,CAAE,CAAA;AAEL,SAAIT,MAAa,mCAEZU,GAAA,EAAsB,YAAYZ,GAAW,SAASK,IAAgBJ,IAAU,MAAM,MACrF,4BAACY,GAAA,EAAwB,YAAYb,GAAW,SAASU,GACvD,UAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,4BACGC,GAAS,EAAA,MAAM,IACd,UAAC,gBAAAF,EAAAG,GAAA,EAAM,QAAO,OAAA,CAAO,EACvB,CAAA;AAAA,MAEF,SAASX;AAAA,MAET,UAAA,gBAAAQ,EAACI,KAAS,UAAU,gBAAAJ,EAACK,KAAU,QAAO,OAAO,CAAA,GAAK,UAAQhB,EAAA,CAAA;AAAA,IAAA;AAAA,EAAA,EAE9D,CAAA,EACF,CAAA,IAIAD,MAAa,cAEZ,gBAAAY,EAAAF,GAAA,EAAsB,YAAYZ,GACjC,UAAA,gBAAAc;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,4BACGK,GAAA,EACC,UAAC,gBAAAN,EAAAG,GAAA,EAAM,QAAO,QAAQ,CAAA,GACxB;AAAA,MAEF,SAASX;AAAA,MAET,UAAA,gBAAAe;AAAA,QAACH;AAAA,QAAA;AAAA,UACC,4BACGE,GAAA,EACC,UAAC,gBAAAN,EAAAK,GAAA,EAAU,QAAO,QAAQ,CAAA,GAC5B;AAAA,UAGF,UAAA;AAAA,YAAA,gBAAAL,EAACQ,GAAA,EAAsB,YAAYtB,EAAW,CAAA;AAAA,YAC7CG;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAEJ,EAAA,CAAA,IAKD,gBAAAW,EAAAF,GAAA,EAAsB,YAAYZ,GACjC,UAAC,gBAAAqB,EAAAE,GAAA,EAAiB,YAAYvB,GAAW,QAAQI,GAC9C,UAAA;AAAA,IAAkBC,MAAA,wBAChBmB,GAAA,EAA4B,aAAapB,GACxC,4BAACqB,GAAU,EAAA,OAAM,SAAQ,SAASxB,GAChC,4BAACyB,GAAU,EAAA,OAAO,IAAI,QAAQ,IAAI,GACpC,EACF,CAAA;AAAA,IAED,gBAAAZ,EAAAa,GAAA,EAAwB,aAAavB,GACpC,UAAA,gBAAAU;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAW,gBAAAD,EAAAG,GAAA,EAAM,QAAO,QAAO,MAAK,WAAU;AAAA,QAC9C,SAASX;AAAA,QAET,UAAA,gBAAAQ,EAACI,KAAS,UAAU,gBAAAJ,EAACK,KAAU,QAAO,OAAO,CAAA,GAAK,UAAQhB,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA,GAE9D;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"modal.js","sources":["../../../../src/features/ui/modals/modal.tsx"],"sourcesContent":["import type { IModalProps } from './modal-types';\nimport type { FC } from 'react';\n\nimport { captureException } from '@sentry/browser';\nimport { memo, Suspense, useCallback } from 'react';\nimport { ErrorBoundary } from 'react-error-boundary';\n\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport Error from '../../ui/error/error';\nimport Clickable from '../buttons/clickable/clickable';\nimport FlexView from '../layout/flex-view';\nimport AppLoader from '../loader/app-loader/app-loader';\nimport * as Styled from './modal-styled';\n\n/**\n * Modal component that renders modal content with close button\n * Handles animation state for entry and exit transitions\n */\nconst Modal: FC<IModalProps> = memo(({ modal, isClosing = false, onClose }) => {\n const { renderAs, element, modalWidth, isDismissable } = modal;\n\n const sentryCaptureException = useCallback((error: Error) => {\n captureException(error);\n }, []);\n\n const handleStopPropagation = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n if (renderAs === 'bottom-sheet') {\n return (\n <Styled.ModalContainer $isClosing={isClosing} onClick={isDismissable ? onClose : () => null}>\n <Styled.BottomSheetModal $isClosing={isClosing} onClick={handleStopPropagation}>\n <ErrorBoundary\n fallback={\n <FlexView $gap={24}>\n <Error height=\"100%\" />\n </FlexView>\n }\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BottomSheetModal>\n </Styled.ModalContainer>\n );\n }\n\n if (renderAs === 'spotlight') {\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <ErrorBoundary\n fallback={\n <Styled.ModalLoaderWrapper>\n <Error height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n onError={sentryCaptureException}\n >\n <Suspense\n fallback={\n <Styled.ModalLoaderWrapper>\n <AppLoader height=\"100vh\" />\n </Styled.ModalLoaderWrapper>\n }\n >\n <Styled.SpotlightModal $isClosing={isClosing} />\n {element}\n </Suspense>\n </ErrorBoundary>\n </Styled.ModalContainer>\n );\n }\n\n if (renderAs === 'fullscreen-transparent') {\n return (\n <Styled.TransparentModalContainer $isClosing={isClosing}>\n {element}\n </Styled.TransparentModalContainer>\n );\n }\n\n return (\n <Styled.ModalContainer $isClosing={isClosing}>\n <Styled.BaseModal $isClosing={isClosing} $width={modalWidth}>\n {isDismissable !== false && (\n <Styled.CloseButtonContainer $modalWidth={modalWidth}>\n <Clickable label=\"Close\" onClick={onClose}>\n <CrossIcon width={40} height={40} />\n </Clickable>\n </Styled.CloseButtonContainer>\n )}\n <Styled.BaseModalContent $modalWidth={modalWidth}>\n <ErrorBoundary\n fallback={<Error height=\"50vh\" size=\"compact\" />}\n onError={sentryCaptureException}\n >\n <Suspense fallback={<AppLoader height=\"50vh\" />}>{element}</Suspense>\n </ErrorBoundary>\n </Styled.BaseModalContent>\n </Styled.BaseModal>\n </Styled.ModalContainer>\n );\n});\n\nexport default Modal;\n"],"names":["Modal","memo","modal","isClosing","onClose","renderAs","element","modalWidth","isDismissable","sentryCaptureException","useCallback","error","captureException","handleStopPropagation","e","Styled.ModalContainer","Styled.BottomSheetModal","jsx","ErrorBoundary","FlexView","Error","Suspense","AppLoader","Styled.ModalLoaderWrapper","jsxs","Styled.SpotlightModal","Styled.TransparentModalContainer","Styled.BaseModal","Styled.CloseButtonContainer","Clickable","CrossIcon","Styled.BaseModalContent"],"mappings":";;;;;;;;;;AAkBM,MAAAA,IAAyBC,EAAK,CAAC,EAAE,OAAAC,GAAO,WAAAC,IAAY,IAAO,SAAAC,QAAc;AAC7E,QAAM,EAAE,UAAAC,GAAU,SAAAC,GAAS,YAAAC,GAAY,eAAAC,MAAkBN,GAEnDO,IAAyBC,EAAY,CAACC,MAAiB;AAC3D,IAAAC,EAAiBD,CAAK;AAAA,EACxB,GAAG,CAAE,CAAA,GAECE,IAAwBH,EAAY,CAACI,MAAwB;AACjE,IAAAA,EAAE,gBAAgB;AAAA,EACpB,GAAG,CAAE,CAAA;AAEL,SAAIT,MAAa,mCAEZU,GAAA,EAAsB,YAAYZ,GAAW,SAASK,IAAgBJ,IAAU,MAAM,MACrF,4BAACY,GAAA,EAAwB,YAAYb,GAAW,SAASU,GACvD,UAAA,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,4BACGC,GAAS,EAAA,MAAM,IACd,UAAC,gBAAAF,EAAAG,GAAA,EAAM,QAAO,OAAA,CAAO,EACvB,CAAA;AAAA,MAEF,SAASX;AAAA,MAET,UAAA,gBAAAQ,EAACI,KAAS,UAAU,gBAAAJ,EAACK,KAAU,QAAO,OAAO,CAAA,GAAK,UAAQhB,EAAA,CAAA;AAAA,IAAA;AAAA,EAAA,EAE9D,CAAA,EACF,CAAA,IAIAD,MAAa,cAEZ,gBAAAY,EAAAF,GAAA,EAAsB,YAAYZ,GACjC,UAAA,gBAAAc;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,4BACGK,GAAA,EACC,UAAC,gBAAAN,EAAAG,GAAA,EAAM,QAAO,QAAQ,CAAA,GACxB;AAAA,MAEF,SAASX;AAAA,MAET,UAAA,gBAAAe;AAAA,QAACH;AAAA,QAAA;AAAA,UACC,4BACGE,GAAA,EACC,UAAC,gBAAAN,EAAAK,GAAA,EAAU,QAAO,QAAQ,CAAA,GAC5B;AAAA,UAGF,UAAA;AAAA,YAAA,gBAAAL,EAACQ,GAAA,EAAsB,YAAYtB,EAAW,CAAA;AAAA,YAC7CG;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAEJ,EAAA,CAAA,IAIAD,MAAa,6CAEZqB,GAAA,EAAiC,YAAYvB,GAC3C,UACHG,EAAA,CAAA,IAKD,gBAAAW,EAAAF,GAAA,EAAsB,YAAYZ,GACjC,UAAC,gBAAAqB,EAAAG,GAAA,EAAiB,YAAYxB,GAAW,QAAQI,GAC9C,UAAA;AAAA,IAAkBC,MAAA,wBAChBoB,GAAA,EAA4B,aAAarB,GACxC,4BAACsB,GAAU,EAAA,OAAM,SAAQ,SAASzB,GAChC,4BAAC0B,GAAU,EAAA,OAAO,IAAI,QAAQ,IAAI,GACpC,EACF,CAAA;AAAA,IAED,gBAAAb,EAAAc,GAAA,EAAwB,aAAaxB,GACpC,UAAA,gBAAAU;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAW,gBAAAD,EAAAG,GAAA,EAAM,QAAO,QAAO,MAAK,WAAU;AAAA,QAC9C,SAASX;AAAA,QAET,UAAA,gBAAAQ,EAACI,KAAS,UAAU,gBAAAJ,EAACK,KAAU,QAAO,OAAO,CAAA,GAAK,UAAQhB,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA,GAE9D;AAAA,EAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAC;"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,10 @@ import type { ButtonHTMLAttributes } from 'react';
2
2
  import type { Channel } from '@cuemath/cue-message-broker';
3
3
  import { ChannelStatus } from '@cuemath/cue-message-broker';
4
4
  import { ComponentType } from 'react';
5
- import type { Config } from '@lottiefiles/dotlottie-web';
6
5
  import { Context } from 'react';
7
6
  import type { DefaultTheme } from 'styled-components';
8
7
  import { DetailedHTMLProps } from 'react';
9
8
  import type { Dispatch } from 'react';
10
- import type { EventListener as EventListener_2 } from '@lottiefiles/dotlottie-web';
11
- import type { EventType } from '@lottiefiles/dotlottie-web';
12
9
  import { FC } from 'react';
13
10
  import type { FormEvent } from 'react';
14
11
  import { ForwardRefExoticComponent } from 'react';
@@ -77,8 +74,6 @@ export declare const AnimatedArc: React_2.FC<IAnimatedArcProps>;
77
74
 
78
75
  export declare const AnimatedAvatarMessage: NamedExoticComponent<IAnimatedAvatarMessageProps>;
79
76
 
80
- declare type AnimationSegment = [number, number];
81
-
82
77
  export declare const AppLoader: FC<IAppLoaderProps>;
83
78
 
84
79
  export declare const ArcButton: NamedExoticComponent<IArcButtonProps & {
@@ -368,8 +363,6 @@ export declare const DesmosCalculator: FC<IDesmosCalculatorProps>;
368
363
 
369
364
  export declare const DigitalMeter: FC<IDigitalMeterProps>;
370
365
 
371
- export declare const DotLottieAnimation: NamedExoticComponent<ILottieAnimationProps & RefAttributes<ILottieAnimationRef>>;
372
-
373
366
  export declare const DownIcon: React.FC<React.SVGProps<SVGSVGElement>>;
374
367
 
375
368
  export declare const DraftIcon: React.FC<React.SVGProps<SVGSVGElement>>;
@@ -2223,22 +2216,6 @@ declare interface ILogger {
2223
2216
  (eventName: string, data?: Record<string, unknown>): void;
2224
2217
  }
2225
2218
 
2226
- declare interface ILottieAnimationProps {
2227
- src: string;
2228
- width?: string | number;
2229
- height?: string | number;
2230
- settings?: Partial<LottieSettings>;
2231
- eventListeners?: {
2232
- name: EventType;
2233
- callback: EventListener_2<EventType>;
2234
- }[];
2235
- onRender?: () => void;
2236
- }
2237
-
2238
- declare interface ILottieAnimationRef {
2239
- playSegments: (segments: AnimationSegment, forceFlag?: boolean) => void;
2240
- }
2241
-
2242
2219
  declare interface ILPARChapterProps extends ILPARSheetCallbacks {
2243
2220
  userType: TUserTypes;
2244
2221
  chapterData: TLPARChapterData;
@@ -2575,7 +2552,7 @@ export declare interface IModal {
2575
2552
  /** Content to display inside the modal */
2576
2553
  element: ReactElement;
2577
2554
  /** Rendering style of the modal */
2578
- renderAs?: 'modal' | 'fullscreen' | 'spotlight' | 'bottom-sheet';
2555
+ renderAs?: 'modal' | 'fullscreen' | 'spotlight' | 'bottom-sheet' | 'fullscreen-transparent';
2579
2556
  /** Whether the modal can be dismissed by clicking outside or ESC key (default: true) */
2580
2557
  isDismissable?: boolean;
2581
2558
  /** Whether the modal requires authentication to view (default: true) */
@@ -3417,19 +3394,35 @@ declare interface IStepperProps {
3417
3394
  currentStep: number;
3418
3395
  }
3419
3396
 
3420
- declare interface IStickerData {
3397
+ export declare interface IStickerData {
3421
3398
  id: string;
3422
3399
  emoji: string;
3423
3400
  lottieUrl?: string;
3424
- name?: string;
3401
+ name: string;
3425
3402
  }
3426
3403
 
3427
- declare interface IStickerGridProps {
3404
+ export declare interface IStickerProps {
3405
+ emoji: string;
3406
+ lottieUrl?: string;
3407
+ size?: number | string;
3408
+ onClick?: () => void;
3409
+ disabled?: boolean;
3410
+ }
3411
+
3412
+ export declare interface IStickerSelectorProps {
3428
3413
  stickers: IStickerData[];
3429
3414
  columns?: number;
3430
3415
  gap?: number;
3431
3416
  stickerSize?: number | string;
3432
3417
  onStickerClick?: (sticker: IStickerData) => void;
3418
+ disabled?: boolean;
3419
+ }
3420
+
3421
+ export declare interface IStickersProps {
3422
+ stickers: string[];
3423
+ effect: TStickerEffects;
3424
+ count: number;
3425
+ duration: number;
3433
3426
  }
3434
3427
 
3435
3428
  declare interface IStreakIconProps extends React.HTMLProps<HTMLDivElement> {
@@ -4531,8 +4524,6 @@ export declare const LOTTIE: {
4531
4524
  VIDEO: string;
4532
4525
  };
4533
4526
 
4534
- declare type LottieSettings = Omit<Config, 'src' | 'canvas'>;
4535
-
4536
4527
  export declare const LPARChapter: FC<ILPARChapterProps>;
4537
4528
 
4538
4529
  export declare const LPARMilestoneChapter: FC<ILPARMilestoneChapter>;
@@ -5047,22 +5038,15 @@ declare const STICKER_BADGE: {
5047
5038
  AWESOME: string;
5048
5039
  };
5049
5040
 
5050
- declare type StickerEffect = 'burst_from_edges' | 'pop_expand' | 'float_up' | 'fall_down';
5041
+ export declare const stickerData: IStickerData[];
5051
5042
 
5052
5043
  export declare const StickerFilledIcon: React.FC<React.SVGProps<SVGSVGElement>>;
5053
5044
 
5054
5045
  export declare const StickerIcon: React.FC<React.SVGProps<SVGSVGElement>>;
5055
5046
 
5056
- export declare const Stickers: React_2.NamedExoticComponent<StickersProps>;
5057
-
5058
- declare interface StickersProps {
5059
- stickers: string[];
5060
- effect: StickerEffect;
5061
- count: number;
5062
- duration: number;
5063
- }
5047
+ export declare const StickersEffects: React_2.NamedExoticComponent<IStickersProps>;
5064
5048
 
5065
- export declare const StickersSelector: React_2.NamedExoticComponent<IStickerGridProps>;
5049
+ export declare const StickersSelector: React_2.NamedExoticComponent<IStickerSelectorProps>;
5066
5050
 
5067
5051
  export declare const StreakIcon: React_2.FC<IStreakIconProps>;
5068
5052
 
@@ -5988,7 +5972,7 @@ declare type TRenderAs_2 = 'canvas' | 'whiteboard';
5988
5972
  declare type TRewardHomeData = {
5989
5973
  user_badges: TBadgeData[] | [];
5990
5974
  user_rewards: TRewardsData[] | [];
5991
- user_stickers: TStickerData[] | [];
5975
+ user_stickers: TStickerData_2[] | [];
5992
5976
  };
5993
5977
 
5994
5978
  declare type TRewardsData = {
@@ -6116,7 +6100,18 @@ export declare type TSkillStatus = 'pending' | 'completed';
6116
6100
 
6117
6101
  export declare type TSocialAuthProvider = 'google' | 'apple';
6118
6102
 
6119
- declare type TStickerData = {
6103
+ export declare type TStickerData = {
6104
+ id: string;
6105
+ sticker: string;
6106
+ lottie?: string;
6107
+ x: number;
6108
+ y: number;
6109
+ size: number;
6110
+ fromX?: string;
6111
+ fromY?: string;
6112
+ };
6113
+
6114
+ declare type TStickerData_2 = {
6120
6115
  actor_id: string;
6121
6116
  badge_id: string;
6122
6117
  badge_type: string;
@@ -6129,6 +6124,8 @@ declare type TStickerData = {
6129
6124
  user_type: string;
6130
6125
  };
6131
6126
 
6127
+ export declare type TStickerEffects = 'burst-from-edges' | 'pop-expand' | 'float-up' | 'fall-down';
6128
+
6132
6129
  export declare type TStreakStatus = 'pending' | 'completed';
6133
6130
 
6134
6131
  declare type TStyleAttrubutes = NonNullable<HTMLAttributes<HTMLDivElement>['style']>;