import type { BuildFormStateArgs, ClientFieldSchemaMap, Data, DocumentPreferences, Field, FieldSchemaMap, FormState, PayloadRequest, SanitizedFieldsPermissions, SelectMode, SelectType } from 'payload'; import type { RenderFieldMethod } from './types.js'; import { iterateFields } from './iterateFields.js'; type Args = { /** * The client field schema map is required for field rendering. * If fields should not be rendered (=> `renderFieldFn` is not provided), * then the client field schema map is not required. */ clientFieldSchemaMap?: ClientFieldSchemaMap; collectionSlug?: string; data?: Data; /** * If this is undefined, the `data` passed to this function will serve as `fullData` and `data` when iterating over * the top-level-fields to generate form state. * For sub fields, the `data` will be narrowed down to the sub fields, while `fullData` remains the same. * * Usually, the `data` passed to this function will be the document data. This means that running validation, read access control * or executing filterOptions here will have access to the full document through the passed `fullData` parameter, and that `fullData` and `data` will be identical. * * In some cases however, this function is used to generate form state solely for sub fields - independent from the parent form state. * This means that `data` will be the form state of the sub fields - the document data won't be available here. * * In these cases, you can pass `documentData` which will be used as `fullData` instead of `data`. * * This is useful for lexical blocks, as lexical block fields there are not part of the parent form state, yet we still want * document data to be available for validation and filterOptions, under the `data` key. */ documentData?: Data; fields: Field[] | undefined; /** * The field schema map is required for field rendering. * If fields should not be rendered (=> `renderFieldFn` is not provided), * then the field schema map is not required. */ fieldSchemaMap: FieldSchemaMap | undefined; id?: number | string; /** * Validation, filterOptions and read access control will receive the `blockData`, which is the data of the nearest parent block. You can pass in * the initial block data here, which will be used as `blockData` for the top-level fields, until the first block is encountered. */ initialBlockData?: Data; mockRSCs?: BuildFormStateArgs['mockRSCs']; operation?: 'create' | 'update'; permissions: SanitizedFieldsPermissions; preferences: DocumentPreferences; /** * Optionally accept the previous form state, * to be able to determine if custom fields need to be re-rendered. */ previousFormState?: FormState; readOnly?: boolean; /** * If renderAllFields is true, then no matter what is in previous form state, * all custom fields will be re-rendered. */ renderAllFields: boolean; renderFieldFn?: RenderFieldMethod; req: PayloadRequest; schemaPath: string; select?: SelectType; selectMode?: SelectMode; skipValidation?: boolean; }; export declare const fieldSchemasToFormState: ({ id, clientFieldSchemaMap, collectionSlug, data, documentData, fields, fieldSchemaMap, initialBlockData, mockRSCs, operation, permissions, preferences, previousFormState, readOnly, renderAllFields, renderFieldFn, req, schemaPath, select, selectMode, skipValidation, }: Args) => Promise; export { iterateFields }; //# sourceMappingURL=index.d.ts.map