@cuemath/leap 3.3.24-link.2 → 3.3.24

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 (132) hide show
  1. package/dist/features/auth/account-selector/account-selector-styled.js +5 -6
  2. package/dist/features/auth/account-selector/account-selector-styled.js.map +1 -1
  3. package/dist/features/auth/account-selector/account-selector.js +57 -51
  4. package/dist/features/auth/account-selector/account-selector.js.map +1 -1
  5. package/dist/features/auth/comps/user-list/user-list-styled.js +2 -3
  6. package/dist/features/auth/comps/user-list/user-list-styled.js.map +1 -1
  7. package/dist/features/auth/pla-signup/pla-analytics-events.js +3 -9
  8. package/dist/features/auth/pla-signup/pla-analytics-events.js.map +1 -1
  9. package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js.map +1 -1
  10. package/dist/features/auth/signup/custom-input-field/custom-input-field.js +8 -8
  11. package/dist/features/auth/signup/custom-input-field/custom-input-field.js.map +1 -1
  12. package/dist/features/journey/use-journey/use-journey.js +6 -18
  13. package/dist/features/journey/use-journey/use-journey.js.map +1 -1
  14. package/dist/features/milestone/create/milestone-create-helpers.js +7 -13
  15. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  16. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js +34 -40
  17. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js.map +1 -1
  18. package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js +3 -3
  19. package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js.map +1 -1
  20. package/dist/features/parent-dashboard/parent-dashboard-types.js.map +1 -1
  21. package/dist/features/parent-dashboard/parent-dashboard-view.js +138 -161
  22. package/dist/features/parent-dashboard/parent-dashboard-view.js.map +1 -1
  23. package/dist/features/stickers/constants.js +235 -0
  24. package/dist/features/stickers/constants.js.map +1 -0
  25. package/dist/features/{ui/sticker-grid/sticker-grid-styles.js → stickers/sticker-selector/comps/sticker/sticker-styled.js} +15 -45
  26. package/dist/features/stickers/sticker-selector/comps/sticker/sticker-styled.js.map +1 -0
  27. package/dist/features/stickers/sticker-selector/comps/sticker/sticker.js +49 -0
  28. package/dist/features/stickers/sticker-selector/comps/sticker/sticker.js.map +1 -0
  29. package/dist/features/stickers/sticker-selector/comps/stiker-selector-grid/sticker-selector-grid-styled.js +28 -0
  30. package/dist/features/stickers/sticker-selector/comps/stiker-selector-grid/sticker-selector-grid-styled.js.map +1 -0
  31. package/dist/features/stickers/sticker-selector/comps/stiker-selector-grid/sticker-selector-grid.js +26 -0
  32. package/dist/features/stickers/sticker-selector/comps/stiker-selector-grid/sticker-selector-grid.js.map +1 -0
  33. package/dist/features/stickers/sticker-selector/sticker-selector-styled.js +13 -0
  34. package/dist/features/stickers/sticker-selector/sticker-selector-styled.js.map +1 -0
  35. package/dist/features/stickers/sticker-selector/sticker-selector.js +86 -0
  36. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -0
  37. package/dist/features/stickers/stickers-effects/stickers-effects-animations.js +82 -0
  38. package/dist/features/stickers/stickers-effects/stickers-effects-animations.js.map +1 -0
  39. package/dist/features/stickers/stickers-effects/stickers-effects-cache.js +19 -0
  40. package/dist/features/stickers/stickers-effects/stickers-effects-cache.js.map +1 -0
  41. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js +105 -0
  42. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js.map +1 -0
  43. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js +37 -0
  44. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +1 -0
  45. package/dist/features/stickers/stickers-effects/stickers-effects.js +67 -0
  46. package/dist/features/stickers/stickers-effects/stickers-effects.js.map +1 -0
  47. package/dist/features/trial-session/comps/class-preference/class-preference.js +49 -61
  48. package/dist/features/trial-session/comps/class-preference/class-preference.js.map +1 -1
  49. package/dist/features/trial-session/comps/session-report/session-report.js +15 -15
  50. package/dist/features/trial-session/comps/session-report/session-report.js.map +1 -1
  51. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js +0 -5
  52. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js.map +1 -1
  53. package/dist/features/trial-session/comps/student-feedback/student-feedback.js +51 -96
  54. package/dist/features/trial-session/comps/student-feedback/student-feedback.js.map +1 -1
  55. package/dist/features/trial-session/comps/student-profile/student-profile.js +63 -70
  56. package/dist/features/trial-session/comps/student-profile/student-profile.js.map +1 -1
  57. package/dist/features/trial-session/helper.js +54 -71
  58. package/dist/features/trial-session/helper.js.map +1 -1
  59. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +130 -149
  60. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  61. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  62. package/dist/features/trial-session/trial-session-view.js +98 -107
  63. package/dist/features/trial-session/trial-session-view.js.map +1 -1
  64. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js +88 -75
  65. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js.map +1 -1
  66. package/dist/features/ui/lottie-animation/lottie-animation.js +55 -46
  67. package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
  68. package/dist/features/ui/modals/modal-styled.js +48 -15
  69. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  70. package/dist/features/ui/modals/modal.js +46 -38
  71. package/dist/features/ui/modals/modal.js.map +1 -1
  72. package/dist/index.d.ts +71 -66
  73. package/dist/index.js +391 -401
  74. package/dist/index.js.map +1 -1
  75. package/package.json +3 -2
  76. package/dist/features/auth/account-selector/comps/compact-header/account-selector-header.js +0 -31
  77. package/dist/features/auth/account-selector/comps/compact-header/account-selector-header.js.map +0 -1
  78. package/dist/features/parent-dashboard/api/cancel-subscription.js +0 -9
  79. package/dist/features/parent-dashboard/api/cancel-subscription.js.map +0 -1
  80. package/dist/features/parent-dashboard/comps/billing-information/billing-information-styled.js +0 -20
  81. package/dist/features/parent-dashboard/comps/billing-information/billing-information-styled.js.map +0 -1
  82. package/dist/features/parent-dashboard/comps/billing-information/billing-information.js +0 -96
  83. package/dist/features/parent-dashboard/comps/billing-information/billing-information.js.map +0 -1
  84. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription-constants.js +0 -21
  85. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription-constants.js.map +0 -1
  86. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription.js +0 -80
  87. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription.js.map +0 -1
  88. package/dist/features/parent-dashboard/modals/cancellation-confirmation/cancellation-confirmation.js +0 -23
  89. package/dist/features/parent-dashboard/modals/cancellation-confirmation/cancellation-confirmation.js.map +0 -1
  90. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-constant.js +0 -55
  91. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-constant.js.map +0 -1
  92. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-styled.js +0 -59
  93. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-styled.js.map +0 -1
  94. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason.js +0 -93
  95. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason.js.map +0 -1
  96. package/dist/features/parent-dashboard/modals/hooks/use-pla-model-handlers.js +0 -63
  97. package/dist/features/parent-dashboard/modals/hooks/use-pla-model-handlers.js.map +0 -1
  98. package/dist/features/parent-dashboard/modals/view-payment-method/view-payment-method.js +0 -65
  99. package/dist/features/parent-dashboard/modals/view-payment-method/view-payment-method.js.map +0 -1
  100. package/dist/features/student-username/add/add-student-username-constants.js +0 -6
  101. package/dist/features/student-username/add/add-student-username-constants.js.map +0 -1
  102. package/dist/features/student-username/add/add-student-username-helpers.js +0 -6
  103. package/dist/features/student-username/add/add-student-username-helpers.js.map +0 -1
  104. package/dist/features/student-username/add/add-student-username-styled.js +0 -10
  105. package/dist/features/student-username/add/add-student-username-styled.js.map +0 -1
  106. package/dist/features/student-username/add/add-student-username.js +0 -78
  107. package/dist/features/student-username/add/add-student-username.js.map +0 -1
  108. package/dist/features/student-username/add/api/update-username.js +0 -9
  109. package/dist/features/student-username/add/api/update-username.js.map +0 -1
  110. package/dist/features/student-username/add/api/username-availability.js +0 -10
  111. package/dist/features/student-username/add/api/username-availability.js.map +0 -1
  112. package/dist/features/student-username/add/hooks/use-check-username-availability.js +0 -41
  113. package/dist/features/student-username/add/hooks/use-check-username-availability.js.map +0 -1
  114. package/dist/features/trial-session/api/teacher-availability.js +0 -9
  115. package/dist/features/trial-session/api/teacher-availability.js.map +0 -1
  116. package/dist/features/trial-session/comps/class-preference/helpers.js +0 -28
  117. package/dist/features/trial-session/comps/class-preference/helpers.js.map +0 -1
  118. package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +0 -1
  119. package/dist/features/ui/sticker-grid/sticker-grid.js +0 -24
  120. package/dist/features/ui/sticker-grid/sticker-grid.js.map +0 -1
  121. package/dist/features/ui/sticker-grid/sticker.js +0 -57
  122. package/dist/features/ui/sticker-grid/sticker.js.map +0 -1
  123. package/dist/features/ui/stickers/constants.js +0 -6
  124. package/dist/features/ui/stickers/constants.js.map +0 -1
  125. package/dist/features/ui/stickers/stickers-effects.js +0 -64
  126. package/dist/features/ui/stickers/stickers-effects.js.map +0 -1
  127. package/dist/features/ui/stickers/stickers-styled.js +0 -29
  128. package/dist/features/ui/stickers/stickers-styled.js.map +0 -1
  129. package/dist/features/ui/stickers/stickers-utils.js +0 -91
  130. package/dist/features/ui/stickers/stickers-utils.js.map +0 -1
  131. package/dist/features/ui/stickers/stickers.js +0 -40
  132. package/dist/features/ui/stickers/stickers.js.map +0 -1
