UNPKG

@clerk/clerk-react

Version:

Clerk React library

174 lines (170 loc) • 5.42 kB
import { useAssertWrappedByClerkProvider, useAuth, useIsomorphicClerkContext, withClerk } from "./chunk-U7L7TR5J.mjs"; // src/components/controlComponents.tsx import { deprecated } from "@clerk/shared/deprecated"; import React from "react"; // src/contexts/SessionContext.tsx import { SessionContext, useSessionContext } from "@clerk/shared/react"; // src/components/controlComponents.tsx var SignedIn = ({ children, treatPendingAsSignedOut }) => { useAssertWrappedByClerkProvider("SignedIn"); const { userId } = useAuth({ treatPendingAsSignedOut }); if (userId) { return children; } return null; }; var SignedOut = ({ children, treatPendingAsSignedOut }) => { useAssertWrappedByClerkProvider("SignedOut"); const { userId } = useAuth({ treatPendingAsSignedOut }); if (userId === null) { return children; } return null; }; var ClerkLoaded = ({ children }) => { useAssertWrappedByClerkProvider("ClerkLoaded"); const isomorphicClerk = useIsomorphicClerkContext(); if (!isomorphicClerk.loaded) { return null; } return children; }; var ClerkLoading = ({ children }) => { useAssertWrappedByClerkProvider("ClerkLoading"); const isomorphicClerk = useIsomorphicClerkContext(); if (isomorphicClerk.status !== "loading") { return null; } return children; }; var ClerkFailed = ({ children }) => { useAssertWrappedByClerkProvider("ClerkFailed"); const isomorphicClerk = useIsomorphicClerkContext(); if (isomorphicClerk.status !== "error") { return null; } return children; }; var ClerkDegraded = ({ children }) => { useAssertWrappedByClerkProvider("ClerkDegraded"); const isomorphicClerk = useIsomorphicClerkContext(); if (isomorphicClerk.status !== "degraded") { return null; } return children; }; var Protect = ({ children, fallback, treatPendingAsSignedOut, ...restAuthorizedParams }) => { useAssertWrappedByClerkProvider("Protect"); const { isLoaded, has, userId } = useAuth({ treatPendingAsSignedOut }); if (!isLoaded) { return null; } const unauthorized = fallback != null ? fallback : null; const authorized = children; if (!userId) { return unauthorized; } if (typeof restAuthorizedParams.condition === "function") { if (restAuthorizedParams.condition(has)) { return authorized; } return unauthorized; } if (restAuthorizedParams.role || restAuthorizedParams.permission || restAuthorizedParams.feature || restAuthorizedParams.plan) { if (has(restAuthorizedParams)) { return authorized; } return unauthorized; } return authorized; }; var RedirectToSignIn = withClerk(({ clerk, ...props }) => { const { client, session } = clerk; const hasSignedInSessions = client.signedInSessions ? client.signedInSessions.length > 0 : ( // Compat for clerk-js<5.54.0 (which was released with the `signedInSessions` property) client.activeSessions && client.activeSessions.length > 0 ); React.useEffect(() => { if (session === null && hasSignedInSessions) { void clerk.redirectToAfterSignOut(); } else { void clerk.redirectToSignIn(props); } }, []); return null; }, "RedirectToSignIn"); var RedirectToSignUp = withClerk(({ clerk, ...props }) => { React.useEffect(() => { void clerk.redirectToSignUp(props); }, []); return null; }, "RedirectToSignUp"); var RedirectToTask = withClerk(({ clerk }) => { const { session } = clerk; React.useEffect(() => { if (!session) { void clerk.redirectToSignIn(); return; } void clerk.__internal_navigateToTaskIfAvailable(); }, []); return null; }, "RedirectToTask"); var RedirectToUserProfile = withClerk(({ clerk }) => { React.useEffect(() => { deprecated("RedirectToUserProfile", "Use the `redirectToUserProfile()` method instead."); void clerk.redirectToUserProfile(); }, []); return null; }, "RedirectToUserProfile"); var RedirectToOrganizationProfile = withClerk(({ clerk }) => { React.useEffect(() => { deprecated("RedirectToOrganizationProfile", "Use the `redirectToOrganizationProfile()` method instead."); void clerk.redirectToOrganizationProfile(); }, []); return null; }, "RedirectToOrganizationProfile"); var RedirectToCreateOrganization = withClerk(({ clerk }) => { React.useEffect(() => { deprecated("RedirectToCreateOrganization", "Use the `redirectToCreateOrganization()` method instead."); void clerk.redirectToCreateOrganization(); }, []); return null; }, "RedirectToCreateOrganization"); var AuthenticateWithRedirectCallback = withClerk( ({ clerk, ...handleRedirectCallbackParams }) => { React.useEffect(() => { void clerk.handleRedirectCallback(handleRedirectCallbackParams); }, []); return null; }, "AuthenticateWithRedirectCallback" ); var MultisessionAppSupport = ({ children }) => { useAssertWrappedByClerkProvider("MultisessionAppSupport"); const session = useSessionContext(); return /* @__PURE__ */ React.createElement(React.Fragment, { key: session ? session.id : "no-users" }, children); }; export { SignedIn, SignedOut, ClerkLoaded, ClerkLoading, ClerkFailed, ClerkDegraded, Protect, RedirectToSignIn, RedirectToSignUp, RedirectToTask, RedirectToUserProfile, RedirectToOrganizationProfile, RedirectToCreateOrganization, AuthenticateWithRedirectCallback, MultisessionAppSupport }; //# sourceMappingURL=chunk-M7CYH6RH.mjs.map