@clerk/react 6.0.0-snapshot.v20251211120550 → 6.0.0-snapshot.v20251215203425
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4F7CSI4T.mjs → chunk-EMTY23UX.mjs} +2 -2
- package/dist/{chunk-J32KHXBI.mjs → chunk-FDDR7URL.mjs} +4 -1
- package/dist/{chunk-J32KHXBI.mjs.map → chunk-FDDR7URL.mjs.map} +1 -1
- package/dist/{chunk-YKGYOPLG.mjs → chunk-JPHCBAWH.mjs} +2 -2
- package/dist/experimental.js +65 -62
- package/dist/experimental.js.map +1 -1
- package/dist/experimental.mjs +2 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +107 -99
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -4
- package/dist/index.mjs.map +1 -1
- package/dist/internal.js +14 -11
- package/dist/internal.js.map +1 -1
- package/dist/internal.mjs +2 -2
- package/package.json +4 -4
- /package/dist/{chunk-4F7CSI4T.mjs.map → chunk-EMTY23UX.mjs.map} +0 -0
- /package/dist/{chunk-YKGYOPLG.mjs.map → chunk-JPHCBAWH.mjs.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useAuth,
|
|
3
3
|
withClerk
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FDDR7URL.mjs";
|
|
5
5
|
import {
|
|
6
6
|
useAssertWrappedByClerkProvider,
|
|
7
7
|
useIsomorphicClerkContext
|
|
@@ -166,4 +166,4 @@ export {
|
|
|
166
166
|
AuthenticateWithRedirectCallback,
|
|
167
167
|
MultisessionAppSupport
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=chunk-
|
|
169
|
+
//# sourceMappingURL=chunk-EMTY23UX.mjs.map
|
|
@@ -214,6 +214,7 @@ import {
|
|
|
214
214
|
} from "@clerk/shared/react";
|
|
215
215
|
|
|
216
216
|
// src/components/withClerk.tsx
|
|
217
|
+
import { usePortalRoot } from "@clerk/shared/react";
|
|
217
218
|
import React2 from "react";
|
|
218
219
|
var withClerk = (Component, displayNameOrOptions) => {
|
|
219
220
|
const passedDisplayedName = typeof displayNameOrOptions === "string" ? displayNameOrOptions : displayNameOrOptions == null ? void 0 : displayNameOrOptions.component;
|
|
@@ -223,12 +224,14 @@ var withClerk = (Component, displayNameOrOptions) => {
|
|
|
223
224
|
const HOC = (props) => {
|
|
224
225
|
useAssertWrappedByClerkProvider(displayName || "withClerk");
|
|
225
226
|
const clerk = useIsomorphicClerkContext();
|
|
227
|
+
const getContainer = usePortalRoot();
|
|
226
228
|
if (!clerk.loaded && !(options == null ? void 0 : options.renderWhileLoading)) {
|
|
227
229
|
return null;
|
|
228
230
|
}
|
|
229
231
|
return /* @__PURE__ */ React2.createElement(
|
|
230
232
|
Component,
|
|
231
233
|
{
|
|
234
|
+
getContainer,
|
|
232
235
|
...props,
|
|
233
236
|
component: displayName,
|
|
234
237
|
clerk
|
|
@@ -279,4 +282,4 @@ export {
|
|
|
279
282
|
__experimental_PaymentElementProvider,
|
|
280
283
|
__experimental_PaymentElement
|
|
281
284
|
};
|
|
282
|
-
//# sourceMappingURL=chunk-
|
|
285
|
+
//# sourceMappingURL=chunk-FDDR7URL.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useAuth.ts","../src/contexts/AuthContext.ts","../src/errors/messages.ts","../src/hooks/utils.ts","../src/hooks/useEmailLink.ts","../src/hooks/useClerkSignal.ts","../src/hooks/index.ts","../src/components/withClerk.tsx"],"sourcesContent":["import { createCheckAuthorization, resolveAuthState } from '@clerk/shared/authorization';\nimport { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type {\n CheckAuthorizationWithCustomPermissions,\n GetToken,\n JwtPayload,\n PendingSessionOptions,\n SignOut,\n UseAuthReturn,\n} from '@clerk/shared/types';\nimport { useCallback } from 'react';\n\nimport { useAuthContext } from '../contexts/AuthContext';\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { errorThrower } from '../errors/errorThrower';\nimport { invalidStateError } from '../errors/messages';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\nimport { createGetToken, createSignOut } from './utils';\n\n/**\n * @inline\n */\ntype UseAuthOptions = Record<string, any> | PendingSessionOptions | undefined | null;\n\n/**\n * The `useAuth()` hook provides access to the current user's authentication state and methods to manage the active session.\n *\n * > [!NOTE]\n * > To access auth data server-side, see the [`Auth` object reference doc](https://clerk.com/docs/reference/backend/types/auth-object).\n *\n * <If sdk=\"nextjs\">\n * By default, Next.js opts all routes into static rendering. If you need to opt a route or routes into dynamic rendering because you need to access the authentication data at request time, you can create a boundary by passing the `dynamic` prop to `<ClerkProvider>`. See the [guide on rendering modes](https://clerk.com/docs/guides/development/rendering-modes) for more information, including code examples.\n * </If>\n *\n * @unionReturnHeadings\n * [\"Initialization\", \"Signed out\", \"Signed in (no active organization)\", \"Signed in (with active organization)\"]\n *\n * @param [initialAuthStateOrOptions] - An object containing the initial authentication state or options for the `useAuth()` hook. If not provided, the hook will attempt to derive the state from the context. `treatPendingAsSignedOut` is a boolean that indicates whether pending sessions are considered as signed out or not. Defaults to `true`.\n *\n * @function\n *\n * @example\n *\n * The following example demonstrates how to use the `useAuth()` hook to access the current auth state, like whether the user is signed in or not. It also includes a basic example for using the `getToken()` method to retrieve a session token for fetching data from an external resource.\n *\n * <Tabs items='React,Next.js'>\n * <Tab>\n *\n * ```tsx {{ filename: 'src/pages/ExternalDataPage.tsx' }}\n * import { useAuth } from '@clerk/react'\n *\n * export default function ExternalDataPage() {\n * const { userId, sessionId, getToken, isLoaded, isSignedIn } = useAuth()\n *\n * const fetchExternalData = async () => {\n * const token = await getToken()\n *\n * // Fetch data from an external API\n * const response = await fetch('https://api.example.com/data', {\n * headers: {\n * Authorization: `Bearer ${token}`,\n * },\n * })\n *\n * return response.json()\n * }\n *\n * if (!isLoaded) {\n * return <div>Loading...</div>\n * }\n *\n * if (!isSignedIn) {\n * return <div>Sign in to view this page</div>\n * }\n *\n * return (\n * <div>\n * <p>\n * Hello, {userId}! Your current active session is {sessionId}.\n * </p>\n * <button onClick={fetchExternalData}>Fetch Data</button>\n * </div>\n * )\n * }\n * ```\n *\n * </Tab>\n * <Tab>\n *\n * {@include ../../docs/use-auth.md#nextjs-01}\n *\n * </Tab>\n * </Tabs>\n */\nexport const useAuth = (initialAuthStateOrOptions: UseAuthOptions = {}): UseAuthReturn => {\n useAssertWrappedByClerkProvider('useAuth');\n\n const { treatPendingAsSignedOut, ...rest } = initialAuthStateOrOptions ?? {};\n const initialAuthState = rest as any;\n\n const authContextFromHook = useAuthContext();\n let authContext = authContextFromHook;\n\n if (authContext.sessionId === undefined && authContext.userId === undefined) {\n authContext = initialAuthState != null ? initialAuthState : {};\n }\n\n const isomorphicClerk = useIsomorphicClerkContext();\n const getToken: GetToken = useCallback(createGetToken(isomorphicClerk), [isomorphicClerk]);\n const signOut: SignOut = useCallback(createSignOut(isomorphicClerk), [isomorphicClerk]);\n\n isomorphicClerk.telemetry?.record(eventMethodCalled('useAuth', { treatPendingAsSignedOut }));\n\n return useDerivedAuth(\n {\n ...authContext,\n getToken,\n signOut,\n },\n {\n treatPendingAsSignedOut,\n },\n );\n};\n\n/**\n * A hook that derives and returns authentication state and utility functions based on the provided auth object.\n *\n * @param authObject - An object containing authentication-related properties and functions.\n *\n * @returns A derived authentication state with helper methods. If the authentication state is invalid, an error is thrown.\n *\n * @remarks\n * This hook inspects session, user, and organization information to determine the current authentication state.\n * It returns an object that includes various properties such as whether the state is loaded, if a user is signed in,\n * session and user identifiers, Organization Roles, and a `has` function for authorization checks.\n * Additionally, it provides `signOut` and `getToken` functions if applicable.\n *\n * @example\n * ```tsx\n * const {\n * isLoaded,\n * isSignedIn,\n * userId,\n * orgId,\n * has,\n * signOut,\n * getToken\n * } = useDerivedAuth(authObject);\n * ```\n */\nexport function useDerivedAuth(\n authObject: any,\n { treatPendingAsSignedOut = true }: PendingSessionOptions = {},\n): UseAuthReturn {\n const { userId, orgId, orgRole, has, signOut, getToken, orgPermissions, factorVerificationAge, sessionClaims } =\n authObject ?? {};\n\n const derivedHas = useCallback(\n (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => {\n if (has) {\n return has(params);\n }\n return createCheckAuthorization({\n userId,\n orgId,\n orgRole,\n orgPermissions,\n factorVerificationAge,\n features: ((sessionClaims as JwtPayload | undefined)?.fea as string) || '',\n plans: ((sessionClaims as JwtPayload | undefined)?.pla as string) || '',\n })(params);\n },\n [has, userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims],\n );\n\n const payload = resolveAuthState({\n authObject: {\n ...authObject,\n getToken,\n signOut,\n has: derivedHas,\n },\n options: {\n treatPendingAsSignedOut,\n },\n });\n\n if (!payload) {\n return errorThrower.throw(invalidStateError);\n }\n\n return payload;\n}\n","import { createContextAndHook } from '@clerk/shared/react';\nimport type {\n ActClaim,\n JwtPayload,\n OrganizationCustomPermissionKey,\n OrganizationCustomRoleKey,\n SessionStatusClaim,\n} from '@clerk/shared/types';\n\nexport type AuthContextValue = {\n userId: string | null | undefined;\n sessionId: string | null | undefined;\n sessionStatus: SessionStatusClaim | null | undefined;\n sessionClaims: JwtPayload | null | undefined;\n actor: ActClaim | null | undefined;\n orgId: string | null | undefined;\n orgRole: OrganizationCustomRoleKey | null | undefined;\n orgSlug: string | null | undefined;\n orgPermissions: OrganizationCustomPermissionKey[] | null | undefined;\n factorVerificationAge: [number, number] | null;\n};\n\nexport const [AuthContext, useAuthContext] = createContextAndHook<AuthContextValue>('AuthContext');\n","export const noClerkProviderError = 'You must wrap your application in a <ClerkProvider> component.';\n\nexport const multipleClerkProvidersError =\n \"You've added multiple <ClerkProvider> components in your React component tree. Wrap your components in a single <ClerkProvider>.\";\n\nexport const multipleChildrenInButtonComponent = (name: string) =>\n `You've passed multiple children components to <${name}/>. You can only pass a single child component or text.`;\n\nexport const invalidStateError =\n 'Invalid state. Feel free to submit a bug or reach out to support here: https://clerk.com/support';\n\nexport const unsupportedNonBrowserDomainOrProxyUrlFunction =\n 'Unsupported usage of isSatellite, domain or proxyUrl. The usage of isSatellite, domain or proxyUrl as function is not supported in non-browser environments.';\n\nexport const userProfilePageRenderedError =\n '<UserProfile.Page /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\nexport const userProfileLinkRenderedError =\n '<UserProfile.Link /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\n\nexport const organizationProfilePageRenderedError =\n '<OrganizationProfile.Page /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\nexport const organizationProfileLinkRenderedError =\n '<OrganizationProfile.Link /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\n\nexport const customPagesIgnoredComponent = (componentName: string) =>\n `<${componentName} /> can only accept <${componentName}.Page /> and <${componentName}.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customPageWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Page /> component requires the following props: url, label, labelIcon, alongside with children to be rendered inside the page.`;\n\nexport const customLinkWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Link /> component requires the following props: url, label and labelIcon.`;\n\nexport const useAuthHasRequiresRoleOrPermission =\n 'Missing parameters. `has` from `useAuth` requires a permission or role key to be passed. Example usage: `has({permission: \"org:posts:edit\"`';\n\nexport const noPathProvidedError = (componentName: string) =>\n `The <${componentName}/> component uses path-based routing by default unless a different routing strategy is provided using the \\`routing\\` prop. When path-based routing is used, you need to provide the path where the component is mounted on by using the \\`path\\` prop. Example: <${componentName} path={'/my-path'} />`;\n\nexport const incompatibleRoutingWithPathProvidedError = (componentName: string) =>\n `The \\`path\\` prop will only be respected when the Clerk component uses path-based routing. To resolve this error, pass \\`routing='path'\\` to the <${componentName}/> component, or drop the \\`path\\` prop to switch to hash-based routing. For more details please refer to our docs: https://clerk.com/docs`;\n\nexport const userButtonIgnoredComponent = `<UserButton /> can only accept <UserButton.UserProfilePage />, <UserButton.UserProfileLink /> and <UserButton.MenuItems /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customMenuItemsIgnoredComponent =\n '<UserButton.MenuItems /> component can only accept <UserButton.Action /> and <UserButton.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.';\n\nexport const userButtonMenuItemsRenderedError =\n '<UserButton.MenuItems /> component needs to be a direct child of `<UserButton />`.';\n\nexport const userButtonMenuActionRenderedError =\n '<UserButton.Action /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuLinkRenderedError =\n '<UserButton.Link /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuItemLinkWrongProps =\n 'Missing props. <UserButton.Link /> component requires the following props: href, label and labelIcon.';\n\nexport const userButtonMenuItemsActionWrongsProps =\n 'Missing props. <UserButton.Action /> component requires the following props: label.';\n","import type { IsomorphicClerk } from '../isomorphicClerk';\n\n/**\n * @internal\n */\nconst clerkLoaded = (isomorphicClerk: IsomorphicClerk) => {\n return new Promise<void>(resolve => {\n const handler = (status: string) => {\n if (['ready', 'degraded'].includes(status)) {\n resolve();\n isomorphicClerk.off('status', handler);\n }\n };\n\n // Register the event listener\n isomorphicClerk.on('status', handler, { notify: true });\n });\n};\n\n/**\n * @internal\n */\nexport const createGetToken = (isomorphicClerk: IsomorphicClerk) => {\n return async (options: any) => {\n await clerkLoaded(isomorphicClerk);\n if (!isomorphicClerk.session) {\n return null;\n }\n return isomorphicClerk.session.getToken(options);\n };\n};\n\n/**\n * @internal\n */\nexport const createSignOut = (isomorphicClerk: IsomorphicClerk) => {\n return async (...args: any) => {\n await clerkLoaded(isomorphicClerk);\n return isomorphicClerk.signOut(...args);\n };\n};\n","import type {\n CreateEmailLinkFlowReturn,\n EmailAddressResource,\n SignInResource,\n SignInStartEmailLinkFlowParams,\n SignUpResource,\n StartEmailLinkFlowParams,\n} from '@clerk/shared/types';\nimport React from 'react';\n\ntype EmailLinkable = SignUpResource | EmailAddressResource | SignInResource;\ntype UseEmailLinkSignInReturn = CreateEmailLinkFlowReturn<SignInStartEmailLinkFlowParams, SignInResource>;\ntype UseEmailLinkSignUpReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, SignUpResource>;\ntype UseEmailLinkEmailAddressReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, EmailAddressResource>;\n\nfunction useEmailLink(resource: SignInResource): UseEmailLinkSignInReturn;\nfunction useEmailLink(resource: SignUpResource): UseEmailLinkSignUpReturn;\nfunction useEmailLink(resource: EmailAddressResource): UseEmailLinkEmailAddressReturn;\nfunction useEmailLink(\n resource: EmailLinkable,\n): UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn {\n const { startEmailLinkFlow, cancelEmailLinkFlow } = React.useMemo(() => resource.createEmailLinkFlow(), [resource]);\n\n React.useEffect(() => {\n return cancelEmailLinkFlow;\n }, []);\n\n return {\n startEmailLinkFlow,\n cancelEmailLinkFlow,\n } as UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn;\n}\n\nexport { useEmailLink };\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { SignInSignalValue, SignUpSignalValue } from '@clerk/shared/types';\nimport { useCallback, useSyncExternalStore } from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\n\nfunction useClerkSignal(signal: 'signIn'): SignInSignalValue;\nfunction useClerkSignal(signal: 'signUp'): SignUpSignalValue;\nfunction useClerkSignal(signal: 'signIn' | 'signUp'): SignInSignalValue | SignUpSignalValue {\n useAssertWrappedByClerkProvider('useClerkSignal');\n\n const clerk = useIsomorphicClerkContext();\n\n switch (signal) {\n case 'signIn':\n clerk.telemetry?.record(eventMethodCalled('useSignIn', { apiVersion: '2025-11' }));\n break;\n case 'signUp':\n clerk.telemetry?.record(eventMethodCalled('useSignUp', { apiVersion: '2025-11' }));\n break;\n default:\n break;\n }\n\n const subscribe = useCallback(\n (callback: () => void) => {\n if (!clerk.loaded) {\n return () => {};\n }\n\n return clerk.__internal_state.__internal_effect(() => {\n switch (signal) {\n case 'signIn':\n clerk.__internal_state.signInSignal();\n break;\n case 'signUp':\n clerk.__internal_state.signUpSignal();\n break;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n callback();\n });\n },\n [clerk, clerk.loaded, clerk.__internal_state],\n );\n const getSnapshot = useCallback(() => {\n switch (signal) {\n case 'signIn':\n return clerk.__internal_state.signInSignal() as SignInSignalValue;\n case 'signUp':\n return clerk.__internal_state.signUpSignal() as SignUpSignalValue;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n }, [clerk.__internal_state]);\n\n const value = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return value;\n}\n\n/**\n * This hook allows you to access the Signal-based `SignIn` resource.\n *\n * @example\n * import { useSignInSignal } from \"@clerk/react/experimental\";\n *\n * function SignInForm() {\n * const { signIn, errors, fetchStatus } = useSignInSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignIn() {\n return useClerkSignal('signIn');\n}\n\n/**\n * This hook allows you to access the Signal-based `SignUp` resource.\n *\n * @example\n * import { useSignUpSignal } from \"@clerk/react/experimental\";\n *\n * function SignUpForm() {\n * const { signUp, errors, fetchStatus } = useSignUpSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignUp() {\n return useClerkSignal('signUp');\n}\n","export { useAuth } from './useAuth';\nexport { useEmailLink } from './useEmailLink';\nexport { useSignIn, useSignUp } from './useClerkSignal';\nexport {\n useClerk,\n useOrganization,\n useOrganizationList,\n useSessionList,\n useUser,\n useSession,\n useReverification,\n __experimental_useCheckout,\n __experimental_CheckoutProvider,\n __experimental_usePaymentElement,\n __experimental_PaymentElementProvider,\n __experimental_PaymentElement,\n} from '@clerk/shared/react';\n","import type { LoadedClerk, Without } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';\n\nexport const withClerk = <P extends { clerk: LoadedClerk; component?: string }>(\n Component: React.ComponentType<P>,\n displayNameOrOptions?: string | { component: string; renderWhileLoading?: boolean },\n) => {\n const passedDisplayedName =\n typeof displayNameOrOptions === 'string' ? displayNameOrOptions : displayNameOrOptions?.component;\n const displayName = passedDisplayedName || Component.displayName || Component.name || 'Component';\n Component.displayName = displayName;\n\n const options = typeof displayNameOrOptions === 'string' ? undefined : displayNameOrOptions;\n\n const HOC = (props: Without<P, 'clerk'>) => {\n useAssertWrappedByClerkProvider(displayName || 'withClerk');\n\n const clerk = useIsomorphicClerkContext();\n\n if (!clerk.loaded && !options?.renderWhileLoading) {\n return null;\n }\n\n return (\n <Component\n {...(props as P)}\n component={displayName}\n clerk={clerk}\n />\n );\n };\n HOC.displayName = `withClerk(${displayName})`;\n return HOC;\n};\n"],"mappings":"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","names":["eventMethodCalled","useCallback","eventMethodCalled","useCallback","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useAuth.ts","../src/contexts/AuthContext.ts","../src/errors/messages.ts","../src/hooks/utils.ts","../src/hooks/useEmailLink.ts","../src/hooks/useClerkSignal.ts","../src/hooks/index.ts","../src/components/withClerk.tsx"],"sourcesContent":["import { createCheckAuthorization, resolveAuthState } from '@clerk/shared/authorization';\nimport { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type {\n CheckAuthorizationWithCustomPermissions,\n GetToken,\n JwtPayload,\n PendingSessionOptions,\n SignOut,\n UseAuthReturn,\n} from '@clerk/shared/types';\nimport { useCallback } from 'react';\n\nimport { useAuthContext } from '../contexts/AuthContext';\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { errorThrower } from '../errors/errorThrower';\nimport { invalidStateError } from '../errors/messages';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\nimport { createGetToken, createSignOut } from './utils';\n\n/**\n * @inline\n */\ntype UseAuthOptions = Record<string, any> | PendingSessionOptions | undefined | null;\n\n/**\n * The `useAuth()` hook provides access to the current user's authentication state and methods to manage the active session.\n *\n * > [!NOTE]\n * > To access auth data server-side, see the [`Auth` object reference doc](https://clerk.com/docs/reference/backend/types/auth-object).\n *\n * <If sdk=\"nextjs\">\n * By default, Next.js opts all routes into static rendering. If you need to opt a route or routes into dynamic rendering because you need to access the authentication data at request time, you can create a boundary by passing the `dynamic` prop to `<ClerkProvider>`. See the [guide on rendering modes](https://clerk.com/docs/guides/development/rendering-modes) for more information, including code examples.\n * </If>\n *\n * @unionReturnHeadings\n * [\"Initialization\", \"Signed out\", \"Signed in (no active organization)\", \"Signed in (with active organization)\"]\n *\n * @param [initialAuthStateOrOptions] - An object containing the initial authentication state or options for the `useAuth()` hook. If not provided, the hook will attempt to derive the state from the context. `treatPendingAsSignedOut` is a boolean that indicates whether pending sessions are considered as signed out or not. Defaults to `true`.\n *\n * @function\n *\n * @example\n *\n * The following example demonstrates how to use the `useAuth()` hook to access the current auth state, like whether the user is signed in or not. It also includes a basic example for using the `getToken()` method to retrieve a session token for fetching data from an external resource.\n *\n * <Tabs items='React,Next.js'>\n * <Tab>\n *\n * ```tsx {{ filename: 'src/pages/ExternalDataPage.tsx' }}\n * import { useAuth } from '@clerk/react'\n *\n * export default function ExternalDataPage() {\n * const { userId, sessionId, getToken, isLoaded, isSignedIn } = useAuth()\n *\n * const fetchExternalData = async () => {\n * const token = await getToken()\n *\n * // Fetch data from an external API\n * const response = await fetch('https://api.example.com/data', {\n * headers: {\n * Authorization: `Bearer ${token}`,\n * },\n * })\n *\n * return response.json()\n * }\n *\n * if (!isLoaded) {\n * return <div>Loading...</div>\n * }\n *\n * if (!isSignedIn) {\n * return <div>Sign in to view this page</div>\n * }\n *\n * return (\n * <div>\n * <p>\n * Hello, {userId}! Your current active session is {sessionId}.\n * </p>\n * <button onClick={fetchExternalData}>Fetch Data</button>\n * </div>\n * )\n * }\n * ```\n *\n * </Tab>\n * <Tab>\n *\n * {@include ../../docs/use-auth.md#nextjs-01}\n *\n * </Tab>\n * </Tabs>\n */\nexport const useAuth = (initialAuthStateOrOptions: UseAuthOptions = {}): UseAuthReturn => {\n useAssertWrappedByClerkProvider('useAuth');\n\n const { treatPendingAsSignedOut, ...rest } = initialAuthStateOrOptions ?? {};\n const initialAuthState = rest as any;\n\n const authContextFromHook = useAuthContext();\n let authContext = authContextFromHook;\n\n if (authContext.sessionId === undefined && authContext.userId === undefined) {\n authContext = initialAuthState != null ? initialAuthState : {};\n }\n\n const isomorphicClerk = useIsomorphicClerkContext();\n const getToken: GetToken = useCallback(createGetToken(isomorphicClerk), [isomorphicClerk]);\n const signOut: SignOut = useCallback(createSignOut(isomorphicClerk), [isomorphicClerk]);\n\n isomorphicClerk.telemetry?.record(eventMethodCalled('useAuth', { treatPendingAsSignedOut }));\n\n return useDerivedAuth(\n {\n ...authContext,\n getToken,\n signOut,\n },\n {\n treatPendingAsSignedOut,\n },\n );\n};\n\n/**\n * A hook that derives and returns authentication state and utility functions based on the provided auth object.\n *\n * @param authObject - An object containing authentication-related properties and functions.\n *\n * @returns A derived authentication state with helper methods. If the authentication state is invalid, an error is thrown.\n *\n * @remarks\n * This hook inspects session, user, and organization information to determine the current authentication state.\n * It returns an object that includes various properties such as whether the state is loaded, if a user is signed in,\n * session and user identifiers, Organization Roles, and a `has` function for authorization checks.\n * Additionally, it provides `signOut` and `getToken` functions if applicable.\n *\n * @example\n * ```tsx\n * const {\n * isLoaded,\n * isSignedIn,\n * userId,\n * orgId,\n * has,\n * signOut,\n * getToken\n * } = useDerivedAuth(authObject);\n * ```\n */\nexport function useDerivedAuth(\n authObject: any,\n { treatPendingAsSignedOut = true }: PendingSessionOptions = {},\n): UseAuthReturn {\n const { userId, orgId, orgRole, has, signOut, getToken, orgPermissions, factorVerificationAge, sessionClaims } =\n authObject ?? {};\n\n const derivedHas = useCallback(\n (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => {\n if (has) {\n return has(params);\n }\n return createCheckAuthorization({\n userId,\n orgId,\n orgRole,\n orgPermissions,\n factorVerificationAge,\n features: ((sessionClaims as JwtPayload | undefined)?.fea as string) || '',\n plans: ((sessionClaims as JwtPayload | undefined)?.pla as string) || '',\n })(params);\n },\n [has, userId, orgId, orgRole, orgPermissions, factorVerificationAge, sessionClaims],\n );\n\n const payload = resolveAuthState({\n authObject: {\n ...authObject,\n getToken,\n signOut,\n has: derivedHas,\n },\n options: {\n treatPendingAsSignedOut,\n },\n });\n\n if (!payload) {\n return errorThrower.throw(invalidStateError);\n }\n\n return payload;\n}\n","import { createContextAndHook } from '@clerk/shared/react';\nimport type {\n ActClaim,\n JwtPayload,\n OrganizationCustomPermissionKey,\n OrganizationCustomRoleKey,\n SessionStatusClaim,\n} from '@clerk/shared/types';\n\nexport type AuthContextValue = {\n userId: string | null | undefined;\n sessionId: string | null | undefined;\n sessionStatus: SessionStatusClaim | null | undefined;\n sessionClaims: JwtPayload | null | undefined;\n actor: ActClaim | null | undefined;\n orgId: string | null | undefined;\n orgRole: OrganizationCustomRoleKey | null | undefined;\n orgSlug: string | null | undefined;\n orgPermissions: OrganizationCustomPermissionKey[] | null | undefined;\n factorVerificationAge: [number, number] | null;\n};\n\nexport const [AuthContext, useAuthContext] = createContextAndHook<AuthContextValue>('AuthContext');\n","export const noClerkProviderError = 'You must wrap your application in a <ClerkProvider> component.';\n\nexport const multipleClerkProvidersError =\n \"You've added multiple <ClerkProvider> components in your React component tree. Wrap your components in a single <ClerkProvider>.\";\n\nexport const multipleChildrenInButtonComponent = (name: string) =>\n `You've passed multiple children components to <${name}/>. You can only pass a single child component or text.`;\n\nexport const invalidStateError =\n 'Invalid state. Feel free to submit a bug or reach out to support here: https://clerk.com/support';\n\nexport const unsupportedNonBrowserDomainOrProxyUrlFunction =\n 'Unsupported usage of isSatellite, domain or proxyUrl. The usage of isSatellite, domain or proxyUrl as function is not supported in non-browser environments.';\n\nexport const userProfilePageRenderedError =\n '<UserProfile.Page /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\nexport const userProfileLinkRenderedError =\n '<UserProfile.Link /> component needs to be a direct child of `<UserProfile />` or `<UserButton />`.';\n\nexport const organizationProfilePageRenderedError =\n '<OrganizationProfile.Page /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\nexport const organizationProfileLinkRenderedError =\n '<OrganizationProfile.Link /> component needs to be a direct child of `<OrganizationProfile />` or `<OrganizationSwitcher />`.';\n\nexport const customPagesIgnoredComponent = (componentName: string) =>\n `<${componentName} /> can only accept <${componentName}.Page /> and <${componentName}.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customPageWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Page /> component requires the following props: url, label, labelIcon, alongside with children to be rendered inside the page.`;\n\nexport const customLinkWrongProps = (componentName: string) =>\n `Missing props. <${componentName}.Link /> component requires the following props: url, label and labelIcon.`;\n\nexport const useAuthHasRequiresRoleOrPermission =\n 'Missing parameters. `has` from `useAuth` requires a permission or role key to be passed. Example usage: `has({permission: \"org:posts:edit\"`';\n\nexport const noPathProvidedError = (componentName: string) =>\n `The <${componentName}/> component uses path-based routing by default unless a different routing strategy is provided using the \\`routing\\` prop. When path-based routing is used, you need to provide the path where the component is mounted on by using the \\`path\\` prop. Example: <${componentName} path={'/my-path'} />`;\n\nexport const incompatibleRoutingWithPathProvidedError = (componentName: string) =>\n `The \\`path\\` prop will only be respected when the Clerk component uses path-based routing. To resolve this error, pass \\`routing='path'\\` to the <${componentName}/> component, or drop the \\`path\\` prop to switch to hash-based routing. For more details please refer to our docs: https://clerk.com/docs`;\n\nexport const userButtonIgnoredComponent = `<UserButton /> can only accept <UserButton.UserProfilePage />, <UserButton.UserProfileLink /> and <UserButton.MenuItems /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.`;\n\nexport const customMenuItemsIgnoredComponent =\n '<UserButton.MenuItems /> component can only accept <UserButton.Action /> and <UserButton.Link /> as its children. Any other provided component will be ignored. Additionally, please ensure that the component is rendered in a client component.';\n\nexport const userButtonMenuItemsRenderedError =\n '<UserButton.MenuItems /> component needs to be a direct child of `<UserButton />`.';\n\nexport const userButtonMenuActionRenderedError =\n '<UserButton.Action /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuLinkRenderedError =\n '<UserButton.Link /> component needs to be a direct child of `<UserButton.MenuItems />`.';\n\nexport const userButtonMenuItemLinkWrongProps =\n 'Missing props. <UserButton.Link /> component requires the following props: href, label and labelIcon.';\n\nexport const userButtonMenuItemsActionWrongsProps =\n 'Missing props. <UserButton.Action /> component requires the following props: label.';\n","import type { IsomorphicClerk } from '../isomorphicClerk';\n\n/**\n * @internal\n */\nconst clerkLoaded = (isomorphicClerk: IsomorphicClerk) => {\n return new Promise<void>(resolve => {\n const handler = (status: string) => {\n if (['ready', 'degraded'].includes(status)) {\n resolve();\n isomorphicClerk.off('status', handler);\n }\n };\n\n // Register the event listener\n isomorphicClerk.on('status', handler, { notify: true });\n });\n};\n\n/**\n * @internal\n */\nexport const createGetToken = (isomorphicClerk: IsomorphicClerk) => {\n return async (options: any) => {\n await clerkLoaded(isomorphicClerk);\n if (!isomorphicClerk.session) {\n return null;\n }\n return isomorphicClerk.session.getToken(options);\n };\n};\n\n/**\n * @internal\n */\nexport const createSignOut = (isomorphicClerk: IsomorphicClerk) => {\n return async (...args: any) => {\n await clerkLoaded(isomorphicClerk);\n return isomorphicClerk.signOut(...args);\n };\n};\n","import type {\n CreateEmailLinkFlowReturn,\n EmailAddressResource,\n SignInResource,\n SignInStartEmailLinkFlowParams,\n SignUpResource,\n StartEmailLinkFlowParams,\n} from '@clerk/shared/types';\nimport React from 'react';\n\ntype EmailLinkable = SignUpResource | EmailAddressResource | SignInResource;\ntype UseEmailLinkSignInReturn = CreateEmailLinkFlowReturn<SignInStartEmailLinkFlowParams, SignInResource>;\ntype UseEmailLinkSignUpReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, SignUpResource>;\ntype UseEmailLinkEmailAddressReturn = CreateEmailLinkFlowReturn<StartEmailLinkFlowParams, EmailAddressResource>;\n\nfunction useEmailLink(resource: SignInResource): UseEmailLinkSignInReturn;\nfunction useEmailLink(resource: SignUpResource): UseEmailLinkSignUpReturn;\nfunction useEmailLink(resource: EmailAddressResource): UseEmailLinkEmailAddressReturn;\nfunction useEmailLink(\n resource: EmailLinkable,\n): UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn {\n const { startEmailLinkFlow, cancelEmailLinkFlow } = React.useMemo(() => resource.createEmailLinkFlow(), [resource]);\n\n React.useEffect(() => {\n return cancelEmailLinkFlow;\n }, []);\n\n return {\n startEmailLinkFlow,\n cancelEmailLinkFlow,\n } as UseEmailLinkSignInReturn | UseEmailLinkSignUpReturn | UseEmailLinkEmailAddressReturn;\n}\n\nexport { useEmailLink };\n","import { eventMethodCalled } from '@clerk/shared/telemetry';\nimport type { SignInSignalValue, SignUpSignalValue } from '@clerk/shared/types';\nimport { useCallback, useSyncExternalStore } from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from './useAssertWrappedByClerkProvider';\n\nfunction useClerkSignal(signal: 'signIn'): SignInSignalValue;\nfunction useClerkSignal(signal: 'signUp'): SignUpSignalValue;\nfunction useClerkSignal(signal: 'signIn' | 'signUp'): SignInSignalValue | SignUpSignalValue {\n useAssertWrappedByClerkProvider('useClerkSignal');\n\n const clerk = useIsomorphicClerkContext();\n\n switch (signal) {\n case 'signIn':\n clerk.telemetry?.record(eventMethodCalled('useSignIn', { apiVersion: '2025-11' }));\n break;\n case 'signUp':\n clerk.telemetry?.record(eventMethodCalled('useSignUp', { apiVersion: '2025-11' }));\n break;\n default:\n break;\n }\n\n const subscribe = useCallback(\n (callback: () => void) => {\n if (!clerk.loaded) {\n return () => {};\n }\n\n return clerk.__internal_state.__internal_effect(() => {\n switch (signal) {\n case 'signIn':\n clerk.__internal_state.signInSignal();\n break;\n case 'signUp':\n clerk.__internal_state.signUpSignal();\n break;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n callback();\n });\n },\n [clerk, clerk.loaded, clerk.__internal_state],\n );\n const getSnapshot = useCallback(() => {\n switch (signal) {\n case 'signIn':\n return clerk.__internal_state.signInSignal() as SignInSignalValue;\n case 'signUp':\n return clerk.__internal_state.signUpSignal() as SignUpSignalValue;\n default:\n throw new Error(`Unknown signal: ${signal}`);\n }\n }, [clerk.__internal_state]);\n\n const value = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return value;\n}\n\n/**\n * This hook allows you to access the Signal-based `SignIn` resource.\n *\n * @example\n * import { useSignInSignal } from \"@clerk/react/experimental\";\n *\n * function SignInForm() {\n * const { signIn, errors, fetchStatus } = useSignInSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignIn() {\n return useClerkSignal('signIn');\n}\n\n/**\n * This hook allows you to access the Signal-based `SignUp` resource.\n *\n * @example\n * import { useSignUpSignal } from \"@clerk/react/experimental\";\n *\n * function SignUpForm() {\n * const { signUp, errors, fetchStatus } = useSignUpSignal();\n * //\n * }\n *\n * @experimental This experimental API is subject to change.\n */\nexport function useSignUp() {\n return useClerkSignal('signUp');\n}\n","export { useAuth } from './useAuth';\nexport { useEmailLink } from './useEmailLink';\nexport { useSignIn, useSignUp } from './useClerkSignal';\nexport {\n useClerk,\n useOrganization,\n useOrganizationList,\n useSessionList,\n useUser,\n useSession,\n useReverification,\n __experimental_useCheckout,\n __experimental_CheckoutProvider,\n __experimental_usePaymentElement,\n __experimental_PaymentElementProvider,\n __experimental_PaymentElement,\n} from '@clerk/shared/react';\n","import { usePortalRoot } from '@clerk/shared/react';\nimport type { LoadedClerk, Without } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { useIsomorphicClerkContext } from '../contexts/IsomorphicClerkContext';\nimport { useAssertWrappedByClerkProvider } from '../hooks/useAssertWrappedByClerkProvider';\n\nexport const withClerk = <P extends { clerk: LoadedClerk; component?: string }>(\n Component: React.ComponentType<P>,\n displayNameOrOptions?: string | { component: string; renderWhileLoading?: boolean },\n) => {\n const passedDisplayedName =\n typeof displayNameOrOptions === 'string' ? displayNameOrOptions : displayNameOrOptions?.component;\n const displayName = passedDisplayedName || Component.displayName || Component.name || 'Component';\n Component.displayName = displayName;\n\n const options = typeof displayNameOrOptions === 'string' ? undefined : displayNameOrOptions;\n\n const HOC = (props: Without<P, 'clerk'>) => {\n useAssertWrappedByClerkProvider(displayName || 'withClerk');\n\n const clerk = useIsomorphicClerkContext();\n const getContainer = usePortalRoot();\n\n if (!clerk.loaded && !options?.renderWhileLoading) {\n return null;\n }\n\n return (\n <Component\n getContainer={getContainer}\n {...(props as P)}\n component={displayName}\n clerk={clerk}\n />\n );\n };\n HOC.displayName = `withClerk(${displayName})`;\n return HOC;\n};\n"],"mappings":"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","names":["eventMethodCalled","useCallback","eventMethodCalled","useCallback","React","React"]}
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
userProfileLinkRenderedError,
|
|
16
16
|
userProfilePageRenderedError,
|
|
17
17
|
withClerk
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-FDDR7URL.mjs";
|
|
19
19
|
import {
|
|
20
20
|
errorThrower
|
|
21
21
|
} from "./chunk-MB46WFKC.mjs";
|
|
@@ -1030,4 +1030,4 @@ export {
|
|
|
1030
1030
|
TaskChooseOrganization,
|
|
1031
1031
|
TaskResetPassword
|
|
1032
1032
|
};
|
|
1033
|
-
//# sourceMappingURL=chunk-
|
|
1033
|
+
//# sourceMappingURL=chunk-JPHCBAWH.mjs.map
|
package/dist/experimental.js
CHANGED
|
@@ -31,24 +31,24 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var experimental_exports = {};
|
|
32
32
|
__export(experimental_exports, {
|
|
33
33
|
CheckoutButton: () => CheckoutButton,
|
|
34
|
-
CheckoutProvider: () =>
|
|
35
|
-
PaymentElement: () =>
|
|
36
|
-
PaymentElementProvider: () =>
|
|
34
|
+
CheckoutProvider: () => import_react23.__experimental_CheckoutProvider,
|
|
35
|
+
PaymentElement: () => import_react23.__experimental_PaymentElement,
|
|
36
|
+
PaymentElementProvider: () => import_react23.__experimental_PaymentElementProvider,
|
|
37
37
|
PlanDetailsButton: () => PlanDetailsButton,
|
|
38
38
|
SubscriptionDetailsButton: () => SubscriptionDetailsButton,
|
|
39
|
-
useAPIKeys: () =>
|
|
40
|
-
useCheckout: () =>
|
|
41
|
-
usePaymentAttempts: () =>
|
|
42
|
-
usePaymentElement: () =>
|
|
43
|
-
usePaymentMethods: () =>
|
|
44
|
-
usePlans: () =>
|
|
45
|
-
useStatements: () =>
|
|
46
|
-
useSubscription: () =>
|
|
39
|
+
useAPIKeys: () => import_react23.__experimental_useAPIKeys,
|
|
40
|
+
useCheckout: () => import_react23.__experimental_useCheckout,
|
|
41
|
+
usePaymentAttempts: () => import_react23.__experimental_usePaymentAttempts,
|
|
42
|
+
usePaymentElement: () => import_react23.__experimental_usePaymentElement,
|
|
43
|
+
usePaymentMethods: () => import_react23.__experimental_usePaymentMethods,
|
|
44
|
+
usePlans: () => import_react23.__experimental_usePlans,
|
|
45
|
+
useStatements: () => import_react23.__experimental_useStatements,
|
|
46
|
+
useSubscription: () => import_react23.__experimental_useSubscription
|
|
47
47
|
});
|
|
48
48
|
module.exports = __toCommonJS(experimental_exports);
|
|
49
49
|
|
|
50
50
|
// src/components/CheckoutButton.tsx
|
|
51
|
-
var
|
|
51
|
+
var import_react20 = __toESM(require("react"));
|
|
52
52
|
|
|
53
53
|
// src/hooks/useAuth.ts
|
|
54
54
|
var import_authorization = require("@clerk/shared/authorization");
|
|
@@ -242,11 +242,11 @@ var useCustomElementPortal = (elements) => {
|
|
|
242
242
|
|
|
243
243
|
// src/utils/useCustomPages.tsx
|
|
244
244
|
var import_utils4 = require("@clerk/shared/utils");
|
|
245
|
-
var
|
|
245
|
+
var import_react18 = __toESM(require("react"));
|
|
246
246
|
|
|
247
247
|
// src/components/uiComponents.tsx
|
|
248
248
|
var import_utils2 = require("@clerk/shared/utils");
|
|
249
|
-
var
|
|
249
|
+
var import_react16 = __toESM(require("react"));
|
|
250
250
|
|
|
251
251
|
// src/utils/useWaitForComponentMount.ts
|
|
252
252
|
var import_react11 = require("react");
|
|
@@ -389,7 +389,8 @@ var ClerkHostRenderer = class extends import_react13.default.PureComponent {
|
|
|
389
389
|
};
|
|
390
390
|
|
|
391
391
|
// src/components/withClerk.tsx
|
|
392
|
-
var import_react14 =
|
|
392
|
+
var import_react14 = require("@clerk/shared/react");
|
|
393
|
+
var import_react15 = __toESM(require("react"));
|
|
393
394
|
var withClerk = (Component, displayNameOrOptions) => {
|
|
394
395
|
const passedDisplayedName = typeof displayNameOrOptions === "string" ? displayNameOrOptions : displayNameOrOptions == null ? void 0 : displayNameOrOptions.component;
|
|
395
396
|
const displayName = passedDisplayedName || Component.displayName || Component.name || "Component";
|
|
@@ -398,12 +399,14 @@ var withClerk = (Component, displayNameOrOptions) => {
|
|
|
398
399
|
const HOC = (props) => {
|
|
399
400
|
useAssertWrappedByClerkProvider(displayName || "withClerk");
|
|
400
401
|
const clerk = useIsomorphicClerkContext();
|
|
402
|
+
const getContainer = (0, import_react14.usePortalRoot)();
|
|
401
403
|
if (!clerk.loaded && !(options == null ? void 0 : options.renderWhileLoading)) {
|
|
402
404
|
return null;
|
|
403
405
|
}
|
|
404
|
-
return /* @__PURE__ */
|
|
406
|
+
return /* @__PURE__ */ import_react15.default.createElement(
|
|
405
407
|
Component,
|
|
406
408
|
{
|
|
409
|
+
getContainer,
|
|
407
410
|
...props,
|
|
408
411
|
component: displayName,
|
|
409
412
|
clerk
|
|
@@ -417,7 +420,7 @@ var withClerk = (Component, displayNameOrOptions) => {
|
|
|
417
420
|
// src/components/uiComponents.tsx
|
|
418
421
|
var CustomPortalsRenderer = (props) => {
|
|
419
422
|
var _a, _b;
|
|
420
|
-
return /* @__PURE__ */
|
|
423
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, (_a = props == null ? void 0 : props.customPagesPortals) == null ? void 0 : _a.map((portal, index) => (0, import_react16.createElement)(portal, { key: index })), (_b = props == null ? void 0 : props.customMenuItemsPortals) == null ? void 0 : _b.map((portal, index) => (0, import_react16.createElement)(portal, { key: index })));
|
|
421
424
|
};
|
|
422
425
|
var SignIn = withClerk(
|
|
423
426
|
({ clerk, component, fallback, ...props }) => {
|
|
@@ -426,7 +429,7 @@ var SignIn = withClerk(
|
|
|
426
429
|
const rendererRootProps = {
|
|
427
430
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
428
431
|
};
|
|
429
|
-
return /* @__PURE__ */
|
|
432
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
430
433
|
ClerkHostRenderer,
|
|
431
434
|
{
|
|
432
435
|
component,
|
|
@@ -447,7 +450,7 @@ var SignUp = withClerk(
|
|
|
447
450
|
const rendererRootProps = {
|
|
448
451
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
449
452
|
};
|
|
450
|
-
return /* @__PURE__ */
|
|
453
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
451
454
|
ClerkHostRenderer,
|
|
452
455
|
{
|
|
453
456
|
component,
|
|
@@ -463,11 +466,11 @@ var SignUp = withClerk(
|
|
|
463
466
|
);
|
|
464
467
|
function UserProfilePage({ children }) {
|
|
465
468
|
(0, import_utils2.logErrorInDevMode)(userProfilePageRenderedError);
|
|
466
|
-
return /* @__PURE__ */
|
|
469
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, children);
|
|
467
470
|
}
|
|
468
471
|
function UserProfileLink({ children }) {
|
|
469
472
|
(0, import_utils2.logErrorInDevMode)(userProfileLinkRenderedError);
|
|
470
|
-
return /* @__PURE__ */
|
|
473
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, children);
|
|
471
474
|
}
|
|
472
475
|
var _UserProfile = withClerk(
|
|
473
476
|
({
|
|
@@ -482,7 +485,7 @@ var _UserProfile = withClerk(
|
|
|
482
485
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
483
486
|
};
|
|
484
487
|
const { customPages, customPagesPortals } = useUserProfileCustomPages(props.children);
|
|
485
|
-
return /* @__PURE__ */
|
|
488
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, /* @__PURE__ */ import_react16.default.createElement(
|
|
486
489
|
ClerkHostRenderer,
|
|
487
490
|
{
|
|
488
491
|
component,
|
|
@@ -492,7 +495,7 @@ var _UserProfile = withClerk(
|
|
|
492
495
|
props: { ...props, customPages },
|
|
493
496
|
rootProps: rendererRootProps
|
|
494
497
|
},
|
|
495
|
-
/* @__PURE__ */
|
|
498
|
+
/* @__PURE__ */ import_react16.default.createElement(CustomPortalsRenderer, { customPagesPortals })
|
|
496
499
|
));
|
|
497
500
|
},
|
|
498
501
|
{ component: "UserProfile", renderWhileLoading: true }
|
|
@@ -501,7 +504,7 @@ var UserProfile = Object.assign(_UserProfile, {
|
|
|
501
504
|
Page: UserProfilePage,
|
|
502
505
|
Link: UserProfileLink
|
|
503
506
|
});
|
|
504
|
-
var UserButtonContext = (0,
|
|
507
|
+
var UserButtonContext = (0, import_react16.createContext)({
|
|
505
508
|
mount: () => {
|
|
506
509
|
},
|
|
507
510
|
unmount: () => {
|
|
@@ -539,7 +542,7 @@ var _UserButton = withClerk(
|
|
|
539
542
|
customPagesPortals,
|
|
540
543
|
customMenuItemsPortals
|
|
541
544
|
};
|
|
542
|
-
return /* @__PURE__ */
|
|
545
|
+
return /* @__PURE__ */ import_react16.default.createElement(UserButtonContext.Provider, { value: passableProps }, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
543
546
|
ClerkHostRenderer,
|
|
544
547
|
{
|
|
545
548
|
component,
|
|
@@ -548,25 +551,25 @@ var _UserButton = withClerk(
|
|
|
548
551
|
rootProps: rendererRootProps
|
|
549
552
|
},
|
|
550
553
|
props.__experimental_asProvider ? sanitizedChildren : null,
|
|
551
|
-
/* @__PURE__ */
|
|
554
|
+
/* @__PURE__ */ import_react16.default.createElement(CustomPortalsRenderer, { ...portalProps })
|
|
552
555
|
));
|
|
553
556
|
},
|
|
554
557
|
{ component: "UserButton", renderWhileLoading: true }
|
|
555
558
|
);
|
|
556
559
|
function MenuItems({ children }) {
|
|
557
560
|
(0, import_utils2.logErrorInDevMode)(userButtonMenuItemsRenderedError);
|
|
558
|
-
return /* @__PURE__ */
|
|
561
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, children);
|
|
559
562
|
}
|
|
560
563
|
function MenuAction({ children }) {
|
|
561
564
|
(0, import_utils2.logErrorInDevMode)(userButtonMenuActionRenderedError);
|
|
562
|
-
return /* @__PURE__ */
|
|
565
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, children);
|
|
563
566
|
}
|
|
564
567
|
function MenuLink({ children }) {
|
|
565
568
|
(0, import_utils2.logErrorInDevMode)(userButtonMenuLinkRenderedError);
|
|
566
|
-
return /* @__PURE__ */
|
|
569
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, children);
|
|
567
570
|
}
|
|
568
571
|
function UserButtonOutlet(outletProps) {
|
|
569
|
-
const providerProps = (0,
|
|
572
|
+
const providerProps = (0, import_react16.useContext)(UserButtonContext);
|
|
570
573
|
const portalProps = {
|
|
571
574
|
...providerProps,
|
|
572
575
|
props: {
|
|
@@ -574,7 +577,7 @@ function UserButtonOutlet(outletProps) {
|
|
|
574
577
|
...outletProps
|
|
575
578
|
}
|
|
576
579
|
};
|
|
577
|
-
return /* @__PURE__ */
|
|
580
|
+
return /* @__PURE__ */ import_react16.default.createElement(ClerkHostRenderer, { ...portalProps });
|
|
578
581
|
}
|
|
579
582
|
var UserButton = Object.assign(_UserButton, {
|
|
580
583
|
UserProfilePage,
|
|
@@ -586,11 +589,11 @@ var UserButton = Object.assign(_UserButton, {
|
|
|
586
589
|
});
|
|
587
590
|
function OrganizationProfilePage({ children }) {
|
|
588
591
|
(0, import_utils2.logErrorInDevMode)(organizationProfilePageRenderedError);
|
|
589
|
-
return /* @__PURE__ */
|
|
592
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, children);
|
|
590
593
|
}
|
|
591
594
|
function OrganizationProfileLink({ children }) {
|
|
592
595
|
(0, import_utils2.logErrorInDevMode)(organizationProfileLinkRenderedError);
|
|
593
|
-
return /* @__PURE__ */
|
|
596
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, children);
|
|
594
597
|
}
|
|
595
598
|
var _OrganizationProfile = withClerk(
|
|
596
599
|
({
|
|
@@ -605,7 +608,7 @@ var _OrganizationProfile = withClerk(
|
|
|
605
608
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
606
609
|
};
|
|
607
610
|
const { customPages, customPagesPortals } = useOrganizationProfileCustomPages(props.children);
|
|
608
|
-
return /* @__PURE__ */
|
|
611
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
609
612
|
ClerkHostRenderer,
|
|
610
613
|
{
|
|
611
614
|
component,
|
|
@@ -615,7 +618,7 @@ var _OrganizationProfile = withClerk(
|
|
|
615
618
|
props: { ...props, customPages },
|
|
616
619
|
rootProps: rendererRootProps
|
|
617
620
|
},
|
|
618
|
-
/* @__PURE__ */
|
|
621
|
+
/* @__PURE__ */ import_react16.default.createElement(CustomPortalsRenderer, { customPagesPortals })
|
|
619
622
|
));
|
|
620
623
|
},
|
|
621
624
|
{ component: "OrganizationProfile", renderWhileLoading: true }
|
|
@@ -631,7 +634,7 @@ var CreateOrganization = withClerk(
|
|
|
631
634
|
const rendererRootProps = {
|
|
632
635
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
633
636
|
};
|
|
634
|
-
return /* @__PURE__ */
|
|
637
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
635
638
|
ClerkHostRenderer,
|
|
636
639
|
{
|
|
637
640
|
component,
|
|
@@ -645,7 +648,7 @@ var CreateOrganization = withClerk(
|
|
|
645
648
|
},
|
|
646
649
|
{ component: "CreateOrganization", renderWhileLoading: true }
|
|
647
650
|
);
|
|
648
|
-
var OrganizationSwitcherContext = (0,
|
|
651
|
+
var OrganizationSwitcherContext = (0, import_react16.createContext)({
|
|
649
652
|
mount: () => {
|
|
650
653
|
},
|
|
651
654
|
unmount: () => {
|
|
@@ -679,20 +682,20 @@ var _OrganizationSwitcher = withClerk(
|
|
|
679
682
|
component
|
|
680
683
|
};
|
|
681
684
|
clerk.__experimental_prefetchOrganizationSwitcher();
|
|
682
|
-
return /* @__PURE__ */
|
|
685
|
+
return /* @__PURE__ */ import_react16.default.createElement(OrganizationSwitcherContext.Provider, { value: passableProps }, /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
683
686
|
ClerkHostRenderer,
|
|
684
687
|
{
|
|
685
688
|
...passableProps,
|
|
686
689
|
hideRootHtmlElement: !!props.__experimental_asProvider
|
|
687
690
|
},
|
|
688
691
|
props.__experimental_asProvider ? sanitizedChildren : null,
|
|
689
|
-
/* @__PURE__ */
|
|
692
|
+
/* @__PURE__ */ import_react16.default.createElement(CustomPortalsRenderer, { customPagesPortals })
|
|
690
693
|
)));
|
|
691
694
|
},
|
|
692
695
|
{ component: "OrganizationSwitcher", renderWhileLoading: true }
|
|
693
696
|
);
|
|
694
697
|
function OrganizationSwitcherOutlet(outletProps) {
|
|
695
|
-
const providerProps = (0,
|
|
698
|
+
const providerProps = (0, import_react16.useContext)(OrganizationSwitcherContext);
|
|
696
699
|
const portalProps = {
|
|
697
700
|
...providerProps,
|
|
698
701
|
props: {
|
|
@@ -700,7 +703,7 @@ function OrganizationSwitcherOutlet(outletProps) {
|
|
|
700
703
|
...outletProps
|
|
701
704
|
}
|
|
702
705
|
};
|
|
703
|
-
return /* @__PURE__ */
|
|
706
|
+
return /* @__PURE__ */ import_react16.default.createElement(ClerkHostRenderer, { ...portalProps });
|
|
704
707
|
}
|
|
705
708
|
var OrganizationSwitcher = Object.assign(_OrganizationSwitcher, {
|
|
706
709
|
OrganizationProfilePage,
|
|
@@ -714,7 +717,7 @@ var OrganizationList = withClerk(
|
|
|
714
717
|
const rendererRootProps = {
|
|
715
718
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
716
719
|
};
|
|
717
|
-
return /* @__PURE__ */
|
|
720
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
718
721
|
ClerkHostRenderer,
|
|
719
722
|
{
|
|
720
723
|
component,
|
|
@@ -735,7 +738,7 @@ var GoogleOneTap = withClerk(
|
|
|
735
738
|
const rendererRootProps = {
|
|
736
739
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
737
740
|
};
|
|
738
|
-
return /* @__PURE__ */
|
|
741
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
739
742
|
ClerkHostRenderer,
|
|
740
743
|
{
|
|
741
744
|
component,
|
|
@@ -756,7 +759,7 @@ var Waitlist = withClerk(
|
|
|
756
759
|
const rendererRootProps = {
|
|
757
760
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
758
761
|
};
|
|
759
|
-
return /* @__PURE__ */
|
|
762
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
760
763
|
ClerkHostRenderer,
|
|
761
764
|
{
|
|
762
765
|
component,
|
|
@@ -780,7 +783,7 @@ var PricingTable = withClerk(
|
|
|
780
783
|
const rendererRootProps = {
|
|
781
784
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
782
785
|
};
|
|
783
|
-
return /* @__PURE__ */
|
|
786
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
784
787
|
ClerkHostRenderer,
|
|
785
788
|
{
|
|
786
789
|
component,
|
|
@@ -801,7 +804,7 @@ var APIKeys = withClerk(
|
|
|
801
804
|
const rendererRootProps = {
|
|
802
805
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
803
806
|
};
|
|
804
|
-
return /* @__PURE__ */
|
|
807
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
805
808
|
ClerkHostRenderer,
|
|
806
809
|
{
|
|
807
810
|
component,
|
|
@@ -822,7 +825,7 @@ var UserAvatar = withClerk(
|
|
|
822
825
|
const rendererRootProps = {
|
|
823
826
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
824
827
|
};
|
|
825
|
-
return /* @__PURE__ */
|
|
828
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
826
829
|
ClerkHostRenderer,
|
|
827
830
|
{
|
|
828
831
|
component,
|
|
@@ -843,7 +846,7 @@ var TaskChooseOrganization = withClerk(
|
|
|
843
846
|
const rendererRootProps = {
|
|
844
847
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
845
848
|
};
|
|
846
|
-
return /* @__PURE__ */
|
|
849
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
847
850
|
ClerkHostRenderer,
|
|
848
851
|
{
|
|
849
852
|
component,
|
|
@@ -864,7 +867,7 @@ var TaskResetPassword = withClerk(
|
|
|
864
867
|
const rendererRootProps = {
|
|
865
868
|
...shouldShowFallback && fallback && { style: { display: "none" } }
|
|
866
869
|
};
|
|
867
|
-
return /* @__PURE__ */
|
|
870
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, shouldShowFallback && fallback, clerk.loaded && /* @__PURE__ */ import_react16.default.createElement(
|
|
868
871
|
ClerkHostRenderer,
|
|
869
872
|
{
|
|
870
873
|
component,
|
|
@@ -880,9 +883,9 @@ var TaskResetPassword = withClerk(
|
|
|
880
883
|
);
|
|
881
884
|
|
|
882
885
|
// src/utils/componentValidation.ts
|
|
883
|
-
var
|
|
886
|
+
var import_react17 = __toESM(require("react"));
|
|
884
887
|
var isThatComponent = (v, component) => {
|
|
885
|
-
return !!v &&
|
|
888
|
+
return !!v && import_react17.default.isValidElement(v) && (v == null ? void 0 : v.type) === component;
|
|
886
889
|
};
|
|
887
890
|
|
|
888
891
|
// src/utils/useCustomPages.tsx
|
|
@@ -922,7 +925,7 @@ var useSanitizedChildren = (children) => {
|
|
|
922
925
|
UserProfilePage,
|
|
923
926
|
UserProfileLink
|
|
924
927
|
];
|
|
925
|
-
|
|
928
|
+
import_react18.default.Children.forEach(children, (child) => {
|
|
926
929
|
if (!excludedComponents.some((component) => isThatComponent(child, component))) {
|
|
927
930
|
sanitizedChildren.push(child);
|
|
928
931
|
}
|
|
@@ -933,7 +936,7 @@ var useCustomPages = (params, options) => {
|
|
|
933
936
|
const { children, LinkComponent, PageComponent, MenuItemsComponent, reorderItemsLabels, componentName } = params;
|
|
934
937
|
const { allowForAnyChildren = false } = options || {};
|
|
935
938
|
const validChildren = [];
|
|
936
|
-
|
|
939
|
+
import_react18.default.Children.forEach(children, (child) => {
|
|
937
940
|
if (!isThatComponent(child, PageComponent) && !isThatComponent(child, LinkComponent) && !isThatComponent(child, MenuItemsComponent)) {
|
|
938
941
|
if (child && !allowForAnyChildren) {
|
|
939
942
|
(0, import_utils4.logErrorInDevMode)(customPagesIgnoredComponent(componentName));
|
|
@@ -1028,7 +1031,7 @@ var isExternalLink = (childProps) => {
|
|
|
1028
1031
|
|
|
1029
1032
|
// src/utils/useCustomMenuItems.tsx
|
|
1030
1033
|
var import_utils5 = require("@clerk/shared/utils");
|
|
1031
|
-
var
|
|
1034
|
+
var import_react19 = __toESM(require("react"));
|
|
1032
1035
|
var useUserButtonCustomMenuItems = (children, options) => {
|
|
1033
1036
|
var _a;
|
|
1034
1037
|
const reorderItemsLabels = ["manageAccount", "signOut"];
|
|
@@ -1056,7 +1059,7 @@ var useCustomMenuItems = ({
|
|
|
1056
1059
|
const validChildren = [];
|
|
1057
1060
|
const customMenuItems = [];
|
|
1058
1061
|
const customMenuItemsPortals = [];
|
|
1059
|
-
|
|
1062
|
+
import_react19.default.Children.forEach(children, (child) => {
|
|
1060
1063
|
if (!isThatComponent(child, MenuItemsComponent) && !isThatComponent(child, UserProfileLinkComponent) && !isThatComponent(child, UserProfilePageComponent)) {
|
|
1061
1064
|
if (child && !allowForAnyChildren) {
|
|
1062
1065
|
(0, import_utils5.logErrorInDevMode)(userButtonIgnoredComponent);
|
|
@@ -1067,7 +1070,7 @@ var useCustomMenuItems = ({
|
|
|
1067
1070
|
return;
|
|
1068
1071
|
}
|
|
1069
1072
|
const { props } = child;
|
|
1070
|
-
|
|
1073
|
+
import_react19.default.Children.forEach(props.children, (child2) => {
|
|
1071
1074
|
if (!isThatComponent(child2, MenuActionComponent) && !isThatComponent(child2, MenuLinkComponent)) {
|
|
1072
1075
|
if (child2) {
|
|
1073
1076
|
(0, import_utils5.logErrorInDevMode)(customMenuItemsIgnoredComponent);
|
|
@@ -1223,13 +1226,13 @@ var CheckoutButton = withClerk(
|
|
|
1223
1226
|
return clickHandler();
|
|
1224
1227
|
};
|
|
1225
1228
|
const childProps = { ...rest, onClick: wrappedChildClickHandler };
|
|
1226
|
-
return
|
|
1229
|
+
return import_react20.default.cloneElement(child, childProps);
|
|
1227
1230
|
},
|
|
1228
1231
|
{ component: "CheckoutButton", renderWhileLoading: true }
|
|
1229
1232
|
);
|
|
1230
1233
|
|
|
1231
1234
|
// src/components/PlanDetailsButton.tsx
|
|
1232
|
-
var
|
|
1235
|
+
var import_react21 = __toESM(require("react"));
|
|
1233
1236
|
var PlanDetailsButton = withClerk(
|
|
1234
1237
|
({ clerk, children, ...props }) => {
|
|
1235
1238
|
const { plan, planId, initialPlanPeriod, planDetailsProps, ...rest } = props;
|
|
@@ -1253,13 +1256,13 @@ var PlanDetailsButton = withClerk(
|
|
|
1253
1256
|
return clickHandler();
|
|
1254
1257
|
};
|
|
1255
1258
|
const childProps = { ...rest, onClick: wrappedChildClickHandler };
|
|
1256
|
-
return
|
|
1259
|
+
return import_react21.default.cloneElement(child, childProps);
|
|
1257
1260
|
},
|
|
1258
1261
|
{ component: "PlanDetailsButton", renderWhileLoading: true }
|
|
1259
1262
|
);
|
|
1260
1263
|
|
|
1261
1264
|
// src/components/SubscriptionDetailsButton.tsx
|
|
1262
|
-
var
|
|
1265
|
+
var import_react22 = __toESM(require("react"));
|
|
1263
1266
|
var SubscriptionDetailsButton = withClerk(
|
|
1264
1267
|
({
|
|
1265
1268
|
clerk,
|
|
@@ -1297,13 +1300,13 @@ var SubscriptionDetailsButton = withClerk(
|
|
|
1297
1300
|
return clickHandler();
|
|
1298
1301
|
};
|
|
1299
1302
|
const childProps = { ...rest, onClick: wrappedChildClickHandler };
|
|
1300
|
-
return
|
|
1303
|
+
return import_react22.default.cloneElement(child, childProps);
|
|
1301
1304
|
},
|
|
1302
1305
|
{ component: "SubscriptionDetailsButton", renderWhileLoading: true }
|
|
1303
1306
|
);
|
|
1304
1307
|
|
|
1305
1308
|
// src/experimental.ts
|
|
1306
|
-
var
|
|
1309
|
+
var import_react23 = require("@clerk/shared/react");
|
|
1307
1310
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1308
1311
|
0 && (module.exports = {
|
|
1309
1312
|
CheckoutButton,
|