@gaddario98/react-core 2.1.8 → 2.1.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../form/config.ts","../../form/containers.tsx","../../form/hooks/useJotaiForm.ts","../../form/FormField.tsx","../../form/atoms/formAtom.ts","../../form/hooks/useFormValues.ts","../../form/hooks/useFormManager.tsx","../../form/FormManager.tsx"],"sourcesContent":["import { atomStateGenerator } from \"@gaddario98/react-state\";\nimport type { PropsWithChildren } from \"react\";\nimport { ViewSettingsContainerProps } from \"./types\";\n\nexport interface FormNotificationMessage {\n message: string;\n type: \"success\" | \"error\" | \"info\" | \"warning\";\n autoHideDuration?: number;\n textTransOption?: Record<string, unknown>;\n ns?: string;\n id?: string;\n}\nexport interface FormTranslationOptions {\n [key: string]: string | number | boolean | undefined;\n ns?: string;\n}\nexport interface FormConfigProps {\n container?: React.ComponentType<ViewSettingsContainerProps>;\n submitContainer?: React.ComponentType<ViewSettingsContainerProps>;\n bodyContainer?: React.ComponentType<ViewSettingsContainerProps>;\n formFieldContainer: React.FC<PropsWithChildren>;\n showNotification?: (notification: FormNotificationMessage) => void;\n translateText?: (key: string, options?: FormTranslationOptions) => string;\n}\n\nconst DefaultContainer = ({ children }: PropsWithChildren) => {\n return children;\n};\n// Lazy initialization to avoid side effects at module load time\nconst _formConfig: FormConfigProps = {\n formFieldContainer: DefaultContainer,\n};\n\nexport const {\n atom: formConfigAtom,\n useValue: useFormConfigValue,\n useState: useFormConfigState,\n useReset: useFormConfigReset,\n} = atomStateGenerator<FormConfigProps>({\n key: \"formConfig\",\n defaultValue: _formConfig,\n persist: false,\n});\n","import { useCallback } from 'react'\nimport type { FieldValues, ViewSettingsContainerProps } from './types'\n\nexport interface DefaultFormContainerProps {\n children: React.ReactNode\n}\n\nconst createDefaultContainer = () => {\n return ({ children }: ViewSettingsContainerProps) => {\n return children\n }\n}\n\nlet DefaultContainer = createDefaultContainer()\n\nconst setDefaultFormContainer = (\n val: ({\n children,\n }: ViewSettingsContainerProps) => React.ReactNode,\n) => {\n DefaultContainer = val\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst DefaultFormContainer = <_T extends FieldValues = FieldValues>({\n children,\n}: ViewSettingsContainerProps) => {\n const handleSubmit = useCallback((e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const form = e.currentTarget\n const submitButton = form.querySelector('button[type=\"submit\"]') as\n | HTMLButtonElement\n | undefined\n submitButton?.click()\n }, [])\n\n return (\n <form onSubmit={handleSubmit} className=\"gap-3 flex flex-col\">\n {children}\n </form>\n )\n}\n\nexport { DefaultContainer, setDefaultFormContainer, DefaultFormContainer }\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useForm } from '@tanstack/react-form'\nimport type {FormOptions} from '@tanstack/react-form';\nimport type { FieldValues } from '../types'\n\nexport interface UseCustomFormOptions<TData extends FieldValues>\n extends FormOptions<\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n > {\n formId?: string\n}\n\nexport function useJotaiForm<TData extends FieldValues>(formOptions: UseCustomFormOptions<TData>) {\n const form = useForm<\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >(formOptions)\n\n return form\n}\n","/* eslint-disable react-hooks/refs */\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useFormConfigValue } from './config'\nimport type { FieldValues, FormFieldProps } from './types'\n\nexport const FormField = <T extends FieldValues>({\n config,\n onFieldChange,\n ns: globalNs,\n globalErrorNs,\n}: FormFieldProps<T>) => {\n const ns = config.ns ?? globalNs\n const errorNs = config.errorNs ?? globalErrorNs\n const { formFieldContainer, translateText } = useFormConfigValue()\n\n // TanStack Form uses field.state.meta.errors which is an array of ValidationError\n const firstError =\n config.field.state.meta.errors.length > 0\n ? config.field.state.meta.errors[0]\n : undefined\n const errorMessageStr = firstError ? String(firstError) : undefined\n\n const errorMessage = useMemo(() => {\n if (!errorMessageStr) return undefined\n return errorNs\n ? translateText?.(errorMessageStr, {\n ns: errorNs || '',\n defaultValue: '',\n })\n : errorMessageStr\n }, [errorMessageStr, errorNs, translateText])\n\n const label = useMemo(\n () => (ns ? translateText?.(config.label ?? '') : config.label),\n [ns, config.label, translateText],\n )\n\n const helperMessage = useMemo(\n () =>\n config.helper?.text\n ? translateText?.(config.helper.text, config.helper.translationOption)\n : '',\n [config.helper, translateText],\n )\n\n const ref = useRef({ onFieldChange, handleChange: config.field.handleChange })\n\n useEffect(() => {\n ref.current = {\n onFieldChange,\n handleChange: config.field.handleChange,\n }\n }, [config.field.handleChange, onFieldChange])\n\n const handleChange = useCallback((value: T) => {\n // TanStack Form handleChange usually expects just the value for input\n // but if we are manually calling it we should pass the value.\n ref.current.handleChange(value)\n ref.current.onFieldChange?.(value)\n }, [])\n\n const handleBlur = useCallback(() => {\n config.field.handleBlur()\n }, [config.field])\n\n const baseProps = useMemo(\n () => ({\n value: config.field.state.value,\n onChange: handleChange,\n onBlur: handleBlur,\n error: config.field.state.meta.errors.length > 0,\n errorMessage,\n label,\n helperMessage,\n }),\n [\n config.field.state.value,\n handleChange,\n handleBlur,\n config.field.state.meta.errors.length,\n errorMessage,\n label,\n helperMessage,\n ],\n )\n\n const ConfigContainer = useMemo(() => config.container, [config.container])\n const FormFieldContainer = useMemo(\n () => formFieldContainer,\n [formFieldContainer],\n )\n\n if (ConfigContainer) {\n return (\n <ConfigContainer>\n {config.component(baseProps)}\n </ConfigContainer>\n )\n }\n return (\n <FormFieldContainer>\n {config.component(baseProps)}\n </FormFieldContainer>\n )\n}\n","import { atom, useAtom, useAtomValue, useSetAtom } from 'jotai'\nimport { selectAtom } from 'jotai/utils'\nimport { useCallback, useMemo } from 'react'\nimport type { FieldValues, SetValueFunction } from '../types'\n\nexport interface FormStoreEntry<F extends FieldValues = FieldValues> {\n formValues: F\n setValue: SetValueFunction<F>\n}\n\nexport const DEFAULT_FORM_ENTRY: FormStoreEntry<FieldValues> = Object.freeze({\n formValues: {} as FieldValues,\n setValue: () => {},\n})\n\n/**\n * Global atom storing all form state.\n * Key format: \"scopeId:formId\" or just \"formId\" for backward compatibility.\n */\nexport const formAtom = atom<Record<string, FormStoreEntry>>({})\n\n/**\n * Helper to generate composite keys for forms.\n */\nexport const getFormCompositeKey = (scopeId: string, key: string): string =>\n `${scopeId}:${key}`\n\n/**\n * Creates a derived atom for accessing forms of a specific scope.\n */\nexport const createScopeFormsAtom = (scopeId: string) =>\n atom(\n (get) => {\n const allForms = get(formAtom)\n const prefix = `${scopeId}:`\n const scopeForms: Record<string, FormStoreEntry> = {}\n\n for (const [key, value] of Object.entries(allForms)) {\n if (key.startsWith(prefix)) {\n scopeForms[key.slice(prefix.length)] = value\n }\n }\n\n return scopeForms\n },\n (get, set, update: Record<string, FormStoreEntry>) => {\n const allForms = get(formAtom)\n const prefix = `${scopeId}:`\n const newForms = { ...allForms }\n\n // Remove old scope entries\n for (const key of Object.keys(newForms)) {\n if (key.startsWith(prefix)) {\n delete newForms[key]\n }\n }\n\n // Add new scope entries\n for (const [key, value] of Object.entries(update)) {\n newForms[`${prefix}${key}`] = value\n }\n\n set(formAtom, newForms)\n },\n )\n\nexport const createFormSelector = <F extends FieldValues = FieldValues>(\n formId: string,\n) =>\n selectAtom(\n formAtom,\n (forms) => {\n const entry = forms[formId] as FormStoreEntry<F> | undefined\n return entry ?? (DEFAULT_FORM_ENTRY as unknown as FormStoreEntry<F>)\n },\n (a, b) =>\n a === b || (a.formValues === b.formValues && a.setValue === b.setValue),\n )\n\nexport const useFormValue = <F extends FieldValues>(formId: string) => {\n const selectorAtom = useMemo(() => createFormSelector<F>(formId), [formId])\n return useAtomValue(selectorAtom)\n}\n\nexport const useFormState = <F extends FieldValues>() => {\n return useAtom(formAtom) as unknown as [\n Record<string, FormStoreEntry<F>>,\n (value: Record<string, FormStoreEntry<F>>) => void,\n ]\n}\n\nexport const useSetFormState = <F extends FieldValues>(formId: string) => {\n const setForms = useSetAtom(formAtom)\n\n return useCallback(\n (val: Partial<FormStoreEntry<F>>) => {\n setForms((prev) => {\n const prevEntry =\n (prev[formId] as FormStoreEntry<FieldValues> | undefined) ??\n DEFAULT_FORM_ENTRY\n\n return {\n ...prev,\n [formId]: {\n ...(prevEntry as unknown as FormStoreEntry<F>),\n ...(val as unknown as Partial<FormStoreEntry<FieldValues>>),\n } as unknown as FormStoreEntry<FieldValues>,\n }\n })\n },\n [formId, setForms],\n )\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport equal from 'fast-deep-equal'\nimport { useFormValue } from '../atoms'\nimport type {\n FieldValues,\n FormFunctionProps,\n GetFormValuesFunction,\n} from '../types'\nimport type { DeepKeys, DeepValue } from '@tanstack/react-form'\n\nconst getValueAtPath = (\n obj: unknown,\n path: string,\n defaultObj?: unknown,\n): unknown => {\n if (!path) return undefined\n const normalized = path.replace(/\\[(\\d+)\\]/g, '.$1')\n const parts = normalized.split('.').filter(Boolean)\n let current: unknown = obj\n for (const part of parts) {\n if (!current || !Object.keys(current).length) {\n if (!defaultObj) return undefined\n current = { [part]: defaultObj }\n }\n if (typeof current !== 'object') return undefined\n current = (current as Record<string, unknown>)[part]\n }\n\n return current\n}\n\nexport interface UseFormValuesProps {\n formId: string\n scopeId?: string\n}\n\nexport const useFormValues = <F extends FieldValues>({\n formId,\n}: UseFormValuesProps): FormFunctionProps<F> => {\n // We subscribe to the specific form entry in the atoms\n // Note: This subscription is a bit coarse (entire form entry), but we optimize re-renders locally\n // Ideally we would want to subscribe only to specific paths, but Jotai atoms are per-form.\n const formEntry = useFormValue(formId)\n const currentValues = useMemo(\n () => formEntry.formValues,\n [formEntry.formValues],\n )\n\n const subscriptions = useRef(new Map<string, unknown>())\n // trigger state is used to force re-render when a subscribed value changes\n const [trigger, setTrigger] = useState(0)\n\n // Ref to hold the latest values without causing re-renders itself\n const formRef = useRef({\n formValues: formEntry.formValues,\n setValue: formEntry.setValue,\n })\n\n useEffect(() => {\n formRef.current.setValue = formEntry.setValue\n }, [formEntry.setValue])\n\n useEffect(() => {\n let shouldTrigger = false\n subscriptions.current.forEach((_, path) => {\n const newValue = getValueAtPath(currentValues, path)\n const oldValue = getValueAtPath(formRef.current.formValues, path)\n if (!equal(newValue, oldValue)) {\n shouldTrigger = true\n }\n })\n\n formRef.current.formValues = currentValues\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (shouldTrigger) {\n setTrigger((c) => c + 1)\n }\n }, [currentValues])\n\n const get = useCallback(\n (key: string, defaultValue?: unknown) => {\n const val =\n getValueAtPath(formRef.current.formValues, key) ?? defaultValue\n subscriptions.current.set(key, val)\n return subscriptions.current.get(key)\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [trigger],\n ) as GetFormValuesFunction<F>\n\n const set = useCallback(\n <TField extends DeepKeys<F>>(\n field: TField,\n value: DeepValue<F, TField>,\n ) => {\n formRef.current.setValue(field, value)\n },\n [],\n )\n\n return { get, set }\n}\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { FormField } from \"../FormField\";\nimport { useSetFormState } from \"../atoms\";\nimport { useFormConfigValue } from \"../config\";\nimport { useFormValues } from \"./useFormValues\";\nimport { useJotaiForm } from \"./useJotaiForm\";\nimport type { FormNotificationMessage } from \"../config\";\nimport {\n useStore,\n type DeepKeys,\n type DeepValue,\n type Updater,\n} from \"@tanstack/react-form\";\nimport type {\n FieldValues,\n FormFieldConfig,\n FormManagerConfig,\n FormManagerProps,\n GenericFieldApi,\n GenericFieldState,\n GenericFormApi,\n SetValueFunction,\n Submit,\n SubmitKeysArg,\n SubmitPayload,\n UseFormManagerProps,\n} from \"../types\";\nimport type { JSX } from \"react\";\n\nexport interface FormElements {\n index: number;\n element: JSX.Element;\n renderInFooter: boolean;\n renderInHeader: boolean;\n isSubmit?: boolean;\n}\n\ntype PayloadOf<\n F extends FieldValues,\n S extends Submit<F, SubmitKeysArg<F>>,\n> = SubmitPayload<F, S extends Submit<F, infer K> ? K : undefined>;\n\nconst trimObject = <T extends object>(obj?: T): T =>\n Object.entries(obj ?? {}).reduce(\n (prev, [key, val]) => ({\n ...prev,\n [key]:\n typeof val === \"string\" && ![\"password\", \"pPassword\"].includes(key)\n ? val.trim()\n : val,\n }),\n {} as T,\n );\nconst RenderField = <F extends FieldValues = FieldValues>({\n field,\n fieldState,\n fieldProps,\n onFieldChange,\n}: {\n field: GenericFieldApi<F>;\n fieldState: GenericFieldState<F>;\n fieldProps: FormManagerConfig<F>;\n onFieldChange?: (value: F) => void;\n}) => {\n const config: FormFieldConfig<F> = useMemo(\n () => ({\n ...fieldProps,\n field,\n fieldState,\n }),\n [fieldProps, field, fieldState],\n );\n return (\n <FormField<F>\n config={config}\n ns={fieldProps.ns}\n globalErrorNs={fieldProps.errorNs}\n onFieldChange={onFieldChange}\n />\n );\n};\n\nconst DynamicFieldItem = <F extends FieldValues>({\n item,\n form,\n globalErrorNs,\n formId,\n}: {\n item: FormManagerProps<F>[\"data\"][number];\n form: GenericFormApi<F>;\n globalErrorNs?: string;\n formId: string;\n}) => {\n const { get, set } = useFormValues<F>({ formId });\n\n const fieldProps = useMemo(() => {\n if (typeof item === \"function\") {\n return item({ get, set });\n } else {\n return item;\n }\n }, [get, set, item]);\n\n const isHidden = useMemo(() => {\n if (!fieldProps.hidden) {\n return false;\n } else if (typeof fieldProps.hidden === \"function\") {\n return fieldProps.hidden({ get, set });\n } else {\n return !!fieldProps.hidden;\n }\n }, [get, set, fieldProps]);\n\n const rules = useMemo(() => {\n if (!fieldProps.rules) {\n return undefined;\n } else if (typeof fieldProps.rules === \"function\") {\n return fieldProps.rules({ get, set });\n } else {\n return fieldProps.rules;\n }\n }, [get, set, fieldProps]);\n\n const props = useMemo(() => {\n return {\n ...fieldProps,\n errorNs: fieldProps.errorNs ?? globalErrorNs,\n };\n }, [fieldProps, globalErrorNs]);\n\n if (isHidden) {\n return <></>;\n }\n\n return (\n <form.Field\n name={props.name}\n validators={rules}\n // eslint-disable-next-line react/no-children-prop\n children={(field) => (\n <RenderField<F>\n field={field}\n fieldState={field.state}\n fieldProps={props}\n onFieldChange={props.onFieldChange}\n />\n )}\n />\n );\n};\n\nconst SubmitItem = <F extends FieldValues>({\n item,\n index,\n handlersRef,\n}: {\n item: Submit<F>;\n index: number;\n handlersRef: React.MutableRefObject<{\n formControl: GenericFormApi<F>;\n onInvalidHandle: (err: unknown, submitConfig: Submit<F>) => void;\n createSubmitHandler: (\n submitConfig: Submit<F>,\n ) => (data: F) => Promise<unknown>;\n values: F;\n errors: unknown;\n }>;\n}) => {\n const handleClick = useCallback(async () => {\n const { formControl, createSubmitHandler, onInvalidHandle } =\n handlersRef.current;\n\n // Partial or full validation logic\n let isValid = true;\n\n const keys = item.values as ReadonlyArray<string> | undefined;\n if (keys && keys.length > 0) {\n // Validate only specific fields\n await Promise.all(\n keys.map((key) => formControl.validateField(key, \"change\")),\n );\n const hasError = keys.some((key) => {\n // This is a simplified check. TanStack form errors might be structured differently.\n // You might need deep checking if errors are nested objects.\n // For now assume flat or use lodash get if possible, but state.errors is usually flat-ish map in newer versions or object.\n // Checking standard TanStack: form.state.fieldMeta[key]?.errors\n const meta = formControl.getFieldMeta(key);\n return meta?.errors && meta.errors.length > 0;\n });\n isValid = !hasError;\n } else {\n // Validate all\n await formControl.validateAllFields(\"submit\");\n isValid = formControl.state.isValid;\n }\n\n if (!isValid) {\n onInvalidHandle(handlersRef.current.errors, item);\n return;\n }\n\n const values = handlersRef.current.values;\n // Call handlers\n await createSubmitHandler(item)(values);\n }, [item, handlersRef]);\n\n const Component = useMemo(() => item.component, [item]);\n if (item.hidden || !Component) return <></>;\n\n return (\n <Component\n onClick={handleClick}\n index={index}\n key={`submit-${index}`}\n type={item.type || \"button\"}\n />\n );\n};\n\nexport const useFormManager = <F extends FieldValues = FieldValues>({\n data,\n onInvalid,\n submit = [],\n notification,\n formOptions,\n onValuesChange,\n globalErrorNs,\n id = \"form-manager\",\n}: UseFormManagerProps<F>) => {\n const formControl = useJotaiForm<F>(formOptions);\n const errors = useStore(formControl.store, (state) => state.errors);\n const values = useStore(formControl.store, (state) => state.values);\n const setFormState = useSetFormState<F>(id);\n const { showNotification } = useFormConfigValue();\n\n const setValue = useCallback(\n <TField extends DeepKeys<F>>(\n field: TField,\n updater: Updater<DeepValue<F, TField>>,\n ) => formControl.setFieldValue(field, updater),\n [formControl],\n ) as SetValueFunction<F>;\n\n useEffect(() => {\n setFormState({\n setValue,\n formValues: values,\n });\n }, [setFormState, setValue, values]);\n\n const handleNotification = useCallback(\n (props: FormNotificationMessage) => {\n if (props.message) {\n showNotification?.(props);\n }\n },\n [showNotification],\n );\n\n const filterFormData = useCallback(\n <S extends Submit<F, SubmitKeysArg<F>>>(\n v: F,\n submitConfig: S,\n ): PayloadOf<F, S> => {\n const keys = submitConfig.values as ReadonlyArray<keyof F> | undefined;\n if (!keys || keys.length === 0) {\n return v as PayloadOf<F, S>;\n }\n\n const out = {} as Record<keyof F, F[keyof F]>;\n for (const key of keys) {\n if (key in v) {\n out[key] = v[key];\n }\n }\n return out as PayloadOf<F, S>;\n },\n [],\n );\n\n const processSubmit = useCallback(\n async <S extends Submit<F, SubmitKeysArg<F>>>(d: F, submitConfig: S) => {\n const filteredData = filterFormData(d, submitConfig);\n if (submitConfig.onSuccess) {\n return await submitConfig.onSuccess(filteredData);\n }\n throw new Error(\"No submit handler provided\");\n },\n [filterFormData],\n );\n\n const handleError = useCallback(\n <S extends Submit<F, SubmitKeysArg<F>>>(\n error: unknown,\n submitConfig: S,\n ) => {\n if (submitConfig.onError) {\n submitConfig.onError(error as Error);\n }\n const notificationProps =\n typeof notification?.error === \"function\"\n ? notification.error((error as Error).message)\n : notification?.error;\n if (notificationProps?.message) {\n handleNotification(notificationProps);\n }\n },\n [handleNotification, notification],\n );\n\n const createSubmitHandler = useCallback(\n <S extends Submit<F, SubmitKeysArg<F>>>(submitConfig: S) =>\n async (dataSubmit: F) => {\n try {\n const res = await processSubmit(\n trimObject<F>(dataSubmit),\n submitConfig,\n );\n const notificationProps =\n typeof notification?.success === \"function\"\n ? notification.success(res)\n : notification?.success;\n if (notificationProps?.message) {\n handleNotification(notificationProps);\n }\n return res;\n } catch (error) {\n handleError(error, submitConfig);\n throw error;\n }\n },\n [processSubmit, notification, handleNotification, handleError],\n );\n\n const onInvalidHandle = useCallback(\n (err: unknown, submitConfig: Submit<F>) => {\n onInvalid?.(err);\n handleError(new Error(\"invalidData\"), submitConfig);\n },\n [handleError, onInvalid],\n );\n\n const handlersRef = useRef({\n formControl,\n onInvalidHandle,\n createSubmitHandler,\n setValue: formControl.setFieldValue,\n trigger: formControl.validateField,\n onValuesChange,\n values,\n errors,\n });\n\n useEffect(() => {\n handlersRef.current.onInvalidHandle = onInvalidHandle;\n handlersRef.current.createSubmitHandler = createSubmitHandler;\n handlersRef.current.setValue = formControl.setFieldValue;\n handlersRef.current.trigger = formControl.validateField;\n handlersRef.current.onValuesChange = onValuesChange;\n }, [onInvalidHandle, createSubmitHandler, formControl, onValuesChange]);\n\n useEffect(() => {\n handlersRef.current.values = values;\n handlersRef.current.errors = errors;\n }, [values, errors]);\n\n const fields = useMemo(\n () =>\n data.map((item, index): FormElements => {\n const staticItem = typeof item === \"function\" ? null : item;\n return {\n index: staticItem?.index ?? index,\n element: (\n <DynamicFieldItem<F>\n key={staticItem?.name ?? index}\n item={item}\n form={formControl}\n globalErrorNs={globalErrorNs}\n formId={id}\n />\n ),\n renderInFooter: !!staticItem?.renderInFooter,\n renderInHeader: !!staticItem?.renderInHeader,\n };\n }),\n [data, formControl, globalErrorNs, id],\n );\n\n const submits = useMemo(\n () =>\n submit.map((submitConfig, index): FormElements => {\n return {\n index: submitConfig.index === undefined ? index : submitConfig.index,\n element: (\n <SubmitItem<F>\n key={`submit-${index}`}\n item={submitConfig}\n index={index}\n handlersRef={handlersRef}\n />\n ),\n renderInFooter: !!submitConfig.renderInFooter,\n renderInHeader: !!submitConfig.renderInHeader,\n isSubmit: true,\n };\n }),\n [submit],\n );\n\n const elements = useMemo(\n (): Array<FormElements> => fields.concat(submits),\n [fields, submits],\n );\n\n const formContents = useMemo(() => [...data, ...submit], [data, submit]);\n\n useEffect(() => {\n handlersRef.current.onValuesChange?.(values, handlersRef.current.setValue);\n }, [values]);\n\n return {\n elements,\n formContents,\n errors,\n formValues: values,\n setValue,\n };\n};\n","import { useMemo } from \"react\";\nimport { useFormManager } from \"./hooks\";\nimport { DefaultContainer, DefaultFormContainer } from \"./containers\";\nimport type { FieldValues, FormManagerProps } from \"./types\";\nimport { useFormConfigValue } from \"./config\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const FormManager = <T extends Record<string, any> = FieldValues>({\n data,\n defaultValues,\n onInvalid,\n submit = [],\n ns,\n globalErrorNs,\n notification,\n formSettings,\n viewSettings,\n onValuesChange,\n id = \"form-manager\",\n}: FormManagerProps<T>) => {\n const { elements = [] } = useFormManager({\n data,\n globalErrorNs,\n notification,\n ns,\n onInvalid,\n submit,\n onValuesChange,\n id,\n formOptions: {\n defaultValues: defaultValues,\n ...formSettings,\n formId: id,\n },\n });\n\n // Render logic remains similar\n const render = useMemo(\n () =>\n elements\n .filter((el) => !el.isSubmit)\n .sort((a, b) => a.index - b.index)\n .map((el) => el.element),\n [elements],\n );\n const renderSubmit = useMemo(\n () =>\n elements\n .filter((el) => el.isSubmit)\n .sort((a, b) => a.index - b.index)\n .map((el) => el.element),\n [elements],\n );\n const { container, bodyContainer, submitContainer } = useFormConfigValue();\n\n const Container =\n viewSettings?.container || container || DefaultFormContainer<T>;\n const BodyContainer =\n viewSettings?.bodyContainer || bodyContainer || DefaultContainer;\n const SubmitContainer =\n viewSettings?.submitContainer || submitContainer || DefaultContainer;\n\n return (\n <Container {...(viewSettings?.containerProps || {})}>\n <BodyContainer {...(viewSettings?.bodyContainerProps || {})}>\n {render}\n </BodyContainer>\n <SubmitContainer {...(viewSettings?.submitContainerProps || {})}>\n {renderSubmit}\n </SubmitContainer>\n </Container>\n );\n};\n"],"names":["DefaultContainer","children","_formConfig","formFieldContainer","atom","formConfigAtom","useValue","useFormConfigValue","useState","useFormConfigState","useReset","useFormConfigReset","atomStateGenerator","key","defaultValue","persist","createDefaultContainer","setDefaultFormContainer","val","DefaultFormContainer","t0","$","_c","handleSubmit","_temp","t1","_jsx","onSubmit","className","e","preventDefault","form","currentTarget","submitButton","querySelector","click","useJotaiForm","formOptions","useForm","FormField","config","onFieldChange","ns","globalNs","globalErrorNs","_a","errorNs","_b","translateText","firstError","field","state","meta","errors","length","undefined","errorMessageStr","String","errorMessage","useMemo","label","helperMessage","helper","text","translationOption","ref","useRef","handleChange","useEffect","current","useCallback","value","call","handleBlur","baseProps","onChange","onBlur","error","ConfigContainer","container","FormFieldContainer","component","DEFAULT_FORM_ENTRY","Object","freeze","formValues","setValue","formAtom","getFormCompositeKey","scopeId","createScopeFormsAtom","get","allForms","prefix","scopeForms","entries","startsWith","slice","set","update","newForms","assign","keys","createFormSelector","formId","selectAtom","forms","entry","a","b","useFormValue","selectorAtom","useAtomValue","useFormState","useAtom","useSetFormState","setForms","useSetAtom","prev","prevEntry","getValueAtPath","obj","path","defaultObj","normalized","replace","parts","split","filter","Boolean","part","useFormValues","formEntry","currentValues","subscriptions","Map","trigger","setTrigger","formRef","shouldTrigger","forEach","_","newValue","oldValue","equal","c","trimObject","reduce","includes","trim","RenderField","fieldState","fieldProps","t2","DynamicFieldItem","item","isHidden","hidden","rules","props","Field","name","validators","SubmitItem","index","handlersRef","handleClick","formControl","createSubmitHandler","onInvalidHandle","isValid","values","Promise","all","map","validateField","hasError","some","getFieldMeta","validateAllFields","Component","onClick","type","useFormManager","data","onInvalid","submit","notification","onValuesChange","id","useStore","store","setFormState","showNotification","updater","setFieldValue","handleNotification","message","filterFormData","v","submitConfig","out","processSubmit","d","filteredData","onSuccess","Error","handleError","onError","notificationProps","dataSubmit","res","success","err","fields","staticItem","element","renderInFooter","renderInHeader","submits","isSubmit","elements","concat","formContents","FormManager","defaultValues","formSettings","viewSettings","t3","t4","t5","t6","t7","t8","sort","_temp2","_temp3","render","t9","_temp4","_temp5","_temp6","renderSubmit","bodyContainer","submitContainer","Container","BodyContainer","SubmitContainer","t10","_jsxs","containerProps","bodyContainerProps","submitContainerProps","el","el_0","el_1","a_0","b_0","el_2"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../form/config.ts","../../form/containers.tsx","../../form/hooks/useJotaiForm.ts","../../form/FormField.tsx","../../form/atoms/formAtom.ts","../../form/hooks/useFormValues.ts","../../form/hooks/useFormManager.tsx","../../form/FormManager.tsx"],"sourcesContent":["import { atomStateGenerator } from \"@gaddario98/react-state\";\nimport type { PropsWithChildren } from \"react\";\nimport { ViewSettingsContainerProps } from \"./types\";\n\nexport interface FormNotificationMessage {\n message: string;\n type: \"success\" | \"error\" | \"info\" | \"warning\";\n autoHideDuration?: number;\n textTransOption?: Record<string, unknown>;\n ns?: string;\n id?: string;\n}\nexport interface FormTranslationOptions {\n [key: string]: string | number | boolean | undefined;\n ns?: string;\n}\nexport interface FormConfigProps {\n container?: React.ComponentType<ViewSettingsContainerProps>;\n submitContainer?: React.ComponentType<ViewSettingsContainerProps>;\n bodyContainer?: React.ComponentType<ViewSettingsContainerProps>;\n formFieldContainer: React.FC<PropsWithChildren>;\n showNotification?: (notification: FormNotificationMessage) => void;\n translateText?: (key: string, options?: FormTranslationOptions) => string;\n}\n\nconst DefaultContainer = ({ children }: PropsWithChildren) => {\n return children;\n};\n// Lazy initialization to avoid side effects at module load time\nconst _formConfig: FormConfigProps = {\n formFieldContainer: DefaultContainer,\n};\n\nexport const {\n atom: formConfigAtom,\n useValue: useFormConfigValue,\n useState: useFormConfigState,\n useReset: useFormConfigReset,\n} = atomStateGenerator<FormConfigProps>({\n key: \"formConfig\",\n defaultValue: _formConfig,\n persist: false,\n});\n","import { useCallback } from 'react'\nimport type { FieldValues, ViewSettingsContainerProps } from './types'\n\nexport interface DefaultFormContainerProps {\n children: React.ReactNode\n}\n\nconst createDefaultContainer = () => {\n return ({ children }: ViewSettingsContainerProps) => {\n return children\n }\n}\n\nlet DefaultContainer = createDefaultContainer()\n\nconst setDefaultFormContainer = (\n val: ({\n children,\n }: ViewSettingsContainerProps) => React.ReactNode,\n) => {\n DefaultContainer = val\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst DefaultFormContainer = <_T extends FieldValues = FieldValues>({\n children,\n}: ViewSettingsContainerProps) => {\n const handleSubmit = useCallback((e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const form = e.currentTarget\n const submitButton = form.querySelector('button[type=\"submit\"]') as\n | HTMLButtonElement\n | undefined\n submitButton?.click()\n }, [])\n\n return (\n <form onSubmit={handleSubmit} className=\"gap-3 flex flex-col\">\n {children}\n </form>\n )\n}\n\nexport { DefaultContainer, setDefaultFormContainer, DefaultFormContainer }\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useForm } from '@tanstack/react-form'\nimport type {FormOptions} from '@tanstack/react-form';\nimport type { FieldValues } from '../types'\n\nexport interface UseCustomFormOptions<TData extends FieldValues>\n extends FormOptions<\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n > {\n formId?: string\n}\n\nexport function useJotaiForm<TData extends FieldValues>(formOptions: UseCustomFormOptions<TData>) {\n const form = useForm<\n TData,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >(formOptions)\n\n return form\n}\n","/* eslint-disable react-hooks/refs */\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useFormConfigValue } from './config'\nimport type { FieldValues, FormFieldProps } from './types'\n\nexport const FormField = <T extends FieldValues>({\n config,\n onFieldChange,\n ns: globalNs,\n globalErrorNs,\n}: FormFieldProps<T>) => {\n const ns = config.ns ?? globalNs\n const errorNs = config.errorNs ?? globalErrorNs\n const { formFieldContainer, translateText } = useFormConfigValue()\n\n // TanStack Form uses field.state.meta.errors which is an array of ValidationError\n const firstError =\n config.field.state.meta.errors.length > 0\n ? config.field.state.meta.errors[0]\n : undefined\n const errorMessageStr = firstError ? String(firstError) : undefined\n\n const errorMessage = useMemo(() => {\n if (!errorMessageStr) return undefined\n return errorNs\n ? translateText?.(errorMessageStr, {\n ns: errorNs || '',\n defaultValue: '',\n })\n : errorMessageStr\n }, [errorMessageStr, errorNs, translateText])\n\n const label = useMemo(\n () => (ns ? translateText?.(config.label ?? '') : config.label),\n [ns, config.label, translateText],\n )\n\n const helperMessage = useMemo(\n () =>\n config.helper?.text\n ? translateText?.(config.helper.text, config.helper.translationOption)\n : '',\n [config.helper, translateText],\n )\n\n const ref = useRef({ onFieldChange, handleChange: config.field.handleChange })\n\n useEffect(() => {\n ref.current = {\n onFieldChange,\n handleChange: config.field.handleChange,\n }\n }, [config.field.handleChange, onFieldChange])\n\n const handleChange = useCallback((value: T) => {\n // TanStack Form handleChange usually expects just the value for input\n // but if we are manually calling it we should pass the value.\n ref.current.handleChange(value)\n ref.current.onFieldChange?.(value)\n }, [])\n\n const handleBlur = useCallback(() => {\n config.field.handleBlur()\n }, [config.field])\n\n const baseProps = useMemo(\n () => ({\n value: config.field.state.value,\n onChange: handleChange,\n onBlur: handleBlur,\n error: config.field.state.meta.errors.length > 0,\n errorMessage,\n label,\n helperMessage,\n }),\n [\n config.field.state.value,\n handleChange,\n handleBlur,\n config.field.state.meta.errors.length,\n errorMessage,\n label,\n helperMessage,\n ],\n )\n\n const ConfigContainer = useMemo(() => config.container, [config.container])\n const FormFieldContainer = useMemo(\n () => formFieldContainer,\n [formFieldContainer],\n )\n\n if (ConfigContainer) {\n return (\n <ConfigContainer>\n {config.component(baseProps)}\n </ConfigContainer>\n )\n }\n return (\n <FormFieldContainer>\n {config.component(baseProps)}\n </FormFieldContainer>\n )\n}\n","import { atom, useAtom, useAtomValue, useSetAtom } from 'jotai'\nimport { selectAtom } from 'jotai/utils'\nimport { useCallback, useMemo } from 'react'\nimport type { FieldValues, SetValueFunction } from '../types'\n\nexport interface FormStoreEntry<F extends FieldValues = FieldValues> {\n formValues: F\n setValue: SetValueFunction<F>\n}\n\nexport const DEFAULT_FORM_ENTRY: FormStoreEntry<FieldValues> = Object.freeze({\n formValues: {} as FieldValues,\n setValue: () => {},\n})\n\n/**\n * Global atom storing all form state.\n * Key format: \"scopeId:formId\" or just \"formId\" for backward compatibility.\n */\nexport const formAtom = atom<Record<string, FormStoreEntry>>({})\n\n/**\n * Helper to generate composite keys for forms.\n */\nexport const getFormCompositeKey = (scopeId: string, key: string): string =>\n `${scopeId}:${key}`\n\n/**\n * Creates a derived atom for accessing forms of a specific scope.\n */\nexport const createScopeFormsAtom = (scopeId: string) =>\n atom(\n (get) => {\n const allForms = get(formAtom)\n const prefix = `${scopeId}:`\n const scopeForms: Record<string, FormStoreEntry> = {}\n\n for (const [key, value] of Object.entries(allForms)) {\n if (key.startsWith(prefix)) {\n scopeForms[key.slice(prefix.length)] = value\n }\n }\n\n return scopeForms\n },\n (get, set, update: Record<string, FormStoreEntry>) => {\n const allForms = get(formAtom)\n const prefix = `${scopeId}:`\n const newForms = { ...allForms }\n\n // Remove old scope entries\n for (const key of Object.keys(newForms)) {\n if (key.startsWith(prefix)) {\n delete newForms[key]\n }\n }\n\n // Add new scope entries\n for (const [key, value] of Object.entries(update)) {\n newForms[`${prefix}${key}`] = value\n }\n\n set(formAtom, newForms)\n },\n )\n\nexport const createFormSelector = <F extends FieldValues = FieldValues>(\n formId: string,\n) =>\n selectAtom(\n formAtom,\n (forms) => {\n const entry = forms[formId] as FormStoreEntry<F> | undefined\n return entry ?? (DEFAULT_FORM_ENTRY as unknown as FormStoreEntry<F>)\n },\n (a, b) =>\n a === b || (a.formValues === b.formValues && a.setValue === b.setValue),\n )\n\nexport const useFormValue = <F extends FieldValues>(formId: string) => {\n const selectorAtom = useMemo(() => createFormSelector<F>(formId), [formId])\n return useAtomValue(selectorAtom)\n}\n\nexport const useFormState = <F extends FieldValues>() => {\n return useAtom(formAtom) as unknown as [\n Record<string, FormStoreEntry<F>>,\n (value: Record<string, FormStoreEntry<F>>) => void,\n ]\n}\n\nexport const useSetFormState = <F extends FieldValues>(formId: string) => {\n const setForms = useSetAtom(formAtom)\n\n return useCallback(\n (val: Partial<FormStoreEntry<F>>) => {\n setForms((prev) => {\n const prevEntry =\n (prev[formId] as FormStoreEntry<FieldValues> | undefined) ??\n DEFAULT_FORM_ENTRY\n\n return {\n ...prev,\n [formId]: {\n ...(prevEntry as unknown as FormStoreEntry<F>),\n ...(val as unknown as Partial<FormStoreEntry<FieldValues>>),\n } as unknown as FormStoreEntry<FieldValues>,\n }\n })\n },\n [formId, setForms],\n )\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport equal from \"fast-deep-equal\";\nimport { useFormValue } from \"../atoms\";\nimport type {\n FieldValues,\n FormFunctionProps,\n GetFormValuesFunction,\n} from \"../types\";\nimport type { DeepKeys, DeepValue } from \"@tanstack/react-form\";\n\nconst getValueAtPath = (\n obj: unknown,\n path: string,\n defaultObj?: unknown,\n): unknown => {\n if (!path) return undefined;\n const normalized = path.replace(/\\[(\\d+)\\]/g, \".$1\");\n const parts = normalized.split(\".\").filter(Boolean);\n let current: unknown = obj;\n for (const part of parts) {\n if (!current || !Object.keys(current).length) {\n if (!defaultObj) return undefined;\n current = { [part]: defaultObj };\n }\n if (typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[part];\n }\n\n return current;\n};\n\nexport interface UseFormValuesProps {\n formId: string;\n scopeId?: string;\n}\n\nexport const useFormValues = <F extends FieldValues>({\n formId,\n}: UseFormValuesProps): FormFunctionProps<F> => {\n // We subscribe to the specific form entry in the atoms\n // Note: This subscription is a bit coarse (entire form entry), but we optimize re-renders locally\n // Ideally we would want to subscribe only to specific paths, but Jotai atoms are per-form.\n const formEntry = useFormValue(formId);\n const currentValues = useMemo(\n () => formEntry.formValues,\n [formEntry.formValues],\n );\n\n const subscriptions = useRef(new Map<string, unknown>());\n // trigger state is used to force re-render when a subscribed value changes\n const [trigger, setTrigger] = useState(0);\n\n // Ref to hold the latest values without causing re-renders itself\n const formRef = useRef({\n formValues: formEntry.formValues,\n setValue: formEntry.setValue,\n });\n\n useEffect(() => {\n formRef.current.setValue = formEntry.setValue;\n }, [formEntry.setValue]);\n\n useEffect(() => {\n let shouldTrigger = false;\n subscriptions.current.forEach((_, path) => {\n const newValue = getValueAtPath(currentValues, path);\n const oldValue = getValueAtPath(formRef.current.formValues, path);\n if (!equal(newValue, oldValue)) {\n shouldTrigger = true;\n }\n });\n\n formRef.current.formValues = currentValues;\n if (shouldTrigger) {\n setTrigger((c) => c + 1);\n }\n }, [currentValues]);\n\n const get = useCallback(\n (key: string, defaultValue?: unknown) => {\n const val =\n getValueAtPath(formRef.current.formValues, key) ?? defaultValue;\n subscriptions.current.set(key, val);\n return subscriptions.current.get(key);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [trigger],\n ) as GetFormValuesFunction<F>;\n\n const set = useCallback(\n <TField extends DeepKeys<F>>(\n field: TField,\n value: DeepValue<F, TField>,\n ) => {\n formRef.current.setValue(field, value);\n },\n [],\n );\n\n return { get, set };\n};\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { FormField } from \"../FormField\";\nimport { useSetFormState } from \"../atoms\";\nimport { useFormConfigValue } from \"../config\";\nimport { useFormValues } from \"./useFormValues\";\nimport { useJotaiForm } from \"./useJotaiForm\";\nimport type { FormNotificationMessage } from \"../config\";\nimport {\n useStore,\n type DeepKeys,\n type DeepValue,\n type Updater,\n} from \"@tanstack/react-form\";\nimport type {\n FieldValues,\n FormFieldConfig,\n FormManagerConfig,\n FormManagerProps,\n GenericFieldApi,\n GenericFieldState,\n GenericFormApi,\n SetValueFunction,\n Submit,\n SubmitKeysArg,\n SubmitPayload,\n UseFormManagerProps,\n} from \"../types\";\nimport type { JSX } from \"react\";\n\nexport interface FormElements {\n index: number;\n element: JSX.Element;\n renderInFooter: boolean;\n renderInHeader: boolean;\n isSubmit?: boolean;\n}\n\ntype PayloadOf<\n F extends FieldValues,\n S extends Submit<F, SubmitKeysArg<F>>,\n> = SubmitPayload<F, S extends Submit<F, infer K> ? K : undefined>;\n\nconst trimObject = <T extends object>(obj?: T): T =>\n Object.entries(obj ?? {}).reduce(\n (prev, [key, val]) => ({\n ...prev,\n [key]:\n typeof val === \"string\" && ![\"password\", \"pPassword\"].includes(key)\n ? val.trim()\n : val,\n }),\n {} as T,\n );\nconst RenderField = <F extends FieldValues = FieldValues>({\n field,\n fieldState,\n fieldProps,\n onFieldChange,\n}: {\n field: GenericFieldApi<F>;\n fieldState: GenericFieldState<F>;\n fieldProps: FormManagerConfig<F>;\n onFieldChange?: (value: F) => void;\n}) => {\n const config: FormFieldConfig<F> = useMemo(\n () => ({\n ...fieldProps,\n field,\n fieldState,\n }),\n [fieldProps, field, fieldState],\n );\n return (\n <FormField<F>\n config={config}\n ns={fieldProps.ns}\n globalErrorNs={fieldProps.errorNs}\n onFieldChange={onFieldChange}\n />\n );\n};\n\nconst DynamicFieldItem = <F extends FieldValues>({\n item,\n form,\n globalErrorNs,\n formId,\n}: {\n item: FormManagerProps<F>[\"data\"][number];\n form: GenericFormApi<F>;\n globalErrorNs?: string;\n formId: string;\n}) => {\n const { get, set } = useFormValues<F>({ formId });\n\n const fieldProps = useMemo(() => {\n if (typeof item === \"function\") {\n return item({ get, set });\n } else {\n return item;\n }\n }, [get, set, item]);\n\n const isHidden = useMemo(() => {\n if (!fieldProps.hidden) {\n return false;\n } else if (typeof fieldProps.hidden === \"function\") {\n return fieldProps.hidden({ get, set });\n } else {\n return !!fieldProps.hidden;\n }\n }, [get, set, fieldProps]);\n\n const rules = useMemo(() => {\n if (!fieldProps.rules) {\n return undefined;\n } else if (typeof fieldProps.rules === \"function\") {\n return fieldProps.rules({ get, set });\n } else {\n return fieldProps.rules;\n }\n }, [get, set, fieldProps]);\n\n const props = useMemo(() => {\n return {\n ...fieldProps,\n errorNs: fieldProps.errorNs ?? globalErrorNs,\n };\n }, [fieldProps, globalErrorNs]);\n\n if (isHidden) {\n return <></>;\n }\n\n return (\n <form.Field\n name={props.name}\n validators={rules}\n // eslint-disable-next-line react/no-children-prop\n children={(field) => (\n <RenderField<F>\n field={field}\n fieldState={field.state}\n fieldProps={props}\n onFieldChange={props.onFieldChange}\n />\n )}\n />\n );\n};\n\nconst SubmitItem = <F extends FieldValues>({\n item,\n index,\n handlersRef,\n}: {\n item: Submit<F>;\n index: number;\n handlersRef: React.MutableRefObject<{\n formControl: GenericFormApi<F>;\n onInvalidHandle: (err: unknown, submitConfig: Submit<F>) => void;\n createSubmitHandler: (\n submitConfig: Submit<F>,\n ) => (data: F) => Promise<unknown>;\n values: F;\n errors: unknown;\n }>;\n}) => {\n const handleClick = useCallback(async () => {\n const { formControl, createSubmitHandler, onInvalidHandle } =\n handlersRef.current;\n\n // Partial or full validation logic\n let isValid = true;\n\n const keys = item.values as ReadonlyArray<string> | undefined;\n if (keys && keys.length > 0) {\n // Validate only specific fields\n await Promise.all(\n keys.map((key) => formControl.validateField(key, \"change\")),\n );\n const hasError = keys.some((key) => {\n // This is a simplified check. TanStack form errors might be structured differently.\n // You might need deep checking if errors are nested objects.\n // For now assume flat or use lodash get if possible, but state.errors is usually flat-ish map in newer versions or object.\n // Checking standard TanStack: form.state.fieldMeta[key]?.errors\n const meta = formControl.getFieldMeta(key);\n return meta?.errors && meta.errors.length > 0;\n });\n isValid = !hasError;\n } else {\n // Validate all\n await formControl.validateAllFields(\"submit\");\n isValid = formControl.state.isValid;\n }\n\n if (!isValid) {\n onInvalidHandle(handlersRef.current.errors, item);\n return;\n }\n\n const values = handlersRef.current.values;\n // Call handlers\n await createSubmitHandler(item)(values);\n }, [item, handlersRef]);\n\n const Component = useMemo(() => item.component, [item]);\n if (item.hidden || !Component) return <></>;\n\n return (\n <Component\n onClick={handleClick}\n index={index}\n key={`submit-${index}`}\n type={item.type || \"button\"}\n />\n );\n};\n\nexport const useFormManager = <F extends FieldValues = FieldValues>({\n data,\n onInvalid,\n submit = [],\n notification,\n formOptions,\n onValuesChange,\n globalErrorNs,\n id = \"form-manager\",\n}: UseFormManagerProps<F>) => {\n const formControl = useJotaiForm<F>(formOptions);\n const errors = useStore(formControl.store, (state) => state.errors);\n const values = useStore(formControl.store, (state) => state.values);\n const setFormState = useSetFormState<F>(id);\n const { showNotification } = useFormConfigValue();\n\n const setValue = useCallback(\n <TField extends DeepKeys<F>>(\n field: TField,\n updater: Updater<DeepValue<F, TField>>,\n ) => formControl.setFieldValue(field, updater),\n [formControl],\n ) as SetValueFunction<F>;\n\n useEffect(() => {\n setFormState({\n setValue,\n formValues: values,\n });\n }, [setFormState, setValue, values]);\n\n const handleNotification = useCallback(\n (props: FormNotificationMessage) => {\n if (props.message) {\n showNotification?.(props);\n }\n },\n [showNotification],\n );\n\n const filterFormData = useCallback(\n <S extends Submit<F, SubmitKeysArg<F>>>(\n v: F,\n submitConfig: S,\n ): PayloadOf<F, S> => {\n const keys = submitConfig.values as ReadonlyArray<keyof F> | undefined;\n if (!keys || keys.length === 0) {\n return v as PayloadOf<F, S>;\n }\n\n const out = {} as Record<keyof F, F[keyof F]>;\n for (const key of keys) {\n if (key in v) {\n out[key] = v[key];\n }\n }\n return out as PayloadOf<F, S>;\n },\n [],\n );\n\n const processSubmit = useCallback(\n async <S extends Submit<F, SubmitKeysArg<F>>>(d: F, submitConfig: S) => {\n const filteredData = filterFormData(d, submitConfig);\n if (submitConfig.onSuccess) {\n return await submitConfig.onSuccess(filteredData);\n }\n throw new Error(\"No submit handler provided\");\n },\n [filterFormData],\n );\n\n const handleError = useCallback(\n <S extends Submit<F, SubmitKeysArg<F>>>(\n error: unknown,\n submitConfig: S,\n ) => {\n if (submitConfig.onError) {\n submitConfig.onError(error as Error);\n }\n const notificationProps =\n typeof notification?.error === \"function\"\n ? notification.error((error as Error).message)\n : notification?.error;\n if (notificationProps?.message) {\n handleNotification(notificationProps);\n }\n },\n [handleNotification, notification],\n );\n\n const createSubmitHandler = useCallback(\n <S extends Submit<F, SubmitKeysArg<F>>>(submitConfig: S) =>\n async (dataSubmit: F) => {\n try {\n const res = await processSubmit(\n trimObject<F>(dataSubmit),\n submitConfig,\n );\n const notificationProps =\n typeof notification?.success === \"function\"\n ? notification.success(res)\n : notification?.success;\n if (notificationProps?.message) {\n handleNotification(notificationProps);\n }\n return res;\n } catch (error) {\n handleError(error, submitConfig);\n throw error;\n }\n },\n [processSubmit, notification, handleNotification, handleError],\n );\n\n const onInvalidHandle = useCallback(\n (err: unknown, submitConfig: Submit<F>) => {\n onInvalid?.(err);\n handleError(new Error(\"invalidData\"), submitConfig);\n },\n [handleError, onInvalid],\n );\n\n const handlersRef = useRef({\n formControl,\n onInvalidHandle,\n createSubmitHandler,\n setValue: formControl.setFieldValue,\n trigger: formControl.validateField,\n onValuesChange,\n values,\n errors,\n });\n\n useEffect(() => {\n handlersRef.current.onInvalidHandle = onInvalidHandle;\n handlersRef.current.createSubmitHandler = createSubmitHandler;\n handlersRef.current.setValue = formControl.setFieldValue;\n handlersRef.current.trigger = formControl.validateField;\n handlersRef.current.onValuesChange = onValuesChange;\n }, [onInvalidHandle, createSubmitHandler, formControl, onValuesChange]);\n\n useEffect(() => {\n handlersRef.current.values = values;\n handlersRef.current.errors = errors;\n }, [values, errors]);\n\n const fields = useMemo(\n () =>\n data.map((item, index): FormElements => {\n const staticItem = typeof item === \"function\" ? null : item;\n return {\n index: staticItem?.index ?? index,\n element: (\n <DynamicFieldItem<F>\n key={staticItem?.name ?? index}\n item={item}\n form={formControl}\n globalErrorNs={globalErrorNs}\n formId={id}\n />\n ),\n renderInFooter: !!staticItem?.renderInFooter,\n renderInHeader: !!staticItem?.renderInHeader,\n };\n }),\n [data, formControl, globalErrorNs, id],\n );\n\n const submits = useMemo(\n () =>\n submit.map((submitConfig, index): FormElements => {\n return {\n index: submitConfig.index === undefined ? index : submitConfig.index,\n element: (\n <SubmitItem<F>\n key={`submit-${index}`}\n item={submitConfig}\n index={index}\n handlersRef={handlersRef}\n />\n ),\n renderInFooter: !!submitConfig.renderInFooter,\n renderInHeader: !!submitConfig.renderInHeader,\n isSubmit: true,\n };\n }),\n [submit],\n );\n\n const elements = useMemo(\n (): Array<FormElements> => fields.concat(submits),\n [fields, submits],\n );\n\n const formContents = useMemo(() => [...data, ...submit], [data, submit]);\n\n useEffect(() => {\n handlersRef.current.onValuesChange?.(values, handlersRef.current.setValue);\n }, [values]);\n\n return {\n elements,\n formContents,\n errors,\n formValues: values,\n setValue,\n };\n};\n","import { useMemo } from \"react\";\nimport { useFormManager } from \"./hooks\";\nimport { DefaultContainer, DefaultFormContainer } from \"./containers\";\nimport type { FieldValues, FormManagerProps } from \"./types\";\nimport { useFormConfigValue } from \"./config\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const FormManager = <T extends Record<string, any> = FieldValues>({\n data,\n defaultValues,\n onInvalid,\n submit = [],\n ns,\n globalErrorNs,\n notification,\n formSettings,\n viewSettings,\n onValuesChange,\n id = \"form-manager\",\n}: FormManagerProps<T>) => {\n const { elements = [] } = useFormManager({\n data,\n globalErrorNs,\n notification,\n ns,\n onInvalid,\n submit,\n onValuesChange,\n id,\n formOptions: {\n defaultValues: defaultValues,\n ...formSettings,\n formId: id,\n },\n });\n\n // Render logic remains similar\n const render = useMemo(\n () =>\n elements\n .filter((el) => !el.isSubmit)\n .sort((a, b) => a.index - b.index)\n .map((el) => el.element),\n [elements],\n );\n const renderSubmit = useMemo(\n () =>\n elements\n .filter((el) => el.isSubmit)\n .sort((a, b) => a.index - b.index)\n .map((el) => el.element),\n [elements],\n );\n const { container, bodyContainer, submitContainer } = useFormConfigValue();\n\n const Container =\n viewSettings?.container || container || DefaultFormContainer<T>;\n const BodyContainer =\n viewSettings?.bodyContainer || bodyContainer || DefaultContainer;\n const SubmitContainer =\n viewSettings?.submitContainer || submitContainer || DefaultContainer;\n\n return (\n <Container {...(viewSettings?.containerProps || {})}>\n <BodyContainer {...(viewSettings?.bodyContainerProps || {})}>\n {render}\n </BodyContainer>\n <SubmitContainer {...(viewSettings?.submitContainerProps || {})}>\n {renderSubmit}\n </SubmitContainer>\n </Container>\n );\n};\n"],"names":["DefaultContainer","children","_formConfig","formFieldContainer","atom","formConfigAtom","useValue","useFormConfigValue","useState","useFormConfigState","useReset","useFormConfigReset","atomStateGenerator","key","defaultValue","persist","createDefaultContainer","setDefaultFormContainer","val","DefaultFormContainer","t0","$","_c","handleSubmit","_temp","t1","_jsx","onSubmit","className","e","preventDefault","form","currentTarget","submitButton","querySelector","click","useJotaiForm","formOptions","useForm","FormField","config","onFieldChange","ns","globalNs","globalErrorNs","_a","errorNs","_b","translateText","firstError","field","state","meta","errors","length","undefined","errorMessageStr","String","errorMessage","useMemo","label","helperMessage","helper","text","translationOption","ref","useRef","handleChange","useEffect","current","useCallback","value","call","handleBlur","baseProps","onChange","onBlur","error","ConfigContainer","container","FormFieldContainer","component","DEFAULT_FORM_ENTRY","Object","freeze","formValues","setValue","formAtom","getFormCompositeKey","scopeId","createScopeFormsAtom","get","allForms","prefix","scopeForms","entries","startsWith","slice","set","update","newForms","assign","keys","createFormSelector","formId","selectAtom","forms","entry","a","b","useFormValue","selectorAtom","useAtomValue","useFormState","useAtom","useSetFormState","setForms","useSetAtom","prev","prevEntry","getValueAtPath","obj","path","defaultObj","normalized","replace","parts","split","filter","Boolean","part","useFormValues","formEntry","currentValues","subscriptions","Map","trigger","setTrigger","formRef","shouldTrigger","forEach","_","newValue","oldValue","equal","c","trimObject","reduce","includes","trim","RenderField","fieldState","fieldProps","t2","DynamicFieldItem","item","isHidden","hidden","rules","props","Field","name","validators","SubmitItem","index","handlersRef","handleClick","formControl","createSubmitHandler","onInvalidHandle","isValid","values","Promise","all","map","validateField","hasError","some","getFieldMeta","validateAllFields","Component","onClick","type","useFormManager","data","onInvalid","submit","notification","onValuesChange","id","useStore","store","setFormState","showNotification","updater","setFieldValue","handleNotification","message","filterFormData","v","submitConfig","out","processSubmit","d","filteredData","onSuccess","Error","handleError","onError","notificationProps","dataSubmit","res","success","err","fields","staticItem","element","renderInFooter","renderInHeader","submits","isSubmit","elements","concat","formContents","FormManager","defaultValues","formSettings","viewSettings","t3","t4","t5","t6","t7","t8","sort","_temp2","_temp3","render","t9","_temp4","_temp5","_temp6","renderSubmit","bodyContainer","submitContainer","Container","BodyContainer","SubmitContainer","t10","_jsxs","containerProps","bodyContainerProps","submitContainerProps","el","el_0","el_1","a_0","b_0","el_2"],"mappings":"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"}
@@ -1091,24 +1091,27 @@ declare const usePageConfig: <F extends FieldValues, Q extends QueriesArray, V e
1091
1091
  variables?: V;
