@clerk/elements 0.17.1 → 0.17.2-canary.v5be7ca9
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-WIS4KGWZ.mjs → chunk-PEFF57AS.mjs} +2 -2
- package/dist/{chunk-S3AGKY4R.mjs → chunk-ZRCYOFRG.mjs} +6 -6
- package/dist/{chunk-S3AGKY4R.mjs.map → chunk-ZRCYOFRG.mjs.map} +1 -1
- package/dist/react/common/index.mjs +1 -1
- package/dist/react/sign-in/index.js +5 -5
- 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.js +5 -5
- package/dist/react/sign-up/index.js.map +1 -1
- package/dist/react/sign-up/index.mjs +7 -7
- package/dist/react/sign-up/index.mjs.map +1 -1
- package/package.json +4 -4
- /package/dist/{chunk-WIS4KGWZ.mjs.map → chunk-PEFF57AS.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/react/sign-up/index.ts","../../../src/react/sign-up/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-up/continue.machine.ts","../../../src/internals/machines/shared/shared.actions.ts","../../../src/internals/machines/sign-up/utils/fields-to-params.ts","../../../src/internals/machines/utils/assert.ts","../../../src/internals/machines/sign-up/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-up/start.machine.ts","../../../src/internals/machines/sign-up/verification.machine.ts","../../../src/internals/machines/sign-up/verification.types.ts","../../../src/react/router/index.ts","../../../src/react/router/virtual.ts","../../../src/react/utils/create-context-from-actor-ref.ts","../../../src/react/sign-up/context/router.context.ts","../../../src/react/common/form/hooks/use-form.ts","../../../src/react/common/form/hooks/use-global-errors.ts","../../../node_modules/@radix-ui/primitive/src/primitive.tsx","../../../src/react/common/form/form.tsx","../../../src/react/common/form/submit.tsx","../../../src/react/utils/path-inference/next.tsx","../../../src/react/utils/path-inference/utils.ts","../../../src/react/sign-up/step.tsx","../../../src/react/hooks/use-active-tags.hook.ts","../../../src/react/sign-up/continue.tsx","../../../src/react/sign-up/restricted.tsx","../../../src/react/sign-up/start.tsx","../../../src/react/sign-up/verifications.tsx","../../../src/react/sign-up/action/action.tsx","../../../src/react/common/index.ts","../../../src/react/sign-up/action/navigate.tsx","../../../src/react/sign-up/action/resend.tsx","../../../src/react/sign-up/captcha.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 { SignUpRoot as SignUp, SignUpRoot as Root } from './root';\nexport { SignUpStep as Step } from './step';\nexport { SignUpAction as Action } from './action';\nexport { SignUpStrategy as Strategy } from './verifications';\nexport { SignUpCaptcha as Captcha } from './captcha';\n","import { useClerk } from '@clerk/shared/react';\nimport { useClerkHostRouter } from '@clerk/shared/router';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport { useSelector } from '@xstate/react';\nimport { 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 { SignUpRouterInitEvent } from '~/internals/machines/sign-up';\nimport { SignUpRouterMachine } from '~/internals/machines/sign-up';\nimport { inspect } from '~/internals/utils/inspector';\nimport { Router, useClerkRouter, useVirtualRouter } from '~/react/router';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nimport { Form } from '../common/form';\nimport { usePathnameWithoutCatchAll } from '../utils/path-inference/next';\n\ntype SignUpFlowProviderProps = {\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(SignUpRouterMachine, { inspect });\nactor.start();\n\nfunction SignUpFlowProvider({ children, exampleMode, fallback, isRootPath }: SignUpFlowProviderProps) {\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: SignUpRouterInitEvent = {\n type: 'INIT',\n clerk,\n exampleMode,\n formRef,\n router,\n signInPath: SIGN_IN_DEFAULT_BASE_PATH,\n };\n\n if (actor.getSnapshot().can(evt)) {\n actor.send(evt);\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\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clerk, exampleMode, formRef?.id, !!router, clerk.loaded]);\n\n return (\n <SignUpRouterCtx.Provider actorRef={actor}>\n {isRootPath && !isReady && fallback ? <Form>{fallback}</Form> : null}\n {clerk.loaded && isReady ? children : null}\n </SignUpRouterCtx.Provider>\n );\n}\n\nexport type SignUpRootProps = Omit<SignUpFlowProviderProps, 'isRootPath'> & {\n /**\n * The base path for your sign-up route.\n * Will be automatically inferred in Next.js.\n * @example `/sign-up`\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-up flow. It sets up providers and state management for its children.\n * Must wrap all sign-up related components.\n *\n * @param {string} path - The root path the sign-up flow is mounted at. Will be automatically inferred in Next.js. You can set it to `/sign-up` 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 SignUp from \"@clerk/elements/sign-up\"\n *\n * export default SignUpPage = () => (\n * <SignUp.Root>\n * </SignUp.Root>\n * )\n */\nexport function SignUpRoot({\n children,\n exampleMode = false,\n fallback = null,\n path: pathProp,\n routing = ROUTING.path,\n}: SignUpRootProps): JSX.Element | null {\n const clerk = useClerk();\n const inferredPath = usePathnameWithoutCatchAll();\n const path = pathProp || inferredPath || SIGN_UP_DEFAULT_BASE_PATH;\n\n clerk.telemetry?.record(\n eventComponentMounted('Elements_SignUpRoot', {\n exampleMode,\n fallback: Boolean(fallback),\n path,\n routing,\n }),\n );\n\n const router = (routing === ROUTING.virtual ? useVirtualRouter : useClerkHostRouter)();\n const isRootPath = path === router.pathname();\n\n return (\n <Router\n basePath={path}\n router={router}\n >\n <FormStoreProvider>\n <SignUpFlowProvider\n exampleMode={exampleMode}\n fallback={fallback}\n isRootPath={isRootPath}\n >\n {children}\n </SignUpFlowProvider>\n </FormStoreProvider>\n </Router>\n );\n}\n","export function safeAccess(fn: any, fallback: any) {\n try {\n return fn();\n } catch (e) {\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};\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 * @note 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 if (context.fields.has(params.name)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(params.name)!.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","import 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 { snakeToCamel } from '@clerk/shared/underscore';\nimport type { SignUpResource } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { fromPromise, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport type { FormDefaultValues, FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignUpContinueSchema } from './continue.types';\nimport type { SignInRouterMachineActorRef } from './router.types';\n\nexport type TSignUpContinueMachine = typeof SignUpContinueMachine;\n\nexport const SignUpContinueMachineId = 'SignUpContinue';\n\nexport const SignUpContinueMachine = setup({\n actors: {\n attempt: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; fields: FormFields }>(\n ({ input: { fields, parent } }) => {\n const params = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.update(params);\n },\n ),\n },\n actions: {\n setFormErrors: ({ context, event }) => {\n assertActorEventError(event);\n context.formRef.send({\n type: 'ERRORS.SET',\n error: event.error,\n });\n },\n markFormAsProgressive: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n\n const missing = signUp.missingFields.map(snakeToCamel);\n const optional = signUp.optionalFields.map(snakeToCamel);\n const required = signUp.requiredFields.map(snakeToCamel);\n\n const progressiveFieldValues: FormDefaultValues = new Map();\n\n for (const key of required.concat(optional) as (keyof SignUpResource)[]) {\n if (key in signUp) {\n // @ts-expect-error - TS doesn't understand that key is a valid key of SignUpResource\n progressiveFieldValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'MARK_AS_PROGRESSIVE',\n missing,\n optional,\n required,\n defaultValues: progressiveFieldValues,\n });\n },\n unmarkFormAsProgressive: ({ context }) => context.formRef.send({ type: 'UNMARK_AS_PROGRESSIVE' }),\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n },\n types: {} as SignUpContinueSchema,\n}).createMachine({\n id: SignUpContinueMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'continue',\n }),\n entry: 'markFormAsProgressive',\n onDone: {\n actions: 'unmarkFormAsProgressive',\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 { 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","import type { SignUpCreateParams, SignUpUpdateParams } from '@clerk/types';\n\nimport type { FormFields } from '~/internals/machines/form';\n\nconst SignUpAdditionalKeys = ['firstName', 'lastName', 'emailAddress', 'username', 'password', 'phoneNumber'] as const;\n\ntype SignUpAdditionalKeys = (typeof SignUpAdditionalKeys)[number];\n\nconst signUpKeys = new Set<SignUpAdditionalKeys>(SignUpAdditionalKeys);\n\nfunction isSignUpParam<T extends SignUpAdditionalKeys>(key: string): key is T {\n return signUpKeys.has(key as T);\n}\n\nexport function fieldsToSignUpParams<T extends SignUpCreateParams | SignUpUpdateParams>(\n fields: FormFields,\n): Pick<T, SignUpAdditionalKeys> {\n const params: SignUpUpdateParams = {};\n\n fields.forEach(({ value }, key) => {\n if (isSignUpParam(key) && value !== undefined) {\n params[key] = value as string;\n }\n });\n\n return params;\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 { joinURL } from '@clerk/shared/url';\nimport type { SignUpStatus, VerificationStatus } from '@clerk/types';\nimport type { NonReducibleUnknown } from 'xstate';\nimport { and, assign, enqueueActions, log, not, or, raise, sendTo, setup } from 'xstate';\n\nimport {\n ERROR_CODES,\n ROUTING,\n SEARCH_PARAMS,\n SIGN_IN_DEFAULT_BASE_PATH,\n SIGN_UP_DEFAULT_BASE_PATH,\n SIGN_UP_MODES,\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 { SignUpContinueMachine } from './continue.machine';\nimport type {\n SignUpRouterContext,\n SignUpRouterEvents,\n SignUpRouterNextEvent,\n SignUpRouterSchema,\n} from './router.types';\nimport { SignUpStartMachine } from './start.machine';\nimport { SignUpVerificationMachine } from './verification.machine';\n\nexport const SignUpRouterMachineId = 'SignUpRouter';\nexport type TSignUpRouterMachine = typeof SignUpRouterMachine;\n\nconst isCurrentPath =\n (path: `/${string}`) =>\n ({ context }: { context: SignUpRouterContext }, _params?: NonReducibleUnknown) =>\n context.router?.match(path) ?? false;\n\nconst needsStatus =\n (status: SignUpStatus) =>\n ({ context, event }: { context: SignUpRouterContext; event?: SignUpRouterEvents }, _?: NonReducibleUnknown) =>\n (event as SignUpRouterNextEvent)?.resource?.status === status || context.clerk?.client?.signUp?.status === status;\n\nexport const SignUpRouterMachine = setup({\n actors: {\n continueMachine: SignUpContinueMachine,\n startMachine: SignUpStartMachine,\n thirdPartyMachine: ThirdPartyMachine,\n verificationMachine: SignUpVerificationMachine,\n },\n actions: {\n clearFormErrors: sendTo(({ context }) => context.formRef, { type: 'ERRORS.CLEAR' }),\n logUnknownError: snapshot => console.error('Unknown error:', snapshot),\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: ({ context, event }, params?: { sessionId?: string; useLastActiveSession?: boolean }) => {\n if (context.exampleMode) {\n return;\n }\n\n const session =\n params?.sessionId ||\n (params?.useLastActiveSession && context.clerk.client.lastActiveSessionId) ||\n ((event as SignUpRouterNextEvent)?.resource || context.clerk.client.signUp).createdSessionId;\n\n const beforeEmit = () =>\n context.router?.push(context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl());\n void context.clerk.setActive({ session, beforeEmit });\n },\n delayedReset: raise({ type: 'RESET' }, { delay: 3000 }), // Reset machine after 3s delay.\n setError: assign({\n error: (_, { error }: { error?: ClerkElementsError }) => {\n if (error) {\n return error;\n }\n return new ClerkElementsRuntimeError('Unknown error');\n },\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 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 }) => context.router?.push(context.clerk.buildSignInUrl()),\n },\n guards: {\n areFieldsMissing: ({ context }) => context.clerk?.client?.signUp?.missingFields?.length > 0,\n areFieldsUnverified: ({ context }) => context.clerk?.client?.signUp?.unverifiedFields?.length > 0,\n\n hasAuthenticatedViaClerkJS: ({ context }) =>\n Boolean(context.clerk.client.signUp.status === null && context.clerk.client.lastActiveSessionId),\n hasCreatedSession: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.createdSession)),\n hasClerkStatus: ({ context }, params?: { status: VerificationStatus }) => {\n const value = context.router?.searchParams().get(SEARCH_PARAMS.status);\n if (!params) {\n return Boolean(value);\n }\n return value === params.status;\n },\n hasClerkTransfer: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.transfer)),\n hasResource: ({ context }) => Boolean(context.clerk.client.signUp),\n hasTicket: ({ context }) => Boolean(context.ticket),\n\n isLoggedInAndSingleSession: and(['isLoggedIn', 'isSingleSessionMode', not('isExampleMode')]),\n isStatusAbandoned: needsStatus('abandoned'),\n isStatusComplete: ({ context, event }) => {\n const resource = (event as SignUpRouterNextEvent)?.resource;\n const signUp = context.clerk?.client?.signUp;\n\n return (\n (resource?.status === 'complete' && Boolean(resource?.createdSessionId)) ||\n (signUp?.status === 'complete' && Boolean(signUp?.createdSessionId))\n );\n },\n isStatusMissingRequirements: needsStatus('missing_requirements'),\n\n isLoggedIn: or(['isStatusComplete', ({ context }) => Boolean(context.clerk.user)]),\n isSingleSessionMode: ({ context }) => Boolean(context.clerk?.__unstable__environment?.authConfig.singleSessionMode),\n isRestricted: ({ context }) =>\n context.clerk?.__unstable__environment?.userSettings.signUp.mode === SIGN_UP_MODES.RESTRICTED,\n isRestrictedWithoutTicket: and(['isRestricted', not('hasTicket')]),\n isExampleMode: ({ context }) => Boolean(context.exampleMode),\n isMissingRequiredFields: and(['isStatusMissingRequirements', 'areFieldsMissing']),\n isMissingRequiredUnverifiedFields: and(['isStatusMissingRequirements', 'areFieldsUnverified']),\n\n needsIdentifier: or(['statusNeedsIdentifier', isCurrentPath('/')]),\n needsContinue: and(['statusNeedsContinue', isCurrentPath('/continue')]),\n needsVerification: and(['statusNeedsVerification', isCurrentPath('/verify')]),\n needsCallback: isCurrentPath(SSO_CALLBACK_PATH_ROUTE),\n\n statusNeedsIdentifier: or([not('hasResource'), 'isStatusAbandoned']),\n statusNeedsContinue: or(['isMissingRequiredFields']),\n statusNeedsVerification: or(['isMissingRequiredUnverifiedFields', and(['areFieldsMissing', 'hasClerkStatus'])]),\n },\n delays: {\n 'TIMEOUT.POLLING': 300_000, // 5 minutes\n },\n types: {} as SignUpRouterSchema,\n}).createMachine({\n id: SignUpRouterMachineId,\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.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.SAML': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'saml',\n emailAddress: context.formRef.getSnapshot().context.fields.get('emailAddress')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.WEB3': {\n actions: sendTo('start', ({ event }) => event),\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 on: {\n INIT: {\n actions: assign(({ event }) => {\n const searchParams = event.router?.searchParams();\n\n return {\n clerk: event.clerk,\n router: event.router,\n signInPath: event.signInPath || SIGN_IN_DEFAULT_BASE_PATH,\n loading: {\n isLoading: false,\n },\n exampleMode: event.exampleMode || false,\n formRef: event.formRef,\n ticket:\n searchParams?.get(SEARCH_PARAMS.ticket) ||\n searchParams?.get(SEARCH_PARAMS.invitationToken) ||\n 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_UP_DEFAULT_BASE_PATH,\n flow: 'signUp',\n formRef: context.formRef,\n parent: self,\n },\n });\n }\n }),\n always: [\n {\n guard: 'isLoggedInAndSingleSession',\n actions: [\n log('Already logged in'),\n {\n type: 'navigateExternal',\n params: ({ context }) => ({\n path: context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n }),\n },\n ],\n },\n {\n guard: 'needsCallback',\n target: 'Callback',\n },\n {\n guard: 'hasTicket',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'needsVerification',\n actions: { type: 'navigateInternal', params: { force: true, path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: or(['needsContinue', 'hasClerkTransfer']),\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'Continue',\n },\n {\n guard: 'isRestrictedWithoutTicket',\n target: 'Restricted',\n },\n {\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 actions: enqueueActions(({ enqueue, context }) => {\n enqueue('clearFormErrors');\n enqueue.sendTo('start', { type: 'SET_FORM', formRef: context.formRef });\n }),\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: and(['hasTicket', 'statusNeedsContinue']),\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n reenter: true,\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Continue: {\n tags: ['step:continue'],\n invoke: {\n id: 'continue',\n src: 'continueMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'Continue',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n ],\n },\n },\n Verification: {\n tags: ['step:verification'],\n invoke: {\n id: 'verification',\n src: 'verificationMachine',\n input: ({ context, self }) => ({\n attributes: context.clerk.__unstable__environment?.userSettings.attributes,\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n resource: context.clerk.client.signUp,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n always: [\n {\n guard: 'hasCreatedSession',\n actions: [\n ({ context }) => ({\n type: 'setActive',\n params: { sessionId: context.router?.searchParams().get(SEARCH_PARAMS.createdSession) },\n }),\n 'delayedReset',\n ],\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'verified' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'expired' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n },\n ],\n on: {\n 'RESET.STEP': {\n target: 'Verification',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Callback: {\n tags: ['step:callback'],\n entry: sendTo(ThirdPartyMachineId, { type: 'CALLBACK' }),\n on: {\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n description: 'Handle a case where the user has already been authenticated via ClerkJS',\n guard: 'hasAuthenticatedViaClerkJS',\n actions: [{ type: 'setActive', params: { useLastActiveSession: true } }, 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n {\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n },\n ],\n },\n },\n Restricted: {\n tags: ['step:restricted'],\n on: {\n NEXT: 'Start',\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 signInForceRedirectUrl: ClerkJSNavigationEvent.complete,\n signInFallbackRedirectUrl: ClerkJSNavigationEvent.complete,\n signUpForceRedirectUrl: ClerkJSNavigationEvent.signUp,\n signUpFallbackRedirectUrl: ClerkJSNavigationEvent.signUp,\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 return {\n basePath: context.basePath,\n flow: context.flow,\n params: event.params,\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 { SignUpResource, Web3Strategy } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { and, assertEvent, assign, enqueueActions, fromPromise, not, sendTo, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport type { SetFormEvent } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { ThirdPartyMachine } from '~/internals/machines/third-party';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignUpStartSchema } from './start.types';\n\nconst DISABLEABLE_FIELDS = ['emailAddress', 'phoneNumber'] as const;\n\nexport type TSignUpStartMachine = typeof SignUpStartMachine;\n\nexport const SignUpStartMachineId = 'SignUpStart';\n\ntype AttemptParams = { strategy: 'ticket'; ticket: string } | { strategy?: never; ticket?: never };\ntype PrefillFieldsKeys = keyof Pick<\n SignUpResource,\n 'username' | 'firstName' | 'lastName' | 'emailAddress' | 'phoneNumber'\n>;\nconst PREFILL_FIELDS: PrefillFieldsKeys[] = ['firstName', 'lastName', 'emailAddress', 'username', 'phoneNumber'];\n\nexport const SignUpStartMachine = setup({\n actors: {\n attempt: fromPromise<\n SignUpResource,\n { parent: SignInRouterMachineActorRef; fields: FormFields; params?: AttemptParams }\n >(({ input: { fields, parent, params } }) => {\n const fieldParams = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.create({ ...fieldParams, ...params });\n }),\n attemptWeb3: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; strategy: Web3Strategy }>(\n ({ input: { parent, strategy } }) => {\n if (strategy === 'web3_metamask_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithMetamask();\n }\n if (strategy === 'web3_coinbase_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithCoinbaseWallet();\n }\n throw new ClerkElementsRuntimeError(`Unsupported Web3 strategy: ${strategy}`);\n },\n ),\n thirdParty: ThirdPartyMachine,\n },\n actions: {\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n setFormRef: assign(({ event }) => {\n return {\n formRef: (event as unknown as SetFormEvent).formRef,\n };\n }),\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 setDefaultFormValues: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n const prefilledDefaultValues = new Map();\n\n for (const key of PREFILL_FIELDS) {\n if (key in signUp) {\n prefilledDefaultValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'PREFILL_DEFAULT_VALUES',\n defaultValues: prefilledDefaultValues,\n });\n },\n },\n guards: {\n isMissingRequirements: ({ context }) =>\n context.parent.getSnapshot().context.clerk?.client?.signUp?.status === 'missing_requirements',\n hasTicket: ({ context }) => Boolean(context.ticket),\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as SignUpStartSchema,\n}).createMachine({\n id: SignUpStartMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'start',\n ticket: input.ticket,\n }),\n entry: 'setDefaultFormValues',\n initial: 'Init',\n on: {\n SET_FORM: {\n actions: 'setFormRef',\n },\n },\n states: {\n Init: {\n description:\n 'Handle ticket, if present; Else, default to Pending state. Per tickets, `Attempting` makes a `signUp.create` request allowing for an incomplete sign up to contain progressively filled fields on the Start step.',\n always: [\n {\n guard: and(['hasTicket', 'isMissingRequirements']),\n target: 'Pending',\n },\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.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: 'attemptCreate',\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 AttemptingWeb3: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptCreateWeb3',\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 { Poller } from '@clerk/shared/poller';\nimport type {\n AttemptVerificationParams,\n Attribute,\n PrepareVerificationParams,\n SignUpResource,\n SignUpVerifiableField,\n SignUpVerificationsResource,\n VerificationStrategy,\n} from '@clerk/types';\nimport type { Writable } from 'type-fest';\nimport { and, assign, enqueueActions, fromCallback, fromPromise, log, raise, sendParent, sendTo, setup } from 'xstate';\n\nimport {\n MAGIC_LINK_VERIFY_PATH_ROUTE,\n RESENDABLE_COUNTDOWN_DEFAULT,\n SIGN_UP_DEFAULT_BASE_PATH,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { WithParams } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport {\n type SignUpVerificationContext,\n SignUpVerificationDelays,\n type SignUpVerificationEmailLinkFailedEvent,\n type SignUpVerificationEvents,\n type SignUpVerificationSchema,\n} from './verification.types';\n\nexport type SignUpVerificationsResourceKey = keyof SignUpVerificationsResource;\nexport type TSignUpVerificationMachine = typeof SignUpVerificationMachine;\n\nexport type StartSignUpEmailLinkFlowEvents = { type: 'STOP' };\nexport type StartSignUpEmailLinkFlowInput = {\n parent: SignInRouterMachineActorRef;\n};\n\nexport const SignUpVerificationMachineId = 'SignUpVerification';\n\nconst shouldVerify = (field: SignUpVerifiableField, strategy?: VerificationStrategy) => {\n const guards: Writable<Parameters<typeof and<SignUpVerificationContext, SignUpVerificationEvents, any>>[0]> = [\n {\n type: 'isFieldUnverified',\n params: {\n field,\n },\n },\n ];\n\n if (strategy) {\n guards.push({\n type: 'isStrategyEnabled',\n params: {\n attribute: field,\n strategy,\n },\n });\n }\n\n return and(guards);\n};\n\nexport type PrepareVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<PrepareVerificationParams>;\nexport type AttemptVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<AttemptVerificationParams>;\n\nexport const SignUpVerificationMachine = setup({\n actors: {\n prepare: fromPromise<SignUpResource, PrepareVerificationInput>(({ input: { params, parent } }) => {\n const clerk = parent.getSnapshot().context.clerk;\n\n if (params.strategy === 'email_link' && params.redirectUrl) {\n params.redirectUrl = clerk.buildUrlWithAuth(params.redirectUrl);\n }\n\n return clerk.client.signUp.prepareVerification(params);\n }),\n attempt: fromPromise<SignUpResource, AttemptVerificationInput>(async ({ input: { params, parent } }) =>\n parent.getSnapshot().context.clerk.client.signUp.attemptVerification(params),\n ),\n attemptEmailLinkVerification: fromCallback<StartSignUpEmailLinkFlowEvents, StartSignUpEmailLinkFlowInput>(\n ({ receive, sendBack, input: { parent } }) => {\n const { run, stop } = Poller();\n\n const clerk = parent.getSnapshot().context.clerk;\n\n void run(async () =>\n clerk.client.signUp\n .reload()\n .then(resource => {\n const signInStatus = resource.status;\n const verificationStatus = resource.verifications.emailAddress.status;\n\n // Short-circuit if the sign-up resource is already complete\n if (signInStatus === 'complete') {\n return sendBack({ type: 'EMAIL_LINK.VERIFIED', resource });\n }\n\n switch (verificationStatus) {\n case 'verified':\n case 'transferable':\n case 'expired': {\n sendBack({ type: `EMAIL_LINK.${verificationStatus.toUpperCase()}`, resource });\n break;\n }\n case 'failed': {\n sendBack({\n type: 'EMAIL_LINK.FAILED',\n error: new ClerkElementsError('email-link-verification-failed', 'Email verification failed'),\n resource,\n });\n break;\n }\n // case 'unverified':\n default:\n return;\n }\n\n stop();\n })\n .catch(error => {\n stop();\n new ClerkElementsRuntimeError(error);\n }),\n );\n\n receive(event => {\n if (event.type === 'STOP') {\n stop();\n }\n });\n\n return () => stop();\n },\n ),\n },\n actions: {\n resendableTick: assign(({ context }) => ({\n resendable: context.resendableAfter === 1,\n resendableAfter: context.resendableAfter > 1 ? context.resendableAfter - 1 : context.resendableAfter,\n })),\n resendableReset: assign({\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\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 isComplete: ({ context }) => context.resource.status === 'complete',\n isFieldUnverified: ({ context, event }, { field }: { field: SignUpVerifiableField }) => {\n let resource = context.resource;\n\n if (event?.type === 'NEXT' && event.resource) {\n resource = event.resource;\n }\n\n return resource.unverifiedFields.includes(field);\n },\n isResendable: ({ context }) => context.resendable || context.resendableAfter === 0,\n isStrategyEnabled: (\n { context },\n { attribute, strategy }: { attribute: Attribute; strategy: VerificationStrategy },\n ) => Boolean(context.attributes?.[attribute].verifications.includes(strategy)),\n shouldVerifyPhoneCode: shouldVerify('phone_number'),\n shouldVerifyEmailLink: shouldVerify('email_address', 'email_link'),\n shouldVerifyEmailCode: shouldVerify('email_address', 'email_code'),\n },\n delays: SignUpVerificationDelays,\n types: {} as SignUpVerificationSchema,\n}).createMachine({\n id: SignUpVerificationMachineId,\n initial: 'Init',\n context: ({ input }) => ({\n attributes: input.attributes,\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n loadingStep: 'verifications',\n formRef: input.formRef,\n parent: input.parent,\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n resource: input.resource,\n }),\n on: {\n NEXT: [\n {\n guard: 'isComplete',\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: '.PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: '.EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: '.EmailCode',\n },\n {\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n ],\n },\n states: {\n Init: {\n always: [\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: 'PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: 'EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: 'EmailCode',\n },\n {\n actions: sendParent(({ context }) => ({ type: 'NEXT', resource: context.resource })),\n },\n ],\n },\n EmailLink: {\n tags: ['verification:method:email', 'verification:category:link', 'verification:email_link'],\n initial: 'Preparing',\n on: {\n RETRY: '.Preparing',\n 'EMAIL_LINK.RESTART': {\n target: '.Attempting',\n reenter: true,\n },\n 'EMAIL_LINK.FAILED': {\n actions: [\n {\n type: 'setFormErrors',\n params: ({ event }: { event: SignUpVerificationEmailLinkFailedEvent }) => ({ error: event.error }),\n },\n assign({ resource: ({ event }) => event.resource }),\n ],\n target: '.Pending',\n },\n 'EMAIL_LINK.*': {\n actions: enqueueActions(({ enqueue, event }) => {\n if (event.type === 'EMAIL_LINK.RESTART') {\n return;\n }\n\n enqueue.assign({ resource: event.resource });\n enqueue.raise({ type: 'NEXT', resource: event.resource });\n }),\n },\n },\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailLinkVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_link',\n redirectUrl: `${context.basePath}${MAGIC_LINK_VERIFY_PATH_ROUTE}`,\n },\n }),\n onDone: {\n target: 'Attempting',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n description: 'Placeholder for allowing resending of email link',\n tags: ['state:pending'],\n on: {\n NEXT: 'Preparing',\n },\n },\n Attempting: {\n tags: ['state:attempting'],\n invoke: {\n id: 'attemptEmailLinkVerification',\n src: 'attemptEmailLinkVerification',\n input: ({ context }) => ({\n parent: context.parent,\n }),\n },\n after: {\n emailLinkTimeout: {\n description: 'Timeout after 5 minutes',\n target: 'Pending',\n actions: sendTo(({ context }) => context.formRef, {\n type: 'ERRORS.SET',\n error: new ClerkElementsError('verify-email-link-timeout', 'Email link verification timed out'),\n }),\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\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 },\n },\n },\n EmailCode: {\n tags: ['verification:method:email', 'verification:category:code', 'verification:email_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailAddressCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyEmailCode',\n target: 'Pending',\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\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 },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptEmailAddressCodeVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n PhoneCode: {\n tags: ['verification:method:phone', 'verification:category:code', 'verification:phone_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'preparePhoneCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyPhoneCode',\n target: 'Pending',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\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 },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPhoneNumberVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n },\n});\n","import type { ClerkAPIResponseError } from '@clerk/shared/error';\nimport type { Attributes, SignUpResource } from '@clerk/types';\nimport type { ActorRefFrom, DoneActorEvent, ErrorActorEvent } from 'xstate';\n\nimport type { FormMachine } from '~/internals/machines/form';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport type SignUpVerificationStateTags = 'state:preparing' | 'state:pending' | 'state:attempting' | 'state:loading';\n\nexport type SignUpVerificationVerificationCategoryTags = 'verification:category:code' | 'verification:category:link';\nexport type SignUpVerificationVerificationMethodTags = 'verification:method:email' | 'verification:method:phone';\nexport type SignUpVerificationVerificationTypeTags =\n | 'verification:email_link'\n | 'verification:email_code'\n | 'verification:phone_code';\n\nexport type SignUpVerificationVerificationTags =\n | SignUpVerificationVerificationCategoryTags\n | SignUpVerificationVerificationMethodTags\n | SignUpVerificationVerificationTypeTags;\n\nexport type SignUpVerificationTags = SignUpVerificationStateTags | SignUpVerificationVerificationTags;\nexport type SignUpVerificationFriendlyTags = 'code' | 'email_link' | 'email_code' | 'phone_code';\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignUpVerificationSubmitEvent = { type: 'SUBMIT'; action: 'submit' };\nexport type SignUpVerificationNextEvent = { type: 'NEXT'; resource?: SignUpResource };\nexport type SignUpVerificationRetryEvent = { type: 'RETRY' };\n\nexport type SignUpVerificationEmailLinkVerifiedEvent = { type: 'EMAIL_LINK.VERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkUnverifiedEvent = { type: 'EMAIL_LINK.UNVERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkExpiredEvent = { type: 'EMAIL_LINK.EXPIRED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkTransferrableEvent = {\n type: 'EMAIL_LINK.TRANSFERRABLE';\n resource: SignUpResource;\n};\nexport type SignUpVerificationEmailLinkRestartEvent = { type: 'EMAIL_LINK.RESTART' };\nexport type SignUpVerificationEmailLinkFailedEvent = {\n type: 'EMAIL_LINK.FAILED';\n resource: SignUpResource;\n error: Error;\n};\n\nexport type SignUpVerificationEmailLinkEvent =\n | SignUpVerificationEmailLinkVerifiedEvent\n | SignUpVerificationEmailLinkUnverifiedEvent\n | SignUpVerificationEmailLinkExpiredEvent\n | SignUpVerificationEmailLinkRestartEvent\n | SignUpVerificationEmailLinkFailedEvent;\n\nexport type SignUpVerificationEvents =\n | DoneActorEvent\n | ErrorActorEvent\n | SignUpVerificationRetryEvent\n | SignUpVerificationSubmitEvent\n | SignUpVerificationNextEvent\n | SignUpVerificationEmailLinkEvent;\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport type SignUpVerificationInput = {\n attributes: Attributes | undefined;\n basePath?: string;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n resource: SignUpResource;\n};\n\n// ---------------------------------- Delays ---------------------------------- //\n\nexport const SignUpVerificationDelays = {\n emailLinkTimeout: 300_000, // 5 minutes\n resendableTimeout: 1_000, // 1 second\n} as const;\n\nexport type SignUpVerificationDelays = keyof typeof SignUpVerificationDelays;\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport interface SignUpVerificationContext {\n attributes: Attributes | undefined;\n basePath: string;\n resource: SignUpResource;\n error?: Error | ClerkAPIResponseError;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n loadingStep: 'verifications';\n resendable: boolean;\n resendableAfter: number;\n}\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignUpVerificationSchema {\n context: SignUpVerificationContext;\n delays: SignUpVerificationDelays;\n input: SignUpVerificationInput;\n events: SignUpVerificationEvents;\n tags: SignUpVerificationTags;\n}\n","export { Route, Router, useClerkRouter } from '@clerk/shared/router';\nexport { useVirtualRouter } from './virtual';\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 { 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 {\n type TSignUpContinueMachine,\n type TSignUpRouterMachine,\n type TSignUpStartMachine,\n type TSignUpVerificationMachine,\n} from '~/internals/machines/sign-up';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SnapshotState = SnapshotFrom<TSignUpRouterMachine>;\n\nexport const SignUpRouterCtx = createContextFromActorRef<TSignUpRouterMachine>('SignUpRouterCtx');\n\nfunction useSignUpStep<M extends AnyStateMachine, T = ActorRefFrom<M>>(name: string) {\n return SignUpRouterCtx.useSelector(state => state.children[name] as AnyActorRef) as T;\n}\n\nexport const useSignUpStartStep = () => useSignUpStep<TSignUpStartMachine>('start');\nexport const useSignUpContinueStep = () => useSignUpStep<TSignUpContinueMachine>('continue');\nexport const useSignUpVerificationStep = () => useSignUpStep<TSignUpVerificationMachine>('verification');\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","function composeEventHandlers<E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\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 { 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 { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport type { SignUpContinueProps } from './continue';\nimport { SignUpContinue } from './continue';\nimport type { SignUpRestrictedProps } from './restricted';\nimport { SignUpRestricted } from './restricted';\nimport type { SignUpStartProps } from './start';\nimport { SignUpStart } from './start';\nimport type { SignUpVerificationsProps } from './verifications';\nimport { SignUpVerifications } from './verifications';\n\nexport const SIGN_UP_STEPS = {\n start: 'start',\n continue: 'continue',\n verifications: 'verifications',\n restricted: 'restricted',\n} as const;\n\nexport type TSignUpStep = (typeof SIGN_UP_STEPS)[keyof typeof SIGN_UP_STEPS];\ntype StepWithProps<N extends TSignUpStep, T> = { name: N } & T;\n\nexport type SignUpStepProps =\n | StepWithProps<'start', SignUpStartProps>\n | StepWithProps<'continue', SignUpContinueProps>\n | StepWithProps<'verifications', SignUpVerificationsProps>\n | StepWithProps<'restricted', SignUpRestrictedProps>;\n\n/**\n * Render different steps of the sign-up flow. Initially the `'start'` step is rendered. Optionally, you can render additional fields in the `'continue'` step. Once a sign-up attempt has been created, `'verifications'` will be displayed.\n *\n * You typically want to place fields like username, password, or social providers in the `'start'` step. The `'continue'` step can hold inputs for username, first name/last name or other metadata. The `'verifications'` step is used to verify the user's information like an email verification. Once the user has been verified, the sign-up attempt will be completed.\n *\n * @param {string} name - Step name. Use `'start'`, `'continue'`, or `'verifications'`.\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name='start' />\n * <SignUp.Step name='continue' />\n * <SignUp.Step name='verifications' />\n * </SignUp.Root>\n */\nexport function SignUpStep(props: SignUpStepProps) {\n const clerk = useClerk();\n\n clerk.telemetry?.record(eventComponentMounted('Elements_SignUpStep', { name: props.name }));\n\n switch (props.name) {\n case SIGN_UP_STEPS.start:\n return <SignUpStart {...props} />;\n case SIGN_UP_STEPS.continue:\n return <SignUpContinue {...props} />;\n case SIGN_UP_STEPS.verifications:\n return <SignUpVerifications {...props} />;\n case SIGN_UP_STEPS.restricted:\n return <SignUpRestricted {...props} />;\n default:\n throw new ClerkElementsRuntimeError(\n `Invalid step name. Use 'start', 'continue', 'verifications', or 'restricted'.`,\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> ? 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 { TSignUpContinueMachine } from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpContinueStep } from '~/react/sign-up/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignUpContinueProps = FormProps;\n\nexport const SignUpContinueCtx = createContextFromActorRef<TSignUpContinueMachine>('SignUpContinueCtx');\n\nexport function SignUpContinue(props: SignUpContinueProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:continue');\n\n return activeState ? <SignUpContinueInner {...props} /> : null;\n}\n\nfunction SignUpContinueInner(props: SignUpContinueProps) {\n const ref = useSignUpContinueStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpContinueCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpContinueCtx.Provider>\n );\n}\n","import type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nexport type SignUpRestrictedProps = FormProps;\n\nexport function SignUpRestricted(props: SignUpRestrictedProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:restricted');\n\n return activeState ? (\n <Form\n // TODO: Update when sign-up flow is consolidated\n // @ts-expect-error - `flowActor` is not a valid prop for `Form`\n flowActor={routerRef}\n {...props}\n />\n ) : null;\n}\n","import type { TSignUpStartMachine } from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpStartStep } from '~/react/sign-up/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignUpStartProps = FormProps;\n\nexport const SignUpStartCtx = createContextFromActorRef<TSignUpStartMachine>('SignUpStartCtx');\n\nexport function SignUpStart(props: SignUpStartProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:start');\n\n return activeState ? <SignUpStartInner {...props} /> : null;\n}\n\nfunction SignUpStartInner(props: SignUpStartProps) {\n const ref = useSignUpStartStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpStartCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpStartCtx.Provider>\n );\n}\n","import type {\n SignUpVerificationFriendlyTags,\n SignUpVerificationTags,\n TSignUpVerificationMachine,\n} from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpVerificationStep } from '~/react/sign-up/context';\n\nimport { createContextFromActorRef } from '../utils/create-context-from-actor-ref';\n\nexport type SignUpVerificationsProps = FormProps;\n\nexport const SignUpVerificationCtx = createContextFromActorRef<TSignUpVerificationMachine>('SignUpVerificationCtx');\n\n/**\n * Renders its children when the user is in the verification step of the sign-up flow. This happens after the user has signed up but before their account is active & verified.\n * @example\n * import { SignUp, Step, Strategy } from \"@clerk/elements/sign-up\"\n *\n * export default SignUpPage = () => (\n * <SignUp>\n * <Step name=\"verifications\">\n * <Strategy name=\"email_link\">\n * Please check your email for a verification link.\n * </Strategy>\n * </Step>\n * </SignUp>\n * )\n */\nexport function SignUpVerifications(props: SignUpVerificationsProps) {\n const ref = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(ref, 'step:verification');\n\n return activeState ? <SignUpVerifyInner {...props} /> : null;\n}\n\nfunction SignUpVerifyInner(props: SignUpVerificationsProps) {\n const ref = useSignUpVerificationStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpVerificationCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpVerificationCtx.Provider>\n );\n}\n\nexport type SignUpStrategyProps = { name: SignUpVerificationFriendlyTags; children: React.ReactNode };\n\n/**\n * Conditionally render its children depending on the authentication strategy that needs to be verified. Does not render any markup on its own.\n *\n * @param {string} name - The name of the strategy for which its children will be rendered.\n *\n * @example\n * <SignUp.Strategy name=\"email_code\">\n * <Clerk.Field name=\"code\">\n * <Clerk.Label>Code</Clerk.Label>\n * <Clerk.Input />\n * <Clerk.FieldError />\n * </Clerk.Field>\n * <SignUp.Action submit>Verify</SignUp.Action>\n * </SignUp.Strategy>\n */\nexport function SignUpStrategy({ children, name: tag }: SignUpStrategyProps) {\n const ref = SignUpVerificationCtx.useActorRef(true);\n\n if (!ref) {\n throw new Error(\n '<Strategy> used outside of <SignUp>. Did you mean to `import { Strategy } from \"@clerk/elements/sign-in\"` instead?',\n );\n }\n\n const { active } = useActiveTags(ref, [\n `verification:${tag}`,\n `verification:category:${tag}`,\n ] as unknown as SignUpVerificationTags[]);\n\n return active ? <>{children}</> : null;\n}\n","import * as React from 'react';\n\nimport type { FormSubmitProps } from '~/react/common';\nimport { Submit } from '~/react/common';\n\nimport type { SignUpNavigateProps } from './navigate';\nimport { SignUpNavigate } from './navigate';\nimport type { SignUpResendProps } from './resend';\nimport { SignUpResend } from './resend';\n\nexport type SignUpActionProps = { asChild?: boolean } & FormSubmitProps &\n (\n | ({\n navigate: SignUpNavigateProps['to'];\n resend?: never;\n submit?: never;\n } & Omit<SignUpNavigateProps, 'to'>)\n | { navigate?: never; resend?: never; submit: true }\n | ({ navigate?: never; resend: true; submit?: never } & SignUpResendProps)\n );\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 * <SignUp.Action navigate=\"start\">Go Back</SignUp.Action>\n *\n * @example\n * <SignUp.Action submit>Sign Up</SignUp.Action>\n *\n * @example\n * <SignUp.Action resend>Resend</SignUp.Action>\n */\n\nexport const SignUpAction = React.forwardRef<React.ElementRef<'button'>, SignUpActionProps>((props, forwardedRef) => {\n const { submit, navigate, resend, ...rest } = props;\n let Comp: React.ForwardRefExoticComponent<any> | undefined;\n\n if (submit) {\n Comp = Submit;\n } else if (navigate) {\n Comp = SignUpNavigate;\n } else if (resend) {\n Comp = SignUpResend;\n }\n\n return Comp ? (\n <Comp\n to={navigate}\n {...rest}\n ref={forwardedRef}\n />\n ) : null;\n});\n\nSignUpAction.displayName = 'SignUpAction';\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';\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 { SignUpRouterCtx } from '~/react/sign-up/context';\n\nconst SIGN_UP_NAVIGATE_NAME = 'SignInNavigate';\nconst SignUpNavigationEventMap = {\n start: `NAVIGATE.START`,\n previous: `NAVIGATE.PREVIOUS`,\n} as const;\n\nexport type SignUpNavigateElementKey = keyof typeof SignUpNavigationEventMap;\n\nexport type SignUpNavigateElement = React.ElementRef<'button'>;\nexport type SignUpNavigateProps = {\n asChild?: boolean;\n to: SignUpNavigateElementKey;\n children: React.ReactNode;\n};\n\n/**\n * Renders a button which will navigate to a different step in the sign-up flow.\n *\n * @param {SignUpNavigateElementKey} 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=\"start\">\n * Start over...\n * </Navigate>\n */\nexport const SignUpNavigate = React.forwardRef<SignUpNavigateElement, SignUpNavigateProps>(\n ({ asChild, to, ...rest }, forwardedRef) => {\n const actorRef = SignUpRouterCtx.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 = SignUpNavigationEventMap[to];\n\n if (actorRef.getSnapshot().can({ type })) {\n actorRef.send({ type });\n } else {\n console.warn(\n `Clerk: <SignUp.Action navigate=\"${to}\"> is an invalid navigation event. You can only navigate to: ${Object.keys(SignUpNavigationEventMap).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\nSignUpNavigate.displayName = SIGN_UP_NAVIGATE_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\n\nimport { SignUpVerificationCtx } from '../verifications';\n\nexport type SignUpResendElement = React.ElementRef<'button'>;\nexport type SignUpResendFallbackProps = {\n resendable: boolean;\n resendableAfter: number;\n};\nexport type SignUpResendProps = {\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: SignUpResendFallbackProps) => React.ReactNode);\n};\n\nconst SIGN_UP_RESEND_NAME = 'SignUpResend';\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 This component is not intended to be used directly. Instead, use the <Action resend> component.\n *\n * @example\n * import { Action } from '@clerk/elements/sign-in';\n * <Action resend fallback={({ resendableAfter }) => <p>Resendable in: {resendableAfter}s</p>}>Resend</Action>;\n */\nexport const SignUpResend = React.forwardRef<SignUpResendElement, SignUpResendProps>(\n ({ asChild, fallback, ...rest }, forwardedRef) => {\n const ref = SignUpVerificationCtx.useActorRef(true);\n\n if (!ref) {\n throw new Error('The resend action must be used within <SignUp.Step name=\"verifications\">.');\n }\n\n const fallbackProps: SignUpResendFallbackProps = useSelector(\n ref,\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={() => ref.send({ type: 'RETRY' })}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignUpResend.displayName = SIGN_UP_RESEND_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 { SignUpStartCtx } from './start';\n\nexport type SignUpCaptchaElement = React.ElementRef<'div'>;\n\ntype CaptchaElementProps = Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n 'id' | 'children'\n>;\n\nexport type SignUpCaptchaProps =\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 `<SignUp.Captcha>` component is used to render the Cloudflare Turnstile widget. It must be used within the `<SignUp.Step name=\"start\">` 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 <SignUp.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 * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha />\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha asChild>\n * <aside/>\n * </SignUp.Captcha>\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n */\n\nexport const SignUpCaptcha = React.forwardRef<SignUpCaptchaElement, SignUpCaptchaProps>(\n ({ asChild, children, ...rest }, forwardedRef) => {\n const ref = SignUpStartCtx.useActorRef(true);\n\n if (!ref) {\n throw new ClerkElementsRuntimeError('<Captcha> must be used within the <SignUp.Step name=\"start\"> component.');\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"],"mappings":"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","names":["import_client_only","import_react","import_router","import_xstate","import_underscore","import_xstate","import_xstate","import_xstate","import_xstate","import_xstate","import_xstate","import_router","import_react","import_react","useContext","useSelector","actor","useSelectorUnbound","import_react","React","RadixForm","import_react_form","DISPLAY_NAME","RadixSubmit","import_router","import_react","React","import_jsx_runtime","import_react","import_telemetry","import_react","actor","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_react_slot","import_react","React","import_jsx_runtime","import_jsx_runtime","import_react_slot","React","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/react/sign-up/index.ts","../../../src/react/sign-up/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-up/continue.machine.ts","../../../src/internals/machines/shared/shared.actions.ts","../../../src/internals/machines/sign-up/utils/fields-to-params.ts","../../../src/internals/machines/utils/assert.ts","../../../src/internals/machines/sign-up/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-up/start.machine.ts","../../../src/internals/machines/sign-up/verification.machine.ts","../../../src/internals/machines/sign-up/verification.types.ts","../../../src/react/router/index.ts","../../../src/react/router/virtual.ts","../../../src/react/utils/create-context-from-actor-ref.ts","../../../src/react/sign-up/context/router.context.ts","../../../src/react/common/form/hooks/use-form.ts","../../../src/react/common/form/hooks/use-global-errors.ts","../../../node_modules/@radix-ui/primitive/src/primitive.tsx","../../../src/react/common/form/form.tsx","../../../src/react/common/form/submit.tsx","../../../src/react/utils/path-inference/next.tsx","../../../src/react/utils/path-inference/utils.ts","../../../src/react/sign-up/step.tsx","../../../src/react/hooks/use-active-tags.hook.ts","../../../src/react/sign-up/continue.tsx","../../../src/react/sign-up/restricted.tsx","../../../src/react/sign-up/start.tsx","../../../src/react/sign-up/verifications.tsx","../../../src/react/sign-up/action/action.tsx","../../../src/react/common/index.ts","../../../src/react/sign-up/action/navigate.tsx","../../../src/react/sign-up/action/resend.tsx","../../../src/react/sign-up/captcha.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 { SignUpRoot as SignUp, SignUpRoot as Root } from './root';\nexport { SignUpStep as Step } from './step';\nexport { SignUpAction as Action } from './action';\nexport { SignUpStrategy as Strategy } from './verifications';\nexport { SignUpCaptcha as Captcha } from './captcha';\n","import { useClerk } from '@clerk/shared/react';\nimport { useClerkHostRouter } from '@clerk/shared/router';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport { useSelector } from '@xstate/react';\nimport { 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 { SignUpRouterInitEvent } from '~/internals/machines/sign-up';\nimport { SignUpRouterMachine } from '~/internals/machines/sign-up';\nimport { inspect } from '~/internals/utils/inspector';\nimport { Router, useClerkRouter, useVirtualRouter } from '~/react/router';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nimport { Form } from '../common/form';\nimport { usePathnameWithoutCatchAll } from '../utils/path-inference/next';\n\ntype SignUpFlowProviderProps = {\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(SignUpRouterMachine, { inspect });\nactor.start();\n\nfunction SignUpFlowProvider({ children, exampleMode, fallback, isRootPath }: SignUpFlowProviderProps) {\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: SignUpRouterInitEvent = {\n type: 'INIT',\n clerk,\n exampleMode,\n formRef,\n router,\n signInPath: SIGN_IN_DEFAULT_BASE_PATH,\n };\n\n if (actor.getSnapshot().can(evt)) {\n actor.send(evt);\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\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clerk, exampleMode, formRef?.id, !!router, clerk.loaded]);\n\n return (\n <SignUpRouterCtx.Provider actorRef={actor}>\n {isRootPath && !isReady && fallback ? <Form>{fallback}</Form> : null}\n {clerk.loaded && isReady ? children : null}\n </SignUpRouterCtx.Provider>\n );\n}\n\nexport type SignUpRootProps = Omit<SignUpFlowProviderProps, 'isRootPath'> & {\n /**\n * The base path for your sign-up route.\n * Will be automatically inferred in Next.js.\n * @example `/sign-up`\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-up flow. It sets up providers and state management for its children.\n * Must wrap all sign-up related components.\n *\n * @param {string} path - The root path the sign-up flow is mounted at. Will be automatically inferred in Next.js. You can set it to `/sign-up` 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 SignUp from \"@clerk/elements/sign-up\"\n *\n * export default SignUpPage = () => (\n * <SignUp.Root>\n * </SignUp.Root>\n * )\n */\nexport function SignUpRoot({\n children,\n exampleMode = false,\n fallback = null,\n path: pathProp,\n routing = ROUTING.path,\n}: SignUpRootProps): JSX.Element | null {\n const clerk = useClerk();\n const inferredPath = usePathnameWithoutCatchAll();\n const path = pathProp || inferredPath || SIGN_UP_DEFAULT_BASE_PATH;\n\n clerk.telemetry?.record(\n eventComponentMounted('Elements_SignUpRoot', {\n exampleMode,\n fallback: Boolean(fallback),\n path,\n routing,\n }),\n );\n\n const router = (routing === ROUTING.virtual ? useVirtualRouter : useClerkHostRouter)();\n const isRootPath = path === router.pathname();\n\n return (\n <Router\n basePath={path}\n router={router}\n >\n <FormStoreProvider>\n <SignUpFlowProvider\n exampleMode={exampleMode}\n fallback={fallback}\n isRootPath={isRootPath}\n >\n {children}\n </SignUpFlowProvider>\n </FormStoreProvider>\n </Router>\n );\n}\n","export function safeAccess(fn: any, fallback: any) {\n try {\n return fn();\n } catch (e) {\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};\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 * @note 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 if (context.fields.has(params.name)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(params.name)!.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","import 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 { snakeToCamel } from '@clerk/shared/underscore';\nimport type { SignUpResource } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { fromPromise, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport type { FormDefaultValues, FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignUpContinueSchema } from './continue.types';\nimport type { SignInRouterMachineActorRef } from './router.types';\n\nexport type TSignUpContinueMachine = typeof SignUpContinueMachine;\n\nexport const SignUpContinueMachineId = 'SignUpContinue';\n\nexport const SignUpContinueMachine = setup({\n actors: {\n attempt: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; fields: FormFields }>(\n ({ input: { fields, parent } }) => {\n const params = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.update(params);\n },\n ),\n },\n actions: {\n setFormErrors: ({ context, event }) => {\n assertActorEventError(event);\n context.formRef.send({\n type: 'ERRORS.SET',\n error: event.error,\n });\n },\n markFormAsProgressive: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n\n const missing = signUp.missingFields.map(snakeToCamel);\n const optional = signUp.optionalFields.map(snakeToCamel);\n const required = signUp.requiredFields.map(snakeToCamel);\n\n const progressiveFieldValues: FormDefaultValues = new Map();\n\n for (const key of required.concat(optional) as (keyof SignUpResource)[]) {\n if (key in signUp) {\n // @ts-expect-error - TS doesn't understand that key is a valid key of SignUpResource\n progressiveFieldValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'MARK_AS_PROGRESSIVE',\n missing,\n optional,\n required,\n defaultValues: progressiveFieldValues,\n });\n },\n unmarkFormAsProgressive: ({ context }) => context.formRef.send({ type: 'UNMARK_AS_PROGRESSIVE' }),\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n },\n types: {} as SignUpContinueSchema,\n}).createMachine({\n id: SignUpContinueMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'continue',\n }),\n entry: 'markFormAsProgressive',\n onDone: {\n actions: 'unmarkFormAsProgressive',\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 { 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","import type { SignUpCreateParams, SignUpUpdateParams } from '@clerk/types';\n\nimport type { FormFields } from '~/internals/machines/form';\n\nconst SignUpAdditionalKeys = ['firstName', 'lastName', 'emailAddress', 'username', 'password', 'phoneNumber'] as const;\n\ntype SignUpAdditionalKeys = (typeof SignUpAdditionalKeys)[number];\n\nconst signUpKeys = new Set<SignUpAdditionalKeys>(SignUpAdditionalKeys);\n\nfunction isSignUpParam<T extends SignUpAdditionalKeys>(key: string): key is T {\n return signUpKeys.has(key as T);\n}\n\nexport function fieldsToSignUpParams<T extends SignUpCreateParams | SignUpUpdateParams>(\n fields: FormFields,\n): Pick<T, SignUpAdditionalKeys> {\n const params: SignUpUpdateParams = {};\n\n fields.forEach(({ value }, key) => {\n if (isSignUpParam(key) && value !== undefined) {\n params[key] = value as string;\n }\n });\n\n return params;\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 { joinURL } from '@clerk/shared/url';\nimport type { SignUpStatus, VerificationStatus } from '@clerk/types';\nimport type { NonReducibleUnknown } from 'xstate';\nimport { and, assign, enqueueActions, log, not, or, raise, sendTo, setup } from 'xstate';\n\nimport {\n ERROR_CODES,\n ROUTING,\n SEARCH_PARAMS,\n SIGN_IN_DEFAULT_BASE_PATH,\n SIGN_UP_DEFAULT_BASE_PATH,\n SIGN_UP_MODES,\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 { SignUpContinueMachine } from './continue.machine';\nimport type {\n SignUpRouterContext,\n SignUpRouterEvents,\n SignUpRouterNextEvent,\n SignUpRouterSchema,\n} from './router.types';\nimport { SignUpStartMachine } from './start.machine';\nimport { SignUpVerificationMachine } from './verification.machine';\n\nexport const SignUpRouterMachineId = 'SignUpRouter';\nexport type TSignUpRouterMachine = typeof SignUpRouterMachine;\n\nconst isCurrentPath =\n (path: `/${string}`) =>\n ({ context }: { context: SignUpRouterContext }, _params?: NonReducibleUnknown) =>\n context.router?.match(path) ?? false;\n\nconst needsStatus =\n (status: SignUpStatus) =>\n ({ context, event }: { context: SignUpRouterContext; event?: SignUpRouterEvents }, _?: NonReducibleUnknown) =>\n (event as SignUpRouterNextEvent)?.resource?.status === status || context.clerk?.client?.signUp?.status === status;\n\nexport const SignUpRouterMachine = setup({\n actors: {\n continueMachine: SignUpContinueMachine,\n startMachine: SignUpStartMachine,\n thirdPartyMachine: ThirdPartyMachine,\n verificationMachine: SignUpVerificationMachine,\n },\n actions: {\n clearFormErrors: sendTo(({ context }) => context.formRef, { type: 'ERRORS.CLEAR' }),\n logUnknownError: snapshot => console.error('Unknown error:', snapshot),\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: ({ context, event }, params?: { sessionId?: string; useLastActiveSession?: boolean }) => {\n if (context.exampleMode) {\n return;\n }\n\n const session =\n params?.sessionId ||\n (params?.useLastActiveSession && context.clerk.client.lastActiveSessionId) ||\n ((event as SignUpRouterNextEvent)?.resource || context.clerk.client.signUp).createdSessionId;\n\n void context.clerk.setActive({\n session,\n redirectUrl: context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n });\n },\n delayedReset: raise({ type: 'RESET' }, { delay: 3000 }), // Reset machine after 3s delay.\n setError: assign({\n error: (_, { error }: { error?: ClerkElementsError }) => {\n if (error) {\n return error;\n }\n return new ClerkElementsRuntimeError('Unknown error');\n },\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 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 }) => context.router?.push(context.clerk.buildSignInUrl()),\n },\n guards: {\n areFieldsMissing: ({ context }) => context.clerk?.client?.signUp?.missingFields?.length > 0,\n areFieldsUnverified: ({ context }) => context.clerk?.client?.signUp?.unverifiedFields?.length > 0,\n\n hasAuthenticatedViaClerkJS: ({ context }) =>\n Boolean(context.clerk.client.signUp.status === null && context.clerk.client.lastActiveSessionId),\n hasCreatedSession: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.createdSession)),\n hasClerkStatus: ({ context }, params?: { status: VerificationStatus }) => {\n const value = context.router?.searchParams().get(SEARCH_PARAMS.status);\n if (!params) {\n return Boolean(value);\n }\n return value === params.status;\n },\n hasClerkTransfer: ({ context }) => Boolean(context.router?.searchParams().get(SEARCH_PARAMS.transfer)),\n hasResource: ({ context }) => Boolean(context.clerk.client.signUp),\n hasTicket: ({ context }) => Boolean(context.ticket),\n\n isLoggedInAndSingleSession: and(['isLoggedIn', 'isSingleSessionMode', not('isExampleMode')]),\n isStatusAbandoned: needsStatus('abandoned'),\n isStatusComplete: ({ context, event }) => {\n const resource = (event as SignUpRouterNextEvent)?.resource;\n const signUp = context.clerk?.client?.signUp;\n\n return (\n (resource?.status === 'complete' && Boolean(resource?.createdSessionId)) ||\n (signUp?.status === 'complete' && Boolean(signUp?.createdSessionId))\n );\n },\n isStatusMissingRequirements: needsStatus('missing_requirements'),\n\n isLoggedIn: or(['isStatusComplete', ({ context }) => Boolean(context.clerk.user)]),\n isSingleSessionMode: ({ context }) => Boolean(context.clerk?.__unstable__environment?.authConfig.singleSessionMode),\n isRestricted: ({ context }) =>\n context.clerk?.__unstable__environment?.userSettings.signUp.mode === SIGN_UP_MODES.RESTRICTED,\n isRestrictedWithoutTicket: and(['isRestricted', not('hasTicket')]),\n isExampleMode: ({ context }) => Boolean(context.exampleMode),\n isMissingRequiredFields: and(['isStatusMissingRequirements', 'areFieldsMissing']),\n isMissingRequiredUnverifiedFields: and(['isStatusMissingRequirements', 'areFieldsUnverified']),\n\n needsIdentifier: or(['statusNeedsIdentifier', isCurrentPath('/')]),\n needsContinue: and(['statusNeedsContinue', isCurrentPath('/continue')]),\n needsVerification: and(['statusNeedsVerification', isCurrentPath('/verify')]),\n needsCallback: isCurrentPath(SSO_CALLBACK_PATH_ROUTE),\n\n statusNeedsIdentifier: or([not('hasResource'), 'isStatusAbandoned']),\n statusNeedsContinue: or(['isMissingRequiredFields']),\n statusNeedsVerification: or(['isMissingRequiredUnverifiedFields', and(['areFieldsMissing', 'hasClerkStatus'])]),\n },\n delays: {\n 'TIMEOUT.POLLING': 300_000, // 5 minutes\n },\n types: {} as SignUpRouterSchema,\n}).createMachine({\n id: SignUpRouterMachineId,\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.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.SAML': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'saml',\n emailAddress: context.formRef.getSnapshot().context.fields.get('emailAddress')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signUpUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete:\n context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n },\n })),\n },\n 'AUTHENTICATE.WEB3': {\n actions: sendTo('start', ({ event }) => event),\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 on: {\n INIT: {\n actions: assign(({ event }) => {\n const searchParams = event.router?.searchParams();\n\n return {\n clerk: event.clerk,\n router: event.router,\n signInPath: event.signInPath || SIGN_IN_DEFAULT_BASE_PATH,\n loading: {\n isLoading: false,\n },\n exampleMode: event.exampleMode || false,\n formRef: event.formRef,\n ticket:\n searchParams?.get(SEARCH_PARAMS.ticket) ||\n searchParams?.get(SEARCH_PARAMS.invitationToken) ||\n 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_UP_DEFAULT_BASE_PATH,\n flow: 'signUp',\n formRef: context.formRef,\n parent: self,\n },\n });\n }\n }),\n always: [\n {\n guard: 'isLoggedInAndSingleSession',\n actions: [\n log('Already logged in'),\n {\n type: 'navigateExternal',\n params: ({ context }) => ({\n path: context.router?.searchParams().get('redirect_url') || context.clerk.buildAfterSignUpUrl(),\n }),\n },\n ],\n },\n {\n guard: 'needsCallback',\n target: 'Callback',\n },\n {\n guard: 'hasTicket',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'needsVerification',\n actions: { type: 'navigateInternal', params: { force: true, path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: or(['needsContinue', 'hasClerkTransfer']),\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'Continue',\n },\n {\n guard: 'isRestrictedWithoutTicket',\n target: 'Restricted',\n },\n {\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 actions: enqueueActions(({ enqueue, context }) => {\n enqueue('clearFormErrors');\n enqueue.sendTo('start', { type: 'SET_FORM', formRef: context.formRef });\n }),\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: and(['hasTicket', 'statusNeedsContinue']),\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n reenter: true,\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Continue: {\n tags: ['step:continue'],\n invoke: {\n id: 'continue',\n src: 'continueMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'Continue',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n target: 'Verification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n },\n ],\n },\n },\n Verification: {\n tags: ['step:verification'],\n invoke: {\n id: 'verification',\n src: 'verificationMachine',\n input: ({ context, self }) => ({\n attributes: context.clerk.__unstable__environment?.userSettings.attributes,\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n resource: context.clerk.client.signUp,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n always: [\n {\n guard: 'hasCreatedSession',\n actions: [\n ({ context }) => ({\n type: 'setActive',\n params: { sessionId: context.router?.searchParams().get(SEARCH_PARAMS.createdSession) },\n }),\n 'delayedReset',\n ],\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'verified' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n },\n {\n guard: { type: 'hasClerkStatus', params: { status: 'expired' } },\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n },\n ],\n on: {\n 'RESET.STEP': {\n target: 'Verification',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n ],\n },\n },\n Callback: {\n tags: ['step:callback'],\n entry: sendTo(ThirdPartyMachineId, { type: 'CALLBACK' }),\n on: {\n NEXT: [\n {\n guard: 'isStatusComplete',\n actions: ['setActive', 'delayedReset'],\n },\n {\n description: 'Handle a case where the user has already been authenticated via ClerkJS',\n guard: 'hasAuthenticatedViaClerkJS',\n actions: [{ type: 'setActive', params: { useLastActiveSession: true } }, 'delayedReset'],\n },\n {\n guard: 'statusNeedsVerification',\n actions: { type: 'navigateInternal', params: { path: '/verify' } },\n target: 'Verification',\n },\n {\n guard: 'statusNeedsContinue',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'Continue',\n },\n {\n actions: { type: 'navigateInternal', params: { path: '/' } },\n target: 'Start',\n },\n ],\n },\n },\n Restricted: {\n tags: ['step:restricted'],\n on: {\n NEXT: 'Start',\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 signInForceRedirectUrl: ClerkJSNavigationEvent.complete,\n signInFallbackRedirectUrl: ClerkJSNavigationEvent.complete,\n signUpForceRedirectUrl: ClerkJSNavigationEvent.signUp,\n signUpFallbackRedirectUrl: ClerkJSNavigationEvent.signUp,\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 return {\n basePath: context.basePath,\n flow: context.flow,\n params: event.params,\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 { SignUpResource, Web3Strategy } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { and, assertEvent, assign, enqueueActions, fromPromise, not, sendTo, setup } from 'xstate';\n\nimport { SIGN_UP_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport type { SetFormEvent } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { fieldsToSignUpParams } from '~/internals/machines/sign-up/utils';\nimport { ThirdPartyMachine } from '~/internals/machines/third-party';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignUpStartSchema } from './start.types';\n\nconst DISABLEABLE_FIELDS = ['emailAddress', 'phoneNumber'] as const;\n\nexport type TSignUpStartMachine = typeof SignUpStartMachine;\n\nexport const SignUpStartMachineId = 'SignUpStart';\n\ntype AttemptParams = { strategy: 'ticket'; ticket: string } | { strategy?: never; ticket?: never };\ntype PrefillFieldsKeys = keyof Pick<\n SignUpResource,\n 'username' | 'firstName' | 'lastName' | 'emailAddress' | 'phoneNumber'\n>;\nconst PREFILL_FIELDS: PrefillFieldsKeys[] = ['firstName', 'lastName', 'emailAddress', 'username', 'phoneNumber'];\n\nexport const SignUpStartMachine = setup({\n actors: {\n attempt: fromPromise<\n SignUpResource,\n { parent: SignInRouterMachineActorRef; fields: FormFields; params?: AttemptParams }\n >(({ input: { fields, parent, params } }) => {\n const fieldParams = fieldsToSignUpParams(fields);\n return parent.getSnapshot().context.clerk.client.signUp.create({ ...fieldParams, ...params });\n }),\n attemptWeb3: fromPromise<SignUpResource, { parent: SignInRouterMachineActorRef; strategy: Web3Strategy }>(\n ({ input: { parent, strategy } }) => {\n if (strategy === 'web3_metamask_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithMetamask();\n }\n if (strategy === 'web3_coinbase_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signUp.authenticateWithCoinbaseWallet();\n }\n throw new ClerkElementsRuntimeError(`Unsupported Web3 strategy: ${strategy}`);\n },\n ),\n thirdParty: ThirdPartyMachine,\n },\n actions: {\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignUpResource>).output }),\n sendToLoading,\n setFormRef: assign(({ event }) => {\n return {\n formRef: (event as unknown as SetFormEvent).formRef,\n };\n }),\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 setDefaultFormValues: ({ context }) => {\n const signUp = context.parent.getSnapshot().context.clerk.client.signUp;\n const prefilledDefaultValues = new Map();\n\n for (const key of PREFILL_FIELDS) {\n if (key in signUp) {\n prefilledDefaultValues.set(key, signUp[key]);\n }\n }\n\n context.formRef.send({\n type: 'PREFILL_DEFAULT_VALUES',\n defaultValues: prefilledDefaultValues,\n });\n },\n },\n guards: {\n isMissingRequirements: ({ context }) =>\n context.parent.getSnapshot().context.clerk?.client?.signUp?.status === 'missing_requirements',\n hasTicket: ({ context }) => Boolean(context.ticket),\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as SignUpStartSchema,\n}).createMachine({\n id: SignUpStartMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n parent: input.parent,\n loadingStep: 'start',\n ticket: input.ticket,\n }),\n entry: 'setDefaultFormValues',\n initial: 'Init',\n on: {\n SET_FORM: {\n actions: 'setFormRef',\n },\n },\n states: {\n Init: {\n description:\n 'Handle ticket, if present; Else, default to Pending state. Per tickets, `Attempting` makes a `signUp.create` request allowing for an incomplete sign up to contain progressively filled fields on the Start step.',\n always: [\n {\n guard: and(['hasTicket', 'isMissingRequirements']),\n target: 'Pending',\n },\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.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: 'attemptCreate',\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 AttemptingWeb3: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptCreateWeb3',\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 { Poller } from '@clerk/shared/poller';\nimport type {\n AttemptVerificationParams,\n Attribute,\n PrepareVerificationParams,\n SignUpResource,\n SignUpVerifiableField,\n SignUpVerificationsResource,\n VerificationStrategy,\n} from '@clerk/types';\nimport type { Writable } from 'type-fest';\nimport { and, assign, enqueueActions, fromCallback, fromPromise, log, raise, sendParent, sendTo, setup } from 'xstate';\n\nimport {\n MAGIC_LINK_VERIFY_PATH_ROUTE,\n RESENDABLE_COUNTDOWN_DEFAULT,\n SIGN_UP_DEFAULT_BASE_PATH,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { WithParams } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport {\n type SignUpVerificationContext,\n SignUpVerificationDelays,\n type SignUpVerificationEmailLinkFailedEvent,\n type SignUpVerificationEvents,\n type SignUpVerificationSchema,\n} from './verification.types';\n\nexport type SignUpVerificationsResourceKey = keyof SignUpVerificationsResource;\nexport type TSignUpVerificationMachine = typeof SignUpVerificationMachine;\n\nexport type StartSignUpEmailLinkFlowEvents = { type: 'STOP' };\nexport type StartSignUpEmailLinkFlowInput = {\n parent: SignInRouterMachineActorRef;\n};\n\nexport const SignUpVerificationMachineId = 'SignUpVerification';\n\nconst shouldVerify = (field: SignUpVerifiableField, strategy?: VerificationStrategy) => {\n const guards: Writable<Parameters<typeof and<SignUpVerificationContext, SignUpVerificationEvents, any>>[0]> = [\n {\n type: 'isFieldUnverified',\n params: {\n field,\n },\n },\n ];\n\n if (strategy) {\n guards.push({\n type: 'isStrategyEnabled',\n params: {\n attribute: field,\n strategy,\n },\n });\n }\n\n return and(guards);\n};\n\nexport type PrepareVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<PrepareVerificationParams>;\nexport type AttemptVerificationInput = {\n parent: SignInRouterMachineActorRef;\n} & WithParams<AttemptVerificationParams>;\n\nexport const SignUpVerificationMachine = setup({\n actors: {\n prepare: fromPromise<SignUpResource, PrepareVerificationInput>(({ input: { params, parent } }) => {\n const clerk = parent.getSnapshot().context.clerk;\n\n if (params.strategy === 'email_link' && params.redirectUrl) {\n params.redirectUrl = clerk.buildUrlWithAuth(params.redirectUrl);\n }\n\n return clerk.client.signUp.prepareVerification(params);\n }),\n attempt: fromPromise<SignUpResource, AttemptVerificationInput>(async ({ input: { params, parent } }) =>\n parent.getSnapshot().context.clerk.client.signUp.attemptVerification(params),\n ),\n attemptEmailLinkVerification: fromCallback<StartSignUpEmailLinkFlowEvents, StartSignUpEmailLinkFlowInput>(\n ({ receive, sendBack, input: { parent } }) => {\n const { run, stop } = Poller();\n\n const clerk = parent.getSnapshot().context.clerk;\n\n void run(async () =>\n clerk.client.signUp\n .reload()\n .then(resource => {\n const signInStatus = resource.status;\n const verificationStatus = resource.verifications.emailAddress.status;\n\n // Short-circuit if the sign-up resource is already complete\n if (signInStatus === 'complete') {\n return sendBack({ type: 'EMAIL_LINK.VERIFIED', resource });\n }\n\n switch (verificationStatus) {\n case 'verified':\n case 'transferable':\n case 'expired': {\n sendBack({ type: `EMAIL_LINK.${verificationStatus.toUpperCase()}`, resource });\n break;\n }\n case 'failed': {\n sendBack({\n type: 'EMAIL_LINK.FAILED',\n error: new ClerkElementsError('email-link-verification-failed', 'Email verification failed'),\n resource,\n });\n break;\n }\n // case 'unverified':\n default:\n return;\n }\n\n stop();\n })\n .catch(error => {\n stop();\n new ClerkElementsRuntimeError(error);\n }),\n );\n\n receive(event => {\n if (event.type === 'STOP') {\n stop();\n }\n });\n\n return () => stop();\n },\n ),\n },\n actions: {\n resendableTick: assign(({ context }) => ({\n resendable: context.resendableAfter === 1,\n resendableAfter: context.resendableAfter > 1 ? context.resendableAfter - 1 : context.resendableAfter,\n })),\n resendableReset: assign({\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\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 isComplete: ({ context }) => context.resource.status === 'complete',\n isFieldUnverified: ({ context, event }, { field }: { field: SignUpVerifiableField }) => {\n let resource = context.resource;\n\n if (event?.type === 'NEXT' && event.resource) {\n resource = event.resource;\n }\n\n return resource.unverifiedFields.includes(field);\n },\n isResendable: ({ context }) => context.resendable || context.resendableAfter === 0,\n isStrategyEnabled: (\n { context },\n { attribute, strategy }: { attribute: Attribute; strategy: VerificationStrategy },\n ) => Boolean(context.attributes?.[attribute].verifications.includes(strategy)),\n shouldVerifyPhoneCode: shouldVerify('phone_number'),\n shouldVerifyEmailLink: shouldVerify('email_address', 'email_link'),\n shouldVerifyEmailCode: shouldVerify('email_address', 'email_code'),\n },\n delays: SignUpVerificationDelays,\n types: {} as SignUpVerificationSchema,\n}).createMachine({\n id: SignUpVerificationMachineId,\n initial: 'Init',\n context: ({ input }) => ({\n attributes: input.attributes,\n basePath: input.basePath || SIGN_UP_DEFAULT_BASE_PATH,\n loadingStep: 'verifications',\n formRef: input.formRef,\n parent: input.parent,\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n resource: input.resource,\n }),\n on: {\n NEXT: [\n {\n guard: 'isComplete',\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: '.PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: '.EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: '.EmailCode',\n },\n {\n actions: sendParent(({ event }) => ({ type: 'NEXT', resource: event.resource })),\n },\n ],\n },\n states: {\n Init: {\n always: [\n {\n description: 'Validate via phone number',\n guard: 'shouldVerifyPhoneCode',\n target: 'PhoneCode',\n },\n {\n description: 'Validate via email link',\n guard: 'shouldVerifyEmailLink',\n target: 'EmailLink',\n },\n {\n description: 'Verify via email code',\n guard: 'shouldVerifyEmailCode',\n target: 'EmailCode',\n },\n {\n actions: sendParent(({ context }) => ({ type: 'NEXT', resource: context.resource })),\n },\n ],\n },\n EmailLink: {\n tags: ['verification:method:email', 'verification:category:link', 'verification:email_link'],\n initial: 'Preparing',\n on: {\n RETRY: '.Preparing',\n 'EMAIL_LINK.RESTART': {\n target: '.Attempting',\n reenter: true,\n },\n 'EMAIL_LINK.FAILED': {\n actions: [\n {\n type: 'setFormErrors',\n params: ({ event }: { event: SignUpVerificationEmailLinkFailedEvent }) => ({ error: event.error }),\n },\n assign({ resource: ({ event }) => event.resource }),\n ],\n target: '.Pending',\n },\n 'EMAIL_LINK.*': {\n actions: enqueueActions(({ enqueue, event }) => {\n if (event.type === 'EMAIL_LINK.RESTART') {\n return;\n }\n\n enqueue.assign({ resource: event.resource });\n enqueue.raise({ type: 'NEXT', resource: event.resource });\n }),\n },\n },\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailLinkVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_link',\n redirectUrl: `${context.basePath}${MAGIC_LINK_VERIFY_PATH_ROUTE}`,\n },\n }),\n onDone: {\n target: 'Attempting',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n description: 'Placeholder for allowing resending of email link',\n tags: ['state:pending'],\n on: {\n NEXT: 'Preparing',\n },\n },\n Attempting: {\n tags: ['state:attempting'],\n invoke: {\n id: 'attemptEmailLinkVerification',\n src: 'attemptEmailLinkVerification',\n input: ({ context }) => ({\n parent: context.parent,\n }),\n },\n after: {\n emailLinkTimeout: {\n description: 'Timeout after 5 minutes',\n target: 'Pending',\n actions: sendTo(({ context }) => context.formRef, {\n type: 'ERRORS.SET',\n error: new ClerkElementsError('verify-email-link-timeout', 'Email link verification timed out'),\n }),\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\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 },\n },\n },\n EmailCode: {\n tags: ['verification:method:email', 'verification:category:code', 'verification:email_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'prepareEmailAddressCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyEmailCode',\n target: 'Pending',\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\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 },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptEmailAddressCodeVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'email_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n PhoneCode: {\n tags: ['verification:method:phone', 'verification:category:code', 'verification:phone_code'],\n initial: 'Preparing',\n states: {\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n exit: 'resendableReset',\n invoke: {\n id: 'preparePhoneCodeVerification',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n },\n }),\n onDone: [\n {\n guard: 'shouldVerifyPhoneCode',\n target: 'Pending',\n actions: assign({ resource: ({ event }) => event.output }),\n },\n {\n actions: [\n assign({ resource: ({ event }) => event.output }),\n raise(({ event }) => ({ type: 'NEXT', resource: event.output })),\n ],\n },\n ],\n onError: {\n actions: 'setFormErrors',\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n on: {\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'NotResendable',\n states: {\n Resendable: {\n description: 'Waiting for user to retry',\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 },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPhoneNumberVerification',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n params: {\n strategy: 'phone_code',\n code: (context.formRef.getSnapshot().context.fields.get('code')?.value as string) || '',\n },\n }),\n onDone: {\n actions: [raise(({ event }) => ({ type: 'NEXT', resource: event.output })), 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n },\n },\n});\n","import type { ClerkAPIResponseError } from '@clerk/shared/error';\nimport type { Attributes, SignUpResource } from '@clerk/types';\nimport type { ActorRefFrom, DoneActorEvent, ErrorActorEvent } from 'xstate';\n\nimport type { FormMachine } from '~/internals/machines/form';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport type SignUpVerificationStateTags = 'state:preparing' | 'state:pending' | 'state:attempting' | 'state:loading';\n\nexport type SignUpVerificationVerificationCategoryTags = 'verification:category:code' | 'verification:category:link';\nexport type SignUpVerificationVerificationMethodTags = 'verification:method:email' | 'verification:method:phone';\nexport type SignUpVerificationVerificationTypeTags =\n | 'verification:email_link'\n | 'verification:email_code'\n | 'verification:phone_code';\n\nexport type SignUpVerificationVerificationTags =\n | SignUpVerificationVerificationCategoryTags\n | SignUpVerificationVerificationMethodTags\n | SignUpVerificationVerificationTypeTags;\n\nexport type SignUpVerificationTags = SignUpVerificationStateTags | SignUpVerificationVerificationTags;\nexport type SignUpVerificationFriendlyTags = 'code' | 'email_link' | 'email_code' | 'phone_code';\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignUpVerificationSubmitEvent = { type: 'SUBMIT'; action: 'submit' };\nexport type SignUpVerificationNextEvent = { type: 'NEXT'; resource?: SignUpResource };\nexport type SignUpVerificationRetryEvent = { type: 'RETRY' };\n\nexport type SignUpVerificationEmailLinkVerifiedEvent = { type: 'EMAIL_LINK.VERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkUnverifiedEvent = { type: 'EMAIL_LINK.UNVERIFIED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkExpiredEvent = { type: 'EMAIL_LINK.EXPIRED'; resource: SignUpResource };\nexport type SignUpVerificationEmailLinkTransferrableEvent = {\n type: 'EMAIL_LINK.TRANSFERRABLE';\n resource: SignUpResource;\n};\nexport type SignUpVerificationEmailLinkRestartEvent = { type: 'EMAIL_LINK.RESTART' };\nexport type SignUpVerificationEmailLinkFailedEvent = {\n type: 'EMAIL_LINK.FAILED';\n resource: SignUpResource;\n error: Error;\n};\n\nexport type SignUpVerificationEmailLinkEvent =\n | SignUpVerificationEmailLinkVerifiedEvent\n | SignUpVerificationEmailLinkUnverifiedEvent\n | SignUpVerificationEmailLinkExpiredEvent\n | SignUpVerificationEmailLinkRestartEvent\n | SignUpVerificationEmailLinkFailedEvent;\n\nexport type SignUpVerificationEvents =\n | DoneActorEvent\n | ErrorActorEvent\n | SignUpVerificationRetryEvent\n | SignUpVerificationSubmitEvent\n | SignUpVerificationNextEvent\n | SignUpVerificationEmailLinkEvent;\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport type SignUpVerificationInput = {\n attributes: Attributes | undefined;\n basePath?: string;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n resource: SignUpResource;\n};\n\n// ---------------------------------- Delays ---------------------------------- //\n\nexport const SignUpVerificationDelays = {\n emailLinkTimeout: 300_000, // 5 minutes\n resendableTimeout: 1_000, // 1 second\n} as const;\n\nexport type SignUpVerificationDelays = keyof typeof SignUpVerificationDelays;\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport interface SignUpVerificationContext {\n attributes: Attributes | undefined;\n basePath: string;\n resource: SignUpResource;\n error?: Error | ClerkAPIResponseError;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n loadingStep: 'verifications';\n resendable: boolean;\n resendableAfter: number;\n}\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignUpVerificationSchema {\n context: SignUpVerificationContext;\n delays: SignUpVerificationDelays;\n input: SignUpVerificationInput;\n events: SignUpVerificationEvents;\n tags: SignUpVerificationTags;\n}\n","export { Route, Router, useClerkRouter } from '@clerk/shared/router';\nexport { useVirtualRouter } from './virtual';\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 { 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 {\n type TSignUpContinueMachine,\n type TSignUpRouterMachine,\n type TSignUpStartMachine,\n type TSignUpVerificationMachine,\n} from '~/internals/machines/sign-up';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SnapshotState = SnapshotFrom<TSignUpRouterMachine>;\n\nexport const SignUpRouterCtx = createContextFromActorRef<TSignUpRouterMachine>('SignUpRouterCtx');\n\nfunction useSignUpStep<M extends AnyStateMachine, T = ActorRefFrom<M>>(name: string) {\n return SignUpRouterCtx.useSelector(state => state.children[name] as AnyActorRef) as T;\n}\n\nexport const useSignUpStartStep = () => useSignUpStep<TSignUpStartMachine>('start');\nexport const useSignUpContinueStep = () => useSignUpStep<TSignUpContinueMachine>('continue');\nexport const useSignUpVerificationStep = () => useSignUpStep<TSignUpVerificationMachine>('verification');\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","function composeEventHandlers<E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\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 { 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 { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport type { SignUpContinueProps } from './continue';\nimport { SignUpContinue } from './continue';\nimport type { SignUpRestrictedProps } from './restricted';\nimport { SignUpRestricted } from './restricted';\nimport type { SignUpStartProps } from './start';\nimport { SignUpStart } from './start';\nimport type { SignUpVerificationsProps } from './verifications';\nimport { SignUpVerifications } from './verifications';\n\nexport const SIGN_UP_STEPS = {\n start: 'start',\n continue: 'continue',\n verifications: 'verifications',\n restricted: 'restricted',\n} as const;\n\nexport type TSignUpStep = (typeof SIGN_UP_STEPS)[keyof typeof SIGN_UP_STEPS];\ntype StepWithProps<N extends TSignUpStep, T> = { name: N } & T;\n\nexport type SignUpStepProps =\n | StepWithProps<'start', SignUpStartProps>\n | StepWithProps<'continue', SignUpContinueProps>\n | StepWithProps<'verifications', SignUpVerificationsProps>\n | StepWithProps<'restricted', SignUpRestrictedProps>;\n\n/**\n * Render different steps of the sign-up flow. Initially the `'start'` step is rendered. Optionally, you can render additional fields in the `'continue'` step. Once a sign-up attempt has been created, `'verifications'` will be displayed.\n *\n * You typically want to place fields like username, password, or social providers in the `'start'` step. The `'continue'` step can hold inputs for username, first name/last name or other metadata. The `'verifications'` step is used to verify the user's information like an email verification. Once the user has been verified, the sign-up attempt will be completed.\n *\n * @param {string} name - Step name. Use `'start'`, `'continue'`, or `'verifications'`.\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name='start' />\n * <SignUp.Step name='continue' />\n * <SignUp.Step name='verifications' />\n * </SignUp.Root>\n */\nexport function SignUpStep(props: SignUpStepProps) {\n const clerk = useClerk();\n\n clerk.telemetry?.record(eventComponentMounted('Elements_SignUpStep', { name: props.name }));\n\n switch (props.name) {\n case SIGN_UP_STEPS.start:\n return <SignUpStart {...props} />;\n case SIGN_UP_STEPS.continue:\n return <SignUpContinue {...props} />;\n case SIGN_UP_STEPS.verifications:\n return <SignUpVerifications {...props} />;\n case SIGN_UP_STEPS.restricted:\n return <SignUpRestricted {...props} />;\n default:\n throw new ClerkElementsRuntimeError(\n `Invalid step name. Use 'start', 'continue', 'verifications', or 'restricted'.`,\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> ? 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 { TSignUpContinueMachine } from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpContinueStep } from '~/react/sign-up/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignUpContinueProps = FormProps;\n\nexport const SignUpContinueCtx = createContextFromActorRef<TSignUpContinueMachine>('SignUpContinueCtx');\n\nexport function SignUpContinue(props: SignUpContinueProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:continue');\n\n return activeState ? <SignUpContinueInner {...props} /> : null;\n}\n\nfunction SignUpContinueInner(props: SignUpContinueProps) {\n const ref = useSignUpContinueStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpContinueCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpContinueCtx.Provider>\n );\n}\n","import type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nexport type SignUpRestrictedProps = FormProps;\n\nexport function SignUpRestricted(props: SignUpRestrictedProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:restricted');\n\n return activeState ? (\n <Form\n // TODO: Update when sign-up flow is consolidated\n // @ts-expect-error - `flowActor` is not a valid prop for `Form`\n flowActor={routerRef}\n {...props}\n />\n ) : null;\n}\n","import type { TSignUpStartMachine } from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpStartStep } from '~/react/sign-up/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignUpStartProps = FormProps;\n\nexport const SignUpStartCtx = createContextFromActorRef<TSignUpStartMachine>('SignUpStartCtx');\n\nexport function SignUpStart(props: SignUpStartProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:start');\n\n return activeState ? <SignUpStartInner {...props} /> : null;\n}\n\nfunction SignUpStartInner(props: SignUpStartProps) {\n const ref = useSignUpStartStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpStartCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpStartCtx.Provider>\n );\n}\n","import type {\n SignUpVerificationFriendlyTags,\n SignUpVerificationTags,\n TSignUpVerificationMachine,\n} from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpVerificationStep } from '~/react/sign-up/context';\n\nimport { createContextFromActorRef } from '../utils/create-context-from-actor-ref';\n\nexport type SignUpVerificationsProps = FormProps;\n\nexport const SignUpVerificationCtx = createContextFromActorRef<TSignUpVerificationMachine>('SignUpVerificationCtx');\n\n/**\n * Renders its children when the user is in the verification step of the sign-up flow. This happens after the user has signed up but before their account is active & verified.\n * @example\n * import { SignUp, Step, Strategy } from \"@clerk/elements/sign-up\"\n *\n * export default SignUpPage = () => (\n * <SignUp>\n * <Step name=\"verifications\">\n * <Strategy name=\"email_link\">\n * Please check your email for a verification link.\n * </Strategy>\n * </Step>\n * </SignUp>\n * )\n */\nexport function SignUpVerifications(props: SignUpVerificationsProps) {\n const ref = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(ref, 'step:verification');\n\n return activeState ? <SignUpVerifyInner {...props} /> : null;\n}\n\nfunction SignUpVerifyInner(props: SignUpVerificationsProps) {\n const ref = useSignUpVerificationStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpVerificationCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpVerificationCtx.Provider>\n );\n}\n\nexport type SignUpStrategyProps = { name: SignUpVerificationFriendlyTags; children: React.ReactNode };\n\n/**\n * Conditionally render its children depending on the authentication strategy that needs to be verified. Does not render any markup on its own.\n *\n * @param {string} name - The name of the strategy for which its children will be rendered.\n *\n * @example\n * <SignUp.Strategy name=\"email_code\">\n * <Clerk.Field name=\"code\">\n * <Clerk.Label>Code</Clerk.Label>\n * <Clerk.Input />\n * <Clerk.FieldError />\n * </Clerk.Field>\n * <SignUp.Action submit>Verify</SignUp.Action>\n * </SignUp.Strategy>\n */\nexport function SignUpStrategy({ children, name: tag }: SignUpStrategyProps) {\n const ref = SignUpVerificationCtx.useActorRef(true);\n\n if (!ref) {\n throw new Error(\n '<Strategy> used outside of <SignUp>. Did you mean to `import { Strategy } from \"@clerk/elements/sign-in\"` instead?',\n );\n }\n\n const { active } = useActiveTags(ref, [\n `verification:${tag}`,\n `verification:category:${tag}`,\n ] as unknown as SignUpVerificationTags[]);\n\n return active ? <>{children}</> : null;\n}\n","import * as React from 'react';\n\nimport type { FormSubmitProps } from '~/react/common';\nimport { Submit } from '~/react/common';\n\nimport type { SignUpNavigateProps } from './navigate';\nimport { SignUpNavigate } from './navigate';\nimport type { SignUpResendProps } from './resend';\nimport { SignUpResend } from './resend';\n\nexport type SignUpActionProps = { asChild?: boolean } & FormSubmitProps &\n (\n | ({\n navigate: SignUpNavigateProps['to'];\n resend?: never;\n submit?: never;\n } & Omit<SignUpNavigateProps, 'to'>)\n | { navigate?: never; resend?: never; submit: true }\n | ({ navigate?: never; resend: true; submit?: never } & SignUpResendProps)\n );\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 * <SignUp.Action navigate=\"start\">Go Back</SignUp.Action>\n *\n * @example\n * <SignUp.Action submit>Sign Up</SignUp.Action>\n *\n * @example\n * <SignUp.Action resend>Resend</SignUp.Action>\n */\n\nexport const SignUpAction = React.forwardRef<React.ElementRef<'button'>, SignUpActionProps>((props, forwardedRef) => {\n const { submit, navigate, resend, ...rest } = props;\n let Comp: React.ForwardRefExoticComponent<any> | undefined;\n\n if (submit) {\n Comp = Submit;\n } else if (navigate) {\n Comp = SignUpNavigate;\n } else if (resend) {\n Comp = SignUpResend;\n }\n\n return Comp ? (\n <Comp\n to={navigate}\n {...rest}\n ref={forwardedRef}\n />\n ) : null;\n});\n\nSignUpAction.displayName = 'SignUpAction';\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';\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 { SignUpRouterCtx } from '~/react/sign-up/context';\n\nconst SIGN_UP_NAVIGATE_NAME = 'SignInNavigate';\nconst SignUpNavigationEventMap = {\n start: `NAVIGATE.START`,\n previous: `NAVIGATE.PREVIOUS`,\n} as const;\n\nexport type SignUpNavigateElementKey = keyof typeof SignUpNavigationEventMap;\n\nexport type SignUpNavigateElement = React.ElementRef<'button'>;\nexport type SignUpNavigateProps = {\n asChild?: boolean;\n to: SignUpNavigateElementKey;\n children: React.ReactNode;\n};\n\n/**\n * Renders a button which will navigate to a different step in the sign-up flow.\n *\n * @param {SignUpNavigateElementKey} 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=\"start\">\n * Start over...\n * </Navigate>\n */\nexport const SignUpNavigate = React.forwardRef<SignUpNavigateElement, SignUpNavigateProps>(\n ({ asChild, to, ...rest }, forwardedRef) => {\n const actorRef = SignUpRouterCtx.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 = SignUpNavigationEventMap[to];\n\n if (actorRef.getSnapshot().can({ type })) {\n actorRef.send({ type });\n } else {\n console.warn(\n `Clerk: <SignUp.Action navigate=\"${to}\"> is an invalid navigation event. You can only navigate to: ${Object.keys(SignUpNavigationEventMap).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\nSignUpNavigate.displayName = SIGN_UP_NAVIGATE_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\n\nimport { SignUpVerificationCtx } from '../verifications';\n\nexport type SignUpResendElement = React.ElementRef<'button'>;\nexport type SignUpResendFallbackProps = {\n resendable: boolean;\n resendableAfter: number;\n};\nexport type SignUpResendProps = {\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: SignUpResendFallbackProps) => React.ReactNode);\n};\n\nconst SIGN_UP_RESEND_NAME = 'SignUpResend';\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 This component is not intended to be used directly. Instead, use the <Action resend> component.\n *\n * @example\n * import { Action } from '@clerk/elements/sign-in';\n * <Action resend fallback={({ resendableAfter }) => <p>Resendable in: {resendableAfter}s</p>}>Resend</Action>;\n */\nexport const SignUpResend = React.forwardRef<SignUpResendElement, SignUpResendProps>(\n ({ asChild, fallback, ...rest }, forwardedRef) => {\n const ref = SignUpVerificationCtx.useActorRef(true);\n\n if (!ref) {\n throw new Error('The resend action must be used within <SignUp.Step name=\"verifications\">.');\n }\n\n const fallbackProps: SignUpResendFallbackProps = useSelector(\n ref,\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={() => ref.send({ type: 'RETRY' })}\n ref={forwardedRef}\n />\n );\n },\n);\n\nSignUpResend.displayName = SIGN_UP_RESEND_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 { SignUpStartCtx } from './start';\n\nexport type SignUpCaptchaElement = React.ElementRef<'div'>;\n\ntype CaptchaElementProps = Omit<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>,\n 'id' | 'children'\n>;\n\nexport type SignUpCaptchaProps =\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 `<SignUp.Captcha>` component is used to render the Cloudflare Turnstile widget. It must be used within the `<SignUp.Step name=\"start\">` 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 <SignUp.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 * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha />\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name=\"start\">\n * <SignUp.Captcha asChild>\n * <aside/>\n * </SignUp.Captcha>\n * <Clerk.Action submit>Sign Up</Clerk.Action>\n * </SignUp.Step>\n * </SignUp.Root>\n */\n\nexport const SignUpCaptcha = React.forwardRef<SignUpCaptchaElement, SignUpCaptchaProps>(\n ({ asChild, children, ...rest }, forwardedRef) => {\n const ref = SignUpStartCtx.useActorRef(true);\n\n if (!ref) {\n throw new ClerkElementsRuntimeError('<Captcha> must be used within the <SignUp.Step name=\"start\"> component.');\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"],"mappings":"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","names":["import_client_only","import_react","import_router","import_xstate","import_underscore","import_xstate","import_xstate","import_xstate","import_xstate","import_xstate","import_xstate","import_router","import_react","import_react","useContext","useSelector","actor","useSelectorUnbound","import_react","React","RadixForm","import_react_form","DISPLAY_NAME","RadixSubmit","import_router","import_react","React","import_jsx_runtime","import_react","import_telemetry","import_react","actor","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_react_slot","import_react","React","import_jsx_runtime","import_jsx_runtime","import_react_slot","React","import_jsx_runtime"]}
|