@@ -1,63 +0,0 @@
1
- import { useCallback as o, useMemo as M } from "react";
2
- import P from "../../../ui/modals/use-modal-actions.js";
3
- import { useCancelSubscriptionPatch as y } from "../../api/cancel-subscription.js";
4
- import { invalidateParentHome as v } from "../../api/parent-home.js";
5
- const A = ({
6
- studentId: c,
7
- demoId: a,
8
- withTutor: e,
9
- billingDetails: b,
10
- completedSessions: t,
11
- onRescheduleDemo: r,
12
- onChangeTutor: p
13
- }) => {
14
- const { openModal: n } = P(), { payment_method_details: s } = b ?? {}, f = o(() => {
15
- v(c), n("pla-cancellation-confirmation");
16
- }, [n, c]), { patch: m } = y({
17
- onComplete: f
18
- }), C = o(
19
- (l) => {
20
- l && m(c, {
21
- reason: l,
22
- student_demo_id: a
23
- });
24
- },
25
- [m, c, a]
26
- ), h = o(() => n("pla-cancellation-reason", {
27
- withTutor: e,
28
- completedSessions: t,
29
- onCancel: (l) => C(l)
30
- }), [t, C, n, e]), i = o(() => {
31
- n("pla-cancel-subscription", {
32
- withTutor: e,
33
- completedSessions: t,
34
- onSwitchTutor: () => a ? p(a) : void 0,
35
- onReschedule: () => a ? r(a) : void 0,
36
- onCancel: h
37
- });
38
- }, [
39
- t,
40
- a,
41
- h,
42
- p,
43
- r,
44
- n,
45
- e
46
- ]), u = o(() => {
47
- n("pla-view-payment-method", {
48
- paymentMethodDetails: s,
49
- onCancel: i
50
- });
51
- }, [i, n, s]);
52
- return M(
53
- () => ({
54
- onCancelSubscription: i,
55
- onViewPaymentMethod: u
56
- }),
57
- [i, u]
58
- );
59
- };
60
- export {
61
- A as usePLAModalHandlers
62
- };
63
- //# sourceMappingURL=use-pla-model-handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-pla-model-handlers.js","sources":["../../../../../src/features/parent-dashboard/modals/hooks/use-pla-model-handlers.ts"],"sourcesContent":["import type { IBillingDetails } from '../../parent-dashboard-types';\n\nimport { useCallback, useMemo } from 'react';\n\nimport useModalActions from '../../../ui/modals/use-modal-actions';\nimport { useCancelSubscriptionPatch } from '../../api/cancel-subscription';\nimport { invalidateParentHome } from '../../api/parent-home';\n\ninterface IUsePLAModalHandlers {\n demoId?: string;\n completedSessions: number;\n studentId: string;\n withTutor: boolean;\n billingDetails: IBillingDetails | null;\n onRescheduleDemo: (demoId: string) => void;\n onChangeTutor: (demoId: string) => void;\n}\n\ninterface IUsePLAModalResponse {\n onCancelSubscription: () => void;\n onViewPaymentMethod: () => void;\n}\n\nexport const usePLAModalHandlers = ({\n studentId,\n demoId,\n withTutor,\n billingDetails,\n completedSessions,\n onRescheduleDemo,\n onChangeTutor,\n}: IUsePLAModalHandlers): IUsePLAModalResponse => {\n const { openModal } = useModalActions();\n\n const { payment_method_details: paymentMethodDetails } = billingDetails ?? {};\n\n const handleCancelConfirmation = useCallback(() => {\n invalidateParentHome(studentId);\n openModal('pla-cancellation-confirmation');\n }, [openModal, studentId]);\n\n const { patch: cancelSubscription } = useCancelSubscriptionPatch({\n onComplete: handleCancelConfirmation,\n });\n\n const handleCancelSubscriptionPatch = useCallback(\n (cancellationReason: string) => {\n if (!cancellationReason) return;\n\n cancelSubscription(studentId, {\n reason: cancellationReason,\n student_demo_id: demoId,\n });\n },\n [cancelSubscription, studentId, demoId],\n );\n\n const handleViewCancellationReason = useCallback(() => {\n return openModal('pla-cancellation-reason', {\n withTutor,\n completedSessions,\n onCancel: (reason: string) => handleCancelSubscriptionPatch(reason),\n });\n }, [completedSessions, handleCancelSubscriptionPatch, openModal, withTutor]);\n\n const handleCancelSubscription = useCallback(() => {\n openModal('pla-cancel-subscription', {\n withTutor,\n completedSessions,\n onSwitchTutor: () => (demoId ? onChangeTutor(demoId) : undefined),\n onReschedule: () => (demoId ? onRescheduleDemo(demoId) : undefined),\n onCancel: handleViewCancellationReason,\n });\n }, [\n completedSessions,\n demoId,\n handleViewCancellationReason,\n onChangeTutor,\n onRescheduleDemo,\n openModal,\n withTutor,\n ]);\n\n const handleViewPaymentMethod = useCallback(() => {\n openModal('pla-view-payment-method', {\n paymentMethodDetails,\n onCancel: handleCancelSubscription,\n });\n }, [handleCancelSubscription, openModal, paymentMethodDetails]);\n\n return useMemo(\n () => ({\n onCancelSubscription: handleCancelSubscription,\n onViewPaymentMethod: handleViewPaymentMethod,\n }),\n [handleCancelSubscription, handleViewPaymentMethod],\n );\n};\n"],"names":["usePLAModalHandlers","studentId","demoId","withTutor","billingDetails","completedSessions","onRescheduleDemo","onChangeTutor","openModal","useModalActions","paymentMethodDetails","handleCancelConfirmation","useCallback","invalidateParentHome","cancelSubscription","useCancelSubscriptionPatch","handleCancelSubscriptionPatch","cancellationReason","handleViewCancellationReason","reason","handleCancelSubscription","handleViewPaymentMethod","useMemo"],"mappings":";;;;AAuBO,MAAMA,IAAsB,CAAC;AAAA,EAClC,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,eAAAC;AACF,MAAkD;AAC1C,QAAA,EAAE,WAAAC,MAAcC,KAEhB,EAAE,wBAAwBC,MAAyBN,KAAkB,CAAA,GAErEO,IAA2BC,EAAY,MAAM;AACjD,IAAAC,EAAqBZ,CAAS,GAC9BO,EAAU,+BAA+B;AAAA,EAAA,GACxC,CAACA,GAAWP,CAAS,CAAC,GAEnB,EAAE,OAAOa,EAAmB,IAAIC,EAA2B;AAAA,IAC/D,YAAYJ;AAAA,EAAA,CACb,GAEKK,IAAgCJ;AAAA,IACpC,CAACK,MAA+B;AAC9B,MAAKA,KAELH,EAAmBb,GAAW;AAAA,QAC5B,QAAQgB;AAAA,QACR,iBAAiBf;AAAA,MAAA,CAClB;AAAA,IACH;AAAA,IACA,CAACY,GAAoBb,GAAWC,CAAM;AAAA,EAAA,GAGlCgB,IAA+BN,EAAY,MACxCJ,EAAU,2BAA2B;AAAA,IAC1C,WAAAL;AAAA,IACA,mBAAAE;AAAA,IACA,UAAU,CAACc,MAAmBH,EAA8BG,CAAM;AAAA,EAAA,CACnE,GACA,CAACd,GAAmBW,GAA+BR,GAAWL,CAAS,CAAC,GAErEiB,IAA2BR,EAAY,MAAM;AACjD,IAAAJ,EAAU,2BAA2B;AAAA,MACnC,WAAAL;AAAA,MACA,mBAAAE;AAAA,MACA,eAAe,MAAOH,IAASK,EAAcL,CAAM,IAAI;AAAA,MACvD,cAAc,MAAOA,IAASI,EAAiBJ,CAAM,IAAI;AAAA,MACzD,UAAUgB;AAAA,IAAA,CACX;AAAA,EAAA,GACA;AAAA,IACDb;AAAA,IACAH;AAAA,IACAgB;AAAA,IACAX;AAAA,IACAD;AAAA,IACAE;AAAA,IACAL;AAAA,EAAA,CACD,GAEKkB,IAA0BT,EAAY,MAAM;AAChD,IAAAJ,EAAU,2BAA2B;AAAA,MACnC,sBAAAE;AAAA,MACA,UAAUU;AAAA,IAAA,CACX;AAAA,EACA,GAAA,CAACA,GAA0BZ,GAAWE,CAAoB,CAAC;AAEvD,SAAAY;AAAA,IACL,OAAO;AAAA,MACL,sBAAsBF;AAAA,MACtB,qBAAqBC;AAAA,IAAA;AAAA,IAEvB,CAACD,GAA0BC,CAAuB;AAAA,EAAA;AAEtD;"}
@@ -1,65 +0,0 @@
1
- import { jsxs as e, jsx as o } from "react/jsx-runtime";
2
- import { memo as $ } from "react";
3
- import { useTheme as h } from "styled-components";
4
- import p from "../../../ui/buttons/text-button/text-button.js";
5
- import t from "../../../ui/layout/flex-view.js";
6
- import u from "../../../ui/modals/use-modal-params.js";
7
- import n from "../../../ui/separator/separator.js";
8
- import i from "../../../ui/text/text.js";
9
- import { EDeviceType as b } from "../../../ui/theme/constants.js";
10
- const f = $(() => {
11
- const { paymentMethodDetails: l, onCancel: a } = u(), {
12
- exp_month: c,
13
- exp_year: s,
14
- last_4_digits: d
15
- } = l || {}, { device: m } = h(), r = m <= b.MOBILE;
16
- return /* @__PURE__ */ e(t, { $gapX: r ? 2.25 : 2.5, $gutterX: r ? 1 : 2.5, $background: "BLACK_2", children: [
17
- /* @__PURE__ */ o(
18
- i,
19
- {
20
- $renderAs: "ah4-bold",
21
- $renderOnMobileAs: "ac4-black",
22
- $color: r ? "WHITE_T_60" : "WHITE",
23
- children: r ? "Payment Method" : "View Payment Method"
24
- }
25
- ),
26
- /* @__PURE__ */ o(n, { heightX: r ? 1 : 2.5 }),
27
- /* @__PURE__ */ e(
28
- t,
29
- {
30
- $flexDirection: "row",
31
- $justifyContent: "flex-start",
32
- $alignItems: "center",
33
- $flexGapX: 0.5,
34
- $gapX: 1,
35
- $gutterX: 1,
36
- $background: "BLACK_2",
37
- $borderColor: "BLACK_5",
38
- children: [
39
- /* @__PURE__ */ o(t, { $widthX: 3, $heightX: 1.75, $background: "BLACK_4", $borderRadiusX: 0.25 }),
40
- /* @__PURE__ */ e(t, { children: [
41
- /* @__PURE__ */ e(i, { $renderAs: "ac4-black", $color: "WHITE", children: [
42
- "•••• ",
43
- d
44
- ] }),
45
- /* @__PURE__ */ e(i, { $renderAs: "ub3-bold", $color: "WHITE", children: [
46
- "Card",
47
- /* @__PURE__ */ e(i, { $renderAs: "ub3", $color: "WHITE", $inline: !0, children: [
48
- "Exp: ",
49
- c,
50
- "/",
51
- s
52
- ] })
53
- ] })
54
- ] })
55
- ]
56
- }
57
- ),
58
- /* @__PURE__ */ o(n, { heightX: 1.5 }),
59
- /* @__PURE__ */ o(p, { size: "small", label: "Cancel subscription", color: "WHITE_T_60", onClick: a })
60
- ] });
61
- }), y = f;
62
- export {
63
- y as default
64
- };
65
- //# sourceMappingURL=view-payment-method.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view-payment-method.js","sources":["../../../../../src/features/parent-dashboard/modals/view-payment-method/view-payment-method.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport useModalParams from '../../../ui/modals/use-modal-params';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { EDeviceType } from '../../../ui/theme/constants';\nimport { type IViewPaymentMethodProps } from './view-payment-method-types';\n\nconst ViewPaymentMethod = memo(() => {\n const { paymentMethodDetails, onCancel } = useModalParams<IViewPaymentMethodProps>();\n\n const {\n exp_month: expMonth,\n exp_year: expYear,\n last_4_digits: last4Digits,\n } = paymentMethodDetails || {};\n\n const { device } = useTheme();\n const isMobile = device <= EDeviceType.MOBILE;\n\n return (\n <FlexView $gapX={isMobile ? 2.25 : 2.5} $gutterX={isMobile ? 1 : 2.5} $background=\"BLACK_2\">\n <Text\n $renderAs=\"ah4-bold\"\n $renderOnMobileAs=\"ac4-black\"\n $color={isMobile ? 'WHITE_T_60' : 'WHITE'}\n >\n {isMobile ? 'Payment Method' : 'View Payment Method'}\n </Text>\n <Separator heightX={isMobile ? 1 : 2.5} />\n <FlexView\n $flexDirection=\"row\"\n $justifyContent=\"flex-start\"\n $alignItems=\"center\"\n $flexGapX={0.5}\n $gapX={1}\n $gutterX={1}\n $background=\"BLACK_2\"\n $borderColor=\"BLACK_5\"\n >\n <FlexView $widthX={3} $heightX={1.75} $background=\"BLACK_4\" $borderRadiusX={0.25} />\n <FlexView>\n <Text $renderAs=\"ac4-black\" $color=\"WHITE\">\n •••• {last4Digits}\n </Text>\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\">\n Card\n <Text $renderAs=\"ub3\" $color=\"WHITE\" $inline>\n Exp: {expMonth}/{expYear}\n </Text>\n </Text>\n </FlexView>\n </FlexView>\n <Separator heightX={1.5} />\n <TextButton size=\"small\" label=\"Cancel subscription\" color=\"WHITE_T_60\" onClick={onCancel} />\n </FlexView>\n );\n});\n\nexport default ViewPaymentMethod;\n"],"names":["ViewPaymentMethod","memo","paymentMethodDetails","onCancel","useModalParams","expMonth","expYear","last4Digits","device","useTheme","isMobile","EDeviceType","jsxs","FlexView","jsx","Text","Separator","TextButton","ViewPaymentMethod$1"],"mappings":";;;;;;;;;AAWA,MAAMA,IAAoBC,EAAK,MAAM;AACnC,QAAM,EAAE,sBAAAC,GAAsB,UAAAC,EAAS,IAAIC,EAAwC,GAE7E;AAAA,IACJ,WAAWC;AAAA,IACX,UAAUC;AAAA,IACV,eAAeC;AAAA,EAAA,IACbL,KAAwB,CAAA,GAEtB,EAAE,QAAAM,MAAWC,KACbC,IAAWF,KAAUG,EAAY;AAGrC,SAAA,gBAAAC,EAACC,GAAS,EAAA,OAAOH,IAAW,OAAO,KAAK,UAAUA,IAAW,IAAI,KAAK,aAAY,WAChF,UAAA;AAAA,IAAA,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,mBAAkB;AAAA,QAClB,QAAQL,IAAW,eAAe;AAAA,QAEjC,cAAW,mBAAmB;AAAA,MAAA;AAAA,IACjC;AAAA,IACC,gBAAAI,EAAAE,GAAA,EAAU,SAASN,IAAW,IAAI,KAAK;AAAA,IACxC,gBAAAE;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,iBAAgB;AAAA,QAChB,aAAY;AAAA,QACZ,WAAW;AAAA,QACX,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAY;AAAA,QACZ,cAAa;AAAA,QAEb,UAAA;AAAA,UAAC,gBAAAC,EAAAD,GAAA,EAAS,SAAS,GAAG,UAAU,MAAM,aAAY,WAAU,gBAAgB,KAAM,CAAA;AAAA,4BACjFA,GACC,EAAA,UAAA;AAAA,YAAA,gBAAAD,EAACG,GAAK,EAAA,WAAU,aAAY,QAAO,SAAQ,UAAA;AAAA,cAAA;AAAA,cACnCR;AAAA,YAAA,GACR;AAAA,YACC,gBAAAK,EAAAG,GAAA,EAAK,WAAU,YAAW,QAAO,SAAQ,UAAA;AAAA,cAAA;AAAA,gCAEvCA,GAAK,EAAA,WAAU,OAAM,QAAO,SAAQ,SAAO,IAAC,UAAA;AAAA,gBAAA;AAAA,gBACrCV;AAAA,gBAAS;AAAA,gBAAEC;AAAA,cAAA,GACnB;AAAA,YAAA,GACF;AAAA,UAAA,GACF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACA,gBAAAQ,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,IACzB,gBAAAF,EAACG,KAAW,MAAK,SAAQ,OAAM,uBAAsB,OAAM,cAAa,SAASd,EAAU,CAAA;AAAA,EAC7F,EAAA,CAAA;AAEJ,CAAC,GAEDe,IAAelB;"}
@@ -1,6 +0,0 @@
1
- const E = 25, N = 3;
2
- export {
3
- E as USERNAME_MAX_LENGTH,
4
- N as USERNAME_MIN_LENGTH
5
- };
6
- //# sourceMappingURL=add-student-username-constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-student-username-constants.js","sources":["../../../../src/features/student-username/add/add-student-username-constants.ts"],"sourcesContent":["export const USERNAME_MAX_LENGTH = 25;\nexport const USERNAME_MIN_LENGTH = 3;\n"],"names":["USERNAME_MAX_LENGTH","USERNAME_MIN_LENGTH"],"mappings":"AAAO,MAAMA,IAAsB,IACtBC,IAAsB;"}
@@ -1,6 +0,0 @@
1
- import { USERNAME_MIN_LENGTH as t, USERNAME_MAX_LENGTH as r } from "./add-student-username-constants.js";
2
- const a = (e) => e.trim() ? e.length < t || e.length > r ? `Username must be between 3 and ${r} characters` : /^[a-z0-9_]+$/.test(e) ? null : "Only lowercase letters, numbers, and underscores are allowed" : "Username is required";
3
- export {
4
- a as validateUsername
5
- };
6
- //# sourceMappingURL=add-student-username-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-student-username-helpers.js","sources":["../../../../src/features/student-username/add/add-student-username-helpers.ts"],"sourcesContent":["import { USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH } from './add-student-username-constants';\n\nexport const validateUsername = (username: string) => {\n if (!username.trim()) return 'Username is required';\n\n if (username.length < USERNAME_MIN_LENGTH || username.length > USERNAME_MAX_LENGTH) {\n return `Username must be between 3 and ${USERNAME_MAX_LENGTH} characters`;\n }\n\n const usernameRegex = /^[a-z0-9_]+$/;\n\n if (!usernameRegex.test(username)) {\n return 'Only lowercase letters, numbers, and underscores are allowed';\n }\n\n return null;\n};\n"],"names":["validateUsername","username","USERNAME_MIN_LENGTH","USERNAME_MAX_LENGTH"],"mappings":";AAEa,MAAAA,IAAmB,CAACC,MAC1BA,EAAS,KAAK,IAEfA,EAAS,SAASC,KAAuBD,EAAS,SAASE,IACtD,kCAAkCA,CAAmB,gBAGxC,eAEH,KAAKF,CAAQ,IAIzB,OAHE,iEAToB;"}
@@ -1,10 +0,0 @@
1
- import o from "styled-components";
2
- import e from "../../ui/layout/flex-view.js";
3
- const t = o(e)`
4
- min-height: 100vh;
5
- overflow: hidden;
6
- `;
7
- export {
8
- t as Container
9
- };
10
- //# sourceMappingURL=add-student-username-styled.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-student-username-styled.js","sources":["../../../../src/features/student-username/add/add-student-username-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\n\nexport const Container = styled(FlexView)`\n min-height: 100vh;\n overflow: hidden;\n`;\n"],"names":["Container","styled","FlexView"],"mappings":";;AAIa,MAAAA,IAAYC,EAAOC,CAAQ;AAAA;AAAA;AAAA;"}
@@ -1,78 +0,0 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import { memo as b, useState as y, useRef as A, useCallback as i, useMemo as N } from "react";
3
- import { LOTTIE as g } from "../../../assets/lottie/lottie.js";
4
- import O from "../../auth/signup/circular-step-wrapper/circular-step-wrapper.js";
5
- import _ from "../../auth/signup/custom-input-field/custom-input-field.js";
6
- import F from "../../ui/layout/flex-view.js";
7
- import { Container as L } from "./add-student-username-styled.js";
8
- import { useUpdateUsernamePost as P } from "./api/update-username.js";
9
- import $ from "./hooks/use-check-username-availability.js";
10
- const k = (U) => {
11
- const { studentId: c, onSuccess: o, onGoBack: n } = U, [e, S] = y(""), r = A(null), {
12
- isValid: s,
13
- isProcessing: l,
14
- error: m,
15
- setError: p
16
- } = $(e), w = i((t) => {
17
- S(t);
18
- }, []), x = i(
19
- async (t) => {
20
- var C;
21
- if (t) {
22
- p(t);
23
- return;
24
- }
25
- r && await ((C = r.current) == null ? void 0 : C.playOutroAndFadeOut()), o == null || o(e);
26
- },
27
- [o, p, e]
28
- ), { post: h, isProcessing: u } = P({
29
- onComplete: x
30
- }), E = i(async () => {
31
- var t;
32
- r && await ((t = r.current) == null ? void 0 : t.playOutroAndFadeOut()), n == null || n();
33
- }, [n]), d = N(
34
- () => e.trim().length === 0 || !s || !!m || l || u,
35
- [e, s, m, l, u]
36
- ), f = i(() => {
37
- d || h(
38
- { username: e.toLowerCase(), create_circle_profile_only: !0 },
39
- { studentId: c }
40
- );
41
- }, [d, c, h, e]);
42
- return /* @__PURE__ */ a(L, { $width: "100%", $height: "100%", children: /* @__PURE__ */ a(F, { $background: "BLACK_1", $width: "100%", $height: "100%", $flex: 1, children: /* @__PURE__ */ a(
43
- O,
44
- {
45
- label: "Create a unique username for your child",
46
- showNext: !0,
47
- showPrevious: !0,
48
- animation: g.USERNAME,
49
- introFrames: [0, 23],
50
- outroFrames: [23, 40],
51
- isNextLoading: u,
52
- onGoBack: E,
53
- onNext: f,
54
- isNextDisabled: d,
55
- animationSrcMobile: g.USERNAME_RESPONSIVE,
56
- ref: r,
57
- children: /* @__PURE__ */ a(
58
- _,
59
- {
60
- value: e,
61
- error: m,
62
- onChange: w,
63
- helperText: `Only letters, _ , & digits allowed.
64
- Upto 25 characters.`,
65
- isLoading: l,
66
- onEnter: f,
67
- isValid: s,
68
- placeholder: "username_1412",
69
- textTransform: "lowercase"
70
- }
71
- )
72
- }
73
- ) }) });
74
- }, D = b(k);
75
- export {
76
- D as default
77
- };
78
- //# sourceMappingURL=add-student-username.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-student-username.js","sources":["../../../../src/features/student-username/add/add-student-username.tsx"],"sourcesContent":["import type { ICircularStepRef } from '../../auth/signup/circular-step-wrapper/circular-step-wrapper-types';\nimport type { IAddStudentUsernameProps } from './add-student-username-types';\n\nimport { memo, useCallback, useMemo, useRef, useState, type FC } from 'react';\n\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport CircularStepWrapper from '../../auth/signup/circular-step-wrapper/circular-step-wrapper';\nimport CustomInputField from '../../auth/signup/custom-input-field/custom-input-field';\nimport FlexView from '../../ui/layout/flex-view';\nimport * as Styled from './add-student-username-styled';\nimport { useUpdateUsernamePost } from './api/update-username';\nimport useCheckUsernameAvailability from './hooks/use-check-username-availability';\n\nconst AddStudentUsername: FC<IAddStudentUsernameProps> = props => {\n const { studentId, onSuccess, onGoBack } = props;\n const [username, setUsername] = useState('');\n\n const circularStepRef = useRef<ICircularStepRef>(null);\n const {\n isValid: isValidUsername,\n isProcessing: isCheckingUsername,\n error,\n setError,\n } = useCheckUsernameAvailability(username);\n\n const handleChange = useCallback((value: string) => {\n setUsername(value);\n }, []);\n\n const handleComplete = useCallback(\n async (errorMessage: string | null) => {\n if (errorMessage) {\n setError(errorMessage);\n\n return;\n }\n\n if (circularStepRef) {\n await circularStepRef.current?.playOutroAndFadeOut();\n }\n\n onSuccess?.(username);\n },\n [onSuccess, setError, username],\n );\n\n const { post: updateUsernamePost, isProcessing: isSubmitLoading } = useUpdateUsernamePost({\n onComplete: handleComplete,\n });\n\n const handleGoBack = useCallback(async () => {\n if (circularStepRef) {\n await circularStepRef.current?.playOutroAndFadeOut();\n }\n onGoBack?.();\n }, [onGoBack]);\n\n const isNextDisabled = useMemo(\n () =>\n username.trim().length === 0 ||\n !isValidUsername ||\n !!error ||\n isCheckingUsername ||\n isSubmitLoading,\n [username, isValidUsername, error, isCheckingUsername, isSubmitLoading],\n );\n\n const handleSubmit = useCallback(() => {\n if (!isNextDisabled) {\n updateUsernamePost(\n { username: username.toLowerCase(), create_circle_profile_only: true },\n { studentId },\n );\n }\n }, [isNextDisabled, studentId, updateUsernamePost, username]);\n\n return (\n <Styled.Container $width=\"100%\" $height=\"100%\">\n <FlexView $background=\"BLACK_1\" $width=\"100%\" $height={'100%'} $flex={1}>\n <CircularStepWrapper\n label=\"Create a unique username for your child\"\n showNext\n showPrevious\n animation={LOTTIE.USERNAME}\n introFrames={[0, 23]}\n outroFrames={[23, 40]}\n isNextLoading={isSubmitLoading}\n onGoBack={handleGoBack}\n onNext={handleSubmit}\n isNextDisabled={isNextDisabled}\n animationSrcMobile={LOTTIE.USERNAME_RESPONSIVE}\n ref={circularStepRef}\n >\n <CustomInputField\n value={username}\n error={error}\n onChange={handleChange}\n helperText={`Only letters, _ , & digits allowed.\\nUpto 25 characters.`}\n isLoading={isCheckingUsername}\n onEnter={handleSubmit}\n isValid={isValidUsername}\n placeholder=\"username_1412\"\n textTransform=\"lowercase\"\n />\n </CircularStepWrapper>\n </FlexView>\n </Styled.Container>\n );\n};\n\nexport default memo(AddStudentUsername);\n"],"names":["AddStudentUsername","props","studentId","onSuccess","onGoBack","username","setUsername","useState","circularStepRef","useRef","isValidUsername","isCheckingUsername","error","setError","useCheckUsernameAvailability","handleChange","useCallback","value","handleComplete","errorMessage","_a","updateUsernamePost","isSubmitLoading","useUpdateUsernamePost","handleGoBack","isNextDisabled","useMemo","handleSubmit","Styled.Container","jsx","FlexView","CircularStepWrapper","LOTTIE","CustomInputField","addStudentUsername","memo"],"mappings":";;;;;;;;;AAaA,MAAMA,IAAmD,CAASC,MAAA;AAChE,QAAM,EAAE,WAAAC,GAAW,WAAAC,GAAW,UAAAC,EAAA,IAAaH,GACrC,CAACI,GAAUC,CAAW,IAAIC,EAAS,EAAE,GAErCC,IAAkBC,EAAyB,IAAI,GAC/C;AAAA,IACJ,SAASC;AAAA,IACT,cAAcC;AAAA,IACd,OAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,IACEC,EAA6BT,CAAQ,GAEnCU,IAAeC,EAAY,CAACC,MAAkB;AAClD,IAAAX,EAAYW,CAAK;AAAA,EACnB,GAAG,CAAE,CAAA,GAECC,IAAiBF;AAAA,IACrB,OAAOG,MAAgC;;AACrC,UAAIA,GAAc;AAChB,QAAAN,EAASM,CAAY;AAErB;AAAA,MACF;AAEA,MAAIX,KACI,QAAAY,IAAAZ,EAAgB,YAAhB,gBAAAY,EAAyB,wBAGjCjB,KAAA,QAAAA,EAAYE;AAAA,IACd;AAAA,IACA,CAACF,GAAWU,GAAUR,CAAQ;AAAA,EAAA,GAG1B,EAAE,MAAMgB,GAAoB,cAAcC,EAAA,IAAoBC,EAAsB;AAAA,IACxF,YAAYL;AAAA,EAAA,CACb,GAEKM,IAAeR,EAAY,YAAY;;AAC3C,IAAIR,KACI,QAAAY,IAAAZ,EAAgB,YAAhB,gBAAAY,EAAyB,wBAEtBhB,KAAA,QAAAA;AAAA,EAAA,GACV,CAACA,CAAQ,CAAC,GAEPqB,IAAiBC;AAAA,IACrB,MACErB,EAAS,KAAO,EAAA,WAAW,KAC3B,CAACK,KACD,CAAC,CAACE,KACFD,KACAW;AAAA,IACF,CAACjB,GAAUK,GAAiBE,GAAOD,GAAoBW,CAAe;AAAA,EAAA,GAGlEK,IAAeX,EAAY,MAAM;AACrC,IAAKS,KACHJ;AAAA,MACE,EAAE,UAAUhB,EAAS,YAAY,GAAG,4BAA4B,GAAK;AAAA,MACrE,EAAE,WAAAH,EAAU;AAAA,IAAA;AAAA,KAGf,CAACuB,GAAgBvB,GAAWmB,GAAoBhB,CAAQ,CAAC;AAE5D,2BACGuB,GAAA,EAAiB,QAAO,QAAO,SAAQ,QACtC,UAAC,gBAAAC,EAAAC,GAAA,EAAS,aAAY,WAAU,QAAO,QAAO,SAAS,QAAQ,OAAO,GACpE,UAAA,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAQ;AAAA,MACR,cAAY;AAAA,MACZ,WAAWC,EAAO;AAAA,MAClB,aAAa,CAAC,GAAG,EAAE;AAAA,MACnB,aAAa,CAAC,IAAI,EAAE;AAAA,MACpB,eAAeV;AAAA,MACf,UAAUE;AAAA,MACV,QAAQG;AAAA,MACR,gBAAAF;AAAA,MACA,oBAAoBO,EAAO;AAAA,MAC3B,KAAKxB;AAAA,MAEL,UAAA,gBAAAqB;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,OAAO5B;AAAA,UACP,OAAAO;AAAA,UACA,UAAUG;AAAA,UACV,YAAY;AAAA;AAAA,UACZ,WAAWJ;AAAA,UACX,SAASgB;AAAA,UACT,SAASjB;AAAA,UACT,aAAY;AAAA,UACZ,eAAc;AAAA,QAAA;AAAA,MAChB;AAAA,IAAA;AAAA,EAAA,EAEJ,CAAA,EACF,CAAA;AAEJ,GAEewB,IAAAC,EAAKnC,CAAkB;"}
@@ -1,9 +0,0 @@
1
- import { createPostAPI as e } from "@cuemath/rest-api";
2
- import { BASE_URL_V1 as o } from "../../../../constants/api.js";
3
- const { usePost: p } = e({
4
- getURL: (s, { studentId: t }) => `${o}/students/${t}/`
5
- });
6
- export {
7
- p as useUpdateUsernamePost
8
- };
9
- //# sourceMappingURL=update-username.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-username.js","sources":["../../../../../src/features/student-username/add/api/update-username.ts"],"sourcesContent":["import { createPostAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V1 } from '../../../../constants/api';\n\ntype TResponse = Record<string, string>;\ninterface IPayload {\n username: string;\n create_circle_profile_only?: boolean;\n}\n\nconst { usePost: useUpdateUsernamePost } = createPostAPI<\n TResponse,\n IPayload,\n { studentId: string }\n>({\n getURL: (_, { studentId }) => `${BASE_URL_V1}/students/${studentId}/`,\n});\n\nexport { useUpdateUsernamePost };\n"],"names":["useUpdateUsernamePost","createPostAPI","_","studentId","BASE_URL_V1"],"mappings":";;AAUA,MAAM,EAAE,SAASA,EAAsB,IAAIC,EAIzC;AAAA,EACA,QAAQ,CAACC,GAAG,EAAE,WAAAC,EAAgB,MAAA,GAAGC,CAAW,aAAaD,CAAS;AACpE,CAAC;"}
@@ -1,10 +0,0 @@
1
- import { createGetAPI as t } from "@cuemath/rest-api";
2
- import * as r from "../../../../node_modules/query-string/base.js";
3
- import { BASE_URL_V1 as a } from "../../../../constants/api.js";
4
- const { useGet: s } = t({
5
- getURL: (i, e) => `${a}/available-username?${r.stringify(e)}`
6
- });
7
- export {
8
- s as useUsernameAvailabilityGet
9
- };
10
- //# sourceMappingURL=username-availability.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"username-availability.js","sources":["../../../../../src/features/student-username/add/api/username-availability.ts"],"sourcesContent":["import { createGetAPI } from '@cuemath/rest-api';\nimport querystring from 'query-string';\n\nimport { BASE_URL_V1 } from '../../../../constants/api';\n\ninterface IUsernameAvailabilityParam {\n username: string;\n}\n\ninterface IUsernameAvailabilityData {\n is_valid: boolean;\n}\n\nconst { useGet: useUsernameAvailabilityGet } = createGetAPI<\n IUsernameAvailabilityData,\n IUsernameAvailabilityParam\n>({\n getURL: (_, queryParams) =>\n `${BASE_URL_V1}/available-username?${querystring.stringify(queryParams)}`,\n});\n\nexport { useUsernameAvailabilityGet };\n"],"names":["useUsernameAvailabilityGet","createGetAPI","_","queryParams","BASE_URL_V1","querystring"],"mappings":";;;AAaA,MAAM,EAAE,QAAQA,EAA2B,IAAIC,EAG7C;AAAA,EACA,QAAQ,CAACC,GAAGC,MACV,GAAGC,CAAW,uBAAuBC,EAAY,UAAUF,CAAW,CAAC;AAC3E,CAAC;"}
@@ -1,41 +0,0 @@
1
- import g from "../../../../node_modules/lodash.debounce/index.js";
2
- import { useState as c, useMemo as v, useEffect as f } from "react";
3
- import { validateUsername as b } from "../add-student-username-helpers.js";
4
- import { useUsernameAvailabilityGet as h } from "../api/username-availability.js";
5
- const k = (s) => {
6
- const [m, e] = c(""), [d, a] = c(!1), {
7
- get: o,
8
- data: t,
9
- isProcessing: u,
10
- isProcessed: l,
11
- isProcessingFailed: n
12
- } = h(), r = v(
13
- () => g((i) => {
14
- o("", { username: i });
15
- }, 300),
16
- [o]
17
- );
18
- return f(() => {
19
- if (a(!1), s && s.length >= 1) {
20
- const i = b(s);
21
- if (i) {
22
- e(i);
23
- return;
24
- }
25
- e(""), r(s);
26
- } else
27
- e("");
28
- return () => {
29
- r.cancel();
30
- };
31
- }, [s, r]), f(() => {
32
- if (l && t) {
33
- const i = t == null ? void 0 : t.is_valid;
34
- e(i ? "" : "This username is already taken"), a(i);
35
- } else n && e("Something went wrong");
36
- }, [t, l, e, n]), { isValid: d, isProcessing: u, error: m, setError: e };
37
- };
38
- export {
39
- k as default
40
- };
41
- //# sourceMappingURL=use-check-username-availability.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-check-username-availability.js","sources":["../../../../../src/features/student-username/add/hooks/use-check-username-availability.ts"],"sourcesContent":["import debounce from 'lodash.debounce';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { validateUsername } from '../add-student-username-helpers';\nimport { useUsernameAvailabilityGet } from '../api/username-availability';\n\ninterface IUseCheckUsernameAvailability {\n isValid: boolean;\n isProcessing: boolean;\n error: string;\n setError: (error: string) => void;\n}\n\nconst useCheckUsernameAvailability = (username: string): IUseCheckUsernameAvailability => {\n const [error, setError] = useState('');\n const [isValid, setIsValid] = useState(false);\n\n const {\n get: getUsernameAvailability,\n data,\n isProcessing,\n isProcessed,\n isProcessingFailed,\n } = useUsernameAvailabilityGet();\n\n const checkAvailability = useMemo(\n () =>\n debounce((usernameVal: string) => {\n getUsernameAvailability('', { username: usernameVal });\n }, 300),\n [getUsernameAvailability],\n );\n\n useEffect(() => {\n setIsValid(false);\n if (username && username.length >= 1) {\n const err = validateUsername(username);\n\n if (err) {\n setError(err);\n\n return;\n }\n setError('');\n checkAvailability(username);\n } else {\n setError('');\n }\n\n return () => {\n checkAvailability.cancel();\n };\n }, [username, checkAvailability]);\n\n useEffect(() => {\n if (isProcessed && data) {\n const isValidUsername = data?.is_valid;\n\n setError(isValidUsername ? '' : 'This username is already taken');\n setIsValid(isValidUsername);\n } else if (isProcessingFailed) {\n setError('Something went wrong');\n }\n }, [data, isProcessed, setError, isProcessingFailed]);\n\n return { isValid, isProcessing, error, setError };\n};\n\nexport default useCheckUsernameAvailability;\n"],"names":["useCheckUsernameAvailability","username","error","setError","useState","isValid","setIsValid","getUsernameAvailability","data","isProcessing","isProcessed","isProcessingFailed","useUsernameAvailabilityGet","checkAvailability","useMemo","debounce","usernameVal","useEffect","err","validateUsername","isValidUsername"],"mappings":";;;;AAaM,MAAAA,IAA+B,CAACC,MAAoD;AACxF,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAS,EAAE,GAC/B,CAACC,GAASC,CAAU,IAAIF,EAAS,EAAK,GAEtC;AAAA,IACJ,KAAKG;AAAA,IACL,MAAAC;AAAA,IACA,cAAAC;AAAA,IACA,aAAAC;AAAA,IACA,oBAAAC;AAAA,MACEC,EAA2B,GAEzBC,IAAoBC;AAAA,IACxB,MACEC,EAAS,CAACC,MAAwB;AAChC,MAAAT,EAAwB,IAAI,EAAE,UAAUS,EAAa,CAAA;AAAA,OACpD,GAAG;AAAA,IACR,CAACT,CAAuB;AAAA,EAAA;AAG1B,SAAAU,EAAU,MAAM;AAEV,QADJX,EAAW,EAAK,GACZL,KAAYA,EAAS,UAAU,GAAG;AAC9B,YAAAiB,IAAMC,EAAiBlB,CAAQ;AAErC,UAAIiB,GAAK;AACP,QAAAf,EAASe,CAAG;AAEZ;AAAA,MACF;AACA,MAAAf,EAAS,EAAE,GACXU,EAAkBZ,CAAQ;AAAA,IAAA;AAE1B,MAAAE,EAAS,EAAE;AAGb,WAAO,MAAM;AACX,MAAAU,EAAkB,OAAO;AAAA,IAAA;AAAA,EAC3B,GACC,CAACZ,GAAUY,CAAiB,CAAC,GAEhCI,EAAU,MAAM;AACd,QAAIP,KAAeF,GAAM;AACvB,YAAMY,IAAkBZ,KAAA,gBAAAA,EAAM;AAErB,MAAAL,EAAAiB,IAAkB,KAAK,gCAAgC,GAChEd,EAAWc,CAAe;AAAA,WACjBT,KACTR,EAAS,sBAAsB;AAAA,KAEhC,CAACK,GAAME,GAAaP,GAAUQ,CAAkB,CAAC,GAE7C,EAAE,SAAAN,GAAS,cAAAI,GAAc,OAAAP,GAAO,UAAAC,EAAS;AAClD;"}
@@ -1,9 +0,0 @@
1
- import { createPostAPI as t } from "@cuemath/rest-api";
2
- import { BASE_URL_V1 as e } from "../../../constants/api.js";
3
- const { usePost: i } = t({
4
- getURL: () => `${e}/teacher-slot-availability/`
5
- });
6
- export {
7
- i as usePostTeacherAvailability
8
- };
9
- //# sourceMappingURL=teacher-availability.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"teacher-availability.js","sources":["../../../../src/features/trial-session/api/teacher-availability.ts"],"sourcesContent":["import { createPostAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V1 } from '../../../constants/api';\n\ntype TSessionList = {\n weekday: string;\n start_time: string;\n};\n\ntype TTeacherAvailabilityBody = {\n teacher_id: string;\n session_list: TSessionList[];\n};\n\nexport type TTeacherAvailabilityResponse = {\n is_available: boolean;\n reason: string;\n}[];\n\nconst { usePost: usePostTeacherAvailability } = createPostAPI<\n TTeacherAvailabilityResponse,\n TTeacherAvailabilityBody\n>({\n getURL: () => `${BASE_URL_V1}/teacher-slot-availability/`,\n});\n\nexport { usePostTeacherAvailability };\n"],"names":["usePostTeacherAvailability","createPostAPI","BASE_URL_V1"],"mappings":";;AAmBA,MAAM,EAAE,SAASA,EAA2B,IAAIC,EAG9C;AAAA,EACA,QAAQ,MAAM,GAAGC,CAAW;AAC9B,CAAC;"}
@@ -1,28 +0,0 @@
1
- const m = (o, n) => {
2
- let r = typeof o == "string" ? parseInt(o, 10) : o, t = typeof n == "string" ? parseInt(n, 10) : n;
3
- const a = t % 15;
4
- return a >= 8 ? (t += 15 - a, t === 60 && (t = 0, r += 1, r === 24 && (r = 0))) : t -= a, {
5
- roundedHour: r.toString().padStart(2, "0"),
6
- roundedMinute: t.toString().padStart(2, "0")
7
- };
8
- }, c = (o, n) => {
9
- const r = new Date(o), t = {
10
- weekday: "long",
11
- hour: "2-digit",
12
- minute: "2-digit",
13
- hour12: !0,
14
- timeZone: n
15
- }, p = new Intl.DateTimeFormat("en-US", t).formatToParts(r);
16
- let i = "", d = "", u = "", s = "";
17
- for (const e of p)
18
- e.type === "weekday" && (i = e.value), e.type === "hour" && (d = e.value), e.type === "minute" && (u = e.value), e.type === "dayPeriod" && (s = e.value);
19
- const { roundedHour: f, roundedMinute: l } = m(d, u);
20
- return {
21
- day: i,
22
- time: `${f}:${l} ${s}`
23
- };
24
- };
25
- export {
26
- c as extractDayAndTimeFromEpoch
27
- };
28
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/features/trial-session/comps/class-preference/helpers.ts"],"sourcesContent":["/**\n * Rounds a given hour and minute to the nearest 15-minute interval.\n * @param hour string or number\n * @param minute string or number\n * @returns { roundedHour: string, roundedMinute: string }\n */\nconst roundToNearest15Min = (\n hour: string | number,\n minute: string | number,\n): { roundedHour: string; roundedMinute: string } => {\n let h = typeof hour === 'string' ? parseInt(hour, 10) : hour;\n let m = typeof minute === 'string' ? parseInt(minute, 10) : minute;\n // Round down to nearest 15\n const remainder = m % 15;\n\n if (remainder >= 8) {\n m += 15 - remainder;\n if (m === 60) {\n m = 0;\n h += 1;\n if (h === 24) h = 0;\n }\n } else {\n m -= remainder;\n }\n\n return {\n roundedHour: h.toString().padStart(2, '0'),\n roundedMinute: m.toString().padStart(2, '0'),\n };\n};\n\n/**\n * Extracts day and time in 'hh:mm AM/PM' format from epoch and timezone.\n * @param epoch Epoch timestamp (number)\n * @param timezone IANA timezone string (e.g., 'Asia/Kolkata')\n * @returns { day: string, time: string }\n */\nconst extractDayAndTimeFromEpoch = (\n epoch: number,\n timezone: string,\n): { day: string; time: string } => {\n // Use Intl.DateTimeFormat for timezone conversion\n const date = new Date(epoch);\n const options: Intl.DateTimeFormatOptions = {\n weekday: 'long',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n timeZone: timezone,\n };\n const formatter = new Intl.DateTimeFormat('en-US', options);\n const parts = formatter.formatToParts(date);\n let day = '';\n let hour = '';\n let minute = '';\n let period = '';\n\n for (const part of parts) {\n if (part.type === 'weekday') day = part.value;\n\n if (part.type === 'hour') hour = part.value;\n\n if (part.type === 'minute') minute = part.value;\n\n if (part.type === 'dayPeriod') period = part.value;\n }\n const { roundedHour, roundedMinute } = roundToNearest15Min(hour, minute);\n\n return {\n day,\n time: `${roundedHour}:${roundedMinute} ${period}`,\n };\n};\n\nexport { extractDayAndTimeFromEpoch };\n"],"names":["roundToNearest15Min","hour","minute","h","m","remainder","extractDayAndTimeFromEpoch","epoch","timezone","date","options","parts","day","period","part","roundedHour","roundedMinute"],"mappings":"AAMA,MAAMA,IAAsB,CAC1BC,GACAC,MACmD;AACnD,MAAIC,IAAI,OAAOF,KAAS,WAAW,SAASA,GAAM,EAAE,IAAIA,GACpDG,IAAI,OAAOF,KAAW,WAAW,SAASA,GAAQ,EAAE,IAAIA;AAE5D,QAAMG,IAAYD,IAAI;AAEtB,SAAIC,KAAa,KACfD,KAAK,KAAKC,GACND,MAAM,OACJA,IAAA,GACCD,KAAA,GACDA,MAAM,OAAQA,IAAA,OAGfC,KAAAC,GAGA;AAAA,IACL,aAAaF,EAAE,SAAA,EAAW,SAAS,GAAG,GAAG;AAAA,IACzC,eAAeC,EAAE,SAAA,EAAW,SAAS,GAAG,GAAG;AAAA,EAAA;AAE/C,GAQME,IAA6B,CACjCC,GACAC,MACkC;AAE5B,QAAAC,IAAO,IAAI,KAAKF,CAAK,GACrBG,IAAsC;AAAA,IAC1C,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAUF;AAAA,EAAA,GAGNG,IADY,IAAI,KAAK,eAAe,SAASD,CAAO,EAClC,cAAcD,CAAI;AAC1C,MAAIG,IAAM,IACNX,IAAO,IACPC,IAAS,IACTW,IAAS;AAEb,aAAWC,KAAQH;AACjB,IAAIG,EAAK,SAAS,cAAWF,IAAME,EAAK,QAEpCA,EAAK,SAAS,WAAQb,IAAOa,EAAK,QAElCA,EAAK,SAAS,aAAUZ,IAASY,EAAK,QAEtCA,EAAK,SAAS,gBAAaD,IAASC,EAAK;AAE/C,QAAM,EAAE,aAAAC,GAAa,eAAAC,EAAA,IAAkBhB,EAAoBC,GAAMC,CAAM;AAEhE,SAAA;AAAA,IACL,KAAAU;AAAA,IACA,MAAM,GAAGG,CAAW,IAAIC,CAAa,IAAIH,CAAM;AAAA,EAAA;AAEnD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sticker-grid-styles.js","sources":["../../../../src/features/ui/sticker-grid/sticker-grid-styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StickerContainer = styled.div<{\n $size: number | string;\n $disabled?: boolean;\n}>`\n position: relative;\n width: ${({ $size }) => (typeof $size === 'number' ? `${$size}px` : $size)};\n height: ${({ $size }) => (typeof $size === 'number' ? `${$size}px` : $size)};\n cursor: ${({ $disabled }) => ($disabled ? 'none' : 'pointer')};\n border-radius: 8px;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n background-color: transparent;\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n\n &:hover {\n transform: ${({ $disabled }) => ($disabled ? 'none' : 'scale(1.1)')};\n background-color: rgba(255, 255, 255, 0.1);\n }\n\n &:active {\n transform: ${({ $disabled }) => ($disabled ? 'none' : 'scale(0.95)')};\n }\n`;\n\nexport const StaticEmoji = styled.div<{ $size: number | string }>`\n font-size: ${({ $size }) => {\n if (typeof $size === 'number') {\n return `${$size * 0.7}px`;\n }\n\n return '70%';\n }};\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n transition: opacity 0.2s ease;\n`;\n\nexport const LottieContainer = styled.div<{ $size: number | string }>`\n position: absolute;\n top: 50%;\n left: 50%;\n width: ${({ $size }) => (typeof $size === 'number' ? `${$size * 0.7}px` : $size)};\n height: ${({ $size }) => (typeof $size === 'number' ? `${$size * 0.7}px` : $size)};\n opacity: 0;\n transition: opacity 0.2s ease;\n transform: translate(-50%, -50%);\n pointer-events: none;\n\n ${StickerContainer}:hover & {\n opacity: 1;\n }\n`;\n\nexport const StickerGrid = styled.div<{\n $columns: number;\n $gap: number;\n}>`\n display: grid;\n grid-template-columns: repeat(${({ $columns }) => $columns}, 1fr);\n gap: ${({ $gap }) => $gap}px;\n padding: 16px;\n background-color: #2a2a2a;\n border-radius: 12px;\n max-height: 400px;\n overflow-y: auto;\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.5);\n }\n`;\n\nexport const StickerGridContainer = styled.div<{\n $width: string;\n $height: string;\n}>`\n width: 100%;\n max-width: ${({ $width }) => $width};\n max-height: ${({ $height }) => $height};\n`;\n"],"names":["StickerContainer","styled","$size","$disabled","StaticEmoji","LottieContainer","StickerGrid","$columns","$gap","StickerGridContainer","$width","$height"],"mappings":";AAEO,MAAMA,IAAmBC,EAAO;AAAA;AAAA,WAK5B,CAAC,EAAE,OAAAC,EAAa,MAAA,OAAOA,KAAU,WAAW,GAAGA,CAAK,OAAOA,CAAM;AAAA,YAChE,CAAC,EAAE,OAAAA,EAAa,MAAA,OAAOA,KAAU,WAAW,GAAGA,CAAK,OAAOA,CAAM;AAAA,YACjE,CAAC,EAAE,WAAAC,EAAA,MAAiBA,IAAY,SAAS,SAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQlD,CAAC,EAAE,WAAAA,EAAA,MAAiBA,IAAY,MAAM,CAAE;AAAA;AAAA;AAAA,iBAGpC,CAAC,EAAE,WAAAA,EAAA,MAAiBA,IAAY,SAAS,YAAa;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKtD,CAAC,EAAE,WAAAA,EAAA,MAAiBA,IAAY,SAAS,aAAc;AAAA;AAAA,GAI3DC,IAAcH,EAAO;AAAA,eACnB,CAAC,EAAE,OAAAC,QACV,OAAOA,KAAU,WACZ,GAAGA,IAAQ,GAAG,OAGhB,KACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUUG,IAAkBJ,EAAO;AAAA;AAAA;AAAA;AAAA,WAI3B,CAAC,EAAE,OAAAC,QAAa,OAAOA,KAAU,WAAW,GAAGA,IAAQ,GAAG,OAAOA,CAAM;AAAA,YACtE,CAAC,EAAE,OAAAA,QAAa,OAAOA,KAAU,WAAW,GAAGA,IAAQ,GAAG,OAAOA,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM/EF,CAAgB;AAAA;AAAA;AAAA,GAKPM,IAAcL,EAAO;AAAA;AAAA,kCAKA,CAAC,EAAE,UAAAM,EAAS,MAAMA,CAAQ;AAAA,SACnD,CAAC,EAAE,MAAAC,EAAK,MAAMA,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA0BdC,IAAuBR,EAAO;AAAA;AAAA,eAK5B,CAAC,EAAE,QAAAS,EAAO,MAAMA,CAAM;AAAA,gBACrB,CAAC,EAAE,SAAAC,EAAQ,MAAMA,CAAO;AAAA;"}
@@ -1,24 +0,0 @@
1
- import { jsx as m } from "react/jsx-runtime";
2
- import { memo as d } from "react";
3
- import n from "./sticker.js";
4
- import { StickerGridContainer as a, StickerGrid as f } from "./sticker-grid-styles.js";
5
- const h = ({
6
- stickers: t,
7
- columns: i = 4,
8
- gap: e = 8,
9
- stickerSize: p = 48,
10
- onStickerClick: o
11
- }) => /* @__PURE__ */ m(a, { $width: "350px", $height: "400px", children: /* @__PURE__ */ m(f, { $columns: i, $gap: e, children: t.map((r) => /* @__PURE__ */ m(
12
- n,
13
- {
14
- emoji: r.emoji,
15
- lottieUrl: r.lottieUrl,
16
- size: p,
17
- onClick: () => o == null ? void 0 : o(r)
18
- },
19
- r.id
20
- )) }) }), $ = d(h);
21
- export {
22
- $ as default
23
- };
24
- //# sourceMappingURL=sticker-grid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sticker-grid.js","sources":["../../../../src/features/ui/sticker-grid/sticker-grid.tsx"],"sourcesContent":["import type { IStickerGridProps } from './sticker-grid-types';\n\nimport React, { memo } from 'react';\n\nimport Sticker from './sticker';\nimport { StickerGrid, StickerGridContainer } from './sticker-grid-styles';\n\nconst StickerGridComponent: React.FC<IStickerGridProps> = ({\n stickers,\n columns = 4,\n gap = 8,\n stickerSize = 48,\n onStickerClick,\n}) => {\n return (\n <StickerGridContainer $width=\"350px\" $height=\"400px\">\n <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 />\n ))}\n </StickerGrid>\n </StickerGridContainer>\n );\n};\n\nexport default memo(StickerGridComponent);\n"],"names":["StickerGridComponent","stickers","columns","gap","stickerSize","onStickerClick","jsx","StickerGridContainer","StickerGrid","sticker","Sticker","stickerGrid","memo"],"mappings":";;;;AAOA,MAAMA,IAAoD,CAAC;AAAA,EACzD,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,KAAAC,IAAM;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,gBAAAC;AACF,MAEK,gBAAAC,EAAAC,GAAA,EAAqB,QAAO,SAAQ,SAAQ,SAC3C,UAAA,gBAAAD,EAACE,GAAY,EAAA,UAAUN,GAAS,MAAMC,GACnC,UAAAF,EAAS,IAAI,CACZQ,MAAA,gBAAAH;AAAA,EAACI;AAAA,EAAA;AAAA,IAEC,OAAOD,EAAQ;AAAA,IACf,WAAWA,EAAQ;AAAA,IACnB,MAAML;AAAA,IACN,SAAS,MAAMC,KAAA,gBAAAA,EAAiBI;AAAA,EAAO;AAAA,EAJlCA,EAAQ;AAAA,CAMhB,GACH,EACF,CAAA,GAIWE,IAAAC,EAAKZ,CAAoB;"}
@@ -1,57 +0,0 @@
1
- import { jsxs as p, jsx as s } from "react/jsx-runtime";
2
- import { memo as S, useState as v, useRef as L, useLayoutEffect as M, useCallback as i, useMemo as $ } from "react";
3
- import g from "../lottie-animation/lottie-animation.js";
4
- import { StickerContainer as k, StaticEmoji as E, LottieContainer as j } from "./sticker-grid-styles.js";
5
- const x = ({
6
- emoji: a,
7
- lottieUrl: c,
8
- size: t = 48,
9
- onClick: o,
10
- disabled: e = !1
11
- }) => {
12
- const [r, u] = v(!1), n = L(null);
13
- M(() => {
14
- n.current && n.current.playSegments([0, 1], !0);
15
- }, []);
16
- const f = i(() => {
17
- e || u(!0);
18
- }, [e]), m = i(() => {
19
- e || u(!1);
20
- }, [e]), l = i(() => {
21
- !e && o && o();
22
- }, [e, o]), h = $(
23
- () => ({
24
- loop: !0,
25
- renderer: "canvas",
26
- autoplay: r
27
- }),
28
- [r]
29
- );
30
- return /* @__PURE__ */ p(
31
- k,
32
- {
33
- $size: t,
34
- $disabled: e,
35
- onMouseEnter: f,
36
- onMouseLeave: m,
37
- onClick: l,
38
- children: [
39
- !r && /* @__PURE__ */ s(E, { $size: t, children: a }),
40
- c && /* @__PURE__ */ s(j, { $size: t, children: /* @__PURE__ */ s(
41
- g,
42
- {
43
- ref: n,
44
- src: c,
45
- width: "100%",
46
- height: "100%",
47
- settings: h
48
- }
49
- ) })
50
- ]
51
- }
52
- );
53
- }, d = S(x);
54
- export {
55
- d as default
56
- };
57
- //# sourceMappingURL=sticker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sticker.js","sources":["../../../../src/features/ui/sticker-grid/sticker.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../lottie-animation/types';\nimport type { IStickerProps } from './sticker-grid-types';\n\nimport React, { useCallback, useMemo, useRef, useState, memo, useLayoutEffect } from 'react';\n\nimport LottieAnimation from '../lottie-animation/lottie-animation';\nimport { StickerContainer, StaticEmoji, LottieContainer } from './sticker-grid-styles';\n\nconst Sticker: React.FC<IStickerProps> = ({\n emoji,\n lottieUrl,\n size = 48,\n onClick,\n disabled = false,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n const lottieRef = useRef<ILottieAnimationRef>(null);\n\n useLayoutEffect(() => {\n if (lottieRef.current) {\n lottieRef.current.playSegments([0, 1], true);\n }\n }, []);\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 const lottieSettings = useMemo(\n () => ({\n loop: true,\n renderer: 'canvas',\n autoplay: isHovered,\n }),\n [isHovered],\n );\n\n return (\n <StickerContainer\n $size={size}\n $disabled={disabled}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n >\n {!isHovered && <StaticEmoji $size={size}>{emoji}</StaticEmoji>}\n\n {lottieUrl && (\n <LottieContainer $size={size}>\n <LottieAnimation\n ref={lottieRef}\n src={lottieUrl}\n width=\"100%\"\n height=\"100%\"\n settings={lottieSettings}\n />\n </LottieContainer>\n )}\n </StickerContainer>\n );\n};\n\nexport default memo(Sticker);\n"],"names":["Sticker","emoji","lottieUrl","size","onClick","disabled","isHovered","setIsHovered","useState","lottieRef","useRef","useLayoutEffect","handleMouseEnter","useCallback","handleMouseLeave","handleClick","lottieSettings","useMemo","jsxs","StickerContainer","jsx","StaticEmoji","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,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1CC,IAAYC,EAA4B,IAAI;AAElD,EAAAC,EAAgB,MAAM;AACpB,IAAIF,EAAU,WACZA,EAAU,QAAQ,aAAa,CAAC,GAAG,CAAC,GAAG,EAAI;AAAA,EAE/C,GAAG,CAAE,CAAA;AAEC,QAAAG,IAAmBC,EAAY,MAAM;AACrC,IAACR,KAAUE,EAAa,EAAI;AAAA,EAAA,GAC/B,CAACF,CAAQ,CAAC,GAEPS,IAAmBD,EAAY,MAAM;AACrC,IAACR,KAAUE,EAAa,EAAK;AAAA,EAAA,GAChC,CAACF,CAAQ,CAAC,GAEPU,IAAcF,EAAY,MAAM;AAChC,IAAA,CAACR,KAAYD,KAAiBA;EAAA,GACjC,CAACC,GAAUD,CAAO,CAAC,GAEhBY,IAAiBC;AAAA,IACrB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAUX;AAAA,IAAA;AAAA,IAEZ,CAACA,CAAS;AAAA,EAAA;AAIV,SAAA,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOhB;AAAA,MACP,WAAWE;AAAA,MACX,cAAcO;AAAA,MACd,cAAcE;AAAA,MACd,SAASC;AAAA,MAER,UAAA;AAAA,QAAA,CAACT,KAAa,gBAAAc,EAACC,GAAY,EAAA,OAAOlB,GAAO,UAAMF,GAAA;AAAA,QAE/CC,KACC,gBAAAkB,EAACE,GAAgB,EAAA,OAAOnB,GACtB,UAAA,gBAAAiB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,KAAKd;AAAA,YACL,KAAKP;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,UAAUc;AAAA,UAAA;AAAA,QAAA,GAEd;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,GAEeQ,IAAAC,EAAKzB,CAAO;"}
@@ -1,6 +0,0 @@
1
- const I = 32, E = 48;
2
- export {
3
- E as STICKER_MAX_SIZE,
4
- I as STICKER_MIN_SIZE
5
- };
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/features/ui/stickers/constants.ts"],"sourcesContent":["export const STICKER_MIN_SIZE = 32;\nexport const STICKER_MAX_SIZE = 48;\n"],"names":["STICKER_MIN_SIZE","STICKER_MAX_SIZE"],"mappings":"AAAO,MAAMA,IAAmB,IACnBC,IAAmB;"}
@@ -1,64 +0,0 @@
1
- import { keyframes as r, css as t } from "styled-components";
2
- import { randomizeDuration as o } from "./stickers-utils.js";
3
- const s = r`
4
- 0% {
5
- transform: translateY(0vh);
6
- opacity: 1;
7
- }
8
- 100% {
9
- transform: translateY(-100vh);
10
- opacity: 0;
11
- }
12
- `, n = r`
13
- 0% {
14
- transform: translateY(0vh);
15
- opacity: 1;
16
- }
17
- 100% {
18
- transform: translateY(100vh);
19
- opacity: 0;
20
- }
21
- `, e = r`
22
- 0% {
23
- transform: translateX(var(--from-x)) translateY(var(--from-y)) scale(1);
24
- opacity: 1;
25
- }
26
- 100% {
27
- transform: translateX(0vw) translateY(0vh) scale(1.25);
28
- opacity: 0;
29
- }
30
- `, m = r`
31
- 0% {
32
- transform: translateX(0) translateY(0vh);
33
- opacity: 1;
34
- }
35
- 35% {
36
- transform: translateX(0) translateY(-50vh) scale(1.25);
37
- opacity: 1;
38
- }
39
- 60% {
40
- transform: translateX(var(--from-x)) translateY(var(--from-y)) scale(1.25);
41
- opacity: 0.75;
42
- }
43
- 100% {
44
- transform: translateX(var(--from-x)) translateY(-110vh) scale(1.25);
45
- opacity: 0;
46
- }
47
- `, i = {
48
- float_up: (a) => t`
49
- animation: ${s} ${o(a)}ms ease-out forwards;
50
- `,
51
- fall_down: (a) => t`
52
- animation: ${n} ${o(a)}ms ease-out forwards;
53
- `,
54
- burst_from_edges: (a) => t`
55
- animation: ${e} ${o(a)}ms linear forwards;
56
- `,
57
- pop_expand: (a) => t`
58
- animation: ${m} ${a}ms cubic-bezier(0.5, 0.1, 0.7, 1) forwards;
59
- `
60
- };
61
- export {
62
- i as effectAnimations
63
- };
64
- //# sourceMappingURL=stickers-effects.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stickers-effects.js","sources":["../../../../src/features/ui/stickers/stickers-effects.ts"],"sourcesContent":["import type { StickersProps } from './stickers-types';\n\nimport { keyframes, css } from 'styled-components';\n\nimport { randomizeDuration } from './stickers-utils';\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 StickersProps['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,UAAU,CAACC,MAAqBC;AAAA,iBACjBP,CAAO,IAAIQ,EAAkBF,CAAQ,CAAC;AAAA;AAAA,EAErD,WAAW,CAACA,MAAqBC;AAAA,iBAClBL,CAAQ,IAAIM,EAAkBF,CAAQ,CAAC;AAAA;AAAA,EAEtD,kBAAkB,CAACA,MAAqBC;AAAA,iBACzBJ,CAAc,IAAIK,EAAkBF,CAAQ,CAAC;AAAA;AAAA,EAE5D,YAAY,CAACA,MAAqBC;AAAA,iBACnBH,CAAS,IAAIE,CAAQ;AAAA;AAEtC;"}