@clerk/elements 0.23.58 → 0.23.59
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-OCDTPQFS.mjs → chunk-A5ZZN62M.mjs} +2 -2
- package/dist/{chunk-DKCDTPFJ.mjs → chunk-NQPTVXBS.mjs} +10 -1
- package/dist/chunk-NQPTVXBS.mjs.map +1 -0
- package/dist/react/common/index.js +6 -0
- package/dist/react/common/index.js.map +1 -1
- package/dist/react/common/index.mjs +1 -1
- package/dist/react/sign-in/index.js +3 -0
- package/dist/react/sign-in/index.js.map +1 -1
- package/dist/react/sign-in/index.mjs +2 -2
- package/dist/react/sign-up/index.mjs +2 -2
- package/package.json +4 -4
- package/dist/chunk-DKCDTPFJ.mjs.map +0 -1
- /package/dist/{chunk-OCDTPQFS.mjs.map → chunk-A5ZZN62M.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/react/sign-in/index.ts","../../../src/react/sign-in/root.tsx","../../../src/utils/safe-access.ts","../../../src/internals/constants/index.ts","../../../src/internals/machines/form/form.context.ts","../../../src/internals/machines/form/form.machine.ts","../../../src/internals/errors/index.ts","../../../src/internals/utils/inspector/index.ts","../../../src/internals/machines/sign-in/verification.machine.ts","../../../src/internals/machines/shared/shared.actions.ts","../../../src/internals/machines/sign-in/utils/starting-factors.ts","../../../src/internals/machines/utils/assert.ts","../../../src/internals/machines/sign-in/verification.types.ts","../../../src/internals/machines/sign-in/router.machine.ts","../../../src/internals/machines/third-party/third-party.actors.ts","../../../src/internals/machines/utils/clerkjs.ts","../../../src/internals/machines/third-party/third-party.machine.ts","../../../src/internals/machines/utils/next.ts","../../../src/internals/machines/sign-in/reset-password.machine.ts","../../../src/internals/machines/sign-in/start.machine.ts","../../../src/internals/machines/utils/formatters.ts","../../../src/internals/machines/sign-in/router.selectors.ts","../../../src/internals/machines/sign-in/router.types.ts","../../../src/react/router/index.ts","../../../src/react/router/virtual.ts","../../../src/react/router/next.ts","../../../src/react/utils/path-inference/next.tsx","../../../src/react/utils/path-inference/utils.ts","../../../src/react/utils/create-context-from-actor-ref.ts","../../../src/react/sign-in/context/router.context.ts","../../../src/react/sign-in/context/sign-in-strategy.context.ts","../../../src/react/sign-in/context/strategies.context.ts","../../../src/react/common/form/hooks/use-form.ts","../../../src/react/common/form/hooks/use-global-errors.ts","../../../src/react/common/form/form.tsx","../../../src/react/common/form/submit.tsx","../../../src/react/sign-in/step.tsx","../../../src/react/sign-in/choose-session/choose-session.tsx","../../../src/react/utils/create-context-for-dom-validation.ts","../../../src/react/utils/is-valid-component-type.ts","../../../src/react/sign-in/choose-session/choose-session.hooks.ts","../../../src/react/hooks/use-active-tags.hook.ts","../../../src/react/sign-in/choose-strategy.tsx","../../../src/react/sign-in/reset-password.tsx","../../../src/react/sign-in/sso-callback.tsx","../../../src/react/sign-in/start.tsx","../../../src/react/sign-in/verifications.tsx","../../../src/internals/machines/utils/strategies.ts","../../../src/react/sign-in/action/action.tsx","../../../src/react/common/index.ts","../../../src/react/sign-in/action/navigate.tsx","../../../src/react/sign-in/action/resend.tsx","../../../src/react/sign-in/action/set-active-session.tsx","../../../src/react/sign-in/passkey.tsx","../../../src/react/sign-in/captcha.tsx","../../../src/react/sign-in/identifiers.tsx"],"sourcesContent":["// Mark as a client-only package. This will error if you try to import it in a React Server Component.\nimport 'client-only';\n\nexport { SignInRoot as SignIn, SignInRoot as Root } from './root';\nexport { SignInStep as Step } from './step';\nexport { SignInAction as Action } from './action';\nexport { SignInPasskey as Passkey } from './passkey';\nexport { SignInCaptcha as Captcha } from './captcha';\nexport { SignInSupportedStrategy as SupportedStrategy } from './choose-strategy';\nexport { SignInSessionList as SessionList, SignInSessionListItem as SessionListItem } from './choose-session';\n\nexport {\n SignInFirstFactor as FirstFactor,\n SignInSecondFactor as SecondFactor,\n SignInStrategy as Strategy,\n} from './verifications';\n\nexport { SignInSafeIdentifier as SafeIdentifier, SignInSalutation as Salutation } from './identifiers';\n","import { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport { useSelector } from '@xstate/react';\nimport React, { useEffect } from 'react';\nimport { createActor } from 'xstate';\n\nimport { ROUTING, SIGN_IN_DEFAULT_BASE_PATH, SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context';\nimport type { SignInRouterInitEvent } from '~/internals/machines/sign-in';\nimport { SignInRouterMachine } from '~/internals/machines/sign-in';\nimport { inspect } from '~/internals/utils/inspector';\nimport { ClerkHostRouterContext, Router, useClerkRouter, useNextRouter, useVirtualRouter } from '~/react/router';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nimport { Form } from '../common/form';\n\ntype SignInFlowProviderProps = {\n children: React.ReactNode;\n exampleMode?: boolean;\n /**\n * Fallback markup to render while Clerk is loading\n */\n fallback?: React.ReactNode;\n isRootPath: boolean;\n};\n\nconst actor = createActor(SignInRouterMachine, { inspect });\nactor.start();\n\nfunction SignInFlowProvider({ children, exampleMode, fallback, isRootPath }: SignInFlowProviderProps) {\n const clerk = useClerk();\n const router = useClerkRouter();\n const formRef = useFormStore();\n const isReady = useSelector(actor, state => state.value !== 'Idle');\n\n useEffect(() => {\n if (!clerk || !router) {\n return;\n }\n\n const cb = () => {\n const evt: SignInRouterInitEvent = {\n type: 'INIT',\n clerk,\n exampleMode,\n formRef,\n router,\n signUpPath: SIGN_UP_DEFAULT_BASE_PATH,\n };\n\n if (actor.getSnapshot().can(evt)) {\n actor.send(evt);\n }\n };\n\n if ('addOnLoaded' in clerk) {\n // @ts-expect-error - addOnLoaded doesn't exist on the clerk type, but it does on IsomorphicClerk, which can be hit when Elements is used standalone\n clerk.addOnLoaded(cb);\n } else {\n cb();\n }\n\n // Ensure that the latest instantiated formRef is attached to the router\n if (formRef && actor.getSnapshot().can({ type: 'RESET.STEP' })) {\n actor.send({\n type: 'FORM.ATTACH',\n formRef,\n });\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clerk, exampleMode, formRef?.id, !!router, clerk.loaded]);\n\n return (\n <SignInRouterCtx.Provider actorRef={actor}>\n {isRootPath && !isReady && fallback ? <Form>{fallback}</Form> : null}\n {clerk.loaded && isReady ? children : null}\n </SignInRouterCtx.Provider>\n );\n}\n\nexport type SignInRootProps = Omit<SignInFlowProviderProps, 'isRootPath'> & {\n /**\n * The base path for your sign-in route.\n * Will be automatically inferred in Next.js.\n * @example `/sign-in`\n */\n path?: string;\n /**\n * If you want to render Clerk Elements in e.g. a modal, use the `virtual` routing mode.\n */\n routing?: ROUTING;\n};\n\n/**\n * Root component for the sign-in flow. It sets up providers and state management for its children.\n * Must wrap all sign-in related components.\n *\n * @param {string} path - The root path the sign-in flow is mounted at. Will be automatically inferred in Next.js. You can set it to `/sign-in` for example.\n * @param {React.ReactNode} fallback - Fallback markup to render while Clerk is loading. Default: `null`\n * @param {string} routing - If you want to render Clerk Elements in e.g. a modal, use the `'virtual'` routing mode. Default: `'path'`\n *\n * @example\n * import * as SignIn from \"@clerk/elements/sign-in\"\n *\n * export default SignInPage = () => (\n * <SignIn.Root>\n * </SignIn.Root>\n * )\n */\nexport function SignInRoot({\n children,\n exampleMode = false,\n fallback = null,\n path: pathProp,\n routing = ROUTING.path,\n}: SignInRootProps): JSX.Element | null {\n const clerk = useClerk();\n const router = (routing === ROUTING.virtual ? useVirtualRouter : useNextRouter)();\n const pathname = router.pathname();\n const inferredPath = router.inferredBasePath?.();\n const path = pathProp || inferredPath || SIGN_IN_DEFAULT_BASE_PATH;\n const isRootPath = path === pathname;\n\n clerk.telemetry?.record(\n eventComponentMounted('Elements_SignInRoot', {\n exampleMode,\n fallback: Boolean(fallback),\n path,\n routing,\n }),\n );\n\n return (\n <ClerkHostRouterContext.Provider value={router}>\n <Router basePath={path}>\n <FormStoreProvider>\n <SignInFlowProvider\n exampleMode={exampleMode}\n fallback={fallback}\n isRootPath={isRootPath}\n >\n {children}\n </SignInFlowProvider>\n </FormStoreProvider>\n </Router>\n </ClerkHostRouterContext.Provider>\n );\n}\n","export function safeAccess(fn: any, fallback: any) {\n try {\n return fn();\n } catch {\n return fallback;\n }\n}\n","import type { SignUpModes } from '@clerk/types';\n\nimport { safeAccess } from '~/utils/safe-access';\n\nexport const SSO_CALLBACK_PATH_ROUTE = '/sso-callback';\nexport const CHOOSE_SESSION_PATH_ROUTE = '/choose';\nexport const MAGIC_LINK_VERIFY_PATH_ROUTE = '/verify';\n\nexport const SIGN_UP_MODES: Record<string, SignUpModes> = {\n PUBLIC: 'public',\n RESTRICTED: 'restricted',\n};\n\n// TODO: remove reliance on next-specific variables here\nexport const SIGN_IN_DEFAULT_BASE_PATH = safeAccess(\n () => process.env.CLERK_SIGN_IN_URL ?? process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL,\n '/sign-in',\n);\nexport const SIGN_UP_DEFAULT_BASE_PATH = safeAccess(\n () => process.env.CLERK_SIGN_UP_URL ?? process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL,\n '/sign-up',\n);\n\n// The version that Next added support for the window.history.pushState and replaceState APIs.\n// ref: https://nextjs.org/blog/next-14-1#windowhistorypushstate-and-windowhistoryreplacestate\nexport const NEXT_WINDOW_HISTORY_SUPPORT_VERSION = '14.1.0';\n\nexport const SEARCH_PARAMS = {\n createdSession: '__clerk_created_session',\n handshake: '__clerk_handshake',\n help: '__clerk_help',\n invitationToken: '__clerk_invitation_token',\n modalState: '__clerk_modal_state',\n satelliteUrl: '__clerk_satellite_url',\n status: '__clerk_status',\n synced: '__clerk_synced',\n ticket: '__clerk_ticket',\n transfer: '__clerk_transfer',\n} as const;\n\nexport const RESENDABLE_COUNTDOWN_DEFAULT = 60;\n\nexport const CAPTCHA_ELEMENT_ID = 'clerk-captcha';\n\n// Pulled from: https://github.com/clerk/javascript/blob/c7d626292a9fd12ca0f1b31a1035e711b6e99531/packages/clerk-js/src/core/constants.ts#L15\nexport const ERROR_CODES = {\n FORM_IDENTIFIER_NOT_FOUND: 'form_identifier_not_found',\n FORM_PASSWORD_INCORRECT: 'form_password_incorrect',\n INVALID_STRATEGY_FOR_USER: 'strategy_for_user_invalid',\n NOT_ALLOWED_TO_SIGN_UP: 'not_allowed_to_sign_up',\n OAUTH_ACCESS_DENIED: 'oauth_access_denied',\n OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: 'oauth_email_domain_reserved_by_saml',\n NOT_ALLOWED_ACCESS: 'not_allowed_access',\n SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing',\n USER_LOCKED: 'user_locked',\n ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing',\n ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch',\n ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch',\n SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch',\n ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: 'organization_membership_quota_exceeded_for_sso',\n};\n\nexport const ROUTING = {\n path: 'path',\n virtual: 'virtual',\n hash: 'hash',\n} as const;\n\nexport type ROUTING = (typeof ROUTING)[keyof typeof ROUTING];\n","import { createActorContext } from '@xstate/react';\nimport type { SnapshotFrom } from 'xstate';\n\nimport { FormMachine } from '~/internals/machines/form';\nimport { inspect } from '~/internals/utils/inspector';\n\nexport type SnapshotState = SnapshotFrom<typeof FormMachine>;\n\nconst FormMachineContext = createActorContext(FormMachine, { inspect });\n\nexport const FormStoreProvider = FormMachineContext.Provider;\nexport const useFormStore = FormMachineContext.useActorRef;\nexport const useFormSelector = FormMachineContext.useSelector;\n\n/**\n * Selects a global error, if it exists\n */\nexport const globalErrorsSelector = (state: SnapshotState) => state.context.errors;\n\n/**\n * Selects if a specific field has a value\n */\nexport const fieldValueSelector = (name: string | undefined) => (state: SnapshotState) =>\n name ? state.context.fields.get(name)?.value : '';\n\n/**\n * Selects if a specific field has a value\n */\nexport const fieldHasValueSelector = (name: string | undefined) => (state: SnapshotState) =>\n Boolean(fieldValueSelector(name)(state));\n\ntype MapValue<A> = A extends Map<any, infer V> ? V : never;\n\n/**\n * Selects field-specific feedback, if they exist\n *\n * We declare an explicit return type here because TypeScript's inference results in the subtype reduction of the\n * union used for feedback. Explicitly declaring the return type allows for all members of the union to be\n * included in the return type.\n */\nexport const fieldFeedbackSelector =\n (name: string | undefined) =>\n (state: SnapshotState): MapValue<SnapshotState['context']['fields']>['feedback'] | undefined =>\n name ? state.context.fields.get(name)?.feedback : undefined;\n","import { isClerkAPIResponseError, isKnownError, isMetamaskError } from '@clerk/shared/error';\nimport { snakeToCamel } from '@clerk/shared/underscore';\nimport type { ClerkAPIError } from '@clerk/types';\nimport type { MachineContext } from 'xstate';\nimport { assign, enqueueActions, setup } from 'xstate';\n\nimport { ClerkElementsError, ClerkElementsFieldError } from '~/internals/errors';\n\nimport type { FieldDetails, FormDefaultValues, FormFields } from './form.types';\n\nexport interface FormMachineContext extends MachineContext {\n defaultValues: FormDefaultValues;\n errors: ClerkElementsError[];\n fields: FormFields;\n hidden?: Set<string>;\n missing?: Set<string>;\n optional?: Set<string>;\n progressive: boolean;\n required?: Set<string>;\n}\n\nexport type FormMachineEvents =\n | { type: 'FIELD.ADD'; field: Pick<FieldDetails, 'name' | 'type' | 'value' | 'checked' | 'disabled'> }\n | { type: 'FIELD.REMOVE'; field: Pick<FieldDetails, 'name'> }\n | { type: 'FIELD.ENABLE'; field: Pick<FieldDetails, 'name'> }\n | { type: 'FIELD.DISABLE'; field: Pick<FieldDetails, 'name'> }\n | {\n type: 'MARK_AS_PROGRESSIVE';\n defaultValues: FormDefaultValues;\n missing: string[];\n optional: string[];\n required: string[];\n }\n | {\n type: 'PREFILL_DEFAULT_VALUES';\n defaultValues: FormDefaultValues;\n }\n | { type: 'UNMARK_AS_PROGRESSIVE' }\n | {\n type: 'FIELD.UPDATE';\n field: Pick<FieldDetails, 'name' | 'value' | 'checked' | 'disabled'>;\n }\n | { type: 'ERRORS.SET'; error: any }\n | { type: 'ERRORS.CLEAR' }\n | {\n type: 'FIELD.FEEDBACK.SET';\n field: Pick<FieldDetails, 'name' | 'feedback'>;\n }\n | {\n type: 'FIELD.FEEDBACK.CLEAR';\n field: Pick<FieldDetails, 'name'>;\n }\n | { type: 'FIELD.FEEDBACK.CLEAR.ALL' };\n\ntype FormMachineTypes = {\n events: FormMachineEvents;\n context: FormMachineContext;\n};\n\nexport type TFormMachine = typeof FormMachine;\n\n/**\n * A machine for managing form state.\n * This machine is used alongside our other, flow-specific machines and a reference to a spawned FormMachine actor is used in the flows to interact with the form state.\n */\nexport const FormMachine = setup({\n actions: {\n setGlobalErrors: assign({\n errors: (_, params: { errors: ClerkElementsError[] }) => [...params.errors],\n }),\n setFieldFeedback: assign({\n fields: ({ context }, params: Pick<FieldDetails, 'name' | 'feedback'>) => {\n if (!params.name) {\n throw new Error('Field name is required');\n }\n\n const fieldName = params.name;\n if (context.fields.has(fieldName)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(fieldName)!.feedback = params.feedback;\n }\n\n return context.fields;\n },\n }),\n },\n types: {} as FormMachineTypes,\n}).createMachine({\n id: 'Form',\n context: () => ({\n defaultValues: new Map(),\n errors: [],\n fields: new Map(),\n progressive: false,\n }),\n on: {\n 'ERRORS.SET': {\n actions: enqueueActions(({ enqueue, event }) => {\n const isClerkAPIError = (err: any): err is ClerkAPIError => 'meta' in err;\n\n if (isKnownError(event.error)) {\n const fields: Record<string, ClerkElementsFieldError[]> = {};\n const globalErrors: ClerkElementsError[] = [];\n const errors = isClerkAPIResponseError(event.error) ? event.error?.errors : [event.error];\n\n for (const error of errors) {\n const name = isClerkAPIError(error) ? snakeToCamel(error.meta?.paramName) : null;\n\n if (!name || isMetamaskError(error)) {\n globalErrors.push(ClerkElementsError.fromAPIError(error));\n continue;\n }\n\n if (!fields[name]) {\n fields[name] = [];\n }\n\n fields[name]?.push(ClerkElementsFieldError.fromAPIError(error));\n }\n\n enqueue({\n type: 'setGlobalErrors',\n params: {\n errors: globalErrors,\n },\n });\n\n for (const field in fields) {\n enqueue({\n type: 'setFieldFeedback',\n params: {\n name: field,\n feedback: {\n type: 'error',\n message: fields[field][0],\n },\n },\n });\n }\n }\n }),\n },\n 'ERRORS.CLEAR': {\n actions: assign({\n errors: () => [],\n }),\n },\n 'FIELD.ADD': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n event.field.value = event.field.value || context.defaultValues.get(event.field.name) || undefined;\n\n context.fields.set(event.field.name, event.field);\n return context.fields;\n },\n }),\n },\n 'FIELD.UPDATE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.checked = event.field.checked;\n field.disabled = event.field.disabled ?? field.disabled;\n field.value = event.field.value;\n\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.DISABLE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.disabled = true;\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.ENABLE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.disabled = false;\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.REMOVE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n context.fields.delete(event.field.name);\n return context.fields;\n },\n }),\n },\n 'FIELD.FEEDBACK.SET': {\n actions: [\n {\n type: 'setFieldFeedback',\n params: ({ event }) => event.field,\n },\n ],\n },\n 'FIELD.FEEDBACK.CLEAR': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n if (context.fields.has(event.field.name)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(event.field.name)!.feedback = undefined;\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.FEEDBACK.CLEAR.ALL': {\n actions: assign({\n fields: ({ context }) => {\n context.fields.forEach(field => {\n field.feedback = undefined;\n });\n\n return context.fields;\n },\n }),\n },\n MARK_AS_PROGRESSIVE: {\n actions: assign(({ event }) => {\n const missing = new Set(event.missing);\n\n return {\n defaultValues: event.defaultValues,\n hidden: new Set([...event.required.filter(f => !missing.has(f)), ...event.optional]),\n missing,\n optional: new Set(event.optional),\n progressive: true,\n required: new Set(event.required),\n };\n }),\n },\n UNMARK_AS_PROGRESSIVE: {\n actions: assign({\n defaultValues: new Map(),\n hidden: undefined,\n missing: undefined,\n optional: undefined,\n progressive: false,\n required: undefined,\n }),\n },\n PREFILL_DEFAULT_VALUES: {\n actions: assign(({ event }) => {\n return {\n defaultValues: event.defaultValues,\n };\n }),\n },\n },\n});\n","// eslint-disable-next-line no-restricted-imports\nimport type { MetamaskError } from '@clerk/shared';\nimport type { ClerkAPIError } from '@clerk/types';\n\nexport abstract class ClerkElementsErrorBase extends Error {\n clerkError = true;\n clerkElementsError = true;\n rawMessage: string;\n\n constructor(\n readonly code: string,\n message: string,\n ) {\n super(message);\n\n this.name = 'ClerkElementsError';\n this.rawMessage = message;\n }\n\n toString() {\n return `[${this.name}]\\nCode: ${this.code}\\nMessage: ${this.message}`;\n }\n}\n\nexport class ClerkElementsError extends ClerkElementsErrorBase {\n static fromAPIError(error: ClerkAPIError | MetamaskError) {\n return new ClerkElementsError(\n error.code.toString(),\n // @ts-expect-error - Expected that longMessage isn't a property of MetamaskError\n error.longMessage || error.message,\n );\n }\n\n constructor(code: string, message: string) {\n super(code, message);\n this.name = 'ClerkElementsError';\n }\n}\n\nexport class ClerkElementsRuntimeError extends ClerkElementsErrorBase {\n constructor(message: string) {\n super('elements_runtime_error', message);\n this.name = 'ClerkElementsRuntimeError';\n }\n}\n\nexport class ClerkElementsFieldError extends ClerkElementsErrorBase {\n static fromAPIError(error: ClerkAPIError) {\n return new ClerkElementsFieldError(error.code, error.longMessage || error.message);\n }\n\n constructor(code: string, message: string) {\n super(code, message);\n this.name = 'ClerkElementsFieldError';\n }\n\n get validityState() {\n return this.code;\n }\n\n get forceMatch() {\n return true;\n }\n\n matchFn = () => true;\n}\n","import type { InspectionEvent, Observer } from 'xstate';\n\nimport { getInspector as getBrowserInspector } from './browser';\nimport { getInspector as getConsoleInspector } from './console';\n\nexport let inspect: Observer<InspectionEvent> | undefined;\n\nif (__DEV__) {\n inspect = getBrowserInspector() ?? getConsoleInspector();\n}\n\nconst inspector = {\n inspect,\n};\n\nexport default inspector;\n","import { isClerkAPIResponseError } from '@clerk/shared/error';\nimport type {\n AttemptFirstFactorParams,\n EmailCodeAttempt,\n PasswordAttempt,\n PhoneCodeAttempt,\n PrepareFirstFactorParams,\n PrepareSecondFactorParams,\n ResetPasswordEmailCodeAttempt,\n ResetPasswordPhoneCodeAttempt,\n SignInFirstFactor,\n SignInResource,\n SignInSecondFactor,\n Web3Attempt,\n} from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { assign, fromPromise, log, sendTo, setup } from 'xstate';\n\nimport {\n MAGIC_LINK_VERIFY_PATH_ROUTE,\n RESENDABLE_COUNTDOWN_DEFAULT,\n SIGN_IN_DEFAULT_BASE_PATH,\n} from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport type { SignInStrategyName, WithParams } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { determineStartingSignInFactor, determineStartingSignInSecondFactor } from '~/internals/machines/sign-in/utils';\nimport { assertActorEventError, assertIsDefined } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignInVerificationSchema } from './verification.types';\nimport { SignInVerificationDelays } from './verification.types';\n\nexport type TSignInFirstFactorMachine = typeof SignInFirstFactorMachine;\nexport type TSignInSecondFactorMachine = typeof SignInSecondFactorMachine;\n\nexport type DetermineStartingFactorInput = {\n parent: SignInRouterMachineActorRef;\n};\n\nexport type PrepareFirstFactorInput = WithParams<PrepareFirstFactorParams> & {\n parent: SignInRouterMachineActorRef;\n resendable: boolean;\n};\nexport type PrepareSecondFactorInput = WithParams<PrepareSecondFactorParams> & {\n parent: SignInRouterMachineActorRef;\n resendable: boolean;\n};\n\nexport type AttemptFirstFactorInput = {\n parent: SignInRouterMachineActorRef;\n fields: FormFields;\n currentFactor: SignInFirstFactor | null;\n};\nexport type AttemptSecondFactorInput = {\n parent: SignInRouterMachineActorRef;\n fields: FormFields;\n currentFactor: SignInSecondFactor | null;\n};\n\nconst isNonPreparableStrategy = (strategy?: SignInFirstFactor['strategy'] | SignInSecondFactor['strategy']) => {\n if (!strategy) {\n return false;\n }\n\n return ['passkey', 'password'].includes(strategy);\n};\n\nexport const SignInVerificationMachineId = 'SignInVerification';\n\nconst SignInVerificationMachine = setup({\n actors: {\n determineStartingFactor: fromPromise<SignInFirstFactor | SignInSecondFactor | null, DetermineStartingFactorInput>(\n () => Promise.reject(new ClerkElementsRuntimeError('Actor `determineStartingFactor` must be overridden')),\n ),\n prepare: fromPromise<SignInResource, PrepareFirstFactorInput | PrepareSecondFactorInput>(() =>\n Promise.reject(new ClerkElementsRuntimeError('Actor `prepare` must be overridden')),\n ),\n attempt: fromPromise<SignInResource, AttemptFirstFactorInput | AttemptSecondFactorInput>(() =>\n Promise.reject(new ClerkElementsRuntimeError('Actor `attempt` must be overridden')),\n ),\n attemptPasskey: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; flow: 'autofill' | 'discoverable' | undefined }\n >(({ input: { parent, flow } }) => {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey({\n flow,\n });\n }),\n },\n actions: {\n resendableTick: assign(({ context }) => ({\n resendable: context.resendableAfter === 0,\n resendableAfter: context.resendableAfter > 0 ? context.resendableAfter - 1 : context.resendableAfter,\n })),\n resendableReset: assign({\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n validateRegisteredStrategies: ({ context }) => {\n const clerk = context.parent.getSnapshot().context.clerk;\n\n if (clerk.__unstable__environment?.isProduction()) {\n return;\n }\n\n // Only show these warnings in development!\n if (process.env.NODE_ENV === 'development') {\n if (\n clerk.client.signIn.supportedFirstFactors &&\n !clerk.client.signIn.supportedFirstFactors.every((factor: SignInFirstFactor) =>\n context.registeredStrategies.has(factor.strategy),\n )\n ) {\n console.warn(\n `Clerk: Your instance is configured to support these strategies: ${clerk.client.signIn.supportedFirstFactors\n .map((factor: SignInFirstFactor) => factor.strategy)\n .join(', ')}, but the rendered strategies are: ${Array.from(context.registeredStrategies).join(\n ', ',\n )}. Make sure to render a <Strategy> component for each supported strategy. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n }\n\n if (\n clerk.client.signIn.supportedSecondFactors &&\n !clerk.client.signIn.supportedSecondFactors.every((factor: SignInSecondFactor) =>\n context.registeredStrategies.has(factor.strategy),\n )\n ) {\n console.warn(\n `Clerk: Your instance is configured to support these 2FA strategies: ${clerk.client.signIn.supportedSecondFactors\n .map((f: SignInSecondFactor) => f.strategy)\n .join(', ')}, but the rendered strategies are: ${Array.from(context.registeredStrategies).join(\n ', ',\n )}. Make sure to render a <Strategy> component for each supported strategy. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n }\n\n const strategiesUsedButNotActivated = Array.from(context.registeredStrategies).filter(\n strategy =>\n !clerk.client.signIn.supportedFirstFactors?.some(\n (supported: SignInFirstFactor) => supported.strategy === strategy,\n ),\n );\n\n if (strategiesUsedButNotActivated.length > 0) {\n console.warn(\n `Clerk: These rendered strategies are not configured for your instance: ${strategiesUsedButNotActivated.join(', ')}. If this is unexpected, make sure to enable them in your Clerk dashboard: https://dashboard.clerk.com/last-active?path=/user-authentication/email-phone-username`,\n );\n }\n\n if (context.currentFactor?.strategy && !context.registeredStrategies.has(context.currentFactor?.strategy)) {\n throw new ClerkElementsRuntimeError(\n `Your sign-in attempt is missing a ${context.currentFactor?.strategy} strategy. Make sure <Strategy name=\"${context.currentFactor?.strategy}\"> is rendered in your flow. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n } else if (!context.currentFactor?.strategy) {\n throw new ClerkElementsRuntimeError(\n 'Unable to determine an authentication strategy to verify. This means your instance is misconfigured. Visit the Clerk Dashboard and verify that your instance has authentication strategies enabled: https://dashboard.clerk.com/last-active?path=/user-authentication/email-phone-username',\n );\n }\n }\n },\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignInResource>).output }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n setConsoleError: ({ event }) => {\n if (process.env.NODE_ENV !== 'development') {\n return;\n }\n\n assertActorEventError(event);\n\n const error = isClerkAPIResponseError(event.error) ? event.error.errors[0].longMessage : event.error.message;\n\n console.error(`Unable to fulfill the prepare or attempt request for the sign-in verification.\n Error: ${error}\n Please open an issue if you continue to run into this issue.`);\n },\n },\n guards: {\n isResendable: ({ context }) => context.resendable || context.resendableAfter === 0,\n isNeverResendable: ({ context }) => isNonPreparableStrategy(context.currentFactor?.strategy),\n },\n delays: SignInVerificationDelays,\n types: {} as SignInVerificationSchema,\n}).createMachine({\n id: SignInVerificationMachineId,\n context: ({ input }) => ({\n currentFactor: null,\n basePath: input.basePath || SIGN_IN_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n loadingStep: 'verifications',\n parent: input.parent,\n registeredStrategies: new Set<SignInStrategyName>(),\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n initial: 'Init',\n on: {\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'STRATEGY.REGISTER': {\n actions: assign({\n registeredStrategies: ({ context, event }) => context.registeredStrategies.add(event.factor),\n }),\n },\n 'STRATEGY.UNREGISTER': {\n actions: assign({\n registeredStrategies: ({ context, event }) => {\n context.registeredStrategies.delete(event.factor);\n return context.registeredStrategies;\n },\n }),\n },\n },\n states: {\n Init: {\n tags: ['state:preparing', 'state:loading'],\n invoke: {\n id: 'determineStartingFactor',\n src: 'determineStartingFactor',\n input: ({ context }) => ({\n parent: context.parent,\n }),\n onDone: {\n target: 'Preparing',\n actions: assign({\n currentFactor: ({ event }) => event.output,\n }),\n },\n onError: {\n target: 'Preparing',\n actions: [\n log('Clerk [Sign In Verification]: Error determining starting factor'),\n assign({\n currentFactor: { strategy: 'password' },\n }),\n ],\n },\n },\n },\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n invoke: {\n id: 'prepare',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n resendable: context.resendable,\n params: {\n ...context.currentFactor,\n redirectUrl: `${window.location.origin}${context.basePath}${MAGIC_LINK_VERIFY_PATH_ROUTE}`,\n } as PrepareFirstFactorParams,\n }),\n onDone: {\n actions: 'resendableReset',\n target: 'Pending',\n },\n onError: {\n actions: ['setFormErrors', 'setConsoleError'],\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n 'AUTHENTICATE.PASSKEY': {\n target: 'AttemptingPasskey',\n reenter: true,\n },\n 'NAVIGATE.CHOOSE_STRATEGY': 'ChooseStrategy',\n 'NAVIGATE.FORGOT_PASSWORD': 'ChooseStrategy',\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'Init',\n states: {\n Init: {\n description: 'Marks appropriate factors as never resendable.',\n always: [\n {\n guard: 'isNeverResendable',\n target: 'NeverResendable',\n },\n {\n target: 'NotResendable',\n },\n ],\n },\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NeverResendable: {\n description: 'Handles never resendable',\n on: {\n RETRY: {\n actions: log('Never retriable'),\n },\n },\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n after: {\n 3000: {\n actions: 'validateRegisteredStrategies',\n },\n },\n },\n ChooseStrategy: {\n description: 'Handles both choose strategy and forgot password as the latter is similar in functionality',\n tags: ['state:choose-strategy', 'state:forgot-password'],\n on: {\n 'STRATEGY.UPDATE': {\n actions: assign({ currentFactor: ({ event }) => event.factor || null }),\n target: 'Preparing',\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n currentFactor: context.currentFactor as SignInFirstFactor | null,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'setConsoleError', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskey: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPasskey',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'discoverable',\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n Hist: {\n type: 'history',\n },\n },\n});\n\nexport const SignInFirstFactorMachine = SignInVerificationMachine.provide({\n actors: {\n determineStartingFactor: fromPromise(async ({ input }) => {\n const clerk = input.parent.getSnapshot().context.clerk;\n\n return Promise.resolve(\n determineStartingSignInFactor(\n clerk.client.signIn.supportedFirstFactors,\n clerk.client.signIn.identifier,\n clerk.__unstable__environment?.displayConfig.preferredSignInStrategy,\n ),\n );\n }),\n prepare: fromPromise(async ({ input }) => {\n // `input` is a union of PrepareFirstFactor and PrepareSecondFactor. Since we're passing params to\n // prepareFirstFactor, we need to assert that the input is a PrepareFirstFactor. For some reason, ESLint thinks\n // the assertion is unnecessary, and will remove it during the pre-commit hook. To prevent that, we disable the\n // rule for the line.\n\n const { params, parent, resendable } = input as PrepareFirstFactorInput;\n const clerk = parent.getSnapshot().context.clerk;\n\n // If a prepare call has already been fired recently, don't re-send\n const currentVerificationExpiration = clerk.client.signIn.firstFactorVerification.expireAt;\n const needsPrepare = resendable || !currentVerificationExpiration || currentVerificationExpiration < new Date();\n\n if (isNonPreparableStrategy(params?.strategy) || !needsPrepare) {\n return Promise.resolve(clerk.client.signIn);\n }\n\n assertIsDefined(params, 'First factor params');\n return await clerk.client.signIn.prepareFirstFactor(params);\n }),\n attempt: fromPromise(async ({ input }) => {\n const { currentFactor, fields, parent } = input as AttemptFirstFactorInput;\n\n assertIsDefined(currentFactor, 'Current factor');\n\n let attemptParams: AttemptFirstFactorParams;\n\n const strategy = currentFactor.strategy;\n const code = fields.get('code')?.value as string | undefined;\n const password = fields.get('password')?.value as string | undefined;\n\n switch (strategy) {\n case 'passkey': {\n return await parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey();\n }\n case 'password': {\n assertIsDefined(password, 'Password');\n\n attemptParams = {\n strategy,\n password,\n } satisfies PasswordAttempt;\n\n break;\n }\n case 'reset_password_phone_code':\n case 'reset_password_email_code': {\n assertIsDefined(code, 'Code for resetting phone/email');\n\n attemptParams = {\n strategy,\n code,\n password,\n } satisfies ResetPasswordPhoneCodeAttempt | ResetPasswordEmailCodeAttempt;\n\n break;\n }\n case 'phone_code':\n case 'email_code': {\n assertIsDefined(code, 'Code for phone/email');\n\n attemptParams = {\n strategy,\n code,\n } satisfies PhoneCodeAttempt | EmailCodeAttempt;\n\n break;\n }\n case 'web3_metamask_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 Metamask signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n case 'web3_coinbase_wallet_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 Coinbase Wallet signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n case 'web3_okx_wallet_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 OKX Wallet signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n default:\n throw new ClerkElementsRuntimeError(`Invalid strategy: ${strategy}`);\n }\n\n return await parent.getSnapshot().context.clerk.client.signIn.attemptFirstFactor(attemptParams);\n }),\n },\n});\n\nexport const SignInSecondFactorMachine = SignInVerificationMachine.provide({\n actors: {\n determineStartingFactor: fromPromise(async ({ input }) =>\n Promise.resolve(\n determineStartingSignInSecondFactor(\n input.parent.getSnapshot().context.clerk.client.signIn.supportedSecondFactors,\n ),\n ),\n ),\n prepare: fromPromise(async ({ input }) => {\n const { params, parent, resendable } = input as PrepareSecondFactorInput;\n const clerk = parent.getSnapshot().context.clerk;\n\n // If a prepare call has already been fired recently, don't re-send\n const currentVerificationExpiration = clerk.client.signIn.secondFactorVerification.expireAt;\n const needsPrepare = resendable || !currentVerificationExpiration || currentVerificationExpiration < new Date();\n\n assertIsDefined(params, 'Second factor params');\n\n if (params.strategy !== 'phone_code' || !needsPrepare) {\n return Promise.resolve(clerk.client.signIn);\n }\n\n return await clerk.client.signIn.prepareSecondFactor({\n strategy: params.strategy,\n phoneNumberId: params.phoneNumberId,\n });\n }),\n attempt: fromPromise(async ({ input }) => {\n const { fields, parent, currentFactor } = input as AttemptSecondFactorInput;\n\n const code = fields.get('code')?.value as string;\n\n assertIsDefined(currentFactor, 'Current factor');\n assertIsDefined(code, 'Code');\n\n return await parent.getSnapshot().context.clerk.client.signIn.attemptSecondFactor({\n strategy: currentFactor.strategy,\n code,\n });\n }),\n },\n});\n","import type { SignInStrategy } from '@clerk/types';\n\nimport type {\n SignInResetPasswordContext,\n SignInResetPasswordEvents,\n SignInStartContext,\n SignInStartEvents,\n SignInVerificationContext,\n SignInVerificationEvents,\n} from '~/internals/machines/sign-in';\nimport type {\n SignUpContinueContext,\n SignUpContinueEvents,\n SignUpStartContext,\n SignUpStartEvents,\n SignUpVerificationContext,\n SignUpVerificationEvents,\n} from '~/internals/machines/sign-up';\nimport type { ThirdPartyMachineContext, ThirdPartyMachineEvent } from '~/internals/machines/third-party';\nimport type { BaseRouterLoadingStep } from '~/internals/machines/types';\n\ntype SendToLoadingProps = {\n context:\n | SignInStartContext\n | SignInVerificationContext\n | SignInResetPasswordContext\n | ThirdPartyMachineContext\n | SignUpStartContext\n | SignUpContinueContext\n | SignUpVerificationContext;\n event:\n | SignInStartEvents\n | SignInVerificationEvents\n | SignInResetPasswordEvents\n | ThirdPartyMachineEvent\n | SignUpStartEvents\n | SignUpContinueEvents\n | SignUpVerificationEvents;\n};\n\nexport function sendToLoading({ context, event }: SendToLoadingProps): void {\n // Unrelated to the `context` of each machine, the step passed to the loading event must use BaseRouterLoadingStep\n let step: BaseRouterLoadingStep | undefined;\n let strategy: SignInStrategy | undefined;\n let action: string | undefined;\n\n // By default the loading state is set to `true` when this function is called\n // Only if these events are received, the loading state is set to `false`\n // Early return here to avoid unnecessary checks\n if (event.type.startsWith('xstate.done.') || event.type.startsWith('xstate.error.')) {\n return context.parent.send({\n type: 'LOADING',\n isLoading: false,\n step: undefined,\n strategy: undefined,\n });\n }\n\n // `context.loadingStep: \"strategy\"` is not a valid BaseRouterLoadingStep (on purpose) so needs to be handled here. This context should be used when `step` should be undefined and `strategy` be defined instead\n if (context.loadingStep === 'strategy') {\n step = undefined;\n\n // Third-party machine handling\n if (event.type === 'REDIRECT') {\n strategy = event.params.strategy;\n }\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n });\n } else if (context.loadingStep === 'continue') {\n step = 'continue';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else if (context.loadingStep === 'reset-password') {\n step = 'reset-password';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else if (context.loadingStep === 'start') {\n step = 'start';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else {\n step = context.loadingStep;\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n }\n}\n","// These utilities are ported from: packages/clerk-js/src/ui/components/SignIn/utils.ts\n// They should be functionally identical.\nimport { isWebAuthnSupported } from '@clerk/shared/webauthn';\nimport type {\n PreferredSignInStrategy,\n SignInFactor,\n SignInFirstFactor,\n SignInSecondFactor,\n SignInStrategy,\n} from '@clerk/types';\n\n// Factor sorting - https://github.com/clerk/javascript/blob/5764e2911790051589bb5c4f3b1a2c79f7f30c7e/packages/clerk-js/src/ui/utils/factorSorting.ts\nconst makeSortingOrderMap = <T extends string>(arr: T[]): Record<T, number> =>\n arr.reduce(\n (acc, k, i) => {\n acc[k] = i;\n return acc;\n },\n {} as Record<T, number>,\n );\n\nconst STRATEGY_SORT_ORDER_PASSWORD_PREF = makeSortingOrderMap([\n 'passkey',\n 'password',\n 'email_link',\n 'email_code',\n 'phone_code',\n] as SignInStrategy[]);\n\nconst STRATEGY_SORT_ORDER_OTP_PREF = makeSortingOrderMap([\n 'email_code',\n 'email_link',\n 'phone_code',\n 'passkey',\n 'password',\n] as SignInStrategy[]);\n\nconst makeSortingFunction =\n (sortingMap: Record<SignInStrategy, number>) =>\n (a: SignInFactor, b: SignInFactor): number => {\n const orderA = sortingMap[a.strategy];\n const orderB = sortingMap[b.strategy];\n if (orderA === undefined || orderB === undefined) {\n return 0;\n }\n return orderA - orderB;\n };\n\nconst passwordPrefFactorComparator = makeSortingFunction(STRATEGY_SORT_ORDER_PASSWORD_PREF);\nconst otpPrefFactorComparator = makeSortingFunction(STRATEGY_SORT_ORDER_OTP_PREF);\n\nconst findFactorForIdentifier = (i: string | null) => (f: SignInFactor) => {\n return 'safeIdentifier' in f && f.safeIdentifier === i;\n};\n\n// The algorithm can be found at\n// https://www.notion.so/clerkdev/Implement-sign-in-alt-methods-e6e60ffb644645b3a0553b50556468ce\nexport function determineStartingSignInFactor(\n firstFactors: SignInFirstFactor[] | null,\n identifier: string | null,\n preferredSignInStrategy?: PreferredSignInStrategy,\n) {\n if (!firstFactors || firstFactors.length === 0) {\n return null;\n }\n\n return preferredSignInStrategy === 'password'\n ? determineStrategyWhenPasswordIsPreferred(firstFactors, identifier)\n : determineStrategyWhenOTPIsPreferred(firstFactors, identifier);\n}\n\nfunction findPasskeyStrategy(factors: SignInFirstFactor[]) {\n if (isWebAuthnSupported()) {\n const passkeyFactor = factors.find(({ strategy }) => strategy === 'passkey');\n\n if (passkeyFactor) {\n return passkeyFactor;\n }\n }\n return null;\n}\n\nfunction determineStrategyWhenPasswordIsPreferred(factors: SignInFirstFactor[], identifier: string | null) {\n const passkeyFactor = findPasskeyStrategy(factors);\n if (passkeyFactor) {\n return passkeyFactor;\n }\n const selected = factors.sort(passwordPrefFactorComparator)[0];\n if (selected.strategy === 'password') {\n return selected;\n }\n return factors.find(findFactorForIdentifier(identifier)) || selected || null;\n}\n\nfunction determineStrategyWhenOTPIsPreferred(factors: SignInFirstFactor[], identifier: string | null) {\n const passkeyFactor = findPasskeyStrategy(factors);\n if (passkeyFactor) {\n return passkeyFactor;\n }\n\n const sortedBasedOnPrefFactor = factors.sort(otpPrefFactorComparator);\n const forIdentifier = sortedBasedOnPrefFactor.find(findFactorForIdentifier(identifier));\n if (forIdentifier) {\n return forIdentifier;\n }\n const firstBasedOnPref = sortedBasedOnPrefFactor[0];\n if (firstBasedOnPref.strategy === 'email_link') {\n return firstBasedOnPref;\n }\n return factors.find(findFactorForIdentifier(identifier)) || firstBasedOnPref || null;\n}\n\n// The priority of second factors is: TOTP -> Phone code -> any other factor\nexport function determineStartingSignInSecondFactor(secondFactors: SignInSecondFactor[] | null) {\n if (!secondFactors || secondFactors.length === 0) {\n return null;\n }\n\n const totpFactor = secondFactors.find(f => f.strategy === 'totp');\n if (totpFactor) {\n return totpFactor;\n }\n\n const phoneCodeFactor = secondFactors.find(f => f.strategy === 'phone_code');\n if (phoneCodeFactor) {\n return phoneCodeFactor;\n }\n\n return secondFactors[0];\n}\n","import type { DoneActorEvent, ErrorActorEvent, EventObject } from 'xstate';\n\nexport function assertIsDefined<T>(value: T, label?: string): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(`${label || value} is not defined`);\n }\n}\n\nexport function assertActorEventDone<T>(event: EventObject): asserts event is DoneActorEvent<T> {\n if ('output' in event === false) {\n throw new Error(`Expected a done event, got \"${event.type}\"`);\n }\n}\n\nexport function assertActorEventError<T = Error>(event: EventObject): asserts event is ErrorActorEvent<T> {\n if ('error' in event === false) {\n throw new Error(`Expected an error event, got \"${event.type}\"`);\n }\n}\n","import type { ClerkAPIResponseError } from '@clerk/shared/error';\nimport type { SignInFactor } from '@clerk/types';\nimport type { ActorRefFrom, ErrorActorEvent } from 'xstate';\n\nimport type { FormMachine } from '~/internals/machines/form';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport type SignInVerificationTags =\n | 'state:attempting'\n | 'state:choose-strategy'\n | 'state:forgot-password'\n | 'state:loading'\n | 'state:pending'\n | 'state:preparing';\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignInVerificationSubmitEvent = { type: 'SUBMIT'; action: 'submit' };\nexport type SignInVerificationFactorUpdateEvent = { type: 'STRATEGY.UPDATE'; factor: SignInFactor | undefined };\nexport type SignInVerificationRetryEvent = { type: 'RETRY' };\nexport type SignInVerificationStrategyRegisterEvent = { type: 'STRATEGY.REGISTER'; factor: SignInStrategyName };\nexport type SignInVerificationStrategyUnregisterEvent = { type: 'STRATEGY.UNREGISTER'; factor: SignInStrategyName };\n\nexport type SignInVerificationEvents =\n | ErrorActorEvent\n | SignInVerificationSubmitEvent\n | SignInVerificationFactorUpdateEvent\n | SignInVerificationRetryEvent\n | SignInVerificationStrategyRegisterEvent\n | SignInVerificationStrategyUnregisterEvent;\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport interface SignInVerificationInput {\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n basePath?: string;\n}\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport interface SignInVerificationContext {\n currentFactor: SignInFactor | null;\n error?: Error | ClerkAPIResponseError;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n loadingStep: 'verifications';\n registeredStrategies: Set<SignInStrategyName>;\n resendable: boolean;\n resendableAfter: number;\n basePath?: string;\n}\n\n// ---------------------------------- Delays ---------------------------------- //\n\nexport const SignInVerificationDelays = {\n resendableTimeout: 1_000, // 1 second\n} as const;\n\nexport type SignInVerificationDelays = keyof typeof SignInVerificationDelays;\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignInVerificationSchema {\n context: SignInVerificationContext;\n input: SignInVerificationInput;\n delays: SignInVerificationDelays;\n events: SignInVerificationEvents;\n tags: SignInVerificationTags;\n}\n","import { joinURL } from '@clerk/shared/url';\nimport { isWebAuthnAutofillSupported } from '@clerk/shared/webauthn';\nimport type { SignInStatus } from '@clerk/types';\nimport type { NonReducibleUnknown } from 'xstate';\nimport { and, assign, enqueueActions, fromPromise, log, not, or, raise, sendTo, setup } from 'xstate';\n\nimport {\n CHOOSE_SESSION_PATH_ROUTE,\n ERROR_CODES,\n ROUTING,\n SEARCH_PARAMS,\n SIGN_IN_DEFAULT_BASE_PATH,\n SIGN_UP_DEFAULT_BASE_PATH,\n SSO_CALLBACK_PATH_ROUTE,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport { ThirdPartyMachine, ThirdPartyMachineId } from '~/internals/machines/third-party';\nimport { shouldUseVirtualRouting } from '~/internals/machines/utils/next';\n\nimport { FormMachine } from '../form';\nimport { SignInResetPasswordMachine } from './reset-password.machine';\nimport type {\n SignInRouterContext,\n SignInRouterEvents,\n SignInRouterNextEvent,\n SignInRouterSchema,\n SignInRouterSessionSetActiveEvent,\n} from './router.types';\nimport { SignInStartMachine } from './start.machine';\nimport { SignInFirstFactorMachine, SignInSecondFactorMachine } from './verification.machine';\n\nexport type TSignInRouterMachine = typeof SignInRouterMachine;\n\nconst isCurrentPath =\n (path: `/${string}`) =>\n ({ context }: { context: SignInRouterContext }, _params?: NonReducibleUnknown) => {\n return context.router?.match(path) ?? false;\n };\n\nconst needsStatus =\n (status: SignInStatus) =>\n ({ context, event }: { context: SignInRouterContext; event?: SignInRouterEvents }, _?: NonReducibleUnknown) =>\n (event as SignInRouterNextEvent)?.resource?.status === status || context.clerk?.client.signIn.status === status;\n\nexport const SignInRouterMachineId = 'SignInRouter';\n\nexport const SignInRouterMachine = setup({\n actors: {\n firstFactorMachine: SignInFirstFactorMachine,\n formMachine: FormMachine,\n resetPasswordMachine: SignInResetPasswordMachine,\n startMachine: SignInStartMachine,\n secondFactorMachine: SignInSecondFactorMachine,\n thirdPartyMachine: ThirdPartyMachine,\n webAuthnAutofillSupport: fromPromise(() => isWebAuthnAutofillSupported()),\n },\n actions: {\n clearFormErrors: sendTo(({ context }) => context.formRef, { type: 'ERRORS.CLEAR' }),\n navigateInternal: ({ context }, { path, force = false }: { path: string; force?: boolean }) => {\n if (!context.router) {\n return;\n }\n if (!force && shouldUseVirtualRouting()) {\n return;\n }\n if (context.exampleMode) {\n return;\n }\n\n const resolvedPath = joinURL(context.router.basePath, path);\n if (resolvedPath === context.router.pathname()) {\n return;\n }\n\n context.router.shallowPush(resolvedPath);\n },\n navigateExternal: ({ context }, { path }: { path: string }) => context.router?.push(path),\n raiseNext: raise({ type: 'NEXT' }),\n setActive: enqueueActions(({ enqueue, check, context, event }) => {\n if (check('isExampleMode')) {\n return;\n }\n\n const id = (event as SignInRouterSessionSetActiveEvent)?.id;\n const lastActiveSessionId = context.clerk.client.lastActiveSessionId;\n const createdSessionId = ((event as SignInRouterNextEvent)?.resource || context.clerk.client.signIn)\n .createdSessionId;\n\n const session = id || createdSessionId || lastActiveSessionId || null;\n\n void context.clerk.setActive({\n session,\n redirectUrl: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n });\n\n enqueue.raise({ type: 'RESET' }, { delay: 2000 }); // Reset machine after 2s delay.\n }),\n setError: assign({\n error: (_, { error }: { error?: ClerkElementsError }) => {\n if (error) {\n return error;\n }\n return new ClerkElementsRuntimeError('Unknown error');\n },\n }),\n setFormErrors: ({ context }, params: { error: Error }) =>\n sendTo(context.formRef, {\n type: 'ERRORS.SET',\n error: params.error,\n }),\n setFormOAuthErrors: ({ context }) => {\n const errorOrig = context.clerk.client.signIn.firstFactorVerification.error;\n\n if (!errorOrig) {\n return;\n }\n\n let error: ClerkElementsError;\n\n switch (errorOrig.code) {\n case ERROR_CODES.NOT_ALLOWED_TO_SIGN_UP:\n case ERROR_CODES.OAUTH_ACCESS_DENIED:\n case ERROR_CODES.NOT_ALLOWED_ACCESS:\n case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML:\n case ERROR_CODES.USER_LOCKED:\n case ERROR_CODES.ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH:\n case ERROR_CODES.ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH:\n case ERROR_CODES.SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH:\n case ERROR_CODES.ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO:\n error = new ClerkElementsError(errorOrig.code, errorOrig.longMessage || '');\n break;\n default:\n error = new ClerkElementsError(\n 'unable_to_complete',\n 'Unable to complete action at this time. If the problem persists please contact support.',\n );\n }\n\n context.formRef.send({\n type: 'ERRORS.SET',\n error,\n });\n },\n transfer: ({ context }) => {\n const searchParams = new URLSearchParams({ __clerk_transfer: '1' });\n context.router?.push(`${context.signUpPath}?${searchParams}`);\n },\n },\n guards: {\n hasAuthenticatedViaClerkJS: ({ context }) =>\n Boolean(context.clerk.client.signIn.status === null && context.clerk.client.lastActiveSessionId),\n hasOAuthError: ({ context }) => Boolean(context.clerk?.client?.signIn?.firstFactorVerification?.error),\n hasResource: ({ context }) => Boolean(context.clerk?.client?.signIn?.status),\n hasTicket: ({ context }) => Boolean(context.ticket),\n\n isLoggedInAndSingleSession: and(['isLoggedIn', 'isSingleSessionMode', not('isExampleMode')]),\n isActivePathRoot: isCurrentPath('/'),\n isComplete: ({ context, event }) => {\n const resource = (event as SignInRouterNextEvent)?.resource;\n const signIn = context.clerk.client.signIn;\n\n return (\n (resource?.status === 'complete' && Boolean(resource?.createdSessionId)) ||\n (signIn.status === 'complete' && Boolean(signIn.createdSessionId))\n );\n },\n isLoggedIn: ({ context }) => Boolean(context.clerk?.user),\n isSingleSessionMode: ({ context }) => Boolean(context.clerk?.__unstable__environment?.authConfig.singleSessionMode),\n isExampleMode: ({ context }) => Boolean(context.exampleMode),\n\n needsStart: or([not('hasResource'), 'statusNeedsIdentifier', isCurrentPath('/')]),\n needsFirstFactor: and(['statusNeedsFirstFactor', isCurrentPath('/continue')]),\n needsSecondFactor: and(['statusNeedsSecondFactor', isCurrentPath('/continue')]),\n needsCallback: isCurrentPath(SSO_CALLBACK_PATH_ROUTE),\n needsChooseSession: isCurrentPath(CHOOSE_SESSION_PATH_ROUTE),\n needsNewPassword: and(['statusNeedsNewPassword', isCurrentPath('/new-password')]),\n\n statusNeedsIdentifier: needsStatus('needs_identifier'),\n statusNeedsFirstFactor: needsStatus('needs_first_factor'),\n statusNeedsSecondFactor: needsStatus('needs_second_factor'),\n statusNeedsNewPassword: needsStatus('needs_new_password'),\n },\n types: {} as SignInRouterSchema,\n}).createMachine({\n id: SignInRouterMachineId,\n // @ts-expect-error - Set in INIT event\n context: {},\n initial: 'Idle',\n on: {\n 'AUTHENTICATE.OAUTH': {\n actions: sendTo(ThirdPartyMachineId, ({ context, event }) => ({\n type: 'REDIRECT',\n params: {\n strategy: event.strategy,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'AUTHENTICATE.SAML': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'saml',\n identifier: context.formRef.getSnapshot().context.fields.get('identifier')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'AUTHENTICATE.ENTERPRISE_SSO': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'enterprise_sso',\n identifier: context.formRef.getSnapshot().context.fields.get('identifier')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'FORM.ATTACH': {\n description: 'Attach/re-attach the form to the router.',\n actions: enqueueActions(({ enqueue, event }) => {\n enqueue.assign({\n formRef: event.formRef,\n });\n\n // Reset the current step, to reset the form reference.\n enqueue.raise({ type: 'RESET.STEP' });\n }),\n },\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'NAVIGATE.START': '.Start',\n LOADING: {\n actions: assign(({ event }) => ({\n loading: {\n isLoading: event.isLoading,\n step: event.step,\n strategy: event.strategy,\n action: event.action,\n },\n })),\n },\n RESET: '.Idle',\n },\n states: {\n Idle: {\n invoke: {\n id: 'webAuthnAutofill',\n src: 'webAuthnAutofillSupport',\n onDone: {\n actions: assign({ webAuthnAutofillSupport: ({ event }) => event.output }),\n },\n },\n on: {\n INIT: {\n actions: assign(({ event }) => {\n const searchParams = event.router?.searchParams();\n\n return {\n clerk: event.clerk,\n exampleMode: event.exampleMode || false,\n formRef: event.formRef,\n loading: {\n isLoading: false,\n },\n router: event.router,\n signUpPath: event.signUpPath || SIGN_UP_DEFAULT_BASE_PATH,\n ticket: searchParams?.get(SEARCH_PARAMS.ticket) || undefined,\n };\n }),\n target: 'Init',\n },\n },\n },\n Init: {\n entry: enqueueActions(({ context, enqueue, self }) => {\n if (!self.getSnapshot().children[ThirdPartyMachineId]) {\n enqueue.spawnChild('thirdPartyMachine', {\n id: ThirdPartyMachineId,\n systemId: ThirdPartyMachineId,\n input: {\n basePath: context.router?.basePath ?? SIGN_IN_DEFAULT_BASE_PATH,\n flow: 'signIn',\n formRef: context.formRef,\n parent: self,\n },\n });\n }\n }),\n always: [\n {\n guard: 'needsCallback',\n target: 'Callback',\n },\n {\n guard: 'needsChooseSession',\n target: 'ChooseSession',\n },\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'isLoggedInAndSingleSession',\n actions: [\n log('Already logged in'),\n {\n type: 'navigateExternal',\n params: ({ context }) => ({\n path: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n }),\n },\n ],\n },\n {\n guard: 'needsStart',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'needsFirstFactor',\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'needsSecondFactor',\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'needsNewPassword',\n actions: { type: 'navigateInternal', params: { force: true, path: '/reset-password' } },\n target: 'ResetPassword',\n },\n {\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'hasTicket',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n ],\n },\n Start: {\n tags: ['step:start'],\n exit: 'clearFormErrors',\n invoke: {\n id: 'start',\n src: 'startMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n ticket: context.ticket,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'Start',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'AUTHENTICATE.PASSKEY.AUTOFILL': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'AUTHENTICATE.WEB3': {\n actions: sendTo('start', ({ event }) => event),\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n },\n },\n FirstFactor: {\n tags: ['step:first-factor', 'step:verifications'],\n invoke: {\n id: 'firstFactor',\n src: 'firstFactorMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n basePath: context.router?.basePath,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'AUTHENTICATE.PASSKEY': {\n actions: sendTo('firstFactor', ({ event }) => event),\n },\n 'RESET.STEP': {\n target: 'FirstFactor',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n 'STRATEGY.UPDATE': {\n description: 'Send event to verification machine to update the current strategy.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: '.Idle',\n },\n },\n initial: 'Idle',\n states: {\n Idle: {\n on: {\n 'NAVIGATE.FORGOT_PASSWORD': {\n description: 'Navigate to forgot password screen.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: 'ForgotPassword',\n },\n 'NAVIGATE.CHOOSE_STRATEGY': {\n description: 'Navigate to choose strategy screen.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: 'ChoosingStrategy',\n },\n },\n },\n ChoosingStrategy: {\n tags: ['step:choose-strategy'],\n on: {\n 'NAVIGATE.PREVIOUS': {\n description: 'Go to Idle, and also tell firstFactor to go to Pending',\n target: 'Idle',\n actions: sendTo('firstFactor', { type: 'NAVIGATE.PREVIOUS' }),\n },\n },\n },\n ForgotPassword: {\n tags: ['step:forgot-password'],\n on: {\n 'NAVIGATE.PREVIOUS': 'Idle',\n },\n },\n },\n },\n SecondFactor: {\n tags: ['step:second-factor', 'step:verifications'],\n invoke: {\n id: 'secondFactor',\n src: 'secondFactorMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'SecondFactor',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n 'STRATEGY.UPDATE': {\n description: 'Send event to verification machine to update the current strategy.',\n actions: sendTo('secondFactor', ({ event }) => event),\n target: '.Idle',\n },\n },\n initial: 'Idle',\n states: {\n Idle: {\n on: {\n 'NAVIGATE.CHOOSE_STRATEGY': {\n description: 'Navigate to choose strategy screen.',\n actions: sendTo('secondFactor', ({ event }) => event),\n target: 'ChoosingStrategy',\n },\n },\n },\n ChoosingStrategy: {\n tags: ['step:choose-strategy'],\n on: {\n 'NAVIGATE.PREVIOUS': {\n description: 'Go to Idle, and also tell firstFactor to go to Pending',\n target: 'Idle',\n actions: sendTo('secondFactor', { type: 'NAVIGATE.PREVIOUS' }),\n },\n },\n },\n },\n },\n ResetPassword: {\n tags: ['step:reset-password'],\n invoke: {\n id: 'resetPassword',\n src: 'resetPasswordMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'ResetPassword',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n ],\n },\n },\n Callback: {\n tags: ['step:callback'],\n entry: sendTo(ThirdPartyMachineId, { type: 'CALLBACK' }),\n on: {\n NEXT: [\n {\n guard: 'hasOAuthError',\n actions: ['setFormOAuthErrors', { type: 'navigateInternal', params: { force: true, path: '/' } }],\n target: 'Start',\n },\n {\n guard: or(['isLoggedIn', 'isComplete', 'hasAuthenticatedViaClerkJS']),\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsIdentifier',\n actions: 'transfer',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n },\n },\n ChooseSession: {\n tags: ['step:choose-session'],\n on: {\n 'SESSION.SET_ACTIVE': {\n actions: {\n type: 'setActive',\n params: ({ event }) => ({ id: event.id }),\n },\n },\n },\n },\n Error: {\n tags: ['step:error'],\n on: {\n NEXT: {\n target: 'Start',\n actions: 'clearFormErrors',\n },\n },\n },\n Hist: {\n type: 'history',\n exit: 'clearFormErrors',\n },\n },\n});\n","import type {\n AuthenticateWithRedirectParams,\n HandleOAuthCallbackParams,\n HandleSamlCallbackParams,\n LoadedClerk,\n} from '@clerk/types';\nimport type { SetOptional } from 'type-fest';\nimport type { AnyActorRef, AnyEventObject } from 'xstate';\nimport { fromCallback, fromPromise } from 'xstate';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { WithParams, WithUnsafeMetadata } from '~/internals/machines/shared';\nimport { ClerkJSNavigationEvent, isClerkJSNavigationEvent } from '~/internals/machines/utils/clerkjs';\n\ntype OptionalRedirectParams = 'redirectUrl' | 'redirectUrlComplete';\n\nexport type AuthenticateWithRedirectSignInParams = SetOptional<AuthenticateWithRedirectParams, OptionalRedirectParams>;\nexport type AuthenticateWithRedirectSignUpParams = SetOptional<\n WithUnsafeMetadata<AuthenticateWithRedirectParams>,\n OptionalRedirectParams\n>;\n\nexport type AuthenticateWithRedirectInput = (\n | (WithParams<AuthenticateWithRedirectSignInParams> & { flow: 'signIn' })\n | (WithParams<AuthenticateWithRedirectSignUpParams> & { flow: 'signUp' })\n) & { basePath: string; parent: AnyActorRef }; // TODO: Fix circular dependency\n\nexport const redirect = fromPromise<void, AuthenticateWithRedirectInput>(\n async ({ input: { flow, params, parent } }) => {\n const clerk: LoadedClerk = parent.getSnapshot().context.clerk;\n\n return clerk.client[flow].authenticateWithRedirect({\n redirectUrl: clerk.buildUrlWithAuth(params.redirectUrl || '/'),\n redirectUrlComplete: clerk.buildUrlWithAuth(params.redirectUrlComplete || '/'),\n ...params,\n });\n },\n);\n\nexport type HandleRedirectCallbackParams<T = Required<HandleOAuthCallbackParams | HandleSamlCallbackParams>> = {\n [K in keyof T]: NonNullable<T[K]>;\n};\n\nexport type HandleRedirectCallbackInput = AnyActorRef;\n\n/**\n * This function hijacks handleRedirectCallback from ClerkJS to handle navigation events\n * from the state machine.\n */\nexport const handleRedirectCallback = fromCallback<AnyEventObject, HandleRedirectCallbackInput>(\n ({ sendBack, input: parent }) => {\n const clerk: LoadedClerk = parent.getSnapshot().context.clerk;\n const displayConfig = clerk.__unstable__environment?.displayConfig;\n\n const customNavigate = (toEvt: string) => {\n const to = toEvt.split('/').slice(-1)[0];\n\n if (isClerkJSNavigationEvent(to)) {\n // Handle known redefined navigation events\n sendBack({ type: to });\n } else if (to === displayConfig?.signInUrl) {\n // Handle known non-redefined sign-in navigation events\n sendBack({ type: ClerkJSNavigationEvent.signIn });\n } else if (to === displayConfig?.signUpUrl) {\n // Handle known non-redefined sign-up navigation events\n sendBack({ type: ClerkJSNavigationEvent.signUp });\n } else {\n // Handle unknown navigation events\n sendBack({ type: 'FAILURE', error: new ClerkElementsRuntimeError(`Unknown navigation event: ${to}`) });\n }\n\n return Promise.resolve();\n };\n\n // @ts-expect-error - Clerk types are incomplete\n // TODO: Update local Clerk types\n const loadedClerk = (clerk.clerkjs ?? clerk) as LoadedClerk;\n\n void loadedClerk.handleRedirectCallback(\n {\n continueSignUpUrl: ClerkJSNavigationEvent.continue,\n firstFactorUrl: ClerkJSNavigationEvent.signIn,\n resetPasswordUrl: ClerkJSNavigationEvent.resetPassword,\n secondFactorUrl: ClerkJSNavigationEvent.signIn,\n verifyEmailAddressUrl: ClerkJSNavigationEvent.verification,\n verifyPhoneNumberUrl: ClerkJSNavigationEvent.verification,\n signUpUrl: ClerkJSNavigationEvent.signUp,\n signInUrl: ClerkJSNavigationEvent.signIn,\n } satisfies HandleOAuthCallbackParams,\n customNavigate,\n );\n\n return () => void 0;\n },\n);\n","import type { Simplify } from 'type-fest';\n\n// ================= Types ================= //\n\nexport type ClerkJSEventCategory = 'NAVIGATE';\nexport type ClerkJSEvent<T extends ClerkJSEventCategory = ClerkJSEventCategory> = `CLERKJS.${T}.${string}`;\nexport type ClerkJSEventObject<T extends ClerkJSEventCategory = ClerkJSEventCategory> = Simplify<\n Record<string, ClerkJSEvent<T>>\n>;\nexport type ClerkJSEventExtractCategory<S extends string> = S extends `CLERKJS.${infer T}.${string}` ? T : never;\n\n// ================= Type Narrowing ================= //\n\nexport function isClerkJSEvent<T extends ClerkJSEventObject<ClerkJSEventExtractCategory<E>>, E extends ClerkJSEvent>(\n eventObj: T,\n event: E,\n): event is typeof event {\n return Object.values(eventObj).includes(event as any);\n}\n\n// ================= ClerkJSNavigationEvent ================= //\n\nexport type ClerkJSNavigationEvent = (typeof ClerkJSNavigationEvent)[keyof typeof ClerkJSNavigationEvent];\nexport const ClerkJSNavigationEvent: ClerkJSEventObject<'NAVIGATE'> = {\n complete: 'CLERKJS.NAVIGATE.COMPLETE',\n signUp: 'CLERKJS.NAVIGATE.SIGN_UP',\n continue: 'CLERKJS.NAVIGATE.CONTINUE',\n generic: 'CLERKJS.NAVIGATE.GENERIC',\n resetPassword: 'CLERKJS.NAVIGATE.RESET_PASSWORD',\n signIn: 'CLERKJS.NAVIGATE.SIGN_IN',\n verification: 'CLERKJS.NAVIGATE.VERIFICATION',\n} as const;\n\nexport function isClerkJSNavigationEvent(event: unknown): event is ClerkJSNavigationEvent {\n return isClerkJSEvent(ClerkJSNavigationEvent, event as ClerkJSEvent<'NAVIGATE'>);\n}\n","import { assertEvent, assign, log, not, sendTo, setup } from 'xstate';\n\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport { handleRedirectCallback, redirect } from './third-party.actors';\nimport type { ThirdPartyMachineSchema } from './third-party.types';\n\nexport const ThirdPartyMachineId = 'ThirdParty';\n\nexport type TThirdPartyMachine = typeof ThirdPartyMachine;\n\nexport const ThirdPartyMachine = setup({\n actors: {\n handleRedirectCallback,\n redirect,\n },\n actions: {\n logError: log(({ event }) => `Error: ${event.type}`),\n assignActiveStrategy: assign({\n activeStrategy: ({ event }) => {\n assertEvent(event, 'REDIRECT');\n return event.params.strategy;\n },\n }),\n unassignActiveStrategy: assign({\n activeStrategy: null,\n }),\n sendToNext: ({ context }) => context.parent.send({ type: 'NEXT' }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as ThirdPartyMachineSchema,\n}).createMachine({\n id: ThirdPartyMachineId,\n context: ({ input }) => ({\n activeStrategy: null,\n basePath: input.basePath,\n formRef: input.formRef,\n flow: input.flow,\n parent: input.parent,\n loadingStep: 'strategy',\n }),\n initial: 'Idle',\n states: {\n Idle: {\n description: 'Sets third-party providers if not already set, and waits for a redirect or callback event',\n on: {\n CALLBACK: 'HandlingCallback',\n REDIRECT: {\n guard: not('isExampleMode'),\n target: 'Redirecting',\n reenter: true,\n },\n },\n },\n Redirecting: {\n description: 'Redirects to the third-party provider for authentication',\n tags: ['state:redirect', 'state:loading'],\n entry: ['assignActiveStrategy', 'sendToLoading'],\n exit: ['unassignActiveStrategy', 'sendToLoading'],\n invoke: {\n id: 'redirect',\n src: 'redirect',\n input: ({ context, event }) => {\n assertEvent(event, 'REDIRECT');\n\n const legalAcceptedField = context.formRef.getSnapshot().context.fields.get('legalAccepted')?.checked;\n\n return {\n basePath: context.basePath,\n flow: context.flow,\n params: {\n ...event.params,\n legalAccepted: legalAcceptedField || undefined,\n },\n parent: context.parent,\n };\n },\n onError: {\n actions: 'setFormErrors',\n target: 'Idle',\n },\n },\n },\n HandlingCallback: {\n description: 'Handles the callback from the third-party provider',\n tags: ['state:callback', 'state:loading'],\n invoke: {\n id: 'handleRedirectCallback',\n src: 'handleRedirectCallback',\n input: ({ context }) => context.parent,\n onError: {\n actions: ['logError', 'setFormErrors'],\n target: 'Idle',\n },\n },\n on: {\n 'CLERKJS.NAVIGATE.*': {\n actions: 'sendToNext',\n target: 'Idle',\n },\n },\n },\n },\n});\n","import { NEXT_WINDOW_HISTORY_SUPPORT_VERSION } from '~/internals/constants';\n\nexport function shouldUseVirtualRouting() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!window.next) {\n return false;\n }\n\n return window.next.version < NEXT_WINDOW_HISTORY_SUPPORT_VERSION;\n}\n","import type { SignInResource } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { fromPromise, sendTo, setup } from 'xstate';\n\nimport type { FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInResetPasswordSchema } from './reset-password.types';\nimport type { SignInRouterMachineActorRef } from './router.types';\n\nexport type TSignInResetPasswordMachine = typeof SignInResetPasswordMachine;\n\nexport const SignInResetPasswordMachineId = 'SignInResetPasswordMachine';\n\nexport const SignInResetPasswordMachine = setup({\n actors: {\n attempt: fromPromise<SignInResource, { parent: SignInRouterMachineActorRef; fields: FormFields }>(\n ({ input: { fields, parent } }) => {\n const password = (fields.get('password')?.value as string) || '';\n const signOutOfOtherSessions = fields.get('signOutOfOtherSessions')?.checked || false;\n return parent.getSnapshot().context.clerk.client.signIn.resetPassword({ password, signOutOfOtherSessions });\n },\n ),\n },\n actions: {\n sendToLoading,\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignInResource>).output }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n types: {} as SignInResetPasswordSchema,\n}).createMachine({\n id: SignInResetPasswordMachineId,\n context: ({ input }) => ({\n loadingStep: 'reset-password',\n parent: input.parent,\n formRef: input.formRef,\n }),\n initial: 'Pending',\n states: {\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import type { SignInResource, Web3Strategy } from '@clerk/types';\nimport { assertEvent, enqueueActions, fromPromise, not, sendTo, setup } from 'xstate';\n\nimport { SIGN_IN_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignInStartSchema } from './start.types';\n\nconst DISABLEABLE_FIELDS = ['emailAddress', 'phoneNumber'] as const;\n\nexport type TSignInStartMachine = typeof SignInStartMachine;\n\nexport const SignInStartMachineId = 'SignInStart';\n\ntype AttemptParams = { strategy: 'ticket'; ticket: string } | { strategy?: never; ticket?: never };\n\nexport const SignInStartMachine = setup({\n actors: {\n attemptPasskey: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; flow: 'autofill' | 'discoverable' | undefined }\n >(({ input: { parent, flow } }) => {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey({\n flow,\n });\n }),\n attemptWeb3: fromPromise<SignInResource, { parent: SignInRouterMachineActorRef; strategy: Web3Strategy }>(\n ({ input: { parent, strategy } }) => {\n if (strategy === 'web3_metamask_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithMetamask();\n }\n if (strategy === 'web3_coinbase_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithCoinbaseWallet();\n }\n if (strategy === 'web3_okx_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithOKXWallet();\n }\n throw new ClerkElementsRuntimeError(`Unsupported Web3 strategy: ${strategy}`);\n },\n ),\n attempt: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; fields: FormFields; params?: AttemptParams }\n >(({ input: { fields, parent, params } }) => {\n const clerk = parent.getSnapshot().context.clerk;\n\n const password = fields.get('password');\n const identifier = fields.get('identifier');\n\n const passwordParams = password?.value\n ? {\n password: password.value,\n strategy: 'password',\n }\n : {};\n\n return clerk.client.signIn.create({\n ...passwordParams,\n ...(params?.ticket\n ? params\n : {\n identifier: (identifier?.value as string) ?? '',\n }),\n });\n }),\n },\n actions: {\n sendToNext: ({ context, event }) => {\n // @ts-expect-error -- We're calling this in onDone, and event.output exists on the actor done event\n return context.parent.send({ type: 'NEXT', resource: event?.output });\n },\n sendToLoading,\n setFormDisabledTicketFields: enqueueActions(({ context, enqueue }) => {\n if (!context.ticket) {\n return;\n }\n\n const currentFields = context.formRef.getSnapshot().context.fields;\n\n for (const name of DISABLEABLE_FIELDS) {\n if (currentFields.has(name)) {\n enqueue.sendTo(context.formRef, { type: 'FIELD.DISABLE', field: { name } });\n }\n }\n }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n hasTicket: ({ context }) => Boolean(context.ticket),\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as SignInStartSchema,\n}).createMachine({\n id: SignInStartMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_IN_DEFAULT_BASE_PATH,\n parent: input.parent,\n formRef: input.formRef,\n loadingStep: 'start',\n ticket: input.ticket,\n }),\n initial: 'Init',\n states: {\n Init: {\n description: 'Handle ticket, if present; Else, default to Pending state.',\n always: [\n {\n guard: 'hasTicket',\n target: 'Attempting',\n },\n {\n target: 'Pending',\n },\n ],\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskey',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY.AUTOFILL': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskeyAutoFill',\n reenter: false,\n },\n 'AUTHENTICATE.WEB3': {\n guard: not('isExampleMode'),\n target: 'AttemptingWeb3',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => {\n // Standard fields\n const defaultParams = {\n fields: context.formRef.getSnapshot().context.fields,\n parent: context.parent,\n };\n\n // Handle ticket-specific flows\n const params: AttemptParams = context.ticket\n ? {\n strategy: 'ticket',\n ticket: context.ticket,\n }\n : {};\n\n return { ...defaultParams, params };\n },\n onDone: {\n actions: ['setFormDisabledTicketFields', 'sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormDisabledTicketFields', 'setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskey: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPasskey',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'discoverable',\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskeyAutoFill: {\n on: {\n 'AUTHENTICATE.PASSKEY': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskey',\n reenter: true,\n },\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n },\n invoke: {\n id: 'attemptPasskeyAutofill',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'autofill',\n }),\n onDone: {\n actions: ['sendToNext'],\n },\n onError: {\n actions: ['setFormErrors'],\n target: 'Pending',\n },\n },\n },\n AttemptingWeb3: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptWeb3',\n src: 'attemptWeb3',\n input: ({ context, event }) => {\n assertEvent(event, 'AUTHENTICATE.WEB3');\n return {\n parent: context.parent,\n strategy: event.strategy,\n };\n },\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import { titleize } from '@clerk/shared/underscore';\n\n// TODO: ideally the derivation of these values lives in FAPI and comes back directly from the API\n\nexport function formatName(...args: (string | undefined)[]): string | undefined {\n switch (args.length) {\n case 0:\n return undefined;\n case 1:\n return titleize(args[0]);\n default:\n return args.filter(Boolean).map(titleize).join(' ');\n }\n}\n\nexport function formatSalutation({\n firstName,\n lastName,\n identifier,\n}: {\n firstName: string | undefined;\n lastName: string | undefined;\n identifier: string | undefined | null;\n}): string {\n return (firstName && formatName(firstName)) || (lastName && formatName(lastName)) || identifier || '';\n}\n","import type { SignInStrategyName } from '~/internals/machines/shared';\nimport { formatSalutation } from '~/internals/machines/utils/formatters';\n\nimport type { SignInRouterSnapshot } from './router.types';\n\nexport function SignInSafeIdentifierSelectorForStrategy(\n strategy: SignInStrategyName | undefined,\n): (s: SignInRouterSnapshot) => string {\n return (s: SignInRouterSnapshot) => {\n const signIn = s.context.clerk?.client.signIn;\n\n if (strategy) {\n const matchingFactors = [\n ...(signIn.supportedFirstFactors ?? []),\n ...(signIn.supportedSecondFactors ?? []),\n ].filter(f => f.strategy === strategy);\n\n const matchingFactorForIdentifier =\n signIn.identifier && matchingFactors.length > 0\n ? matchingFactors.find(f => 'safeIdentifier' in f && f.safeIdentifier === signIn.identifier)\n : null;\n\n const matchingFactorForStrategy = matchingFactors[0];\n\n if (matchingFactorForIdentifier && 'safeIdentifier' in matchingFactorForIdentifier) {\n return matchingFactorForIdentifier.safeIdentifier;\n }\n\n if (matchingFactorForStrategy && 'safeIdentifier' in matchingFactorForStrategy) {\n return matchingFactorForStrategy.safeIdentifier;\n }\n }\n\n return signIn.identifier || '';\n };\n}\n\nexport function SignInSalutationSelector(s: SignInRouterSnapshot): string {\n const signIn = s.context.clerk?.client.signIn;\n\n return formatSalutation({\n firstName: signIn?.userData?.firstName,\n identifier: signIn?.identifier,\n lastName: signIn?.userData?.lastName,\n });\n}\n","import type { SignInResource } from '@clerk/types';\nimport type { ActorRefFrom, MachineSnapshot, StateMachine } from 'xstate';\n\nimport type { TFormMachine } from '~/internals/machines/form';\nimport type {\n BaseRouterContext,\n BaseRouterErrorEvent,\n BaseRouterFormAttachEvent,\n BaseRouterInput,\n BaseRouterLoadingEvent,\n BaseRouterNextEvent,\n BaseRouterPrevEvent,\n BaseRouterRedirectEvent,\n BaseRouterResetEvent,\n BaseRouterResetStepEvent,\n BaseRouterSetClerkEvent,\n BaseRouterStartEvent,\n BaseRouterTransferEvent,\n} from '~/internals/machines/types';\n\nimport type { SignInVerificationFactorUpdateEvent } from './verification.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport const SignInRouterSteps = {\n start: 'step:start',\n verifications: 'step:verifications',\n firstFactor: 'step:first-factor',\n secondFactor: 'step:second-factor',\n callback: 'step:callback',\n error: 'step:error',\n forgotPassword: 'step:forgot-password',\n resetPassword: 'step:reset-password',\n chooseSession: 'step:choose-session',\n chooseStrategy: 'step:choose-strategy',\n} as const;\n\nexport type SignInRouterSteps = keyof typeof SignInRouterSteps;\nexport type SignInRouterTags = (typeof SignInRouterSteps)[keyof typeof SignInRouterSteps];\n\n// ---------------------------------- Children ---------------------------------- //\n\nexport const SignInRouterSystemId = {\n start: 'start',\n firstFactor: 'firstFactor',\n secondFactor: 'secondFactor',\n resetPassword: 'resetPassword',\n} as const;\n\nexport type SignInRouterSystemId = keyof typeof SignInRouterSystemId;\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignInRouterFormAttachEvent = BaseRouterFormAttachEvent;\nexport type SignInRouterNextEvent = BaseRouterNextEvent<SignInResource>;\nexport type SignInRouterStartEvent = BaseRouterStartEvent;\nexport type SignInRouterPrevEvent = BaseRouterPrevEvent;\nexport type SignInRouterChooseStrategyEvent = { type: 'NAVIGATE.CHOOSE_STRATEGY' };\nexport type SignInRouterForgotPasswordEvent = { type: 'NAVIGATE.FORGOT_PASSWORD' };\nexport type SignInRouterErrorEvent = BaseRouterErrorEvent;\nexport type SignInRouterTransferEvent = BaseRouterTransferEvent;\nexport type SignInRouterRedirectEvent = BaseRouterRedirectEvent;\nexport type SignInRouterResetEvent = BaseRouterResetEvent;\nexport type SignInRouterResetStepEvent = BaseRouterResetStepEvent;\nexport type SignInRouterLoadingEvent = BaseRouterLoadingEvent<\n 'start' | 'verifications' | 'reset-password' | 'forgot-password' | 'choose-strategy'\n>;\nexport type SignInRouterSetClerkEvent = BaseRouterSetClerkEvent;\nexport type SignInRouterSubmitEvent = { type: 'SUBMIT' };\nexport type SignInRouterPasskeyEvent = { type: 'AUTHENTICATE.PASSKEY' };\nexport type SignInRouterPasskeyAutofillEvent = {\n type: 'AUTHENTICATE.PASSKEY.AUTOFILL';\n};\nexport type SignInRouterSessionSetActiveEvent = { type: 'SESSION.SET_ACTIVE'; id: string };\n\nexport interface SignInRouterInitEvent extends BaseRouterInput {\n type: 'INIT';\n formRef: ActorRefFrom<TFormMachine>;\n signUpPath?: string;\n}\n\nexport type SignInRouterNavigationEvents =\n | SignInRouterStartEvent\n | SignInRouterChooseStrategyEvent\n | SignInRouterForgotPasswordEvent\n | SignInRouterPrevEvent;\n\nexport type SignInRouterEvents =\n | SignInRouterFormAttachEvent\n | SignInRouterInitEvent\n | SignInRouterNextEvent\n | SignInRouterNavigationEvents\n | SignInRouterErrorEvent\n | SignInRouterTransferEvent\n | SignInRouterRedirectEvent\n | SignInRouterResetEvent\n | SignInRouterResetStepEvent\n | SignInVerificationFactorUpdateEvent\n | SignInRouterLoadingEvent\n | SignInRouterSessionSetActiveEvent\n | SignInRouterSetClerkEvent\n | SignInRouterSubmitEvent\n | SignInRouterPasskeyEvent\n | SignInRouterPasskeyAutofillEvent;\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport type SignInRouterLoadingContext = Omit<SignInRouterLoadingEvent, 'type'>;\n\nexport interface SignInRouterContext extends BaseRouterContext {\n formRef: ActorRefFrom<TFormMachine>;\n loading: SignInRouterLoadingContext;\n signUpPath: string;\n webAuthnAutofillSupport: boolean;\n ticket: string | undefined;\n}\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport type SignInRouterInput = object;\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignInRouterSchema {\n context: SignInRouterContext;\n events: SignInRouterEvents;\n tags: SignInRouterTags;\n}\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport type SignInRouterChildren = any; // TODO: Update\nexport type SignInRouterOuptut = any; // TODO: Update\nexport type SignInRouterStateValue = any; // TODO: Update\n\nexport type SignInRouterSnapshot = MachineSnapshot<\n SignInRouterContext,\n SignInRouterEvents,\n SignInRouterChildren,\n SignInRouterStateValue,\n SignInRouterTags,\n SignInRouterOuptut,\n any, // TMeta - Introduced in XState 5.12.x\n any // TConfig - Required in newer XState versions\n>;\n\n// ---------------------------------- Machine Type ---------------------------------- //\n\nexport type TSignInRouterParentMachine = StateMachine<\n SignInRouterContext, // context\n SignInRouterEvents, // event\n SignInRouterChildren, // children\n any, // actor\n any, // action\n any, // guard\n any, // delay\n any, // state value\n string, // tag\n any, // input\n SignInRouterOuptut, // output\n any, // emitted\n any, // meta\n any // config\n>;\n\n// ---------------------------------- Machine Actor Ref ---------------------------------- //\n\nexport type SignInRouterMachineActorRef = ActorRefFrom<TSignInRouterParentMachine>;\n","export { Route, Router, useClerkRouter, ClerkHostRouterContext } from '@clerk/shared/router';\nexport { useVirtualRouter } from './virtual';\nexport { useNextRouter } from './next';\n","'use client';\n\nimport type { ClerkHostRouter } from '@clerk/shared/router';\nimport { useSyncExternalStore } from 'react';\n\nconst DUMMY_ORIGIN = 'https://clerk.dummy';\n\n// TODO: introduce history stack?\nclass VirtualRouter implements ClerkHostRouter {\n readonly name = 'VirtualRouter';\n readonly mode = 'virtual';\n\n #url: URL;\n #listeners: Set<(url: URL) => void> = new Set();\n\n constructor(path?: string) {\n const origin = typeof window === 'undefined' ? DUMMY_ORIGIN : window.location.origin;\n\n this.#url = new URL(path ?? '/', origin);\n }\n\n push(path: string) {\n const newUrl = new URL(this.#url.toString());\n newUrl.pathname = path;\n\n this.#url = newUrl;\n this.emit();\n }\n\n replace(path: string) {\n this.push(path);\n }\n\n shallowPush(path: string) {\n this.push(path);\n }\n\n pathname() {\n return this.#url.pathname;\n }\n\n searchParams() {\n return this.#url.searchParams;\n }\n\n subscribe(listener: () => void) {\n this.#listeners.add(listener);\n\n return () => this.#listeners.delete(listener);\n }\n\n emit() {\n this.#listeners.forEach(listener => listener(this.#url));\n }\n\n getSnapshot() {\n return this.#url;\n }\n}\n\nconst virtualRouter = new VirtualRouter('/');\n\nexport const useVirtualRouter = (): ClerkHostRouter => {\n const url = useSyncExternalStore(\n virtualRouter.subscribe.bind(virtualRouter),\n virtualRouter.getSnapshot.bind(virtualRouter),\n );\n\n return {\n mode: virtualRouter.mode,\n name: virtualRouter.name,\n pathname: () => url.pathname,\n push: virtualRouter.push.bind(virtualRouter),\n replace: virtualRouter.replace.bind(virtualRouter),\n searchParams: () => url.searchParams,\n shallowPush: virtualRouter.shallowPush.bind(virtualRouter),\n };\n};\n","import type { ClerkHostRouter } from '@clerk/types';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\n\nimport { NEXT_WINDOW_HISTORY_SUPPORT_VERSION } from '~/internals/constants';\n\nimport { usePathnameWithoutCatchAll } from '../utils/path-inference/next';\n\n/**\n * Clerk Elements router integration with Next.js's router.\n */\nexport const useNextRouter = (): ClerkHostRouter => {\n const router = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const inferredBasePath = usePathnameWithoutCatchAll();\n\n // The window.history APIs seem to prevent Next.js from triggering a full page re-render, allowing us to\n // preserve internal state between steps.\n const canUseWindowHistoryAPIs =\n typeof window !== 'undefined' && window.next && window.next.version >= NEXT_WINDOW_HISTORY_SUPPORT_VERSION;\n\n return {\n mode: 'path',\n name: 'NextRouter',\n push: (path: string) => router.push(path),\n replace: (path: string) =>\n canUseWindowHistoryAPIs ? window.history.replaceState(null, '', path) : router.replace(path),\n shallowPush: (path: string) =>\n canUseWindowHistoryAPIs ? window.history.pushState(null, '', path) : router.push(path, {}),\n pathname: () => pathname,\n searchParams: () => searchParams,\n inferredBasePath: () => inferredBasePath,\n };\n};\n","import { useRouter } from 'next/compat/router';\nimport { useParams, usePathname } from 'next/navigation';\nimport React from 'react';\n\nimport { removeOptionalCatchAllSegment } from './utils';\n\n// Adapted from packages/nextjs/src/client-boundary/hooks/usePathnameWithoutCatchAll.tsx\n\n/**\n * This hook grabs the current pathname (both in pages and app router) and removes any (optional) catch all segments.\n * @example\n * 1. /user/[id]/profile/[[...rest]]/page.tsx\n * 2. /user/123/profile/security\n * 3. /user/123/profile\n * @returns The pathname without any catch all segments\n */\nexport const usePathnameWithoutCatchAll = () => {\n const pathRef = React.useRef<string>();\n\n /**\n * The compat version of useRouter returns null instead of throwing an error when used inside App router.\n * Use it to detect if the component is used inside pages or app router\n */\n const pagesRouter = useRouter();\n\n if (pagesRouter) {\n if (pathRef.current) {\n return pathRef.current;\n } else {\n // The optional catch all route is included in the pathname in pages router. It starts with [[... and we can just remove it\n pathRef.current = removeOptionalCatchAllSegment(pagesRouter.pathname);\n return pathRef.current;\n }\n }\n\n /**\n * Get the pathname that includes any named or catch all params.\n * @example\n * /user/[id]/profile/[[...rest]]/page.tsx\n *\n * This filesystem route could give us the following pathname:\n * /user/123/profile/security\n * if the user navigates to the security section of the user profile\n */\n const pathname = usePathname() || '';\n const pathParts = pathname.split('/').filter(Boolean);\n /**\n * For /user/[id]/profile/[[...rest]]/page.tsx useParams will return { id: '123', rest: ['security'] }.\n * So catch all params are always arrays\n */\n const catchAllParams = Object.values(useParams() || {})\n .filter(v => Array.isArray(v))\n .flat(Infinity);\n if (pathRef.current) {\n return pathRef.current;\n } else {\n // /user/123/profile/security should be transformed to /user/123/profile\n pathRef.current = `/${pathParts.slice(0, pathParts.length - catchAllParams.length).join('/')}`;\n return pathRef.current;\n }\n};\n","export function removeOptionalCatchAllSegment(pathname: string) {\n return pathname.replace(/\\/\\[\\[\\.\\.\\..*/, '');\n}\n","import { useSelector as useSelectorUnbound } from '@xstate/react';\nimport * as React from 'react';\nimport type { ActorRefFrom, AnyActorRef, AnyStateMachine, SnapshotFrom } from 'xstate';\n\n/**\n * Creates a context and hooks for a given actor ref.\n\n * @example\n * const SignInRouterCtx = createContextFromActorRef<typeof SignInRouterMachine>('SignInRouterCtx')\n *\n * const Parent = () => {\n * const ref = useActorRef(SignInRouterMachine, { input: { basePath: '/sign-in' } });\n *\n * return (\n * <SignInRouterCtx.Provider ref={ref}>\n * <Child />\n * </SignInRouterCtx>\n * )\n * }\n *\n * const Child = () => {\n * const ref = SignInRouterCtx.useActorRef();\n * const status = SignInRouterCtx.useSelector(state => state.context.clerk);\n\n * const handleClick = useCallback(() => ref.send({ type: 'NEXT' }), [ref]);\n *\n * return <button onClick={handleClick}>;\n * }\n */\n\nexport function createContextFromActorRef<TMachine extends AnyStateMachine, TRef = ActorRefFrom<TMachine>>(\n displayName: string,\n) {\n const ReactContext = React.createContext<TRef | null>(null);\n const OriginalProvider = ReactContext.Provider;\n\n function Provider({ children, actorRef }: { children: React.ReactNode; actorRef: TRef }) {\n return React.createElement(\n OriginalProvider,\n {\n value: actorRef,\n },\n children,\n );\n }\n\n Provider.displayName = displayName;\n\n function useContext(allowMissingActor?: false | undefined): TRef;\n function useContext(allowMissingActor: true): TRef | null;\n function useContext(allowMissingActor: boolean = false): TRef | null {\n const actorRef = React.useContext(ReactContext);\n\n if (!allowMissingActor && !actorRef) {\n throw new Error(\n `You used a hook from \"${Provider.displayName}\" but it's not inside a <${Provider.displayName}.Provider> component.`,\n );\n }\n\n return actorRef;\n }\n\n function useSelector<T>(selector: (snapshot: SnapshotFrom<TRef>) => T, compare?: (a: T, b: T) => boolean): T {\n const actor = useContext();\n return useSelectorUnbound(actor as AnyActorRef, selector, compare);\n }\n\n return {\n Provider,\n useActorRef: useContext,\n useSelector,\n };\n}\n","import type { ActorRefFrom, AnyActorRef, AnyStateMachine, SnapshotFrom } from 'xstate';\n\nimport type {\n TSignInFirstFactorMachine,\n TSignInResetPasswordMachine,\n TSignInRouterMachine,\n TSignInSecondFactorMachine,\n TSignInStartMachine,\n} from '~/internals/machines/sign-in';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SnapshotState = SnapshotFrom<TSignInRouterMachine>;\n\nexport const SignInRouterCtx: ReturnType<typeof createContextFromActorRef<TSignInRouterMachine>> =\n createContextFromActorRef<TSignInRouterMachine>('SignInRouterCtx');\n\nfunction useSignInStep<M extends AnyStateMachine, T = ActorRefFrom<M>>(name: string) {\n return SignInRouterCtx.useSelector(state => state.children[name] as AnyActorRef) as T;\n}\n\nexport const useSignInStartStep = () => useSignInStep<TSignInStartMachine>('start');\nexport const useSignInFirstFactorStep = () => useSignInStep<TSignInFirstFactorMachine>('firstFactor');\nexport const useSignInSecondFactorStep = () => useSignInStep<TSignInSecondFactorMachine>('secondFactor');\nexport const useSignInResetPasswordStep = () => useSignInStep<TSignInResetPasswordMachine>('resetPassword');\n\nexport const useSignInPasskeyAutofill = () =>\n SignInRouterCtx.useSelector(state => state.context.webAuthnAutofillSupport);\n","import { createContext, useContext } from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nexport type SignInStrategyContextValue = {\n strategy: SignInStrategyName | undefined;\n};\n\nexport const SignInStrategyContext = createContext<SignInStrategyContextValue>({\n strategy: undefined,\n});\n\nexport function useSignInStrategy() {\n const ctx = useContext(SignInStrategyContext);\n\n if (!ctx) {\n throw new ClerkElementsRuntimeError(\n 'useSignInStrategy must be used within a <SignIn.Strategy> or <SignIn.SupportedStrategy> component.',\n );\n }\n\n const { strategy } = ctx;\n\n return strategy;\n}\n","import type { SignInStrategy } from '@clerk/types';\nimport { createContext, useContext } from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nexport type StrategiesContextValue = {\n current: SignInStrategy | undefined;\n isActive: (name: string) => boolean;\n preferred: SignInStrategy | undefined;\n};\n\nexport const StrategiesContext = createContext<StrategiesContextValue>({\n current: undefined,\n isActive: _name => false,\n preferred: undefined,\n});\n\nexport function useStrategy(name: SignInStrategyName) {\n const ctx = useContext(StrategiesContext);\n\n if (!ctx) {\n throw new ClerkElementsRuntimeError(\n 'useStrategy must be used within a <SignIn.Step name=\"verifications\"> component. Did you mean to `import { Step } from \"@clerk/elements/sign-up\"` instead?',\n );\n }\n\n const { current, preferred, isActive } = ctx;\n\n return {\n current,\n preferred,\n get active() {\n return isActive(name);\n },\n };\n}\n","import { useCallback } from 'react';\nimport type { BaseActorRef } from 'xstate';\n\nimport { useGlobalErrors } from './use-global-errors';\n\n/**\n * Provides the form submission handler along with the form's validity via a data attribute\n */\nexport function useForm({ flowActor }: { flowActor?: BaseActorRef<{ type: 'SUBMIT'; action: 'submit' }> }) {\n const { errors } = useGlobalErrors();\n\n // Register the onSubmit handler for form submission\n // TODO: merge user-provided submit handler\n const onSubmit = useCallback(\n (event: React.FormEvent<Element>) => {\n event.preventDefault();\n if (flowActor) {\n flowActor.send({ type: 'SUBMIT', action: 'submit' });\n }\n },\n [flowActor],\n );\n\n return {\n props: {\n ...(errors.length > 0 ? { 'data-global-error': true } : {}),\n onSubmit,\n },\n };\n}\n","import { globalErrorsSelector, useFormSelector } from '~/internals/machines/form';\n\nexport function useGlobalErrors() {\n const errors = useFormSelector(globalErrorsSelector);\n\n return {\n errors,\n };\n}\n","import { composeEventHandlers } from '@radix-ui/primitive';\nimport type { FormProps as RadixFormProps } from '@radix-ui/react-form';\nimport { Form as RadixForm } from '@radix-ui/react-form';\nimport * as React from 'react';\nimport type { BaseActorRef } from 'xstate';\n\nimport { useForm } from './hooks';\n\nconst DISPLAY_NAME = 'ClerkElementsForm';\n\ntype FormElement = React.ElementRef<typeof RadixForm>;\nexport type FormProps = Omit<RadixFormProps, 'children'> & {\n children: React.ReactNode;\n flowActor?: BaseActorRef<{ type: 'SUBMIT'; action: 'submit' }>;\n};\n\nexport const Form = React.forwardRef<FormElement, FormProps>(({ flowActor, onSubmit, ...rest }, forwardedRef) => {\n const form = useForm({ flowActor: flowActor });\n\n const { onSubmit: internalOnSubmit, ...internalFormProps } = form.props;\n\n return (\n <RadixForm\n {...internalFormProps}\n {...rest}\n onSubmit={composeEventHandlers(internalOnSubmit, onSubmit)}\n ref={forwardedRef}\n />\n );\n});\n\nForm.displayName = DISPLAY_NAME;\n","import type { FormSubmitProps as RadixFormSubmitProps } from '@radix-ui/react-form';\nimport { Submit as RadixSubmit } from '@radix-ui/react-form';\nimport type { SetRequired } from 'type-fest';\n\nconst DISPLAY_NAME = 'ClerkElementsSubmit';\n\nexport type FormSubmitProps = SetRequired<RadixFormSubmitProps, 'children'>;\ntype FormSubmitComponent = React.ForwardRefExoticComponent<FormSubmitProps & React.RefAttributes<HTMLButtonElement>>;\n\n/**\n * A `<button type=\"submit\">` element.\n *\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n */\nexport const Submit = RadixSubmit as FormSubmitComponent;\n\nSubmit.displayName = DISPLAY_NAME;\n","import { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport { SignInChooseSession, type SignInChooseSessionProps } from './choose-session';\nimport { SignInChooseStrategy, type SignInChooseStrategyProps, SignInForgotPassword } from './choose-strategy';\nimport { SignInResetPassword, type SignInResetPasswordProps } from './reset-password';\nimport type { SignInSSOCallbackProps } from './sso-callback';\nimport { SignInSSOCallback } from './sso-callback';\nimport { SignInStart, type SignInStartProps } from './start';\nimport { SignInVerifications, type SignInVerificationsProps } from './verifications';\n\nexport const SIGN_IN_STEPS = {\n start: 'start',\n verifications: 'verifications',\n 'choose-strategy': 'choose-strategy',\n 'choose-session': 'choose-session',\n 'forgot-password': 'forgot-password',\n 'reset-password': 'reset-password',\n 'sso-callback': 'sso-callback',\n} as const;\n\nexport type TSignInStep = (typeof SIGN_IN_STEPS)[keyof typeof SIGN_IN_STEPS];\ntype StepWithProps<N extends TSignInStep, T> = { name: N } & T;\n\nexport type SignInStepProps =\n | StepWithProps<'start', SignInStartProps>\n | StepWithProps<'verifications', SignInVerificationsProps>\n | StepWithProps<'choose-strategy' | 'forgot-password', SignInChooseStrategyProps>\n | StepWithProps<'reset-password', SignInResetPasswordProps>\n | StepWithProps<'choose-session', SignInChooseSessionProps>\n | StepWithProps<'sso-callback', SignInSSOCallbackProps>;\n\n/**\n * Render different steps of the sign-in flow. Initially the `'start'` step is rendered. Once a sign-in attempt has been created, `'verifications'` will be displayed. If during that verification step the user decides to choose a different method of signing in or verifying, the `'choose-strategy'` step will be displayed.\n *\n * You typically want to place fields like username, password, or social providers in the `'start'` step. The `'verifications'` step is used to verify the user's credentials like password or MFA. Once the user has been verified, the sign-in attempt will be completed.\n *\n * @param {string} name - Step name. Use `'start'`, `'verifications'`, `'choose-strategy'`, `'reset-password'`, or `'forgot-password'`.\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name='start' />\n * <SignIn.Step name='verifications' />\n * <SignIn.Step name='choose-strategy' />\n * <SignIn.Step name='forgot-password' />\n * <SignIn.Step name='reset-password' />\n * <SignIn.Step name='choose-session' />\n * </SignIn.Root>\n */\nexport function SignInStep(props: SignInStepProps) {\n const clerk = useClerk();\n\n clerk.telemetry?.record(eventComponentMounted('Elements_SignInStep', { name: props.name }));\n\n switch (props.name) {\n case SIGN_IN_STEPS.start:\n return <SignInStart {...props} />;\n case SIGN_IN_STEPS.verifications:\n return <SignInVerifications {...props} />;\n case SIGN_IN_STEPS['choose-strategy']:\n return <SignInChooseStrategy {...props} />;\n case SIGN_IN_STEPS['forgot-password']:\n return <SignInForgotPassword {...props} />;\n case SIGN_IN_STEPS['reset-password']:\n return <SignInResetPassword {...props} />;\n case SIGN_IN_STEPS['choose-session']:\n return <SignInChooseSession {...props} />;\n case SIGN_IN_STEPS['sso-callback']:\n return <SignInSSOCallback {...props} />;\n default:\n throw new ClerkElementsRuntimeError(`Invalid step name. Use: ${Object.keys(SIGN_IN_STEPS).join(',')}.`);\n }\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { createContextForDomValidation } from '~/react/utils/create-context-for-dom-validation';\nimport { isValidComponentType } from '~/react/utils/is-valid-component-type';\n\nimport {\n SignInActiveSessionContext,\n type SignInActiveSessionListItem,\n useSignInActiveSessionContext,\n useSignInChooseSessionIsActive,\n useSignInSessionList,\n} from './choose-session.hooks';\n\n// ----------------------------------- TYPES ------------------------------------\n\nexport type SignInChooseSessionProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\nexport type SignInSessionListProps = React.HTMLAttributes<HTMLUListElement> & {\n asChild?: boolean;\n includeCurrentSession?: true;\n};\nexport type SignInSessionListItemProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'children'> & {\n asChild?: boolean;\n children: ({ session }: { session: SignInActiveSessionListItem }) => React.ReactNode;\n};\n\n// ---------------------------------- CONTEXT -----------------------------------\n\nexport const SignInChooseSessionCtx = createContextForDomValidation('SignInChooseSessionCtx');\n\n// --------------------------------- COMPONENTS ---------------------------------\n\nexport function SignInChooseSession({ asChild, children, ...props }: SignInChooseSessionProps) {\n const activeState = useSignInChooseSessionIsActive();\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseSessionCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseSessionCtx.Provider>\n ) : null;\n}\n\nexport function SignInSessionList({ asChild, children, includeCurrentSession, ...props }: SignInSessionListProps) {\n const sessions = useSignInSessionList({ omitCurrent: !includeCurrentSession });\n\n if (!children || !sessions?.length) {\n return null;\n }\n\n if (React.Children.count(children) > 1) {\n return React.Children.only(null);\n }\n\n if (asChild && isValidComponentType(children, SignInSessionListItem)) {\n // TODO: Update error message\n throw new Error('asChild cannot be used with SessionListItem as the direct child');\n }\n\n if (!React.isValidElement(children)) {\n // TODO: Update error message\n throw new Error('children must be a valid React element');\n }\n\n const newChildren = asChild ? (children.props.children as React.ReactNode) : children;\n const childrenWithCtx = sessions.map(session => {\n return (\n <SignInActiveSessionContext.Provider\n key={`SignInActiveSessionContext-${session.id}`}\n value={session}\n >\n {newChildren}\n </SignInActiveSessionContext.Provider>\n );\n });\n\n if (asChild) {\n return <Slot {...props}>{React.cloneElement(children, undefined, childrenWithCtx)}</Slot>;\n }\n\n return <ul {...props}>{childrenWithCtx}</ul>;\n}\n\nexport function SignInSessionListItem(props: SignInSessionListItemProps) {\n const { asChild = false, children, ...passthroughProps } = props;\n const session = useSignInActiveSessionContext();\n const Comp = asChild ? Slot : 'li';\n\n return <Comp {...passthroughProps}>{children({ session })}</Comp>;\n}\n","import * as React from 'react';\n\n/**\n * Use this context helper to detect whether a component has a particular parent higher up in the DOM or not.\n */\nexport function createContextForDomValidation(displayName: string) {\n const ReactContext = React.createContext(false);\n const OriginalProvider = ReactContext.Provider;\n\n function Provider({ children }: { children: React.ReactNode }) {\n return React.createElement(\n OriginalProvider,\n {\n value: true,\n },\n children,\n );\n }\n\n Provider.displayName = displayName;\n\n function useContext(allowMissingContext: boolean = false) {\n const context = React.useContext(ReactContext);\n\n if (!allowMissingContext && !context) {\n throw new Error(\n `You used a hook from \"${Provider.displayName}\" but it's not inside a <${Provider.displayName}.Provider> component.`,\n );\n }\n\n return context;\n }\n\n return {\n Provider,\n useDomValidation: useContext,\n };\n}\n","import * as React from 'react';\n\nexport function isValidComponentType(child: React.ReactNode, type: any): child is React.ReactElement {\n return React.isValidElement(child) && child.type === type;\n}\n","import type { ActiveSessionResource, PublicUserData } from '@clerk/types';\nimport * as React from 'react';\n\nimport { useActiveTags } from '../../hooks';\nimport { SignInRouterCtx } from '../context';\n\nexport type SignInActiveSessionListItem = Pick<ActiveSessionResource, 'id'> & PublicUserData;\n\nexport const SignInActiveSessionContext = React.createContext<SignInActiveSessionListItem | null>(null);\n\nexport function useSignInActiveSessionContext(): SignInActiveSessionListItem {\n const ctx = React.useContext(SignInActiveSessionContext);\n\n if (!ctx) {\n throw new Error('SignInActiveSessionContext must be used within a SessionList/SignInSessionListItem');\n }\n\n return ctx;\n}\n\nexport function useSignInChooseSessionIsActive() {\n const routerRef = SignInRouterCtx.useActorRef();\n return useActiveTags(routerRef, 'step:choose-session');\n}\n\nexport type UseSignInSessionListParams = {\n omitCurrent: boolean;\n};\n\nexport function useSignInSessionList(params?: UseSignInSessionListParams): SignInActiveSessionListItem[] {\n const { omitCurrent = true } = params || {};\n\n return SignInRouterCtx.useSelector(state => {\n const signedInSessions = state.context.clerk?.client?.signedInSessions || [];\n const currentSessionId = state.context.clerk?.session?.id;\n const filteredSessions = omitCurrent ? signedInSessions.filter(s => s.id !== currentSessionId) : signedInSessions;\n\n return filteredSessions.map(s => ({\n id: s.id,\n ...s.publicUserData,\n }));\n });\n}\n","import { useSelector } from '@xstate/react';\nimport type { ActorRef, AnyActorRef, AnyMachineSnapshot, MachineSnapshot } from 'xstate';\n\ntype TaggedActor<TActor extends AnyActorRef> =\n TActor extends ActorRef<MachineSnapshot<any, any, any, any, infer TTags, any, any, any>, any> ? TTags : never;\n\nexport const ActiveTagsMode = {\n any: 'any',\n all: 'all',\n} as const;\n\nexport type UseActiveTagsMode = (typeof ActiveTagsMode)[keyof typeof ActiveTagsMode];\nexport type UseActiveTagsSingleReturn = boolean;\nexport type UseActiveTagsMultiAnyReturn<TTag> = { active: boolean; activeTags: Set<TTag> };\nexport type UseActiveTagsReturn<TTag> = UseActiveTagsSingleReturn | UseActiveTagsMultiAnyReturn<TTag>;\n\n/**\n * Generic hook to check if a tag is active.\n *\n * @example\n * const ref = SignUpCtx.useActorRef();\n *\n * useActiveTags(ref, 'external');\n * useActiveTags(ref, ['external', 'email_code']);\n * useActiveTags(ref, ['external', 'email_code'], 'all');\n *\n * @param actor {ActorRef} Machine actor reference\n * @param tag {(string | string[])} The tag(s) to check\n * @param mode {UseActiveTagsMode} Whether to match all tags or any tag\n *\n * @returns {(boolean|UseActiveTagsReturn)} Whether the tag(s) are active\n */\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tag: TTag,\n): boolean;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag[],\n mode: 'all',\n): boolean;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag[],\n mode?: 'any',\n): UseActiveTagsMultiAnyReturn<TTag>;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag | TTag[],\n mode: UseActiveTagsMode = ActiveTagsMode.any,\n): UseActiveTagsReturn<TTag> {\n const state = useSelector<TActor, AnyMachineSnapshot>(\n actor,\n s => s,\n (prev, next) => prev.tags === next.tags,\n );\n\n if (!state) {\n return false;\n }\n\n if (typeof tags === 'string') {\n return state.hasTag(tags);\n }\n\n if (!Array.isArray(tags)) {\n throw new Error('Invalid tags parameter provided to useActiveTags');\n }\n\n switch (mode) {\n case ActiveTagsMode.any: {\n const matching = new Set(tags.filter(tag => state.hasTag(tag)));\n return { active: matching.size > 0, activeTags: matching };\n }\n case ActiveTagsMode.all:\n return tags.length === state.tags.size ? tags.every(tag => state.hasTag(tag)) : false;\n default:\n return false;\n }\n}\n","import type { SignInFactor, SignInStrategy as TSignInStrategy } from '@clerk/types';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\nimport type { ActorRefFrom } from 'xstate';\n\nimport type { TSignInFirstFactorMachine, TSignInSecondFactorMachine } from '~/internals/machines/sign-in';\nimport { SignInRouterSystemId } from '~/internals/machines/sign-in';\n\nimport { useActiveTags } from '../hooks';\nimport { ActiveTagsMode } from '../hooks/use-active-tags.hook';\nimport { createContextForDomValidation } from '../utils/create-context-for-dom-validation';\nimport { SignInRouterCtx, SignInStrategyContext } from './context';\n\n// --------------------------------- HELPERS ---------------------------------\n\nconst localStrategies: Set<TSignInStrategy> = new Set(['email_code', 'password', 'phone_code', 'email_link']);\nconst resetPasswordStrategies: Set<TSignInStrategy> = new Set([\n 'reset_password_phone_code',\n 'reset_password_email_code',\n]);\n\nexport function isResetPasswordStrategy(strategy: TSignInStrategy | null | undefined): boolean {\n if (!strategy) {\n return false;\n }\n return resetPasswordStrategies.has(strategy);\n}\n\nexport function factorHasLocalStrategy(factor: SignInFactor | undefined | null): boolean {\n if (!factor) {\n return false;\n }\n return localStrategies.has(factor.strategy);\n}\n\n// --------------------------------- COMPONENTS ---------------------------------\n\nexport type SignInChooseStrategyProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\nexport type SignInForgotPasswordProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\n\nexport const SignInChooseStrategyCtx = createContextForDomValidation('SignInChooseStrategyCtx');\n\nexport function SignInChooseStrategy({ asChild, children, ...props }: SignInChooseStrategyProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeStateFirstFactor = useActiveTags(\n routerRef,\n ['step:verifications', 'step:first-factor', 'step:choose-strategy'],\n ActiveTagsMode.all,\n );\n\n const activeStateSecondFactor = useActiveTags(\n routerRef,\n ['step:verifications', 'step:second-factor', 'step:choose-strategy'],\n ActiveTagsMode.all,\n );\n\n const activeState = activeStateFirstFactor || activeStateSecondFactor;\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseStrategyCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseStrategyCtx.Provider>\n ) : null;\n}\n\nexport function SignInForgotPassword({ asChild, children, ...props }: SignInForgotPasswordProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(\n routerRef,\n ['step:verifications', 'step:first-factor', 'step:forgot-password'],\n ActiveTagsMode.all,\n );\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseStrategyCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseStrategyCtx.Provider>\n ) : null;\n}\n\nconst SUPPORTED_STRATEGY_NAME = 'SignInSupportedStrategy';\n\nexport type SignInSupportedStrategyElement = React.ElementRef<'button'>;\nexport type SignInSupportedStrategyProps = {\n asChild?: boolean;\n name: Exclude<SignInFactor['strategy'], `oauth_${string}` | 'saml'>;\n children: React.ReactNode;\n};\n\n/**\n * By default, renders a button which will trigger a change in the chosen sign-in strategy. It **must** be used within a `<Step name='choose-strategy'>` component.\n *\n * @description This component will only render its contents if the chosen strategy is enabled (in the Clerk dashboard) and if it's not the current strategy.\n *\n * @param name - Define a strategy to be used.\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <SignIn.Step name='choose-strategy'>\n * <SignIn.SupportedStrategy name='password'>\n * Sign in with password\n * </SignIn.SupportedStrategy>\n * </SignIn.Step>\n */\nexport const SignInSupportedStrategy = React.forwardRef<SignInSupportedStrategyElement, SignInSupportedStrategyProps>(\n ({ asChild, children, name, ...rest }, forwardedRef) => {\n const routerRef = SignInRouterCtx.useActorRef();\n const snapshot = routerRef.getSnapshot();\n\n const status = snapshot.context.clerk.client.signIn.status;\n const supportedFirstFactors =\n status === 'needs_first_factor' ? snapshot.context.clerk.client.signIn.supportedFirstFactors || [] : [];\n const supportedSecondFactors =\n status === 'needs_second_factor' ? snapshot.context.clerk.client.signIn.supportedSecondFactors || [] : [];\n const factor = [...supportedFirstFactors, ...supportedSecondFactors].find(factor => name === factor.strategy);\n\n const currentFactor = useSelector(\n (snapshot.children[SignInRouterSystemId.firstFactor] ||\n snapshot.children[SignInRouterSystemId.secondFactor]) as unknown as ActorRefFrom<\n TSignInFirstFactorMachine | TSignInSecondFactorMachine\n >,\n state => state?.context.currentFactor?.strategy,\n );\n\n const sendUpdateStrategyEvent = React.useCallback(\n () => routerRef.send({ type: 'STRATEGY.UPDATE', factor }),\n [routerRef, factor],\n );\n\n // Don't render if the current factor is the same as the one we're trying to render\n if (currentFactor === name) {\n return null;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return factor ? (\n <SignInStrategyContext.Provider value={{ strategy: name }}>\n <Comp\n {...defaultProps}\n {...rest}\n ref={forwardedRef}\n onClick={sendUpdateStrategyEvent}\n >\n {children || factor.strategy}\n </Comp>\n </SignInStrategyContext.Provider>\n ) : null;\n },\n);\n\nSignInSupportedStrategy.displayName = SUPPORTED_STRATEGY_NAME;\n","import type { TSignInResetPasswordMachine } from '~/internals/machines/sign-in';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx, useSignInResetPasswordStep } from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInResetPasswordProps = FormProps;\n\nexport const SignInResetPasswordCtx = createContextFromActorRef<TSignInResetPasswordMachine>('SignInResetPasswordCtx');\n\nexport function SignInResetPassword(props: SignInResetPasswordProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:reset-password');\n\n return activeState ? <SignInResetPasswordInner {...props} /> : null;\n}\n\nfunction SignInResetPasswordInner(props: SignInResetPasswordProps) {\n const ref = useSignInResetPasswordStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignInResetPasswordCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignInResetPasswordCtx.Provider>\n );\n}\n","import type { PropsWithChildren } from 'react';\n\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nexport type SignInSSOCallbackProps = PropsWithChildren;\n\nexport function SignInSSOCallback({ children }: SignInSSOCallbackProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:callback');\n\n return activeState ? children : null;\n}\n","import type { TSignInStartMachine } from '~/internals/machines/sign-in';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx, useSignInStartStep } from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInStartProps = FormProps;\n\nexport const SignInStartCtx = createContextFromActorRef<TSignInStartMachine>('SignInStartCtx');\n\nexport function SignInStart(props: SignInStartProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:start');\n\n return activeState ? <SignInStartInner {...props} /> : null;\n}\n\nfunction SignInStartInner(props: SignInStartProps) {\n const ref = useSignInStartStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignInStartCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignInStartCtx.Provider>\n );\n}\n","import type { SignInStrategy as ClerkSignInStrategy } from '@clerk/types';\nimport { useSelector } from '@xstate/react';\nimport { useCallback, useEffect } from 'react';\nimport type { ActorRefFrom, SnapshotFrom } from 'xstate';\n\nimport type { SignInStrategyName } from '~/internals/machines/shared';\nimport type { TSignInFirstFactorMachine, TSignInSecondFactorMachine } from '~/internals/machines/sign-in';\nimport { matchStrategy } from '~/internals/machines/utils/strategies';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport {\n SignInRouterCtx,\n SignInStrategyContext,\n StrategiesContext,\n useSignInFirstFactorStep,\n useSignInSecondFactorStep,\n useStrategy,\n} from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInVerificationsProps = { preferred?: ClerkSignInStrategy } & FormProps;\n\nexport const SignInFirstFactorCtx = createContextFromActorRef<TSignInFirstFactorMachine>('SignInFirstFactorCtx');\nexport const SignInSecondFactorCtx = createContextFromActorRef<TSignInSecondFactorMachine>('SignInSecondFactorCtx');\n\nconst strategiesSelector = (state: SnapshotFrom<TSignInFirstFactorMachine | TSignInSecondFactorMachine>) =>\n state.context.currentFactor?.strategy;\n\nfunction SignInStrategiesProvider({\n children,\n preferred,\n actorRef,\n ...props\n}: SignInVerificationsProps & { actorRef: ActorRefFrom<TSignInFirstFactorMachine | TSignInSecondFactorMachine> }) {\n const routerRef = SignInRouterCtx.useActorRef();\n const current = useSelector(actorRef, strategiesSelector);\n const isChoosingAltStrategy = useActiveTags(routerRef, ['step:choose-strategy', 'step:forgot-password']);\n const isActive = useCallback((name: string) => (current ? matchStrategy(current, name) : false), [current]);\n\n return (\n <StrategiesContext.Provider value={{ current: current, preferred, isActive }}>\n {isChoosingAltStrategy.active ? null : (\n <Form\n flowActor={actorRef}\n {...props}\n >\n {children}\n </Form>\n )}\n </StrategiesContext.Provider>\n );\n}\n\nexport type SignInStrategyProps = { name: SignInStrategyName; children: React.ReactNode };\n\nfunction useFactorCtx() {\n const firstFactorRef = SignInFirstFactorCtx.useActorRef(true);\n const secondFactorRef = SignInSecondFactorCtx.useActorRef(true);\n\n return firstFactorRef || secondFactorRef;\n}\n\n/**\n * Generic component to handle both first and second factor verifications.\n *\n * @param {string} name - The name of the strategy for which its children will be rendered.\n *\n * @example\n * <SignIn.Step name=\"verifications\">\n * <SignIn.Strategy name=\"password\">...</SignIn.Strategy>\n * </SignIn.Step>\n */\nexport function SignInStrategy({ children, name }: SignInStrategyProps) {\n const { active } = useStrategy(name);\n const factorCtx = useFactorCtx();\n\n useEffect(() => {\n if (factorCtx) {\n factorCtx.send({ type: 'STRATEGY.REGISTER', factor: name });\n }\n\n return () => {\n if (factorCtx?.getSnapshot().status === 'active') {\n factorCtx.send({ type: 'STRATEGY.UNREGISTER', factor: name });\n }\n };\n }, [factorCtx, name]);\n\n return active ? (\n <SignInStrategyContext.Provider value={{ strategy: name }}>{children}</SignInStrategyContext.Provider>\n ) : null;\n}\n\n/**\n * Generic component to handle both first and second factor verifications.\n *\n * @example\n * <Step name=\"verifications\">...</Step>\n */\nexport function SignInVerifications(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const { activeTags: activeRoutes } = useActiveTags(routerRef, ['step:first-factor', 'step:second-factor']);\n\n if (activeRoutes.has('step:first-factor')) {\n return <SignInFirstFactorInner {...props} />;\n }\n\n if (activeRoutes.has('step:second-factor')) {\n return <SignInSecondFactorInner {...props} />;\n }\n\n return null;\n}\n\n/**\n * Component to handle specifically first factor verifications.\n * Generally, you should use the <SignInVerifications> component instead via <Step name=\"verifications\">.\n *\n * @example\n * <FirstFactor>...</FirstFactor>\n */\nexport function SignInFirstFactor(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:first-factor');\n\n return activeState ? <SignInFirstFactorInner {...props} /> : null;\n}\n\n/**\n * Component to handle specifically second factor verifications.\n * Generally, you should use the <SignInVerifications> component instead via <Step name=\"verifications\">.\n *\n * @example\n * <SecondFactor>...</SecondFactor>\n */\nexport function SignInSecondFactor(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:second-factor');\n\n return activeState ? <SignInSecondFactorInner {...props} /> : null;\n}\n\nexport function SignInFirstFactorInner(props: SignInVerificationsProps) {\n const ref = useSignInFirstFactorStep();\n\n if (!ref) {\n return null;\n }\n\n return ref ? (\n <SignInFirstFactorCtx.Provider actorRef={ref}>\n <SignInStrategiesProvider\n actorRef={ref}\n {...props}\n />\n </SignInFirstFactorCtx.Provider>\n ) : null;\n}\n\nexport function SignInSecondFactorInner(props: SignInVerificationsProps) {\n const ref = useSignInSecondFactorStep();\n\n if (!ref) {\n return null;\n }\n\n return ref ? (\n <SignInSecondFactorCtx.Provider actorRef={ref}>\n <SignInStrategiesProvider\n actorRef={ref}\n {...props}\n />\n </SignInSecondFactorCtx.Provider>\n ) : null;\n}\n\nexport type SignInVerificationResendableRenderProps = {\n resendable: boolean;\n resendableAfter: number;\n};\n\nexport type SignInVerificationResendableProps = {\n children: (props: SignInVerificationResendableRenderProps) => React.ReactNode;\n};\n","export const matchStrategy = (current: string | undefined, desired: string | undefined): boolean => {\n if (!current || !desired) {\n return false;\n }\n\n if (current === desired) {\n return true;\n }\n\n return current.startsWith(`${desired}_`);\n};\n","import * as React from 'react';\n\nimport type { FormSubmitProps } from '~/react/common';\nimport { Submit } from '~/react/common';\n\nimport type { SignInNavigateProps } from './navigate';\nimport { SignInNavigate } from './navigate';\nimport type { SignInResendProps } from './resend';\nimport { SignInResend } from './resend';\nimport { SignInSetActiveSession } from './set-active-session';\n\nexport type SignInActionProps = { asChild?: boolean } & FormSubmitProps &\n (\n | ({\n navigate: SignInNavigateProps['to'];\n resend?: never;\n setActiveSession?: never;\n submit?: never;\n } & Omit<SignInNavigateProps, 'to'>)\n | { navigate?: never; resend?: never; setActiveSession?: never; submit: true }\n | { navigate?: never; resend?: never; setActiveSession: true; submit?: never }\n | ({ navigate?: never; resend: true; setActiveSession?: never; submit?: never } & SignInResendProps)\n );\n\nconst DISPLAY_NAME = 'SignInAction';\n\n/**\n * Perform various actions during the sign-in process. This component is used to navigate between steps, submit the form, or resend a verification codes.\n *\n * @param {boolean} [submit] - If `true`, the action will submit the form.\n * @param {string} [navigate] - The name of the step to navigate to.\n * @param {boolean} [resend] - If `true`, the action will resend the verification code for the currently active strategy, if applicable.\n * @param {Function} [fallback] - Only used when `resend` is `true`. If provided, the fallback markup will be rendered before the resend delay has expired.\n *\n * @example\n * <SignIn.Action navigate=\"start\">Go Back</SignIn.Action>\n *\n * @example\n * <SignIn.Action submit>Sign In</SignIn.Action>\n *\n * @example\n * <SignIn.Action resend>Resend</SignIn.Action>\n */\nexport const SignInAction = React.forwardRef<React.ElementRef<'button'>, SignInActionProps>((props, forwardedRef) => {\n const { submit, navigate, resend, setActiveSession, ...rest } = props;\n let Comp: React.ForwardRefExoticComponent<any> | undefined;\n\n if (submit) {\n Comp = Submit;\n } else if (navigate) {\n Comp = SignInNavigate;\n } else if (resend) {\n Comp = SignInResend;\n } else if (setActiveSession) {\n Comp = SignInSetActiveSession;\n }\n\n return Comp ? (\n <Comp\n to={navigate}\n {...rest}\n ref={forwardedRef}\n />\n ) : null;\n});\n\nSignInAction.displayName = DISPLAY_NAME;\n","// Mark as a client-only package. This will error if you try to import it in a React Server Component.\nimport 'client-only';\n\nexport { Field, FieldError, FieldState, GlobalError, Input, Label, Submit } from '~/react/common/form';\nexport { Connection, Icon } from '~/react/common/connections';\nexport { Loading } from '~/react/common/loading';\nexport { Link } from '~/react/common/link';\n\nexport type {\n FormFieldErrorProps,\n FormErrorProps,\n FormErrorRenderProps,\n FormFieldProps,\n FormGlobalErrorProps,\n FormInputProps,\n FormProps,\n FormSubmitProps,\n} from '~/react/common/form';\nexport type { ConnectionProps, IconProps } from '~/react/common/connections';\nexport type { OTPInputSegmentStatus } from '~/react/common/form/otp';\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nconst SIGN_IN_NAVIGATE_NAME = 'SignInNavigate';\nconst SignInNavigationEventMap = {\n start: 'NAVIGATE.START',\n previous: 'NAVIGATE.PREVIOUS',\n 'choose-strategy': 'NAVIGATE.CHOOSE_STRATEGY',\n 'forgot-password': 'NAVIGATE.FORGOT_PASSWORD',\n} as const;\n\nexport type SignInNavigateElementKey = keyof typeof SignInNavigationEventMap;\n\nexport type SignInNavigateElement = React.ElementRef<'button'>;\nexport type SignInNavigateProps = {\n asChild?: boolean;\n to: SignInNavigateElementKey;\n children: React.ReactNode;\n};\n\n/**\n * Renders a button which will navigate to a different step in the sign-in flow.\n *\n * @param {SignInNavigateElementKey} to - The step to navigate to.\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <Navigate to=\"choose-strategy\">\n * Choose a different sign-in method...\n * </Navigate>\n */\nexport const SignInNavigate = React.forwardRef<SignInNavigateElement, SignInNavigateProps>(\n ({ asChild, to, ...rest }, forwardedRef) => {\n const actorRef = SignInRouterCtx.useActorRef();\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n const type = SignInNavigationEventMap[to];\n\n if (actorRef.getSnapshot().can({ type })) {\n actorRef.send({ type });\n } else {\n console.warn(\n `Clerk: <SignIn.Action navigate=\"${to}\"> is an invalid navigation event. You can only navigate to: ${Object.keys(SignInNavigationEventMap).join(', ')}.`,\n );\n }\n }, [actorRef, to]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInNavigate.displayName = SIGN_IN_NAVIGATE_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\n\nimport { SignInFirstFactorCtx, SignInSecondFactorCtx } from '../verifications';\n\nexport type SignInResendElement = React.ElementRef<'button'>;\nexport type SignInResendFallbackProps = {\n resendable: boolean;\n resendableAfter: number;\n};\nexport type SignInResendProps = {\n asChild?: boolean;\n children: React.ReactNode;\n /**\n * A fallback component to render when the resend action is not available.\n * This can be a React element or a function that receives the `resendableAfter` prop.\n */\n fallback?: React.ReactNode | ((props: SignInResendFallbackProps) => React.ReactNode);\n};\n\nconst SIGN_IN_RESEND_NAME = 'SignInResend';\n\n/**\n * Resend verification codes during the sign-in process.\n * This component must be used within the <Step name=\"verifications\">.\n *\n * > [!NOTE]\n * > This component is not intended to be used directly. Instead, use the `<Action resend>` component.\n *\n * @example\n * ```tsx\n * import { Action } from '@clerk/elements/sign-in';\n * <Action resend fallback={({ resendableAfter }) => <p>Resendable in: {resendableAfter}s</p>}>Resend</Action>;\n * ```\n */\nexport const SignInResend = React.forwardRef<SignInResendElement, SignInResendProps>(\n ({ asChild, fallback, ...rest }, forwardedRef) => {\n const firstFactorRef = SignInFirstFactorCtx.useActorRef(true);\n const secondFactorRef = SignInSecondFactorCtx.useActorRef(true);\n const actorRef = firstFactorRef || secondFactorRef;\n\n if (!actorRef) {\n throw new Error('The resend action must be used within <SignIn.Step name=\"verifications\">.');\n }\n\n const fallbackProps: SignInResendFallbackProps = useSelector(\n actorRef,\n state => ({\n resendable: state.context.resendable,\n resendableAfter: state.context.resendableAfter,\n }),\n (a, b) => a.resendableAfter === b.resendableAfter && a.resendable === b.resendable,\n );\n\n if (fallback && !fallbackProps.resendable) {\n return typeof fallback === 'function' ? fallback(fallbackProps) : fallback;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n disabled={!fallbackProps.resendable}\n onClick={() => actorRef.send({ type: 'RETRY' })}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInResend.displayName = SIGN_IN_RESEND_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport type { SignInRouterSessionSetActiveEvent } from '~/internals/machines/sign-in';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nimport { useSignInActiveSessionContext } from '../choose-session/choose-session.hooks';\n\nconst DISPLAY_NAME = 'SignInSetActiveSession';\n\nexport type SignInSetActiveSessionElement = React.ElementRef<'button'>;\nexport type SignInSetActiveSessionProps = {\n asChild?: boolean;\n children: React.ReactNode;\n};\n\n/**\n * Sets the active session to the session with the provided ID.\n *\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <SignInSetActiveSession setActiveSession>\n * t*****m@clerk.dev\n * </SignInSetActiveSession>\n */\nexport const SignInSetActiveSession = React.forwardRef<SignInSetActiveSessionElement, SignInSetActiveSessionProps>(\n ({ asChild, ...rest }, forwardedRef) => {\n const actorRef = SignInRouterCtx.useActorRef();\n const session = useSignInActiveSessionContext();\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n const event: SignInRouterSessionSetActiveEvent = { type: 'SESSION.SET_ACTIVE', id: session.id };\n\n if (actorRef.getSnapshot().can(event)) {\n actorRef.send(event);\n } else {\n console.warn(\n `Clerk: <SignIn.Action setActiveSession> is an invalid event. You can only choose an active session from <SignIn.Step name=\"choose-session\">.`,\n );\n }\n }, [actorRef, session.id]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInSetActiveSession.displayName = DISPLAY_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nexport type SignInPasskeyElement = React.ElementRef<'button'>;\n\nexport type SignInPasskeyProps = {\n asChild?: boolean;\n children: React.ReactNode;\n} & React.DetailedHTMLProps<React.HTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;\n\nconst SIGN_IN_PASSKEY_NAME = 'SignInPasskey';\n\n/**\n * Prompt users to select a passkey from their device in order to sign in.\n * This component must be used within the <Step name=\"start\">.\n *\n * @example\n * <SignIn.Action passkey>Use Passkey instead</SignIn.Action>\n */\nexport const SignInPasskey = React.forwardRef<SignInPasskeyElement, SignInPasskeyProps>(\n ({ asChild, ...rest }, forwardedRef) => {\n const actorRef = SignInRouterCtx.useActorRef(true);\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n actorRef?.send({ type: 'AUTHENTICATE.PASSKEY' });\n }, [actorRef]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInPasskey.displayName = SIGN_IN_PASSKEY_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { CAPTCHA_ELEMENT_ID } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport { useActiveTags } from '../hooks';\nimport { SignInRouterCtx } from './context';\n\nexport type SignInCaptchaElement = React.ElementRef<'div'>;\n\ntype CaptchaElementProps = Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n 'id' | 'children'\n>;\n\nexport type SignInCaptchaProps =\n | ({\n asChild: true;\n /* Must only be a self-closing element/component */\n children: React.ReactElement;\n } & CaptchaElementProps)\n | ({ asChild?: false; children?: undefined } & CaptchaElementProps);\n\n/**\n * The `<SignIn.Captcha>` component is used to render the Cloudflare Turnstile widget. It must be used within the `<SignIn.Step name=\"sso-callback\">` component.\n *\n * If utilizing the `asChild` prop, the component must be a self-closing element or component. Any children passed to the immediate child component of <SignIn.Captcha> will be ignored.\n *\n * @param {boolean} [asChild] - If true, `<Captcha />` will render as its child element, passing along any necessary props.\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name=\"sso-callback\">\n * <SignIn.Captcha />\n * </SignIn.Step>\n * </SignIn.Root>\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name=\"sso-callback\">\n * <SignIn.Captcha asChild>\n * <aside/>\n * </SignIn.Captcha>\n * </SignIn.Step>\n * </SignIn.Root>\n */\n\nexport const SignInCaptcha = React.forwardRef<SignInCaptchaElement, SignInCaptchaProps>(\n ({ asChild, children, ...rest }, forwardedRef) => {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:callback');\n\n if (!activeState) {\n throw new ClerkElementsRuntimeError(\n '<Captcha> must be used within the <SignIn.Step name=\"sso-callback\"> component.',\n );\n }\n\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n id={CAPTCHA_ELEMENT_ID}\n {...rest}\n ref={forwardedRef}\n />\n );\n },\n);\n","import { useMemo } from 'react';\n\nimport { SignInSafeIdentifierSelectorForStrategy, SignInSalutationSelector } from '~/internals/machines/sign-in';\n\nimport { SignInRouterCtx, useSignInStrategy } from './context';\n\n/**\n * Render an identifier that has been provided by the user during a sign-in attempt. Renders a `string` (or empty string if it can't find an identifier).\n *\n * @example\n * <SignIn.Strategy name=\"email_code\">\n * <h1>Check your email</h1>\n * <p>We've sent a code to <SignIn.SafeIdentifier />.</p>\n * </SignIn.Strategy>\n */\nexport function SignInSafeIdentifier({ transform }: { transform?: (s: string) => string }): string {\n const strategy = useSignInStrategy();\n const selector = useMemo(() => SignInSafeIdentifierSelectorForStrategy(strategy), [strategy]);\n const safeIdentifier = SignInRouterCtx.useSelector(selector);\n\n if (transform) {\n return transform(safeIdentifier);\n }\n\n return safeIdentifier;\n}\n\n/**\n * Render a salutation for the user during a sign-in attempt. It attempts to resolve these values in this specific order: First name, Last name, Identifier. Renders a `string` (or empty string if it can't find an identifier).\n *\n * @example\n * <SignIn.Strategy name=\"password\">\n * <p>Welcome back <SignIn.Salutation />!</p>\n * </SignIn.Strategy>\n */\nexport function SignInSalutation(): string {\n return SignInRouterCtx.useSelector(SignInSalutationSelector);\n}\n"],"mappings":"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","names":["import_client_only","import_react","import_xstate","import_error","import_xstate","_a","import_webauthn","import_xstate","import_xstate","import_xstate","import_xstate","import_xstate","import_underscore","import_router","import_react","import_navigation","import_router","import_react","React","import_react","React","useContext","useSelector","actor","useSelectorUnbound","import_react","import_react","import_react","React","RadixForm","import_react_form","DISPLAY_NAME","RadixSubmit","import_jsx_runtime","import_react","import_telemetry","React","React","useContext","React","React","import_react","actor","import_jsx_runtime","import_react_slot","import_react","React","import_jsx_runtime","factor","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","React","import_react_slot","React","import_jsx_runtime","import_react_slot","import_react","React","import_jsx_runtime","import_react_slot","React","import_jsx_runtime","DISPLAY_NAME","import_jsx_runtime","DISPLAY_NAME","import_react_slot","React","import_jsx_runtime","import_react_slot","React","import_jsx_runtime","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/react/sign-in/index.ts","../../../src/react/sign-in/root.tsx","../../../src/utils/safe-access.ts","../../../src/internals/constants/index.ts","../../../src/internals/machines/form/form.context.ts","../../../src/internals/machines/form/form.machine.ts","../../../src/internals/errors/index.ts","../../../src/internals/utils/inspector/index.ts","../../../src/internals/machines/sign-in/verification.machine.ts","../../../src/internals/machines/shared/shared.actions.ts","../../../src/internals/machines/sign-in/utils/starting-factors.ts","../../../src/internals/machines/utils/assert.ts","../../../src/internals/machines/sign-in/verification.types.ts","../../../src/internals/machines/sign-in/router.machine.ts","../../../src/internals/machines/third-party/third-party.actors.ts","../../../src/internals/machines/utils/clerkjs.ts","../../../src/internals/machines/third-party/third-party.machine.ts","../../../src/internals/machines/utils/next.ts","../../../src/internals/machines/sign-in/reset-password.machine.ts","../../../src/internals/machines/sign-in/start.machine.ts","../../../src/internals/machines/utils/formatters.ts","../../../src/internals/machines/sign-in/router.selectors.ts","../../../src/internals/machines/sign-in/router.types.ts","../../../src/react/router/index.ts","../../../src/react/router/virtual.ts","../../../src/react/router/next.ts","../../../src/react/utils/path-inference/next.tsx","../../../src/react/utils/path-inference/utils.ts","../../../src/react/utils/create-context-from-actor-ref.ts","../../../src/react/sign-in/context/router.context.ts","../../../src/react/sign-in/context/sign-in-strategy.context.ts","../../../src/react/sign-in/context/strategies.context.ts","../../../src/react/common/form/hooks/use-form.ts","../../../src/react/common/form/hooks/use-global-errors.ts","../../../src/react/common/form/form.tsx","../../../src/react/common/form/submit.tsx","../../../src/react/sign-in/step.tsx","../../../src/react/sign-in/choose-session/choose-session.tsx","../../../src/react/utils/create-context-for-dom-validation.ts","../../../src/react/utils/is-valid-component-type.ts","../../../src/react/sign-in/choose-session/choose-session.hooks.ts","../../../src/react/hooks/use-active-tags.hook.ts","../../../src/react/sign-in/choose-strategy.tsx","../../../src/react/sign-in/reset-password.tsx","../../../src/react/sign-in/sso-callback.tsx","../../../src/react/sign-in/start.tsx","../../../src/react/sign-in/verifications.tsx","../../../src/internals/machines/utils/strategies.ts","../../../src/react/sign-in/action/action.tsx","../../../src/react/common/index.ts","../../../src/react/sign-in/action/navigate.tsx","../../../src/react/sign-in/action/resend.tsx","../../../src/react/sign-in/action/set-active-session.tsx","../../../src/react/sign-in/passkey.tsx","../../../src/react/sign-in/captcha.tsx","../../../src/react/sign-in/identifiers.tsx"],"sourcesContent":["// Mark as a client-only package. This will error if you try to import it in a React Server Component.\nimport 'client-only';\n\nexport { SignInRoot as SignIn, SignInRoot as Root } from './root';\nexport { SignInStep as Step } from './step';\nexport { SignInAction as Action } from './action';\nexport { SignInPasskey as Passkey } from './passkey';\nexport { SignInCaptcha as Captcha } from './captcha';\nexport { SignInSupportedStrategy as SupportedStrategy } from './choose-strategy';\nexport { SignInSessionList as SessionList, SignInSessionListItem as SessionListItem } from './choose-session';\n\nexport {\n SignInFirstFactor as FirstFactor,\n SignInSecondFactor as SecondFactor,\n SignInStrategy as Strategy,\n} from './verifications';\n\nexport { SignInSafeIdentifier as SafeIdentifier, SignInSalutation as Salutation } from './identifiers';\n","import { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport { useSelector } from '@xstate/react';\nimport React, { useEffect } from 'react';\nimport { createActor } from 'xstate';\n\nimport { ROUTING, SIGN_IN_DEFAULT_BASE_PATH, SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { FormStoreProvider, useFormStore } from '~/internals/machines/form/form.context';\nimport type { SignInRouterInitEvent } from '~/internals/machines/sign-in';\nimport { SignInRouterMachine } from '~/internals/machines/sign-in';\nimport { inspect } from '~/internals/utils/inspector';\nimport { ClerkHostRouterContext, Router, useClerkRouter, useNextRouter, useVirtualRouter } from '~/react/router';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nimport { Form } from '../common/form';\n\ntype SignInFlowProviderProps = {\n children: React.ReactNode;\n exampleMode?: boolean;\n /**\n * Fallback markup to render while Clerk is loading\n */\n fallback?: React.ReactNode;\n isRootPath: boolean;\n};\n\nconst actor = createActor(SignInRouterMachine, { inspect });\nactor.start();\n\nfunction SignInFlowProvider({ children, exampleMode, fallback, isRootPath }: SignInFlowProviderProps) {\n const clerk = useClerk();\n const router = useClerkRouter();\n const formRef = useFormStore();\n const isReady = useSelector(actor, state => state.value !== 'Idle');\n\n useEffect(() => {\n if (!clerk || !router) {\n return;\n }\n\n const cb = () => {\n const evt: SignInRouterInitEvent = {\n type: 'INIT',\n clerk,\n exampleMode,\n formRef,\n router,\n signUpPath: SIGN_UP_DEFAULT_BASE_PATH,\n };\n\n if (actor.getSnapshot().can(evt)) {\n actor.send(evt);\n }\n };\n\n if ('addOnLoaded' in clerk) {\n // @ts-expect-error - addOnLoaded doesn't exist on the clerk type, but it does on IsomorphicClerk, which can be hit when Elements is used standalone\n clerk.addOnLoaded(cb);\n } else {\n cb();\n }\n\n // Ensure that the latest instantiated formRef is attached to the router\n if (formRef && actor.getSnapshot().can({ type: 'RESET.STEP' })) {\n actor.send({\n type: 'FORM.ATTACH',\n formRef,\n });\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clerk, exampleMode, formRef?.id, !!router, clerk.loaded]);\n\n return (\n <SignInRouterCtx.Provider actorRef={actor}>\n {isRootPath && !isReady && fallback ? <Form>{fallback}</Form> : null}\n {clerk.loaded && isReady ? children : null}\n </SignInRouterCtx.Provider>\n );\n}\n\nexport type SignInRootProps = Omit<SignInFlowProviderProps, 'isRootPath'> & {\n /**\n * The base path for your sign-in route.\n * Will be automatically inferred in Next.js.\n * @example `/sign-in`\n */\n path?: string;\n /**\n * If you want to render Clerk Elements in e.g. a modal, use the `virtual` routing mode.\n */\n routing?: ROUTING;\n};\n\n/**\n * Root component for the sign-in flow. It sets up providers and state management for its children.\n * Must wrap all sign-in related components.\n *\n * @param {string} path - The root path the sign-in flow is mounted at. Will be automatically inferred in Next.js. You can set it to `/sign-in` for example.\n * @param {React.ReactNode} fallback - Fallback markup to render while Clerk is loading. Default: `null`\n * @param {string} routing - If you want to render Clerk Elements in e.g. a modal, use the `'virtual'` routing mode. Default: `'path'`\n *\n * @example\n * import * as SignIn from \"@clerk/elements/sign-in\"\n *\n * export default SignInPage = () => (\n * <SignIn.Root>\n * </SignIn.Root>\n * )\n */\nexport function SignInRoot({\n children,\n exampleMode = false,\n fallback = null,\n path: pathProp,\n routing = ROUTING.path,\n}: SignInRootProps): JSX.Element | null {\n const clerk = useClerk();\n const router = (routing === ROUTING.virtual ? useVirtualRouter : useNextRouter)();\n const pathname = router.pathname();\n const inferredPath = router.inferredBasePath?.();\n const path = pathProp || inferredPath || SIGN_IN_DEFAULT_BASE_PATH;\n const isRootPath = path === pathname;\n\n clerk.telemetry?.record(\n eventComponentMounted('Elements_SignInRoot', {\n exampleMode,\n fallback: Boolean(fallback),\n path,\n routing,\n }),\n );\n\n return (\n <ClerkHostRouterContext.Provider value={router}>\n <Router basePath={path}>\n <FormStoreProvider>\n <SignInFlowProvider\n exampleMode={exampleMode}\n fallback={fallback}\n isRootPath={isRootPath}\n >\n {children}\n </SignInFlowProvider>\n </FormStoreProvider>\n </Router>\n </ClerkHostRouterContext.Provider>\n );\n}\n","export function safeAccess(fn: any, fallback: any) {\n try {\n return fn();\n } catch {\n return fallback;\n }\n}\n","import type { SignUpModes } from '@clerk/types';\n\nimport { safeAccess } from '~/utils/safe-access';\n\nexport const SSO_CALLBACK_PATH_ROUTE = '/sso-callback';\nexport const CHOOSE_SESSION_PATH_ROUTE = '/choose';\nexport const MAGIC_LINK_VERIFY_PATH_ROUTE = '/verify';\n\nexport const SIGN_UP_MODES: Record<string, SignUpModes> = {\n PUBLIC: 'public',\n RESTRICTED: 'restricted',\n};\n\n// TODO: remove reliance on next-specific variables here\nexport const SIGN_IN_DEFAULT_BASE_PATH = safeAccess(\n () => process.env.CLERK_SIGN_IN_URL ?? process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL,\n '/sign-in',\n);\nexport const SIGN_UP_DEFAULT_BASE_PATH = safeAccess(\n () => process.env.CLERK_SIGN_UP_URL ?? process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL,\n '/sign-up',\n);\n\n// The version that Next added support for the window.history.pushState and replaceState APIs.\n// ref: https://nextjs.org/blog/next-14-1#windowhistorypushstate-and-windowhistoryreplacestate\nexport const NEXT_WINDOW_HISTORY_SUPPORT_VERSION = '14.1.0';\n\nexport const SEARCH_PARAMS = {\n createdSession: '__clerk_created_session',\n handshake: '__clerk_handshake',\n help: '__clerk_help',\n invitationToken: '__clerk_invitation_token',\n modalState: '__clerk_modal_state',\n satelliteUrl: '__clerk_satellite_url',\n status: '__clerk_status',\n synced: '__clerk_synced',\n ticket: '__clerk_ticket',\n transfer: '__clerk_transfer',\n} as const;\n\nexport const RESENDABLE_COUNTDOWN_DEFAULT = 60;\n\nexport const CAPTCHA_ELEMENT_ID = 'clerk-captcha';\n\n// Pulled from: https://github.com/clerk/javascript/blob/c7d626292a9fd12ca0f1b31a1035e711b6e99531/packages/clerk-js/src/core/constants.ts#L15\nexport const ERROR_CODES = {\n FORM_IDENTIFIER_NOT_FOUND: 'form_identifier_not_found',\n FORM_PASSWORD_INCORRECT: 'form_password_incorrect',\n INVALID_STRATEGY_FOR_USER: 'strategy_for_user_invalid',\n NOT_ALLOWED_TO_SIGN_UP: 'not_allowed_to_sign_up',\n OAUTH_ACCESS_DENIED: 'oauth_access_denied',\n OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: 'oauth_email_domain_reserved_by_saml',\n NOT_ALLOWED_ACCESS: 'not_allowed_access',\n SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing',\n USER_LOCKED: 'user_locked',\n ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing',\n ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch',\n ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch',\n SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch',\n ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: 'organization_membership_quota_exceeded_for_sso',\n};\n\nexport const ROUTING = {\n path: 'path',\n virtual: 'virtual',\n hash: 'hash',\n} as const;\n\nexport type ROUTING = (typeof ROUTING)[keyof typeof ROUTING];\n","import { createActorContext } from '@xstate/react';\nimport type { SnapshotFrom } from 'xstate';\n\nimport { FormMachine } from '~/internals/machines/form';\nimport { inspect } from '~/internals/utils/inspector';\n\nexport type SnapshotState = SnapshotFrom<typeof FormMachine>;\n\nconst FormMachineContext = createActorContext(FormMachine, { inspect });\n\nexport const FormStoreProvider = FormMachineContext.Provider;\nexport const useFormStore = FormMachineContext.useActorRef;\nexport const useFormSelector = FormMachineContext.useSelector;\n\n/**\n * Selects a global error, if it exists\n */\nexport const globalErrorsSelector = (state: SnapshotState) => state.context.errors;\n\n/**\n * Selects if a specific field has a value\n */\nexport const fieldValueSelector = (name: string | undefined) => (state: SnapshotState) =>\n name ? state.context.fields.get(name)?.value : '';\n\n/**\n * Selects if a specific field has a value\n */\nexport const fieldHasValueSelector = (name: string | undefined) => (state: SnapshotState) =>\n Boolean(fieldValueSelector(name)(state));\n\ntype MapValue<A> = A extends Map<any, infer V> ? V : never;\n\n/**\n * Selects field-specific feedback, if they exist\n *\n * We declare an explicit return type here because TypeScript's inference results in the subtype reduction of the\n * union used for feedback. Explicitly declaring the return type allows for all members of the union to be\n * included in the return type.\n */\nexport const fieldFeedbackSelector =\n (name: string | undefined) =>\n (state: SnapshotState): MapValue<SnapshotState['context']['fields']>['feedback'] | undefined =>\n name ? state.context.fields.get(name)?.feedback : undefined;\n","import { isClerkAPIResponseError, isKnownError, isMetamaskError } from '@clerk/shared/error';\nimport { snakeToCamel } from '@clerk/shared/underscore';\nimport type { ClerkAPIError } from '@clerk/types';\nimport type { MachineContext } from 'xstate';\nimport { assign, enqueueActions, setup } from 'xstate';\n\nimport { ClerkElementsError, ClerkElementsFieldError } from '~/internals/errors';\n\nimport type { FieldDetails, FormDefaultValues, FormFields } from './form.types';\n\nexport interface FormMachineContext extends MachineContext {\n defaultValues: FormDefaultValues;\n errors: ClerkElementsError[];\n fields: FormFields;\n hidden?: Set<string>;\n missing?: Set<string>;\n optional?: Set<string>;\n progressive: boolean;\n required?: Set<string>;\n}\n\nexport type FormMachineEvents =\n | { type: 'FIELD.ADD'; field: Pick<FieldDetails, 'name' | 'type' | 'value' | 'checked' | 'disabled'> }\n | { type: 'FIELD.REMOVE'; field: Pick<FieldDetails, 'name'> }\n | { type: 'FIELD.ENABLE'; field: Pick<FieldDetails, 'name'> }\n | { type: 'FIELD.DISABLE'; field: Pick<FieldDetails, 'name'> }\n | {\n type: 'MARK_AS_PROGRESSIVE';\n defaultValues: FormDefaultValues;\n missing: string[];\n optional: string[];\n required: string[];\n }\n | {\n type: 'PREFILL_DEFAULT_VALUES';\n defaultValues: FormDefaultValues;\n }\n | { type: 'UNMARK_AS_PROGRESSIVE' }\n | {\n type: 'FIELD.UPDATE';\n field: Pick<FieldDetails, 'name' | 'value' | 'checked' | 'disabled'>;\n }\n | { type: 'ERRORS.SET'; error: any }\n | { type: 'ERRORS.CLEAR' }\n | {\n type: 'FIELD.FEEDBACK.SET';\n field: Pick<FieldDetails, 'name' | 'feedback'>;\n }\n | {\n type: 'FIELD.FEEDBACK.CLEAR';\n field: Pick<FieldDetails, 'name'>;\n }\n | { type: 'FIELD.FEEDBACK.CLEAR.ALL' };\n\ntype FormMachineTypes = {\n events: FormMachineEvents;\n context: FormMachineContext;\n};\n\nexport type TFormMachine = typeof FormMachine;\n\n/**\n * A machine for managing form state.\n * This machine is used alongside our other, flow-specific machines and a reference to a spawned FormMachine actor is used in the flows to interact with the form state.\n */\nexport const FormMachine = setup({\n actions: {\n setGlobalErrors: assign({\n errors: (_, params: { errors: ClerkElementsError[] }) => [...params.errors],\n }),\n setFieldFeedback: assign({\n fields: ({ context }, params: Pick<FieldDetails, 'name' | 'feedback'>) => {\n if (!params.name) {\n throw new Error('Field name is required');\n }\n\n const fieldName = params.name;\n if (context.fields.has(fieldName)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(fieldName)!.feedback = params.feedback;\n }\n\n return context.fields;\n },\n }),\n },\n types: {} as FormMachineTypes,\n}).createMachine({\n id: 'Form',\n context: () => ({\n defaultValues: new Map(),\n errors: [],\n fields: new Map(),\n progressive: false,\n }),\n on: {\n 'ERRORS.SET': {\n actions: enqueueActions(({ enqueue, event }) => {\n const isClerkAPIError = (err: any): err is ClerkAPIError => 'meta' in err;\n\n if (isKnownError(event.error)) {\n const fields: Record<string, ClerkElementsFieldError[]> = {};\n const globalErrors: ClerkElementsError[] = [];\n const errors = isClerkAPIResponseError(event.error) ? event.error?.errors : [event.error];\n\n for (const error of errors) {\n const name = isClerkAPIError(error) ? snakeToCamel(error.meta?.paramName) : null;\n\n if (!name || isMetamaskError(error)) {\n globalErrors.push(ClerkElementsError.fromAPIError(error));\n continue;\n }\n\n if (!fields[name]) {\n fields[name] = [];\n }\n\n fields[name]?.push(ClerkElementsFieldError.fromAPIError(error));\n }\n\n enqueue({\n type: 'setGlobalErrors',\n params: {\n errors: globalErrors,\n },\n });\n\n for (const field in fields) {\n enqueue({\n type: 'setFieldFeedback',\n params: {\n name: field,\n feedback: {\n type: 'error',\n message: fields[field][0],\n },\n },\n });\n }\n }\n }),\n },\n 'ERRORS.CLEAR': {\n actions: assign({\n errors: () => [],\n }),\n },\n 'FIELD.ADD': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n event.field.value = event.field.value || context.defaultValues.get(event.field.name) || undefined;\n\n context.fields.set(event.field.name, event.field);\n return context.fields;\n },\n }),\n },\n 'FIELD.UPDATE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.checked = event.field.checked;\n field.disabled = event.field.disabled ?? field.disabled;\n field.value = event.field.value;\n\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.DISABLE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.disabled = true;\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.ENABLE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.disabled = false;\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.REMOVE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n context.fields.delete(event.field.name);\n return context.fields;\n },\n }),\n },\n 'FIELD.FEEDBACK.SET': {\n actions: [\n {\n type: 'setFieldFeedback',\n params: ({ event }) => event.field,\n },\n ],\n },\n 'FIELD.FEEDBACK.CLEAR': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n if (context.fields.has(event.field.name)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(event.field.name)!.feedback = undefined;\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.FEEDBACK.CLEAR.ALL': {\n actions: assign({\n fields: ({ context }) => {\n context.fields.forEach(field => {\n field.feedback = undefined;\n });\n\n return context.fields;\n },\n }),\n },\n MARK_AS_PROGRESSIVE: {\n actions: assign(({ event }) => {\n const missing = new Set(event.missing);\n\n return {\n defaultValues: event.defaultValues,\n hidden: new Set([...event.required.filter(f => !missing.has(f)), ...event.optional]),\n missing,\n optional: new Set(event.optional),\n progressive: true,\n required: new Set(event.required),\n };\n }),\n },\n UNMARK_AS_PROGRESSIVE: {\n actions: assign({\n defaultValues: new Map(),\n hidden: undefined,\n missing: undefined,\n optional: undefined,\n progressive: false,\n required: undefined,\n }),\n },\n PREFILL_DEFAULT_VALUES: {\n actions: assign(({ event }) => {\n return {\n defaultValues: event.defaultValues,\n };\n }),\n },\n },\n});\n","// eslint-disable-next-line no-restricted-imports\nimport type { MetamaskError } from '@clerk/shared';\nimport type { ClerkAPIError } from '@clerk/types';\n\nexport abstract class ClerkElementsErrorBase extends Error {\n clerkError = true;\n clerkElementsError = true;\n rawMessage: string;\n\n constructor(\n readonly code: string,\n message: string,\n ) {\n super(message);\n\n this.name = 'ClerkElementsError';\n this.rawMessage = message;\n }\n\n toString() {\n return `[${this.name}]\\nCode: ${this.code}\\nMessage: ${this.message}`;\n }\n}\n\nexport class ClerkElementsError extends ClerkElementsErrorBase {\n static fromAPIError(error: ClerkAPIError | MetamaskError) {\n return new ClerkElementsError(\n error.code.toString(),\n // @ts-expect-error - Expected that longMessage isn't a property of MetamaskError\n error.longMessage || error.message,\n );\n }\n\n constructor(code: string, message: string) {\n super(code, message);\n this.name = 'ClerkElementsError';\n }\n}\n\nexport class ClerkElementsRuntimeError extends ClerkElementsErrorBase {\n constructor(message: string) {\n super('elements_runtime_error', message);\n this.name = 'ClerkElementsRuntimeError';\n }\n}\n\nexport class ClerkElementsFieldError extends ClerkElementsErrorBase {\n static fromAPIError(error: ClerkAPIError) {\n return new ClerkElementsFieldError(error.code, error.longMessage || error.message);\n }\n\n constructor(code: string, message: string) {\n super(code, message);\n this.name = 'ClerkElementsFieldError';\n }\n\n get validityState() {\n return this.code;\n }\n\n get forceMatch() {\n return true;\n }\n\n matchFn = () => true;\n}\n","import type { InspectionEvent, Observer } from 'xstate';\n\nimport { getInspector as getBrowserInspector } from './browser';\nimport { getInspector as getConsoleInspector } from './console';\n\nexport let inspect: Observer<InspectionEvent> | undefined;\n\nif (__DEV__) {\n inspect = getBrowserInspector() ?? getConsoleInspector();\n}\n\nconst inspector = {\n inspect,\n};\n\nexport default inspector;\n","import { isClerkAPIResponseError } from '@clerk/shared/error';\nimport type {\n AttemptFirstFactorParams,\n EmailCodeAttempt,\n PasswordAttempt,\n PhoneCodeAttempt,\n PrepareFirstFactorParams,\n PrepareSecondFactorParams,\n ResetPasswordEmailCodeAttempt,\n ResetPasswordPhoneCodeAttempt,\n SignInFirstFactor,\n SignInResource,\n SignInSecondFactor,\n Web3Attempt,\n} from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { assign, fromPromise, log, sendTo, setup } from 'xstate';\n\nimport {\n MAGIC_LINK_VERIFY_PATH_ROUTE,\n RESENDABLE_COUNTDOWN_DEFAULT,\n SIGN_IN_DEFAULT_BASE_PATH,\n} from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport type { SignInStrategyName, WithParams } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { determineStartingSignInFactor, determineStartingSignInSecondFactor } from '~/internals/machines/sign-in/utils';\nimport { assertActorEventError, assertIsDefined } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignInVerificationSchema } from './verification.types';\nimport { SignInVerificationDelays } from './verification.types';\n\nexport type TSignInFirstFactorMachine = typeof SignInFirstFactorMachine;\nexport type TSignInSecondFactorMachine = typeof SignInSecondFactorMachine;\n\nexport type DetermineStartingFactorInput = {\n parent: SignInRouterMachineActorRef;\n};\n\nexport type PrepareFirstFactorInput = WithParams<PrepareFirstFactorParams> & {\n parent: SignInRouterMachineActorRef;\n resendable: boolean;\n};\nexport type PrepareSecondFactorInput = WithParams<PrepareSecondFactorParams> & {\n parent: SignInRouterMachineActorRef;\n resendable: boolean;\n};\n\nexport type AttemptFirstFactorInput = {\n parent: SignInRouterMachineActorRef;\n fields: FormFields;\n currentFactor: SignInFirstFactor | null;\n};\nexport type AttemptSecondFactorInput = {\n parent: SignInRouterMachineActorRef;\n fields: FormFields;\n currentFactor: SignInSecondFactor | null;\n};\n\nconst isNonPreparableStrategy = (strategy?: SignInFirstFactor['strategy'] | SignInSecondFactor['strategy']) => {\n if (!strategy) {\n return false;\n }\n\n return ['passkey', 'password'].includes(strategy);\n};\n\nexport const SignInVerificationMachineId = 'SignInVerification';\n\nconst SignInVerificationMachine = setup({\n actors: {\n determineStartingFactor: fromPromise<SignInFirstFactor | SignInSecondFactor | null, DetermineStartingFactorInput>(\n () => Promise.reject(new ClerkElementsRuntimeError('Actor `determineStartingFactor` must be overridden')),\n ),\n prepare: fromPromise<SignInResource, PrepareFirstFactorInput | PrepareSecondFactorInput>(() =>\n Promise.reject(new ClerkElementsRuntimeError('Actor `prepare` must be overridden')),\n ),\n attempt: fromPromise<SignInResource, AttemptFirstFactorInput | AttemptSecondFactorInput>(() =>\n Promise.reject(new ClerkElementsRuntimeError('Actor `attempt` must be overridden')),\n ),\n attemptPasskey: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; flow: 'autofill' | 'discoverable' | undefined }\n >(({ input: { parent, flow } }) => {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey({\n flow,\n });\n }),\n },\n actions: {\n resendableTick: assign(({ context }) => ({\n resendable: context.resendableAfter === 0,\n resendableAfter: context.resendableAfter > 0 ? context.resendableAfter - 1 : context.resendableAfter,\n })),\n resendableReset: assign({\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n validateRegisteredStrategies: ({ context }) => {\n const clerk = context.parent.getSnapshot().context.clerk;\n\n if (clerk.__unstable__environment?.isProduction()) {\n return;\n }\n\n // Only show these warnings in development!\n if (process.env.NODE_ENV === 'development') {\n if (\n clerk.client.signIn.supportedFirstFactors &&\n !clerk.client.signIn.supportedFirstFactors.every((factor: SignInFirstFactor) =>\n context.registeredStrategies.has(factor.strategy),\n )\n ) {\n console.warn(\n `Clerk: Your instance is configured to support these strategies: ${clerk.client.signIn.supportedFirstFactors\n .map((factor: SignInFirstFactor) => factor.strategy)\n .join(', ')}, but the rendered strategies are: ${Array.from(context.registeredStrategies).join(\n ', ',\n )}. Make sure to render a <Strategy> component for each supported strategy. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n }\n\n if (\n clerk.client.signIn.supportedSecondFactors &&\n !clerk.client.signIn.supportedSecondFactors.every((factor: SignInSecondFactor) =>\n context.registeredStrategies.has(factor.strategy),\n )\n ) {\n console.warn(\n `Clerk: Your instance is configured to support these 2FA strategies: ${clerk.client.signIn.supportedSecondFactors\n .map((f: SignInSecondFactor) => f.strategy)\n .join(', ')}, but the rendered strategies are: ${Array.from(context.registeredStrategies).join(\n ', ',\n )}. Make sure to render a <Strategy> component for each supported strategy. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n }\n\n const strategiesUsedButNotActivated = Array.from(context.registeredStrategies).filter(\n strategy =>\n !clerk.client.signIn.supportedFirstFactors?.some(\n (supported: SignInFirstFactor) => supported.strategy === strategy,\n ),\n );\n\n if (strategiesUsedButNotActivated.length > 0) {\n console.warn(\n `Clerk: These rendered strategies are not configured for your instance: ${strategiesUsedButNotActivated.join(', ')}. If this is unexpected, make sure to enable them in your Clerk dashboard: https://dashboard.clerk.com/last-active?path=/user-authentication/email-phone-username`,\n );\n }\n\n if (context.currentFactor?.strategy && !context.registeredStrategies.has(context.currentFactor?.strategy)) {\n throw new ClerkElementsRuntimeError(\n `Your sign-in attempt is missing a ${context.currentFactor?.strategy} strategy. Make sure <Strategy name=\"${context.currentFactor?.strategy}\"> is rendered in your flow. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n } else if (!context.currentFactor?.strategy) {\n throw new ClerkElementsRuntimeError(\n 'Unable to determine an authentication strategy to verify. This means your instance is misconfigured. Visit the Clerk Dashboard and verify that your instance has authentication strategies enabled: https://dashboard.clerk.com/last-active?path=/user-authentication/email-phone-username',\n );\n }\n }\n },\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignInResource>).output }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n setConsoleError: ({ event }) => {\n if (process.env.NODE_ENV !== 'development') {\n return;\n }\n\n assertActorEventError(event);\n\n const error = isClerkAPIResponseError(event.error) ? event.error.errors[0].longMessage : event.error.message;\n\n console.error(`Unable to fulfill the prepare or attempt request for the sign-in verification.\n Error: ${error}\n Please open an issue if you continue to run into this issue.`);\n },\n },\n guards: {\n isResendable: ({ context }) => context.resendable || context.resendableAfter === 0,\n isNeverResendable: ({ context }) => isNonPreparableStrategy(context.currentFactor?.strategy),\n },\n delays: SignInVerificationDelays,\n types: {} as SignInVerificationSchema,\n}).createMachine({\n id: SignInVerificationMachineId,\n context: ({ input }) => ({\n currentFactor: null,\n basePath: input.basePath || SIGN_IN_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n loadingStep: 'verifications',\n parent: input.parent,\n registeredStrategies: new Set<SignInStrategyName>(),\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n initial: 'Init',\n on: {\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'STRATEGY.REGISTER': {\n actions: assign({\n registeredStrategies: ({ context, event }) => context.registeredStrategies.add(event.factor),\n }),\n },\n 'STRATEGY.UNREGISTER': {\n actions: assign({\n registeredStrategies: ({ context, event }) => {\n context.registeredStrategies.delete(event.factor);\n return context.registeredStrategies;\n },\n }),\n },\n },\n states: {\n Init: {\n tags: ['state:preparing', 'state:loading'],\n invoke: {\n id: 'determineStartingFactor',\n src: 'determineStartingFactor',\n input: ({ context }) => ({\n parent: context.parent,\n }),\n onDone: {\n target: 'Preparing',\n actions: assign({\n currentFactor: ({ event }) => event.output,\n }),\n },\n onError: {\n target: 'Preparing',\n actions: [\n log('Clerk [Sign In Verification]: Error determining starting factor'),\n assign({\n currentFactor: { strategy: 'password' },\n }),\n ],\n },\n },\n },\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n invoke: {\n id: 'prepare',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n resendable: context.resendable,\n params: {\n ...context.currentFactor,\n redirectUrl: `${window.location.origin}${context.basePath}${MAGIC_LINK_VERIFY_PATH_ROUTE}`,\n } as PrepareFirstFactorParams,\n }),\n onDone: {\n actions: 'resendableReset',\n target: 'Pending',\n },\n onError: {\n actions: ['setFormErrors', 'setConsoleError'],\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n 'AUTHENTICATE.PASSKEY': {\n target: 'AttemptingPasskey',\n reenter: true,\n },\n 'NAVIGATE.CHOOSE_STRATEGY': 'ChooseStrategy',\n 'NAVIGATE.FORGOT_PASSWORD': 'ChooseStrategy',\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'Init',\n states: {\n Init: {\n description: 'Marks appropriate factors as never resendable.',\n always: [\n {\n guard: 'isNeverResendable',\n target: 'NeverResendable',\n },\n {\n target: 'NotResendable',\n },\n ],\n },\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NeverResendable: {\n description: 'Handles never resendable',\n on: {\n RETRY: {\n actions: log('Never retriable'),\n },\n },\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n after: {\n 3000: {\n actions: 'validateRegisteredStrategies',\n },\n },\n },\n ChooseStrategy: {\n description: 'Handles both choose strategy and forgot password as the latter is similar in functionality',\n tags: ['state:choose-strategy', 'state:forgot-password'],\n on: {\n 'STRATEGY.UPDATE': {\n actions: assign({ currentFactor: ({ event }) => event.factor || null }),\n target: 'Preparing',\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n currentFactor: context.currentFactor as SignInFirstFactor | null,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'setConsoleError', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskey: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPasskey',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'discoverable',\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n Hist: {\n type: 'history',\n },\n },\n});\n\nexport const SignInFirstFactorMachine = SignInVerificationMachine.provide({\n actors: {\n determineStartingFactor: fromPromise(async ({ input }) => {\n const clerk = input.parent.getSnapshot().context.clerk;\n\n return Promise.resolve(\n determineStartingSignInFactor(\n clerk.client.signIn.supportedFirstFactors,\n clerk.client.signIn.identifier,\n clerk.__unstable__environment?.displayConfig.preferredSignInStrategy,\n ),\n );\n }),\n prepare: fromPromise(async ({ input }) => {\n // `input` is a union of PrepareFirstFactor and PrepareSecondFactor. Since we're passing params to\n // prepareFirstFactor, we need to assert that the input is a PrepareFirstFactor. For some reason, ESLint thinks\n // the assertion is unnecessary, and will remove it during the pre-commit hook. To prevent that, we disable the\n // rule for the line.\n\n const { params, parent, resendable } = input as PrepareFirstFactorInput;\n const clerk = parent.getSnapshot().context.clerk;\n\n // If a prepare call has already been fired recently, don't re-send\n const currentVerificationExpiration = clerk.client.signIn.firstFactorVerification.expireAt;\n const needsPrepare = resendable || !currentVerificationExpiration || currentVerificationExpiration < new Date();\n\n if (isNonPreparableStrategy(params?.strategy) || !needsPrepare) {\n return Promise.resolve(clerk.client.signIn);\n }\n\n assertIsDefined(params, 'First factor params');\n return await clerk.client.signIn.prepareFirstFactor(params);\n }),\n attempt: fromPromise(async ({ input }) => {\n const { currentFactor, fields, parent } = input as AttemptFirstFactorInput;\n\n assertIsDefined(currentFactor, 'Current factor');\n\n let attemptParams: AttemptFirstFactorParams;\n\n const strategy = currentFactor.strategy;\n const code = fields.get('code')?.value as string | undefined;\n const password = fields.get('password')?.value as string | undefined;\n\n switch (strategy) {\n case 'passkey': {\n return await parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey();\n }\n case 'password': {\n assertIsDefined(password, 'Password');\n\n attemptParams = {\n strategy,\n password,\n } satisfies PasswordAttempt;\n\n break;\n }\n case 'reset_password_phone_code':\n case 'reset_password_email_code': {\n assertIsDefined(code, 'Code for resetting phone/email');\n\n attemptParams = {\n strategy,\n code,\n password,\n } satisfies ResetPasswordPhoneCodeAttempt | ResetPasswordEmailCodeAttempt;\n\n break;\n }\n case 'phone_code':\n case 'email_code': {\n assertIsDefined(code, 'Code for phone/email');\n\n attemptParams = {\n strategy,\n code,\n } satisfies PhoneCodeAttempt | EmailCodeAttempt;\n\n break;\n }\n case 'web3_metamask_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 Metamask signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n case 'web3_coinbase_wallet_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 Coinbase Wallet signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n case 'web3_okx_wallet_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 OKX Wallet signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n default:\n throw new ClerkElementsRuntimeError(`Invalid strategy: ${strategy}`);\n }\n\n return await parent.getSnapshot().context.clerk.client.signIn.attemptFirstFactor(attemptParams);\n }),\n },\n});\n\nexport const SignInSecondFactorMachine = SignInVerificationMachine.provide({\n actors: {\n determineStartingFactor: fromPromise(async ({ input }) =>\n Promise.resolve(\n determineStartingSignInSecondFactor(\n input.parent.getSnapshot().context.clerk.client.signIn.supportedSecondFactors,\n ),\n ),\n ),\n prepare: fromPromise(async ({ input }) => {\n const { params, parent, resendable } = input as PrepareSecondFactorInput;\n const clerk = parent.getSnapshot().context.clerk;\n\n // If a prepare call has already been fired recently, don't re-send\n const currentVerificationExpiration = clerk.client.signIn.secondFactorVerification.expireAt;\n const needsPrepare = resendable || !currentVerificationExpiration || currentVerificationExpiration < new Date();\n\n assertIsDefined(params, 'Second factor params');\n\n if (params.strategy !== 'phone_code' || !needsPrepare) {\n return Promise.resolve(clerk.client.signIn);\n }\n\n return await clerk.client.signIn.prepareSecondFactor({\n strategy: params.strategy,\n phoneNumberId: params.phoneNumberId,\n });\n }),\n attempt: fromPromise(async ({ input }) => {\n const { fields, parent, currentFactor } = input as AttemptSecondFactorInput;\n\n const code = fields.get('code')?.value as string;\n\n assertIsDefined(currentFactor, 'Current factor');\n assertIsDefined(code, 'Code');\n\n return await parent.getSnapshot().context.clerk.client.signIn.attemptSecondFactor({\n strategy: currentFactor.strategy,\n code,\n });\n }),\n },\n});\n","import type { SignInStrategy } from '@clerk/types';\n\nimport type {\n SignInResetPasswordContext,\n SignInResetPasswordEvents,\n SignInStartContext,\n SignInStartEvents,\n SignInVerificationContext,\n SignInVerificationEvents,\n} from '~/internals/machines/sign-in';\nimport type {\n SignUpContinueContext,\n SignUpContinueEvents,\n SignUpStartContext,\n SignUpStartEvents,\n SignUpVerificationContext,\n SignUpVerificationEvents,\n} from '~/internals/machines/sign-up';\nimport type { ThirdPartyMachineContext, ThirdPartyMachineEvent } from '~/internals/machines/third-party';\nimport type { BaseRouterLoadingStep } from '~/internals/machines/types';\n\ntype SendToLoadingProps = {\n context:\n | SignInStartContext\n | SignInVerificationContext\n | SignInResetPasswordContext\n | ThirdPartyMachineContext\n | SignUpStartContext\n | SignUpContinueContext\n | SignUpVerificationContext;\n event:\n | SignInStartEvents\n | SignInVerificationEvents\n | SignInResetPasswordEvents\n | ThirdPartyMachineEvent\n | SignUpStartEvents\n | SignUpContinueEvents\n | SignUpVerificationEvents;\n};\n\nexport function sendToLoading({ context, event }: SendToLoadingProps): void {\n // Unrelated to the `context` of each machine, the step passed to the loading event must use BaseRouterLoadingStep\n let step: BaseRouterLoadingStep | undefined;\n let strategy: SignInStrategy | undefined;\n let action: string | undefined;\n\n // By default the loading state is set to `true` when this function is called\n // Only if these events are received, the loading state is set to `false`\n // Early return here to avoid unnecessary checks\n if (event.type.startsWith('xstate.done.') || event.type.startsWith('xstate.error.')) {\n return context.parent.send({\n type: 'LOADING',\n isLoading: false,\n step: undefined,\n strategy: undefined,\n });\n }\n\n // `context.loadingStep: \"strategy\"` is not a valid BaseRouterLoadingStep (on purpose) so needs to be handled here. This context should be used when `step` should be undefined and `strategy` be defined instead\n if (context.loadingStep === 'strategy') {\n step = undefined;\n\n // Third-party machine handling\n if (event.type === 'REDIRECT') {\n strategy = event.params.strategy;\n }\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n });\n } else if (context.loadingStep === 'continue') {\n step = 'continue';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else if (context.loadingStep === 'reset-password') {\n step = 'reset-password';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else if (context.loadingStep === 'start') {\n step = 'start';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else {\n step = context.loadingStep;\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n }\n}\n","// These utilities are ported from: packages/clerk-js/src/ui/components/SignIn/utils.ts\n// They should be functionally identical.\nimport { isWebAuthnSupported } from '@clerk/shared/webauthn';\nimport type {\n PreferredSignInStrategy,\n SignInFactor,\n SignInFirstFactor,\n SignInSecondFactor,\n SignInStrategy,\n} from '@clerk/types';\n\n// Factor sorting - https://github.com/clerk/javascript/blob/5764e2911790051589bb5c4f3b1a2c79f7f30c7e/packages/clerk-js/src/ui/utils/factorSorting.ts\nconst makeSortingOrderMap = <T extends string>(arr: T[]): Record<T, number> =>\n arr.reduce(\n (acc, k, i) => {\n acc[k] = i;\n return acc;\n },\n {} as Record<T, number>,\n );\n\nconst STRATEGY_SORT_ORDER_PASSWORD_PREF = makeSortingOrderMap([\n 'passkey',\n 'password',\n 'email_link',\n 'email_code',\n 'phone_code',\n] as SignInStrategy[]);\n\nconst STRATEGY_SORT_ORDER_OTP_PREF = makeSortingOrderMap([\n 'email_code',\n 'email_link',\n 'phone_code',\n 'passkey',\n 'password',\n] as SignInStrategy[]);\n\nconst makeSortingFunction =\n (sortingMap: Record<SignInStrategy, number>) =>\n (a: SignInFactor, b: SignInFactor): number => {\n const orderA = sortingMap[a.strategy];\n const orderB = sortingMap[b.strategy];\n if (orderA === undefined || orderB === undefined) {\n return 0;\n }\n return orderA - orderB;\n };\n\nconst passwordPrefFactorComparator = makeSortingFunction(STRATEGY_SORT_ORDER_PASSWORD_PREF);\nconst otpPrefFactorComparator = makeSortingFunction(STRATEGY_SORT_ORDER_OTP_PREF);\n\nconst findFactorForIdentifier = (i: string | null) => (f: SignInFactor) => {\n return 'safeIdentifier' in f && f.safeIdentifier === i;\n};\n\n// The algorithm can be found at\n// https://www.notion.so/clerkdev/Implement-sign-in-alt-methods-e6e60ffb644645b3a0553b50556468ce\nexport function determineStartingSignInFactor(\n firstFactors: SignInFirstFactor[] | null,\n identifier: string | null,\n preferredSignInStrategy?: PreferredSignInStrategy,\n) {\n if (!firstFactors || firstFactors.length === 0) {\n return null;\n }\n\n return preferredSignInStrategy === 'password'\n ? determineStrategyWhenPasswordIsPreferred(firstFactors, identifier)\n : determineStrategyWhenOTPIsPreferred(firstFactors, identifier);\n}\n\nfunction findPasskeyStrategy(factors: SignInFirstFactor[]) {\n if (isWebAuthnSupported()) {\n const passkeyFactor = factors.find(({ strategy }) => strategy === 'passkey');\n\n if (passkeyFactor) {\n return passkeyFactor;\n }\n }\n return null;\n}\n\nfunction determineStrategyWhenPasswordIsPreferred(factors: SignInFirstFactor[], identifier: string | null) {\n const passkeyFactor = findPasskeyStrategy(factors);\n if (passkeyFactor) {\n return passkeyFactor;\n }\n const selected = factors.sort(passwordPrefFactorComparator)[0];\n if (selected.strategy === 'password') {\n return selected;\n }\n return factors.find(findFactorForIdentifier(identifier)) || selected || null;\n}\n\nfunction determineStrategyWhenOTPIsPreferred(factors: SignInFirstFactor[], identifier: string | null) {\n const passkeyFactor = findPasskeyStrategy(factors);\n if (passkeyFactor) {\n return passkeyFactor;\n }\n\n const sortedBasedOnPrefFactor = factors.sort(otpPrefFactorComparator);\n const forIdentifier = sortedBasedOnPrefFactor.find(findFactorForIdentifier(identifier));\n if (forIdentifier) {\n return forIdentifier;\n }\n const firstBasedOnPref = sortedBasedOnPrefFactor[0];\n if (firstBasedOnPref.strategy === 'email_link') {\n return firstBasedOnPref;\n }\n return factors.find(findFactorForIdentifier(identifier)) || firstBasedOnPref || null;\n}\n\n// The priority of second factors is: TOTP -> Phone code -> any other factor\nexport function determineStartingSignInSecondFactor(secondFactors: SignInSecondFactor[] | null) {\n if (!secondFactors || secondFactors.length === 0) {\n return null;\n }\n\n const totpFactor = secondFactors.find(f => f.strategy === 'totp');\n if (totpFactor) {\n return totpFactor;\n }\n\n const phoneCodeFactor = secondFactors.find(f => f.strategy === 'phone_code');\n if (phoneCodeFactor) {\n return phoneCodeFactor;\n }\n\n return secondFactors[0];\n}\n","import type { DoneActorEvent, ErrorActorEvent, EventObject } from 'xstate';\n\nexport function assertIsDefined<T>(value: T, label?: string): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(`${label || value} is not defined`);\n }\n}\n\nexport function assertActorEventDone<T>(event: EventObject): asserts event is DoneActorEvent<T> {\n if ('output' in event === false) {\n throw new Error(`Expected a done event, got \"${event.type}\"`);\n }\n}\n\nexport function assertActorEventError<T = Error>(event: EventObject): asserts event is ErrorActorEvent<T> {\n if ('error' in event === false) {\n throw new Error(`Expected an error event, got \"${event.type}\"`);\n }\n}\n","import type { ClerkAPIResponseError } from '@clerk/shared/error';\nimport type { SignInFactor } from '@clerk/types';\nimport type { ActorRefFrom, ErrorActorEvent } from 'xstate';\n\nimport type { FormMachine } from '~/internals/machines/form';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport type SignInVerificationTags =\n | 'state:attempting'\n | 'state:choose-strategy'\n | 'state:forgot-password'\n | 'state:loading'\n | 'state:pending'\n | 'state:preparing';\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignInVerificationSubmitEvent = { type: 'SUBMIT'; action: 'submit' };\nexport type SignInVerificationFactorUpdateEvent = { type: 'STRATEGY.UPDATE'; factor: SignInFactor | undefined };\nexport type SignInVerificationRetryEvent = { type: 'RETRY' };\nexport type SignInVerificationStrategyRegisterEvent = { type: 'STRATEGY.REGISTER'; factor: SignInStrategyName };\nexport type SignInVerificationStrategyUnregisterEvent = { type: 'STRATEGY.UNREGISTER'; factor: SignInStrategyName };\n\nexport type SignInVerificationEvents =\n | ErrorActorEvent\n | SignInVerificationSubmitEvent\n | SignInVerificationFactorUpdateEvent\n | SignInVerificationRetryEvent\n | SignInVerificationStrategyRegisterEvent\n | SignInVerificationStrategyUnregisterEvent;\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport interface SignInVerificationInput {\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n basePath?: string;\n}\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport interface SignInVerificationContext {\n currentFactor: SignInFactor | null;\n error?: Error | ClerkAPIResponseError;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n loadingStep: 'verifications';\n registeredStrategies: Set<SignInStrategyName>;\n resendable: boolean;\n resendableAfter: number;\n basePath?: string;\n}\n\n// ---------------------------------- Delays ---------------------------------- //\n\nexport const SignInVerificationDelays = {\n resendableTimeout: 1_000, // 1 second\n} as const;\n\nexport type SignInVerificationDelays = keyof typeof SignInVerificationDelays;\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignInVerificationSchema {\n context: SignInVerificationContext;\n input: SignInVerificationInput;\n delays: SignInVerificationDelays;\n events: SignInVerificationEvents;\n tags: SignInVerificationTags;\n}\n","import { joinURL } from '@clerk/shared/url';\nimport { isWebAuthnAutofillSupported } from '@clerk/shared/webauthn';\nimport type { SignInStatus } from '@clerk/types';\nimport type { NonReducibleUnknown } from 'xstate';\nimport { and, assign, enqueueActions, fromPromise, log, not, or, raise, sendTo, setup } from 'xstate';\n\nimport {\n CHOOSE_SESSION_PATH_ROUTE,\n ERROR_CODES,\n ROUTING,\n SEARCH_PARAMS,\n SIGN_IN_DEFAULT_BASE_PATH,\n SIGN_UP_DEFAULT_BASE_PATH,\n SSO_CALLBACK_PATH_ROUTE,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport { ThirdPartyMachine, ThirdPartyMachineId } from '~/internals/machines/third-party';\nimport { shouldUseVirtualRouting } from '~/internals/machines/utils/next';\n\nimport { FormMachine } from '../form';\nimport { SignInResetPasswordMachine } from './reset-password.machine';\nimport type {\n SignInRouterContext,\n SignInRouterEvents,\n SignInRouterNextEvent,\n SignInRouterSchema,\n SignInRouterSessionSetActiveEvent,\n} from './router.types';\nimport { SignInStartMachine } from './start.machine';\nimport { SignInFirstFactorMachine, SignInSecondFactorMachine } from './verification.machine';\n\nexport type TSignInRouterMachine = typeof SignInRouterMachine;\n\nconst isCurrentPath =\n (path: `/${string}`) =>\n ({ context }: { context: SignInRouterContext }, _params?: NonReducibleUnknown) => {\n return context.router?.match(path) ?? false;\n };\n\nconst needsStatus =\n (status: SignInStatus) =>\n ({ context, event }: { context: SignInRouterContext; event?: SignInRouterEvents }, _?: NonReducibleUnknown) =>\n (event as SignInRouterNextEvent)?.resource?.status === status || context.clerk?.client.signIn.status === status;\n\nexport const SignInRouterMachineId = 'SignInRouter';\n\nexport const SignInRouterMachine = setup({\n actors: {\n firstFactorMachine: SignInFirstFactorMachine,\n formMachine: FormMachine,\n resetPasswordMachine: SignInResetPasswordMachine,\n startMachine: SignInStartMachine,\n secondFactorMachine: SignInSecondFactorMachine,\n thirdPartyMachine: ThirdPartyMachine,\n webAuthnAutofillSupport: fromPromise(() => isWebAuthnAutofillSupported()),\n },\n actions: {\n clearFormErrors: sendTo(({ context }) => context.formRef, { type: 'ERRORS.CLEAR' }),\n navigateInternal: ({ context }, { path, force = false }: { path: string; force?: boolean }) => {\n if (!context.router) {\n return;\n }\n if (!force && shouldUseVirtualRouting()) {\n return;\n }\n if (context.exampleMode) {\n return;\n }\n\n const resolvedPath = joinURL(context.router.basePath, path);\n if (resolvedPath === context.router.pathname()) {\n return;\n }\n\n context.router.shallowPush(resolvedPath);\n },\n navigateExternal: ({ context }, { path }: { path: string }) => context.router?.push(path),\n raiseNext: raise({ type: 'NEXT' }),\n setActive: enqueueActions(({ enqueue, check, context, event }) => {\n if (check('isExampleMode')) {\n return;\n }\n\n const id = (event as SignInRouterSessionSetActiveEvent)?.id;\n const lastActiveSessionId = context.clerk.client.lastActiveSessionId;\n const createdSessionId = ((event as SignInRouterNextEvent)?.resource || context.clerk.client.signIn)\n .createdSessionId;\n\n const session = id || createdSessionId || lastActiveSessionId || null;\n\n void context.clerk.setActive({\n session,\n redirectUrl: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n });\n\n enqueue.raise({ type: 'RESET' }, { delay: 2000 }); // Reset machine after 2s delay.\n }),\n setError: assign({\n error: (_, { error }: { error?: ClerkElementsError }) => {\n if (error) {\n return error;\n }\n return new ClerkElementsRuntimeError('Unknown error');\n },\n }),\n setFormErrors: ({ context }, params: { error: Error }) =>\n sendTo(context.formRef, {\n type: 'ERRORS.SET',\n error: params.error,\n }),\n setFormOAuthErrors: ({ context }) => {\n const errorOrig = context.clerk.client.signIn.firstFactorVerification.error;\n\n if (!errorOrig) {\n return;\n }\n\n let error: ClerkElementsError;\n\n switch (errorOrig.code) {\n case ERROR_CODES.NOT_ALLOWED_TO_SIGN_UP:\n case ERROR_CODES.OAUTH_ACCESS_DENIED:\n case ERROR_CODES.NOT_ALLOWED_ACCESS:\n case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML:\n case ERROR_CODES.USER_LOCKED:\n case ERROR_CODES.ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH:\n case ERROR_CODES.ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH:\n case ERROR_CODES.SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH:\n case ERROR_CODES.ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO:\n error = new ClerkElementsError(errorOrig.code, errorOrig.longMessage || '');\n break;\n default:\n error = new ClerkElementsError(\n 'unable_to_complete',\n 'Unable to complete action at this time. If the problem persists please contact support.',\n );\n }\n\n context.formRef.send({\n type: 'ERRORS.SET',\n error,\n });\n },\n transfer: ({ context }) => {\n const searchParams = new URLSearchParams({ __clerk_transfer: '1' });\n context.router?.push(`${context.signUpPath}?${searchParams}`);\n },\n },\n guards: {\n hasAuthenticatedViaClerkJS: ({ context }) =>\n Boolean(context.clerk.client.signIn.status === null && context.clerk.client.lastActiveSessionId),\n hasOAuthError: ({ context }) => Boolean(context.clerk?.client?.signIn?.firstFactorVerification?.error),\n hasResource: ({ context }) => Boolean(context.clerk?.client?.signIn?.status),\n hasTicket: ({ context }) => Boolean(context.ticket),\n\n isLoggedInAndSingleSession: and(['isLoggedIn', 'isSingleSessionMode', not('isExampleMode')]),\n isActivePathRoot: isCurrentPath('/'),\n isComplete: ({ context, event }) => {\n const resource = (event as SignInRouterNextEvent)?.resource;\n const signIn = context.clerk.client.signIn;\n\n return (\n (resource?.status === 'complete' && Boolean(resource?.createdSessionId)) ||\n (signIn.status === 'complete' && Boolean(signIn.createdSessionId))\n );\n },\n isLoggedIn: ({ context }) => Boolean(context.clerk?.user),\n isSingleSessionMode: ({ context }) => Boolean(context.clerk?.__unstable__environment?.authConfig.singleSessionMode),\n isExampleMode: ({ context }) => Boolean(context.exampleMode),\n\n needsStart: or([not('hasResource'), 'statusNeedsIdentifier', isCurrentPath('/')]),\n needsFirstFactor: and(['statusNeedsFirstFactor', isCurrentPath('/continue')]),\n needsSecondFactor: and(['statusNeedsSecondFactor', isCurrentPath('/continue')]),\n needsCallback: isCurrentPath(SSO_CALLBACK_PATH_ROUTE),\n needsChooseSession: isCurrentPath(CHOOSE_SESSION_PATH_ROUTE),\n needsNewPassword: and(['statusNeedsNewPassword', isCurrentPath('/new-password')]),\n\n statusNeedsIdentifier: needsStatus('needs_identifier'),\n statusNeedsFirstFactor: needsStatus('needs_first_factor'),\n statusNeedsSecondFactor: needsStatus('needs_second_factor'),\n statusNeedsNewPassword: needsStatus('needs_new_password'),\n },\n types: {} as SignInRouterSchema,\n}).createMachine({\n id: SignInRouterMachineId,\n // @ts-expect-error - Set in INIT event\n context: {},\n initial: 'Idle',\n on: {\n 'AUTHENTICATE.OAUTH': {\n actions: sendTo(ThirdPartyMachineId, ({ context, event }) => ({\n type: 'REDIRECT',\n params: {\n strategy: event.strategy,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'AUTHENTICATE.SAML': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'saml',\n identifier: context.formRef.getSnapshot().context.fields.get('identifier')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'AUTHENTICATE.ENTERPRISE_SSO': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'enterprise_sso',\n identifier: context.formRef.getSnapshot().context.fields.get('identifier')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'FORM.ATTACH': {\n description: 'Attach/re-attach the form to the router.',\n actions: enqueueActions(({ enqueue, event }) => {\n enqueue.assign({\n formRef: event.formRef,\n });\n\n // Reset the current step, to reset the form reference.\n enqueue.raise({ type: 'RESET.STEP' });\n }),\n },\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'NAVIGATE.START': '.Start',\n LOADING: {\n actions: assign(({ event }) => ({\n loading: {\n isLoading: event.isLoading,\n step: event.step,\n strategy: event.strategy,\n action: event.action,\n },\n })),\n },\n RESET: '.Idle',\n },\n states: {\n Idle: {\n invoke: {\n id: 'webAuthnAutofill',\n src: 'webAuthnAutofillSupport',\n onDone: {\n actions: assign({ webAuthnAutofillSupport: ({ event }) => event.output }),\n },\n },\n on: {\n INIT: {\n actions: assign(({ event }) => {\n const searchParams = event.router?.searchParams();\n\n return {\n clerk: event.clerk,\n exampleMode: event.exampleMode || false,\n formRef: event.formRef,\n loading: {\n isLoading: false,\n },\n router: event.router,\n signUpPath: event.signUpPath || SIGN_UP_DEFAULT_BASE_PATH,\n ticket: searchParams?.get(SEARCH_PARAMS.ticket) || undefined,\n };\n }),\n target: 'Init',\n },\n },\n },\n Init: {\n entry: enqueueActions(({ context, enqueue, self }) => {\n if (!self.getSnapshot().children[ThirdPartyMachineId]) {\n enqueue.spawnChild('thirdPartyMachine', {\n id: ThirdPartyMachineId,\n systemId: ThirdPartyMachineId,\n input: {\n basePath: context.router?.basePath ?? SIGN_IN_DEFAULT_BASE_PATH,\n flow: 'signIn',\n formRef: context.formRef,\n parent: self,\n },\n });\n }\n }),\n always: [\n {\n guard: 'needsCallback',\n target: 'Callback',\n },\n {\n guard: 'needsChooseSession',\n target: 'ChooseSession',\n },\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'isLoggedInAndSingleSession',\n actions: [\n log('Already logged in'),\n {\n type: 'navigateExternal',\n params: ({ context }) => ({\n path: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n }),\n },\n ],\n },\n {\n guard: 'needsStart',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'needsFirstFactor',\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'needsSecondFactor',\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'needsNewPassword',\n actions: { type: 'navigateInternal', params: { force: true, path: '/reset-password' } },\n target: 'ResetPassword',\n },\n {\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'hasTicket',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n ],\n },\n Start: {\n tags: ['step:start'],\n exit: 'clearFormErrors',\n invoke: {\n id: 'start',\n src: 'startMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n ticket: context.ticket,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'Start',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'AUTHENTICATE.PASSKEY.AUTOFILL': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'AUTHENTICATE.WEB3': {\n actions: sendTo('start', ({ event }) => event),\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n },\n },\n FirstFactor: {\n tags: ['step:first-factor', 'step:verifications'],\n invoke: {\n id: 'firstFactor',\n src: 'firstFactorMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n basePath: context.router?.basePath,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'AUTHENTICATE.PASSKEY': {\n actions: sendTo('firstFactor', ({ event }) => event),\n },\n 'RESET.STEP': {\n target: 'FirstFactor',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n 'STRATEGY.UPDATE': {\n description: 'Send event to verification machine to update the current strategy.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: '.Idle',\n },\n },\n initial: 'Idle',\n states: {\n Idle: {\n on: {\n 'NAVIGATE.FORGOT_PASSWORD': {\n description: 'Navigate to forgot password screen.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: 'ForgotPassword',\n },\n 'NAVIGATE.CHOOSE_STRATEGY': {\n description: 'Navigate to choose strategy screen.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: 'ChoosingStrategy',\n },\n },\n },\n ChoosingStrategy: {\n tags: ['step:choose-strategy'],\n on: {\n 'NAVIGATE.PREVIOUS': {\n description: 'Go to Idle, and also tell firstFactor to go to Pending',\n target: 'Idle',\n actions: sendTo('firstFactor', { type: 'NAVIGATE.PREVIOUS' }),\n },\n },\n },\n ForgotPassword: {\n tags: ['step:forgot-password'],\n on: {\n 'NAVIGATE.PREVIOUS': 'Idle',\n },\n },\n },\n },\n SecondFactor: {\n tags: ['step:second-factor', 'step:verifications'],\n invoke: {\n id: 'secondFactor',\n src: 'secondFactorMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'SecondFactor',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n 'STRATEGY.UPDATE': {\n description: 'Send event to verification machine to update the current strategy.',\n actions: sendTo('secondFactor', ({ event }) => event),\n target: '.Idle',\n },\n },\n initial: 'Idle',\n states: {\n Idle: {\n on: {\n 'NAVIGATE.CHOOSE_STRATEGY': {\n description: 'Navigate to choose strategy screen.',\n actions: sendTo('secondFactor', ({ event }) => event),\n target: 'ChoosingStrategy',\n },\n },\n },\n ChoosingStrategy: {\n tags: ['step:choose-strategy'],\n on: {\n 'NAVIGATE.PREVIOUS': {\n description: 'Go to Idle, and also tell firstFactor to go to Pending',\n target: 'Idle',\n actions: sendTo('secondFactor', { type: 'NAVIGATE.PREVIOUS' }),\n },\n },\n },\n },\n },\n ResetPassword: {\n tags: ['step:reset-password'],\n invoke: {\n id: 'resetPassword',\n src: 'resetPasswordMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'ResetPassword',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n ],\n },\n },\n Callback: {\n tags: ['step:callback'],\n entry: sendTo(ThirdPartyMachineId, { type: 'CALLBACK' }),\n on: {\n NEXT: [\n {\n guard: 'hasOAuthError',\n actions: ['setFormOAuthErrors', { type: 'navigateInternal', params: { force: true, path: '/' } }],\n target: 'Start',\n },\n {\n guard: or(['isLoggedIn', 'isComplete', 'hasAuthenticatedViaClerkJS']),\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsIdentifier',\n actions: 'transfer',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n },\n },\n ChooseSession: {\n tags: ['step:choose-session'],\n on: {\n 'SESSION.SET_ACTIVE': {\n actions: {\n type: 'setActive',\n params: ({ event }) => ({ id: event.id }),\n },\n },\n },\n },\n Error: {\n tags: ['step:error'],\n on: {\n NEXT: {\n target: 'Start',\n actions: 'clearFormErrors',\n },\n },\n },\n Hist: {\n type: 'history',\n exit: 'clearFormErrors',\n },\n },\n});\n","import type {\n AuthenticateWithRedirectParams,\n HandleOAuthCallbackParams,\n HandleSamlCallbackParams,\n LoadedClerk,\n} from '@clerk/types';\nimport type { SetOptional } from 'type-fest';\nimport type { AnyActorRef, AnyEventObject } from 'xstate';\nimport { fromCallback, fromPromise } from 'xstate';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { WithParams, WithUnsafeMetadata } from '~/internals/machines/shared';\nimport { ClerkJSNavigationEvent, isClerkJSNavigationEvent } from '~/internals/machines/utils/clerkjs';\n\ntype OptionalRedirectParams = 'redirectUrl' | 'redirectUrlComplete';\n\nexport type AuthenticateWithRedirectSignInParams = SetOptional<AuthenticateWithRedirectParams, OptionalRedirectParams>;\nexport type AuthenticateWithRedirectSignUpParams = SetOptional<\n WithUnsafeMetadata<AuthenticateWithRedirectParams>,\n OptionalRedirectParams\n>;\n\nexport type AuthenticateWithRedirectInput = (\n | (WithParams<AuthenticateWithRedirectSignInParams> & { flow: 'signIn' })\n | (WithParams<AuthenticateWithRedirectSignUpParams> & { flow: 'signUp' })\n) & { basePath: string; parent: AnyActorRef }; // TODO: Fix circular dependency\n\nexport const redirect = fromPromise<void, AuthenticateWithRedirectInput>(\n async ({ input: { flow, params, parent } }) => {\n const clerk: LoadedClerk = parent.getSnapshot().context.clerk;\n\n return clerk.client[flow].authenticateWithRedirect({\n redirectUrl: clerk.buildUrlWithAuth(params.redirectUrl || '/'),\n redirectUrlComplete: clerk.buildUrlWithAuth(params.redirectUrlComplete || '/'),\n ...params,\n });\n },\n);\n\nexport type HandleRedirectCallbackParams<T = Required<HandleOAuthCallbackParams | HandleSamlCallbackParams>> = {\n [K in keyof T]: NonNullable<T[K]>;\n};\n\nexport type HandleRedirectCallbackInput = AnyActorRef;\n\n/**\n * This function hijacks handleRedirectCallback from ClerkJS to handle navigation events\n * from the state machine.\n */\nexport const handleRedirectCallback = fromCallback<AnyEventObject, HandleRedirectCallbackInput>(\n ({ sendBack, input: parent }) => {\n const clerk: LoadedClerk = parent.getSnapshot().context.clerk;\n const displayConfig = clerk.__unstable__environment?.displayConfig;\n\n const customNavigate = (toEvt: string) => {\n const to = toEvt.split('/').slice(-1)[0];\n\n if (isClerkJSNavigationEvent(to)) {\n // Handle known redefined navigation events\n sendBack({ type: to });\n } else if (to === displayConfig?.signInUrl) {\n // Handle known non-redefined sign-in navigation events\n sendBack({ type: ClerkJSNavigationEvent.signIn });\n } else if (to === displayConfig?.signUpUrl) {\n // Handle known non-redefined sign-up navigation events\n sendBack({ type: ClerkJSNavigationEvent.signUp });\n } else {\n // Handle unknown navigation events\n sendBack({ type: 'FAILURE', error: new ClerkElementsRuntimeError(`Unknown navigation event: ${to}`) });\n }\n\n return Promise.resolve();\n };\n\n // @ts-expect-error - Clerk types are incomplete\n // TODO: Update local Clerk types\n const loadedClerk = (clerk.clerkjs ?? clerk) as LoadedClerk;\n\n void loadedClerk.handleRedirectCallback(\n {\n continueSignUpUrl: ClerkJSNavigationEvent.continue,\n firstFactorUrl: ClerkJSNavigationEvent.signIn,\n resetPasswordUrl: ClerkJSNavigationEvent.resetPassword,\n secondFactorUrl: ClerkJSNavigationEvent.signIn,\n verifyEmailAddressUrl: ClerkJSNavigationEvent.verification,\n verifyPhoneNumberUrl: ClerkJSNavigationEvent.verification,\n signUpUrl: ClerkJSNavigationEvent.signUp,\n signInUrl: ClerkJSNavigationEvent.signIn,\n } satisfies HandleOAuthCallbackParams,\n customNavigate,\n );\n\n return () => void 0;\n },\n);\n","import type { Simplify } from 'type-fest';\n\n// ================= Types ================= //\n\nexport type ClerkJSEventCategory = 'NAVIGATE';\nexport type ClerkJSEvent<T extends ClerkJSEventCategory = ClerkJSEventCategory> = `CLERKJS.${T}.${string}`;\nexport type ClerkJSEventObject<T extends ClerkJSEventCategory = ClerkJSEventCategory> = Simplify<\n Record<string, ClerkJSEvent<T>>\n>;\nexport type ClerkJSEventExtractCategory<S extends string> = S extends `CLERKJS.${infer T}.${string}` ? T : never;\n\n// ================= Type Narrowing ================= //\n\nexport function isClerkJSEvent<T extends ClerkJSEventObject<ClerkJSEventExtractCategory<E>>, E extends ClerkJSEvent>(\n eventObj: T,\n event: E,\n): event is typeof event {\n return Object.values(eventObj).includes(event as any);\n}\n\n// ================= ClerkJSNavigationEvent ================= //\n\nexport type ClerkJSNavigationEvent = (typeof ClerkJSNavigationEvent)[keyof typeof ClerkJSNavigationEvent];\nexport const ClerkJSNavigationEvent: ClerkJSEventObject<'NAVIGATE'> = {\n complete: 'CLERKJS.NAVIGATE.COMPLETE',\n signUp: 'CLERKJS.NAVIGATE.SIGN_UP',\n continue: 'CLERKJS.NAVIGATE.CONTINUE',\n generic: 'CLERKJS.NAVIGATE.GENERIC',\n resetPassword: 'CLERKJS.NAVIGATE.RESET_PASSWORD',\n signIn: 'CLERKJS.NAVIGATE.SIGN_IN',\n verification: 'CLERKJS.NAVIGATE.VERIFICATION',\n} as const;\n\nexport function isClerkJSNavigationEvent(event: unknown): event is ClerkJSNavigationEvent {\n return isClerkJSEvent(ClerkJSNavigationEvent, event as ClerkJSEvent<'NAVIGATE'>);\n}\n","import { assertEvent, assign, log, not, sendTo, setup } from 'xstate';\n\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport { handleRedirectCallback, redirect } from './third-party.actors';\nimport type { ThirdPartyMachineSchema } from './third-party.types';\n\nexport const ThirdPartyMachineId = 'ThirdParty';\n\nexport type TThirdPartyMachine = typeof ThirdPartyMachine;\n\nexport const ThirdPartyMachine = setup({\n actors: {\n handleRedirectCallback,\n redirect,\n },\n actions: {\n logError: log(({ event }) => `Error: ${event.type}`),\n assignActiveStrategy: assign({\n activeStrategy: ({ event }) => {\n assertEvent(event, 'REDIRECT');\n return event.params.strategy;\n },\n }),\n unassignActiveStrategy: assign({\n activeStrategy: null,\n }),\n sendToNext: ({ context }) => context.parent.send({ type: 'NEXT' }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as ThirdPartyMachineSchema,\n}).createMachine({\n id: ThirdPartyMachineId,\n context: ({ input }) => ({\n activeStrategy: null,\n basePath: input.basePath,\n formRef: input.formRef,\n flow: input.flow,\n parent: input.parent,\n loadingStep: 'strategy',\n }),\n initial: 'Idle',\n states: {\n Idle: {\n description: 'Sets third-party providers if not already set, and waits for a redirect or callback event',\n on: {\n CALLBACK: 'HandlingCallback',\n REDIRECT: {\n guard: not('isExampleMode'),\n target: 'Redirecting',\n reenter: true,\n },\n },\n },\n Redirecting: {\n description: 'Redirects to the third-party provider for authentication',\n tags: ['state:redirect', 'state:loading'],\n entry: ['assignActiveStrategy', 'sendToLoading'],\n exit: ['unassignActiveStrategy', 'sendToLoading'],\n invoke: {\n id: 'redirect',\n src: 'redirect',\n input: ({ context, event }) => {\n assertEvent(event, 'REDIRECT');\n\n const legalAcceptedField = context.formRef.getSnapshot().context.fields.get('legalAccepted')?.checked;\n\n return {\n basePath: context.basePath,\n flow: context.flow,\n params: {\n ...event.params,\n legalAccepted: legalAcceptedField || undefined,\n },\n parent: context.parent,\n };\n },\n onError: {\n actions: 'setFormErrors',\n target: 'Idle',\n },\n },\n },\n HandlingCallback: {\n description: 'Handles the callback from the third-party provider',\n tags: ['state:callback', 'state:loading'],\n invoke: {\n id: 'handleRedirectCallback',\n src: 'handleRedirectCallback',\n input: ({ context }) => context.parent,\n onError: {\n actions: ['logError', 'setFormErrors'],\n target: 'Idle',\n },\n },\n on: {\n 'CLERKJS.NAVIGATE.*': {\n actions: 'sendToNext',\n target: 'Idle',\n },\n },\n },\n },\n});\n","import { NEXT_WINDOW_HISTORY_SUPPORT_VERSION } from '~/internals/constants';\n\nexport function shouldUseVirtualRouting() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!window.next) {\n return false;\n }\n\n return window.next.version < NEXT_WINDOW_HISTORY_SUPPORT_VERSION;\n}\n","import type { SignInResource } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { fromPromise, sendTo, setup } from 'xstate';\n\nimport type { FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInResetPasswordSchema } from './reset-password.types';\nimport type { SignInRouterMachineActorRef } from './router.types';\n\nexport type TSignInResetPasswordMachine = typeof SignInResetPasswordMachine;\n\nexport const SignInResetPasswordMachineId = 'SignInResetPasswordMachine';\n\nexport const SignInResetPasswordMachine = setup({\n actors: {\n attempt: fromPromise<SignInResource, { parent: SignInRouterMachineActorRef; fields: FormFields }>(\n ({ input: { fields, parent } }) => {\n const password = (fields.get('password')?.value as string) || '';\n const signOutOfOtherSessions = fields.get('signOutOfOtherSessions')?.checked || false;\n return parent.getSnapshot().context.clerk.client.signIn.resetPassword({ password, signOutOfOtherSessions });\n },\n ),\n },\n actions: {\n sendToLoading,\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignInResource>).output }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n types: {} as SignInResetPasswordSchema,\n}).createMachine({\n id: SignInResetPasswordMachineId,\n context: ({ input }) => ({\n loadingStep: 'reset-password',\n parent: input.parent,\n formRef: input.formRef,\n }),\n initial: 'Pending',\n states: {\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import type { SignInResource, Web3Strategy } from '@clerk/types';\nimport { assertEvent, enqueueActions, fromPromise, not, sendTo, setup } from 'xstate';\n\nimport { SIGN_IN_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignInStartSchema } from './start.types';\n\nconst DISABLEABLE_FIELDS = ['emailAddress', 'phoneNumber'] as const;\n\nexport type TSignInStartMachine = typeof SignInStartMachine;\n\nexport const SignInStartMachineId = 'SignInStart';\n\ntype AttemptParams = { strategy: 'ticket'; ticket: string } | { strategy?: never; ticket?: never };\n\nexport const SignInStartMachine = setup({\n actors: {\n attemptPasskey: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; flow: 'autofill' | 'discoverable' | undefined }\n >(({ input: { parent, flow } }) => {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey({\n flow,\n });\n }),\n attemptWeb3: fromPromise<SignInResource, { parent: SignInRouterMachineActorRef; strategy: Web3Strategy }>(\n ({ input: { parent, strategy } }) => {\n if (strategy === 'web3_metamask_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithMetamask();\n }\n if (strategy === 'web3_coinbase_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithCoinbaseWallet();\n }\n if (strategy === 'web3_base_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithBase();\n }\n if (strategy === 'web3_okx_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithOKXWallet();\n }\n throw new ClerkElementsRuntimeError(`Unsupported Web3 strategy: ${strategy}`);\n },\n ),\n attempt: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; fields: FormFields; params?: AttemptParams }\n >(({ input: { fields, parent, params } }) => {\n const clerk = parent.getSnapshot().context.clerk;\n\n const password = fields.get('password');\n const identifier = fields.get('identifier');\n\n const passwordParams = password?.value\n ? {\n password: password.value,\n strategy: 'password',\n }\n : {};\n\n return clerk.client.signIn.create({\n ...passwordParams,\n ...(params?.ticket\n ? params\n : {\n identifier: (identifier?.value as string) ?? '',\n }),\n });\n }),\n },\n actions: {\n sendToNext: ({ context, event }) => {\n // @ts-expect-error -- We're calling this in onDone, and event.output exists on the actor done event\n return context.parent.send({ type: 'NEXT', resource: event?.output });\n },\n sendToLoading,\n setFormDisabledTicketFields: enqueueActions(({ context, enqueue }) => {\n if (!context.ticket) {\n return;\n }\n\n const currentFields = context.formRef.getSnapshot().context.fields;\n\n for (const name of DISABLEABLE_FIELDS) {\n if (currentFields.has(name)) {\n enqueue.sendTo(context.formRef, { type: 'FIELD.DISABLE', field: { name } });\n }\n }\n }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n hasTicket: ({ context }) => Boolean(context.ticket),\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as SignInStartSchema,\n}).createMachine({\n id: SignInStartMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_IN_DEFAULT_BASE_PATH,\n parent: input.parent,\n formRef: input.formRef,\n loadingStep: 'start',\n ticket: input.ticket,\n }),\n initial: 'Init',\n states: {\n Init: {\n description: 'Handle ticket, if present; Else, default to Pending state.',\n always: [\n {\n guard: 'hasTicket',\n target: 'Attempting',\n },\n {\n target: 'Pending',\n },\n ],\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskey',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY.AUTOFILL': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskeyAutoFill',\n reenter: false,\n },\n 'AUTHENTICATE.WEB3': {\n guard: not('isExampleMode'),\n target: 'AttemptingWeb3',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => {\n // Standard fields\n const defaultParams = {\n fields: context.formRef.getSnapshot().context.fields,\n parent: context.parent,\n };\n\n // Handle ticket-specific flows\n const params: AttemptParams = context.ticket\n ? {\n strategy: 'ticket',\n ticket: context.ticket,\n }\n : {};\n\n return { ...defaultParams, params };\n },\n onDone: {\n actions: ['setFormDisabledTicketFields', 'sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormDisabledTicketFields', 'setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskey: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPasskey',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'discoverable',\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskeyAutoFill: {\n on: {\n 'AUTHENTICATE.PASSKEY': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskey',\n reenter: true,\n },\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n },\n invoke: {\n id: 'attemptPasskeyAutofill',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'autofill',\n }),\n onDone: {\n actions: ['sendToNext'],\n },\n onError: {\n actions: ['setFormErrors'],\n target: 'Pending',\n },\n },\n },\n AttemptingWeb3: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptWeb3',\n src: 'attemptWeb3',\n input: ({ context, event }) => {\n assertEvent(event, 'AUTHENTICATE.WEB3');\n return {\n parent: context.parent,\n strategy: event.strategy,\n };\n },\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import { titleize } from '@clerk/shared/underscore';\n\n// TODO: ideally the derivation of these values lives in FAPI and comes back directly from the API\n\nexport function formatName(...args: (string | undefined)[]): string | undefined {\n switch (args.length) {\n case 0:\n return undefined;\n case 1:\n return titleize(args[0]);\n default:\n return args.filter(Boolean).map(titleize).join(' ');\n }\n}\n\nexport function formatSalutation({\n firstName,\n lastName,\n identifier,\n}: {\n firstName: string | undefined;\n lastName: string | undefined;\n identifier: string | undefined | null;\n}): string {\n return (firstName && formatName(firstName)) || (lastName && formatName(lastName)) || identifier || '';\n}\n","import type { SignInStrategyName } from '~/internals/machines/shared';\nimport { formatSalutation } from '~/internals/machines/utils/formatters';\n\nimport type { SignInRouterSnapshot } from './router.types';\n\nexport function SignInSafeIdentifierSelectorForStrategy(\n strategy: SignInStrategyName | undefined,\n): (s: SignInRouterSnapshot) => string {\n return (s: SignInRouterSnapshot) => {\n const signIn = s.context.clerk?.client.signIn;\n\n if (strategy) {\n const matchingFactors = [\n ...(signIn.supportedFirstFactors ?? []),\n ...(signIn.supportedSecondFactors ?? []),\n ].filter(f => f.strategy === strategy);\n\n const matchingFactorForIdentifier =\n signIn.identifier && matchingFactors.length > 0\n ? matchingFactors.find(f => 'safeIdentifier' in f && f.safeIdentifier === signIn.identifier)\n : null;\n\n const matchingFactorForStrategy = matchingFactors[0];\n\n if (matchingFactorForIdentifier && 'safeIdentifier' in matchingFactorForIdentifier) {\n return matchingFactorForIdentifier.safeIdentifier;\n }\n\n if (matchingFactorForStrategy && 'safeIdentifier' in matchingFactorForStrategy) {\n return matchingFactorForStrategy.safeIdentifier;\n }\n }\n\n return signIn.identifier || '';\n };\n}\n\nexport function SignInSalutationSelector(s: SignInRouterSnapshot): string {\n const signIn = s.context.clerk?.client.signIn;\n\n return formatSalutation({\n firstName: signIn?.userData?.firstName,\n identifier: signIn?.identifier,\n lastName: signIn?.userData?.lastName,\n });\n}\n","import type { SignInResource } from '@clerk/types';\nimport type { ActorRefFrom, MachineSnapshot, StateMachine } from 'xstate';\n\nimport type { TFormMachine } from '~/internals/machines/form';\nimport type {\n BaseRouterContext,\n BaseRouterErrorEvent,\n BaseRouterFormAttachEvent,\n BaseRouterInput,\n BaseRouterLoadingEvent,\n BaseRouterNextEvent,\n BaseRouterPrevEvent,\n BaseRouterRedirectEvent,\n BaseRouterResetEvent,\n BaseRouterResetStepEvent,\n BaseRouterSetClerkEvent,\n BaseRouterStartEvent,\n BaseRouterTransferEvent,\n} from '~/internals/machines/types';\n\nimport type { SignInVerificationFactorUpdateEvent } from './verification.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport const SignInRouterSteps = {\n start: 'step:start',\n verifications: 'step:verifications',\n firstFactor: 'step:first-factor',\n secondFactor: 'step:second-factor',\n callback: 'step:callback',\n error: 'step:error',\n forgotPassword: 'step:forgot-password',\n resetPassword: 'step:reset-password',\n chooseSession: 'step:choose-session',\n chooseStrategy: 'step:choose-strategy',\n} as const;\n\nexport type SignInRouterSteps = keyof typeof SignInRouterSteps;\nexport type SignInRouterTags = (typeof SignInRouterSteps)[keyof typeof SignInRouterSteps];\n\n// ---------------------------------- Children ---------------------------------- //\n\nexport const SignInRouterSystemId = {\n start: 'start',\n firstFactor: 'firstFactor',\n secondFactor: 'secondFactor',\n resetPassword: 'resetPassword',\n} as const;\n\nexport type SignInRouterSystemId = keyof typeof SignInRouterSystemId;\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignInRouterFormAttachEvent = BaseRouterFormAttachEvent;\nexport type SignInRouterNextEvent = BaseRouterNextEvent<SignInResource>;\nexport type SignInRouterStartEvent = BaseRouterStartEvent;\nexport type SignInRouterPrevEvent = BaseRouterPrevEvent;\nexport type SignInRouterChooseStrategyEvent = { type: 'NAVIGATE.CHOOSE_STRATEGY' };\nexport type SignInRouterForgotPasswordEvent = { type: 'NAVIGATE.FORGOT_PASSWORD' };\nexport type SignInRouterErrorEvent = BaseRouterErrorEvent;\nexport type SignInRouterTransferEvent = BaseRouterTransferEvent;\nexport type SignInRouterRedirectEvent = BaseRouterRedirectEvent;\nexport type SignInRouterResetEvent = BaseRouterResetEvent;\nexport type SignInRouterResetStepEvent = BaseRouterResetStepEvent;\nexport type SignInRouterLoadingEvent = BaseRouterLoadingEvent<\n 'start' | 'verifications' | 'reset-password' | 'forgot-password' | 'choose-strategy'\n>;\nexport type SignInRouterSetClerkEvent = BaseRouterSetClerkEvent;\nexport type SignInRouterSubmitEvent = { type: 'SUBMIT' };\nexport type SignInRouterPasskeyEvent = { type: 'AUTHENTICATE.PASSKEY' };\nexport type SignInRouterPasskeyAutofillEvent = {\n type: 'AUTHENTICATE.PASSKEY.AUTOFILL';\n};\nexport type SignInRouterSessionSetActiveEvent = { type: 'SESSION.SET_ACTIVE'; id: string };\n\nexport interface SignInRouterInitEvent extends BaseRouterInput {\n type: 'INIT';\n formRef: ActorRefFrom<TFormMachine>;\n signUpPath?: string;\n}\n\nexport type SignInRouterNavigationEvents =\n | SignInRouterStartEvent\n | SignInRouterChooseStrategyEvent\n | SignInRouterForgotPasswordEvent\n | SignInRouterPrevEvent;\n\nexport type SignInRouterEvents =\n | SignInRouterFormAttachEvent\n | SignInRouterInitEvent\n | SignInRouterNextEvent\n | SignInRouterNavigationEvents\n | SignInRouterErrorEvent\n | SignInRouterTransferEvent\n | SignInRouterRedirectEvent\n | SignInRouterResetEvent\n | SignInRouterResetStepEvent\n | SignInVerificationFactorUpdateEvent\n | SignInRouterLoadingEvent\n | SignInRouterSessionSetActiveEvent\n | SignInRouterSetClerkEvent\n | SignInRouterSubmitEvent\n | SignInRouterPasskeyEvent\n | SignInRouterPasskeyAutofillEvent;\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport type SignInRouterLoadingContext = Omit<SignInRouterLoadingEvent, 'type'>;\n\nexport interface SignInRouterContext extends BaseRouterContext {\n formRef: ActorRefFrom<TFormMachine>;\n loading: SignInRouterLoadingContext;\n signUpPath: string;\n webAuthnAutofillSupport: boolean;\n ticket: string | undefined;\n}\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport type SignInRouterInput = object;\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignInRouterSchema {\n context: SignInRouterContext;\n events: SignInRouterEvents;\n tags: SignInRouterTags;\n}\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport type SignInRouterChildren = any; // TODO: Update\nexport type SignInRouterOuptut = any; // TODO: Update\nexport type SignInRouterStateValue = any; // TODO: Update\n\nexport type SignInRouterSnapshot = MachineSnapshot<\n SignInRouterContext,\n SignInRouterEvents,\n SignInRouterChildren,\n SignInRouterStateValue,\n SignInRouterTags,\n SignInRouterOuptut,\n any, // TMeta - Introduced in XState 5.12.x\n any // TConfig - Required in newer XState versions\n>;\n\n// ---------------------------------- Machine Type ---------------------------------- //\n\nexport type TSignInRouterParentMachine = StateMachine<\n SignInRouterContext, // context\n SignInRouterEvents, // event\n SignInRouterChildren, // children\n any, // actor\n any, // action\n any, // guard\n any, // delay\n any, // state value\n string, // tag\n any, // input\n SignInRouterOuptut, // output\n any, // emitted\n any, // meta\n any // config\n>;\n\n// ---------------------------------- Machine Actor Ref ---------------------------------- //\n\nexport type SignInRouterMachineActorRef = ActorRefFrom<TSignInRouterParentMachine>;\n","export { Route, Router, useClerkRouter, ClerkHostRouterContext } from '@clerk/shared/router';\nexport { useVirtualRouter } from './virtual';\nexport { useNextRouter } from './next';\n","'use client';\n\nimport type { ClerkHostRouter } from '@clerk/shared/router';\nimport { useSyncExternalStore } from 'react';\n\nconst DUMMY_ORIGIN = 'https://clerk.dummy';\n\n// TODO: introduce history stack?\nclass VirtualRouter implements ClerkHostRouter {\n readonly name = 'VirtualRouter';\n readonly mode = 'virtual';\n\n #url: URL;\n #listeners: Set<(url: URL) => void> = new Set();\n\n constructor(path?: string) {\n const origin = typeof window === 'undefined' ? DUMMY_ORIGIN : window.location.origin;\n\n this.#url = new URL(path ?? '/', origin);\n }\n\n push(path: string) {\n const newUrl = new URL(this.#url.toString());\n newUrl.pathname = path;\n\n this.#url = newUrl;\n this.emit();\n }\n\n replace(path: string) {\n this.push(path);\n }\n\n shallowPush(path: string) {\n this.push(path);\n }\n\n pathname() {\n return this.#url.pathname;\n }\n\n searchParams() {\n return this.#url.searchParams;\n }\n\n subscribe(listener: () => void) {\n this.#listeners.add(listener);\n\n return () => this.#listeners.delete(listener);\n }\n\n emit() {\n this.#listeners.forEach(listener => listener(this.#url));\n }\n\n getSnapshot() {\n return this.#url;\n }\n}\n\nconst virtualRouter = new VirtualRouter('/');\n\nexport const useVirtualRouter = (): ClerkHostRouter => {\n const url = useSyncExternalStore(\n virtualRouter.subscribe.bind(virtualRouter),\n virtualRouter.getSnapshot.bind(virtualRouter),\n );\n\n return {\n mode: virtualRouter.mode,\n name: virtualRouter.name,\n pathname: () => url.pathname,\n push: virtualRouter.push.bind(virtualRouter),\n replace: virtualRouter.replace.bind(virtualRouter),\n searchParams: () => url.searchParams,\n shallowPush: virtualRouter.shallowPush.bind(virtualRouter),\n };\n};\n","import type { ClerkHostRouter } from '@clerk/types';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\n\nimport { NEXT_WINDOW_HISTORY_SUPPORT_VERSION } from '~/internals/constants';\n\nimport { usePathnameWithoutCatchAll } from '../utils/path-inference/next';\n\n/**\n * Clerk Elements router integration with Next.js's router.\n */\nexport const useNextRouter = (): ClerkHostRouter => {\n const router = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const inferredBasePath = usePathnameWithoutCatchAll();\n\n // The window.history APIs seem to prevent Next.js from triggering a full page re-render, allowing us to\n // preserve internal state between steps.\n const canUseWindowHistoryAPIs =\n typeof window !== 'undefined' && window.next && window.next.version >= NEXT_WINDOW_HISTORY_SUPPORT_VERSION;\n\n return {\n mode: 'path',\n name: 'NextRouter',\n push: (path: string) => router.push(path),\n replace: (path: string) =>\n canUseWindowHistoryAPIs ? window.history.replaceState(null, '', path) : router.replace(path),\n shallowPush: (path: string) =>\n canUseWindowHistoryAPIs ? window.history.pushState(null, '', path) : router.push(path, {}),\n pathname: () => pathname,\n searchParams: () => searchParams,\n inferredBasePath: () => inferredBasePath,\n };\n};\n","import { useRouter } from 'next/compat/router';\nimport { useParams, usePathname } from 'next/navigation';\nimport React from 'react';\n\nimport { removeOptionalCatchAllSegment } from './utils';\n\n// Adapted from packages/nextjs/src/client-boundary/hooks/usePathnameWithoutCatchAll.tsx\n\n/**\n * This hook grabs the current pathname (both in pages and app router) and removes any (optional) catch all segments.\n * @example\n * 1. /user/[id]/profile/[[...rest]]/page.tsx\n * 2. /user/123/profile/security\n * 3. /user/123/profile\n * @returns The pathname without any catch all segments\n */\nexport const usePathnameWithoutCatchAll = () => {\n const pathRef = React.useRef<string>();\n\n /**\n * The compat version of useRouter returns null instead of throwing an error when used inside App router.\n * Use it to detect if the component is used inside pages or app router\n */\n const pagesRouter = useRouter();\n\n if (pagesRouter) {\n if (pathRef.current) {\n return pathRef.current;\n } else {\n // The optional catch all route is included in the pathname in pages router. It starts with [[... and we can just remove it\n pathRef.current = removeOptionalCatchAllSegment(pagesRouter.pathname);\n return pathRef.current;\n }\n }\n\n /**\n * Get the pathname that includes any named or catch all params.\n * @example\n * /user/[id]/profile/[[...rest]]/page.tsx\n *\n * This filesystem route could give us the following pathname:\n * /user/123/profile/security\n * if the user navigates to the security section of the user profile\n */\n const pathname = usePathname() || '';\n const pathParts = pathname.split('/').filter(Boolean);\n /**\n * For /user/[id]/profile/[[...rest]]/page.tsx useParams will return { id: '123', rest: ['security'] }.\n * So catch all params are always arrays\n */\n const catchAllParams = Object.values(useParams() || {})\n .filter(v => Array.isArray(v))\n .flat(Infinity);\n if (pathRef.current) {\n return pathRef.current;\n } else {\n // /user/123/profile/security should be transformed to /user/123/profile\n pathRef.current = `/${pathParts.slice(0, pathParts.length - catchAllParams.length).join('/')}`;\n return pathRef.current;\n }\n};\n","export function removeOptionalCatchAllSegment(pathname: string) {\n return pathname.replace(/\\/\\[\\[\\.\\.\\..*/, '');\n}\n","import { useSelector as useSelectorUnbound } from '@xstate/react';\nimport * as React from 'react';\nimport type { ActorRefFrom, AnyActorRef, AnyStateMachine, SnapshotFrom } from 'xstate';\n\n/**\n * Creates a context and hooks for a given actor ref.\n\n * @example\n * const SignInRouterCtx = createContextFromActorRef<typeof SignInRouterMachine>('SignInRouterCtx')\n *\n * const Parent = () => {\n * const ref = useActorRef(SignInRouterMachine, { input: { basePath: '/sign-in' } });\n *\n * return (\n * <SignInRouterCtx.Provider ref={ref}>\n * <Child />\n * </SignInRouterCtx>\n * )\n * }\n *\n * const Child = () => {\n * const ref = SignInRouterCtx.useActorRef();\n * const status = SignInRouterCtx.useSelector(state => state.context.clerk);\n\n * const handleClick = useCallback(() => ref.send({ type: 'NEXT' }), [ref]);\n *\n * return <button onClick={handleClick}>;\n * }\n */\n\nexport function createContextFromActorRef<TMachine extends AnyStateMachine, TRef = ActorRefFrom<TMachine>>(\n displayName: string,\n) {\n const ReactContext = React.createContext<TRef | null>(null);\n const OriginalProvider = ReactContext.Provider;\n\n function Provider({ children, actorRef }: { children: React.ReactNode; actorRef: TRef }) {\n return React.createElement(\n OriginalProvider,\n {\n value: actorRef,\n },\n children,\n );\n }\n\n Provider.displayName = displayName;\n\n function useContext(allowMissingActor?: false | undefined): TRef;\n function useContext(allowMissingActor: true): TRef | null;\n function useContext(allowMissingActor: boolean = false): TRef | null {\n const actorRef = React.useContext(ReactContext);\n\n if (!allowMissingActor && !actorRef) {\n throw new Error(\n `You used a hook from \"${Provider.displayName}\" but it's not inside a <${Provider.displayName}.Provider> component.`,\n );\n }\n\n return actorRef;\n }\n\n function useSelector<T>(selector: (snapshot: SnapshotFrom<TRef>) => T, compare?: (a: T, b: T) => boolean): T {\n const actor = useContext();\n return useSelectorUnbound(actor as AnyActorRef, selector, compare);\n }\n\n return {\n Provider,\n useActorRef: useContext,\n useSelector,\n };\n}\n","import type { ActorRefFrom, AnyActorRef, AnyStateMachine, SnapshotFrom } from 'xstate';\n\nimport type {\n TSignInFirstFactorMachine,\n TSignInResetPasswordMachine,\n TSignInRouterMachine,\n TSignInSecondFactorMachine,\n TSignInStartMachine,\n} from '~/internals/machines/sign-in';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SnapshotState = SnapshotFrom<TSignInRouterMachine>;\n\nexport const SignInRouterCtx: ReturnType<typeof createContextFromActorRef<TSignInRouterMachine>> =\n createContextFromActorRef<TSignInRouterMachine>('SignInRouterCtx');\n\nfunction useSignInStep<M extends AnyStateMachine, T = ActorRefFrom<M>>(name: string) {\n return SignInRouterCtx.useSelector(state => state.children[name] as AnyActorRef) as T;\n}\n\nexport const useSignInStartStep = () => useSignInStep<TSignInStartMachine>('start');\nexport const useSignInFirstFactorStep = () => useSignInStep<TSignInFirstFactorMachine>('firstFactor');\nexport const useSignInSecondFactorStep = () => useSignInStep<TSignInSecondFactorMachine>('secondFactor');\nexport const useSignInResetPasswordStep = () => useSignInStep<TSignInResetPasswordMachine>('resetPassword');\n\nexport const useSignInPasskeyAutofill = () =>\n SignInRouterCtx.useSelector(state => state.context.webAuthnAutofillSupport);\n","import { createContext, useContext } from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nexport type SignInStrategyContextValue = {\n strategy: SignInStrategyName | undefined;\n};\n\nexport const SignInStrategyContext = createContext<SignInStrategyContextValue>({\n strategy: undefined,\n});\n\nexport function useSignInStrategy() {\n const ctx = useContext(SignInStrategyContext);\n\n if (!ctx) {\n throw new ClerkElementsRuntimeError(\n 'useSignInStrategy must be used within a <SignIn.Strategy> or <SignIn.SupportedStrategy> component.',\n );\n }\n\n const { strategy } = ctx;\n\n return strategy;\n}\n","import type { SignInStrategy } from '@clerk/types';\nimport { createContext, useContext } from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nexport type StrategiesContextValue = {\n current: SignInStrategy | undefined;\n isActive: (name: string) => boolean;\n preferred: SignInStrategy | undefined;\n};\n\nexport const StrategiesContext = createContext<StrategiesContextValue>({\n current: undefined,\n isActive: _name => false,\n preferred: undefined,\n});\n\nexport function useStrategy(name: SignInStrategyName) {\n const ctx = useContext(StrategiesContext);\n\n if (!ctx) {\n throw new ClerkElementsRuntimeError(\n 'useStrategy must be used within a <SignIn.Step name=\"verifications\"> component. Did you mean to `import { Step } from \"@clerk/elements/sign-up\"` instead?',\n );\n }\n\n const { current, preferred, isActive } = ctx;\n\n return {\n current,\n preferred,\n get active() {\n return isActive(name);\n },\n };\n}\n","import { useCallback } from 'react';\nimport type { BaseActorRef } from 'xstate';\n\nimport { useGlobalErrors } from './use-global-errors';\n\n/**\n * Provides the form submission handler along with the form's validity via a data attribute\n */\nexport function useForm({ flowActor }: { flowActor?: BaseActorRef<{ type: 'SUBMIT'; action: 'submit' }> }) {\n const { errors } = useGlobalErrors();\n\n // Register the onSubmit handler for form submission\n // TODO: merge user-provided submit handler\n const onSubmit = useCallback(\n (event: React.FormEvent<Element>) => {\n event.preventDefault();\n if (flowActor) {\n flowActor.send({ type: 'SUBMIT', action: 'submit' });\n }\n },\n [flowActor],\n );\n\n return {\n props: {\n ...(errors.length > 0 ? { 'data-global-error': true } : {}),\n onSubmit,\n },\n };\n}\n","import { globalErrorsSelector, useFormSelector } from '~/internals/machines/form';\n\nexport function useGlobalErrors() {\n const errors = useFormSelector(globalErrorsSelector);\n\n return {\n errors,\n };\n}\n","import { composeEventHandlers } from '@radix-ui/primitive';\nimport type { FormProps as RadixFormProps } from '@radix-ui/react-form';\nimport { Form as RadixForm } from '@radix-ui/react-form';\nimport * as React from 'react';\nimport type { BaseActorRef } from 'xstate';\n\nimport { useForm } from './hooks';\n\nconst DISPLAY_NAME = 'ClerkElementsForm';\n\ntype FormElement = React.ElementRef<typeof RadixForm>;\nexport type FormProps = Omit<RadixFormProps, 'children'> & {\n children: React.ReactNode;\n flowActor?: BaseActorRef<{ type: 'SUBMIT'; action: 'submit' }>;\n};\n\nexport const Form = React.forwardRef<FormElement, FormProps>(({ flowActor, onSubmit, ...rest }, forwardedRef) => {\n const form = useForm({ flowActor: flowActor });\n\n const { onSubmit: internalOnSubmit, ...internalFormProps } = form.props;\n\n return (\n <RadixForm\n {...internalFormProps}\n {...rest}\n onSubmit={composeEventHandlers(internalOnSubmit, onSubmit)}\n ref={forwardedRef}\n />\n );\n});\n\nForm.displayName = DISPLAY_NAME;\n","import type { FormSubmitProps as RadixFormSubmitProps } from '@radix-ui/react-form';\nimport { Submit as RadixSubmit } from '@radix-ui/react-form';\nimport type { SetRequired } from 'type-fest';\n\nconst DISPLAY_NAME = 'ClerkElementsSubmit';\n\nexport type FormSubmitProps = SetRequired<RadixFormSubmitProps, 'children'>;\ntype FormSubmitComponent = React.ForwardRefExoticComponent<FormSubmitProps & React.RefAttributes<HTMLButtonElement>>;\n\n/**\n * A `<button type=\"submit\">` element.\n *\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n */\nexport const Submit = RadixSubmit as FormSubmitComponent;\n\nSubmit.displayName = DISPLAY_NAME;\n","import { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport { SignInChooseSession, type SignInChooseSessionProps } from './choose-session';\nimport { SignInChooseStrategy, type SignInChooseStrategyProps, SignInForgotPassword } from './choose-strategy';\nimport { SignInResetPassword, type SignInResetPasswordProps } from './reset-password';\nimport type { SignInSSOCallbackProps } from './sso-callback';\nimport { SignInSSOCallback } from './sso-callback';\nimport { SignInStart, type SignInStartProps } from './start';\nimport { SignInVerifications, type SignInVerificationsProps } from './verifications';\n\nexport const SIGN_IN_STEPS = {\n start: 'start',\n verifications: 'verifications',\n 'choose-strategy': 'choose-strategy',\n 'choose-session': 'choose-session',\n 'forgot-password': 'forgot-password',\n 'reset-password': 'reset-password',\n 'sso-callback': 'sso-callback',\n} as const;\n\nexport type TSignInStep = (typeof SIGN_IN_STEPS)[keyof typeof SIGN_IN_STEPS];\ntype StepWithProps<N extends TSignInStep, T> = { name: N } & T;\n\nexport type SignInStepProps =\n | StepWithProps<'start', SignInStartProps>\n | StepWithProps<'verifications', SignInVerificationsProps>\n | StepWithProps<'choose-strategy' | 'forgot-password', SignInChooseStrategyProps>\n | StepWithProps<'reset-password', SignInResetPasswordProps>\n | StepWithProps<'choose-session', SignInChooseSessionProps>\n | StepWithProps<'sso-callback', SignInSSOCallbackProps>;\n\n/**\n * Render different steps of the sign-in flow. Initially the `'start'` step is rendered. Once a sign-in attempt has been created, `'verifications'` will be displayed. If during that verification step the user decides to choose a different method of signing in or verifying, the `'choose-strategy'` step will be displayed.\n *\n * You typically want to place fields like username, password, or social providers in the `'start'` step. The `'verifications'` step is used to verify the user's credentials like password or MFA. Once the user has been verified, the sign-in attempt will be completed.\n *\n * @param {string} name - Step name. Use `'start'`, `'verifications'`, `'choose-strategy'`, `'reset-password'`, or `'forgot-password'`.\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name='start' />\n * <SignIn.Step name='verifications' />\n * <SignIn.Step name='choose-strategy' />\n * <SignIn.Step name='forgot-password' />\n * <SignIn.Step name='reset-password' />\n * <SignIn.Step name='choose-session' />\n * </SignIn.Root>\n */\nexport function SignInStep(props: SignInStepProps) {\n const clerk = useClerk();\n\n clerk.telemetry?.record(eventComponentMounted('Elements_SignInStep', { name: props.name }));\n\n switch (props.name) {\n case SIGN_IN_STEPS.start:\n return <SignInStart {...props} />;\n case SIGN_IN_STEPS.verifications:\n return <SignInVerifications {...props} />;\n case SIGN_IN_STEPS['choose-strategy']:\n return <SignInChooseStrategy {...props} />;\n case SIGN_IN_STEPS['forgot-password']:\n return <SignInForgotPassword {...props} />;\n case SIGN_IN_STEPS['reset-password']:\n return <SignInResetPassword {...props} />;\n case SIGN_IN_STEPS['choose-session']:\n return <SignInChooseSession {...props} />;\n case SIGN_IN_STEPS['sso-callback']:\n return <SignInSSOCallback {...props} />;\n default:\n throw new ClerkElementsRuntimeError(`Invalid step name. Use: ${Object.keys(SIGN_IN_STEPS).join(',')}.`);\n }\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { createContextForDomValidation } from '~/react/utils/create-context-for-dom-validation';\nimport { isValidComponentType } from '~/react/utils/is-valid-component-type';\n\nimport {\n SignInActiveSessionContext,\n type SignInActiveSessionListItem,\n useSignInActiveSessionContext,\n useSignInChooseSessionIsActive,\n useSignInSessionList,\n} from './choose-session.hooks';\n\n// ----------------------------------- TYPES ------------------------------------\n\nexport type SignInChooseSessionProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\nexport type SignInSessionListProps = React.HTMLAttributes<HTMLUListElement> & {\n asChild?: boolean;\n includeCurrentSession?: true;\n};\nexport type SignInSessionListItemProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'children'> & {\n asChild?: boolean;\n children: ({ session }: { session: SignInActiveSessionListItem }) => React.ReactNode;\n};\n\n// ---------------------------------- CONTEXT -----------------------------------\n\nexport const SignInChooseSessionCtx = createContextForDomValidation('SignInChooseSessionCtx');\n\n// --------------------------------- COMPONENTS ---------------------------------\n\nexport function SignInChooseSession({ asChild, children, ...props }: SignInChooseSessionProps) {\n const activeState = useSignInChooseSessionIsActive();\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseSessionCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseSessionCtx.Provider>\n ) : null;\n}\n\nexport function SignInSessionList({ asChild, children, includeCurrentSession, ...props }: SignInSessionListProps) {\n const sessions = useSignInSessionList({ omitCurrent: !includeCurrentSession });\n\n if (!children || !sessions?.length) {\n return null;\n }\n\n if (React.Children.count(children) > 1) {\n return React.Children.only(null);\n }\n\n if (asChild && isValidComponentType(children, SignInSessionListItem)) {\n // TODO: Update error message\n throw new Error('asChild cannot be used with SessionListItem as the direct child');\n }\n\n if (!React.isValidElement(children)) {\n // TODO: Update error message\n throw new Error('children must be a valid React element');\n }\n\n const newChildren = asChild ? (children.props.children as React.ReactNode) : children;\n const childrenWithCtx = sessions.map(session => {\n return (\n <SignInActiveSessionContext.Provider\n key={`SignInActiveSessionContext-${session.id}`}\n value={session}\n >\n {newChildren}\n </SignInActiveSessionContext.Provider>\n );\n });\n\n if (asChild) {\n return <Slot {...props}>{React.cloneElement(children, undefined, childrenWithCtx)}</Slot>;\n }\n\n return <ul {...props}>{childrenWithCtx}</ul>;\n}\n\nexport function SignInSessionListItem(props: SignInSessionListItemProps) {\n const { asChild = false, children, ...passthroughProps } = props;\n const session = useSignInActiveSessionContext();\n const Comp = asChild ? Slot : 'li';\n\n return <Comp {...passthroughProps}>{children({ session })}</Comp>;\n}\n","import * as React from 'react';\n\n/**\n * Use this context helper to detect whether a component has a particular parent higher up in the DOM or not.\n */\nexport function createContextForDomValidation(displayName: string) {\n const ReactContext = React.createContext(false);\n const OriginalProvider = ReactContext.Provider;\n\n function Provider({ children }: { children: React.ReactNode }) {\n return React.createElement(\n OriginalProvider,\n {\n value: true,\n },\n children,\n );\n }\n\n Provider.displayName = displayName;\n\n function useContext(allowMissingContext: boolean = false) {\n const context = React.useContext(ReactContext);\n\n if (!allowMissingContext && !context) {\n throw new Error(\n `You used a hook from \"${Provider.displayName}\" but it's not inside a <${Provider.displayName}.Provider> component.`,\n );\n }\n\n return context;\n }\n\n return {\n Provider,\n useDomValidation: useContext,\n };\n}\n","import * as React from 'react';\n\nexport function isValidComponentType(child: React.ReactNode, type: any): child is React.ReactElement {\n return React.isValidElement(child) && child.type === type;\n}\n","import type { ActiveSessionResource, PublicUserData } from '@clerk/types';\nimport * as React from 'react';\n\nimport { useActiveTags } from '../../hooks';\nimport { SignInRouterCtx } from '../context';\n\nexport type SignInActiveSessionListItem = Pick<ActiveSessionResource, 'id'> & PublicUserData;\n\nexport const SignInActiveSessionContext = React.createContext<SignInActiveSessionListItem | null>(null);\n\nexport function useSignInActiveSessionContext(): SignInActiveSessionListItem {\n const ctx = React.useContext(SignInActiveSessionContext);\n\n if (!ctx) {\n throw new Error('SignInActiveSessionContext must be used within a SessionList/SignInSessionListItem');\n }\n\n return ctx;\n}\n\nexport function useSignInChooseSessionIsActive() {\n const routerRef = SignInRouterCtx.useActorRef();\n return useActiveTags(routerRef, 'step:choose-session');\n}\n\nexport type UseSignInSessionListParams = {\n omitCurrent: boolean;\n};\n\nexport function useSignInSessionList(params?: UseSignInSessionListParams): SignInActiveSessionListItem[] {\n const { omitCurrent = true } = params || {};\n\n return SignInRouterCtx.useSelector(state => {\n const signedInSessions = state.context.clerk?.client?.signedInSessions || [];\n const currentSessionId = state.context.clerk?.session?.id;\n const filteredSessions = omitCurrent ? signedInSessions.filter(s => s.id !== currentSessionId) : signedInSessions;\n\n return filteredSessions.map(s => ({\n id: s.id,\n ...s.publicUserData,\n }));\n });\n}\n","import { useSelector } from '@xstate/react';\nimport type { ActorRef, AnyActorRef, AnyMachineSnapshot, MachineSnapshot } from 'xstate';\n\ntype TaggedActor<TActor extends AnyActorRef> =\n TActor extends ActorRef<MachineSnapshot<any, any, any, any, infer TTags, any, any, any>, any> ? TTags : never;\n\nexport const ActiveTagsMode = {\n any: 'any',\n all: 'all',\n} as const;\n\nexport type UseActiveTagsMode = (typeof ActiveTagsMode)[keyof typeof ActiveTagsMode];\nexport type UseActiveTagsSingleReturn = boolean;\nexport type UseActiveTagsMultiAnyReturn<TTag> = { active: boolean; activeTags: Set<TTag> };\nexport type UseActiveTagsReturn<TTag> = UseActiveTagsSingleReturn | UseActiveTagsMultiAnyReturn<TTag>;\n\n/**\n * Generic hook to check if a tag is active.\n *\n * @example\n * const ref = SignUpCtx.useActorRef();\n *\n * useActiveTags(ref, 'external');\n * useActiveTags(ref, ['external', 'email_code']);\n * useActiveTags(ref, ['external', 'email_code'], 'all');\n *\n * @param actor {ActorRef} Machine actor reference\n * @param tag {(string | string[])} The tag(s) to check\n * @param mode {UseActiveTagsMode} Whether to match all tags or any tag\n *\n * @returns {(boolean|UseActiveTagsReturn)} Whether the tag(s) are active\n */\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tag: TTag,\n): boolean;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag[],\n mode: 'all',\n): boolean;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag[],\n mode?: 'any',\n): UseActiveTagsMultiAnyReturn<TTag>;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag | TTag[],\n mode: UseActiveTagsMode = ActiveTagsMode.any,\n): UseActiveTagsReturn<TTag> {\n const state = useSelector<TActor, AnyMachineSnapshot>(\n actor,\n s => s,\n (prev, next) => prev.tags === next.tags,\n );\n\n if (!state) {\n return false;\n }\n\n if (typeof tags === 'string') {\n return state.hasTag(tags);\n }\n\n if (!Array.isArray(tags)) {\n throw new Error('Invalid tags parameter provided to useActiveTags');\n }\n\n switch (mode) {\n case ActiveTagsMode.any: {\n const matching = new Set(tags.filter(tag => state.hasTag(tag)));\n return { active: matching.size > 0, activeTags: matching };\n }\n case ActiveTagsMode.all:\n return tags.length === state.tags.size ? tags.every(tag => state.hasTag(tag)) : false;\n default:\n return false;\n }\n}\n","import type { SignInFactor, SignInStrategy as TSignInStrategy } from '@clerk/types';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\nimport type { ActorRefFrom } from 'xstate';\n\nimport type { TSignInFirstFactorMachine, TSignInSecondFactorMachine } from '~/internals/machines/sign-in';\nimport { SignInRouterSystemId } from '~/internals/machines/sign-in';\n\nimport { useActiveTags } from '../hooks';\nimport { ActiveTagsMode } from '../hooks/use-active-tags.hook';\nimport { createContextForDomValidation } from '../utils/create-context-for-dom-validation';\nimport { SignInRouterCtx, SignInStrategyContext } from './context';\n\n// --------------------------------- HELPERS ---------------------------------\n\nconst localStrategies: Set<TSignInStrategy> = new Set(['email_code', 'password', 'phone_code', 'email_link']);\nconst resetPasswordStrategies: Set<TSignInStrategy> = new Set([\n 'reset_password_phone_code',\n 'reset_password_email_code',\n]);\n\nexport function isResetPasswordStrategy(strategy: TSignInStrategy | null | undefined): boolean {\n if (!strategy) {\n return false;\n }\n return resetPasswordStrategies.has(strategy);\n}\n\nexport function factorHasLocalStrategy(factor: SignInFactor | undefined | null): boolean {\n if (!factor) {\n return false;\n }\n return localStrategies.has(factor.strategy);\n}\n\n// --------------------------------- COMPONENTS ---------------------------------\n\nexport type SignInChooseStrategyProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\nexport type SignInForgotPasswordProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\n\nexport const SignInChooseStrategyCtx = createContextForDomValidation('SignInChooseStrategyCtx');\n\nexport function SignInChooseStrategy({ asChild, children, ...props }: SignInChooseStrategyProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeStateFirstFactor = useActiveTags(\n routerRef,\n ['step:verifications', 'step:first-factor', 'step:choose-strategy'],\n ActiveTagsMode.all,\n );\n\n const activeStateSecondFactor = useActiveTags(\n routerRef,\n ['step:verifications', 'step:second-factor', 'step:choose-strategy'],\n ActiveTagsMode.all,\n );\n\n const activeState = activeStateFirstFactor || activeStateSecondFactor;\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseStrategyCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseStrategyCtx.Provider>\n ) : null;\n}\n\nexport function SignInForgotPassword({ asChild, children, ...props }: SignInForgotPasswordProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(\n routerRef,\n ['step:verifications', 'step:first-factor', 'step:forgot-password'],\n ActiveTagsMode.all,\n );\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseStrategyCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseStrategyCtx.Provider>\n ) : null;\n}\n\nconst SUPPORTED_STRATEGY_NAME = 'SignInSupportedStrategy';\n\nexport type SignInSupportedStrategyElement = React.ElementRef<'button'>;\nexport type SignInSupportedStrategyProps = {\n asChild?: boolean;\n name: Exclude<SignInFactor['strategy'], `oauth_${string}` | 'saml'>;\n children: React.ReactNode;\n};\n\n/**\n * By default, renders a button which will trigger a change in the chosen sign-in strategy. It **must** be used within a `<Step name='choose-strategy'>` component.\n *\n * @description This component will only render its contents if the chosen strategy is enabled (in the Clerk dashboard) and if it's not the current strategy.\n *\n * @param name - Define a strategy to be used.\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <SignIn.Step name='choose-strategy'>\n * <SignIn.SupportedStrategy name='password'>\n * Sign in with password\n * </SignIn.SupportedStrategy>\n * </SignIn.Step>\n */\nexport const SignInSupportedStrategy = React.forwardRef<SignInSupportedStrategyElement, SignInSupportedStrategyProps>(\n ({ asChild, children, name, ...rest }, forwardedRef) => {\n const routerRef = SignInRouterCtx.useActorRef();\n const snapshot = routerRef.getSnapshot();\n\n const status = snapshot.context.clerk.client.signIn.status;\n const supportedFirstFactors =\n status === 'needs_first_factor' ? snapshot.context.clerk.client.signIn.supportedFirstFactors || [] : [];\n const supportedSecondFactors =\n status === 'needs_second_factor' ? snapshot.context.clerk.client.signIn.supportedSecondFactors || [] : [];\n const factor = [...supportedFirstFactors, ...supportedSecondFactors].find(factor => name === factor.strategy);\n\n const currentFactor = useSelector(\n (snapshot.children[SignInRouterSystemId.firstFactor] ||\n snapshot.children[SignInRouterSystemId.secondFactor]) as unknown as ActorRefFrom<\n TSignInFirstFactorMachine | TSignInSecondFactorMachine\n >,\n state => state?.context.currentFactor?.strategy,\n );\n\n const sendUpdateStrategyEvent = React.useCallback(\n () => routerRef.send({ type: 'STRATEGY.UPDATE', factor }),\n [routerRef, factor],\n );\n\n // Don't render if the current factor is the same as the one we're trying to render\n if (currentFactor === name) {\n return null;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return factor ? (\n <SignInStrategyContext.Provider value={{ strategy: name }}>\n <Comp\n {...defaultProps}\n {...rest}\n ref={forwardedRef}\n onClick={sendUpdateStrategyEvent}\n >\n {children || factor.strategy}\n </Comp>\n </SignInStrategyContext.Provider>\n ) : null;\n },\n);\n\nSignInSupportedStrategy.displayName = SUPPORTED_STRATEGY_NAME;\n","import type { TSignInResetPasswordMachine } from '~/internals/machines/sign-in';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx, useSignInResetPasswordStep } from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInResetPasswordProps = FormProps;\n\nexport const SignInResetPasswordCtx = createContextFromActorRef<TSignInResetPasswordMachine>('SignInResetPasswordCtx');\n\nexport function SignInResetPassword(props: SignInResetPasswordProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:reset-password');\n\n return activeState ? <SignInResetPasswordInner {...props} /> : null;\n}\n\nfunction SignInResetPasswordInner(props: SignInResetPasswordProps) {\n const ref = useSignInResetPasswordStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignInResetPasswordCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignInResetPasswordCtx.Provider>\n );\n}\n","import type { PropsWithChildren } from 'react';\n\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nexport type SignInSSOCallbackProps = PropsWithChildren;\n\nexport function SignInSSOCallback({ children }: SignInSSOCallbackProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:callback');\n\n return activeState ? children : null;\n}\n","import type { TSignInStartMachine } from '~/internals/machines/sign-in';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx, useSignInStartStep } from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInStartProps = FormProps;\n\nexport const SignInStartCtx = createContextFromActorRef<TSignInStartMachine>('SignInStartCtx');\n\nexport function SignInStart(props: SignInStartProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:start');\n\n return activeState ? <SignInStartInner {...props} /> : null;\n}\n\nfunction SignInStartInner(props: SignInStartProps) {\n const ref = useSignInStartStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignInStartCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignInStartCtx.Provider>\n );\n}\n","import type { SignInStrategy as ClerkSignInStrategy } from '@clerk/types';\nimport { useSelector } from '@xstate/react';\nimport { useCallback, useEffect } from 'react';\nimport type { ActorRefFrom, SnapshotFrom } from 'xstate';\n\nimport type { SignInStrategyName } from '~/internals/machines/shared';\nimport type { TSignInFirstFactorMachine, TSignInSecondFactorMachine } from '~/internals/machines/sign-in';\nimport { matchStrategy } from '~/internals/machines/utils/strategies';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport {\n SignInRouterCtx,\n SignInStrategyContext,\n StrategiesContext,\n useSignInFirstFactorStep,\n useSignInSecondFactorStep,\n useStrategy,\n} from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInVerificationsProps = { preferred?: ClerkSignInStrategy } & FormProps;\n\nexport const SignInFirstFactorCtx = createContextFromActorRef<TSignInFirstFactorMachine>('SignInFirstFactorCtx');\nexport const SignInSecondFactorCtx = createContextFromActorRef<TSignInSecondFactorMachine>('SignInSecondFactorCtx');\n\nconst strategiesSelector = (state: SnapshotFrom<TSignInFirstFactorMachine | TSignInSecondFactorMachine>) =>\n state.context.currentFactor?.strategy;\n\nfunction SignInStrategiesProvider({\n children,\n preferred,\n actorRef,\n ...props\n}: SignInVerificationsProps & { actorRef: ActorRefFrom<TSignInFirstFactorMachine | TSignInSecondFactorMachine> }) {\n const routerRef = SignInRouterCtx.useActorRef();\n const current = useSelector(actorRef, strategiesSelector);\n const isChoosingAltStrategy = useActiveTags(routerRef, ['step:choose-strategy', 'step:forgot-password']);\n const isActive = useCallback((name: string) => (current ? matchStrategy(current, name) : false), [current]);\n\n return (\n <StrategiesContext.Provider value={{ current: current, preferred, isActive }}>\n {isChoosingAltStrategy.active ? null : (\n <Form\n flowActor={actorRef}\n {...props}\n >\n {children}\n </Form>\n )}\n </StrategiesContext.Provider>\n );\n}\n\nexport type SignInStrategyProps = { name: SignInStrategyName; children: React.ReactNode };\n\nfunction useFactorCtx() {\n const firstFactorRef = SignInFirstFactorCtx.useActorRef(true);\n const secondFactorRef = SignInSecondFactorCtx.useActorRef(true);\n\n return firstFactorRef || secondFactorRef;\n}\n\n/**\n * Generic component to handle both first and second factor verifications.\n *\n * @param {string} name - The name of the strategy for which its children will be rendered.\n *\n * @example\n * <SignIn.Step name=\"verifications\">\n * <SignIn.Strategy name=\"password\">...</SignIn.Strategy>\n * </SignIn.Step>\n */\nexport function SignInStrategy({ children, name }: SignInStrategyProps) {\n const { active } = useStrategy(name);\n const factorCtx = useFactorCtx();\n\n useEffect(() => {\n if (factorCtx) {\n factorCtx.send({ type: 'STRATEGY.REGISTER', factor: name });\n }\n\n return () => {\n if (factorCtx?.getSnapshot().status === 'active') {\n factorCtx.send({ type: 'STRATEGY.UNREGISTER', factor: name });\n }\n };\n }, [factorCtx, name]);\n\n return active ? (\n <SignInStrategyContext.Provider value={{ strategy: name }}>{children}</SignInStrategyContext.Provider>\n ) : null;\n}\n\n/**\n * Generic component to handle both first and second factor verifications.\n *\n * @example\n * <Step name=\"verifications\">...</Step>\n */\nexport function SignInVerifications(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const { activeTags: activeRoutes } = useActiveTags(routerRef, ['step:first-factor', 'step:second-factor']);\n\n if (activeRoutes.has('step:first-factor')) {\n return <SignInFirstFactorInner {...props} />;\n }\n\n if (activeRoutes.has('step:second-factor')) {\n return <SignInSecondFactorInner {...props} />;\n }\n\n return null;\n}\n\n/**\n * Component to handle specifically first factor verifications.\n * Generally, you should use the <SignInVerifications> component instead via <Step name=\"verifications\">.\n *\n * @example\n * <FirstFactor>...</FirstFactor>\n */\nexport function SignInFirstFactor(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:first-factor');\n\n return activeState ? <SignInFirstFactorInner {...props} /> : null;\n}\n\n/**\n * Component to handle specifically second factor verifications.\n * Generally, you should use the <SignInVerifications> component instead via <Step name=\"verifications\">.\n *\n * @example\n * <SecondFactor>...</SecondFactor>\n */\nexport function SignInSecondFactor(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:second-factor');\n\n return activeState ? <SignInSecondFactorInner {...props} /> : null;\n}\n\nexport function SignInFirstFactorInner(props: SignInVerificationsProps) {\n const ref = useSignInFirstFactorStep();\n\n if (!ref) {\n return null;\n }\n\n return ref ? (\n <SignInFirstFactorCtx.Provider actorRef={ref}>\n <SignInStrategiesProvider\n actorRef={ref}\n {...props}\n />\n </SignInFirstFactorCtx.Provider>\n ) : null;\n}\n\nexport function SignInSecondFactorInner(props: SignInVerificationsProps) {\n const ref = useSignInSecondFactorStep();\n\n if (!ref) {\n return null;\n }\n\n return ref ? (\n <SignInSecondFactorCtx.Provider actorRef={ref}>\n <SignInStrategiesProvider\n actorRef={ref}\n {...props}\n />\n </SignInSecondFactorCtx.Provider>\n ) : null;\n}\n\nexport type SignInVerificationResendableRenderProps = {\n resendable: boolean;\n resendableAfter: number;\n};\n\nexport type SignInVerificationResendableProps = {\n children: (props: SignInVerificationResendableRenderProps) => React.ReactNode;\n};\n","export const matchStrategy = (current: string | undefined, desired: string | undefined): boolean => {\n if (!current || !desired) {\n return false;\n }\n\n if (current === desired) {\n return true;\n }\n\n return current.startsWith(`${desired}_`);\n};\n","import * as React from 'react';\n\nimport type { FormSubmitProps } from '~/react/common';\nimport { Submit } from '~/react/common';\n\nimport type { SignInNavigateProps } from './navigate';\nimport { SignInNavigate } from './navigate';\nimport type { SignInResendProps } from './resend';\nimport { SignInResend } from './resend';\nimport { SignInSetActiveSession } from './set-active-session';\n\nexport type SignInActionProps = { asChild?: boolean } & FormSubmitProps &\n (\n | ({\n navigate: SignInNavigateProps['to'];\n resend?: never;\n setActiveSession?: never;\n submit?: never;\n } & Omit<SignInNavigateProps, 'to'>)\n | { navigate?: never; resend?: never; setActiveSession?: never; submit: true }\n | { navigate?: never; resend?: never; setActiveSession: true; submit?: never }\n | ({ navigate?: never; resend: true; setActiveSession?: never; submit?: never } & SignInResendProps)\n );\n\nconst DISPLAY_NAME = 'SignInAction';\n\n/**\n * Perform various actions during the sign-in process. This component is used to navigate between steps, submit the form, or resend a verification codes.\n *\n * @param {boolean} [submit] - If `true`, the action will submit the form.\n * @param {string} [navigate] - The name of the step to navigate to.\n * @param {boolean} [resend] - If `true`, the action will resend the verification code for the currently active strategy, if applicable.\n * @param {Function} [fallback] - Only used when `resend` is `true`. If provided, the fallback markup will be rendered before the resend delay has expired.\n *\n * @example\n * <SignIn.Action navigate=\"start\">Go Back</SignIn.Action>\n *\n * @example\n * <SignIn.Action submit>Sign In</SignIn.Action>\n *\n * @example\n * <SignIn.Action resend>Resend</SignIn.Action>\n */\nexport const SignInAction = React.forwardRef<React.ElementRef<'button'>, SignInActionProps>((props, forwardedRef) => {\n const { submit, navigate, resend, setActiveSession, ...rest } = props;\n let Comp: React.ForwardRefExoticComponent<any> | undefined;\n\n if (submit) {\n Comp = Submit;\n } else if (navigate) {\n Comp = SignInNavigate;\n } else if (resend) {\n Comp = SignInResend;\n } else if (setActiveSession) {\n Comp = SignInSetActiveSession;\n }\n\n return Comp ? (\n <Comp\n to={navigate}\n {...rest}\n ref={forwardedRef}\n />\n ) : null;\n});\n\nSignInAction.displayName = DISPLAY_NAME;\n","// Mark as a client-only package. This will error if you try to import it in a React Server Component.\nimport 'client-only';\n\nexport { Field, FieldError, FieldState, GlobalError, Input, Label, Submit } from '~/react/common/form';\nexport { Connection, Icon } from '~/react/common/connections';\nexport { Loading } from '~/react/common/loading';\nexport { Link } from '~/react/common/link';\n\nexport type {\n FormFieldErrorProps,\n FormErrorProps,\n FormErrorRenderProps,\n FormFieldProps,\n FormGlobalErrorProps,\n FormInputProps,\n FormProps,\n FormSubmitProps,\n} from '~/react/common/form';\nexport type { ConnectionProps, IconProps } from '~/react/common/connections';\nexport type { OTPInputSegmentStatus } from '~/react/common/form/otp';\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nconst SIGN_IN_NAVIGATE_NAME = 'SignInNavigate';\nconst SignInNavigationEventMap = {\n start: 'NAVIGATE.START',\n previous: 'NAVIGATE.PREVIOUS',\n 'choose-strategy': 'NAVIGATE.CHOOSE_STRATEGY',\n 'forgot-password': 'NAVIGATE.FORGOT_PASSWORD',\n} as const;\n\nexport type SignInNavigateElementKey = keyof typeof SignInNavigationEventMap;\n\nexport type SignInNavigateElement = React.ElementRef<'button'>;\nexport type SignInNavigateProps = {\n asChild?: boolean;\n to: SignInNavigateElementKey;\n children: React.ReactNode;\n};\n\n/**\n * Renders a button which will navigate to a different step in the sign-in flow.\n *\n * @param {SignInNavigateElementKey} to - The step to navigate to.\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <Navigate to=\"choose-strategy\">\n * Choose a different sign-in method...\n * </Navigate>\n */\nexport const SignInNavigate = React.forwardRef<SignInNavigateElement, SignInNavigateProps>(\n ({ asChild, to, ...rest }, forwardedRef) => {\n const actorRef = SignInRouterCtx.useActorRef();\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n const type = SignInNavigationEventMap[to];\n\n if (actorRef.getSnapshot().can({ type })) {\n actorRef.send({ type });\n } else {\n console.warn(\n `Clerk: <SignIn.Action navigate=\"${to}\"> is an invalid navigation event. You can only navigate to: ${Object.keys(SignInNavigationEventMap).join(', ')}.`,\n );\n }\n }, [actorRef, to]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInNavigate.displayName = SIGN_IN_NAVIGATE_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\n\nimport { SignInFirstFactorCtx, SignInSecondFactorCtx } from '../verifications';\n\nexport type SignInResendElement = React.ElementRef<'button'>;\nexport type SignInResendFallbackProps = {\n resendable: boolean;\n resendableAfter: number;\n};\nexport type SignInResendProps = {\n asChild?: boolean;\n children: React.ReactNode;\n /**\n * A fallback component to render when the resend action is not available.\n * This can be a React element or a function that receives the `resendableAfter` prop.\n */\n fallback?: React.ReactNode | ((props: SignInResendFallbackProps) => React.ReactNode);\n};\n\nconst SIGN_IN_RESEND_NAME = 'SignInResend';\n\n/**\n * Resend verification codes during the sign-in process.\n * This component must be used within the <Step name=\"verifications\">.\n *\n * > [!NOTE]\n * > This component is not intended to be used directly. Instead, use the `<Action resend>` component.\n *\n * @example\n * ```tsx\n * import { Action } from '@clerk/elements/sign-in';\n * <Action resend fallback={({ resendableAfter }) => <p>Resendable in: {resendableAfter}s</p>}>Resend</Action>;\n * ```\n */\nexport const SignInResend = React.forwardRef<SignInResendElement, SignInResendProps>(\n ({ asChild, fallback, ...rest }, forwardedRef) => {\n const firstFactorRef = SignInFirstFactorCtx.useActorRef(true);\n const secondFactorRef = SignInSecondFactorCtx.useActorRef(true);\n const actorRef = firstFactorRef || secondFactorRef;\n\n if (!actorRef) {\n throw new Error('The resend action must be used within <SignIn.Step name=\"verifications\">.');\n }\n\n const fallbackProps: SignInResendFallbackProps = useSelector(\n actorRef,\n state => ({\n resendable: state.context.resendable,\n resendableAfter: state.context.resendableAfter,\n }),\n (a, b) => a.resendableAfter === b.resendableAfter && a.resendable === b.resendable,\n );\n\n if (fallback && !fallbackProps.resendable) {\n return typeof fallback === 'function' ? fallback(fallbackProps) : fallback;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n disabled={!fallbackProps.resendable}\n onClick={() => actorRef.send({ type: 'RETRY' })}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInResend.displayName = SIGN_IN_RESEND_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport type { SignInRouterSessionSetActiveEvent } from '~/internals/machines/sign-in';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nimport { useSignInActiveSessionContext } from '../choose-session/choose-session.hooks';\n\nconst DISPLAY_NAME = 'SignInSetActiveSession';\n\nexport type SignInSetActiveSessionElement = React.ElementRef<'button'>;\nexport type SignInSetActiveSessionProps = {\n asChild?: boolean;\n children: React.ReactNode;\n};\n\n/**\n * Sets the active session to the session with the provided ID.\n *\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <SignInSetActiveSession setActiveSession>\n * t*****m@clerk.dev\n * </SignInSetActiveSession>\n */\nexport const SignInSetActiveSession = React.forwardRef<SignInSetActiveSessionElement, SignInSetActiveSessionProps>(\n ({ asChild, ...rest }, forwardedRef) => {\n const actorRef = SignInRouterCtx.useActorRef();\n const session = useSignInActiveSessionContext();\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n const event: SignInRouterSessionSetActiveEvent = { type: 'SESSION.SET_ACTIVE', id: session.id };\n\n if (actorRef.getSnapshot().can(event)) {\n actorRef.send(event);\n } else {\n console.warn(\n `Clerk: <SignIn.Action setActiveSession> is an invalid event. You can only choose an active session from <SignIn.Step name=\"choose-session\">.`,\n );\n }\n }, [actorRef, session.id]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInSetActiveSession.displayName = DISPLAY_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nexport type SignInPasskeyElement = React.ElementRef<'button'>;\n\nexport type SignInPasskeyProps = {\n asChild?: boolean;\n children: React.ReactNode;\n} & React.DetailedHTMLProps<React.HTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;\n\nconst SIGN_IN_PASSKEY_NAME = 'SignInPasskey';\n\n/**\n * Prompt users to select a passkey from their device in order to sign in.\n * This component must be used within the <Step name=\"start\">.\n *\n * @example\n * <SignIn.Action passkey>Use Passkey instead</SignIn.Action>\n */\nexport const SignInPasskey = React.forwardRef<SignInPasskeyElement, SignInPasskeyProps>(\n ({ asChild, ...rest }, forwardedRef) => {\n const actorRef = SignInRouterCtx.useActorRef(true);\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n const sendEvent = React.useCallback(() => {\n actorRef?.send({ type: 'AUTHENTICATE.PASSKEY' });\n }, [actorRef]);\n\n return (\n <Comp\n {...defaultProps}\n {...rest}\n onClick={sendEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignInPasskey.displayName = SIGN_IN_PASSKEY_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { CAPTCHA_ELEMENT_ID } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport { useActiveTags } from '../hooks';\nimport { SignInRouterCtx } from './context';\n\nexport type SignInCaptchaElement = React.ElementRef<'div'>;\n\ntype CaptchaElementProps = Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n 'id' | 'children'\n>;\n\nexport type SignInCaptchaProps =\n | ({\n asChild: true;\n /* Must only be a self-closing element/component */\n children: React.ReactElement;\n } & CaptchaElementProps)\n | ({ asChild?: false; children?: undefined } & CaptchaElementProps);\n\n/**\n * The `<SignIn.Captcha>` component is used to render the Cloudflare Turnstile widget. It must be used within the `<SignIn.Step name=\"sso-callback\">` component.\n *\n * If utilizing the `asChild` prop, the component must be a self-closing element or component. Any children passed to the immediate child component of <SignIn.Captcha> will be ignored.\n *\n * @param {boolean} [asChild] - If true, `<Captcha />` will render as its child element, passing along any necessary props.\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name=\"sso-callback\">\n * <SignIn.Captcha />\n * </SignIn.Step>\n * </SignIn.Root>\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name=\"sso-callback\">\n * <SignIn.Captcha asChild>\n * <aside/>\n * </SignIn.Captcha>\n * </SignIn.Step>\n * </SignIn.Root>\n */\n\nexport const SignInCaptcha = React.forwardRef<SignInCaptchaElement, SignInCaptchaProps>(\n ({ asChild, children, ...rest }, forwardedRef) => {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:callback');\n\n if (!activeState) {\n throw new ClerkElementsRuntimeError(\n '<Captcha> must be used within the <SignIn.Step name=\"sso-callback\"> component.',\n );\n }\n\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n id={CAPTCHA_ELEMENT_ID}\n {...rest}\n ref={forwardedRef}\n />\n );\n },\n);\n","import { useMemo } from 'react';\n\nimport { SignInSafeIdentifierSelectorForStrategy, SignInSalutationSelector } from '~/internals/machines/sign-in';\n\nimport { SignInRouterCtx, useSignInStrategy } from './context';\n\n/**\n * Render an identifier that has been provided by the user during a sign-in attempt. Renders a `string` (or empty string if it can't find an identifier).\n *\n * @example\n * <SignIn.Strategy name=\"email_code\">\n * <h1>Check your email</h1>\n * <p>We've sent a code to <SignIn.SafeIdentifier />.</p>\n * </SignIn.Strategy>\n */\nexport function SignInSafeIdentifier({ transform }: { transform?: (s: string) => string }): string {\n const strategy = useSignInStrategy();\n const selector = useMemo(() => SignInSafeIdentifierSelectorForStrategy(strategy), [strategy]);\n const safeIdentifier = SignInRouterCtx.useSelector(selector);\n\n if (transform) {\n return transform(safeIdentifier);\n }\n\n return safeIdentifier;\n}\n\n/**\n * Render a salutation for the user during a sign-in attempt. It attempts to resolve these values in this specific order: First name, Last name, Identifier. Renders a `string` (or empty string if it can't find an identifier).\n *\n * @example\n * <SignIn.Strategy name=\"password\">\n * <p>Welcome back <SignIn.Salutation />!</p>\n * </SignIn.Strategy>\n */\nexport function SignInSalutation(): string {\n return SignInRouterCtx.useSelector(SignInSalutationSelector);\n}\n"],"mappings":"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","names":["import_client_only","import_react","import_xstate","import_error","import_xstate","_a","import_webauthn","import_xstate","import_xstate","import_xstate","import_xstate","import_xstate","import_underscore","import_router","import_react","import_navigation","import_router","import_react","React","import_react","React","useContext","useSelector","actor","useSelectorUnbound","import_react","import_react","import_react","React","RadixForm","import_react_form","DISPLAY_NAME","RadixSubmit","import_jsx_runtime","import_react","import_telemetry","React","React","useContext","React","React","import_react","actor","import_jsx_runtime","import_react_slot","import_react","React","import_jsx_runtime","factor","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","React","import_react_slot","React","import_jsx_runtime","import_react_slot","import_react","React","import_jsx_runtime","import_react_slot","React","import_jsx_runtime","DISPLAY_NAME","import_jsx_runtime","DISPLAY_NAME","import_react_slot","React","import_jsx_runtime","import_react_slot","React","import_jsx_runtime","import_react"]}
|