@cuemath/leap 3.2.31 → 3.2.32-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 (214) hide show
  1. package/dist/assets/illustrations/illustrations.js +5 -6
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/lottie/lottie.js +1 -6
  4. package/dist/assets/lottie/lottie.js.map +1 -1
  5. package/dist/features/analytics-events/platform-events-student.js +1 -2
  6. package/dist/features/analytics-events/platform-events-student.js.map +1 -1
  7. package/dist/features/analytics-events/platform-events-teacher.js +4 -6
  8. package/dist/features/analytics-events/platform-events-teacher.js.map +1 -1
  9. package/dist/features/analytics-events/whitelist-events.js +16 -20
  10. package/dist/features/analytics-events/whitelist-events.js.map +1 -1
  11. package/dist/features/auth/account-selector/account-selector.js +52 -54
  12. package/dist/features/auth/account-selector/account-selector.js.map +1 -1
  13. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message-constants.js +1 -2
  14. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message-constants.js.map +1 -1
  15. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message-styled.js +8 -8
  16. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message-styled.js.map +1 -1
  17. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message.js +60 -82
  18. package/dist/features/auth/comps/animated-avatar-message/animated-avatar-message.js.map +1 -1
  19. package/dist/features/auth/comps/pill-button/pill-button.js +38 -41
  20. package/dist/features/auth/comps/pill-button/pill-button.js.map +1 -1
  21. package/dist/features/auth/comps/resend-otp/resend-otp.js +14 -18
  22. package/dist/features/auth/comps/resend-otp/resend-otp.js.map +1 -1
  23. package/dist/features/auth/comps/selectable-info-card/selectable-info-card.js +26 -32
  24. package/dist/features/auth/comps/selectable-info-card/selectable-info-card.js.map +1 -1
  25. package/dist/features/auth/comps/tabs/tab-tem/tab-item.js +10 -2
  26. package/dist/features/auth/comps/tabs/tab-tem/tab-item.js.map +1 -1
  27. package/dist/features/auth/comps/user-list/user-item/user-item-styled.js +3 -9
  28. package/dist/features/auth/comps/user-list/user-item/user-item-styled.js.map +1 -1
  29. package/dist/features/auth/comps/user-list/user-item/user-item.js +15 -14
  30. package/dist/features/auth/comps/user-list/user-item/user-item.js.map +1 -1
  31. package/dist/features/auth/pla-signup/signup-options/signup-options.js +35 -42
  32. package/dist/features/auth/pla-signup/signup-options/signup-options.js.map +1 -1
  33. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-item.js +43 -43
  34. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-item.js.map +1 -1
  35. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-utils.js +1 -1
  36. package/dist/features/chapters/lpar-chapter/block-section/sat-sheet-item/sat-sheet-utils.js.map +1 -1
  37. package/dist/features/chapters-v2/utils/node-card-utils.js +2 -2
  38. package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -1
  39. package/dist/features/communication/pub-sub/constants.js +4 -7
  40. package/dist/features/communication/pub-sub/constants.js.map +1 -1
  41. package/dist/features/homework/homework-card-view.js +97 -85
  42. package/dist/features/homework/homework-card-view.js.map +1 -1
  43. package/dist/features/homework/homework-card.js +42 -44
  44. package/dist/features/homework/homework-card.js.map +1 -1
  45. package/dist/features/homework/hw-card-list/hw-card-list-view.js +29 -31
  46. package/dist/features/homework/hw-card-list/hw-card-list-view.js.map +1 -1
  47. package/dist/features/homework/hw-card-list/hw-card-list.js +48 -54
  48. package/dist/features/homework/hw-card-list/hw-card-list.js.map +1 -1
  49. package/dist/features/homework/utils.js +27 -33
  50. package/dist/features/homework/utils.js.map +1 -1
  51. package/dist/features/journey/hooks/use-home-page-journey/tooltip-item.js +11 -17
  52. package/dist/features/journey/hooks/use-home-page-journey/tooltip-item.js.map +1 -1
  53. package/dist/features/journey/journey-id/journey-id-student.js +1 -1
  54. package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
  55. package/dist/features/journey/journey-id/journey-id-teacher.js +2 -2
  56. package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
  57. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapters-list.js +53 -68
  58. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapters-list.js.map +1 -1
  59. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +46 -48
  60. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  61. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +38 -39
  62. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  63. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +41 -43
  64. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  65. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +59 -61
  66. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  67. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +89 -91
  68. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  69. package/dist/features/puzzles/app/puzzle-app-styled.js +6 -10
  70. package/dist/features/puzzles/app/puzzle-app-styled.js.map +1 -1
  71. package/dist/features/puzzles/comps/puzzle-card-styled.js +69 -24
  72. package/dist/features/puzzles/comps/puzzle-card-styled.js.map +1 -1
  73. package/dist/features/puzzles/comps/puzzle-card.js +30 -79
  74. package/dist/features/puzzles/comps/puzzle-card.js.map +1 -1
  75. package/dist/features/puzzles/puzzle-container/puzzle-container-styled.js +25 -55
  76. package/dist/features/puzzles/puzzle-container/puzzle-container-styled.js.map +1 -1
  77. package/dist/features/puzzles/puzzle-container/puzzle-container.js +107 -100
  78. package/dist/features/puzzles/puzzle-container/puzzle-container.js.map +1 -1
  79. package/dist/features/puzzles/puzzle-feedback-celebration/puzzle-feedback-celebration.js +1 -1
  80. package/dist/features/puzzles/puzzle-feedback-celebration/puzzle-feedback-celebration.js.map +1 -1
  81. package/dist/features/puzzles/utils/puzzle-pattern.js +13 -28
  82. package/dist/features/puzzles/utils/puzzle-pattern.js.map +1 -1
  83. package/dist/features/stickers/sticker-data.js +234 -0
  84. package/dist/features/stickers/sticker-data.js.map +1 -0
  85. package/dist/features/{ui/sticker-grid/sticker-grid-styles.js → stickers/sticker-selector/sticker-selector-styles.js} +23 -31
  86. package/dist/features/stickers/sticker-selector/sticker-selector-styles.js.map +1 -0
  87. package/dist/features/stickers/sticker-selector/sticker-selector.js +39 -0
  88. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -0
  89. package/dist/features/stickers/sticker-selector/sticker.js +59 -0
  90. package/dist/features/stickers/sticker-selector/sticker.js.map +1 -0
  91. package/dist/features/stickers/stickers-effects/effects.js +82 -0
  92. package/dist/features/stickers/stickers-effects/effects.js.map +1 -0
  93. package/dist/features/stickers/stickers-effects/stickers-cache.js +19 -0
  94. package/dist/features/stickers/stickers-effects/stickers-cache.js.map +1 -0
  95. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js +105 -0
  96. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js.map +1 -0
  97. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js +36 -0
  98. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +1 -0
  99. package/dist/features/stickers/stickers-effects/stickers-effects.js +55 -0
  100. package/dist/features/stickers/stickers-effects/stickers-effects.js.map +1 -0
  101. package/dist/features/trial-session/comps/learning-plan/index.js +18 -19
  102. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  103. package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js +8 -3
  104. package/dist/features/ui/arrow-tooltip/arrow-tooltip-styled.js.map +1 -1
  105. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js +40 -40
  106. package/dist/features/ui/arrow-tooltip/arrow-tooltip.js.map +1 -1
  107. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js +88 -75
  108. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js.map +1 -1
  109. package/dist/features/ui/lottie-animation/lottie-animation.js +45 -43
  110. package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
  111. package/dist/features/ui/modals/modal-styled.js +48 -15
  112. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  113. package/dist/features/ui/modals/modal.js +43 -35
  114. package/dist/features/ui/modals/modal.js.map +1 -1
  115. package/dist/features/ui/theme/layout.js +3 -3
  116. package/dist/features/ui/theme/layout.js.map +1 -1
  117. package/dist/features/worksheet/worksheet/worksheet-helpers.js +19 -20
  118. package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
  119. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +12 -16
  120. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
  121. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +47 -101
  122. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
  123. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +163 -166
  124. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  125. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +207 -242
  126. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  127. package/dist/features/worksheet/worksheet/worksheet-styled.js +34 -34
  128. package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
  129. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  130. package/dist/features/worksheet/worksheet/worksheet.js +430 -375
  131. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  132. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +1 -1
  133. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  134. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +35 -44
  135. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  136. package/dist/index.d.ts +86 -151
  137. package/dist/index.js +418 -430
  138. package/dist/index.js.map +1 -1
  139. package/dist/static/animated-avatar.1ad58b1d.json +1 -0
  140. package/dist/static/animated-avatar.69b07505.json +1 -0
  141. package/dist/static/animated-avatar.9c560b46.json +1 -0
  142. package/dist/static/cuemath-app-qr-code.4beefe48.svg +1 -0
  143. package/dist/static/cuemath-app-qr-code.ba6cc09b.svg +1 -0
  144. package/dist/static/cuemath-app-qr-code.d0912fc7.png +0 -0
  145. package/dist/static/otp.2d08f874.json +1 -0
  146. package/dist/static/phone-number.84f55562.json +1 -0
  147. package/dist/static/puzzle-pattern-blue.f4bea1ee.svg +1 -0
  148. package/dist/static/puzzle-pattern-green.c9f84bbc.svg +1 -0
  149. package/dist/static/puzzle-pattern-orange.3da09665.svg +1 -0
  150. package/dist/static/puzzle-pattern-purple.5fb5a319.svg +1 -0
  151. package/dist/static/puzzle-pattern-yellow.aadbf457.svg +1 -0
  152. package/dist/static/target-achieved-text.053bd142.json +2830 -0
  153. package/dist/static/user-type-selector-grid-bg.3c9c8ad6.svg +1 -0
  154. package/dist/static/user-type-selector-grid-bg.3ce8142d.svg +1 -0
  155. package/package.json +3 -2
  156. package/dist/features/auth/pla-signup/pla-analytics-events.js +0 -23
  157. package/dist/features/auth/pla-signup/pla-analytics-events.js.map +0 -1
  158. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-assigned.js +0 -72
  159. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-assigned.js.map +0 -1
  160. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-attempt-journey.js +0 -59
  161. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-attempt-journey.js.map +0 -1
  162. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-dashboard-journey.js +0 -63
  163. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-dashboard-journey.js.map +0 -1
  164. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-intro-journey.js +0 -67
  165. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-intro-journey.js.map +0 -1
  166. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-progress-journey.js +0 -70
  167. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-progress-journey.js.map +0 -1
  168. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-review-journey.js +0 -59
  169. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-review-journey.js.map +0 -1
  170. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-unassign-journey.js +0 -59
  171. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-unassign-journey.js.map +0 -1
  172. package/dist/features/journey/hooks/use-puzzles-journey/use-teacher-puzzle-assigned-journey.js +0 -70
  173. package/dist/features/journey/hooks/use-puzzles-journey/use-teacher-puzzle-assigned-journey.js.map +0 -1
  174. package/dist/features/puzzles/api/puzzle-dashboard.js +0 -10
  175. package/dist/features/puzzles/api/puzzle-dashboard.js.map +0 -1
  176. package/dist/features/puzzles/constants/puzzle-container.js +0 -8
  177. package/dist/features/puzzles/constants/puzzle-container.js.map +0 -1
  178. package/dist/features/puzzles/puzzle-analytics-events.js +0 -11
  179. package/dist/features/puzzles/puzzle-analytics-events.js.map +0 -1
  180. package/dist/features/puzzles/puzzle-container/puzzle-container-view.js +0 -55
  181. package/dist/features/puzzles/puzzle-container/puzzle-container-view.js.map +0 -1
  182. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard-styled.js +0 -37
  183. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard-styled.js.map +0 -1
  184. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard.js +0 -107
  185. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard.js.map +0 -1
  186. package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +0 -1
  187. package/dist/features/ui/sticker-grid/sticker-grid.js +0 -24
  188. package/dist/features/ui/sticker-grid/sticker-grid.js.map +0 -1
  189. package/dist/features/ui/sticker-grid/sticker.js +0 -57
  190. package/dist/features/ui/sticker-grid/sticker.js.map +0 -1
  191. package/dist/features/ui/stickers/constants.js +0 -6
  192. package/dist/features/ui/stickers/constants.js.map +0 -1
  193. package/dist/features/ui/stickers/stickers-effects.js +0 -64
  194. package/dist/features/ui/stickers/stickers-effects.js.map +0 -1
  195. package/dist/features/ui/stickers/stickers-styled.js +0 -29
  196. package/dist/features/ui/stickers/stickers-styled.js.map +0 -1
  197. package/dist/features/ui/stickers/stickers-utils.js +0 -91
  198. package/dist/features/ui/stickers/stickers-utils.js.map +0 -1
  199. package/dist/features/ui/stickers/stickers.js +0 -40
  200. package/dist/features/ui/stickers/stickers.js.map +0 -1
  201. package/dist/features/worksheet/worksheet/hooks/use-worksheet-journey.js +0 -28
  202. package/dist/features/worksheet/worksheet/hooks/use-worksheet-journey.js.map +0 -1
  203. package/dist/static/animated-avatar.c3a0fa98.json +0 -1
  204. package/dist/static/puzzle-blue-lottie.bf64ebc5.json +0 -12760
  205. package/dist/static/puzzle-dashboard-banner.b7956519.svg +0 -1
  206. package/dist/static/puzzle-green-lottie.1da90698.json +0 -1
  207. package/dist/static/puzzle-orange-lottie.0a105c42.json +0 -21206
  208. package/dist/static/puzzle-pattern-blue.abff0164.svg +0 -1
  209. package/dist/static/puzzle-pattern-green.b8ba1840.svg +0 -1
  210. package/dist/static/puzzle-pattern-orange.3f5a17ff.svg +0 -1
  211. package/dist/static/puzzle-pattern-purple.14b09759.svg +0 -1
  212. package/dist/static/puzzle-pattern-yellow.50917fab.svg +0 -1
  213. package/dist/static/puzzle-purple-lottie.e70de110.json +0 -9860
  214. package/dist/static/puzzle-yellow-lottie.275b5cf4.json +0 -1
