@cuemath/leap 3.2.23-as1 → 3.2.23-m

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 (111) hide show
  1. package/dist/assets/illustrations/illustrations.js +0 -6
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/images/images.js +0 -10
  4. package/dist/assets/images/images.js.map +1 -1
  5. package/dist/assets/lottie/lottie.js +1 -6
  6. package/dist/assets/lottie/lottie.js.map +1 -1
  7. package/dist/features/stickers/sticker-data.js +234 -0
  8. package/dist/features/stickers/sticker-data.js.map +1 -0
  9. package/dist/features/{ui/sticker-grid/sticker-grid-styles.js → stickers/sticker-selector/sticker-selector-styles.js} +21 -31
  10. package/dist/features/stickers/sticker-selector/sticker-selector-styles.js.map +1 -0
  11. package/dist/features/stickers/sticker-selector/sticker-selector.js +27 -0
  12. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -0
  13. package/dist/features/stickers/sticker-selector/sticker.js +57 -0
  14. package/dist/features/stickers/sticker-selector/sticker.js.map +1 -0
  15. package/dist/features/{ui/stickers/stickers-effects.js → stickers/stickers-effects/effects.js} +6 -6
  16. package/dist/features/stickers/stickers-effects/effects.js.map +1 -0
  17. package/dist/features/stickers/stickers-effects/stickers-cache.js +19 -0
  18. package/dist/features/stickers/stickers-effects/stickers-cache.js.map +1 -0
  19. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js +86 -0
  20. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js.map +1 -0
  21. package/dist/features/{ui/stickers/stickers-styled.js → stickers/stickers-effects/stickers-effects-styled.js} +2 -2
  22. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +1 -0
  23. package/dist/features/stickers/stickers-effects/stickers-effects.js +54 -0
  24. package/dist/features/stickers/stickers-effects/stickers-effects.js.map +1 -0
  25. package/dist/features/ui/constants/z-index.js +3 -5
  26. package/dist/features/ui/constants/z-index.js.map +1 -1
  27. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js +88 -75
  28. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js.map +1 -1
  29. package/dist/features/ui/lottie-animation/lottie-animation.js +36 -31
  30. package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
  31. package/dist/features/ui/modals/modal-styled.js +39 -8
  32. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  33. package/dist/features/ui/modals/modal.js +31 -31
  34. package/dist/features/ui/modals/modal.js.map +1 -1
  35. package/dist/index.d.ts +72 -193
  36. package/dist/index.js +609 -617
  37. package/dist/index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/assets/line-icons/icons/cue-coin.js +0 -182
  40. package/dist/assets/line-icons/icons/cue-coin.js.map +0 -1
  41. package/dist/assets/line-icons/icons/wins-common-icon.js +0 -26
  42. package/dist/assets/line-icons/icons/wins-common-icon.js.map +0 -1
  43. package/dist/assets/line-icons/icons/wins-epic-icon.js +0 -25
  44. package/dist/assets/line-icons/icons/wins-epic-icon.js.map +0 -1
  45. package/dist/assets/line-icons/icons/wins-legendary-icon.js +0 -25
  46. package/dist/assets/line-icons/icons/wins-legendary-icon.js.map +0 -1
  47. package/dist/assets/line-icons/icons/wins-mystery-icon.js +0 -105
  48. package/dist/assets/line-icons/icons/wins-mystery-icon.js.map +0 -1
  49. package/dist/assets/line-icons/icons/wins-mythic-icon.js +0 -28
  50. package/dist/assets/line-icons/icons/wins-mythic-icon.js.map +0 -1
  51. package/dist/assets/line-icons/icons/wins-rare-icon.js +0 -28
  52. package/dist/assets/line-icons/icons/wins-rare-icon.js.map +0 -1
  53. package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +0 -1
  54. package/dist/features/ui/sticker-grid/sticker-grid.js +0 -24
  55. package/dist/features/ui/sticker-grid/sticker-grid.js.map +0 -1
  56. package/dist/features/ui/sticker-grid/sticker.js +0 -57
  57. package/dist/features/ui/sticker-grid/sticker.js.map +0 -1
  58. package/dist/features/ui/stickers/constants.js +0 -6
  59. package/dist/features/ui/stickers/constants.js.map +0 -1
  60. package/dist/features/ui/stickers/stickers-effects.js.map +0 -1
  61. package/dist/features/ui/stickers/stickers-styled.js.map +0 -1
  62. package/dist/features/ui/stickers/stickers-utils.js +0 -91
  63. package/dist/features/ui/stickers/stickers-utils.js.map +0 -1
  64. package/dist/features/ui/stickers/stickers.js +0 -40
  65. package/dist/features/ui/stickers/stickers.js.map +0 -1
  66. package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js +0 -108
  67. package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js.map +0 -1
  68. package/dist/features/wins-dashboard/belts-elements-stickers/belts.js +0 -94
  69. package/dist/features/wins-dashboard/belts-elements-stickers/belts.js.map +0 -1
  70. package/dist/features/wins-dashboard/belts-elements-stickers/elements.js +0 -182
  71. package/dist/features/wins-dashboard/belts-elements-stickers/elements.js.map +0 -1
  72. package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js +0 -35
  73. package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js.map +0 -1
  74. package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js +0 -82
  75. package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js.map +0 -1
  76. package/dist/features/wins-dashboard/constants.js +0 -161
  77. package/dist/features/wins-dashboard/constants.js.map +0 -1
  78. package/dist/features/wins-dashboard/header/wins-header.js +0 -95
  79. package/dist/features/wins-dashboard/header/wins-header.js.map +0 -1
  80. package/dist/features/wins-dashboard/student-badges/animated-tabbar.js +0 -65
  81. package/dist/features/wins-dashboard/student-badges/animated-tabbar.js.map +0 -1
  82. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-hook.js +0 -107
  83. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-hook.js.map +0 -1
  84. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js +0 -135
  85. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js.map +0 -1
  86. package/dist/features/wins-dashboard/student-badges/student-badge.js +0 -161
  87. package/dist/features/wins-dashboard/student-badges/student-badge.js.map +0 -1
  88. package/dist/features/wins-dashboard/student-badges/student-badges-lists.js +0 -136
  89. package/dist/features/wins-dashboard/student-badges/student-badges-lists.js.map +0 -1
  90. package/dist/static/awesome.4239f583.json +0 -1
  91. package/dist/static/black-belt.81b3ebf9.png +0 -0
  92. package/dist/static/blue-belt.508a1b4b.png +0 -0
  93. package/dist/static/brown-belt.09bb7e93.png +0 -0
  94. package/dist/static/clapping-hands.17e7ecf0.json +0 -1
  95. package/dist/static/common.9e8ceef1.svg +0 -1
  96. package/dist/static/cool.cd6921bb.json +0 -1
  97. package/dist/static/epic.37a0265a.svg +0 -1
  98. package/dist/static/green-belt.5501296f.png +0 -0
  99. package/dist/static/legendary.f15d09ca.svg +0 -1
  100. package/dist/static/like-button.281a2618.json +0 -1
  101. package/dist/static/mastered-badge.91d25e92.png +0 -0
  102. package/dist/static/mystery.81ada5fb.svg +0 -1
  103. package/dist/static/mythic.58ba0ae0.svg +0 -1
  104. package/dist/static/orange-belt.1fefcc8c.png +0 -0
  105. package/dist/static/purple-belt.e15611b4.png +0 -0
  106. package/dist/static/rare.1ffaa311.svg +0 -1
  107. package/dist/static/red-belt.11f841d9.png +0 -0
  108. package/dist/static/star-strike-emoji.c0b31028.json +0 -1
  109. package/dist/static/trophy.5ef1853a.json +0 -1
  110. package/dist/static/white-belt.ea93103e.png +0 -0
  111. package/dist/static/yellow-belt.0c47b8cc.png +0 -0
