@payloadcms/ui 3.25.0-canary.fd53f68 → 3.26.0-canary.bbb3083
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +2 -3
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +13 -2
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BulkUpload/DiscardWithoutSaving/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +10 -30
- package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +3 -2
- package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/createFormData.js +19 -2
- package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +10 -3
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +2 -2
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.scss +16 -0
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +22 -14
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditMany/index.scss +5 -19
- package/dist/elements/Link/index.d.ts +9 -1
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/Link/index.js +6 -0
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts +8 -0
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +4 -20
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +2 -1
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts +7 -1
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/ListSelection/index.d.ts +4 -0
- package/dist/elements/ListSelection/index.d.ts.map +1 -1
- package/dist/elements/ListSelection/index.js +44 -23
- package/dist/elements/ListSelection/index.js.map +1 -1
- package/dist/elements/ListSelection/index.scss +4 -0
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +4 -9
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts +1 -0
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +3 -2
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/PublishMany/index.scss +21 -0
- package/dist/elements/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/RenderDefaultCell/index.js +1 -0
- package/dist/elements/TableColumns/RenderDefaultCell/index.js.map +1 -1
- package/dist/elements/UnpublishMany/index.d.ts +1 -0
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +3 -2
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/UnpublishMany/index.scss +21 -0
- package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/field-types.js +9 -5
- package/dist/elements/WhereBuilder/field-types.js.map +1 -1
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +11 -10
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +3 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +23 -23
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +16 -12
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Upload/Input.js +13 -13
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/Form/context.d.ts +14 -4
- package/dist/forms/Form/context.d.ts.map +1 -1
- package/dist/forms/Form/context.js +16 -4
- package/dist/forms/Form/context.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +30 -14
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +39 -10
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/initContextState.d.ts.map +1 -1
- package/dist/forms/Form/initContextState.js +2 -0
- package/dist/forms/Form/initContextState.js.map +1 -1
- package/dist/forms/Form/types.d.ts +6 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/Submit/index.d.ts.map +1 -1
- package/dist/forms/Submit/index.js +3 -2
- package/dist/forms/Submit/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +2 -0
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/forms/useField/index.d.ts +1 -1
- package/dist/forms/useField/index.js +1 -1
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +4 -1
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/UploadHandlers/index.d.ts +21 -0
- package/dist/providers/UploadHandlers/index.d.ts.map +1 -0
- package/dist/providers/UploadHandlers/index.js +72 -0
- package/dist/providers/UploadHandlers/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +2 -1
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +2 -0
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +5 -0
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +8 -19
- package/dist/views/List/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -172,32 +172,48 @@ export function fieldReducer(state, action) {
|
|
|
172
172
|
moveToIndex,
|
|
173
173
|
path
|
|
174
174
|
} = action;
|
|
175
|
+
// Handle moving rows on the top-level, i.e. `array.0.text` -> `array.1.text`
|
|
175
176
|
const {
|
|
176
177
|
remainingFields,
|
|
177
|
-
rows
|
|
178
|
+
rows: topLevelRows
|
|
178
179
|
} = separateRows(path, state);
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
rows.splice(moveFromIndex, 1);
|
|
183
|
-
// insert row copyOfMovingRow back in
|
|
184
|
-
rows.splice(moveToIndex, 0, copyOfMovingRow);
|
|
180
|
+
const copyOfMovingRow = topLevelRows[moveFromIndex];
|
|
181
|
+
topLevelRows.splice(moveFromIndex, 1);
|
|
182
|
+
topLevelRows.splice(moveToIndex, 0, copyOfMovingRow);
|
|
185
183
|
// modify array/block internal row state (i.e. collapsed, blockType)
|
|
186
|
-
const
|
|
187
|
-
const
|
|
188
|
-
...
|
|
184
|
+
const rowsWithinField = [...(state[path]?.rows || [])];
|
|
185
|
+
const copyOfMovingRow2 = {
|
|
186
|
+
...rowsWithinField[moveFromIndex]
|
|
189
187
|
};
|
|
190
|
-
|
|
191
|
-
|
|
188
|
+
rowsWithinField.splice(moveFromIndex, 1);
|
|
189
|
+
rowsWithinField.splice(moveToIndex, 0, copyOfMovingRow2);
|
|
192
190
|
const newState = {
|
|
193
191
|
...remainingFields,
|
|
194
|
-
...flattenRows(path,
|
|
192
|
+
...flattenRows(path, topLevelRows),
|
|
195
193
|
[path]: {
|
|
196
194
|
...state[path],
|
|
197
195
|
requiresRender: true,
|
|
198
|
-
rows:
|
|
196
|
+
rows: rowsWithinField
|
|
199
197
|
}
|
|
200
198
|
};
|
|
199
|
+
// Do the same for custom components, i.e. `array.customComponents.RowLabels[0]` -> `array.customComponents.RowLabels[1]`
|
|
200
|
+
// Do this _after_ initializing `newState` to avoid adding the `customComponents` key to the state if it doesn't exist
|
|
201
|
+
if (newState[path]?.customComponents?.RowLabels) {
|
|
202
|
+
const customComponents = {
|
|
203
|
+
...newState[path].customComponents,
|
|
204
|
+
RowLabels: [...newState[path].customComponents.RowLabels]
|
|
205
|
+
};
|
|
206
|
+
// Ensure the array grows if necessary
|
|
207
|
+
if (moveToIndex >= customComponents.RowLabels.length) {
|
|
208
|
+
customComponents.RowLabels.length = moveToIndex + 1;
|
|
209
|
+
}
|
|
210
|
+
const copyOfMovingLabel = customComponents.RowLabels[moveFromIndex];
|
|
211
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
212
|
+
customComponents.RowLabels.splice(moveFromIndex, 1);
|
|
213
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
214
|
+
customComponents.RowLabels.splice(moveToIndex, 0, copyOfMovingLabel);
|
|
215
|
+
newState[path].customComponents = customComponents;
|
|
216
|
+
}
|
|
201
217
|
return newState;
|
|
202
218
|
}
|
|
203
219
|
case 'REMOVE':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObjectSimple","deepCopyObjectSimpleWithoutReactComponents","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","blockType","path","rowIndex","rowIndexFromArgs","subFieldState","rows","length","withNewRow","newRow","id","value","toHexString","undefined","collapsed","isLoading","splice","initialValue","valid","remainingFields","siblingRows","newState","passesCondition","requiresRender","disableFormData","errorPaths","errors","forEach","message","fieldPath","errorMessage","segments","split","push","fieldErrorPath","parentPath","slice","join","Object","entries","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","rowsMetadata","duplicateRowMetadata","duplicateRowState","key","keys","filter","endsWith","idState","isValid","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","rowIndexArg","Math","max","min","optimize","newField","oldField","sanitize","field","values","updatedRows","formState"],"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 { deepCopyObjectSimple, deepCopyObjectSimpleWithoutReactComponents } 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 '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 isLoading: true,\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\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [`${path}.${rowIndex}.id`]: {\n initialValue: newRow.id,\n passesCondition: true,\n requiresRender: true,\n valid: true,\n value: newRow.id,\n },\n [path]: {\n ...state[path],\n disableFormData: true,\n requiresRender: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\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(({ message, path: fieldPath }) => {\n newState[fieldPath] = {\n ...(newState[fieldPath] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = fieldPath.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: fieldPath,\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 '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 = deepCopyObjectSimpleWithoutReactComponents(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 requiresRender: 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 requiresRender: true,\n rows: rowStateCopy,\n },\n }\n\n return newState\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 '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 requiresRender: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\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 '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: FormState = {}\n\n for (const [path, newField] of Object.entries(action.state)) {\n const oldField = state[path]\n\n if (newField.valid !== false) {\n newField.valid = true\n }\n if (newField.passesCondition !== false) {\n newField.passesCondition = true\n }\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n }\n\n return newState\n }\n\n //TODO: Remove this in 4.0 - this is a temporary fix to prevent a breaking change\n if (action.sanitize) {\n for (const field of Object.values(action.state)) {\n if (field.valid !== false) {\n field.valid = true\n }\n if (field.passesCondition !== false) {\n field.passesCondition = true\n }\n }\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\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 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 '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 'UPDATE_MANY': {\n const newState = { ...state }\n\n Object.entries(action.formState).forEach(([path, field]) => {\n newState[path] = field\n })\n\n return newState\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"AAAA;;AAGA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,MAAM,QAAQ,cAAa,CAAC;AACrC,SAASC,oBAAoB,EAAEC,0CAA0C,QAAQ;AAIjF,SAASC,WAAW,EAAEC,YAAY,QAAQ;AAE1C,MAAMC,QAAA,GAAYN,cAAA,CAAeO,OAAO,IACtCP,cAAA;AAEF;;;AAGA,OAAO,SAASQ,aAAaC,KAAgB,EAAEC,MAAmB;EAChE,QAAQA,MAAA,CAAOC,IAAI;IACjB,KAAK;MAAW;QACd,MAAM;UAAEC,SAAS;UAAEC,IAAI;UAAEC,QAAA,EAAUC,gBAAgB;UAAEC,aAAA,GAAgB,CAAC;QAAC,CAAE,GAAGN,MAAA;QAE5E,MAAMI,QAAA,GACJ,OAAOC,gBAAA,KAAqB,WAAWA,gBAAA,GAAmBN,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,EAAMC,MAAA,IAAU;QAEzF,MAAMC,UAAA,GAAa,C,IAAKV,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QAEjD,MAAMG,MAAA,GAAc;UAClBC,EAAA,EAAIL,aAAC,EAAeK,EAAA,EAAIC,KAAA,IAAoB,IAAIhB,QAAA,GAAWiB,WAAW;UACtEX,SAAA,EAAWA,SAAA,IAAaY,SAAA;UACxBC,SAAA,EAAW;UACXC,SAAA,EAAW;QACb;QAEAP,UAAA,CAAWQ,MAAM,CAACb,QAAA,EAAU,GAAGM,MAAA;QAE/B,IAAIR,SAAA,EAAW;UACbI,aAAA,CAAcJ,SAAS,GAAG;YACxBgB,YAAA,EAAchB,SAAA;YACdiB,KAAA,EAAO;YACPP,KAAA,EAAOV;UACT;QACF;QAEA;QACA,MAAM;UAAEkB,eAAe;UAAEb,IAAA,EAAMc;QAAW,CAAE,GAAG1B,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QAElEsB,WAAA,CAAYJ,MAAM,CAACb,QAAA,EAAU,GAAGE,aAAA;QAEhC,MAAMgB,QAAA,GAAsB;UAC1B,GAAGF,eAAe;UAClB,GAAG1B,WAAA,CAAYS,IAAA,EAAMkB,WAAA,CAAY;UACjC,CAAC,GAAGlB,IAAA,IAAQC,QAAA,KAAa,GAAG;YAC1Bc,YAAA,EAAcR,MAAA,CAAOC,EAAE;YACvBY,eAAA,EAAiB;YACjBC,cAAA,EAAgB;YAChBL,KAAA,EAAO;YACPP,KAAA,EAAOF,MAAA,CAAOC;UAChB;UACA,CAACR,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdsB,eAAA,EAAiB;YACjBD,cAAA,EAAgB;YAChBjB,IAAA,EAAME,UAAA;YACNG,KAAA,EAAOS,WAAA,CAAYb;UACrB;QACF;QAEA,OAAOc,QAAA;MACT;IAEA,KAAK;MAAqB;QACxB,IAAIA,QAAA,GAAW;UAAE,GAAGvB;QAAM;QAE1B,MAAM2B,UAAA,GAA+D,EAAE;QAEvE1B,MAAA,CAAO2B,MAAM,CAACC,OAAO,CAAC,CAAC;UAAEC,OAAO;UAAE1B,IAAA,EAAM2B;QAAS,CAAE;UACjDR,QAAQ,CAACQ,SAAA,CAAU,GAAG;YACpB,IAAIR,QAAQ,CAACQ,SAAA,CAAU,IAAI;cACzBZ,YAAA,EAAc;cACdN,KAAA,EAAO;YACT,CAAC;YACDmB,YAAA,EAAcF,OAAA;YACdV,KAAA,EAAO;UACT;UAEA,MAAMa,QAAA,GAAWF,SAAA,CAAUG,KAAK,CAAC;UACjC,IAAID,QAAA,CAASxB,MAAM,GAAG,GAAG;YACvBkB,UAAA,CAAWQ,IAAI,CAAC;cACdC,cAAA,EAAgBL,SAAA;cAChBM,UAAA,EAAYJ,QAAA,CAASK,KAAK,CAAC,GAAGL,QAAA,CAASxB,MAAM,GAAG,GAAG8B,IAAI,CAAC;YAC1D;UACF;QACF;QAEAhB,QAAA,GAAWiB,MAAA,CAAOC,OAAO,CAAClB,QAAA,EAAUmB,MAAM,CAAC,CAACC,GAAA,EAAK,CAACvC,IAAA,EAAMwC,UAAA,CAAW;UACjE,MAAMC,eAAA,GAAkBlB,UAAA,CAAWe,MAAM,CAAC,CAACI,QAAA,EAAU;YAAEV,cAAc;YAAEC;UAAU,CAAE;YACjF,IAAIA,UAAA,CAAWU,UAAU,CAAC3C,IAAA,GAAO;cAC/B0C,QAAA,CAASX,IAAI,CAACC,cAAA;YAChB;YACA,OAAOU,QAAA;UACT,GAAG,EAAE;UAEL,IAAIE,OAAA,GAAU;UAEd,IAAIH,eAAA,CAAgBpC,MAAM,GAAG,GAAG;YAC9B,MAAMwC,aAAA,GAAgBC,KAAA,CAAMC,OAAO,CAACP,UAAA,CAAWjB,UAAU,IAAIiB,UAAA,CAAWjB,UAAU,GAAG,EAAE;YAEvFkB,eAAA,CAAgBhB,OAAO,CAAEO,cAAA;cACvB,IAAI,CAACa,aAAA,CAAcG,QAAQ,CAAChB,cAAA,GAAiB;gBAC3Ca,aAAA,CAAcd,IAAI,CAACC,cAAA;gBACnBY,OAAA,GAAU;cACZ;YACF;YAEA,IAAIA,OAAA,EAAS;cACXL,GAAG,CAACvC,IAAA,CAAK,GAAG;gBACV,GAAGwC,UAAU;gBACbjB,UAAA,EAAYsB;cACd;YACF;UACF;UAEA,IAAI,CAACD,OAAA,EAAS;YACZL,GAAG,CAACvC,IAAA,CAAK,GAAGwC,UAAA;UACd;UAEA,OAAOD,GAAA;QACT,GAAG,CAAC;QAEJ,OAAOpB,QAAA;MACT;IAEA,KAAK;MAAiB;QACpB,MAAM;UAAEnB,IAAI;UAAEC;QAAQ,CAAE,GAAGJ,MAAA;QAC3B,MAAM;UAAEoB,eAAe;UAAEb;QAAI,CAAE,GAAGZ,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QACrD,MAAMqD,YAAA,GAAe,C,IAAKrD,KAAK,CAACI,IAAA,CAAK,CAACI,IAAI,IAAI,EAAE,EAAE;QAElD,MAAM8C,oBAAA,GAAuB7D,oBAAA,CAAqB4D,YAAY,CAAChD,QAAA,CAAS;QACxE,IAAIiD,oBAAA,CAAqB1C,EAAE,EAAE;UAC3B0C,oBAAA,CAAqB1C,EAAE,GAAG,IAAIf,QAAA,GAAWiB,WAAW;QACtD;QAEA,MAAMyC,iBAAA,GAAoB7D,0CAAA,CAA2Cc,IAAI,CAACH,QAAA,CAAS;QACnF,IAAIkD,iBAAA,CAAkB3C,EAAE,EAAE;UACxB2C,iBAAA,CAAkB3C,EAAE,CAACC,KAAK,GAAG,IAAIhB,QAAA,GAAWiB,WAAW;UACvDyC,iBAAA,CAAkB3C,EAAE,CAACO,YAAY,GAAG,IAAItB,QAAA,GAAWiB,WAAW;QAChE;QAEA,KAAK,MAAM0C,GAAA,IAAOhB,MAAA,CAAOiB,IAAI,CAACF,iBAAA,EAAmBG,MAAM,CAAEF,GAAA,IAAQA,GAAA,CAAIG,QAAQ,CAAC,SAAS;UACrF,MAAMC,OAAA,GAAUL,iBAAiB,CAACC,GAAA,CAAI;UAEtC,IAAII,OAAA,IAAW,OAAOA,OAAA,CAAQ/C,KAAK,KAAK,YAAYhB,QAAA,CAASgE,OAAO,CAACD,OAAA,CAAQ/C,KAAK,GAAG;YACnF0C,iBAAiB,CAACC,GAAA,CAAI,CAAC3C,KAAK,GAAG,IAAIhB,QAAA,GAAWiB,WAAW;YACzDyC,iBAAiB,CAACC,GAAA,CAAI,CAACrC,YAAY,GAAG,IAAItB,QAAA,GAAWiB,WAAW;UAClE;QACF;QAEA;QACA,IAAI0B,MAAA,CAAOiB,IAAI,CAACF,iBAAA,EAAmB9C,MAAM,GAAG,GAAG;UAC7C;UACAD,IAAA,CAAKU,MAAM,CAACb,QAAA,GAAW,GAAG,GAAGkD,iBAAA;UAC7BF,YAAA,CAAanC,MAAM,CAACb,QAAA,GAAW,GAAG,GAAGiD,oBAAA;QACvC;QAEA,MAAM/B,QAAA,GAAW;UACf,GAAGF,eAAe;UAClB,GAAG1B,WAAA,CAAYS,IAAA,EAAMI,IAAA,CAAK;UAC1B,CAACJ,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdsB,eAAA,EAAiB;YACjBD,cAAA,EAAgB;YAChBjB,IAAA,EAAM6C,YAAA;YACNxC,KAAA,EAAOL,IAAA,CAAKC;UACd;QACF;QAEA,OAAOc,QAAA;MACT;IAEA,KAAK;MAAY;QACf,MAAM;UAAEuC,aAAa;UAAEC,WAAW;UAAE3D;QAAI,CAAE,GAAGH,MAAA;QAC7C,MAAM;UAAEoB,eAAe;UAAEb;QAAI,CAAE,GAAGZ,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QAErD;QACA,MAAMgE,eAAA,GAAkBxD,IAAI,CAACsD,aAAA,CAAc;QAC3C;QACAtD,IAAA,CAAKU,MAAM,CAAC4C,aAAA,EAAe;QAC3B;QACAtD,IAAA,CAAKU,MAAM,CAAC6C,WAAA,EAAa,GAAGC,eAAA;QAE5B;QACA,MAAMC,YAAA,GAAe,C,IAAKjE,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QACnD,MAAM0D,cAAA,GAAiB;UAAE,GAAGD,YAAY,CAACH,aAAA;QAAe;QACxDG,YAAA,CAAa/C,MAAM,CAAC4C,aAAA,EAAe;QACnCG,YAAA,CAAa/C,MAAM,CAAC6C,WAAA,EAAa,GAAGG,cAAA;QAEpC,MAAM3C,QAAA,GAAW;UACf,GAAGF,eAAe;UAClB,GAAG1B,WAAA,CAAYS,IAAA,EAAMI,IAAA,CAAK;UAC1B,CAACJ,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdqB,cAAA,EAAgB;YAChBjB,IAAA,EAAMyD;UACR;QACF;QAEA,OAAO1C,QAAA;MACT;IAEA,KAAK;MAAU;QACb,MAAMA,QAAA,GAAW;UAAE,GAAGvB;QAAM;QAC5B,IAAIuB,QAAQ,CAACtB,MAAA,CAAOG,IAAI,CAAC,EAAE;UACzB,OAAOmB,QAAQ,CAACtB,MAAA,CAAOG,IAAI,CAAC;QAC9B;QACA,OAAOmB,QAAA;MACT;IAEA,KAAK;MAAc;QACjB,MAAM;UAAEnB,IAAI;UAAEC;QAAQ,CAAE,GAAGJ,MAAA;QAC3B,MAAM;UAAEoB,eAAe;UAAEb;QAAI,CAAE,GAAGZ,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QACrD,MAAMqD,YAAA,GAAe,C,IAAKrD,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QAEnDA,IAAA,CAAKU,MAAM,CAACb,QAAA,EAAU;QACtBgD,YAAA,CAAanC,MAAM,CAACb,QAAA,EAAU;QAE9B,MAAMkB,QAAA,GAAsB;UAC1B,GAAGF,eAAe;UAClB,CAACjB,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdsB,eAAA,EAAiBlB,IAAA,CAAKC,MAAM,GAAG;YAC/BgB,cAAA,EAAgB;YAChBjB,IAAA,EAAM6C,YAAA;YACNxC,KAAA,EAAOL,IAAA,CAAKC;UACd;UACA,GAAGd,WAAA,CAAYS,IAAA,EAAMI,IAAA;QACvB;QAEA,OAAOe,QAAA;MACT;IAEA,KAAK;MAAe;QAClB,MAAM;UAAEpB,SAAS;UAAEC,IAAI;UAAEC,QAAA,EAAU8D,WAAW;UAAE5D,aAAA,GAAgB,CAAC;QAAC,CAAE,GAAGN,MAAA;QAEvE,MAAM;UAAEoB,eAAe;UAAEb,IAAA,EAAMc;QAAW,CAAE,GAAG1B,YAAA,CAAaQ,IAAA,EAAMJ,KAAA;QAClE,MAAMK,QAAA,GAAW+D,IAAA,CAAKC,GAAG,CAAC,GAAGD,IAAA,CAAKE,GAAG,CAACH,WAAA,EAAa7C,WAAA,EAAab,MAAA,GAAS,KAAK;QAE9E,MAAM4C,YAAA,GAAe,C,IAAKrD,KAAK,CAACI,IAAA,CAAK,EAAEI,IAAA,IAAQ,EAAE,EAAE;QACnD6C,YAAY,CAAChD,QAAA,CAAS,GAAG;UACvBO,EAAA,EAAI,IAAIf,QAAA,GAAWiB,WAAW;UAC9BX,SAAA,EAAWA,SAAA,IAAaY,SAAA;UACxBC,SAAA,EAAW;QACb;QAEA,IAAIb,SAAA,EAAW;UACbI,aAAA,CAAcJ,SAAS,GAAG;YACxBgB,YAAA,EAAchB,SAAA;YACdiB,KAAA,EAAO;YACPP,KAAA,EAAOV;UACT;QACF;QAEA;QACAmB,WAAW,CAACjB,QAAA,CAAS,GAAGE,aAAA;QAExB,MAAMgB,QAAA,GAAsB;UAC1B,GAAGF,eAAe;UAClB,GAAG1B,WAAA,CAAYS,IAAA,EAAMkB,WAAA,CAAY;UACjC,CAAClB,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdsB,eAAA,EAAiB;YACjBlB,IAAA,EAAM6C,YAAA;YACNxC,KAAA,EAAOS,WAAA,CAAYb;UACrB;QACF;QAEA,OAAOc,QAAA;MACT;IAEA,KAAK;MAAiB;QACpB,IAAItB,MAAA,CAAOsE,QAAQ,KAAK,OAAO;UAC7B;UACA;UACA;UACA;UACA;UACA,MAAMhD,QAAA,GAAsB,CAAC;UAE7B,KAAK,MAAM,CAACnB,IAAA,EAAMoE,QAAA,CAAS,IAAIhC,MAAA,CAAOC,OAAO,CAACxC,MAAA,CAAOD,KAAK,GAAG;YAC3D,MAAMyE,QAAA,GAAWzE,KAAK,CAACI,IAAA,CAAK;YAE5B,IAAIoE,QAAA,CAASpD,KAAK,KAAK,OAAO;cAC5BoD,QAAA,CAASpD,KAAK,GAAG;YACnB;YACA,IAAIoD,QAAA,CAAShD,eAAe,KAAK,OAAO;cACtCgD,QAAA,CAAShD,eAAe,GAAG;YAC7B;YAEA,IAAI,CAAChC,MAAA,CAAOiF,QAAA,EAAUD,QAAA,GAAW;cAC/BjD,QAAQ,CAACnB,IAAA,CAAK,GAAGoE,QAAA;YACnB,OAAO,IAAIC,QAAA,EAAU;cACnBlD,QAAQ,CAACnB,IAAA,CAAK,GAAGqE,QAAA;YACnB;UACF;UAEA,OAAOlD,QAAA;QACT;QAEA;QACA,IAAItB,MAAA,CAAOyE,QAAQ,EAAE;UACnB,KAAK,MAAMC,KAAA,IAASnC,MAAA,CAAOoC,MAAM,CAAC3E,MAAA,CAAOD,KAAK,GAAG;YAC/C,IAAI2E,KAAA,CAAMvD,KAAK,KAAK,OAAO;cACzBuD,KAAA,CAAMvD,KAAK,GAAG;YAChB;YACA,IAAIuD,KAAA,CAAMnD,eAAe,KAAK,OAAO;cACnCmD,KAAA,CAAMnD,eAAe,GAAG;YAC1B;UACF;QACF;QACA;QACA,OAAOvB,MAAA,CAAOD,KAAK;MACrB;IAEA,KAAK;MAA0B;QAC7B,MAAM;UAAEI,IAAI;UAAEyE;QAAW,CAAE,GAAG5E,MAAA;QAE9B,OAAO;UACL,GAAGD,KAAK;UACR,CAACI,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdI,IAAA,EAAMqE;UACR;QACF;MACF;IAEA,KAAK;MAAqB;QACxB,MAAM;UAAEzE,IAAI;UAAEyE;QAAW,CAAE,GAAG5E,MAAA;QAE9B,MAAMsB,QAAA,GAAW;UACf,GAAGvB,KAAK;UACR,CAACI,IAAA,GAAO;YACN,GAAGJ,KAAK,CAACI,IAAA,CAAK;YACdI,IAAA,EAAMqE;UACR;QACF;QAEA,OAAOtD,QAAA;MACT;IAEA,KAAK;MAAU;QACb,MAAMiD,QAAA,GAAWhC,MAAA,CAAOC,OAAO,CAACxC,MAAA,EAAQyC,MAAM,CAC5C,CAACiC,KAAA,EAAO,CAACnB,GAAA,EAAK3C,KAAA,CAAM;UAClB,IACE,CACE,mBACA,gBACA,gBACA,QACA,SACA,YACA,QACD,CAACuC,QAAQ,CAACI,GAAA,GACX;YACA,OAAO;cACL,GAAGmB,KAAK;cACR,CAACnB,GAAA,GAAM3C;YACT;UACF;UAEA,OAAO8D,KAAA;QACT,GACA3E,KAAK,CAACC,MAAA,CAAOG,IAAI,CAAC,IAAK,CAAC;QAG1B,MAAMmB,QAAA,GAAW;UACf,GAAGvB,KAAK;UACR,CAACC,MAAA,CAAOG,IAAI,GAAGoE;QACjB;QAEA,OAAOjD,QAAA;MACT;IAEA,KAAK;MAAe;QAClB,MAAMA,QAAA,GAAW;UAAE,GAAGvB;QAAM;QAE5BwC,MAAA,CAAOC,OAAO,CAACxC,MAAA,CAAO6E,SAAS,EAAEjD,OAAO,CAAC,CAAC,CAACzB,IAAA,EAAMuE,KAAA,CAAM;UACrDpD,QAAQ,CAACnB,IAAA,CAAK,GAAGuE,KAAA;QACnB;QAEA,OAAOpD,QAAA;MACT;IAEA;MAAS;QACP,OAAOvB,KAAA;MACT;EACF;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"fieldReducer.js","names":["ObjectIdImport","dequal","deepCopyObjectSimple","deepCopyObjectSimpleWithoutReactComponents","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","blockType","path","rowIndex","rowIndexFromArgs","subFieldState","rows","length","withNewRow","newRow","id","value","toHexString","undefined","collapsed","isLoading","splice","initialValue","valid","remainingFields","siblingRows","newState","passesCondition","requiresRender","disableFormData","errorPaths","errors","forEach","message","fieldPath","errorMessage","segments","split","push","fieldErrorPath","parentPath","slice","join","Object","entries","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","rowsMetadata","duplicateRowMetadata","duplicateRowState","key","keys","filter","endsWith","idState","isValid","moveFromIndex","moveToIndex","topLevelRows","copyOfMovingRow","rowsWithinField","copyOfMovingRow2","customComponents","RowLabels","copyOfMovingLabel","rowIndexArg","Math","max","min","optimize","newField","oldField","sanitize","field","values","updatedRows","formState"],"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 { deepCopyObjectSimple, deepCopyObjectSimpleWithoutReactComponents } 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 '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 isLoading: true,\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\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [`${path}.${rowIndex}.id`]: {\n initialValue: newRow.id,\n passesCondition: true,\n requiresRender: true,\n valid: true,\n value: newRow.id,\n },\n [path]: {\n ...state[path],\n disableFormData: true,\n requiresRender: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\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(({ message, path: fieldPath }) => {\n newState[fieldPath] = {\n ...(newState[fieldPath] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = fieldPath.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: fieldPath,\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 '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 = deepCopyObjectSimpleWithoutReactComponents(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 requiresRender: 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\n // Handle moving rows on the top-level, i.e. `array.0.text` -> `array.1.text`\n const { remainingFields, rows: topLevelRows } = separateRows(path, state)\n const copyOfMovingRow = topLevelRows[moveFromIndex]\n topLevelRows.splice(moveFromIndex, 1)\n topLevelRows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowsWithinField = [...(state[path]?.rows || [])]\n const copyOfMovingRow2 = { ...rowsWithinField[moveFromIndex] }\n rowsWithinField.splice(moveFromIndex, 1)\n rowsWithinField.splice(moveToIndex, 0, copyOfMovingRow2)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, topLevelRows),\n [path]: {\n ...state[path],\n requiresRender: true,\n rows: rowsWithinField,\n },\n }\n\n // Do the same for custom components, i.e. `array.customComponents.RowLabels[0]` -> `array.customComponents.RowLabels[1]`\n // Do this _after_ initializing `newState` to avoid adding the `customComponents` key to the state if it doesn't exist\n if (newState[path]?.customComponents?.RowLabels) {\n const customComponents = {\n ...newState[path].customComponents,\n RowLabels: [...newState[path].customComponents.RowLabels],\n }\n\n // Ensure the array grows if necessary\n if (moveToIndex >= customComponents.RowLabels.length) {\n customComponents.RowLabels.length = moveToIndex + 1\n }\n\n const copyOfMovingLabel = customComponents.RowLabels[moveFromIndex]\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n customComponents.RowLabels.splice(moveFromIndex, 1)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n customComponents.RowLabels.splice(moveToIndex, 0, copyOfMovingLabel)\n\n newState[path].customComponents = customComponents\n }\n\n return newState\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 '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 requiresRender: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\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 '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: FormState = {}\n\n for (const [path, newField] of Object.entries(action.state)) {\n const oldField = state[path]\n\n if (newField.valid !== false) {\n newField.valid = true\n }\n if (newField.passesCondition !== false) {\n newField.passesCondition = true\n }\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n }\n\n return newState\n }\n\n //TODO: Remove this in 4.0 - this is a temporary fix to prevent a breaking change\n if (action.sanitize) {\n for (const field of Object.values(action.state)) {\n if (field.valid !== false) {\n field.valid = true\n }\n if (field.passesCondition !== false) {\n field.passesCondition = true\n }\n }\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\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 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 '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 'UPDATE_MANY': {\n const newState = { ...state }\n\n Object.entries(action.formState).forEach(([path, field]) => {\n newState[path] = field\n })\n\n return newState\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/Form/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAGV,SAAS,EAGV,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,KAAK,EAGV,SAAS,EAGV,MAAM,YAAY,CAAA;AAmCnB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA4vBpC,CAAA;AAED,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
package/dist/forms/Form/index.js
CHANGED
|
@@ -18,9 +18,10 @@ import { useOperation } from '../../providers/Operation/index.js';
|
|
|
18
18
|
import { useRouteTransition } from '../../providers/RouteTransition/index.js';
|
|
19
19
|
import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
|
|
20
20
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
21
|
+
import { useUploadHandlers } from '../../providers/UploadHandlers/index.js';
|
|
21
22
|
import { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js';
|
|
22
23
|
import { requests } from '../../utilities/api.js';
|
|
23
|
-
import { DocumentFormContext, FormContext, FormFieldsContext, FormWatchContext, InitializingContext, ModifiedContext, ProcessingContext, SubmittedContext, useDocumentForm } from './context.js';
|
|
24
|
+
import { BackgroundProcessingContext, DocumentFormContext, FormContext, FormFieldsContext, FormWatchContext, InitializingContext, ModifiedContext, ProcessingContext, SubmittedContext, useDocumentForm } from './context.js';
|
|
24
25
|
import { errorMessages } from './errorMessages.js';
|
|
25
26
|
import { fieldReducer } from './fieldReducer.js';
|
|
26
27
|
import { initContextState } from './initContextState.js';
|
|
@@ -76,6 +77,9 @@ export const Form = props => {
|
|
|
76
77
|
const {
|
|
77
78
|
startRouteTransition
|
|
78
79
|
} = useRouteTransition();
|
|
80
|
+
const {
|
|
81
|
+
getUploadHandler
|
|
82
|
+
} = useUploadHandlers();
|
|
79
83
|
const {
|
|
80
84
|
config
|
|
81
85
|
} = useConfig();
|
|
@@ -89,6 +93,7 @@ export const Form = props => {
|
|
|
89
93
|
const [isValid, setIsValid] = useState(true);
|
|
90
94
|
const [initializing, setInitializing] = useState(initializingFromProps);
|
|
91
95
|
const [processing, setProcessing] = useState(false);
|
|
96
|
+
const [backgroundProcessing, setBackgroundProcessing] = useState(false);
|
|
92
97
|
const [submitted, setSubmitted] = useState(false);
|
|
93
98
|
const formRef = useRef(null);
|
|
94
99
|
const contextRef = useRef({});
|
|
@@ -257,7 +262,7 @@ export const Form = props => {
|
|
|
257
262
|
setDisabled(false);
|
|
258
263
|
return;
|
|
259
264
|
}
|
|
260
|
-
const formData = contextRef.current.createFormData(overrides, {
|
|
265
|
+
const formData = await contextRef.current.createFormData(overrides, {
|
|
261
266
|
mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function')
|
|
262
267
|
});
|
|
263
268
|
try {
|
|
@@ -366,11 +371,11 @@ export const Form = props => {
|
|
|
366
371
|
const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), []);
|
|
367
372
|
const getSiblingData = useCallback(path_1 => getSiblingDataFunc(contextRef.current.fields, path_1), []);
|
|
368
373
|
const getDataByPath = useCallback(path_2 => getDataByPathFunc(contextRef.current.fields, path_2), []);
|
|
369
|
-
const createFormData = useCallback((overrides_0, {
|
|
374
|
+
const createFormData = useCallback(async (overrides_0, {
|
|
370
375
|
mergeOverrideData = true
|
|
371
376
|
}) => {
|
|
372
377
|
let data_5 = reduceFieldsToValues(contextRef.current.fields, true);
|
|
373
|
-
|
|
378
|
+
let file = data_5?.file;
|
|
374
379
|
if (file) {
|
|
375
380
|
delete data_5.file;
|
|
376
381
|
}
|
|
@@ -382,6 +387,26 @@ export const Form = props => {
|
|
|
382
387
|
} else {
|
|
383
388
|
data_5 = overrides_0;
|
|
384
389
|
}
|
|
390
|
+
const handler = getUploadHandler({
|
|
391
|
+
collectionSlug
|
|
392
|
+
});
|
|
393
|
+
if (typeof handler === 'function') {
|
|
394
|
+
let clientUploadContext = null;
|
|
395
|
+
let filename = file.name;
|
|
396
|
+
clientUploadContext = await handler({
|
|
397
|
+
file,
|
|
398
|
+
updateFilename: value_0 => {
|
|
399
|
+
filename = value_0;
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
file = JSON.stringify({
|
|
403
|
+
clientUploadContext,
|
|
404
|
+
collectionSlug,
|
|
405
|
+
filename,
|
|
406
|
+
mimeType: file.type,
|
|
407
|
+
size: file.size
|
|
408
|
+
});
|
|
409
|
+
}
|
|
385
410
|
const dataToSerialize = {
|
|
386
411
|
_payload: JSON.stringify(data_5),
|
|
387
412
|
file
|
|
@@ -392,7 +417,7 @@ export const Form = props => {
|
|
|
392
417
|
nullsAsUndefineds: false
|
|
393
418
|
});
|
|
394
419
|
return formData_0;
|
|
395
|
-
}, []);
|
|
420
|
+
}, [collectionSlug, getUploadHandler]);
|
|
396
421
|
const reset = useCallback(async data_6 => {
|
|
397
422
|
const controller = handleAbortRef(abortResetFormRef);
|
|
398
423
|
const docPreferences = await getDocPreferences();
|
|
@@ -499,6 +524,7 @@ export const Form = props => {
|
|
|
499
524
|
contextRef.current.createFormData = createFormData;
|
|
500
525
|
contextRef.current.setModified = setModified;
|
|
501
526
|
contextRef.current.setProcessing = setProcessing;
|
|
527
|
+
contextRef.current.setBackgroundProcessing = setBackgroundProcessing;
|
|
502
528
|
contextRef.current.setSubmitted = setSubmitted;
|
|
503
529
|
contextRef.current.setIsValid = setIsValid;
|
|
504
530
|
contextRef.current.disabled = disabled;
|
|
@@ -624,11 +650,14 @@ export const Form = props => {
|
|
|
624
650
|
value: !isMounted || isMounted && initializing,
|
|
625
651
|
children: /*#__PURE__*/_jsx(ProcessingContext.Provider, {
|
|
626
652
|
value: processing,
|
|
627
|
-
children: /*#__PURE__*/_jsx(
|
|
628
|
-
value:
|
|
629
|
-
children: /*#__PURE__*/_jsx(
|
|
630
|
-
value:
|
|
631
|
-
children:
|
|
653
|
+
children: /*#__PURE__*/_jsx(BackgroundProcessingContext.Provider, {
|
|
654
|
+
value: backgroundProcessing,
|
|
655
|
+
children: /*#__PURE__*/_jsx(ModifiedContext.Provider, {
|
|
656
|
+
value: modified,
|
|
657
|
+
children: /*#__PURE__*/_jsx(FormFieldsContext.Provider, {
|
|
658
|
+
value: fieldsReducer,
|
|
659
|
+
children: children
|
|
660
|
+
})
|
|
632
661
|
})
|
|
633
662
|
})
|
|
634
663
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useEffectEvent","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useRouteTransition","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","requests","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","useDocumentForm","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","code","locale","i18n","t","refreshCookie","user","operation","getFormState","startRouteTransition","config","setDisabled","isMounted","setIsMounted","modified","setModified","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","overridesFromArgs","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","acceptValues","existingState","incomingState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","controller","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","sanitize","classes","filter","join","executeOnChange","onChangeFn","changed","prevFields","isFirstRenderRef","DocumentFormContextComponent","Provider","Fragment","documentFormContextProps","_jsx","noValidate","ref","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\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 { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docPermissions, getDocPreferences, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const documentForm = useDocumentForm()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if ('validate' in field && typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n collectionSlug,\n // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n setIsValid(isValid)\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n const data = reduceFieldsToValues(serializableFields, true)\n\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(serializableFields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = contextRef.current.createFormData(overrides, {\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) {\n json = await res.json()\n }\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState({\n acceptValues: true,\n existingState: contextRef.current.fields || {},\n incomingState: newFormState,\n })\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: mergedFormState,\n })\n }\n }\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n startRouteTransition(() => router.push(redirect))\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n setIsValid(false)\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n startRouteTransition,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>((overrides, { mergeOverrideData = true }) => {\n let data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(data),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n const controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW that sets requiresRender: true and adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n sanitize: true,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent(async (submitted: boolean) => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n revalidatedFormState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(contextRef.current.fields),\n submitted,\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState({\n existingState: contextRef.current.fields || {},\n incomingState: revalidatedFormState,\n })\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n })\n\n const prevFields = useRef(contextRef.current.fields)\n const isFirstRenderRef = useRef(true)\n\n useDebouncedEffect(\n () => {\n if (isFirstRenderRef.current || !dequal(contextRef.current.fields, prevFields.current)) {\n if (modified) {\n void executeOnChange(submitted)\n }\n }\n\n isFirstRenderRef.current = false\n prevFields.current = contextRef.current.fields\n },\n /*\n Make sure we trigger this whenever modified changes (not just when `fields` changes),\n otherwise we will miss merging server form state for the first form update/onChange.\n\n Here's why:\n `fields` updates before `modified`, because setModified is in a setTimeout.\n So on the first change, modified is false, so we don't trigger the effect even though we should.\n **/\n [modified, submitted, contextRef.current.fields],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext.Provider\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n return (\n <form\n action={typeof action === 'function' ? void action : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </DocumentFormContextComponent>\n </form>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","useDebouncedEffect","useEffectEvent","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useRouteTransition","useServerFunctions","useTranslation","useUploadHandlers","abortAndIgnore","handleAbortRef","requests","BackgroundProcessingContext","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","useDocumentForm","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","code","locale","i18n","t","refreshCookie","user","operation","getFormState","startRouteTransition","getUploadHandler","config","setDisabled","isMounted","setIsMounted","modified","setModified","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","backgroundProcessing","setBackgroundProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","overridesFromArgs","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","acceptValues","existingState","incomingState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","handler","clientUploadContext","filename","name","updateFilename","JSON","stringify","mimeType","size","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","sanitize","classes","filter","join","executeOnChange","onChangeFn","changed","prevFields","isFirstRenderRef","DocumentFormContextComponent","Provider","Fragment","documentFormContextProps","_jsx","noValidate","ref","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\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 { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docPermissions, getDocPreferences, globalSlug } = useDocumentInfo()\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const documentForm = useDocumentForm()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [backgroundProcessing, setBackgroundProcessing] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if ('validate' in field && typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n collectionSlug,\n // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableSuccessStatus || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n setIsValid(isValid)\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n const data = reduceFieldsToValues(serializableFields, true)\n\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(serializableFields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = await contextRef.current.createFormData(overrides, {\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) {\n json = await res.json()\n }\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState({\n acceptValues: true,\n existingState: contextRef.current.fields || {},\n incomingState: newFormState,\n })\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: mergedFormState,\n })\n }\n }\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n startRouteTransition(() => router.push(redirect))\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n setIsValid(false)\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(err.message || t('error:unknown'))\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n } catch (err) {\n console.error('Error submitting form', err) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n startRouteTransition,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>(\n async (overrides, { mergeOverrideData = true }) => {\n let data = reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (file) {\n delete data.file\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (typeof handler === 'function') {\n let clientUploadContext = null\n let filename = file.name\n clientUploadContext = await handler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(data),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n },\n [collectionSlug, getUploadHandler],\n )\n\n const reset = useCallback(\n async (data: unknown) => {\n const controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW that sets requiresRender: true and adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n sanitize: true,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent(async (submitted: boolean) => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n revalidatedFormState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(contextRef.current.fields),\n submitted,\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState({\n existingState: contextRef.current.fields || {},\n incomingState: revalidatedFormState,\n })\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n })\n\n const prevFields = useRef(contextRef.current.fields)\n const isFirstRenderRef = useRef(true)\n\n useDebouncedEffect(\n () => {\n if (isFirstRenderRef.current || !dequal(contextRef.current.fields, prevFields.current)) {\n if (modified) {\n void executeOnChange(submitted)\n }\n }\n\n isFirstRenderRef.current = false\n prevFields.current = contextRef.current.fields\n },\n /*\n Make sure we trigger this whenever modified changes (not just when `fields` changes),\n otherwise we will miss merging server form state for the first form update/onChange.\n\n Here's why:\n `fields` updates before `modified`, because setModified is in a setTimeout.\n So on the first change, modified is false, so we don't trigger the effect even though we should.\n **/\n [modified, submitted, contextRef.current.fields],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext.Provider\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n return (\n <form\n action={typeof action === 'function' ? void action : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <BackgroundProcessingContext.Provider value={backgroundProcessing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </BackgroundProcessingContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </DocumentFormContextComponent>\n </form>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"mappings":"AAAA;;;AACA,SAASA,MAAM,QAAQ,cAAa,CAAC;AACrC,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAE1B,SACEC,0CAA0C,EAC1CC,aAAA,IAAiBC,iBAAiB,EAClCC,cAAA,IAAkBC,kBAAkB,EACpCC,oBAAoB,EACpBC,IAAI,QACC;AACP,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAC5E,SAASC,KAAK,QAAQ;AAUtB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,QAAQ,QAAQ;AACzB,SACEC,2BAA2B,EAC3BC,mBAAmB,EACnBC,WAAW,EACXC,iBAAiB,EACjBC,gBAAgB,EAChBC,mBAAmB,EACnBC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBC,eAAe,QACV;AACP,SAASC,aAAa,QAAQ;AAC9B,SAASC,YAAY,QAAQ;AAC7B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,oBAAoB,QAAQ;AAErC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,IAAA,GAA6BC,KAAA;EACxC,MAAM;IAAEC,EAAE;IAAEC,cAAc;IAAEC,cAAc;IAAEC,iBAAiB;IAAEC;EAAU,CAAE,GAAG/B,eAAA;EAE9E,MAAM;IACJgC,MAAM;IACNC,YAAY;IACZC,QAAQ;IACRC,SAAS;IACTC,QAAA,EAAUC,iBAAiB;IAC3BC,oBAAoB;IACpBC,yBAAyB;IACzB;IACAC,cAAc;IACdC,YAAY;IACZC,cAAc;IACdC,cAAA,EAAgBC,qBAAqB;IACrCC,QAAQ;IACRC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,SAAA,EAAWC,kBAAkB;IAC7BC,IAAI;IACJC;EAAmB,CACpB,GAAG1B,KAAA;EAEJ,MAAM2B,MAAA,GAAS,YAAY3B,KAAA,GAAQA,KAAA,EAAO2B,MAAA,GAASC,SAAA;EAEnD,MAAMC,MAAA,GAAS5E,SAAA;EAEf,MAAM6E,YAAA,GAAerC,eAAA;EAErB,MAAM;IAAEsC,IAAA,EAAMC;EAAM,CAAE,GAAGzD,SAAA;EACzB,MAAM;IAAE0D,IAAI;IAAEC;EAAC,CAAE,GAAGvD,cAAA;EACpB,MAAM;IAAEwD,aAAa;IAAEC;EAAI,CAAE,GAAGhE,OAAA;EAChC,MAAMiE,SAAA,GAAY7D,YAAA;EAElB,MAAM;IAAE8D;EAAY,CAAE,GAAG5D,kBAAA;EACzB,MAAM;IAAE6D;EAAoB,CAAE,GAAG9D,kBAAA;EACjC,MAAM;IAAE+D;EAAgB,CAAE,GAAG5D,iBAAA;EAE7B,MAAM;IAAE6D;EAAM,CAAE,GAAGpE,SAAA;EAEnB,MAAM,CAACqC,QAAA,EAAUgC,WAAA,CAAY,GAAG3E,QAAA,CAAS4C,iBAAA,IAAqB;EAC9D,MAAM,CAACgC,SAAA,EAAWC,YAAA,CAAa,GAAG7E,QAAA,CAAS;EAC3C,MAAM,CAAC8E,QAAA,EAAUC,WAAA,CAAY,GAAG/E,QAAA,CAAS;EACzC;;;;EAIA,MAAM,CAACgF,OAAA,EAASC,UAAA,CAAW,GAAGjF,QAAA,CAAS;EACvC,MAAM,CAACkF,YAAA,EAAcC,eAAA,CAAgB,GAAGnF,QAAA,CAASmD,qBAAA;EACjD,MAAM,CAACiC,UAAA,EAAYC,aAAA,CAAc,GAAGrF,QAAA,CAAS;EAC7C,MAAM,CAACsF,oBAAA,EAAsBC,uBAAA,CAAwB,GAAGvF,QAAA,CAAS;EAEjE,MAAM,CAACwD,SAAA,EAAWgC,YAAA,CAAa,GAAGxF,QAAA,CAAS;EAC3C,MAAMyF,OAAA,GAAU1F,MAAA,CAAwB;EACxC,MAAM2F,UAAA,GAAa3F,MAAA,CAAO,CAAC;EAC3B,MAAM4F,iBAAA,GAAoB5F,MAAA,CAAwB;EAElD,MAAM6F,aAAA,GAAgB9F,UAAA,CAAW8B,YAAA,EAAc,CAAC,GAAG,MAAMoB,YAAA;EAEzD;;;;EAIA,MAAM,CAAC6C,MAAA,EAAQC,cAAA,CAAe,GAAGF,aAAA;EAEjCF,UAAA,CAAWK,OAAO,CAACF,MAAM,GAAGA,MAAA;EAE5B,MAAMG,YAAA,GAAepG,WAAA,CAAY;IAC/B,MAAMqG,mBAAA,GAAsB,CAAC;IAC7B,IAAIjB,SAAA,GAAU;IAEd,MAAMkB,IAAA,GAAOR,UAAA,CAAWK,OAAO,CAACI,OAAO;IAEvC,MAAMC,kBAAA,GAAqBC,MAAA,CAAOC,OAAO,CAACZ,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEU,GAAG,CACtE,OAAO,CAACC,IAAA,EAAMC,KAAA,CAAM;MAClB,MAAMC,cAAA,GAAiBD,KAAA;MAEvB,IAAIA,KAAA,CAAME,eAAe,KAAK,OAAO;QACnC,IAAIC,gBAAA,GAAqCF,cAAA,CAAeG,KAAK;QAE7D,IAAI,cAAcJ,KAAA,IAAS,OAAOA,KAAA,CAAMK,QAAQ,KAAK,YAAY;UAC/D,IAAIC,eAAA,GAAkBN,KAAA,CAAMO,KAAK;UAEjC,IAAIP,KAAA,EAAOQ,IAAA,IAAQC,KAAA,CAAMC,OAAO,CAACV,KAAA,CAAMQ,IAAI,GAAG;YAC5CF,eAAA,GAAkBrB,UAAA,CAAWK,OAAO,CAAC1G,aAAa,CAACmH,IAAA;UACrD;UAEAI,gBAAA,GAAmB,MAAMH,KAAA,CAAMK,QAAQ,CAACC,eAAA,EAAiB;YACvD,GAAGN,KAAK;YACRvE,EAAA;YACAC,cAAA;YACA;YACAiF,SAAA,EAAWvD,SAAA;YACXqC,IAAA,EAAMnC,YAAA,EAAcoC,OAAA,GAAUpC,YAAA,CAAaoC,OAAO,KAAKD,IAAA;YACvDmB,KAAA,EAAO;YACP/C,SAAA;YACAgD,WAAA,EAAa,CAAC;YACdC,GAAA,EAAK;cACHC,OAAA,EAAS;gBACP9C;cACF;cACAP,CAAA;cACAE;YACF;YACAoD,WAAA,EAAa/B,UAAA,CAAWK,OAAO,CAACxG,cAAc,CAACiH,IAAA;UACjD;UAEA,IAAI,OAAOI,gBAAA,KAAqB,UAAU;YACxCF,cAAA,CAAegB,YAAY,GAAGd,gBAAA;YAC9BF,cAAA,CAAeG,KAAK,GAAG;UACzB,OAAO;YACLH,cAAA,CAAeG,KAAK,GAAG;YACvBH,cAAA,CAAegB,YAAY,GAAG7D,SAAA;UAChC;QACF;QAEA,IAAI6C,cAAA,CAAeG,KAAK,KAAK,OAAO;UAClC7B,SAAA,GAAU;QACZ;MACF;MAEAiB,mBAAmB,CAACO,IAAA,CAAK,GAAGE,cAAA;IAC9B;IAGF,MAAMiB,OAAA,CAAQC,GAAG,CAACxB,kBAAA;IAElB,IAAI,CAACnH,MAAA,CAAOyG,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEI,mBAAA,GAAsB;MAC3DH,cAAA,CAAe;QAAE+B,IAAA,EAAM;QAAiBC,KAAA,EAAO7B;MAAoB;IACrE;IAEAhB,UAAA,CAAWD,SAAA;IAEX,OAAOA,SAAA;EACT,GAAG,CAAC7C,cAAA,EAAgBuC,MAAA,EAAQoB,cAAA,EAAgB5D,EAAA,EAAIoC,SAAA,EAAWH,CAAA,EAAGE,IAAA,EAAMN,YAAA,CAAa;EAEjF,MAAMgE,MAAA,GAASnI,WAAA,CACb,OAAOoI,OAAA,GAAyB,CAAC,CAAC,EAAEC,CAAA;IAClC,MAAM;MACJ1F,MAAA,EAAQ2F,SAAA,GAAY3F,MAAM;MAC1BqB,MAAA,EAAQuE,WAAA,GAAcvE,MAAM;MAC5BwE,SAAA,EAAWC,iBAAA,GAAoB,CAAC,CAAC;MACjCC;IAAc,CACf,GAAGN,OAAA;IAEJ,IAAIrF,QAAA,EAAU;MACZ,IAAIsF,CAAA,EAAG;QACLA,CAAA,CAAEM,cAAc;MAClB;MACA;IACF;IAEA;IACA,IAAIC,UAAA,EAAYC,YAAA;IAChB,MAAMC,OAAA,GAAU,IAAIf,OAAA,CAAQ,CAACgB,OAAA,EAASC,MAAA;MACpCH,YAAA,GAAeE,OAAA;MACfH,UAAA,GAAaI,MAAA;IACf;IAEA,MAAMC,mBAAA,GACJX,SAAA,IAAa,OAAO3F,MAAA,KAAW,YAAY,OAAOA,MAAA,KAAW;IAE/D,IAAIgB,QAAA,IAAYV,oBAAA,IAAwB,CAACgG,mBAAA,EAAqB;MAC5D;MACA;MACAJ,YAAA,GAAgBvC,MAAA,IAASjG,KAAA,CAAM6I,OAAO,CAAC5C,MAAA;MACvCsC,UAAA,GAActC,MAAA,IAASjG,KAAA,CAAM8I,KAAK,CAAC7C,MAAA;IACrC,OAAO;MACLjG,KAAA,CAAMyI,OAAO,CAACA,OAAA,EAAS;QACrBK,KAAA,EAAQ7C,MAAA;UACN,OAAOA,MAAA;QACT;QACA8C,OAAA,EAAS7E,CAAA,CAAE;QACX2E,OAAA,EAAU5C,MAAA;UACR,OAAOA,MAAA;QACT;MACF;IACF;IAEA,IAAI+B,CAAA,EAAG;MACLA,CAAA,CAAEgB,eAAe;MACjBhB,CAAA,CAAEM,cAAc;IAClB;IAEAlD,aAAA,CAAc;IACdV,WAAA,CAAY;IAEZ,IAAIhB,mBAAA,EAAqB;MACvB,MAAMjE,IAAA,CAAK;IACb;IAEA;IACA,IAAIwH,KAAA,CAAMC,OAAO,CAAC3E,YAAA,GAAe;MAC/B,IAAI0G,oBAAA;MAEJ,MAAMC,kBAAA,GAAqB/J,0CAAA,CACzBsG,UAAA,CAAWK,OAAO,CAACF,MAAM;MAG3B,MAAMrD,YAAA,CAAa4G,MAAM,CAAC,OAAOC,aAAA,EAAeC,cAAA;QAC9C,MAAMD,aAAA;QAEN,MAAME,MAAA,GAAS,MAAMD,cAAA,CAAe;UAClCE,SAAA,EAAWL;QACb;QAEAD,oBAAA,GAAuBK,MAAA;MACzB,GAAG5B,OAAA,CAAQgB,OAAO;MAElB,MAAM3D,SAAA,GAAUqB,MAAA,CAAOC,OAAO,CAAC4C,oBAAA,EAAsBO,KAAK,CACxD,CAAC,GAAGhD,OAAA,CAAM,KAAKA,OAAA,CAAMI,KAAK,KAAK;MAGjC5B,UAAA,CAAWD,SAAA;MAEX,IAAI,CAACA,SAAA,EAAS;QACZK,aAAA,CAAc;QACdG,YAAA,CAAa;QACbb,WAAA,CAAY;QACZ,OAAOmB,cAAA,CAAe;UAAE+B,IAAA,EAAM;UAAiBC,KAAA,EAAOoB;QAAqB;MAC7E;IACF;IAEA,MAAMlE,SAAA,GACJsD,cAAA,IAAkBxF,yBAAA,GAA4B,OAAO,MAAM4C,UAAA,CAAWK,OAAO,CAACC,YAAY;IAE5Ff,UAAA,CAAWD,SAAA;IACX;IACA,IAAI,CAACA,SAAA,EAAS;MACZwD,UAAA,CAAWrE,CAAA,CAAE;MACbkB,aAAA,CAAc;MACdG,YAAA,CAAa;MACbb,WAAA,CAAY;MACZ;IACF;IAEA,IAAIyD,SAAA,GAAY,CAAC;IAEjB,IAAI,OAAOC,iBAAA,KAAsB,YAAY;MAC3CD,SAAA,GAAYC,iBAAA,CAAkB3C,UAAA,CAAWK,OAAO,CAACF,MAAM;IACzD,OAAO,IAAI,OAAOwC,iBAAA,KAAsB,UAAU;MAChDD,SAAA,GAAYC,iBAAA;IACd;IAEA;IACA,IAAIhF,QAAA,EAAU;MACZ,MAAM8F,oBAAA,GAAqB/J,0CAAA,CACzBsG,UAAA,CAAWK,OAAO,CAACF,MAAM;MAG3B,MAAMK,MAAA,GAAOzG,oBAAA,CAAqB0J,oBAAA,EAAoB;MAEtD,KAAK,MAAM,CAACO,GAAA,EAAK1C,KAAA,CAAM,IAAIX,MAAA,CAAOC,OAAO,CAAC8B,SAAA,GAAY;QACpDlC,MAAI,CAACwD,GAAA,CAAI,GAAG1C,KAAA;MACd;MAEA3D,QAAA,CAAS8F,oBAAA,EAAoBjD,MAAA;IAC/B;IAEA,IAAI,CAAC2C,mBAAA,EAAqB;MACxB;MACA;MACAxD,aAAA,CAAc;MACdG,YAAA,CAAa;MACbb,WAAA,CAAY;MACZ;IACF;IAEA,MAAMgF,QAAA,GAAW,MAAMjE,UAAA,CAAWK,OAAO,CAAC6D,cAAc,CAACxB,SAAA,EAAW;MAClEyB,iBAAA,EAAmBC,OAAA,CAAQ,OAAOzB,iBAAA,KAAsB;IAC1D;IAEA,IAAI;MACF,IAAI0B,GAAA;MAEJ,IAAI,OAAO7B,SAAA,KAAc,UAAU;QACjC6B,GAAA,GAAM,MAAM/I,QAAQ,CAACmH,WAAA,CAAY6B,WAAW,GAAG,CAAC9B,SAAA,EAAW;UACzD+B,IAAA,EAAMN,QAAA;UACNO,OAAA,EAAS;YACP,mBAAmBhG,IAAA,CAAKiG;UAC1B;QACF;MACF,OAAO,IAAI,OAAO5H,MAAA,KAAW,YAAY;QACvCwH,GAAA,GAAM,MAAMxH,MAAA,CAAOoH,QAAA;MACrB;MAEA5E,WAAA,CAAY;MACZJ,WAAA,CAAY;MAEZ,IAAI,OAAO5B,cAAA,KAAmB,YAAY;QACxCA,cAAA,CAAegH,GAAA,EAAKtB,YAAA,EAAcD,UAAA;QAClC;MACF;MAEA,MAAM4B,WAAA,GAAcL,GAAA,CAAIG,OAAO,CAACG,GAAG,CAAC;MACpC,MAAMC,MAAA,GAASF,WAAA,IAAeA,WAAA,CAAYG,OAAO,CAAC,wBAAwB,CAAC;MAE3E;MACA,IAAIC,IAAA,GAA4B,CAAC;MAEjC,IAAIF,MAAA,EAAQ;QACVE,IAAA,GAAO,MAAMT,GAAA,CAAIS,IAAI;MACvB;MACA,IAAIT,GAAA,CAAIU,MAAM,GAAG,KAAK;QACpB,IAAI,OAAOnH,SAAA,KAAc,YAAY;UACnC,MAAMoH,YAAA,GAAe,MAAMpH,SAAA,CAAUkH,IAAA;UACrC,IAAIE,YAAA,EAAc;YAChB,MAAM;cAAEC,QAAA,EAAUC;YAAe,CAAE,GAAG9I,oBAAA,CAAqB;cACzD+I,YAAA,EAAc;cACdC,aAAA,EAAepF,UAAA,CAAWK,OAAO,CAACF,MAAM,IAAI,CAAC;cAC7CkF,aAAA,EAAeL;YACjB;YAEA5E,cAAA,CAAe;cACb+B,IAAA,EAAM;cACNmD,QAAA,EAAU;cACVlD,KAAA,EAAO8C;YACT;UACF;QACF;QACApF,YAAA,CAAa;QACbH,aAAA,CAAc;QAEd,IAAI9B,QAAA,EAAU;UACZiB,oBAAA,CAAqB,MAAMV,MAAA,CAAOmH,IAAI,CAAC1H,QAAA;QACzC,OAAO,IAAI,CAACV,oBAAA,EAAsB;UAChC4F,YAAA,CAAa+B,IAAA,CAAKU,OAAO,IAAI/G,CAAA,CAAE;QACjC;MACF,OAAO;QACLkB,aAAA,CAAc;QACdG,YAAA,CAAa;QAEbE,UAAA,CAAWK,OAAO,GAAG;UAAE,GAAGL,UAAA,CAAWK;QAAQ,EAAE;QAAA;QAC/C,IAAIyE,IAAA,CAAKU,OAAO,EAAE;UAChB1C,UAAA,CAAWgC,IAAA,CAAKU,OAAO;UAEvB;QACF;QAEA,IAAIhE,KAAA,CAAMC,OAAO,CAACqD,IAAA,CAAKW,MAAM,GAAG;UAC9B,MAAM,CAACC,WAAA,EAAaC,cAAA,CAAe,GAAGb,IAAA,CAAKW,MAAM,CAAC/B,MAAM,CACtD,CAAC,CAACkC,SAAA,EAAWC,YAAA,CAAa,EAAEC,KAAA;YAC1B,MAAMC,YAAA,GAAe,EAAE;YACvB,MAAMC,eAAA,GAAkB,EAAE;YAE1B,IAAIF,KAAA,EAAKN,OAAA,EAAS;cAChBQ,eAAA,CAAgBT,IAAI,CAACO,KAAA;YACvB;YAEA,IAAItE,KAAA,CAAMC,OAAO,CAACqE,KAAA,EAAKtF,IAAA,EAAMiF,MAAA,GAAS;cACpCK,KAAA,CAAItF,IAAI,EAAEiF,MAAA,CAAOQ,OAAA,CAASC,SAAA;gBACxB,IAAIA,SAAA,EAAWpF,IAAA,EAAM;kBACnBiF,YAAA,CAAaR,IAAI,CAACW,SAAA;gBACpB,OAAO;kBACLF,eAAA,CAAgBT,IAAI,CAACW,SAAA;gBACvB;cACF;YACF;YAEA,OAAO,CACL,C,GAAIN,SAAA,E,GAAcG,YAAA,CAAa,EAC/B,C,GAAIF,YAAA,E,GAAiBG,eAAA,CAAgB,CACtC;UACH,GACA,CAAC,EAAE,EAAE,EAAE,CAAC;UAGVzG,UAAA,CAAW;UAEXa,cAAA,CAAe;YACb+B,IAAA,EAAM;YACNsD,MAAA,EAAQC;UACV;UAEAC,cAAA,CAAeM,OAAO,CAAEH,KAAA;YACtBhD,UAAA,CAAWgD,KAAA,CAAIN,OAAO,IAAI/G,CAAA,CAAE;UAC9B;UAEA;QACF;QAEA,MAAM+G,OAAA,GAAUvJ,aAAA,GAAgBoI,GAAA,CAAIU,MAAM,CAAC,IAAIV,GAAA,EAAK8B,UAAA,IAAc1H,CAAA,CAAE;QAEpEqE,UAAA,CAAW0C,OAAA;MACb;IACF,EAAE,OAAOM,GAAA,EAAK;MACZM,OAAA,CAAQ/C,KAAK,CAAC,yBAAyByC,GAAA,EAAK;MAAA;MAC5CnG,aAAA,CAAc;MACdG,YAAA,CAAa;MACbb,WAAA,CAAY;MACZ6D,UAAA,CAAWgD,GAAA,CAAIN,OAAO;IACxB;EACF,GACA,CACE1I,YAAA,EACAgC,oBAAA,EACAjC,MAAA,EACAM,oBAAA,EACAC,yBAAA,EACAH,QAAA,EACAmD,cAAA,EACA/C,cAAA,EACAa,MAAA,EACAP,QAAA,EACAC,SAAA,EACAC,QAAA,EACAO,MAAA,EACAK,CAAA,EACAD,IAAA,EACAP,mBAAA,CACD;EAGH,MAAMoI,SAAA,GAAYnM,WAAA,CAAY,MAAM8F,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAE,EAAE;EAEjE,MAAMmG,QAAA,GAAWpM,WAAA,CAAa4G,MAAA,IAAiBd,UAAA,CAAWK,OAAO,CAACF,MAAM,CAACW,MAAA,CAAK,EAAE,EAAE;EAElF,MAAML,OAAA,GAAUvG,WAAA,CAAY,MAAMH,oBAAA,CAAqBiG,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAE,OAAO,EAAE;EAE3F,MAAMtG,cAAA,GAAiBK,WAAA,CACpB4G,MAAA,IAAiBhH,kBAAA,CAAmBkG,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEW,MAAA,GAChE,EAAE;EAGJ,MAAMnH,aAAA,GAAgBO,WAAA,CACnB4G,MAAA,IAAiBlH,iBAAA,CAAkBoG,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAEW,MAAA,GAC/D,EAAE;EAGJ,MAAMoD,cAAA,GAAiBhK,WAAA,CACrB,OAAOwI,WAAA,EAAW;IAAEyB,iBAAA,GAAoB;EAAI,CAAE;IAC5C,IAAI3D,MAAA,GAAOzG,oBAAA,CAAqBiG,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAE;IAE3D,IAAIoG,IAAA,GAAO/F,MAAA,EAAM+F,IAAA;IAEjB,IAAIA,IAAA,EAAM;MACR,OAAO/F,MAAA,CAAK+F,IAAI;IAClB;IAEA,IAAIpC,iBAAA,EAAmB;MACrB3D,MAAA,GAAO;QACL,GAAGA,MAAI;QACP,GAAGkC;MACL;IACF,OAAO;MACLlC,MAAA,GAAOkC,WAAA;IACT;IAEA,MAAM8D,OAAA,GAAUzH,gBAAA,CAAiB;MAAEtC;IAAe;IAElD,IAAI,OAAO+J,OAAA,KAAY,YAAY;MACjC,IAAIC,mBAAA,GAAsB;MAC1B,IAAIC,QAAA,GAAWH,IAAA,CAAKI,IAAI;MACxBF,mBAAA,GAAsB,MAAMD,OAAA,CAAQ;QAClCD,IAAA;QACAK,cAAA,EAAiBtF,OAAA;UACfoF,QAAA,GAAWpF,OAAA;QACb;MACF;MAEAiF,IAAA,GAAOM,IAAA,CAAKC,SAAS,CAAC;QACpBL,mBAAA;QACAhK,cAAA;QACAiK,QAAA;QACAK,QAAA,EAAUR,IAAA,CAAKpE,IAAI;QACnB6E,IAAA,EAAMT,IAAA,CAAKS;MACb;IACF;IAEA,MAAMC,eAAA,GAAkB;MACtBC,QAAA,EAAUL,IAAA,CAAKC,SAAS,CAACtG,MAAA;MACzB+F;IACF;IAEA;IACA,MAAMtC,UAAA,GAAWxK,SAAA,CAAUwN,eAAA,EAAiB;MAAEE,OAAA,EAAS;MAAMC,iBAAA,EAAmB;IAAM;IAEtF,OAAOnD,UAAA;EACT,GACA,CAACxH,cAAA,EAAgBsC,gBAAA,CAAiB;EAGpC,MAAMsI,KAAA,GAAQnN,WAAA,CACZ,MAAOsG,MAAA;IACL,MAAM8G,UAAA,GAAajM,cAAA,CAAe4E,iBAAA;IAElC,MAAMsH,cAAA,GAAiB,MAAM5K,iBAAA;IAE7B,MAAM;MAAEyF,KAAA,EAAO6C;IAAQ,CAAE,GAAG,MAAMpG,YAAA,CAAa;MAC7CrC,EAAA;MACAC,cAAA;MACA+D,IAAA,EAAAA,MAAA;MACA9D,cAAA;MACA6K,cAAA;MACA3K,UAAA;MACA2B,MAAA;MACAK,SAAA;MACA4I,eAAA,EAAiB;MACjBC,UAAA,EAAYhL,cAAA,GAAiBA,cAAA,GAAiBG,UAAA;MAC9C8K,MAAA,EAAQJ,UAAA,CAAWI,MAAM;MACzB9E,cAAA,EAAgB;IAClB;IAEA5C,UAAA,CAAWK,OAAO,GAAG;MAAE,GAAGlE;IAAiB;IAC3CkD,WAAA,CAAY;IACZe,cAAA,CAAe;MAAE+B,IAAA,EAAM;MAAiBC,KAAA,EAAO6C;IAAS;IAExDhF,iBAAA,CAAkBI,OAAO,GAAG;EAC9B,GACA,CACE5D,cAAA,EACA2D,cAAA,EACAxD,UAAA,EACAJ,EAAA,EACAoC,SAAA,EACAC,YAAA,EACAnC,cAAA,EACAC,iBAAA,EACA4B,MAAA,CACD;EAGH,MAAMoJ,YAAA,GAAezN,WAAA,CAClBkI,KAAA;IACCpC,UAAA,CAAWK,OAAO,GAAG;MAAE,GAAGlE;IAAiB;IAC3CkD,WAAA,CAAY;IACZe,cAAA,CAAe;MAAE+B,IAAA,EAAM;MAAiBC;IAAM;EAChD,GACA,CAAChC,cAAA,CAAe;EAGlB,MAAMwH,WAAA,GAA8C1N,WAAA,CAClD,CAAC;IAAE2N,SAAS;IAAE/G,IAAI,EAAJA,MAAI;IAAEgH,QAAA,EAAUC,WAAW;IAAEC;EAAa,CAAE;IACxD,MAAMC,OAAA,GAAqBtO,aAAA,CAAcmH,MAAA,KAAS,EAAE;IACpD,MAAMgH,QAAA,GAAWC,WAAA,KAAgB5J,SAAA,GAAY8J,OAAA,CAAQC,MAAM,GAAGH,WAAA;IAE9D;IACA;IACA3H,cAAA,CAAe;MACb+B,IAAA,EAAM;MACN0F,SAAA;MACA/G,IAAA,EAAAA,MAAA;MACAgH,QAAA;MACAE;IACF;IAEA3I,WAAA,CAAY;EACd,GACA,CAACe,cAAA,EAAgBzG,aAAA,CAAc;EAGjC,MAAMwO,cAAA,GAAoDjO,WAAA,CACxD,CAAC;IAAE4G,IAAI,EAAJA,MAAI;IAAEgH,QAAQ,EAARA;EAAQ,CAAE;IACjB1H,cAAA,CAAe;MAAE+B,IAAA,EAAM;MAAcrB,IAAA,EAAAA,MAAA;MAAMgH,QAAA,EAAAA;IAAS;EACtD,GACA,CAAC1H,cAAA,CAAe;EAGlB,MAAMgI,eAAA,GAAsDlO,WAAA,CAC1D,CAAC;IAAE2N,SAAS,EAATA,WAAS;IAAE/G,IAAI,EAAJA,MAAI;IAAEgH,QAAA,EAAUC,aAAW;IAAEC,aAAa,EAAbA;EAAa,CAAE;IACxD,MAAMK,WAAA,GAAyB1O,aAAA,CAAcmH,MAAA;IAC7C,MAAMgH,UAAA,GAAWC,aAAA,KAAgB5J,SAAA,GAAYkK,WAAA,CAAYH,MAAM,GAAGH,aAAA;IAElE3H,cAAA,CAAe;MACb+B,IAAA,EAAM;MACN0F,SAAA,EAAAA,WAAA;MACA/G,IAAA,EAAAA,MAAA;MACAgH,QAAA,EAAAA,UAAA;MACAE,aAAA,EAAAA;IACF;IAEA3I,WAAA,CAAY;EACd,GACA,CAACe,cAAA,EAAgBzG,aAAA,CAAc;EAGjCQ,SAAA,CAAU;IACR,MAAMmO,aAAA,GAAgBrI,iBAAA,CAAkBI,OAAO;IAE/C,OAAO;MACLjF,cAAA,CAAekN,aAAA;IACjB;EACF,GAAG,EAAE;EAELnO,SAAA,CAAU;IACR,IAAIsD,qBAAA,KAA0BU,SAAA,EAAW;MACvCsB,eAAA,CAAgBhC,qBAAA;IAClB;EACF,GAAG,CAACA,qBAAA,CAAsB;EAE1BuC,UAAA,CAAWK,OAAO,CAACgC,MAAM,GAAGA,MAAA;EAC5BrC,UAAA,CAAWK,OAAO,CAACgG,SAAS,GAAGA,SAAA;EAC/BrG,UAAA,CAAWK,OAAO,CAACiG,QAAQ,GAAGA,QAAA;EAC9BtG,UAAA,CAAWK,OAAO,CAACI,OAAO,GAAGA,OAAA;EAC7BT,UAAA,CAAWK,OAAO,CAACxG,cAAc,GAAGA,cAAA;EACpCmG,UAAA,CAAWK,OAAO,CAAC1G,aAAa,GAAGA,aAAA;EACnCqG,UAAA,CAAWK,OAAO,CAACC,YAAY,GAAGA,YAAA;EAClCN,UAAA,CAAWK,OAAO,CAAC6D,cAAc,GAAGA,cAAA;EACpClE,UAAA,CAAWK,OAAO,CAAChB,WAAW,GAAGA,WAAA;EACjCW,UAAA,CAAWK,OAAO,CAACV,aAAa,GAAGA,aAAA;EACnCK,UAAA,CAAWK,OAAO,CAACR,uBAAuB,GAAGA,uBAAA;EAE7CG,UAAA,CAAWK,OAAO,CAACP,YAAY,GAAGA,YAAA;EAClCE,UAAA,CAAWK,OAAO,CAACd,UAAU,GAAGA,UAAA;EAChCS,UAAA,CAAWK,OAAO,CAACpD,QAAQ,GAAGA,QAAA;EAC9B+C,UAAA,CAAWK,OAAO,CAACpB,WAAW,GAAGA,WAAA;EACjCe,UAAA,CAAWK,OAAO,CAACN,OAAO,GAAGA,OAAA;EAC7BC,UAAA,CAAWK,OAAO,CAACgH,KAAK,GAAGA,KAAA;EAC3BrH,UAAA,CAAWK,OAAO,CAACsH,YAAY,GAAGA,YAAA;EAClC3H,UAAA,CAAWK,OAAO,CAACD,cAAc,GAAGA,cAAA;EACpCJ,UAAA,CAAWK,OAAO,CAACuH,WAAW,GAAGA,WAAA;EACjC5H,UAAA,CAAWK,OAAO,CAAC8H,cAAc,GAAGA,cAAA;EACpCnI,UAAA,CAAWK,OAAO,CAAC+H,eAAe,GAAGA,eAAA;EACrCpI,UAAA,CAAWK,OAAO,CAACrC,IAAI,GAAGA,IAAA;EAC1BgC,UAAA,CAAWK,OAAO,CAACb,YAAY,GAAGA,YAAA;EAClCQ,UAAA,CAAWK,OAAO,CAACf,OAAO,GAAGA,OAAA;EAE7BnF,SAAA,CAAU;IACRgF,YAAA,CAAa;EACf,GAAG,EAAE;EAELhF,SAAA,CAAU;IACR,IAAI,OAAO+C,iBAAA,KAAsB,WAAW;MAC1C+B,WAAA,CAAY/B,iBAAA;IACd;EACF,GAAG,CAACA,iBAAA,CAAkB;EAEtB/C,SAAA,CAAU;IACR,IAAI,OAAO4D,kBAAA,KAAuB,WAAW;MAC3C+B,YAAA,CAAa/B,kBAAA;IACf;EACF,GAAG,CAACA,kBAAA,CAAmB;EAEvB5D,SAAA,CAAU;IACR,IAAImD,YAAA,EAAc;MAChB0C,UAAA,CAAWK,OAAO,GAAG;QAAE,GAAGlE;MAAiB;MAC3CiE,cAAA,CAAe;QACb+B,IAAA,EAAM;QACNmD,QAAA,EAAU;QACViD,QAAA,EAAU;QACVnG,KAAA,EAAO9E;MACT;IACF;EACF,GAAG,CAACA,YAAA,EAAc8C,cAAA,CAAe;EAEjC1F,kBAAA,CACE;IACEgE,aAAA;EACF,GACA,OACA,CAACyB,MAAA,CAAO;EAGVhG,SAAA,CAAU;IACR6F,UAAA,CAAWK,OAAO,GAAG;MAAE,GAAGL,UAAA,CAAWK;IAAQ,EAAE;IAAA;IAC/ChB,WAAA,CAAY;EACd,GAAG,CAACd,MAAA,CAAO;EAEX,MAAMiK,OAAA,GAAU,CAACxL,SAAA,EAAWX,SAAA,CAAU,CAACoM,MAAM,CAACrE,OAAA,EAASsE,IAAI,CAAC;EAE5D,MAAMC,eAAA,GAAkBlO,cAAA,CAAe,MAAOqD,WAAA;IAC5C,IAAI0D,KAAA,CAAMC,OAAO,CAAC/D,QAAA,GAAW;MAC3B,IAAI8F,sBAAA,GAAkCxD,UAAA,CAAWK,OAAO,CAACF,MAAM;MAE/D,KAAK,MAAMyI,UAAA,IAAclL,QAAA,EAAU;QACjC;QACA8F,sBAAA,GAAuB,MAAMoF,UAAA,CAAW;UACtC9E,SAAA,EAAWpK,0CAAA,CAA2CsG,UAAA,CAAWK,OAAO,CAACF,MAAM;UAC/ErC,SAAA,EAAAA;QACF;MACF;MAEA,IAAI,CAAC0F,sBAAA,EAAsB;QACzB;MACF;MAEA,MAAM;QAAEqF,OAAO;QAAE5D,QAAQ,EAARA;MAAQ,CAAE,GAAG7I,oBAAA,CAAqB;QACjDgJ,aAAA,EAAepF,UAAA,CAAWK,OAAO,CAACF,MAAM,IAAI,CAAC;QAC7CkF,aAAA,EAAe7B;MACjB;MAEA,IAAIqF,OAAA,EAAS;QACXzI,cAAA,CAAe;UACb+B,IAAA,EAAM;UACNmD,QAAA,EAAU;UACVlD,KAAA,EAAO6C;QACT;MACF;IACF;EACF;EAEA,MAAM6D,UAAA,GAAazO,MAAA,CAAO2F,UAAA,CAAWK,OAAO,CAACF,MAAM;EACnD,MAAM4I,gBAAA,GAAmB1O,MAAA,CAAO;EAEhCG,kBAAA,CACE;IACE,IAAIuO,gBAAA,CAAiB1I,OAAO,IAAI,CAAC9G,MAAA,CAAOyG,UAAA,CAAWK,OAAO,CAACF,MAAM,EAAE2I,UAAA,CAAWzI,OAAO,GAAG;MACtF,IAAIjB,QAAA,EAAU;QACZ,KAAKuJ,eAAA,CAAgB7K,SAAA;MACvB;IACF;IAEAiL,gBAAA,CAAiB1I,OAAO,GAAG;IAC3ByI,UAAA,CAAWzI,OAAO,GAAGL,UAAA,CAAWK,OAAO,CAACF,MAAM;EAChD;EACA;;;;;;;EAQA,CAACf,QAAA,EAAUtB,SAAA,EAAWkC,UAAA,CAAWK,OAAO,CAACF,MAAM,CAAC,EAChD;EAGF,MAAM6I,4BAAA,GAA8CzL,cAAA,GAChD/B,mBAAA,CAAoByN,QAAQ,GAC5BhP,KAAA,CAAMiP,QAAQ;EAElB,MAAMC,wBAAA,GAA2B5L,cAAA,GAC7B;IACE+D,KAAA,EAAOtB,UAAA,CAAWK;EACpB,IACA,CAAC;EAEL,oBACE+I,IAAA,CAAC;IACCvM,MAAA,EAAQ,OAAOA,MAAA,KAAW,aAAa,KAAKA,MAAA,GAASA,MAAA;IACrDG,SAAA,EAAWwL,OAAA;IACXtK,MAAA,EAAQA,MAAA;IACRmL,UAAU;IACV1L,QAAA,EAAW4E,GAAA,IAAM,KAAKvC,UAAA,CAAWK,OAAO,CAACgC,MAAM,CAAC,CAAC,GAAGE,GAAA;IACpD+G,GAAA,EAAKvJ,OAAA;cAEL,aAAAqJ,IAAA,CAACJ,4BAAA;MAA8B,GAAGG,wBAAwB;gBACxD,aAAAC,IAAA,CAAC3N,WAAA,CAAYwN,QAAQ;QAAC3H,KAAA,EAAOtB,UAAA,CAAWK,OAAO;kBAC7C,aAAA+I,IAAA,CAACzN,gBAAA,CAAiBsN,QAAQ;UACxB3H,KAAA,EAAO;YACLnB,MAAA;YACA,GAAGH,UAAA,CAAWK;UAChB;oBAEA,aAAA+I,IAAA,CAACrN,gBAAA,CAAiBkN,QAAQ;YAAC3H,KAAA,EAAOxD,SAAA;sBAChC,aAAAsL,IAAA,CAACxN,mBAAA,CAAoBqN,QAAQ;cAAC3H,KAAA,EAAO,CAACpC,SAAA,IAAcA,SAAA,IAAaM,YAAA;wBAC/D,aAAA4J,IAAA,CAACtN,iBAAA,CAAkBmN,QAAQ;gBAAC3H,KAAA,EAAO5B,UAAA;0BACjC,aAAA0J,IAAA,CAAC7N,2BAAA,CAA4B0N,QAAQ;kBAAC3H,KAAA,EAAO1B,oBAAA;4BAC3C,aAAAwJ,IAAA,CAACvN,eAAA,CAAgBoN,QAAQ;oBAAC3H,KAAA,EAAOlC,QAAA;8BAC/B,aAAAgK,IAAA,CAAC1N,iBAAA,CAAkBuN,QAAQ;sBAAC3H,KAAA,EAAOpB,aAAA;gCAChCnD;;;;;;;;;;;AAYzB;AAEA,SACEvB,mBAAmB,EACnBC,WAAW,EACXC,iBAAiB,EACjBC,gBAAgB,EAChBE,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBwN,gBAAgB,EAChBvN,eAAe,EACfwN,OAAO,EACPC,aAAa,EACbC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBC,YAAY,QACP","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initContextState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/initContextState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAUR,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"initContextState.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/initContextState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAUR,MAAM,YAAY,CAAA;AAcnB,eAAO,MAAM,gBAAgB,EAAE,OA4B9B,CAAA"}
|
|
@@ -7,6 +7,7 @@ const validateForm = () => undefined;
|
|
|
7
7
|
const createFormData = () => undefined;
|
|
8
8
|
const setModified = () => undefined;
|
|
9
9
|
const setProcessing = () => undefined;
|
|
10
|
+
const setBackgroundProcessing = () => undefined;
|
|
10
11
|
const setSubmitted = () => undefined;
|
|
11
12
|
const reset = () => undefined;
|
|
12
13
|
export const initContextState = {
|
|
@@ -28,6 +29,7 @@ export const initContextState = {
|
|
|
28
29
|
replaceFieldRow: () => undefined,
|
|
29
30
|
replaceState: () => undefined,
|
|
30
31
|
reset,
|
|
32
|
+
setBackgroundProcessing,
|
|
31
33
|
setDisabled: () => undefined,
|
|
32
34
|
setIsValid: () => undefined,
|
|
33
35
|
setModified,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initContextState.js","names":["submit","undefined","getSiblingData","dispatchFields","validateForm","createFormData","setModified","setProcessing","setSubmitted","reset","initContextState","addFieldRow","buildRowErrors","disabled","fields","formRef","getData","getDataByPath","getField","getFields","initializing","isValid","removeFieldRow","replaceFieldRow","replaceState","setDisabled","setIsValid"],"sources":["../../../src/forms/Form/initContextState.ts"],"sourcesContent":["'use client'\nimport type { Data, FormField, FormState } from 'payload'\n\nimport type {\n Context,\n CreateFormData,\n DispatchFields,\n GetSiblingData,\n Reset,\n SetModified,\n SetProcessing,\n SetSubmitted,\n Submit,\n ValidateForm,\n} from './types.js'\n\nconst submit: Submit = () => undefined\nconst getSiblingData: GetSiblingData = () => undefined\nconst dispatchFields: DispatchFields = () => undefined\nconst validateForm: ValidateForm = () => undefined\nconst createFormData: CreateFormData = () => undefined\n\nconst setModified: SetModified = () => undefined\nconst setProcessing: SetProcessing = () => undefined\nconst setSubmitted: SetSubmitted = () => undefined\nconst reset: Reset = () => undefined\n\nexport const initContextState: Context = {\n addFieldRow: () => undefined,\n buildRowErrors: () => undefined,\n createFormData,\n disabled: false,\n dispatchFields,\n fields: {},\n formRef: null,\n getData: (): Data => undefined,\n getDataByPath: () => undefined,\n getField: (): FormField => undefined,\n getFields: (): FormState => ({}),\n getSiblingData,\n initializing: undefined,\n isValid: true,\n removeFieldRow: () => undefined,\n replaceFieldRow: () => undefined,\n replaceState: () => undefined,\n reset,\n setDisabled: () => undefined,\n setIsValid: () => undefined,\n setModified,\n setProcessing,\n setSubmitted,\n submit,\n\n validateForm,\n}\n"],"mappings":"AAAA;;AAgBA,MAAMA,MAAA,GAAiBA,CAAA,KAAMC,SAAA;AAC7B,MAAMC,cAAA,GAAiCA,CAAA,KAAMD,SAAA;AAC7C,MAAME,cAAA,GAAiCA,CAAA,KAAMF,SAAA;AAC7C,MAAMG,YAAA,GAA6BA,CAAA,KAAMH,SAAA;AACzC,MAAMI,cAAA,GAAiCA,CAAA,KAAMJ,SAAA;AAE7C,MAAMK,WAAA,GAA2BA,CAAA,KAAML,SAAA;AACvC,MAAMM,aAAA,GAA+BA,CAAA,KAAMN,SAAA;AAC3C,MAAMO,YAAA,GAA6BA,CAAA,
|
|
1
|
+
{"version":3,"file":"initContextState.js","names":["submit","undefined","getSiblingData","dispatchFields","validateForm","createFormData","setModified","setProcessing","setBackgroundProcessing","setSubmitted","reset","initContextState","addFieldRow","buildRowErrors","disabled","fields","formRef","getData","getDataByPath","getField","getFields","initializing","isValid","removeFieldRow","replaceFieldRow","replaceState","setDisabled","setIsValid"],"sources":["../../../src/forms/Form/initContextState.ts"],"sourcesContent":["'use client'\nimport type { Data, FormField, FormState } from 'payload'\n\nimport type {\n Context,\n CreateFormData,\n DispatchFields,\n GetSiblingData,\n Reset,\n SetModified,\n SetProcessing,\n SetSubmitted,\n Submit,\n ValidateForm,\n} from './types.js'\n\nconst submit: Submit = () => undefined\nconst getSiblingData: GetSiblingData = () => undefined\nconst dispatchFields: DispatchFields = () => undefined\nconst validateForm: ValidateForm = () => undefined\nconst createFormData: CreateFormData = () => undefined\n\nconst setModified: SetModified = () => undefined\nconst setProcessing: SetProcessing = () => undefined\nconst setBackgroundProcessing: SetProcessing = () => undefined\nconst setSubmitted: SetSubmitted = () => undefined\nconst reset: Reset = () => undefined\n\nexport const initContextState: Context = {\n addFieldRow: () => undefined,\n buildRowErrors: () => undefined,\n createFormData,\n disabled: false,\n dispatchFields,\n fields: {},\n formRef: null,\n getData: (): Data => undefined,\n getDataByPath: () => undefined,\n getField: (): FormField => undefined,\n getFields: (): FormState => ({}),\n getSiblingData,\n initializing: undefined,\n isValid: true,\n removeFieldRow: () => undefined,\n replaceFieldRow: () => undefined,\n replaceState: () => undefined,\n reset,\n setBackgroundProcessing,\n setDisabled: () => undefined,\n setIsValid: () => undefined,\n setModified,\n setProcessing,\n setSubmitted,\n submit,\n\n validateForm,\n}\n"],"mappings":"AAAA;;AAgBA,MAAMA,MAAA,GAAiBA,CAAA,KAAMC,SAAA;AAC7B,MAAMC,cAAA,GAAiCA,CAAA,KAAMD,SAAA;AAC7C,MAAME,cAAA,GAAiCA,CAAA,KAAMF,SAAA;AAC7C,MAAMG,YAAA,GAA6BA,CAAA,KAAMH,SAAA;AACzC,MAAMI,cAAA,GAAiCA,CAAA,KAAMJ,SAAA;AAE7C,MAAMK,WAAA,GAA2BA,CAAA,KAAML,SAAA;AACvC,MAAMM,aAAA,GAA+BA,CAAA,KAAMN,SAAA;AAC3C,MAAMO,uBAAA,GAAyCA,CAAA,KAAMP,SAAA;AACrD,MAAMQ,YAAA,GAA6BA,CAAA,KAAMR,SAAA;AACzC,MAAMS,KAAA,GAAeA,CAAA,KAAMT,SAAA;AAE3B,OAAO,MAAMU,gBAAA,GAA4B;EACvCC,WAAA,EAAaA,CAAA,KAAMX,SAAA;EACnBY,cAAA,EAAgBA,CAAA,KAAMZ,SAAA;EACtBI,cAAA;EACAS,QAAA,EAAU;EACVX,cAAA;EACAY,MAAA,EAAQ,CAAC;EACTC,OAAA,EAAS;EACTC,OAAA,EAASA,CAAA,KAAYhB,SAAA;EACrBiB,aAAA,EAAeA,CAAA,KAAMjB,SAAA;EACrBkB,QAAA,EAAUA,CAAA,KAAiBlB,SAAA;EAC3BmB,SAAA,EAAWA,CAAA,MAAkB,CAAC;EAC9BlB,cAAA;EACAmB,YAAA,EAAcpB,SAAA;EACdqB,OAAA,EAAS;EACTC,cAAA,EAAgBA,CAAA,KAAMtB,SAAA;EACtBuB,eAAA,EAAiBA,CAAA,KAAMvB,SAAA;EACvBwB,YAAA,EAAcA,CAAA,KAAMxB,SAAA;EACpBS,KAAA;EACAF,uBAAA;EACAkB,WAAA,EAAaA,CAAA,KAAMzB,SAAA;EACnB0B,UAAA,EAAYA,CAAA,KAAM1B,SAAA;EAClBK,WAAA;EACAC,aAAA;EACAE,YAAA;EACAT,MAAA;EAEAI;AACF","ignoreList":[]}
|
|
@@ -67,7 +67,7 @@ export type CreateFormData = (overrides?: Record<string, unknown>,
|
|
|
67
67
|
*/
|
|
68
68
|
options?: {
|
|
69
69
|
mergeOverrideData?: boolean;
|
|
70
|
-
}) => FormData
|
|
70
|
+
}) => FormData | Promise<FormData>;
|
|
71
71
|
export type GetFields = () => FormState;
|
|
72
72
|
export type GetField = (path: string) => FormField;
|
|
73
73
|
export type GetData = () => Data;
|
|
@@ -192,6 +192,11 @@ export type Context = {
|
|
|
192
192
|
}) => void;
|
|
193
193
|
replaceState: (state: FormState) => void;
|
|
194
194
|
reset: Reset;
|
|
195
|
+
/**
|
|
196
|
+
* If the form has started processing in the background (e.g.
|
|
197
|
+
* if autosave is running), this will be true.
|
|
198
|
+
*/
|
|
199
|
+
setBackgroundProcessing: SetProcessing;
|
|
195
200
|
setDisabled: (disabled: boolean) => void;
|
|
196
201
|
setIsValid: (processing: boolean) => void;
|
|
197
202
|
setModified: SetModified;
|