@@ -0,0 +1,105 @@
1
+ import { stickerData as b } from "../sticker-data.js";
2
+ const w = (t, e) => {
3
+ const o = Math.ceil(e / 4), n = Math.floor(t / o), c = t % o, M = ["top", "right", "bottom", "left"][n] ?? "left", i = (c + 0.5) / o * 100, d = (Math.random() - 0.5) * 25, a = Math.min(Math.max(i + d, 0), 100), h = 45 + Math.random() * 10, m = 45 + Math.random() * 10;
4
+ let r = 0, s = 0;
5
+ switch (M) {
6
+ case "top":
7
+ r = a - h, s = -m + d;
8
+ break;
9
+ case "right":
10
+ r = 100 - h + d, s = a - m;
11
+ break;
12
+ case "bottom":
13
+ r = a - h, s = 100 - m + d;
14
+ break;
15
+ case "left":
16
+ r = -h + d, s = a - m;
17
+ break;
18
+ }
19
+ return {
20
+ fromX: `${r}vw`,
21
+ fromY: `${s}vh`,
22
+ x: h,
23
+ y: m
24
+ };
25
+ }, X = (t, e = 10) => {
26
+ const o = [];
27
+ let n = 0;
28
+ const c = t;
29
+ for (; o.length < t && n < c; ) {
30
+ const l = Math.floor(Math.random() * (100 - 2 * e) + e);
31
+ o.every((M) => Math.abs(M - l) >= e) && o.push(l), n++;
32
+ }
33
+ for (; o.length < t; )
34
+ o.push(Math.floor(Math.random() * (100 - 2 * e) + e));
35
+ return o;
36
+ };
37
+ function y({
38
+ count: t,
39
+ effect: e,
40
+ stickers: o,
41
+ minSize: n,
42
+ maxSize: c
43
+ }) {
44
+ const l = 100 / t * 2, M = () => Math.random() * (c - n) + n, i = [], d = ["float-up", "fall-down"].includes(e) ? X(t, l) : [];
45
+ for (let a = 0; a < t; a++) {
46
+ const h = o[a % o.length] ?? "", { emoji: m = "", lottieUrl: r } = b.find(({ id: u }) => u === h) || {}, s = M(), p = d[a], f = { id: h, sticker: m, size: s };
47
+ switch (e) {
48
+ case "float-up":
49
+ i.push({
50
+ ...f,
51
+ x: p,
52
+ y: 110 + (Math.random() - 0.5) * s,
53
+ lottie: g(p, void 0, 25) ? r : ""
54
+ });
55
+ break;
56
+ case "fall-down":
57
+ i.push({
58
+ ...f,
59
+ x: p,
60
+ y: -10 + (Math.random() - 0.5) * s,
61
+ lottie: g(p, void 0, 25) ? r : ""
62
+ });
63
+ break;
64
+ case "burst-from-edges": {
65
+ const { x: u, y: v, fromX: k, fromY: x } = w(a, t);
66
+ i.push({
67
+ ...f,
68
+ x: u,
69
+ y: v,
70
+ fromX: k,
71
+ fromY: x,
72
+ size: s,
73
+ lottie: Math.random() > 0.5 ? r : ""
74
+ });
75
+ break;
76
+ }
77
+ case "pop-expand":
78
+ i.push({
79
+ ...f,
80
+ x: 50,
81
+ y: 100,
82
+ fromX: `${(Math.random() - 0.5) * 27.5}vw`,
83
+ fromY: `${-50 - Math.random() * 27.5}vh`,
84
+ lottie: Math.random() > 0.5 ? r : ""
85
+ });
86
+ break;
87
+ default:
88
+ i.push({
89
+ ...f,
90
+ x: Math.random() * 100,
91
+ y: Math.random() * 100
92
+ });
93
+ }
94
+ }
95
+ return i;
96
+ }
97
+ const P = (t, e = 0.2) => {
98
+ const o = t * e, n = t - o, c = t + o;
99
+ return Math.floor(Math.random() * (c - n + 1)) + n;
100
+ }, g = (t, e, o = 25) => t !== void 0 && e !== void 0 ? Math.sqrt((t - 50) ** 2 + (e - 50) ** 2) <= o : t !== void 0 ? Math.abs(t - 50) <= o : !1;
101
+ export {
102
+ y as generateStickerData,
103
+ P as randomizeDuration
104
+ };
105
+ //# 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, size };\n\n switch (effect) {\n case 'float-up':\n result.push({\n ...common,\n x,\n y: 110 + (Math.random() - 0.5) * size,\n lottie: isNearCenter(x, undefined, 25) ? lottie : '',\n });\n break;\n\n case 'fall-down':\n result.push({\n ...common,\n x,\n y: -10 + (Math.random() - 0.5) * size,\n lottie: isNearCenter(x, undefined, 25) ? lottie : '',\n });\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({\n ...common,\n x,\n y,\n fromX,\n fromY,\n size,\n lottie: Math.random() > 0.5 ? lottie : '',\n });\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 lottie: Math.random() > 0.5 ? lottie : '',\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\nconst isNearCenter = (x?: number, y?: number, threshold = 25): boolean => {\n const centerX = 50;\n const centerY = 50;\n\n if (x !== undefined && y !== undefined) {\n const distance = Math.sqrt((x - centerX) ** 2 + (y - centerY) ** 2);\n\n return distance <= threshold;\n }\n\n if (x !== undefined) {\n return Math.abs(x - centerX) <= threshold;\n }\n\n if (y !== undefined) {\n return Math.abs(y - centerY) <= threshold;\n }\n\n return false;\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","isNearCenter","y","randomizeDuration","base","variancePercent","delta","min","max","threshold"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import n, { css as e } from "styled-components";
2
+ import { effectAnimations as a } from "./effects.js";
3
+ const p = n.div`
4
+ position: relative;
5
+ width: 100vw;
6
+ height: 100vh;
7
+ background: transparent;
8
+ pointer-events: none;
9
+ `, h = n.div`
10
+ position: absolute;
11
+ z-index: 10;
12
+
13
+ left: ${({ x: i }) => `${i}%`};
14
+ top: ${({ y: i }) => `${i}%`};
15
+ width: ${({ size: i }) => `${i}px`};
16
+ height: ${({ size: i }) => `${i}px`};
17
+ font-size: ${({ size: i }) => `${i}px`};
18
+
19
+ visibility: hidden;
20
+ animation-fill-mode: both;
21
+
22
+ ${({ effect: i, duration: $, delay: s = 0, fromX: t, fromY: o }) => e`
23
+ ${a[i]($)}
24
+ animation-delay: ${s}ms;
25
+
26
+ ${t && o && e`
27
+ --from-x: ${t};
28
+ --from-y: ${o};
29
+ `}
30
+ `}
31
+ `;
32
+ export {
33
+ p as Container,
34
+ h as Sticker
35
+ };
36
+ //# 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 delay?: 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 visibility: hidden;\n animation-fill-mode: both;\n\n ${({ effect, duration, delay = 0, fromX, fromY }) => css`\n ${effectAnimations[effect](duration)}\n animation-delay: ${delay}ms;\n\n ${fromX &&\n fromY &&\n css`\n --from-x: ${fromX};\n --from-y: ${fromY};\n `}\n `}\n`;\n"],"names":["Container","styled","Sticker","x","y","size","effect","duration","delay","fromX","fromY","css","effectAnimations"],"mappings":";;AAMO,MAAMA,IAAYC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQnBC,IAAUD,EAAO;AAAA;AAAA;AAAA;AAAA,UAapB,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;AAAA;AAAA;AAAA,IAKpC,CAAC,EAAE,QAAAC,GAAQ,UAAAC,GAAU,OAAAC,IAAQ,GAAG,OAAAC,GAAO,OAAAC,EAAY,MAAAC;AAAA,MACjDC,EAAiBN,CAAM,EAAEC,CAAQ,CAAC;AAAA,uBACjBC,CAAK;AAAA;AAAA,MAEtBC,KACFC,KACAC;AAAA,kBACcF,CAAK;AAAA,kBACLC,CAAK;AAAA,KAClB;AAAA,GACF;AAAA;"}
@@ -0,0 +1,55 @@
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 y } from "./stickers-effects-helper.js";
6
+ import { Container as z, Sticker as L } from "./stickers-effects-styled.js";
7
+ const T = 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
+ }), $ = ({ stickers: t, effect: o, count: a, duration: i }) => {
21
+ const [m, n] = f([]);
22
+ return d(() => {
23
+ const e = y({
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(z, { 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
+ L,
37
+ {
38
+ effect: o,
39
+ duration: i,
40
+ delay: 500,
41
+ fromX: D,
42
+ fromY: x,
43
+ x: p,
44
+ y: S,
45
+ size: l,
46
+ children: /* @__PURE__ */ s(T, { url: k, sticker: h, size: l })
47
+ },
48
+ `${c}-${r}`
49
+ );
50
+ }) });
51
+ }, W = u($);
52
+ export {
53
+ W as default
54
+ };
55
+ //# 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 delay={500}\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,OAAO;AAAA,QACP,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,MAV3D,GAAGwB,CAAE,IAAID,CAAC;AAAA,IAAA;AAAA,EAapB,CAAA,EACH,CAAA;AAEJ,GAEeQ,IAAAlC,EAAKe,CAAe;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as t, jsxs as N, Fragment as O } from "react/jsx-runtime";
2
2
  import w from "../../../../node_modules/lodash.throttle/index.js";
3
- import { useRef as g, useCallback as i, useMemo as F, useEffect as u } from "react";
3
+ import { useRef as g, useCallback as l, useMemo as F, useEffect as h } from "react";
4
4
  import j from "../../../chapters-v2/chapter-details/chapter-details.js";
5
5
  import { useGetChapterData as G } from "../../../chapters/api/chapter.js";
6
6
  import H from "../../../milestone/milestone-list-container/milestone-list-container.js";
@@ -12,9 +12,9 @@ import { useTrialSessionContext as W } from "../../context/use-trial-session-con
12
12
  import { Container as q, Wrapper as z, ChapterWrapper as V } from "./learning-plan-styled.js";
13
13
  import { useLearningPlanScrollSync as J } from "./use-learning-plan-scroll-sync.js";
14
14
  const ae = () => {
15
- const { trialHomeData: L, studentId: n, formData: y, isTeacher: r, updateSlideConfig: l } = W(), {
15
+ const { trialHomeData: L, studentId: n, formData: y, isTeacher: r, updateSlideConfig: i } = W(), {
16
16
  demo_info: { student_classroom_id: T, stream: I }
17
- } = L || {}, { name: D = "", chapterId: c } = y || {}, o = g(null), a = g([]), h = g(!1), {
17
+ } = L || {}, { name: D = "", chapterId: c } = y || {}, o = g(null), a = g([]), u = g(!1), {
18
18
  publishScrollEvents: d,
19
19
  closeChannel: E,
20
20
  scrollPoints: s
@@ -24,7 +24,7 @@ const ae = () => {
24
24
  isProcessing: R,
25
25
  isProcessingFailed: $,
26
26
  error: f
27
- } = G(), C = i(() => {
27
+ } = G(), C = l(() => {
28
28
  c && n && P(c, void 0, {
29
29
  studentId: n
30
30
  }).then(() => {
@@ -34,39 +34,39 @@ const ae = () => {
34
34
  behavior: "smooth"
35
35
  });
36
36
  });
37
- }, [P, n, c]), b = i(
37
+ }, [P, n, c]), b = l(
38
38
  (e) => {
39
- l({
39
+ i({
40
40
  chapterId: e.id
41
41
  });
42
42
  },
43
- [l]
44
- ), x = i(() => {
45
- l({
43
+ [i]
44
+ ), x = l(() => {
45
+ i({
46
46
  chapterId: void 0
47
47
  });
48
- }, [l]), v = i(() => {
49
- a.current.length === 0 || h.current || (h.current = !0, d && d({
48
+ }, [i]), v = l(() => {
49
+ a.current.length === 0 || u.current || (u.current = !0, d && d({
50
50
  eventName: "TRIAL_SESSION_GOAL_PLAN_SCROLL",
51
51
  eventPayload: {
52
52
  scrollPoints: a.current
53
53
  }
54
- }), a.current = [], h.current = !1);
55
- }, [d]), A = F(() => w(v, 500), [v]), S = i(() => {
54
+ }), a.current = [], u.current = !1);
55
+ }, [d]), A = F(() => w(v, 500), [v]), S = l(() => {
56
56
  var p;
57
57
  const e = ((p = o.current) == null ? void 0 : p.scrollTop) || 0;
58
58
  a.current.push(e), A();
59
59
  }, [A]);
60
- return u(() => {
60
+ return h(() => {
61
61
  C();
62
- }, [C]), u(() => {
62
+ }, [C]), h(() => {
63
63
  if (o.current && (m && r || r)) {
64
64
  const e = o.current;
65
65
  return e.addEventListener("scroll", S), () => {
66
66
  e && e.removeEventListener("scroll", S);
67
67
  };
68
68
  }
69
- }, [r, m, S]), u(() => {
69
+ }, [r, m, S]), h(() => {
70
70
  const e = o.current;
71
71
  if (s && Array.isArray(s) && !r && e) {
72
72
  const p = Math.floor(
@@ -77,7 +77,7 @@ const ae = () => {
77
77
  behavior: "smooth"
78
78
  });
79
79
  }
80
- }, [s, r]), u(() => () => {
80
+ }, [s, r]), h(() => () => {
81
81
  E();
82
82
  }, [E]), R ? /* @__PURE__ */ t(B, { height: "100%" }) : $ ? /* @__PURE__ */ N(X, { $height: "100%", $flexGapX: 1.5, $alignItems: "center", $justifyContent: "center", children: [
83
83
  /* @__PURE__ */ t(U, { $renderAs: "h6", children: (f == null ? void 0 : f.message) || "Oops! Something went wrong." }),
@@ -116,8 +116,7 @@ const ae = () => {
116
116
  studentClassroomId: T,
117
117
  milestoneType: "DRAFT",
118
118
  onChapterClick: b,
119
- courseStream: I,
120
- isTrialSession: !0
119
+ courseStream: I
121
120
  }
122
121
  )
123
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/features/trial-session/comps/learning-plan/index.tsx"],"sourcesContent":["import type { IChapterDataProps } from '../../../chapters/chapter/chapter-types';\n\nimport throttle from 'lodash.throttle';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport ChapterDetails from '../../../chapters-v2/chapter-details/chapter-details';\nimport { useGetChapterData } from '../../../chapters/api/chapter';\nimport MilestoneList from '../../../milestone/milestone-list-container/milestone-list-container';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Text from '../../../ui/text/text';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport * as Styled from './learning-plan-styled';\nimport { useLearningPlanScrollSync } from './use-learning-plan-scroll-sync';\n\nconst LearningPlan: React.FC = () => {\n const { trialHomeData, studentId, formData, isTeacher, updateSlideConfig } =\n useTrialSessionContext();\n const {\n demo_info: { student_classroom_id: studentClassroomId, stream },\n } = trialHomeData || {};\n const { name = '', chapterId } = formData || {};\n\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollPointsRef = useRef<number[]>([]);\n const isSendingScrollPointsRef = useRef(false);\n\n const {\n publishScrollEvents,\n closeChannel,\n scrollPoints: receivedScrollPoints,\n } = useLearningPlanScrollSync(studentClassroomId);\n\n const {\n get: getChapterData,\n data: chapterData,\n isProcessing,\n isProcessingFailed,\n error,\n } = useGetChapterData();\n\n const fetchChapter = useCallback(() => {\n if (chapterId && studentId) {\n getChapterData(chapterId, undefined, {\n studentId,\n }).then(() => {\n const scrollElement = containerRef.current;\n\n scrollElement?.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n });\n }\n }, [getChapterData, studentId, chapterId]);\n\n const handleOnChapterClick = useCallback(\n (chapter: IChapterDataProps) => {\n updateSlideConfig({\n chapterId: chapter.id,\n });\n },\n [updateSlideConfig],\n );\n\n const handleOnBackIconClick = useCallback(() => {\n updateSlideConfig({\n chapterId: undefined,\n });\n }, [updateSlideConfig]);\n\n const sendScrollPoints = useCallback(() => {\n if (scrollPointsRef.current.length === 0 || isSendingScrollPointsRef.current) return;\n\n isSendingScrollPointsRef.current = true;\n\n if (publishScrollEvents) {\n publishScrollEvents({\n eventName: 'TRIAL_SESSION_GOAL_PLAN_SCROLL',\n eventPayload: {\n scrollPoints: scrollPointsRef.current,\n },\n });\n }\n\n scrollPointsRef.current = [];\n isSendingScrollPointsRef.current = false;\n }, [publishScrollEvents]);\n\n const throttleSend = useMemo(() => throttle(sendScrollPoints, 500), [sendScrollPoints]);\n\n const handleScroll = useCallback(() => {\n const scrollPoint = containerRef.current?.scrollTop || 0;\n\n scrollPointsRef.current.push(scrollPoint);\n\n throttleSend();\n }, [throttleSend]);\n\n useEffect(() => {\n fetchChapter();\n }, [fetchChapter]);\n\n useEffect(() => {\n if (containerRef.current) {\n if ((chapterData && isTeacher) || isTeacher) {\n const scrollElement = containerRef.current;\n\n scrollElement.addEventListener('scroll', handleScroll);\n\n return () => {\n if (scrollElement) {\n scrollElement.removeEventListener('scroll', handleScroll);\n }\n };\n }\n }\n }, [isTeacher, chapterData, handleScroll]);\n\n useEffect(() => {\n const scrollElement = containerRef.current;\n\n if (\n receivedScrollPoints &&\n Array.isArray(receivedScrollPoints) &&\n !isTeacher &&\n scrollElement\n ) {\n const averageScroll = Math.floor(\n receivedScrollPoints.reduce((a, b) => a + b, 0) / receivedScrollPoints.length,\n );\n\n scrollElement.scrollTo({\n top: averageScroll,\n behavior: 'smooth',\n });\n }\n }, [receivedScrollPoints, isTeacher]);\n\n useEffect(() => {\n return () => {\n closeChannel();\n };\n }, [closeChannel]);\n\n if (isProcessing) {\n return <AppLoader height=\"100%\" />;\n }\n\n if (isProcessingFailed) {\n return (\n <FlexView $height=\"100%\" $flexGapX={1.5} $alignItems=\"center\" $justifyContent=\"center\">\n <Text $renderAs=\"h6\">{error?.message || 'Oops! Something went wrong.'}</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n onClick={fetchChapter}\n />\n </FlexView>\n );\n }\n\n return (\n <Styled.Container ref={containerRef} $isScrollable={isTeacher}>\n <Styled.Wrapper\n $clickable={isTeacher}\n $gutterX={2}\n $isScrollable={isTeacher}\n id=\"milestone-list-element-container\"\n >\n {chapterId && chapterData ? (\n <>\n <Styled.ChapterWrapper>\n <ChapterDetails\n userChapterId={chapterData.id}\n studentId={studentId}\n userType={isTeacher ? 'TEACHER' : 'STUDENT'}\n onExit={handleOnBackIconClick}\n />\n </Styled.ChapterWrapper>\n </>\n ) : (\n <MilestoneList\n userType={isTeacher ? 'TEACHER' : 'STUDENT'}\n studentName={name}\n studentId={studentId}\n studentClassroomId={studentClassroomId}\n milestoneType=\"DRAFT\"\n onChapterClick={handleOnChapterClick}\n courseStream={stream}\n isTrialSession\n />\n )}\n </Styled.Wrapper>\n </Styled.Container>\n );\n};\n\nexport default LearningPlan;\n"],"names":["LearningPlan","trialHomeData","studentId","formData","isTeacher","updateSlideConfig","useTrialSessionContext","studentClassroomId","stream","name","chapterId","containerRef","useRef","scrollPointsRef","isSendingScrollPointsRef","publishScrollEvents","closeChannel","receivedScrollPoints","useLearningPlanScrollSync","getChapterData","chapterData","isProcessing","isProcessingFailed","error","useGetChapterData","fetchChapter","useCallback","scrollElement","handleOnChapterClick","chapter","handleOnBackIconClick","sendScrollPoints","throttleSend","useMemo","throttle","handleScroll","scrollPoint","_a","useEffect","averageScroll","a","b","jsx","AppLoader","jsxs","FlexView","Text","Button","Styled.Container","Styled.Wrapper","Fragment","Styled.ChapterWrapper","ChapterDetails","MilestoneList"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/features/trial-session/comps/learning-plan/index.tsx"],"sourcesContent":["import type { IChapterDataProps } from '../../../chapters/chapter/chapter-types';\n\nimport throttle from 'lodash.throttle';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport ChapterDetails from '../../../chapters-v2/chapter-details/chapter-details';\nimport { useGetChapterData } from '../../../chapters/api/chapter';\nimport MilestoneList from '../../../milestone/milestone-list-container/milestone-list-container';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Text from '../../../ui/text/text';\nimport { useTrialSessionContext } from '../../context/use-trial-session-context';\nimport * as Styled from './learning-plan-styled';\nimport { useLearningPlanScrollSync } from './use-learning-plan-scroll-sync';\n\nconst LearningPlan: React.FC = () => {\n const { trialHomeData, studentId, formData, isTeacher, updateSlideConfig } =\n useTrialSessionContext();\n const {\n demo_info: { student_classroom_id: studentClassroomId, stream },\n } = trialHomeData || {};\n const { name = '', chapterId } = formData || {};\n\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollPointsRef = useRef<number[]>([]);\n const isSendingScrollPointsRef = useRef(false);\n\n const {\n publishScrollEvents,\n closeChannel,\n scrollPoints: receivedScrollPoints,\n } = useLearningPlanScrollSync(studentClassroomId);\n\n const {\n get: getChapterData,\n data: chapterData,\n isProcessing,\n isProcessingFailed,\n error,\n } = useGetChapterData();\n\n const fetchChapter = useCallback(() => {\n if (chapterId && studentId) {\n getChapterData(chapterId, undefined, {\n studentId,\n }).then(() => {\n const scrollElement = containerRef.current;\n\n scrollElement?.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n });\n }\n }, [getChapterData, studentId, chapterId]);\n\n const handleOnChapterClick = useCallback(\n (chapter: IChapterDataProps) => {\n updateSlideConfig({\n chapterId: chapter.id,\n });\n },\n [updateSlideConfig],\n );\n\n const handleOnBackIconClick = useCallback(() => {\n updateSlideConfig({\n chapterId: undefined,\n });\n }, [updateSlideConfig]);\n\n const sendScrollPoints = useCallback(() => {\n if (scrollPointsRef.current.length === 0 || isSendingScrollPointsRef.current) return;\n\n isSendingScrollPointsRef.current = true;\n\n if (publishScrollEvents) {\n publishScrollEvents({\n eventName: 'TRIAL_SESSION_GOAL_PLAN_SCROLL',\n eventPayload: {\n scrollPoints: scrollPointsRef.current,\n },\n });\n }\n\n scrollPointsRef.current = [];\n isSendingScrollPointsRef.current = false;\n }, [publishScrollEvents]);\n\n const throttleSend = useMemo(() => throttle(sendScrollPoints, 500), [sendScrollPoints]);\n\n const handleScroll = useCallback(() => {\n const scrollPoint = containerRef.current?.scrollTop || 0;\n\n scrollPointsRef.current.push(scrollPoint);\n\n throttleSend();\n }, [throttleSend]);\n\n useEffect(() => {\n fetchChapter();\n }, [fetchChapter]);\n\n useEffect(() => {\n if (containerRef.current) {\n if ((chapterData && isTeacher) || isTeacher) {\n const scrollElement = containerRef.current;\n\n scrollElement.addEventListener('scroll', handleScroll);\n\n return () => {\n if (scrollElement) {\n scrollElement.removeEventListener('scroll', handleScroll);\n }\n };\n }\n }\n }, [isTeacher, chapterData, handleScroll]);\n\n useEffect(() => {\n const scrollElement = containerRef.current;\n\n if (\n receivedScrollPoints &&\n Array.isArray(receivedScrollPoints) &&\n !isTeacher &&\n scrollElement\n ) {\n const averageScroll = Math.floor(\n receivedScrollPoints.reduce((a, b) => a + b, 0) / receivedScrollPoints.length,\n );\n\n scrollElement.scrollTo({\n top: averageScroll,\n behavior: 'smooth',\n });\n }\n }, [receivedScrollPoints, isTeacher]);\n\n useEffect(() => {\n return () => {\n closeChannel();\n };\n }, [closeChannel]);\n\n if (isProcessing) {\n return <AppLoader height=\"100%\" />;\n }\n\n if (isProcessingFailed) {\n return (\n <FlexView $height=\"100%\" $flexGapX={1.5} $alignItems=\"center\" $justifyContent=\"center\">\n <Text $renderAs=\"h6\">{error?.message || 'Oops! Something went wrong.'}</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n onClick={fetchChapter}\n />\n </FlexView>\n );\n }\n\n return (\n <Styled.Container ref={containerRef} $isScrollable={isTeacher}>\n <Styled.Wrapper\n $clickable={isTeacher}\n $gutterX={2}\n $isScrollable={isTeacher}\n id=\"milestone-list-element-container\"\n >\n {chapterId && chapterData ? (\n <>\n <Styled.ChapterWrapper>\n <ChapterDetails\n userChapterId={chapterData.id}\n studentId={studentId}\n userType={isTeacher ? 'TEACHER' : 'STUDENT'}\n onExit={handleOnBackIconClick}\n />\n </Styled.ChapterWrapper>\n </>\n ) : (\n <MilestoneList\n userType={isTeacher ? 'TEACHER' : 'STUDENT'}\n studentName={name}\n studentId={studentId}\n studentClassroomId={studentClassroomId}\n milestoneType=\"DRAFT\"\n onChapterClick={handleOnChapterClick}\n courseStream={stream}\n />\n )}\n </Styled.Wrapper>\n </Styled.Container>\n );\n};\n\nexport default LearningPlan;\n"],"names":["LearningPlan","trialHomeData","studentId","formData","isTeacher","updateSlideConfig","useTrialSessionContext","studentClassroomId","stream","name","chapterId","containerRef","useRef","scrollPointsRef","isSendingScrollPointsRef","publishScrollEvents","closeChannel","receivedScrollPoints","useLearningPlanScrollSync","getChapterData","chapterData","isProcessing","isProcessingFailed","error","useGetChapterData","fetchChapter","useCallback","scrollElement","handleOnChapterClick","chapter","handleOnBackIconClick","sendScrollPoints","throttleSend","useMemo","throttle","handleScroll","scrollPoint","_a","useEffect","averageScroll","a","b","jsx","AppLoader","jsxs","FlexView","Text","Button","Styled.Container","Styled.Wrapper","Fragment","Styled.ChapterWrapper","ChapterDetails","MilestoneList"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import o from "styled-components";
2
- const i = o.div`
1
+ import i from "styled-components";
2
+ const e = i.div`
3
3
  position: absolute;
4
4
  top: 0;
5
5
  left: 0;
@@ -8,8 +8,13 @@ const i = o.div`
8
8
  width: 100%;
9
9
  height: 100%;
10
10
  z-index: ${({ theme: t }) => t.zIndex.JOURNEY_OVERLAY};
11
+ `, n = i.div`
12
+ visibility: ${({ $visible: t }) => t ? "visible" : "hidden"};
13
+ opacity: ${({ $visible: t }) => t ? 1 : 0};
14
+ pointer-events: ${({ $visible: t }) => t ? "auto" : "none"};
11
15
  `;
12
16
  export {
13
- i as BackgroundOverlay
17
+ e as BackgroundOverlay,
18
+ n as TooltipWrapper
14
19
  };
15
20
  //# sourceMappingURL=arrow-tooltip-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-tooltip-styled.js","sources":["../../../../src/features/ui/arrow-tooltip/arrow-tooltip-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport const BackgroundOverlay = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n z-index: ${({ theme }) => theme.zIndex.JOURNEY_OVERLAY};\n`;\n"],"names":["BackgroundOverlay","styled","theme"],"mappings":";AAEO,MAAMA,IAAoBC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQ3B,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,eAAe;AAAA;"}
1
+ {"version":3,"file":"arrow-tooltip-styled.js","sources":["../../../../src/features/ui/arrow-tooltip/arrow-tooltip-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport const BackgroundOverlay = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n z-index: ${({ theme }) => theme.zIndex.JOURNEY_OVERLAY};\n`;\n\nexport const TooltipWrapper = styled.div<{ $visible: boolean }>`\n visibility: ${({ $visible }) => ($visible ? 'visible' : 'hidden')};\n opacity: ${({ $visible }) => ($visible ? 1 : 0)};\n pointer-events: ${({ $visible }) => ($visible ? 'auto' : 'none')};\n`;\n"],"names":["BackgroundOverlay","styled","theme","TooltipWrapper","$visible"],"mappings":";AAEO,MAAMA,IAAoBC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQ3B,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,eAAe;AAAA,GAG3CC,IAAiBF,EAAO;AAAA,gBACrB,CAAC,EAAE,UAAAG,EAAA,MAAgBA,IAAW,YAAY,QAAS;AAAA,aACtD,CAAC,EAAE,UAAAA,EAAA,MAAgBA,IAAW,IAAI,CAAE;AAAA,oBAC7B,CAAC,EAAE,UAAAA,EAAA,MAAgBA,IAAW,SAAS,MAAO;AAAA;"}
@@ -1,53 +1,53 @@
1
- import { jsxs as D, Fragment as U, jsx as e } from "react/jsx-runtime";
2
- import W from "../../../node_modules/lodash.throttle/index.js";
3
- import { memo as Y, useRef as H, useState as f, useCallback as p, useEffect as m } from "react";
1
+ import { jsxs as j, Fragment as D, jsx as e } from "react/jsx-runtime";
2
+ import U from "../../../node_modules/lodash.throttle/index.js";
3
+ import { memo as Y, useRef as H, useState as a, useCallback as f, useEffect as m } from "react";
4
4
  import $ from "../layout/flex-view.js";
5
5
  import P from "../portal/portal.js";
6
6
  import { THROTTLE_DURATION as Z, DEFAULT_ARROW_SIZE as q } from "./arrow-tooltip-constants.js";
7
- import { BackgroundOverlay as G } from "./arrow-tooltip-styled.js";
8
- import { computeTooltipNewCoOrdinates as J } from "./arrow-tooltip-util.js";
9
- import K from "./comps/tooltip-body.js";
10
- const Q = ({
7
+ import { TooltipWrapper as G, BackgroundOverlay as J } from "./arrow-tooltip-styled.js";
8
+ import { computeTooltipNewCoOrdinates as K } from "./arrow-tooltip-util.js";
9
+ import Q from "./comps/tooltip-body.js";
10
+ const V = ({
11
11
  isAnimated: C,
12
12
  alwaysVisible: o = !1,
13
13
  arrowColor: O,
14
14
  arrowSize: w = q,
15
- arrowXCoOrdinates: E,
16
- arrowYCoOrdinates: T,
17
- backgroundColor: v,
18
- borderColor: R,
19
- children: h,
15
+ arrowXCoOrdinates: T,
16
+ arrowYCoOrdinates: v,
17
+ backgroundColor: E,
18
+ borderColor: h,
19
+ children: R,
20
20
  hidden: t,
21
21
  position: l,
22
22
  renderAs: A,
23
23
  textVariant: L,
24
24
  tooltipItem: g,
25
25
  tooltipOffset: x,
26
- tooltipXCoOrdinates: z,
27
- tooltipYCoOrdinates: I,
28
- width: b,
26
+ tooltipXCoOrdinates: b,
27
+ tooltipYCoOrdinates: z,
28
+ width: I,
29
29
  widthX: k,
30
30
  zIndex: B,
31
31
  parentWidth: F,
32
32
  isBlocking: M = !1
33
33
  }) => {
34
- const u = H(null), [N, d] = f(o), [S, X] = f(
34
+ const d = H(null), [N, u] = a(o), [S, W] = a(
35
35
  null
36
- ), s = p(
36
+ ), s = f(
37
37
  (n, i) => {
38
- X(n), d(i);
38
+ W(n), u(i);
39
39
  },
40
40
  []
41
- ), _ = p(() => {
41
+ ), X = f(() => {
42
42
  if (t || o)
43
43
  return null;
44
44
  s(null, !1);
45
- }, [o, s, t]), r = W(() => {
46
- var a;
47
- const { current: n } = u;
45
+ }, [o, s, t]), r = U(() => {
46
+ var p;
47
+ const { current: n } = d;
48
48
  if (t || !n) return null;
49
- const i = (a = n.children[0]) == null ? void 0 : a.getBoundingClientRect(), j = i ? J(l, i) : null;
50
- return s(j, !0), null;
49
+ const i = (p = n.children[0]) == null ? void 0 : p.getBoundingClientRect(), _ = i ? K(l, i) : null;
50
+ return s(_, !0), null;
51
51
  }, Z);
52
52
  m(() => {
53
53
  if (!(!o || t))
@@ -55,46 +55,46 @@ const Q = ({
55
55
  window.removeEventListener("scroll", r, !0), window.removeEventListener("resize", r);
56
56
  };
57
57
  }, [o, t, l, r]), m(() => {
58
- t && d(!1), o && r();
58
+ t && u(!1), o && r();
59
59
  }, [o, t]);
60
60
  const c = /* @__PURE__ */ e(
61
- K,
61
+ Q,
62
62
  {
63
63
  $arrowSize: w,
64
- $arrowXCoOrdinates: E,
65
- $arrowYCoOrdinates: T,
64
+ $arrowXCoOrdinates: T,
65
+ $arrowYCoOrdinates: v,
66
66
  $position: l,
67
67
  $renderAs: A,
68
68
  $tooltipCoOrdinates: S,
69
69
  $tooltipOffset: x,
70
- $tooltipXCoOrdinates: z,
71
- $tooltipYCoOrdinates: I,
70
+ $tooltipXCoOrdinates: b,
71
+ $tooltipYCoOrdinates: z,
72
72
  $zIndex: B,
73
- $backgroundColor: v,
73
+ $backgroundColor: E,
74
74
  $arrowColor: O,
75
- $borderColor: R,
75
+ $borderColor: h,
76
76
  $isAnimated: C,
77
- $width: b,
77
+ $width: I,
78
78
  $widthX: k,
79
79
  textVariant: L || "body3",
80
80
  children: g
81
81
  }
82
82
  );
83
- return /* @__PURE__ */ D(U, { children: [
83
+ return /* @__PURE__ */ j(D, { children: [
84
84
  /* @__PURE__ */ e(
85
85
  $,
86
86
  {
87
87
  $width: F || "fit-content",
88
- ref: u,
88
+ ref: d,
89
89
  onMouseEnter: r,
90
- onMouseLeave: _,
91
- children: /* @__PURE__ */ e($, { children: h })
90
+ onMouseLeave: X,
91
+ children: /* @__PURE__ */ e($, { children: R })
92
92
  }
93
93
  ),
94
- N && /* @__PURE__ */ e(P, { portalId: "tooltip-root", children: M ? /* @__PURE__ */ e(G, { children: c }) : c })
94
+ /* @__PURE__ */ e(P, { portalId: "tooltip-root", children: /* @__PURE__ */ e(G, { $visible: N, children: M ? /* @__PURE__ */ e(J, { children: c }) : c }) })
95
95
  ] });
96
- }, so = Y(Q);
96
+ }, uo = Y(V);
97
97
  export {
98
- so as default
98
+ uo as default
99
99
  };
100
100
  //# sourceMappingURL=arrow-tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-tooltip.js","sources":["../../../../src/features/ui/arrow-tooltip/arrow-tooltip.tsx"],"sourcesContent":["import type {\n IArrowTooltipProps,\n THandleVisibleNCoOrdinatesProps,\n TTooltipCoOrdinatesProps,\n} from './arrow-tooltip-types';\n\nimport throttle from 'lodash.throttle';\nimport { useState, type FC, useCallback, useRef, useEffect, memo } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport Portal from '../portal/portal';\nimport { DEFAULT_ARROW_SIZE, THROTTLE_DURATION } from './arrow-tooltip-constants';\nimport * as Styled from './arrow-tooltip-styled';\nimport { computeTooltipNewCoOrdinates } from './arrow-tooltip-util';\nimport TooltipBody from './comps/tooltip-body';\n\nconst ArrowTooltip: FC<IArrowTooltipProps> = ({\n isAnimated,\n alwaysVisible = false,\n arrowColor,\n arrowSize = DEFAULT_ARROW_SIZE,\n arrowXCoOrdinates,\n arrowYCoOrdinates,\n backgroundColor,\n borderColor,\n children,\n hidden,\n position,\n renderAs,\n textVariant,\n tooltipItem,\n tooltipOffset,\n tooltipXCoOrdinates,\n tooltipYCoOrdinates,\n width,\n widthX,\n zIndex,\n parentWidth,\n isBlocking = false,\n}) => {\n const tooltipWrapperRef = useRef<HTMLDivElement>(null);\n const [visible, setVisible] = useState(alwaysVisible);\n const [tooltipCoOrdinates, setTooltipCoOrdinates] = useState<TTooltipCoOrdinatesProps | null>(\n null,\n );\n\n const handleVisibleNCoOrdinates: THandleVisibleNCoOrdinatesProps = useCallback(\n (newCoOrdinates, visibility) => {\n setTooltipCoOrdinates(newCoOrdinates);\n setVisible(visibility);\n },\n [],\n );\n\n const handleVisibility = useCallback(() => {\n if (hidden || alwaysVisible) {\n return null;\n }\n\n handleVisibleNCoOrdinates(null, false);\n\n return;\n }, [alwaysVisible, handleVisibleNCoOrdinates, hidden]);\n\n const handleOnMouseEnter = throttle(() => {\n const { current } = tooltipWrapperRef;\n\n if (hidden || !current) return null;\n\n const boundingClientRect = current.children[0]?.getBoundingClientRect();\n const newCoOrdinates = boundingClientRect\n ? computeTooltipNewCoOrdinates(position, boundingClientRect)\n : null;\n\n handleVisibleNCoOrdinates(newCoOrdinates, true);\n\n return null;\n }, THROTTLE_DURATION);\n\n useEffect(() => {\n if (!alwaysVisible || hidden) return;\n\n window.addEventListener('scroll', handleOnMouseEnter, true);\n window.addEventListener('resize', handleOnMouseEnter);\n\n return () => {\n window.removeEventListener('scroll', handleOnMouseEnter, true);\n window.removeEventListener('resize', handleOnMouseEnter);\n };\n }, [alwaysVisible, hidden, position, handleOnMouseEnter]);\n\n useEffect(() => {\n if (hidden) {\n setVisible(false);\n }\n\n if (alwaysVisible) {\n handleOnMouseEnter();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [alwaysVisible, hidden]);\n\n const tooltipContent = (\n <TooltipBody\n $arrowSize={arrowSize}\n $arrowXCoOrdinates={arrowXCoOrdinates}\n $arrowYCoOrdinates={arrowYCoOrdinates}\n $position={position}\n $renderAs={renderAs}\n $tooltipCoOrdinates={tooltipCoOrdinates}\n $tooltipOffset={tooltipOffset}\n $tooltipXCoOrdinates={tooltipXCoOrdinates}\n $tooltipYCoOrdinates={tooltipYCoOrdinates}\n $zIndex={zIndex}\n $backgroundColor={backgroundColor}\n $arrowColor={arrowColor}\n $borderColor={borderColor}\n $isAnimated={isAnimated}\n $width={width}\n $widthX={widthX}\n textVariant={textVariant || 'body3'}\n >\n {tooltipItem}\n </TooltipBody>\n );\n\n return (\n <>\n <FlexView\n $width={parentWidth || 'fit-content'}\n ref={tooltipWrapperRef}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleVisibility}\n >\n <FlexView>{children}</FlexView>\n </FlexView>\n\n {visible && (\n <Portal portalId=\"tooltip-root\">\n {isBlocking ? (\n <Styled.BackgroundOverlay>{tooltipContent}</Styled.BackgroundOverlay>\n ) : (\n tooltipContent\n )}\n </Portal>\n )}\n </>\n );\n};\n\nexport default memo(ArrowTooltip);\n"],"names":["ArrowTooltip","isAnimated","alwaysVisible","arrowColor","arrowSize","DEFAULT_ARROW_SIZE","arrowXCoOrdinates","arrowYCoOrdinates","backgroundColor","borderColor","children","hidden","position","renderAs","textVariant","tooltipItem","tooltipOffset","tooltipXCoOrdinates","tooltipYCoOrdinates","width","widthX","zIndex","parentWidth","isBlocking","tooltipWrapperRef","useRef","visible","setVisible","useState","tooltipCoOrdinates","setTooltipCoOrdinates","handleVisibleNCoOrdinates","useCallback","newCoOrdinates","visibility","handleVisibility","handleOnMouseEnter","throttle","current","boundingClientRect","_a","computeTooltipNewCoOrdinates","THROTTLE_DURATION","useEffect","tooltipContent","jsx","TooltipBody","jsxs","Fragment","FlexView","Portal","Styled.BackgroundOverlay","ArrowTooltip$1","memo"],"mappings":"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"}
1
+ {"version":3,"file":"arrow-tooltip.js","sources":["../../../../src/features/ui/arrow-tooltip/arrow-tooltip.tsx"],"sourcesContent":["import type {\n IArrowTooltipProps,\n THandleVisibleNCoOrdinatesProps,\n TTooltipCoOrdinatesProps,\n} from './arrow-tooltip-types';\n\nimport throttle from 'lodash.throttle';\nimport { useState, type FC, useCallback, useRef, useEffect, memo } from 'react';\n\nimport FlexView from '../layout/flex-view';\nimport Portal from '../portal/portal';\nimport { DEFAULT_ARROW_SIZE, THROTTLE_DURATION } from './arrow-tooltip-constants';\nimport * as Styled from './arrow-tooltip-styled';\nimport { computeTooltipNewCoOrdinates } from './arrow-tooltip-util';\nimport TooltipBody from './comps/tooltip-body';\n\nconst ArrowTooltip: FC<IArrowTooltipProps> = ({\n isAnimated,\n alwaysVisible = false,\n arrowColor,\n arrowSize = DEFAULT_ARROW_SIZE,\n arrowXCoOrdinates,\n arrowYCoOrdinates,\n backgroundColor,\n borderColor,\n children,\n hidden,\n position,\n renderAs,\n textVariant,\n tooltipItem,\n tooltipOffset,\n tooltipXCoOrdinates,\n tooltipYCoOrdinates,\n width,\n widthX,\n zIndex,\n parentWidth,\n isBlocking = false,\n}) => {\n const tooltipWrapperRef = useRef<HTMLDivElement>(null);\n const [visible, setVisible] = useState(alwaysVisible);\n const [tooltipCoOrdinates, setTooltipCoOrdinates] = useState<TTooltipCoOrdinatesProps | null>(\n null,\n );\n\n const handleVisibleNCoOrdinates: THandleVisibleNCoOrdinatesProps = useCallback(\n (newCoOrdinates, visibility) => {\n setTooltipCoOrdinates(newCoOrdinates);\n setVisible(visibility);\n },\n [],\n );\n\n const handleVisibility = useCallback(() => {\n if (hidden || alwaysVisible) {\n return null;\n }\n\n handleVisibleNCoOrdinates(null, false);\n\n return;\n }, [alwaysVisible, handleVisibleNCoOrdinates, hidden]);\n\n const handleOnMouseEnter = throttle(() => {\n const { current } = tooltipWrapperRef;\n\n if (hidden || !current) return null;\n\n const boundingClientRect = current.children[0]?.getBoundingClientRect();\n const newCoOrdinates = boundingClientRect\n ? computeTooltipNewCoOrdinates(position, boundingClientRect)\n : null;\n\n handleVisibleNCoOrdinates(newCoOrdinates, true);\n\n return null;\n }, THROTTLE_DURATION);\n\n useEffect(() => {\n if (!alwaysVisible || hidden) return;\n\n window.addEventListener('scroll', handleOnMouseEnter, true);\n window.addEventListener('resize', handleOnMouseEnter);\n\n return () => {\n window.removeEventListener('scroll', handleOnMouseEnter, true);\n window.removeEventListener('resize', handleOnMouseEnter);\n };\n }, [alwaysVisible, hidden, position, handleOnMouseEnter]);\n\n useEffect(() => {\n if (hidden) {\n setVisible(false);\n }\n\n if (alwaysVisible) {\n handleOnMouseEnter();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [alwaysVisible, hidden]);\n\n const tooltipContent = (\n <TooltipBody\n $arrowSize={arrowSize}\n $arrowXCoOrdinates={arrowXCoOrdinates}\n $arrowYCoOrdinates={arrowYCoOrdinates}\n $position={position}\n $renderAs={renderAs}\n $tooltipCoOrdinates={tooltipCoOrdinates}\n $tooltipOffset={tooltipOffset}\n $tooltipXCoOrdinates={tooltipXCoOrdinates}\n $tooltipYCoOrdinates={tooltipYCoOrdinates}\n $zIndex={zIndex}\n $backgroundColor={backgroundColor}\n $arrowColor={arrowColor}\n $borderColor={borderColor}\n $isAnimated={isAnimated}\n $width={width}\n $widthX={widthX}\n textVariant={textVariant || 'body3'}\n >\n {tooltipItem}\n </TooltipBody>\n );\n\n return (\n <>\n <FlexView\n $width={parentWidth || 'fit-content'}\n ref={tooltipWrapperRef}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleVisibility}\n >\n <FlexView>{children}</FlexView>\n </FlexView>\n\n <Portal portalId=\"tooltip-root\">\n <Styled.TooltipWrapper $visible={visible}>\n {isBlocking ? (\n <Styled.BackgroundOverlay>{tooltipContent}</Styled.BackgroundOverlay>\n ) : (\n tooltipContent\n )}\n </Styled.TooltipWrapper>\n </Portal>\n </>\n );\n};\n\nexport default memo(ArrowTooltip);\n"],"names":["ArrowTooltip","isAnimated","alwaysVisible","arrowColor","arrowSize","DEFAULT_ARROW_SIZE","arrowXCoOrdinates","arrowYCoOrdinates","backgroundColor","borderColor","children","hidden","position","renderAs","textVariant","tooltipItem","tooltipOffset","tooltipXCoOrdinates","tooltipYCoOrdinates","width","widthX","zIndex","parentWidth","isBlocking","tooltipWrapperRef","useRef","visible","setVisible","useState","tooltipCoOrdinates","setTooltipCoOrdinates","handleVisibleNCoOrdinates","useCallback","newCoOrdinates","visibility","handleVisibility","handleOnMouseEnter","throttle","current","boundingClientRect","_a","computeTooltipNewCoOrdinates","THROTTLE_DURATION","useEffect","tooltipContent","jsx","TooltipBody","jsxs","Fragment","FlexView","Portal","Styled.TooltipWrapper","Styled.BackgroundOverlay","ArrowTooltip$1","memo"],"mappings":"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"}