@@ -0,0 +1,27 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { memo as d } from "react";
3
+ import { stickerData as l } from "../sticker-data.js";
4
+ import f from "./sticker.js";
5
+ import { StickerGridContainer as h, StickerGrid as n } from "./sticker-selector-styles.js";
6
+ const s = ({
7
+ stickers: e = l,
8
+ columns: m = 4,
9
+ gap: i = 8,
10
+ stickerSize: p = 72,
11
+ onStickerClick: o,
12
+ disabled: a
13
+ }) => /* @__PURE__ */ t(h, { $width: "350px", $height: "400px", children: /* @__PURE__ */ t(n, { $columns: m, $gap: i, children: e.map((r) => /* @__PURE__ */ t(
14
+ f,
15
+ {
16
+ emoji: r.emoji,
17
+ lottieUrl: r.lottieUrl,
18
+ size: p,
19
+ onClick: () => o == null ? void 0 : o(r),
20
+ disabled: a
21
+ },
22
+ r.id
23
+ )) }) }), g = d(s);
24
+ export {
25
+ g as default
26
+ };
27
+ //# sourceMappingURL=sticker-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sticker-selector.js","sources":["../../../../src/features/stickers/sticker-selector/sticker-selector.tsx"],"sourcesContent":["import type { IStickerSelectorProps } from './sticker-selector-types';\n\nimport React, { memo } from 'react';\n\nimport { stickerData } from '../sticker-data';\nimport Sticker from './sticker';\nimport * as S from './sticker-selector-styles';\n\nconst StickerSelector: React.FC<IStickerSelectorProps> = ({\n stickers = stickerData,\n columns = 4,\n gap = 8,\n stickerSize = 72,\n onStickerClick,\n disabled,\n}) => {\n return (\n <S.StickerGridContainer $width=\"350px\" $height=\"400px\">\n <S.StickerGrid $columns={columns} $gap={gap}>\n {stickers.map(sticker => (\n <Sticker\n key={sticker.id}\n emoji={sticker.emoji}\n lottieUrl={sticker.lottieUrl}\n size={stickerSize}\n onClick={() => onStickerClick?.(sticker)}\n disabled={disabled}\n />\n ))}\n </S.StickerGrid>\n </S.StickerGridContainer>\n );\n};\n\nexport default memo(StickerSelector);\n"],"names":["StickerSelector","stickers","stickerData","columns","gap","stickerSize","onStickerClick","disabled","S.StickerGridContainer","jsx","S.StickerGrid","sticker","Sticker","stickerSelector","memo"],"mappings":";;;;;AAQA,MAAMA,IAAmD,CAAC;AAAA,EACxD,UAAAC,IAAWC;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,KAAAC,IAAM;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,gBAAAC;AAAA,EACA,UAAAC;AACF,wBAEKC,GAAA,EAAuB,QAAO,SAAQ,SAAQ,SAC7C,UAAA,gBAAAC,EAACC,GAAA,EAAc,UAAUP,GAAS,MAAMC,GACrC,UAAAH,EAAS,IAAI,CACZU,MAAA,gBAAAF;AAAA,EAACG;AAAA,EAAA;AAAA,IAEC,OAAOD,EAAQ;AAAA,IACf,WAAWA,EAAQ;AAAA,IACnB,MAAMN;AAAA,IACN,SAAS,MAAMC,KAAA,gBAAAA,EAAiBK;AAAA,IAChC,UAAAJ;AAAA,EAAA;AAAA,EALKI,EAAQ;AAAA,CAOhB,GACH,EACF,CAAA,GAIWE,IAAAC,EAAKd,CAAe;"}
@@ -0,0 +1,57 @@
1
+ import { jsxs as S, jsx as i } from "react/jsx-runtime";
2
+ import { memo as $, useState as f, useRef as L, useCallback as n, useEffect as g } from "react";
3
+ import k from "../../ui/lottie-animation/lottie-animation.js";
4
+ import { StickerContainer as E, StaticEmoji as R, LottieContainer as j } from "./sticker-selector-styles.js";
5
+ const x = ({
6
+ emoji: l,
7
+ lottieUrl: c,
8
+ size: o = 48,
9
+ onClick: s,
10
+ disabled: e = !1
11
+ }) => {
12
+ const [a, m] = f(!1), [t, u] = f(!1), r = L(null), p = n(() => {
13
+ r.current && (r.current.goToAndStop(0, !0), m(!0), t && r.current.play());
14
+ }, [t]);
15
+ g(() => {
16
+ !r.current || !a || (t ? r.current.play() : r.current.goToAndStop(0, !0));
17
+ }, [t, a]);
18
+ const d = n(() => {
19
+ e || u(!0);
20
+ }, [e]), h = n(() => {
21
+ e || u(!1);
22
+ }, [e]), v = n(() => {
23
+ !e && s && s();
24
+ }, [e, s]);
25
+ return /* @__PURE__ */ S(
26
+ E,
27
+ {
28
+ $size: o,
29
+ $disabled: e,
30
+ onPointerEnter: d,
31
+ onPointerLeave: h,
32
+ onClick: v,
33
+ children: [
34
+ !t && /* @__PURE__ */ i(R, { $size: o, $visible: !t, children: l }),
35
+ /* @__PURE__ */ i(j, { $size: o, $visible: t, children: c && /* @__PURE__ */ i(
36
+ k,
37
+ {
38
+ ref: r,
39
+ src: c,
40
+ width: "100%",
41
+ height: "100%",
42
+ settings: {
43
+ loop: !0,
44
+ autoplay: !1,
45
+ renderer: "canvas"
46
+ },
47
+ onRender: p
48
+ }
49
+ ) })
50
+ ]
51
+ }
52
+ );
53
+ }, I = $(x);
54
+ export {
55
+ I as default
56
+ };
57
+ //# sourceMappingURL=sticker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sticker.js","sources":["../../../../src/features/stickers/sticker-selector/sticker.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../ui/lottie-animation/types';\nimport type { IStickerProps } from './sticker-selector-types';\n\nimport React, { memo, useCallback, useEffect, useRef, useState } from 'react';\n\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport * as S from './sticker-selector-styles';\n\nconst Sticker: React.FC<IStickerProps> = ({\n emoji,\n lottieUrl,\n size = 48,\n onClick,\n disabled = false,\n}) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const lottieRef = useRef<ILottieAnimationRef>(null);\n\n const handleRender = useCallback(() => {\n if (!lottieRef.current) return;\n\n lottieRef.current.goToAndStop(0, true);\n setIsLoaded(true);\n\n if (isHovered) lottieRef.current.play();\n }, [isHovered]);\n\n useEffect(() => {\n if (!lottieRef.current || !isLoaded) return;\n\n if (isHovered) {\n lottieRef.current.play();\n } else {\n lottieRef.current.goToAndStop(0, true);\n }\n }, [isHovered, isLoaded]);\n\n const handleMouseEnter = useCallback(() => {\n if (!disabled) setIsHovered(true);\n }, [disabled]);\n\n const handleMouseLeave = useCallback(() => {\n if (!disabled) setIsHovered(false);\n }, [disabled]);\n\n const handleClick = useCallback(() => {\n if (!disabled && onClick) onClick();\n }, [disabled, onClick]);\n\n return (\n <S.StickerContainer\n $size={size}\n $disabled={disabled}\n onPointerEnter={handleMouseEnter}\n onPointerLeave={handleMouseLeave}\n onClick={handleClick}\n >\n {!isHovered && (\n <S.StaticEmoji $size={size} $visible={!isHovered}>\n {emoji}\n </S.StaticEmoji>\n )}\n\n <S.LottieContainer $size={size} $visible={isHovered}>\n {lottieUrl && (\n <LottieAnimation\n ref={lottieRef}\n src={lottieUrl}\n width=\"100%\"\n height=\"100%\"\n settings={{\n loop: true,\n autoplay: false,\n renderer: 'canvas',\n }}\n onRender={handleRender}\n />\n )}\n </S.LottieContainer>\n </S.StickerContainer>\n );\n};\n\nexport default memo(Sticker);\n"],"names":["Sticker","emoji","lottieUrl","size","onClick","disabled","isLoaded","setIsLoaded","useState","isHovered","setIsHovered","lottieRef","useRef","handleRender","useCallback","useEffect","handleMouseEnter","handleMouseLeave","handleClick","jsxs","S.StickerContainer","jsx","S.StaticEmoji","S.LottieContainer","LottieAnimation","Sticker$1","memo"],"mappings":";;;;AAQA,MAAMA,IAAmC,CAAC;AAAA,EACxC,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,SAAAC;AAAA,EACA,UAAAC,IAAW;AACb,MAAM;AACJ,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxC,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK,GAC1CG,IAAYC,EAA4B,IAAI,GAE5CC,IAAeC,EAAY,MAAM;AACjC,IAACH,EAAU,YAELA,EAAA,QAAQ,YAAY,GAAG,EAAI,GACrCJ,EAAY,EAAI,GAEZE,KAAqBE,EAAA,QAAQ,KAAK;AAAA,EAAA,GACrC,CAACF,CAAS,CAAC;AAEd,EAAAM,EAAU,MAAM;AACd,IAAI,CAACJ,EAAU,WAAW,CAACL,MAEvBG,IACFE,EAAU,QAAQ,SAERA,EAAA,QAAQ,YAAY,GAAG,EAAI;AAAA,EACvC,GACC,CAACF,GAAWH,CAAQ,CAAC;AAElB,QAAAU,IAAmBF,EAAY,MAAM;AACrC,IAACT,KAAUK,EAAa,EAAI;AAAA,EAAA,GAC/B,CAACL,CAAQ,CAAC,GAEPY,IAAmBH,EAAY,MAAM;AACrC,IAACT,KAAUK,EAAa,EAAK;AAAA,EAAA,GAChC,CAACL,CAAQ,CAAC,GAEPa,IAAcJ,EAAY,MAAM;AAChC,IAAA,CAACT,KAAYD,KAAiBA;EAAA,GACjC,CAACC,GAAUD,CAAO,CAAC;AAGpB,SAAA,gBAAAe;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,OAAOjB;AAAA,MACP,WAAWE;AAAA,MACX,gBAAgBW;AAAA,MAChB,gBAAgBC;AAAA,MAChB,SAASC;AAAA,MAER,UAAA;AAAA,QAAC,CAAAT,KACC,gBAAAY,EAAAC,GAAA,EAAc,OAAOnB,GAAM,UAAU,CAACM,GACpC,UACHR,EAAA,CAAA;AAAA,QAGF,gBAAAoB,EAACE,GAAA,EAAkB,OAAOpB,GAAM,UAAUM,GACvC,UACCP,KAAA,gBAAAmB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,KAAKb;AAAA,YACL,KAAKT;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,UAAU;AAAA,cACR,MAAM;AAAA,cACN,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,YACA,UAAUW;AAAA,UAAA;AAAA,QAAA,GAGhB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEeY,IAAAC,EAAK1B,CAAO;"}
@@ -1,5 +1,5 @@
1
1
  import { keyframes as r, css as t } from "styled-components";
