@cuemath/leap 3.1.5 → 3.1.6-j1

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 (192) hide show
  1. package/dist/assets/illustrations/illustrations.js +1 -2
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/lib/lib.js +1 -1
  4. package/dist/assets/lib/lib.js.map +1 -1
  5. package/dist/assets/line-icons/icons/check.js +3 -3
  6. package/dist/assets/line-icons/icons/check.js.map +1 -1
  7. package/dist/features/auth/account-selector/account-selector-styled.js +9 -0
  8. package/dist/features/auth/account-selector/account-selector-styled.js.map +1 -0
  9. package/dist/features/auth/account-selector/account-selector.js +57 -33
  10. package/dist/features/auth/account-selector/account-selector.js.map +1 -1
  11. package/dist/features/auth/comps/auth-page-layout/auth-page-layout-styled.js +21 -0
  12. package/dist/features/auth/comps/auth-page-layout/auth-page-layout-styled.js.map +1 -0
  13. package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js +8 -9
  14. package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js.map +1 -1
  15. package/dist/features/auth/comps/auth-static-panel/auth-static-panel.js +1 -1
  16. package/dist/features/auth/comps/auth-static-panel/auth-static-panel.js.map +1 -1
  17. package/dist/features/auth/forgot-password/forgot-password-styled.js +15 -3
  18. package/dist/features/auth/forgot-password/forgot-password-styled.js.map +1 -1
  19. package/dist/features/auth/forgot-password/otp-form/otp-form.js +29 -29
  20. package/dist/features/auth/forgot-password/otp-form/otp-form.js.map +1 -1
  21. package/dist/features/auth/forgot-password/reset-password-form/reset-password-form.js +14 -18
  22. package/dist/features/auth/forgot-password/reset-password-form/reset-password-form.js.map +1 -1
  23. package/dist/features/auth/forgot-password/user-identifier-form/user-identifier-form.js +23 -24
  24. package/dist/features/auth/forgot-password/user-identifier-form/user-identifier-form.js.map +1 -1
  25. package/dist/features/auth/login/identifier-otp-form/identifier-otp-form-styled.js +4 -2
  26. package/dist/features/auth/login/identifier-otp-form/identifier-otp-form-styled.js.map +1 -1
  27. package/dist/features/auth/login/identifier-otp-form/identifier-otp-form.js +85 -75
  28. package/dist/features/auth/login/identifier-otp-form/identifier-otp-form.js.map +1 -1
  29. package/dist/features/auth/login/login-styled.js +13 -0
  30. package/dist/features/auth/login/login-styled.js.map +1 -0
  31. package/dist/features/auth/login/social-account-not-found/social-account-not-found.js +27 -21
  32. package/dist/features/auth/login/social-account-not-found/social-account-not-found.js.map +1 -1
  33. package/dist/features/auth/login/social-login-methods/social-login-methods-styled.js +9 -0
  34. package/dist/features/auth/login/social-login-methods/social-login-methods-styled.js.map +1 -0
  35. package/dist/features/auth/login/social-login-methods/social-login-methods.js +43 -34
  36. package/dist/features/auth/login/social-login-methods/social-login-methods.js.map +1 -1
  37. package/dist/features/auth/login/username-password-form/username-password-form.js +22 -21
  38. package/dist/features/auth/login/username-password-form/username-password-form.js.map +1 -1
  39. package/dist/features/auth/user-list/user-item/user-item.js +33 -32
  40. package/dist/features/auth/user-list/user-item/user-item.js.map +1 -1
  41. package/dist/features/auth/user-list/user-list.js +60 -51
  42. package/dist/features/auth/user-list/user-list.js.map +1 -1
  43. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +74 -74
  44. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
  45. package/dist/features/cue-canvas/constants/constants.js +3 -33
  46. package/dist/features/cue-canvas/constants/constants.js.map +1 -1
  47. package/dist/features/cue-canvas/cue-canvas-context.js +5 -8
  48. package/dist/features/cue-canvas/cue-canvas-context.js.map +1 -1
  49. package/dist/features/cue-canvas/cue-canvas-core.js +112 -133
  50. package/dist/features/cue-canvas/cue-canvas-core.js.map +1 -1
  51. package/dist/features/cue-canvas/cue-canvas-helpers.js +38 -48
  52. package/dist/features/cue-canvas/cue-canvas-helpers.js.map +1 -1
  53. package/dist/features/cue-canvas/cue-canvas-provider.js +21 -21
  54. package/dist/features/cue-canvas/cue-canvas-provider.js.map +1 -1
  55. package/dist/features/cue-canvas/cue-canvas.js +59 -66
  56. package/dist/features/cue-canvas/cue-canvas.js.map +1 -1
  57. package/dist/features/cue-canvas/cue-cavas-styled.js +47 -48
  58. package/dist/features/cue-canvas/cue-cavas-styled.js.map +1 -1
  59. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js +44 -47
  60. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js.map +1 -1
  61. package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js +14 -18
  62. package/dist/features/cue-canvas/hooks/use-cue-canvas-actions.js.map +1 -1
  63. package/dist/features/cue-canvas/toolbar/color-palette.js +33 -42
  64. package/dist/features/cue-canvas/toolbar/color-palette.js.map +1 -1
  65. package/dist/features/cue-canvas/toolbar/color-picker-menu.js +25 -28
  66. package/dist/features/cue-canvas/toolbar/color-picker-menu.js.map +1 -1
  67. package/dist/features/cue-canvas/toolbar/grid-menu.js +13 -13
  68. package/dist/features/cue-canvas/toolbar/grid-menu.js.map +1 -1
  69. package/dist/features/cue-canvas/toolbar/pen-tool-menu.js +35 -24
  70. package/dist/features/cue-canvas/toolbar/pen-tool-menu.js.map +1 -1
  71. package/dist/features/cue-canvas/toolbar/tool.js +20 -22
  72. package/dist/features/cue-canvas/toolbar/tool.js.map +1 -1
  73. package/dist/features/cue-canvas/toolbar/toolbar.js +18 -17
  74. package/dist/features/cue-canvas/toolbar/toolbar.js.map +1 -1
  75. package/dist/features/cue-canvas/toolbar/whiteboard-toolbar.js +11 -13
  76. package/dist/features/cue-canvas/toolbar/whiteboard-toolbar.js.map +1 -1
  77. package/dist/features/homework/hw-card-list/api/get-homeworks.js +1 -1
  78. package/dist/features/homework/hw-card-list/api/get-homeworks.js.map +1 -1
  79. package/dist/features/homework/hw-card-list/hw-card-list-view.js +112 -144
  80. package/dist/features/homework/hw-card-list/hw-card-list-view.js.map +1 -1
  81. package/dist/features/homework/styles.js +4 -5
  82. package/dist/features/homework/styles.js.map +1 -1
  83. package/dist/features/hooks/use-viewport.js +21 -0
  84. package/dist/features/hooks/use-viewport.js.map +1 -0
  85. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js +262 -199
  86. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js.map +1 -1
  87. package/dist/features/journey/hooks/use-home-page-journey/use-home-page-journey.js +15 -15
  88. package/dist/features/journey/hooks/use-home-page-journey/use-home-page-journey.js.map +1 -1
  89. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +36 -38
  90. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  91. package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js +22 -24
  92. package/dist/features/milestone/create/comps/add-custom-chapter/hooks/use-catalog-helpers.js.map +1 -1
  93. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js +22 -23
  94. package/dist/features/milestone/create/comps/chapters-selection-step/chapter-selection-step-v2/chapter-category/chapter-category-container.js.map +1 -1
  95. package/dist/features/milestone/create/comps/chapters-selection-step/utils.js +47 -49
  96. package/dist/features/milestone/create/comps/chapters-selection-step/utils.js.map +1 -1
  97. package/dist/features/milestone/create/comps/class-details-step/class-details-step.js +87 -94
  98. package/dist/features/milestone/create/comps/class-details-step/class-details-step.js.map +1 -1
  99. package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js +12 -13
  100. package/dist/features/milestone/create/comps/class-details-step/class-details-utils.js.map +1 -1
  101. package/dist/features/milestone/create/comps/test-type-step/test-type-step.js +21 -23
  102. package/dist/features/milestone/create/comps/test-type-step/test-type-step.js.map +1 -1
  103. package/dist/features/milestone/create/milestone-create-helpers.js +162 -165
  104. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  105. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js +47 -48
  106. package/dist/features/milestone/edit/comps/edit-milestone-modal/index.js.map +1 -1
  107. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +121 -100
  108. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  109. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js +14 -15
  110. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget-styled.js.map +1 -1
  111. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +51 -52
  112. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  113. package/dist/features/trial-session/comps/pricing/pricing.js +35 -36
  114. package/dist/features/trial-session/comps/pricing/pricing.js.map +1 -1
  115. package/dist/features/ui/buttons/button/button-styled.js +29 -29
  116. package/dist/features/ui/buttons/button/button-styled.js.map +1 -1
  117. package/dist/features/ui/stepper/stepper.js +7 -7
  118. package/dist/features/utils/media.js +16 -0
  119. package/dist/features/utils/media.js.map +1 -0
  120. package/dist/features/worksheet/worksheet/hooks/use-s3-helper.js +19 -22
  121. package/dist/features/worksheet/worksheet/hooks/use-s3-helper.js.map +1 -1
  122. package/dist/features/worksheet/worksheet/worksheet-container.js +26 -26
  123. package/dist/features/worksheet/worksheet/worksheet-container.js.map +1 -1
  124. package/dist/index.d.ts +35 -93
  125. package/dist/index.js +321 -323
  126. package/dist/index.js.map +1 -1
  127. package/dist/static/cuemath-app-qr-code.7205ee79.svg +1 -0
  128. package/dist/static/lib/{polypad-4.5.4.v1.js → polypad-4.5.4.js} +1 -8
  129. package/package.json +1 -1
  130. package/dist/assets/line-icons/icons/puzzle-icon.js +0 -51
  131. package/dist/assets/line-icons/icons/puzzle-icon.js.map +0 -1
  132. package/dist/assets/line-icons/icons/share.js +0 -48
  133. package/dist/assets/line-icons/icons/share.js.map +0 -1
  134. package/dist/assets/line-icons/icons/tile.js +0 -54
  135. package/dist/assets/line-icons/icons/tile.js.map +0 -1
  136. package/dist/features/auth/comps/auth-page-layout/auth-page-layout-styles.js +0 -12
  137. package/dist/features/auth/comps/auth-page-layout/auth-page-layout-styles.js.map +0 -1
  138. package/dist/features/cue-canvas/bottombar/homework-controls.js +0 -73
  139. package/dist/features/cue-canvas/bottombar/homework-controls.js.map +0 -1
  140. package/dist/features/cue-canvas/hooks/use-config-updater.js +0 -12
  141. package/dist/features/cue-canvas/hooks/use-config-updater.js.map +0 -1
  142. package/dist/features/cue-canvas/hooks/use-upload-helper.js +0 -23
  143. package/dist/features/cue-canvas/hooks/use-upload-helper.js.map +0 -1
  144. package/dist/features/cue-canvas/sidebar/homework/helper.js +0 -20
  145. package/dist/features/cue-canvas/sidebar/homework/helper.js.map +0 -1
  146. package/dist/features/cue-canvas/sidebar/homework/homework-menu.js +0 -33
  147. package/dist/features/cue-canvas/sidebar/homework/homework-menu.js.map +0 -1
  148. package/dist/features/cue-canvas/sidebar/homework/homework-request.js +0 -68
  149. package/dist/features/cue-canvas/sidebar/homework/homework-request.js.map +0 -1
  150. package/dist/features/cue-canvas/sidebar/homework/homework-styled.js +0 -25
  151. package/dist/features/cue-canvas/sidebar/homework/homework-styled.js.map +0 -1
  152. package/dist/features/cue-canvas/sidebar/homework/homework.js +0 -39
  153. package/dist/features/cue-canvas/sidebar/homework/homework.js.map +0 -1
  154. package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js +0 -13
  155. package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +0 -1
  156. package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js +0 -60
  157. package/dist/features/cue-canvas/sidebar/puzzles/filter-selection-menu.js.map +0 -1
  158. package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js +0 -44
  159. package/dist/features/cue-canvas/sidebar/puzzles/filters-section.js.map +0 -1
  160. package/dist/features/cue-canvas/sidebar/puzzles/filters.js +0 -107
  161. package/dist/features/cue-canvas/sidebar/puzzles/filters.js.map +0 -1
  162. package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js +0 -42
  163. package/dist/features/cue-canvas/sidebar/puzzles/hooks/use-fetch-cue-canvas-activity.js.map +0 -1
  164. package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js +0 -84
  165. package/dist/features/cue-canvas/sidebar/puzzles/launch-puzzle.js.map +0 -1
  166. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js +0 -36
  167. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu-header.js.map +0 -1
  168. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js +0 -133
  169. package/dist/features/cue-canvas/sidebar/puzzles/puzzle-menu.js.map +0 -1
  170. package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js +0 -96
  171. package/dist/features/cue-canvas/sidebar/puzzles/puzzles-styled.js.map +0 -1
  172. package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js +0 -29
  173. package/dist/features/cue-canvas/sidebar/puzzles/puzzles.js.map +0 -1
  174. package/dist/features/cue-canvas/sidebar/puzzles/utils.js +0 -120
  175. package/dist/features/cue-canvas/sidebar/puzzles/utils.js.map +0 -1
  176. package/dist/features/cue-canvas/sidebar/sidebar-styled.js +0 -32
  177. package/dist/features/cue-canvas/sidebar/sidebar-styled.js.map +0 -1
  178. package/dist/features/cue-canvas/sidebar/sidebar.js +0 -29
  179. package/dist/features/cue-canvas/sidebar/sidebar.js.map +0 -1
  180. package/dist/features/cue-canvas/sidebar/tiles/tile.js +0 -16
  181. package/dist/features/cue-canvas/sidebar/tiles/tile.js.map +0 -1
  182. package/dist/features/homework/hw-card-list/hw-card-list-utils.js +0 -8
  183. package/dist/features/homework/hw-card-list/hw-card-list-utils.js.map +0 -1
  184. package/dist/features/hooks/use-debounce.js +0 -16
  185. package/dist/features/hooks/use-debounce.js.map +0 -1
  186. package/dist/features/milestone/milestone-list-container/api/get-past-milestone-count.js +0 -18
  187. package/dist/features/milestone/milestone-list-container/api/get-past-milestone-count.js.map +0 -1
  188. package/dist/features/trial-session/comps/pricing/india-pricing/index.js +0 -96
  189. package/dist/features/trial-session/comps/pricing/india-pricing/index.js.map +0 -1
  190. package/dist/features/trial-session/comps/pricing/india-pricing/india-pricing-styled.js +0 -59
  191. package/dist/features/trial-session/comps/pricing/india-pricing/india-pricing-styled.js.map +0 -1
  192. package/dist/static/ellipse-clip.dfb25608.svg +0 -1
