@payloadcms/ui 4.0.0-internal.a6582c6 → 4.0.0-internal.b6f3b9a

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.
Files changed (27) hide show
  1. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  2. package/dist/elements/CreateDocumentButton/index.js +4 -1
  3. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  4. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  5. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  6. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  7. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  8. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  9. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  10. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  11. package/dist/elements/Table/OrderableRow.js +17 -1
  12. package/dist/elements/Table/OrderableRow.js.map +1 -1
  13. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  14. package/dist/elements/Table/OrderableTable.js +19 -2
  15. package/dist/elements/Table/OrderableTable.js.map +1 -1
  16. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  17. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  18. package/dist/providers/Root/index.js +4 -4
  19. package/dist/providers/Root/index.js.map +1 -1
  20. package/dist/providers/RouteTransition/index.d.ts +2 -0
  21. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  22. package/dist/providers/RouteTransition/index.js +42 -14
  23. package/dist/providers/RouteTransition/index.js.map +1 -1
  24. package/dist/styles.css +1 -1
  25. package/dist/views/HierarchyList/index.css +1 -1
  26. package/dist/views/List/index.css +1 -1
  27. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"addFieldStatePromise.js","names":["ObjectIdImport","getBlockSelect","stripUnselectedFields","validateBlocksFilterOptions","deepCopyObjectSimple","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","tabHasName","resolveFilterOptions","isRowCollapsed","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","blockData","clientFieldSchemaMap","collectionSlug","data","field","fieldSchemaMap","filter","forceFullValue","fullData","globalSlug","includeSchema","indexPath","mockRSCs","omitParents","operation","parentPath","parentPermissions","parentSchemaPath","passesCondition","path","preferences","previousFormState","readOnly","renderAllFields","renderFieldFn","req","schemaPath","select","selectMode","skipConditionChecks","skipValidation","state","console","warn","fieldPermissions","fieldState","lastRenderedPath","addedByServer","fieldSchema","isPresentationalWithSubFields","type","name","undefined","value","initialValue","hasPermission","read","access","collection","payload","collections","config","global","globals","find","g","slug","siblingData","validate","validationResult","jsonError","JSON","parse","e","event","previousValue","err","logger","error","msg","errorPath","errorPaths","includes","push","valid","errorMessage","arrayValue","Array","isArray","arraySelect","promises","rows","reduce","acc","row","rowIndex","rowPath","toHexString","idKey","fields","localized","parentIndexPath","parentPassesCondition","permissions","previousRow","prevRow","newRow","isLoading","isCollapsed","collapsedPrefs","collapsed","Promise","all","length","disableFormData","blocksValue","filterOptionsValidationResult","filterOptions","blocksFilterOptions","allowedBlockSlugs","rowMetadata","i","blockTypeToMatch","blockType","block","blocks","Error","blockSelect","blockSelectMode","invalidBlockSlugs","t","blockField","fieldKey","blockNameKey","blockName","groupSelect","relationTo","relation","query","user","hasMany","relationshipValue","map","relationship","selectFilterOptions","options","isNamedTab","shouldContinue","siblingDoc","childPermissions","tabSelect","tabPermissions","tabs","tab","fieldConfig","get","endsWith","formState","previousFieldState"],"sources":["../../../src/forms/fieldSchemasToFormState/addFieldStatePromise.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientFieldSchemaMap,\n Data,\n DocumentPreferences,\n Field,\n FieldSchemaMap,\n FieldState,\n FlattenedBlock,\n FormState,\n FormStateWithoutComponents,\n PayloadRequest,\n Row,\n SanitizedFieldPermissions,\n SanitizedFieldsPermissions,\n SelectMode,\n SelectType,\n TabAsField,\n Validate,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { getBlockSelect, stripUnselectedFields, validateBlocksFilterOptions } from 'payload'\nimport {\n deepCopyObjectSimple,\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n tabHasName,\n} from 'payload/shared'\n\nimport type { RenderFieldMethod } from './types.js'\n\nimport { resolveFilterOptions } from '../../utilities/resolveFilterOptions.js'\nimport { isRowCollapsed } from './isRowCollapsed.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (fieldPath: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n /**\n * Data of the nearest parent block, or undefined\n */\n blockData: Data | undefined\n clientFieldSchemaMap?: ClientFieldSchemaMap\n collectionSlug?: string\n data: Data\n field: Field | TabAsField\n fieldIndex: number\n fieldSchemaMap: FieldSchemaMap\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n globalSlug?: string\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n indexPath: string\n mockRSCs?: BuildFormStateArgs['mockRSCs']\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n parentIndexPath: string\n parentPath: string\n parentPermissions: SanitizedFieldsPermissions\n parentSchemaPath: string\n passesCondition: boolean\n path: string\n preferences: DocumentPreferences\n previousFormState: FormState\n readOnly?: boolean\n renderAllFields: boolean\n renderFieldFn: RenderFieldMethod\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n schemaPath: string\n select?: SelectType\n selectMode?: SelectMode\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormStateWithoutComponents\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n field,\n fieldSchemaMap,\n filter,\n forceFullValue = false,\n fullData,\n globalSlug,\n includeSchema = false,\n indexPath,\n mockRSCs,\n omitParents = false,\n operation,\n parentPath,\n parentPermissions,\n parentSchemaPath,\n passesCondition,\n path,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n schemaPath,\n select,\n selectMode,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (!args.clientFieldSchemaMap && args.renderFieldFn) {\n // eslint-disable-next-line no-console\n console.warn(\n 'clientFieldSchemaMap is not passed to addFieldStatePromise - this will reduce performance',\n )\n }\n\n let fieldPermissions: SanitizedFieldPermissions = true\n\n const fieldState: FieldState = {}\n\n const lastRenderedPath = previousFormState?.[path]?.lastRenderedPath\n\n // Append only if true to avoid sending '$undefined' through the network\n if (lastRenderedPath) {\n fieldState.lastRenderedPath = lastRenderedPath\n }\n\n // If we're rendering all fields, no need to flag this as added by server\n const addedByServer = !renderAllFields && !previousFormState?.[path]\n\n // Append only if true to avoid sending '$undefined' through the network\n if (addedByServer) {\n fieldState.addedByServer = true\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (passesCondition === false) {\n fieldState.passesCondition = false\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (includeSchema) {\n fieldState.fieldSchema = field\n }\n\n // Short-circuit hidden fields to prevent recursing and rendering. Two exclusions:\n // - `tab`: visibility is keyed by `field.id` (not `path`); the tab branch owns that write.\n // - presentational containers (row, collapsible, unnamed group): they hold no value, so\n // returning here drops their nested fields' values.\n const isPresentationalWithSubFields = fieldHasSubFields(field) && !fieldAffectsData(field)\n\n if (passesCondition === false && field.type !== 'tab' && !isPresentationalWithSubFields) {\n if (fieldAffectsData(field) && data?.[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n return\n }\n\n if (fieldAffectsData(field) && !fieldIsHiddenOrDisabled(field) && field.type !== 'tab') {\n fieldPermissions =\n parentPermissions === true\n ? parentPermissions\n : deepCopyObjectSimple(parentPermissions?.[field.name])\n\n let hasPermission: boolean =\n fieldPermissions === true || deepCopyObjectSimple(fieldPermissions?.read)\n\n if (typeof field?.access?.read === 'function') {\n const collection = collectionSlug\n ? (req.payload.collections[collectionSlug]?.config ?? null)\n : null\n const global = globalSlug\n ? (req.payload.globals.config.find((g) => g.slug === globalSlug) ?? null)\n : null\n\n hasPermission = await field.access.read({\n id,\n blockData,\n data: fullData,\n req,\n siblingData: data,\n ...(collection ? { collection } : { global }),\n })\n } else {\n hasPermission = true\n }\n\n if (!hasPermission) {\n return\n }\n\n const validate: Validate = 'validate' in field ? field.validate : undefined\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name])\n } catch (e) {\n jsonError = e\n }\n }\n\n try {\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n blockData,\n collectionSlug,\n data: fullData,\n event: 'onChange',\n // @AlessioGr added `jsonError` in https://github.com/payloadcms/payload/commit/c7ea62a39473408c3ea912c4fbf73e11be4b538d\n // @ts-expect-error-next-line\n jsonError,\n operation,\n preferences,\n previousValue: previousFormState?.[path]?.initialValue,\n req,\n siblingData: data,\n })\n } catch (err) {\n validationResult = `Error validating field at path: ${path}`\n\n req.payload.logger.error({\n err,\n msg: validationResult,\n })\n }\n }\n\n /**\n * This function adds the error **path** to the current field and all its parents. If a field is invalid, all its parents are also invalid.\n * It does not add the error **message** to the current field, as that shouldn't apply to all parents.\n * This is done separately below.\n */\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths) {\n fieldState.errorPaths = []\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(path)\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const arraySelect = select?.[field.name]\n\n const { promises, rows } = arrayValue.reduce(\n (acc, row, rowIndex: number) => {\n const rowPath = path + '.' + rowIndex\n\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n const idKey = rowPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = field.fields.find((field) => fieldIsID(field))\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: rowPath,\n parentSchemaPath: schemaPath,\n permissions:\n fieldPermissions === true ? fieldPermissions : fieldPermissions?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n if (!acc.rows) {\n acc.rows = []\n }\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n // add addedByServer flag\n if (!previousRow) {\n newRow.addedByServer = true\n }\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n newRow.collapsed = true\n }\n\n acc.rows.push(newRow)\n\n return acc\n },\n {\n promises: [],\n rows: [],\n },\n )\n\n // Wait for all promises and update fields with the results\n await Promise.all(promises)\n\n if (rows) {\n fieldState.rows = rows\n }\n\n // Add values to field state\n if (data[field.name] !== null) {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n // Handle blocks filterOptions\n let filterOptionsValidationResult: Awaited<\n ReturnType<typeof validateBlocksFilterOptions>\n > | null = null\n if (field.filterOptions) {\n filterOptionsValidationResult = await validateBlocksFilterOptions({\n id,\n data: fullData,\n filterOptions: field.filterOptions,\n req,\n siblingData: data,\n value: data[field.name],\n })\n\n fieldState.blocksFilterOptions = filterOptionsValidationResult.allowedBlockSlugs\n }\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i: number) => {\n const blockTypeToMatch: string = row.blockType\n\n const block =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (blockType) => typeof blockType !== 'string' && blockType.slug === blockTypeToMatch,\n ) as FlattenedBlock | undefined)\n\n if (!block) {\n throw new Error(\n `Block with type \"${row.blockType}\" was found in block data, but no block with that type is defined in the config for field with schema path ${schemaPath}.`,\n )\n }\n\n const { blockSelect, blockSelectMode } = getBlockSelect({\n block,\n select: select?.[field.name],\n selectMode,\n })\n\n const rowPath = path + '.' + i\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n // Handle block `id` field\n const idKey = rowPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n // If the blocks field fails filterOptions validation, add error paths to the individual blocks that are no longer allowed\n if (\n filterOptionsValidationResult?.invalidBlockSlugs?.length &&\n filterOptionsValidationResult.invalidBlockSlugs.includes(row.blockType)\n ) {\n state[idKey].errorMessage = req.t('validation:invalidBlock', {\n block: row.blockType,\n })\n state[idKey].valid = false\n addErrorPathToParent(idKey)\n\n // If the error is due to block filterOptions, we want the blocks field (fieldState) to include all the filterOptions-related\n // error paths for each sub-block, not for the validation result of the block itself. Otherwise, say there are 2 invalid blocks,\n // the blocks field will have 3 instead of 2 error paths - one for itself, and one for each invalid block.\n // Instead, we want only the 2 error paths for the individual, invalid blocks.\n fieldState.errorPaths = fieldState.errorPaths.filter(\n (errorPath) => errorPath !== path,\n )\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = includeSchema\n ? block.fields.find((blockField) => fieldIsID(blockField))\n : undefined\n }\n\n // Handle `blockType` field\n const fieldKey = rowPath + '.blockType'\n\n state[fieldKey] = {\n initialValue: row.blockType,\n value: row.blockType,\n }\n\n if (addedByServer) {\n state[fieldKey].addedByServer = addedByServer\n }\n\n if (includeSchema) {\n state[fieldKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n }\n\n // Handle `blockName` field\n const blockNameKey = rowPath + '.blockName'\n\n state[blockNameKey] = {}\n\n if (row.blockName) {\n state[blockNameKey].initialValue = row.blockName\n state[blockNameKey].value = row.blockName\n }\n\n if (includeSchema) {\n state[blockNameKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData: row,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: block.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: rowPath,\n parentSchemaPath: schemaPath + '.' + block.slug,\n permissions:\n fieldPermissions === true\n ? fieldPermissions\n : parentPermissions?.[field.name]?.blocks?.[block.slug] === true\n ? true\n : parentPermissions?.[field.name]?.blocks?.[block.slug]?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n blockType: row.blockType,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n acc.rowMetadata.push(newRow)\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n acc.rowMetadata[acc.rowMetadata.length - 1].collapsed = true\n }\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[path] = fieldState\n }\n\n const groupSelect = select?.[field.name]\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: data?.[field.name] || {},\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions:\n typeof fieldPermissions === 'boolean' ? fieldPermissions : fieldPermissions?.fields,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof groupSelect === 'object' ? groupSelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n if (typeof field.relationTo === 'string') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n } else {\n fieldState.filterOptions = field.relationTo.reduce((acc, relation) => {\n acc[relation] = field.filterOptions\n return acc\n }, {})\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await resolveFilterOptions(field.filterOptions, {\n id,\n blockData,\n data: fullData,\n relationTo: field.relationTo,\n req,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'select': {\n if (typeof field.filterOptions === 'function') {\n fieldState.selectFilterOptions = field.filterOptions({\n data: fullData,\n options: field.options,\n req,\n siblingData: data,\n })\n }\n\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n default: {\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n // Add field to state\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field) && !fieldAffectsData(field)) {\n // Handle field types that do not use names (row, collapsible, unnamed group etc)\n\n if (!filter || filter(args)) {\n state[path] = {\n disableFormData: true,\n }\n\n // Presentational containers are hidden client-side via `withCondition`, which reads\n // `passesCondition` from their own state entry. Must be set here since these fields\n // are excluded from the short-circuit above (which would otherwise carry the flag).\n if (passesCondition === false) {\n state[path].passesCondition = false\n }\n }\n\n await iterateFields({\n id,\n mockRSCs,\n select,\n selectMode,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: fieldIsLocalized(field) || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: parentPermissions, // TODO: Verify this is correct\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tab') {\n const isNamedTab = tabHasName(field)\n\n if (isNamedTab) {\n const shouldContinue = stripUnselectedFields({\n field: { ...field, type: 'tab' },\n select,\n selectMode,\n siblingDoc: data?.[field.name] || {},\n })\n\n if (!shouldContinue) {\n return\n }\n }\n\n // Tab visibility on the client is keyed by `field.id`, not `path` (like all other fields).\n if (field?.id) {\n state[field.id] = {\n passesCondition,\n }\n\n // Flag newly added tab entries so the client accepts them during merge.\n // Otherwise, tabs revealed after a hidden ancestor becomes visible would never make it into client form state.\n if (!renderAllFields && !previousFormState?.[field.id]) {\n state[field.id].addedByServer = true\n }\n }\n\n if (!passesCondition) {\n return\n }\n\n let childPermissions: SanitizedFieldsPermissions\n let tabSelect: SelectType | undefined\n\n if (isNamedTab) {\n if (parentPermissions === true) {\n childPermissions = true\n } else {\n const tabPermissions = parentPermissions?.[field.name]\n childPermissions = tabPermissions === true ? true : tabPermissions?.fields\n }\n\n if (typeof select?.[field.name] === 'object') {\n tabSelect = select?.[field.name] as SelectType\n }\n } else {\n childPermissions = parentPermissions\n tabSelect = select\n }\n\n return iterateFields({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: isNamedTab ? data?.[field.name] || {} : data,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: childPermissions,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: tabSelect,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n if (!filter || filter(args)) {\n state[path] = {\n disableFormData: true,\n }\n }\n\n return iterateFields({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: fieldIsLocalized(field) || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: parentPermissions,\n preferences,\n previousFormState,\n renderAllFields,\n renderFieldFn,\n req,\n select,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[path] = fieldState\n state[path].disableFormData = true\n }\n }\n\n if (renderFieldFn && !fieldIsHiddenOrDisabled(field)) {\n const fieldConfig = fieldSchemaMap.get(schemaPath)\n\n if (!fieldConfig && !mockRSCs) {\n if (schemaPath.endsWith('.blockType')) {\n return\n } else {\n throw new Error(`Field config not found for ${schemaPath}`)\n }\n }\n\n if (!state[path]) {\n // Some fields (ie `Tab`) do not live in form state\n // therefore we cannot attach customComponents to them\n return\n }\n\n if (addedByServer) {\n state[path].addedByServer = addedByServer\n }\n\n renderFieldFn({\n id,\n clientFieldSchemaMap,\n collectionSlug,\n data: fullData,\n fieldConfig: fieldConfig as Field,\n fieldSchemaMap,\n fieldState: state[path],\n formState: state,\n indexPath,\n lastRenderedPath,\n mockRSCs,\n operation,\n parentPath,\n parentSchemaPath,\n path,\n permissions: fieldPermissions,\n preferences,\n previousFieldState: previousFormState?.[path],\n readOnly,\n renderAllFields,\n req,\n schemaPath,\n siblingData: data,\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"addFieldStatePromise.js","names":["ObjectIdImport","getBlockSelect","stripUnselectedFields","validateBlocksFilterOptions","deepCopyObjectSimple","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","fieldIsID","fieldIsLocalized","tabHasName","resolveFilterOptions","isRowCollapsed","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","blockData","clientFieldSchemaMap","collectionSlug","data","field","fieldSchemaMap","filter","forceFullValue","fullData","globalSlug","includeSchema","indexPath","mockRSCs","omitParents","operation","parentPath","parentPermissions","parentSchemaPath","passesCondition","path","preferences","previousFormState","readOnly","renderAllFields","renderFieldFn","req","schemaPath","select","selectMode","skipConditionChecks","skipValidation","state","console","warn","fieldPermissions","fieldState","lastRenderedPath","addedByServer","fieldSchema","isPresentationalWithSubFields","type","name","undefined","value","initialValue","hasPermission","read","access","collection","payload","collections","config","global","globals","find","g","slug","siblingData","validate","validationResult","jsonError","JSON","parse","e","event","previousValue","err","logger","error","msg","errorPath","errorPaths","includes","push","valid","errorMessage","arrayValue","Array","isArray","arraySelect","promises","rows","reduce","acc","row","rowIndex","rowPath","toHexString","idKey","fields","localized","parentIndexPath","parentPassesCondition","permissions","previousRow","prevRow","newRow","isLoading","isCollapsed","collapsedPrefs","collapsed","Promise","all","length","disableFormData","blocksValue","filterOptionsValidationResult","filterOptions","blocksFilterOptions","allowedBlockSlugs","rowMetadata","i","blockTypeToMatch","blockType","block","blocks","Error","blockSelect","blockSelectMode","invalidBlockSlugs","t","blockField","fieldKey","blockNameKey","blockName","groupSelect","relationTo","relation","query","user","hasMany","relationshipValue","map","relationship","selectFilterOptions","options","isNamedTab","shouldContinue","siblingDoc","childPermissions","tabSelect","tabPermissions","tabs","tab","fieldConfig","get","endsWith","formState","previousFieldState"],"sources":["../../../src/forms/fieldSchemasToFormState/addFieldStatePromise.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientFieldSchemaMap,\n Data,\n DocumentPreferences,\n Field,\n FieldSchemaMap,\n FieldState,\n FlattenedBlock,\n FormState,\n FormStateWithoutComponents,\n PayloadRequest,\n Row,\n SanitizedFieldPermissions,\n SanitizedFieldsPermissions,\n SelectMode,\n SelectType,\n TabAsField,\n Validate,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { getBlockSelect, stripUnselectedFields, validateBlocksFilterOptions } from 'payload'\nimport {\n deepCopyObjectSimple,\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsLocalized,\n tabHasName,\n} from 'payload/shared'\n\nimport type { RenderFieldMethod } from './types.js'\n\nimport { resolveFilterOptions } from '../../utilities/resolveFilterOptions.js'\nimport { isRowCollapsed } from './isRowCollapsed.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (fieldPath: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n /**\n * Data of the nearest parent block, or undefined\n */\n blockData: Data | undefined\n clientFieldSchemaMap?: ClientFieldSchemaMap\n collectionSlug?: string\n data: Data\n field: Field | TabAsField\n fieldIndex: number\n fieldSchemaMap: FieldSchemaMap\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n globalSlug?: string\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n indexPath: string\n mockRSCs?: BuildFormStateArgs['mockRSCs']\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n parentIndexPath: string\n parentPath: string\n parentPermissions: SanitizedFieldsPermissions\n parentSchemaPath: string\n passesCondition: boolean\n path: string\n preferences: DocumentPreferences\n previousFormState: FormState\n readOnly?: boolean\n renderAllFields: boolean\n renderFieldFn: RenderFieldMethod\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n schemaPath: string\n select?: SelectType\n selectMode?: SelectMode\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormStateWithoutComponents\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n field,\n fieldSchemaMap,\n filter,\n forceFullValue = false,\n fullData,\n globalSlug,\n includeSchema = false,\n indexPath,\n mockRSCs,\n omitParents = false,\n operation,\n parentPath,\n parentPermissions,\n parentSchemaPath,\n passesCondition,\n path,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n schemaPath,\n select,\n selectMode,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (!args.clientFieldSchemaMap && args.renderFieldFn) {\n // eslint-disable-next-line no-console\n console.warn(\n 'clientFieldSchemaMap is not passed to addFieldStatePromise - this will reduce performance',\n )\n }\n\n let fieldPermissions: SanitizedFieldPermissions = true\n\n const fieldState: FieldState = {}\n\n const lastRenderedPath = previousFormState?.[path]?.lastRenderedPath\n\n // Append only if true to avoid sending '$undefined' through the network\n if (lastRenderedPath) {\n fieldState.lastRenderedPath = lastRenderedPath\n }\n\n // If we're rendering all fields, no need to flag this as added by server\n const addedByServer = !renderAllFields && !previousFormState?.[path]\n\n // Append only if true to avoid sending '$undefined' through the network\n if (addedByServer) {\n fieldState.addedByServer = true\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (passesCondition === false) {\n fieldState.passesCondition = false\n }\n\n // Append only if true to avoid sending '$undefined' through the network\n if (includeSchema) {\n fieldState.fieldSchema = field\n }\n\n // Short-circuit hidden fields to prevent recursing and rendering. Two exclusions:\n // - `tab`: visibility is keyed by `field.id` (not `path`); the tab branch owns that write.\n // - presentational containers (row, collapsible, unnamed group): they hold no value, so\n // returning here drops their nested fields' values.\n const isPresentationalWithSubFields = fieldHasSubFields(field) && !fieldAffectsData(field)\n\n if (passesCondition === false && field.type !== 'tab' && !isPresentationalWithSubFields) {\n if (fieldAffectsData(field) && data?.[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n return\n }\n\n if (fieldAffectsData(field) && !fieldIsHiddenOrDisabled(field) && field.type !== 'tab') {\n fieldPermissions =\n parentPermissions === true\n ? parentPermissions\n : deepCopyObjectSimple(parentPermissions?.[field.name])\n\n let hasPermission: boolean =\n fieldPermissions === true || deepCopyObjectSimple(fieldPermissions?.read)\n\n if (typeof field?.access?.read === 'function') {\n const collection = collectionSlug\n ? (req.payload.collections[collectionSlug]?.config ?? null)\n : null\n const global = globalSlug\n ? (req.payload.globals.config.find((g) => g.slug === globalSlug) ?? null)\n : null\n\n hasPermission = await field.access.read({\n id,\n blockData,\n data: fullData,\n req,\n siblingData: data,\n ...(collection ? { collection } : { global }),\n })\n } else {\n hasPermission = true\n }\n\n if (!hasPermission) {\n return\n }\n\n const validate: Validate = 'validate' in field ? field.validate : undefined\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name])\n } catch (e) {\n jsonError = e\n }\n }\n\n try {\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n blockData,\n collectionSlug,\n data: fullData,\n event: 'onChange',\n // @AlessioGr added `jsonError` in https://github.com/payloadcms/payload/commit/c7ea62a39473408c3ea912c4fbf73e11be4b538d\n // @ts-expect-error-next-line\n jsonError,\n operation,\n preferences,\n previousValue: previousFormState?.[path]?.initialValue,\n req,\n siblingData: data,\n })\n } catch (err) {\n validationResult = `Error validating field at path: ${path}`\n\n req.payload.logger.error({\n err,\n msg: validationResult,\n })\n }\n }\n\n /**\n * This function adds the error **path** to the current field and all its parents. If a field is invalid, all its parents are also invalid.\n * It does not add the error **message** to the current field, as that shouldn't apply to all parents.\n * This is done separately below.\n */\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths) {\n fieldState.errorPaths = []\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(path)\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const arraySelect = select?.[field.name]\n\n const { promises, rows } = arrayValue.reduce(\n (acc, row, rowIndex: number) => {\n const rowPath = path + '.' + rowIndex\n\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n const idKey = rowPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = field.fields.find((field) => fieldIsID(field))\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: rowPath,\n parentSchemaPath: schemaPath,\n permissions:\n fieldPermissions === true ? fieldPermissions : fieldPermissions?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n if (!acc.rows) {\n acc.rows = []\n }\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n // add addedByServer flag\n if (!previousRow) {\n newRow.addedByServer = true\n }\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n newRow.collapsed = true\n }\n\n acc.rows.push(newRow)\n\n return acc\n },\n {\n promises: [],\n rows: [],\n },\n )\n\n // Wait for all promises and update fields with the results\n await Promise.all(promises)\n\n if (rows) {\n fieldState.rows = rows\n }\n\n // Add values to field state\n if (data[field.name] !== null) {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n // Handle blocks filterOptions\n let filterOptionsValidationResult: Awaited<\n ReturnType<typeof validateBlocksFilterOptions>\n > | null = null\n if (field.filterOptions) {\n filterOptionsValidationResult = await validateBlocksFilterOptions({\n id,\n data: fullData,\n filterOptions: field.filterOptions,\n req,\n siblingData: data,\n value: data[field.name],\n })\n\n fieldState.blocksFilterOptions = filterOptionsValidationResult.allowedBlockSlugs\n }\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i: number) => {\n const blockTypeToMatch: string = row.blockType\n\n const block =\n req.payload.blocks[blockTypeToMatch] ??\n (field.blocks.find(\n (blockType) => typeof blockType !== 'string' && blockType.slug === blockTypeToMatch,\n ) as FlattenedBlock | undefined)\n\n if (!block) {\n throw new Error(\n `Block with type \"${row.blockType}\" was found in block data, but no block with that type is defined in the config for field with schema path ${schemaPath}.`,\n )\n }\n\n const { blockSelect, blockSelectMode } = getBlockSelect({\n block,\n select: select?.[field.name],\n selectMode,\n })\n\n const rowPath = path + '.' + i\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n // Handle block `id` field\n const idKey = rowPath + '.id'\n\n state[idKey] = {\n initialValue: row.id,\n value: row.id,\n }\n\n // If the blocks field fails filterOptions validation, add error paths to the individual blocks that are no longer allowed\n if (\n filterOptionsValidationResult?.invalidBlockSlugs?.length &&\n filterOptionsValidationResult.invalidBlockSlugs.includes(row.blockType)\n ) {\n state[idKey].errorMessage = req.t('validation:invalidBlock', {\n block: row.blockType,\n })\n state[idKey].valid = false\n addErrorPathToParent(idKey)\n\n // If the error is due to block filterOptions, we want the blocks field (fieldState) to include all the filterOptions-related\n // error paths for each sub-block, not for the validation result of the block itself. Otherwise, say there are 2 invalid blocks,\n // the blocks field will have 3 instead of 2 error paths - one for itself, and one for each invalid block.\n // Instead, we want only the 2 error paths for the individual, invalid blocks.\n fieldState.errorPaths = fieldState.errorPaths.filter(\n (errorPath) => errorPath !== path,\n )\n }\n\n if (includeSchema) {\n state[idKey].fieldSchema = includeSchema\n ? block.fields.find((blockField) => fieldIsID(blockField))\n : undefined\n }\n\n // Handle `blockType` field\n const fieldKey = rowPath + '.blockType'\n\n state[fieldKey] = {\n initialValue: row.blockType,\n value: row.blockType,\n }\n\n if (addedByServer) {\n state[fieldKey].addedByServer = addedByServer\n }\n\n if (includeSchema) {\n state[fieldKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n }\n\n // Handle `blockName` field\n const blockNameKey = rowPath + '.blockName'\n\n state[blockNameKey] = {}\n\n if (row.blockName) {\n state[blockNameKey].initialValue = row.blockName\n state[blockNameKey].value = row.blockName\n }\n\n if (includeSchema) {\n state[blockNameKey].fieldSchema = block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData: row,\n clientFieldSchemaMap,\n collectionSlug,\n data: row,\n fields: block.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: rowPath,\n parentSchemaPath: schemaPath + '.' + block.slug,\n permissions:\n fieldPermissions === true\n ? fieldPermissions\n : parentPermissions?.[field.name]?.blocks?.[block.slug] === true\n ? true\n : parentPermissions?.[field.name]?.blocks?.[block.slug]?.fields || {},\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n // First, check if `previousFormState` has a matching row\n const previousRow: Row = (previousFormState?.[path]?.rows || []).find(\n (prevRow) => prevRow.id === row.id,\n )\n\n const newRow: Row = {\n id: row.id,\n blockType: row.blockType,\n isLoading: false,\n }\n\n if (previousRow?.lastRenderedPath) {\n newRow.lastRenderedPath = previousRow.lastRenderedPath\n }\n\n acc.rowMetadata.push(newRow)\n\n const isCollapsed = isRowCollapsed({\n collapsedPrefs: preferences?.fields?.[path]?.collapsed,\n field,\n previousRow,\n row,\n })\n\n if (isCollapsed) {\n acc.rowMetadata[acc.rowMetadata.length - 1].collapsed = true\n }\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[path] = fieldState\n }\n\n const groupSelect = select?.[field.name]\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: data?.[field.name] || {},\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: '',\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions:\n typeof fieldPermissions === 'boolean' ? fieldPermissions : fieldPermissions?.fields,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: typeof groupSelect === 'object' ? groupSelect : undefined,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n if (typeof field.relationTo === 'string') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n } else {\n fieldState.filterOptions = field.relationTo.reduce((acc, relation) => {\n acc[relation] = field.filterOptions\n return acc\n }, {})\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await resolveFilterOptions(field.filterOptions, {\n id,\n blockData,\n data: fullData,\n relationTo: field.relationTo,\n req,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n case 'select': {\n if (typeof field.filterOptions === 'function') {\n fieldState.selectFilterOptions = await field.filterOptions({\n data: fullData,\n options: field.options,\n req,\n siblingData: data,\n })\n }\n\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n\n default: {\n if (data[field.name] !== undefined) {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n }\n\n // Add field to state\n if (!filter || filter(args)) {\n state[path] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field) && !fieldAffectsData(field)) {\n // Handle field types that do not use names (row, collapsible, unnamed group etc)\n\n if (!filter || filter(args)) {\n state[path] = {\n disableFormData: true,\n }\n\n // Presentational containers are hidden client-side via `withCondition`, which reads\n // `passesCondition` from their own state entry. Must be set here since these fields\n // are excluded from the short-circuit above (which would otherwise carry the flag).\n if (passesCondition === false) {\n state[path].passesCondition = false\n }\n }\n\n await iterateFields({\n id,\n mockRSCs,\n select,\n selectMode,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: fieldIsLocalized(field) || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: parentPermissions, // TODO: Verify this is correct\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tab') {\n const isNamedTab = tabHasName(field)\n\n if (isNamedTab) {\n const shouldContinue = stripUnselectedFields({\n field: { ...field, type: 'tab' },\n select,\n selectMode,\n siblingDoc: data?.[field.name] || {},\n })\n\n if (!shouldContinue) {\n return\n }\n }\n\n // Tab visibility on the client is keyed by `field.id`, not `path` (like all other fields).\n if (field?.id) {\n state[field.id] = {\n passesCondition,\n }\n\n // Flag newly added tab entries so the client accepts them during merge.\n // Otherwise, tabs revealed after a hidden ancestor becomes visible would never make it into client form state.\n if (!renderAllFields && !previousFormState?.[field.id]) {\n state[field.id].addedByServer = true\n }\n }\n\n if (!passesCondition) {\n return\n }\n\n let childPermissions: SanitizedFieldsPermissions\n let tabSelect: SelectType | undefined\n\n if (isNamedTab) {\n if (parentPermissions === true) {\n childPermissions = true\n } else {\n const tabPermissions = parentPermissions?.[field.name]\n childPermissions = tabPermissions === true ? true : tabPermissions?.fields\n }\n\n if (typeof select?.[field.name] === 'object') {\n tabSelect = select?.[field.name] as SelectType\n }\n } else {\n childPermissions = parentPermissions\n tabSelect = select\n }\n\n return iterateFields({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: field.localized || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data: isNamedTab ? data?.[field.name] || {} : data,\n fields: field.fields,\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n mockRSCs,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: childPermissions,\n preferences,\n previousFormState,\n readOnly,\n renderAllFields,\n renderFieldFn,\n req,\n select: tabSelect,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n if (!filter || filter(args)) {\n state[path] = {\n disableFormData: true,\n }\n }\n\n return iterateFields({\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: fieldIsLocalized(field) || anyParentLocalized,\n blockData,\n clientFieldSchemaMap,\n collectionSlug,\n data,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n fieldSchemaMap,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentIndexPath: indexPath,\n parentPassesCondition: passesCondition,\n parentPath: path,\n parentSchemaPath: schemaPath,\n permissions: parentPermissions,\n preferences,\n previousFormState,\n renderAllFields,\n renderFieldFn,\n req,\n select,\n selectMode,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[path] = fieldState\n state[path].disableFormData = true\n }\n }\n\n if (renderFieldFn && !fieldIsHiddenOrDisabled(field)) {\n const fieldConfig = fieldSchemaMap.get(schemaPath)\n\n if (!fieldConfig && !mockRSCs) {\n if (schemaPath.endsWith('.blockType')) {\n return\n } else {\n throw new Error(`Field config not found for ${schemaPath}`)\n }\n }\n\n if (!state[path]) {\n // Some fields (ie `Tab`) do not live in form state\n // therefore we cannot attach customComponents to them\n return\n }\n\n if (addedByServer) {\n state[path].addedByServer = addedByServer\n }\n\n renderFieldFn({\n id,\n clientFieldSchemaMap,\n collectionSlug,\n data: fullData,\n fieldConfig: fieldConfig as Field,\n fieldSchemaMap,\n fieldState: state[path],\n formState: state,\n indexPath,\n lastRenderedPath,\n mockRSCs,\n operation,\n parentPath,\n parentSchemaPath,\n path,\n permissions: fieldPermissions,\n preferences,\n previousFieldState: previousFormState?.[path],\n readOnly,\n renderAllFields,\n req,\n schemaPath,\n siblingData: data,\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -53,10 +53,10 @@ export const RootProvider = t0 => {
53
53
  let t1;
54
54
  if ($[0] !== RouterAdapter || $[1] !== children || $[2] !== config || $[3] !== dateFNSKey || $[4] !== dndContextID || $[5] !== embed || $[6] !== fallbackLang || $[7] !== highContrastMode || $[8] !== isNavOpen || $[9] !== languageCode || $[10] !== languageOptions || $[11] !== locale || $[12] !== permissions || $[13] !== serverFunction || $[14] !== theme || $[15] !== translations || $[16] !== user) {
55
55
  t1 = _jsxs(ClickOutsideProvider, {
56
- children: [_jsx(RouterAdapter, {
57
- children: _jsx(ServerFunctionsProvider, {
58
- serverFunction,
59
- children: _jsx(RouteTransitionProvider, {
56
+ children: [_jsx(RouteTransitionProvider, {
57
+ children: _jsx(RouterAdapter, {
58
+ children: _jsx(ServerFunctionsProvider, {
59
+ serverFunction,
60
60
  children: _jsx(RouteCache, {
61
61
  cachingEnabled: process.env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH === "true",
62
62
  children: _jsx(ConfigProvider, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","DndContext","pointerWithin","ModalContainer","ModalProvider","ScrollInfoProvider","React","CloseModalOnRouteChange","DrawerStackProvider","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ClickOutsideProvider","WindowInfoProvider","AuthProvider","ClientFunctionProvider","ConfigProvider","DocumentEventsProvider","EmbedProvider","HierarchyProvider","LocaleProvider","PreferencesProvider","RouteCache","RouteTransitionProvider","ServerFunctionsProvider","ThemeProvider","ToastContainer","TranslationProvider","UploadHandlersProvider","RootProvider","t0","$","children","config","dateFNSKey","embed","fallbackLang","highContrastMode","isNavOpen","languageCode","languageOptions","locale","permissions","RouterAdapter","serverFunction","theme","translations","user","dndContextID","useId","t1","_jsxs","_jsx","cachingEnabled","process","env","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","language","breakpoints","l","m","s","xs","classPrefix","transTime","zIndex","initialIsOpen","collisionDetection","id"],"sources":["../../../src/providers/Root/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient, I18nOptions, Language } from '@payloadcms/translations'\nimport type {\n ClientConfig,\n LanguageOptions,\n Locale,\n RouterAdapterComponent,\n SanitizedPermissions,\n ServerFunctionClient,\n User,\n} from 'payload'\n\nimport { DndContext, pointerWithin } from '@dnd-kit/core'\nimport { ModalContainer, ModalProvider } from '@faceless-ui/modal'\nimport { ScrollInfoProvider } from '@faceless-ui/scroll-info'\nimport React from 'react'\n\nimport type { Theme } from '../Theme/index.js'\n\nimport { CloseModalOnRouteChange } from '../../elements/CloseModalOnRouteChange/index.js'\nimport { DrawerStackProvider } from '../../elements/Drawer/index.js'\nimport { LoadingOverlayProvider } from '../../elements/LoadingOverlay/index.js'\nimport { NavProvider } from '../../elements/Nav/context.js'\nimport { StayLoggedInModal } from '../../elements/StayLoggedIn/index.js'\nimport { StepNavProvider } from '../../elements/StepNav/index.js'\nimport { ClickOutsideProvider } from '../../providers/ClickOutside/index.js'\nimport { WindowInfoProvider } from '../../providers/WindowInfo/index.js'\nimport { AuthProvider } from '../Auth/index.js'\nimport { ClientFunctionProvider } from '../ClientFunction/index.js'\nimport { ConfigProvider } from '../Config/index.js'\nimport { DocumentEventsProvider } from '../DocumentEvents/index.js'\nimport { EmbedProvider } from '../Embed/index.js'\nimport { HierarchyProvider } from '../Hierarchy/index.js'\nimport { LocaleProvider } from '../Locale/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { RouteTransitionProvider } from '../RouteTransition/index.js'\nimport { ServerFunctionsProvider } from '../ServerFunctions/index.js'\nimport { ThemeProvider } from '../Theme/index.js'\nimport { ToastContainer } from '../ToastContainer/index.js'\nimport { TranslationProvider } from '../Translation/index.js'\nimport { UploadHandlersProvider } from '../UploadHandlers/index.js'\n\ntype Props = {\n readonly children: React.ReactNode\n readonly config: ClientConfig\n readonly dateFNSKey: Language['dateFNSKey']\n readonly embed?: boolean\n readonly fallbackLang: I18nOptions['fallbackLanguage']\n readonly highContrastMode: boolean\n readonly isNavOpen?: boolean\n readonly languageCode: string\n readonly languageOptions: LanguageOptions\n readonly locale?: Locale['code']\n readonly permissions: SanitizedPermissions\n readonly RouterAdapter: RouterAdapterComponent\n readonly serverFunction: ServerFunctionClient\n readonly theme: Theme\n readonly translations: I18nClient['translations']\n readonly user: null | User\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n config,\n dateFNSKey,\n embed,\n fallbackLang,\n highContrastMode,\n isNavOpen,\n languageCode,\n languageOptions,\n locale,\n permissions,\n RouterAdapter,\n serverFunction,\n theme,\n translations,\n user,\n}) => {\n const dndContextID = React.useId()\n\n return (\n <ClickOutsideProvider>\n <RouterAdapter>\n <ServerFunctionsProvider serverFunction={serverFunction}>\n <RouteTransitionProvider>\n <RouteCache\n cachingEnabled={process.env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH === 'true'}\n >\n <ConfigProvider config={config}>\n <ClientFunctionProvider>\n <TranslationProvider\n dateFNSKey={dateFNSKey}\n fallbackLang={fallbackLang}\n language={languageCode}\n languageOptions={languageOptions}\n translations={translations}\n >\n <WindowInfoProvider\n breakpoints={{\n l: '(max-width: 1440px)',\n m: '(max-width: 1024px)',\n s: '(max-width: 768px)',\n xs: '(max-width: 400px)',\n }}\n >\n <ScrollInfoProvider>\n <ModalProvider classPrefix=\"payload\" transTime={0} zIndex=\"var(--z-modal)\">\n <DrawerStackProvider>\n <CloseModalOnRouteChange />\n <AuthProvider permissions={permissions} user={user}>\n <PreferencesProvider>\n <HierarchyProvider>\n <ThemeProvider highContrastMode={highContrastMode} theme={theme}>\n <EmbedProvider embed={embed}>\n <LocaleProvider locale={locale}>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <NavProvider initialIsOpen={isNavOpen}>\n <UploadHandlersProvider>\n <DndContext\n collisionDetection={pointerWithin}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n >\n {children}\n </DndContext>\n </UploadHandlersProvider>\n </NavProvider>\n </DocumentEventsProvider>\n </LoadingOverlayProvider>\n </StepNavProvider>\n </LocaleProvider>\n </EmbedProvider>\n </ThemeProvider>\n </HierarchyProvider>\n </PreferencesProvider>\n <ModalContainer />\n <StayLoggedInModal />\n </AuthProvider>\n </DrawerStackProvider>\n </ModalProvider>\n </ScrollInfoProvider>\n </WindowInfoProvider>\n </TranslationProvider>\n </ClientFunctionProvider>\n </ConfigProvider>\n </RouteCache>\n </RouteTransitionProvider>\n </ServerFunctionsProvider>\n </RouterAdapter>\n <ToastContainer config={config} />\n </ClickOutsideProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","DndContext","pointerWithin","ModalContainer","ModalProvider","ScrollInfoProvider","React","CloseModalOnRouteChange","DrawerStackProvider","LoadingOverlayProvider","NavProvider","StayLoggedInModal","StepNavProvider","ClickOutsideProvider","WindowInfoProvider","AuthProvider","ClientFunctionProvider","ConfigProvider","DocumentEventsProvider","EmbedProvider","HierarchyProvider","LocaleProvider","PreferencesProvider","RouteCache","RouteTransitionProvider","ServerFunctionsProvider","ThemeProvider","ToastContainer","TranslationProvider","UploadHandlersProvider","RootProvider","t0","$","children","config","dateFNSKey","embed","fallbackLang","highContrastMode","isNavOpen","languageCode","languageOptions","locale","permissions","RouterAdapter","serverFunction","theme","translations","user","dndContextID","useId","t1","_jsxs","_jsx","cachingEnabled","process","env","NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH","language","breakpoints","l","m","s","xs","classPrefix","transTime","zIndex","initialIsOpen","collisionDetection","id"],"sources":["../../../src/providers/Root/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient, I18nOptions, Language } from '@payloadcms/translations'\nimport type {\n ClientConfig,\n LanguageOptions,\n Locale,\n RouterAdapterComponent,\n SanitizedPermissions,\n ServerFunctionClient,\n User,\n} from 'payload'\n\nimport { DndContext, pointerWithin } from '@dnd-kit/core'\nimport { ModalContainer, ModalProvider } from '@faceless-ui/modal'\nimport { ScrollInfoProvider } from '@faceless-ui/scroll-info'\nimport React from 'react'\n\nimport type { Theme } from '../Theme/index.js'\n\nimport { CloseModalOnRouteChange } from '../../elements/CloseModalOnRouteChange/index.js'\nimport { DrawerStackProvider } from '../../elements/Drawer/index.js'\nimport { LoadingOverlayProvider } from '../../elements/LoadingOverlay/index.js'\nimport { NavProvider } from '../../elements/Nav/context.js'\nimport { StayLoggedInModal } from '../../elements/StayLoggedIn/index.js'\nimport { StepNavProvider } from '../../elements/StepNav/index.js'\nimport { ClickOutsideProvider } from '../../providers/ClickOutside/index.js'\nimport { WindowInfoProvider } from '../../providers/WindowInfo/index.js'\nimport { AuthProvider } from '../Auth/index.js'\nimport { ClientFunctionProvider } from '../ClientFunction/index.js'\nimport { ConfigProvider } from '../Config/index.js'\nimport { DocumentEventsProvider } from '../DocumentEvents/index.js'\nimport { EmbedProvider } from '../Embed/index.js'\nimport { HierarchyProvider } from '../Hierarchy/index.js'\nimport { LocaleProvider } from '../Locale/index.js'\nimport { PreferencesProvider } from '../Preferences/index.js'\nimport { RouteCache } from '../RouteCache/index.js'\nimport { RouteTransitionProvider } from '../RouteTransition/index.js'\nimport { ServerFunctionsProvider } from '../ServerFunctions/index.js'\nimport { ThemeProvider } from '../Theme/index.js'\nimport { ToastContainer } from '../ToastContainer/index.js'\nimport { TranslationProvider } from '../Translation/index.js'\nimport { UploadHandlersProvider } from '../UploadHandlers/index.js'\n\ntype Props = {\n readonly children: React.ReactNode\n readonly config: ClientConfig\n readonly dateFNSKey: Language['dateFNSKey']\n readonly embed?: boolean\n readonly fallbackLang: I18nOptions['fallbackLanguage']\n readonly highContrastMode: boolean\n readonly isNavOpen?: boolean\n readonly languageCode: string\n readonly languageOptions: LanguageOptions\n readonly locale?: Locale['code']\n readonly permissions: SanitizedPermissions\n readonly RouterAdapter: RouterAdapterComponent\n readonly serverFunction: ServerFunctionClient\n readonly theme: Theme\n readonly translations: I18nClient['translations']\n readonly user: null | User\n}\n\nexport const RootProvider: React.FC<Props> = ({\n children,\n config,\n dateFNSKey,\n embed,\n fallbackLang,\n highContrastMode,\n isNavOpen,\n languageCode,\n languageOptions,\n locale,\n permissions,\n RouterAdapter,\n serverFunction,\n theme,\n translations,\n user,\n}) => {\n const dndContextID = React.useId()\n\n return (\n <ClickOutsideProvider>\n <RouteTransitionProvider>\n <RouterAdapter>\n <ServerFunctionsProvider serverFunction={serverFunction}>\n <RouteCache\n cachingEnabled={process.env.NEXT_PUBLIC_ENABLE_ROUTER_CACHE_REFRESH === 'true'}\n >\n <ConfigProvider config={config}>\n <ClientFunctionProvider>\n <TranslationProvider\n dateFNSKey={dateFNSKey}\n fallbackLang={fallbackLang}\n language={languageCode}\n languageOptions={languageOptions}\n translations={translations}\n >\n <WindowInfoProvider\n breakpoints={{\n l: '(max-width: 1440px)',\n m: '(max-width: 1024px)',\n s: '(max-width: 768px)',\n xs: '(max-width: 400px)',\n }}\n >\n <ScrollInfoProvider>\n <ModalProvider classPrefix=\"payload\" transTime={0} zIndex=\"var(--z-modal)\">\n <DrawerStackProvider>\n <CloseModalOnRouteChange />\n <AuthProvider permissions={permissions} user={user}>\n <PreferencesProvider>\n <HierarchyProvider>\n <ThemeProvider highContrastMode={highContrastMode} theme={theme}>\n <EmbedProvider embed={embed}>\n <LocaleProvider locale={locale}>\n <StepNavProvider>\n <LoadingOverlayProvider>\n <DocumentEventsProvider>\n <NavProvider initialIsOpen={isNavOpen}>\n <UploadHandlersProvider>\n <DndContext\n collisionDetection={pointerWithin}\n // Provide stable ID to fix hydration issues: https://github.com/clauderic/dnd-kit/issues/926\n id={dndContextID}\n >\n {children}\n </DndContext>\n </UploadHandlersProvider>\n </NavProvider>\n </DocumentEventsProvider>\n </LoadingOverlayProvider>\n </StepNavProvider>\n </LocaleProvider>\n </EmbedProvider>\n </ThemeProvider>\n </HierarchyProvider>\n </PreferencesProvider>\n <ModalContainer />\n <StayLoggedInModal />\n </AuthProvider>\n </DrawerStackProvider>\n </ModalProvider>\n </ScrollInfoProvider>\n </WindowInfoProvider>\n </TranslationProvider>\n </ClientFunctionProvider>\n </ConfigProvider>\n </RouteCache>\n </ServerFunctionsProvider>\n </RouterAdapter>\n </RouteTransitionProvider>\n <ToastContainer config={config} />\n </ClickOutsideProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -21,6 +21,8 @@ type RouteTransitionProps = {
21
21
  };
22
22
  type StartRouteTransition = (callback?: () => void) => void;
23
23
  type RouteTransitionContextValue = {
24
+ /** Keeps the route transition active until the returned function is called. */
25
+ beginRouteTransition: () => () => void;
24
26
  isTransitioning: boolean;
25
27
  startRouteTransition: StartRouteTransition;
26
28
  transitionProgress: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6DlE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAE3D,KAAK,2BAA2B,GAAG;IACjC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqFlE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAE3D,KAAK,2BAA2B,GAAG;IACjC,+EAA+E;IAC/E,oBAAoB,EAAE,MAAM,MAAM,IAAI,CAAA;IACtC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAcD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
@@ -20,12 +20,14 @@ import React, { startTransition, useCallback, useEffect, useOptimistic, useRef }
20
20
  * )
21
21
  */
22
22
  export const RouteTransitionProvider = t0 => {
23
- const $ = _c(11);
23
+ const $ = _c(12);
24
24
  const {
25
25
  children
26
26
  } = t0;
27
- const [isTransitioning, setIsTransitioning] = useOptimistic(false);
27
+ const [isOptimisticallyTransitioning, setIsOptimisticallyTransitioning] = useOptimistic(false);
28
+ const [activeRouteTransitions, setActiveRouteTransitions] = React.useState(0);
28
29
  const [transitionProgress, setTransitionProgress] = React.useState(0);
30
+ const isTransitioning = isOptimisticallyTransitioning || activeRouteTransitions > 0;
29
31
  const transitionProgressRef = useRef(transitionProgress);
30
32
  const timerID = useRef(null);
31
33
  let t1;
@@ -66,42 +68,62 @@ export const RouteTransitionProvider = t0 => {
66
68
  }
67
69
  useEffect(t2, t3);
68
70
  let t4;
69
- if ($[4] !== setIsTransitioning) {
71
+ if ($[4] !== setIsOptimisticallyTransitioning) {
70
72
  t4 = callback => {
71
73
  startTransition(() => {
72
- setIsTransitioning(true);
74
+ setIsOptimisticallyTransitioning(true);
73
75
  if (typeof callback === "function") {
74
76
  callback();
75
77
  }
76
78
  });
77
79
  };
78
- $[4] = setIsTransitioning;
80
+ $[4] = setIsOptimisticallyTransitioning;
79
81
  $[5] = t4;
80
82
  } else {
81
83
  t4 = $[5];
82
84
  }
83
85
  const startRouteTransition = t4;
84
86
  let t5;
85
- if ($[6] !== children || $[7] !== isTransitioning || $[8] !== startRouteTransition || $[9] !== transitionProgress) {
86
- t5 = _jsx(RouteTransitionContext, {
87
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
88
+ t5 = () => {
89
+ let hasEnded = false;
90
+ setActiveRouteTransitions(_temp);
91
+ return () => {
92
+ if (hasEnded) {
93
+ return;
94
+ }
95
+ hasEnded = true;
96
+ setActiveRouteTransitions(_temp2);
97
+ };
98
+ };
99
+ $[6] = t5;
100
+ } else {
101
+ t5 = $[6];
102
+ }
103
+ const beginRouteTransition = t5;
104
+ let t6;
105
+ if ($[7] !== children || $[8] !== isTransitioning || $[9] !== startRouteTransition || $[10] !== transitionProgress) {
106
+ t6 = _jsx(RouteTransitionContext, {
87
107
  value: {
108
+ beginRouteTransition,
88
109
  isTransitioning,
89
110
  startRouteTransition,
90
111
  transitionProgress
91
112
  },
92
113
  children
93
114
  });
94
- $[6] = children;
95
- $[7] = isTransitioning;
96
- $[8] = startRouteTransition;
97
- $[9] = transitionProgress;
98
- $[10] = t5;
115
+ $[7] = children;
116
+ $[8] = isTransitioning;
117
+ $[9] = startRouteTransition;
118
+ $[10] = transitionProgress;
119
+ $[11] = t6;
99
120
  } else {
100
- t5 = $[10];
121
+ t6 = $[11];
101
122
  }
102
- return t5;
123
+ return t6;
103
124
  };
104
125
  const RouteTransitionContext = /*#__PURE__*/React.createContext({
126
+ beginRouteTransition: () => () => undefined,
105
127
  isTransitioning: false,
106
128
  // Default implementation: just call the callback directly (no transition animation)
107
129
  startRouteTransition: callback => {
@@ -132,4 +154,10 @@ const RouteTransitionContext = /*#__PURE__*/React.createContext({
132
154
  * }
133
155
  */
134
156
  export const useRouteTransition = () => React.use(RouteTransitionContext);
157
+ function _temp(count) {
158
+ return count + 1;
159
+ }
160
+ function _temp2(count_0) {
161
+ return Math.max(0, count_0 - 1);
162
+ }
135
163
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isTransitioning","setIsTransitioning","transitionProgress","setTransitionProgress","useState","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","_jsx","RouteTransitionContext","value","createContext","useRouteTransition","use"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isTransitioning, setIsTransitioning] = useOptimistic(false)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsTransitioning],\n )\n\n return (\n <RouteTransitionContext value={{ isTransitioning, startRouteTransition, transitionProgress }}>\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition, useRouter } from '@payloadcms/ui'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isOptimisticallyTransitioning","setIsOptimisticallyTransitioning","activeRouteTransitions","setActiveRouteTransitions","useState","transitionProgress","setTransitionProgress","isTransitioning","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","hasEnded","_temp","_temp2","beginRouteTransition","t6","_jsx","RouteTransitionContext","value","createContext","undefined","useRouteTransition","use","count","count_0","max"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isOptimisticallyTransitioning, setIsOptimisticallyTransitioning] = useOptimistic(false)\n const [activeRouteTransitions, setActiveRouteTransitions] = React.useState(0)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n const isTransitioning = isOptimisticallyTransitioning || activeRouteTransitions > 0\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsOptimisticallyTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsOptimisticallyTransitioning],\n )\n\n const beginRouteTransition = useCallback(() => {\n let hasEnded = false\n\n setActiveRouteTransitions((count) => count + 1)\n\n return () => {\n if (hasEnded) {\n return\n }\n\n hasEnded = true\n setActiveRouteTransitions((count) => Math.max(0, count - 1))\n }\n }, [])\n\n return (\n <RouteTransitionContext\n value={{\n beginRouteTransition,\n isTransitioning,\n startRouteTransition,\n transitionProgress,\n }}\n >\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n /** Keeps the route transition active until the returned function is called. */\n beginRouteTransition: () => () => void\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n beginRouteTransition: () => () => undefined,\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition, useRouter } from '@payloadcms/ui'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}