@iblai/web-utils 1.4.0 → 1.4.1

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.
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var o = require('react');
3
+ var React = require('react');
4
4
  var dataLayer = require('@iblai/data-layer');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var iblaiApi = require('@iblai/iblai-api');
7
- var vt = require('react-dom');
7
+ require('react-dom');
8
8
  var axios = require('axios');
9
9
 
10
10
  function _interopNamespaceDefault(e) {
@@ -24,7 +24,7 @@ function _interopNamespaceDefault(e) {
24
24
  return Object.freeze(n);
25
25
  }
26
26
 
27
- var o__namespace = /*#__PURE__*/_interopNamespaceDefault(o);
27
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
28
 
29
29
  const SUBSCRIPTION_TRIGGERS = {
30
30
  PRICING_MODAL: "TRIGGER_PRICING_MODAL",
@@ -114,9 +114,9 @@ const useSubscriptionHandler = (subscriptionFlow) => {
114
114
  const [getUserApps] = dataLayer.useLazyGetUserAppsQuery();
115
115
  // Trial period state management
116
116
  const [createStripeCustomerPortal] = dataLayer.useCreateStripeCustomerPortalMutation();
117
- const [freeTrialIntervalCheckCounter, setFreeTrialIntervalCheckCounter] = o.useState(24 * 60 * 60000); // Default check every 24 hours
118
- const [trialCounterStarted, setTrialCounterStarted] = o.useState(false);
119
- const [freeTrialIntervalID, setFreeTrialIntervalID] = o.useState(0);
117
+ const [freeTrialIntervalCheckCounter, setFreeTrialIntervalCheckCounter] = React.useState(24 * 60 * 60000); // Default check every 24 hours
118
+ const [trialCounterStarted, setTrialCounterStarted] = React.useState(false);
119
+ const [freeTrialIntervalID, setFreeTrialIntervalID] = React.useState(0);
120
120
  // Utility queries and hooks
121
121
  const [getFreeUsageCount] = dataLayer.useLazyGetFreeUsageCountQuery();
122
122
  const { getTimeDifferenceBetweenTwoDates, getDayJSDurationObjFromSeconds } = useDayJs();
@@ -553,6 +553,13 @@ const MENTOR_AI_CONFIG = {
553
553
  description: "Display the accessibility menu in the mentor platform.",
554
554
  type: "boolean",
555
555
  },
556
+ {
557
+ slug: "persistent_chat_input_label",
558
+ label: "Persistent Chat Input Label",
559
+ defaultValue: false,
560
+ description: "Show a visible, persistent label above the chat input. When off, the label is available to screen readers only.",
561
+ type: "boolean",
562
+ },
556
563
  {
557
564
  slug: "mentor_include_community_mentors",
558
565
  label: "Community Mentors",
@@ -1957,7 +1964,7 @@ class SubscriptionFlowV2 {
1957
1964
  }
1958
1965
 
1959
1966
  const useExternalPricingPlan = ({ pricingModalData, userEmail, }) => {
1960
- const pricingBoxIframeRef = o.useRef(null);
1967
+ const pricingBoxIframeRef = React.useRef(null);
1961
1968
  const getIFrameReadyData = async () => {
1962
1969
  return {
1963
1970
  referenceId: (pricingModalData === null || pricingModalData === void 0 ? void 0 : pricingModalData.referenceId) || "",
@@ -1976,7 +1983,7 @@ const useExternalPricingPlan = ({ pricingModalData, userEmail, }) => {
1976
1983
  (_b = (_a = pricingBoxIframeRef === null || pricingBoxIframeRef === void 0 ? void 0 : pricingBoxIframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage(JSON.stringify({ data: dataToSend }), "*");
1977
1984
  }
1978
1985
  };
1979
- o.useEffect(() => {
1986
+ React.useEffect(() => {
1980
1987
  window.addEventListener("message", handleIframePostMessageInteractions);
1981
1988
  return () => {
1982
1989
  window.removeEventListener("message", handleIframePostMessageInteractions);
@@ -2006,16 +2013,16 @@ var hasRequiredUseSyncExternalStoreWithSelector_production;
2006
2013
  function requireUseSyncExternalStoreWithSelector_production () {
2007
2014
  if (hasRequiredUseSyncExternalStoreWithSelector_production) return useSyncExternalStoreWithSelector_production;
2008
2015
  hasRequiredUseSyncExternalStoreWithSelector_production = 1;
2009
- var React = o;
2016
+ var React$1 = React;
2010
2017
  function is(x, y) {
2011
2018
  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
2012
2019
  }
2013
2020
  var objectIs = "function" === typeof Object.is ? Object.is : is,
2014
- useSyncExternalStore = React.useSyncExternalStore,
2015
- useRef = React.useRef,
2016
- useEffect = React.useEffect,
2017
- useMemo = React.useMemo,
2018
- useDebugValue = React.useDebugValue;
2021
+ useSyncExternalStore = React$1.useSyncExternalStore,
2022
+ useRef = React$1.useRef,
2023
+ useEffect = React$1.useEffect,
2024
+ useMemo = React$1.useMemo,
2025
+ useDebugValue = React$1.useDebugValue;
2019
2026
  useSyncExternalStoreWithSelector_production.useSyncExternalStoreWithSelector = function (
2020
2027
  subscribe,
2021
2028
  getSnapshot,
@@ -2108,13 +2115,13 @@ function requireUseSyncExternalStoreWithSelector_development () {
2108
2115
  "function" ===
2109
2116
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&
2110
2117
  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
2111
- var React = o,
2118
+ var React$1 = React,
2112
2119
  objectIs = "function" === typeof Object.is ? Object.is : is,
2113
- useSyncExternalStore = React.useSyncExternalStore,
2114
- useRef = React.useRef,
2115
- useEffect = React.useEffect,
2116
- useMemo = React.useMemo,
2117
- useDebugValue = React.useDebugValue;
2120
+ useSyncExternalStore = React$1.useSyncExternalStore,
2121
+ useRef = React$1.useRef,
2122
+ useEffect = React$1.useEffect,
2123
+ useMemo = React$1.useMemo,
2124
+ useDebugValue = React$1.useDebugValue;
2118
2125
  useSyncExternalStoreWithSelector_development.useSyncExternalStoreWithSelector = function (
2119
2126
  subscribe,
2120
2127
  getSnapshot,
@@ -2241,17 +2248,17 @@ var gT = typeof globalThis !== "undefined" ? globalThis : (
2241
2248
  {}
2242
2249
  );
2243
2250
  function getContext() {
2244
- if (!o__namespace.createContext) return {};
2251
+ if (!React__namespace.createContext) return {};
2245
2252
  const contextMap = gT[ContextKey] ??= /* @__PURE__ */ new Map();
2246
- let realContext = contextMap.get(o__namespace.createContext);
2253
+ let realContext = contextMap.get(React__namespace.createContext);
2247
2254
  if (!realContext) {
2248
- realContext = o__namespace.createContext(
2255
+ realContext = React__namespace.createContext(
2249
2256
  null
2250
2257
  );
2251
2258
  if (process.env.NODE_ENV !== "production") {
2252
2259
  realContext.displayName = "ReactRedux";
2253
2260
  }
2254
- contextMap.set(o__namespace.createContext, realContext);
2261
+ contextMap.set(React__namespace.createContext, realContext);
2255
2262
  }
2256
2263
  return realContext;
2257
2264
  }
@@ -2260,7 +2267,7 @@ var ReactReduxContext = /* @__PURE__ */ getContext();
2260
2267
  // src/hooks/useReduxContext.ts
2261
2268
  function createReduxContextHook(context = ReactReduxContext) {
2262
2269
  return function useReduxContext2() {
2263
- const contextValue = o__namespace.useContext(context);
2270
+ const contextValue = React__namespace.useContext(context);
2264
2271
  if (process.env.NODE_ENV !== "production" && !contextValue) {
2265
2272
  throw new Error(
2266
2273
  "could not find react-redux context value; please ensure the component is wrapped in a <Provider>"
@@ -2321,8 +2328,8 @@ function createSelectorHook(context = ReactReduxContext) {
2321
2328
  }
2322
2329
  const reduxContext = useReduxContext2();
2323
2330
  const { store, subscription, getServerState } = reduxContext;
2324
- const firstRun = o__namespace.useRef(true);
2325
- const wrappedSelector = o__namespace.useCallback(
2331
+ const firstRun = React__namespace.useRef(true);
2332
+ const wrappedSelector = React__namespace.useCallback(
2326
2333
  {
2327
2334
  [selector.name](state) {
2328
2335
  const selected = selector(state);
@@ -2385,7 +2392,7 @@ function createSelectorHook(context = ReactReduxContext) {
2385
2392
  wrappedSelector,
2386
2393
  equalityFn
2387
2394
  );
2388
- o__namespace.useDebugValue(selectedState);
2395
+ React__namespace.useDebugValue(selectedState);
2389
2396
  return selectedState;
2390
2397
  };
2391
2398
  Object.assign(useSelector2, {
@@ -2826,14 +2833,14 @@ async function validateJwtToken(storageService) {
2826
2833
  }
2827
2834
  }
2828
2835
  function useAuthProvider({ middleware = new Map(), onAuthSuccess, onAuthFailure, redirectToAuthSpa, hasNonExpiredAuthToken, username, pathname, storageService, skipAuthCheck, token, enableStorageSync = true, }) {
2829
- const [isAuthenticating, setIsAuthenticating] = o.useState(true);
2830
- const [userIsAccessingPublicRoute, setUserIsAccessingPublicRoute] = o.useState(false);
2831
- const [initialSyncComplete, setInitialSyncComplete] = o.useState(false);
2832
- const cookieCheckIntervalRef = o.useRef(null);
2833
- const lastLogoutTimestampRef = o.useRef(null);
2836
+ const [isAuthenticating, setIsAuthenticating] = React.useState(true);
2837
+ const [userIsAccessingPublicRoute, setUserIsAccessingPublicRoute] = React.useState(false);
2838
+ const [initialSyncComplete, setInitialSyncComplete] = React.useState(false);
2839
+ const cookieCheckIntervalRef = React.useRef(null);
2840
+ const lastLogoutTimestampRef = React.useRef(null);
2834
2841
  // Guard to prevent poll from firing after a redirect has been initiated.
2835
2842
  // Once set, no further redirects or cookie syncs will happen.
2836
- const isRedirectingRef = o.useRef(false);
2843
+ const isRedirectingRef = React.useRef(false);
2837
2844
  // RTK Query hook for refreshing JWT token
2838
2845
  const [refreshJwtToken] = dataLayer.useLazyRefreshJwtTokenQuery();
2839
2846
  /**
@@ -2869,7 +2876,7 @@ function useAuthProvider({ middleware = new Map(), onAuthSuccess, onAuthFailure,
2869
2876
  * On React Native, this is a no-op
2870
2877
  * Skipped if enableStorageSync is false
2871
2878
  */
2872
- o.useEffect(() => {
2879
+ React.useEffect(() => {
2873
2880
  console.log("[AuthProvider] cookie-sync effect running", {
2874
2881
  pathname,
2875
2882
  enableStorageSync,
@@ -2974,7 +2981,7 @@ function useAuthProvider({ middleware = new Map(), onAuthSuccess, onAuthFailure,
2974
2981
  * On React Native, this is a no-op
2975
2982
  * Skipped if enableStorageSync is false
2976
2983
  */
2977
- o.useEffect(() => {
2984
+ React.useEffect(() => {
2978
2985
  if (!storageService || !isWeb$1() || !enableStorageSync)
2979
2986
  return;
2980
2987
  const handleStorageChange = async (event) => {
@@ -3074,7 +3081,7 @@ function useAuthProvider({ middleware = new Map(), onAuthSuccess, onAuthFailure,
3074
3081
  safeRedirectToAuthSpa();
3075
3082
  }
3076
3083
  }
3077
- o.useEffect(() => {
3084
+ React.useEffect(() => {
3078
3085
  // Wait for initial sync to complete before performing auth check
3079
3086
  if (!initialSyncComplete) {
3080
3087
  console.log("[useAuthProvider] Waiting for initial sync to complete...");
@@ -3107,13 +3114,13 @@ function useAuthProvider({ middleware = new Map(), onAuthSuccess, onAuthFailure,
3107
3114
  setUserIsAccessingPublicRoute,
3108
3115
  };
3109
3116
  }
3110
- const AuthContext = o.createContext(undefined);
3117
+ const AuthContext = React.createContext(undefined);
3111
3118
  /**
3112
3119
  * Hook to access the auth context
3113
3120
  * @throws Error if used outside of AuthContextProvider
3114
3121
  */
3115
3122
  const useAuthContext = () => {
3116
- const context = o.useContext(AuthContext);
3123
+ const context = React.useContext(AuthContext);
3117
3124
  if (!context)
3118
3125
  console.error("useAuthContext must be used within a provider");
3119
3126
  return context;
@@ -3196,7 +3203,7 @@ function AuthProvider({ children, fallback, middleware = new Map(), onAuthSucces
3196
3203
  const isWeb = () => {
3197
3204
  return typeof window !== "undefined" && typeof document !== "undefined";
3198
3205
  };
3199
- const TenantContext = o.createContext(undefined);
3206
+ const TenantContext = React.createContext(undefined);
3200
3207
  /**
3201
3208
  * Context Provider component that wraps children with tenant context
3202
3209
  */
@@ -3205,7 +3212,7 @@ const TenantContextProvider = ({ value, children }) => (jsxRuntime.jsx(TenantCon
3205
3212
  * Hook to access the tenant context
3206
3213
  * @returns TenantContextType
3207
3214
  */
3208
- const useTenantContext = () => o.useContext(TenantContext);
3215
+ const useTenantContext = () => React.useContext(TenantContext);
3209
3216
  /**
3210
3217
  * TenantProvider Component
3211
3218
  *
@@ -3222,20 +3229,20 @@ function TenantProvider({ children, fallback, onAuthSuccess, onAuthFailure, curr
3222
3229
  return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
3223
3230
  }
3224
3231
  const { userIsAccessingPublicRoute, setUserIsAccessingPublicRoute } = useAuthContext();
3225
- const [determineUserPath, setDetermineUserPath] = o.useState(false);
3226
- const [isLoading, setIsLoading] = o.useState(true);
3232
+ const [determineUserPath, setDetermineUserPath] = React.useState(false);
3233
+ const [isLoading, setIsLoading] = React.useState(true);
3227
3234
  const [fetchUserTenants] = dataLayer.useLazyGetUserTenantsQuery();
3228
3235
  const [getUserApps] = dataLayer.useLazyGetUserAppsQuery();
3229
3236
  const [joinTenant] = dataLayer.useJoinTenantMutation();
3230
3237
  const [fetchTenantMetadata] = dataLayer.useLazyGetTenantMetadataQuery();
3231
3238
  const [getAppToken] = dataLayer.useGetAppTokensMutation();
3232
- const [tenantKey, setTenantKey] = o.useState(currentTenant);
3233
- const [metadata, setMetadata] = o.useState({});
3239
+ const [tenantKey, setTenantKey] = React.useState(currentTenant);
3240
+ const [metadata, setMetadata] = React.useState({});
3234
3241
  // Fetch custom domain to get platform_key
3235
3242
  const currentDomain = typeof window !== "undefined" ? window.location.hostname : "";
3236
3243
  const { data: customDomainData, isLoading: isLoadingCustomDomain, isError: isCustomDomainError, } = dataLayer.useGetCustomDomainsQuery({ params: { domain: currentDomain } }, { skip: !isWeb() || !currentDomain || skipCustomDomainCheck });
3237
3244
  // Extract platform_key from custom domain response to use as requestedTenant
3238
- const { customDomainPlatformKey, isAdvertisingTenant } = o.useMemo(() => {
3245
+ const { customDomainPlatformKey, isAdvertisingTenant } = React.useMemo(() => {
3239
3246
  let platformKey;
3240
3247
  let isAdvertising = false;
3241
3248
  if (customDomainData &&
@@ -3606,7 +3613,7 @@ function TenantProvider({ children, fallback, onAuthSuccess, onAuthFailure, curr
3606
3613
  }
3607
3614
  }
3608
3615
  // Effect to handle tenant determination when auth state changes
3609
- o.useEffect(() => {
3616
+ React.useEffect(() => {
3610
3617
  // Wait for custom domain query to complete (unless skipped or error)
3611
3618
  const customDomainQuerySkipped = !isWeb() || !currentDomain;
3612
3619
  if (!customDomainQuerySkipped && isLoadingCustomDomain) {
@@ -3685,7 +3692,7 @@ function MentorProvider({ children, fallback, onAuthSuccess, onAuthFailure, redi
3685
3692
  if (skip) {
3686
3693
  return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
3687
3694
  }
3688
- const [isLoading, setIsLoading] = o.useState(true);
3695
+ const [isLoading, setIsLoading] = React.useState(true);
3689
3696
  const { userIsAccessingPublicRoute, isLoggedIn } = useAuthContext();
3690
3697
  const { determineUserPath, tenantKey, metadata } = useTenantContext();
3691
3698
  const isMainTenant = tenantKey === mainTenantKey;
@@ -4022,7 +4029,7 @@ function MentorProvider({ children, fallback, onAuthSuccess, onAuthFailure, redi
4022
4029
  }
4023
4030
  }
4024
4031
  // Effect to handle mentor determination when tenant path is determined
4025
- o.useEffect(() => {
4032
+ React.useEffect(() => {
4026
4033
  async function checkMentor() {
4027
4034
  console.log("starting mentor check process", determineUserPath, requestedMentorId, tenantKey, userIsAccessingPublicRoute, window.location.href);
4028
4035
  if (userIsAccessingPublicRoute && !requestedMentorId) {
@@ -6462,43 +6469,43 @@ class TimeTracker {
6462
6469
 
6463
6470
  function useTimeTracker(config) {
6464
6471
  var _a;
6465
- const trackerRef = o.useRef(null);
6466
- const enabledRef = o.useRef((_a = config.enabled) !== null && _a !== void 0 ? _a : true);
6467
- const defaultGetCurrentUrl = o.useCallback(() => {
6472
+ const trackerRef = React.useRef(null);
6473
+ const enabledRef = React.useRef((_a = config.enabled) !== null && _a !== void 0 ? _a : true);
6474
+ const defaultGetCurrentUrl = React.useCallback(() => {
6468
6475
  if (typeof window !== "undefined") {
6469
6476
  return window.location.pathname + window.location.search;
6470
6477
  }
6471
6478
  return "/";
6472
6479
  }, []);
6473
6480
  const getCurrentUrl = config.getCurrentUrl || defaultGetCurrentUrl;
6474
- const defaultOnRouteChange = o.useCallback(() => {
6481
+ const defaultOnRouteChange = React.useCallback(() => {
6475
6482
  // No-op for platforms that don't support route change events
6476
6483
  return () => { };
6477
6484
  }, []);
6478
6485
  const onRouteChange = config.onRouteChange || defaultOnRouteChange;
6479
- const pause = o.useCallback(() => {
6486
+ const pause = React.useCallback(() => {
6480
6487
  if (trackerRef.current) {
6481
6488
  trackerRef.current.pause();
6482
6489
  }
6483
6490
  }, []);
6484
- const resume = o.useCallback(() => {
6491
+ const resume = React.useCallback(() => {
6485
6492
  if (trackerRef.current) {
6486
6493
  trackerRef.current.resume();
6487
6494
  }
6488
6495
  }, []);
6489
- const getTimeSpentSinceLastReset = o.useCallback(() => {
6496
+ const getTimeSpentSinceLastReset = React.useCallback(() => {
6490
6497
  if (trackerRef.current) {
6491
6498
  return trackerRef.current.getTimeSpentSinceLastReset();
6492
6499
  }
6493
6500
  return 0;
6494
6501
  }, []);
6495
- const getTrackerCurrentUrl = o.useCallback(() => {
6502
+ const getTrackerCurrentUrl = React.useCallback(() => {
6496
6503
  if (trackerRef.current) {
6497
6504
  return trackerRef.current.getCurrentUrl();
6498
6505
  }
6499
6506
  return getCurrentUrl();
6500
6507
  }, [getCurrentUrl]);
6501
- o.useEffect(() => {
6508
+ React.useEffect(() => {
6502
6509
  var _a;
6503
6510
  enabledRef.current = (_a = config.enabled) !== null && _a !== void 0 ? _a : true;
6504
6511
  if (enabledRef.current) {
@@ -6522,7 +6529,7 @@ function useTimeTracker(config) {
6522
6529
  getCurrentUrl,
6523
6530
  onRouteChange,
6524
6531
  ]);
6525
- o.useEffect(() => {
6532
+ React.useEffect(() => {
6526
6533
  var _a;
6527
6534
  if (config.enabled !== enabledRef.current) {
6528
6535
  if (config.enabled && !trackerRef.current) {
@@ -6557,34 +6564,34 @@ function useTimeTracker(config) {
6557
6564
 
6558
6565
  function useTimeTrackerNative(config) {
6559
6566
  var _a;
6560
- const trackerRef = o.useRef(null);
6561
- const enabledRef = o.useRef((_a = config.enabled) !== null && _a !== void 0 ? _a : true);
6562
- const getCurrentUrl = o.useCallback(() => {
6567
+ const trackerRef = React.useRef(null);
6568
+ const enabledRef = React.useRef((_a = config.enabled) !== null && _a !== void 0 ? _a : true);
6569
+ const getCurrentUrl = React.useCallback(() => {
6563
6570
  return config.getCurrentRoute();
6564
6571
  }, [config]);
6565
- const pause = o.useCallback(() => {
6572
+ const pause = React.useCallback(() => {
6566
6573
  if (trackerRef.current) {
6567
6574
  trackerRef.current.pause();
6568
6575
  }
6569
6576
  }, []);
6570
- const resume = o.useCallback(() => {
6577
+ const resume = React.useCallback(() => {
6571
6578
  if (trackerRef.current) {
6572
6579
  trackerRef.current.resume();
6573
6580
  }
6574
6581
  }, []);
6575
- const getTimeSpentSinceLastReset = o.useCallback(() => {
6582
+ const getTimeSpentSinceLastReset = React.useCallback(() => {
6576
6583
  if (trackerRef.current) {
6577
6584
  return trackerRef.current.getTimeSpentSinceLastReset();
6578
6585
  }
6579
6586
  return 0;
6580
6587
  }, []);
6581
- const getTrackerCurrentUrl = o.useCallback(() => {
6588
+ const getTrackerCurrentUrl = React.useCallback(() => {
6582
6589
  if (trackerRef.current) {
6583
6590
  return trackerRef.current.getCurrentUrl();
6584
6591
  }
6585
6592
  return getCurrentUrl();
6586
6593
  }, [getCurrentUrl]);
6587
- o.useEffect(() => {
6594
+ React.useEffect(() => {
6588
6595
  var _a;
6589
6596
  enabledRef.current = (_a = config.enabled) !== null && _a !== void 0 ? _a : true;
6590
6597
  if (enabledRef.current) {
@@ -6608,7 +6615,7 @@ function useTimeTrackerNative(config) {
6608
6615
  config.onRouteChange,
6609
6616
  getCurrentUrl,
6610
6617
  ]);
6611
- o.useEffect(() => {
6618
+ React.useEffect(() => {
6612
6619
  var _a;
6613
6620
  if (config.enabled !== enabledRef.current) {
6614
6621
  if (config.enabled && !trackerRef.current) {
@@ -7092,45 +7099,45 @@ function isTauriApp() {
7092
7099
  }
7093
7100
  const useChat = ({ wsUrl, wsToken, flowConfig, sessionId, stopGenerationWsUrl, enableHaptics = false, hapticFeedback, store, errorHandler, onStatusChange, onStreamingChange, onStreamingMessageUpdate, WebSocketImpl = WebSocket, redirectToAuthSpa, sendMessageToParentWebsite, on402Error, onOAuthRequired, onOAuthResolved, onOfflineWithoutLocalLLM, isOffline = false, }) => {
7094
7101
  const dispatch = useDispatch();
7095
- const isWebSocketPaused = o.useRef(false);
7096
- const ws = o.useRef(null);
7097
- const isConnected = o.useRef(false);
7098
- const messageQueue = o.useRef([]);
7102
+ const isWebSocketPaused = React.useRef(false);
7103
+ const ws = React.useRef(null);
7104
+ const isConnected = React.useRef(false);
7105
+ const messageQueue = React.useRef([]);
7099
7106
  // Keep sessionId in a ref so sendMessage always reads the latest value,
7100
7107
  // avoiding stale closures when Redux updates sessionIds between renders.
7101
- const sessionIdRef = o.useRef(sessionId);
7108
+ const sessionIdRef = React.useRef(sessionId);
7102
7109
  sessionIdRef.current = sessionId;
7103
- const currentStreamingMessage = o.useRef({
7110
+ const currentStreamingMessage = React.useRef({
7104
7111
  id: null,
7105
7112
  content: "",
7106
7113
  });
7107
7114
  // Track artifact state during streaming
7108
- const currentArtifact = o.useRef(null);
7115
+ const currentArtifact = React.useRef(null);
7109
7116
  // Store pending artifact version to add when message is finalized (eos)
7110
7117
  // This is needed because artifact_end can fire before eos
7111
- const pendingArtifactVersion = o.useRef(null);
7118
+ const pendingArtifactVersion = React.useRef(null);
7112
7119
  // Content buffer for batching artifact streaming updates
7113
7120
  // This prevents excessive state updates and the "Maximum update depth exceeded" error
7114
- const artifactContentBuffer = o.useRef({
7121
+ const artifactContentBuffer = React.useRef({
7115
7122
  content: "",
7116
7123
  lastFlushTime: 0,
7117
7124
  flushTimer: null,
7118
7125
  });
7119
- const stopGenerationSocket = o.useRef(null);
7120
- const isInitialConnection = o.useRef(true);
7121
- const connectionAttempts = o.useRef(0);
7126
+ const stopGenerationSocket = React.useRef(null);
7127
+ const isInitialConnection = React.useRef(true);
7128
+ const connectionAttempts = React.useRef(0);
7122
7129
  const { userIsAccessingPublicRoute } = useAuthContext();
7123
7130
  const iframeContext = useSelector(selectIframeContext);
7124
7131
  const chatMetadata = useSelector(selectMetadata);
7125
7132
  const documentFilter = useSelector(selectDocumentFilter);
7126
7133
  const linkToken = useSelector(selectToken);
7127
7134
  // Ollama/offline mode state
7128
- const ollamaAbortController = o.useRef(null);
7129
- const ollamaConversationHistory = o.useRef([]);
7135
+ const ollamaAbortController = React.useRef(null);
7136
+ const ollamaConversationHistory = React.useRef([]);
7130
7137
  // Track offline state in a ref so event handlers can access current value
7131
7138
  // Note: This ref is updated in the main useEffect that handles offline changes
7132
- const isOfflineRef = o.useRef(isOffline);
7133
- const triggerHapticFeedback = o.useCallback(async () => {
7139
+ const isOfflineRef = React.useRef(isOffline);
7140
+ const triggerHapticFeedback = React.useCallback(async () => {
7134
7141
  if (enableHaptics && hapticFeedback) {
7135
7142
  try {
7136
7143
  await hapticFeedback.impactAsync("medium");
@@ -7983,7 +7990,7 @@ const useChat = ({ wsUrl, wsToken, flowConfig, sessionId, stopGenerationWsUrl, e
7983
7990
  });
7984
7991
  });
7985
7992
  };
7986
- const sendMessage = o.useCallback(async (tab, text, options) => {
7993
+ const sendMessage = React.useCallback(async (tab, text, options) => {
7987
7994
  var _a, _b;
7988
7995
  dispatch(chatActions.setShowingSharedChat(false));
7989
7996
  // Allow sending if there's text OR file references
@@ -8264,7 +8271,7 @@ const useChat = ({ wsUrl, wsToken, flowConfig, sessionId, stopGenerationWsUrl, e
8264
8271
  onStreamingMessageUpdate === null || onStreamingMessageUpdate === void 0 ? void 0 : onStreamingMessageUpdate(currentStreamingMessage.current);
8265
8272
  };
8266
8273
  // Initialize WebSocket on mount and handle offline changes
8267
- o.useEffect(() => {
8274
+ React.useEffect(() => {
8268
8275
  var _a;
8269
8276
  // IMPORTANT: Update the ref FIRST before any socket operations
8270
8277
  // This ensures error handlers see the correct offline state immediately
@@ -8294,7 +8301,7 @@ const useChat = ({ wsUrl, wsToken, flowConfig, sessionId, stopGenerationWsUrl, e
8294
8301
  resetConnection();
8295
8302
  };
8296
8303
  }, [isOffline]);
8297
- o.useEffect(() => {
8304
+ React.useEffect(() => {
8298
8305
  sendMessageToParentWebsite === null || sendMessageToParentWebsite === void 0 ? void 0 : sendMessageToParentWebsite({ loaded: true, auth: { ...localStorage } });
8299
8306
  }, []);
8300
8307
  return {
@@ -12880,7 +12887,7 @@ function safeAssign(target, ...args) {
12880
12887
  // src/query/react/constants.ts
12881
12888
  var UNINITIALIZED_VALUE = Symbol();
12882
12889
  function useStableQueryArgs(queryArgs, serialize, endpointDefinition, endpointName) {
12883
- const incoming = o.useMemo(() => ({
12890
+ const incoming = React.useMemo(() => ({
12884
12891
  queryArgs,
12885
12892
  serialized: typeof queryArgs == "object" ? serialize({
12886
12893
  queryArgs,
@@ -12888,8 +12895,8 @@ function useStableQueryArgs(queryArgs, serialize, endpointDefinition, endpointNa
12888
12895
  endpointName
12889
12896
  }) : queryArgs
12890
12897
  }), [queryArgs, serialize, endpointDefinition, endpointName]);
12891
- const cache = o.useRef(incoming);
12892
- o.useEffect(() => {
12898
+ const cache = React.useRef(incoming);
12899
+ React.useEffect(() => {
12893
12900
  if (cache.current.serialized !== incoming.serialized) {
12894
12901
  cache.current = incoming;
12895
12902
  }
@@ -12897,8 +12904,8 @@ function useStableQueryArgs(queryArgs, serialize, endpointDefinition, endpointNa
12897
12904
  return cache.current.serialized === incoming.serialized ? cache.current.queryArgs : queryArgs;
12898
12905
  }
12899
12906
  function useShallowStableValue(value) {
12900
- const cache = o.useRef(value);
12901
- o.useEffect(() => {
12907
+ const cache = React.useRef(value);
12908
+ React.useEffect(() => {
12902
12909
  if (!shallowEqual(cache.current, value)) {
12903
12910
  cache.current = value;
12904
12911
  }
@@ -12911,7 +12918,7 @@ var canUseDOM = () => !!(typeof window !== "undefined" && typeof window.document
12911
12918
  var isDOM = /* @__PURE__ */ canUseDOM();
12912
12919
  var isRunningInReactNative = () => typeof navigator !== "undefined" && navigator.product === "ReactNative";
12913
12920
  var isReactNative = /* @__PURE__ */ isRunningInReactNative();
12914
- var getUseIsomorphicLayoutEffect = () => isDOM || isReactNative ? o.useLayoutEffect : o.useEffect;
12921
+ var getUseIsomorphicLayoutEffect = () => isDOM || isReactNative ? React.useLayoutEffect : React.useEffect;
12915
12922
  var useIsomorphicLayoutEffect = /* @__PURE__ */ getUseIsomorphicLayoutEffect();
12916
12923
  var noPendingQueryStateSelector = (selected) => {
12917
12924
  if (selected.isUninitialized) {
@@ -12948,7 +12955,7 @@ function buildHooks({
12948
12955
  serializeQueryArgs,
12949
12956
  context
12950
12957
  }) {
12951
- const usePossiblyImmediateEffect = unstable__sideEffectsInRender ? (cb) => cb() : o.useEffect;
12958
+ const usePossiblyImmediateEffect = unstable__sideEffectsInRender ? (cb) => cb() : React.useEffect;
12952
12959
  return {
12953
12960
  buildQueryHooks,
12954
12961
  buildInfiniteQueryHooks,
@@ -13020,7 +13027,7 @@ function buildHooks({
13020
13027
  function usePrefetch(endpointName, defaultOptions) {
13021
13028
  const dispatch = useDispatch();
13022
13029
  const stableDefaultOptions = useShallowStableValue(defaultOptions);
13023
- return o.useCallback((arg, options) => dispatch(api.util.prefetch(endpointName, arg, {
13030
+ return React.useCallback((arg, options) => dispatch(api.util.prefetch(endpointName, arg, {
13024
13031
  ...stableDefaultOptions,
13025
13032
  ...options
13026
13033
  })), [endpointName, dispatch, stableDefaultOptions]);
@@ -13038,7 +13045,7 @@ function buildHooks({
13038
13045
  initiate
13039
13046
  } = api.endpoints[endpointName];
13040
13047
  const dispatch = useDispatch();
13041
- const subscriptionSelectorsRef = o.useRef(void 0);
13048
+ const subscriptionSelectorsRef = React.useRef(void 0);
13042
13049
  if (!subscriptionSelectorsRef.current) {
13043
13050
  const returnedValue = dispatch(api.internalActions.internal_getRTKQSubscriptions());
13044
13051
  if (process.env.NODE_ENV !== "production") {
@@ -13068,7 +13075,7 @@ function buildHooks({
13068
13075
  });
13069
13076
  const initialPageParam = rest.initialPageParam;
13070
13077
  const stableInitialPageParam = useShallowStableValue(initialPageParam);
13071
- const promiseRef = o.useRef(void 0);
13078
+ const promiseRef = React.useRef(void 0);
13072
13079
  let {
13073
13080
  queryCacheKey,
13074
13081
  requestId
@@ -13119,8 +13126,8 @@ function buildHooks({
13119
13126
  select
13120
13127
  } = api.endpoints[endpointName];
13121
13128
  const stableArg = useStableQueryArgs(skip ? skipToken : arg, serializeQueryArgs, context.endpointDefinitions[endpointName], endpointName);
13122
- const lastValue = o.useRef(void 0);
13123
- const selectDefaultResult = o.useMemo(() => (
13129
+ const lastValue = React.useRef(void 0);
13130
+ const selectDefaultResult = React.useMemo(() => (
13124
13131
  // Normally ts-ignores are bad and should be avoided, but we're
13125
13132
  // already casting this selector to be `Selector<any>` anyway,
13126
13133
  // so the inconsistencies don't matter here
@@ -13136,7 +13143,7 @@ function buildHooks({
13136
13143
  }
13137
13144
  })
13138
13145
  ), [select, stableArg]);
13139
- const querySelector = o.useMemo(() => selectFromResult ? createSelector([selectDefaultResult], selectFromResult, {
13146
+ const querySelector = React.useMemo(() => selectFromResult ? createSelector([selectDefaultResult], selectFromResult, {
13140
13147
  devModeChecks: {
13141
13148
  identityFunctionCheck: "never"
13142
13149
  }
@@ -13152,7 +13159,7 @@ function buildHooks({
13152
13159
  return useQueryState;
13153
13160
  }
13154
13161
  function usePromiseRefUnsubscribeOnUnmount(promiseRef) {
13155
- o.useEffect(() => {
13162
+ React.useEffect(() => {
13156
13163
  return () => {
13157
13164
  promiseRef.current?.unsubscribe?.();
13158
13165
  promiseRef.current = void 0;
@@ -13167,7 +13174,7 @@ function buildHooks({
13167
13174
  const useQuerySubscription = (arg, options = {}) => {
13168
13175
  const [promiseRef] = useQuerySubscriptionCommonImpl(endpointName, arg, options);
13169
13176
  usePromiseRefUnsubscribeOnUnmount(promiseRef);
13170
- return o.useMemo(() => ({
13177
+ return React.useMemo(() => ({
13171
13178
  /**
13172
13179
  * A method to manually refetch data for the query
13173
13180
  */
@@ -13184,8 +13191,8 @@ function buildHooks({
13184
13191
  initiate
13185
13192
  } = api.endpoints[endpointName];
13186
13193
  const dispatch = useDispatch();
13187
- const [arg, setArg] = o.useState(UNINITIALIZED_VALUE);
13188
- const promiseRef = o.useRef(void 0);
13194
+ const [arg, setArg] = React.useState(UNINITIALIZED_VALUE);
13195
+ const promiseRef = React.useRef(void 0);
13189
13196
  const stableSubscriptionOptions = useShallowStableValue({
13190
13197
  refetchOnReconnect,
13191
13198
  refetchOnFocus,
@@ -13198,11 +13205,11 @@ function buildHooks({
13198
13205
  promiseRef.current?.updateSubscriptionOptions(stableSubscriptionOptions);
13199
13206
  }
13200
13207
  }, [stableSubscriptionOptions]);
13201
- const subscriptionOptionsRef = o.useRef(stableSubscriptionOptions);
13208
+ const subscriptionOptionsRef = React.useRef(stableSubscriptionOptions);
13202
13209
  usePossiblyImmediateEffect(() => {
13203
13210
  subscriptionOptionsRef.current = stableSubscriptionOptions;
13204
13211
  }, [stableSubscriptionOptions]);
13205
- const trigger = o.useCallback(function(arg2, preferCacheValue = false) {
13212
+ const trigger = React.useCallback(function(arg2, preferCacheValue = false) {
13206
13213
  let promise;
13207
13214
  batch(() => {
13208
13215
  promiseRef.current?.unsubscribe();
@@ -13214,24 +13221,24 @@ function buildHooks({
13214
13221
  });
13215
13222
  return promise;
13216
13223
  }, [dispatch, initiate]);
13217
- const reset = o.useCallback(() => {
13224
+ const reset = React.useCallback(() => {
13218
13225
  if (promiseRef.current?.queryCacheKey) {
13219
13226
  dispatch(api.internalActions.removeQueryResult({
13220
13227
  queryCacheKey: promiseRef.current?.queryCacheKey
13221
13228
  }));
13222
13229
  }
13223
13230
  }, [dispatch]);
13224
- o.useEffect(() => {
13231
+ React.useEffect(() => {
13225
13232
  return () => {
13226
13233
  promiseRef?.current?.unsubscribe();
13227
13234
  };
13228
13235
  }, []);
13229
- o.useEffect(() => {
13236
+ React.useEffect(() => {
13230
13237
  if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {
13231
13238
  trigger(arg, true);
13232
13239
  }
13233
13240
  }, [arg, trigger]);
13234
- return o.useMemo(() => [trigger, arg, {
13241
+ return React.useMemo(() => [trigger, arg, {
13235
13242
  reset
13236
13243
  }], [trigger, arg, reset]);
13237
13244
  };
@@ -13248,10 +13255,10 @@ function buildHooks({
13248
13255
  ...options,
13249
13256
  skip: arg === UNINITIALIZED_VALUE
13250
13257
  });
13251
- const info = o.useMemo(() => ({
13258
+ const info = React.useMemo(() => ({
13252
13259
  lastArg: arg
13253
13260
  }), [arg]);
13254
- return o.useMemo(() => [trigger, {
13261
+ return React.useMemo(() => [trigger, {
13255
13262
  ...queryStateResults,
13256
13263
  reset
13257
13264
  }, info], [trigger, queryStateResults, reset, info]);
@@ -13263,8 +13270,8 @@ function buildHooks({
13263
13270
  ...options
13264
13271
  });
13265
13272
  const debugValue = pick(queryStateResults, ...COMMON_HOOK_DEBUG_FIELDS);
13266
- o.useDebugValue(debugValue);
13267
- return o.useMemo(() => ({
13273
+ React.useDebugValue(debugValue);
13274
+ return React.useMemo(() => ({
13268
13275
  ...queryStateResults,
13269
13276
  ...querySubscriptionResults
13270
13277
  }), [queryStateResults, querySubscriptionResults]);
@@ -13274,11 +13281,11 @@ function buildHooks({
13274
13281
  function buildInfiniteQueryHooks(endpointName) {
13275
13282
  const useInfiniteQuerySubscription = (arg, options = {}) => {
13276
13283
  const [promiseRef, dispatch, initiate, stableSubscriptionOptions] = useQuerySubscriptionCommonImpl(endpointName, arg, options);
13277
- const subscriptionOptionsRef = o.useRef(stableSubscriptionOptions);
13284
+ const subscriptionOptionsRef = React.useRef(stableSubscriptionOptions);
13278
13285
  usePossiblyImmediateEffect(() => {
13279
13286
  subscriptionOptionsRef.current = stableSubscriptionOptions;
13280
13287
  }, [stableSubscriptionOptions]);
13281
- const trigger = o.useCallback(function(arg2, direction) {
13288
+ const trigger = React.useCallback(function(arg2, direction) {
13282
13289
  let promise;
13283
13290
  batch(() => {
13284
13291
  promiseRef.current?.unsubscribe();
@@ -13301,8 +13308,8 @@ function buildHooks({
13301
13308
  context.endpointDefinitions[endpointName],
13302
13309
  endpointName
13303
13310
  );
13304
- const refetch = o.useCallback(() => refetchOrErrorIfUnmounted(promiseRef), [promiseRef]);
13305
- return o.useMemo(() => {
13311
+ const refetch = React.useCallback(() => refetchOrErrorIfUnmounted(promiseRef), [promiseRef]);
13312
+ return React.useMemo(() => {
13306
13313
  const fetchNextPage = () => {
13307
13314
  return trigger(stableArg, "forward");
13308
13315
  };
@@ -13335,8 +13342,8 @@ function buildHooks({
13335
13342
  ...options
13336
13343
  });
13337
13344
  const debugValue = pick(queryStateResults, ...COMMON_HOOK_DEBUG_FIELDS, "hasNextPage", "hasPreviousPage");
13338
- o.useDebugValue(debugValue);
13339
- return o.useMemo(() => ({
13345
+ React.useDebugValue(debugValue);
13346
+ return React.useMemo(() => ({
13340
13347
  ...queryStateResults,
13341
13348
  fetchNextPage,
13342
13349
  fetchPreviousPage,
@@ -13355,13 +13362,13 @@ function buildHooks({
13355
13362
  initiate
13356
13363
  } = api.endpoints[name];
13357
13364
  const dispatch = useDispatch();
13358
- const [promise, setPromise] = o.useState();
13359
- o.useEffect(() => () => {
13365
+ const [promise, setPromise] = React.useState();
13366
+ React.useEffect(() => () => {
13360
13367
  if (!promise?.arg.fixedCacheKey) {
13361
13368
  promise?.reset();
13362
13369
  }
13363
13370
  }, [promise]);
13364
- const triggerMutation = o.useCallback(function(arg) {
13371
+ const triggerMutation = React.useCallback(function(arg) {
13365
13372
  const promise2 = dispatch(initiate(arg, {
13366
13373
  fixedCacheKey
13367
13374
  }));
@@ -13371,14 +13378,14 @@ function buildHooks({
13371
13378
  const {
13372
13379
  requestId
13373
13380
  } = promise || {};
13374
- const selectDefaultResult = o.useMemo(() => select({
13381
+ const selectDefaultResult = React.useMemo(() => select({
13375
13382
  fixedCacheKey,
13376
13383
  requestId: promise?.requestId
13377
13384
  }), [fixedCacheKey, promise, select]);
13378
- const mutationSelector = o.useMemo(() => selectFromResult ? createSelector([selectDefaultResult], selectFromResult) : selectDefaultResult, [selectFromResult, selectDefaultResult]);
13385
+ const mutationSelector = React.useMemo(() => selectFromResult ? createSelector([selectDefaultResult], selectFromResult) : selectDefaultResult, [selectFromResult, selectDefaultResult]);
13379
13386
  const currentState = useSelector(mutationSelector, shallowEqual);
13380
13387
  const originalArgs = fixedCacheKey == null ? promise?.arg.originalArgs : void 0;
13381
- const reset = o.useCallback(() => {
13388
+ const reset = React.useCallback(() => {
13382
13389
  batch(() => {
13383
13390
  if (promise) {
13384
13391
  setPromise(void 0);
@@ -13392,13 +13399,13 @@ function buildHooks({
13392
13399
  });
13393
13400
  }, [dispatch, fixedCacheKey, promise, requestId]);
13394
13401
  const debugValue = pick(currentState, ...COMMON_HOOK_DEBUG_FIELDS, "endpointName");
13395
- o.useDebugValue(debugValue);
13396
- const finalState = o.useMemo(() => ({
13402
+ React.useDebugValue(debugValue);
13403
+ const finalState = React.useMemo(() => ({
13397
13404
  ...currentState,
13398
13405
  originalArgs,
13399
13406
  reset
13400
13407
  }), [currentState, originalArgs, reset]);
13401
- return o.useMemo(() => [triggerMutation, finalState], [triggerMutation, finalState]);
13408
+ return React.useMemo(() => [triggerMutation, finalState], [triggerMutation, finalState]);
13402
13409
  };
13403
13410
  }
13404
13411
  }
@@ -18479,10 +18486,10 @@ function useAdvancedChat({ tenantKey, mentorId, username = ANONYMOUS_USERNAME, t
18479
18486
  isOffline,
18480
18487
  onOfflineWithoutLocalLLM,
18481
18488
  });
18482
- const [isLoadingChats, setIsLoadingChats] = o.useState(true);
18489
+ const [isLoadingChats, setIsLoadingChats] = React.useState(true);
18483
18490
  const [getSessionChats] = dataLayer.useLazyGetSessionIdQuery();
18484
18491
  const [getSharedSessionChats] = dataLayer.useLazyGetSharedSessionIdQuery();
18485
- const getChats = o.useCallback(async () => {
18492
+ const getChats = React.useCallback(async () => {
18486
18493
  var _a, _b, _c, _d;
18487
18494
  let data;
18488
18495
  try {
@@ -18579,7 +18586,7 @@ function useAdvancedChat({ tenantKey, mentorId, username = ANONYMOUS_USERNAME, t
18579
18586
  getSessionChats,
18580
18587
  dispatch,
18581
18588
  ]);
18582
- o.useEffect(() => {
18589
+ React.useEffect(() => {
18583
18590
  if (cachedSessionId === null || cachedSessionId === void 0 ? void 0 : cachedSessionId[mentorId]) {
18584
18591
  dispatch(chatActions.updateSessionIds(cachedSessionId === null || cachedSessionId === void 0 ? void 0 : cachedSessionId[mentorId]));
18585
18592
  // Skip fetching previous chats when offline
@@ -18594,7 +18601,7 @@ function useAdvancedChat({ tenantKey, mentorId, username = ANONYMOUS_USERNAME, t
18594
18601
  setIsLoadingChats(false);
18595
18602
  }
18596
18603
  }, [cachedSessionId, isOffline]);
18597
- const startNewChat = o.useCallback(async () => {
18604
+ const startNewChat = React.useCallback(async () => {
18598
18605
  // Reset all chat state
18599
18606
  if (!showingSharedChat) {
18600
18607
  dispatch(chatActions.resetChats(undefined));
@@ -18655,7 +18662,7 @@ function useAdvancedChat({ tenantKey, mentorId, username = ANONYMOUS_USERNAME, t
18655
18662
  dispatch,
18656
18663
  errorHandler,
18657
18664
  ]);
18658
- o.useEffect(() => {
18665
+ React.useEffect(() => {
18659
18666
  if (!showingSharedChat || mentorSettings.allowAnonymous) {
18660
18667
  if (mentorSettings.allowAnonymous !== undefined &&
18661
18668
  !(cachedSessionId === null || cachedSessionId === void 0 ? void 0 : cachedSessionId[mentorId])) {
@@ -18663,7 +18670,7 @@ function useAdvancedChat({ tenantKey, mentorId, username = ANONYMOUS_USERNAME, t
18663
18670
  }
18664
18671
  }
18665
18672
  }, [shouldStartNewChat, showingSharedChat, mentorSettings.allowAnonymous]);
18666
- o.useEffect(() => {
18673
+ React.useEffect(() => {
18667
18674
  if (sessionIds[activeTab] && sessionIds[activeTab] !== sessionId) {
18668
18675
  dispatch(chatActions.setSessionId(sessionIds[activeTab]));
18669
18676
  // Reset WebSocket connection when session ID changes
@@ -18843,15 +18850,15 @@ function useMentorTools({ tenantKey, mentorId, username = ANONYMOUS_USERNAME, er
18843
18850
  errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler("Failed to update session", error);
18844
18851
  }
18845
18852
  };
18846
- const webBrowsingIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.WEB_SEARCH), [tools, mentorSettings]);
18847
- const screenSharingIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.SCREEN_SHARE), [tools, mentorSettings]);
18848
- const deepSearchIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.DEEP_RESEARCH), [tools, mentorSettings]);
18849
- const studyModeIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.STUDY_MODE), [tools, mentorSettings]);
18850
- const imageGenerationIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.IMAGE_GENERATION), [tools, mentorSettings]);
18851
- const codeInterpreterIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.CODE_INTERPRETER), [tools, mentorSettings]);
18852
- const promptsIsEnabled = o.useMemo(() => { var _a, _b; return !!(((_a = prompts === null || prompts === void 0 ? void 0 : prompts.results) === null || _a === void 0 ? void 0 : _a.length) && ((_b = prompts === null || prompts === void 0 ? void 0 : prompts.results) === null || _b === void 0 ? void 0 : _b.length) > 0); }, [(_a = prompts === null || prompts === void 0 ? void 0 : prompts.results) === null || _a === void 0 ? void 0 : _a.length]);
18853
- const googleSlidesIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.GOOGLE_SLIDES), [tools, mentorSettings]);
18854
- const googleDocumentIsEnabled = o.useMemo(() => hasTool(tools, mentorSettings, TOOLS.GOOGLE_DOCUMENT), [tools, mentorSettings]);
18853
+ const webBrowsingIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.WEB_SEARCH), [tools, mentorSettings]);
18854
+ const screenSharingIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.SCREEN_SHARE), [tools, mentorSettings]);
18855
+ const deepSearchIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.DEEP_RESEARCH), [tools, mentorSettings]);
18856
+ const studyModeIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.STUDY_MODE), [tools, mentorSettings]);
18857
+ const imageGenerationIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.IMAGE_GENERATION), [tools, mentorSettings]);
18858
+ const codeInterpreterIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.CODE_INTERPRETER), [tools, mentorSettings]);
18859
+ const promptsIsEnabled = React.useMemo(() => { var _a, _b; return !!(((_a = prompts === null || prompts === void 0 ? void 0 : prompts.results) === null || _a === void 0 ? void 0 : _a.length) && ((_b = prompts === null || prompts === void 0 ? void 0 : prompts.results) === null || _b === void 0 ? void 0 : _b.length) > 0); }, [(_a = prompts === null || prompts === void 0 ? void 0 : prompts.results) === null || _a === void 0 ? void 0 : _a.length]);
18860
+ const googleSlidesIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.GOOGLE_SLIDES), [tools, mentorSettings]);
18861
+ const googleDocumentIsEnabled = React.useMemo(() => hasTool(tools, mentorSettings, TOOLS.GOOGLE_DOCUMENT), [tools, mentorSettings]);
18855
18862
  return {
18856
18863
  tools,
18857
18864
  activeTools,
@@ -18984,8 +18991,300 @@ function useProfileImageUpload(options = {}) {
18984
18991
  // This will be deprecated in favor of the new configuration system
18985
18992
  const METADATAS = loadMetadataConfig();
18986
18993
 
18987
- var jt=n=>{switch(n){case "success":return ee;case "info":return ae;case "warning":return oe;case "error":return se;default:return null}},te=Array(12).fill(0),Yt=({visible:n,className:e})=>o.createElement("div",{className:["sonner-loading-wrapper",e].filter(Boolean).join(" "),"data-visible":n},o.createElement("div",{className:"sonner-spinner"},te.map((t,a)=>o.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),ee=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),oe=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),ae=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),se=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),Ot=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},o.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),o.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"}));var Ft=()=>{let[n,e]=o.useState(document.hidden);return o.useEffect(()=>{let t=()=>{e(document.hidden);};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),n};var bt=1,yt=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1);});this.publish=e=>{this.subscribers.forEach(t=>t(e));};this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e];};this.create=e=>{var S;let{message:t,...a}=e,u=typeof(e==null?void 0:e.id)=="number"||((S=e.id)==null?void 0:S.length)>0?e.id:bt++,f=this.toasts.find(g=>g.id===u),w=e.dismissible===void 0?true:e.dismissible;return this.dismissedToasts.has(u)&&this.dismissedToasts.delete(u),f?this.toasts=this.toasts.map(g=>g.id===u?(this.publish({...g,...e,id:u,title:t}),{...g,...e,id:u,dismissible:w,title:t}):g):this.addToast({title:t,...a,dismissible:w,id:u}),u};this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(t=>{this.subscribers.forEach(a=>a({id:t.id,dismiss:true}));}),this.subscribers.forEach(t=>t({id:e,dismiss:true})),e);this.message=(e,t)=>this.create({...t,message:e});this.error=(e,t)=>this.create({...t,message:e,type:"error"});this.success=(e,t)=>this.create({...t,type:"success",message:e});this.info=(e,t)=>this.create({...t,type:"info",message:e});this.warning=(e,t)=>this.create({...t,type:"warning",message:e});this.loading=(e,t)=>this.create({...t,type:"loading",message:e});this.promise=(e,t)=>{if(!t)return;let a;t.loading!==void 0&&(a=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));let u=e instanceof Promise?e:e(),f=a!==void 0,w,S=u.then(async i=>{if(w=["resolve",i],o.isValidElement(i))f=false,this.create({id:a,type:"default",message:i});else if(ie(i)&&!i.ok){f=false;let T=typeof t.error=="function"?await t.error(`HTTP error! status: ${i.status}`):t.error,F=typeof t.description=="function"?await t.description(`HTTP error! status: ${i.status}`):t.description;this.create({id:a,type:"error",message:T,description:F});}else if(t.success!==void 0){f=false;let T=typeof t.success=="function"?await t.success(i):t.success,F=typeof t.description=="function"?await t.description(i):t.description;this.create({id:a,type:"success",message:T,description:F});}}).catch(async i=>{if(w=["reject",i],t.error!==void 0){f=false;let D=typeof t.error=="function"?await t.error(i):t.error,T=typeof t.description=="function"?await t.description(i):t.description;this.create({id:a,type:"error",message:D,description:T});}}).finally(()=>{var i;f&&(this.dismiss(a),a=void 0),(i=t.finally)==null||i.call(t);}),g=()=>new Promise((i,D)=>S.then(()=>w[0]==="reject"?D(w[1]):i(w[1])).catch(D));return typeof a!="string"&&typeof a!="number"?{unwrap:g}:Object.assign(a,{unwrap:g})};this.custom=(e,t)=>{let a=(t==null?void 0:t.id)||bt++;return this.create({jsx:e(a),id:a,...t}),a};this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id));this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set;}},v=new yt,ne=(n,e)=>{let t=(e==null?void 0:e.id)||bt++;return v.addToast({title:n,...e,id:t}),t},ie=n=>n&&typeof n=="object"&&"ok"in n&&typeof n.ok=="boolean"&&"status"in n&&typeof n.status=="number",le=ne,ce=()=>v.toasts,de=()=>v.getActiveToasts(),ue=Object.assign(le,{success:v.success,info:v.info,warning:v.warning,error:v.error,custom:v.custom,message:v.message,promise:v.promise,dismiss:v.dismiss,loading:v.loading},{getHistory:ce,getToasts:de});function wt(n,{insertAt:e}={}){if(typeof document=="undefined")return;let t=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e==="top"&&t.firstChild?t.insertBefore(a,t.firstChild):t.appendChild(a),a.styleSheet?a.styleSheet.cssText=n:a.appendChild(document.createTextNode(n));}wt(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
18988
- `);function tt(n){return n.label!==void 0}var pe=3,me="32px",ge="16px",Wt=4e3,he=356,be=14,ye=20,we=200;function M(...n){return n.filter(Boolean).join(" ")}function xe(n){let[e,t]=n.split("-"),a=[];return e&&a.push(e),t&&a.push(t),a}var ve=n=>{var Dt,Pt,Nt,Bt,Ct,kt,It,Mt,Ht,At,Lt;let{invert:e,toast:t,unstyled:a,interacting:u,setHeights:f,visibleToasts:w,heights:S,index:g,toasts:i,expanded:D,removeToast:T,defaultRichColors:F,closeButton:et,style:ut,cancelButtonStyle:ft,actionButtonStyle:l,className:ot="",descriptionClassName:at="",duration:X,position:st,gap:pt,loadingIcon:rt,expandByDefault:B,classNames:s,icons:P,closeButtonAriaLabel:nt="Close toast",pauseWhenPageIsHidden:it}=n,[Y,C]=o.useState(null),[lt,J]=o.useState(null),[W,H]=o.useState(false),[A,mt]=o.useState(false),[L,z]=o.useState(false),[ct,d]=o.useState(false),[h,y]=o.useState(false),[R,j]=o.useState(0),[p,_]=o.useState(0),O=o.useRef(t.duration||X||Wt),G=o.useRef(null),k=o.useRef(null),Vt=g===0,Ut=g+1<=w,N=t.type,V=t.dismissible!==false,Kt=t.className||"",Xt=t.descriptionClassName||"",dt=o.useMemo(()=>S.findIndex(r=>r.toastId===t.id)||0,[S,t.id]),Jt=o.useMemo(()=>{var r;return (r=t.closeButton)!=null?r:et},[t.closeButton,et]),Tt=o.useMemo(()=>t.duration||X||Wt,[t.duration,X]),gt=o.useRef(0),U=o.useRef(0),St=o.useRef(0),K=o.useRef(null),[Gt,Qt]=st.split("-"),Rt=o.useMemo(()=>S.reduce((r,m,c)=>c>=dt?r:r+m.height,0),[S,dt]),Et=Ft(),qt=t.invert||e,ht=N==="loading";U.current=o.useMemo(()=>dt*pt+Rt,[dt,Rt]),o.useEffect(()=>{O.current=Tt;},[Tt]),o.useEffect(()=>{H(true);},[]),o.useEffect(()=>{let r=k.current;if(r){let m=r.getBoundingClientRect().height;return _(m),f(c=>[{toastId:t.id,height:m,position:t.position},...c]),()=>f(c=>c.filter(b=>b.toastId!==t.id))}},[f,t.id]),o.useLayoutEffect(()=>{if(!W)return;let r=k.current,m=r.style.height;r.style.height="auto";let c=r.getBoundingClientRect().height;r.style.height=m,_(c),f(b=>b.find(x=>x.toastId===t.id)?b.map(x=>x.toastId===t.id?{...x,height:c}:x):[{toastId:t.id,height:c,position:t.position},...b]);},[W,t.title,t.description,f,t.id]);let $=o.useCallback(()=>{mt(true),j(U.current),f(r=>r.filter(m=>m.toastId!==t.id)),setTimeout(()=>{T(t);},we);},[t,T,f,U]);o.useEffect(()=>{if(t.promise&&N==="loading"||t.duration===1/0||t.type==="loading")return;let r;return D||u||it&&Et?(()=>{if(St.current<gt.current){let b=new Date().getTime()-gt.current;O.current=O.current-b;}St.current=new Date().getTime();})():(()=>{O.current!==1/0&&(gt.current=new Date().getTime(),r=setTimeout(()=>{var b;(b=t.onAutoClose)==null||b.call(t,t),$();},O.current));})(),()=>clearTimeout(r)},[D,u,t,N,it,Et,$]),o.useEffect(()=>{t.delete&&$();},[$,t.delete]);function Zt(){var r,m,c;return P!=null&&P.loading?o.createElement("div",{className:M(s==null?void 0:s.loader,(r=t==null?void 0:t.classNames)==null?void 0:r.loader,"sonner-loader"),"data-visible":N==="loading"},P.loading):rt?o.createElement("div",{className:M(s==null?void 0:s.loader,(m=t==null?void 0:t.classNames)==null?void 0:m.loader,"sonner-loader"),"data-visible":N==="loading"},rt):o.createElement(Yt,{className:M(s==null?void 0:s.loader,(c=t==null?void 0:t.classNames)==null?void 0:c.loader),visible:N==="loading"})}return o.createElement("li",{tabIndex:0,ref:k,className:M(ot,Kt,s==null?void 0:s.toast,(Dt=t==null?void 0:t.classNames)==null?void 0:Dt.toast,s==null?void 0:s.default,s==null?void 0:s[N],(Pt=t==null?void 0:t.classNames)==null?void 0:Pt[N]),"data-sonner-toast":"","data-rich-colors":(Nt=t.richColors)!=null?Nt:F,"data-styled":!(t.jsx||t.unstyled||a),"data-mounted":W,"data-promise":!!t.promise,"data-swiped":h,"data-removed":A,"data-visible":Ut,"data-y-position":Gt,"data-x-position":Qt,"data-index":g,"data-front":Vt,"data-swiping":L,"data-dismissible":V,"data-type":N,"data-invert":qt,"data-swipe-out":ct,"data-swipe-direction":lt,"data-expanded":!!(D||B&&W),style:{"--index":g,"--toasts-before":g,"--z-index":i.length-g,"--offset":`${A?R:U.current}px`,"--initial-height":B?"auto":`${p}px`,...ut,...t.style},onDragEnd:()=>{z(false),C(null),K.current=null;},onPointerDown:r=>{ht||!V||(G.current=new Date,j(U.current),r.target.setPointerCapture(r.pointerId),r.target.tagName!=="BUTTON"&&(z(true),K.current={x:r.clientX,y:r.clientY}));},onPointerUp:()=>{var x,Q,q,Z;if(ct||!V)return;K.current=null;let r=Number(((x=k.current)==null?void 0:x.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),m=Number(((Q=k.current)==null?void 0:Q.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),c=new Date().getTime()-((q=G.current)==null?void 0:q.getTime()),b=Y==="x"?r:m,I=Math.abs(b)/c;if(Math.abs(b)>=ye||I>.11){j(U.current),(Z=t.onDismiss)==null||Z.call(t,t),J(Y==="x"?r>0?"right":"left":m>0?"down":"up"),$(),d(true),y(false);return}z(false),C(null);},onPointerMove:r=>{var Q,q,Z,zt;if(!K.current||!V||((Q=window.getSelection())==null?void 0:Q.toString().length)>0)return;let c=r.clientY-K.current.y,b=r.clientX-K.current.x,I=(q=n.swipeDirections)!=null?q:xe(st);!Y&&(Math.abs(b)>1||Math.abs(c)>1)&&C(Math.abs(b)>Math.abs(c)?"x":"y");let x={x:0,y:0};Y==="y"?(I.includes("top")||I.includes("bottom"))&&(I.includes("top")&&c<0||I.includes("bottom")&&c>0)&&(x.y=c):Y==="x"&&(I.includes("left")||I.includes("right"))&&(I.includes("left")&&b<0||I.includes("right")&&b>0)&&(x.x=b),(Math.abs(x.x)>0||Math.abs(x.y)>0)&&y(true),(Z=k.current)==null||Z.style.setProperty("--swipe-amount-x",`${x.x}px`),(zt=k.current)==null||zt.style.setProperty("--swipe-amount-y",`${x.y}px`);}},Jt&&!t.jsx?o.createElement("button",{"aria-label":nt,"data-disabled":ht,"data-close-button":true,onClick:ht||!V?()=>{}:()=>{var r;$(),(r=t.onDismiss)==null||r.call(t,t);},className:M(s==null?void 0:s.closeButton,(Bt=t==null?void 0:t.classNames)==null?void 0:Bt.closeButton)},(Ct=P==null?void 0:P.close)!=null?Ct:Ot):null,t.jsx||o.isValidElement(t.title)?t.jsx?t.jsx:typeof t.title=="function"?t.title():t.title:o.createElement(o.Fragment,null,N||t.icon||t.promise?o.createElement("div",{"data-icon":"",className:M(s==null?void 0:s.icon,(kt=t==null?void 0:t.classNames)==null?void 0:kt.icon)},t.promise||t.type==="loading"&&!t.icon?t.icon||Zt():null,t.type!=="loading"?t.icon||(P==null?void 0:P[N])||jt(N):null):null,o.createElement("div",{"data-content":"",className:M(s==null?void 0:s.content,(It=t==null?void 0:t.classNames)==null?void 0:It.content)},o.createElement("div",{"data-title":"",className:M(s==null?void 0:s.title,(Mt=t==null?void 0:t.classNames)==null?void 0:Mt.title)},typeof t.title=="function"?t.title():t.title),t.description?o.createElement("div",{"data-description":"",className:M(at,Xt,s==null?void 0:s.description,(Ht=t==null?void 0:t.classNames)==null?void 0:Ht.description)},typeof t.description=="function"?t.description():t.description):null),o.isValidElement(t.cancel)?t.cancel:t.cancel&&tt(t.cancel)?o.createElement("button",{"data-button":true,"data-cancel":true,style:t.cancelButtonStyle||ft,onClick:r=>{var m,c;tt(t.cancel)&&V&&((c=(m=t.cancel).onClick)==null||c.call(m,r),$());},className:M(s==null?void 0:s.cancelButton,(At=t==null?void 0:t.classNames)==null?void 0:At.cancelButton)},t.cancel.label):null,o.isValidElement(t.action)?t.action:t.action&&tt(t.action)?o.createElement("button",{"data-button":true,"data-action":true,style:t.actionButtonStyle||l,onClick:r=>{var m,c;tt(t.action)&&((c=(m=t.action).onClick)==null||c.call(m,r),!r.defaultPrevented&&$());},className:M(s==null?void 0:s.actionButton,(Lt=t==null?void 0:t.classNames)==null?void 0:Lt.actionButton)},t.action.label):null))};function _t(){if(typeof window=="undefined"||typeof document=="undefined")return "ltr";let n=document.documentElement.getAttribute("dir");return n==="auto"||!n?window.getComputedStyle(document.documentElement).direction:n}function Te(n,e){let t={};return [n,e].forEach((a,u)=>{let f=u===1,w=f?"--mobile-offset":"--offset",S=f?ge:me;function g(i){["top","right","bottom","left"].forEach(D=>{t[`${w}-${D}`]=typeof i=="number"?`${i}px`:i;});}typeof a=="number"||typeof a=="string"?g(a):typeof a=="object"?["top","right","bottom","left"].forEach(i=>{a[i]===void 0?t[`${w}-${i}`]=S:t[`${w}-${i}`]=typeof a[i]=="number"?`${a[i]}px`:a[i];}):g(S);}),t}o.forwardRef(function(e,t){let{invert:a,position:u="bottom-right",hotkey:f=["altKey","KeyT"],expand:w,closeButton:S,className:g,offset:i,mobileOffset:D,theme:T="light",richColors:F,duration:et,style:ut,visibleToasts:ft=pe,toastOptions:l,dir:ot=_t(),gap:at=be,loadingIcon:X,icons:st,containerAriaLabel:pt="Notifications",pauseWhenPageIsHidden:rt}=e,[B,s]=o.useState([]),P=o.useMemo(()=>Array.from(new Set([u].concat(B.filter(d=>d.position).map(d=>d.position)))),[B,u]),[nt,it]=o.useState([]),[Y,C]=o.useState(false),[lt,J]=o.useState(false),[W,H]=o.useState(T!=="system"?T:typeof window!="undefined"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),A=o.useRef(null),mt=f.join("+").replace(/Key/g,"").replace(/Digit/g,""),L=o.useRef(null),z=o.useRef(false),ct=o.useCallback(d=>{s(h=>{var y;return (y=h.find(R=>R.id===d.id))!=null&&y.delete||v.dismiss(d.id),h.filter(({id:R})=>R!==d.id)});},[]);return o.useEffect(()=>v.subscribe(d=>{if(d.dismiss){s(h=>h.map(y=>y.id===d.id?{...y,delete:true}:y));return}setTimeout(()=>{vt.flushSync(()=>{s(h=>{let y=h.findIndex(R=>R.id===d.id);return y!==-1?[...h.slice(0,y),{...h[y],...d},...h.slice(y+1)]:[d,...h]});});});}),[]),o.useEffect(()=>{if(T!=="system"){H(T);return}if(T==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?H("dark"):H("light")),typeof window=="undefined")return;let d=window.matchMedia("(prefers-color-scheme: dark)");try{d.addEventListener("change",({matches:h})=>{H(h?"dark":"light");});}catch(h){d.addListener(({matches:y})=>{try{H(y?"dark":"light");}catch(R){console.error(R);}});}},[T]),o.useEffect(()=>{B.length<=1&&C(false);},[B]),o.useEffect(()=>{let d=h=>{var R,j;f.every(p=>h[p]||h.code===p)&&(C(true),(R=A.current)==null||R.focus()),h.code==="Escape"&&(document.activeElement===A.current||(j=A.current)!=null&&j.contains(document.activeElement))&&C(false);};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[f]),o.useEffect(()=>{if(A.current)return ()=>{L.current&&(L.current.focus({preventScroll:true}),L.current=null,z.current=false);}},[A.current]),o.createElement("section",{ref:t,"aria-label":`${pt} ${mt}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:true},P.map((d,h)=>{var j;let[y,R]=d.split("-");return B.length?o.createElement("ol",{key:d,dir:ot==="auto"?_t():ot,tabIndex:-1,ref:A,className:g,"data-sonner-toaster":true,"data-theme":W,"data-y-position":y,"data-lifted":Y&&B.length>1&&!w,"data-x-position":R,style:{"--front-toast-height":`${((j=nt[0])==null?void 0:j.height)||0}px`,"--width":`${he}px`,"--gap":`${at}px`,...ut,...Te(i,D)},onBlur:p=>{z.current&&!p.currentTarget.contains(p.relatedTarget)&&(z.current=false,L.current&&(L.current.focus({preventScroll:true}),L.current=null));},onFocus:p=>{p.target instanceof HTMLElement&&p.target.dataset.dismissible==="false"||z.current||(z.current=true,L.current=p.relatedTarget);},onMouseEnter:()=>C(true),onMouseMove:()=>C(true),onMouseLeave:()=>{lt||C(false);},onDragEnd:()=>C(false),onPointerDown:p=>{p.target instanceof HTMLElement&&p.target.dataset.dismissible==="false"||J(true);},onPointerUp:()=>J(false)},B.filter(p=>!p.position&&h===0||p.position===d).map((p,_)=>{var O,G;return o.createElement(ve,{key:p.id,icons:st,index:_,toast:p,defaultRichColors:F,duration:(O=l==null?void 0:l.duration)!=null?O:et,className:l==null?void 0:l.className,descriptionClassName:l==null?void 0:l.descriptionClassName,invert:a,visibleToasts:ft,closeButton:(G=l==null?void 0:l.closeButton)!=null?G:S,interacting:lt,position:d,style:l==null?void 0:l.style,unstyled:l==null?void 0:l.unstyled,classNames:l==null?void 0:l.classNames,cancelButtonStyle:l==null?void 0:l.cancelButtonStyle,actionButtonStyle:l==null?void 0:l.actionButtonStyle,removeToast:ct,toasts:B.filter(k=>k.position==p.position),heights:nt.filter(k=>k.position==p.position),setHeights:it,expandByDefault:w,gap:at,loadingIcon:X,expanded:Y,pauseWhenPageIsHidden:rt,swipeDirections:e.swipeDirections})})):null}))});
18994
+ function __insertCSS(code) {
18995
+ if (typeof document == 'undefined') return
18996
+ let head = document.head || document.getElementsByTagName('head')[0];
18997
+ let style = document.createElement('style');
18998
+ style.type = 'text/css';
18999
+ head.appendChild(style)
19000
+ ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code));
19001
+ }
19002
+ Array(12).fill(0);
19003
+
19004
+ let toastsCounter = 1;
19005
+ class Observer {
19006
+ constructor(){
19007
+ // We use arrow functions to maintain the correct `this` reference
19008
+ this.subscribe = (subscriber)=>{
19009
+ this.subscribers.push(subscriber);
19010
+ return ()=>{
19011
+ const index = this.subscribers.indexOf(subscriber);
19012
+ this.subscribers.splice(index, 1);
19013
+ };
19014
+ };
19015
+ this.publish = (data)=>{
19016
+ this.subscribers.forEach((subscriber)=>subscriber(data));
19017
+ };
19018
+ this.addToast = (data)=>{
19019
+ this.publish(data);
19020
+ this.toasts = [
19021
+ ...this.toasts,
19022
+ data
19023
+ ];
19024
+ };
19025
+ this.create = (data)=>{
19026
+ var _data_id;
19027
+ const { message, ...rest } = data;
19028
+ const id = typeof (data == null ? void 0 : data.id) === 'number' || ((_data_id = data.id) == null ? void 0 : _data_id.length) > 0 ? data.id : toastsCounter++;
19029
+ const alreadyExists = this.toasts.find((toast)=>{
19030
+ return toast.id === id;
19031
+ });
19032
+ const dismissible = data.dismissible === undefined ? true : data.dismissible;
19033
+ if (this.dismissedToasts.has(id)) {
19034
+ this.dismissedToasts.delete(id);
19035
+ }
19036
+ if (alreadyExists) {
19037
+ this.toasts = this.toasts.map((toast)=>{
19038
+ if (toast.id === id) {
19039
+ this.publish({
19040
+ ...toast,
19041
+ ...data,
19042
+ id,
19043
+ title: message
19044
+ });
19045
+ return {
19046
+ ...toast,
19047
+ ...data,
19048
+ id,
19049
+ dismissible,
19050
+ title: message
19051
+ };
19052
+ }
19053
+ return toast;
19054
+ });
19055
+ } else {
19056
+ this.addToast({
19057
+ title: message,
19058
+ ...rest,
19059
+ dismissible,
19060
+ id
19061
+ });
19062
+ }
19063
+ return id;
19064
+ };
19065
+ this.dismiss = (id)=>{
19066
+ if (id) {
19067
+ this.dismissedToasts.add(id);
19068
+ requestAnimationFrame(()=>this.subscribers.forEach((subscriber)=>subscriber({
19069
+ id,
19070
+ dismiss: true
19071
+ })));
19072
+ } else {
19073
+ this.toasts.forEach((toast)=>{
19074
+ this.subscribers.forEach((subscriber)=>subscriber({
19075
+ id: toast.id,
19076
+ dismiss: true
19077
+ }));
19078
+ });
19079
+ }
19080
+ return id;
19081
+ };
19082
+ this.message = (message, data)=>{
19083
+ return this.create({
19084
+ ...data,
19085
+ message
19086
+ });
19087
+ };
19088
+ this.error = (message, data)=>{
19089
+ return this.create({
19090
+ ...data,
19091
+ message,
19092
+ type: 'error'
19093
+ });
19094
+ };
19095
+ this.success = (message, data)=>{
19096
+ return this.create({
19097
+ ...data,
19098
+ type: 'success',
19099
+ message
19100
+ });
19101
+ };
19102
+ this.info = (message, data)=>{
19103
+ return this.create({
19104
+ ...data,
19105
+ type: 'info',
19106
+ message
19107
+ });
19108
+ };
19109
+ this.warning = (message, data)=>{
19110
+ return this.create({
19111
+ ...data,
19112
+ type: 'warning',
19113
+ message
19114
+ });
19115
+ };
19116
+ this.loading = (message, data)=>{
19117
+ return this.create({
19118
+ ...data,
19119
+ type: 'loading',
19120
+ message
19121
+ });
19122
+ };
19123
+ this.promise = (promise, data)=>{
19124
+ if (!data) {
19125
+ // Nothing to show
19126
+ return;
19127
+ }
19128
+ let id = undefined;
19129
+ if (data.loading !== undefined) {
19130
+ id = this.create({
19131
+ ...data,
19132
+ promise,
19133
+ type: 'loading',
19134
+ message: data.loading,
19135
+ description: typeof data.description !== 'function' ? data.description : undefined
19136
+ });
19137
+ }
19138
+ const p = Promise.resolve(promise instanceof Function ? promise() : promise);
19139
+ let shouldDismiss = id !== undefined;
19140
+ let result;
19141
+ const originalPromise = p.then(async (response)=>{
19142
+ result = [
19143
+ 'resolve',
19144
+ response
19145
+ ];
19146
+ const isReactElementResponse = React.isValidElement(response);
19147
+ if (isReactElementResponse) {
19148
+ shouldDismiss = false;
19149
+ this.create({
19150
+ id,
19151
+ type: 'default',
19152
+ message: response
19153
+ });
19154
+ } else if (isHttpResponse(response) && !response.ok) {
19155
+ shouldDismiss = false;
19156
+ const promiseData = typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;
19157
+ const description = typeof data.description === 'function' ? await data.description(`HTTP error! status: ${response.status}`) : data.description;
19158
+ const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);
19159
+ const toastSettings = isExtendedResult ? promiseData : {
19160
+ message: promiseData
19161
+ };
19162
+ this.create({
19163
+ id,
19164
+ type: 'error',
19165
+ description,
19166
+ ...toastSettings
19167
+ });
19168
+ } else if (response instanceof Error) {
19169
+ shouldDismiss = false;
19170
+ const promiseData = typeof data.error === 'function' ? await data.error(response) : data.error;
19171
+ const description = typeof data.description === 'function' ? await data.description(response) : data.description;
19172
+ const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);
19173
+ const toastSettings = isExtendedResult ? promiseData : {
19174
+ message: promiseData
19175
+ };
19176
+ this.create({
19177
+ id,
19178
+ type: 'error',
19179
+ description,
19180
+ ...toastSettings
19181
+ });
19182
+ } else if (data.success !== undefined) {
19183
+ shouldDismiss = false;
19184
+ const promiseData = typeof data.success === 'function' ? await data.success(response) : data.success;
19185
+ const description = typeof data.description === 'function' ? await data.description(response) : data.description;
19186
+ const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);
19187
+ const toastSettings = isExtendedResult ? promiseData : {
19188
+ message: promiseData
19189
+ };
19190
+ this.create({
19191
+ id,
19192
+ type: 'success',
19193
+ description,
19194
+ ...toastSettings
19195
+ });
19196
+ }
19197
+ }).catch(async (error)=>{
19198
+ result = [
19199
+ 'reject',
19200
+ error
19201
+ ];
19202
+ if (data.error !== undefined) {
19203
+ shouldDismiss = false;
19204
+ const promiseData = typeof data.error === 'function' ? await data.error(error) : data.error;
19205
+ const description = typeof data.description === 'function' ? await data.description(error) : data.description;
19206
+ const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);
19207
+ const toastSettings = isExtendedResult ? promiseData : {
19208
+ message: promiseData
19209
+ };
19210
+ this.create({
19211
+ id,
19212
+ type: 'error',
19213
+ description,
19214
+ ...toastSettings
19215
+ });
19216
+ }
19217
+ }).finally(()=>{
19218
+ if (shouldDismiss) {
19219
+ // Toast is still in load state (and will be indefinitely — dismiss it)
19220
+ this.dismiss(id);
19221
+ id = undefined;
19222
+ }
19223
+ data.finally == null ? void 0 : data.finally.call(data);
19224
+ });
19225
+ const unwrap = ()=>new Promise((resolve, reject)=>originalPromise.then(()=>result[0] === 'reject' ? reject(result[1]) : resolve(result[1])).catch(reject));
19226
+ if (typeof id !== 'string' && typeof id !== 'number') {
19227
+ // cannot Object.assign on undefined
19228
+ return {
19229
+ unwrap
19230
+ };
19231
+ } else {
19232
+ return Object.assign(id, {
19233
+ unwrap
19234
+ });
19235
+ }
19236
+ };
19237
+ this.custom = (jsx, data)=>{
19238
+ const id = (data == null ? void 0 : data.id) || toastsCounter++;
19239
+ this.create({
19240
+ jsx: jsx(id),
19241
+ id,
19242
+ ...data
19243
+ });
19244
+ return id;
19245
+ };
19246
+ this.getActiveToasts = ()=>{
19247
+ return this.toasts.filter((toast)=>!this.dismissedToasts.has(toast.id));
19248
+ };
19249
+ this.subscribers = [];
19250
+ this.toasts = [];
19251
+ this.dismissedToasts = new Set();
19252
+ }
19253
+ }
19254
+ const ToastState = new Observer();
19255
+ // bind this to the toast function
19256
+ const toastFunction = (message, data)=>{
19257
+ const id = (data == null ? void 0 : data.id) || toastsCounter++;
19258
+ ToastState.addToast({
19259
+ title: message,
19260
+ ...data,
19261
+ id
19262
+ });
19263
+ return id;
19264
+ };
19265
+ const isHttpResponse = (data)=>{
19266
+ return data && typeof data === 'object' && 'ok' in data && typeof data.ok === 'boolean' && 'status' in data && typeof data.status === 'number';
19267
+ };
19268
+ const basicToast = toastFunction;
19269
+ const getHistory = ()=>ToastState.toasts;
19270
+ const getToasts = ()=>ToastState.getActiveToasts();
19271
+ // We use `Object.assign` to maintain the correct types as we would lose them otherwise
19272
+ const toast = Object.assign(basicToast, {
19273
+ success: ToastState.success,
19274
+ info: ToastState.info,
19275
+ warning: ToastState.warning,
19276
+ error: ToastState.error,
19277
+ custom: ToastState.custom,
19278
+ message: ToastState.message,
19279
+ promise: ToastState.promise,
19280
+ dismiss: ToastState.dismiss,
19281
+ loading: ToastState.loading
19282
+ }, {
19283
+ getHistory,
19284
+ getToasts
19285
+ });
19286
+
19287
+ __insertCSS("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");
18989
19288
 
18990
19289
  function buildCheckoutUrl(baseUrl, email, clientReferenceId) {
18991
19290
  const separator = baseUrl.includes("?") ? "&" : "?";
@@ -18993,9 +19292,9 @@ function buildCheckoutUrl(baseUrl, email, clientReferenceId) {
18993
19292
  }
18994
19293
  const useStripeUpgrade = ({ redirectUrl, sourcePlatformKey, mainPlatformKey, currentUserEmail, }) => {
18995
19294
  const [triggerGetSession] = dataLayer.useLazyGetStripePricingPageSessionQuery();
18996
- const [isLoading, setIsLoading] = o.useState(false);
18997
- const [freeUrl, setFreeUrl] = o.useState(null);
18998
- const [premiumUrl, setPremiumUrl] = o.useState(null);
19295
+ const [isLoading, setIsLoading] = React.useState(false);
19296
+ const [freeUrl, setFreeUrl] = React.useState(null);
19297
+ const [premiumUrl, setPremiumUrl] = React.useState(null);
18999
19298
  const handleUpgrade = async (redirectPlan) => {
19000
19299
  setIsLoading(true);
19001
19300
  try {
@@ -19028,7 +19327,7 @@ const useStripeUpgrade = ({ redirectUrl, sourcePlatformKey, mainPlatformKey, cur
19028
19327
  }
19029
19328
  }
19030
19329
  catch (_a) {
19031
- ue.error("Failed to load upgrade options. Please try again.");
19330
+ toast.error("Failed to load upgrade options. Please try again.");
19032
19331
  }
19033
19332
  finally {
19034
19333
  setIsLoading(false);