@clerk/react 6.8.0-snapshot.v20260604052353 → 6.8.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/controlComponents.tsx","../src/utils/versionCheck.ts","../src/contexts/ClerkProvider.tsx","../src/isomorphicClerk.ts","../src/stateProxy.ts"],"sourcesContent":["import { deprecated } from '@clerk/shared/deprecated';\nimport { __internal_useSessionBase } from '@clerk/shared/react';\nimport type { HandleOAuthCallbackParams, PendingSessionOptions, ShowWhenCondition } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAuth } from '../hooks';\nimport { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';\nimport type { RedirectToSignInProps, RedirectToSignUpProps, RedirectToTasksProps, WithClerkProp } from '../types';\nimport { withClerk } from './withClerk';\n\nexport const ClerkLoaded = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkLoaded');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (!isomorphicClerk.loaded) {\n return null;\n }\n return children;\n};\n\nexport const ClerkLoading = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkLoading');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'loading') {\n return null;\n }\n return children;\n};\n\nexport const ClerkFailed = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkFailed');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'error') {\n return null;\n }\n return children;\n};\n\nexport const ClerkDegraded = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('ClerkDegraded');\n\n const isomorphicClerk = useIsomorphicClerkContext();\n if (isomorphicClerk.status !== 'degraded') {\n return null;\n }\n return children;\n};\n\nexport type ShowProps = React.PropsWithChildren<\n {\n fallback?: React.ReactNode;\n when: ShowWhenCondition;\n } & PendingSessionOptions\n>;\n\n/**\n * Use `<Show/>` to conditionally render content based on user authorization or sign-in state.\n * Returns `null` while auth is loading. Set `treatPendingAsSignedOut` to treat\n * pending sessions as signed out during that period.\n *\n * The `when` prop supports:\n * - `\"signed-in\"` or `\"signed-out\"` shorthands\n * - Authorization descriptors (e.g., `{ permission: \"org:billing:manage\" }`, `{ role: \"admin\" }`)\n * - A predicate function `(has) => boolean` that receives the `has` helper\n *\n * @example\n * ```tsx\n * <Show when={{ permission: \"org:billing:manage\" }} fallback={<p>Unauthorized</p>}>\n * <BillingSettings />\n * </Show>\n *\n * <Show when={{ role: \"admin\" }}>\n * <AdminPanel />\n * </Show>\n *\n * <Show when={(has) => has({ permission: \"org:read\" }) && isFeatureEnabled}>\n * <ProtectedFeature />\n * </Show>\n * ```\n *\n */\nexport const Show = ({ children, fallback, treatPendingAsSignedOut, when }: ShowProps) => {\n useAssertWrappedByClerkProvider('Show');\n\n const { has, isLoaded, userId } = useAuth({ treatPendingAsSignedOut });\n\n if (!isLoaded) {\n return null;\n }\n\n const resolvedWhen = when;\n const authorized = children;\n const unauthorized = fallback ?? null;\n\n if (resolvedWhen === 'signed-out') {\n return userId ? unauthorized : authorized;\n }\n\n if (!userId) {\n return unauthorized;\n }\n\n if (resolvedWhen === 'signed-in') {\n return authorized;\n }\n\n if (checkAuthorization(resolvedWhen, has)) {\n return authorized;\n }\n\n return unauthorized;\n};\n\nfunction checkAuthorization(\n when: Exclude<ShowWhenCondition, 'signed-in' | 'signed-out'>,\n has: NonNullable<ReturnType<typeof useAuth>['has']>,\n): boolean {\n if (typeof when === 'function') {\n return when(has);\n }\n return has(when);\n}\n\nexport const RedirectToSignIn = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToSignInProps>) => {\n const { client, session } = clerk;\n\n const hasSignedInSessions = (client.signedInSessions?.length ?? 0) > 0;\n\n React.useEffect(() => {\n if (session === null && hasSignedInSessions) {\n void clerk.redirectToAfterSignOut();\n } else {\n void clerk.redirectToSignIn(props);\n }\n }, []);\n\n return null;\n}, 'RedirectToSignIn');\n\nexport const RedirectToSignUp = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToSignUpProps>) => {\n React.useEffect(() => {\n void clerk.redirectToSignUp(props);\n }, []);\n\n return null;\n}, 'RedirectToSignUp');\n\nexport const RedirectToTasks = withClerk(({ clerk, ...props }: WithClerkProp<RedirectToTasksProps>) => {\n React.useEffect(() => {\n void clerk.redirectToTasks(props);\n }, []);\n\n return null;\n}, 'RedirectToTasks');\n\n/**\n * @function\n * @deprecated Use [`redirectToUserProfile()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-user-profile) instead.\n */\nexport const RedirectToUserProfile = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToUserProfile', 'Use the `redirectToUserProfile()` method instead.');\n void clerk.redirectToUserProfile();\n }, []);\n\n return null;\n}, 'RedirectToUserProfile');\n\n/**\n * @function\n * @deprecated Use [`redirectToOrganizationProfile()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-organization-profile) instead.\n */\nexport const RedirectToOrganizationProfile = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToOrganizationProfile', 'Use the `redirectToOrganizationProfile()` method instead.');\n void clerk.redirectToOrganizationProfile();\n }, []);\n\n return null;\n}, 'RedirectToOrganizationProfile');\n\n/**\n * @function\n * @deprecated Use [`redirectToCreateOrganization()`](https://clerk.com/docs/reference/objects/clerk#redirect-to-create-organization) instead.\n */\nexport const RedirectToCreateOrganization = withClerk(({ clerk }) => {\n React.useEffect(() => {\n deprecated('RedirectToCreateOrganization', 'Use the `redirectToCreateOrganization()` method instead.');\n void clerk.redirectToCreateOrganization();\n }, []);\n\n return null;\n}, 'RedirectToCreateOrganization');\n\nexport const AuthenticateWithRedirectCallback = withClerk(\n ({ clerk, ...handleRedirectCallbackParams }: WithClerkProp<HandleOAuthCallbackParams>) => {\n React.useEffect(() => {\n void clerk.handleRedirectCallback(handleRedirectCallbackParams);\n }, []);\n\n return null;\n },\n 'AuthenticateWithRedirectCallback',\n);\n\nexport const MultisessionAppSupport = ({ children }: React.PropsWithChildren<unknown>) => {\n useAssertWrappedByClerkProvider('MultisessionAppSupport');\n\n const session = __internal_useSessionBase();\n return <React.Fragment key={session ? session.id : 'no-users'}>{children}</React.Fragment>;\n};\n","import { isVersionCompatible, type VersionBounds } from '@clerk/shared/versionCheck';\nimport React from 'react';\n\nexport {\n checkVersionAgainstBounds,\n isVersionCompatible,\n parseVersion,\n type VersionBounds,\n} from '@clerk/shared/versionCheck';\n\ndeclare const __CLERK_UI_SUPPORTED_REACT_BOUNDS__: VersionBounds[];\n\n/**\n * Checks if the host application's React version is compatible with @clerk/ui's shared variant.\n * The shared variant expects React to be provided via globalThis.__clerkSharedModules,\n * so we need to ensure the host's React version matches what @clerk/ui was built against.\n *\n * This function is evaluated once at module load time.\n */\nfunction computeReactVersionCompatibility(): boolean {\n try {\n return isVersionCompatible(React.version, __CLERK_UI_SUPPORTED_REACT_BOUNDS__);\n } catch {\n // If we can't determine compatibility, fall back to non-shared variant\n return false;\n }\n}\n\n/**\n * Whether the host React version is compatible with the shared @clerk/ui variant.\n * This is computed once at module load time for optimal performance.\n */\nexport const IS_REACT_SHARED_VARIANT_COMPATIBLE = computeReactVersionCompatibility();\n","import { ClerkContextProvider } from '@clerk/shared/react';\nimport type { Ui } from '@clerk/ui/internal';\nimport React from 'react';\n\nimport { multipleClerkProvidersError } from '../errors/messages';\nimport { IsomorphicClerk } from '../isomorphicClerk';\nimport type { ClerkProviderProps, IsomorphicClerkOptions } from '../types';\nimport { mergeWithEnv, withMaxAllowedInstancesGuard } from '../utils';\nimport { IS_REACT_SHARED_VARIANT_COMPATIBLE } from '../utils/versionCheck';\n\nfunction ClerkProviderBase<TUi extends Ui>(props: ClerkProviderProps<TUi>) {\n const { initialState, children, ...restIsomorphicClerkOptions } = props;\n\n // Merge options with environment variable fallbacks (supports Vite's VITE_CLERK_* env vars)\n const mergedOptions = mergeWithEnv(restIsomorphicClerkOptions as unknown as IsomorphicClerkOptions);\n const { isomorphicClerk, clerkStatus } = useLoadedIsomorphicClerk(mergedOptions);\n\n return (\n <ClerkContextProvider\n initialState={initialState}\n // @ts-expect-error - Fixme!\n clerk={isomorphicClerk}\n clerkStatus={clerkStatus}\n >\n {children}\n </ClerkContextProvider>\n );\n}\n\nconst ClerkProvider = withMaxAllowedInstancesGuard(ClerkProviderBase, 'ClerkProvider', multipleClerkProvidersError);\n\nClerkProvider.displayName = 'ClerkProvider';\n\nexport { ClerkProvider };\n\n// Default clerkUIVariant based on React version compatibility.\n// Computed once at module level for optimal performance.\nconst DEFAULT_CLERK_UI_VARIANT = IS_REACT_SHARED_VARIANT_COMPATIBLE ? ('shared' as const) : ('' as const);\n\nconst useLoadedIsomorphicClerk = (mergedOptions: IsomorphicClerkOptions) => {\n // Merge default clerkUIVariant with user options.\n // User-provided options spread last to allow explicit overrides.\n // The shared variant expects React to be provided via globalThis.__clerkSharedModules\n // (set up by @clerk/ui/register import), which reduces bundle size.\n const optionsWithDefaults = React.useMemo(\n () => ({\n clerkUIVariant: DEFAULT_CLERK_UI_VARIANT,\n ...mergedOptions,\n }),\n [mergedOptions],\n );\n const isomorphicClerkRef = React.useRef(IsomorphicClerk.getOrCreateInstance(optionsWithDefaults));\n const [clerkStatus, setClerkStatus] = React.useState(isomorphicClerkRef.current.status);\n\n React.useEffect(() => {\n void isomorphicClerkRef.current.__internal_updateProps({ appearance: mergedOptions.appearance });\n }, [mergedOptions.appearance]);\n\n React.useEffect(() => {\n void isomorphicClerkRef.current.__internal_updateProps({ options: mergedOptions });\n }, [mergedOptions.localization]);\n\n React.useEffect(() => {\n isomorphicClerkRef.current.on('status', setClerkStatus);\n return () => {\n if (isomorphicClerkRef.current) {\n isomorphicClerkRef.current.off('status', setClerkStatus);\n }\n IsomorphicClerk.clearInstance();\n };\n }, []);\n\n return { isomorphicClerk: isomorphicClerkRef.current, clerkStatus };\n};\n","import { inBrowser } from '@clerk/shared/browser';\nimport { clerkEvents, createClerkEventBus } from '@clerk/shared/clerkEventBus';\nimport { loadClerkJSScript, loadClerkUIScript } from '@clerk/shared/loadClerkJsScript';\nimport type {\n __internal_AttemptToEnableEnvironmentSettingParams,\n __internal_AttemptToEnableEnvironmentSettingResult,\n __internal_CheckoutProps,\n __internal_EnableOrganizationsPromptProps,\n __internal_OAuthConsentProps,\n __internal_PlanDetailsProps,\n __internal_SubscriptionDetailsProps,\n __internal_UserVerificationModalProps,\n __internal_UserVerificationProps,\n APIKeysNamespace,\n APIKeysProps,\n AuthenticateWithBaseParams,\n AuthenticateWithCoinbaseWalletParams,\n AuthenticateWithGoogleOneTapParams,\n AuthenticateWithMetamaskParams,\n AuthenticateWithOKXWalletParams,\n AuthenticateWithSolanaParams,\n BillingNamespace,\n Clerk,\n ClerkAuthenticateWithWeb3Params,\n ClerkOptions,\n ClerkStatus,\n ClientResource,\n ConfigureSSOProps,\n CreateOrganizationParams,\n CreateOrganizationProps,\n DomainOrProxyUrl,\n GoogleOneTapProps,\n HandleEmailLinkVerificationParams,\n HandleOAuthCallbackParams,\n JoinWaitlistParams,\n ListenerCallback,\n ListenerOptions,\n LoadedClerk,\n OAuthApplicationNamespace,\n OAuthConsentProps,\n OrganizationListProps,\n OrganizationProfileProps,\n OrganizationResource,\n OrganizationSwitcherProps,\n PricingTableProps,\n RedirectOptions,\n Resources,\n SetActiveParams,\n SignInProps,\n SignInRedirectOptions,\n SignInResource,\n SignUpProps,\n SignUpRedirectOptions,\n SignUpResource,\n State,\n TaskChooseOrganizationProps,\n TaskResetPasswordProps,\n TaskSetupMFAProps,\n TasksRedirectOptions,\n UnsubscribeCallback,\n UserAvatarProps,\n UserButtonProps,\n UserProfileProps,\n WaitlistProps,\n WaitlistResource,\n Without,\n} from '@clerk/shared/types';\nimport type { ClerkUIConstructor } from '@clerk/shared/ui';\nimport { handleValueOrFn } from '@clerk/shared/utils';\n\nimport { errorThrower } from './errors/errorThrower';\nimport { unsupportedNonBrowserDomainOrProxyUrlFunction } from './errors/messages';\nimport { StateProxy } from './stateProxy';\nimport type {\n BrowserClerk,\n BrowserClerkConstructor,\n ClerkProp,\n HeadlessBrowserClerk,\n HeadlessBrowserClerkConstructor,\n IsomorphicClerkOptions,\n} from './types';\nimport { isConstructor } from './utils';\n\nif (typeof globalThis.__BUILD_DISABLE_RHC__ === 'undefined') {\n globalThis.__BUILD_DISABLE_RHC__ = false;\n}\n\nconst SDK_METADATA = {\n name: PACKAGE_NAME,\n version: PACKAGE_VERSION,\n environment: process.env.NODE_ENV,\n};\n\nexport interface Global {\n Clerk?: HeadlessBrowserClerk | BrowserClerk;\n __internal_ClerkUICtor?: ClerkUIConstructor;\n}\n\ndeclare const global: Global;\n\ntype GenericFunction<TArgs = never> = (...args: TArgs[]) => unknown;\n\ntype MethodName<T> = {\n [P in keyof T]: T[P] extends GenericFunction ? P : never;\n}[keyof T];\n\ntype MethodCallback = () => Promise<unknown> | unknown;\n\ntype WithVoidReturn<F extends (...args: any) => any> = (\n ...args: Parameters<F>\n) => ReturnType<F> extends Promise<infer T> ? Promise<T | void> : ReturnType<F> | void;\ntype WithVoidReturnFunctions<T> = {\n [K in keyof T]: T[K] extends (...args: any) => any ? WithVoidReturn<T[K]> : T[K];\n};\n\ntype IsomorphicLoadedClerk = Without<\n WithVoidReturnFunctions<LoadedClerk>,\n | 'client'\n | '__internal_addNavigationListener'\n | '__internal_getCachedResources'\n | '__internal_reloadInitialResources'\n | 'billing'\n | 'apiKeys'\n | 'oauthApplication'\n | '__internal_setActiveInProgress'\n> & {\n client: ClientResource | undefined;\n billing: BillingNamespace | undefined;\n apiKeys: APIKeysNamespace | undefined;\n oauthApplication: OAuthApplicationNamespace | undefined;\n};\n\nexport class IsomorphicClerk implements IsomorphicLoadedClerk {\n private readonly mode: 'browser' | 'server';\n private readonly options: IsomorphicClerkOptions;\n private readonly Clerk: ClerkProp;\n private clerkjs: BrowserClerk | HeadlessBrowserClerk | null = null;\n private preopenOneTap?: null | GoogleOneTapProps = null;\n private preopenUserVerification?: null | __internal_UserVerificationProps = null;\n private preopenEnableOrganizationsPrompt?: null | __internal_EnableOrganizationsPromptProps = null;\n private preopenSignIn?: null | SignInProps = null;\n private preopenCheckout?: null | __internal_CheckoutProps = null;\n private preopenPlanDetails: null | __internal_PlanDetailsProps = null;\n private preopenSubscriptionDetails: null | __internal_SubscriptionDetailsProps = null;\n private preopenSignUp?: null | SignUpProps = null;\n private preopenUserProfile?: null | UserProfileProps = null;\n private preopenOrganizationProfile?: null | OrganizationProfileProps = null;\n private preopenCreateOrganization?: null | CreateOrganizationProps = null;\n private preOpenWaitlist?: null | WaitlistProps = null;\n private premountSignInNodes = new Map<HTMLDivElement, SignInProps | undefined>();\n private premountSignUpNodes = new Map<HTMLDivElement, SignUpProps | undefined>();\n private premountUserAvatarNodes = new Map<HTMLDivElement, UserAvatarProps | undefined>();\n private premountUserProfileNodes = new Map<HTMLDivElement, UserProfileProps | undefined>();\n private premountUserButtonNodes = new Map<HTMLDivElement, UserButtonProps | undefined>();\n private premountOrganizationProfileNodes = new Map<HTMLDivElement, OrganizationProfileProps | undefined>();\n private premountCreateOrganizationNodes = new Map<HTMLDivElement, CreateOrganizationProps | undefined>();\n private premountOrganizationSwitcherNodes = new Map<HTMLDivElement, OrganizationSwitcherProps | undefined>();\n private premountOrganizationListNodes = new Map<HTMLDivElement, OrganizationListProps | undefined>();\n private premountMethodCalls = new Map<MethodName<BrowserClerk>, MethodCallback>();\n private premountWaitlistNodes = new Map<HTMLDivElement, WaitlistProps | undefined>();\n private premountPricingTableNodes = new Map<HTMLDivElement, PricingTableProps | undefined>();\n private premountAPIKeysNodes = new Map<HTMLDivElement, APIKeysProps | undefined>();\n private premountConfigureSSONodes = new Map<HTMLDivElement, ConfigureSSOProps | undefined>();\n private premountOAuthConsentNodes = new Map<HTMLDivElement, __internal_OAuthConsentProps | undefined>();\n private premountTaskChooseOrganizationNodes = new Map<HTMLDivElement, TaskChooseOrganizationProps | undefined>();\n private premountTaskResetPasswordNodes = new Map<HTMLDivElement, TaskResetPasswordProps | undefined>();\n private premountTaskSetupMFANodes = new Map<HTMLDivElement, TaskSetupMFAProps | undefined>();\n // A separate Map of `addListener` method calls to handle multiple listeners.\n private premountAddListenerCalls = new Map<\n ListenerCallback,\n {\n options?: ListenerOptions;\n handlers: {\n unsubscribe: UnsubscribeCallback;\n nativeUnsubscribe?: UnsubscribeCallback;\n };\n }\n >();\n private loadedListeners: Array<() => void> = [];\n\n #status: ClerkStatus = 'loading';\n #domain: DomainOrProxyUrl['domain'];\n #proxyUrl: DomainOrProxyUrl['proxyUrl'];\n #publishableKey: string;\n #eventBus = createClerkEventBus();\n #stateProxy: StateProxy;\n get publishableKey(): string {\n return this.#publishableKey;\n }\n\n get loaded(): boolean {\n return this.clerkjs?.loaded || false;\n }\n\n get status(): ClerkStatus {\n /**\n * If clerk-js is not available the returned value can either be \"loading\" or \"error\".\n */\n if (!this.clerkjs) {\n return this.#status;\n }\n return (\n this.clerkjs?.status ||\n /**\n * Support older clerk-js versions.\n * If clerk-js is available but `.status` is missing it we need to fallback to `.loaded`.\n * Since \"degraded\" an \"error\" did not exist before,\n * map \"loaded\" to \"ready\" and \"not loaded\" to \"loading\".\n */\n (this.clerkjs.loaded ? 'ready' : 'loading')\n );\n }\n\n static #instance: IsomorphicClerk | null | undefined;\n\n static getOrCreateInstance(options: IsomorphicClerkOptions) {\n // During SSR: a new instance should be created for every request\n // During CSR: use the cached instance for the whole lifetime of the app\n // Also will recreate the instance if the provided Clerk instance changes\n // This method should be idempotent in both scenarios\n if (\n !inBrowser() ||\n !this.#instance ||\n (options.Clerk && this.#instance.Clerk !== options.Clerk) ||\n // Allow hot swapping PKs on the client\n this.#instance.publishableKey !== options.publishableKey\n ) {\n this.#instance = new IsomorphicClerk(options);\n }\n return this.#instance;\n }\n\n static clearInstance() {\n this.#instance = null;\n }\n\n get domain(): string {\n // This getter can run in environments where window is not available.\n // In those cases we should expect and use domain as a string\n if (typeof window !== 'undefined' && window.location) {\n return handleValueOrFn(this.#domain, new URL(window.location.href), '');\n }\n if (typeof this.#domain === 'function') {\n return errorThrower.throw(unsupportedNonBrowserDomainOrProxyUrlFunction);\n }\n return this.#domain || '';\n }\n\n get proxyUrl(): string {\n // This getter can run in environments where window is not available.\n // In those cases we should expect and use proxy as a string\n if (typeof window !== 'undefined' && window.location) {\n return handleValueOrFn(this.#proxyUrl, new URL(window.location.href), '');\n }\n if (typeof this.#proxyUrl === 'function') {\n return errorThrower.throw(unsupportedNonBrowserDomainOrProxyUrlFunction);\n }\n return this.#proxyUrl || '';\n }\n\n /**\n * Accesses private options from the `Clerk` instance and defaults to\n * `IsomorphicClerk` options when in SSR context.\n * @internal\n */\n public __internal_getOption<K extends keyof ClerkOptions>(key: K): ClerkOptions[K] | undefined {\n return this.clerkjs?.__internal_getOption ? this.clerkjs?.__internal_getOption(key) : this.options[key];\n }\n\n constructor(options: IsomorphicClerkOptions) {\n this.#publishableKey = options?.publishableKey;\n this.#proxyUrl = options?.proxyUrl;\n this.#domain = options?.domain;\n this.options = options;\n this.Clerk = options?.Clerk || null;\n this.mode = inBrowser() ? 'browser' : 'server';\n this.#stateProxy = new StateProxy(this);\n\n if (!this.options.sdkMetadata) {\n this.options.sdkMetadata = SDK_METADATA;\n }\n this.#eventBus.emit(clerkEvents.Status, 'loading');\n this.#eventBus.prioritizedOn(clerkEvents.Status, status => (this.#status = status));\n\n // TODO: Please check into refactoring the type logic here, the experimental type interface is using type Autocomplete<U extends T, T = string> = U | (T & Record<never, never>);\n // so we are casting options.experimental.runtimeEnvironment to avoid changing Autocomplete to use an intersection (&) instead of a union (|), as this could cause problems in other parts of the codebase if not also refactored.\n\n if (\n this.#publishableKey &&\n (this.options.experimental as { runtimeEnvironment?: string } | undefined)?.runtimeEnvironment === 'headless' &&\n this.options.Clerk\n ) {\n void this.loadHeadlessClerk();\n } else if (this.#publishableKey) {\n void this.getEntryChunks();\n }\n }\n\n /**\n * Initialize Clerk for headless/React Native environments where a Clerk instance is provided directly.\n * Only handles Clerk construction and loading — post-load wiring is shared via replayInterceptedInvocations.\n */\n private loadHeadlessClerk(): void {\n const clerk = isConstructor<BrowserClerkConstructor | HeadlessBrowserClerkConstructor>(this.options.Clerk)\n ? new this.options.Clerk(this.#publishableKey, { proxyUrl: this.proxyUrl, domain: this.domain })\n : this.options.Clerk;\n\n if (!clerk) {\n this.#eventBus.emit(clerkEvents.Status, 'error');\n return;\n }\n\n const onLoaded = () => {\n this.replayInterceptedInvocations(clerk);\n };\n\n if (!clerk.loaded) {\n clerk\n .load(this.options)\n .then(() => onLoaded())\n .catch(err => {\n if (__DEV__) {\n console.error('Clerk: Failed to load:', err);\n }\n this.#eventBus.emit(clerkEvents.Status, 'error');\n this.emitLoaded();\n });\n } else {\n onLoaded();\n }\n }\n\n get sdkMetadata() {\n return this.clerkjs?.sdkMetadata || this.options.sdkMetadata || undefined;\n }\n\n get instanceType() {\n return this.clerkjs?.instanceType;\n }\n\n get frontendApi() {\n return this.clerkjs?.frontendApi || '';\n }\n\n get isStandardBrowser() {\n return this.clerkjs?.isStandardBrowser || this.options.standardBrowser || false;\n }\n\n get isSatellite() {\n // This getter can run in environments where window is not available.\n // In those cases we should expect and use domain as a string\n if (typeof window !== 'undefined' && window.location) {\n return handleValueOrFn(this.options.isSatellite, new URL(window.location.href), false);\n }\n if (typeof this.options.isSatellite === 'function') {\n return errorThrower.throw(unsupportedNonBrowserDomainOrProxyUrlFunction);\n }\n return false;\n }\n\n buildSignInUrl = (opts?: RedirectOptions): string | void => {\n const callback = () => this.clerkjs?.buildSignInUrl(opts) || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildSignInUrl', callback);\n }\n };\n\n buildSignUpUrl = (opts?: RedirectOptions): string | void => {\n const callback = () => this.clerkjs?.buildSignUpUrl(opts) || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildSignUpUrl', callback);\n }\n };\n\n buildAfterSignInUrl = (...args: Parameters<Clerk['buildAfterSignInUrl']>): string | void => {\n const callback = () => this.clerkjs?.buildAfterSignInUrl(...args) || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildAfterSignInUrl', callback);\n }\n };\n\n buildAfterSignUpUrl = (...args: Parameters<Clerk['buildAfterSignUpUrl']>): string | void => {\n const callback = () => this.clerkjs?.buildAfterSignUpUrl(...args) || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildAfterSignUpUrl', callback);\n }\n };\n\n buildAfterSignOutUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildAfterSignOutUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildAfterSignOutUrl', callback);\n }\n };\n\n buildNewSubscriptionRedirectUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildNewSubscriptionRedirectUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildNewSubscriptionRedirectUrl', callback);\n }\n };\n\n buildAfterMultiSessionSingleSignOutUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildAfterMultiSessionSingleSignOutUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildAfterMultiSessionSingleSignOutUrl', callback);\n }\n };\n\n buildUserProfileUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildUserProfileUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildUserProfileUrl', callback);\n }\n };\n\n buildCreateOrganizationUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildCreateOrganizationUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildCreateOrganizationUrl', callback);\n }\n };\n\n buildOrganizationProfileUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildOrganizationProfileUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildOrganizationProfileUrl', callback);\n }\n };\n\n buildWaitlistUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildWaitlistUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildWaitlistUrl', callback);\n }\n };\n\n buildTasksUrl = (): string | void => {\n const callback = () => this.clerkjs?.buildTasksUrl() || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildTasksUrl', callback);\n }\n };\n\n buildUrlWithAuth = (to: string): string | void => {\n const callback = () => this.clerkjs?.buildUrlWithAuth(to) || '';\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('buildUrlWithAuth', callback);\n }\n };\n\n handleUnauthenticated = async () => {\n const callback = () => this.clerkjs?.handleUnauthenticated();\n if (this.clerkjs && this.loaded) {\n void callback();\n } else {\n this.premountMethodCalls.set('handleUnauthenticated', callback);\n }\n };\n\n #waitForClerkJS(): Promise<HeadlessBrowserClerk | BrowserClerk> {\n return new Promise<HeadlessBrowserClerk | BrowserClerk>(resolve => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.addOnLoaded(() => resolve(this.clerkjs!));\n });\n }\n\n async getEntryChunks(): Promise<void> {\n if (this.mode !== 'browser' || this.loaded) {\n return;\n }\n\n // Store frontendAPI value on window as a fallback. This value can be used as a\n // fallback during ClerkJS hot loading in case ClerkJS fails to find the\n // \"data-clerk-frontend-api\" attribute on its script tag.\n // This can happen when the DOM is altered completely during client rehydration.\n // For example, in Remix with React 18 the document changes completely via `hydrateRoot(document)`.\n // For more information refer to:\n // - https://github.com/remix-run/remix/issues/2947\n // - https://github.com/facebook/react/issues/24430\n if (typeof window !== 'undefined') {\n window.__clerk_publishable_key = this.#publishableKey;\n window.__clerk_proxy_url = this.proxyUrl;\n window.__clerk_domain = this.domain;\n }\n\n try {\n const clerk = await this.getClerkJsEntryChunk();\n\n if (!clerk.loaded) {\n this.beforeLoad(clerk);\n // Load UI when:\n // - standard browser and no pre-created Clerk instance (normal CDN path), OR\n // - a bundled ClerkUI was provided via the ui prop (e.g. chrome-extension, even with standardBrowser: false)\n const shouldLoadUi =\n (this.options.standardBrowser !== false && !this.options.Clerk) || !!this.options.ui?.ClerkUI;\n const ClerkUI = shouldLoadUi ? await this.getClerkUIEntryChunk() : undefined;\n await clerk.load({ ...this.options, ui: { ...this.options.ui, ClerkUI } });\n }\n if (clerk.loaded) {\n this.replayInterceptedInvocations(clerk);\n }\n } catch (err) {\n const error = err as Error;\n this.#eventBus.emit(clerkEvents.Status, 'error');\n console.error(error.stack || error.message || error);\n return;\n }\n }\n\n private async getClerkJsEntryChunk(): Promise<HeadlessBrowserClerk | BrowserClerk> {\n // Hotload bundle\n if ((!this.options.Clerk || this.options.__internal_clerkJSUrl) && !__BUILD_DISABLE_RHC__) {\n // the UMD script sets the global.Clerk instance\n // we do not want to await here as we\n await loadClerkJSScript({\n ...this.options,\n publishableKey: this.#publishableKey,\n proxyUrl: this.proxyUrl,\n domain: this.domain,\n nonce: this.options.nonce,\n });\n }\n\n // Otherwise, set global.Clerk to the bundled ctor or instance\n if (this.options.Clerk && !this.options.__internal_clerkJSUrl) {\n global.Clerk = isConstructor<BrowserClerkConstructor | HeadlessBrowserClerkConstructor>(this.options.Clerk)\n ? new this.options.Clerk(this.#publishableKey, { proxyUrl: this.proxyUrl, domain: this.domain })\n : this.options.Clerk;\n }\n\n if (!global.Clerk) {\n // TODO @nikos: somehow throw if clerk ui failed to load but it was not headless\n throw new Error('Failed to download latest ClerkJS. Contact support@clerk.com.');\n }\n\n return global.Clerk;\n }\n\n private async getClerkUIEntryChunk(): Promise<ClerkUIConstructor | undefined> {\n // Support bundled UI via ui.ClerkUI prop\n const uiProp = (this.options as { ui?: { __brand?: string; ClerkUI?: ClerkUIConstructor } }).ui;\n const hasInternalUrl = !!this.options.__internal_clerkUIUrl;\n if (uiProp?.ClerkUI && !hasInternalUrl) {\n return uiProp.ClerkUI;\n }\n\n // Skip CDN prefetch when ui prop is passed (bundled UI) or prefetchUI is false\n if ((uiProp || this.options.prefetchUI === false) && !hasInternalUrl) {\n return undefined;\n }\n\n // Skip the remote UI loader in no-RHC builds (e.g. Chrome extensions) so the CDN script\n // injector is dead-code-eliminated from the bundle, mirroring getClerkJsEntryChunk.\n if (!__BUILD_DISABLE_RHC__) {\n await loadClerkUIScript({\n ...this.options,\n publishableKey: this.#publishableKey,\n proxyUrl: this.proxyUrl,\n domain: this.domain,\n nonce: this.options.nonce,\n });\n\n if (!global.__internal_ClerkUICtor) {\n throw new Error('Failed to download latest Clerk UI. Contact support@clerk.com.');\n }\n\n return global.__internal_ClerkUICtor;\n }\n\n return undefined;\n }\n\n public on: Clerk['on'] = (...args) => {\n // Support older clerk-js versions.\n if (this.clerkjs?.on) {\n return this.clerkjs.on(...args);\n } else {\n this.#eventBus.on(...args);\n }\n };\n\n public off: Clerk['off'] = (...args) => {\n // Support older clerk-js versions.\n if (this.clerkjs?.off) {\n return this.clerkjs.off(...args);\n } else {\n this.#eventBus.off(...args);\n }\n };\n\n /**\n * @deprecated Please use `addStatusListener`. This api will be removed in the next major.\n */\n public addOnLoaded = (cb: () => void) => {\n this.loadedListeners.push(cb);\n /**\n * When IsomorphicClerk is loaded execute the callback directly\n */\n if (this.loaded) {\n this.emitLoaded();\n }\n };\n\n /**\n * @deprecated Please use `__internal_setStatus`. This api will be removed in the next major.\n */\n public emitLoaded = () => {\n this.loadedListeners.forEach(cb => cb());\n this.loadedListeners = [];\n };\n\n private beforeLoad = (clerkjs: BrowserClerk | HeadlessBrowserClerk | undefined) => {\n if (!clerkjs) {\n throw new Error('Failed to hydrate latest Clerk JS');\n }\n };\n\n private replayInterceptedInvocations = (clerkjs: BrowserClerk | HeadlessBrowserClerk | undefined) => {\n if (!clerkjs) {\n throw new Error('Failed to hydrate latest Clerk JS');\n }\n\n this.clerkjs = clerkjs;\n\n this.premountMethodCalls.forEach(cb => cb());\n this.premountAddListenerCalls.forEach((listenerExtras, listener) => {\n listenerExtras.handlers.nativeUnsubscribe = clerkjs.addListener(listener, listenerExtras.options);\n });\n\n this.#eventBus.internal.retrieveListeners('status')?.forEach(listener => {\n // Since clerkjs exists it will call `this.clerkjs.on('status', listener)`\n this.on('status', listener, { notify: true });\n });\n\n if (this.preopenSignIn !== null) {\n clerkjs.openSignIn(this.preopenSignIn);\n }\n\n if (this.preopenCheckout !== null) {\n clerkjs.__internal_openCheckout(this.preopenCheckout);\n }\n\n if (this.preopenPlanDetails !== null) {\n clerkjs.__internal_openPlanDetails(this.preopenPlanDetails);\n }\n\n if (this.preopenSubscriptionDetails !== null) {\n clerkjs.__internal_openSubscriptionDetails(this.preopenSubscriptionDetails);\n }\n\n if (this.preopenSignUp !== null) {\n clerkjs.openSignUp(this.preopenSignUp);\n }\n\n if (this.preopenUserProfile !== null) {\n clerkjs.openUserProfile(this.preopenUserProfile);\n }\n\n if (this.preopenUserVerification !== null) {\n clerkjs.__internal_openReverification(this.preopenUserVerification);\n }\n\n if (this.preopenOneTap !== null) {\n clerkjs.openGoogleOneTap(this.preopenOneTap);\n }\n\n if (this.preopenOrganizationProfile !== null) {\n clerkjs.openOrganizationProfile(this.preopenOrganizationProfile);\n }\n\n if (this.preopenCreateOrganization !== null) {\n clerkjs.openCreateOrganization(this.preopenCreateOrganization);\n }\n\n if (this.preOpenWaitlist !== null) {\n clerkjs.openWaitlist(this.preOpenWaitlist);\n }\n\n if (this.preopenEnableOrganizationsPrompt) {\n clerkjs.__internal_openEnableOrganizationsPrompt(this.preopenEnableOrganizationsPrompt);\n }\n\n this.premountSignInNodes.forEach((props, node) => {\n clerkjs.mountSignIn(node, props);\n });\n\n this.premountSignUpNodes.forEach((props, node) => {\n clerkjs.mountSignUp(node, props);\n });\n\n this.premountUserProfileNodes.forEach((props, node) => {\n clerkjs.mountUserProfile(node, props);\n });\n\n this.premountUserAvatarNodes.forEach((props, node) => {\n clerkjs.mountUserAvatar(node, props);\n });\n\n this.premountUserButtonNodes.forEach((props, node) => {\n clerkjs.mountUserButton(node, props);\n });\n\n this.premountOrganizationListNodes.forEach((props, node) => {\n clerkjs.mountOrganizationList(node, props);\n });\n\n this.premountWaitlistNodes.forEach((props, node) => {\n clerkjs.mountWaitlist(node, props);\n });\n\n this.premountPricingTableNodes.forEach((props, node) => {\n clerkjs.mountPricingTable(node, props);\n });\n\n this.premountAPIKeysNodes.forEach((props, node) => {\n clerkjs.mountAPIKeys(node, props);\n });\n\n this.premountConfigureSSONodes.forEach((props, node) => {\n clerkjs.__internal_mountConfigureSSO(node, props);\n });\n\n this.premountOAuthConsentNodes.forEach((props, node) => {\n clerkjs.__internal_mountOAuthConsent(node, props);\n });\n\n this.premountTaskChooseOrganizationNodes.forEach((props, node) => {\n clerkjs.mountTaskChooseOrganization(node, props);\n });\n\n this.premountTaskResetPasswordNodes.forEach((props, node) => {\n clerkjs.mountTaskResetPassword(node, props);\n });\n\n this.premountTaskSetupMFANodes.forEach((props, node) => {\n clerkjs.mountTaskSetupMFA(node, props);\n });\n\n /**\n * Only update status in case `clerk.status` is missing. In any other case, `clerk-js` should be the orchestrator.\n */\n if (typeof this.clerkjs.status === 'undefined') {\n this.#eventBus.emit(clerkEvents.Status, 'ready');\n }\n\n this.emitLoaded();\n return this.clerkjs;\n };\n\n get version() {\n return this.clerkjs?.version;\n }\n\n get client(): ClientResource | undefined {\n if (this.clerkjs) {\n return this.clerkjs.client;\n // TODO: add ssr condition\n } else {\n return undefined;\n }\n }\n\n get session() {\n if (this.clerkjs) {\n return this.clerkjs.session;\n } else {\n return undefined;\n }\n }\n\n get user() {\n if (this.clerkjs) {\n return this.clerkjs.user;\n } else {\n return undefined;\n }\n }\n\n get organization() {\n if (this.clerkjs) {\n return this.clerkjs.organization;\n } else {\n return undefined;\n }\n }\n\n get telemetry() {\n if (this.clerkjs) {\n return this.clerkjs.telemetry;\n } else {\n return undefined;\n }\n }\n\n get __internal_environment(): any {\n if (this.clerkjs) {\n return (this.clerkjs as any).__internal_environment;\n // TODO: add ssr condition\n } else {\n return undefined;\n }\n }\n\n get isSignedIn(): boolean {\n if (this.clerkjs) {\n return this.clerkjs.isSignedIn;\n } else {\n return false;\n }\n }\n\n get billing(): BillingNamespace | undefined {\n return this.clerkjs?.billing;\n }\n\n get __internal_state(): State {\n return this.loaded && this.clerkjs ? this.clerkjs.__internal_state : this.#stateProxy;\n }\n\n get apiKeys(): APIKeysNamespace | undefined {\n return this.clerkjs?.apiKeys;\n }\n\n get oauthApplication(): OAuthApplicationNamespace | undefined {\n return this.clerkjs?.oauthApplication;\n }\n\n __experimental_checkout = (...args: Parameters<Clerk['__experimental_checkout']>) => {\n return this.loaded && this.clerkjs\n ? this.clerkjs.__experimental_checkout(...args)\n : this.#stateProxy.checkoutSignal(...args);\n };\n\n __internal_setEnvironment(...args: any): void {\n if (this.clerkjs && '__internal_setEnvironment' in this.clerkjs) {\n (this.clerkjs as any).__internal_setEnvironment(args);\n } else {\n return undefined;\n }\n }\n\n // TODO @userland-errors:\n __internal_updateProps = async (props: any): Promise<void> => {\n const clerkjs = await this.#waitForClerkJS();\n // Handle case where accounts has clerk-react@4 installed, but clerk-js@3 is manually loaded\n if (clerkjs && '__internal_updateProps' in clerkjs) {\n return (clerkjs as any).__internal_updateProps(props);\n }\n };\n\n get __internal_lastEmittedResources(): Resources | undefined {\n return this.clerkjs?.__internal_lastEmittedResources;\n }\n\n /**\n * `setActive` can be used to set the active session and/or organization.\n */\n setActive = (params: SetActiveParams): Promise<void> => {\n if (this.clerkjs) {\n return this.clerkjs.setActive(params);\n } else {\n return Promise.reject();\n }\n };\n\n openSignIn = (props?: SignInProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.openSignIn(props);\n } else {\n this.preopenSignIn = props;\n }\n };\n\n closeSignIn = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.closeSignIn();\n } else {\n this.preopenSignIn = null;\n }\n };\n\n __internal_openCheckout = (props?: __internal_CheckoutProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_openCheckout(props);\n } else {\n this.preopenCheckout = props;\n }\n };\n\n __internal_closeCheckout = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_closeCheckout();\n } else {\n this.preopenCheckout = null;\n }\n };\n\n __internal_openPlanDetails = (props: __internal_PlanDetailsProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_openPlanDetails(props);\n } else {\n this.preopenPlanDetails = props;\n }\n };\n\n __internal_closePlanDetails = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_closePlanDetails();\n } else {\n this.preopenPlanDetails = null;\n }\n };\n\n __internal_openSubscriptionDetails = (props?: __internal_SubscriptionDetailsProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_openSubscriptionDetails(props);\n } else {\n this.preopenSubscriptionDetails = props ?? null;\n }\n };\n\n __internal_closeSubscriptionDetails = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_closeSubscriptionDetails();\n } else {\n this.preopenSubscriptionDetails = null;\n }\n };\n\n __internal_openReverification = (props?: __internal_UserVerificationModalProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_openReverification(props);\n } else {\n this.preopenUserVerification = props;\n }\n };\n\n __internal_closeReverification = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_closeReverification();\n } else {\n this.preopenUserVerification = null;\n }\n };\n\n __internal_openEnableOrganizationsPrompt = (props: __internal_EnableOrganizationsPromptProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_openEnableOrganizationsPrompt(props);\n } else {\n this.preopenEnableOrganizationsPrompt = props;\n }\n };\n\n __internal_closeEnableOrganizationsPrompt = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_closeEnableOrganizationsPrompt();\n } else {\n this.preopenEnableOrganizationsPrompt = null;\n }\n };\n\n openGoogleOneTap = (props?: GoogleOneTapProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.openGoogleOneTap(props);\n } else {\n this.preopenOneTap = props;\n }\n };\n\n closeGoogleOneTap = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.closeGoogleOneTap();\n } else {\n this.preopenOneTap = null;\n }\n };\n\n openUserProfile = (props?: UserProfileProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.openUserProfile(props);\n } else {\n this.preopenUserProfile = props;\n }\n };\n\n closeUserProfile = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.closeUserProfile();\n } else {\n this.preopenUserProfile = null;\n }\n };\n\n openOrganizationProfile = (props?: OrganizationProfileProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.openOrganizationProfile(props);\n } else {\n this.preopenOrganizationProfile = props;\n }\n };\n\n closeOrganizationProfile = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.closeOrganizationProfile();\n } else {\n this.preopenOrganizationProfile = null;\n }\n };\n\n openCreateOrganization = (props?: CreateOrganizationProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.openCreateOrganization(props);\n } else {\n this.preopenCreateOrganization = props;\n }\n };\n\n closeCreateOrganization = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.closeCreateOrganization();\n } else {\n this.preopenCreateOrganization = null;\n }\n };\n\n openWaitlist = (props?: WaitlistProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.openWaitlist(props);\n } else {\n this.preOpenWaitlist = props;\n }\n };\n\n closeWaitlist = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.closeWaitlist();\n } else {\n this.preOpenWaitlist = null;\n }\n };\n\n openSignUp = (props?: SignUpProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.openSignUp(props);\n } else {\n this.preopenSignUp = props;\n }\n };\n\n closeSignUp = () => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.closeSignUp();\n } else {\n this.preopenSignUp = null;\n }\n };\n\n mountSignIn = (node: HTMLDivElement, props?: SignInProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountSignIn(node, props);\n } else {\n this.premountSignInNodes.set(node, props);\n }\n };\n\n unmountSignIn = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountSignIn(node);\n } else {\n this.premountSignInNodes.delete(node);\n }\n };\n\n mountSignUp = (node: HTMLDivElement, props?: SignUpProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountSignUp(node, props);\n } else {\n this.premountSignUpNodes.set(node, props);\n }\n };\n\n unmountSignUp = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountSignUp(node);\n } else {\n this.premountSignUpNodes.delete(node);\n }\n };\n\n mountUserAvatar = (node: HTMLDivElement, props?: UserAvatarProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountUserAvatar(node, props);\n } else {\n this.premountUserAvatarNodes.set(node, props);\n }\n };\n\n unmountUserAvatar = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountUserAvatar(node);\n } else {\n this.premountUserAvatarNodes.delete(node);\n }\n };\n\n mountUserProfile = (node: HTMLDivElement, props?: UserProfileProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountUserProfile(node, props);\n } else {\n this.premountUserProfileNodes.set(node, props);\n }\n };\n\n unmountUserProfile = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountUserProfile(node);\n } else {\n this.premountUserProfileNodes.delete(node);\n }\n };\n\n mountOrganizationProfile = (node: HTMLDivElement, props?: OrganizationProfileProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountOrganizationProfile(node, props);\n } else {\n this.premountOrganizationProfileNodes.set(node, props);\n }\n };\n\n unmountOrganizationProfile = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountOrganizationProfile(node);\n } else {\n this.premountOrganizationProfileNodes.delete(node);\n }\n };\n\n mountCreateOrganization = (node: HTMLDivElement, props?: CreateOrganizationProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountCreateOrganization(node, props);\n } else {\n this.premountCreateOrganizationNodes.set(node, props);\n }\n };\n\n unmountCreateOrganization = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountCreateOrganization(node);\n } else {\n this.premountCreateOrganizationNodes.delete(node);\n }\n };\n\n mountOrganizationSwitcher = (node: HTMLDivElement, props?: OrganizationSwitcherProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountOrganizationSwitcher(node, props);\n } else {\n this.premountOrganizationSwitcherNodes.set(node, props);\n }\n };\n\n unmountOrganizationSwitcher = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountOrganizationSwitcher(node);\n } else {\n this.premountOrganizationSwitcherNodes.delete(node);\n }\n };\n\n __experimental_prefetchOrganizationSwitcher = () => {\n const callback = () => this.clerkjs?.__experimental_prefetchOrganizationSwitcher();\n if (this.clerkjs && this.loaded) {\n void callback();\n } else {\n this.premountMethodCalls.set('__experimental_prefetchOrganizationSwitcher', callback);\n }\n };\n\n mountOrganizationList = (node: HTMLDivElement, props?: OrganizationListProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountOrganizationList(node, props);\n } else {\n this.premountOrganizationListNodes.set(node, props);\n }\n };\n\n unmountOrganizationList = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountOrganizationList(node);\n } else {\n this.premountOrganizationListNodes.delete(node);\n }\n };\n\n mountUserButton = (node: HTMLDivElement, userButtonProps?: UserButtonProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountUserButton(node, userButtonProps);\n } else {\n this.premountUserButtonNodes.set(node, userButtonProps);\n }\n };\n\n unmountUserButton = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountUserButton(node);\n } else {\n this.premountUserButtonNodes.delete(node);\n }\n };\n\n mountWaitlist = (node: HTMLDivElement, props?: WaitlistProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountWaitlist(node, props);\n } else {\n this.premountWaitlistNodes.set(node, props);\n }\n };\n\n unmountWaitlist = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountWaitlist(node);\n } else {\n this.premountWaitlistNodes.delete(node);\n }\n };\n\n mountPricingTable = (node: HTMLDivElement, props?: PricingTableProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountPricingTable(node, props);\n } else {\n this.premountPricingTableNodes.set(node, props);\n }\n };\n\n unmountPricingTable = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountPricingTable(node);\n } else {\n this.premountPricingTableNodes.delete(node);\n }\n };\n\n mountAPIKeys = (node: HTMLDivElement, props?: APIKeysProps): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountAPIKeys(node, props);\n } else {\n this.premountAPIKeysNodes.set(node, props);\n }\n };\n\n unmountAPIKeys = (node: HTMLDivElement): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountAPIKeys(node);\n } else {\n this.premountAPIKeysNodes.delete(node);\n }\n };\n\n __internal_mountConfigureSSO = (node: HTMLDivElement, props?: ConfigureSSOProps): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_mountConfigureSSO(node, props);\n } else {\n this.premountConfigureSSONodes.set(node, props);\n }\n };\n\n __internal_unmountConfigureSSO = (node: HTMLDivElement): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_unmountConfigureSSO(node);\n } else {\n this.premountConfigureSSONodes.delete(node);\n }\n };\n\n __internal_mountOAuthConsent = (node: HTMLDivElement, props?: OAuthConsentProps) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_mountOAuthConsent(node, props);\n } else {\n this.premountOAuthConsentNodes.set(node, props);\n }\n };\n\n __internal_unmountOAuthConsent = (node: HTMLDivElement) => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.__internal_unmountOAuthConsent(node);\n } else {\n this.premountOAuthConsentNodes.delete(node);\n }\n };\n\n mountOAuthConsent = (node: HTMLDivElement, props?: OAuthConsentProps) => {\n this.__internal_mountOAuthConsent(node, props);\n };\n\n unmountOAuthConsent = (node: HTMLDivElement) => {\n this.__internal_unmountOAuthConsent(node);\n };\n\n mountTaskChooseOrganization = (node: HTMLDivElement, props?: TaskChooseOrganizationProps): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountTaskChooseOrganization(node, props);\n } else {\n this.premountTaskChooseOrganizationNodes.set(node, props);\n }\n };\n\n unmountTaskChooseOrganization = (node: HTMLDivElement): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountTaskChooseOrganization(node);\n } else {\n this.premountTaskChooseOrganizationNodes.delete(node);\n }\n };\n\n mountTaskResetPassword = (node: HTMLDivElement, props?: TaskResetPasswordProps): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountTaskResetPassword(node, props);\n } else {\n this.premountTaskResetPasswordNodes.set(node, props);\n }\n };\n\n unmountTaskResetPassword = (node: HTMLDivElement): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountTaskResetPassword(node);\n } else {\n this.premountTaskResetPasswordNodes.delete(node);\n }\n };\n\n mountTaskSetupMFA = (node: HTMLDivElement, props?: TaskSetupMFAProps): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.mountTaskSetupMFA(node, props);\n } else {\n this.premountTaskSetupMFANodes.set(node, props);\n }\n };\n\n unmountTaskSetupMFA = (node: HTMLDivElement): void => {\n if (this.clerkjs && this.loaded) {\n this.clerkjs.unmountTaskSetupMFA(node);\n } else {\n this.premountTaskSetupMFANodes.delete(node);\n }\n };\n\n addListener = (listener: ListenerCallback, options?: ListenerOptions): UnsubscribeCallback => {\n if (this.clerkjs) {\n return this.clerkjs.addListener(listener, options);\n } else {\n const unsubscribe = () => {\n const listenerExtras = this.premountAddListenerCalls.get(listener);\n if (listenerExtras?.handlers) {\n listenerExtras?.handlers.nativeUnsubscribe?.();\n this.premountAddListenerCalls.delete(listener);\n }\n };\n this.premountAddListenerCalls.set(listener, { options, handlers: { unsubscribe, nativeUnsubscribe: undefined } });\n return unsubscribe;\n }\n };\n\n navigate = (to: string) => {\n const callback = () => this.clerkjs?.navigate(to);\n if (this.clerkjs && this.loaded) {\n void callback();\n } else {\n this.premountMethodCalls.set('navigate', callback);\n }\n };\n\n redirectWithAuth = async (...args: Parameters<Clerk['redirectWithAuth']>) => {\n const callback = () => this.clerkjs?.redirectWithAuth(...args);\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectWithAuth', callback);\n return;\n }\n };\n\n redirectToSignIn = async (opts?: SignInRedirectOptions) => {\n const callback = () => this.clerkjs?.redirectToSignIn(opts as any);\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToSignIn', callback);\n return;\n }\n };\n\n redirectToSignUp = async (opts?: SignUpRedirectOptions) => {\n const callback = () => this.clerkjs?.redirectToSignUp(opts as any);\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToSignUp', callback);\n return;\n }\n };\n\n redirectToUserProfile = async () => {\n const callback = () => this.clerkjs?.redirectToUserProfile();\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToUserProfile', callback);\n return;\n }\n };\n\n redirectToAfterSignUp = (): void => {\n const callback = () => this.clerkjs?.redirectToAfterSignUp();\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToAfterSignUp', callback);\n }\n };\n\n redirectToAfterSignIn = () => {\n const callback = () => this.clerkjs?.redirectToAfterSignIn();\n if (this.clerkjs && this.loaded) {\n callback();\n } else {\n this.premountMethodCalls.set('redirectToAfterSignIn', callback);\n }\n };\n\n redirectToAfterSignOut = () => {\n const callback = () => this.clerkjs?.redirectToAfterSignOut();\n if (this.clerkjs && this.loaded) {\n callback();\n } else {\n this.premountMethodCalls.set('redirectToAfterSignOut', callback);\n }\n };\n\n redirectToOrganizationProfile = async () => {\n const callback = () => this.clerkjs?.redirectToOrganizationProfile();\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToOrganizationProfile', callback);\n return;\n }\n };\n\n redirectToCreateOrganization = async () => {\n const callback = () => this.clerkjs?.redirectToCreateOrganization();\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToCreateOrganization', callback);\n return;\n }\n };\n\n redirectToWaitlist = async () => {\n const callback = () => this.clerkjs?.redirectToWaitlist();\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToWaitlist', callback);\n return;\n }\n };\n\n redirectToTasks = async (opts?: TasksRedirectOptions) => {\n const callback = () => this.clerkjs?.redirectToTasks(opts);\n if (this.clerkjs && this.loaded) {\n return callback();\n } else {\n this.premountMethodCalls.set('redirectToTasks', callback);\n return;\n }\n };\n\n handleRedirectCallback = async (params: HandleOAuthCallbackParams): Promise<void> => {\n const callback = () => this.clerkjs?.handleRedirectCallback(params);\n if (this.clerkjs && this.loaded) {\n void callback()?.catch(() => {\n // This error is caused when the host app is using React18\n // and strictMode is enabled. This useEffects runs twice because\n // the clerk-react ui components mounts, unmounts and mounts again\n // so the clerk-js component loses its state because of the custom\n // unmount callback we're using.\n // This needs to be solved by tweaking the logic in uiComponents.tsx\n // or by making handleRedirectCallback idempotent\n });\n } else {\n this.premountMethodCalls.set('handleRedirectCallback', callback);\n }\n };\n\n handleGoogleOneTapCallback = async (\n signInOrUp: SignInResource | SignUpResource,\n params: HandleOAuthCallbackParams,\n ): Promise<void> => {\n const callback = () => this.clerkjs?.handleGoogleOneTapCallback(signInOrUp, params);\n if (this.clerkjs && this.loaded) {\n void callback()?.catch(() => {\n // This error is caused when the host app is using React18\n // and strictMode is enabled. This useEffects runs twice because\n // the clerk-react ui components mounts, unmounts and mounts again\n // so the clerk-js component loses its state because of the custom\n // unmount callback we're using.\n // This needs to be solved by tweaking the logic in uiComponents.tsx\n // or by making handleRedirectCallback idempotent\n });\n } else {\n this.premountMethodCalls.set('handleGoogleOneTapCallback', callback);\n }\n };\n\n handleEmailLinkVerification = async (params: HandleEmailLinkVerificationParams) => {\n const callback = () => this.clerkjs?.handleEmailLinkVerification(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('handleEmailLinkVerification', callback);\n }\n };\n\n authenticateWithMetamask = async (params?: AuthenticateWithMetamaskParams) => {\n const callback = () => this.clerkjs?.authenticateWithMetamask(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('authenticateWithMetamask', callback);\n }\n };\n\n authenticateWithCoinbaseWallet = async (params?: AuthenticateWithCoinbaseWalletParams) => {\n const callback = () => this.clerkjs?.authenticateWithCoinbaseWallet(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('authenticateWithCoinbaseWallet', callback);\n }\n };\n\n authenticateWithBase = async (params?: AuthenticateWithBaseParams) => {\n const callback = () => this.clerkjs?.authenticateWithBase(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('authenticateWithBase', callback);\n }\n };\n\n authenticateWithOKXWallet = async (params?: AuthenticateWithOKXWalletParams) => {\n const callback = () => this.clerkjs?.authenticateWithOKXWallet(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('authenticateWithOKXWallet', callback);\n }\n };\n\n authenticateWithSolana = async (params: AuthenticateWithSolanaParams) => {\n const callback = () => this.clerkjs?.authenticateWithSolana(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('authenticateWithSolana', callback);\n }\n };\n\n authenticateWithWeb3 = async (params: ClerkAuthenticateWithWeb3Params) => {\n const callback = () => this.clerkjs?.authenticateWithWeb3(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('authenticateWithWeb3', callback);\n }\n };\n\n authenticateWithGoogleOneTap = async (params: AuthenticateWithGoogleOneTapParams) => {\n const clerkjs = await this.#waitForClerkJS();\n return clerkjs.authenticateWithGoogleOneTap(params);\n };\n\n __internal_loadStripeJs = async () => {\n const clerkjs = await this.#waitForClerkJS();\n return clerkjs.__internal_loadStripeJs();\n };\n\n createOrganization = async (params: CreateOrganizationParams): Promise<OrganizationResource | void> => {\n const callback = () => this.clerkjs?.createOrganization(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<OrganizationResource>;\n } else {\n this.premountMethodCalls.set('createOrganization', callback);\n }\n };\n\n getOrganization = async (organizationId: string): Promise<OrganizationResource | void> => {\n const callback = () => this.clerkjs?.getOrganization(organizationId);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<OrganizationResource>;\n } else {\n this.premountMethodCalls.set('getOrganization', callback);\n }\n };\n\n joinWaitlist = async (params: JoinWaitlistParams): Promise<WaitlistResource | void> => {\n const callback = () => this.clerkjs?.joinWaitlist(params);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<WaitlistResource>;\n } else {\n this.premountMethodCalls.set('joinWaitlist', callback);\n }\n };\n\n signOut = async (...args: Parameters<Clerk['signOut']>) => {\n const callback = () => this.clerkjs?.signOut(...args);\n if (this.clerkjs && this.loaded) {\n return callback() as Promise<void>;\n } else {\n this.premountMethodCalls.set('signOut', callback);\n }\n };\n\n __internal_attemptToEnableEnvironmentSetting = (\n options: __internal_AttemptToEnableEnvironmentSettingParams,\n ): __internal_AttemptToEnableEnvironmentSettingResult | void => {\n const callback = () => this.clerkjs?.__internal_attemptToEnableEnvironmentSetting(options);\n if (this.clerkjs && this.loaded) {\n return callback() as __internal_AttemptToEnableEnvironmentSettingResult;\n } else {\n this.premountMethodCalls.set('__internal_attemptToEnableEnvironmentSetting', callback);\n }\n };\n}\n","import { inBrowser } from '@clerk/shared/browser';\nimport type {\n BillingSubscriptionPlanPeriod,\n CheckoutSignalValue,\n Clerk,\n ForPayerType,\n SignInErrors,\n SignUpErrors,\n SignUpVerificationResource,\n State,\n VerificationResource,\n WaitlistErrors,\n WaitlistResource,\n} from '@clerk/shared/types';\n\nimport { errorThrower } from './errors/errorThrower';\nimport type { IsomorphicClerk } from './isomorphicClerk';\n\nconst defaultSignInErrors = (): SignInErrors => ({\n fields: {\n identifier: null,\n password: null,\n code: null,\n },\n raw: null,\n global: null,\n});\n\nconst defaultSignUpErrors = (): SignUpErrors => ({\n fields: {\n firstName: null,\n lastName: null,\n emailAddress: null,\n phoneNumber: null,\n password: null,\n username: null,\n code: null,\n captcha: null,\n legalAccepted: null,\n },\n raw: null,\n global: null,\n});\n\nconst defaultWaitlistErrors = (): WaitlistErrors => ({\n fields: {\n emailAddress: null,\n },\n raw: null,\n global: null,\n});\n\nconst defaultVerificationResource = (): VerificationResource => ({\n pathRoot: '',\n\n attempts: null,\n error: null,\n expireAt: null,\n externalVerificationRedirectURL: null,\n nonce: null,\n message: null,\n status: null,\n strategy: null,\n verifiedAtClient: null,\n verifiedFromTheSameClient() {\n return false;\n },\n reload() {\n throw new Error('reload() called before Clerk is loaded');\n },\n __internal_toSnapshot() {\n return {\n object: 'verification',\n id: '',\n attempts: null,\n error: { code: '', message: '' },\n expire_at: null,\n externalVerificationRedirectURL: null,\n nonce: null,\n message: null,\n status: null,\n strategy: null,\n verified_at_client: null,\n };\n },\n});\n\nconst defaultSignUpVerificationResource = (): SignUpVerificationResource => ({\n ...defaultVerificationResource(),\n supportedStrategies: [],\n nextAction: '',\n reload() {\n throw new Error('reload() called before Clerk is loaded');\n },\n __internal_toSnapshot() {\n return {\n ...defaultVerificationResource().__internal_toSnapshot(),\n next_action: this.nextAction,\n supported_strategies: this.supportedStrategies,\n };\n },\n});\n\ntype CheckoutSignalProps = {\n for?: ForPayerType;\n planPeriod: BillingSubscriptionPlanPeriod;\n planId: string;\n};\n\nexport class StateProxy implements State {\n constructor(private isomorphicClerk: IsomorphicClerk) {}\n\n private readonly signInSignalProxy = this.buildSignInProxy();\n private readonly signUpSignalProxy = this.buildSignUpProxy();\n private readonly waitlistSignalProxy = this.buildWaitlistProxy();\n\n signInSignal() {\n return this.signInSignalProxy;\n }\n signUpSignal() {\n return this.signUpSignalProxy;\n }\n waitlistSignal() {\n return this.waitlistSignalProxy;\n }\n\n get __internal_waitlist() {\n return this.state.__internal_waitlist;\n }\n\n checkoutSignal(params: CheckoutSignalProps) {\n return this.buildCheckoutProxy(params);\n }\n\n private buildSignInProxy() {\n const gateProperty = this.gateProperty.bind(this);\n const target = () => this.client.signIn.__internal_future;\n\n return {\n errors: defaultSignInErrors(),\n fetchStatus: 'idle' as const,\n signIn: {\n status: 'needs_identifier' as const,\n availableStrategies: [],\n get isTransferable() {\n return gateProperty(target, 'isTransferable', false);\n },\n get id() {\n return gateProperty(target, 'id', undefined);\n },\n get supportedFirstFactors() {\n return gateProperty(target, 'supportedFirstFactors', []);\n },\n get supportedSecondFactors() {\n return gateProperty(target, 'supportedSecondFactors', []);\n },\n get secondFactorVerification() {\n return gateProperty(target, 'secondFactorVerification', {\n status: null,\n error: null,\n expireAt: null,\n externalVerificationRedirectURL: null,\n nonce: null,\n attempts: null,\n message: null,\n strategy: null,\n verifiedAtClient: null,\n verifiedFromTheSameClient: () => false,\n __internal_toSnapshot: () => {\n throw new Error('__internal_toSnapshot called before Clerk is loaded');\n },\n pathRoot: '',\n reload: () => {\n throw new Error('__internal_toSnapshot called before Clerk is loaded');\n },\n });\n },\n get identifier() {\n return gateProperty(target, 'identifier', null);\n },\n get createdSessionId() {\n return gateProperty(target, 'createdSessionId', null);\n },\n get userData() {\n return gateProperty(target, 'userData', {});\n },\n get firstFactorVerification() {\n return gateProperty(target, 'firstFactorVerification', {\n status: null,\n error: null,\n expireAt: null,\n externalVerificationRedirectURL: null,\n nonce: null,\n attempts: null,\n message: null,\n strategy: null,\n verifiedAtClient: null,\n verifiedFromTheSameClient: () => false,\n __internal_toSnapshot: () => {\n throw new Error('__internal_toSnapshot called before Clerk is loaded');\n },\n pathRoot: '',\n reload: () => {\n throw new Error('__internal_toSnapshot called before Clerk is loaded');\n },\n });\n },\n get canBeDiscarded() {\n return gateProperty(target, 'canBeDiscarded', false);\n },\n\n create: this.gateMethod(target, 'create'),\n password: this.gateMethod(target, 'password'),\n sso: this.gateMethod(target, 'sso'),\n finalize: this.gateMethod(target, 'finalize'),\n reset: this.gateMethod(target, 'reset'),\n\n emailCode: this.wrapMethods(() => target().emailCode, ['sendCode', 'verifyCode'] as const),\n emailLink: this.wrapStruct(\n () => target().emailLink,\n ['sendLink', 'waitForVerification'] as const,\n ['verification'] as const,\n { verification: null },\n ),\n resetPasswordEmailCode: this.wrapMethods(() => target().resetPasswordEmailCode, [\n 'sendCode',\n 'verifyCode',\n 'submitPassword',\n ] as const),\n resetPasswordPhoneCode: this.wrapMethods(() => target().resetPasswordPhoneCode, [\n 'sendCode',\n 'verifyCode',\n 'submitPassword',\n ] as const),\n phoneCode: this.wrapMethods(() => target().phoneCode, ['sendCode', 'verifyCode'] as const),\n mfa: this.wrapMethods(() => target().mfa, [\n 'sendPhoneCode',\n 'verifyPhoneCode',\n 'sendEmailCode',\n 'verifyEmailCode',\n 'verifyTOTP',\n 'verifyBackupCode',\n ] as const),\n ticket: this.gateMethod(target, 'ticket'),\n passkey: this.gateMethod(target, 'passkey'),\n web3: this.gateMethod(target, 'web3'),\n },\n };\n }\n\n private buildSignUpProxy() {\n const gateProperty = this.gateProperty.bind(this);\n const gateMethod = this.gateMethod.bind(this);\n const target = () => this.client.signUp.__internal_future;\n\n return {\n errors: defaultSignUpErrors(),\n fetchStatus: 'idle' as const,\n signUp: {\n get id() {\n return gateProperty(target, 'id', undefined);\n },\n get requiredFields() {\n return gateProperty(target, 'requiredFields', []);\n },\n get optionalFields() {\n return gateProperty(target, 'optionalFields', []);\n },\n get missingFields() {\n return gateProperty(target, 'missingFields', []);\n },\n get username() {\n return gateProperty(target, 'username', null);\n },\n get firstName() {\n return gateProperty(target, 'firstName', null);\n },\n get lastName() {\n return gateProperty(target, 'lastName', null);\n },\n get emailAddress() {\n return gateProperty(target, 'emailAddress', null);\n },\n get phoneNumber() {\n return gateProperty(target, 'phoneNumber', null);\n },\n get web3Wallet() {\n return gateProperty(target, 'web3Wallet', null);\n },\n get hasPassword() {\n return gateProperty(target, 'hasPassword', false);\n },\n get unsafeMetadata() {\n return gateProperty(target, 'unsafeMetadata', {});\n },\n get createdSessionId() {\n return gateProperty(target, 'createdSessionId', null);\n },\n get createdUserId() {\n return gateProperty(target, 'createdUserId', null);\n },\n get abandonAt() {\n return gateProperty(target, 'abandonAt', null);\n },\n get legalAcceptedAt() {\n return gateProperty(target, 'legalAcceptedAt', null);\n },\n get locale() {\n return gateProperty(target, 'locale', null);\n },\n get status() {\n return gateProperty(target, 'status', 'missing_requirements');\n },\n get unverifiedFields() {\n return gateProperty(target, 'unverifiedFields', []);\n },\n get isTransferable() {\n return gateProperty(target, 'isTransferable', false);\n },\n get canBeDiscarded() {\n return gateProperty(target, 'canBeDiscarded', false);\n },\n\n create: gateMethod(target, 'create'),\n update: gateMethod(target, 'update'),\n sso: gateMethod(target, 'sso'),\n password: gateMethod(target, 'password'),\n ticket: gateMethod(target, 'ticket'),\n web3: gateMethod(target, 'web3'),\n finalize: gateMethod(target, 'finalize'),\n reset: gateMethod(target, 'reset'),\n\n verifications: this.wrapStruct(\n () => target().verifications,\n [\n 'sendEmailCode',\n 'verifyEmailCode',\n 'sendEmailLink',\n 'waitForEmailLinkVerification',\n 'sendPhoneCode',\n 'verifyPhoneCode',\n ] as const,\n ['emailAddress', 'phoneNumber', 'web3Wallet', 'externalAccount', 'emailLinkVerification'] as const,\n {\n emailAddress: defaultSignUpVerificationResource(),\n phoneNumber: defaultSignUpVerificationResource(),\n web3Wallet: defaultSignUpVerificationResource(),\n externalAccount: defaultSignUpVerificationResource(),\n emailLinkVerification: null,\n },\n ),\n },\n };\n }\n\n private buildWaitlistProxy() {\n const gateProperty = this.gateProperty.bind(this);\n const gateMethod = this.gateMethod.bind(this);\n const target = (): WaitlistResource => {\n return this.state.__internal_waitlist;\n };\n\n return {\n errors: defaultWaitlistErrors(),\n fetchStatus: 'idle' as const,\n waitlist: {\n pathRoot: '/waitlist',\n get id() {\n return gateProperty(target, 'id', '');\n },\n get createdAt() {\n return gateProperty(target, 'createdAt', null);\n },\n get updatedAt() {\n return gateProperty(target, 'updatedAt', null);\n },\n\n join: gateMethod(target, 'join'),\n reload: gateMethod(target, 'reload'),\n },\n };\n }\n\n private buildCheckoutProxy(params: CheckoutSignalProps): CheckoutSignalValue {\n const gateProperty = this.gateProperty.bind(this);\n const targetCheckout = () => this.checkout(params);\n const target = () => targetCheckout().checkout;\n\n return {\n errors: {\n raw: null,\n global: null,\n },\n fetchStatus: 'idle' as const,\n checkout: {\n get status() {\n return gateProperty(target, 'status', 'needs_initialization') as 'needs_initialization';\n },\n get externalClientSecret() {\n return gateProperty(target, 'externalClientSecret', null) as null;\n },\n get externalGatewayId() {\n return gateProperty(target, 'externalGatewayId', null) as null;\n },\n get paymentMethod() {\n return gateProperty(target, 'paymentMethod', null) as null;\n },\n get plan() {\n return gateProperty(target, 'plan', null) as null;\n },\n get planPeriod() {\n return gateProperty(target, 'planPeriod', null) as null;\n },\n get totals() {\n return gateProperty(target, 'totals', null) as null;\n },\n get isImmediatePlanChange() {\n return gateProperty(target, 'isImmediatePlanChange', false) as null;\n },\n get freeTrialEndsAt() {\n return gateProperty(target, 'freeTrialEndsAt', null) as null;\n },\n get payer() {\n return gateProperty(target, 'payer', null) as null;\n },\n get planPeriodStart() {\n return gateProperty(target, 'planPeriodStart', null) as null;\n },\n get needsPaymentMethod() {\n return gateProperty(target, 'needsPaymentMethod', null) as null;\n },\n\n start: this.gateMethod<ReturnType<typeof target>, 'start'>(target, 'start'),\n confirm: this.gateMethod<ReturnType<typeof target>, 'confirm'>(target, 'confirm'),\n finalize: this.gateMethod<ReturnType<typeof target>, 'finalize'>(target, 'finalize'),\n },\n };\n }\n\n __internal_effect(_: () => void): () => void {\n throw new Error('__internal_effect called before Clerk is loaded');\n }\n __internal_computed<T>(_: (prev?: T) => T): () => T {\n throw new Error('__internal_computed called before Clerk is loaded');\n }\n\n private get state() {\n const s = this.isomorphicClerk.__internal_state;\n if (!s) {\n throw new Error('Clerk state not ready');\n }\n return s;\n }\n\n private get client() {\n const c = this.isomorphicClerk.client;\n if (!c) {\n throw new Error('Clerk client not ready');\n }\n return c;\n }\n\n private get checkout(): Clerk['__experimental_checkout'] {\n const c = this.isomorphicClerk.__experimental_checkout as Clerk['__experimental_checkout'];\n if (!c) {\n throw new Error('Clerk checkout not ready');\n }\n return c;\n }\n\n private gateProperty<T extends object, K extends keyof T>(getTarget: () => T, key: K, defaultValue: T[K]) {\n return (() => {\n if (!inBrowser() || !this.isomorphicClerk.loaded) {\n return defaultValue;\n }\n const t = getTarget();\n return t[key];\n })();\n }\n\n private gateMethod<T extends object, K extends keyof T & string>(getTarget: () => T, key: K) {\n type F = Extract<T[K], (...args: unknown[]) => unknown>;\n return (async (...args: Parameters<F>): Promise<ReturnType<F>> => {\n if (!inBrowser()) {\n return errorThrower.throw(`Attempted to call a method (${key}) that is not supported on the server.`);\n }\n if (!this.isomorphicClerk.loaded) {\n await new Promise<void>(resolve => this.isomorphicClerk.addOnLoaded(resolve));\n }\n const t = getTarget();\n return (t[key] as (...args: Parameters<F>) => ReturnType<F>).apply(t, args);\n }) as F;\n }\n\n private wrapMethods<T extends object, K extends readonly (keyof T & string)[]>(\n getTarget: () => T,\n keys: K,\n ): Pick<T, K[number]> {\n return Object.fromEntries(keys.map(k => [k, this.gateMethod(getTarget, k)])) as Pick<T, K[number]>;\n }\n\n private wrapStruct<T extends object, M extends readonly (keyof T)[], G extends readonly (keyof T)[]>(\n getTarget: () => T,\n methods: M,\n getters: G,\n fallbacks: Pick<T, G[number]>,\n ): Pick<T, M[number] | G[number]> & {\n [K in M[number]]: T[K] extends (...args: any[]) => any ? T[K] : never;\n } & {\n [K in G[number]]: T[K] extends (...args: any[]) => any ? never : T[K];\n } {\n const out: any = {};\n for (const m of methods) {\n out[m] = this.gateMethod(getTarget, m as any);\n }\n for (const g of getters) {\n Object.defineProperty(out, g, {\n get: () => this.gateProperty(getTarget, g as any, (fallbacks as any)[g]),\n enumerable: true,\n });\n }\n return out;\n }\n}\n"],"mappings":"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","names":["React","isVersionCompatible","React","inBrowser","_a","inBrowser","React","React"]}
@@ -289,19 +289,41 @@ var import_react11 = require("react");
289
289
  var import_react_dom = require("react-dom");
290
290
  var useCustomElementPortal = (elements) => {
291
291
  const [nodeMap, setNodeMap] = (0, import_react11.useState)(/* @__PURE__ */ new Map());
292
- return elements.map((el) => ({
293
- id: el.id,
294
- mount: (node) => setNodeMap((prev) => new Map(prev).set(String(el.id), node)),
295
- unmount: () => setNodeMap((prev) => {
296
- const newMap = new Map(prev);
297
- newMap.set(String(el.id), null);
298
- return newMap;
299
- }),
300
- portal: () => {
301
- const node = nodeMap.get(String(el.id));
302
- return node ? (0, import_react_dom.createPortal)(el.component, node) : null;
292
+ const nodeMapRef = (0, import_react11.useRef)(nodeMap);
293
+ const elementsRef = (0, import_react11.useRef)(/* @__PURE__ */ new Map());
294
+ const portalsRef = (0, import_react11.useRef)(/* @__PURE__ */ new Map());
295
+ nodeMapRef.current = nodeMap;
296
+ elementsRef.current = new Map(elements.map((el) => [el.id, el.component]));
297
+ const elementIds = new Set(elements.map((el) => el.id));
298
+ portalsRef.current.forEach((_, id) => {
299
+ if (!elementIds.has(id)) {
300
+ portalsRef.current.delete(id);
303
301
  }
304
- }));
302
+ });
303
+ return elements.map((el) => {
304
+ const id = el.id;
305
+ const existingPortal = portalsRef.current.get(id);
306
+ if (existingPortal) {
307
+ return existingPortal;
308
+ }
309
+ const portal = () => {
310
+ const node = nodeMapRef.current.get(id);
311
+ const component = elementsRef.current.get(id);
312
+ return node ? (0, import_react_dom.createPortal)(component, node) : null;
313
+ };
314
+ const customElementPortal = {
315
+ id: el.id,
316
+ mount: (node) => setNodeMap((prev) => new Map(prev).set(id, node)),
317
+ unmount: () => setNodeMap((prev) => {
318
+ const newMap = new Map(prev);
319
+ newMap.set(id, null);
320
+ return newMap;
321
+ }),
322
+ portal
323
+ };
324
+ portalsRef.current.set(id, customElementPortal);
325
+ return customElementPortal;
326
+ });
305
327
  };
306
328
 
307
329
  // src/utils/useCustomPages.tsx
@@ -405,16 +427,16 @@ var ClerkHostRenderer = class extends import_react14.default.PureComponent {
405
427
  this.rootRef = import_react14.default.createRef();
406
428
  }
407
429
  componentDidUpdate(_prevProps) {
408
- var _a, _b, _c, _d;
430
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
409
431
  if (!isMountProps(_prevProps) || !isMountProps(this.props)) {
410
432
  return;
411
433
  }
412
- const prevProps = (0, import_object.without)(_prevProps.props, "customPages", "customMenuItems", "children");
413
- const newProps = (0, import_object.without)(this.props.props, "customPages", "customMenuItems", "children");
414
- const customPagesChanged = ((_a = prevProps.customPages) == null ? void 0 : _a.length) !== ((_b = newProps.customPages) == null ? void 0 : _b.length);
415
- const customMenuItemsChanged = ((_c = prevProps.customMenuItems) == null ? void 0 : _c.length) !== ((_d = newProps.customMenuItems) == null ? void 0 : _d.length);
416
- const prevMenuItemsWithoutHandlers = stripMenuItemIconHandlers(_prevProps.props.customMenuItems);
417
- const newMenuItemsWithoutHandlers = stripMenuItemIconHandlers(this.props.props.customMenuItems);
434
+ const prevProps = (0, import_object.without)(_prevProps.props || {}, "customPages", "customMenuItems", "children");
435
+ const newProps = (0, import_object.without)(this.props.props || {}, "customPages", "customMenuItems", "children");
436
+ const customPagesChanged = ((_b = (_a = _prevProps.props) == null ? void 0 : _a.customPages) == null ? void 0 : _b.length) !== ((_d = (_c = this.props.props) == null ? void 0 : _c.customPages) == null ? void 0 : _d.length);
437
+ const customMenuItemsChanged = ((_f = (_e = _prevProps.props) == null ? void 0 : _e.customMenuItems) == null ? void 0 : _f.length) !== ((_h = (_g = this.props.props) == null ? void 0 : _g.customMenuItems) == null ? void 0 : _h.length);
438
+ const prevMenuItemsWithoutHandlers = stripMenuItemIconHandlers((_i = _prevProps.props) == null ? void 0 : _i.customMenuItems);
439
+ const newMenuItemsWithoutHandlers = stripMenuItemIconHandlers((_j = this.props.props) == null ? void 0 : _j.customMenuItems);
418
440
  if (!(0, import_react13.isDeeplyEqual)(prevProps, newProps) || !(0, import_react13.isDeeplyEqual)(prevMenuItemsWithoutHandlers, newMenuItemsWithoutHandlers) || customPagesChanged || customMenuItemsChanged) {
419
441
  if (this.rootRef.current) {
420
442
  this.props.updateProps({ node: this.rootRef.current, props: this.props.props });
@@ -484,7 +506,7 @@ var withClerk = (Component, displayNameOrOptions) => {
484
506
  // src/components/uiComponents.tsx
485
507
  var CustomPortalsRenderer = (props) => {
486
508
  var _a, _b;
487
- return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, (_a = props == null ? void 0 : props.customPagesPortals) == null ? void 0 : _a.map((portal, index) => (0, import_react17.createElement)(portal, { key: index })), (_b = props == null ? void 0 : props.customMenuItemsPortals) == null ? void 0 : _b.map((portal, index) => (0, import_react17.createElement)(portal, { key: index })));
509
+ return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, (_a = props == null ? void 0 : props.customPagesPortals) == null ? void 0 : _a.map(({ key, portal }) => (0, import_react17.createElement)(portal, { key })), (_b = props == null ? void 0 : props.customMenuItemsPortals) == null ? void 0 : _b.map(({ key, portal }) => (0, import_react17.createElement)(portal, { key })));
488
510
  };
489
511
  var SignIn = withClerk(
490
512
  ({ clerk, component, fallback, ...props }) => {
@@ -882,27 +904,6 @@ var APIKeys = withClerk(
882
904
  },
883
905
  { component: "ApiKeys", renderWhileLoading: true }
884
906
  );
885
- var ConfigureSSO = withClerk(
886
- ({ clerk, component, fallback, ...props }) => {
887
- const mountingStatus = useWaitForComponentMount(component);
888
- const shouldShowFallback = mountingStatus === "rendering" || !clerk.loaded;
889
- const rendererRootProps = {
890
- ...shouldShowFallback && fallback && { style: { display: "none" } }
891
- };
892
- return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react17.default.createElement(
893
- ClerkHostRenderer,
894
- {
895
- component,
896
- mount: clerk.mountConfigureSSO,
897
- unmount: clerk.unmountConfigureSSO,
898
- updateProps: clerk.__internal_updateProps,
899
- props,
900
- rootProps: rendererRootProps
901
- }
902
- ));
903
- },
904
- { component: "ConfigureSSO", renderWhileLoading: true }
905
- );
906
907
  var OAuthConsent = withClerk(
907
908
  ({ clerk, component, fallback, ...props }) => {
908
909
  const mountingStatus = useWaitForComponentMount(component);
@@ -1063,6 +1064,7 @@ var useCustomPages = (params, options) => {
1063
1064
  const { children, LinkComponent, PageComponent, MenuItemsComponent, reorderItemsLabels, componentName } = params;
1064
1065
  const { allowForAnyChildren = false } = options || {};
1065
1066
  const validChildren = [];
1067
+ const portalIdCounts = /* @__PURE__ */ new Map();
1066
1068
  import_react19.default.Children.forEach(children, (child) => {
1067
1069
  if (!isThatComponent(child, PageComponent) && !isThatComponent(child, LinkComponent) && !isThatComponent(child, MenuItemsComponent)) {
1068
1070
  if (child && !allowForAnyChildren) {
@@ -1072,11 +1074,18 @@ var useCustomPages = (params, options) => {
1072
1074
  }
1073
1075
  const { props } = child;
1074
1076
  const { children: children2, label, url, labelIcon } = props;
1077
+ const childKey = child.key;
1075
1078
  if (isThatComponent(child, PageComponent)) {
1076
1079
  if (isReorderItem(props, reorderItemsLabels)) {
1077
1080
  validChildren.push({ label });
1078
1081
  } else if (isCustomPage(props)) {
1079
- validChildren.push({ label, labelIcon, children: children2, url });
1082
+ validChildren.push({
1083
+ label,
1084
+ labelIcon,
1085
+ children: children2,
1086
+ url,
1087
+ portalId: getCustomPagePortalId("page", props, childKey, portalIdCounts)
1088
+ });
1080
1089
  } else {
1081
1090
  (0, import_utils4.logErrorInDevMode)(customPageWrongProps(componentName));
1082
1091
  return;
@@ -1084,7 +1093,12 @@ var useCustomPages = (params, options) => {
1084
1093
  }
1085
1094
  if (isThatComponent(child, LinkComponent)) {
1086
1095
  if (isExternalLink(props)) {
1087
- validChildren.push({ label, labelIcon, url });
1096
+ validChildren.push({
1097
+ label,
1098
+ labelIcon,
1099
+ url,
1100
+ portalId: getCustomPagePortalId("link", props, childKey, portalIdCounts)
1101
+ });
1088
1102
  } else {
1089
1103
  (0, import_utils4.logErrorInDevMode)(customLinkWrongProps(componentName));
1090
1104
  return;
@@ -1096,12 +1110,12 @@ var useCustomPages = (params, options) => {
1096
1110
  const customLinkLabelIcons = [];
1097
1111
  validChildren.forEach((cp, index) => {
1098
1112
  if (isCustomPage(cp)) {
1099
- customPageContents.push({ component: cp.children, id: index });
1100
- customPageLabelIcons.push({ component: cp.labelIcon, id: index });
1113
+ customPageContents.push({ component: cp.children, id: cp.portalId || index });
1114
+ customPageLabelIcons.push({ component: cp.labelIcon, id: cp.portalId || index });
1101
1115
  return;
1102
1116
  }
1103
1117
  if (isExternalLink(cp)) {
1104
- customLinkLabelIcons.push({ component: cp.labelIcon, id: index });
1118
+ customLinkLabelIcons.push({ component: cp.labelIcon, id: cp.portalId || index });
1105
1119
  }
1106
1120
  });
1107
1121
  const customPageContentsPortals = useCustomElementPortal(customPageContents);
@@ -1119,15 +1133,15 @@ var useCustomPages = (params, options) => {
1119
1133
  portal: contentPortal,
1120
1134
  mount,
1121
1135
  unmount
1122
- } = customPageContentsPortals.find((p) => p.id === index);
1136
+ } = customPageContentsPortals.find((p) => p.id === (cp.portalId || index));
1123
1137
  const {
1124
1138
  portal: labelPortal,
1125
1139
  mount: mountIcon,
1126
1140
  unmount: unmountIcon
1127
- } = customPageLabelIconsPortals.find((p) => p.id === index);
1141
+ } = customPageLabelIconsPortals.find((p) => p.id === (cp.portalId || index));
1128
1142
  customPages.push({ label: cp.label, url: cp.url, mount, unmount, mountIcon, unmountIcon });
1129
- customPagesPortals.push(contentPortal);
1130
- customPagesPortals.push(labelPortal);
1143
+ customPagesPortals.push({ key: `content:${cp.portalId || index}`, portal: contentPortal });
1144
+ customPagesPortals.push({ key: `label:${cp.portalId || index}`, portal: labelPortal });
1131
1145
  return;
1132
1146
  }
1133
1147
  if (isExternalLink(cp)) {
@@ -1135,14 +1149,24 @@ var useCustomPages = (params, options) => {
1135
1149
  portal: labelPortal,
1136
1150
  mount: mountIcon,
1137
1151
  unmount: unmountIcon
1138
- } = customLinkLabelIconsPortals.find((p) => p.id === index);
1152
+ } = customLinkLabelIconsPortals.find((p) => p.id === (cp.portalId || index));
1139
1153
  customPages.push({ label: cp.label, url: cp.url, mountIcon, unmountIcon });
1140
- customPagesPortals.push(labelPortal);
1154
+ customPagesPortals.push({ key: `label:${cp.portalId || index}`, portal: labelPortal });
1141
1155
  return;
1142
1156
  }
1143
1157
  });
1144
1158
  return { customPages, customPagesPortals };
1145
1159
  };
1160
+ var getCustomPagePortalId = (type, props, key, portalIdCounts) => {
1161
+ var _a;
1162
+ if (key != null) {
1163
+ return `${type}:key:${key}`;
1164
+ }
1165
+ const baseId = `${type}:${props.label}:${props.url}`;
1166
+ const occurrence = (_a = portalIdCounts.get(baseId)) != null ? _a : 0;
1167
+ portalIdCounts.set(baseId, occurrence + 1);
1168
+ return `${baseId}:${occurrence}`;
1169
+ };
1146
1170
  var isReorderItem = (childProps, validItems) => {
1147
1171
  const { children, label, url, labelIcon } = childProps;
1148
1172
  return !children && !url && !labelIcon && validItems.some((v) => v === label);
@@ -1186,6 +1210,7 @@ var useCustomMenuItems = ({
1186
1210
  const validChildren = [];
1187
1211
  const customMenuItems = [];
1188
1212
  const customMenuItemsPortals = [];
1213
+ const portalIdCounts = /* @__PURE__ */ new Map();
1189
1214
  import_react20.default.Children.forEach(children, (child) => {
1190
1215
  if (!isThatComponent(child, MenuItemsComponent) && !isThatComponent(child, UserProfileLinkComponent) && !isThatComponent(child, UserProfilePageComponent)) {
1191
1216
  if (child && !allowForAnyChildren) {
@@ -1205,6 +1230,7 @@ var useCustomMenuItems = ({
1205
1230
  return;
1206
1231
  }
1207
1232
  const { props: props2 } = child2;
1233
+ const childKey = child2.key;
1208
1234
  const { label, labelIcon, href, onClick, open } = props2;
1209
1235
  if (isThatComponent(child2, MenuActionComponent)) {
1210
1236
  if (isReorderItem2(props2, reorderItemsLabels)) {
@@ -1217,12 +1243,14 @@ var useCustomMenuItems = ({
1217
1243
  if (onClick !== void 0) {
1218
1244
  validChildren.push({
1219
1245
  ...baseItem,
1220
- onClick
1246
+ onClick,
1247
+ portalId: getCustomMenuItemPortalId("action", props2, childKey, portalIdCounts)
1221
1248
  });
1222
1249
  } else if (open !== void 0) {
1223
1250
  validChildren.push({
1224
1251
  ...baseItem,
1225
- open: open.startsWith("/") ? open : `/${open}`
1252
+ open: open.startsWith("/") ? open : `/${open}`,
1253
+ portalId: getCustomMenuItemPortalId("action", props2, childKey, portalIdCounts)
1226
1254
  });
1227
1255
  } else {
1228
1256
  (0, import_utils5.logErrorInDevMode)("Custom menu item must have either onClick or open property");
@@ -1235,7 +1263,12 @@ var useCustomMenuItems = ({
1235
1263
  }
1236
1264
  if (isThatComponent(child2, MenuLinkComponent)) {
1237
1265
  if (isExternalLink2(props2)) {
1238
- validChildren.push({ label, labelIcon, href });
1266
+ validChildren.push({
1267
+ label,
1268
+ labelIcon,
1269
+ href,
1270
+ portalId: getCustomMenuItemPortalId("link", props2, childKey, portalIdCounts)
1271
+ });
1239
1272
  } else {
1240
1273
  (0, import_utils5.logErrorInDevMode)(userButtonMenuItemLinkWrongProps);
1241
1274
  return;
@@ -1247,10 +1280,10 @@ var useCustomMenuItems = ({
1247
1280
  const customLinkLabelIcons = [];
1248
1281
  validChildren.forEach((mi, index) => {
1249
1282
  if (isCustomMenuItem(mi)) {
1250
- customMenuItemLabelIcons.push({ component: mi.labelIcon, id: index });
1283
+ customMenuItemLabelIcons.push({ component: mi.labelIcon, id: mi.portalId || index });
1251
1284
  }
1252
1285
  if (isExternalLink2(mi)) {
1253
- customLinkLabelIcons.push({ component: mi.labelIcon, id: index });
1286
+ customLinkLabelIcons.push({ component: mi.labelIcon, id: mi.portalId || index });
1254
1287
  }
1255
1288
  });
1256
1289
  const customMenuItemLabelIconsPortals = useCustomElementPortal(customMenuItemLabelIcons);
@@ -1266,7 +1299,7 @@ var useCustomMenuItems = ({
1266
1299
  portal: iconPortal,
1267
1300
  mount: mountIcon,
1268
1301
  unmount: unmountIcon
1269
- } = customMenuItemLabelIconsPortals.find((p) => p.id === index);
1302
+ } = customMenuItemLabelIconsPortals.find((p) => p.id === (mi.portalId || index));
1270
1303
  const menuItem = {
1271
1304
  label: mi.label,
1272
1305
  mountIcon,
@@ -1278,25 +1311,36 @@ var useCustomMenuItems = ({
1278
1311
  menuItem.open = mi.open;
1279
1312
  }
1280
1313
  customMenuItems.push(menuItem);
1281
- customMenuItemsPortals.push(iconPortal);
1314
+ customMenuItemsPortals.push({ key: `icon:${mi.portalId || index}`, portal: iconPortal });
1282
1315
  }
1283
1316
  if (isExternalLink2(mi)) {
1284
1317
  const {
1285
1318
  portal: iconPortal,
1286
1319
  mount: mountIcon,
1287
1320
  unmount: unmountIcon
1288
- } = customLinkLabelIconsPortals.find((p) => p.id === index);
1321
+ } = customLinkLabelIconsPortals.find((p) => p.id === (mi.portalId || index));
1289
1322
  customMenuItems.push({
1290
1323
  label: mi.label,
1291
1324
  href: mi.href,
1292
1325
  mountIcon,
1293
1326
  unmountIcon
1294
1327
  });
1295
- customMenuItemsPortals.push(iconPortal);
1328
+ customMenuItemsPortals.push({ key: `icon:${mi.portalId || index}`, portal: iconPortal });
1296
1329
  }
1297
1330
  });
1298
1331
  return { customMenuItems, customMenuItemsPortals };
1299
1332
  };
1333
+ var getCustomMenuItemPortalId = (type, props, key, portalIdCounts) => {
1334
+ var _a;
1335
+ if (key != null) {
1336
+ return `${type}:key:${key}`;
1337
+ }
1338
+ const target = props.href || props.open || "";
1339
+ const baseId = `${type}:${props.label}:${target}`;
1340
+ const occurrence = (_a = portalIdCounts.get(baseId)) != null ? _a : 0;
1341
+ portalIdCounts.set(baseId, occurrence + 1);
1342
+ return `${baseId}:${occurrence}`;
1343
+ };
1300
1344
  var isReorderItem2 = (childProps, validItems) => {
1301
1345
  const { children, label, onClick, labelIcon } = childProps;
1302
1346
  return !children && !onClick && !labelIcon && validItems.some((v) => v === label);