@@ -1,12 +1,13 @@
1
1
  import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
2
  import { memo as f, useCallback as l } from "react";
3
3
  import w from "../../../ui/buttons/button/button.js";
4
- import $ from "../../../ui/buttons/text-button/text-button.js";
4
+ import C from "../../../ui/buttons/text-button/text-button.js";
5
5
  import u from "../../../ui/inputs/text-input/text-input.js";
6
6
  import s from "../../../ui/layout/flex-view.js";
7
- import a from "../../../ui/separator/separator.js";
8
- import y from "../../comps/input-status-icon/input-status-icon.js";
9
- const C = ({
7
+ import o from "../../../ui/separator/separator.js";
8
+ import $ from "../../comps/input-status-icon/input-status-icon.js";
9
+ import { FormContainer as y } from "../login-styled.js";
10
+ const k = ({
10
11
  username: i,
11
12
  password: m,
12
13
  errors: r,
@@ -16,28 +17,28 @@ const C = ({
16
17
  onForgotPassword: h
17
18
  }) => {
18
19
  const c = d || !i.trim() || !m.trim(), g = l(
19
- (o) => {
20
- t("username", o.target.value);
20
+ (a) => {
21
+ t("username", a.target.value);
21
22
  },
22
23
  [t]
23
24
  ), b = l(
24
- (o) => {
25
- t("password", o.target.value);
25
+ (a) => {
26
+ t("password", a.target.value);
26
27
  },
27
28
  [t]
28
29
  );
29
30
  return /* @__PURE__ */ n(
30
31
  s,
31
32
  {
32
- $gutterX: 2,
33
+ $gutterX: 1.5,
33
34
  $gapX: 1.5,
34
35
  $alignItems: "center",
35
36
  $justifyContent: "center",
36
37
  $background: "BLACK_2",
37
38
  $height: 308,
38
39
  children: [
39
- /* @__PURE__ */ e(a, { heightX: 0.5 }),
40
- /* @__PURE__ */ n("form", { onSubmit: p, children: [
40
+ /* @__PURE__ */ e(o, { heightX: 0.5 }),
41
+ /* @__PURE__ */ n(y, { onSubmit: p, children: [
41
42
  /* @__PURE__ */ n(s, { $alignItems: "center", $justifyContent: "center", children: [
42
43
  /* @__PURE__ */ e(
43
44
  u,
@@ -47,14 +48,14 @@ const C = ({
47
48
  autoComplete: "username",
48
49
  label: "Username",
49
50
  value: i,
51
+ width: "100%",
50
52
  onChange: g,
51
- width: 330,
52
53
  required: !0,
53
54
  shape: "borderLess",
54
55
  errorMessage: r.username
55
56
  }
56
57
  ),
57
- /* @__PURE__ */ e(a, { height: 36 }),
58
+ /* @__PURE__ */ e(o, { height: 36 }),
58
59
  /* @__PURE__ */ e(
59
60
  u,
60
61
  {
@@ -63,18 +64,18 @@ const C = ({
63
64
  autoComplete: "password",
64
65
  label: "Password",
65
66
  value: m,
67
+ width: "100%",
66
68
  onChange: b,
67
- width: 330,
68
69
  required: !0,
69
70
  shape: "borderLess",
70
71
  errorMessage: r.password,
71
- siblingElement: /* @__PURE__ */ e(y, { isError: !!r.password })
72
+ siblingElement: /* @__PURE__ */ e($, { isError: !!r.password })
72
73
  }
73
74
  )
74
75
  ] }),
75
- /* @__PURE__ */ e(a, { heightX: 1.25 }),
76
- /* @__PURE__ */ e(s, { $alignItems: "flex-end", children: /* @__PURE__ */ e($, { label: "Forgot Password?", onClick: h, color: "WHITE_T_60" }) }),
77
- /* @__PURE__ */ e(a, { heightX: 2 }),
76
+ /* @__PURE__ */ e(o, { heightX: 1.25 }),
77
+ /* @__PURE__ */ e(s, { $alignItems: "flex-end", children: /* @__PURE__ */ e(C, { label: "Forgot Password?", onClick: h, color: "WHITE_T_60" }) }),
78
+ /* @__PURE__ */ e(o, { heightX: 2 }),
78
79
  /* @__PURE__ */ e(s, { $justifyContent: "center", children: /* @__PURE__ */ e(
79
80
  w,
80
81
  {
@@ -82,7 +83,7 @@ const C = ({
82
83
  renderAs: "secondary-dark",
83
84
  type: "submit",
84
85
  label: "Log in",
85
- width: 336,
86
+ width: "100%",
86
87
  busy: d,
87
88
  disabled: c
88
89
  }
@@ -91,8 +92,8 @@ const C = ({
91
92
  ]
92
93
  }
93
94
  );
94
- }, A = f(C);
95
+ }, B = f(k);
95
96
  export {
96
- A as default
97
+ B as default
97
98
  };
98
99
  //# sourceMappingURL=username-password-form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"username-password-form.js","sources":["../../../../../src/features/auth/login/username-password-form/username-password-form.tsx"],"sourcesContent":["import type { IUsernamePasswordFormProps } from './username-password-form-types';\n\nimport { type ChangeEvent, type FC, memo, useCallback } from 'react';\n\nimport Button from '../../../ui/buttons/button/button';\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport TextInput from '../../../ui/inputs/text-input/text-input';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport InputStatusIcon from '../../comps/input-status-icon/input-status-icon';\n\nconst UsernamePasswordForm: FC<IUsernamePasswordFormProps> = ({\n username,\n password,\n errors,\n isLoading,\n onChange,\n onSubmit,\n onForgotPassword,\n}) => {\n const isSubmitDisabled = isLoading || !username.trim() || !password.trim();\n\n const handleUsernameChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n onChange('username', e.target.value);\n },\n [onChange],\n );\n\n const handlePasswordChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n onChange('password', e.target.value);\n },\n [onChange],\n );\n\n return (\n <FlexView\n $gutterX={2}\n $gapX={1.5}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $background=\"BLACK_2\"\n $height={308}\n >\n <Separator heightX={0.5} />\n <form onSubmit={onSubmit}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\">\n <TextInput\n renderAs={errors.username ? 'error-dark' : 'primary-dark'}\n autoFocus\n autoComplete=\"username\"\n label=\"Username\"\n value={username}\n onChange={handleUsernameChange}\n width={330}\n required\n shape=\"borderLess\"\n errorMessage={errors.username}\n />\n <Separator height={36} />\n <TextInput\n type=\"password\"\n renderAs={errors.password ? 'error-dark' : 'primary-dark'}\n autoComplete=\"password\"\n label=\"Password\"\n value={password}\n onChange={handlePasswordChange}\n width={330}\n required\n shape=\"borderLess\"\n errorMessage={errors.password}\n siblingElement={<InputStatusIcon isError={!!errors.password} />}\n />\n </FlexView>\n <Separator heightX={1.25} />\n <FlexView $alignItems=\"flex-end\">\n <TextButton label=\"Forgot Password?\" onClick={onForgotPassword} color=\"WHITE_T_60\" />\n </FlexView>\n <Separator heightX={2} />\n <FlexView $justifyContent=\"center\">\n <Button\n size=\"small\"\n renderAs=\"secondary-dark\"\n type=\"submit\"\n label=\"Log in\"\n width={336}\n busy={isLoading}\n disabled={isSubmitDisabled}\n />\n </FlexView>\n </form>\n </FlexView>\n );\n};\n\nexport default memo(UsernamePasswordForm);\n"],"names":["UsernamePasswordForm","username","password","errors","isLoading","onChange","onSubmit","onForgotPassword","isSubmitDisabled","handleUsernameChange","useCallback","e","handlePasswordChange","jsxs","FlexView","jsx","Separator","TextInput","InputStatusIcon","TextButton","Button","usernamePasswordForm","memo"],"mappings":";;;;;;;;AAWA,MAAMA,IAAuD,CAAC;AAAA,EAC5D,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,kBAAAC;AACF,MAAM;AACE,QAAAC,IAAmBJ,KAAa,CAACH,EAAS,UAAU,CAACC,EAAS,QAE9DO,IAAuBC;AAAA,IAC3B,CAACC,MAAqC;AAC3B,MAAAN,EAAA,YAAYM,EAAE,OAAO,KAAK;AAAA,IACrC;AAAA,IACA,CAACN,CAAQ;AAAA,EAAA,GAGLO,IAAuBF;AAAA,IAC3B,CAACC,MAAqC;AAC3B,MAAAN,EAAA,YAAYM,EAAE,OAAO,KAAK;AAAA,IACrC;AAAA,IACA,CAACN,CAAQ;AAAA,EAAA;AAIT,SAAA,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,OAAO;AAAA,MACP,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,aAAY;AAAA,MACZ,SAAS;AAAA,MAET,UAAA;AAAA,QAAC,gBAAAC,EAAAC,GAAA,EAAU,SAAS,IAAK,CAAA;AAAA,QACzB,gBAAAH,EAAC,UAAK,UAAAP,GACJ,UAAA;AAAA,UAAA,gBAAAO,EAACC,GAAS,EAAA,aAAY,UAAS,iBAAgB,UAC7C,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAACE;AAAA,cAAA;AAAA,gBACC,UAAUd,EAAO,WAAW,eAAe;AAAA,gBAC3C,WAAS;AAAA,gBACT,cAAa;AAAA,gBACb,OAAM;AAAA,gBACN,OAAOF;AAAA,gBACP,UAAUQ;AAAA,gBACV,OAAO;AAAA,gBACP,UAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,cAAcN,EAAO;AAAA,cAAA;AAAA,YACvB;AAAA,YACA,gBAAAY,EAACC,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,YACvB,gBAAAD;AAAA,cAACE;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,UAAUd,EAAO,WAAW,eAAe;AAAA,gBAC3C,cAAa;AAAA,gBACb,OAAM;AAAA,gBACN,OAAOD;AAAA,gBACP,UAAUU;AAAA,gBACV,OAAO;AAAA,gBACP,UAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,cAAcT,EAAO;AAAA,gBACrB,gBAAiB,gBAAAY,EAAAG,GAAA,EAAgB,SAAS,CAAC,CAACf,EAAO,UAAU;AAAA,cAAA;AAAA,YAC/D;AAAA,UAAA,GACF;AAAA,UACA,gBAAAY,EAACC,GAAU,EAAA,SAAS,KAAM,CAAA;AAAA,UACzB,gBAAAD,EAAAD,GAAA,EAAS,aAAY,YACpB,UAAC,gBAAAC,EAAAI,GAAA,EAAW,OAAM,oBAAmB,SAASZ,GAAkB,OAAM,aAAa,CAAA,GACrF;AAAA,UACA,gBAAAQ,EAACC,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,UACvB,gBAAAD,EAACD,GAAS,EAAA,iBAAgB,UACxB,UAAA,gBAAAC;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,UAAS;AAAA,cACT,MAAK;AAAA,cACL,OAAM;AAAA,cACN,OAAO;AAAA,cACP,MAAMhB;AAAA,cACN,UAAUI;AAAA,YAAA;AAAA,UAAA,GAEd;AAAA,QAAA,GACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEea,IAAAC,EAAKtB,CAAoB;"}
1
+ {"version":3,"file":"username-password-form.js","sources":["../../../../../src/features/auth/login/username-password-form/username-password-form.tsx"],"sourcesContent":["import type { IUsernamePasswordFormProps } from './username-password-form-types';\n\nimport { type ChangeEvent, type FC, memo, useCallback } from 'react';\n\nimport Button from '../../../ui/buttons/button/button';\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport TextInput from '../../../ui/inputs/text-input/text-input';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport InputStatusIcon from '../../comps/input-status-icon/input-status-icon';\nimport * as Styled from '../login-styled';\n\nconst UsernamePasswordForm: FC<IUsernamePasswordFormProps> = ({\n username,\n password,\n errors,\n isLoading,\n onChange,\n onSubmit,\n onForgotPassword,\n}) => {\n const isSubmitDisabled = isLoading || !username.trim() || !password.trim();\n\n const handleUsernameChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n onChange('username', e.target.value);\n },\n [onChange],\n );\n\n const handlePasswordChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n onChange('password', e.target.value);\n },\n [onChange],\n );\n\n return (\n <FlexView\n $gutterX={1.5}\n $gapX={1.5}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $background=\"BLACK_2\"\n $height={308}\n >\n <Separator heightX={0.5} />\n <Styled.FormContainer onSubmit={onSubmit}>\n <FlexView $alignItems=\"center\" $justifyContent=\"center\">\n <TextInput\n renderAs={errors.username ? 'error-dark' : 'primary-dark'}\n autoFocus\n autoComplete=\"username\"\n label=\"Username\"\n value={username}\n width=\"100%\"\n onChange={handleUsernameChange}\n required\n shape=\"borderLess\"\n errorMessage={errors.username}\n />\n <Separator height={36} />\n <TextInput\n type=\"password\"\n renderAs={errors.password ? 'error-dark' : 'primary-dark'}\n autoComplete=\"password\"\n label=\"Password\"\n value={password}\n width=\"100%\"\n onChange={handlePasswordChange}\n required\n shape=\"borderLess\"\n errorMessage={errors.password}\n siblingElement={<InputStatusIcon isError={!!errors.password} />}\n />\n </FlexView>\n <Separator heightX={1.25} />\n <FlexView $alignItems=\"flex-end\">\n <TextButton label=\"Forgot Password?\" onClick={onForgotPassword} color=\"WHITE_T_60\" />\n </FlexView>\n <Separator heightX={2} />\n <FlexView $justifyContent=\"center\">\n <Button\n size=\"small\"\n renderAs=\"secondary-dark\"\n type=\"submit\"\n label=\"Log in\"\n width=\"100%\"\n busy={isLoading}\n disabled={isSubmitDisabled}\n />\n </FlexView>\n </Styled.FormContainer>\n </FlexView>\n );\n};\n\nexport default memo(UsernamePasswordForm);\n"],"names":["UsernamePasswordForm","username","password","errors","isLoading","onChange","onSubmit","onForgotPassword","isSubmitDisabled","handleUsernameChange","useCallback","e","handlePasswordChange","jsxs","FlexView","jsx","Separator","Styled.FormContainer","TextInput","InputStatusIcon","TextButton","Button","usernamePasswordForm","memo"],"mappings":";;;;;;;;;AAYA,MAAMA,IAAuD,CAAC;AAAA,EAC5D,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,kBAAAC;AACF,MAAM;AACE,QAAAC,IAAmBJ,KAAa,CAACH,EAAS,UAAU,CAACC,EAAS,QAE9DO,IAAuBC;AAAA,IAC3B,CAACC,MAAqC;AAC3B,MAAAN,EAAA,YAAYM,EAAE,OAAO,KAAK;AAAA,IACrC;AAAA,IACA,CAACN,CAAQ;AAAA,EAAA,GAGLO,IAAuBF;AAAA,IAC3B,CAACC,MAAqC;AAC3B,MAAAN,EAAA,YAAYM,EAAE,OAAO,KAAK;AAAA,IACrC;AAAA,IACA,CAACN,CAAQ;AAAA,EAAA;AAIT,SAAA,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,OAAO;AAAA,MACP,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,aAAY;AAAA,MACZ,SAAS;AAAA,MAET,UAAA;AAAA,QAAC,gBAAAC,EAAAC,GAAA,EAAU,SAAS,IAAK,CAAA;AAAA,QACxB,gBAAAH,EAAAI,GAAA,EAAqB,UAAAX,GACpB,UAAA;AAAA,UAAA,gBAAAO,EAACC,GAAS,EAAA,aAAY,UAAS,iBAAgB,UAC7C,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAACG;AAAA,cAAA;AAAA,gBACC,UAAUf,EAAO,WAAW,eAAe;AAAA,gBAC3C,WAAS;AAAA,gBACT,cAAa;AAAA,gBACb,OAAM;AAAA,gBACN,OAAOF;AAAA,gBACP,OAAM;AAAA,gBACN,UAAUQ;AAAA,gBACV,UAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,cAAcN,EAAO;AAAA,cAAA;AAAA,YACvB;AAAA,YACA,gBAAAY,EAACC,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,YACvB,gBAAAD;AAAA,cAACG;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,UAAUf,EAAO,WAAW,eAAe;AAAA,gBAC3C,cAAa;AAAA,gBACb,OAAM;AAAA,gBACN,OAAOD;AAAA,gBACP,OAAM;AAAA,gBACN,UAAUU;AAAA,gBACV,UAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,cAAcT,EAAO;AAAA,gBACrB,gBAAiB,gBAAAY,EAAAI,GAAA,EAAgB,SAAS,CAAC,CAAChB,EAAO,UAAU;AAAA,cAAA;AAAA,YAC/D;AAAA,UAAA,GACF;AAAA,UACA,gBAAAY,EAACC,GAAU,EAAA,SAAS,KAAM,CAAA;AAAA,UACzB,gBAAAD,EAAAD,GAAA,EAAS,aAAY,YACpB,UAAC,gBAAAC,EAAAK,GAAA,EAAW,OAAM,oBAAmB,SAASb,GAAkB,OAAM,aAAa,CAAA,GACrF;AAAA,UACA,gBAAAQ,EAACC,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,UACvB,gBAAAD,EAACD,GAAS,EAAA,iBAAgB,UACxB,UAAA,gBAAAC;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,UAAS;AAAA,cACT,MAAK;AAAA,cACL,OAAM;AAAA,cACN,OAAM;AAAA,cACN,MAAMjB;AAAA,cACN,UAAUI;AAAA,YAAA;AAAA,UAAA,GAEd;AAAA,QAAA,GACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEec,IAAAC,EAAKvB,CAAoB;"}
@@ -1,49 +1,50 @@
1
- import { jsxs as h, jsx as t } from "react/jsx-runtime";
2
- import { memo as g, useCallback as u } from "react";
3
- import A from "../../../ui/avatar/avatar.js";
4
- import C from "../../../ui/separator/separator.js";
5
- import I from "../../../ui/text/text.js";
6
- import { AVATAR_CONFIGURATIONS as m } from "../user-list-constants.js";
7
- import { UserItemCard as d } from "./user-item-styled.js";
8
- const k = ({
1
+ import { jsxs as g, jsx as t } from "react/jsx-runtime";
2
+ import { memo as u, useCallback as C } from "react";
3
+ import A from "../../../hooks/use-viewport.js";
4
+ import I from "../../../ui/avatar/avatar.js";
5
+ import b from "../../../ui/separator/separator.js";
6
+ import d from "../../../ui/text/text.js";
7
+ import { AVATAR_CONFIGURATIONS as a } from "../user-list-constants.js";
8
+ import { UserItemCard as k } from "./user-item-styled.js";
9
+ const T = ({
9
10
  id: r,
10
- phone: n,
11
- username: s,
11
+ phone: s,
12
+ username: n,
12
13
  avatar: i,
13
- index: e,
14
+ index: o,
14
15
  isLastItem: c,
15
- onSelect: o,
16
- avatarSize: l,
17
- maxColumns: $,
18
- cardSize: a
16
+ onSelect: e,
17
+ avatarSize: p,
18
+ maxColumns: l,
19
+ cardSize: m
19
20
  }) => {
20
- const p = u(() => {
21
- o(r);
22
- }, [r, o]), f = i ?? m[e % m.length];
23
- return /* @__PURE__ */ h(
24
- d,
21
+ const { isCompact: $ } = A(), f = C(() => {
22
+ e(r);
23
+ }, [r, e]), h = i ?? a[o % a.length];
24
+ return /* @__PURE__ */ g(
25
+ k,
25
26
  {
26
- onClick: p,
27
- maxColumns: $,
28
- $gutterX: 2,
29
- $gapX: 2.81,
30
- $width: a,
31
- $height: a,
27
+ onClick: f,
28
+ maxColumns: l,
29
+ $gutterX: 1.5,
30
+ $gapX: 1.5,
31
+ $width: m,
32
+ $height: m,
32
33
  $alignItems: "center",
33
34
  $justifyContent: "center",
34
- index: e,
35
+ index: o,
35
36
  isLastItem: c,
36
37
  $background: "BLACK_1",
37
38
  children: [
38
- /* @__PURE__ */ t(A, { size: l, avatar: f }),
39
- /* @__PURE__ */ t(C, { heightX: 0.5 }),
40
- /* @__PURE__ */ t(I, { $color: "WHITE", $renderAs: "ab2", $align: "center", children: s || n })
39
+ /* @__PURE__ */ t(I, { size: p, avatar: h }),
40
+ /* @__PURE__ */ t(b, { heightX: 0.5 }),
41
+ /* @__PURE__ */ t(d, { $color: "WHITE", $renderAs: $ ? "ab3" : "ab2", $align: "center", children: n || s })
41
42
  ]
42
43
  },
43
44
  r
44
45
  );
45
- }, N = g(k);
46
+ }, R = u(T);
46
47
  export {
47
- N as default
48
+ R as default
48
49
  };
49
50
  //# sourceMappingURL=user-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-item.js","sources":["../../../../../src/features/auth/user-list/user-item/user-item.tsx"],"sourcesContent":["import type { IUserItemProps } from './user-item-types';\n\nimport { useCallback, type FC, memo } from 'react';\n\nimport Avatar from '../../../ui/avatar/avatar';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { AVATAR_CONFIGURATIONS } from '../user-list-constants';\nimport * as Styled from './user-item-styled';\n\nconst UserItem: FC<IUserItemProps> = ({\n id,\n phone,\n username,\n avatar,\n index,\n isLastItem,\n onSelect,\n avatarSize,\n maxColumns,\n cardSize,\n}) => {\n const handleClick = useCallback(() => {\n onSelect(id);\n }, [id, onSelect]);\n\n const avatarSource = avatar ?? AVATAR_CONFIGURATIONS[index % AVATAR_CONFIGURATIONS.length];\n\n return (\n <Styled.UserItemCard\n key={id}\n onClick={handleClick}\n maxColumns={maxColumns}\n $gutterX={2}\n $gapX={2.81}\n $width={cardSize}\n $height={cardSize}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n index={index}\n isLastItem={isLastItem}\n $background=\"BLACK_1\"\n >\n <Avatar size={avatarSize} avatar={avatarSource} />\n <Separator heightX={0.5} />\n <Text $color=\"WHITE\" $renderAs=\"ab2\" $align=\"center\">\n {username || phone}\n </Text>\n </Styled.UserItemCard>\n );\n};\n\nexport default memo(UserItem);\n"],"names":["UserItem","id","phone","username","avatar","index","isLastItem","onSelect","avatarSize","maxColumns","cardSize","handleClick","useCallback","avatarSource","AVATAR_CONFIGURATIONS","jsxs","Styled.UserItemCard","jsx","Avatar","Separator","Text","UserItem$1","memo"],"mappings":";;;;;;;AAUA,MAAMA,IAA+B,CAAC;AAAA,EACpC,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACE,QAAAC,IAAcC,EAAY,MAAM;AACpC,IAAAL,EAASN,CAAE;AAAA,EAAA,GACV,CAACA,GAAIM,CAAQ,CAAC,GAEXM,IAAeT,KAAUU,EAAsBT,IAAQS,EAAsB,MAAM;AAGvF,SAAA,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MAEC,SAASL;AAAA,MACT,YAAAF;AAAA,MACA,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQC;AAAA,MACR,SAASA;AAAA,MACT,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,OAAAL;AAAA,MACA,YAAAC;AAAA,MACA,aAAY;AAAA,MAEZ,UAAA;AAAA,QAAA,gBAAAW,EAACC,GAAO,EAAA,MAAMV,GAAY,QAAQK,GAAc;AAAA,QAChD,gBAAAI,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,QACzB,gBAAAF,EAACG,KAAK,QAAO,SAAQ,WAAU,OAAM,QAAO,UACzC,UAAAjB,KAAYD,EACf,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAjBKD;AAAA,EAAA;AAoBX,GAEeoB,IAAAC,EAAKtB,CAAQ;"}
1
+ {"version":3,"file":"user-item.js","sources":["../../../../../src/features/auth/user-list/user-item/user-item.tsx"],"sourcesContent":["import type { IUserItemProps } from './user-item-types';\n\nimport { useCallback, type FC, memo } from 'react';\n\nimport useViewport from '../../../hooks/use-viewport';\nimport Avatar from '../../../ui/avatar/avatar';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { AVATAR_CONFIGURATIONS } from '../user-list-constants';\nimport * as Styled from './user-item-styled';\n\nconst UserItem: FC<IUserItemProps> = ({\n id,\n phone,\n username,\n avatar,\n index,\n isLastItem,\n onSelect,\n avatarSize,\n maxColumns,\n cardSize,\n}) => {\n const { isCompact } = useViewport();\n const handleClick = useCallback(() => {\n onSelect(id);\n }, [id, onSelect]);\n\n const avatarSource = avatar ?? AVATAR_CONFIGURATIONS[index % AVATAR_CONFIGURATIONS.length];\n\n return (\n <Styled.UserItemCard\n key={id}\n onClick={handleClick}\n maxColumns={maxColumns}\n $gutterX={1.5}\n $gapX={1.5}\n $width={cardSize}\n $height={cardSize}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n index={index}\n isLastItem={isLastItem}\n $background=\"BLACK_1\"\n >\n <Avatar size={avatarSize} avatar={avatarSource} />\n <Separator heightX={0.5} />\n <Text $color=\"WHITE\" $renderAs={isCompact ? 'ab3' : 'ab2'} $align=\"center\">\n {username || phone}\n </Text>\n </Styled.UserItemCard>\n );\n};\n\nexport default memo(UserItem);\n"],"names":["UserItem","id","phone","username","avatar","index","isLastItem","onSelect","avatarSize","maxColumns","cardSize","isCompact","useViewport","handleClick","useCallback","avatarSource","AVATAR_CONFIGURATIONS","jsxs","Styled.UserItemCard","jsx","Avatar","Separator","Text","UserItem$1","memo"],"mappings":";;;;;;;;AAWA,MAAMA,IAA+B,CAAC;AAAA,EACpC,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACE,QAAA,EAAE,WAAAC,MAAcC,KAChBC,IAAcC,EAAY,MAAM;AACpC,IAAAP,EAASN,CAAE;AAAA,EAAA,GACV,CAACA,GAAIM,CAAQ,CAAC,GAEXQ,IAAeX,KAAUY,EAAsBX,IAAQW,EAAsB,MAAM;AAGvF,SAAA,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MAEC,SAASL;AAAA,MACT,YAAAJ;AAAA,MACA,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQC;AAAA,MACR,SAASA;AAAA,MACT,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,OAAAL;AAAA,MACA,YAAAC;AAAA,MACA,aAAY;AAAA,MAEZ,UAAA;AAAA,QAAA,gBAAAa,EAACC,GAAO,EAAA,MAAMZ,GAAY,QAAQO,GAAc;AAAA,QAChD,gBAAAI,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,QACzB,gBAAAF,EAACG,GAAK,EAAA,QAAO,SAAQ,WAAWX,IAAY,QAAQ,OAAO,QAAO,UAC/D,UAAAR,KAAYD,EACf,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAjBKD;AAAA,EAAA;AAoBX,GAEesB,IAAAC,EAAKxB,CAAQ;"}
@@ -1,56 +1,65 @@
1
- import { jsxs as f, jsx as r } from "react/jsx-runtime";
1
+ import { jsxs as $, jsx as r } from "react/jsx-runtime";
2
2
  import { memo as g } from "react";
3
- import d from "../../../assets/line-icons/icons/plus.js";
4
- import u from "../../ui/layout/flex-view.js";
5
- import I from "./user-item/user-item.js";
6
- import { UserListWrapper as L, AddAccountButton as U } from "./user-list-styled.js";
7
- const j = ({
8
- users: i,
9
- onSelect: h,
10
- showAddButton: s = !1,
11
- onAddNew: c,
12
- maxColumns: e = 5,
13
- cardSize: t = 200,
14
- avatarSize: a = 80
3
+ import x from "../../../assets/line-icons/icons/plus.js";
4
+ import I from "../../hooks/use-viewport.js";
5
+ import L from "../../ui/layout/flex-view.js";
6
+ import w from "./user-item/user-item.js";
7
+ import { UserListWrapper as U, AddAccountButton as j } from "./user-list-styled.js";
8
+ const v = ({
9
+ users: s,
10
+ onSelect: c,
11
+ showAddButton: i = !1,
12
+ onAddNew: l,
13
+ maxColumns: p = 5,
14
+ cardSize: u = 200,
15
+ avatarSize: h = 80
15
16
  }) => {
16
- const o = i.length + (s ? 1 : 0);
17
- return /* @__PURE__ */ f(L, { itemCount: o, maxColumns: e, cardWidth: t, children: [
18
- i.map(({ id: m, username: p, user_avatar: l, phone: $ }, n) => /* @__PURE__ */ r(
19
- I,
20
- {
21
- id: m,
22
- onSelect: h,
23
- cardSize: t,
24
- index: n,
25
- maxColumns: e,
26
- avatarSize: a,
27
- avatar: l,
28
- phone: $,
29
- username: p,
30
- isLastItem: n === o - 1
31
- },
32
- m
33
- )),
34
- s && /* @__PURE__ */ r(
35
- U,
36
- {
37
- isLastItem: !0,
38
- index: o,
39
- maxColumns: e,
40
- $gutterX: 5,
41
- $gapX: 5,
42
- $background: "BLACK_3",
43
- $width: t,
44
- $height: t,
45
- $alignItems: "center",
46
- $justifyContent: "center",
47
- onClick: c,
48
- children: /* @__PURE__ */ r(u, { $width: 40, $height: 40, children: /* @__PURE__ */ r(d, { color: "WHITE", width: 40, height: 40 }) })
49
- }
50
- )
51
- ] });
52
- }, X = g(j);
17
+ const e = s.length + (i ? 1 : 0), { isCompact: m } = I(), o = m ? 2 : p, t = m ? 180 : u;
18
+ return /* @__PURE__ */ $(
19
+ U,
20
+ {
21
+ itemCount: e,
22
+ maxColumns: o,
23
+ cardWidth: t,
24
+ children: [
25
+ s.map(({ id: n, username: d, user_avatar: C, phone: f }, a) => /* @__PURE__ */ r(
26
+ w,
27
+ {
28
+ id: n,
29
+ onSelect: c,
30
+ cardSize: t,
31
+ index: a,
32
+ maxColumns: o,
33
+ avatarSize: h,
34
+ avatar: C,
35
+ phone: f,
36
+ username: d,
37
+ isLastItem: a === e - 1
38
+ },
39
+ n
40
+ )),
41
+ i && /* @__PURE__ */ r(
42
+ j,
43
+ {
44
+ isLastItem: !0,
45
+ index: e,
46
+ maxColumns: o,
47
+ $gutterX: 5,
48
+ $gapX: 5,
49
+ $background: "BLACK_3",
50
+ $width: t,
51
+ $height: t,
52
+ $alignItems: "center",
53
+ $justifyContent: "center",
54
+ onClick: l,
55
+ children: /* @__PURE__ */ r(L, { $width: 40, $height: 40, children: /* @__PURE__ */ r(x, { color: "WHITE", width: 40, height: 40 }) })
56
+ }
57
+ )
58
+ ]
59
+ }
60
+ );
61
+ }, _ = g(v);
53
62
  export {
54
- X as default
63
+ _ as default
55
64
  };
56
65
  //# sourceMappingURL=user-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-list.js","sources":["../../../../src/features/auth/user-list/user-list.tsx"],"sourcesContent":["import type { IUserListProps } from './user-list-types';\n\nimport { type FC, memo } from 'react';\n\nimport PlusIcon from '../../../assets/line-icons/icons/plus';\nimport FlexView from '../../ui/layout/flex-view';\nimport UserItem from './user-item/user-item';\nimport * as Styled from './user-list-styled';\n\nconst UserList: FC<IUserListProps> = ({\n users,\n onSelect,\n showAddButton = false,\n onAddNew,\n maxColumns = 5,\n cardSize = 200,\n avatarSize = 80,\n}) => {\n const totalCards = users.length + (showAddButton ? 1 : 0);\n\n return (\n <Styled.UserListWrapper itemCount={totalCards} maxColumns={maxColumns} cardWidth={cardSize}>\n {users.map(({ id, username, user_avatar: avatar, phone }, index) => (\n <UserItem\n key={id}\n id={id}\n onSelect={onSelect}\n cardSize={cardSize}\n index={index}\n maxColumns={maxColumns}\n avatarSize={avatarSize}\n avatar={avatar}\n phone={phone}\n username={username}\n isLastItem={index === totalCards - 1}\n />\n ))}\n\n {showAddButton && (\n <Styled.AddAccountButton\n isLastItem\n index={totalCards}\n maxColumns={maxColumns}\n $gutterX={5}\n $gapX={5}\n $background=\"BLACK_3\"\n $width={cardSize}\n $height={cardSize}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n onClick={onAddNew}\n >\n <FlexView $width={40} $height={40}>\n <PlusIcon color=\"WHITE\" width={40} height={40} />\n </FlexView>\n </Styled.AddAccountButton>\n )}\n </Styled.UserListWrapper>\n );\n};\n\nexport default memo(UserList);\n"],"names":["UserList","users","onSelect","showAddButton","onAddNew","maxColumns","cardSize","avatarSize","totalCards","jsxs","Styled.UserListWrapper","id","username","avatar","phone","index","jsx","UserItem","Styled.AddAccountButton","FlexView","PlusIcon","UserList$1","memo"],"mappings":";;;;;;AASA,MAAMA,IAA+B,CAAC;AAAA,EACpC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,UAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAa;AACf,MAAM;AACJ,QAAMC,IAAaP,EAAM,UAAUE,IAAgB,IAAI;AAGrD,SAAA,gBAAAM,EAACC,GAAA,EAAuB,WAAWF,GAAY,YAAAH,GAAwB,WAAWC,GAC/E,UAAA;AAAA,IAAML,EAAA,IAAI,CAAC,EAAE,IAAAU,GAAI,UAAAC,GAAU,aAAaC,GAAQ,OAAAC,KAASC,MACxD,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QAEC,IAAAN;AAAA,QACA,UAAAT;AAAA,QACA,UAAAI;AAAA,QACA,OAAAS;AAAA,QACA,YAAAV;AAAA,QACA,YAAAE;AAAA,QACA,QAAAM;AAAA,QACA,OAAAC;AAAA,QACA,UAAAF;AAAA,QACA,YAAYG,MAAUP,IAAa;AAAA,MAAA;AAAA,MAV9BG;AAAA,IAAA,CAYR;AAAA,IAEAR,KACC,gBAAAa;AAAA,MAACE;AAAAA,MAAA;AAAA,QACC,YAAU;AAAA,QACV,OAAOV;AAAA,QACP,YAAAH;AAAA,QACA,UAAU;AAAA,QACV,OAAO;AAAA,QACP,aAAY;AAAA,QACZ,QAAQC;AAAA,QACR,SAASA;AAAA,QACT,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAChB,SAASF;AAAA,QAET,UAAC,gBAAAY,EAAAG,GAAA,EAAS,QAAQ,IAAI,SAAS,IAC7B,UAAA,gBAAAH,EAACI,GAAS,EAAA,OAAM,SAAQ,OAAO,IAAI,QAAQ,GAAI,CAAA,GACjD;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ,EAAA,CAAA;AAEJ,GAEeC,IAAAC,EAAKtB,CAAQ;"}
1
+ {"version":3,"file":"user-list.js","sources":["../../../../src/features/auth/user-list/user-list.tsx"],"sourcesContent":["import type { IUserListProps } from './user-list-types';\n\nimport { type FC, memo } from 'react';\n\nimport PlusIcon from '../../../assets/line-icons/icons/plus';\nimport useViewport from '../../hooks/use-viewport';\nimport FlexView from '../../ui/layout/flex-view';\nimport UserItem from './user-item/user-item';\nimport * as Styled from './user-list-styled';\n\nconst UserList: FC<IUserListProps> = ({\n users,\n onSelect,\n showAddButton = false,\n onAddNew,\n maxColumns = 5,\n cardSize = 200,\n avatarSize = 80,\n}) => {\n const totalCards = users.length + (showAddButton ? 1 : 0);\n const { isCompact } = useViewport();\n\n const responsiveColumnNos = isCompact ? 2 : maxColumns;\n const responsiveCardSize = isCompact ? 180 : cardSize;\n\n return (\n <Styled.UserListWrapper\n itemCount={totalCards}\n maxColumns={responsiveColumnNos}\n cardWidth={responsiveCardSize}\n >\n {users.map(({ id, username, user_avatar: avatar, phone }, index) => (\n <UserItem\n key={id}\n id={id}\n onSelect={onSelect}\n cardSize={responsiveCardSize}\n index={index}\n maxColumns={responsiveColumnNos}\n avatarSize={avatarSize}\n avatar={avatar}\n phone={phone}\n username={username}\n isLastItem={index === totalCards - 1}\n />\n ))}\n\n {showAddButton && (\n <Styled.AddAccountButton\n isLastItem\n index={totalCards}\n maxColumns={responsiveColumnNos}\n $gutterX={5}\n $gapX={5}\n $background=\"BLACK_3\"\n $width={responsiveCardSize}\n $height={responsiveCardSize}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n onClick={onAddNew}\n >\n <FlexView $width={40} $height={40}>\n <PlusIcon color=\"WHITE\" width={40} height={40} />\n </FlexView>\n </Styled.AddAccountButton>\n )}\n </Styled.UserListWrapper>\n );\n};\n\nexport default memo(UserList);\n"],"names":["UserList","users","onSelect","showAddButton","onAddNew","maxColumns","cardSize","avatarSize","totalCards","isCompact","useViewport","responsiveColumnNos","responsiveCardSize","jsxs","Styled.UserListWrapper","id","username","avatar","phone","index","jsx","UserItem","Styled.AddAccountButton","FlexView","PlusIcon","UserList$1","memo"],"mappings":";;;;;;;AAUA,MAAMA,IAA+B,CAAC;AAAA,EACpC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,UAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAa;AACf,MAAM;AACJ,QAAMC,IAAaP,EAAM,UAAUE,IAAgB,IAAI,IACjD,EAAE,WAAAM,MAAcC,KAEhBC,IAAsBF,IAAY,IAAIJ,GACtCO,IAAqBH,IAAY,MAAMH;AAG3C,SAAA,gBAAAO;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,WAAWN;AAAA,MACX,YAAYG;AAAA,MACZ,WAAWC;AAAA,MAEV,UAAA;AAAA,QAAMX,EAAA,IAAI,CAAC,EAAE,IAAAc,GAAI,UAAAC,GAAU,aAAaC,GAAQ,OAAAC,KAASC,MACxD,gBAAAC;AAAA,UAACC;AAAA,UAAA;AAAA,YAEC,IAAAN;AAAA,YACA,UAAAb;AAAA,YACA,UAAUU;AAAA,YACV,OAAAO;AAAA,YACA,YAAYR;AAAA,YACZ,YAAAJ;AAAA,YACA,QAAAU;AAAA,YACA,OAAAC;AAAA,YACA,UAAAF;AAAA,YACA,YAAYG,MAAUX,IAAa;AAAA,UAAA;AAAA,UAV9BO;AAAA,QAAA,CAYR;AAAA,QAEAZ,KACC,gBAAAiB;AAAA,UAACE;AAAAA,UAAA;AAAA,YACC,YAAU;AAAA,YACV,OAAOd;AAAA,YACP,YAAYG;AAAA,YACZ,UAAU;AAAA,YACV,OAAO;AAAA,YACP,aAAY;AAAA,YACZ,QAAQC;AAAA,YACR,SAASA;AAAA,YACT,aAAY;AAAA,YACZ,iBAAgB;AAAA,YAChB,SAASR;AAAA,YAET,UAAC,gBAAAgB,EAAAG,GAAA,EAAS,QAAQ,IAAI,SAAS,IAC7B,UAAA,gBAAAH,EAACI,GAAS,EAAA,OAAM,SAAQ,OAAO,IAAI,QAAQ,GAAI,CAAA,GACjD;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,GAEeC,IAAAC,EAAK1B,CAAQ;"}
@@ -1,118 +1,118 @@
1
- import { useCallback as a, useRef as C, useEffect as T } from "react";
1
+ import { useCallback as c, useRef as C, useEffect as T } from "react";
2
2
  import { CircleSoundKeyMapper as A, SWIPE_SOUND_ORDER as E } from "./constants.js";
3
- import { CircleSoundKey as e } from "./use-circle-sounds-enums.js";
4
- let I = 0;
5
- const r = {
6
- [e.BACKGROUND]: null,
7
- [e.BACKGROUND_RUSHHOUR]: null,
8
- [e.TUTORIAL]: null,
9
- [e.SWIPE_01]: null,
10
- [e.SWIPE_02]: null,
11
- [e.SWIPE_03]: null,
12
- [e.SWIPE_04]: null,
13
- [e.SWIPE_DOWN]: null,
14
- [e.TOGGLE]: null,
15
- [e.POINTS_AWARDED]: null,
16
- [e.POINTS_ADDED]: null,
17
- [e.GAME_CARD_CLICK]: null,
18
- [e.CLOCK_IN]: null,
19
- [e.CLOCK_OUT]: null,
20
- [e.ACCURACY_IN]: null,
21
- [e.ACCURACY_OUT]: null,
22
- [e.STREAK_IN]: null,
23
- [e.STREAK_OUT]: null,
24
- [e.ACCURACY_INTRO]: null,
25
- [e.ACCURACY_TARGET]: null,
26
- [e.TIME_INTRO]: null,
27
- [e.TIME_TARGET]: null,
28
- [e.METER_FILL]: null
29
- }, f = {}, D = () => {
30
- const c = a((n) => {
31
- if (!r[n]) {
32
- const l = new Audio(A[n]);
33
- r[n] = l;
3
+ import { CircleSoundKey as n } from "./use-circle-sounds-enums.js";
4
+ let d = 0;
5
+ const o = {
6
+ [n.BACKGROUND]: null,
7
+ [n.BACKGROUND_RUSHHOUR]: null,
8
+ [n.TUTORIAL]: null,
9
+ [n.SWIPE_01]: null,
10
+ [n.SWIPE_02]: null,
11
+ [n.SWIPE_03]: null,
12
+ [n.SWIPE_04]: null,
13
+ [n.SWIPE_DOWN]: null,
14
+ [n.TOGGLE]: null,
15
+ [n.POINTS_AWARDED]: null,
16
+ [n.POINTS_ADDED]: null,
17
+ [n.GAME_CARD_CLICK]: null,
18
+ [n.CLOCK_IN]: null,
19
+ [n.CLOCK_OUT]: null,
20
+ [n.ACCURACY_IN]: null,
21
+ [n.ACCURACY_OUT]: null,
22
+ [n.STREAK_IN]: null,
23
+ [n.STREAK_OUT]: null,
24
+ [n.ACCURACY_INTRO]: null,
25
+ [n.ACCURACY_TARGET]: null,
26
+ [n.TIME_INTRO]: null,
27
+ [n.TIME_TARGET]: null,
28
+ [n.METER_FILL]: null
29
+ }, I = {}, D = () => {
30
+ const s = c((e) => {
31
+ if (!o[e]) {
32
+ const l = new Audio(A[e]);
33
+ o[e] = l;
34
34
  }
35
- }, []), v = C(/* @__PURE__ */ new Set()), o = C({}), p = a(() => {
36
- document.visibilityState === "hidden" ? Object.keys(r).forEach((n) => {
37
- const l = r[n];
38
- l && !l.paused && (l.pause(), v.current.add(n));
39
- }) : document.visibilityState === "visible" && (v.current.forEach((n) => {
40
- const l = r[n];
35
+ }, []), f = C(/* @__PURE__ */ new Set()), p = C({}), v = c(() => {
36
+ document.visibilityState === "hidden" ? Object.keys(o).forEach((e) => {
37
+ const l = o[e];
38
+ l && !l.paused && (l.pause(), f.current.add(e));
39
+ }) : document.visibilityState === "visible" && (f.current.forEach((e) => {
40
+ const l = o[e];
41
41
  l == null || l.play();
42
- }), v.current.clear());
42
+ }), f.current.clear());
43
43
  }, []);
44
44
  T(() => {
45
- document.addEventListener("visibilitychange", p);
46
- const n = o.current;
45
+ document.addEventListener("visibilitychange", v);
46
+ const e = p.current;
47
47
  return () => {
48
- document.removeEventListener("visibilitychange", p);
49
- for (const l of Object.values(n))
48
+ document.removeEventListener("visibilitychange", v);
49
+ for (const l of Object.values(e))
50
50
  l != null && clearInterval(l);
51
51
  };
52
- }, [p]);
53
- const S = a(() => {
52
+ }, [v]);
53
+ const S = c(() => {
54
54
  var l;
55
55
  E.forEach((u) => {
56
- c(u);
56
+ s(u);
57
57
  });
58
- const n = E[I] || e.SWIPE_01;
59
- I < E.length - 1 ? I++ : I = 0, (l = r[n]) == null || l.play();
60
- }, [c]), m = a(() => {
58
+ const e = E[d] || n.SWIPE_01;
59
+ d < E.length - 1 ? d++ : d = 0, (l = o[e]) == null || l.play();
60
+ }, [s]), m = c(() => {
61
61
  var l;
62
- return c(e.TOGGLE), (l = r[e.TOGGLE]) == null ? void 0 : l.play();
63
- }, [c]), _ = a(
64
- (n, l = !0, u = !1) => {
65
- c(n);
66
- const t = r[n];
62
+ return s(n.TOGGLE), (l = o[n.TOGGLE]) == null ? void 0 : l.play();
63
+ }, [s]), _ = c(
64
+ (e, l = !0, u = !1) => {
65
+ s(e);
66
+ const t = o[e];
67
67
  if (!t) return;
68
- if (o.current[n] && clearInterval(o.current[n]), !t.paused && t.currentTime > 0 && !t.ended)
68
+ if (!t.paused && t.currentTime > 0 && !t.ended)
69
69
  return t;
70
70
  if (t.loop = u, l) {
71
71
  t.volume = 1;
72
- const d = t.play();
73
- f[n] = d;
72
+ const a = t.play();
73
+ I[e] = a;
74
74
  return;
75
75
  }
76
76
  t.volume = 0;
77
- const s = t.play();
78
- f[n] = s;
77
+ const r = t.play();
78
+ I[e] = r;
79
79
  const i = setInterval(() => {
80
80
  if (!t) {
81
81
  clearInterval(i);
82
82
  return;
83
83
  }
84
- const d = t.volume || 0;
85
- d < 1 ? t.volume = Math.min(d + 0.1, 1) : clearInterval(i);
84
+ const a = t.volume || 0;
85
+ a < 1 ? t.volume = Math.min(a + 0.1, 1) : clearInterval(i);
86
86
  }, 100);
87
- return o.current[n] = i, t;
87
+ return p.current[e] = i, t;
88
88
  },
89
- [c]
90
- ), R = a((n, l = !0) => {
89
+ [s]
90
+ ), R = c((e, l = !0) => {
91
91
  var t;
92
- const u = r[n];
93
- f[n] !== void 0 && ((t = f[n]) == null || t.then(() => {
92
+ const u = o[e];
93
+ I[e] !== void 0 && ((t = I[e]) == null || t.then(() => {
94
94
  if (!u) return;
95
- if (o.current[n] && clearInterval(o.current[n]), l) {
95
+ if (l) {
96
96
  u.pause();
97
97
  return;
98
98
  }
99
- const s = setInterval(() => {
99
+ const r = setInterval(() => {
100
100
  if (!u) {
101
- clearInterval(s);
101
+ clearInterval(r);
102
102
  return;
103
103
  }
104
104
  const i = u.volume || 0;
105
- i - 0.1 <= 0 ? (u.volume = 0, u.pause(), clearInterval(s)) : u.volume = i - 0.1;
105
+ i - 0.1 <= 0 ? (u.volume = 0, u.pause(), clearInterval(r)) : u.volume = i - 0.1;
106
106
  }, 100);
107
- o.current[n] = s;
108
- }).catch((s) => {
109
- console.log("sound not playing", s);
107
+ p.current[e] = r;
108
+ }).catch((r) => {
109
+ console.log("sound not playing", r);
110
110
  }));
111
111
  }, []);
112
112
  return { playSwipSound: S, play: _, stop: R, playButtonSound: m };
113
113
  };
114
114
  export {
115
- r as soundMapper,
115
+ o as soundMapper,
116
116
  D as useCircleSounds
117
117
  };
118
118
  //# sourceMappingURL=use-circle-sounds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-circle-sounds.js","sources":["../../../../../src/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.ts"],"sourcesContent":["import type { TimeoutMap } from './use-circle-sound-types';\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport { CircleSoundKeyMapper, SWIPE_SOUND_ORDER } from './constants';\nimport { CircleSoundKey } from './use-circle-sounds-enums';\n\nlet swipeSoundIndex = 0;\n\nexport const soundMapper: Record<keyof typeof CircleSoundKeyMapper, null | HTMLAudioElement> = {\n [CircleSoundKey.BACKGROUND]: null,\n [CircleSoundKey.BACKGROUND_RUSHHOUR]: null,\n [CircleSoundKey.TUTORIAL]: null,\n [CircleSoundKey.SWIPE_01]: null,\n [CircleSoundKey.SWIPE_02]: null,\n [CircleSoundKey.SWIPE_03]: null,\n [CircleSoundKey.SWIPE_04]: null,\n [CircleSoundKey.SWIPE_DOWN]: null,\n [CircleSoundKey.TOGGLE]: null,\n [CircleSoundKey.POINTS_AWARDED]: null,\n [CircleSoundKey.POINTS_ADDED]: null,\n [CircleSoundKey.GAME_CARD_CLICK]: null,\n [CircleSoundKey.CLOCK_IN]: null,\n [CircleSoundKey.CLOCK_OUT]: null,\n [CircleSoundKey.ACCURACY_IN]: null,\n [CircleSoundKey.ACCURACY_OUT]: null,\n [CircleSoundKey.STREAK_IN]: null,\n [CircleSoundKey.STREAK_OUT]: null,\n [CircleSoundKey.ACCURACY_INTRO]: null,\n [CircleSoundKey.ACCURACY_TARGET]: null,\n [CircleSoundKey.TIME_INTRO]: null,\n [CircleSoundKey.TIME_TARGET]: null,\n [CircleSoundKey.METER_FILL]: null,\n};\n\nconst soundInstancePromise: Partial<Record<keyof typeof CircleSoundKeyMapper, Promise<void>>> = {};\n\nexport const useCircleSounds = () => {\n const loadSound = useCallback((key: CircleSoundKey) => {\n if (!soundMapper[key]) {\n const loadedSound = new Audio(CircleSoundKeyMapper[key]);\n\n soundMapper[key] = loadedSound;\n }\n }, []);\n\n const pausedSoundsRef = useRef<Set<CircleSoundKey>>(new Set());\n const timeoutRefs = useRef<TimeoutMap>({});\n\n const handleVisibilityChange = useCallback(() => {\n if (document.visibilityState === 'hidden') {\n (Object.keys(soundMapper) as CircleSoundKey[]).forEach(key => {\n const sound = soundMapper[key];\n\n if (sound && !sound.paused) {\n sound.pause();\n pausedSoundsRef.current.add(key);\n }\n });\n } else if (document.visibilityState === 'visible') {\n pausedSoundsRef.current.forEach(key => {\n const sound = soundMapper[key];\n\n sound?.play();\n });\n pausedSoundsRef.current.clear();\n }\n }, []);\n\n useEffect(() => {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n const timeouts = timeoutRefs.current;\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n for (const id of Object.values(timeouts)) {\n if (id != null) clearInterval(id);\n }\n };\n }, [handleVisibilityChange]);\n\n const playSwipSound = useCallback(() => {\n SWIPE_SOUND_ORDER.forEach(key => {\n loadSound(key);\n });\n\n const key = SWIPE_SOUND_ORDER[swipeSoundIndex] || CircleSoundKey.SWIPE_01;\n\n if (swipeSoundIndex < SWIPE_SOUND_ORDER.length - 1) {\n swipeSoundIndex++;\n } else {\n swipeSoundIndex = 0;\n }\n soundMapper[key]?.play();\n }, [loadSound]);\n\n const playButtonSound = useCallback(() => {\n loadSound(CircleSoundKey.TOGGLE);\n const sound = soundMapper[CircleSoundKey.TOGGLE]?.play();\n\n return sound;\n }, [loadSound]);\n\n const play = useCallback(\n (key: CircleSoundKey, immediately: boolean = true, loop = false) => {\n loadSound(key);\n const soundInstance = soundMapper[key];\n\n if (!soundInstance) return;\n\n if (timeoutRefs.current[key]) {\n clearInterval(timeoutRefs.current[key]);\n }\n\n if (!soundInstance.paused && soundInstance.currentTime > 0 && !soundInstance.ended) {\n return soundInstance;\n }\n\n soundInstance.loop = loop;\n if (immediately) {\n soundInstance.volume = 1;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n return;\n }\n\n soundInstance.volume = 0;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n const intervalId = setInterval(() => {\n if (!soundInstance) {\n clearInterval(intervalId);\n\n return;\n }\n\n const vol = soundInstance.volume || 0;\n\n if (vol < 1) {\n soundInstance.volume = Math.min(vol + 0.1, 1);\n } else {\n clearInterval(intervalId);\n }\n }, 100);\n\n timeoutRefs.current[key] = intervalId;\n\n return soundInstance;\n },\n [loadSound],\n );\n\n const stop = useCallback((key: CircleSoundKey, immediately: boolean = true) => {\n const soundInstance = soundMapper[key];\n\n if (soundInstancePromise[key] !== undefined) {\n soundInstancePromise[key]\n ?.then(() => {\n if (!soundInstance) return;\n\n if (timeoutRefs.current[key]) {\n clearInterval(timeoutRefs.current[key]);\n }\n\n if (immediately) {\n soundInstance.pause();\n\n return;\n }\n\n const intervalId = setInterval(() => {\n if (!soundInstance) {\n clearInterval(intervalId);\n\n return;\n }\n\n const vol = soundInstance.volume || 0;\n\n if (vol - 0.1 <= 0) {\n soundInstance.volume = 0;\n soundInstance.pause();\n clearInterval(intervalId);\n } else {\n soundInstance.volume = vol - 0.1;\n }\n }, 100);\n\n timeoutRefs.current[key] = intervalId;\n })\n .catch(err => {\n // eslint-disable-next-line no-console\n console.log('sound not playing', err);\n });\n }\n }, []);\n\n return { playSwipSound, play, stop, playButtonSound };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","loadSound","useCallback","key","loadedSound","CircleSoundKeyMapper","pausedSoundsRef","useRef","timeoutRefs","handleVisibilityChange","sound","useEffect","timeouts","id","playSwipSound","SWIPE_SOUND_ORDER","_a","playButtonSound","play","immediately","loop","soundInstance","promise","intervalId","vol","stop","err"],"mappings":"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"}
1
+ {"version":3,"file":"use-circle-sounds.js","sources":["../../../../../src/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.ts"],"sourcesContent":["import type { TimeoutMap } from './use-circle-sound-types';\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport { CircleSoundKeyMapper, SWIPE_SOUND_ORDER } from './constants';\nimport { CircleSoundKey } from './use-circle-sounds-enums';\n\nlet swipeSoundIndex = 0;\n\nexport const soundMapper: Record<keyof typeof CircleSoundKeyMapper, null | HTMLAudioElement> = {\n [CircleSoundKey.BACKGROUND]: null,\n [CircleSoundKey.BACKGROUND_RUSHHOUR]: null,\n [CircleSoundKey.TUTORIAL]: null,\n [CircleSoundKey.SWIPE_01]: null,\n [CircleSoundKey.SWIPE_02]: null,\n [CircleSoundKey.SWIPE_03]: null,\n [CircleSoundKey.SWIPE_04]: null,\n [CircleSoundKey.SWIPE_DOWN]: null,\n [CircleSoundKey.TOGGLE]: null,\n [CircleSoundKey.POINTS_AWARDED]: null,\n [CircleSoundKey.POINTS_ADDED]: null,\n [CircleSoundKey.GAME_CARD_CLICK]: null,\n [CircleSoundKey.CLOCK_IN]: null,\n [CircleSoundKey.CLOCK_OUT]: null,\n [CircleSoundKey.ACCURACY_IN]: null,\n [CircleSoundKey.ACCURACY_OUT]: null,\n [CircleSoundKey.STREAK_IN]: null,\n [CircleSoundKey.STREAK_OUT]: null,\n [CircleSoundKey.ACCURACY_INTRO]: null,\n [CircleSoundKey.ACCURACY_TARGET]: null,\n [CircleSoundKey.TIME_INTRO]: null,\n [CircleSoundKey.TIME_TARGET]: null,\n [CircleSoundKey.METER_FILL]: null,\n};\n\nconst soundInstancePromise: Partial<Record<keyof typeof CircleSoundKeyMapper, Promise<void>>> = {};\n\nexport const useCircleSounds = () => {\n const loadSound = useCallback((key: CircleSoundKey) => {\n if (!soundMapper[key]) {\n const loadedSound = new Audio(CircleSoundKeyMapper[key]);\n\n soundMapper[key] = loadedSound;\n }\n }, []);\n\n const pausedSoundsRef = useRef<Set<CircleSoundKey>>(new Set());\n const timeoutRefs = useRef<TimeoutMap>({});\n\n const handleVisibilityChange = useCallback(() => {\n if (document.visibilityState === 'hidden') {\n (Object.keys(soundMapper) as CircleSoundKey[]).forEach(key => {\n const sound = soundMapper[key];\n\n if (sound && !sound.paused) {\n sound.pause();\n pausedSoundsRef.current.add(key);\n }\n });\n } else if (document.visibilityState === 'visible') {\n pausedSoundsRef.current.forEach(key => {\n const sound = soundMapper[key];\n\n sound?.play();\n });\n pausedSoundsRef.current.clear();\n }\n }, []);\n\n useEffect(() => {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n const timeouts = timeoutRefs.current;\n\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n for (const id of Object.values(timeouts)) {\n if (id != null) clearInterval(id);\n }\n };\n }, [handleVisibilityChange]);\n\n const playSwipSound = useCallback(() => {\n SWIPE_SOUND_ORDER.forEach(key => {\n loadSound(key);\n });\n\n const key = SWIPE_SOUND_ORDER[swipeSoundIndex] || CircleSoundKey.SWIPE_01;\n\n if (swipeSoundIndex < SWIPE_SOUND_ORDER.length - 1) {\n swipeSoundIndex++;\n } else {\n swipeSoundIndex = 0;\n }\n soundMapper[key]?.play();\n }, [loadSound]);\n\n const playButtonSound = useCallback(() => {\n loadSound(CircleSoundKey.TOGGLE);\n const sound = soundMapper[CircleSoundKey.TOGGLE]?.play();\n\n return sound;\n }, [loadSound]);\n\n const play = useCallback(\n (key: CircleSoundKey, immediately: boolean = true, loop = false) => {\n loadSound(key);\n const soundInstance = soundMapper[key];\n\n if (!soundInstance) return;\n\n if (!soundInstance.paused && soundInstance.currentTime > 0 && !soundInstance.ended) {\n return soundInstance;\n }\n\n soundInstance.loop = loop;\n if (immediately) {\n soundInstance.volume = 1;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n return;\n }\n\n soundInstance.volume = 0;\n const promise = soundInstance.play();\n\n soundInstancePromise[key] = promise;\n\n const intervalId = setInterval(() => {\n if (!soundInstance) {\n clearInterval(intervalId);\n\n return;\n }\n\n const vol = soundInstance.volume || 0;\n\n if (vol < 1) {\n soundInstance.volume = Math.min(vol + 0.1, 1);\n } else {\n clearInterval(intervalId);\n }\n }, 100);\n\n timeoutRefs.current[key] = intervalId;\n\n return soundInstance;\n },\n [loadSound],\n );\n\n const stop = useCallback((key: CircleSoundKey, immediately: boolean = true) => {\n const soundInstance = soundMapper[key];\n\n if (soundInstancePromise[key] !== undefined) {\n soundInstancePromise[key]\n ?.then(() => {\n if (!soundInstance) return;\n\n if (immediately) {\n soundInstance.pause();\n\n return;\n }\n\n const intervalId = setInterval(() => {\n if (!soundInstance) {\n clearInterval(intervalId);\n\n return;\n }\n\n const vol = soundInstance.volume || 0;\n\n if (vol - 0.1 <= 0) {\n soundInstance.volume = 0;\n soundInstance.pause();\n clearInterval(intervalId);\n } else {\n soundInstance.volume = vol - 0.1;\n }\n }, 100);\n\n timeoutRefs.current[key] = intervalId;\n })\n .catch(err => {\n // eslint-disable-next-line no-console\n console.log('sound not playing', err);\n });\n }\n }, []);\n\n return { playSwipSound, play, stop, playButtonSound };\n};\n"],"names":["swipeSoundIndex","soundMapper","CircleSoundKey","soundInstancePromise","useCircleSounds","loadSound","useCallback","key","loadedSound","CircleSoundKeyMapper","pausedSoundsRef","useRef","timeoutRefs","handleVisibilityChange","sound","useEffect","timeouts","id","playSwipSound","SWIPE_SOUND_ORDER","_a","playButtonSound","play","immediately","loop","soundInstance","promise","intervalId","vol","stop","err"],"mappings":"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"}