@formhaus/core 0.11.1 → 0.11.2
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/{check-definition-BTMV3Ziq.d.ts → check-definition-B-YU_XN6.d.ts} +2 -2
- package/dist/chunk-NAKPTXVB.js +5 -0
- package/dist/chunk-NAKPTXVB.js.map +1 -0
- package/dist/{chunk-IVSO5ANU.js → chunk-TTELQZQA.js} +3 -3
- package/dist/{chunk-IVSO5ANU.js.map → chunk-TTELQZQA.js.map} +1 -1
- package/dist/chunk-XLTPGPGA.js +3 -0
- package/dist/chunk-XLTPGPGA.js.map +1 -0
- package/dist/cloud.d.ts +3 -3
- package/dist/cloud.js +1 -1
- package/dist/{controller-CUZ5bMpv.d.ts → controller-DXb698eH.d.ts} +1 -1
- package/dist/{definition-Bufih_Bx.d.ts → definition-PdtKhxBh.d.ts} +2 -1
- package/dist/index.d.ts +11 -7
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +4 -4
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/{runtime-LNJU0Dra.d.ts → runtime-Bmzuud3o.d.ts} +2 -2
- package/dist/server.d.ts +4 -4
- package/dist/server.iife.js +3 -3
- package/dist/server.iife.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/{validate-field-glVVoN3E.d.ts → validate-field-dZd5yZAp.d.ts} +3 -3
- package/package.json +1 -1
- package/schema/form-definition.schema.json +5 -0
- package/style.css +28 -32
- package/dist/chunk-47C7QX7J.js +0 -5
- package/dist/chunk-47C7QX7J.js.map +0 -1
- package/dist/chunk-YXQFFAXK.js +0 -3
- package/dist/chunk-YXQFFAXK.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/engine/lifecycle-error.ts","../src/validation/default-messages.ts","../src/visibility/evaluate-condition.ts","../src/visibility/is-visible.ts","../src/validation/type-checks.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/engine-utils.ts","../src/engine/pending-inputs.ts","../src/engine/validation-state.ts","../src/engine/step-routes.ts","../src/engine/step-skip.ts","../src/engine/submission.ts","../src/engine/navigation.ts"],"names":["FormLifecycleError","phase","cause","afterCommit","callback","error","TYPE_MESSAGES","getDefaultMessage","rule","params","CONDITION_OPERATORS","isBlank","value","toNumber","number","compare","operand","test","evaluateCondition","condition","values","a","b","isVisible","field","matches","BOOLEAN_TYPES","BUILT_IN_TYPES","MAX_STRING_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","DATE_TIME","TEXT_TYPES","FORMATS","normalizeValue","parsed","isOption","option","lengthError","max","multiselectError","item","stringError","message","formatError","format","primitiveError","typeError","clientTypeError","isEmpty","boundError","size","rules","unit","min","patternError","validateFieldValue","allValues","validators","matchMessage","typeIssue","sizeError","matchError","validateStep","step","validateFields","fields","errors","conditionFields","source","getAllFields","definition","createValues","initialValues","getChangedKeys","previous","next","keys","key","activePath","engine","watchCheckedInputs","checked","path","applyValidationErrors","navigate","previousErrors","structureChanged","moveToFirstError","firstErrorKey","targetIndex","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","validateOne","previousError","fieldKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","activeSteps","steps","indexes","index","result","available","stepValues","route","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","candidates","createActivePath","active","refresh","groups","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","skipStepAt","submitForm","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","allowed","skippedSteps","hasStepErrors","moveTo","skipStep","changeStep","committed","skippedValues","edited","submitted","skipped","direction","reason","skipping","validating","validate","toIndex","target","context","goToStepWithField","fieldKey"],"mappings":"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","file":"chunk-YXQFFAXK.js","sourcesContent":["export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(readonly phase: 'afterStepChange' | 'afterSubmit', cause: unknown) {\n super(`The action completed, but ${phase} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n this.name = 'FormLifecycleError';\n this.cause = cause;\n }\n}\n\nexport async function afterCommit(phase: 'afterStepChange' | 'afterSubmit', callback: () => void | Promise<void>): Promise<void> {\n try { await callback(); }\n catch (error) { throw new FormLifecycleError(phase, error); }\n}\n","export const TYPE_MESSAGES = {\n email: 'Enter a valid email',\n number: 'Enter a number',\n boolean: 'Must be true or false',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n string: 'Must be text',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n file: 'Must be a file reference',\n value: 'Invalid value',\n};\n\nexport type ValidationRule = 'required' | 'minLength' | 'maxLength' | 'min' | 'max' | 'pattern' | 'matchField';\n\nexport function getDefaultMessage(rule: ValidationRule, params?: Record<string, unknown>): string {\n switch (rule) {\n case 'required':\n return 'This field is required';\n case 'minLength':\n return `Must be at least ${params?.min} ${params?.unit ?? 'characters'}`;\n case 'maxLength':\n return `Must be at most ${params?.max} ${params?.unit ?? 'characters'}`;\n case 'min':\n return `Must be at least ${params?.min}`;\n case 'max':\n return `Must be at most ${params?.max}`;\n case 'pattern':\n return 'Invalid format';\n case 'matchField':\n return 'Fields must match';\n default:\n return 'Invalid value';\n }\n}\n","import type { ShowCondition } from '../types';\n\nexport const CONDITION_OPERATORS = ['eq', 'neq', 'in', 'notIn', 'notEmpty', 'gt', 'gte', 'lt', 'lte'] as const;\n\nexport function isBlank(value: unknown): boolean {\n return value == null || value === '' || (Array.isArray(value) && !value.length);\n}\n\nfunction toNumber(value: unknown): number | undefined {\n const number = typeof value === 'string' && value.trim() !== '' ? Number(value) : value;\n return typeof number === 'number' && Number.isFinite(number) ? number : undefined;\n}\n\nfunction compare(value: unknown, operand: number, test: (value: number, operand: number) => boolean): boolean {\n const number = toNumber(value);\n return number !== undefined && test(number, operand);\n}\n\nexport function evaluateCondition(\n condition: ShowCondition,\n values: Record<string, unknown>,\n): boolean {\n const value = values[condition.field];\n if (condition.eq !== undefined) return value === condition.eq;\n if (condition.neq !== undefined) return value !== condition.neq;\n if (condition.in !== undefined) return condition.in.includes(value as string | number);\n if (condition.notIn !== undefined) return !condition.notIn.includes(value as string | number);\n if (condition.notEmpty !== undefined) return !condition.notEmpty || !isBlank(value);\n if (condition.gt !== undefined) return compare(value, condition.gt, (a, b) => a > b);\n if (condition.gte !== undefined) return compare(value, condition.gte, (a, b) => a >= b);\n if (condition.lt !== undefined) return compare(value, condition.lt, (a, b) => a < b);\n if (condition.lte !== undefined) return compare(value, condition.lte, (a, b) => a <= b);\n return false;\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(\n field: Pick<FormField, 'show' | 'showAny'>,\n values: Record<string, unknown>,\n): boolean {\n const matches = (condition: ShowCondition) => evaluateCondition(condition, values);\n return (field.show ?? []).every(matches) && (!field.showAny?.length || field.showAny.some(matches));\n}\n","import type { FormField } from '../types';\nimport { getDefaultMessage, TYPE_MESSAGES } from './default-messages';\n\nexport const BOOLEAN_TYPES = ['checkbox', 'switch'];\nexport const BUILT_IN_TYPES = ['text', 'email', 'phone', 'number', 'password', 'select', 'autocomplete', 'multiselect', 'checkbox', 'radio', 'switch', 'file', 'date', 'datetime', 'textarea'];\n\nexport const MAX_STRING_LENGTH = 10000;\nconst MAX_EMAIL_LENGTH = 254;\nconst MAX_ITEMS = 1000;\nconst EMAIL = /^[^\\s@]+@[^\\s@.]+(?:\\.[^\\s@.]+)+$/;\nconst DECIMAL = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/;\nconst DATE = '\\\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\\\d|3[01])';\nconst DATE_ONLY = new RegExp(`^${DATE}$`);\nconst DATE_TIME = new RegExp(`^${DATE}T(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d{1,3})?)?(?:Z|[+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)?$`);\nconst TEXT_TYPES = new Set(['text', 'phone', 'password', 'textarea', 'autocomplete']);\nconst FORMATS = new Map<string, [RegExp, string, number]>([\n ['email', [EMAIL, TYPE_MESSAGES.email, MAX_EMAIL_LENGTH]],\n ['date', [DATE_ONLY, TYPE_MESSAGES.date, MAX_STRING_LENGTH]],\n ['datetime', [DATE_TIME, TYPE_MESSAGES.datetime, MAX_STRING_LENGTH]],\n]);\n\nexport function normalizeValue(field: FormField, value: unknown): unknown {\n if (field.type !== 'number' || typeof value !== 'string' || !DECIMAL.test(value)) return value;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n}\n\nfunction isOption(field: FormField, value: unknown): boolean {\n return !field.options || field.options.some((option) => option.value === value);\n}\n\nfunction lengthError(field: FormField, value: string): string | null {\n const max = Math.min(MAX_STRING_LENGTH, field.validation?.maxLength ?? MAX_STRING_LENGTH);\n if (value.length <= max) return null;\n return field.validation?.maxLengthMessage ?? getDefaultMessage('maxLength', { max });\n}\n\nfunction multiselectError(field: FormField, value: unknown): string | null {\n if (!Array.isArray(value)) return TYPE_MESSAGES.options;\n if (value.length > (field.options?.length ?? MAX_ITEMS)) return TYPE_MESSAGES.option;\n const valid = value.every((item) => typeof item === 'string' && item.length <= MAX_STRING_LENGTH && isOption(field, item));\n return valid ? null : TYPE_MESSAGES.option;\n}\n\nfunction stringError(field: FormField, value: unknown, message: string): string | null {\n return typeof value === 'string' ? lengthError(field, value) : message;\n}\n\nfunction formatError(field: FormField, value: unknown, [format, message, max]: [RegExp, string, number]): string | null {\n if (typeof value !== 'string') return message;\n return lengthError(field, value) ?? (value.length <= max && format.test(value) ? null : message);\n}\n\nfunction primitiveError(field: FormField, value: unknown): string | null {\n if (typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) return null;\n return stringError(field, value, TYPE_MESSAGES.value);\n}\n\nfunction isBlank(field: FormField, value: unknown): boolean {\n return value == null || value === '' || (field.type === 'multiselect' && Array.isArray(value) && !value.length);\n}\n\nexport function typeError(field: FormField, value: unknown): string | null {\n if (isBlank(field, value)) return null;\n if (BOOLEAN_TYPES.includes(field.type)) return typeof value === 'boolean' ? null : TYPE_MESSAGES.boolean;\n if (field.type === 'number') return typeof value === 'number' && Number.isFinite(value) ? null : TYPE_MESSAGES.number;\n if (field.type === 'multiselect') return multiselectError(field, value);\n if (field.type === 'file') return stringError(field, value, TYPE_MESSAGES.file);\n const format = FORMATS.get(field.type);\n if (format) return formatError(field, value, format);\n if (field.type === 'select' || field.type === 'radio') return stringError(field, value, TYPE_MESSAGES.option) ?? (isOption(field, value) ? null : TYPE_MESSAGES.option);\n return TEXT_TYPES.has(field.type) ? stringError(field, value, TYPE_MESSAGES.string) : primitiveError(field, value);\n}\n\nexport function clientTypeError(field: FormField, value: unknown): string | null {\n if (field.type === 'file' || !BUILT_IN_TYPES.includes(field.type)) return null;\n return typeError(field.optionsFrom ? { ...field, options: undefined } : field, value);\n}\n","import type { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { getDefaultMessage } from './default-messages';\nimport { BOOLEAN_TYPES, clientTypeError } from './type-checks';\n\nexport type ValidatorFn = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n\n\nfunction isEmpty(value: unknown, field: FormField): boolean {\n return isBlank(value) || (value === false && BOOLEAN_TYPES.includes(field.type));\n}\n\nfunction boundError(\n size: number,\n rule: 'Length' | '',\n rules: FieldValidation,\n unit?: string,\n): string | undefined {\n const min = rules[`min${rule}`];\n const max = rules[`max${rule}`];\n if (min !== undefined && size < min) return rules[`min${rule}Message`] ?? getDefaultMessage(`min${rule}`, { min, unit });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? getDefaultMessage(`max${rule}`, { max, unit });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? getDefaultMessage('pattern');\n } catch {\n return undefined;\n }\n}\n\nexport function validateFieldValue(\n field: FormField,\n value: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): string | null {\n const rules = field.validation ?? {};\n const matchMessage = rules.matchFieldMessage ?? getDefaultMessage('matchField');\n if (isEmpty(value, field)) {\n if (rules.required) return typeof rules.required === 'string' ? rules.required : getDefaultMessage('required');\n return rules.matchField !== undefined && !isBlank(allValues[rules.matchField]) ? matchMessage : null;\n }\n const typeIssue = clientTypeError(field, value);\n if (typeIssue) return typeIssue;\n const sizeError = typeof value === 'string' || Array.isArray(value)\n ? boundError(value.length, 'Length', rules, Array.isArray(value) ? 'items' : undefined)\n : typeof value === 'number' ? boundError(value, '', rules) : undefined;\n const matchError = rules.matchField !== undefined && value !== allValues[rules.matchField] ? matchMessage : undefined;\n return (sizeError\n ?? patternError(value, rules)\n ?? matchError\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { type ValidatorFn, validateFieldValue } from './validate-field';\n\nexport function validateStep(\n step: FormStep,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n return validateFields(step.fields, values, validators);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n\n for (const field of fields) {\n if (!isVisible(field, values)) continue;\n\n const error = validateFieldValue(field, values[field.key], values, validators);\n if (error) {\n errors[field.key] = error;\n }\n }\n\n return errors;\n}\n","import type { FormDefinition, FormField } from '../types';\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : definition.fields ?? [];\n}\n\nexport function createValues(\n fields: FormField[],\n initialValues?: Record<string, unknown>,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (field.defaultValue !== undefined) values[field.key] = field.defaultValue;\n }\n return Object.assign(values, initialValues);\n}\n\nexport function getChangedKeys(\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n): Set<string> {\n const keys = new Set([...Object.keys(previous), ...Object.keys(next)]);\n return new Set([...keys].filter((key) => !Object.is(previous[key], next[key])));\n}\n","import type { EngineInternals } from './runtime-internals';\n\nfunction activePath(engine: EngineInternals): string {\n return engine.visibleSteps.map((step) => step.id).join('\\n');\n}\n\nexport function watchCheckedInputs(engine: EngineInternals, checked: Record<string, unknown>): () => boolean {\n const path = activePath(engine);\n return () => activePath(engine) !== path || Object.keys(checked).some(\n (key) => checked[key] !== undefined && !Object.is(engine.values[key], checked[key]),\n );\n}\n","import { validateFieldValue, validateFields, validateStep } from '../validation';\nimport { createValues, getChangedKeys } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\n\nexport function applyValidationErrors(engine: EngineInternals, errors: Record<string, string>, navigate = false): void {\n const previousErrors = engine.errors;\n engine.state.errors = {};\n engine.state.topLevelErrors = [];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.activeField(key, engine.values)) engine.errors[key] = message;\n else engine.topLevelErrors.push(message);\n }\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nfunction moveToFirstError(engine: EngineInternals, errors: Record<string, string>): boolean {\n const firstErrorKey = Object.keys(errors).find((key) => engine.errors[key] !== undefined);\n const targetIndex = firstErrorKey && engine.isMultiStep\n ? engine.visibility.findStepIndex(firstErrorKey, engine.values, engine.currentStepIndex)\n : null;\n if (targetIndex === null || targetIndex === engine.currentStepIndex) return false;\n engine.state.currentStepIndex = targetIndex;\n return true;\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string): string[] {\n const cleared: string[] = [];\n for (const field of engine.visibility.allFields) {\n if (field.validation?.matchField !== key || engine.errors[field.key] === undefined) continue;\n if (validateFieldValue(field, engine.values[field.key], getValidationValues(engine), engine.validators)) continue;\n delete engine.errors[field.key];\n cleared.push(field.key);\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => step.fields.map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(key));\n for (const key of pruned) delete engine.errors[key];\n return pruned;\n}\n\nexport function getValidationValues(engine: EngineInternals): Record<string, unknown> {\n return getSubmitValues(engine);\n}\n\nfunction withoutSkipped(engine: EngineInternals, values: Record<string, unknown>): Record<string, unknown> {\n for (const key of [...engine.skipped.values()].flat()) delete values[key];\n return values;\n}\n\nexport function validateForm(engine: EngineInternals, navigate = false): Record<string, string> {\n const previousErrors = engine.errors;\n const errors: Record<string, string> = {};\n if (engine.isMultiStep) {\n for (const step of engine.visibleSteps) {\n if (engine.skipped.has(step.id)) continue;\n Object.assign(errors, validateStep(step, getValidationValues(engine), engine.validators));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], getValidationValues(engine), engine.validators),\n );\n }\n engine.state.errors = errors;\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, errors), structureChanged });\n return errors;\n}\n\nexport function validateOne(engine: EngineInternals, key: string): string | null {\n const field = engine.visibility.activeField(key, engine.values);\n if (!field) return null;\n const previousError = engine.errors[key];\n const error = validateFieldValue(field, engine.values[key], getValidationValues(engine), engine.validators);\n if (error) engine.errors[key] = error;\n else delete engine.errors[key];\n const fieldKeys = Object.is(previousError, engine.errors[key]) ? [] : [key];\n engine.notify({ fieldKeys });\n return error;\n}\n\nexport function getSubmitValues(engine: EngineInternals): Record<string, unknown> {\n return withoutSkipped(engine, { ...engine.visibility.conditionValues(engine.values) });\n}\n\nexport function resetEngine(engine: EngineInternals, values?: Record<string, unknown>): void {\n const previousValues = engine.values;\n const previousErrors = engine.errors;\n const loadingFields = Object.keys(engine.fieldLoading);\n engine.validationEpoch++;\n engine.operationEpoch++;\n engine.state.submitting = false;\n engine.state.values = createValues(engine.visibility.allFields, values);\n engine.state.errors = {};\n engine.state.topLevelErrors = [];\n engine.state.fieldLoading = {};\n engine.state.stepValidating = false;\n engine.state.currentStepIndex = 0;\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([\n ...changedValues,\n ...getChangedKeys(previousErrors, engine.errors),\n ...loadingFields,\n ]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormDefinition, FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n const steps = definition.steps ?? [];\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n const result: FormStep[] = [];\n const available: Record<string, unknown> = {};\n for (let index = 0; index < steps.length;) {\n const step = steps[index];\n if (!isVisible(step, available)) { index++; continue; }\n result.push(step);\n Object.assign(available, stepValues(step, values, available));\n const route = step.routes?.find((route) => (\n isVisible(route, available) && (route.to === null || ((indexes.get(route.to) ?? -1) > index\n && isVisible(steps[indexes.get(route.to)!], available)))\n ));\n if (route?.to === null) break;\n index = route ? indexes.get(route.to)! : index + 1;\n }\n return result;\n}\n\nexport function reconcileStepIndex(previous: FormStep[], next: FormStep[], index: number): number {\n const previousStep = previous[index] ?? previous[previous.length - 1];\n const preserved = next.findIndex((step) => step.id === previousStep?.id);\n if (preserved !== -1) return preserved;\n const nextIds = new Map(next.map((step, index) => [step.id, index]));\n for (let before = Math.min(index - 1, previous.length - 1); before >= 0; before--) {\n const predecessor = nextIds.get(previous[before].id);\n if (predecessor !== undefined) return predecessor;\n }\n return 0;\n}\n\nfunction stepValues(step: { fields: FormField[] }, values: Record<string, unknown>, previous: Record<string, unknown>) {\n const candidates = { ...previous };\n for (const field of step.fields) candidates[field.key] = values[field.key];\n const result: Record<string, unknown> = {};\n for (const field of step.fields) {\n if (isVisible(field, candidates) && values[field.key] !== undefined) result[field.key] = values[field.key];\n }\n return result;\n}\n\nexport function createActivePath(definition: FormDefinition) {\n let source: Record<string, unknown> | null = null;\n let steps: FormStep[] = [];\n let active: Record<string, unknown> = {};\n const refresh = (values: Record<string, unknown>) => {\n if (source === values) return;\n source = values;\n steps = activeSteps(definition, values);\n const result: Record<string, unknown> = {};\n const groups = definition.steps?.length ? steps : [{ fields: definition.fields ?? [] }];\n for (const step of groups) Object.assign(result, stepValues(step, values, result));\n active = result;\n };\n return {\n invalidate(): void { source = null; },\n steps(values: Record<string, unknown>): FormStep[] { refresh(values); return steps; },\n values(values: Record<string, unknown>): Record<string, unknown> { refresh(values); return active; },\n };\n}\n","import type { FormStep } from '../types';\nimport { createValues } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { activeSteps } from './step-routes';\nimport { pruneOffPathErrors } from './validation-state';\n\nfunction resetValues(engine: EngineInternals): Record<string, unknown> {\n const fields = engine.currentStep?.fields ?? [];\n const values = { ...engine.values };\n for (const { key } of fields) delete values[key];\n return Object.assign(values, createValues(fields));\n}\n\nexport function skipTarget(engine: EngineInternals): FormStep | undefined {\n return activeSteps(engine.definition, resetValues(engine))[engine.currentStepIndex + 1];\n}\n\nexport function skipCurrentStep(engine: EngineInternals): string[] {\n const step = engine.currentStep!;\n const fieldKeys = step.fields.map(({ key }) => key);\n engine.state.values = resetValues(engine);\n for (const key of fieldKeys) delete engine.errors[key];\n engine.skipped.set(step.id, fieldKeys);\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n engine.visibility.markChanged(true, true);\n const pruned = pruneOffPathErrors(engine);\n engine.notify({ fieldKeys: [...fieldKeys, ...pruned], structureChanged: true, valuesChanged: true });\n return fieldKeys;\n}\n\nexport function includeCurrentStep(engine: EngineInternals): void {\n const step = engine.currentStep;\n if (step) engine.skipped.delete(step.id);\n}\n\nexport function skipStepAt(engine: EngineInternals, index: number): string[] {\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n return skipCurrentStep(engine);\n}\n","import { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport type { SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\nexport async function submitForm(engine: EngineInternals, submit: SubmitFn, keepSkipped = false): Promise<boolean> {\n if (engine.submitting || engine.stepValidating) return false;\n if (!keepSkipped) includeCurrentStep(engine);\n const lifecycle = { ...engine.lifecycle };\n let dispatched = false;\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n let values = getSubmitValues(engine);\n const inputsChanged = watchCheckedInputs(engine, values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch || inputsChanged();\n engine.state.submitting = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n const allowed = await lifecycle.onBeforeSubmit(values);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n values = getSubmitValues(engine);\n }\n dispatched = true;\n const skippedSteps = [...engine.skipped.keys()];\n await submit(values, [...skippedSteps]);\n if (operation !== engine.operationEpoch) return true;\n await afterCommit('afterSubmit', () => lifecycle.onAfterSubmit?.(values, skippedSteps));\n return true;\n } catch (error) {\n if (!dispatched && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.submitting = false;\n engine.notify();\n }\n }\n}\n","import { getChangedKeys } from './engine-utils';\nimport { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, getValidationValues } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { submitForm } from './submission';\nimport type { StepChangeContext, SubmitFn } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction hasStepErrors(engine: EngineInternals): boolean {\n const step = engine.currentStep;\n if (!step) return true;\n const errors = validateStep(step, getValidationValues(engine), engine.validators);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = { ...engine.errors };\n Object.assign(engine.errors, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors) });\n return true;\n}\n\nfunction moveTo(engine: EngineInternals, index: number): void {\n engine.validationEpoch++;\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n}\n\nexport async function skipStep(engine: EngineInternals, submit?: SubmitFn): Promise<boolean> {\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting || !engine.currentStep?.skip) return false;\n if (skipTarget(engine)) return changeStep(engine, 'next', 'skip');\n const step = engine.currentStep;\n if (!submit || !step) return false;\n const values = engine.values;\n const errors = { ...engine.errors };\n let committed = false;\n const fieldKeys = skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchCheckedInputs(engine, { ...skippedValues });\n try {\n return await submitForm(engine, async (submitted, skipped) => {\n await submit(submitted, skipped);\n committed = true;\n }, true);\n } finally {\n if (!committed && engine.values === skippedValues && !edited()) {\n engine.state.values = values;\n engine.state.errors = { ...errors, ...engine.errors };\n engine.skipped.delete(step.id);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n }\n }\n}\n\nexport async function changeStep(engine: EngineInternals, direction: 'next' | 'back', reason: StepChangeContext['reason'] = direction): Promise<boolean> {\n const skipping = reason === 'skip';\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (!skipping && (direction === 'next' ? engine.isLastStep : engine.isFirstStep)) return false;\n const step = engine.currentStep!;\n const validating = direction === 'next' && !skipping;\n if (validating) includeCurrentStep(engine);\n if (validating && hasStepErrors(engine)) return false;\n const lifecycle = { ...engine.lifecycle };\n const validate = engine.onStepValidate;\n let committed = false;\n const fromIndex = engine.currentStepIndex;\n const toIndex = fromIndex + (direction === 'next' ? 1 : -1);\n const target = skipping ? skipTarget(engine) : engine.visibleSteps[toIndex];\n if (!target) return false;\n const context: StepChangeContext = { fromStepId: step.id, toStepId: target.id, reason, values: { ...getValidationValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch\n || engine.currentStep?.id !== step.id || inputsChanged();\n engine.state.stepValidating = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (validating && validate) {\n const result = await validate!(step.id, context.values);\n if (stale()) return false;\n if (result && Object.keys(result).length > 0) {\n applyValidationErrors(engine, result);\n return false;\n }\n }\n if (lifecycle.onBeforeStepChange) {\n const allowed = await lifecycle.onBeforeStepChange(context);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (validating && hasStepErrors(engine)) return false;\n committed = true;\n if (skipping) skipCurrentStep(engine);\n moveTo(engine, toIndex);\n await afterCommit('afterStepChange', () => lifecycle.onAfterStepChange?.(context));\n return true;\n } catch (error) {\n if (!committed && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.stepValidating = false;\n engine.notify();\n }\n }\n}\n\nexport function goToStepWithField(engine: EngineInternals, fieldKey: string): void {\n if (!engine.isMultiStep) return;\n const targetIndex = engine.visibility.findStepIndex(\n fieldKey,\n engine.values,\n engine.currentStepIndex,\n );\n if (targetIndex === engine.currentStepIndex) engine.notify();\n else if (targetIndex !== null) moveTo(engine, targetIndex);\n}\n"]}
|