@cuemath/leap 3.4.3 → 3.4.4-aa0

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.
@@ -1,5 +1,5 @@
1
1
  import { PLUGINS as _ } from "../../../node_modules/@cuemath/analytics-v2/dist/constants.js";
2
- var t = /* @__PURE__ */ ((e) => (e.START_SIGNUP_CTA_CLICKED = "start_signup_cta_clicked", e.ECNA_STEP_VIEWED = "ecna_step_viewed", e.ECNA_RESPONSE_RECORDED_DEBUG = "ecna_response_recorded_debug", e.PARENT_SIGNUP_CTA_CLICKED = "parent_signup_cta_clicked", e.PARENT_SIGNUP_SUCCESSFUL = "parent_signup_successful", e.PARENT_SIGNUP_FAILED = "parent_signup_failed", e.STUDENT_SIGNUP_SUCCESSFUL = "signup_successful", e.STUDENT_SIGNUP_FAILED = "signup_failed", e.SIGNUP_OTP_ENTERED = "signup_otp_entered", e.SIGNUP_OTP_VERIFIED = "signup_otp_verified", e.SIGNUP_OTP_FAILED = "signup_otp_failed", e.SLOTS_SHOWN = "slots_shown", e.SLOT_DATE_SELECTED = "slot_date_selected", e.SLOT_TIME_SELECTED = "slot_time_selected", e.TUTOR_CHANGE_REASON_SELECTED = "tutor_change_reason_selected", e.SUBSCRIPTION_CANCELLATION_FAILED = "subscription_cancellation_failed", e.SUBSCRIPTION_CANCELLATION_SUCCESSFUL = "subscription_cancellation_successful", e.STRIPE_INTENT_FAILED_RETRY = "stripe_intent_failed_retry", e.SUBSCRIPTION_INTENT_FAILED = "subscription_intent_failed", e.SUBSCRIPTION_INTENT_CREATED = "subscription_intent_created", e.STRIPE_PAYMENT_ELEMENT_READY = "stripe_payment_element_ready", e.STRIPE_PAYMENT_FAILED = "stripe_payment_failed", e.STRIPE_PAYMENT_SUCCESS = "stripe_payment_success", e.PAYMENT_PLAN_SELECTED = "payment_plan_selected", e.STRIPE_PAYMENT_ELEMENT_MOUNT_FAILED = "stripe_payment_element_mount_failed", e))(t || {});
2
+ var t = /* @__PURE__ */ ((e) => (e.START_SIGNUP_CTA_CLICKED = "start_signup_cta_clicked", e.SIGNUP_TO_LOGIN_CTA_CLICKED = "signup_to_login_cta_clicked", e.ECNA_STEP_VIEWED = "ecna_step_viewed", e.ECNA_RESPONSE_RECORDED_DEBUG = "ecna_response_recorded_debug", e.PARENT_SIGNUP_CTA_CLICKED = "parent_signup_cta_clicked", e.PARENT_SIGNUP_SUCCESSFUL = "parent_signup_successful", e.PARENT_SIGNUP_FAILED = "parent_signup_failed", e.STUDENT_SIGNUP_SUCCESSFUL = "signup_successful", e.STUDENT_SIGNUP_FAILED = "signup_failed", e.SIGNUP_OTP_ENTERED = "signup_otp_entered", e.SIGNUP_OTP_VERIFIED = "signup_otp_verified", e.SIGNUP_OTP_FAILED = "signup_otp_failed", e.SLOTS_SHOWN = "slots_shown", e.SLOT_DATE_SELECTED = "slot_date_selected", e.SLOT_TIME_SELECTED = "slot_time_selected", e.TUTOR_CHANGE_REASON_SELECTED = "tutor_change_reason_selected", e.SUBSCRIPTION_CANCELLATION_FAILED = "subscription_cancellation_failed", e.SUBSCRIPTION_CANCELLATION_SUCCESSFUL = "subscription_cancellation_successful", e.STRIPE_INTENT_FAILED_RETRY = "stripe_intent_failed_retry", e.SUBSCRIPTION_INTENT_FAILED = "subscription_intent_failed", e.SUBSCRIPTION_INTENT_CREATED = "subscription_intent_created", e.STRIPE_PAYMENT_ELEMENT_READY = "stripe_payment_element_ready", e.STRIPE_PAYMENT_FAILED = "stripe_payment_failed", e.STRIPE_PAYMENT_SUCCESS = "stripe_payment_success", e.PAYMENT_PLAN_SELECTED = "payment_plan_selected", e.STRIPE_PAYMENT_ELEMENT_MOUNT_FAILED = "stripe_payment_element_mount_failed", e))(t || {});
3
3
  const n = {
4
4
  start_signup_cta_clicked: [_.MIXPANEL],
5
5
  ecna_step_viewed: [_.MIXPANEL],
@@ -1 +1 @@
1
- {"version":3,"file":"pla-analytics-events.js","sources":["../../../../src/features/auth/pla-signup/pla-analytics-events.ts"],"sourcesContent":["import { PLUGINS } from '@cuemath/analytics-v2/dist/constants';\n\nexport enum PLA_ANALYTICS_EVENTS {\n START_SIGNUP_CTA_CLICKED = 'start_signup_cta_clicked',\n ECNA_STEP_VIEWED = 'ecna_step_viewed',\n ECNA_RESPONSE_RECORDED_DEBUG = 'ecna_response_recorded_debug',\n PARENT_SIGNUP_CTA_CLICKED = 'parent_signup_cta_clicked',\n PARENT_SIGNUP_SUCCESSFUL = 'parent_signup_successful',\n PARENT_SIGNUP_FAILED = 'parent_signup_failed',\n STUDENT_SIGNUP_SUCCESSFUL = 'signup_successful',\n STUDENT_SIGNUP_FAILED = 'signup_failed',\n SIGNUP_OTP_ENTERED = 'signup_otp_entered',\n SIGNUP_OTP_VERIFIED = 'signup_otp_verified',\n SIGNUP_OTP_FAILED = 'signup_otp_failed',\n SLOTS_SHOWN = 'slots_shown',\n SLOT_DATE_SELECTED = 'slot_date_selected',\n SLOT_TIME_SELECTED = 'slot_time_selected',\n TUTOR_CHANGE_REASON_SELECTED = 'tutor_change_reason_selected',\n SUBSCRIPTION_CANCELLATION_FAILED = 'subscription_cancellation_failed',\n SUBSCRIPTION_CANCELLATION_SUCCESSFUL = 'subscription_cancellation_successful',\n STRIPE_INTENT_FAILED_RETRY = 'stripe_intent_failed_retry',\n SUBSCRIPTION_INTENT_FAILED = 'subscription_intent_failed',\n SUBSCRIPTION_INTENT_CREATED = 'subscription_intent_created',\n STRIPE_PAYMENT_ELEMENT_READY = 'stripe_payment_element_ready',\n STRIPE_PAYMENT_FAILED = 'stripe_payment_failed',\n STRIPE_PAYMENT_SUCCESS = 'stripe_payment_success',\n PAYMENT_PLAN_SELECTED = 'payment_plan_selected',\n STRIPE_PAYMENT_ELEMENT_MOUNT_FAILED = 'stripe_payment_element_mount_failed',\n}\n\nexport const PLA_ANALYTICS_WHITELIST_EVENTS = {\n [PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.ECNA_STEP_VIEWED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.ECNA_RESPONSE_RECORDED_DEBUG]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PARENT_SIGNUP_CTA_CLICKED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PARENT_SIGNUP_SUCCESSFUL]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PARENT_SIGNUP_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STUDENT_SIGNUP_SUCCESSFUL]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STUDENT_SIGNUP_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SIGNUP_OTP_ENTERED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SIGNUP_OTP_VERIFIED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SIGNUP_OTP_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SLOTS_SHOWN]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SLOT_DATE_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SLOT_TIME_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.TUTOR_CHANGE_REASON_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_CANCELLATION_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_CANCELLATION_SUCCESSFUL]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_INTENT_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_INTENT_CREATED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_ELEMENT_READY]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_SUCCESS]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PAYMENT_PLAN_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_ELEMENT_MOUNT_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_INTENT_FAILED_RETRY]: [PLUGINS.MIXPANEL],\n};\n"],"names":["PLA_ANALYTICS_EVENTS","PLA_ANALYTICS_WHITELIST_EVENTS","PLUGINS"],"mappings":";AAEY,IAAAA,sBAAAA,OACVA,EAAA,2BAA2B,4BAC3BA,EAAA,mBAAmB,oBACnBA,EAAA,+BAA+B,gCAC/BA,EAAA,4BAA4B,6BAC5BA,EAAA,2BAA2B,4BAC3BA,EAAA,uBAAuB,wBACvBA,EAAA,4BAA4B,qBAC5BA,EAAA,wBAAwB,iBACxBA,EAAA,qBAAqB,sBACrBA,EAAA,sBAAsB,uBACtBA,EAAA,oBAAoB,qBACpBA,EAAA,cAAc,eACdA,EAAA,qBAAqB,sBACrBA,EAAA,qBAAqB,sBACrBA,EAAA,+BAA+B,gCAC/BA,EAAA,mCAAmC,oCACnCA,EAAA,uCAAuC,wCACvCA,EAAA,6BAA6B,8BAC7BA,EAAA,6BAA6B,8BAC7BA,EAAA,8BAA8B,+BAC9BA,EAAA,+BAA+B,gCAC/BA,EAAA,wBAAwB,yBACxBA,EAAA,yBAAyB,0BACzBA,EAAA,wBAAwB,yBACxBA,EAAA,sCAAsC,uCAzB5BA,IAAAA,KAAA,CAAA,CAAA;AA4BL,MAAMC,IAAiC;AAAA,EAC3C,0BAAgD,CAACC,EAAQ,QAAQ;AAAA,EACjE,kBAAwC,CAACA,EAAQ,QAAQ;AAAA,EACzD,8BAAoD,CAACA,EAAQ,QAAQ;AAAA,EACrE,2BAAiD,CAACA,EAAQ,QAAQ;AAAA,EAClE,0BAAgD,CAACA,EAAQ,QAAQ;AAAA,EACjE,sBAA4C,CAACA,EAAQ,QAAQ;AAAA,EAC7D,mBAAiD,CAACA,EAAQ,QAAQ;AAAA,EAClE,eAA6C,CAACA,EAAQ,QAAQ;AAAA,EAC9D,oBAA0C,CAACA,EAAQ,QAAQ;AAAA,EAC3D,qBAA2C,CAACA,EAAQ,QAAQ;AAAA,EAC5D,mBAAyC,CAACA,EAAQ,QAAQ;AAAA,EAC1D,aAAmC,CAACA,EAAQ,QAAQ;AAAA,EACpD,oBAA0C,CAACA,EAAQ,QAAQ;AAAA,EAC3D,oBAA0C,CAACA,EAAQ,QAAQ;AAAA,EAC3D,8BAAoD,CAACA,EAAQ,QAAQ;AAAA,EACrE,kCAAwD,CAACA,EAAQ,QAAQ;AAAA,EACzE,sCAA4D,CAACA,EAAQ,QAAQ;AAAA,EAC7E,4BAAkD,CAACA,EAAQ,QAAQ;AAAA,EACnE,6BAAmD,CAACA,EAAQ,QAAQ;AAAA,EACpE,8BAAoD,CAACA,EAAQ,QAAQ;AAAA,EACrE,uBAA6C,CAACA,EAAQ,QAAQ;AAAA,EAC9D,wBAA8C,CAACA,EAAQ,QAAQ;AAAA,EAC/D,uBAA6C,CAACA,EAAQ,QAAQ;AAAA,EAC9D,qCAA2D,CAACA,EAAQ,QAAQ;AAAA,EAC5E,4BAAkD,CAACA,EAAQ,QAAQ;AACtE;"}
1
+ {"version":3,"file":"pla-analytics-events.js","sources":["../../../../src/features/auth/pla-signup/pla-analytics-events.ts"],"sourcesContent":["import { PLUGINS } from '@cuemath/analytics-v2/dist/constants';\n\nexport enum PLA_ANALYTICS_EVENTS {\n START_SIGNUP_CTA_CLICKED = 'start_signup_cta_clicked',\n SIGNUP_TO_LOGIN_CTA_CLICKED = 'signup_to_login_cta_clicked',\n ECNA_STEP_VIEWED = 'ecna_step_viewed',\n ECNA_RESPONSE_RECORDED_DEBUG = 'ecna_response_recorded_debug',\n PARENT_SIGNUP_CTA_CLICKED = 'parent_signup_cta_clicked',\n PARENT_SIGNUP_SUCCESSFUL = 'parent_signup_successful',\n PARENT_SIGNUP_FAILED = 'parent_signup_failed',\n STUDENT_SIGNUP_SUCCESSFUL = 'signup_successful',\n STUDENT_SIGNUP_FAILED = 'signup_failed',\n SIGNUP_OTP_ENTERED = 'signup_otp_entered',\n SIGNUP_OTP_VERIFIED = 'signup_otp_verified',\n SIGNUP_OTP_FAILED = 'signup_otp_failed',\n SLOTS_SHOWN = 'slots_shown',\n SLOT_DATE_SELECTED = 'slot_date_selected',\n SLOT_TIME_SELECTED = 'slot_time_selected',\n TUTOR_CHANGE_REASON_SELECTED = 'tutor_change_reason_selected',\n SUBSCRIPTION_CANCELLATION_FAILED = 'subscription_cancellation_failed',\n SUBSCRIPTION_CANCELLATION_SUCCESSFUL = 'subscription_cancellation_successful',\n STRIPE_INTENT_FAILED_RETRY = 'stripe_intent_failed_retry',\n SUBSCRIPTION_INTENT_FAILED = 'subscription_intent_failed',\n SUBSCRIPTION_INTENT_CREATED = 'subscription_intent_created',\n STRIPE_PAYMENT_ELEMENT_READY = 'stripe_payment_element_ready',\n STRIPE_PAYMENT_FAILED = 'stripe_payment_failed',\n STRIPE_PAYMENT_SUCCESS = 'stripe_payment_success',\n PAYMENT_PLAN_SELECTED = 'payment_plan_selected',\n STRIPE_PAYMENT_ELEMENT_MOUNT_FAILED = 'stripe_payment_element_mount_failed',\n}\n\nexport const PLA_ANALYTICS_WHITELIST_EVENTS = {\n [PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.ECNA_STEP_VIEWED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.ECNA_RESPONSE_RECORDED_DEBUG]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PARENT_SIGNUP_CTA_CLICKED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PARENT_SIGNUP_SUCCESSFUL]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PARENT_SIGNUP_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STUDENT_SIGNUP_SUCCESSFUL]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STUDENT_SIGNUP_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SIGNUP_OTP_ENTERED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SIGNUP_OTP_VERIFIED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SIGNUP_OTP_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SLOTS_SHOWN]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SLOT_DATE_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SLOT_TIME_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.TUTOR_CHANGE_REASON_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_CANCELLATION_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_CANCELLATION_SUCCESSFUL]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_INTENT_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.SUBSCRIPTION_INTENT_CREATED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_ELEMENT_READY]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_SUCCESS]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.PAYMENT_PLAN_SELECTED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_PAYMENT_ELEMENT_MOUNT_FAILED]: [PLUGINS.MIXPANEL],\n [PLA_ANALYTICS_EVENTS.STRIPE_INTENT_FAILED_RETRY]: [PLUGINS.MIXPANEL],\n};\n"],"names":["PLA_ANALYTICS_EVENTS","PLA_ANALYTICS_WHITELIST_EVENTS","PLUGINS"],"mappings":";AAEY,IAAAA,sBAAAA,OACVA,EAAA,2BAA2B,4BAC3BA,EAAA,8BAA8B,+BAC9BA,EAAA,mBAAmB,oBACnBA,EAAA,+BAA+B,gCAC/BA,EAAA,4BAA4B,6BAC5BA,EAAA,2BAA2B,4BAC3BA,EAAA,uBAAuB,wBACvBA,EAAA,4BAA4B,qBAC5BA,EAAA,wBAAwB,iBACxBA,EAAA,qBAAqB,sBACrBA,EAAA,sBAAsB,uBACtBA,EAAA,oBAAoB,qBACpBA,EAAA,cAAc,eACdA,EAAA,qBAAqB,sBACrBA,EAAA,qBAAqB,sBACrBA,EAAA,+BAA+B,gCAC/BA,EAAA,mCAAmC,oCACnCA,EAAA,uCAAuC,wCACvCA,EAAA,6BAA6B,8BAC7BA,EAAA,6BAA6B,8BAC7BA,EAAA,8BAA8B,+BAC9BA,EAAA,+BAA+B,gCAC/BA,EAAA,wBAAwB,yBACxBA,EAAA,yBAAyB,0BACzBA,EAAA,wBAAwB,yBACxBA,EAAA,sCAAsC,uCA1B5BA,IAAAA,KAAA,CAAA,CAAA;AA6BL,MAAMC,IAAiC;AAAA,EAC3C,0BAAgD,CAACC,EAAQ,QAAQ;AAAA,EACjE,kBAAwC,CAACA,EAAQ,QAAQ;AAAA,EACzD,8BAAoD,CAACA,EAAQ,QAAQ;AAAA,EACrE,2BAAiD,CAACA,EAAQ,QAAQ;AAAA,EAClE,0BAAgD,CAACA,EAAQ,QAAQ;AAAA,EACjE,sBAA4C,CAACA,EAAQ,QAAQ;AAAA,EAC7D,mBAAiD,CAACA,EAAQ,QAAQ;AAAA,EAClE,eAA6C,CAACA,EAAQ,QAAQ;AAAA,EAC9D,oBAA0C,CAACA,EAAQ,QAAQ;AAAA,EAC3D,qBAA2C,CAACA,EAAQ,QAAQ;AAAA,EAC5D,mBAAyC,CAACA,EAAQ,QAAQ;AAAA,EAC1D,aAAmC,CAACA,EAAQ,QAAQ;AAAA,EACpD,oBAA0C,CAACA,EAAQ,QAAQ;AAAA,EAC3D,oBAA0C,CAACA,EAAQ,QAAQ;AAAA,EAC3D,8BAAoD,CAACA,EAAQ,QAAQ;AAAA,EACrE,kCAAwD,CAACA,EAAQ,QAAQ;AAAA,EACzE,sCAA4D,CAACA,EAAQ,QAAQ;AAAA,EAC7E,4BAAkD,CAACA,EAAQ,QAAQ;AAAA,EACnE,6BAAmD,CAACA,EAAQ,QAAQ;AAAA,EACpE,8BAAoD,CAACA,EAAQ,QAAQ;AAAA,EACrE,uBAA6C,CAACA,EAAQ,QAAQ;AAAA,EAC9D,wBAA8C,CAACA,EAAQ,QAAQ;AAAA,EAC/D,uBAA6C,CAACA,EAAQ,QAAQ;AAAA,EAC9D,qCAA2D,CAACA,EAAQ,QAAQ;AAAA,EAC5E,4BAAkD,CAACA,EAAQ,QAAQ;AACtE;"}
@@ -1,29 +1,29 @@
1
- import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import { memo as b } from "react";
3
- import { useTheme as g } from "styled-components";
4
- import I from "../../../../assets/line-icons/icons/apple-icon-white.js";
5
- import C from "../../../../assets/line-icons/icons/google-icon.js";
6
- import l from "../../../ui/buttons/button/button.js";
1
+ import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
+ import { memo as C } from "react";
3
+ import { useTheme as b } from "styled-components";
4
+ import f from "../../../../assets/line-icons/icons/apple-icon-white.js";
5
+ import g from "../../../../assets/line-icons/icons/google-icon.js";
6
+ import r from "../../../ui/buttons/button/button.js";
7
7
  import u from "../../../ui/buttons/text-button/text-button.js";
8
- import r from "../../../ui/layout/flex-view.js";
9
- import p from "../../../ui/separator/separator.js";
10
- import c from "../../../ui/text/text.js";
11
- import { EDeviceType as $ } from "../../../ui/theme/constants.js";
12
- import { PLA_ANALYTICS_EVENTS as t } from "../pla-analytics-events.js";
13
- const S = ({
8
+ import t from "../../../ui/layout/flex-view.js";
9
+ import c from "../../../ui/separator/separator.js";
10
+ import p from "../../../ui/text/text.js";
11
+ import { EDeviceType as L } from "../../../ui/theme/constants.js";
12
+ import { PLA_ANALYTICS_EVENTS as i } from "../pla-analytics-events.js";
13
+ const _ = ({
14
14
  onEmailSignup: m,
15
15
  onAppleSignup: d,
16
16
  onGoogleSignup: h,
17
- loadingProvider: n,
18
- onGoToLogin: A,
19
- title: T
17
+ loadingProvider: a,
18
+ onGoToLogin: T,
19
+ title: A
20
20
  }) => {
21
- const { device: f } = g(), o = f <= $.TABLET, a = n === "google", s = n === "apple";
22
- return /* @__PURE__ */ i(r, { $alignItems: "flex-start", children: [
23
- /* @__PURE__ */ e(c, { $renderAs: "ah3-bold", $renderOnMobileAs: "ah4-bold", $color: "WHITE", $whiteSpace: "pre-line", children: T }),
24
- /* @__PURE__ */ e(p, { heightX: o ? 1.5 : 2.5 }),
25
- /* @__PURE__ */ i(
26
- r,
21
+ const { device: I } = b(), o = I <= L.TABLET, n = a === "google", s = a === "apple";
22
+ return /* @__PURE__ */ l(t, { $alignItems: "flex-start", children: [
23
+ /* @__PURE__ */ e(p, { $renderAs: "ah3-bold", $renderOnMobileAs: "ah4-bold", $color: "WHITE", $whiteSpace: "pre-line", children: A }),
24
+ /* @__PURE__ */ e(c, { heightX: o ? 1.5 : 2.5 }),
25
+ /* @__PURE__ */ l(
26
+ t,
27
27
  {
28
28
  $flexGapX: 1,
29
29
  $flex: 1,
@@ -32,59 +32,68 @@ const S = ({
32
32
  $width: "100%",
33
33
  children: [
34
34
  /* @__PURE__ */ e(
35
- l,
35
+ r,
36
36
  {
37
37
  renderAs: "black-dark",
38
- Icon: C,
38
+ Icon: g,
39
39
  width: o ? "100%" : 320,
40
40
  label: "Signup with Google",
41
41
  onClick: h,
42
42
  size: "small",
43
- busy: a,
44
- disabled: a,
45
- analyticsLabel: t.START_SIGNUP_CTA_CLICKED,
43
+ busy: n,
44
+ disabled: n,
45
+ analyticsLabel: i.START_SIGNUP_CTA_CLICKED,
46
46
  analyticsProps: { provider: "google" }
47
47
  }
48
48
  ),
49
49
  /* @__PURE__ */ e(
50
- l,
50
+ r,
51
51
  {
52
52
  renderAs: "black-dark",
53
53
  size: "small",
54
54
  width: o ? "100%" : 320,
55
- Icon: I,
55
+ Icon: f,
56
56
  label: "Signup with Apple",
57
57
  onClick: d,
58
58
  busy: s,
59
59
  disabled: s,
60
- analyticsLabel: t.START_SIGNUP_CTA_CLICKED,
60
+ analyticsLabel: i.START_SIGNUP_CTA_CLICKED,
61
61
  analyticsProps: { provider: "apple" }
62
62
  }
63
63
  ),
64
64
  /* @__PURE__ */ e(
65
- l,
65
+ r,
66
66
  {
67
67
  renderAs: "black-dark",
68
68
  size: "small",
69
69
  width: o ? "100%" : 320,
70
70
  label: "Continue with Email",
71
71
  onClick: m,
72
- analyticsLabel: t.START_SIGNUP_CTA_CLICKED,
72
+ analyticsLabel: i.START_SIGNUP_CTA_CLICKED,
73
73
  analyticsProps: { provider: "email" }
74
74
  }
75
75
  )
76
76
  ]
77
77
  }
78
78
  ),
79
- /* @__PURE__ */ e(p, { heightX: 1.5 }),
80
- /* @__PURE__ */ i(r, { $flexDirection: "row", $alignItems: "center", children: [
81
- /* @__PURE__ */ e(c, { $renderAs: "ub3", $color: "WHITE", children: "Already have an account?" }),
79
+ /* @__PURE__ */ e(c, { heightX: 1.5 }),
80
+ /* @__PURE__ */ l(t, { $flexDirection: "row", $alignItems: "center", children: [
81
+ /* @__PURE__ */ e(p, { $renderAs: "ub3", $color: "WHITE", children: "Already have an account?" }),
82
82
  " ",
83
- /* @__PURE__ */ e(u, { size: "small", label: "Log In", color: "WHITE", onClick: A })
83
+ /* @__PURE__ */ e(
84
+ u,
85
+ {
86
+ analyticsLabel: i.SIGNUP_TO_LOGIN_CTA_CLICKED,
87
+ size: "small",
88
+ label: "Log In",
89
+ color: "WHITE",
90
+ onClick: T
91
+ }
92
+ )
84
93
  ] })
85
94
  ] });
86
- }, z = b(S);
95
+ }, O = C(_);
87
96
  export {
88
- z as default
97
+ O as default
89
98
  };
90
99
  //# sourceMappingURL=signup-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signup-options.js","sources":["../../../../../src/features/auth/pla-signup/signup-options/signup-options.tsx"],"sourcesContent":["import { memo, type FC } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport AppleIcon from '../../../../assets/line-icons/icons/apple-icon-white';\nimport GoogleIcon from '../../../../assets/line-icons/icons/google-icon';\nimport Button from '../../../ui/buttons/button/button';\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { EDeviceType } from '../../../ui/theme/constants';\nimport { PLA_ANALYTICS_EVENTS } from '../pla-analytics-events';\nimport type { ISignupOptionsProps } from './signup-options-types';\n\nconst SignupOptions: FC<ISignupOptionsProps> = ({\n onEmailSignup,\n onAppleSignup,\n onGoogleSignup,\n loadingProvider,\n onGoToLogin,\n title,\n}) => {\n const { device } = useTheme();\n const isCompact = device <= EDeviceType.TABLET;\n const isLoadingGoogle = loadingProvider === 'google';\n const isLoadingApple = loadingProvider === 'apple';\n\n return (\n <FlexView $alignItems=\"flex-start\">\n <Text $renderAs=\"ah3-bold\" $renderOnMobileAs=\"ah4-bold\" $color=\"WHITE\" $whiteSpace=\"pre-line\">\n {title}\n </Text>\n <Separator heightX={isCompact ? 1.5 : 2.5} />\n <FlexView\n $flexGapX={1}\n $flex={1}\n $justifyContent=\"center\"\n $alignItems=\"flex-start\"\n $width=\"100%\"\n >\n <Button\n renderAs=\"black-dark\"\n Icon={GoogleIcon}\n width={isCompact ? '100%' : 320}\n label=\"Signup with Google\"\n onClick={onGoogleSignup}\n size=\"small\"\n busy={isLoadingGoogle}\n disabled={isLoadingGoogle}\n analyticsLabel={PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED}\n analyticsProps={{ provider: 'google' }}\n />\n <Button\n renderAs=\"black-dark\"\n size=\"small\"\n width={isCompact ? '100%' : 320}\n Icon={AppleIcon}\n label=\"Signup with Apple\"\n onClick={onAppleSignup}\n busy={isLoadingApple}\n disabled={isLoadingApple}\n analyticsLabel={PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED}\n analyticsProps={{ provider: 'apple' }}\n />\n <Button\n renderAs=\"black-dark\"\n size=\"small\"\n width={isCompact ? '100%' : 320}\n label=\"Continue with Email\"\n onClick={onEmailSignup}\n analyticsLabel={PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED}\n analyticsProps={{ provider: 'email' }}\n />\n </FlexView>\n <Separator heightX={1.5} />\n <FlexView $flexDirection=\"row\" $alignItems=\"center\">\n <Text $renderAs=\"ub3\" $color=\"WHITE\">\n Already have an account?\n </Text>\n &nbsp;\n <TextButton size=\"small\" label=\"Log In\" color=\"WHITE\" onClick={onGoToLogin} />\n </FlexView>\n </FlexView>\n );\n};\n\nexport default memo(SignupOptions);\n"],"names":["SignupOptions","onEmailSignup","onAppleSignup","onGoogleSignup","loadingProvider","onGoToLogin","title","device","useTheme","isCompact","EDeviceType","isLoadingGoogle","isLoadingApple","jsxs","FlexView","jsx","Text","Separator","Button","GoogleIcon","PLA_ANALYTICS_EVENTS","AppleIcon","TextButton","signupOptions","memo"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,IAAyC,CAAC;AAAA,EAC9C,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AACF,MAAM;AACE,QAAA,EAAE,QAAAC,MAAWC,KACbC,IAAYF,KAAUG,EAAY,QAClCC,IAAkBP,MAAoB,UACtCQ,IAAiBR,MAAoB;AAGzC,SAAA,gBAAAS,EAACC,GAAS,EAAA,aAAY,cACpB,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,YAAW,mBAAkB,YAAW,QAAO,SAAQ,aAAY,YAChF,UACHV,EAAA,CAAA;AAAA,IACC,gBAAAS,EAAAE,GAAA,EAAU,SAASR,IAAY,MAAM,KAAK;AAAA,IAC3C,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,OAAO;AAAA,QACP,iBAAgB;AAAA,QAChB,aAAY;AAAA,QACZ,QAAO;AAAA,QAEP,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,MAAMC;AAAA,cACN,OAAOV,IAAY,SAAS;AAAA,cAC5B,OAAM;AAAA,cACN,SAASN;AAAA,cACT,MAAK;AAAA,cACL,MAAMQ;AAAA,cACN,UAAUA;AAAA,cACV,gBAAgBS,EAAqB;AAAA,cACrC,gBAAgB,EAAE,UAAU,SAAS;AAAA,YAAA;AAAA,UACvC;AAAA,UACA,gBAAAL;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,MAAK;AAAA,cACL,OAAOT,IAAY,SAAS;AAAA,cAC5B,MAAMY;AAAAA,cACN,OAAM;AAAA,cACN,SAASnB;AAAA,cACT,MAAMU;AAAA,cACN,UAAUA;AAAA,cACV,gBAAgBQ,EAAqB;AAAA,cACrC,gBAAgB,EAAE,UAAU,QAAQ;AAAA,YAAA;AAAA,UACtC;AAAA,UACA,gBAAAL;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,MAAK;AAAA,cACL,OAAOT,IAAY,SAAS;AAAA,cAC5B,OAAM;AAAA,cACN,SAASR;AAAA,cACT,gBAAgBmB,EAAqB;AAAA,cACrC,gBAAgB,EAAE,UAAU,QAAQ;AAAA,YAAA;AAAA,UACtC;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACA,gBAAAL,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,IACxB,gBAAAJ,EAAAC,GAAA,EAAS,gBAAe,OAAM,aAAY,UACzC,UAAA;AAAA,MAAA,gBAAAC,EAACC,GAAK,EAAA,WAAU,OAAM,QAAO,SAAQ,UAErC,4BAAA;AAAA,MAAO;AAAA,MAEP,gBAAAD,EAACO,KAAW,MAAK,SAAQ,OAAM,UAAS,OAAM,SAAQ,SAASjB,EAAa,CAAA;AAAA,IAAA,GAC9E;AAAA,EACF,EAAA,CAAA;AAEJ,GAEekB,IAAAC,EAAKxB,CAAa;"}
1
+ {"version":3,"file":"signup-options.js","sources":["../../../../../src/features/auth/pla-signup/signup-options/signup-options.tsx"],"sourcesContent":["import { memo, type FC } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport AppleIcon from '../../../../assets/line-icons/icons/apple-icon-white';\nimport GoogleIcon from '../../../../assets/line-icons/icons/google-icon';\nimport Button from '../../../ui/buttons/button/button';\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { EDeviceType } from '../../../ui/theme/constants';\nimport { PLA_ANALYTICS_EVENTS } from '../pla-analytics-events';\nimport type { ISignupOptionsProps } from './signup-options-types';\n\nconst SignupOptions: FC<ISignupOptionsProps> = ({\n onEmailSignup,\n onAppleSignup,\n onGoogleSignup,\n loadingProvider,\n onGoToLogin,\n title,\n}) => {\n const { device } = useTheme();\n const isCompact = device <= EDeviceType.TABLET;\n const isLoadingGoogle = loadingProvider === 'google';\n const isLoadingApple = loadingProvider === 'apple';\n\n return (\n <FlexView $alignItems=\"flex-start\">\n <Text $renderAs=\"ah3-bold\" $renderOnMobileAs=\"ah4-bold\" $color=\"WHITE\" $whiteSpace=\"pre-line\">\n {title}\n </Text>\n <Separator heightX={isCompact ? 1.5 : 2.5} />\n <FlexView\n $flexGapX={1}\n $flex={1}\n $justifyContent=\"center\"\n $alignItems=\"flex-start\"\n $width=\"100%\"\n >\n <Button\n renderAs=\"black-dark\"\n Icon={GoogleIcon}\n width={isCompact ? '100%' : 320}\n label=\"Signup with Google\"\n onClick={onGoogleSignup}\n size=\"small\"\n busy={isLoadingGoogle}\n disabled={isLoadingGoogle}\n analyticsLabel={PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED}\n analyticsProps={{ provider: 'google' }}\n />\n <Button\n renderAs=\"black-dark\"\n size=\"small\"\n width={isCompact ? '100%' : 320}\n Icon={AppleIcon}\n label=\"Signup with Apple\"\n onClick={onAppleSignup}\n busy={isLoadingApple}\n disabled={isLoadingApple}\n analyticsLabel={PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED}\n analyticsProps={{ provider: 'apple' }}\n />\n <Button\n renderAs=\"black-dark\"\n size=\"small\"\n width={isCompact ? '100%' : 320}\n label=\"Continue with Email\"\n onClick={onEmailSignup}\n analyticsLabel={PLA_ANALYTICS_EVENTS.START_SIGNUP_CTA_CLICKED}\n analyticsProps={{ provider: 'email' }}\n />\n </FlexView>\n <Separator heightX={1.5} />\n <FlexView $flexDirection=\"row\" $alignItems=\"center\">\n <Text $renderAs=\"ub3\" $color=\"WHITE\">\n Already have an account?\n </Text>\n &nbsp;\n <TextButton\n analyticsLabel={PLA_ANALYTICS_EVENTS.SIGNUP_TO_LOGIN_CTA_CLICKED}\n size=\"small\"\n label=\"Log In\"\n color=\"WHITE\"\n onClick={onGoToLogin}\n />\n </FlexView>\n </FlexView>\n );\n};\n\nexport default memo(SignupOptions);\n"],"names":["SignupOptions","onEmailSignup","onAppleSignup","onGoogleSignup","loadingProvider","onGoToLogin","title","device","useTheme","isCompact","EDeviceType","isLoadingGoogle","isLoadingApple","jsxs","FlexView","jsx","Text","Separator","Button","GoogleIcon","PLA_ANALYTICS_EVENTS","AppleIcon","TextButton","signupOptions","memo"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,IAAyC,CAAC;AAAA,EAC9C,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AACF,MAAM;AACE,QAAA,EAAE,QAAAC,MAAWC,KACbC,IAAYF,KAAUG,EAAY,QAClCC,IAAkBP,MAAoB,UACtCQ,IAAiBR,MAAoB;AAGzC,SAAA,gBAAAS,EAACC,GAAS,EAAA,aAAY,cACpB,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,YAAW,mBAAkB,YAAW,QAAO,SAAQ,aAAY,YAChF,UACHV,EAAA,CAAA;AAAA,IACC,gBAAAS,EAAAE,GAAA,EAAU,SAASR,IAAY,MAAM,KAAK;AAAA,IAC3C,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,OAAO;AAAA,QACP,iBAAgB;AAAA,QAChB,aAAY;AAAA,QACZ,QAAO;AAAA,QAEP,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,MAAMC;AAAA,cACN,OAAOV,IAAY,SAAS;AAAA,cAC5B,OAAM;AAAA,cACN,SAASN;AAAA,cACT,MAAK;AAAA,cACL,MAAMQ;AAAA,cACN,UAAUA;AAAA,cACV,gBAAgBS,EAAqB;AAAA,cACrC,gBAAgB,EAAE,UAAU,SAAS;AAAA,YAAA;AAAA,UACvC;AAAA,UACA,gBAAAL;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,MAAK;AAAA,cACL,OAAOT,IAAY,SAAS;AAAA,cAC5B,MAAMY;AAAAA,cACN,OAAM;AAAA,cACN,SAASnB;AAAA,cACT,MAAMU;AAAA,cACN,UAAUA;AAAA,cACV,gBAAgBQ,EAAqB;AAAA,cACrC,gBAAgB,EAAE,UAAU,QAAQ;AAAA,YAAA;AAAA,UACtC;AAAA,UACA,gBAAAL;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,UAAS;AAAA,cACT,MAAK;AAAA,cACL,OAAOT,IAAY,SAAS;AAAA,cAC5B,OAAM;AAAA,cACN,SAASR;AAAA,cACT,gBAAgBmB,EAAqB;AAAA,cACrC,gBAAgB,EAAE,UAAU,QAAQ;AAAA,YAAA;AAAA,UACtC;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IACA,gBAAAL,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,IACxB,gBAAAJ,EAAAC,GAAA,EAAS,gBAAe,OAAM,aAAY,UACzC,UAAA;AAAA,MAAA,gBAAAC,EAACC,GAAK,EAAA,WAAU,OAAM,QAAO,SAAQ,UAErC,4BAAA;AAAA,MAAO;AAAA,MAEP,gBAAAD;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,gBAAgBF,EAAqB;AAAA,UACrC,MAAK;AAAA,UACL,OAAM;AAAA,UACN,OAAM;AAAA,UACN,SAASf;AAAA,QAAA;AAAA,MACX;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ,GAEekB,IAAAC,EAAKxB,CAAa;"}
@@ -1,144 +1,65 @@
1
- import { useState as v, useRef as b, useCallback as P, useEffect as D } from "react";
2
- import G from "../../../hooks/use-cancellable-promise.js";
3
- import { removeTracksFromStream as k, openMediaDevices as L, getTrack as C, getConnectedDevices as p } from "../helper.js";
4
- const x = (_, r) => {
5
- const [l, f] = v("PROCESSING"), [w, m] = v("PROCESSING"), [I, R] = v(), [Y, g] = v(), [M, T] = v(), a = b(void 0), [u, h] = v({
1
+ import { useAVActions as w } from "@cuemath/av";
2
+ import { useState as n, useMemo as b, useCallback as a, useEffect as z } from "react";
3
+ const j = (s, o) => {
4
+ const [p, _] = n(), [f, A] = n(), [l, u] = n(), [M, D] = n(), [S, h] = n({
6
5
  audio: [],
7
6
  video: [],
8
7
  audioOutput: []
9
- }), [S, O] = v(), [y, A] = v(), d = G(), s = P(
10
- async (e, o) => {
11
- var n;
12
- a.current && k(a.current, o);
13
- const i = o === "audio" ? { audio: e ? { deviceId: e } : !0 } : { video: e ? { deviceId: e } : !0 };
14
- o === "audio" ? (O(e), f("PROCESSING"), R(void 0)) : o === "video" && (A(e), m("PROCESSING"), g(void 0));
15
- try {
16
- const t = await d(L(i, r)), c = C(t, o);
17
- c && (a.current ? (n = a.current) == null || n.addTrack(c) : a.current = t, c.addEventListener("ended", () => {
18
- o === "audio" ? s(void 0, "audio") : o === "video" && s(void 0, "video");
19
- }), o === "audio" ? (O(c.getSettings().deviceId), f("READY")) : o === "video" && (A(c.getSettings().deviceId), m("READY")));
20
- } catch (t) {
21
- const c = t instanceof Error ? t.message : "other";
22
- o === "audio" ? (f("ERROR"), R(c)) : o === "video" && (m("ERROR"), g(c));
23
- }
8
+ }), [g, O] = n(), { getMediaManager: d } = w(), i = b(() => d(), [d]), v = a(
9
+ (e, t) => {
10
+ o("av_preview_error", { error: e }), t === "microphone" ? _(e) : t === "camera" && A(e);
24
11
  },
25
- [d, r]
26
- ), V = P(
12
+ [o]
13
+ ), r = a(
27
14
  (e) => {
28
- T(e);
29
- const o = _.current;
30
- o && "setSinkId" in o && o.setSinkId(e).catch((i) => {
31
- r("av_preview_set_audio_output_device_error", {
15
+ s.current && (s.current.srcObject = e);
16
+ },
17
+ [s]
18
+ ), m = a(
19
+ (e) => {
20
+ h(e);
21
+ const { audioDeviceId: t, videoDeviceId: c } = i.getSelectedDeviceDetails();
22
+ u(t), D(c);
23
+ },
24
+ [i]
25
+ );
26
+ z(() => {
27
+ async function e() {
28
+ i && await i.initialize(r, v, m);
29
+ }
30
+ e();
31
+ }, [i, m, v, r, s]);
32
+ const V = a(
33
+ async (e, t) => {
34
+ !i || !e || (i.changeSelectedDevice(e, t), t === "video" ? D(e) : t === "audio" && u(e));
35
+ },
36
+ [i]
37
+ ), k = a(
38
+ (e) => {
39
+ O(e);
40
+ const t = s.current;
41
+ t && "setSinkId" in t && t.setSinkId(e).catch((c) => {
42
+ o("av_preview_set_audio_output_device_error", {
32
43
  deviceId: e,
33
- error_name: i == null ? void 0 : i.name,
34
- error_message: i == null ? void 0 : i.message
44
+ error_name: c == null ? void 0 : c.name,
45
+ error_message: c == null ? void 0 : c.message
35
46
  });
36
47
  });
37
48
  },
38
- [_, r]
49
+ [s, o]
39
50
  );
40
- return D(() => {
41
- let e;
42
- return (async () => {
43
- try {
44
- const i = await d(
45
- L({ video: !0, audio: !0 }, r)
46
- );
47
- a.current = i, f("READY"), m("READY");
48
- const n = C(i, "audio"), t = C(i, "video");
49
- n && (n.addEventListener("ended", () => {
50
- const c = n.getSettings().deviceId;
51
- c && s(c, "audio");
52
- }), O(n.getSettings().deviceId)), t && (t.addEventListener("ended", () => {
53
- const c = t.getSettings().deviceId;
54
- c && s(c, "video");
55
- }), A(t.getSettings().deviceId));
56
- try {
57
- const c = await d(p());
58
- h(c);
59
- } catch {
60
- r("av_preview_get_connected_devices_error");
61
- }
62
- } catch (i) {
63
- const n = i instanceof Error ? i.message : "other";
64
- try {
65
- const t = await d(p());
66
- t.audio.length + t.video.length === 0 ? (f("ERROR"), m("ERROR"), R(n), g(n)) : t.video.length === 0 ? (m("ERROR"), g(n)) : t.audio.length === 0 && (f("ERROR"), R(n)), t.audio.length > 0 && s(void 0, "audio"), t.video.length > 0 && s(void 0, "video"), h(t);
67
- } catch {
68
- r("av_preview_get_connected_devices_error");
69
- }
70
- }
71
- try {
72
- const i = await navigator.permissions.query({
73
- name: "camera"
74
- }), n = await navigator.permissions.query({
75
- name: "microphone"
76
- }), t = async () => {
77
- try {
78
- const E = await d(p());
79
- h(E);
80
- } catch {
81
- r("av_preview_get_connected_devices_error");
82
- }
83
- i.state === "granted" && s(void 0, "video");
84
- }, c = async () => {
85
- try {
86
- const E = await d(p());
87
- h(E);
88
- } catch {
89
- r("av_preview_get_connected_devices_error");
90
- }
91
- n.state === "granted" && s(void 0, "audio");
92
- };
93
- i.addEventListener("change", t), n.addEventListener("change", c), e = () => {
94
- i.removeEventListener("change", t), n.removeEventListener("change", c);
95
- };
96
- } catch {
97
- r("av_preview_permissions_query_error");
98
- }
99
- })(), () => {
100
- e && e();
101
- };
102
- }, [d, s, r]), D(() => {
103
- const e = async () => {
104
- try {
105
- const o = await p();
106
- h(o);
107
- } catch {
108
- r("av_preview_get_connected_devices_error");
109
- }
110
- };
111
- return navigator.mediaDevices.addEventListener("devicechange", e), () => {
112
- navigator.mediaDevices.removeEventListener("devicechange", e);
113
- };
114
- }, [r]), D(() => {
115
- if (l === "READY" && S && !u.audio.find((e) => e.id === S)) {
116
- const e = u.audio[0];
117
- e && s(e.id, "audio");
118
- }
119
- }, [l, s, u.audio, S]), D(() => {
120
- if (w === "READY" && y && !u.video.find((e) => e.id === y)) {
121
- const e = u.video[0];
122
- e && s(e.id, "video");
123
- }
124
- }, [w, s, u.video, y]), D(() => {
125
- a.current && _.current && (_.current.srcObject = a.current);
126
- }, [a.current, _]), D(() => () => {
127
- a.current && k(a.current);
128
- }, []), {
129
- audioDeviceStatus: l,
130
- audioDeviceError: I,
131
- videoDeviceStatus: w,
132
- videoDeviceError: Y,
133
- devices: u,
134
- selectedVideoDevice: y,
135
- selectedAudioDevice: S,
136
- selectedAudioOutputDevice: M,
137
- changeDevice: s,
138
- changeAudioOutputDevice: V
51
+ return {
52
+ audioDeviceError: p,
53
+ videoDeviceError: f,
54
+ devices: S,
55
+ selectedVideoDevice: M,
56
+ selectedAudioDevice: l,
57
+ selectedAudioOutputDevice: g,
58
+ changeDevice: V,
59
+ changeAudioOutputDevice: k
139
60
  };
140
61
  };
141
62
  export {
142
- x as default
63
+ j as default
143
64
  };
144
65
  //# sourceMappingURL=use-media-devices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-media-devices.js","sources":["../../../../../src/features/av/av-preview/hooks/use-media-devices.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport useCancellablePromise from '../../../hooks/use-cancellable-promise';\nimport type {\n IDevicesMap,\n ILogger,\n TDeviceError,\n TDeviceStatus,\n TMediaKind,\n} from '../av-preview-types';\nimport { getConnectedDevices, getTrack, openMediaDevices, removeTracksFromStream } from '../helper';\n\ninterface IChangeDevice {\n (deviceId: string | undefined, kind: TMediaKind): void;\n}\n\ninterface IUseMediaDevices {\n (\n videoElRef: RefObject<HTMLVideoElement | null>,\n logger: ILogger,\n ): {\n audioDeviceStatus: TDeviceStatus;\n audioDeviceError?: TDeviceError;\n videoDeviceStatus: TDeviceStatus;\n videoDeviceError?: TDeviceError;\n devices: IDevicesMap;\n selectedAudioDevice?: string;\n selectedVideoDevice?: string;\n selectedAudioOutputDevice?: string;\n changeDevice: IChangeDevice;\n changeAudioOutputDevice: (deviceId: string) => void;\n };\n}\n\nconst useMediaDevices: IUseMediaDevices = (videoElRef, logger) => {\n const [audioDeviceStatus, setAudioDeviceStatus] = useState<TDeviceStatus>('PROCESSING');\n const [videoDeviceStatus, setVideoDeviceStatus] = useState<TDeviceStatus>('PROCESSING');\n const [audioDeviceError, setAudioDeviceError] = useState<TDeviceError>();\n const [videoDeviceError, setVideoDeviceError] = useState<TDeviceError>();\n const [selectedAudioOutputDevice, setSelectedAudioOutputDevice] = useState<string>();\n\n const avStreamRef = useRef<MediaStream>(undefined);\n const [devices, setDevices] = useState<IDevicesMap>({\n audio: [],\n video: [],\n audioOutput: [],\n });\n const [selectedAudioDevice, setAudioDevice] = useState<string>();\n const [selectedVideoDevice, setVideoDevice] = useState<string>();\n const cancellablePromise = useCancellablePromise();\n\n const changeDevice = useCallback<IChangeDevice>(\n async (deviceId, deviceKind) => {\n if (avStreamRef.current) {\n removeTracksFromStream(avStreamRef.current, deviceKind);\n }\n\n const constraints: MediaStreamConstraints =\n deviceKind === 'audio'\n ? { audio: deviceId ? { deviceId } : true }\n : { video: deviceId ? { deviceId } : true };\n\n if (deviceKind === 'audio') {\n setAudioDevice(deviceId);\n setAudioDeviceStatus('PROCESSING');\n setAudioDeviceError(undefined);\n } else if (deviceKind === 'video') {\n setVideoDevice(deviceId);\n setVideoDeviceStatus('PROCESSING');\n setVideoDeviceError(undefined);\n }\n\n try {\n const stream = await cancellablePromise(openMediaDevices(constraints, logger));\n const track = getTrack(stream, deviceKind);\n\n if (track) {\n if (avStreamRef.current) {\n avStreamRef.current?.addTrack(track);\n } else {\n avStreamRef.current = stream;\n }\n\n track.addEventListener('ended', () => {\n if (deviceKind === 'audio') {\n changeDevice(undefined, 'audio');\n } else if (deviceKind === 'video') {\n changeDevice(undefined, 'video');\n }\n });\n\n if (deviceKind === 'audio') {\n setAudioDevice(track.getSettings().deviceId);\n setAudioDeviceStatus('READY');\n } else if (deviceKind === 'video') {\n setVideoDevice(track.getSettings().deviceId);\n setVideoDeviceStatus('READY');\n }\n }\n } catch (error) {\n const errorMessage: TDeviceError =\n error instanceof Error ? (error.message as TDeviceError) : 'other';\n\n if (deviceKind === 'audio') {\n setAudioDeviceStatus('ERROR');\n setAudioDeviceError(errorMessage);\n } else if (deviceKind === 'video') {\n setVideoDeviceStatus('ERROR');\n setVideoDeviceError(errorMessage);\n }\n }\n },\n [cancellablePromise, logger],\n );\n\n const changeAudioOutputDevice = useCallback(\n (deviceId: string) => {\n setSelectedAudioOutputDevice(deviceId);\n const videoEl = videoElRef.current;\n\n if (videoEl && 'setSinkId' in videoEl) {\n videoEl.setSinkId(deviceId).catch(error => {\n logger('av_preview_set_audio_output_device_error', {\n deviceId,\n error_name: error?.name,\n error_message: error?.message,\n });\n });\n }\n },\n [videoElRef, logger],\n );\n\n useEffect(() => {\n let permissionCleanup: (() => void) | undefined;\n const asyncEffect = async () => {\n try {\n const stream = await cancellablePromise(\n openMediaDevices({ video: true, audio: true }, logger),\n );\n\n avStreamRef.current = stream;\n setAudioDeviceStatus('READY');\n setVideoDeviceStatus('READY');\n const audioTrack = getTrack(stream, 'audio');\n const videoTrack = getTrack(stream, 'video');\n\n if (audioTrack) {\n audioTrack.addEventListener('ended', () => {\n const audioDeviceId = audioTrack.getSettings().deviceId;\n\n if (audioDeviceId) {\n changeDevice(audioDeviceId, 'audio');\n }\n });\n setAudioDevice(audioTrack.getSettings().deviceId);\n }\n\n if (videoTrack) {\n videoTrack.addEventListener('ended', () => {\n const videoDeviceId = videoTrack.getSettings().deviceId;\n\n if (videoDeviceId) {\n changeDevice(videoDeviceId, 'video');\n }\n });\n setVideoDevice(videoTrack.getSettings().deviceId);\n }\n\n try {\n const connectedDevices = await cancellablePromise(getConnectedDevices());\n\n setDevices(connectedDevices);\n } catch (error) {\n logger('av_preview_get_connected_devices_error');\n }\n } catch (error) {\n const errorMessage: TDeviceError =\n error instanceof Error ? (error.message as TDeviceError) : 'other';\n\n try {\n const connectedDevices = await cancellablePromise(getConnectedDevices());\n\n // Permission denied for\n if (connectedDevices.audio.length + connectedDevices.video.length === 0) {\n setAudioDeviceStatus('ERROR');\n setVideoDeviceStatus('ERROR');\n setAudioDeviceError(errorMessage);\n setVideoDeviceError(errorMessage);\n } else if (connectedDevices.video.length === 0) {\n setVideoDeviceStatus('ERROR');\n setVideoDeviceError(errorMessage);\n } else if (connectedDevices.audio.length === 0) {\n setAudioDeviceStatus('ERROR');\n setAudioDeviceError(errorMessage);\n }\n\n if (connectedDevices.audio.length > 0) {\n changeDevice(undefined, 'audio');\n }\n\n if (connectedDevices.video.length > 0) {\n changeDevice(undefined, 'video');\n }\n\n setDevices(connectedDevices);\n } catch (err) {\n logger('av_preview_get_connected_devices_error');\n }\n }\n\n try {\n const cameraPermission = await navigator.permissions.query({\n name: 'camera' as PermissionName,\n });\n const microphonePermission = await navigator.permissions.query({\n name: 'microphone' as PermissionName,\n });\n const handleCameraPermissionChange = async () => {\n try {\n const connectedDevices = await cancellablePromise(getConnectedDevices());\n\n setDevices(connectedDevices);\n } catch (error) {\n logger('av_preview_get_connected_devices_error');\n }\n\n if (cameraPermission.state === 'granted') {\n changeDevice(undefined, 'video'); // Reset video device on permission change\n }\n };\n const handleMicrophonePermissionChange = async () => {\n try {\n const connectedDevices = await cancellablePromise(getConnectedDevices());\n\n setDevices(connectedDevices);\n } catch (error) {\n logger('av_preview_get_connected_devices_error');\n }\n\n if (microphonePermission.state === 'granted') {\n changeDevice(undefined, 'audio'); // Reset audio device on permission change\n }\n };\n\n cameraPermission.addEventListener('change', handleCameraPermissionChange);\n microphonePermission.addEventListener('change', handleMicrophonePermissionChange);\n\n permissionCleanup = () => {\n cameraPermission.removeEventListener('change', handleCameraPermissionChange);\n microphonePermission.removeEventListener('change', handleMicrophonePermissionChange);\n };\n } catch (error) {\n logger('av_preview_permissions_query_error');\n }\n };\n\n asyncEffect();\n\n return () => {\n if (permissionCleanup) {\n permissionCleanup();\n }\n };\n }, [cancellablePromise, changeDevice, logger]);\n\n /**\n * Effect to handle media device changes\n * It listens for device changes and updates the list of connected devices.\n */\n useEffect(() => {\n const handleDeviceChange = async () => {\n try {\n const updatedDevices = await getConnectedDevices();\n\n setDevices(updatedDevices);\n } catch (error) {\n logger('av_preview_get_connected_devices_error');\n }\n };\n\n navigator.mediaDevices.addEventListener('devicechange', handleDeviceChange);\n\n return () => {\n navigator.mediaDevices.removeEventListener('devicechange', handleDeviceChange);\n };\n }, [logger]);\n\n /**\n * If the audio device is ready and the selected audio device is not in the list of available devices,\n * switch to the first available audio device.\n */\n useEffect(() => {\n if (\n audioDeviceStatus === 'READY' &&\n selectedAudioDevice &&\n !devices.audio.find(d => d.id === selectedAudioDevice)\n ) {\n const firstAudioDevice = devices.audio[0];\n\n if (firstAudioDevice) {\n changeDevice(firstAudioDevice.id, 'audio');\n }\n }\n }, [audioDeviceStatus, changeDevice, devices.audio, selectedAudioDevice]);\n\n /**\n * If the video device is ready and the selected video device is not in the list of available devices,\n * switch to the first available video device.\n */\n useEffect(() => {\n if (\n videoDeviceStatus === 'READY' &&\n selectedVideoDevice &&\n !devices.video.find(d => d.id === selectedVideoDevice)\n ) {\n const firstVideoDevice = devices.video[0];\n\n if (firstVideoDevice) {\n changeDevice(firstVideoDevice.id, 'video');\n }\n }\n }, [videoDeviceStatus, changeDevice, devices.video, selectedVideoDevice]);\n\n // Set the video element's srcObject to the MediaStream when available\n useEffect(() => {\n if (avStreamRef.current && videoElRef.current) {\n videoElRef.current.srcObject = avStreamRef.current;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [avStreamRef.current, videoElRef]);\n\n useEffect(() => {\n return () => {\n if (avStreamRef.current) {\n removeTracksFromStream(avStreamRef.current);\n }\n };\n }, []);\n\n return {\n audioDeviceStatus,\n audioDeviceError,\n videoDeviceStatus,\n videoDeviceError,\n devices,\n selectedVideoDevice,\n selectedAudioDevice,\n selectedAudioOutputDevice,\n changeDevice,\n changeAudioOutputDevice,\n };\n};\n\nexport default useMediaDevices;\n"],"names":["useMediaDevices","videoElRef","logger","audioDeviceStatus","setAudioDeviceStatus","useState","videoDeviceStatus","setVideoDeviceStatus","audioDeviceError","setAudioDeviceError","videoDeviceError","setVideoDeviceError","selectedAudioOutputDevice","setSelectedAudioOutputDevice","avStreamRef","useRef","devices","setDevices","selectedAudioDevice","setAudioDevice","selectedVideoDevice","setVideoDevice","cancellablePromise","useCancellablePromise","changeDevice","useCallback","deviceId","deviceKind","removeTracksFromStream","constraints","stream","openMediaDevices","track","getTrack","_a","error","errorMessage","changeAudioOutputDevice","videoEl","useEffect","permissionCleanup","audioTrack","videoTrack","audioDeviceId","videoDeviceId","connectedDevices","getConnectedDevices","cameraPermission","microphonePermission","handleCameraPermissionChange","handleMicrophonePermissionChange","handleDeviceChange","updatedDevices","d","firstAudioDevice","firstVideoDevice"],"mappings":"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"}
1
+ {"version":3,"file":"use-media-devices.js","sources":["../../../../../src/features/av/av-preview/hooks/use-media-devices.ts"],"sourcesContent":["import { useAVActions } from '@cuemath/av';\nimport type { RefObject } from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport type { IDevicesMap, ILogger, TDeviceError, TMediaKind } from '../av-preview-types';\n\ninterface IChangeDevice {\n (deviceId: string | undefined, kind: TMediaKind): void;\n}\n\ninterface IUseMediaDevices {\n (\n videoElRef: RefObject<HTMLVideoElement | null>,\n logger: ILogger,\n ): {\n audioDeviceError?: TDeviceError;\n videoDeviceError?: TDeviceError;\n devices: IDevicesMap;\n selectedAudioDevice?: string;\n selectedVideoDevice?: string;\n selectedAudioOutputDevice?: string;\n changeDevice: IChangeDevice;\n changeAudioOutputDevice: (deviceId: string) => void;\n };\n}\n\nconst useMediaDevices: IUseMediaDevices = (videoElRef, logger) => {\n const [audioDeviceError, setAudioDeviceError] = useState<TDeviceError>();\n const [videoDeviceError, setVideoDeviceError] = useState<TDeviceError>();\n const [selectedAudioDevice, setAudioDevice] = useState<string>();\n const [selectedVideoDevice, setVideoDevice] = useState<string>();\n const [devices, setDevices] = useState<IDevicesMap>({\n audio: [],\n video: [],\n audioOutput: [],\n });\n const [selectedAudioOutputDevice, setSelectedAudioOutputDevice] = useState<string>();\n\n const { getMediaManager } = useAVActions();\n\n const mediaManager = useMemo(() => getMediaManager(), [getMediaManager]);\n\n const onError = useCallback(\n (error: TDeviceError | undefined, type: 'camera' | 'microphone') => {\n logger('av_preview_error', { error });\n if (type === 'microphone') {\n setAudioDeviceError(error);\n } else if (type === 'camera') {\n setVideoDeviceError(error);\n }\n },\n [logger],\n );\n\n const onSuccess = useCallback(\n (stream: MediaStream) => {\n if (videoElRef.current) {\n videoElRef.current.srcObject = stream;\n }\n },\n [videoElRef],\n );\n\n const onDevicesChange = useCallback(\n (updatedDevices: IDevicesMap) => {\n setDevices(updatedDevices);\n const { audioDeviceId, videoDeviceId } = mediaManager.getSelectedDeviceDetails();\n\n setAudioDevice(audioDeviceId);\n setVideoDevice(videoDeviceId);\n },\n [mediaManager],\n );\n\n useEffect(() => {\n async function initializeMediaManager() {\n if (mediaManager) {\n await mediaManager.initialize(onSuccess, onError, onDevicesChange);\n }\n }\n initializeMediaManager();\n }, [mediaManager, onDevicesChange, onError, onSuccess, videoElRef]);\n\n const changeDevice = useCallback<IChangeDevice>(\n async (deviceId, deviceKind) => {\n if (!mediaManager || !deviceId) return;\n\n mediaManager.changeSelectedDevice(deviceId, deviceKind);\n if (deviceKind === 'video') {\n setVideoDevice(deviceId);\n } else if (deviceKind === 'audio') {\n setAudioDevice(deviceId);\n }\n },\n [mediaManager],\n );\n\n const changeAudioOutputDevice = useCallback(\n (deviceId: string) => {\n setSelectedAudioOutputDevice(deviceId);\n const videoEl = videoElRef.current;\n\n if (videoEl && 'setSinkId' in videoEl) {\n videoEl.setSinkId(deviceId).catch(error => {\n logger('av_preview_set_audio_output_device_error', {\n deviceId,\n error_name: error?.name,\n error_message: error?.message,\n });\n });\n }\n },\n [videoElRef, logger],\n );\n\n return {\n audioDeviceError,\n videoDeviceError,\n devices,\n selectedVideoDevice,\n selectedAudioDevice,\n selectedAudioOutputDevice,\n changeDevice,\n changeAudioOutputDevice,\n };\n};\n\nexport default useMediaDevices;\n"],"names":["useMediaDevices","videoElRef","logger","audioDeviceError","setAudioDeviceError","useState","videoDeviceError","setVideoDeviceError","selectedAudioDevice","setAudioDevice","selectedVideoDevice","setVideoDevice","devices","setDevices","selectedAudioOutputDevice","setSelectedAudioOutputDevice","getMediaManager","useAVActions","mediaManager","useMemo","onError","useCallback","error","type","onSuccess","stream","onDevicesChange","updatedDevices","audioDeviceId","videoDeviceId","useEffect","initializeMediaManager","changeDevice","deviceId","deviceKind","changeAudioOutputDevice","videoEl"],"mappings":";;AA0BM,MAAAA,IAAoC,CAACC,GAAYC,MAAW;AAChE,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAuB,GACjE,CAACC,GAAkBC,CAAmB,IAAIF,EAAuB,GACjE,CAACG,GAAqBC,CAAc,IAAIJ,EAAiB,GACzD,CAACK,GAAqBC,CAAc,IAAIN,EAAiB,GACzD,CAACO,GAASC,CAAU,IAAIR,EAAsB;AAAA,IAClD,OAAO,CAAC;AAAA,IACR,OAAO,CAAC;AAAA,IACR,aAAa,CAAC;AAAA,EAAA,CACf,GACK,CAACS,GAA2BC,CAA4B,IAAIV,EAAiB,GAE7E,EAAE,iBAAAW,MAAoBC,KAEtBC,IAAeC,EAAQ,MAAMH,KAAmB,CAACA,CAAe,CAAC,GAEjEI,IAAUC;AAAA,IACd,CAACC,GAAiCC,MAAkC;AAC3D,MAAArB,EAAA,oBAAoB,EAAE,OAAAoB,EAAA,CAAO,GAChCC,MAAS,eACXnB,EAAoBkB,CAAK,IAChBC,MAAS,YAClBhB,EAAoBe,CAAK;AAAA,IAE7B;AAAA,IACA,CAACpB,CAAM;AAAA,EAAA,GAGHsB,IAAYH;AAAA,IAChB,CAACI,MAAwB;AACvB,MAAIxB,EAAW,YACbA,EAAW,QAAQ,YAAYwB;AAAA,IAEnC;AAAA,IACA,CAACxB,CAAU;AAAA,EAAA,GAGPyB,IAAkBL;AAAA,IACtB,CAACM,MAAgC;AAC/B,MAAAd,EAAWc,CAAc;AACzB,YAAM,EAAE,eAAAC,GAAe,eAAAC,EAAc,IAAIX,EAAa,yBAAyB;AAE/E,MAAAT,EAAemB,CAAa,GAC5BjB,EAAekB,CAAa;AAAA,IAC9B;AAAA,IACA,CAACX,CAAY;AAAA,EAAA;AAGf,EAAAY,EAAU,MAAM;AACd,mBAAeC,IAAyB;AACtC,MAAIb,KACF,MAAMA,EAAa,WAAWM,GAAWJ,GAASM,CAAe;AAAA,IAErE;AACuB,IAAAK;EAAA,GACtB,CAACb,GAAcQ,GAAiBN,GAASI,GAAWvB,CAAU,CAAC;AAElE,QAAM+B,IAAeX;AAAA,IACnB,OAAOY,GAAUC,MAAe;AAC1B,MAAA,CAAChB,KAAgB,CAACe,MAETf,EAAA,qBAAqBe,GAAUC,CAAU,GAClDA,MAAe,UACjBvB,EAAesB,CAAQ,IACdC,MAAe,WACxBzB,EAAewB,CAAQ;AAAA,IAE3B;AAAA,IACA,CAACf,CAAY;AAAA,EAAA,GAGTiB,IAA0Bd;AAAA,IAC9B,CAACY,MAAqB;AACpB,MAAAlB,EAA6BkB,CAAQ;AACrC,YAAMG,IAAUnC,EAAW;AAEvB,MAAAmC,KAAW,eAAeA,KAC5BA,EAAQ,UAAUH,CAAQ,EAAE,MAAM,CAASX,MAAA;AACzC,QAAApB,EAAO,4CAA4C;AAAA,UACjD,UAAA+B;AAAA,UACA,YAAYX,KAAA,gBAAAA,EAAO;AAAA,UACnB,eAAeA,KAAA,gBAAAA,EAAO;AAAA,QAAA,CACvB;AAAA,MAAA,CACF;AAAA,IAEL;AAAA,IACA,CAACrB,GAAYC,CAAM;AAAA,EAAA;AAGd,SAAA;AAAA,IACL,kBAAAC;AAAA,IACA,kBAAAG;AAAA,IACA,SAAAM;AAAA,IACA,qBAAAF;AAAA,IACA,qBAAAF;AAAA,IACA,2BAAAM;AAAA,IACA,cAAAkB;AAAA,IACA,yBAAAG;AAAA,EAAA;AAEJ;"}
@@ -136,12 +136,16 @@ const F = (t, r) => {
136
136
  preference_code: n,
137
137
  preference_name: s,
138
138
  preference_description: i,
139
- lottie_key: u
139
+ preference_description_2: u,
140
+ lottie_key: c,
141
+ preference_category: d
140
142
  }) => ({
141
143
  id: n,
142
144
  label: s,
143
145
  description: i,
144
- lottie: u
146
+ lottie: c,
147
+ extendedDescription: u,
148
+ category: d
145
149
  })
146
150
  );
147
151
  }, W = (t, r, e, l, n) => {