2
- import { randomizeDuration as o } from "./stickers-utils.js";
2
+ import { randomizeDuration as o } from "./stickers-effects-helper.js";
3
3
  const s = r`
4
4
  0% {
5
5
  transform: translateY(0vh);
@@ -45,20 +45,20 @@ const s = r`
45
45
  opacity: 0;
46
46
  }
47
47
  `, i = {
48
- float_up: (a) => t`
48
+ "float-up": (a) => t`
49
49
  animation: ${s} ${o(a)}ms ease-out forwards;
50
50
  `,
51
- fall_down: (a) => t`
51
+ "fall-down": (a) => t`
52
52
  animation: ${n} ${o(a)}ms ease-out forwards;
53
53
  `,
54
- burst_from_edges: (a) => t`
54
+ "burst-from-edges": (a) => t`
55
55
  animation: ${e} ${o(a)}ms linear forwards;
56
56
  `,
57
- pop_expand: (a) => t`
57
+ "pop-expand": (a) => t`
58
58
  animation: ${m} ${a}ms cubic-bezier(0.5, 0.1, 0.7, 1) forwards;
59
59
  `
60
60
  };
61
61
  export {
62
62
  i as effectAnimations
63
63
  };
64
- //# sourceMappingURL=stickers-effects.js.map
64
+ //# sourceMappingURL=effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.js","sources":["../../../../src/features/stickers/stickers-effects/effects.ts"],"sourcesContent":["import type { IStickersProps } from './stickers-effects-types';\n\nimport { keyframes, css } from 'styled-components';\n\nimport { randomizeDuration } from './stickers-effects-helper';\n\nconst floatUp = keyframes`\n 0% {\n transform: translateY(0vh);\n opacity: 1;\n }\n 100% {\n transform: translateY(-100vh);\n opacity: 0;\n }\n`;\n\nconst fallDown = keyframes`\n 0% {\n transform: translateY(0vh);\n opacity: 1;\n }\n 100% {\n transform: translateY(100vh);\n opacity: 0;\n }\n`;\n\nconst burstFromEdges = keyframes`\n 0% {\n transform: translateX(var(--from-x)) translateY(var(--from-y)) scale(1);\n opacity: 1;\n }\n 100% {\n transform: translateX(0vw) translateY(0vh) scale(1.25);\n opacity: 0;\n }\n`;\n\nconst popExpand = keyframes`\n 0% {\n transform: translateX(0) translateY(0vh);\n opacity: 1;\n }\n 35% {\n transform: translateX(0) translateY(-50vh) scale(1.25);\n opacity: 1;\n }\n 60% {\n transform: translateX(var(--from-x)) translateY(var(--from-y)) scale(1.25);\n opacity: 0.75;\n }\n 100% {\n transform: translateX(var(--from-x)) translateY(-110vh) scale(1.25);\n opacity: 0;\n }\n`;\n\nexport const effectAnimations: Record<\n IStickersProps['effect'],\n (duration: number) => ReturnType<typeof css>\n> = {\n 'float-up': (duration: number) => css`\n animation: ${floatUp} ${randomizeDuration(duration)}ms ease-out forwards;\n `,\n 'fall-down': (duration: number) => css`\n animation: ${fallDown} ${randomizeDuration(duration)}ms ease-out forwards;\n `,\n 'burst-from-edges': (duration: number) => css`\n animation: ${burstFromEdges} ${randomizeDuration(duration)}ms linear forwards;\n `,\n 'pop-expand': (duration: number) => css`\n animation: ${popExpand} ${duration}ms cubic-bezier(0.5, 0.1, 0.7, 1) forwards;\n `,\n};\n"],"names":["floatUp","keyframes","fallDown","burstFromEdges","popExpand","effectAnimations","duration","css","randomizeDuration"],"mappings":";;AAMA,MAAMA,IAAUC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWVC,IAAWD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWXE,IAAiBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWjBG,IAAYH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmBLI,IAGT;AAAA,EACF,YAAY,CAACC,MAAqBC;AAAA,iBACnBP,CAAO,IAAIQ,EAAkBF,CAAQ,CAAC;AAAA;AAAA,EAErD,aAAa,CAACA,MAAqBC;AAAA,iBACpBL,CAAQ,IAAIM,EAAkBF,CAAQ,CAAC;AAAA;AAAA,EAEtD,oBAAoB,CAACA,MAAqBC;AAAA,iBAC3BJ,CAAc,IAAIK,EAAkBF,CAAQ,CAAC;AAAA;AAAA,EAE5D,cAAc,CAACA,MAAqBC;AAAA,iBACrBH,CAAS,IAAIE,CAAQ;AAAA;AAEtC;"}
@@ -0,0 +1,19 @@
1
+ const o = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
2
+ async function r(t) {
3
+ if (o.has(t))
4
+ return o.get(t);
5
+ if (n.has(t))
6
+ return n.get(t);
7
+ const i = fetch(t).then(async (e) => {
8
+ if (!e.ok) return null;
9
+ const a = t.endsWith(".lottie") ? await e.arrayBuffer() : await e.json();
10
+ return o.set(t, a), a;
11
+ }).catch((e) => (console.error("Lottie preload error:", e), null)).finally(() => {
12
+ n.delete(t);
13
+ });
14
+ return n.set(t, i), i;
15
+ }
16
+ export {
17
+ r as preloadLottieFile
18
+ };
19
+ //# sourceMappingURL=stickers-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickers-cache.js","sources":["../../../../src/features/stickers/stickers-effects/stickers-cache.ts"],"sourcesContent":["import type { Data } from '@lottiefiles/dotlottie-web';\n\nconst lottieCache = new Map<string, Data>();\nconst lottiePromises = new Map<string, Promise<Data | null>>();\n\nexport async function preloadLottieFile(url: string): Promise<Data | null> {\n if (lottieCache.has(url)) {\n return lottieCache.get(url)!;\n }\n\n if (lottiePromises.has(url)) {\n return lottiePromises.get(url)!;\n }\n\n const fetchPromise = fetch(url)\n .then(async res => {\n if (!res.ok) return null;\n\n const isLottieFile = url.endsWith('.lottie');\n const data = isLottieFile ? await res.arrayBuffer() : await res.json();\n\n lottieCache.set(url, data);\n\n return data;\n })\n .catch(err => {\n // eslint-disable-next-line no-console\n console.error('Lottie preload error:', err);\n\n return null;\n })\n .finally(() => {\n lottiePromises.delete(url);\n });\n\n lottiePromises.set(url, fetchPromise);\n\n return fetchPromise;\n}\n"],"names":["lottieCache","lottiePromises","preloadLottieFile","url","fetchPromise","res","data","err"],"mappings":"AAEA,MAAMA,wBAAkB,OAClBC,wBAAqB;AAE3B,eAAsBC,EAAkBC,GAAmC;AACrE,MAAAH,EAAY,IAAIG,CAAG;AACd,WAAAH,EAAY,IAAIG,CAAG;AAGxB,MAAAF,EAAe,IAAIE,CAAG;AACjB,WAAAF,EAAe,IAAIE,CAAG;AAG/B,QAAMC,IAAe,MAAMD,CAAG,EAC3B,KAAK,OAAME,MAAO;AACb,QAAA,CAACA,EAAI,GAAW,QAAA;AAGd,UAAAC,IADeH,EAAI,SAAS,SAAS,IACf,MAAME,EAAI,gBAAgB,MAAMA,EAAI;AAEpD,WAAAL,EAAA,IAAIG,GAAKG,CAAI,GAElBA;AAAA,EAAA,CACR,EACA,MAAM,CAAOC,OAEJ,QAAA,MAAM,yBAAyBA,CAAG,GAEnC,KACR,EACA,QAAQ,MAAM;AACb,IAAAN,EAAe,OAAOE,CAAG;AAAA,EAAA,CAC1B;AAEY,SAAAF,EAAA,IAAIE,GAAKC,CAAY,GAE7BA;AACT;"}
@@ -0,0 +1,86 @@
1
+ import { stickerData as b } from "../sticker-data.js";
2
+ const w = (o, e) => {
3
+ const t = Math.ceil(e / 4), a = Math.floor(o / t), h = o % t, p = ["top", "right", "bottom", "left"][a] ?? "left", r = (h + 0.5) / t * 100, m = (Math.random() - 0.5) * 25, s = Math.min(Math.max(r + m, 0), 100), c = 45 + Math.random() * 10, i = 45 + Math.random() * 10;
4
+ let d = 0, n = 0;
5
+ switch (p) {
6
+ case "top":
7
+ d = s - c, n = -i + m;
8
+ break;
9
+ case "right":
10
+ d = 100 - c + m, n = s - i;
11
+ break;
12
+ case "bottom":
13
+ d = s - c, n = 100 - i + m;
14
+ break;
15
+ case "left":
16
+ d = -c + m, n = s - i;
17
+ break;
18
+ }
19
+ return {
20
+ fromX: `${d}vw`,
21
+ fromY: `${n}vh`,
22
+ x: c,
23
+ y: i
24
+ };
25
+ }, v = (o, e = 10) => {
26
+ const t = [];
27
+ let a = 0;
28
+ const h = o;
29
+ for (; t.length < o && a < h; ) {
30
+ const l = Math.floor(Math.random() * (100 - 2 * e) + e);
31
+ t.every((p) => Math.abs(p - l) >= e) && t.push(l), a++;
32
+ }
33
+ for (; t.length < o; )
34
+ t.push(Math.floor(Math.random() * (100 - 2 * e) + e));
35
+ return t;
36
+ };
37
+ function P({
38
+ count: o,
39
+ effect: e,
40
+ stickers: t,
41
+ minSize: a,
42
+ maxSize: h
43
+ }) {
44
+ const l = 100 / o * 2, p = () => Math.random() * (h - a) + a, r = [], m = ["float-up", "fall-down"].includes(e) ? v(o, l) : [];
45
+ for (let s = 0; s < o; s++) {
46
+ const c = t[s % t.length] ?? "", { emoji: i = "", lottieUrl: d } = b.find(({ id: f }) => f === c) || {}, n = p(), u = m[s], M = { id: c, sticker: i, lottie: d, size: n };
47
+ switch (e) {
48
+ case "float-up":
49
+ r.push({ ...M, x: u, y: 110 + (Math.random() - 0.5) * n });
50
+ break;
51
+ case "fall-down":
52
+ r.push({ ...M, x: u, y: -10 + (Math.random() - 0.5) * n });
53
+ break;
54
+ case "burst-from-edges": {
55
+ const { x: f, y: x, fromX: g, fromY: k } = w(s, o);
56
+ r.push({ ...M, x: f, y: x, fromX: g, fromY: k, size: n });
57
+ break;
58
+ }
59
+ case "pop-expand":
60
+ r.push({
61
+ ...M,
62
+ x: 50,
63
+ y: 100,
64
+ fromX: `${(Math.random() - 0.5) * 27.5}vw`,
65
+ fromY: `${-50 - Math.random() * 27.5}vh`
66
+ });
67
+ break;
68
+ default:
69
+ r.push({
70
+ ...M,
71
+ x: Math.random() * 100,
72
+ y: Math.random() * 100
73
+ });
74
+ }
75
+ }
76
+ return r;
77
+ }
78
+ const X = (o, e = 0.2) => {
79
+ const t = o * e, a = o - t, h = o + t;
80
+ return Math.floor(Math.random() * (h - a + 1)) + a;
81
+ };
82
+ export {
83
+ P as generateStickerData,
84
+ X as randomizeDuration
85
+ };
86
+ //# sourceMappingURL=stickers-effects-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickers-effects-helper.js","sources":["../../../../src/features/stickers/stickers-effects/stickers-effects-helper.ts"],"sourcesContent":["import type { TStickerData, IStickersProps } from './stickers-effects-types';\n\nimport { stickerData } from '../sticker-data';\n\nconst getBurstPosition = (\n index: number,\n total: number,\n): {\n fromX: string;\n fromY: string;\n x: number;\n y: number;\n} => {\n const countPerSide = Math.ceil(total / 4);\n const sideIndex = Math.floor(index / countPerSide);\n const pos = index % countPerSide;\n\n const sides = ['top', 'right', 'bottom', 'left'] as const;\n const side = sides[sideIndex] ?? 'left';\n\n const basePercent = ((pos + 0.5) / countPerSide) * 100;\n const jitter = (Math.random() - 0.5) * 25;\n const edgePercent = Math.min(Math.max(basePercent + jitter, 0), 100);\n\n const centerX = 45 + Math.random() * 10;\n const centerY = 45 + Math.random() * 10;\n\n let fromX = 0;\n let fromY = 0;\n\n switch (side) {\n case 'top':\n fromX = edgePercent - centerX;\n fromY = -centerY + jitter;\n break;\n case 'right':\n fromX = 100 - centerX + jitter;\n fromY = edgePercent - centerY;\n break;\n case 'bottom':\n fromX = edgePercent - centerX;\n fromY = 100 - centerY + jitter;\n break;\n case 'left':\n fromX = -centerX + jitter;\n fromY = edgePercent - centerY;\n break;\n }\n\n return {\n fromX: `${fromX}vw`,\n fromY: `${fromY}vh`,\n x: centerX,\n y: centerY,\n };\n};\n\nconst getRandomNonOverlappingPositions = (count: number, buffer = 10): number[] => {\n const used: number[] = [];\n let attempts = 0;\n const maxAttempts = count;\n\n while (used.length < count && attempts < maxAttempts) {\n const value = Math.floor(Math.random() * (100 - 2 * buffer) + buffer);\n\n if (used.every(v => Math.abs(v - value) >= buffer)) {\n used.push(value);\n }\n attempts++;\n }\n\n while (used.length < count) {\n used.push(Math.floor(Math.random() * (100 - 2 * buffer) + buffer));\n }\n\n return used;\n};\n\nexport function generateStickerData({\n count,\n effect,\n stickers,\n minSize,\n maxSize,\n}: {\n count: number;\n effect: IStickersProps['effect'];\n stickers: string[];\n minSize: number;\n maxSize: number;\n}): TStickerData[] {\n const buffer = (100 / count) * 2;\n const getSize = () => Math.random() * (maxSize - minSize) + minSize;\n const result: TStickerData[] = [];\n const xPositions = ['float-up', 'fall-down'].includes(effect)\n ? getRandomNonOverlappingPositions(count, buffer)\n : [];\n\n for (let i = 0; i < count; i++) {\n const stickerId = stickers[i % stickers.length] ?? '';\n const { emoji: sticker = '', lottieUrl: lottie } =\n stickerData.find(({ id }) => id === stickerId) || {};\n\n const size = getSize();\n const x = xPositions[i]!;\n const common = { id: stickerId, sticker, lottie, size };\n\n switch (effect) {\n case 'float-up':\n result.push({ ...common, x, y: 110 + (Math.random() - 0.5) * size });\n break;\n\n case 'fall-down':\n result.push({ ...common, x, y: -10 + (Math.random() - 0.5) * size });\n break;\n\n case 'burst-from-edges': {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { x, y, fromX, fromY } = getBurstPosition(i, count);\n\n result.push({ ...common, x, y, fromX, fromY, size });\n break;\n }\n\n case 'pop-expand':\n result.push({\n ...common,\n x: 50,\n y: 100,\n fromX: `${(Math.random() - 0.5) * 27.5}vw`,\n fromY: `${-50 - Math.random() * 27.5}vh`,\n });\n break;\n\n default:\n result.push({\n ...common,\n x: Math.random() * 100,\n y: Math.random() * 100,\n });\n }\n }\n\n return result;\n}\n\nexport const randomizeDuration = (base: number, variancePercent = 0.2): number => {\n const delta = base * variancePercent;\n const min = base - delta;\n const max = base + delta;\n\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n"],"names":["getBurstPosition","index","total","countPerSide","sideIndex","pos","side","basePercent","jitter","edgePercent","centerX","centerY","fromX","fromY","getRandomNonOverlappingPositions","count","buffer","used","attempts","maxAttempts","value","v","generateStickerData","effect","stickers","minSize","maxSize","getSize","result","xPositions","i","stickerId","sticker","lottie","stickerData","id","size","x","common","y","randomizeDuration","base","variancePercent","delta","min","max"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import $, { css as s } from "styled-components";
2
- import { effectAnimations as n } from "./stickers-effects.js";
2
+ import { effectAnimations as n } from "./effects.js";
3
3
  const h = $.div`