1092
1092
  pageId: string;
1093
1093
  }) => {
1094
- formData: {
1095
- formContents: (_gaddario98_react_form.Submit<F, _gaddario98_react_form.SubmitKeysArg<F>> | _gaddario98_react_form.FormManagerConfig<F>)[];
1096
- elements: _gaddario98_react_form.FormElements[];
1097
- errors: any[];
1098
- formValues: F;
1099
- setValue: _gaddario98_react_form.SetValueFunction<F>;
1094
+ mergedConfig: {
1095
+ formData: {
1096
+ formContents: (_gaddario98_react_form.Submit<F, _gaddario98_react_form.SubmitKeysArg<F>> | _gaddario98_react_form.FormManagerConfig<F>)[];
1097
+ elements: _gaddario98_react_form.FormElements[];
1098
+ errors: any[];
1099
+ formValues: F;
1100
+ setValue: _gaddario98_react_form.SetValueFunction<F>;
1101
+ };
1102
+ form: FormPageProps$1<F, Q, V> | undefined;
1103
+ mappedViewSettings: ViewSettings$1;
1104
+ meta: MetadataConfig$1<F, Q, Record<string, unknown>> | undefined;
1105
+ globalConfig: PageConfigProps;
1100
1106
  };
1101
- form: FormPageProps$1<F, Q, V> | undefined;
1102
- mappedViewSettings: ViewSettings$1;
1103
- meta: MetadataConfig$1<F, Q, Record<string, unknown>> | undefined;
1104
- globalConfig: PageConfigProps;
1107
+ refreshQueries: () => void;
1105
1108
  };
1106
1109
 
1107
1110
  interface GenerateContentProps<F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>> {
1108
1111
  pageId: string;
1109
1112
  ns?: string;
1110
1113
  contents: ContentItemsType$1<F, Q, V>;
1111
- pageConfig: ReturnType<typeof usePageConfig<F, Q, V>>;
1114
+ pageConfig: ReturnType<typeof usePageConfig<F, Q, V>>["mergedConfig"];
1112
1115
  }
1113
1116
  declare const useGenerateContent: <F extends FieldValues, Q extends QueriesArray, V extends Record<string, unknown> = Record<string, unknown>>({ pageId, ns, contents, pageConfig, }: GenerateContentProps<F, Q, V>) => {
1114
1117
  header: react_jsx_runtime.JSX.Element[];
@@ -1,4 +1,4 @@
1
- 'use strict';var jsxRuntime=require('react/jsx-runtime'),react=require('react'),index_ts=require('../queries/index.js'),jotai=require('jotai'),compilerRuntime=require('react/compiler-runtime'),index_ts$2=require('../state/index.js'),equal=require('fast-deep-equal'),index_ts$1=require('../form/index.js'),jotaiFamily=require('jotai-family'),reactQuery=require('@tanstack/react-query');/******************************************************************************
1
+ 'use strict';var jsxRuntime=require('react/jsx-runtime'),react=require('react'),compilerRuntime=require('react/compiler-runtime'),index_ts$2=require('../state/index.js'),equal=require('fast-deep-equal'),index_ts$1=require('../form/index.js'),jotai=require('jotai'),index_ts=require('../queries/index.js'),jotaiFamily=require('jotai-family'),reactQuery=require('@tanstack/react-query');/******************************************************************************
2
2
  Copyright (c) Microsoft Corporation.
3
3
 
4
4
  Permission to use, copy, modify, and/or distribute this software for any
@@ -1534,147 +1534,88 @@ function useFormData({
1534
1534
  formData
1535
1535
  };
1536
1536
  };const EMPTY_ARRAY = [];
1537
- const usePageConfig = t0 => {
1538
- const $ = compilerRuntime.c(27);
1539
- const {
1540
- queries: t1,
1541
- form,
1542
- ns,
1543
- viewSettings: t2,
1544
- meta,
1545
- variables,
1546
- pageId
1547
- } = t0;
1548
- const queries = t1 === undefined ? EMPTY_ARRAY : t1;
1549
- let t3;
1550
- if ($[0] !== t2) {
1551
- t3 = t2 === undefined ? {} : t2;
1552
- $[0] = t2;
1553
- $[1] = t3;
1554
- } else {
1555
- t3 = $[1];
1556
- }
1557
- const viewSettings = t3;
1537
+ const usePageConfig = ({
1538
+ queries = EMPTY_ARRAY,
1539
+ form,
1540
+ ns,
1541
+ viewSettings = {},
1542
+ meta,
1543
+ variables,
1544
+ pageId
1545
+ }) => {
1546
+ // Use global config usage if needed, but per-page config is primary
1558
1547
  const globalConfig = usePageConfigValue();
1559
- let t4;
1560
- if ($[2] !== form || $[3] !== ns || $[4] !== pageId) {
1561
- t4 = {
1562
- form,
1563
- pageId,
1564
- ns
1565
- };
1566
- $[2] = form;
1567
- $[3] = ns;
1568
- $[4] = pageId;
1569
- $[5] = t4;
1570
- } else {
1571
- t4 = $[5];
1572
- }
1548
+ // 1. Form Management
1573
1549
  const {
1574
1550
  formData
1575
- } = usePageFormManager(t4);
1576
- let t5;
1577
- if ($[6] !== pageId || $[7] !== variables) {
1578
- t5 = {
1579
- pageId,
1580
- initialValues: variables
1581
- };
1582
- $[6] = pageId;
1583
- $[7] = variables;
1584
- $[8] = t5;
1585
- } else {
1586
- t5 = $[8];
1587
- }
1551
+ } = usePageFormManager({
1552
+ form,
1553
+ pageId,
1554
+ ns
1555
+ });
1588
1556
  const {
1589
1557
  get,
1590
1558
  set
1591
- } = usePageValues(t5);
1592
- let t6;
1593
- if ($[9] !== get || $[10] !== queries || $[11] !== set) {
1594
- let t7;
1595
- if ($[13] !== get || $[14] !== set) {
1596
- t7 = q => {
1597
- if (q.type === "mutation") {
1598
- const mutationConfig = typeof q.mutationConfig === "function" ? q.mutationConfig({
1599
- get,
1600
- set
1601
- }) : q.mutationConfig;
1602
- return Object.assign(Object.assign({}, q), {
1603
- mutationConfig
1604
- });
1605
- } else {
1606
- if (q.type === "query") {
1607
- const queryConfig = typeof q.queryConfig === "function" ? q.queryConfig({
1608
- get,
1609
- set
1610
- }) : q.queryConfig;
1611
- return Object.assign(Object.assign({}, q), {
1612
- queryConfig
1613
- });
1614
- }
1615
- }
1616
- return q;
1617
- };
1618
- $[13] = get;
1619
- $[14] = set;
1620
- $[15] = t7;
1621
- } else {
1622
- t7 = $[15];
1623
- }
1624
- t6 = queries.map(t7);
1625
- $[9] = get;
1626
- $[10] = queries;
1627
- $[11] = set;
1628
- $[12] = t6;
1629
- } else {
1630
- t6 = $[12];
1631
- }
1632
- const processedQueries = t6;
1633
- let t7;
1634
- if ($[16] !== pageId) {
1635
- t7 = {
1636
- persistToAtoms: true,
1637
- scopeId: pageId
1638
- };
1639
- $[16] = pageId;
1640
- $[17] = t7;
1641
- } else {
1642
- t7 = $[17];
1643
- }
1644
- index_ts.useApi(processedQueries, t7);
1645
- let t8;
1646
- if ($[18] !== pageId || $[19] !== viewSettings) {
1647
- t8 = {
1648
- viewSettings,
1649
- pageId
1650
- };
1651
- $[18] = pageId;
1652
- $[19] = viewSettings;
1653
- $[20] = t8;
1654
- } else {
1655
- t8 = $[20];
1656
- }
1657
- const mappedViewSettings = useViewSettings(t8);
1658
- let t9;
1659
- if ($[21] !== form || $[22] !== formData || $[23] !== globalConfig || $[24] !== mappedViewSettings || $[25] !== meta) {
1660
- t9 = {
1559
+ } = usePageValues({
1560
+ pageId,
1561
+ initialValues: variables
1562
+ });
1563
+ // 2. Query Generation
1564
+ const processedQueries = react.useMemo(() => {
1565
+ return queries.map(q => {
1566
+ if (q.type === "mutation") {
1567
+ const mutationConfig = typeof q.mutationConfig === "function" ? q.mutationConfig({
1568
+ get,
1569
+ set
1570
+ }) : q.mutationConfig;
1571
+ return Object.assign(Object.assign({}, q), {
1572
+ mutationConfig
1573
+ });
1574
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1575
+ } else if (q.type === "query") {
1576
+ const queryConfig = typeof q.queryConfig === "function" ? q.queryConfig({
1577
+ get,
1578
+ set
1579
+ }) : q.queryConfig;
1580
+ return Object.assign(Object.assign({}, q), {
1581
+ queryConfig
1582
+ });
1583
+ }
1584
+ return q;
1585
+ });
1586
+ }, [queries, get, set]);
1587
+ index_ts.useApi(processedQueries, {
1588
+ persistToAtoms: true,
1589
+ scopeId: pageId
1590
+ });
1591
+ const {
1592
+ invalidateQueries
1593
+ } = index_ts.useInvalidateQueries();
1594
+ const refreshQueries = react.useCallback(() => {
1595
+ processedQueries.filter(el => el.type === "query").forEach(({
1596
+ queryConfig: queryConfig_0
1597
+ }) => {
1598
+ if (queryConfig_0 === null || queryConfig_0 === void 0 ? void 0 : queryConfig_0.queryKey) invalidateQueries([queryConfig_0 === null || queryConfig_0 === void 0 ? void 0 : queryConfig_0.queryKey]);
1599
+ });
1600
+ }, [processedQueries]);
1601
+ const mappedViewSettings = useViewSettings({
1602
+ viewSettings,
1603
+ pageId
1604
+ });
1605
+ // Merge custom configuration with defaults
1606
+ const mergedConfig = react.useMemo(() => {
1607
+ return {
1661
1608
  formData,
1662
1609
  form,
1663
1610
  mappedViewSettings,
1664
1611
  meta,
1665
- globalConfig
1612
+ globalConfig // Expose global config if needed
1666
1613
  };
1667
- $[21] = form;
1668
- $[22] = formData;
1669
- $[23] = globalConfig;
1670
- $[24] = mappedViewSettings;
1671
- $[25] = meta;
1672
- $[26] = t9;
1673
- } else {
1674
- t9 = $[26];
1675
- }
1676
- const mergedConfig = t9;
1677
- return mergedConfig;
1614
+ }, [formData, form, mappedViewSettings, meta, globalConfig]);
1615
+ return {
1616
+ mergedConfig,
1617
+ refreshQueries
1618
+ };
1678
1619
  };/**
1679
1620
  * Hook for evaluating and managing dynamic metadata.
1680
1621
  *
@@ -1921,7 +1862,10 @@ const MetadataManager = MetadataManagerImpl;const PageGenerator = _a => {
1921
1862
  viewSettings,
1922
1863
  ns
1923
1864
  } = react.useMemo(() => selectedProps, [selectedProps]);
1924
- const config = usePageConfig({
1865
+ const {
1866
+ mergedConfig,
1867
+ refreshQueries
1868
+ } = usePageConfig({
1925
1869
  queries,
1926
1870
  form,
1927
1871
  ns: ns !== null && ns !== void 0 ? ns : "",
@@ -1929,9 +1873,6 @@ const MetadataManager = MetadataManagerImpl;const PageGenerator = _a => {
1929
1873
  pageId: id,
1930
1874
  variables
1931
1875
  });
1932
- const {
1933
- mappedViewSettings
1934
- } = config;
1935
1876
  const {
1936
1877
  allContents,
1937
1878
  body,
@@ -1941,8 +1882,11 @@ const MetadataManager = MetadataManagerImpl;const PageGenerator = _a => {
1941
1882
  contents,
1942
1883
  pageId: id,
1943
1884
  ns,
1944
- pageConfig: config
1885
+ pageConfig: mergedConfig
1945
1886
  });
1887
+ const {
1888
+ mappedViewSettings
1889
+ } = mergedConfig;
1946
1890
  const LayoutComponent = react.useMemo(() => {
1947
1891
  var _a_0;
1948
1892
  return (_a_0 = mappedViewSettings.layoutComponent) !== null && _a_0 !== void 0 ? _a_0 : BodyContainer;
@@ -1960,13 +1904,6 @@ const MetadataManager = MetadataManagerImpl;const PageGenerator = _a => {
1960
1904
  return (_a_3 = mappedViewSettings.pageContainerProps) !== null && _a_3 !== void 0 ? _a_3 : {};
1961
1905
  }, [mappedViewSettings.pageContainerProps]);
1962
1906
  const layoutBody = react.useMemo(() => body, [body]);
1963
- const store = jotai.useStore();
1964
- const refreshQueries = react.useCallback(() => {
1965
- const val = store.get(index_ts.queriesAtom);
1966
- Object.values(val).forEach(query => {
1967
- query.refetch();
1968
- });
1969
- }, [store]);
1970
1907
  return jsxRuntime.jsxs(PageContainerComponent, Object.assign({
1971
1908
  id: id
1972
1909
  }, pageContainerProps, {