@payloadcms/ui 3.0.0-canary.e198dc5 → 3.0.0-canary.e1fc0e0

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 (70) hide show
  1. package/dist/elements/AppHeader/index.scss +0 -1
  2. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -1
  3. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  4. package/dist/elements/BulkUpload/AddFilesView/index.js +2 -0
  5. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  6. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/index.js +22 -42
  8. package/dist/elements/BulkUpload/index.js.map +1 -1
  9. package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
  10. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  11. package/dist/elements/DatePicker/DatePicker.js +1 -1
  12. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  13. package/dist/elements/DatePicker/library.scss +859 -0
  14. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  15. package/dist/elements/DeleteMany/index.js +16 -5
  16. package/dist/elements/DeleteMany/index.js.map +1 -1
  17. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  18. package/dist/elements/ListDrawer/DrawerContent.js +61 -57
  19. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  20. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  21. package/dist/elements/PublishMany/index.js +16 -5
  22. package/dist/elements/PublishMany/index.js.map +1 -1
  23. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  24. package/dist/elements/ReactSelect/index.js +1 -0
  25. package/dist/elements/ReactSelect/index.js.map +1 -1
  26. package/dist/elements/ReactSelect/index.scss +6 -1
  27. package/dist/elements/Table/DefaultCell/index.js +2 -2
  28. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  29. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  30. package/dist/elements/UnpublishMany/index.js +16 -5
  31. package/dist/elements/UnpublishMany/index.js.map +1 -1
  32. package/dist/elements/Upload/index.d.ts.map +1 -1
  33. package/dist/elements/Upload/index.js +2 -0
  34. package/dist/elements/Upload/index.js.map +1 -1
  35. package/dist/exports/client/{CodeEditor-4A6256PR.js → CodeEditor-VPUKDCXS.js} +1 -1
  36. package/dist/exports/client/{CodeEditor-4A6256PR.js.map → CodeEditor-VPUKDCXS.js.map} +1 -1
  37. package/dist/exports/client/{DatePicker-HNJMUG32.js → DatePicker-FUJV23KL.js} +2 -2
  38. package/dist/exports/client/{chunk-IHJK2MAT.js → chunk-UMJJTMDP.js} +2 -2
  39. package/dist/exports/client/{chunk-IHJK2MAT.js.map → chunk-UMJJTMDP.js.map} +4 -4
  40. package/dist/exports/client/index.d.ts +2 -1
  41. package/dist/exports/client/index.d.ts.map +1 -1
  42. package/dist/exports/client/index.js +22 -19
  43. package/dist/exports/client/index.js.map +4 -4
  44. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  45. package/dist/fields/Tabs/index.d.ts.map +1 -1
  46. package/dist/fields/Tabs/index.js +69 -53
  47. package/dist/fields/Tabs/index.js.map +1 -1
  48. package/dist/fields/Upload/Input.d.ts.map +1 -1
  49. package/dist/fields/Upload/Input.js +39 -36
  50. package/dist/fields/Upload/Input.js.map +1 -1
  51. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  52. package/dist/forms/Form/fieldReducer.js +7 -0
  53. package/dist/forms/Form/fieldReducer.js.map +1 -1
  54. package/dist/forms/useField/index.d.ts.map +1 -1
  55. package/dist/forms/useField/index.js +1 -1
  56. package/dist/forms/useField/index.js.map +1 -1
  57. package/dist/providers/Auth/index.d.ts +10 -6
  58. package/dist/providers/Auth/index.d.ts.map +1 -1
  59. package/dist/providers/Auth/index.js.map +1 -1
  60. package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -1
  61. package/dist/providers/Config/createClientConfig/fields.js +21 -3
  62. package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
  63. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  64. package/dist/providers/DocumentInfo/index.js +4 -0
  65. package/dist/providers/DocumentInfo/index.js.map +1 -1
  66. package/dist/providers/Selection/index.js +3 -3
  67. package/dist/providers/Selection/index.js.map +1 -1
  68. package/dist/styles.css +1 -1
  69. package/package.json +8 -8
  70. /package/dist/exports/client/{DatePicker-HNJMUG32.js.map → DatePicker-FUJV23KL.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObject","deepCopyObjectSimple","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","optimize","newState","Object","entries","forEach","path","field","oldField","newField","errorPaths","errors","message","initialValue","value","errorMessage","valid","segments","split","length","push","fieldErrorPath","parentPath","slice","join","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","key","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","updatedRows"],"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["'use client'\nimport type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObject, deepCopyObjectSimple } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState = {}\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n return newState\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) {\n delete newState[action.path]\n }\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ field, message }) => {\n newState[field] = {\n ...(newState[field] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = field.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: field,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObjectSimple(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) {\n duplicateRowMetadata.id = new ObjectId().toHexString()\n }\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) {\n duplicateRowState.id.value = new ObjectId().toHexString()\n duplicateRowState.id.initialValue = new ObjectId().toHexString()\n }\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObject","deepCopyObjectSimple","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","optimize","newState","Object","entries","forEach","path","field","oldField","newField","errorPaths","errors","message","initialValue","value","errorMessage","valid","segments","split","length","push","fieldErrorPath","parentPath","slice","join","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","key","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","filter","endsWith","idState","isValid","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","updatedRows"],"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["'use client'\nimport type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObject, deepCopyObjectSimple } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState = {}\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n return newState\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) {\n delete newState[action.path]\n }\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ field, message }) => {\n newState[field] = {\n ...(newState[field] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = field.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: field,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObjectSimple(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) {\n duplicateRowMetadata.id = new ObjectId().toHexString()\n }\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) {\n duplicateRowState.id.value = new ObjectId().toHexString()\n duplicateRowState.id.initialValue = new ObjectId().toHexString()\n }\n\n for (const key of Object.keys(duplicateRowState).filter((key) => key.endsWith('.id'))) {\n const idState = duplicateRowState[key]\n\n if (idState && typeof idState.value === 'string' && ObjectId.isValid(idState.value)) {\n duplicateRowState[key].value = new ObjectId().toHexString()\n duplicateRowState[key].initialValue = new ObjectId().toHexString()\n }\n }\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAkBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,WAAY,OAAO,KAAG,SAAS,CAAC,CAAC,CA4M1D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAkBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,WAAY,OAAO,KAAG,SAAS,CAAC,CAAC,CA6M1D,CAAA"}
@@ -194,7 +194,7 @@ export const useField = options => {
194
194
  user
195
195
  },
196
196
  siblingData: getSiblingData(path)
197
- }) : true;
197
+ }) : typeof prevErrorMessage.current === "string" ? prevErrorMessage.current : prevValid.current;
198
198
  if (typeof isValid === "string") {
199
199
  valid_0 = false;
200
200
  errorMessage = isValid;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useFieldProps","useForm","useFormFields","useFormInitializing","useFormModified","useFormProcessing","useFormSubmitted","useField","options","$","disableFormData","t0","hasRows","validate","undefined","path","pathFromContext","permissions","readOnly","schemaPath","submitted","processing","initializing","user","id","collectionSlug","operation","t1","t2","fields","dispatch","dispatchField","field","t","config","getData","getDataByPath","getSiblingData","setModified","modified","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","e","t3","disableModifyingForm","val","target","type","setTimeout","setValue","rows","errorPaths","t4","t5","t6","t7","t8","t9","formInitializing","formProcessing","formSubmitted","result","t10","validateField","valueToValidate","Array","isArray","current","valid_0","isValid","data","preferences","req","payload","siblingData","update","t11","t12"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { useCallback, useMemo, useRef } from 'react'\n\nimport type { UPDATE } from '../Form/types.js'\nimport type { FieldType, Options } from './types.js'\n\nexport type { FieldType, Options }\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useFieldProps } from '../FieldPropsProvider/index.js'\nimport {\n useForm,\n useFormFields,\n useFormInitializing,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\n\n/**\n * Get and set the value of a form field.\n *\n * @see https://payloadcms.com/docs/admin/hooks#usefield\n */\nexport const useField = <T,>(options: Options): FieldType<T> => {\n const { disableFormData = false, hasRows, validate } = options\n\n const { path: pathFromContext, permissions, readOnly, schemaPath } = useFieldProps()\n\n // Prioritize passed in path over context path. If the context path should be prioritized (which is the case for top-level useField calls in fields), it should be passed in as the options path.\n const path = options.path || pathFromContext\n\n const submitted = useFormSubmitted()\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n const { user } = useAuth()\n const { id, collectionSlug } = useDocumentInfo()\n const operation = useOperation()\n\n const { dispatchField, field } = useFormFields(([fields, dispatch]) => ({\n dispatchField: dispatch,\n field: (fields && fields?.[path]) || null,\n }))\n\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const { getData, getDataByPath, getSiblingData, setModified } = useForm()\n const modified = useFormModified()\n\n const filterOptions = field?.filterOptions\n const value = field?.value as T\n const initialValue = field?.initialValue as T\n const valid = typeof field?.valid === 'boolean' ? field.valid : true\n const showError = valid === false && submitted\n\n const prevValid = useRef(valid)\n const prevErrorMessage = useRef(field?.errorMessage)\n\n // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n const val = e && e.target ? e.target.value : e\n\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n if (typeof setModified === 'function') {\n // Only update setModified to true if the form is not already set to modified. Otherwise the following could happen:\n // 1. Text field: someone types in it in an unmodified form\n // 2. After setTimeout triggers setModified(true): form is set to modified. Save Button becomes available. Good!\n // 3. Type something in text field\n // 4. Click on save button before setTimeout in useField has finished (so setModified(true) has not been run yet)\n // 5. Form is saved, setModified(false) is set in the Form/index.tsx `submit` function, \"saved successfully\" toast appears\n // 6. setModified(true) inside the timeout is run, form is set to modified again, even though it was already saved and thus set to unmodified. Bad! This should have happened before the form is saved. Now the form should be unmodified and stay that way\n // until a NEW change happens. Due to this, the \"Leave without saving\" modal appears even though it should not when leaving the page fast immediately after saving the document.\n // This is only an issue for forms which have already been set to modified true, as that causes the save button to be enabled. If we prevent this setTimeout to be run\n // for already-modified forms first place (which is unnecessary), we can avoid this issue. As for unmodified forms, this race issue will not happen, because you cannot click the save button faster\n // than the timeout in useField is run. That's because the save button won't even be enabled for clicking until the setTimeout in useField has run.\n // This fixes e2e test flakes, as e2e tests were often so fast that they were saving the form before the timeout in useField has run.\n // Specifically, this fixes the 'should not warn about unsaved changes when navigating to lexical editor with blocks node and then leaving the page after making a change and saving' lexical e2e test.\n if (modified === false) {\n // Update modified state after field value comes back\n // to avoid cursor jump caused by state value / DOM mismatch\n setTimeout(() => {\n setModified(true)\n }, 10)\n }\n }\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows, modified],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<T> = useMemo(\n () => ({\n errorMessage: field?.errorMessage,\n errorPaths: field?.errorPaths || [],\n filterOptions,\n formInitializing: initializing,\n formProcessing: processing,\n formSubmitted: submitted,\n initialValue,\n path,\n permissions,\n readOnly: readOnly || false,\n rows: field?.rows,\n schemaPath,\n setValue,\n showError,\n valid: field?.valid,\n value,\n }),\n [\n field?.errorMessage,\n field?.rows,\n field?.valid,\n field?.errorPaths,\n processing,\n setValue,\n showError,\n submitted,\n value,\n initialValue,\n path,\n schemaPath,\n readOnly,\n permissions,\n filterOptions,\n initializing,\n ],\n )\n\n // Throttle the validate function\n useThrottledEffect(\n () => {\n const validateField = async () => {\n let valueToValidate = value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = getDataByPath(path)\n }\n\n let errorMessage: string | undefined = prevErrorMessage.current\n let valid: boolean | string = prevValid.current\n\n const isValid =\n typeof validate === 'function'\n ? await validate(valueToValidate, {\n id,\n collectionSlug,\n data: getData(),\n operation,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: getSiblingData(path),\n })\n : true\n\n if (typeof isValid === 'string') {\n valid = false\n errorMessage = isValid\n } else if (typeof isValid === 'boolean') {\n valid = isValid\n errorMessage = undefined\n }\n\n // Only dispatch if the validation result has changed\n // This will prevent unnecessary rerenders\n if (valid !== prevValid.current || errorMessage !== prevErrorMessage.current) {\n prevValid.current = valid\n prevErrorMessage.current = errorMessage\n\n const update: UPDATE = {\n type: 'UPDATE',\n errorMessage,\n path,\n rows: field?.rows,\n valid,\n validate,\n value,\n }\n\n if (disableFormData || (hasRows ? typeof value === 'number' && value > 0 : false)) {\n update.disableFormData = true\n }\n\n if (typeof dispatchField === 'function') {\n dispatchField(update)\n }\n }\n }\n\n void validateField()\n },\n 150,\n [\n value,\n disableFormData,\n dispatchField,\n getData,\n getSiblingData,\n getDataByPath,\n id,\n operation,\n path,\n user,\n validate,\n field?.rows,\n collectionSlug,\n ],\n )\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useFieldProps","useForm","useFormFields","useFormInitializing","useFormModified","useFormProcessing","useFormSubmitted","useField","options","$","disableFormData","t0","hasRows","validate","undefined","path","pathFromContext","permissions","readOnly","schemaPath","submitted","processing","initializing","user","id","collectionSlug","operation","t1","t2","fields","dispatch","dispatchField","field","t","config","getData","getDataByPath","getSiblingData","setModified","modified","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","e","t3","disableModifyingForm","val","target","type","setTimeout","setValue","rows","errorPaths","t4","t5","t6","t7","t8","t9","formInitializing","formProcessing","formSubmitted","result","t10","validateField","valueToValidate","Array","isArray","current","valid_0","isValid","data","preferences","req","payload","siblingData","update","t11","t12"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { useCallback, useMemo, useRef } from 'react'\n\nimport type { UPDATE } from '../Form/types.js'\nimport type { FieldType, Options } from './types.js'\n\nexport type { FieldType, Options }\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useFieldProps } from '../FieldPropsProvider/index.js'\nimport {\n useForm,\n useFormFields,\n useFormInitializing,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\n\n/**\n * Get and set the value of a form field.\n *\n * @see https://payloadcms.com/docs/admin/hooks#usefield\n */\nexport const useField = <T,>(options: Options): FieldType<T> => {\n const { disableFormData = false, hasRows, validate } = options\n\n const { path: pathFromContext, permissions, readOnly, schemaPath } = useFieldProps()\n\n // Prioritize passed in path over context path. If the context path should be prioritized (which is the case for top-level useField calls in fields), it should be passed in as the options path.\n const path = options.path || pathFromContext\n\n const submitted = useFormSubmitted()\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n const { user } = useAuth()\n const { id, collectionSlug } = useDocumentInfo()\n const operation = useOperation()\n\n const { dispatchField, field } = useFormFields(([fields, dispatch]) => ({\n dispatchField: dispatch,\n field: (fields && fields?.[path]) || null,\n }))\n\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const { getData, getDataByPath, getSiblingData, setModified } = useForm()\n const modified = useFormModified()\n\n const filterOptions = field?.filterOptions\n const value = field?.value as T\n const initialValue = field?.initialValue as T\n const valid = typeof field?.valid === 'boolean' ? field.valid : true\n const showError = valid === false && submitted\n\n const prevValid = useRef(valid)\n const prevErrorMessage = useRef(field?.errorMessage)\n\n // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n const val = e && e.target ? e.target.value : e\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n if (typeof setModified === 'function') {\n // Only update setModified to true if the form is not already set to modified. Otherwise the following could happen:\n // 1. Text field: someone types in it in an unmodified form\n // 2. After setTimeout triggers setModified(true): form is set to modified. Save Button becomes available. Good!\n // 3. Type something in text field\n // 4. Click on save button before setTimeout in useField has finished (so setModified(true) has not been run yet)\n // 5. Form is saved, setModified(false) is set in the Form/index.tsx `submit` function, \"saved successfully\" toast appears\n // 6. setModified(true) inside the timeout is run, form is set to modified again, even though it was already saved and thus set to unmodified. Bad! This should have happened before the form is saved. Now the form should be unmodified and stay that way\n // until a NEW change happens. Due to this, the \"Leave without saving\" modal appears even though it should not when leaving the page fast immediately after saving the document.\n // This is only an issue for forms which have already been set to modified true, as that causes the save button to be enabled. If we prevent this setTimeout to be run\n // for already-modified forms first place (which is unnecessary), we can avoid this issue. As for unmodified forms, this race issue will not happen, because you cannot click the save button faster\n // than the timeout in useField is run. That's because the save button won't even be enabled for clicking until the setTimeout in useField has run.\n // This fixes e2e test flakes, as e2e tests were often so fast that they were saving the form before the timeout in useField has run.\n // Specifically, this fixes the 'should not warn about unsaved changes when navigating to lexical editor with blocks node and then leaving the page after making a change and saving' lexical e2e test.\n if (modified === false) {\n // Update modified state after field value comes back\n // to avoid cursor jump caused by state value / DOM mismatch\n setTimeout(() => {\n setModified(true)\n }, 10)\n }\n }\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows, modified],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<T> = useMemo(\n () => ({\n errorMessage: field?.errorMessage,\n errorPaths: field?.errorPaths || [],\n filterOptions,\n formInitializing: initializing,\n formProcessing: processing,\n formSubmitted: submitted,\n initialValue,\n path,\n permissions,\n readOnly: readOnly || false,\n rows: field?.rows,\n schemaPath,\n setValue,\n showError,\n valid: field?.valid,\n value,\n }),\n [\n field?.errorMessage,\n field?.rows,\n field?.valid,\n field?.errorPaths,\n processing,\n setValue,\n showError,\n submitted,\n value,\n initialValue,\n path,\n schemaPath,\n readOnly,\n permissions,\n filterOptions,\n initializing,\n ],\n )\n\n // Throttle the validate function\n useThrottledEffect(\n () => {\n const validateField = async () => {\n let valueToValidate = value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = getDataByPath(path)\n }\n\n let errorMessage: string | undefined = prevErrorMessage.current\n let valid: boolean | string = prevValid.current\n\n const isValid =\n typeof validate === 'function'\n ? await validate(valueToValidate, {\n id,\n collectionSlug,\n data: getData(),\n operation,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: getSiblingData(path),\n })\n : typeof prevErrorMessage.current === 'string'\n ? prevErrorMessage.current\n : prevValid.current\n\n if (typeof isValid === 'string') {\n valid = false\n errorMessage = isValid\n } else if (typeof isValid === 'boolean') {\n valid = isValid\n errorMessage = undefined\n }\n\n // Only dispatch if the validation result has changed\n // This will prevent unnecessary rerenders\n if (valid !== prevValid.current || errorMessage !== prevErrorMessage.current) {\n prevValid.current = valid\n prevErrorMessage.current = errorMessage\n\n const update: UPDATE = {\n type: 'UPDATE',\n errorMessage,\n path,\n rows: field?.rows,\n valid,\n validate,\n value,\n }\n\n if (disableFormData || (hasRows ? typeof value === 'number' && value > 0 : false)) {\n update.disableFormData = true\n }\n\n if (typeof dispatchField === 'function') {\n dispatchField(update)\n }\n }\n }\n\n void validateField()\n },\n 150,\n [\n value,\n disableFormData,\n dispatchField,\n getData,\n getSiblingData,\n getDataByPath,\n id,\n operation,\n path,\n user,\n validate,\n field?.rows,\n collectionSlug,\n ],\n )\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,11 @@
1
- import type { ClientUser, MeOperationResult, Permissions, User } from 'payload';
1
+ import type { ClientUser, Permissions, User } from 'payload';
2
2
  import React from 'react';
3
- export type UserResponse = MeOperationResult | null;
4
- export type AuthContext = {
3
+ export type UserWithToken<T = ClientUser> = {
4
+ exp: number;
5
+ token: string;
6
+ user: T;
7
+ };
8
+ export type AuthContext<T = ClientUser> = {
5
9
  fetchFullUser: () => Promise<null | User>;
6
10
  logOut: () => Promise<boolean>;
7
11
  permissions?: Permissions;
@@ -9,11 +13,11 @@ export type AuthContext = {
9
13
  refreshCookieAsync: () => Promise<ClientUser>;
10
14
  refreshPermissions: () => Promise<void>;
11
15
  setPermissions: (permissions: Permissions) => void;
12
- setUser: (user: UserResponse) => void;
16
+ setUser: (user: null | UserWithToken<T>) => void;
13
17
  strategy?: string;
14
18
  token?: string;
15
19
  tokenExpiration?: number;
16
- user?: null | UserResponse['user'];
20
+ user?: null | T;
17
21
  };
18
22
  type Props = {
19
23
  children: React.ReactNode;
@@ -21,6 +25,6 @@ type Props = {
21
25
  user?: ClientUser | null;
22
26
  };
23
27
  export declare function AuthProvider({ children, permissions: initialPermissions, user: initialUser, }: Props): React.JSX.Element;
24
- export declare const useAuth: () => AuthContext;
28
+ export declare const useAuth: <T = ClientUser>() => AuthContext<T>;
25
29
  export {};
26
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAK/E,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,IAAI,CAAA;AAEnD,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;CACnC,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AACD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAuRP;AAED,eAAO,MAAM,OAAO,QAAO,WAAkC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAK5D,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AACD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAuRP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAA0C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","formatAdminURL","useConfig","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","refreshTokenTimeoutRef","useRef","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","path","revokeTokenAndExpire","undefined","clearTimeout","current","setNewUser","userResponse","token","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","reminder","forceLogOut","remindInTimeFromNow","max","min","forceLogOutInTimeFromNow","_jsx","Provider","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, MeOperationResult, Permissions, User } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { useConfig } from '../Config/index.js'\n\nexport type UserResponse = MeOperationResult | null\n\nexport type AuthContext = {\n fetchFullUser: () => Promise<null | User>\n logOut: () => Promise<boolean>\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: UserResponse) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | UserResponse['user']\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: Permissions\n user?: ClientUser | null\n}\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(adminRoute)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${redirectParam}`,\n }),\n )\n } else {\n router.replace(\n formatAdminURL({\n adminRoute,\n path: logoutInactivityRoute,\n }),\n )\n }\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n const setNewUser = useCallback(\n (userResponse: UserResponse) => {\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpiration(userResponse.exp)\n } else {\n setUserInMemory(null)\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n refreshTokenTimeoutRef.current = setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n\n return () => {\n clearTimeout(refreshTokenTimeoutRef.current)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpiration,\n userSlug,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n setNewUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug],\n )\n\n const logOut = useCallback(async () => {\n try {\n await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`)\n setNewUser(null)\n revokeTokenAndExpire()\n return true\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n return false\n }\n }, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, userSlug])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: MeOperationResult = await request.json()\n const user = null\n\n setNewUser(json)\n return user\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n const remindInTimeFromNow = Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime), 0)\n const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0)\n\n if (!user) {\n clearTimeout(reminder)\n clearTimeout(forceLogOut)\n return\n }\n\n if (remainingTime > 0) {\n reminder = setTimeout(() => {\n openModal(stayLoggedInModalSlug)\n }, remindInTimeFromNow)\n\n forceLogOut = setTimeout(() => {\n setNewUser(null)\n }, forceLogOutInTimeFromNow)\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, openModal, i18n, setNewUser, user])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = (): AuthContext => useContext(Context)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","formatAdminURL","useConfig","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","refreshTokenTimeoutRef","useRef","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","path","revokeTokenAndExpire","undefined","clearTimeout","current","setNewUser","userResponse","token","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","reminder","forceLogOut","remindInTimeFromNow","max","min","forceLogOutInTimeFromNow","_jsx","Provider","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, Permissions, User } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { useConfig } from '../Config/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | User>\n logOut: () => Promise<boolean>\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: Permissions\n user?: ClientUser | null\n}\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(adminRoute)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${redirectParam}`,\n }),\n )\n } else {\n router.replace(\n formatAdminURL({\n adminRoute,\n path: logoutInactivityRoute,\n }),\n )\n }\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpiration(userResponse.exp)\n } else {\n setUserInMemory(null)\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n refreshTokenTimeoutRef.current = setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n\n return () => {\n clearTimeout(refreshTokenTimeoutRef.current)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpiration,\n userSlug,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n setNewUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug],\n )\n\n const logOut = useCallback(async () => {\n try {\n await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`)\n setNewUser(null)\n revokeTokenAndExpire()\n return true\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n return false\n }\n }, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, userSlug])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n const user = null\n\n setNewUser(json)\n return user\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n const remindInTimeFromNow = Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime), 0)\n const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0)\n\n if (!user) {\n clearTimeout(reminder)\n clearTimeout(forceLogOut)\n return\n }\n\n if (remainingTime > 0) {\n reminder = setTimeout(() => {\n openModal(stayLoggedInModalSlug)\n }, remindInTimeFromNow)\n\n forceLogOut = setTimeout(() => {\n setNewUser(null)\n }, forceLogOutInTimeFromNow)\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, openModal, i18n, setNewUser, user])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAKV,WAAW,EACX,qBAAqB,EACrB,KAAK,EAGL,SAAS,EAGT,OAAO,EAWR,MAAM,SAAS,CAAA;AAkBhB,eAAO,MAAM,iBAAiB,wGAQ3B;IACD,WAAW,EAAE,WAAW,CAAA;IACxB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAidH,CAAA;AAED,eAAO,MAAM,kBAAkB,4GAS5B;IACD,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAAW,EAyCd,CAAA"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAKV,WAAW,EACX,qBAAqB,EACrB,KAAK,EAGL,SAAS,EAGT,OAAO,EAYR,MAAM,SAAS,CAAA;AAkBhB,eAAO,MAAM,iBAAiB,wGAQ3B;IACD,WAAW,EAAE,WAAW,CAAA;IACxB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAqeH,CAAA;AAED,eAAO,MAAM,kBAAkB,4GAS5B;IACD,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAAW,EAyCd,CAAA"}
@@ -1,4 +1,4 @@
1
- import { MissingEditorProp } from 'payload';
1
+ import { deepCopyObjectSimple, MissingEditorProp } from 'payload';
2
2
  import { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared';
3
3
  import { getComponent } from './getComponent.js';
4
4
  function generateFieldPath(parentPath, name) {
@@ -151,8 +151,26 @@ export const createClientField = ({
151
151
  if (!field.admin.components) {
152
152
  field.admin.components = {};
153
153
  }
154
- field.admin.components.Field = createMappedComponent(incomingField.editor.FieldComponent, serverProps, undefined, 'incomingField.editor.FieldComponent');
155
- field.admin.components.Cell = createMappedComponent(incomingField.editor.CellComponent, serverProps, undefined, 'incomingField.editor.CellComponent');
154
+ /**
155
+ * We have to deep copy all the props we send to the client (= FieldComponent.clientProps).
156
+ * That way, every editor's field / cell props we send to the client have their own object references.
157
+ *
158
+ * If we send the same object reference to the client twice (e.g. through some configurations where 2 or more fields
159
+ * reference the same editor object, like the root editor), the admin panel may hang indefinitely. This has been happening since
160
+ * a newer Next.js update that made it break when sending the same object reference to the client twice.
161
+ *
162
+ * We can use deepCopyObjectSimple as client props should be JSON-serializable.
163
+ */
164
+ const FieldComponent = incomingField.editor.FieldComponent;
165
+ if (typeof FieldComponent === 'object' && FieldComponent.clientProps) {
166
+ FieldComponent.clientProps = deepCopyObjectSimple(FieldComponent.clientProps);
167
+ }
168
+ field.admin.components.Field = createMappedComponent(FieldComponent, serverProps, undefined, 'incomingField.editor.FieldComponent');
169
+ const CellComponent = incomingField.editor.CellComponent;
170
+ if (typeof CellComponent === 'object' && CellComponent.clientProps) {
171
+ CellComponent.clientProps = deepCopyObjectSimple(CellComponent.clientProps);
172
+ }
173
+ field.admin.components.Cell = createMappedComponent(CellComponent, serverProps, undefined, 'incomingField.editor.CellComponent');
156
174
  if (incomingField.editor.generateComponentMap) {
157
175
  const {
158
176
  Component: generateComponentMap,
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","names":["MissingEditorProp","fieldAffectsData","fieldIsPresentationalOnly","getComponent","generateFieldPath","parentPath","name","tabPath","createClientField","clientField","createMappedComponent","field","incomingField","i18n","importMap","payload","serverOnlyFieldProperties","forEach","key","_isPresentational","isHidden","hidden","disabledFromAdmin","admin","disabled","_schemaPath","label","t","CustomLabel","components","Label","serverProps","undefined","style","width","Object","flex","type","fields","createClientFields","clientFields","disableAddingID","RowLabel","blocks","length","i","block","clientBlock","slug","custom","imageAltText","imageURL","labels","singular","plural","editor","Error","Field","FieldComponent","Cell","CellComponent","generateComponentMap","Component","richTextServerProps","identifier","payloadComponent","silent","actualGenerateComponentMap","result","schemaPath","richTextComponentMap","tabs","tab","clientTab","options","option","value","serverOnlyFieldAdminProperties","fieldServerProps","description","Description","Filter","beforeInput","afterInput","newClientFields","newField","push","hasID","findIndex","f","db","defaultIDType","disableBulkEdit","localized"],"sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n AdminClient,\n ArrayFieldClient,\n BlocksFieldClient,\n ClientBlock,\n ClientField,\n CreateMappedComponent,\n Field,\n FieldLabelClientComponent,\n FieldLabelServerComponent,\n ImportMap,\n LabelsClient,\n MappedComponent,\n Payload,\n RadioFieldClient,\n RichTextFieldClient,\n RichTextGenerateComponentMap,\n RowFieldClient,\n RowLabelComponent,\n SelectFieldClient,\n ServerFieldBase,\n ServerOnlyFieldAdminProperties,\n ServerOnlyFieldProperties,\n TabsFieldClient,\n} from 'payload'\n\nimport { MissingEditorProp } from 'payload'\nimport { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared'\n\nimport { getComponent } from './getComponent.js'\n\nfunction generateFieldPath(parentPath: string, name: string): string {\n let tabPath = parentPath || ''\n if (parentPath && name) {\n tabPath = `${parentPath}.${name}`\n } else if (!parentPath && name) {\n tabPath = name\n }\n\n return tabPath\n}\n\nexport const createClientField = ({\n clientField,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientField: ClientField\n createMappedComponent: CreateMappedComponent\n field: Field\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField => {\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n 'custom',\n 'typescriptSchema',\n 'dbName', // can be a function\n 'enumName', // can be a function\n // the following props are handled separately (see below):\n // `label`\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientField) {\n delete clientField[key]\n }\n })\n\n if (fieldIsPresentationalOnly(incomingField)) {\n clientField._isPresentational = true\n }\n\n const isHidden = 'hidden' in incomingField && incomingField?.hidden\n const disabledFromAdmin =\n incomingField?.admin && 'disabled' in incomingField.admin && incomingField.admin.disabled\n\n if (fieldAffectsData(clientField) && (isHidden || disabledFromAdmin)) {\n return null\n }\n\n clientField._schemaPath = generateFieldPath(\n parentPath,\n fieldAffectsData(clientField) ? clientField.name : '',\n )\n\n if (\n 'label' in clientField &&\n 'label' in incomingField &&\n typeof incomingField.label === 'function'\n ) {\n clientField.label = incomingField.label({ t: i18n.t })\n }\n\n const CustomLabel: FieldLabelClientComponent | FieldLabelServerComponent | RowLabelComponent =\n 'admin' in incomingField &&\n 'components' in incomingField.admin &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label\n\n const serverProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField: undefined,\n field: incomingField,\n },\n }\n\n if ('admin' in incomingField && 'width' in incomingField.admin) {\n clientField.admin.style = {\n ...clientField.admin.style,\n '--field-width': clientField.admin.width,\n width: undefined, // avoid needlessly adding this to the element's style attribute\n }\n } else {\n if (!(clientField.admin instanceof Object)) {\n clientField.admin = {}\n }\n if (!(clientField.admin.style instanceof Object)) {\n clientField.admin.style = {}\n }\n clientField.admin.style.flex = '1 1 auto'\n }\n\n switch (incomingField.type) {\n case 'array':\n case 'group':\n case 'collapsible':\n case 'row': {\n const field = clientField as unknown as RowFieldClient\n\n field.fields = createClientFields({\n clientFields: field.fields,\n createMappedComponent,\n disableAddingID: incomingField.type !== 'array',\n fields: incomingField.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n\n if (incomingField?.admin?.components && 'RowLabel' in incomingField.admin.components) {\n ;(field as unknown as ArrayFieldClient).admin.components.RowLabel = createMappedComponent(\n incomingField.admin.components.RowLabel,\n serverProps,\n undefined,\n 'incomingField.admin.components.RowLabel',\n )\n }\n\n break\n }\n\n case 'blocks': {\n const field = clientField as unknown as BlocksFieldClient\n\n if (incomingField.blocks?.length) {\n for (let i = 0; i < incomingField.blocks.length; i++) {\n const block = incomingField.blocks[i]\n const clientBlock: ClientBlock = {\n slug: block.slug,\n admin: {\n components: {},\n custom: block.admin?.custom,\n },\n fields: field.blocks[i].fields,\n imageAltText: block.imageAltText,\n imageURL: block.imageURL,\n }\n\n if (block.labels) {\n clientBlock.labels = {} as unknown as LabelsClient\n if (block.labels.singular) {\n if (typeof block.labels.singular === 'function') {\n clientBlock.labels.singular = block.labels.singular({ t: i18n.t })\n } else {\n clientBlock.labels.singular = block.labels.singular\n }\n if (typeof block.labels.plural === 'function') {\n clientBlock.labels.plural = block.labels.plural({ t: i18n.t })\n } else {\n clientBlock.labels.plural = block.labels.plural\n }\n }\n }\n\n if (block.admin?.components?.Label) {\n clientBlock.admin.components.Label = createMappedComponent(\n block.admin.components.Label,\n serverProps,\n undefined,\n 'block.admin.components.Label',\n )\n }\n\n clientBlock.fields = createClientFields({\n clientFields: clientBlock.fields,\n createMappedComponent,\n fields: block.fields,\n i18n,\n importMap,\n parentPath: `${field._schemaPath}.${block.slug}`,\n payload,\n })\n\n field.blocks[i] = clientBlock\n }\n }\n\n break\n }\n\n case 'richText': {\n const field = clientField\n\n if (!incomingField?.editor) {\n throw new MissingEditorProp(incomingField) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof incomingField?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if (!field.admin.components) {\n field.admin.components = {}\n }\n\n field.admin.components.Field = createMappedComponent(\n incomingField.editor.FieldComponent,\n serverProps,\n undefined,\n 'incomingField.editor.FieldComponent',\n )\n\n field.admin.components.Cell = createMappedComponent(\n incomingField.editor.CellComponent,\n serverProps,\n undefined,\n 'incomingField.editor.CellComponent',\n )\n\n if (incomingField.editor.generateComponentMap) {\n const { Component: generateComponentMap, serverProps: richTextServerProps } = getComponent({\n identifier: 'richText-generateComponentMap',\n importMap,\n payloadComponent: incomingField.editor.generateComponentMap,\n silent: true,\n })\n\n if (generateComponentMap) {\n const actualGenerateComponentMap: RichTextGenerateComponentMap = (\n generateComponentMap as any\n )(richTextServerProps)\n\n const result = actualGenerateComponentMap({\n clientField: field as RichTextFieldClient,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n payload,\n schemaPath: field._schemaPath,\n })\n\n ;(field as RichTextFieldClient).richTextComponentMap = result\n }\n }\n break\n }\n\n case 'tabs': {\n const field = clientField as unknown as TabsFieldClient\n\n if (incomingField.tabs?.length) {\n for (let i = 0; i < incomingField.tabs.length; i++) {\n const tab = incomingField.tabs[i]\n const clientTab = field.tabs[i]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientTab) {\n delete clientTab[key]\n }\n })\n\n clientTab.fields = createClientFields({\n clientFields: clientTab.fields,\n createMappedComponent,\n disableAddingID: true,\n fields: tab.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n }\n }\n\n break\n }\n\n // case 'joins': {\n //\n // }\n\n case 'select':\n case 'radio': {\n const field = clientField as RadioFieldClient | SelectFieldClient\n\n if (incomingField.options?.length) {\n for (let i = 0; i < incomingField.options.length; i++) {\n const option = incomingField.options[i]\n\n if (typeof option === 'object' && typeof option.label === 'function') {\n field.options[i] = {\n label: option.label({ t: i18n.t }),\n value: option.value,\n }\n }\n }\n }\n\n break\n }\n\n default:\n break\n }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = ['condition']\n\n if (!clientField.admin) {\n clientField.admin = {}\n }\n\n if (!clientField.admin.components) {\n clientField.admin.components = {}\n }\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in clientField.admin) {\n delete clientField.admin[key]\n }\n })\n\n const fieldServerProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField,\n field: incomingField,\n },\n }\n\n type FieldWithDescription = {\n admin: AdminClient\n } & ClientField\n\n if (incomingField.admin && 'description' in incomingField.admin) {\n if (\n typeof incomingField.admin?.description === 'string' ||\n typeof incomingField.admin?.description === 'object'\n ) {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin.description\n } else if (typeof incomingField.admin?.description === 'function') {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin?.description({\n t: i18n.t,\n })\n }\n }\n\n if (incomingField?.admin?.components?.Cell !== undefined) {\n clientField.admin.components.Cell = createMappedComponent(\n incomingField.admin.components.Cell,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Cell',\n )\n }\n\n type FieldWithDescriptionComponent = {\n admin: AdminClient\n } & ClientField\n\n if (\n incomingField?.admin?.components &&\n 'Description' in incomingField.admin.components &&\n incomingField?.admin?.components?.Description !== undefined\n ) {\n ;(clientField as FieldWithDescriptionComponent).admin.components.Description =\n createMappedComponent(\n incomingField.admin.components.Description,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Description',\n )\n }\n\n type FieldWithErrorComponent = {\n admin: {\n components: {\n Error: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Error' in incomingField.admin.components &&\n incomingField.admin.components.Error !== undefined\n ) {\n ;(clientField as FieldWithErrorComponent).admin.components.Error = createMappedComponent(\n incomingField.admin.components.Error,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Error',\n )\n }\n\n if (incomingField?.admin?.components?.Field !== undefined) {\n clientField.admin.components.Field = createMappedComponent(\n incomingField.admin.components.Field,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Field',\n )\n }\n\n if (\n incomingField?.admin?.components &&\n 'Filter' in incomingField.admin.components &&\n incomingField.admin.components.Filter !== undefined\n ) {\n clientField.admin.components.Filter = createMappedComponent(\n incomingField.admin.components.Filter,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Filter',\n )\n }\n\n type FieldWithLabelComponent = {\n admin: {\n components: {\n Label: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label !== undefined\n ) {\n ;(clientField as FieldWithLabelComponent).admin.components.Label = createMappedComponent(\n CustomLabel,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Label',\n )\n }\n\n type FieldWithBeforeInputComponent = {\n admin: {\n components: {\n beforeInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'beforeInput' in incomingField.admin.components &&\n incomingField.admin.components.beforeInput !== undefined\n ) {\n ;(clientField as FieldWithBeforeInputComponent).admin.components.beforeInput =\n createMappedComponent(\n incomingField.admin?.components?.beforeInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.beforeInput',\n )\n }\n\n type FieldWithAfterInputComponent = {\n admin: {\n components: {\n afterInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'afterInput' in incomingField.admin.components &&\n incomingField.admin.components.afterInput !== undefined\n ) {\n ;(clientField as FieldWithAfterInputComponent).admin.components.afterInput =\n createMappedComponent(\n incomingField.admin?.components?.afterInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.afterInput',\n )\n }\n\n return clientField\n}\n\nexport const createClientFields = ({\n clientFields,\n createMappedComponent,\n disableAddingID,\n fields,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientFields: ClientField[]\n createMappedComponent: CreateMappedComponent\n disableAddingID?: boolean\n fields: Field[]\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField[] => {\n const newClientFields: ClientField[] = []\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n const newField = createClientField({\n clientField: clientFields[i],\n createMappedComponent,\n field,\n i18n,\n importMap,\n parentPath,\n payload,\n })\n\n if (newField) {\n newClientFields.push(newField)\n }\n }\n\n const hasID = newClientFields.findIndex((f) => fieldAffectsData(f) && f.name === 'id') > -1\n\n if (!disableAddingID && !hasID) {\n newClientFields.push({\n name: 'id',\n type: payload.db.defaultIDType === 'number' ? 'number' : 'text',\n _schemaPath: generateFieldPath(parentPath, 'id'),\n admin: {\n components: {\n Field: null,\n },\n description: 'The unique identifier for this document',\n disableBulkEdit: true,\n hidden: true,\n },\n hidden: true,\n label: 'ID',\n localized: undefined,\n })\n }\n return newClientFields\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fields.js","names":["deepCopyObjectSimple","MissingEditorProp","fieldAffectsData","fieldIsPresentationalOnly","getComponent","generateFieldPath","parentPath","name","tabPath","createClientField","clientField","createMappedComponent","field","incomingField","i18n","importMap","payload","serverOnlyFieldProperties","forEach","key","_isPresentational","isHidden","hidden","disabledFromAdmin","admin","disabled","_schemaPath","label","t","CustomLabel","components","Label","serverProps","undefined","style","width","Object","flex","type","fields","createClientFields","clientFields","disableAddingID","RowLabel","blocks","length","i","block","clientBlock","slug","custom","imageAltText","imageURL","labels","singular","plural","editor","Error","FieldComponent","clientProps","Field","CellComponent","Cell","generateComponentMap","Component","richTextServerProps","identifier","payloadComponent","silent","actualGenerateComponentMap","result","schemaPath","richTextComponentMap","tabs","tab","clientTab","options","option","value","serverOnlyFieldAdminProperties","fieldServerProps","description","Description","Filter","beforeInput","afterInput","newClientFields","newField","push","hasID","findIndex","f","db","defaultIDType","disableBulkEdit","localized"],"sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n AdminClient,\n ArrayFieldClient,\n BlocksFieldClient,\n ClientBlock,\n ClientField,\n CreateMappedComponent,\n Field,\n FieldLabelClientComponent,\n FieldLabelServerComponent,\n ImportMap,\n LabelsClient,\n MappedComponent,\n Payload,\n PayloadComponent,\n RadioFieldClient,\n RichTextFieldClient,\n RichTextGenerateComponentMap,\n RowFieldClient,\n RowLabelComponent,\n SelectFieldClient,\n ServerFieldBase,\n ServerOnlyFieldAdminProperties,\n ServerOnlyFieldProperties,\n TabsFieldClient,\n} from 'payload'\n\nimport { deepCopyObjectSimple, MissingEditorProp } from 'payload'\nimport { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared'\n\nimport { getComponent } from './getComponent.js'\n\nfunction generateFieldPath(parentPath: string, name: string): string {\n let tabPath = parentPath || ''\n if (parentPath && name) {\n tabPath = `${parentPath}.${name}`\n } else if (!parentPath && name) {\n tabPath = name\n }\n\n return tabPath\n}\n\nexport const createClientField = ({\n clientField,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientField: ClientField\n createMappedComponent: CreateMappedComponent\n field: Field\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField => {\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n 'custom',\n 'typescriptSchema',\n 'dbName', // can be a function\n 'enumName', // can be a function\n // the following props are handled separately (see below):\n // `label`\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientField) {\n delete clientField[key]\n }\n })\n\n if (fieldIsPresentationalOnly(incomingField)) {\n clientField._isPresentational = true\n }\n\n const isHidden = 'hidden' in incomingField && incomingField?.hidden\n const disabledFromAdmin =\n incomingField?.admin && 'disabled' in incomingField.admin && incomingField.admin.disabled\n\n if (fieldAffectsData(clientField) && (isHidden || disabledFromAdmin)) {\n return null\n }\n\n clientField._schemaPath = generateFieldPath(\n parentPath,\n fieldAffectsData(clientField) ? clientField.name : '',\n )\n\n if (\n 'label' in clientField &&\n 'label' in incomingField &&\n typeof incomingField.label === 'function'\n ) {\n clientField.label = incomingField.label({ t: i18n.t })\n }\n\n const CustomLabel: FieldLabelClientComponent | FieldLabelServerComponent | RowLabelComponent =\n 'admin' in incomingField &&\n 'components' in incomingField.admin &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label\n\n const serverProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField: undefined,\n field: incomingField,\n },\n }\n\n if ('admin' in incomingField && 'width' in incomingField.admin) {\n clientField.admin.style = {\n ...clientField.admin.style,\n '--field-width': clientField.admin.width,\n width: undefined, // avoid needlessly adding this to the element's style attribute\n }\n } else {\n if (!(clientField.admin instanceof Object)) {\n clientField.admin = {}\n }\n if (!(clientField.admin.style instanceof Object)) {\n clientField.admin.style = {}\n }\n clientField.admin.style.flex = '1 1 auto'\n }\n\n switch (incomingField.type) {\n case 'array':\n case 'group':\n case 'collapsible':\n case 'row': {\n const field = clientField as unknown as RowFieldClient\n\n field.fields = createClientFields({\n clientFields: field.fields,\n createMappedComponent,\n disableAddingID: incomingField.type !== 'array',\n fields: incomingField.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n\n if (incomingField?.admin?.components && 'RowLabel' in incomingField.admin.components) {\n ;(field as unknown as ArrayFieldClient).admin.components.RowLabel = createMappedComponent(\n incomingField.admin.components.RowLabel,\n serverProps,\n undefined,\n 'incomingField.admin.components.RowLabel',\n )\n }\n\n break\n }\n\n case 'blocks': {\n const field = clientField as unknown as BlocksFieldClient\n\n if (incomingField.blocks?.length) {\n for (let i = 0; i < incomingField.blocks.length; i++) {\n const block = incomingField.blocks[i]\n const clientBlock: ClientBlock = {\n slug: block.slug,\n admin: {\n components: {},\n custom: block.admin?.custom,\n },\n fields: field.blocks[i].fields,\n imageAltText: block.imageAltText,\n imageURL: block.imageURL,\n }\n\n if (block.labels) {\n clientBlock.labels = {} as unknown as LabelsClient\n if (block.labels.singular) {\n if (typeof block.labels.singular === 'function') {\n clientBlock.labels.singular = block.labels.singular({ t: i18n.t })\n } else {\n clientBlock.labels.singular = block.labels.singular\n }\n if (typeof block.labels.plural === 'function') {\n clientBlock.labels.plural = block.labels.plural({ t: i18n.t })\n } else {\n clientBlock.labels.plural = block.labels.plural\n }\n }\n }\n\n if (block.admin?.components?.Label) {\n clientBlock.admin.components.Label = createMappedComponent(\n block.admin.components.Label,\n serverProps,\n undefined,\n 'block.admin.components.Label',\n )\n }\n\n clientBlock.fields = createClientFields({\n clientFields: clientBlock.fields,\n createMappedComponent,\n fields: block.fields,\n i18n,\n importMap,\n parentPath: `${field._schemaPath}.${block.slug}`,\n payload,\n })\n\n field.blocks[i] = clientBlock\n }\n }\n\n break\n }\n\n case 'richText': {\n const field = clientField\n\n if (!incomingField?.editor) {\n throw new MissingEditorProp(incomingField) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof incomingField?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if (!field.admin.components) {\n field.admin.components = {}\n }\n\n /**\n * We have to deep copy all the props we send to the client (= FieldComponent.clientProps).\n * That way, every editor's field / cell props we send to the client have their own object references.\n *\n * If we send the same object reference to the client twice (e.g. through some configurations where 2 or more fields\n * reference the same editor object, like the root editor), the admin panel may hang indefinitely. This has been happening since\n * a newer Next.js update that made it break when sending the same object reference to the client twice.\n *\n * We can use deepCopyObjectSimple as client props should be JSON-serializable.\n */\n const FieldComponent: PayloadComponent = incomingField.editor.FieldComponent\n if (typeof FieldComponent === 'object' && FieldComponent.clientProps) {\n FieldComponent.clientProps = deepCopyObjectSimple(FieldComponent.clientProps)\n }\n\n field.admin.components.Field = createMappedComponent(\n FieldComponent,\n serverProps,\n undefined,\n 'incomingField.editor.FieldComponent',\n )\n\n const CellComponent: PayloadComponent = incomingField.editor.CellComponent\n if (typeof CellComponent === 'object' && CellComponent.clientProps) {\n CellComponent.clientProps = deepCopyObjectSimple(CellComponent.clientProps)\n }\n\n field.admin.components.Cell = createMappedComponent(\n CellComponent,\n serverProps,\n undefined,\n 'incomingField.editor.CellComponent',\n )\n\n if (incomingField.editor.generateComponentMap) {\n const { Component: generateComponentMap, serverProps: richTextServerProps } = getComponent({\n identifier: 'richText-generateComponentMap',\n importMap,\n payloadComponent: incomingField.editor.generateComponentMap,\n silent: true,\n })\n\n if (generateComponentMap) {\n const actualGenerateComponentMap: RichTextGenerateComponentMap = (\n generateComponentMap as any\n )(richTextServerProps)\n\n const result = actualGenerateComponentMap({\n clientField: field as RichTextFieldClient,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n payload,\n schemaPath: field._schemaPath,\n })\n\n ;(field as RichTextFieldClient).richTextComponentMap = result\n }\n }\n break\n }\n\n case 'tabs': {\n const field = clientField as unknown as TabsFieldClient\n\n if (incomingField.tabs?.length) {\n for (let i = 0; i < incomingField.tabs.length; i++) {\n const tab = incomingField.tabs[i]\n const clientTab = field.tabs[i]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientTab) {\n delete clientTab[key]\n }\n })\n\n clientTab.fields = createClientFields({\n clientFields: clientTab.fields,\n createMappedComponent,\n disableAddingID: true,\n fields: tab.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n }\n }\n\n break\n }\n\n // case 'joins': {\n //\n // }\n\n case 'select':\n case 'radio': {\n const field = clientField as RadioFieldClient | SelectFieldClient\n\n if (incomingField.options?.length) {\n for (let i = 0; i < incomingField.options.length; i++) {\n const option = incomingField.options[i]\n\n if (typeof option === 'object' && typeof option.label === 'function') {\n field.options[i] = {\n label: option.label({ t: i18n.t }),\n value: option.value,\n }\n }\n }\n }\n\n break\n }\n\n default:\n break\n }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = ['condition']\n\n if (!clientField.admin) {\n clientField.admin = {}\n }\n\n if (!clientField.admin.components) {\n clientField.admin.components = {}\n }\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in clientField.admin) {\n delete clientField.admin[key]\n }\n })\n\n const fieldServerProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField,\n field: incomingField,\n },\n }\n\n type FieldWithDescription = {\n admin: AdminClient\n } & ClientField\n\n if (incomingField.admin && 'description' in incomingField.admin) {\n if (\n typeof incomingField.admin?.description === 'string' ||\n typeof incomingField.admin?.description === 'object'\n ) {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin.description\n } else if (typeof incomingField.admin?.description === 'function') {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin?.description({\n t: i18n.t,\n })\n }\n }\n\n if (incomingField?.admin?.components?.Cell !== undefined) {\n clientField.admin.components.Cell = createMappedComponent(\n incomingField.admin.components.Cell,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Cell',\n )\n }\n\n type FieldWithDescriptionComponent = {\n admin: AdminClient\n } & ClientField\n\n if (\n incomingField?.admin?.components &&\n 'Description' in incomingField.admin.components &&\n incomingField?.admin?.components?.Description !== undefined\n ) {\n ;(clientField as FieldWithDescriptionComponent).admin.components.Description =\n createMappedComponent(\n incomingField.admin.components.Description,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Description',\n )\n }\n\n type FieldWithErrorComponent = {\n admin: {\n components: {\n Error: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Error' in incomingField.admin.components &&\n incomingField.admin.components.Error !== undefined\n ) {\n ;(clientField as FieldWithErrorComponent).admin.components.Error = createMappedComponent(\n incomingField.admin.components.Error,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Error',\n )\n }\n\n if (incomingField?.admin?.components?.Field !== undefined) {\n clientField.admin.components.Field = createMappedComponent(\n incomingField.admin.components.Field,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Field',\n )\n }\n\n if (\n incomingField?.admin?.components &&\n 'Filter' in incomingField.admin.components &&\n incomingField.admin.components.Filter !== undefined\n ) {\n clientField.admin.components.Filter = createMappedComponent(\n incomingField.admin.components.Filter,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Filter',\n )\n }\n\n type FieldWithLabelComponent = {\n admin: {\n components: {\n Label: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label !== undefined\n ) {\n ;(clientField as FieldWithLabelComponent).admin.components.Label = createMappedComponent(\n CustomLabel,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Label',\n )\n }\n\n type FieldWithBeforeInputComponent = {\n admin: {\n components: {\n beforeInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'beforeInput' in incomingField.admin.components &&\n incomingField.admin.components.beforeInput !== undefined\n ) {\n ;(clientField as FieldWithBeforeInputComponent).admin.components.beforeInput =\n createMappedComponent(\n incomingField.admin?.components?.beforeInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.beforeInput',\n )\n }\n\n type FieldWithAfterInputComponent = {\n admin: {\n components: {\n afterInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'afterInput' in incomingField.admin.components &&\n incomingField.admin.components.afterInput !== undefined\n ) {\n ;(clientField as FieldWithAfterInputComponent).admin.components.afterInput =\n createMappedComponent(\n incomingField.admin?.components?.afterInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.afterInput',\n )\n }\n\n return clientField\n}\n\nexport const createClientFields = ({\n clientFields,\n createMappedComponent,\n disableAddingID,\n fields,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientFields: ClientField[]\n createMappedComponent: CreateMappedComponent\n disableAddingID?: boolean\n fields: Field[]\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField[] => {\n const newClientFields: ClientField[] = []\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n const newField = createClientField({\n clientField: clientFields[i],\n createMappedComponent,\n field,\n i18n,\n importMap,\n parentPath,\n payload,\n })\n\n if (newField) {\n newClientFields.push(newField)\n }\n }\n\n const hasID = newClientFields.findIndex((f) => fieldAffectsData(f) && f.name === 'id') > -1\n\n if (!disableAddingID && !hasID) {\n newClientFields.push({\n name: 'id',\n type: payload.db.defaultIDType === 'number' ? 'number' : 'text',\n _schemaPath: generateFieldPath(parentPath, 'id'),\n admin: {\n components: {\n Field: null,\n },\n description: 'The unique identifier for this document',\n disableBulkEdit: true,\n hidden: true,\n },\n hidden: true,\n label: 'ID',\n localized: undefined,\n })\n }\n return newClientFields\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAA8E,MAAM,OAAO,CAAA;AAElG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAA0C,CAAA;AAspB7E,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAA8E,MAAM,OAAO,CAAA;AAElG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAA0C,CAAA;AA2pB7E,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
@@ -283,6 +283,10 @@ const DocumentInfo = ({
283
283
  where: {
284
284
  ...versionParams.where,
285
285
  and: [...versionParams.where.and, {
286
+ 'version._status': {
287
+ equals: 'draft'
288
+ }
289
+ }, {
286
290
  updatedAt: {
287
291
  greater_than: publishedJSON.updatedAt
288
292
  }