4
4
  position: relative;
5
5
  width: 100vw;
@@ -26,4 +26,4 @@ export {
26
26
  h as Container,
27
27
  a as Sticker
28
28
  };
29
- //# sourceMappingURL=stickers-styled.js.map
29
+ //# sourceMappingURL=stickers-effects-styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickers-effects-styled.js","sources":["../../../../src/features/stickers/stickers-effects/stickers-effects-styled.ts"],"sourcesContent":["import type { IStickersProps } from './stickers-effects-types';\n\nimport styled, { css } from 'styled-components';\n\nimport { effectAnimations } from './effects';\n\nexport const Container = styled.div`\n position: relative;\n width: 100vw;\n height: 100vh;\n background: transparent;\n pointer-events: none;\n`;\n\nexport const Sticker = styled.div<{\n effect: IStickersProps['effect'];\n duration: number;\n fromX?: string;\n fromY?: string;\n x: number;\n y: number;\n size: number;\n}>`\n position: absolute;\n z-index: 10;\n\n left: ${({ x }) => `${x}%`};\n top: ${({ y }) => `${y}%`};\n width: ${({ size }) => `${size}px`};\n height: ${({ size }) => `${size}px`};\n font-size: ${({ size }) => `${size}px`};\n\n ${({ effect, duration, fromX, fromY }) =>\n fromX && fromY\n ? css`\n ${effectAnimations[effect](duration)}\n --from-x: ${fromX};\n --from-y: ${fromY};\n `\n : effectAnimations[effect](duration)}\n`;\n"],"names":["Container","styled","Sticker","x","y","size","effect","duration","fromX","fromY","css","effectAnimations"],"mappings":";;AAMO,MAAMA,IAAYC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQnBC,IAAUD,EAAO;AAAA;AAAA;AAAA;AAAA,UAYpB,CAAC,EAAE,GAAAE,EAAQ,MAAA,GAAGA,CAAC,GAAG;AAAA,SACnB,CAAC,EAAE,GAAAC,EAAQ,MAAA,GAAGA,CAAC,GAAG;AAAA,WAChB,CAAC,EAAE,MAAAC,EAAW,MAAA,GAAGA,CAAI,IAAI;AAAA,YACxB,CAAC,EAAE,MAAAA,EAAW,MAAA,GAAGA,CAAI,IAAI;AAAA,eACtB,CAAC,EAAE,MAAAA,EAAW,MAAA,GAAGA,CAAI,IAAI;AAAA;AAAA,IAEpC,CAAC,EAAE,QAAAC,GAAQ,UAAAC,GAAU,OAAAC,GAAO,OAAAC,QAC5BD,KAASC,IACLC;AAAA,YACIC,EAAiBL,CAAM,EAAEC,CAAQ,CAAC;AAAA,sBACxBC,CAAK;AAAA,sBACLC,CAAK;AAAA,YAEnBE,EAAiBL,CAAM,EAAEC,CAAQ,CAAC;AAAA;"}
@@ -0,0 +1,54 @@
1
+ import { jsx as s, Fragment as E } from "react/jsx-runtime";
2
+ import { memo as u, useState as f, useEffect as d } from "react";
3
+ import F from "../../ui/dot-lottie-animations/dot-lottie-animation.js";
4
+ import { preloadLottieFile as g } from "./stickers-cache.js";
5
+ import { generateStickerData as z } from "./stickers-effects-helper.js";
6
+ import { Container as L, Sticker as T } from "./stickers-effects-styled.js";
7
+ const $ = u(({ url: t, sticker: o, size: a }) => {
8
+ const [i, m] = f(), [n, e] = f(!1);
9
+ return d(() => {
10
+ let r = !0;
11
+ if (t)
12
+ return g(t).then((c) => {
13
+ r && (c ? m(c) : e(!0));
14
+ }).catch(() => {
15
+ r && e(!0);
16
+ }), () => {
17
+ r = !1;
18
+ };
19
+ }, [t]), !t || n || !i ? /* @__PURE__ */ s(E, { children: o }) : /* @__PURE__ */ s(F, { data: i, width: a, height: a, onError: () => e(!0) });
20
+ }), b = ({ stickers: t, effect: o, count: a, duration: i }) => {
21
+ const [m, n] = f([]);
22
+ return d(() => {
23
+ const e = z({
24
+ count: a,
25
+ effect: o,
26
+ stickers: t,
27
+ minSize: 32,
28
+ maxSize: 48
29
+ });
30
+ n(e);
31
+ const r = setTimeout(() => n([]), i);
32
+ return () => clearTimeout(r);
33
+ }, [t, o, a, i]), /* @__PURE__ */ s(L, { children: m.map((e, r) => {
34
+ const { id: c, sticker: h, lottie: k, x: p, y: S, size: l, fromX: D, fromY: x } = e;
35
+ return /* @__PURE__ */ s(
36
+ T,
37
+ {
38
+ effect: o,
39
+ duration: i,
40
+ fromX: D,
41
+ fromY: x,
42
+ x: p,
43
+ y: S,
44
+ size: l,
45
+ children: /* @__PURE__ */ s($, { url: k, sticker: h, size: l })
46
+ },
47
+ `${c}-${r}`
48
+ );
49
+ }) });
50
+ }, W = u(b);
51
+ export {
52
+ W as default
53
+ };
54
+ //# 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';\nimport type { Data } from '@lottiefiles/dotlottie-web';\n\nimport React, { memo, useEffect, useState } from 'react';\n\nimport DotLottieAnimation from '../../ui/dot-lottie-animations/dot-lottie-animation';\nimport { preloadLottieFile } from './stickers-cache';\nimport { generateStickerData } from './stickers-effects-helper';\nimport * as S from './stickers-effects-styled';\n\nconst StickerWithFallback: React.FC<{\n url?: string;\n sticker: string;\n size: number;\n}> = memo(({ url, sticker, size }) => {\n const [data, setData] = useState<Data>();\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n let isMounted = true;\n\n if (!url) return;\n\n preloadLottieFile(url)\n .then(result => {\n if (isMounted) {\n if (result) {\n setData(result);\n } else {\n setFailed(true);\n }\n }\n })\n .catch(() => {\n if (isMounted) setFailed(true);\n });\n\n return () => {\n isMounted = false;\n };\n }, [url]);\n\n if (!url || failed || !data) {\n return <>{sticker}</>;\n }\n\n return (\n <DotLottieAnimation data={data} 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 url={lottie} sticker={sticker} size={size} />\n </S.Sticker>\n );\n })}\n </S.Container>\n );\n};\n\nexport default memo(StickersEffects);\n"],"names":["StickerWithFallback","memo","url","sticker","size","data","setData","useState","failed","setFailed","useEffect","isMounted","preloadLottieFile","result","jsx","DotLottieAnimation","StickersEffects","stickers","effect","count","duration","stickersData","setStickersData","stickerData","generateStickerData","timeout","S.Container","i","id","lottie","x","y","fromX","fromY","S.Sticker","stickersEffects"],"mappings":";;;;;;AAUA,MAAMA,IAIDC,EAAK,CAAC,EAAE,KAAAC,GAAK,SAAAC,GAAS,MAAAC,QAAW;AACpC,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAe,GACjC,CAACC,GAAQC,CAAS,IAAIF,EAAS,EAAK;AA0B1C,SAxBAG,EAAU,MAAM;AACd,QAAIC,IAAY;AAEhB,QAAKT;AAEa,aAAAU,EAAAV,CAAG,EAClB,KAAK,CAAUW,MAAA;AACd,QAAIF,MACEE,IACFP,EAAQO,CAAM,IAEdJ,EAAU,EAAI;AAAA,MAElB,CACD,EACA,MAAM,MAAM;AACP,QAAAE,OAAqB,EAAI;AAAA,MAAA,CAC9B,GAEI,MAAM;AACC,QAAAA,IAAA;AAAA,MAAA;AAAA,EACd,GACC,CAACT,CAAG,CAAC,GAEJ,CAACA,KAAOM,KAAU,CAACH,2BACX,UAAQF,EAAA,CAAA,IAIlB,gBAAAW,EAACC,GAAmB,EAAA,MAAAV,GAAY,OAAOD,GAAM,QAAQA,GAAM,SAAS,MAAMK,EAAU,EAAI,EAAG,CAAA;AAE/F,CAAC,GAEKO,IAA4C,CAAC,EAAE,UAAAC,GAAU,QAAAC,GAAQ,OAAAC,GAAO,UAAAC,QAAe;AAC3F,QAAM,CAACC,GAAcC,CAAe,IAAIf,EAAiD,CAAE,CAAA;AAE3F,SAAAG,EAAU,MAAM;AACd,UAAMa,IAAcC,EAAoB;AAAA,MACtC,OAAAL;AAAA,MACA,QAAAD;AAAA,MACA,UAAAD;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,IAAA,CACV;AAED,IAAAK,EAAgBC,CAAW;AAE3B,UAAME,IAAU,WAAW,MAAMH,EAAgB,CAAE,CAAA,GAAGF,CAAQ;AAEvD,WAAA,MAAM,aAAaK,CAAO;AAAA,KAChC,CAACR,GAAUC,GAAQC,GAAOC,CAAQ,CAAC,GAGpC,gBAAAN,EAACY,GAAA,EACE,YAAa,IAAI,CAACrB,GAAoBsB,MAAM;AACrC,UAAA,EAAE,IAAAC,GAAI,SAAAzB,GAAS,QAAA0B,GAAQ,GAAAC,GAAG,GAAAC,GAAG,MAAA3B,GAAM,OAAA4B,GAAO,OAAAC,EAAU,IAAA5B;AAGxD,WAAA,gBAAAS;AAAA,MAACoB;AAAAA,MAAA;AAAA,QAEC,QAAAhB;AAAA,QACA,UAAAE;AAAA,QACA,OAAAY;AAAA,QACA,OAAAC;AAAA,QACA,GAAAH;AAAA,QACA,GAAAC;AAAA,QACA,MAAA3B;AAAA,QAEA,UAAC,gBAAAU,EAAAd,GAAA,EAAoB,KAAK6B,GAAQ,SAAA1B,GAAkB,MAAAC,GAAY;AAAA,MAAA;AAAA,MAT3D,GAAGwB,CAAE,IAAID,CAAC;AAAA,IAAA;AAAA,EAYpB,CAAA,EACH,CAAA;AAEJ,GAEeQ,IAAAlC,EAAKe,CAAe;"}
@@ -1,4 +1,4 @@
1
- const E = {
1
+ const _ = {
2
2
  CHAPTER_CROWN_ICON: 4,
3
3
  CHAPTER_PLUS_ICON: 2,
4
4
  CHAPTER_PROGRESS_SVG: 2,
@@ -15,11 +15,9 @@ const E = {
15
15
  DESMOS_CALCULATOR: 2,
16
16
  GOAL_CHAPTER_SHEETS_MENU: 4,
17
17
  JOURNEY_OVERLAY: 1e3,
18
- CHAPTER_COMPLETED_LOTTIE: 5,
19
- HEADER: 11
20
- // Header z-index for wins dashboard
18
+ CHAPTER_COMPLETED_LOTTIE: 5
21
19
  };
22
20
  export {
23
- E as ZINDEX
21
+ _ as ZINDEX
24
22
  };
25
23
  //# sourceMappingURL=z-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"z-index.js","sources":["../../../../src/features/ui/constants/z-index.ts"],"sourcesContent":["const ZINDEX = {\n CHAPTER_CROWN_ICON: 4,\n CHAPTER_PLUS_ICON: 2,\n CHAPTER_PROGRESS_SVG: 2,\n LPAR_SHEET_ITEM_BOTTOM_DASH_BOX: 1,\n LPAR_SHEET_ITEM_TOP_VERTICAL_ICON: 2,\n MODAL: 20,\n SAT_SUMMARY_SCORE: 25, //* SAT_SUMMARY_SCORE > MODAL\n CANVAS_SCRIBBLING: 26, //* CANVAS_SCRIBBLING > Learnosity\n TILE_CONTAINER: 30, //whiteboard\n QUESTION_TIPS: -1,\n DESMOS_CALCULATOR: 2,\n GOAL_CHAPTER_SHEETS_MENU: 4,\n JOURNEY_OVERLAY: 1000,\n CHAPTER_COMPLETED_LOTTIE: 5,\n HEADER: 11, // Header z-index for wins dashboard\n} as const;\n\nexport { ZINDEX };\n"],"names":["ZINDEX"],"mappings":"AAAA,MAAMA,IAAS;AAAA,EACb,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,iCAAiC;AAAA,EACjC,mCAAmC;AAAA,EACnC,OAAO;AAAA,EACP,mBAAmB;AAAA;AAAA,EACnB,mBAAmB;AAAA;AAAA,EACnB,gBAAgB;AAAA;AAAA,EAChB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,iBAAiB;AAAA,EACjB,0BAA0B;AAAA,EAC1B,QAAQ;AAAA;AACV;"}
1
+ {"version":3,"file":"z-index.js","sources":["../../../../src/features/ui/constants/z-index.ts"],"sourcesContent":["const ZINDEX = {\n CHAPTER_CROWN_ICON: 4,\n CHAPTER_PLUS_ICON: 2,\n CHAPTER_PROGRESS_SVG: 2,\n LPAR_SHEET_ITEM_BOTTOM_DASH_BOX: 1,\n LPAR_SHEET_ITEM_TOP_VERTICAL_ICON: 2,\n MODAL: 20,\n SAT_SUMMARY_SCORE: 25, //* SAT_SUMMARY_SCORE > MODAL\n CANVAS_SCRIBBLING: 26, //* CANVAS_SCRIBBLING > Learnosity\n TILE_CONTAINER: 30, //whiteboard\n QUESTION_TIPS: -1,\n DESMOS_CALCULATOR: 2,\n GOAL_CHAPTER_SHEETS_MENU: 4,\n JOURNEY_OVERLAY: 1000,\n CHAPTER_COMPLETED_LOTTIE: 5,\n} as const;\n\nexport { ZINDEX };\n"],"names":["ZINDEX"],"mappings":"AAAA,MAAMA,IAAS;AAAA,EACb,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,iCAAiC;AAAA,EACjC,mCAAmC;AAAA,EACnC,OAAO;AAAA,EACP,mBAAmB;AAAA;AAAA,EACnB,mBAAmB;AAAA;AAAA,EACnB,gBAAgB;AAAA;AAAA,EAChB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,iBAAiB;AAAA,EACjB,0BAA0B;AAC5B;"}
@@ -1,80 +1,93 @@
1
- import { jsx as l } from "react/jsx-runtime";
1
+ import { jsx as d } from "react/jsx-runtime";
2
2
  import { DotLottieWorker as v } from "../../../node_modules/@lottiefiles/dotlottie-web/dist/index.js";
3
- import { memo as w, forwardRef as x, useRef as p, useImperativeHandle as R, useEffect as h } from "react";
4
- import E from "../layout/flex-view.js";
5
- import { Canvas as H } from "./dot-lottie-animation-styled.js";
6
- const N = x((y, g) => {
7
- const {
8
- src: m,
9
- width: i = "100%",
10
- height: a = "100%",
11
- settings: f,
12
- eventListeners: r,
13
- onRender: u,
14
- onError: c
15
- } = y, s = p(null), t = p(null);
16
- return R(
17
- g,
18
- () => ({
19
- playSegments: (e) => {
20
- var n, o;
21
- (n = t.current) == null || n.setSegment(e[0], e[1]), (o = t.current) == null || o.play();
22
- },
23
- play: () => {
24
- var e;
25
- (e = t.current) == null || e.play();
26
- },
27
- pause: () => {
28
- var e;
29
- (e = t.current) == null || e.pause();
30
- }
31
- }),
32
- []
33
- ), h(() => {
34
- if (s.current)
35
- try {
36
- t.current = new v({
37
- src: m,
38
- canvas: s.current,
39
- autoplay: !0,
40
- loop: !1,
41
- renderConfig: {
42
- autoResize: !0,
43
- devicePixelRatio: window.devicePixelRatio,
44
- freezeOnOffscreen: !0
45
- },
46
- ...f
47
- }), requestAnimationFrame(() => {
48
- u == null || u();
49
- });
50
- } catch (e) {
51
- console.log(e), c == null || c();
3
+ import { memo as w, forwardRef as x, useRef as p, useImperativeHandle as A, useEffect as h } from "react";
4
+ import R from "../layout/flex-view.js";
5
+ import { Canvas as $ } from "./dot-lottie-animation-styled.js";
6
+ const E = x(
7
+ (y, g) => {
8
+ const {
9
+ src: s,
10
+ data: f,
11
+ width: i = "100%",
12
+ height: a = "100%",
13
+ settings: l,
14
+ eventListeners: o,
15
+ onRender: u,
16
+ onError: c
17
+ } = y, m = p(null), t = p(null);
18
+ return A(
19
+ g,
20
+ () => ({
21
+ play: () => {
22
+ var e;
23
+ (e = t.current) == null || e.play();
24
+ },
25
+ pause: () => {
26
+ var e;
27
+ (e = t.current) == null || e.pause();
28
+ },
29
+ playSegments: (e) => {
30
+ var r, n;
31
+ (r = t.current) == null || r.setSegment(e[0], e[1]), (n = t.current) == null || n.play();
32
+ },
33
+ setFrame: (e) => {
34
+ var r;
35
+ (r = t.current) == null || r.setFrame(e);
36
+ }
37
+ }),
38
+ []
39
+ ), h(() => {
40
+ if (!m.current) return;
41
+ let e = !1;
42
+ return (() => {
43
+ try {
44
+ t.current = new v({
45
+ src: s,
46
+ data: f,
47
+ canvas: m.current,
48
+ autoplay: !0,
49
+ loop: !1,
50
+ renderConfig: {
51
+ autoResize: !0,
52
+ devicePixelRatio: window.devicePixelRatio,
53
+ freezeOnOffscreen: !0
54
+ },
55
+ ...l
56
+ }), requestAnimationFrame(() => {
57
+ e || u == null || u();
58
+ });
59
+ } catch (n) {
60
+ console.log(n), c == null || c();
61
+ }
62
+ })(), () => {
63
+ e = !0, t.current && (t.current.destroy(), t.current = null);
64
+ };
65
+ }, [s, l, u, c, f]), h(() => (o == null || o.forEach(
66
+ ({ name: e, callback: r }) => {
67
+ var n;
68
+ return (n = t.current) == null ? void 0 : n.addEventListener(e, r);
52
69
  }
53
- }, [m, f, u, c]), h(() => (r == null || r.forEach(
54
- ({ name: e, callback: n }) => {
55
- var o;
56
- return (o = t.current) == null ? void 0 : o.addEventListener(e, n);
57
- }
58
- ), () => {
59
- var e;
60
- r == null || r.forEach(
61
- ({ name: n, callback: o }) => {
62
- var d;
63
- return (d = t.current) == null ? void 0 : d.removeEventListener(n, o);
64
- }
65
- ), (e = t.current) == null || e.destroy();
66
- }), [r]), /* @__PURE__ */ l(E, { $width: i, $height: a, children: /* @__PURE__ */ l(
67
- H,
68
- {
69
- ref: s,
70
- $renderWidth: i,
71
- $renderHeight: a,
72
- width: typeof i == "number" ? i : void 0,
73
- height: typeof a == "number" ? a : void 0
74
- }
75
- ) });
76
- }), F = w(N);
70
+ ), () => {
71
+ o == null || o.forEach(
72
+ ({ name: e, callback: r }) => {
73
+ var n;
74
+ return (n = t.current) == null ? void 0 : n.removeEventListener(e, r);
75
+ }
76
+ );
77
+ }), [o]), /* @__PURE__ */ d(R, { $width: i, $height: a, children: /* @__PURE__ */ d(
78
+ $,
79
+ {
80
+ ref: m,
81
+ $renderWidth: i,
82
+ $renderHeight: a,
83
+ width: typeof i == "number" ? i : void 0,
84
+ height: typeof a == "number" ? a : void 0
85
+ },
86
+ s
87
+ ) });
88
+ }
89
+ ), C = w(E);
77
90
  export {
78
- F as default
91
+ C as default
79
92
  };
80
93
  //# sourceMappingURL=dot-lottie-animation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dot-lottie-animation.js","sources":["../../../../src/features/ui/dot-lottie-animations/dot-lottie-animation.tsx"],"sourcesContent":["import type {\n AnimationSegment,\n ILottieAnimationProps,\n ILottieAnimationRef,\n} from './dot-lottie-types';\n\nimport { DotLottieWorker } from '@lottiefiles/dotlottie-web';\nimport { forwardRef, memo, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport * as Styled from './dot-lottie-animation-styled';\n\nconst DotLottieAnimation = forwardRef<ILottieAnimationRef, ILottieAnimationProps>((props, ref) => {\n const {\n src,\n width = '100%',\n height = '100%',\n settings,\n eventListeners,\n onRender,\n onError,\n } = props;\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const animationInstance = useRef<DotLottieWorker | null>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n playSegments: (segments: AnimationSegment) => {\n animationInstance.current?.setSegment(segments[0], segments[1]);\n animationInstance.current?.play();\n },\n play: () => {\n animationInstance.current?.play();\n },\n pause: () => {\n animationInstance.current?.pause();\n },\n }),\n [],\n );\n\n useEffect(() => {\n if (!canvasRef.current) return;\n\n try {\n animationInstance.current = new DotLottieWorker({\n src,\n canvas: canvasRef.current,\n autoplay: true,\n loop: false,\n renderConfig: {\n autoResize: true,\n devicePixelRatio: window.devicePixelRatio,\n freezeOnOffscreen: true,\n },\n ...settings,\n });\n\n requestAnimationFrame(() => {\n onRender?.();\n });\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log(err);\n onError?.();\n }\n }, [src, settings, onRender, onError]);\n\n useEffect(() => {\n eventListeners?.forEach(\n ({ name, callback }) => animationInstance.current?.addEventListener(name, callback),\n );\n\n return () => {\n eventListeners?.forEach(\n ({ name, callback }) => animationInstance.current?.removeEventListener(name, callback),\n );\n animationInstance.current?.destroy();\n };\n }, [eventListeners]);\n\n const isNumW = typeof width === 'number';\n const isNumH = typeof height === 'number';\n\n return (\n <FlexView $width={width} $height={height}>\n <Styled.Canvas\n ref={canvasRef}\n $renderWidth={width}\n $renderHeight={height}\n width={isNumW ? width : undefined}\n height={isNumH ? height : undefined}\n />\n </FlexView>\n );\n});\n\nexport default memo(DotLottieAnimation);\n"],"names":["DotLottieAnimation","forwardRef","props","ref","src","width","height","settings","eventListeners","onRender","onError","canvasRef","useRef","animationInstance","useImperativeHandle","segments","_a","_b","useEffect","DotLottieWorker","err","name","callback","jsx","FlexView","Styled.Canvas","dotLottieAnimation","memo"],"mappings":";;;;;AAYA,MAAMA,IAAqBC,EAAuD,CAACC,GAAOC,MAAQ;AAC1F,QAAA;AAAA,IACJ,KAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,QAAAC,IAAS;AAAA,IACT,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,EACE,IAAAR,GAEES,IAAYC,EAA0B,IAAI,GAC1CC,IAAoBD,EAA+B,IAAI;AAE7D,SAAAE;AAAA,IACEX;AAAA,IACA,OAAO;AAAA,MACL,cAAc,CAACY,MAA+B;;AAC5C,SAAAC,IAAAH,EAAkB,YAAlB,QAAAG,EAA2B,WAAWD,EAAS,CAAC,GAAGA,EAAS,CAAC,KAC7DE,IAAAJ,EAAkB,YAAlB,QAAAI,EAA2B;AAAA,MAC7B;AAAA,MACA,MAAM,MAAM;;AACV,SAAAD,IAAAH,EAAkB,YAAlB,QAAAG,EAA2B;AAAA,MAC7B;AAAA,MACA,OAAO,MAAM;;AACX,SAAAA,IAAAH,EAAkB,YAAlB,QAAAG,EAA2B;AAAA,MAC7B;AAAA,IAAA;AAAA,IAEF,CAAC;AAAA,EAAA,GAGHE,EAAU,MAAM;AACV,QAACP,EAAU;AAEX,UAAA;AACgB,QAAAE,EAAA,UAAU,IAAIM,EAAgB;AAAA,UAC9C,KAAAf;AAAA,UACA,QAAQO,EAAU;AAAA,UAClB,UAAU;AAAA,UACV,MAAM;AAAA,UACN,cAAc;AAAA,YACZ,YAAY;AAAA,YACZ,kBAAkB,OAAO;AAAA,YACzB,mBAAmB;AAAA,UACrB;AAAA,UACA,GAAGJ;AAAA,QAAA,CACJ,GAED,sBAAsB,MAAM;AACf,UAAAE,KAAA,QAAAA;AAAA,QAAA,CACZ;AAAA,eACMW,GAAK;AAEZ,gBAAQ,IAAIA,CAAG,GACLV,KAAA,QAAAA;AAAA,MACZ;AAAA,KACC,CAACN,GAAKG,GAAUE,GAAUC,CAAO,CAAC,GAErCQ,EAAU,OACQV,KAAA,QAAAA,EAAA;AAAA,IACd,CAAC,EAAE,MAAAa,GAAM,UAAAC,QAAe;;AAAA,cAAAN,IAAAH,EAAkB,YAAlB,gBAAAG,EAA2B,iBAAiBK,GAAMC;AAAA;AAAA,KAGrE,MAAM;;AACK,IAAAd,KAAA,QAAAA,EAAA;AAAA,MACd,CAAC,EAAE,MAAAa,GAAM,UAAAC,QAAe;;AAAA,gBAAAN,IAAAH,EAAkB,YAAlB,gBAAAG,EAA2B,oBAAoBK,GAAMC;AAAA;AAAA,QAE/EN,IAAAH,EAAkB,YAAlB,QAAAG,EAA2B;AAAA,EAAQ,IAEpC,CAACR,CAAc,CAAC,GAMhB,gBAAAe,EAAAC,GAAA,EAAS,QAAQnB,GAAO,SAASC,GAChC,UAAA,gBAAAiB;AAAA,IAACE;AAAAA,IAAA;AAAA,MACC,KAAKd;AAAA,MACL,cAAcN;AAAA,MACd,eAAeC;AAAA,MACf,OATS,OAAOD,KAAU,WASVA,IAAQ;AAAA,MACxB,QATS,OAAOC,KAAW,WASVA,IAAS;AAAA,IAAA;AAAA,EAE9B,EAAA,CAAA;AAEJ,CAAC,GAEcoB,IAAAC,EAAK3B,CAAkB;"}
1
+ {"version":3,"file":"dot-lottie-animation.js","sources":["../../../../src/features/ui/dot-lottie-animations/dot-lottie-animation.tsx"],"sourcesContent":["import type {\n AnimationSegment,\n IDotLottieAnimationProps,\n IDotLottieAnimationRef,\n} from './dot-lottie-types';\n\nimport { DotLottieWorker } from '@lottiefiles/dotlottie-web';\nimport { forwardRef, memo, useEffect, useImperativeHandle, useRef } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport * as Styled from './dot-lottie-animation-styled';\n\nconst DotLottieAnimation = forwardRef<IDotLottieAnimationRef, IDotLottieAnimationProps>(\n (props, ref) => {\n const {\n src,\n data,\n width = '100%',\n height = '100%',\n settings,\n eventListeners,\n onRender,\n onError,\n } = props;\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const animationInstance = useRef<DotLottieWorker | null>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n play: () => {\n animationInstance.current?.play();\n },\n pause: () => {\n animationInstance.current?.pause();\n },\n playSegments: (segments: AnimationSegment) => {\n animationInstance.current?.setSegment(segments[0], segments[1]);\n animationInstance.current?.play();\n },\n setFrame: (frame: number) => {\n animationInstance.current?.setFrame(frame);\n },\n }),\n [],\n );\n\n useEffect(() => {\n if (!canvasRef.current) return;\n\n let destroyed = false;\n\n const loadAnimation = () => {\n try {\n animationInstance.current = new DotLottieWorker({\n src,\n data,\n canvas: canvasRef.current!,\n autoplay: true,\n loop: false,\n renderConfig: {\n autoResize: true,\n devicePixelRatio: window.devicePixelRatio,\n freezeOnOffscreen: true,\n },\n ...settings,\n });\n\n requestAnimationFrame(() => {\n if (destroyed) return;\n onRender?.();\n });\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log(err);\n onError?.();\n }\n };\n\n loadAnimation();\n\n return () => {\n destroyed = true;\n if (animationInstance.current) {\n animationInstance.current.destroy();\n animationInstance.current = null;\n }\n };\n }, [src, settings, onRender, onError, data]);\n\n useEffect(() => {\n eventListeners?.forEach(\n ({ name, callback }) => animationInstance.current?.addEventListener(name, callback),\n );\n\n return () => {\n eventListeners?.forEach(\n ({ name, callback }) => animationInstance.current?.removeEventListener(name, callback),\n );\n };\n }, [eventListeners]);\n\n const isNumW = typeof width === 'number';\n const isNumH = typeof height === 'number';\n\n return (\n <FlexView $width={width} $height={height}>\n <Styled.Canvas\n key={src}\n ref={canvasRef}\n $renderWidth={width}\n $renderHeight={height}\n width={isNumW ? width : undefined}\n height={isNumH ? height : undefined}\n />\n </FlexView>\n );\n },\n);\n\nexport default memo(DotLottieAnimation);\n"],"names":["DotLottieAnimation","forwardRef","props","ref","src","data","width","height","settings","eventListeners","onRender","onError","canvasRef","useRef","animationInstance","useImperativeHandle","_a","segments","_b","frame","useEffect","destroyed","DotLottieWorker","err","name","callback","jsx","FlexView","Styled.Canvas","DotLottieAnimation$1","memo"],"mappings":";;;;;AAYA,MAAMA,IAAqBC;AAAA,EACzB,CAACC,GAAOC,MAAQ;AACR,UAAA;AAAA,MACJ,KAAAC;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC,IAAQ;AAAA,MACR,QAAAC,IAAS;AAAA,MACT,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,UAAAC;AAAA,MACA,SAAAC;AAAA,IACE,IAAAT,GAEEU,IAAYC,EAA0B,IAAI,GAC1CC,IAAoBD,EAA+B,IAAI;AAE7D,WAAAE;AAAA,MACEZ;AAAA,MACA,OAAO;AAAA,QACL,MAAM,MAAM;;AACV,WAAAa,IAAAF,EAAkB,YAAlB,QAAAE,EAA2B;AAAA,QAC7B;AAAA,QACA,OAAO,MAAM;;AACX,WAAAA,IAAAF,EAAkB,YAAlB,QAAAE,EAA2B;AAAA,QAC7B;AAAA,QACA,cAAc,CAACC,MAA+B;;AAC5C,WAAAD,IAAAF,EAAkB,YAAlB,QAAAE,EAA2B,WAAWC,EAAS,CAAC,GAAGA,EAAS,CAAC,KAC7DC,IAAAJ,EAAkB,YAAlB,QAAAI,EAA2B;AAAA,QAC7B;AAAA,QACA,UAAU,CAACC,MAAkB;;AACT,WAAAH,IAAAF,EAAA,YAAA,QAAAE,EAAS,SAASG;AAAA,QACtC;AAAA,MAAA;AAAA,MAEF,CAAC;AAAA,IAAA,GAGHC,EAAU,MAAM;AACV,UAAA,CAACR,EAAU,QAAS;AAExB,UAAIS,IAAY;AA6BF,cA3BQ,MAAM;AACtB,YAAA;AACgB,UAAAP,EAAA,UAAU,IAAIQ,EAAgB;AAAA,YAC9C,KAAAlB;AAAA,YACA,MAAAC;AAAA,YACA,QAAQO,EAAU;AAAA,YAClB,UAAU;AAAA,YACV,MAAM;AAAA,YACN,cAAc;AAAA,cACZ,YAAY;AAAA,cACZ,kBAAkB,OAAO;AAAA,cACzB,mBAAmB;AAAA,YACrB;AAAA,YACA,GAAGJ;AAAA,UAAA,CACJ,GAED,sBAAsB,MAAM;AAC1B,YAAIa,KACOX,KAAA,QAAAA;AAAA,UAAA,CACZ;AAAA,iBACMa,GAAK;AAEZ,kBAAQ,IAAIA,CAAG,GACLZ,KAAA,QAAAA;AAAA,QACZ;AAAA,MAAA,MAKK,MAAM;AACC,QAAAU,IAAA,IACRP,EAAkB,YACpBA,EAAkB,QAAQ,WAC1BA,EAAkB,UAAU;AAAA,MAC9B;AAAA,IACF,GACC,CAACV,GAAKI,GAAUE,GAAUC,GAASN,CAAI,CAAC,GAE3Ce,EAAU,OACQX,KAAA,QAAAA,EAAA;AAAA,MACd,CAAC,EAAE,MAAAe,GAAM,UAAAC,QAAe;;AAAA,gBAAAT,IAAAF,EAAkB,YAAlB,gBAAAE,EAA2B,iBAAiBQ,GAAMC;AAAA;AAAA,OAGrE,MAAM;AACK,MAAAhB,KAAA,QAAAA,EAAA;AAAA,QACd,CAAC,EAAE,MAAAe,GAAM,UAAAC,QAAe;;AAAA,kBAAAT,IAAAF,EAAkB,YAAlB,gBAAAE,EAA2B,oBAAoBQ,GAAMC;AAAA;AAAA;AAAA,IAC/E,IAED,CAAChB,CAAc,CAAC,GAMhB,gBAAAiB,EAAAC,GAAA,EAAS,QAAQrB,GAAO,SAASC,GAChC,UAAA,gBAAAmB;AAAA,MAACE;AAAAA,MAAA;AAAA,QAEC,KAAKhB;AAAA,QACL,cAAcN;AAAA,QACd,eAAeC;AAAA,QACf,OAVS,OAAOD,KAAU,WAUVA,IAAQ;AAAA,QACxB,QAVS,OAAOC,KAAW,WAUVA,IAAS;AAAA,MAAA;AAAA,MALrBH;AAAA,IAOT,EAAA,CAAA;AAAA,EAEJ;AACF,GAEeyB,IAAAC,EAAK9B,CAAkB;"}